@erclx/canon 5.44.0 → 5.46.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/REQUIREMENT.md +15 -31
- package/claude/skills/auto-ship/REQUIREMENT.md +14 -25
- package/claude/skills/backlog-triage/REQUIREMENT.md +12 -23
- package/claude/skills/build-in-slices/REQUIREMENT.md +15 -25
- package/claude/skills/canon-cli/REQUIREMENT.md +15 -27
- package/claude/skills/canon-cli/SKILL.md +0 -1
- package/claude/skills/canon-feedback/REQUIREMENT.md +10 -18
- package/claude/skills/canon-feedback-triage/REQUIREMENT.md +10 -15
- package/claude/skills/canvas-board/REQUIREMENT.md +14 -28
- package/claude/skills/ci-workflow/REQUIREMENT.md +12 -21
- package/claude/skills/code-craft/REQUIREMENT.md +14 -28
- package/claude/skills/codebase-layout/REQUIREMENT.md +14 -31
- package/claude/skills/context-fold/REQUIREMENT.md +15 -39
- package/claude/skills/context-fold/references/context.md +3 -3
- package/claude/skills/create-rule/REQUIREMENT.md +10 -24
- package/claude/skills/create-rule/SKILL.md +3 -0
- package/claude/skills/create-skill/REQUIREMENT.md +10 -21
- package/claude/skills/decision-escalate/REQUIREMENT.md +12 -24
- package/claude/skills/deploy-app/REQUIREMENT.md +12 -22
- package/claude/skills/deprecation-migration/REQUIREMENT.md +14 -42
- package/claude/skills/design-identity/REQUIREMENT.md +14 -20
- package/claude/skills/design-taste/REQUIREMENT.md +16 -57
- package/claude/skills/docs-sync/REQUIREMENT.md +14 -23
- package/claude/skills/document-health/REQUIREMENT.md +15 -29
- package/claude/skills/document-health/SKILL.md +2 -2
- package/claude/skills/document-repair/REQUIREMENT.md +32 -0
- package/claude/skills/document-repair/SKILL.md +76 -0
- package/claude/skills/document-repair/references/batches.md +44 -0
- package/claude/skills/draft-and-pick/REQUIREMENT.md +4 -3
- package/claude/skills/draft-doc/REQUIREMENT.md +4 -3
- package/claude/skills/draft-figure/REQUIREMENT.md +4 -3
- package/claude/skills/draft-identity/REQUIREMENT.md +4 -3
- package/claude/skills/draft-ready/REQUIREMENT.md +4 -3
- package/claude/skills/draft-screencast/REQUIREMENT.md +4 -3
- package/claude/skills/draft-slides/REQUIREMENT.md +4 -3
- package/claude/skills/draw-figure/REQUIREMENT.md +15 -39
- package/claude/skills/git-branch/REQUIREMENT.md +12 -26
- package/claude/skills/git-commit/REQUIREMENT.md +11 -15
- package/claude/skills/git-followup/REQUIREMENT.md +11 -22
- package/claude/skills/git-issue/REQUIREMENT.md +9 -15
- package/claude/skills/git-pr/REQUIREMENT.md +13 -32
- package/claude/skills/git-pr/SKILL.md +10 -2
- package/claude/skills/git-pr/references/closing-issues.md +47 -0
- package/claude/skills/git-pr/references/pr.md +4 -0
- package/claude/skills/git-ship/REQUIREMENT.md +13 -26
- package/claude/skills/git-split/REQUIREMENT.md +10 -17
- package/claude/skills/git-stage/REQUIREMENT.md +12 -18
- package/claude/skills/git-worktree/REQUIREMENT.md +15 -19
- package/claude/skills/make-deck/REQUIREMENT.md +13 -21
- package/claude/skills/markdown-craft/REQUIREMENT.md +9 -3
- package/claude/skills/pick-by-eye/REQUIREMENT.md +17 -67
- package/claude/skills/plan-feature/REQUIREMENT.md +15 -24
- package/claude/skills/plan-groundwork/REQUIREMENT.md +12 -28
- package/claude/skills/plan-groundwork/SKILL.md +5 -2
- package/claude/skills/plan-groundwork/references/output.md +47 -1
- package/claude/skills/plan-intake/REQUIREMENT.md +11 -26
- package/claude/skills/plan-intake/references/intake.md +2 -2
- package/claude/skills/plan-intake-answer/REQUIREMENT.md +14 -29
- package/claude/skills/plan-intake-answer/SKILL.md +7 -1
- package/claude/skills/plan-ready/REQUIREMENT.md +17 -36
- package/claude/skills/pr-evidence/REQUIREMENT.md +11 -17
- package/claude/skills/read-frames/REQUIREMENT.md +3 -8
- package/claude/skills/record-screencast/REQUIREMENT.md +14 -17
- package/claude/skills/review-address/REQUIREMENT.md +14 -38
- package/claude/skills/review-craft/REQUIREMENT.md +14 -32
- package/claude/skills/review-pr/REQUIREMENT.md +15 -34
- package/claude/skills/review-ui/REQUIREMENT.md +14 -39
- package/claude/skills/role-orchestrator/REQUIREMENT.md +16 -99
- package/claude/skills/role-orchestrator/references/orchestrator-refill.md +5 -0
- package/claude/skills/role-orchestrator/references/orchestrator-review-dispatch.md +9 -0
- package/claude/skills/role-planner/REQUIREMENT.md +15 -73
- package/claude/skills/role-reviewer/REQUIREMENT.md +15 -65
- package/claude/skills/role-reviewer/SKILL.md +5 -1
- package/claude/skills/role-worker/REQUIREMENT.md +13 -41
- package/claude/skills/role-worker/SKILL.md +2 -0
- package/claude/skills/script-screencast/REQUIREMENT.md +10 -16
- package/claude/skills/search-craft/REQUIREMENT.md +12 -36
- package/claude/skills/search-craft/SKILL.md +1 -1
- package/claude/skills/search-craft/references/adopted.md +2 -2
- package/claude/skills/session-compact/REQUIREMENT.md +13 -23
- package/claude/skills/session-map/REQUIREMENT.md +13 -29
- package/claude/skills/session-relay/REQUIREMENT.md +14 -58
- package/claude/skills/session-relay/SKILL.md +6 -0
- package/claude/skills/session-resume/REQUIREMENT.md +13 -27
- package/claude/skills/session-worktree/REQUIREMENT.md +14 -43
- package/claude/skills/systematic-debugging/REQUIREMENT.md +13 -34
- package/claude/skills/target-check/REQUIREMENT.md +16 -23
- package/claude/skills/target-setup/REQUIREMENT.md +11 -34
- package/claude/skills/target-setup/SKILL.md +2 -2
- package/claude/skills/target-setup/references/detect.md +0 -1
- package/claude/skills/target-setup/references/verify.md +2 -2
- package/claude/skills/task-board/REQUIREMENT.md +13 -22
- package/claude/skills/task-board/SKILL.md +7 -0
- package/claude/skills/task-board/references/tasks.md +1 -1
- package/claude/skills/task-complete/REQUIREMENT.md +11 -24
- package/claude/skills/task-complete/references/archive.md +1 -0
- package/claude/skills/teach-workspace/REQUIREMENT.md +14 -45
- package/claude/skills/teach-workspace/references/promotion.md +5 -5
- package/claude/skills/test-craft/REQUIREMENT.md +15 -46
- package/claude/skills/test-first/REQUIREMENT.md +14 -20
- package/claude/skills/ui-checklist/REQUIREMENT.md +14 -29
- package/claude/skills/ux-audit/REQUIREMENT.md +3 -7
- package/claude/skills/ux-measure/REQUIREMENT.md +14 -28
- package/claude/skills/video-craft/REQUIREMENT.md +14 -27
- package/claude/skills/write-doc/REQUIREMENT.md +14 -24
- package/claude/skills/write-human/REQUIREMENT.md +15 -27
- package/claude/skills/youtube-transcripts/REQUIREMENT.md +9 -15
- package/docs/agents/context-audit.md +19 -12
- package/docs/agents/install-and-sync.md +2 -2
- package/docs/agents/markdown-audit.md +15 -10
- package/docs/agents/output-shape.md +1 -2
- package/docs/target/migrations.md +18 -0
- package/docs/target/projects.md +3 -2
- package/docs/target/scenarios.md +4 -1
- package/docs/workflow/skill-map-on-request.md +1 -1
- package/docs/workflow/skill-map.md +6 -5
- package/governance/detect.toml +4 -0
- package/governance/ledger/lang/go.md +61 -0
- package/governance/ledger/lang/php.md +50 -0
- package/governance/ledger/lang/python.md +68 -0
- package/governance/ledger/lang/typescript.md +64 -0
- package/governance/ledger/lib/database.md +65 -0
- package/governance/ledger/lib/e2e-reliability.md +57 -0
- package/governance/ledger/lib/pydantic.md +61 -0
- package/governance/ledger/lib/security-server.md +62 -0
- package/governance/ledger/lib/security-web.md +51 -0
- package/governance/ledger/lib/tanstack-query.md +57 -0
- package/governance/ledger/lib/test-scope.md +43 -0
- package/governance/ledger/lib/testing-go.md +57 -0
- package/governance/ledger/lib/testing-php.md +51 -0
- package/governance/ledger/lib/testing-py.md +67 -0
- package/governance/ledger/lib/testing-ts.md +63 -0
- package/governance/ledger/lib/zod.md +47 -0
- package/governance/ledger/tooling/ci-workflow.md +33 -0
- package/governance/ledger/tooling/code-comments.md +48 -0
- package/governance/ledger/tooling/config-comments.md +27 -0
- package/governance/ledger/tooling/dependencies.md +38 -0
- package/governance/ledger/ui/a11y.md +55 -0
- package/governance/ledger/ui/copy.md +49 -0
- package/governance/ledger/ui/design-reference.md +42 -0
- package/governance/ledger/ui/design-taste.md +19 -0
- package/governance/ledger/ui/forms.md +71 -0
- package/governance/ledger/ui/interface-casing.md +47 -0
- package/governance/ledger/ui/keyboard.md +68 -0
- package/governance/ledger/ui/link-behavior.md +29 -0
- package/governance/ledger/ui/motion.md +33 -0
- package/governance/ledger/ui/surface-capture.md +69 -0
- package/governance/ledger/ui/ux-completeness.md +79 -0
- package/governance/renames.toml +0 -2
- package/governance/rules/claude/output.md +5 -1
- package/governance/rules/code/routing.md +5 -1
- package/governance/rules/lang/go.md +7 -16
- package/governance/rules/lang/php.md +3 -3
- package/governance/rules/lang/python.md +9 -18
- package/governance/rules/lang/typescript.md +9 -19
- package/governance/rules/lib/database.md +5 -5
- package/governance/rules/lib/e2e-reliability.md +4 -6
- package/governance/rules/lib/pydantic.md +14 -16
- package/governance/rules/lib/security-server.md +4 -4
- package/governance/rules/lib/security-web.md +6 -10
- package/governance/rules/lib/tanstack-query.md +10 -12
- package/governance/rules/lib/test-scope.md +4 -4
- package/governance/rules/lib/testing-go.md +1 -2
- package/governance/rules/lib/testing-php.md +4 -5
- package/governance/rules/lib/testing-py.md +11 -19
- package/governance/rules/lib/testing-ts.md +7 -16
- package/governance/rules/lib/zod.md +6 -8
- package/governance/rules/tooling/code-comments.md +2 -4
- package/governance/rules/tooling/config-comments.md +1 -4
- package/governance/rules/tooling/dependencies.md +1 -1
- package/governance/rules/ui/a11y.md +16 -45
- package/governance/rules/ui/copy.md +6 -9
- package/governance/rules/ui/forms.md +13 -19
- package/governance/rules/ui/interface-casing.md +5 -7
- package/governance/rules/ui/keyboard.md +38 -0
- package/governance/rules/ui/link-behavior.md +3 -3
- package/governance/rules/ui/motion.md +3 -3
- package/governance/rules/ui/surface-capture.md +15 -27
- package/governance/rules/ui/ux-completeness.md +16 -39
- package/governance/stacks/base.toml +0 -1
- package/package.json +1 -1
- package/scripts/core/install-check.sh +1 -1
- package/src/claude/cases/workflow.ts +12 -0
- package/src/cli/help.ts +0 -1
- package/src/cli.ts +0 -2
- package/src/commands/context.ts +57 -3
- package/src/commands/gov.ts +4 -0
- package/src/commands/init.ts +2 -2
- package/src/commands/labels.ts +83 -3
- package/src/commands/markdown.ts +188 -21
- package/src/commands/sessions.ts +36 -3
- package/src/commands/tasks.ts +180 -0
- package/src/commands/tooling.ts +18 -5
- package/src/commands/worktrees.ts +2 -0
- package/src/context/coverage.ts +210 -0
- package/src/context/gate.ts +12 -3
- package/src/design/components.ts +1 -1
- package/src/gate/stages.ts +1 -1
- package/src/gov/audit.ts +22 -2
- package/src/init/plan.ts +1 -8
- package/src/init/steps.ts +44 -7
- package/src/intake/items.ts +14 -0
- package/src/inventory/subjects.ts +1 -1
- package/src/labels/closing.ts +46 -0
- package/src/markdown/gated.ts +250 -0
- package/src/markdown/scope.ts +119 -2
- package/src/migrate/rename.ts +6 -0
- package/src/migrate/scratch-evidence.ts +12 -4
- package/src/records/backup.ts +3 -3
- package/src/records/validate.ts +3 -3
- package/src/roots/record.ts +17 -8
- package/src/sessions/claim.ts +7 -0
- package/src/sessions/live.ts +53 -6
- package/src/sessions/registry.ts +11 -0
- package/src/sessions/resolve.ts +32 -5
- package/src/tasks/closes.ts +136 -0
- package/src/tasks/record.ts +1 -1
- package/src/tooling/inject.ts +26 -7
- package/src/tooling/package.ts +32 -0
- package/src/tooling/read.ts +46 -3
- package/src/tooling/scan.ts +8 -2
- package/src/worktrees/reclaim.ts +16 -1
- package/tooling/astro/reference.md +64 -93
- package/tooling/base/configs/.github/workflows/phase-label-gate.yml +1 -1
- package/tooling/base/configs/scripts/verify.ts +2 -2
- package/tooling/base/reference.md +1 -9
- package/tooling/base/seeds/canon/context/{ci.md → development/ci.md} +1 -1
- package/tooling/base/seeds/canon/context/development/index.md +11 -0
- package/tooling/base/seeds/canon/context/{development.md → development/setup.md} +8 -12
- package/tooling/base/seeds/canon/context/index.md +1 -2
- package/tooling/claude/manifest.toml +1 -5
- package/tooling/claude/reference.md +36 -59
- package/tooling/claude/seeds/.claude/hooks/board-validate.sh +1 -1
- package/tooling/claude/seeds/.claude/hooks/index-reminder.sh +2 -7
- package/tooling/claude/seeds/.claude/hooks/pr-create-log.sh +2 -7
- package/tooling/claude/seeds/.claude/hooks/scratch-guard.sh +3 -10
- package/tooling/claude/seeds/.claude/hooks/search-reminder.sh +2 -7
- package/tooling/claude/seeds/.claude/hooks/standards-audit.sh +2 -4
- package/tooling/claude/seeds/CLAUDE.md +2 -2
- package/tooling/nextjs/reference.md +0 -6
- package/tooling/php/reference.md +0 -4
- package/tooling/web/configs/.github/workflows/verify.yml +28 -0
- package/tooling/web/configs/.oxlintrc.json +7 -0
- package/tooling/web/configs/e2e/capture-types.ts +35 -0
- package/tooling/web/configs/e2e/screenshot.ts +23 -72
- package/tooling/web/manifest.toml +1 -1
- package/tooling/web/reference.md +77 -124
- package/tooling/web/seeds/e2e/capture/cases.ts +47 -0
- package/governance/rules/canon/task-scope.md +0 -12
- package/src/commands/wiki.ts +0 -100
- package/src/wiki/init.ts +0 -85
|
@@ -7,33 +7,27 @@ description: What commit grouping is for, the gaps it closes, and how it differs
|
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
10
|
-
Without this skill, a staged diff spanning several concerns lands as one commit, so a later revert takes unrelated work with it. A renamed file staged as two
|
|
10
|
+
Without this skill, a staged diff spanning several concerns lands as one commit, so a later revert takes unrelated work with it. A renamed file staged as two paths records an add and a delete, and commits land in listing order rather than dependency order, so a bisect stops on a commit that cannot build.
|
|
11
11
|
|
|
12
|
-
The routing
|
|
12
|
+
The routing fails on top of that. A description claiming every commit request pulls in single-concern sets with nothing to group, and a hunk-level selection reaching the unstage comes back widened to whole files.
|
|
13
13
|
|
|
14
14
|
## Must
|
|
15
15
|
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
- Keep a rename pair in one group and restage both paths together, so git still detects the rename at commit time
|
|
22
|
-
- Unstage everything first, then restage per group, since the incoming staged set is one undifferentiated blob
|
|
23
|
-
- Count each subject against the length limit and shorten before executing
|
|
16
|
+
- Each message follows the commit format reference, derived from the staged diff with lockfiles excluded, with each subject counted against the length limit before executing
|
|
17
|
+
- Every staged file is accounted for in the preview, and no file the user did not stage is committed
|
|
18
|
+
- Commits are ordered so a dependency lands before the file that imports it
|
|
19
|
+
- A rename pair stays in one group, so git still detects the rename
|
|
20
|
+
- The description declines single-concern and hunk-level staged sets and names `git-commit` for both
|
|
24
21
|
|
|
25
22
|
## Must not
|
|
26
23
|
|
|
27
|
-
- Stage a file the user did not stage
|
|
24
|
+
- Stage a file the user did not stage
|
|
28
25
|
- Split a rename pair across groups
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
## Guards
|
|
32
|
-
|
|
33
|
-
- Nothing staged: stop and name the command that stages
|
|
26
|
+
- Run when nothing is staged
|
|
27
|
+
- Emit anything after the result line
|
|
34
28
|
|
|
35
29
|
## Out of scope
|
|
36
30
|
|
|
37
|
-
- Composing
|
|
38
|
-
- Splitting commits across branches, which `git-split` owns
|
|
31
|
+
- Composing one commit from the whole staged diff, which `git-commit` owns
|
|
32
|
+
- Splitting commits across branches, which `git-split` owns
|
|
39
33
|
- Pushing and opening the pull request, which `git-pr` owns
|
|
@@ -7,32 +7,28 @@ description: What worktree listing and cleanup is for, the gaps it closes, and w
|
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
10
|
-
Without this skill, linked worktrees accumulate past the point where any of them is remembered. Merge state does not appear in the worktree list, so a cleanup either removes a worktree still holding unmerged work or
|
|
10
|
+
Without this skill, linked worktrees accumulate past the point where any of them is remembered. Merge state does not appear in the worktree list, so a cleanup either removes a worktree still holding unmerged work or removes nothing.
|
|
11
|
+
|
|
12
|
+
A plain ancestry read misses the whole set, since `git branch --merged` decorates every branch checked out in a worktree. Removing a worktree also leaves its local branch behind, so the branch list keeps growing even when cleanup runs.
|
|
11
13
|
|
|
12
14
|
## Must
|
|
13
15
|
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
- Pick exactly one mode. Listing and removing are different requests and inferring both from one invocation removes worktrees the user meant to read about.
|
|
16
|
+
- Merge state comes from the pull request first and from local ancestry matched on the branch name alone when no pull request exists
|
|
17
|
+
- A worktree and its local branch are removed together
|
|
18
|
+
- The main root, the current session's worktree, a dirty tree, a worktree outside the prefix `session-worktree` creates under, and one a live session occupies are never removed
|
|
19
|
+
- Every skipped row carries a one-word reason, and an empty remove set says why each row was held
|
|
20
|
+
- Each run is exactly one of listing or removing
|
|
20
21
|
|
|
21
22
|
## Must not
|
|
22
23
|
|
|
23
|
-
- Enter or create a worktree
|
|
24
|
-
- Remove a
|
|
25
|
-
- Remove
|
|
26
|
-
-
|
|
24
|
+
- Enter or create a worktree
|
|
25
|
+
- Remove a dirty or occupied worktree, whatever its merge state
|
|
26
|
+
- Remove the worktree the session runs in
|
|
27
|
+
- Run outside a git repository
|
|
27
28
|
- Emit anything after the result line
|
|
28
29
|
|
|
29
|
-
## Guards
|
|
30
|
-
|
|
31
|
-
- Not a git repository: stop
|
|
32
|
-
- Remove set is empty: stop and say why every row was held back
|
|
33
|
-
|
|
34
30
|
## Out of scope
|
|
35
31
|
|
|
36
|
-
- Entering a worktree, which `session-worktree` owns
|
|
37
|
-
-
|
|
38
|
-
-
|
|
32
|
+
- Entering a worktree, which `session-worktree` owns
|
|
33
|
+
- Writing pull request state, which `git-pr` and `git-followup` own
|
|
34
|
+
- Deciding which features can run in parallel, which the planning skills own
|
|
@@ -7,38 +7,30 @@ description: Why the skill draws a deck as HTML in the project's tokens inside i
|
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
10
|
-
Without this skill, a
|
|
10
|
+
Without this skill, a session writes a deck into whatever path occurs to it, so a second deck overwrites the first and nothing lists either. It writes pptxgenjs code or hex colors, so the deck ignores the project's design. Every slide comes out as a title over bullets, which reads as a document rather than a deck.
|
|
11
11
|
|
|
12
|
-
A first render shipped unread hands the audience the overlap, the overflow, and every element the converter fell back to a picture for
|
|
12
|
+
It invents attributes the converter does not read, so a section, a chart, or an entrance silently goes missing. A first render shipped unread hands the audience the overlap, the overflow, and every element the converter fell back to a picture for.
|
|
13
13
|
|
|
14
14
|
## Must
|
|
15
15
|
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
- Shell out to the render command for the deck itself
|
|
22
|
-
- Read every fallback and refusal the render reports, run one QA pass over the rendered images, and fix what both report
|
|
16
|
+
- The existing decks and the slide format are read from the CLI before drawing, and a new deck takes a name no listed deck carries unless the request names one
|
|
17
|
+
- Each deck lands in its own folder under the slides record folder, one HTML file per slide in filename order, drawn with the project's custom properties
|
|
18
|
+
- The composition varies across the deck, and content fits the slide frame with short titles and tight lines
|
|
19
|
+
- The render command produces the deck itself
|
|
20
|
+
- Every fallback and refusal the render reports is read, one QA pass runs over the rendered images, and what both report is fixed once
|
|
23
21
|
|
|
24
22
|
## Must not
|
|
25
23
|
|
|
26
|
-
- Hardcode a deck name, an attribute, or a chart type,
|
|
27
|
-
- Reimplement the conversion, the master, or the packaging, which the CLI owns
|
|
24
|
+
- Hardcode a deck name, an attribute, or a chart type, or reimplement the conversion, the master, or the packaging the CLI owns
|
|
28
25
|
- Write a deck into the shared layouts folder, which is never listed as a deck
|
|
29
|
-
- Invent token values when the project has no token stylesheet
|
|
26
|
+
- Invent token values when the project has no token stylesheet, rather than saying the deck renders unstyled
|
|
30
27
|
- Write centered body text or content that overflows a slide
|
|
31
|
-
- Loop on aesthetics past a single fix pass
|
|
32
|
-
|
|
33
|
-
## Guards
|
|
34
|
-
|
|
35
|
-
- No token stylesheet: draw the deck anyway and say it renders unstyled.
|
|
36
|
-
- Image conversion tools missing: skip the image pass and say so. Do not fail the render over a verification step.
|
|
28
|
+
- Loop on aesthetics past a single fix pass, or fail the render when the image tools for the QA pass are missing
|
|
37
29
|
|
|
38
30
|
## Out of scope
|
|
39
31
|
|
|
40
32
|
- Converting HTML to PowerPoint, which the CLI owns end to end
|
|
41
|
-
- The project's palette and faces, which
|
|
42
|
-
- Writing the content the deck is about, which the caller
|
|
43
|
-
- Drafting a deck as a canvas page, which
|
|
33
|
+
- The project's palette and faces, which its token stylesheet owns
|
|
34
|
+
- Writing the content the deck is about, which the caller owns
|
|
35
|
+
- Drafting a deck as a canvas page, which no skill owns until that authoring surface is measured
|
|
44
36
|
- Recording a demo, which `script-screencast` owns
|
|
@@ -7,9 +7,9 @@ description: Why the markdown format rules travel in a skill, and where the boun
|
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
10
|
-
Without this skill, the markdown format rules
|
|
10
|
+
Without this skill, the markdown format rules sit in a standard that a session opens only when a rule tells it to. The banned characters and the structure rules are facts a scan settles, yet a session writes the whole document from memory and learns the result only from the audit's exit.
|
|
11
11
|
|
|
12
|
-
The rules also
|
|
12
|
+
The rules also have three carriers, a standard, a generated rule pointing at it, and a hand-written rule routing voice. Each states one routing and each drifts from the others.
|
|
13
13
|
|
|
14
14
|
## Must
|
|
15
15
|
|
|
@@ -20,4 +20,10 @@ The rules also had three carriers, a standard, a generated rule pointing at it,
|
|
|
20
20
|
## Must not
|
|
21
21
|
|
|
22
22
|
- Restate the banned characters in the body
|
|
23
|
-
- Carry voice, rhythm, or word guidance
|
|
23
|
+
- Carry voice, rhythm, or word guidance
|
|
24
|
+
|
|
25
|
+
## Out of scope
|
|
26
|
+
|
|
27
|
+
- Voice, rhythm, and word choice, which `write-human` owns
|
|
28
|
+
- A Mermaid fence or a figure, which `draw-figure` owns
|
|
29
|
+
- The banned-character scan itself, which `canon markdown audit` owns
|
|
@@ -7,80 +7,30 @@ description: Why a decision settled by looking needs its own surface, and where
|
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
10
|
-
Without this skill, a session facing a decision
|
|
10
|
+
Without this skill, a session facing a decision settled by looking describes the options in prose or ships one answer to a taste call. The operator never sees what they chose between. A drafted set varies several properties or the wrong layer, sits in the real surface, and mixes themes and widths, so no pick names what decided it.
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
- Produces one answer for a decision that was taste, so the operator never sees what they were choosing between and the call is taken silently by whoever wrote the code.
|
|
14
|
-
- Reports that a candidate reads well without rendering it, so the claim rests on the markup having been written rather than on the page having been seen.
|
|
15
|
-
- Hands over one image per arm, which asks the operator to hold the differences in memory rather than showing them. The comparison is the artifact and a set of separate files is not one.
|
|
16
|
-
- Varies three properties at once across the arms, so the pick cannot say which difference decided it and the next iteration guesses.
|
|
17
|
-
- Writes the candidates into the real surface, so the losing arms have to be unpicked out of a tree the operator has not judged yet, and a variant left behind a flag becomes a second design nobody maintains.
|
|
18
|
-
- Stops the loop when the arms stop differing rather than when the operator says the pick is right, which ends the run on the session's own patience.
|
|
19
|
-
- Reads a driver record as a verdict and drops an arm on it. `canon drive` reports findings and never gates, so a run filtering the arms on a probe reading has made a claim the probe catalog has not earned.
|
|
20
|
-
- Reads a color without compositing its alpha, samples a round control at the corner of its bounding box, or confirms a panel's dimensions while it sits above the viewport. Each reads as a passing measurement about something no reader sees.
|
|
21
|
-
- Meets a machine with no browser binary and reports on the arms anyway, since nothing in the default flow separates a render that failed from one that was never attempted.
|
|
22
|
-
- Hand-writes a mockup of a surface a running app already serves, which drifts from what ships by a few pixels and a few words the moment the app's own markup or stylesheet moves on.
|
|
23
|
-
- Varies a property the decision is not about, which satisfies the one-property rule and produces a set differing in the layer a reader notices least. Five palettes over one identical page read as five skins of one design, and the operator rejected the whole set on sight.
|
|
24
|
-
- Renders each arm in whatever theme it happens to carry, so a set spanning both themes cannot be compared without the operator toggling every arm and holding the earlier ones in memory.
|
|
25
|
-
- Looks at a render to confirm it came out rather than to judge whether it is worth showing, which satisfies the rule against reporting an unseen result and still hands over weak work.
|
|
26
|
-
- Writes the run's renders to a scratch path outside the record that cites them, leaving the folder holding source markup and none of the images, so the judgment is unreachable to everyone except the session that made it.
|
|
27
|
-
- Narrows the page onto the picked arm in place on each iteration, so every earlier round is overwritten and a later pass cannot see what was already rejected.
|
|
28
|
-
- Names no layer at all, since the instruction to name one carries no catalog to name from and nothing reports the omission. Four consecutive rounds against one page each varied a property at the top layer while the defect sat two below it, and three of the four changed nothing the operator could see.
|
|
29
|
-
- Judges a lower layer through a finished higher one, so an operator asked about composition looks at the palette instead and answers about that.
|
|
30
|
-
- Hands over the combined page alone for a decision about layout, where every arm sits in a column while the media queries answer to the whole window, so no arm is ever seen at its own viewport and a fault that appears only narrower survives the pick.
|
|
31
|
-
- Rebuilds a navigation harness by hand on a run with several rounds, since each round writes its own folder and nothing reaches all of them from one address. Two design tracks hand-wrote the same page picker and theme toggle.
|
|
32
|
-
- Meets a session with no canvas server and drafts into a file instead, which leaves the operator a second surface to open and the run a second close to remember. The canvas is the one drafting surface, so a run without one starts it rather than falling back.
|
|
33
|
-
- Puts the pick question with no address in its output, after capturing the page and reading the image back. The operator then has to ask for a served page before they can look, so the question goes unanswered or gets answered blind.
|
|
34
|
-
- Sets the theme on an arm that persists its own and reads it back on load, so the control reports one theme while the arm renders the other and the set is compared across two.
|
|
12
|
+
The evidence fails as well. Arms get reported without being rendered or judged, a driver finding reads as a verdict, and the pick question arrives with no address to look at. Renders land in scratch, each round overwrites the last, and the losing arms vanish with the run's pages.
|
|
35
13
|
|
|
36
14
|
## Must
|
|
37
15
|
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
- Theme every arm off the attribute the canvas toggle sets on each frame, so one control sets the whole set and the comparison holds still while the operator reads it, and give no arm a script that reads a stored preference back on load over the toggle.
|
|
44
|
-
- Give each frame the width the arm is judged at, since a frame renders at its own layout width and answers how an arm behaves at a width where a column on a shared page could not.
|
|
45
|
-
- Judge each render against a stated bar before handing it over, name the weakest thing on the page, and fix it where that sentence would embarrass the work.
|
|
46
|
-
- Write each iteration to its own canvas page rather than narrowing the previous one in place, so every earlier round stays openable from the canvas page list.
|
|
47
|
-
- Write the run's renders inside the record that cites them wherever one exists, and reserve the scratch path for inputs that are re-runnable and cited by nothing.
|
|
48
|
-
- Render before reporting on any arm, and report a missing browser binary as a refusal naming the repair rather than describing an arm nobody has seen.
|
|
49
|
-
- Take the pick through the structured question surface, with the recommendation ranked first and marked, and every option carrying its cost. Read the canvas selection only to resolve an answer that points at it, and treat an empty or stale selection as no answer.
|
|
50
|
-
- Keep every write inside the run's own canvas pages until the pick is final.
|
|
51
|
-
- Apply the winning arm in one change.
|
|
52
|
-
- Capture every arm from the round the pick came from, whichever round that is, as an image named for its frame before deleting the run's pages, rather than discarding the losing arms with them.
|
|
53
|
-
- Delete only the canvas pages the run itself added, recorded as it adds them, and stop only a canvas server the run itself started.
|
|
54
|
-
- Resolve the archival capture's destination against the main worktree root, never against a linked worktree the run happens to be building in.
|
|
55
|
-
- Put the candidates on the canvas on every run, whatever the decision's layer, and emit the canvas link ahead of the first pick question, so the operator can open the page the question is about and a still is never the only address.
|
|
16
|
+
- Three to five arms, the shipping state among them, each carry an id, a label, and a cost, and vary only at a layer named from the `design-taste` catalog
|
|
17
|
+
- Each round is one canvas page of frames at their judged widths, themed by the canvas toggle and captured once as a composite, with the link ahead of the first pick question
|
|
18
|
+
- Every arm is rendered and judged against a stated bar before handover, and a missing browser or a canvas that will not start is reported as a refusal
|
|
19
|
+
- The pick comes through the structured question surface with the recommendation first and every option's cost, and the winner lands in one change
|
|
20
|
+
- Every round stays openable on its own page until the pick, and the picked round's arms are captured into the citing record at the main root before the run's pages go
|
|
56
21
|
|
|
57
22
|
## Must not
|
|
58
23
|
|
|
59
|
-
- Take the pick where two arms are
|
|
60
|
-
- Draft candidates for a decision the operator has not asked to make
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
## Guards
|
|
66
|
-
|
|
67
|
-
The refusal strings sit in the body, since the runtime loads that file and ignores this one. Two conditions stop a run: a request naming one answer and asking for it to be built, and a decision with no visible form for a render to show.
|
|
24
|
+
- Take the pick where two arms are defensible and the difference is taste
|
|
25
|
+
- Draft candidates for a decision the operator has not asked to make, or for a request that already names one answer
|
|
26
|
+
- Write into the real surface before the pick is final
|
|
27
|
+
- Restate the mechanics `canon canvas` and `canon drive` own, or read a drive finding as a gate over the arms
|
|
28
|
+
- Delete a canvas page or stop a server the run did not start
|
|
68
29
|
|
|
69
30
|
## Out of scope
|
|
70
31
|
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
- `canon canvas` owns the page, the frames, the selection, the address, and the render, and `canon drive` owns the probes. Both are invoked rather than reimplemented.
|
|
77
|
-
|
|
78
|
-
### What did not travel
|
|
79
|
-
|
|
80
|
-
This descends from a project-local skill whose interactive half was written against one repository. Three of its capabilities do not travel, and the two verbs above are what stands in their place:
|
|
81
|
-
|
|
82
|
-
- An arm switcher compiled into the project's own page, driven by a query parameter. A canvas page of frames replaces it, which puts the arms on the canvas rather than in the source and removes the call site a run had to remember to delete.
|
|
83
|
-
- A copy cycle keyed to canonical page text held in a second repository. No toolkit surface has that shape, so a project holding one owns the second edit and this skill states nothing about it.
|
|
84
|
-
- A walker that reads every control on every page and groups them by treatment. `canon drive` probes one page and reports findings, so a sweep across every surface of a site is out of reach here and a run needing one measures by hand.
|
|
85
|
-
|
|
86
|
-
The capture mechanics traveled with a change of owner rather than being lost. They sat in a project-local path-scoped rule that fired whether or not the skill ran, and `canon canvas capture` owns them here, which is why this file bars restating them rather than naming a rule to defer to.
|
|
32
|
+
- Planning the work once the answer is settled, which `plan-feature` owns
|
|
33
|
+
- Finding roughness by reading source, which `ux-audit` owns
|
|
34
|
+
- Measuring what a running interface costs to paint, which `ux-measure` owns
|
|
35
|
+
- Listing what to look at on a change already made, which `ui-checklist` owns
|
|
36
|
+
- Scripting a recording of something already built, which `script-screencast` owns
|
|
@@ -7,37 +7,28 @@ description: What feature planning is for, the gaps it closes, and why it stops
|
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Implementation starts before anyone knows what it touches. A session rediscovers a settled constraint halfway through, and an ambiguity gets resolved silently in whichever direction the first edit went. A feature stacked into pull requests over the same files pays the review cost once per slice.
|
|
11
|
+
|
|
12
|
+
A constraint naming a surface to leave alone forbids two acts at once, conforming it and retargeting a pointer into it. A vague ask reaches the plan with no checkable criterion, and a decision rests on a practice recalled from memory.
|
|
11
13
|
|
|
12
14
|
## Must
|
|
13
15
|
|
|
14
|
-
- Read the project's
|
|
15
|
-
- Reframe a vague ask as observable
|
|
16
|
-
- Slice
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
- Name every file the work touches with the reason it is touched
|
|
20
|
-
- Place each new path against the layout guidance with a one-clause reason, loading that guidance only when the plan creates a file or folder, since the planner decides placement and the worker copies whatever path it is given
|
|
21
|
-
- Name how each outcome is proven and which input or state would break the change, so the executing session has a check to run and the reviewer has a place to look
|
|
22
|
-
- Surface each unresolved ambiguity as a numbered question carrying a suggested answer and an empty answer slot, so the plan is decision-ready in one pass
|
|
23
|
-
- State which act a constraint forbids when it names a surface to leave alone, since conforming that surface and retargeting a pointer into it are different acts and only one is out of scope
|
|
24
|
-
- Scale the output to the work. A two-file change with nothing to decide should not produce a plan file.
|
|
25
|
-
- Stop at the plan and wait to be told to continue
|
|
16
|
+
- Read the project's Claude setup before scanning source, and name every file the work touches with the reason it is touched
|
|
17
|
+
- Reframe a vague ask as observable success criteria, carry each into the plan's verification, and ask when none can be predicted
|
|
18
|
+
- Slice by user-visible path with the riskiest batch first, and fold a stacked batch sharing most of its files into its parent unless the plan says why they differ
|
|
19
|
+
- Quote the fetched passage behind each outside source, mark an unfetched one unverified, and place each new path against the layout guidance with a one-clause reason
|
|
20
|
+
- Surface each ambiguity as a numbered question with a suggested answer and an empty slot, and stop at the plan
|
|
26
21
|
|
|
27
22
|
## Must not
|
|
28
23
|
|
|
29
24
|
- Implement, or edit any file the plan describes
|
|
30
|
-
- Read directories speculatively
|
|
31
|
-
- Bundle independent concerns into one plan
|
|
32
|
-
- Restate the plan in chat during follow-up rounds
|
|
33
|
-
|
|
34
|
-
## Guards
|
|
35
|
-
|
|
36
|
-
- No feature description: stop and ask for one
|
|
37
|
-
- No predictable success criterion: ask before planning rather than guessing the goal
|
|
25
|
+
- Read directories speculatively, since context spent on files the feature does not touch is context the plan does not get
|
|
26
|
+
- Bundle independent concerns into one plan
|
|
27
|
+
- Restate the plan in chat during follow-up rounds, since the file is the source of truth
|
|
38
28
|
|
|
39
29
|
## Out of scope
|
|
40
30
|
|
|
41
|
-
- Executing the plan, which
|
|
42
|
-
-
|
|
43
|
-
- Reconciling the context entries after the work lands, which `context-fold` owns
|
|
31
|
+
- Executing the plan, which `auto-ship` owns
|
|
32
|
+
- Creating a task for the plan, which `task-board` owns
|
|
33
|
+
- Reconciling the context entries after the work lands, which `context-fold` owns
|
|
34
|
+
- Marking the board, which `task-complete` owns
|
|
@@ -7,43 +7,27 @@ description: Why a question that has not been measured gets a disposable folder
|
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
A question nobody has measured is answered with a plan. The session commits before the current state is known, and its reasoning compacts away with the conversation, so the next session re-measures what this one counted or states a figure from recall as current.
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
A track that closes with several separable findings writes only one task, and the rest have no stated route out of the folder. Without one, a finding sits until the operator asks whether filing it elsewhere is the next step, which is how a track that measured everything correctly still lost work between sessions.
|
|
12
|
+
A track fanning out to subagents returns findings without their reasoning. Under the project root, a fixture loads its instruction files, so the arm measures the repository instead of the question. When a closing track holds several findings, one task is written and the rest have no route out.
|
|
15
13
|
|
|
16
14
|
## Must
|
|
17
15
|
|
|
18
|
-
- Detect open, resume, and close from the folder itself, matching the topic against tracks
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
- Confine writes to the track folder, with the close-time task file, the experiment fixture, and the intake routing below as the only exceptions
|
|
24
|
-
- Route a closing-track finding the required task does not cover through `plan-intake`, rather than leaving it to be asked about. The route runs in the same session, so it is a write outside the folder rather than a handoff to a later one.
|
|
25
|
-
- Place the closing task's row through `task-board` Step 4 rather than writing `priority.md` or `backlog.md` directly
|
|
26
|
-
- Link every claim about a source outside the project, and list an unread source as a lead rather than citing it
|
|
27
|
-
- Put a fixture a headless run is pointed at outside the repository
|
|
28
|
-
- Write the next-session file self-contained, since backing the folder through `canon records push` and `canon records pull` holds only where a records remote is configured, protects only against the machine being lost even there, and never against a compaction dropping this session's reasoning before it has pushed
|
|
16
|
+
- Detect open, resume, and close from the folder itself, matching the topic against existing tracks first, and number a new folder past the highest ordinal across groundwork and intake
|
|
17
|
+
- Measure the current state now, carry a lean and the finding that would overturn it on every open question, link every outside claim, and end a pass with every question leaned on a plain retell
|
|
18
|
+
- Confine writes to the track folder, plus the close-time task file, the experiment fixture, and the intake routing
|
|
19
|
+
- Route a closing finding the task does not cover through `plan-intake` in the same session, and place the closing task's row through `task-board`
|
|
20
|
+
- Put a fixture a headless run is pointed at outside the repository, and write the next-session file self-contained
|
|
29
21
|
|
|
30
22
|
## Must not
|
|
31
23
|
|
|
32
24
|
- Write a feature plan, a source change, a standard, a rule, or a reference doc
|
|
33
|
-
- Dispatch subagents
|
|
34
|
-
- Close while an open question quietly fails an outcome,
|
|
35
|
-
-
|
|
36
|
-
- Match a topic against the shared scratch directory, which holds folders that were never tracks
|
|
37
|
-
- Pause for approval between steps, which the write scope is what makes safe
|
|
38
|
-
|
|
39
|
-
## Guards
|
|
40
|
-
|
|
41
|
-
- No topic given: stop rather than inferring one
|
|
42
|
-
- Fewer than two of the three qualifying conditions hold in open mode: stop and route to the planning skill, because the decision is already made
|
|
43
|
-
- Resume and close are exempt from that test by definition
|
|
25
|
+
- Dispatch subagents, since a search too large to run inline is a finding that the question is too broad
|
|
26
|
+
- Close while an open question quietly fails an outcome, or spawn more than three billed headless runs without asking
|
|
27
|
+
- Pause for approval between steps, or open a track with no topic or fewer than two of the three qualifying conditions
|
|
44
28
|
|
|
45
29
|
## Out of scope
|
|
46
30
|
|
|
47
31
|
- Writing the plan the track concludes toward, which `plan-feature` owns
|
|
48
|
-
-
|
|
49
|
-
-
|
|
32
|
+
- Filing a breadth dump, which `plan-intake` owns
|
|
33
|
+
- Placing a task row, which `task-board` owns
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan-groundwork
|
|
3
|
-
description: Opens and runs a numbered groundwork folder under `.canon/groundwork/<nn>-<slug>/` for a topic that has to be measured before it can be planned. Detects open, resume, and close from the folder itself. Use when asked to "research X", "dig into X", "work out what we should do about X", "measure this before we commit",
|
|
3
|
+
description: Opens and runs a numbered groundwork folder under `.canon/groundwork/<nn>-<slug>/` for a topic that has to be measured before it can be planned. Detects open, resume, and close from the folder itself. Use when asked to "research X", "dig into X", "work out what we should do about X", "measure this before we commit", "open a groundwork folder", or "retell the groundwork". Do NOT use to write a feature plan or to implement. That is `plan-feature`.
|
|
4
4
|
metadata:
|
|
5
5
|
family: decide
|
|
6
6
|
---
|
|
@@ -88,6 +88,7 @@ A matched folder routes on its own `<nn>-<slug>/`. Detect the mode from the fold
|
|
|
88
88
|
|
|
89
89
|
- Present without `06-decision.md`: resume
|
|
90
90
|
- Present and the user judges it ready: close
|
|
91
|
+
- Present and the user asks for a retell: read the track and end on the retell, measuring and writing nothing
|
|
91
92
|
|
|
92
93
|
## Step 2: orient
|
|
93
94
|
|
|
@@ -135,4 +136,6 @@ Aside from an experiment fixture, Steps 4 and 5 are the only ways close mode rea
|
|
|
135
136
|
|
|
136
137
|
## Output
|
|
137
138
|
|
|
138
|
-
Emit the full relative path from the project root for every file written or updated, since a bare filename names a file the reader cannot open. Read `${CLAUDE_SKILL_DIR}/references/output.md` on reaching this step for the open and resume template and the close template. A run that stops on a guard skips it.
|
|
139
|
+
Emit the full relative path from the project root for every file written or updated, since a bare filename names a file the reader cannot open. Read `${CLAUDE_SKILL_DIR}/references/output.md` on reaching this step for the open and resume template, the retell, and the close template. A run that stops on a guard skips it.
|
|
140
|
+
|
|
141
|
+
End on the retell in place of the open and resume template once every open question carries a lean. A question marked `none, needs measuring` keeps the open and resume template, unless the operator asks for a retell, which answers whatever the state. The retell lists written files under `**Written:**`, and close keeps its one-line report.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Groundwork output reference
|
|
3
|
-
description: The chat output a groundwork run closes on, one template for open and resume and one for close
|
|
3
|
+
description: The chat output a groundwork run closes on, one template for open and resume, a retell for a fully leaned pass, and one for close
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Groundwork output reference
|
|
@@ -26,6 +26,52 @@ Use `📂 Resumed` in place of `📂 Opened` on a resume pass.
|
|
|
26
26
|
- Overturned by: <the finding that would change it>
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
+
## Retell
|
|
30
|
+
|
|
31
|
+
Replaces the open and resume template once every open question carries a lean. It also answers an operator who asks for one, whatever the questions' state. Chat only, and the retell itself writes no file.
|
|
32
|
+
|
|
33
|
+
Use H2 only, one-line bold-label bullets, and numbers only where they settle something. Stay near 300 words.
|
|
34
|
+
|
|
35
|
+
- Keep the leans that decide the operator's call, five at most, and fold the rest into one line naming how many more there are and where they sit
|
|
36
|
+
- Label each reversal `Overturned by`, as `groundwork.md` does
|
|
37
|
+
- Drop the held and not held split when the operator gave no hunch to test
|
|
38
|
+
- Put a question marked `none, needs measuring` under `## More measuring` as a yes, since an asked-for retell has no lean to give it
|
|
39
|
+
- List a file the pass wrote or updated under `**Written:**` after the verdict, and omit the block when none was
|
|
40
|
+
|
|
41
|
+
```plaintext
|
|
42
|
+
**<the verdict in one line>**
|
|
43
|
+
|
|
44
|
+
**Written:**
|
|
45
|
+
|
|
46
|
+
- `.canon/groundwork/<nn>-<slug>/<file>.md`
|
|
47
|
+
|
|
48
|
+
## Problem
|
|
49
|
+
|
|
50
|
+
<one or two sentences>
|
|
51
|
+
|
|
52
|
+
## What is true now
|
|
53
|
+
|
|
54
|
+
- **Held:** <the part of the operator's hunch the evidence supports>
|
|
55
|
+
- **Not held:** <the part it does not>
|
|
56
|
+
|
|
57
|
+
## Leans
|
|
58
|
+
|
|
59
|
+
1. <lean>
|
|
60
|
+
- **Overturned by:** <the finding that would change it>
|
|
61
|
+
|
|
62
|
+
## More measuring
|
|
63
|
+
|
|
64
|
+
**<Yes or No>:** <its cost, and what it would decide>
|
|
65
|
+
|
|
66
|
+
## Dropped
|
|
67
|
+
|
|
68
|
+
- <what was set aside>
|
|
69
|
+
|
|
70
|
+
## Your call
|
|
71
|
+
|
|
72
|
+
<the single decision the operator owes>
|
|
73
|
+
```
|
|
74
|
+
|
|
29
75
|
## Close
|
|
30
76
|
|
|
31
77
|
Omit the uncited-claims block when the count is zero.
|
|
@@ -7,43 +7,28 @@ description: Why a brain dump gets a filed inventory rather than ten plans, and
|
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
A brain dump reaches a session with nowhere to put it. One plan per concern turns forty findings into ten plans before anything is measured, and what gets filed instead is a list of opinions, because nothing forces a count against the tree.
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
Four more are cheaper to name than to rediscover. A question filed without a pick comes back unresolved, measured across one folder's 19 open items, where every one carrying a suggestion resolved on a bare `ok` and the five carrying none did not.
|
|
15
|
-
|
|
16
|
-
A session with no numbering convention re-decides the folder shape per dump, so no two intakes are readable the same way and the second one has to be learned from scratch. A question answerable both in the index and on its item resolves to whichever a reader opens first, with no rule saying which wins. And a pass with no write scope starts fixing what it files, which turns a triage into a branch nobody asked for and nobody reviewed.
|
|
12
|
+
An empty operator slot reads as consent under a blank-means-accept contract, which ships changes nobody approved. A report naming only a path hides what moved. A question filed without a pick comes back unresolved, and a pass with no write scope starts fixing what it files.
|
|
17
13
|
|
|
18
14
|
## Must
|
|
19
15
|
|
|
20
|
-
- Route each item on whether the repository can answer it today, sending
|
|
21
|
-
- Measure every problem line against the tree
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
- Name a newly opened folder with a two-digit ordinal ahead of the slug, taken from the highest one already present across intake and groundwork
|
|
26
|
-
- Keep answers on items alone, with the index pointing at them
|
|
27
|
-
- Name the heading and the act beside every path the pass wrote
|
|
28
|
-
- Confine writes to the intake folder
|
|
16
|
+
- Route each item on whether the repository can answer it today, sending experiments to `plan-groundwork` and decided work to `plan-feature`
|
|
17
|
+
- Measure every problem line against the tree, close every item with a verdict, and pair every open question with a suggested pick
|
|
18
|
+
- Treat an empty operator slot as unread, and keep answers on items with the index pointing at them
|
|
19
|
+
- Reserve the index number, carry the domain in every other filename, and number a new folder past the highest ordinal across intake and groundwork
|
|
20
|
+
- Confine writes to the intake folder and name the heading and the act beside every path written
|
|
29
21
|
|
|
30
22
|
## Must not
|
|
31
23
|
|
|
32
24
|
- Write a plan, a task file, a standard, a rule, or a source change
|
|
33
|
-
- Fill an operator's
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
- Date every file, since the first edit to one leaves the rest stale
|
|
37
|
-
- Open a folder for a single question, which is either a groundwork track or a plan
|
|
38
|
-
|
|
39
|
-
## Guards
|
|
40
|
-
|
|
41
|
-
- No dump given: stop rather than inferring one
|
|
42
|
-
- One question rather than a set of findings: stop and route to the groundwork or planning skill
|
|
25
|
+
- Fill an operator's slot, or replace a verdict with an overlap line
|
|
26
|
+
- Reserve mid-range numbers or date every file
|
|
27
|
+
- Open a folder for a single question or for no dump
|
|
43
28
|
|
|
44
29
|
## Out of scope
|
|
45
30
|
|
|
46
31
|
- Measuring one question in depth, which `plan-groundwork` owns
|
|
47
32
|
- Planning a promoted item, which `plan-feature` owns
|
|
48
33
|
- Promoting an item onto the board, which `task-board` owns
|
|
49
|
-
- Enforcing any of this
|
|
34
|
+
- Enforcing any of this, which no check does since the folder is gitignored
|
|
@@ -113,9 +113,9 @@ Where an item touches a task already on the board, say so in the index rather th
|
|
|
113
113
|
- **You:**
|
|
114
114
|
```
|
|
115
115
|
|
|
116
|
-
- `Problem:`, `Fix:`, `Worth it:`, and the empty `You:` slot ship on every item. The other two are conditional.
|
|
116
|
+
- `Problem:`, `Fix:`, `Worth it:`, and the empty `You:` slot ship on every item, each on one line since the reader takes nothing after it. The other two are conditional.
|
|
117
117
|
- Number items per cluster file, giving a finding split later a letter suffix such as `3a` beside `3`, since renumbering moves every cited label
|
|
118
|
-
- `
|
|
118
|
+
- `Open:` reads on its own, with no bare "it" or "this" for the Fix, and `Suggested:` is required beside it, since `ok` against two options carries no information
|
|
119
119
|
- Where the answer is the operator's preference rather than a technical call, say so in that form rather than inventing a default
|
|
120
120
|
- `Overlaps:` never replaces `Worth it:`, since an item a live board task might have wrong is the one whose verdict matters most
|
|
121
121
|
|