No description
Find a file
John Crenshaw a94f934e2a
Merge pull request #348 from crenshawdev/cadence/v3.11.2
feat: move the setting questions and explanations into the config schema
2026-11-04 09:20:49 -05:00
.claude chore(security): take sentinel out of the repository (#335) 2026-10-28 13:05:43 -04:00
.claude-plugin chore: bump manifest to 3.11.1 + changelog 2026-11-03 22:32:03 -05:00
.github refactor(1-4): delete config-catalog.md and reword the comments that named it 2026-11-04 07:27:47 -05:00
agents chore: the agents, role contracts and README stop naming the retired Excerpt tools 2026-10-28 19:43:59 -04:00
cadence-core fix(1): say a null entry on a list key is not an answer a reader can offer 2026-11-04 08:49:48 -05:00
docs docs(1): drop the retired switches from the guide 2026-11-03 22:08:31 -05:00
hooks fix: read-trace and the PostToolUse matcher stop naming the retired Excerpt tools 2026-10-28 19:40:58 -04:00
skills fix(1): stop check reading a torn config or an invalid scope as no policy 2026-11-03 19:14:35 -05:00
.gitignore chore(1): merge main and pin the suite that holds both lines 2026-11-03 22:03:53 -05:00
CHANGELOG-v1-v2.md docs(3-1): move the 1.x and 2.x releases into CHANGELOG-v1-v2.md 2026-10-05 17:11:47 -04:00
CHANGELOG.md chore: bump manifest to 3.11.1 + changelog 2026-11-03 22:32:03 -05:00
CONTRIBUTING.md docs(1-4): CONTRIBUTING gains the Writing tests section 2026-11-03 18:12:08 -05:00
DESIGN.md feat(1-4): every statement of the four-line rule names the optional Plan line 2026-10-29 21:17:35 -04:00
INTERNALS.md docs(2-1): INTERNALS cites the moved tests by bare file name 2026-10-28 16:17:59 -04:00
jsconfig.json ci(2-3): the TypeScript configs reach the suite where it now lives 2026-10-28 16:26:36 -04:00
LICENSE Improve/audit findings jcrenshaw (#1) 2026-07-14 23:58:58 -04:00
LINEAGE.md docs: make the public docs and figures say what HEAD does 2026-10-04 10:28:17 -04:00
MANIFESTO.md docs: make the public docs and figures say what HEAD does 2026-10-04 10:28:17 -04:00
METHOD.md docs(1-8): describe the testing policy, pending_ci and the publishing authorization 2026-11-03 18:33:30 -05:00
NOTICE.md feat(4-1): soften GSD rewrite framing to lineage/distillation, date-label mass figure 2026-07-17 14:10:47 -04:00
README.md docs: link the live guide and add warm reading palettes 2026-11-03 21:49:19 -05:00
SECURITY.md chore(security): take sentinel out of the repository (#335) 2026-10-28 13:05:43 -04:00
sonar-project.properties ci: scan with SonarQube Cloud from CI and import the suite's coverage 2026-11-01 09:58:59 -05:00
tsconfig.ci.json docs: say the suite is a pinned clone, not a submodule 2026-10-29 10:40:22 -04:00

Cadence

Test Latest release License: MIT

Appearance is cheap. Verification is the work.

Cadence is a Claude Code plugin for a single developer who expects to maintain the software after the session ends.

Getting an agent to write code is usually the easy part. Keeping it working toward the thing you actually asked for takes more attention. Decisions get lost between sessions. A small change grows an abstraction nobody needed. The tests pass, but you still have to work out what they established.

Cadence gives that work a structure. Requirements, decisions, plans and results stay in your repository under .planning/. Planning, implementation and review happen in separate contexts. A new session reads where the project stands and picks up from there.

You decide what you're building and the constraints it needs to respect. Cadence carries those decisions through the work.

Testing needs a stopping point

An agent can find a reason to write another test almost indefinitely. Each suggestion may sound reasonable on its own. Taken together, they can cost more to build and maintain than the behavior they protect.

More testing has to earn its place.

Cadence's testing policy sets the scope before implementation. Planning checks what the existing tests cover, chooses the smallest set of additional checks needed, and states what evidence is enough to finish. Fixtures, mocks and test infrastructure count toward that effort too.

Under an accepted policy:

  • Required tests run unattended in GitHub Actions, including setup, services and cleanup.
  • Coverage starts at a recommended 85% for lines and branches, preserving higher existing thresholds. Unsupported metrics are made explicit; Go has a separate statement threshold.
  • Existing tests are reused when they adequately cover the behavior. Bug fixes need a reproducer that fails for the defect and passes after the fix.
  • Testing stops when the agreed behavior is covered and the required checks pass. Expanding it needs a demonstrated defect, an uncovered acceptance requirement or a measured coverage shortfall.

A passing coverage percentage doesn't establish that the assertions mean anything. The policy requires both meaningful checks and the accepted thresholds. You shouldn't have to approve every test to keep testing under control.

Setup offers the policy, or you can accept one for an existing Cadence project with /cadence:cad-config --testing. It's opt-in per repository. CI-only checks stay pending until they run, and a phase is called CI-verified only for a commit whose required jobs passed.

Read the testing chapter for the rules, supported coverage tools and enforcement limits.

Get started

You'll need Claude Code with plugin support, Node.js, Git, and a signed-in forge CLI: gh, glab or tea. Testing-policy enforcement currently requires GitHub Actions. Cadence's own scripts have no runtime package dependencies.

/plugin marketplace add https://github.com/crenshawdev/cadence.git
/plugin install cadence@cadence

In an existing repository:

/cadence:cad-adopt

For a new project:

/cadence:cad-new-project

Already worked through the idea? Pass your brief with /cadence:cad-new-project --brief <file>. Cadence reads what's settled and asks about what's still open.

Update with /plugin update cadence@cadence.

The working loop

Commands below use the short names. In Claude Code, use the /cadence: prefix, as above.

Command What it does
/cad-context <phase> Settle the decisions and acceptance criteria.
/cad-plan <phase> Turn them into a plan with a bounded testing scope when a policy is active.
/cad-execute <phase> Build the plan and run its checks.
/cad-verify <phase> Check whether the phase delivered what it promised.
/cad-progress Read the project state and find the next step.

Review findings come back for triage. You can use fresh-context Claude reviewers or explicitly enable other providers. Publishing for verification and unattended landing each need their own authorization.

The record stays with the project, so you can end a session without making the next one reconstruct your decisions from chat.

Documentation

Read the Cadence guide, or browse the Markdown on GitHub.

Start here What you'll find
Getting started · Working with Cadence Installation, the project cycle and your first phase.
Commands The full command reference; also available through /cadence:cad-help.
Configuration Options, defaults, types and configuration scopes. Use /cadence:cad-config to change them.
Testing policy Test scope, stopping rules, coverage and required CI jobs.
Permissions and data Provider calls, credentials, local records, shell permissions and publishing.
How it works · Controls and limits What the roles do and how the controls work.
Cost Measured runs and where the spend goes.

Cadence adds no telemetry. Its records stay in your repository and go wherever you push them. It runs inside Claude Code, so your session is still subject to the host's data handling. Optional external reviewers receive project material only when enabled.

Help and attribution

Questions go in #cadence on the jcrenshaw.dev Discord. Bugs go to GitHub issues. See Contributing before proposing a change.

Cadence is maintained by John Crenshaw and derives from GSD by Open GSD. It's distributed under the MIT License, with the original attribution retained in NOTICE. Lineage records where it came from.

Support Cadence on Ko-fi.