cad-adopt
Initialize .planning/ from a repo that already exists - PROJECT.md, REQUIREMENTS.md and a remaining-work ROADMAP.md derived from the code and the git history
Land finished work - report git state, then ask the mechanism (push / MR or PR / tag / leave local). Never decides how you publish
$ npx -y skills add crenshawdev/cadence --skill cad-land --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/cad-landContext preview
The summary Claude sees to decide when to auto-load this skill.
Land finished work - report git state, then ask the mechanism (push / MR or PR / tag / leave local). Never decides how you publish
name: cad-land description: "Land finished work - report git state, then ask the mechanism (push / MR or PR / tag / leave local). Never decides how you publish" argument-hint: "[base branch | defaults to git.base_branch]" allowed-tools: - Read - Bash - Task - AskUserQuestion
<objective> Land the current branch's work. cad-land encodes "the git mechanism is the user's call" by construction: it never has a preselected publish action and never auto-pushes. It reports the state, asks how to publish, and executes exactly that - nothing more. </objective>
<execution_context> @${CLAUDE_PLUGIN_ROOT}/cadence-core/references/git-guard.md </execution_context>
<process> Read every config key this run needs in ONE `config.mjs get` up front (conventions.md Parallel work) - `git.base_branch git.protected_branches git.auto_close git.on_land_cleanup git.create_tag` - and reuse the values across the steps below rather than re-reading per step.
1. **Report git state.** Current branch; the base = `$ARGUMENTS`, else `git.base_branch`, else the first `git.protected_branches` entry that exists here (references/git-guard.md's fallback); commits ahead of base; unpushed commits; uncommitted/untracked changes; and the remote host detected from the origin URL (gitlab -> MR, github -> PR, any other host where `tea` holds a login -> Forgejo/Gitea PR via `tea`, else local only). Show this plainly before doing anything.
**Then the tracker, in the same report.** Run it here, before any publish ask, on both step-3 arms:
node "${CLAUDE_PLUGIN_ROOT}/cadence-core/bin/issue-check.mjs" check --dir <root> --base <base>Branch on `action` alone. On `report`: say in ONE sentence which issues this branch's commits reference and which of them are still open ("your branch references #42 and #47; #42 is still open"), naming a `not-found` number as not found and an `unresolved` one unresolved, never closed or not found. Print the `open` list ONLY when `referenced` is empty - it is the fallback, never the headline, because a bare list is what a reader skims past. On `skip`: print `reason` verbatim as ONE line and carry on - never block, never retry, never ask, and never list an issue the seam did not read. On `off` - `git.issue_check: false`, decided before any forge CLI runs - say NOTHING about the tracker: not the reason, not that it was skipped. The off switch is off, so this paragraph produces no output at all.
This report never writes: landing closes no issue, and closing one stays an explicit ask you make at publish time.
2. **Uncommitted changes.** If the tree is dirty, do NOT auto-commit. Ask (ask-user seam): commit them first (then continue), leave them out of this land, or stop. If HEAD is a protected branch, the protected-branch guard (references/git-guard.md) applies to any commit here.
3. **Publish - branch on `git.auto_close`.**
**First the deferred queue, on BOTH arms and ahead of the branch below.** A gate resolved `deferred` ran its reviewer and let the run continue, so the finding stops the LAND. Ask what is still queued:
node "${CLAUDE_PLUGIN_ROOT}/cadence-core/bin/planning.mjs" deferred listOn ANY entry in `members`, STOP the land here: no publish ask, no seam call, no merge, no tag, neither arm. Print each member's `trigger`, `discriminator` and finding count with the `path` its bodies are in, then point the reader at `${CLAUDE_PLUGIN_ROOT}/cadence-core/references/triage-gate.md`, whose `deferred` arm says how to clear one - triage the member's findings and record the rulings with `planning.mjs adjudication` for the same trigger, discriminator and round, which supersedes it. A non-empty `unreadable` arrives as `ok:false` and refuses exactly as a member does: the queue could not be PROVEN empty, and this gate never reports "nothing deferred" about input it could not read, the disposition `land-cleanup.mjs gate` already takes for a findings payload it could not parse.
It is NOT `land-cleanup.mjs gate` and must not be folded into it: that gate halts only when `git.auto_close` is true and reads only `risk_surface` survivors, so a default-configured project would publish straight over a deferred `plan`, `diff` or `phase_diff` finding.
**(a) `git.auto_close` false (default): ask the mechanism (ask-user seam, NO preselected default):**
GitLab, `gh pr create` on GitHub, `tea pr create --base <base> --head <branch>` on a Forgejo/Gitea remote - `tea` does not push the source branch itself, so push it first as part of this same chosen action). If no remote, or `tea` holds no login at all, this option is absent.
whether to push it.
**Read the publish rails before a publishing answer.** When the answer is direct push, open MR/PR, or a tag the user chose to push, Read `${CLAUDE_PLUGIN_ROOT}/cadence-core/references/git-publish.md` (one consult site - step 3a or 3b, never both) first: rail 3 and the `git.auto_close` policy govern all three, and this skill no longer preloads them.
Then **execute exactly that, raw.** Run only the chosen action. Never push unless push (or push-tag) was chosen. No PR-body templating beyond a title/summary the user confirms. Report precisely what was done (branch pushed, MR/PR URL, tag created) and nothing implied.
**(b) `git.auto_close` true: land the integration branch on base via `PR -> merge`, no prompts.** Skip the 3a ask entirely (this is the single opt-in that lets the close run unattended; it never installs a default into the 3a ask). The integration branch is local-only (references/git-publish.md
Appearance is cheap. Verification is the work. Cadence is for developers using Claude Code on software they will still own after the session ends. Claude can write a convincing plan, produce working code, and tell you the job is finished.
Repo: crenshawdev/cadence
Initialize .planning/ from a repo that already exists - PROJECT.md, REQUIREMENTS.md and a remaining-work ROADMAP.md derived from the code and the git history
Internal role contract, preloaded into every cad-assumptions-analyzer rung agent. Not a user command.
Pre-ship traceability audit - every requirement traced to a phase, plan and verification, orphan detection both directions, a FAIL gate before shipping
Capture a phase-linked todo, a seed idea for a future milestone, or a note, without losing your place - .planning/CAPTURE.md, or --cadence for friction with…
Configure Cadence's config.json - workflow toggles, the per-role model and effort interview, and interactive cross-model review provider setup
Gather phase context before planning - codebase assumptions, locked decisions, falsifiable acceptance criteria - in one pass