rust-project-maintenance
Skill1 starsChanged 16 days agoMITView on GitHub
Execute Rust project maintenance around dependencies, Clippy lint lists, etc.
In this repository15 other files it gives its agents.
- audit-skill-runSkill
- challenge-handoffSkill
- dot-diagramsSkill
- handoffSkill
- implem-brakeSkill
- resume-handoffSkill
- review-auto-loopSkill
- review-correctnessSkill
- review-docsSkill
- review-judgeSkill
- review-readabilitySkill
- review-testsSkill
- settle-discussionSkill
- summarize-changeSkill
- web-searchSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. About 0 are common, 9 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈9
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 25
If a task is skipped, or requires no change to the code after being analyzed, simply continue to the next one.
- Distinctive: line 26
If a task has required some code changes, pause before executing the next task, show a _progress report_ as shown below, followed by a …
- Distinctive: line 33
Follow the output format of the content of this code block:
- Distinctive: line 47
Before starting your work, check that the current repository is a Rust project, and if not, say so to the user, it is likely an error.
- Distinctive: line 95
if a bullet point from the "Code Style" part is present in the reference, but not in the local file, add it locally
- Distinctive: line 96
if a bullet point from the "Code Style" part is present in the reference, and overlaps with the meaning of a rule in the local file, keep …
- Very specific: line 115
Run the _Dependencies compatible update_ task, using cargo upgrade -i --ignore-rust-version and cargo update --config …
- Very specific: line 121
Run cargo audit and fix all reported warnings:
- Distinctive: line 124
consider the recommended actions for security issues (version bump, feature to disable...)
- Very specific: line 142
Run cargo msrv verify. Update reported MSRV if it is incorrect, using cargo msrv to find the correct value.
- Distinctive: line 151
if a job exists in the reference action, but does not make sense locally (MSRV check when the local project declares no MSRV) => ignore it
- Distinctive: line 153
do not make changes that affect the output (e.g.
- Very specific: line 156
run pinact run -u --min-age 10 to update GitHub actions versions, and pin them with hashes
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Rust project maintenance
This file describes how to run a set of maintenance operations common to several Rust projects.
Scope
Maintenance can be done according to 3 different scopes:
- light: doing only a quick, minimal set of tasks
- standard: doing a common set of tasks
- complete: doing a full, thorough set of tasks, typically before a release
Decide the scope according to the user's request formulation. If unsure, default to the standard scope.
Workflow
Execute each task in order, one at a time, and never do work belonging to a later task before reaching it. When a command run during a task (build, tests, linters...) reports issues that a later task covers, leave them for that task, even if the current task definition says to fix all surfacing issues. For example, do not fix Clippy warnings before the Clippy lint list update task, as the updated lint list may disable some of the reported lints. If a task is skipped, or requires no change to the code after being analyzed, simply continue to the next one. If a task has required some code changes, pause before executing the next task, show a progress report as shown below, followed by a short description of your last changes, and wait for the user to review your work and signal you can continue. Once all tasks are done, show a final progress report.
Progress report
Show a status output for the user, with the number of tasks already executed or skipped, the total number of tasks, and the status for each task ("done", "skipped", "review", "pending"). Tasks that required no action are considered "done", tasks waiting for user approval to continue are in "review" state.
Follow the output format of the content of this code block:
Maintenance tasks (3/4):
1. ☑ AGENTS.md update [DONE]
2. ☑ Dependencies compatible update [SKIPPED]
3. ☑ Cargo audit [REVIEW]
4. ☐ Clippy lint list updateNote that [PENDING] is omitted for pending tasks.
Task list
Before starting your work, check that the current repository is a Rust project, and if not, say so to the user, it is likely an error. The list of tasks to execute for each scope follows. Refer to the task definition part for detailed instructions for each task.
Light scope
- Pre commit hook removal
- AGENTS.md update
- Cargo audit
- Clippy lint list update
Standard scope
- Pre commit hook removal
- AGENTS.md update
- Dependencies compatible update
- Cargo audit
- Clippy lint list update
- MSRV check
Complete scope
- Pre commit hook removal
- AGENTS.md update
- Dependencies breaking update
- Cargo audit
- Clippy lint list update
- MSRV check
- GitHub actions update
- Changelog template update
- Release script update
Task definition
Pre commit hook removal
Pre-commit files:
.git/hooks/pre-commit.pre-commit-config.yaml
Skip this task if none of these files exist, remove them if they do.
AGENTS.md update
Skip this task if the current project has no AGENTS.md file in the root directory.
Compare the current repository AGENTS.md file with the reference template at https://github.com/desbma/cargo-template/blob/master/AGENTS.md. The goal is to copy relevant points from the reference to the local file. Do not blindly copy the content, follow these rules:
- if a bullet point from the "Code Style" part is present in the reference, but not in the local file, add it locally
- if a bullet point from the "Code Style" part is present in the reference, and overlaps with the meaning of a rule in the local file, keep the most restrictive one
- ignore differences that can be explained by local project specifics (e.g. MSRV, workspace with multiple packages...)
- if a command from the "Build & Test" part seems more thorough in the reference than in the local file (e.g. runs Clippy or tests with more features, passes more flags to
cargo fmt...), and it makes sense to use such command locally (for example it is not needed to runcargo test --all-featuresif local project has no features), then replace it locally - once done updating
AGENTS.md, run build, check and formatting commands, and fix any surfacing issues
Dependencies compatible update
Run:
cargo upgrade
cargo update --config 'resolver.incompatible-rust-versions="fallback"'
cargo checkFix any compilation errors reported by cargo check. If the project supports different feature combinations or platforms (check this by looking for example at the CI jobs), run cargo check for all configurations you can, for example cargo check --target x86_64-pc-windows-gnu --features foo. Then run the project's other test/lint/format commands, if any, and fix errors that surface.
Dependencies breaking update
Run the Dependencies compatible update task, using cargo upgrade -i --ignore-rust-version and cargo update --config 'resolver.incompatible-rust-versions="allow"', and follow the same checks.
Dependency upgrades may raise the MSRV; the MSRV check task updates rust-version accordingly.
You will likely need to do some adjustments to the code to accommodate the breaking changes.
Cargo audit
Run cargo audit and fix all reported warnings:
- replace abandoned dependencies by mature and maintained ones, similar in scope
- consider the recommended actions for security issues (version bump, feature to disable...)
Clippy lint list update
Compare the current Clippy configuration from lints.* or workspace.lints.* sections in Cargo.toml file with the reference template at https://github.com/desbma/cargo-template/blob/master/Cargo.toml.
Copy the reference lint configuration locally, including comments, but respect lints that were intentionally disabled:
- by being already present in the list commented out
- by being set to
allow(leave such lines)
Also copy the https://github.com/desbma/cargo-template/blob/master/clippy.toml reference file locally if it is missing or less complete than the reference.
Then run Clippy on the local project, covering all code (including tests and features not enabled by default), and fix any warnings that surface, either by running cargo fix, by updating the code to fix the root cause, or by ignoring it locally.
MSRV check
Skip this task if the current project has no package.rust-version attribute set in Cargo.toml.
Run cargo msrv verify. Update reported MSRV if it is incorrect, using cargo msrv to find the correct value.
GitHub actions update
Skip this task if the local repository does not have GitHub actions files.
Steps:
- for each workflow in
https://github.com/desbma/cargo-template/tree/master/.github/workflows, if it exists locally, compare them and consider updating the local version:- if a job exists in the reference action, but does not make sense locally (MSRV check when the local project declares no MSRV) => ignore it
- for the
releaseworkflow, only update jobs existing locally, do not add new ones - do not make changes that affect the output (e.g. compilation toolchains, library packages installed)
- ignore the
untemplateline noise, it is an artifact of thecargo-generateuse - if a check is in the reference action, and not in the local one, or is more thorough in the reference (e.g. runs Clippy on test code and the local project has tests) and it makes sense to use such command locally (for example it is not needed to run
cargo test --all-featuresif local project has no features) => add it
- run
pinact run -u --min-age 10to update GitHub actions versions, and pin them with hashes
Changelog template update
Skip this task if the current project has no CHANGELOG.md file in the root directory.
Compare the current Git Cliff configuration from the cliff.toml file with the reference template at https://github.com/desbma/cargo-template/blob/master/cliff.toml. Update the local version, ignoring obviously local-specific elements like project URL, or changelog header.
Release script update
Skip this task if the current project has no release script in the root directory.
Compare the current release script file with the reference template at https://github.com/desbma/cargo-template/blob/master/release. Update the local version, ignoring obviously local-specific elements like:
- changelog update if the local project has no changelog
- different base version for the changelog
- different version convention (e.g. CalVer vs SemVer)
- beta version naming replacements if the local project has no beta version
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

