Kerd
CLAUDE.md3 starsChanged 53 days agoMITView on GitHub
Claude Code plugin: eight workflow skills for session discipline, session and machine handoff, knowledge management, project audits, human writing voice, structural health, visual agreement, and native Claude/Codex session collaboration. Every change to a skill (new skill, modified behavior, renamed command, changed output) requires ALL of the following before commit: The metadata.description field in marketplace.json is intentionally a different shape — a marketplace one-liner ("Kerd: opinionated workflow skills…"), not the capability list. Don't homogenize them. Update metadata.description only when the marketplace…
The file
We split this CLAUDE.md into the rules it gives an agent
6 rules. About 0 are common, 3 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 7
Always push after committing: Every commit goes to remote immediately.
- Distinctive: line 12
Every change to a skill (new skill, modified behavior, renamed command, changed output) requires ALL of the following before commit:
- Distinctive: line 19
Update README.md: If the skill's behavior, usage, or output changed, update its section in the README.
- Very specific: line 21
Update plugin descriptions: if the change affects what Kerd does at a high level, update both *capability-list* locations and keep them …
- Very specific: line 29
Namespace references: all slash-command references in docs and skills must use the kerd: prefix (e.g., /kerd:tend, /kerd:conductor).
- Very specific: line 73
All cross-skill references use /kerd:<skill> format
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md 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
Kerd
Claude Code plugin: eight workflow skills for session discipline, session and machine handoff, knowledge management, project audits, human writing voice, structural health, visual agreement, and native Claude/Codex session collaboration.
Commit Rules
- Always push after committing. Every commit goes to remote immediately.
- Always run the release checklist before committing. Version bumps, README updates, and description updates happen before the commit, not after.
Release Checklist
Every change to a skill (new skill, modified behavior, renamed command, changed output) requires ALL of the following before commit:
- Bump version in all three locations (keep them in sync):
.claude-plugin/plugin.json→version.claude-plugin/marketplace.json→metadata.version.claude-plugin/marketplace.json→plugins[0].version
- Update README.md. If the skill's behavior, usage, or output changed, update its section in the README. If a new skill was added, add a new section following the existing pattern.
Update plugin descriptions: if the change affects what Kerd does at a high level, update both capability-list locations and keep them byte-identical:
.claude-plugin/plugin.json→description(capability list).claude-plugin/marketplace.json→plugins[0].description(capability list — same string as plugin.json above)
The
metadata.descriptionfield inmarketplace.jsonis intentionally a different shape — a marketplace one-liner ("Kerd: opinionated workflow skills…"), not the capability list. Don't homogenize them. Updatemetadata.descriptiononly when the marketplace summary itself needs to change (rebrand, scope shift), as a separate decision.- Update skill trigger description: the
descriptionfield in the skill's SKILL.md frontmatter controls when Claude invokes it. If behavior changed, update the trigger description to match. - Namespace references: all slash-command references in docs and skills must use the
kerd:prefix (e.g.,/kerd:tend,/kerd:conductor). The only exception is within README.md examples showing shorthand usage, which may omit the prefix for readability.
CI enforces the mechanical subset of this checklist on every push: python3 tools/release_check.py refuses version drift (item 1), capability-list drift (item 3), bare slash references (item 5), a release note that reads differently in README.md and CHANGELOG.md, and skill or agent frontmatter that breaks Anthropic's limits (must parse as YAML; description at most 1,024 characters with no < or >; SKILL.md body at most 500 lines). The changelog may keep older entries the README has trimmed; that is the decided shape, not drift.
Version Strategy
Use semver: MAJOR.MINOR.PATCH
- PATCH: bug fixes, wording tweaks, internal refactors with no behavior change
- MINOR: new skill, new feature within a skill, changed behavior
- MAJOR: breaking changes to skill interfaces or directory conventions
Project Structure
skills/ # skill definitions (each skill in its own folder with SKILL.md)
agents/ # kerd:<model>-<effort> subagent definitions: model and effort for delegated native Claude jobs (older kerd:effort-<level> kept for sessions that predate them)
tools/release_check.py # standalone release rules check (version drift, capability-list drift, bare slash references)
tools/run_tests.py # runs every skill's scripts/tests/ wording tests
docs/product/ # the funnel board from the retired ladder — unpoliced history, one <slug>.md per work item
docs/work/question-sets/ # seed question sets, one <work-type>.md, copied into a work record at intake
docs/design/ # living design docs (undated filenames)
docs/gates/ # dated gate records from the retired ladder — unpoliced history
docs/plans/ # dated contract specs and progress renders from the retired ladder — unpoliced history
docs/requirements/ # requirement records from the retired ladder — unpoliced history
docs/playbook.md # living project guide, updated by conductor close-out
docs/state-contract.md # who owns and reads CONTEXT.md, TODO.md, kivna/sessions/
docs/decisions.md # the full case for every standing decision; CONTEXT.md keeps only governing rulings
docs/backlog-archive.md # Backlog rows closed at Switch Out, with verdict, evidence and date
CONTEXT.md # current state, overwritten each session
TODO.md # open work (## Now + ## Backlog)
hooks/ # session hooks (statusline, session-start, skill-complete, context-reading)
tests/ # hooks_test.sh
evals/ # behaviour cases for `claude plugin eval` (run with --scaffold; results/ ignored)
kivna/vault.json # Obsidian vault config
kivna/sessions/ # session logs from switch (committed)
.claude-plugin/ # plugin.json and marketplace.json
.github/workflows/gate.yml # CI: skill unit tests, hook tests, release rulesConventions
- Skill names are lowercase, single-word, Gaelic-inspired where it adds character
- Skills define behavior. The plugin system loads them directly via the
kerd:prefix. - SKILL.md frontmatter
namefield is the local name only (nokerd:prefix, the plugin system adds it) - All cross-skill references use
/kerd:<skill>format
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.

