·
73 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
🚀 New Features
- There is now support for the Poetry backend in usethis. Access it via the
--backend=poetryoption for applicable commands. - Tools which add formatters (
usethis format,usethis tool pyproject-fmt, andusethis tool ruff) will now automatically apply the formatter to the project when added. - There is now a
usethis tool tachcommand to add the Tach architecture tool to the project. usethis toolcommands now support a--no-hookflag to opt out of modifying git hook configuration (e.g. in.pre-commit-config.yaml) when managing the tool.usethis showcommands now support an--output-fileoption to write the output to a file instead of printing it to the console.- There is now a
usethis show licensecommand to show the license of the current project. - There is now a
usethis badge bitbucketcommand to add a badge for Bitbucket usage to the README. usethis tool pytestandusethis testwill now automatically add an example test file. This helps ensure thatpytestwill run out-of-the-box without emitting a non-zero error code.
🐞 Bug Fixes
- In some cases, when usethis modified TOML files, comments would be stripped from multi-line lists. This has been fixed.
- Out-of-schema entries in
.pre-commit-config.yamlfiles will no longer result in errors when being handled by usethis. This is especially useful for prek users, since prek extends.pre-commit-config.yamlwith support for additional configuration options which are not found in the standard pre-commit schema.
🦾 Robustness
- Hard-wrapping is now disabled for CLI outputs.
- The
usethis tool requirements.txtcommand now uses a more standard URI-based pre-commit hook for exporting (using theastral-sh/uv-pre-commitrepo) instead of a local system hook. - Default code coverage configuration now excludes the pattern
msg = ["']associated with writing error messages outside the error class (see theEM101Ruff rule). - The heuristic for detecting uv usage will now check whether uv is declared as a dependency (including as a dev dependency) in
pyproject.tomlwhen the file exists, in addition to the previous heuristics. This should help reduce false positives for projects which use other tools but havepyproject.tomlfiles with no uv configuration. - There is improved handling of pre-commit configuration validation for when the hook ID is null.
📚 Documentation
- The
usethis show sonarqubecommand is now documented explicitly in the CLI reference section of the documentation site. - The concept of backends is now expounded on the documentation site.
- All modules now have module docstrings.
- The project description and keywords have been updated to reflect the current state of the project. The license Trove classifier has been removed since Trove classifiers for licenses are no longer recommended.
- The FAQ page has been re-structured.
- The pipeweld utility now has more comprehensive docstrings.
- The
FileManagerandfiles_managerobjects now have more detailed docstrings.
📦 Packaging
- The
identifypackage is a new dependency to provide support for theusethis show licensecommand.
🔧 Internal Changes
- There is improved type compliance, especially for the implementation of the file management system.
- Ruff configuration now resides in
ruff.tomlfor development. - There is now a
PreCommitConfig.from_system_hookmethod to simplify the specification of pre-commit hook configuration for the various tools. - Agent configuration and bespoke prek hooks continue to be developed.
What's Changed
- Add
requeststo the dev dep bump workflow by @Copilot in #1548 - Create skills registry in AGENTS.md with validation hook by @Copilot in #1532
- Bump
requestsfor development by @github-actions[bot] in #1552 - Add
usethis-cli-modifyagent skill by @Copilot in #1555 - 1556 add config for external agent skills by @nathanjmcdougall in #1557
- Validate lockfile remains unchanged during copilot setup, add npm cac… by @nathanjmcdougall in #1560
- Document
usethis show sonarqubemore thoroughly by @Copilot in #1562 - Add the vercel-labs/skills/skills/find-skills skill by @nathanjmcdougall in #1569
- Try and capture lessons + skill tweaks automatically via
AGENTS.mdby @nathanjmcdougall in #1571 - Document the
npx skillsoption--skillby @nathanjmcdougall in #1570 - Add concise documentation guidance to usethis-cli-modify skill by @Copilot in #1578
- Add
--output-fileoption tousethis showcommands by @Copilot in #1565 - Add
--no-hookflag to allusethis toolsubcommands by @Copilot in #1558 - Add module docstrings and set up automated export of
docs/module-tree.txt. by @nathanjmcdougall in #1579 - Clarify that files modified in prek runs are still failures by @Copilot in #1580
- Add sync framework for inheriting content into AGENTS.md by @Copilot in #1581
- Test markdown validity after
usethis badgecalls by @Copilot in #1584 - Move test suite structure expectations into a prek hook by @Copilot in #1583
- Enable
reportAssignmentTypein basedpyright by @nathanjmcdougall in #1585 - Enable
reportMissingParameterTypein basedpyright by @nathanjmcdougall in #1586 - Introduce covariant
DocumentProtocolto enable `reportMissingTypeAr… by @nathanjmcdougall in #1588 - Add
usethis badge bitbucketcommand by @Copilot in #1590 - Move Ruff configuration from pyproject.toml to ruff.toml by @Copilot in #1592
- Use URI repo for uv-pre-commit hook in requirements.txt tool by @Copilot in #1589
- Add
msg = ["']to coverage.py exclude_also patterns by @Copilot in #1593 - Deduplicate
test_latest_versiontests via parametrize by @Copilot in #1596 - Emphasize static checks must run for all changes including small follow-ups by @Copilot in #1604
- Put more emphasis on reporting skills usage etc. by moving module-tre… by @nathanjmcdougall in #1613
- Agent config: emphasize writing tests with full coverage by @Copilot in #1612
- Add
usethis-github-issue-createagent skill by @Copilot in #1610 - Rename
usethis-test-with-coveragetousethis-python-test-full-coverageby @Copilot in #1620 - Agent config: Record lessons as GitHub issues instead of directly editing skills by @Copilot in #1618
- Add agent instruction to reference issue IDs in PR descriptions by @Copilot in #1615
- Run static checks workflow for doc-only changes by @Copilot in #1617
- Add
PreCommitConfig.from_system_hook()to deduplicate backend dispatch in tool specs by @Copilot in #1606 - Fix TOML comment stripping in extend_list and remove_from_list by @Copilot in #1591
- Add YAGNI for function parameters to usethis-python-functions skill by @Copilot in #1622
- Add layer-awareness guidance to test-affected-find skill by @Copilot in #1623
- Add function placement principles to usethis-python-code skill by @Copilot in #1629
- Bump
pygmentsfor development by @github-actions[bot] in #1631 - Add guidance on keeping skill descriptions general by @Copilot in #1635
- Add global config pass-through avoidance guidance to function design skill by @Copilot in #1638
- Add
usethis-agentsskill with auto-generated skills directory by @Copilot in #1630 - Add function reference to AGENTS.md with auto-generated docs/functions.txt by @Copilot in #1624
- Remove spacing between bullet points in changelog by @nathanjmcdougall in #1640
- Add dedicated documentation page explaining the concept of backends by @Copilot in #1597
- ci: skip CI tests on CHANGELOG.md changes by @Copilot in #1642
- Add multi-layer testing principle to test-full-coverage agent skill by @Copilot in #1644
- Document the need to sync
OTHER_TOOLSandALL_TOOLSby @nathanjmcdougall in #1648 - Update the project description and keywords by @nathanjmcdougall in #1649
- Check whether uv is a dep or dev dep as part of its availability heuristic by @Copilot in #1594
- Fix doc rot in functions export by @Copilot in #1661
- Add type annotations and handle an edge case for hook IDs which are N… by @nathanjmcdougall in #1667
- Add single-backtick convention for docstring code references to agent skill by @Copilot in #1665
- Emphasize static checks are required for all changes, including doc-only by @Copilot in #1669
- Add static checks reminder to
usethis-agentsskill by @Copilot in #1671 - Add
usethis show licensecommand by @Copilot in #1663 - Remove license trove classifier by @nathanjmcdougall in #1673
- Instruct agents to fix all static check failures, including pre-existing ones by @Copilot in #1659
- Reorder FAQ page by importance by @Copilot in #1657
- Add docstrings to pipeweld objects and functions by @Copilot in #1654
- Disable hard-wrapping for all console print functions by @Copilot in #1656
- Simplify style in
export-functionshook config by @nathanjmcdougall in #1677 - Skip test_bad_commit online variant on CI by @Copilot in #1676
- Generalize
check-test-skeletonhook with--source-dirand--tests-dirCLI args by @Copilot in #1679 - Generalize
check-skills-documentedto accept--prefixas a CLI arg by @Copilot in #1681 - Skip CI tests workflow for hooks-only changes by @Copilot in #1684
- Add cross-referencing guidance to skills-create skill by @Copilot in #1696
- ci: exclude docs/**/*.txt from CI test triggers by @Copilot in #1693
- Add
usethis-cli-dogfoodagent skill by @Copilot in #1691 - Move
ruff formatinto its own prek priority group by @Copilot in #1698 - Add skill scope-checking guidance to prevent misplaced content by @Copilot in #1706
- Update agent skills to emphasize the need to use the QA static checks… by @nathanjmcdougall in #1707
- Fix KeyError in fancy_model_dump for pydantic models with extra fields by @Copilot in #1689
- Add test class organization guidelines to agent skills by @Copilot in #1685
- Install prek hooks in copilot-setup-steps workflow by @Copilot in #1703
- Don't trigger ci.yml on changes to other workflow config by @Copilot in #1709
- Add check-banned-words hook to enforce generic hook scripts by @Copilot in #1687
- Add agent skill guidance on avoiding deep attribute nesting across layers by @Copilot in #1712
- Add
usethis-cli-user-testagent skill by @Copilot in #1716 - Add agent guidance on prek exit codes and output truncation by @Copilot in #1718
- Add
apply()method toToolfor running formatters on use by @Copilot in #1714 - Document
files_managerdeferred-write semantics and subprocess implications by @Copilot in #1720 - Return exit code 1 from export hooks when files are modified by @Copilot in #1725
- Add check-list-referenced hook to keep README tool commands in sync by @Copilot in #1722
- Implement autofix for the doc sync hook by @Copilot in #1727
- Strengthen usethis-cli-user-test skill to forbid deviating from the happy path by @Copilot in #1732
- Create example test file when adding pytest, with --no-example opt-out by @Copilot in #1723
- Enforce README syncing with docs dir via Jinja2 template and hook by @Copilot in #1730
- Clarify what belongs in AGENTS.md vs. agent skills by @Copilot in #1737
- Guide agents to prefer general skills over narrow stub skills by @Copilot in #1741
- Add agent guidance to avoid placing new files at repo root by @Copilot in #1735
- Emphasize the need to use
usethis-skills-modifywhen editing skill files by @Copilot in #1743 - Implement
usethis tool tachfor architecture enforcement by @Copilot in #1639 - Fix typo:
tool.uv.environment→tool.uv.environmentsby @Copilot in #1745 - Add guidance to avoid prescriptive language in skill descriptions by @Copilot in #1747
- Use pipeweld to insert pre-commit hooks by @Copilot in #1595
- Rename
_HOOK_ORDERtoHOOK_GROUPSas list of lists by @Copilot in #1749 - Add parameterized test for adding & running each tool by @Copilot in #1652
- Add support for the
poetrybackend by @Copilot in #1601 - Update prek hook skill to emphasize generalization over project-specific logic by @Copilot in #1752
- Enforce step-down rule for hook scripts by @Copilot in #1750
- Rename
ci.ymltotest.ymlin GitHub Actions config by @Copilot in #1751 - Add set up Python step for codspeed config by @nathanjmcdougall in #1551
- Respect system newline ending for hooks by @Copilot in #1753
- Add .pre-commit-config.yaml to paths-ignore in CI workflows by @Copilot in #1754
- Add check-priority-monotone hook and fix priority ordering by @Copilot in #1755
- Add poetry to bump-dev-dep workflow options by @Copilot in #1758
- Add changelog for v0.21.0 by @nathanjmcdougall in #1767
Full Changelog: v0.20.0...v0.21.0