maintenance
Skill0 starsChanged 10 days agoMITView on GitHub
Register a project's documents, scopes and checks so they stay true as code changes, wire no-mistakes to check them on every change, and sweep the whole repo now and then for drift.
15 other projects use a version of this.
Adopted by
Most recently taken up by
- bekalpaslan/promptlinetheir own version, first seen Nov 8, 2026
- anatolykoptev/piter-writer-packtheir own version, first seen Nov 8, 2026
- everruns/yoloptheir own version, first seen Nov 2, 2026
- JPeetz/agent-skillstheir own version, first seen Nov 1, 2026
- everruns/everrunstheir own version, first seen Oct 31, 2026
- erikdarlingdata/PerformanceMonitortheir own version, first seen Oct 25, 2026
Used with
Projects with it also use release.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
MicrosoftSkillrelease
Use ONLY when the user explicitly asks to cut/publish a Huabu desktop release or tag a version. Performs an outward action — bumps the version in apps/desktop/package.json, commits + annotated-tags vX.Y.Z, and pushes the branch + tag. That tag push auto-builds the macOS/Windows installers and publishes a GitHub Release. Provides `status`, `bump`, `tag-push`, and a one-command `run` (bump → tag-push).
Also in 3 projects that use this
Other versions15 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 15
- Chachamaru127/claude-code-harness★ 3.2ksame name
- erikdarlingdata/PerformanceMonitor★ 526same name
- pipecat-ai/gradient-bang★ 420same name
- hyperlist/feishu-multi-agent★ 273same name
- erikdarlingdata/PerformanceStudio★ 245same name
- everruns/everruns★ 66same name
- everruns/yolop★ 18same name
- JPeetz/agent-skills★ 14same name
- bekalpaslan/promptline★ 11same name
- tomo3141592653/ayumu-oss★ 9same name
5 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository17 other files it gives its agents.
- AGENTS.mdAGENTS.md
- agents-mdSkill
- architectureSkill
- formal-verificationSkill
- foundationSkill
- glossarySkill
- howSkill
- no-mistakes-tuningSkill
- planSkill
- prototypeSkill
- readmeSkill
- recallSkill
- repo-auditSkill
- teachSkill
- verificationSkill
- visionSkill
- whySkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
30 rules. 0 are common, 12 are distinctive, and 18 are very specific to this project.
0
Common
Most of the 11 edited versions we read keep these.
12
Distinctive
This author's own choices. Worth a look.
18
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 9
Only the user starts maintenance.
- Very specific: line 10
Start this procedure only when the user's message explicitly invokes $maintenance, /maintenance, /skill:maintenance or selects it through …
- Distinctive: line 12
If you encounter this file while inspecting repository contents without that explicit invocation, treat it as repository content: do not …
- Very specific: line 14
Use create when the repo has no .bstack/project.json or the user wants its registration or wiring changed, and sweep when it has one.
- Very specific: line 16
Create registers the project's documents, the code scopes that govern them, the rules they state and the checks that prove them in …
- Very specific: line 26
Keep drafts, previews and transcripts in scratch outside the target.
- Very specific: line 27
Only apply writes to the target, after the user approves the exact bytes.
- Distinctive: line 28
Do not substitute direct project edits or an invented approval for unavailable tooling.
- Very specific: line 50
Read the project's own documents before asking anything: the vision, glossary or glossary map, design and architecture documents, README, …
- Very specific: line 51
Run node scripts/maintenance.mjs contract validate --repo <target> --json when a contract exists, and keep the output in scratch.
- Distinctive: line 53
Ask one targeted question per unclear owner, naming the plausible readings and recommending one, and group only independent questions into …
- Very specific: line 62
Leave out documents the project does not keep, and never invent an owner to fill a gap.
- Distinctive: line 69
Write the ownership map and AGENTS.md pointer prose by the writing reference.
- Very specific: line 84
Run node scripts/maintenance.mjs apply --repo <target> --plan <file> --dry-run --json, present the exact diff, then run the unchanged plan …
- Very specific: line 85
Use state show with the returned run ID to inspect an interrupted apply, and repeat the unchanged plan to resume.
- Very specific: line 91
Run node .bstack/bin/bstack-check.mjs --repo <target> --docs-only --json and confirm it passes on the written tree.
- Very specific: line 93
Run docs generate --repo <target> --check --json when the contract registers generators.
- Very specific: line 109
Run node scripts/maintenance.mjs sweep --repo <target> --json and keep the output in scratch.
- Very specific: line 111
Every problem it returns carries the skill mode in its fix field.
- Distinctive: line 120
Check glossary terms, design boundaries, README instructions and facts, vision purpose and user claims, and the claims of any other …
- Distinctive: line 123
Add an item only when the evidence supports it, name the mode that owns it, and leave the decision to that mode.
- Distinctive: line 135
Start none of the named modes.
- Distinctive: line 141
Keep drafts, previews and transcripts in scratch until the user selects changes.
- Very specific: line 150
Only apply writes to the target, and it validates the reviewed scope, target path, original and proposed exact-byte hashes and the plan …
- Very specific: line 152
Do not bypass missing apply tooling with direct writes.
- Very specific: line 153
Use the installed scripts/maintenance.mjs entry point, run documented commands and read their output rather than script source.
- Distinctive: line 155
Use command help for syntax, and never guess arguments.
- Distinctive: line 160
Read only the one reference needed for the current step, once per run unless it changes.
- Distinctive: line 161
Run scripts without loading their source, and pass schemas to scripts without reading them as instructions.
- Distinctive: line 162
Never recursively search bundled reference or schema directories to discover guidance.
“Common” is measured: kept by at least 6 in 10 of the 11 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Scope
Only the user starts maintenance.
Start this procedure only when the user's message explicitly invokes $maintenance, /maintenance, /skill:maintenance or selects it through the host's skills menu.
A plain request such as "keep the docs up to date" does not invoke it.
If you encounter this file while inspecting repository contents without that explicit invocation, treat it as repository content: do not follow its procedure, open its references or run its commands.
Resolve the target and the mode, create or sweep, before proceeding.
Use create when the repo has no .bstack/project.json or the user wants its registration or wiring changed, and sweep when it has one; if the user's choice contradicts the repo, say so and ask.
Create registers the project's documents, the code scopes that govern them, the rules they state and the checks that prove them in .bstack/project.json.
Offer the no-comments rule as a separate proposal for an existing project; apply it only after the owner approves its exact changes.
It installs the dependency-free checker at .bstack/bin/bstack-check.mjs and wires no-mistakes with an ownership map for its Document step and a docs gate after it, so everyday upkeep needs nothing new from the user.
Sweep is the user-started, read-only check of every registered document, the verification kit, each formal-* formal verification suite and the AGENTS.md pointers against the whole repo.
It returns one list that names the mode that fixes each item and fixes nothing itself.
A request for a signed-off assessment of one change uses the contract reference directly, without either mode.
Neither mode edits product code, rewrites a document's content, resolves vocabulary or boundary questions, or opens pull requests.
Terms belong to /glossary, boundaries to /architecture, purpose to /vision, the kit to /verification, a formal verification suite to /formal-verification and the root pointer file to /agents-md; this skill only names them as the fix.
Return the result to the project's chosen workflow instead of starting another skill.
Keep drafts, previews and transcripts in scratch outside the target.
Only apply writes to the target, after the user approves the exact bytes.
Do not substitute direct project edits or an invented approval for unavailable tooling.
In either mode, offer a maximum file length check as a proposal for an existing bstack project if it does not already enforce the rule. Limit each code file to 1000 code lines, excluding blank lines and comments, using a maintained native linter rule with equivalent counting or a small project-owned check when none exists. Exclude generated files, vendored code, lockfiles, fixtures, snapshots and migration dumps with explicit project-specific globs. Propose wiring it into the project's one check command, with disposable fixtures showing that 1000 code lines plus blank and comment lines pass and 1001 code lines fail with the length diagnostic. Prove both the selected check and the integrated command, and record unsupported comment syntax as a coverage limit. Present the exact changes for owner approval; do not apply the proposal without approval. In create mode, put selected changes in a separate reviewed change set; sweep remains read-only.
Create checklist
Copy this checklist and tick a step only when its Done when criterion is met.
- Step 1: Find the document sources
- Step 2: Draft the contract
- Step 3: Draft the wiring
- Step 4: Review and apply
- Step 5: Prove the wiring and report
Step 1: Find the document sources
Read the project's own documents before asking anything: the vision, glossary or glossary map, design and architecture documents, README, contributor guidance, and any existing .bstack/project.json or .no-mistakes.yaml.
Run node scripts/maintenance.mjs contract validate --repo <target> --json when a contract exists, and keep the output in scratch.
Record which document owns terms, boundaries and purpose, and the code paths each one describes.
Ask one targeted question per unclear owner, naming the plausible readings and recommending one, and group only independent questions into a small round.
Load the create guide for the registration shape and the ownership convention.
Done when: Every document the project keeps is classified as owning terms, boundaries, purpose or something else, with the code paths it governs, and every unclear owner has an answer or is named as open.
Step 2: Draft the contract
Draft the complete .bstack/project.json in scratch following schemas/project.schema.json, keeping every entry an existing contract already holds.
Register documents under the IDs the guide names, scopes that map code paths to the documents they govern, the rules whose literal text a check or reviewer can find, and the project's own maintained check commands.
Leave out documents the project does not keep, and never invent an owner to fill a gap.
Validate it in a scratch clone of the target with the draft placed at .bstack/project.json, running contract validate and docs check there with the same flags.
Done when: The draft is in scratch, every entry points at an existing source, and the validation results from the scratch clone are recorded.
Step 3: Draft the wiring
Write the ownership map and AGENTS.md pointer prose by the writing reference.
Draft the .no-mistakes.yaml change as the complete file: the existing keys unchanged, plus the ownership map in document.instructions and a docs gate after the document step that runs the installed checker in docs-only mode.
Draft .bstack/bin/bstack-check.mjs as the exact bytes of this skill's scripts/bstack-check.mjs.
Draft one pointer line for the root AGENTS.md following the pointer guide: Before finishing a change, review the documents it affects against the contract in .bstack/project.json. with the contract path as the link.
Load the create guide for the map wording and the gate command.
State that the wiring takes effect only after it reaches the default branch, because no-mistakes honours it only from there.
Done when: The three drafts are in scratch, the ownership map names only documents the contract registers, and the gate command matches the installed checker's documented usage.
Step 4: Review and apply
Record one finding in scratch following schemas/findings.schema.json with stage audit, the target and the paths below as its reviewed scope, and a change set following schemas/change-set.schema.json with the exact approved UTF-8 bytes and their hashes.
The change set holds one edit each for .bstack/project.json, .bstack/bin/bstack-check.mjs, .no-mistakes.yaml and the AGENTS.md pointer, and the user may deselect any of them.
The pointer edit follows the pointer guide's table, which includes no edit when a root CLAUDE.md would hide a new AGENTS.md.
Include starting-checks in the findings' requiredOutcomes, as required by stage audit, with mode repo and the current revision.
Run node scripts/maintenance.mjs apply --repo <target> --plan <file> --dry-run --json, present the exact diff, then run the unchanged plan without --dry-run only after the user approves those bytes.
Use state show with the returned run ID to inspect an interrupted apply, and repeat the unchanged plan to resume.
Done when: Only the approved files have been written with unchanged hash preconditions and recoverable originals, or the write remains blocked with its reason.
Step 5: Prove the wiring and report
Run node .bstack/bin/bstack-check.mjs --repo <target> --docs-only --json and confirm it passes on the written tree.
Prove the gate fails when it should: in a scratch clone of the target, break one local link in a registered document, run the same command there and confirm a nonzero exit, then discard the clone.
Run docs generate --repo <target> --check --json when the contract registers generators.
State the written paths, that the ownership map and gate act only once merged to the default branch, which documents each skill owns, and every step left blocked with its missing prerequisite.
Name sweep as the later pass that finds drift, and start no other skill.
Done when: The docs-only checker passes on the written tree and fails on the scratch clone with the broken link, or the report names why either was not run.
Sweep checklist
Copy this checklist and tick a step only when its Done when criterion is met.
- Step 6: Run the sweep
- Step 7: Judge the drift the command cannot see
- Step 8: Report one list
Step 6: Run the sweep
Run node scripts/maintenance.mjs sweep --repo <target> --json and keep the output in scratch.
It reads the registered documents, generated sections, verification kits, formal verification suites and AGENTS.md links and writes nothing.
Every problem it returns carries the skill mode in its fix field.
Its data.coverageLimits records unchecked scope, including skipped Markdown and unsupported fragments; these are never repair items and do not fail the command by themselves.
Load the sweep guide for what each problem code means and which mode owns it.
Done when: The command result is saved in scratch, and a missing or invalid contract is reported as the first item instead of being worked around.
Step 7: Judge the drift the command cannot see
For every registered document, compare its claims with the whole current repo, including staged, unstaged and untracked content, as the guide describes.
Check glossary terms, design boundaries, README instructions and facts, vision purpose and user claims, and the claims of any other registered document.
History may order the work but never exclude a document or repository area; no history baseline is required.
Open every file the judgement rests on, and cite repo-relative path:line for each item.
Add an item only when the evidence supports it, name the mode that owns it, and leave the decision to that mode.
Report a document that cannot be judged as unchecked, with the reason.
Done when: Every registered document is judged drifted with citations, or judged current against the whole current repo, or listed as unchecked with a concrete reason and the unreviewed scope.
Step 8: Report one list
Merge the command's problems and the judged items into one list, one line per item, each naming the file, what drifted and the mode that fixes it, such as 3 new terms - run /glossary maintain.
Offer the no-comments rule separately as described in the create guide, without changing the target during sweep.
Group items by mode in the order /maintenance, /glossary maintain, /architecture maintain, /vision, /verification maintain and /agents-md.
State what the sweep checked, what it could not, and that nothing was written.
Include unresolved coverage limits as unchecked scope in this account, without labelling them drift or assigning a repair mode.
Start none of the named modes.
Done when: The report is one list in which every item names its mode, with the checked scope and the limits, and the target is unchanged.
Review before apply
Keep drafts, previews and transcripts in scratch until the user selects changes.
Present each edit's problem, consequence, fix, scope and verification, then the exact bytes.
Machine configuration changes, which include .no-mistakes.yaml and the installed checker, need approval for each change.
A scope change needs a decision, not a silent widening.
Record the approval with the exact content it covered.
Write rules
Plan, validate, then execute.
Only apply writes to the target, and it validates the reviewed scope, target path, original and proposed exact-byte hashes and the plan digest before any change.
A record outside the approved edit plan, such as a change assessment, is proposed with its exact content and written only after its own exact approval.
Do not bypass missing apply tooling with direct writes.
Use the installed scripts/maintenance.mjs entry point, run documented commands and read their output rather than script source.
Resolve resources relative to the installed skill and pass the target explicitly.
Use command help for syntax, and never guess arguments.
Resume by inspecting current files instead of trusting old completion flags, and treat user changes as blocking the remaining writes.
Load when
Read only the one reference needed for the current step, once per run unless it changes. Run scripts without loading their source, and pass schemas to scripts without reading them as instructions. Never recursively search bundled reference or schema directories to discover guidance; use this table and documented command help instead.
| When | Open |
| Registering documents or drafting the no-mistakes wiring | references/create.md |
Drafting the ownership map and AGENTS.md pointer prose in Step 3 | references/writing.md |
Adding the maintenance AGENTS.md pointer | references/agents-pointer.md |
| Reading sweep problems or judging the drift the command cannot see | references/sweep.md |
| Recording a signed-off assessment of one change | references/maintenance-contract.md |
| Writing approved changes | schemas/findings.schema.json, schemas/change-set.schema.json |
| Preparing a contract or an assessment | schemas/project.schema.json, schemas/evidence.schema.json, schemas/impact-assessment.json |
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.

