harness-upgrade
Skill2 starsChanged 11 days agoMITView on GitHub
Maintenance of the harness, not of the app — bring a Keelokit project up to a newer Keelokit version: the house rules, the doctor and the guard, CI, git hooks and base configs, merged with Copier on a branch, without touching the product's code (apps, migrations, E2E, translations). Use when the user says "upgrade keelokit", "update the harness", "actualizá keelokit", "actualizá el harness", "traé la última versión del template", after `claude plugin update`, or when the dashboard or doctor shows the harness is behind the plugin.
In this repository18 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .claude/CLAUDE.mdCLAUDE.md
- template/CLAUDE.mdCLAUDE.md
- build-storySkill
- check-bugbashSkill
- check-healthSkill
- check-securitySkill
- coordinateSkill
- keelokitSkill
- plan-backlogSkill
- plan-intakeSkill
- project-adoptSkill
- project-dashboardSkill
- project-newSkill
- project-reportSkill
- run-localSkill
- ship-releaseSkill
- ship-setupSkill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 46
Commit chore: upgrade Keelokit <from> → <to> and report: rules added/changed, conflicts resolved, and anything the user must decide.
≈ “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
Harness upgrade — new harness, same product
A project keeps its own copy of the harness: the version of the Keelokit template it was generated
from (_commit in .keelokit/answers.yml). Updating the plugin doesn't change that copy; this
skill does. Say it that way to the user: it brings Keelokit's new rules and checks into the
project, on a branch, and never rewrites their product.
The template owns infrastructure (CI, lint/format/ts base configs, scripts/verify.sh, git
hooks, .keelokit/ except the project's own choices: rules.local.toml, exceptions.toml,
critical.toml, profile.toml, verify-routing.toml, red-causes.toml and verify-clock.toml).
The product owns its code (apps' src/, e2e, prisma schema
and migrations, locale files, packages' src/) and its knowledge (docs/context/, docs/prd.md,
docs/escapes.md, backlog/, README.md, CHANGELOG.md) — Copier never overwrites those once
they exist.
- Working tree clean (
git status), on a branch:git switch -c chore/keelokit-upgrade. - See where you are:
grep _commit .keelokit/answers.yml. Pick the target tag (latest by default). - Run:
uvx copier==9.18.2 update -a .keelokit/answers.yml --defaults --conflict rej --vcs-ref <tag>-a .keelokit/answers.ymlis required (Keelokit keeps its answers there). If_src_pathin that file is a local path, the project can only upgrade from that machine — point it at the git source (gh:<owner>/keelokit) first. From a version before 0.10.0 the update brings new files and checks, none of which breaks the project. The doctor warns (not fails) about a missing.gitattributeseol=lf; CI-2 fails only for a CI job you added that.keelokit/verify-map.tomllacks (add it to the map, same commit; the map is the template's, so the update merges its new rows into yours); anddocs/prelaunch-debt-ledger.md,docs/ci.md,.keelokit/bin/ci.py,status.pyand the agent brief arrive as new files.verifynow also takes a per-machine lock; the CI gains a nightly trigger, a manual trigger and aci-reportjob. - Resolve every
*.rej: keep the project's intent, take the template's structure; delete the.rejfiles. Read the Keelokit CHANGELOG entries between the two versions for what changed and why. pnpm install, thenpnpm verify --allandpython3 .keelokit/bin/doctor.py. New house rules may fail on purpose: meet them, or register an exception with the user's approval. Coming from a version beforerun-local(the harness has no.keelokit/bin/run-local.shyet) with amobiletrait: the script arrives with the upgrade, butprofile.tomlis the project's, so no[local]block comes with it and the doctor warns (RUN-1). Offer/keelokit:run-local, which detects it and writes the block after a yes.- Commit
chore: upgrade Keelokit <from> → <to>and report: rules added/changed, conflicts resolved, and anything the user must decide.
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.

