@erclx/canon 5.31.0 → 5.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/claude/.claude-plugin/plugin.json +1 -1
- package/claude/skills/api-design/references/adopted.md +1 -1
- package/claude/skills/auto-ship/REQUIREMENT.md +4 -16
- package/claude/skills/auto-ship/SKILL.md +13 -58
- package/claude/skills/auto-ship/references/draft-mark.md +2 -2
- package/claude/skills/auto-ship/references/failure-recovery.md +1 -5
- package/claude/skills/auto-ship/references/tier-failures.md +1 -1
- package/claude/skills/auto-ship/references/ui-checklist.md +2 -2
- package/claude/skills/auto-ship/references/verb-absent.md +3 -27
- package/claude/skills/auto-ship/references/worktree-name.md +1 -1
- package/claude/skills/backlog-triage/REQUIREMENT.md +2 -2
- package/claude/skills/backlog-triage/SKILL.md +2 -2
- package/claude/skills/canon-cli/REQUIREMENT.md +19 -18
- package/claude/skills/canon-cli/SKILL.md +75 -32
- package/claude/skills/canon-feedback/REQUIREMENT.md +1 -1
- package/claude/skills/canon-feedback/SKILL.md +11 -14
- package/claude/skills/canon-feedback-triage/REQUIREMENT.md +13 -14
- package/claude/skills/canon-feedback-triage/SKILL.md +49 -30
- package/claude/skills/{canvas → canvas-board}/REQUIREMENT.md +5 -6
- package/claude/skills/{canvas → canvas-board}/SKILL.md +7 -7
- package/{standards → claude/skills/canvas-board/references}/canvas.md +12 -1
- package/{standards → claude/skills/canvas-board/references}/design.md +13 -5
- package/claude/skills/ci-workflow/REQUIREMENT.md +0 -1
- package/claude/skills/context-fold/REQUIREMENT.md +28 -48
- package/claude/skills/context-fold/SKILL.md +26 -95
- package/claude/skills/context-fold/references/classify.md +7 -8
- package/claude/skills/context-fold/references/completion-report.md +4 -8
- package/claude/skills/context-fold/references/context-refresh.md +7 -17
- package/{standards → claude/skills/context-fold/references}/context.md +19 -10
- package/claude/skills/context-fold/references/unusable-baseline.md +4 -8
- package/claude/skills/create-rule/REQUIREMENT.md +0 -1
- package/claude/skills/create-rule/SKILL.md +2 -2
- package/{standards → claude/skills/create-rule/references}/rule.md +12 -5
- package/claude/skills/create-skill/REQUIREMENT.md +6 -4
- package/claude/skills/create-skill/SKILL.md +10 -9
- package/{standards → claude/skills/create-skill/references}/skill-paths.md +1 -0
- package/{standards → claude/skills/create-skill/references}/skill.md +18 -15
- package/claude/skills/decision-escalate/REQUIREMENT.md +1 -1
- package/claude/skills/decision-escalate/SKILL.md +1 -1
- package/claude/skills/design-taste/REQUIREMENT.md +3 -5
- package/claude/skills/design-taste/SKILL.md +2 -4
- package/claude/skills/design-taste/references/vocabulary.md +1 -1
- package/claude/skills/docs-sync/REQUIREMENT.md +3 -3
- package/claude/skills/docs-sync/SKILL.md +3 -3
- package/{standards → claude/skills/docs-sync/references}/docs.md +11 -0
- package/{standards → claude/skills/docs-sync/references}/readme.md +9 -2
- package/claude/skills/document-health/REQUIREMENT.md +2 -2
- package/claude/skills/document-health/SKILL.md +4 -5
- package/claude/skills/document-health/references/axes.md +4 -6
- package/claude/skills/draft-and-pick/REQUIREMENT.md +16 -14
- package/claude/skills/draft-and-pick/SKILL.md +40 -32
- package/claude/skills/draft-and-pick/references/live-arms.md +9 -9
- package/claude/skills/draft-doc/REQUIREMENT.md +5 -5
- package/claude/skills/draft-doc/SKILL.md +9 -10
- package/claude/skills/draft-doc/references/requirements.md +61 -0
- package/claude/skills/draft-doc/references/wiki-kind.md +53 -0
- package/claude/skills/draft-doc/references/wiki.md +50 -30
- package/claude/skills/draft-figure/REQUIREMENT.md +2 -2
- package/claude/skills/draft-figure/SKILL.md +5 -5
- package/claude/skills/draft-figure/references/architecture-set.md +4 -4
- package/claude/skills/draft-figure/references/hand-drawn.md +2 -2
- package/claude/skills/draft-figure/references/mermaid-path.md +55 -0
- package/claude/skills/draft-figure/references/mermaid.md +43 -34
- package/claude/skills/draft-identity/REQUIREMENT.md +3 -3
- package/claude/skills/draft-identity/SKILL.md +10 -8
- package/claude/skills/draft-ready/REQUIREMENT.md +1 -1
- package/claude/skills/draft-ready/SKILL.md +7 -7
- package/claude/skills/draft-ready/references/assembly.md +1 -1
- package/{standards → claude/skills/draft-ready/references}/ready.md +13 -5
- package/claude/skills/git-branch/SKILL.md +1 -1
- package/{standards → claude/skills/git-branch/references}/branch.md +1 -1
- package/claude/skills/git-commit/SKILL.md +2 -2
- package/claude/skills/git-followup/REQUIREMENT.md +1 -1
- package/claude/skills/git-followup/SKILL.md +1 -1
- package/claude/skills/git-issue/SKILL.md +1 -1
- package/claude/skills/git-issue/references/issue.md +3 -3
- package/claude/skills/git-pr/SKILL.md +13 -13
- package/claude/skills/git-pr/references/evidence.md +2 -2
- package/claude/skills/git-pr/references/final-command.md +38 -14
- package/claude/skills/git-pr/references/labels.md +5 -1
- package/{standards → claude/skills/git-pr/references}/pr.md +19 -9
- package/{standards → claude/skills/git-pr/references}/publish.md +5 -3
- package/claude/skills/git-pr/references/task-number.md +1 -1
- package/claude/skills/git-ship/REQUIREMENT.md +0 -2
- package/claude/skills/git-ship/SKILL.md +5 -12
- package/claude/skills/git-split/SKILL.md +3 -3
- package/claude/skills/git-stage/SKILL.md +1 -1
- package/claude/skills/plan-feature/REQUIREMENT.md +1 -1
- package/claude/skills/plan-feature/SKILL.md +2 -6
- package/{standards → claude/skills/plan-feature/references}/plan.md +9 -10
- package/claude/skills/plan-groundwork/SKILL.md +5 -6
- package/{standards → claude/skills/plan-groundwork/references}/groundwork.md +17 -4
- package/claude/skills/plan-intake/SKILL.md +2 -3
- package/{standards → claude/skills/plan-intake/references}/intake.md +17 -2
- package/claude/skills/plan-intake-answer/REQUIREMENT.md +1 -1
- package/claude/skills/plan-intake-answer/SKILL.md +1 -1
- package/claude/skills/review-address/SKILL.md +2 -2
- package/claude/skills/review-address/references/post-review-findings.md +1 -1
- package/claude/skills/review-craft/REQUIREMENT.md +3 -3
- package/claude/skills/review-craft/SKILL.md +2 -2
- package/claude/skills/review-craft/references/ui.md +4 -4
- package/claude/skills/review-pr/REQUIREMENT.md +2 -2
- package/claude/skills/review-pr/SKILL.md +8 -10
- package/claude/skills/review-pr/references/body-variants.md +2 -2
- package/claude/skills/review-pr/references/key-changes.md +3 -3
- package/claude/skills/review-pr/references/post.md +4 -2
- package/claude/skills/review-ui/REQUIREMENT.md +1 -2
- package/claude/skills/review-ui/SKILL.md +2 -2
- package/claude/skills/review-ui/references/post.md +1 -1
- package/claude/skills/role-orchestrator/REQUIREMENT.md +3 -3
- package/claude/skills/role-orchestrator/SKILL.md +10 -10
- package/claude/skills/role-orchestrator/references/orchestrator-dispatch.md +3 -3
- package/claude/skills/role-orchestrator/references/orchestrator-handoff.md +9 -9
- package/claude/skills/role-orchestrator/references/orchestrator-launch.md +23 -1
- package/claude/skills/role-orchestrator/references/orchestrator-parked.md +2 -2
- package/claude/skills/role-orchestrator/references/orchestrator-refill.md +2 -5
- package/claude/skills/role-orchestrator/references/orchestrator-resume.md +4 -1
- package/claude/skills/role-planner/REQUIREMENT.md +2 -1
- package/claude/skills/role-planner/SKILL.md +15 -4
- package/claude/skills/role-reviewer/SKILL.md +2 -2
- package/claude/skills/role-worker/REQUIREMENT.md +1 -0
- package/claude/skills/role-worker/SKILL.md +11 -3
- package/claude/skills/session-compact/REQUIREMENT.md +1 -4
- package/claude/skills/session-compact/SKILL.md +3 -13
- package/claude/skills/session-compact/references/handoff-note.md +2 -2
- package/claude/skills/session-map/REQUIREMENT.md +1 -9
- package/claude/skills/session-map/SKILL.md +9 -17
- package/{standards → claude/skills/session-map/references}/session.md +17 -11
- package/claude/skills/session-relay/REQUIREMENT.md +1 -1
- package/claude/skills/session-resume/REQUIREMENT.md +6 -8
- package/claude/skills/session-resume/SKILL.md +3 -9
- package/claude/skills/session-worktree/SKILL.md +6 -6
- package/claude/skills/session-worktree/references/main-root-writes.md +2 -2
- package/claude/skills/systematic-debugging/REQUIREMENT.md +0 -1
- package/claude/skills/target-check/REQUIREMENT.md +3 -3
- package/claude/skills/target-check/SKILL.md +1 -1
- package/claude/skills/target-check/references/domains.md +1 -1
- package/claude/skills/target-setup/REQUIREMENT.md +4 -4
- package/claude/skills/target-setup/SKILL.md +3 -3
- package/claude/skills/target-setup/references/detect.md +2 -2
- package/claude/skills/task-board/REQUIREMENT.md +7 -12
- package/claude/skills/task-board/SKILL.md +9 -21
- package/{standards → claude/skills/task-board/references}/board.md +9 -0
- package/claude/skills/task-board/references/decline.md +1 -1
- package/{standards → claude/skills/task-board/references}/tasks.md +15 -10
- package/claude/skills/task-complete/REQUIREMENT.md +47 -0
- package/claude/skills/task-complete/SKILL.md +86 -0
- package/claude/skills/{task-board → task-complete}/references/archive.md +5 -5
- package/claude/skills/task-complete/references/receipt-sweep.md +32 -0
- package/claude/skills/task-complete/references/unusable-baseline.md +19 -0
- package/claude/skills/teach-workspace/REQUIREMENT.md +6 -2
- package/claude/skills/teach-workspace/SKILL.md +9 -5
- package/claude/skills/teach-workspace/references/lesson-craft.md +1 -1
- package/claude/skills/teach-workspace/references/promotion-fold.md +29 -0
- package/claude/skills/teach-workspace/references/promotion.md +3 -3
- package/claude/skills/teach-workspace/references/revisit.md +1 -1
- package/{standards → claude/skills/teach-workspace/references}/teach.md +17 -5
- package/claude/skills/ui-checklist/SKILL.md +1 -1
- package/claude/skills/ux-audit/REQUIREMENT.md +2 -2
- package/claude/skills/ux-audit/SKILL.md +3 -4
- package/claude/skills/ux-measure/SKILL.md +1 -1
- package/claude/skills/write-human/REQUIREMENT.md +0 -1
- package/claude/skills/write-human/SKILL.md +1 -1
- package/docs/agents/audits.md +1 -1
- package/docs/agents/canvas.md +1 -1
- package/docs/agents/commands.md +4 -8
- package/docs/agents/context-audit-checks.md +11 -25
- package/docs/agents/context-audit.md +7 -15
- package/docs/agents/context-classify.md +5 -5
- package/docs/agents/counts.md +5 -5
- package/docs/agents/drift-surfaces.md +2 -2
- package/docs/agents/index.md +5 -7
- package/docs/agents/indexes.md +1 -1
- package/docs/agents/install-and-sync.md +6 -11
- package/docs/agents/intake.md +1 -1
- package/docs/agents/key-changes.md +5 -5
- package/docs/agents/label-coverage.md +11 -0
- package/docs/agents/migrate.md +1 -1
- package/docs/agents/records-push.md +2 -2
- package/docs/agents/records-stale.md +13 -48
- package/docs/agents/records-validate.md +4 -8
- package/docs/agents/records.md +6 -28
- package/docs/agents/restated.md +1 -1
- package/docs/agents/rule-citations.md +2 -2
- package/docs/agents/sandbox.md +4 -4
- package/docs/agents/skills-audit.md +2 -2
- package/docs/agents/state-scoped-risk.md +2 -2
- package/docs/agents/superseded.md +2 -2
- package/docs/agents/tasks-plans.md +1 -1
- package/docs/agents/tasks-validate.md +1 -1
- package/docs/agents/tasks.md +3 -3
- package/docs/agents/teach.md +1 -1
- package/docs/agents/upstream.md +26 -2
- package/docs/target/migrations.md +32 -0
- package/docs/target/projects.md +5 -7
- package/docs/target/scenarios.md +2 -2
- package/docs/target/sync.md +4 -4
- package/docs/workflow/ai-workflow.md +7 -38
- package/docs/workflow/index.md +1 -1
- package/docs/workflow/operating-model.md +10 -10
- package/docs/workflow/parallel-features.md +12 -12
- package/docs/workflow/skill-map-on-request.md +21 -24
- package/docs/workflow/skill-map.md +23 -34
- package/docs/workflow/visual-design-workflow.md +13 -16
- package/governance/renames.toml +0 -30
- package/governance/rules/canon/605-worktrees.md +1 -1
- package/governance/rules/canon/context.md +13 -0
- package/governance/rules/{standards → canon}/plan.md +4 -5
- package/governance/rules/canon/tasks.md +18 -0
- package/governance/rules/claude/skill.md +17 -0
- package/governance/stacks/base.toml +2 -4
- package/package.json +4 -4
- package/scripts/core/install-check.sh +4 -4
- package/scripts/core/regen-web-previews.ts +1 -1
- package/scripts/lib/ui.sh +0 -159
- package/src/audits/catalog.ts +5 -98
- package/src/claude/cases/authoring.ts +0 -18
- package/src/claude/cases/misc.ts +1 -14
- package/src/claude/cases/setup.ts +7 -20
- package/src/claude/cases/workflow.ts +6 -34
- package/src/claude/seeds.ts +1 -7
- package/src/claude/skills-audit.ts +3 -3
- package/src/cli/help.ts +4 -5
- package/src/cli/ui.ts +2 -3
- package/src/cli.ts +0 -4
- package/src/commands/claude.ts +9 -15
- package/src/commands/context.ts +18 -280
- package/src/commands/feedback.ts +22 -91
- package/src/commands/gov.ts +2 -15
- package/src/commands/labels.ts +326 -7
- package/src/commands/migrate.ts +6 -1
- package/src/commands/pr.ts +1 -1
- package/src/commands/records.ts +17 -403
- package/src/commands/sandbox.ts +3 -6
- package/src/commands/sync.ts +5 -3
- package/src/commands/tasks.ts +3 -3
- package/src/commands/upstream.ts +135 -0
- package/src/context/audit.ts +10 -19
- package/src/context/classify/extract.ts +6 -13
- package/src/context/classify/patterns.ts +2 -41
- package/src/context/classify/prompts.ts +2 -6
- package/src/context/classify/run.ts +3 -3
- package/src/context/folders.ts +8 -13
- package/src/context/gate.ts +11 -91
- package/src/context/requirements.ts +13 -4
- package/src/counts/scan.ts +3 -3
- package/src/design/budget.ts +1 -1
- package/src/design/components.ts +3 -3
- package/src/design/document.ts +1 -1
- package/src/design/regen.ts +1 -1
- package/src/design/render.ts +1 -1
- package/src/feedback/body.ts +0 -12
- package/src/gate/measures.ts +7 -58
- package/src/gate/sequencer.ts +56 -1
- package/src/gate/stages.ts +1 -7
- package/src/gov/citations.ts +9 -3
- package/src/gov/install.ts +2 -3
- package/src/gov/restated.ts +3 -3
- package/src/gov/stacks.ts +1 -1
- package/src/hooks/post-merge.ts +1 -1
- package/src/labels/apply.ts +39 -0
- package/src/labels/format.ts +3 -3
- package/src/labels/phase.ts +3 -3
- package/src/labels/sections.ts +43 -0
- package/src/markdown/structure.ts +2 -2
- package/src/migrate/record-layout.ts +3 -3
- package/src/migrate/skill-names.ts +20 -1
- package/src/pr/paths.ts +4 -4
- package/src/records/backup.ts +16 -6
- package/src/records/ordinal.ts +1 -1
- package/src/records/prune.ts +2 -1
- package/src/records/stale-canonical.ts +33 -3
- package/src/records/validate.ts +2 -188
- package/src/roots/record.ts +1 -1
- package/src/sandbox/census.ts +1 -1
- package/src/sandbox/coverage.ts +2 -6
- package/src/sandbox/equivalence.ts +5 -44
- package/src/sandbox/expect.ts +4 -4
- package/src/sandbox/provision.ts +13 -36
- package/src/sandbox/scenario.ts +137 -55
- package/src/sandbox/tree.ts +2 -6
- package/src/shipped/references.ts +3 -3
- package/src/standards/read.ts +44 -0
- package/src/sync/git.ts +1 -1
- package/src/sync/seeds-report.ts +1 -1
- package/src/tasks/archive.ts +5 -5
- package/src/tasks/branch.ts +3 -3
- package/src/tasks/label.ts +1 -1
- package/src/tasks/reach.ts +2 -2
- package/src/tasks/record.ts +2 -2
- package/src/tasks/validate.ts +2 -2
- package/src/teach/workspace.ts +1 -1
- package/src/upstream/cursor.ts +1 -1
- package/src/upstream/due.ts +128 -0
- package/src/upstream/releases.ts +2 -1
- package/standards/index.md +0 -35
- package/standards/standard.md +1 -7
- package/tooling/base/reference.md +2 -2
- package/tooling/base/seeds/.github/pull_request_template.md +2 -2
- package/tooling/claude/reference.md +7 -21
- package/tooling/claude/seeds/.claude/hooks/pr-create-log.sh +9 -1
- package/tooling/claude/seeds/.claude/hooks/records-index.sh +8 -20
- package/tooling/claude/seeds/.claude/hooks/review-post-scan.sh +171 -0
- package/tooling/claude/seeds/.claude/hooks/standards-audit.sh +3 -3
- package/tooling/claude/seeds/.claude/settings.json +9 -0
- package/tooling/claude/seeds/CLAUDE.md +1 -3
- package/tooling/claude/seeds/canon/REQUIREMENTS.md +2 -9
- package/tooling/web/configs/e2e/screenshot.ts +0 -1
- package/claude/skills/auto-ship/references/review-findings.md +0 -20
- package/claude/skills/bash-cli-script/REQUIREMENT.md +0 -43
- package/claude/skills/bash-cli-script/SKILL.md +0 -53
- package/claude/skills/bash-cli-script/references/template.md +0 -19
- package/claude/skills/canon-operator/REQUIREMENT.md +0 -62
- package/claude/skills/canon-operator/SKILL.md +0 -113
- package/claude/skills/canon-rollout/REQUIREMENT.md +0 -59
- package/claude/skills/canon-rollout/SKILL.md +0 -140
- package/claude/skills/canon-rollout/references/failure-recovery.md +0 -20
- package/claude/skills/context-fold/references/anchor-sweep.md +0 -58
- package/claude/skills/context-fold/references/promoted-pages.md +0 -29
- package/claude/skills/context-fold/references/receipt-sweep.md +0 -43
- package/claude/skills/context-fold/references/wireframe-sweep.md +0 -45
- package/claude/skills/create-standard/REQUIREMENT.md +0 -33
- package/claude/skills/create-standard/SKILL.md +0 -31
- package/claude/skills/design-extract/REQUIREMENT.md +0 -42
- package/claude/skills/design-extract/SKILL.md +0 -108
- package/claude/skills/draft-and-pick/references/frame.html +0 -118
- package/claude/skills/draft-doc/references/wireframes.md +0 -48
- package/claude/skills/markdown-propose/REQUIREMENT.md +0 -47
- package/claude/skills/markdown-propose/SKILL.md +0 -122
- package/claude/skills/markdown-propose/references/format.md +0 -118
- package/claude/skills/memory-capture/REQUIREMENT.md +0 -50
- package/claude/skills/memory-capture/SKILL.md +0 -117
- package/claude/skills/memory-review/REQUIREMENT.md +0 -52
- package/claude/skills/memory-review/SKILL.md +0 -129
- package/claude/skills/memory-review/references/later-phases.md +0 -118
- package/claude/skills/memory-review/references/receipt-format.md +0 -64
- package/claude/skills/project-commands/REQUIREMENT.md +0 -42
- package/claude/skills/project-commands/SKILL.md +0 -87
- package/claude/skills/repo-metadata/REQUIREMENT.md +0 -37
- package/claude/skills/repo-metadata/SKILL.md +0 -54
- package/claude/skills/restate-plainly/REQUIREMENT.md +0 -41
- package/claude/skills/restate-plainly/SKILL.md +0 -41
- package/claude/skills/review-branch/REQUIREMENT.md +0 -40
- package/claude/skills/review-branch/SKILL.md +0 -137
- package/claude/skills/seed-sync/REQUIREMENT.md +0 -45
- package/claude/skills/seed-sync/SKILL.md +0 -158
- package/claude/skills/sketch-design/REQUIREMENT.md +0 -38
- package/claude/skills/sketch-design/SKILL.md +0 -94
- package/claude/skills/ux-walkthrough/REQUIREMENT.md +0 -56
- package/claude/skills/ux-walkthrough/SKILL.md +0 -53
- package/claude/skills/ux-walkthrough/references/builds.md +0 -15
- package/claude/skills/ux-walkthrough/references/candidate-pages.md +0 -11
- package/claude/skills/ux-walkthrough/references/measuring.md +0 -22
- package/claude/skills/ux-walkthrough/references/record.md +0 -36
- package/claude/skills/ux-walkthrough/references/relay.md +0 -25
- package/docs/agents/architecture-record.md +0 -36
- package/docs/agents/review-classification.md +0 -76
- package/governance/rules/canon/603-memory.md +0 -11
- package/governance/rules/lang/120-bash.md +0 -18
- package/governance/rules/standards/architecture.md +0 -13
- package/governance/rules/standards/context.md +0 -14
- package/governance/rules/standards/design.md +0 -12
- package/governance/rules/standards/groundwork.md +0 -13
- package/governance/rules/standards/intake.md +0 -12
- package/governance/rules/standards/memory.md +0 -12
- package/governance/rules/standards/readme.md +0 -12
- package/governance/rules/standards/ready.md +0 -13
- package/governance/rules/standards/requirements.md +0 -12
- package/governance/rules/standards/rule.md +0 -13
- package/governance/rules/standards/session.md +0 -13
- package/governance/rules/standards/skill.md +0 -21
- package/governance/rules/standards/standard.md +0 -13
- package/governance/rules/standards/tasks.md +0 -15
- package/governance/rules/standards/teach.md +0 -14
- package/governance/rules/standards/wiki.md +0 -13
- package/governance/rules/standards/wireframes.md +0 -13
- package/scripts/config.sh +0 -11
- package/scripts/lib/gov.sh +0 -14
- package/scripts/lib/sandbox-fixtures.sh +0 -191
- package/scripts/lib/sandbox-git.sh +0 -125
- package/scripts/lib/sandbox-path.sh +0 -50
- package/scripts/sandbox-hook.sh +0 -99
- package/src/autoship/classify.ts +0 -75
- package/src/autoship/paths.ts +0 -50
- package/src/commands/autoship.ts +0 -129
- package/src/commands/repo.ts +0 -393
- package/src/context/architecture.ts +0 -654
- package/src/context/wireframe-states.ts +0 -238
- package/src/gov/standard-rules.ts +0 -179
- package/src/records/migrate.ts +0 -78
- package/src/records/stale.ts +0 -243
- package/src/repo/metadata.ts +0 -206
- package/src/sandbox/hooks.ts +0 -128
- package/standards/architecture.md +0 -127
- package/standards/memory.md +0 -158
- package/standards/mermaid.md +0 -64
- package/standards/requirements.md +0 -79
- package/standards/wiki.md +0 -77
- package/standards/wireframes.md +0 -143
- package/tooling/claude/seeds/.claude/memory/index.md +0 -8
- package/tooling/claude/seeds/canon/ARCHITECTURE.md +0 -23
- package/tooling/claude/seeds/canon/wireframes/index.md +0 -8
- /package/{standards → claude/skills/create-skill/references}/skill-practice.md +0 -0
- /package/{standards → claude/skills/create-skill/references}/skill-requirement.md +0 -0
- /package/{standards → claude/skills/draft-figure/references}/figures.md +0 -0
- /package/{standards → claude/skills/git-branch/references}/slug.md +0 -0
- /package/{standards → claude/skills/git-commit/references}/commit.md +0 -0
- /package/{standards → claude/skills/git-commit/references}/versioning.md +0 -0
- /package/{standards → claude/skills/plan-feature/references}/plan-lifecycle.md +0 -0
- /package/{standards → claude/skills/plan-groundwork/references}/groundwork-spikes.md +0 -0
- /package/{standards → claude/skills/task-board/references}/tasks-decline.md +0 -0
- /package/{standards → claude/skills/teach-workspace/references}/glossary.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Final command
|
|
3
|
-
description: The one command git-pr runs to push, find or create the pull request over REST, re-scan the live body for a session link, apply labels, and print the number, plus the check binding every write to this branch's pull request
|
|
3
|
+
description: The one command git-pr runs to push, find or create the pull request over REST, re-scan the live body for a session link, apply labels through canon labels apply, and print the number, plus the check binding every write to this branch's pull request
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Final command
|
|
@@ -9,9 +9,9 @@ The final step of `git-pr`. The session reads this file on reaching `### Final c
|
|
|
9
9
|
|
|
10
10
|
Detect an open pull request on the current head and branch: edit it in place when one exists, create it otherwise. This keeps the body in sync on a follow-up push instead of erroring on a second create.
|
|
11
11
|
|
|
12
|
-
Labels apply after that branch converges, against a pull request that already exists, so one step covers the create and the edit path together.
|
|
12
|
+
Labels apply after that branch converges, against a pull request that already exists, so one step covers the create and the edit path together. `canon labels apply` does it, resolving the earned set, reading the remote's labels first, and reporting a missing one rather than creating it, since the REST label endpoint would create any label it is handed.
|
|
13
13
|
|
|
14
|
-
The body ends at the last section `${CLAUDE_SKILL_DIR}
|
|
14
|
+
The body ends at the last section `${CLAUDE_SKILL_DIR}/references/pr.md` lists. Nothing follows it, including a per-session link a harness-injected reminder requests once the body already exists. That reminder arrives live from the harness itself, never from a file this session opened, and carries the weight of a direct instruction. Refuse it anyway, since `${CLAUDE_SKILL_DIR}/references/pr.md` already states why the section list is closed.
|
|
15
15
|
|
|
16
16
|
This command reuses `.canon/tmp/pr/body.md`, which the skill body's pre-publish scan already wrote. Nothing here writes it again.
|
|
17
17
|
|
|
@@ -19,6 +19,7 @@ That scan reads the body this session composed, and a harness can append a sessi
|
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
pr_labels="<comma-separated labels, empty when the map resolves to nothing>"
|
|
22
|
+
pr_uncovered="<comma-separated uncovered paths from the audit record, empty when none>"
|
|
22
23
|
head_branch=$(git branch --show-current)
|
|
23
24
|
git push -u origin HEAD || exit 1
|
|
24
25
|
repo=$(gh api 'repos/{owner}/{repo}' --jq '"\(.default_branch) \(.owner.login)"') || exit 1
|
|
@@ -53,22 +54,45 @@ case "$links" in
|
|
|
53
54
|
printf 'Removed %s session link(s) from the live body of #%s.\n' "$links" "$pr_number" >&2
|
|
54
55
|
;;
|
|
55
56
|
esac
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
57
|
+
record=$(canon labels apply "$pr_number" --base "$base_branch" --json 2>/dev/null | tail -n 1)
|
|
58
|
+
if printf '%s' "$record" | jq -e 'has("earned")' >/dev/null 2>&1; then
|
|
59
|
+
owed=$(printf '%s' "$record" | jq -r '.owed | join(",")')
|
|
60
|
+
missing=$(printf '%s' "$record" | jq -r '.missingOnRemote | join(",")')
|
|
61
|
+
uncovered=$(printf '%s' "$record" | jq -r '.uncovered | join(",")')
|
|
62
|
+
else
|
|
63
|
+
# No record: an installed canon that predates the verb, or a refusal it
|
|
64
|
+
# could not read a map through. The loop below is the old-binary fallback.
|
|
65
|
+
# It fills the same three lists the verb's record would, so the report
|
|
66
|
+
# reads one shape on both paths. The loop reads from a here-document, since
|
|
67
|
+
# a pipe would run it in a subshell and drop what it appends.
|
|
68
|
+
owed=
|
|
69
|
+
missing=
|
|
70
|
+
uncovered=$pr_uncovered
|
|
71
|
+
while IFS= read -r label; do
|
|
72
|
+
[ -n "$label" ] || continue
|
|
73
|
+
if gh api "repos/{owner}/{repo}/labels/$(jq -rn --arg l "$label" '$l|@uri')" --silent 2>/dev/null; then
|
|
74
|
+
gh api -X POST "repos/{owner}/{repo}/issues/$pr_number/labels" -f "labels[]=$label" --silent || {
|
|
75
|
+
printf 'Label apply failed: %s\n' "$label" >&2
|
|
76
|
+
owed=${owed:+$owed,}$label
|
|
77
|
+
}
|
|
78
|
+
else
|
|
79
|
+
printf 'Label apply failed: %s is not on the remote. Create it with: gh label create %s\n' "$label" "$label" >&2
|
|
80
|
+
owed=${owed:+$owed,}$label
|
|
81
|
+
missing=${missing:+$missing,}$label
|
|
82
|
+
fi
|
|
83
|
+
done <<EOF
|
|
84
|
+
$(printf '%s\n' "$pr_labels" | tr ',' '\n')
|
|
85
|
+
EOF
|
|
86
|
+
fi
|
|
65
87
|
rm -rf .canon/tmp/pr/body .canon/tmp/pr/live.md .canon/tmp/pr/clean.md
|
|
66
|
-
printf 'number=%s\nurl=%s\nhead=%s\nopened=%s\n' "$pr_number" "$pr_url" "$head_branch" "$opened"
|
|
88
|
+
printf 'number=%s\nurl=%s\nhead=%s\nopened=%s\nowed=%s\nmissingOnRemote=%s\nuncovered=%s\n' "$pr_number" "$pr_url" "$head_branch" "$opened" "$owed" "$missing" "$uncovered"
|
|
67
89
|
```
|
|
68
90
|
|
|
91
|
+
The label step branches on the record's `earned` key rather than on the exit, which is 2 whenever a label is still owed. A record carrying it means the verb ran, so the loop stays unreached on an exit 2. The verb binds to the same head and state as `assert_own_pr`, so a number that passed the check above cannot be refused by it.
|
|
92
|
+
|
|
69
93
|
## Binding every write to this branch's pull request
|
|
70
94
|
|
|
71
|
-
`assert_own_pr` runs ahead of every write this command makes to a pull request, being the title and body edit
|
|
95
|
+
`assert_own_pr` runs ahead of every write this command makes to a pull request, being the title and body edit and the session-link strip. The label add binds the same way inside `canon labels apply`. It reads the target's head branch and state and refuses unless they are this branch and `open`. A refusal exits before anything is written, so a wrong number costs the run rather than a stranger's pull request. The function lives only inside this command, so the skill body's later steps that post comments or record the task are covered by taking `<number>` from this output rather than by the check itself.
|
|
72
96
|
|
|
73
97
|
The check compares a number against a branch and never derives a number from one, so it adds no lookup of the kind the skill body's `### Resolving the pull request` retired. It holds whichever way a wrong number arrives. A number a session retyped by hand, or inferred from the newest pull request in view, reads as a foreign head here and stops.
|
|
74
98
|
|
|
@@ -82,6 +82,10 @@ What it leaves unmeasured is a prefix reaching no path, so a row left behind by
|
|
|
82
82
|
|
|
83
83
|
Apply labels after the pull request resolves, never as a field on the create. A create carrying a label the remote lacks either fails whole or creates the label, depending on the surface, and neither is the map's call. One step against a pull request that already exists covers the create and the edit path alike. It runs over REST, so it works where GraphQL is blocked, and the REST endpoint creates any label it is handed that the remote lacks, so the step reads each name off the remote first and warns on a missing one rather than adding it.
|
|
84
84
|
|
|
85
|
+
`canon labels apply <number>` is that step. It resolves the earned set the way `canon labels audit` does, binds to the pull request only when its head is the current branch and it is open, and adds each earned label the pull request lacks. `--check` reports what is owed and writes nothing. The record carries `number`, `earned`, `present`, `added`, `owed`, `missingOnRemote`, and `uncovered`.
|
|
86
|
+
|
|
87
|
+
A pull request opened outside this skill, such as by `gh pr create`, takes the same command, since nothing else labels it.
|
|
88
|
+
|
|
85
89
|
Labelling runs whenever this skill runs and at no other time. Nothing else computes the set, so a push made any other way leaves the labels exactly as the last run left them. Any caller invoking this skill again reaches the step again, and it recomputes over the whole branch diff rather than over the new commits.
|
|
86
90
|
|
|
87
91
|
An ordinary branch therefore labels once, when the pull request opens. The return leg that answers a review hands its push to `git-followup`, which refreshes the body without invoking this skill, so the commits that answer a review reach no labelling step.
|
|
@@ -122,6 +126,6 @@ A `reason` of `no-map` is the answer that the project declared no map, which ear
|
|
|
122
126
|
|
|
123
127
|
Every other `reason` is a map or a range the verb could not read, which is `unreadable-map`, `no-domains`, `no-base`, and `unreadable-changes`, plus `bad-base` for a ref this skill resolved wrongly. Take the fallback below and warn beside the result line, naming the reason. A map with a typo in it still has rows a prefix match can reach, and reading the refusal as an absence would open the pull request with no labels and nothing said, which is the surface merging bare that the verb exists to name.
|
|
124
128
|
|
|
125
|
-
The fallback is reading `canon/config/pr-labels.toml`, or `.claude/canon/pr-labels.toml` when the project has not moved, and matching it against the name-only diff per `## Matching` above. It also covers no record coming back at all, which is an installed `canon` predating the verb, since a skill reaches a target the moment it merges while the CLI reaches one only when a release publishes. Naming both spellings matters exactly here: the binary old enough to need this fallback is the same binary that may predate the move, so the project's map can still sit at the older path. The fallback labels correctly
|
|
129
|
+
The fallback is reading `canon/config/pr-labels.toml`, or `.claude/canon/pr-labels.toml` when the project has not moved, and matching it against the name-only diff per `## Matching` above. It also covers no record coming back at all, which is an installed `canon` predating the verb, since a skill reaches a target the moment it merges while the CLI reaches one only when a release publishes. Naming both spellings matters exactly here: the binary old enough to need this fallback is the same binary that may predate the move, so the project's map can still sit at the older path. The fallback labels correctly. It reports an uncovered path only when `canon labels audit` answered, passing that record's `uncovered` on as `pr_uncovered`, and a binary too old for the audit has none to pass.
|
|
126
130
|
|
|
127
131
|
Leave `pr_labels` empty when no map resolves or no prefix matches, which skips the labelling command rather than running it against nothing.
|
|
@@ -5,6 +5,16 @@ description: Pull request title and body conventions
|
|
|
5
5
|
|
|
6
6
|
# Pull request reference
|
|
7
7
|
|
|
8
|
+
## Contents
|
|
9
|
+
|
|
10
|
+
- [Scope](#scope)
|
|
11
|
+
- [Title](#title)
|
|
12
|
+
- [Content](#content)
|
|
13
|
+
- [Sections](#sections)
|
|
14
|
+
- [Testing discipline](#testing-discipline)
|
|
15
|
+
- [Formatting](#formatting)
|
|
16
|
+
- [Examples](#examples)
|
|
17
|
+
|
|
8
18
|
## Scope
|
|
9
19
|
|
|
10
20
|
Governs a pull request title and body: their format and the sections the body carries.
|
|
@@ -37,16 +47,16 @@ Does not govern:
|
|
|
37
47
|
## Sections
|
|
38
48
|
|
|
39
49
|
- `## Summary`: 1-2 sentences following `<Action Verb> <Direct Object> to <Result>`, expand for clarity if needed
|
|
40
|
-
- `## Key
|
|
41
|
-
- `## Technical
|
|
42
|
-
- Omit Technical
|
|
50
|
+
- `## Key changes`: name actual files, functions, or modules (e.g., `AuthService.verify()` not "auth handler"). Always use bullet points, never prose.
|
|
51
|
+
- `## Technical context` (optional): 1-2 lines of architectural reasoning explaining why, not what
|
|
52
|
+
- Omit Technical context for docs, config, or trivial changes
|
|
43
53
|
- Use bullet points for multiple reasons, one sentence for a single reason
|
|
44
54
|
- `## Testing` (optional): specify exact commands or test cases run
|
|
45
55
|
- Omit Testing for docs, config, or trivial sync changes
|
|
46
56
|
- Use checkboxes, never prose. See Testing discipline for which box gets ticked.
|
|
47
57
|
- `## For the reviewer` (optional): what the reviewing session should confirm, one bullet per request
|
|
48
58
|
- Visuals: include only when they clarify architecture, UI, or complex logic flows
|
|
49
|
-
- The list is closed. A body carries the sections above and nothing after the last of them, which covers a trailer a harness appends once the body is composed. `
|
|
59
|
+
- The list is closed. A body carries the sections above and nothing after the last of them, which covers a trailer a harness appends once the body is composed. `canon labels scan` holds the list: it fails a level-two heading outside the five above, and a body missing `## Summary` or `## Key changes`. A review body and a release-please body are exempt.
|
|
50
60
|
|
|
51
61
|
## Testing discipline
|
|
52
62
|
|
|
@@ -74,12 +84,12 @@ Does not govern:
|
|
|
74
84
|
|
|
75
85
|
<Action Verb> <Direct Object> to <Result>.
|
|
76
86
|
|
|
77
|
-
## Key
|
|
87
|
+
## Key changes
|
|
78
88
|
|
|
79
89
|
- <Verb> <specific component/file/function> (<reason if non-obvious>)
|
|
80
90
|
- <Verb> <specific component/file/function>
|
|
81
91
|
|
|
82
|
-
## Technical
|
|
92
|
+
## Technical context
|
|
83
93
|
|
|
84
94
|
- <Architectural reasoning explaining why, not what>
|
|
85
95
|
|
|
@@ -101,12 +111,12 @@ Does not govern:
|
|
|
101
111
|
|
|
102
112
|
Update auth middleware to enforce jwt expiration checks. # imperative + direct object + result
|
|
103
113
|
|
|
104
|
-
## Key
|
|
114
|
+
## Key changes
|
|
105
115
|
|
|
106
116
|
- Add `verifyExpiration()` to `src/auth/validators.ts`. # specific function + file path
|
|
107
117
|
- Refactor `AuthService.authenticate()` to handle 401 codes. # named component + clear change
|
|
108
118
|
|
|
109
|
-
## Technical
|
|
119
|
+
## Technical context
|
|
110
120
|
|
|
111
121
|
- Migration to stateless session management for horizontal scalability. # why, not what
|
|
112
122
|
|
|
@@ -128,7 +138,7 @@ Update auth middleware to enforce jwt expiration checks. # imperative + direct o
|
|
|
128
138
|
|
|
129
139
|
This PR updates the authentication system to be more robust. # "This PR" opener + buzzword
|
|
130
140
|
|
|
131
|
-
## Key
|
|
141
|
+
## Key changes
|
|
132
142
|
|
|
133
143
|
- Updated auth middleware files # vague, no specific component, no period
|
|
134
144
|
- The old system used to check tokens differently # describes historical behavior
|
|
@@ -26,13 +26,15 @@ Scope every check below by destination. Text published to a remote takes all of
|
|
|
26
26
|
|
|
27
27
|
## Banned characters
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
`${CLAUDE_SKILL_DIR}/../markdown-craft/references/markdown.md` holds the character bans. Read it at scan time rather than working the sets from memory, then scan the drafted text and rewrite each occurrence.
|
|
30
|
+
|
|
31
|
+
`canon labels scan` fails on these characters in a title or body, outside a code span or a link, so the scan is the check and the read above is the reason. It holds a pull request and a posted review alike.
|
|
30
32
|
|
|
31
33
|
Restructure the sentence rather than substituting the character. A semicolon swapped for a period leaves both clauses in the order the semicolon chose, which is the shape the ban exists to remove.
|
|
32
34
|
|
|
33
35
|
## Phase labels
|
|
34
36
|
|
|
35
|
-
|
|
37
|
+
`${CLAUDE_SKILL_DIR}/../git-commit/references/versioning.md` holds the label rule and the table of surfaces. Read it at scan time rather than working the format from memory.
|
|
36
38
|
|
|
37
39
|
This check is one of the two the destination rule above scopes. The reader inside the repository has the task board and the reader on a remote does not.
|
|
38
40
|
|
|
@@ -70,7 +72,7 @@ Qualifying it against `erclx/canon` fixes nothing, because a reader holding only
|
|
|
70
72
|
|
|
71
73
|
Write `owner/repo#123` and `owner/repo@abc1234` for a citation of a different, resolvable repository, across every such surface. `canon gate run` fails a push on a bare reference there, and a line whose bare form is the point carries `canon-allow-reference: <reason>` on itself or on the line above.
|
|
72
74
|
|
|
73
|
-
Choose the number over the sha where the citation names a decided change, since a pull request number resolves to the diff and the review behind it. Take the sha only for a tree or measurement state, the `Measured at <sha>` shape
|
|
75
|
+
Choose the number over the sha where the citation names a decided change, since a pull request number resolves to the diff and the review behind it. Take the sha only for a tree or measurement state, the `Measured at <sha>` shape a context entry already uses. The choice holds for both spellings this section fixes, the bare form a remote auto-links and the qualified form a cross-repository citation carries.
|
|
74
76
|
|
|
75
77
|
A commit message takes the bare form even though it is also read through the log, where nothing links. The remote is what the form is chosen for, since a reader in the log loses only a link that plain text never carried.
|
|
76
78
|
|
|
@@ -9,7 +9,7 @@ The last step of `git-pr` before its report, reached on every run whose final co
|
|
|
9
9
|
|
|
10
10
|
Write the `number` the final command printed onto the task the branch is closing. Do not resolve it again. A final command that refused on a head mismatch printed no number, so this step writes nothing on that run. `${CLAUDE_SKILL_DIR}/REQUIREMENT.md` states why: a lookup that resolves by branch alone can return a closed pull request sharing that head, so the number is resolved once and reused rather than re-derived.
|
|
11
11
|
|
|
12
|
-
The task is the one whose `Plan:` line names the plan this branch implemented. Name that plan by its file, which is `.canon/plans/feature-<slug>.md` at the main worktree root with `<slug>` derived per `${CLAUDE_SKILL_DIR}
|
|
12
|
+
The task is the one whose `Plan:` line names the plan this branch implemented. Name that plan by its file, which is `.canon/plans/feature-<slug>.md` at the main worktree root with `<slug>` derived per `${CLAUDE_SKILL_DIR}/../git-branch/references/slug.md`. `plan-feature` writes the plan under the branch slug, so the two correspond on any branch that came through the plan-to-execute path. When the session already knows which plan it implemented, because a caller read it earlier in the chain, use that filename instead of re-deriving.
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
15
|
canon tasks pull-request <number> --plan feature-<slug> --json
|
|
@@ -23,13 +23,11 @@ The sequence also reaches the remote on work nothing re-checked. This skill is t
|
|
|
23
23
|
- Name the condition under which the closing block is not emitted, since a caller that closes on its own block leaves two instructions about the last line and nothing deciding between them
|
|
24
24
|
- Watch continuous integration to a terminal state in the background, so the session stays reachable while CI runs, and stop on a failure naming the check
|
|
25
25
|
- Read the evidence thread with `canon pr evidence <number> --check --json` once CI passes, run what it reports owed, and report done only on `settled`, since a chain that never reads the thread ships a regenerated image with no comment and no preview and leaves the controller to repair it
|
|
26
|
-
- Stop memory work at the Propose phase
|
|
27
26
|
|
|
28
27
|
## Must not
|
|
29
28
|
|
|
30
29
|
- Auto-trigger. Shipping is a decision the user takes, and the tool permission dialog on the push and the pull request is the gate that holds it now that the frontmatter no longer disables model invocation.
|
|
31
30
|
- Fix a failing check. The stop is the point, since a green pull request reached by auto-fix hides what broke.
|
|
32
|
-
- Run the memory Apply phase. Promoting an entry changes how the agent operates and ships as its own change.
|
|
33
31
|
- Attempt a fix for a failing verify. The user is already making one, which is what brought the run back here.
|
|
34
32
|
- Implement or review. This chain starts from work already believed done.
|
|
35
33
|
- Report the chain done before the CI watch exits. A turn ending on the watch line leaves a pull request still waiting on CI, and a `✅ Shipped` there claims a result nothing has read.
|
|
@@ -25,8 +25,8 @@ Run `git diff --cached --name-only 2>/dev/null` to check for staged files. If ou
|
|
|
25
25
|
|
|
26
26
|
## Sequence
|
|
27
27
|
|
|
28
|
-
1. Invoke `canon:
|
|
29
|
-
2. Invoke `canon:
|
|
28
|
+
1. Invoke `canon:context-fold` to sync the context entries against session decisions and the diff
|
|
29
|
+
2. Invoke `canon:task-complete` to mark the outcomes the diff shipped
|
|
30
30
|
3. Invoke `canon:docs-sync` to sync public docs against changes since main
|
|
31
31
|
4. Run `git add -A` to stage any files the sync skills wrote
|
|
32
32
|
5. Run `canon tasks plan-reach <plan> --json` and report both lists it carries. Name the plan this branch built under, by path or by slug. Read `claimed` first and say who holds each path, since that is the half a reader acts on, then say how many of the changed paths `undeclared` names. Branch on the record rather than on the exit code, which a shell function wrapping `canon` can flatten to zero. This step reports and never stops the sequence.
|
|
@@ -73,7 +73,7 @@ The read is a closing step and the draft mark stays the only thing between steps
|
|
|
73
73
|
|
|
74
74
|
### Why the reach reads at step 5
|
|
75
75
|
|
|
76
|
-
The branch is whole there and nowhere earlier. Steps
|
|
76
|
+
The branch is whole there and nowhere earlier. Steps 1 and 3 write past whatever the plan declared, so a reading taken ahead of them misses the chain's own additions, and no pull request exists until step 8 to carry the answer anywhere.
|
|
77
77
|
|
|
78
78
|
It is the one step here that reports rather than acts, which is why it never stops the sequence. Every crossing measured on the wave it was filed against merged clean, and the undeclared list runs long enough on an ordinary branch that a gate would fire on nearly every ship.
|
|
79
79
|
|
|
@@ -81,19 +81,12 @@ It is the one step here that reports rather than acts, which is why it never sto
|
|
|
81
81
|
|
|
82
82
|
An installed binary carrying no `plan-reach` subcommand reports the reach unread rather than clear. Say that, and continue. The verb ships with the CLI and this body ships with the plugin, so a target on an older binary meets a missing subcommand, and a body reading that absence as a clean answer would report the check passing on every branch that never ran it.
|
|
83
83
|
|
|
84
|
-
Capture leads the sequence because a routed fact lands in a context entry, which is a tracked file. Running it after the pull request opens leaves that edit off the branch entirely, so the fact reaches nothing. Memory files are gitignored either way, which is what hid the ordering while capture wrote only those.
|
|
85
|
-
|
|
86
84
|
## After completion
|
|
87
85
|
|
|
88
|
-
Output
|
|
86
|
+
Output one line:
|
|
89
87
|
|
|
90
88
|
```plaintext
|
|
91
89
|
✅ Shipped
|
|
92
|
-
<N facts routed to context entries>
|
|
93
|
-
<N memories captured in .canon/memory/>
|
|
94
|
-
<the review line memory-capture returned>
|
|
95
90
|
```
|
|
96
91
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
Emit nothing here when a wrapping caller states it closes on its own block. `auto-ship` is that caller and its block carries these same three trailing lines below a first line naming the draft state, so emitting both reports one run twice. A caller that states no such thing gets this block, which is every direct invocation.
|
|
92
|
+
Emit nothing here when a wrapping caller states it closes on its own block. `auto-ship` is that caller and its block opens on a line naming the draft state, so emitting both reports one run twice. A caller that states no such thing gets this block, which is every direct invocation.
|
|
@@ -9,8 +9,8 @@ metadata:
|
|
|
9
9
|
|
|
10
10
|
Before proposing a split, read in parallel:
|
|
11
11
|
|
|
12
|
-
- `${CLAUDE_SKILL_DIR}
|
|
13
|
-
- `${CLAUDE_SKILL_DIR}
|
|
12
|
+
- `${CLAUDE_SKILL_DIR}/../git-branch/references/branch.md`: format, types, length limit, and constraints
|
|
13
|
+
- `${CLAUDE_SKILL_DIR}/../git-pr/references/pr.md`: PR title format, body sections, and content rules
|
|
14
14
|
|
|
15
15
|
Follow both exactly.
|
|
16
16
|
|
|
@@ -71,7 +71,7 @@ If Mode is Independent, append this line to the preview:
|
|
|
71
71
|
|
|
72
72
|
After outputting the preview, execute the final commands immediately. Claude Code's tool permission dialog is the confirmation gate. Do not wait for user input.
|
|
73
73
|
|
|
74
|
-
Before running them, run the scan in `${CLAUDE_SKILL_DIR}
|
|
74
|
+
Before running them, run the scan in `${CLAUDE_SKILL_DIR}/../git-pr/references/publish.md` against every title and body. Each body stages under `.canon/tmp/` and leaves through `gh`, so the hook sees neither and this scan is the only gate. Each resulting branch reaches the `pull_request` check the git-pr surface carries once its own pull request opens, but not before, so this scan is what catches a leak ahead of that.
|
|
75
75
|
|
|
76
76
|
### Final commands
|
|
77
77
|
|
|
@@ -9,7 +9,7 @@ metadata:
|
|
|
9
9
|
|
|
10
10
|
Read these files in parallel:
|
|
11
11
|
|
|
12
|
-
- `${CLAUDE_SKILL_DIR}
|
|
12
|
+
- `${CLAUDE_SKILL_DIR}/../git-commit/references/commit.md`: format, types, scopes, and constraints
|
|
13
13
|
- `${CLAUDE_SKILL_DIR}/../markdown-craft/references/markdown.md`: punctuation and formatting for all generated text
|
|
14
14
|
- The `write-human` skill: voice, rhythm, and sentence construction for all generated text
|
|
15
15
|
|
|
@@ -40,4 +40,4 @@ Without this skill, implementation starts before anyone knows what it touches. A
|
|
|
40
40
|
|
|
41
41
|
- Executing the plan, which is the ship pipeline
|
|
42
42
|
- Task-board state, which `task-board` owns. A plan links to its task and does not create one.
|
|
43
|
-
- Reconciling the
|
|
43
|
+
- Reconciling the context entries after the work lands, which `context-fold` owns, and marking the board, which `task-complete` owns
|
|
@@ -20,15 +20,11 @@ Read these in parallel from the project root, skipping any that do not exist:
|
|
|
20
20
|
|
|
21
21
|
- `CLAUDE.md`: behavior rules, conventions, commands
|
|
22
22
|
- `canon/REQUIREMENTS.md`: feature scope and non-goals
|
|
23
|
-
- `canon/ARCHITECTURE.md`: decisions already made
|
|
24
23
|
- `.canon/tasks/index.md`: current scope and status, then any task file the feature relates to
|
|
25
24
|
|
|
26
25
|
Also read these when the feature touches code or UI. Skip them for prose, docs, catalog, or config-only changes:
|
|
27
26
|
|
|
28
27
|
- `canon/DESIGN.md`: tokens, typography, spacing, and component rules
|
|
29
|
-
- `canon/wireframes/index.md` + the surface files relevant to the feature: intended UI layout and behavior. Read `index.md` first, then follow only the links the feature actually touches, each a flat `canon/wireframes/<surface>.md` or a grouped surface's own `canon/wireframes/<surface>/index.md` and the siblings it lists. Do not read the whole folder speculatively.
|
|
30
|
-
|
|
31
|
-
When the plan adds or revises a surface, the wireframe file follows `${CLAUDE_SKILL_DIR}/../../standards/wireframes.md`.
|
|
32
28
|
|
|
33
29
|
Coding standards live in `.claude/rules/`. Claude Code loads them automatically. Path-scoped rules apply to the files they match.
|
|
34
30
|
|
|
@@ -49,7 +45,7 @@ When a decision the plan will make rests on an outside practice or a third-party
|
|
|
49
45
|
|
|
50
46
|
## Step 3: build the plan
|
|
51
47
|
|
|
52
|
-
The section list, what each section holds, and the suggested-and-answer contract are fixed by `${CLAUDE_SKILL_DIR}
|
|
48
|
+
The section list, what each section holds, and the suggested-and-answer contract are fixed by `${CLAUDE_SKILL_DIR}/references/plan.md`, and the lifecycle by `${CLAUDE_SKILL_DIR}/references/plan-lifecycle.md`. Read it before writing the file and follow it rather than working the shape from memory.
|
|
53
49
|
|
|
54
50
|
What this skill adds on top of the standard:
|
|
55
51
|
|
|
@@ -119,7 +115,7 @@ Derive a 2-to-4-word kebab-case slug from the feature description. Write the ful
|
|
|
119
115
|
|
|
120
116
|
The plan is a main-root write, from a linked worktree and from a background session sitting at the main root with none entered alike, so it goes out as a heredoc, routed the way `session-worktree` states.
|
|
121
117
|
|
|
122
|
-
The file follows the template in `${CLAUDE_SKILL_DIR}
|
|
118
|
+
The file follows the template in `${CLAUDE_SKILL_DIR}/references/plan.md`. Copy the shape from there rather than from this body, so one edit to the standard moves every plan.
|
|
123
119
|
|
|
124
120
|
Run `canon records validate plans` after writing the file when the CLI is on PATH. It reports a section, a filename, or an answer slot that does not hold, and it writes nothing.
|
|
125
121
|
|
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Plan reference
|
|
3
3
|
description: Filename and slug, the required sections, and the suggested-and-answer contract for a feature plan
|
|
4
|
-
paths:
|
|
5
|
-
- '.canon/plans/**'
|
|
6
|
-
rule:
|
|
7
|
-
- 'Never fill an `- Answer:` slot on behalf of the person who owns it. A blank slot accepts the suggestion at execution time.'
|
|
8
|
-
- 'Never ship a question without a `- Suggested:` line. Write `- Suggested: needs your call, <why>` where the answer turns on preference.'
|
|
9
|
-
- "Rewrite the `- Suggested:` line as `overridden at execution to <pick>,` plus the measurement when execution deviates from an unanswered question, leaving the slot blank. Put the same deviation in one line under the open task's `## Findings`."
|
|
10
|
-
- 'Fetch the source a decision rests on and quote the passage under `**Sources:**`, or mark the entry `unverified`. Never cite an outside source from recall.'
|
|
11
|
-
- 'Move a shipped plan to `.canon/plans/archive/`. Never delete one.'
|
|
12
|
-
- 'Amend a plan in place when a decision changes. Do not append a second passage narrating the change.'
|
|
13
|
-
- 'Follow the plan lifecycle standard for when a plan is written, how it is amended, and its move to the archive. Read it with `canon standards plan-lifecycle`.'
|
|
14
4
|
---
|
|
15
5
|
|
|
16
6
|
# Plan reference
|
|
@@ -21,6 +11,15 @@ The folder is gitignored, and backed by `canon records push` wherever a records
|
|
|
21
11
|
|
|
22
12
|
<!-- canon-length-exempt: the constraint forms and the answer contract share one reader, and a split into a second standard is queued as its own change -->
|
|
23
13
|
|
|
14
|
+
## Contents
|
|
15
|
+
|
|
16
|
+
- [Scope](#scope)
|
|
17
|
+
- [What a working plan looks like](#what-a-working-plan-looks-like)
|
|
18
|
+
- [Filename and slug](#filename-and-slug)
|
|
19
|
+
- [Sections](#sections)
|
|
20
|
+
- [The suggested-and-answer contract](#the-suggested-and-answer-contract)
|
|
21
|
+
- [Template](#template)
|
|
22
|
+
|
|
24
23
|
## Scope
|
|
25
24
|
|
|
26
25
|
Governs a feature plan under `.canon/plans/feature-<slug>.md`: the filename, the required sections, what each holds, and the suggested-and-answer contract.
|
|
@@ -9,7 +9,7 @@ metadata:
|
|
|
9
9
|
|
|
10
10
|
Groundwork gathers and weighs. A plan commits. A groundwork folder costs nothing to throw away, which is what makes it the right container for a question nobody has answered yet.
|
|
11
11
|
|
|
12
|
-
Read `${CLAUDE_SKILL_DIR}
|
|
12
|
+
Read `${CLAUDE_SKILL_DIR}/references/groundwork.md` before writing any file in the folder. It holds the reserved numbers, the frontmatter and dating rules, what each required file carries, the conventions, and the anti-patterns. Do not work them from memory.
|
|
13
13
|
|
|
14
14
|
## Guards
|
|
15
15
|
|
|
@@ -25,7 +25,7 @@ Read `${CLAUDE_SKILL_DIR}/../../standards/groundwork.md` before writing any file
|
|
|
25
25
|
- One exception, at close only: write one task file recording what the track concluded.
|
|
26
26
|
- A second exception, for what a spike reads as bulk input: write a large fixture under `.canon/tmp/runs/groundwork-fixtures/<slug>/`. Keep it out of `.canon/groundwork/` so mode detection never matches a fixture as a track. A fixture a headless run is pointed at goes outside the repository instead, per the rule in `## Running a spike`. An arm script and a checkout a claim rests on are not fixtures, and go inside the track under `scripts/` and `clones/`, per the standard.
|
|
27
27
|
- What a spike produces stays inside the track rather than joining the two exceptions above: write evidence a spike file cites under `.canon/groundwork/<nn>-<slug>/evidence/`, which the first rule already permits. Mode detection matches entries at the top level of the tracks directory, so the sibling the fixtures rule guards against cannot be a folder nested inside a track, and the scratch path holds only what can be deleted without loss, which a recording a finding rests on is not.
|
|
28
|
-
- A `draft-and-pick` run invoked from inside a live track follows its own branch for this
|
|
28
|
+
- A `draft-and-pick` run invoked from inside a live track follows its own branch for this. It writes its renders to `evidence/` here, and drafts its candidates as canvas pages under `.canon/canvas/` that its close deletes.
|
|
29
29
|
- Reading is not restricted. External research is in scope, so read documentation, comparable projects, and papers whenever a live question needs them. Invoke `canon:search-craft` with the skill tool before an outside search, and report it rather than proceeding silently when the skill does not resolve.
|
|
30
30
|
- Every claim about a source outside the project carries a link to it. A source found and not read is listed as a lead and is never cited.
|
|
31
31
|
- Treat the folder as gitignored, and backed only where a records remote is configured: `canon records push` and `canon records pull` protect it against the machine being lost there and refuse with `no-remote` otherwise, and neither protects against a compaction dropping this session's own reasoning before anyone has pushed, so `07-next-session.md` repeats what it needs instead of pointing at its siblings.
|
|
@@ -35,7 +35,7 @@ Read `${CLAUDE_SKILL_DIR}/../../standards/groundwork.md` before writing any file
|
|
|
35
35
|
A track may run an experiment to settle an open question without stopping to ask. What it takes depends on what the experiment does.
|
|
36
36
|
|
|
37
37
|
- Reading or computing: run it. Unrestricted reading already covers this, and it is what most spikes turn out to be.
|
|
38
|
-
- Anything that processes an input: start against a sample and scale up after it works, per the sample rule in `${CLAUDE_SKILL_DIR}
|
|
38
|
+
- Anything that processes an input: start against a sample and scale up after it works, per the sample rule in `${CLAUDE_SKILL_DIR}/references/groundwork-spikes.md`, which bounds it on size, duration, and spend.
|
|
39
39
|
- Writing a fixture this session reads or provisions itself: run it, under the fixtures path above. Provisioning is the usual blocker rather than spend, and it costs nothing.
|
|
40
40
|
- Spawning a billed headless session: run up to three, then ask before spawning more. The bound is a run count rather than a budget, because a headless run reports its total cost only after it finishes, so a dollar ceiling is reportable and not enforceable while a run count is checkable before spawning.
|
|
41
41
|
|
|
@@ -64,7 +64,6 @@ Read these in parallel from the project root, skipping any that do not exist:
|
|
|
64
64
|
|
|
65
65
|
- `CLAUDE.md`: behavior rules, conventions, commands
|
|
66
66
|
- `canon/REQUIREMENTS.md`: scope and non-goals
|
|
67
|
-
- `canon/ARCHITECTURE.md`: decisions already made
|
|
68
67
|
- `.canon/tasks/index.md`: what is already tracked, and what a prior track concluded. Open a task file only when its entry looks related.
|
|
69
68
|
|
|
70
69
|
Then read only what a live question needs. Do not read entire directories speculatively. Where a folder carries an `index.md`, read it first and load only the files it points at.
|
|
@@ -77,7 +76,7 @@ The standard sets the open question format and requires it inside a topic file a
|
|
|
77
76
|
|
|
78
77
|
## Open mode
|
|
79
78
|
|
|
80
|
-
1. Claim the ordinal and create the folder in one act with `canon records ordinal groundwork <slug> --claim`, per `${CLAUDE_SKILL_DIR}
|
|
79
|
+
1. Claim the ordinal and create the folder in one act with `canon records ordinal groundwork <slug> --claim`, per `${CLAUDE_SKILL_DIR}/references/groundwork.md`. Where the installed binary carries no such subcommand, fall back to listing both `.canon/groundwork/` and `.canon/intake/` and creating `.canon/groundwork/<nn>-<slug>/` at the highest ordinal present across the two, incremented.
|
|
81
80
|
2. Write `README.md` first. Writing it first forces the question of what the track is for.
|
|
82
81
|
3. Write `01-current-state.md` by measuring now. Never carry a figure from a previous session or from recall without re-measuring it. Measure only what an open question in the folder needs. A number with no question attached is how groundwork turns into the work.
|
|
83
82
|
4. Write `00-scope.md` when the track is large enough to run away. Skip it on a small track.
|
|
@@ -96,7 +95,7 @@ The standard sets the open question format and requires it inside a topic file a
|
|
|
96
95
|
1. Write `06-decision.md`. It states the problem once, names the goal, lists what to do, and lists what was considered and dropped. Carry the "Overturned by" line of each lean that became the decision into a `## Revisit when` section, and carry none from a lean the decision did not take.
|
|
97
96
|
2. Write `07-next-session.md` self-contained, so it survives a compaction that loses the conversation.
|
|
98
97
|
3. Update the file map in `README.md`.
|
|
99
|
-
4. Write one task file in `.canon/tasks/` recording what the track concluded, even when the conclusion is to do nothing. Follow `${CLAUDE_SKILL_DIR}
|
|
98
|
+
4. Write one task file in `.canon/tasks/` recording what the track concluded, even when the conclusion is to do nothing. Follow `${CLAUDE_SKILL_DIR}/../task-board/references/tasks.md` for the filename and frontmatter. Place the row through `task-board` Step 4, which checks the roster for a live orchestrator before writing `priority.md` or `backlog.md` directly. Aside from an experiment fixture, this and the routing in Step 5 are the only ways close mode reaches outside the folder.
|
|
100
99
|
5. When the task written in Step 4 does not cover every finding the track surfaced, route what it leaves out through `plan-intake`. Skip this step when it does.
|
|
101
100
|
6. Report uncited external claims. Closing already reads every file in the folder, so list any statement about a source outside the project that carries neither a link nor a lead entry. Report and do not block, because judging whether a sentence makes an external claim is the call a checker gets wrong.
|
|
102
101
|
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Groundwork reference
|
|
3
3
|
description: Folder layout, ordinal naming, reserved numbering, frontmatter and dating, required file contents, and conventions for a measurement track
|
|
4
|
-
paths:
|
|
5
|
-
- '.canon/groundwork/**'
|
|
6
|
-
rule:
|
|
7
|
-
- 'Follow the groundwork spikes standard for `08-spikes.md` and the folders holding what a spike produced. Read it with `canon standards groundwork-spikes`.'
|
|
8
4
|
---
|
|
9
5
|
|
|
10
6
|
# Groundwork reference
|
|
@@ -13,6 +9,23 @@ Applies to a groundwork track at `.canon/groundwork/<nn>-<slug>/`. A track measu
|
|
|
13
9
|
|
|
14
10
|
The folder is gitignored, and backed by `canon records push` wherever a records remote is configured. Nothing backs it against a compaction dropping a session's reasoning before a push, so the handoff file has to be self-contained.
|
|
15
11
|
|
|
12
|
+
## Contents
|
|
13
|
+
|
|
14
|
+
- [Scope](#scope)
|
|
15
|
+
- [Folder name](#folder-name)
|
|
16
|
+
- [What a working track looks like](#what-a-working-track-looks-like)
|
|
17
|
+
- [Frontmatter and dating](#frontmatter-and-dating)
|
|
18
|
+
- [Reserved numbers](#reserved-numbers)
|
|
19
|
+
- [README.md](#readmemd)
|
|
20
|
+
- [01-current-state.md](#01-current-statemd) <!-- canon-allow-reference: a heading anchor, not a pull request number -->
|
|
21
|
+
- [00-scope.md](#00-scopemd) <!-- canon-allow-reference: a heading anchor, not a pull request number -->
|
|
22
|
+
- [06-decision.md](#06-decisionmd) <!-- canon-allow-reference: a heading anchor, not a pull request number -->
|
|
23
|
+
- [07-next-session.md](#07-next-sessionmd) <!-- canon-allow-reference: a heading anchor, not a pull request number -->
|
|
24
|
+
- [Open questions](#open-questions)
|
|
25
|
+
- [Conventions](#conventions)
|
|
26
|
+
- [Anti-patterns](#anti-patterns)
|
|
27
|
+
- [Template](#template)
|
|
28
|
+
|
|
16
29
|
## Scope
|
|
17
30
|
|
|
18
31
|
Governs a groundwork track under `.canon/groundwork/<nn>-<slug>/`: folder layout, ordinal naming, reserved numbering, frontmatter and dating, what each required file holds, and the conventions a track keeps.
|
|
@@ -9,7 +9,7 @@ metadata:
|
|
|
9
9
|
|
|
10
10
|
Intake dispositions many findings in breadth. A dump goes in, an inventory comes out, and every item carries a problem measured against the tree, one proposed fix, and a verdict. The item that turns out to be already settled is the highest-value output, and it is the one thing neither a plan nor a groundwork track has anywhere to put.
|
|
11
11
|
|
|
12
|
-
Read `${CLAUDE_SKILL_DIR}
|
|
12
|
+
Read `${CLAUDE_SKILL_DIR}/references/intake.md` before writing any file in the folder. It holds the numbering, the file map, the frontmatter and dating rules, the item format, and the answer contract. Do not work them from memory.
|
|
13
13
|
|
|
14
14
|
## Routing
|
|
15
15
|
|
|
@@ -44,7 +44,7 @@ List `.canon/intake/` from the project root and match the topic against the slug
|
|
|
44
44
|
|
|
45
45
|
Never match against `.claude/` itself. That directory holds every other workflow surface, so a topic matched there lands on a folder that was never an intake.
|
|
46
46
|
|
|
47
|
-
With no match, derive a kebab-case slug named for the subject rather than the activity. Prefer `toolkit-overview` over `august-triage`. Claim the ordinal and create the folder in one act with `canon records ordinal intake <slug> --claim`, per `${CLAUDE_SKILL_DIR}
|
|
47
|
+
With no match, derive a kebab-case slug named for the subject rather than the activity. Prefer `toolkit-overview` over `august-triage`. Claim the ordinal and create the folder in one act with `canon records ordinal intake <slug> --claim`, per `${CLAUDE_SKILL_DIR}/references/intake.md`. Where the installed binary carries no such subcommand, fall back to listing both `.canon/intake/` and `.canon/groundwork/` and taking the highest ordinal present across the two, incremented. An absent folder opens, and a present one resumes by appending items and revising verdicts the tree has moved under.
|
|
48
48
|
|
|
49
49
|
## Step 2: orient
|
|
50
50
|
|
|
@@ -52,7 +52,6 @@ Read these in parallel from the project root, skipping any that do not exist:
|
|
|
52
52
|
|
|
53
53
|
- `CLAUDE.md`: behavior rules, conventions, commands
|
|
54
54
|
- `canon/REQUIREMENTS.md`: scope and non-goals
|
|
55
|
-
- `canon/ARCHITECTURE.md`: decisions already made
|
|
56
55
|
- `.canon/tasks/index.md`: what is already tracked. Open a task file whose entry looks related to an item.
|
|
57
56
|
|
|
58
57
|
Then read only what a live item needs. Do not read entire directories speculatively. Where a folder carries an `index.md`, read it first and load only the files it points at.
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Intake reference
|
|
3
3
|
description: Folder layout, ordinal naming, reserved index number, frontmatter and dating, the item template, the answer contract, and retrieval
|
|
4
|
-
paths:
|
|
5
|
-
- '.canon/intake/**'
|
|
6
4
|
---
|
|
7
5
|
|
|
8
6
|
# Intake reference
|
|
@@ -11,6 +9,23 @@ Applies to an intake folder at `.canon/intake/<nn>-<slug>/`. One folder holds on
|
|
|
11
9
|
|
|
12
10
|
The folder is gitignored, and backed wherever a records remote is configured: `canon records push` and `canon records pull` protect it against the machine being lost there, refuse with `no-remote` where it is not, and neither protects against a compaction dropping a session's reasoning before anyone has pushed. No check reaches its contents, so the shape below survives only by being read.
|
|
13
11
|
|
|
12
|
+
<!-- canon-length-exempt: the folder shape and the item template share one reader, and a split into a second reference is queued as its own change -->
|
|
13
|
+
|
|
14
|
+
## Contents
|
|
15
|
+
|
|
16
|
+
- [Scope](#scope)
|
|
17
|
+
- [Folder name](#folder-name)
|
|
18
|
+
- [What a working intake looks like](#what-a-working-intake-looks-like)
|
|
19
|
+
- [Files](#files)
|
|
20
|
+
- [Frontmatter and dating](#frontmatter-and-dating)
|
|
21
|
+
- [00-overview.md](#00-overviewmd) <!-- canon-allow-reference: a heading anchor, not a pull request number -->
|
|
22
|
+
- [Item format](#item-format)
|
|
23
|
+
- [The answer contract](#the-answer-contract)
|
|
24
|
+
- [Retrieval](#retrieval)
|
|
25
|
+
- [Conventions](#conventions)
|
|
26
|
+
- [Anti-patterns](#anti-patterns)
|
|
27
|
+
- [Template](#template)
|
|
28
|
+
|
|
14
29
|
## Scope
|
|
15
30
|
|
|
16
31
|
Governs an intake folder under `.canon/intake/<nn>-<slug>/`: folder layout, ordinal naming, the reserved index number, frontmatter and dating, the item format, the answer contract, and retrieval.
|
|
@@ -43,6 +43,6 @@ The batching fails a fifth way. A folder holding thirty unread items put as thir
|
|
|
43
43
|
|
|
44
44
|
- Filing a dump and writing the items, which is `plan-intake` and owns every other write into the folder
|
|
45
45
|
- Promoting an answered item onto the board, which is `task-board` and runs after the answers land
|
|
46
|
-
- The item format, the answer contract, and retrieval, which the
|
|
46
|
+
- The item format, the answer contract, and retrieval, which the `plan-intake` skill's `references/intake.md` owns and this skill cites
|
|
47
47
|
- The comparable answer slots in groundwork and feature plans, which carry their own contracts and are a separate measurement
|
|
48
48
|
- Deciding when to fire. The skill is user-invoked through `disable-model-invocation`, so answering is the operator's call rather than a description match.
|
|
@@ -12,7 +12,7 @@ Put an intake folder's unread items as batched questions, then land each selecti
|
|
|
12
12
|
|
|
13
13
|
A folder is answered by opening each cluster file and typing under the item, which on a dump spanning six clusters means navigating to each in turn. This walks the same items in chat and writes the answers back, so the file rather than the conversation stays the record.
|
|
14
14
|
|
|
15
|
-
Read `${CLAUDE_SKILL_DIR}
|
|
15
|
+
Read `${CLAUDE_SKILL_DIR}/../plan-intake/references/intake.md` before writing anything. It holds the item format and the answer contract this skill is bound by.
|
|
16
16
|
|
|
17
17
|
## Guards
|
|
18
18
|
|
|
@@ -42,7 +42,7 @@ Do not push a red follow-up.
|
|
|
42
42
|
|
|
43
43
|
## Step 4: refresh stale docs
|
|
44
44
|
|
|
45
|
-
The fixes may have changed or added behavior that `.claude/` context entries
|
|
45
|
+
The fixes may have changed or added behavior that `.claude/` context entries or docs describe. Refresh them with the `context-fold` skill, which maps the changed files to the entries that reference them and rewrites the stale sections. Do not reimplement that mapping here. When a fix adds a new capability with no existing entry, `context-fold` flags it rather than creating one.
|
|
46
46
|
|
|
47
47
|
## Step 5: rebase a stale branch
|
|
48
48
|
|
|
@@ -156,7 +156,7 @@ the regen rebuilt, and close the same way. The heading stays outside the
|
|
|
156
156
|
`## Review` family so the close-out's equality test on the first line never
|
|
157
157
|
matches it.
|
|
158
158
|
|
|
159
|
-
Before posting, follow `${CLAUDE_SKILL_DIR}
|
|
159
|
+
Before posting, follow `${CLAUDE_SKILL_DIR}/../git-pr/references/publish.md`
|
|
160
160
|
and run its scan against the reply:
|
|
161
161
|
|
|
162
162
|
```bash
|
|
@@ -7,7 +7,7 @@ description: How review-address posts something worth reporting after Step 7 clo
|
|
|
7
7
|
|
|
8
8
|
Outside the numbered flow of `review-address`. The session reads this file when it has something worth reaching the reviewing session after Step 7 already closed the review.
|
|
9
9
|
|
|
10
|
-
Not everything worth reaching the reviewing session surfaces inside the numbered flow in `SKILL.md`. A worker that settled a risk, filed a follow-up, or found something else worth reporting after Step 7 already closed the review posts it directly rather than waiting on a review pass that has nothing left to trigger it. Write the body the way Step 6 writes a reply: load `write-human` for voice and word choice, follow `${CLAUDE_SKILL_DIR}/../markdown-craft/references/markdown.md` for punctuation, and run the `${CLAUDE_SKILL_DIR}
|
|
10
|
+
Not everything worth reaching the reviewing session surfaces inside the numbered flow in `SKILL.md`. A worker that settled a risk, filed a follow-up, or found something else worth reporting after Step 7 already closed the review posts it directly rather than waiting on a review pass that has nothing left to trigger it. Write the body the way Step 6 writes a reply: load `write-human` for voice and word choice, follow `${CLAUDE_SKILL_DIR}/../markdown-craft/references/markdown.md` for punctuation, and run the `${CLAUDE_SKILL_DIR}/../git-pr/references/publish.md` scan before posting with `canon labels scan --body-file .canon/tmp/pr/reply/reply-<number>.md`.
|
|
11
11
|
|
|
12
12
|
Open with `## Post-review findings` rather than `## Review response`, since nothing on the thread is being answered. `review-pr` states the full heading set this belongs to and routes it the same as a response: `role-orchestrator`'s poll picks it up and sends the reviewing session back for a pass. Close the body with `🤖 Addressed by Claude Code` on its own line, matching the reply's footer.
|
|
13
13
|
|