@erclx/canon 5.67.0 → 5.69.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/CHANGELOG.md +31 -0
- package/README.md +1 -1
- package/claude/.claude-plugin/plugin.json +1 -1
- package/claude/skills/app-drive/REQUIREMENT.md +5 -5
- package/claude/skills/app-drive/SKILL.md +14 -4
- package/claude/skills/app-drive/references/drive-record.md +12 -1
- package/claude/skills/canon-cli/SKILL.md +2 -2
- package/claude/skills/canon-feedback/REQUIREMENT.md +1 -1
- package/claude/skills/canon-feedback/SKILL.md +1 -1
- package/claude/skills/design-identity/REQUIREMENT.md +4 -4
- package/claude/skills/design-identity/SKILL.md +7 -7
- package/claude/skills/{pick-by-eye → design-pick}/REQUIREMENT.md +6 -6
- package/claude/skills/{pick-by-eye → design-pick}/SKILL.md +18 -10
- package/claude/skills/{pick-by-eye → design-pick}/references/board.md +17 -11
- package/claude/skills/design-pick/references/design-config.md +33 -0
- package/claude/skills/design-record/REQUIREMENT.md +2 -2
- package/claude/skills/design-record/SKILL.md +1 -1
- package/claude/skills/design-taste/REQUIREMENT.md +2 -2
- package/claude/skills/design-taste/SKILL.md +3 -3
- package/claude/skills/design-taste/references/preflight.md +1 -1
- package/claude/skills/git-issue/REQUIREMENT.md +1 -1
- package/claude/skills/git-issue/references/issue.md +1 -1
- package/claude/skills/plan-feature/SKILL.md +1 -1
- package/claude/skills/plan-feature/references/plan.md +21 -6
- package/claude/skills/plan-groundwork/SKILL.md +1 -1
- package/claude/skills/pr-evidence/REQUIREMENT.md +1 -1
- package/claude/skills/pr-evidence/SKILL.md +7 -1
- package/claude/skills/pr-evidence/references/evidence.md +33 -3
- package/claude/skills/review-craft/references/ui.md +30 -10
- package/claude/skills/role-orchestrator/references/orchestrator-launch.md +3 -3
- package/claude/skills/role-orchestrator/references/orchestrator-parked.md +1 -1
- package/claude/skills/role-orchestrator/references/orchestrator-planning-wait.md +24 -0
- package/claude/skills/role-planner/SKILL.md +4 -2
- package/claude/skills/role-worker/SKILL.md +5 -6
- package/claude/skills/task-board/references/tasks.md +1 -1
- package/claude/skills/task-complete/references/receipt-sweep.md +1 -1
- package/claude/skills/{ux-audit → ui-audit}/REQUIREMENT.md +3 -3
- package/claude/skills/{ux-audit → ui-audit}/SKILL.md +7 -7
- package/claude/skills/ui-checklist/REQUIREMENT.md +1 -1
- package/claude/skills/ui-craft/SKILL.md +1 -1
- package/claude/skills/{ui-record → ui-film}/REQUIREMENT.md +7 -5
- package/claude/skills/{ui-record → ui-film}/SKILL.md +23 -12
- package/claude/skills/{ui-record → ui-film}/references/config.md +3 -3
- package/claude/skills/{ui-record → ui-film}/references/handoff.md +28 -9
- package/claude/skills/ui-film/references/pr-clip.md +84 -0
- package/claude/skills/{ui-record → ui-film}/references/take-craft.md +8 -1
- package/claude/skills/{ux-measure → ui-measure}/REQUIREMENT.md +3 -3
- package/claude/skills/{ux-measure → ui-measure}/SKILL.md +6 -6
- package/docs/agents/audits.md +1 -1
- package/docs/agents/migrate.md +13 -13
- package/docs/agents/records.md +1 -0
- package/docs/target/migrations.md +12 -10
- package/docs/target/projects.md +1 -1
- package/docs/target/sync.md +1 -1
- package/docs/workflow/skill-map-on-request.md +1 -2
- package/docs/workflow/skill-map.md +9 -10
- package/docs/workflow/visual-design-workflow.md +6 -1
- package/governance/ledger/claude/background.md +26 -0
- package/governance/rules/claude/background.md +19 -0
- package/governance/stacks/base.toml +1 -0
- package/package.json +8 -5
- package/scripts/ci/install-playwright-deps.sh +52 -0
- package/src/claude/cases/authoring.ts +2 -2
- package/src/claude/cases/misc.ts +1 -1
- package/src/claude/cases/setup.ts +0 -5
- package/src/claude/cases/workflow.ts +6 -6
- package/src/commands/fixtures/gh.sh +64 -0
- package/src/commands/gov.ts +33 -3
- package/src/commands/migrate.ts +12 -2
- package/src/commands/pr.ts +237 -79
- package/src/commands/take.ts +44 -8
- package/src/commands/tasks.ts +183 -0
- package/src/gate/stages.ts +2 -2
- package/src/gov/audit.ts +48 -11
- package/src/gov/detect.ts +1 -1
- package/src/markdown/scope.ts +9 -14
- package/src/migrate/record-layout.ts +5 -3
- package/src/migrate/skill-names.ts +21 -4
- package/src/pr/evidence.ts +208 -78
- package/src/pr/frames.ts +42 -4
- package/src/pr/pixels.ts +44 -0
- package/src/records/backup.ts +28 -4
- package/src/records/validate.ts +1 -0
- package/src/sandbox/headless/dispatch-shim.sh +15 -0
- package/src/sandbox/headless/dispatch.ts +12 -14
- package/src/sandbox/stub-gh.sh +26 -0
- package/src/sandbox/stub-remote.ts +8 -29
- package/src/sync/engine.ts +1 -1
- package/src/take/camera.ts +2 -2
- package/src/take/encode.ts +38 -1
- package/src/take/film.ts +26 -3
- package/src/take/pointer.ts +169 -0
- package/src/take/reel.ts +215 -0
- package/src/take/screencast.ts +5 -2
- package/src/take/stepper.ts +23 -6
- package/src/take/zoom/NOTICE.md +1 -1
- package/src/tasks/launch-wait.ts +160 -0
- package/tooling/claude/reference.md +1 -1
- package/claude/skills/canon-feedback-triage/REQUIREMENT.md +0 -34
- package/claude/skills/canon-feedback-triage/SKILL.md +0 -98
- package/claude/skills/plan-ready/REQUIREMENT.md +0 -35
- package/claude/skills/plan-ready/SKILL.md +0 -136
- package/claude/skills/plan-ready/references/assembly.md +0 -75
- package/claude/skills/plan-ready/references/ready.md +0 -128
- /package/claude/skills/{pick-by-eye → design-pick}/references/live-arms.md +0 -0
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: assembly
|
|
3
|
-
description: The overview and thin-plan templates for a ready folder, and the match check between the two lists of destinations
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Assembly
|
|
7
|
-
|
|
8
|
-
Loaded from Step 3 and Step 5 of `plan-ready`. The shape rules live in `${CLAUDE_SKILL_DIR}/references/ready.md` and `${CLAUDE_SKILL_DIR}/../plan-feature/references/plan.md`, so this file holds the fill-in forms and the one check that compares them.
|
|
9
|
-
|
|
10
|
-
## The overview
|
|
11
|
-
|
|
12
|
-
```markdown
|
|
13
|
-
---
|
|
14
|
-
title: <Change in sentence case>
|
|
15
|
-
description: <one line naming what the handoff carries>
|
|
16
|
-
type: <branch type from branch.md>
|
|
17
|
-
destinations:
|
|
18
|
-
- <path/to/file>
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
<What the files carry, one bullet each where a file's purpose is not its name.>
|
|
22
|
-
|
|
23
|
-
<What the worker still owns beyond copying, or "nothing further".>
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
- Write `destinations` from the Step 1 list in the order the plan will list them.
|
|
27
|
-
- Keep the prose to what the files cannot say themselves, such as a docs sync, a sandbox scenario, a test the folder does not carry, or the order a change lands in.
|
|
28
|
-
|
|
29
|
-
## The thin plan
|
|
30
|
-
|
|
31
|
-
```markdown
|
|
32
|
-
# Feature: <short title>
|
|
33
|
-
|
|
34
|
-
<Two or three sentences on why this ships as a copy rather than as an authoring job.>
|
|
35
|
-
|
|
36
|
-
## Summary
|
|
37
|
-
|
|
38
|
-
- <what the change does, one bullet per file group>
|
|
39
|
-
- <branch type and what the worker still owns>
|
|
40
|
-
|
|
41
|
-
## Constraints
|
|
42
|
-
|
|
43
|
-
- `.canon/ready/<nn>-<slug>/` holds the verbatim source for every path below. Copy each file whole rather than reading it as a description and writing a version.
|
|
44
|
-
- <a live plan or run row holding a path, when one exists>
|
|
45
|
-
|
|
46
|
-
## Files to touch
|
|
47
|
-
|
|
48
|
-
- `<path/to/file>`: copy from the ready folder, <one clause on what it changes>
|
|
49
|
-
|
|
50
|
-
## Verification
|
|
51
|
-
|
|
52
|
-
- <the command that proves the copy landed, or "None identified.">
|
|
53
|
-
|
|
54
|
-
## Risks
|
|
55
|
-
|
|
56
|
-
- <what could go wrong, or "None identified.">
|
|
57
|
-
|
|
58
|
-
## Review focus
|
|
59
|
-
|
|
60
|
-
- <an input the copied files must handle, or "None identified.">
|
|
61
|
-
|
|
62
|
-
## Questions
|
|
63
|
-
|
|
64
|
-
None identified.
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## The destination match check
|
|
68
|
-
|
|
69
|
-
Read the overview's `destinations` and the plan's `## Files to touch` paths, then compare the two sets:
|
|
70
|
-
|
|
71
|
-
- A path in `destinations` and not in the plan is invisible to `plan-reach`, so the plan gains the line.
|
|
72
|
-
- A path in the plan and not in `destinations` names a file the folder does not carry, so either the folder gains the file or the plan loses the line.
|
|
73
|
-
- A path in either list with no file at that relative path inside the folder is a broken mirror. Report it and stop rather than writing a plan around a hole.
|
|
74
|
-
|
|
75
|
-
Report the sets as equal, or name each path that differs and on which side. Do not report the check as passed without having read both lists.
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Ready reference
|
|
3
|
-
description: Folder layout, ordinal naming, the overview frontmatter, the thin-plan contract, and the archive lifecycle for a finished-file handoff
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Ready reference
|
|
7
|
-
|
|
8
|
-
Applies to a ready folder at `.canon/ready/<nn>-<slug>/`. A warm session that has already written a finished file uses it to hand the exact text to the worker that ships it, since a cold worker reading a plan's description writes the file again from scratch.
|
|
9
|
-
|
|
10
|
-
The folder holds the finished files at their destination paths, so the worker copies rather than authors. It is gitignored, which is why the archive step below is a move rather than a cleanup.
|
|
11
|
-
|
|
12
|
-
- Where a records remote is configured, `canon records push` and `canon records pull` protect it against the machine being lost
|
|
13
|
-
- Where none is, they refuse with `no-remote`
|
|
14
|
-
- Neither protects a folder deleted before anyone has pushed
|
|
15
|
-
|
|
16
|
-
## Contents
|
|
17
|
-
|
|
18
|
-
- [Scope](#scope)
|
|
19
|
-
- [What a working ready folder looks like](#what-a-working-ready-folder-looks-like)
|
|
20
|
-
- [Folder name](#folder-name)
|
|
21
|
-
- [00-overview.md](#00-overviewmd) <!-- canon-allow-reference: a heading anchor, not a pull request number -->
|
|
22
|
-
- [The mirrored tree](#the-mirrored-tree)
|
|
23
|
-
- [The thin-plan contract](#the-thin-plan-contract)
|
|
24
|
-
- [Lifecycle](#lifecycle)
|
|
25
|
-
- [Anti-patterns](#anti-patterns)
|
|
26
|
-
- [Template](#template)
|
|
27
|
-
|
|
28
|
-
## Scope
|
|
29
|
-
|
|
30
|
-
The `plan-ready` skill owns the procedure, and this standard owns the shape. It governs a ready folder under `.canon/ready/<nn>-<slug>/`, being its layout, ordinal naming, the overview's frontmatter, what the mirrored tree holds, the thin-plan contract that ships it, and the lifecycle from the live folder to the archive.
|
|
31
|
-
|
|
32
|
-
Does not govern:
|
|
33
|
-
|
|
34
|
-
- The thin plan itself, its filename, its sections, and its suggested-and-answer contract: `plan.md`
|
|
35
|
-
- The task file that reaches a ready folder through a plan, and the origin line pointing back at it: `tasks.md`
|
|
36
|
-
- Voice, rhythm, and sentence construction: the `write-human` skill
|
|
37
|
-
- Headings, punctuation, word choice, and file references: `markdown.md`
|
|
38
|
-
- Whether a change earns a ready folder over a plan a worker builds from scratch, which belongs to the warm session deciding how to hand off its own work
|
|
39
|
-
|
|
40
|
-
## What a working ready folder looks like
|
|
41
|
-
|
|
42
|
-
A ready folder works when a worker that has never seen the warm session's conversation can copy from it alone:
|
|
43
|
-
|
|
44
|
-
- Which destination path does each file land at, and does the folder hold nothing else?
|
|
45
|
-
- What is the worker still responsible for that the files themselves do not carry, such as a docs sync, a sandbox scenario, or a test?
|
|
46
|
-
- What branch type does the change take?
|
|
47
|
-
- Is every path the folder mirrors also declared in the thin plan's `## Files to touch`?
|
|
48
|
-
|
|
49
|
-
A ready folder failing these is non-conforming even when it satisfies every shape rule below.
|
|
50
|
-
|
|
51
|
-
## Folder name
|
|
52
|
-
|
|
53
|
-
- Name the folder `<nn>-<slug>`, a two-digit zero-padded ordinal followed by a kebab-case slug matching the plan's own slug.
|
|
54
|
-
- The ordinal marks a folder per handoff, opened once by the warm session that writes it
|
|
55
|
-
- It runs on its own sequence, separate from groundwork and intake's shared one, since a ready folder is not a measurement track
|
|
56
|
-
- The first folder opened takes `01`. After that, read the highest existing `.canon/ready/<nn>-*/` folder, including the archive, and take the next integer.
|
|
57
|
-
- Never renumber an existing folder. The ordinal is the order it opened, and the pull request that shipped it cites the folder by that name.
|
|
58
|
-
|
|
59
|
-
## 00-overview.md
|
|
60
|
-
|
|
61
|
-
Every ready folder carries `00-overview.md` at its root, beside the mirrored tree. It orients the worker and states what the files themselves cannot.
|
|
62
|
-
|
|
63
|
-
- `title` (required): the change in sentence case
|
|
64
|
-
- `description` (required): one line naming what the handoff carries
|
|
65
|
-
- `type` (required): the branch type the plan should take, one of the types `branch.md` fixes
|
|
66
|
-
- `destinations` (required): the list of destination paths the folder mirrors, matching the thin plan's `## Files to touch` exactly
|
|
67
|
-
|
|
68
|
-
```yaml
|
|
69
|
-
---
|
|
70
|
-
title: <Change in sentence case>
|
|
71
|
-
description: <one line naming what the handoff carries>
|
|
72
|
-
type: <feat | fix | chore | ...>
|
|
73
|
-
destinations:
|
|
74
|
-
- <path/to/file>
|
|
75
|
-
---
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
Below the frontmatter, state in prose what the worker still owns beyond copying the files: a docs sync, a sandbox scenario update, a test the files do not include, or "nothing further" where the files are the whole of the change.
|
|
79
|
-
|
|
80
|
-
The overview body and the thin plan both hold to the six structure criteria under `### Structure` in `${CLAUDE_SKILL_DIR}/../plan-feature/references/plan.md`. The mirrored files are exempt, since each lands as its destination's own standard fixes.
|
|
81
|
-
|
|
82
|
-
## The mirrored tree
|
|
83
|
-
|
|
84
|
-
Every other file in the folder sits at the same relative path its destination has in the project.
|
|
85
|
-
|
|
86
|
-
- For example, `standards/ready.md` in the destination tree sits at `<nn>-<slug>/standards/ready.md` in the ready folder <!-- canon-allow-reference: a target tree -->
|
|
87
|
-
- Carry no file the destination tree would not carry. The folder is a source for `git mv`-shaped copies, never a scratch pad, and anything else goes in the plan or the pull request body.
|
|
88
|
-
- Write each file exactly as it should land. The worker copies verbatim and edits only what the gate or the overview's list requires, so a placeholder ships as written.
|
|
89
|
-
|
|
90
|
-
## The thin-plan contract
|
|
91
|
-
|
|
92
|
-
- A ready folder ships through an ordinary task row and a plan at `.canon/plans/feature-<slug>.md`, per `plan.md`. No new plan shape exists for it.
|
|
93
|
-
- Name the ready folder in the plan's `## Constraints`, stating that the folder's files are the verbatim source for the paths the plan's `## Files to touch` lists.
|
|
94
|
-
- List every destination path in `## Files to touch`, matching `00-overview.md`'s `destinations` field
|
|
95
|
-
- A path the plan omits is invisible to `plan-reach`'s collision check, so a mismatch between the two lists is a defect in the plan, not a variant
|
|
96
|
-
- Keep the plan thin. Its `## Files to touch` entries may point at the folder's copy for the reason behind each file, since the overview and the files carry that detail.
|
|
97
|
-
|
|
98
|
-
## Lifecycle
|
|
99
|
-
|
|
100
|
-
- Write the ready folder in the same session that writes the files it carries. A folder assembled later from memory is a plan with extra steps, not a handoff.
|
|
101
|
-
- Leave the move to `canon tasks archive`, which carries the folder to `.canon/ready/archive/<nn>-<slug>/` with its plan when the shipping task archives, retargeting its `Ready:` line
|
|
102
|
-
- A plan another live task still cites keeps its folder
|
|
103
|
-
- Never delete a ready folder. The archived copy sits beside the merged pull request as the exact text that shipped, the way an archived plan sits beside the reasoning that produced it.
|
|
104
|
-
|
|
105
|
-
## Anti-patterns
|
|
106
|
-
|
|
107
|
-
- **The folder with an undeclared destination.** A file the plan's `## Files to touch` omits passes the collision check unseen, so a second track can write the same path with neither side finding out.
|
|
108
|
-
- **The rewritten copy.** A worker that reads the folder's files as inspiration and writes its own version loses the exact text the handoff exists to carry.
|
|
109
|
-
- **The folder as scratch.** Notes, alternates, or draft passages left in the folder beside the real files leave the worker guessing which is the source.
|
|
110
|
-
- **The folder left live after shipping.** An unmoved folder reads as unshipped work to the next session listing it. The verb skips one whose task has no `Ready:` line and whose plan cites no folder.
|
|
111
|
-
|
|
112
|
-
## Template
|
|
113
|
-
|
|
114
|
-
```markdown
|
|
115
|
-
.canon/ready/<nn>-<slug>/
|
|
116
|
-
├── 00-overview.md
|
|
117
|
-
└── <path/to/file> # mirrors the destination tree, one entry per file
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
```yaml
|
|
121
|
-
---
|
|
122
|
-
title: <Change in sentence case>
|
|
123
|
-
description: <one line naming what the handoff carries>
|
|
124
|
-
type: <feat | fix | chore | ...>
|
|
125
|
-
destinations:
|
|
126
|
-
- <path/to/file>
|
|
127
|
-
---
|
|
128
|
-
```
|
|
File without changes
|