@erclx/canon 5.18.0 → 5.20.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/create-skill/SKILL.md +1 -0
- package/claude/skills/plan-feature/SKILL.md +1 -1
- package/claude/skills/plan-groundwork/SKILL.md +1 -1
- package/claude/skills/record-screencast/REQUIREMENT.md +2 -1
- package/claude/skills/record-screencast/SKILL.md +2 -2
- package/claude/skills/role-worker/REQUIREMENT.md +3 -1
- package/claude/skills/role-worker/SKILL.md +5 -3
- package/claude/skills/session-resume/SKILL.md +1 -1
- package/claude/skills/task-board/REQUIREMENT.md +1 -0
- package/claude/skills/task-board/SKILL.md +6 -0
- package/claude/skills/task-board/references/decline.md +2 -0
- package/claude/skills/video-craft/REQUIREMENT.md +48 -0
- package/claude/skills/video-craft/SKILL.md +80 -0
- package/claude/skills/video-craft/references/adopted.md +66 -0
- package/docs/agents/canvas.md +4 -0
- package/docs/agents/commands.md +1 -0
- package/docs/agents/demo.md +1 -1
- package/docs/agents/install-and-sync.md +17 -3
- package/docs/agents/rule-citations.md +4 -4
- package/docs/agents/sandbox.md +8 -7
- package/docs/agents/teach.md +7 -1
- package/docs/workflow/operating-model.md +9 -9
- package/docs/workflow/parallel-features.md +1 -1
- package/docs/workflow/skill-map.md +1 -0
- package/governance/renames.toml +24 -0
- package/governance/rules/{canon/640-architecture.md → standards/architecture.md} +3 -2
- package/governance/rules/standards/context.md +15 -0
- package/governance/rules/standards/design.md +13 -0
- package/governance/rules/standards/diagrams.md +17 -0
- package/governance/rules/standards/groundwork.md +13 -0
- package/governance/rules/standards/intake.md +12 -0
- package/governance/rules/standards/markdown.md +15 -0
- package/governance/rules/standards/memory.md +12 -0
- package/governance/rules/standards/mermaid.md +15 -0
- package/governance/rules/{canon/658-plan.md → standards/plan.md} +5 -9
- package/governance/rules/standards/readme.md +12 -0
- package/governance/rules/standards/ready.md +13 -0
- package/governance/rules/standards/requirements.md +13 -0
- package/governance/rules/standards/rule.md +13 -0
- package/governance/rules/standards/session.md +13 -0
- package/governance/rules/{claude/570-skill.md → standards/skill.md} +6 -10
- package/governance/rules/standards/standard.md +13 -0
- package/governance/rules/standards/tasks.md +15 -0
- package/governance/rules/{canon/661-teach.md → standards/teach.md} +3 -2
- package/governance/rules/standards/wiki.md +13 -0
- package/governance/rules/standards/wireframes.md +14 -0
- package/governance/rules/writing/800-prose.md +1 -1
- package/governance/stacks/base.toml +4 -2
- package/package.json +2 -1
- package/src/canvas/capture.ts +228 -15
- package/src/claude/cases/misc.ts +5 -0
- package/src/claude/routing.ts +1 -1
- package/src/commands/canvas.ts +76 -2
- package/src/commands/gov.ts +19 -4
- package/src/commands/sandbox.ts +7 -0
- package/src/commands/slides.ts +73 -4
- package/src/commands/teach.ts +112 -4
- package/src/gate/stages.ts +7 -1
- package/src/gov/citations.ts +1 -1
- package/src/gov/standard-rules.ts +179 -0
- package/src/sandbox/equivalence.ts +43 -14
- package/src/sandbox/stub-remote.ts +140 -0
- package/src/serve/live.ts +113 -0
- package/src/serve/static.ts +60 -2
- package/src/slides/convert/export.ts +323 -0
- package/src/slides/convert/shapes.ts +764 -0
- package/src/slides/convert/svg.ts +38 -0
- package/src/slides/convert/walk.ts +444 -0
- package/src/teach/browser/reload.ts +9 -0
- package/src/teach/nav.ts +7 -6
- package/src/teach/workspace.ts +2 -1
- package/src/teach/write-if-changed.ts +17 -0
- package/standards/architecture.md +5 -0
- package/standards/context.md +6 -0
- package/standards/design.md +3 -0
- package/standards/diagrams.md +8 -0
- package/standards/groundwork-spikes.md +66 -0
- package/standards/groundwork.md +5 -25
- package/standards/index.md +6 -2
- package/standards/intake.md +2 -0
- package/standards/markdown.md +6 -0
- package/standards/memory.md +2 -0
- package/standards/mermaid.md +6 -0
- package/standards/plan-lifecycle.md +36 -0
- package/standards/plan.md +13 -11
- package/standards/readme.md +2 -0
- package/standards/ready.md +4 -0
- package/standards/requirements.md +3 -0
- package/standards/rule.md +6 -1
- package/standards/session.md +4 -0
- package/standards/skill-paths.md +50 -0
- package/standards/skill.md +15 -23
- package/standards/standard.md +7 -1
- package/standards/tasks-decline.md +38 -0
- package/standards/tasks.md +8 -13
- package/standards/teach.md +5 -0
- package/standards/wiki.md +4 -0
- package/standards/wireframes.md +5 -0
- package/governance/rules/canon/610-context.md +0 -17
- package/governance/rules/canon/620-wireframes.md +0 -13
- package/governance/rules/canon/630-requirements.md +0 -12
- package/governance/rules/canon/650-design.md +0 -12
- package/governance/rules/canon/655-tasks.md +0 -13
- package/governance/rules/canon/656-groundwork.md +0 -11
- package/governance/rules/canon/657-intake.md +0 -11
- package/governance/rules/canon/659-memory.md +0 -11
- package/governance/rules/canon/660-diagrams.md +0 -19
- package/governance/rules/canon/662-session.md +0 -15
- package/governance/rules/canon/663-ready.md +0 -15
- package/governance/rules/claude/590-rule-authoring.md +0 -12
- package/governance/rules/writing/801-markdown.md +0 -14
- package/governance/rules/writing/802-mermaid.md +0 -14
- package/governance/rules/writing/880-readme.md +0 -11
- package/governance/rules/writing/891-standard-authoring.md +0 -12
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Groundwork spikes reference
|
|
3
|
+
description: What each spike in a track's 08-spikes.md records, the sample rule, and the three folders that hold what a spike produced
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Groundwork spikes reference
|
|
7
|
+
|
|
8
|
+
Applies to `08-spikes.md` inside a groundwork track at `.canon/groundwork/<nn>-<slug>/`, and to the folders beside it that hold what a spike produced. It records evidence by experiment, beside the evidence by measurement `01-current-state.md` holds.
|
|
9
|
+
|
|
10
|
+
## Scope
|
|
11
|
+
|
|
12
|
+
Governs `08-spikes.md`, what each spike in it carries, how a spike is sized, and the `evidence/`, `scripts/`, and `clones/` folders in a track.
|
|
13
|
+
|
|
14
|
+
Does not govern:
|
|
15
|
+
|
|
16
|
+
- The track's folder layout, its other files, frontmatter, and numbering: `groundwork.md`
|
|
17
|
+
- Running a spike, which belongs to the surface driving the track
|
|
18
|
+
|
|
19
|
+
## What a working spike record looks like
|
|
20
|
+
|
|
21
|
+
A spike record works when a later reader can re-run each spike and trust what it settled:
|
|
22
|
+
|
|
23
|
+
- Which open question did each spike answer, and did it close it?
|
|
24
|
+
- Can the method be re-run from the file, against the fixture it names?
|
|
25
|
+
- What did it cost, and what does the result not prove?
|
|
26
|
+
|
|
27
|
+
## Spikes
|
|
28
|
+
|
|
29
|
+
The file is optional, since measuring what is already there settles most questions.
|
|
30
|
+
|
|
31
|
+
Each spike carries four things:
|
|
32
|
+
|
|
33
|
+
- The open question it answers, named by file and number. A spike attached to no question is a runaway.
|
|
34
|
+
- The method, stated fully enough for a later reader to re-run it. Name the fixture and where it lived, since an arm pointed at a fixture inside the project measured the project, plus the exact command and the repetition count.
|
|
35
|
+
- The result, and which question it closes. Record a spike that settles nothing too, so a later pass does not pay for it twice.
|
|
36
|
+
- The measured cost, even for a single read, and the caveats bounding what the result proves. Cost is a report rather than a limit, and it makes the next spike estimable.
|
|
37
|
+
|
|
38
|
+
Start a spike against a sample bounded on input size, duration, and spend, and scale up only once it shows the method works. Record the sample's bounds beside the figure for the full input.
|
|
39
|
+
|
|
40
|
+
## What a spike produced
|
|
41
|
+
|
|
42
|
+
A file a reader opens to verify how a result was produced or what it showed lives inside the track, and bulk input such as a large fixture stays outside it. Three unnumbered subfolders carry the first kind, since a reader reaches them from the citing claim rather than in read order:
|
|
43
|
+
|
|
44
|
+
- `evidence/`: what a run produced and the record cites, being a recording, a render, or a frame pulled from one, beside the file citing it.
|
|
45
|
+
- `scripts/`: the arm scripts and harnesses a spike ran, which a reader opens to check the method.
|
|
46
|
+
- `clones/`: checkouts and copies of outside material a claim rests on, kept small enough to hold in the folder. A checkout too large to keep is cited by its address and commit instead.
|
|
47
|
+
|
|
48
|
+
Open no other subfolder: `spikes/`, `web/`, and `research/` fold into these three, with a fetched page in `clones/` and a reference-site screenshot in `evidence/`.
|
|
49
|
+
|
|
50
|
+
Reach for a test harness the project already carries before building one. An experiment no existing harness can express is a finding for the folder, not a new abstraction.
|
|
51
|
+
|
|
52
|
+
Never count transcript matches to show a file was read. An instruction naming a path puts it in the transcript whether or not anything opened it, so the check is the tool call.
|
|
53
|
+
|
|
54
|
+
## Template
|
|
55
|
+
|
|
56
|
+
```markdown
|
|
57
|
+
# Spikes
|
|
58
|
+
|
|
59
|
+
## <nn>. <what the spike tests>
|
|
60
|
+
|
|
61
|
+
- Question: <file and number of the open question>
|
|
62
|
+
- Method: <fixture and where it lived, exact command, repetition count>
|
|
63
|
+
- Result: <what it showed, and which question it closes>
|
|
64
|
+
- Cost: <measured cost>, <sample bounds beside the full-input figure>
|
|
65
|
+
- Caveats: <what the result does not prove>
|
|
66
|
+
```
|
package/standards/groundwork.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
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`.'
|
|
4
8
|
---
|
|
5
9
|
|
|
6
10
|
# Groundwork reference
|
|
@@ -15,6 +19,7 @@ Governs a groundwork track under `.canon/groundwork/<nn>-<slug>/`: folder layout
|
|
|
15
19
|
|
|
16
20
|
Does not govern:
|
|
17
21
|
|
|
22
|
+
- `08-spikes.md`, what each spike records, and the folders holding what a spike produced: `groundwork-spikes.md`
|
|
18
23
|
- A dump of many findings filed by domain, each carrying its own verdict: `intake.md`
|
|
19
24
|
- The feature plan a closed track feeds, and the contract its answer slots keep: `plan.md`
|
|
20
25
|
- The task file a closing track writes, and the origin line pointing back at the folder: `tasks.md`
|
|
@@ -110,31 +115,6 @@ The dropped list is what stops a future session re-proposing something already r
|
|
|
110
115
|
|
|
111
116
|
Written to survive a compaction that loses the conversation. It repeats facts held elsewhere in the folder rather than pointing at them. That duplication is correct here and wrong everywhere else.
|
|
112
117
|
|
|
113
|
-
## 08-spikes.md
|
|
114
|
-
|
|
115
|
-
Evidence by experiment, beside the evidence by measurement `01-current-state.md` holds. Optional, since measuring what is already there settles most questions.
|
|
116
|
-
|
|
117
|
-
Each spike carries four things:
|
|
118
|
-
|
|
119
|
-
- The open question it answers, named by file and number. A spike attached to no question is a runaway.
|
|
120
|
-
- The method, stated fully enough for a later reader to re-run it. Name the fixture and where it lived, since an arm pointed at a fixture inside the project measured the project, plus the exact command and the repetition count.
|
|
121
|
-
- The result, and which question it closes. Record a spike that settles nothing too, so a later pass does not pay for it twice.
|
|
122
|
-
- The measured cost, even for a single read, and the caveats bounding what the result proves. Cost is a report rather than a limit, and it makes the next spike estimable.
|
|
123
|
-
|
|
124
|
-
Start a spike against a sample bounded on input size, duration, and spend, and scale up only once it shows the method works. Record the sample's bounds beside the figure for the full input.
|
|
125
|
-
|
|
126
|
-
A file a reader opens to verify how a result was produced or what it showed lives inside the track, and bulk input such as a large fixture stays outside it. Three unnumbered subfolders carry the first kind, since a reader reaches them from the citing claim rather than in read order:
|
|
127
|
-
|
|
128
|
-
- `evidence/`: what a run produced and the record cites, being a recording, a render, or a frame pulled from one, beside the file citing it.
|
|
129
|
-
- `scripts/`: the arm scripts and harnesses a spike ran, which a reader opens to check the method.
|
|
130
|
-
- `clones/`: checkouts and copies of outside material a claim rests on, kept small enough to hold in the folder. A checkout too large to keep is cited by its address and commit instead.
|
|
131
|
-
|
|
132
|
-
Open no other subfolder: `spikes/`, `web/`, and `research/` fold into these three, with a fetched page in `clones/` and a reference-site screenshot in `evidence/`.
|
|
133
|
-
|
|
134
|
-
Reach for a test harness the project already carries before building one. An experiment no existing harness can express is a finding for the folder, not a new abstraction.
|
|
135
|
-
|
|
136
|
-
Never count transcript matches to show a file was read. An instruction naming a path puts it in the transcript whether or not anything opened it, so the check is the tool call.
|
|
137
|
-
|
|
138
118
|
## Open questions
|
|
139
119
|
|
|
140
120
|
Every open question carries a lean, wherever it appears. A bare numbered list hands the reader a quiz and defers the judgment the track exists to inform.
|
package/standards/index.md
CHANGED
|
@@ -17,12 +17,14 @@ Reference docs for consistent authoring across the toolkit and target projects.
|
|
|
17
17
|
- [Docs reference](docs.md): Reader and jurisdiction, frontmatter, page structure, what a page links out to, the diagram permission, and when a category earns a subfolder
|
|
18
18
|
- [Figure reference](figures.md): When a figure earns its place, the render-first policy for a graph-shaped subject, freehand SVG as the escape hatch, and its wrapping, color, and accessibility rules
|
|
19
19
|
- [Glossary reference](glossary.md): Frontmatter, entry shape, ordering, and the rules deciding which terms a glossary carries
|
|
20
|
+
- [Groundwork spikes reference](groundwork-spikes.md): What each spike in a track's 08-spikes.md records, the sample rule, and the three folders that hold what a spike produced
|
|
20
21
|
- [Groundwork reference](groundwork.md): Folder layout, ordinal naming, reserved numbering, frontmatter and dating, required file contents, and conventions for a measurement track
|
|
21
22
|
- [Intake reference](intake.md): Folder layout, ordinal naming, reserved index number, frontmatter and dating, the item template, the answer contract, and retrieval
|
|
22
23
|
- [Markdown reference](markdown.md): Headings, paragraph and list structure, code spans, the date form, punctuation, emphasis, file references, American spelling, and frontmatter wording
|
|
23
24
|
- [Memory reference](memory.md): Filename and type prefix, frontmatter, the body shape per type, links between entries, and the lifecycle from write to retire
|
|
24
25
|
- [Mermaid reference](mermaid.md): Direction and layout, node and edge budgets, accessibility fields, label punctuation, and render verification for a Mermaid diagram
|
|
25
|
-
- [Plan reference](plan.md):
|
|
26
|
+
- [Plan lifecycle reference](plan-lifecycle.md): When a feature plan is written, where it lives, how it changes mid-flight, and its move to the archive
|
|
27
|
+
- [Plan reference](plan.md): Filename and slug, the required sections, and the suggested-and-answer contract for a feature plan
|
|
26
28
|
- [Pull request reference](pr.md): Pull request title and body conventions
|
|
27
29
|
- [Publish reference](publish.md): Scan an author runs against finished text, the cross-reference form each destination takes, and the response to an unreadable source
|
|
28
30
|
- [Readme reference](readme.md): Readme voice, structure, and content conventions
|
|
@@ -30,11 +32,13 @@ Reference docs for consistent authoring across the toolkit and target projects.
|
|
|
30
32
|
- [Requirements reference](requirements.md): Shape and content rules for canon/REQUIREMENTS.md
|
|
31
33
|
- [Governance rule reference](rule.md): Rule frontmatter, body shape, and voice for .claude/rules files
|
|
32
34
|
- [Session map reference](session.md): Filename and location, the sections a handoff carries, the write and read procedures, and how a role extends it
|
|
35
|
+
- [Skill path reference](skill-paths.md): Which root a file a skill body names resolves against, and how a body cites a standard
|
|
33
36
|
- [Practice skill reference](skill-practice.md): Closing sections and source ledger for a skill carrying engineering practice
|
|
34
37
|
- [Skill requirement reference](skill-requirement.md): Shape and content rules for the REQUIREMENT.md beside a skill
|
|
35
|
-
- [Claude skill reference](skill.md):
|
|
38
|
+
- [Claude skill reference](skill.md): Skill structure and authoring rules for Claude Code
|
|
36
39
|
- [Slug reference](slug.md): Transform from a git branch name to a slug, and the three responses to an empty result
|
|
37
40
|
- [Standard reference](standard.md): Shape and content rules for authoring a standard
|
|
41
|
+
- [Task decline reference](tasks-decline.md): Where a task decided against moves, the Declined line it carries, and what happens to its plan and board row
|
|
38
42
|
- [Tasks reference](tasks.md): Folder layout, filename convention, file format, origin lines, and archiving for task files under .canon/tasks/
|
|
39
43
|
- [Teach reference](teach.md): Workspace layout, ordinal naming, frontmatter, and the mission and learning-record formats for a learning workspace
|
|
40
44
|
- [Versioning reference](versioning.md): Phase label vs semver discipline across tasks, PRs, reviews, issues, commits, and tags
|
package/standards/intake.md
CHANGED
package/standards/markdown.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Markdown reference
|
|
3
3
|
description: Headings, paragraph and list structure, code spans, the date form, punctuation, emphasis, file references, American spelling, and frontmatter wording
|
|
4
|
+
paths:
|
|
5
|
+
- '**/*.md'
|
|
6
|
+
rule:
|
|
7
|
+
- 'Read it before a substantial markdown edit. Do not work the banned characters from memory.'
|
|
8
|
+
- 'Run `canon markdown audit <path>` after the edit, and rewrite the sentence carrying a hit rather than swapping the token for a near-synonym.'
|
|
9
|
+
- 'Voice, rhythm, and sentence construction are a separate topic. `800-prose` routes them.'
|
|
4
10
|
---
|
|
5
11
|
|
|
6
12
|
# Markdown reference
|
package/standards/memory.md
CHANGED
package/standards/mermaid.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Mermaid reference
|
|
3
3
|
description: Direction and layout, node and edge budgets, accessibility fields, label punctuation, and render verification for a Mermaid diagram
|
|
4
|
+
paths:
|
|
5
|
+
- '**/*.md'
|
|
6
|
+
rule:
|
|
7
|
+
- 'Apply this rule only when the edit drafts or revises a Mermaid fence. Skip it on a markdown edit carrying no diagram.'
|
|
8
|
+
- 'Read it before drafting the fence. Do not work the layout or the budgets from memory.'
|
|
9
|
+
- 'Which diagram a document carries and what question it answers is a separate topic. The diagrams standard routes it.'
|
|
4
10
|
---
|
|
5
11
|
|
|
6
12
|
# Mermaid reference
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Plan lifecycle reference
|
|
3
|
+
description: When a feature plan is written, where it lives, how it changes mid-flight, and its move to the archive
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Plan lifecycle reference
|
|
7
|
+
|
|
8
|
+
Applies to a feature plan at `.canon/plans/feature-<slug>.md` from the session that writes it to the archive. The folder is gitignored, so nothing but this lifecycle keeps a plan's rejected alternatives readable after the work ships.
|
|
9
|
+
|
|
10
|
+
This standard governs when a plan moves and changes rather than what the file holds, so it carries no template. The plan's own template is in `plan.md`.
|
|
11
|
+
|
|
12
|
+
## Scope
|
|
13
|
+
|
|
14
|
+
Governs when a feature plan is written, where it lives across working trees, how it is amended, and its move to `.canon/plans/archive/`.
|
|
15
|
+
|
|
16
|
+
Does not govern:
|
|
17
|
+
|
|
18
|
+
- The filename, the required sections, and the suggested-and-answer contract: `plan.md`
|
|
19
|
+
- The task file a plan is linked from, and how it is archived: `tasks.md`
|
|
20
|
+
|
|
21
|
+
## What a working lifecycle looks like
|
|
22
|
+
|
|
23
|
+
A plan's lifecycle works when a later reader can still answer, from the file alone:
|
|
24
|
+
|
|
25
|
+
- What did the work set out to do, and which alternative did it reject?
|
|
26
|
+
- Which answer to each question is current, without reconciling two passages?
|
|
27
|
+
|
|
28
|
+
A plan lost to deletion, or carrying two answers to one question, fails both.
|
|
29
|
+
|
|
30
|
+
## Lifecycle
|
|
31
|
+
|
|
32
|
+
- Write the plan before implementation starts, and treat it as the scope of the run that executes it. A subject that has to be measured before anyone can plan against it takes a measurement track first.
|
|
33
|
+
- Keep every plan at one root. A plan copied into each parallel working tree forks, and the copies answer the same question differently.
|
|
34
|
+
- Amend the plan in place when a decision changes mid-flight. Do not append a second passage narrating the change, which leaves a reader to work out which of two answers is current. An execution-time deviation from a suggestion is one such amendment, and the suggested-and-answer contract in `plan.md` fixes which line takes it.
|
|
35
|
+
- Move the plan to `.canon/plans/archive/` when the work it describes ships or is declined. Never delete it, because the plan is where the rejected alternative is written down. A flat `.claude/plans-archive/` sibling is the older layout.
|
|
36
|
+
- Write the plan in the same session that opens the task it serves. The session executing it later inherits reasoning it would otherwise re-derive.
|
package/standards/plan.md
CHANGED
|
@@ -1,20 +1,30 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Plan reference
|
|
3
|
-
description: Filename and slug, required sections, the suggested-and-answer contract
|
|
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
|
+
- 'Move a shipped plan to `.canon/plans/archive/`. Never delete one.'
|
|
11
|
+
- 'Amend a plan in place when a decision changes. Do not append a second passage narrating the change.'
|
|
12
|
+
- '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`.'
|
|
4
13
|
---
|
|
5
14
|
|
|
6
15
|
# Plan reference
|
|
7
16
|
|
|
8
17
|
Applies to a feature plan at `.canon/plans/feature-<slug>.md`. One file holds one concern, written before implementation starts and read by whatever executes it, so it has to carry the scope without the conversation that produced it.
|
|
9
18
|
|
|
10
|
-
The folder is gitignored, and backed by `canon records push` wherever a records remote is configured. Nothing backs a plan deleted before a push, which is why the archive step
|
|
19
|
+
The folder is gitignored, and backed by `canon records push` wherever a records remote is configured. Nothing backs a plan deleted before a push, which is why the archive step is a move rather than a cleanup.
|
|
11
20
|
|
|
12
21
|
## Scope
|
|
13
22
|
|
|
14
|
-
Governs a feature plan under `.canon/plans/feature-<slug>.md`: the filename, the required sections, what each holds, the suggested-and-answer contract
|
|
23
|
+
Governs a feature plan under `.canon/plans/feature-<slug>.md`: the filename, the required sections, what each holds, and the suggested-and-answer contract.
|
|
15
24
|
|
|
16
25
|
Does not govern:
|
|
17
26
|
|
|
27
|
+
- When a plan is written, how it is amended, and its move to the archive: `plan-lifecycle.md`
|
|
18
28
|
- One question measured in depth before anyone can plan against it: `groundwork.md`
|
|
19
29
|
- A dump of many findings filed by domain, each carrying its own verdict: `intake.md`
|
|
20
30
|
- The task file a plan is linked from, and the origin line pointing back at it: `tasks.md`
|
|
@@ -135,14 +145,6 @@ The plan is archived at ship, so the same deviation takes one line in the open t
|
|
|
135
145
|
|
|
136
146
|
This contract inverts the one an intake folder keeps, where an empty slot means unread and acceptance is typed out. A plan is written and read in one sitting with every question already surfaced, so silence is a usable default here and is not one there.
|
|
137
147
|
|
|
138
|
-
## Lifecycle
|
|
139
|
-
|
|
140
|
-
- Write the plan before implementation starts, and treat it as the scope of the run that executes it. A subject that has to be measured before anyone can plan against it takes a measurement track first.
|
|
141
|
-
- Keep every plan at one root. A plan copied into each parallel working tree forks, and the copies answer the same question differently.
|
|
142
|
-
- Amend the plan in place when a decision changes mid-flight. Do not append a second passage narrating the change, which leaves a reader to work out which of two answers is current. An execution-time deviation from a suggestion is one such amendment, and the contract above fixes which line takes it.
|
|
143
|
-
- Move the plan to `.canon/plans/archive/` when the work it describes ships or is declined. Never delete it, because the plan is where the rejected alternative is written down. A flat `.claude/plans-archive/` sibling is the older layout.
|
|
144
|
-
- Write the plan in the same session that opens the task it serves. The session executing it later inherits reasoning it would otherwise re-derive.
|
|
145
|
-
|
|
146
148
|
## Template
|
|
147
149
|
|
|
148
150
|
```markdown
|
package/standards/readme.md
CHANGED
package/standards/ready.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Ready reference
|
|
3
3
|
description: Folder layout, ordinal naming, the overview frontmatter, the thin-plan contract, and the archive lifecycle for a finished-file handoff
|
|
4
|
+
paths:
|
|
5
|
+
- '.canon/ready/**'
|
|
6
|
+
rule:
|
|
7
|
+
- 'Load the `canon:draft-ready` skill to write a ready folder, its overview, the thin plan, and the task row. It owns the procedure. Report it rather than proceeding silently when it does not resolve, since it ships with the plugin and this rule ships with the CLI.'
|
|
4
8
|
---
|
|
5
9
|
|
|
6
10
|
# Ready reference
|
package/standards/rule.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Governance rule reference
|
|
3
3
|
description: Rule frontmatter, body shape, and voice for .claude/rules files
|
|
4
|
+
paths:
|
|
5
|
+
- '.claude/rules/**/*.md'
|
|
6
|
+
rule:
|
|
7
|
+
- 'Read it before writing or editing a rule. Do not work the shape from memory.'
|
|
4
8
|
---
|
|
5
9
|
|
|
6
10
|
# Governance rule reference
|
|
@@ -36,7 +40,8 @@ Write both when both apply. A rule stating the directive and a skill stating how
|
|
|
36
40
|
- `<n>` is a number from the band reserved for the rule's source and `<slug>` is a one-to-three-word kebab topic
|
|
37
41
|
- A rule the project authored itself lives at `.claude/rules/project/<subdirectory>/<n>-<slug>.md`, a sibling of `canon/` rather than nested inside it, keeping the same subdirectory names
|
|
38
42
|
- This repository's own toolkit-only rules, which never ship to a target, live at `.claude/rules/internal/<subdirectory>/<n>-<slug>.md`, a second sibling of `canon/`. See "Two sources numbering into one folder" below.
|
|
39
|
-
- Give every rule a numeric prefix. A bare-word filename reads as a folder name where a stack names its rules, so a rule without one is unreachable from a stack entry.
|
|
43
|
+
- Give every authored rule a numeric prefix. A bare-word filename reads as a folder name where a stack names its rules, so a rule without one is unreachable from a stack entry.
|
|
44
|
+
- A rule that only routes a path to a standard is generated, not authored. It lives at `governance/rules/standards/<standard>.md` under the standard's name, carries no number, and installs to `.claude/rules/canon/standards/`. Never hand-edit one. Change its globs and bullets in the standard's `paths` and `rule` frontmatter, and `canon gov regen` rewrites it. The generator refuses a standard named like a band folder, which keeps the bare-word name reachable.
|
|
40
45
|
|
|
41
46
|
## Reserved numbers
|
|
42
47
|
|
package/standards/session.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Session map reference
|
|
3
3
|
description: Filename and location, the sections a handoff carries, the write and read procedures, and how a role extends it
|
|
4
|
+
paths:
|
|
5
|
+
- '.canon/tasks/session-*.md'
|
|
6
|
+
rule:
|
|
7
|
+
- 'Follow this rule rather than the tasks rule for a `session-` file. A handoff is not a task and carries neither `## Outcomes` nor `## Findings`.'
|
|
4
8
|
---
|
|
5
9
|
|
|
6
10
|
# Session map reference
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Skill path reference
|
|
3
|
+
description: Which root a file a skill body names resolves against, and how a body cites a standard
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill path reference
|
|
7
|
+
|
|
8
|
+
Applies to every path a skill body names, under `skills/<name>/`. A skill reads from two roots, so the path it writes decides whether the file is found once the skill runs from another project.
|
|
9
|
+
|
|
10
|
+
This is an attribute standard. It governs the path strings a body carries rather than a file of its own, so it carries no template.
|
|
11
|
+
|
|
12
|
+
## Scope
|
|
13
|
+
|
|
14
|
+
Governs how a `SKILL.md` body or a file under its `references/` names a bundled asset, an installed shared doc, or a standard.
|
|
15
|
+
|
|
16
|
+
Does not govern:
|
|
17
|
+
|
|
18
|
+
- The skill folder, its frontmatter, the body rules, and the choice between skill types: `skill.md`
|
|
19
|
+
- Punctuation, formatting, and word choice: `markdown.md`
|
|
20
|
+
|
|
21
|
+
## What a working path looks like
|
|
22
|
+
|
|
23
|
+
A path in a skill body works when the skill resolves it from any project it runs in:
|
|
24
|
+
|
|
25
|
+
- Does each bundled asset resolve against the skill's own directory rather than the session's working directory?
|
|
26
|
+
- Does each cited standard resolve in a target that installed nothing but the plugin?
|
|
27
|
+
- Does a procedure two skills share live in one place, with each body citing it?
|
|
28
|
+
|
|
29
|
+
A body failing any of these is non-conforming even when every path resolves in this repository.
|
|
30
|
+
|
|
31
|
+
## Path resolution
|
|
32
|
+
|
|
33
|
+
Know which root a file lives under before referencing it.
|
|
34
|
+
|
|
35
|
+
- Bundled skill assets (`references/`, `scripts/`, `assets/`) resolve against the skill's own directory. Reference them with `${CLAUDE_SKILL_DIR}/<path>`, never a bare relative path, which resolves against the session cwd and fails when a plugin skill runs from another project.
|
|
36
|
+
- Installed shared docs (`.claude/rules/`, `canon/context/`) resolve against the target project cwd, where install placed them. Reference them by that path.
|
|
37
|
+
- Do not hand-copy a standard into a skill. If a skill must carry its own copy, generate it from the single source and reference it through `${CLAUDE_SKILL_DIR}`, so one owner keeps every copy in sync.
|
|
38
|
+
|
|
39
|
+
## Citing a standard
|
|
40
|
+
|
|
41
|
+
No standard installs into a project, so a body cites one place rather than choosing between two.
|
|
42
|
+
|
|
43
|
+
- Cite `${CLAUDE_SKILL_DIR}/../../standards/X.md`. The plugin ships the whole standards folder beside `skills/`, so the path resolves in every install.
|
|
44
|
+
- Never cite `.claude/standards/X.md` from a shipped body. A target holds no such folder. <!-- audit-ignore-citations: .claude/standards/X.md -->
|
|
45
|
+
- Name `canon standards X` instead where the body wants the document rather than a path to open, such as a value it captures or reports. That verb resolves `standards/` at the project root and then the corpus inside the package.
|
|
46
|
+
- State the path once per body, at the site that reads the standard. A later mention of a standard the body already read stays bare, since repeating the path at every mention is noise rather than instruction.
|
|
47
|
+
- A guard on a standard's presence names the file rather than the folder holding it, since a folder test answers for a sibling that happens to be there.
|
|
48
|
+
- Use `${CLAUDE_SKILL_DIR}`, never a bare `../../` and never `${CLAUDE_PLUGIN_ROOT}`, since only the first expands before the body reaches the model.
|
|
49
|
+
- Cite a shared procedure, never restate it. A procedure two or more skills execute gets one definition in a standard and a citation in each body.
|
|
50
|
+
- Keep the trigger in the body and the procedure in the standard. The citing skill states when the procedure runs and what it runs against, since that varies per skill and the standard cannot know it.
|
package/standards/skill.md
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Claude skill reference
|
|
3
|
-
description:
|
|
3
|
+
description: Skill structure and authoring rules for Claude Code
|
|
4
|
+
paths:
|
|
5
|
+
- '.claude/skills/**/SKILL.md'
|
|
6
|
+
- 'claude/skills/**/SKILL.md'
|
|
7
|
+
- '.claude/skills/**/REQUIREMENT.md'
|
|
8
|
+
- 'claude/skills/**/REQUIREMENT.md'
|
|
9
|
+
rule:
|
|
10
|
+
- "Confirm `canon:create-skill`'s two creation-time questions are answered before a new `SKILL.md` lands, whether drafted by hand, by another skill, or by `canon:create-skill` itself. Carry the third question into the sibling `REQUIREMENT.md`'s `Must not` section as a review criterion rather than a gate."
|
|
11
|
+
- 'Report it rather than proceeding silently when `canon:create-skill` does not resolve. It ships with the plugin and this rule ships with the CLI, so a project that installed governance alone does not have it.'
|
|
12
|
+
- 'Re-read a skill body this session edited before invoking that skill again in the same session'
|
|
13
|
+
- 'Do not read a resolved file path in a held body as evidence the body is current'
|
|
14
|
+
- 'Follow the skill requirement standard for the shape a `REQUIREMENT.md` states. Read it with `canon standards skill-requirement`.'
|
|
15
|
+
- 'Follow the skill path standard for which root a path in a body resolves against and how a body cites a standard. Read it with `canon standards skill-paths`.'
|
|
4
16
|
---
|
|
5
17
|
|
|
6
18
|
# Claude skill reference
|
|
@@ -17,11 +29,12 @@ Does not govern:
|
|
|
17
29
|
|
|
18
30
|
- What a `REQUIREMENT.md` must answer, its sections, and its template: `skill-requirement.md`
|
|
19
31
|
- A practice skill's closing sections and ledger: `skill-practice.md`
|
|
32
|
+
- Which root a path in a body resolves against, and how a body cites a standard: `skill-paths.md`
|
|
20
33
|
- Path-scoped coding rules, which load on a file match rather than on a request match: `rule.md`
|
|
21
34
|
- Voice, rhythm, and sentence construction in a skill body: the `write-human` skill
|
|
22
35
|
- Punctuation, formatting, and word choice in a skill body: `markdown.md`
|
|
23
36
|
- The transform from a branch name to a slug a skill carries in a filename: `slug.md`
|
|
24
|
-
- Whether a new skill earns its place: the three-question test in the `create-skill` skill and the
|
|
37
|
+
- Whether a new skill earns its place: the three-question test in the `create-skill` skill and the creation-time bullet in this standard's own `rule` frontmatter
|
|
25
38
|
|
|
26
39
|
## Changing a skill
|
|
27
40
|
|
|
@@ -146,27 +159,6 @@ allowed-tools: <tools required>
|
|
|
146
159
|
- Use `#!/usr/bin/env bash` shebang
|
|
147
160
|
- Always include `2>/dev/null || echo "FALLBACK"` guards on git and shell commands
|
|
148
161
|
|
|
149
|
-
## Path resolution
|
|
150
|
-
|
|
151
|
-
A skill reads from two roots, so know which one a file lives under before referencing it.
|
|
152
|
-
|
|
153
|
-
- Bundled skill assets (`references/`, `scripts/`, `assets/`) resolve against the skill's own directory. Reference them with `${CLAUDE_SKILL_DIR}/<path>`, never a bare relative path, which resolves against the session cwd and fails when a plugin skill runs from another project.
|
|
154
|
-
- Installed shared docs (`.claude/rules/`, `canon/context/`) resolve against the target project cwd, where install placed them. Reference them by that path.
|
|
155
|
-
- Do not hand-copy a standard into a skill. If a skill must carry its own copy, generate it from the single source and reference it through `${CLAUDE_SKILL_DIR}`, so one owner keeps every copy in sync.
|
|
156
|
-
|
|
157
|
-
### Citing a standard
|
|
158
|
-
|
|
159
|
-
No standard installs into a project, so a body cites one place rather than choosing between two.
|
|
160
|
-
|
|
161
|
-
- Cite `${CLAUDE_SKILL_DIR}/../../standards/X.md`. The plugin ships the whole standards folder beside `skills/`, so the path resolves in every install.
|
|
162
|
-
- Never cite `.claude/standards/X.md` from a shipped body. A target holds no such folder. <!-- audit-ignore-citations: .claude/standards/X.md -->
|
|
163
|
-
- Name `canon standards X` instead where the body wants the document rather than a path to open, such as a value it captures or reports. That verb resolves `standards/` at the project root and then the corpus inside the package.
|
|
164
|
-
- State the path once per body, at the site that reads the standard. A later mention of a standard the body already read stays bare, since repeating the path at every mention is noise rather than instruction.
|
|
165
|
-
- A guard on a standard's presence names the file rather than the folder holding it, since a folder test answers for a sibling that happens to be there.
|
|
166
|
-
- Use `${CLAUDE_SKILL_DIR}`, never a bare `../../` and never `${CLAUDE_PLUGIN_ROOT}`, since only the first expands before the body reaches the model.
|
|
167
|
-
- Cite a shared procedure, never restate it. A procedure two or more skills execute gets one definition in a standard and a citation in each body.
|
|
168
|
-
- Keep the trigger in the body and the procedure in the standard. The citing skill states when the procedure runs and what it runs against, since that varies per skill and the standard cannot know it.
|
|
169
|
-
|
|
170
162
|
## Invocation
|
|
171
163
|
|
|
172
164
|
- Invoke a plugin skill by its namespaced name, `/<plugin>:<skill-name>`.
|
package/standards/standard.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Standard reference
|
|
3
3
|
description: Shape and content rules for authoring a standard
|
|
4
|
+
paths:
|
|
5
|
+
- 'standards/**/*.md'
|
|
6
|
+
rule:
|
|
7
|
+
- 'Read it before writing or editing a standard. Do not work the shape from memory.'
|
|
4
8
|
---
|
|
5
9
|
|
|
6
10
|
# Standard reference
|
|
@@ -64,7 +68,9 @@ A standard failing these questions is non-conforming even when it satisfies ever
|
|
|
64
68
|
|
|
65
69
|
- Start the file with a frontmatter block carrying at least `title` and `description`. A consuming surface may require more.
|
|
66
70
|
- `title`: names the doc type in sentence case, suffixed `reference` (`Commit reference`, `Branch reference`)
|
|
67
|
-
- `description`: one line naming what the standard covers. It becomes the index link label on install.
|
|
71
|
+
- `description`: one line naming what the standard covers. It becomes the index link label on install, and the generated rule's description and pointer bullet.
|
|
72
|
+
- `paths` (optional): the globs where the standard applies, one per entry, copied verbatim into the rule `canon gov regen` generates for it. Omit it when no path should route to the standard, and no rule is generated.
|
|
73
|
+
- `rule` (optional): operative bullets the generated rule carries after its pointer bullet, one per entry, each a full sentence. Quote an entry holding a backtick, a colon, or a leading `-`.
|
|
68
74
|
|
|
69
75
|
## Structure
|
|
70
76
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Task decline reference
|
|
3
|
+
description: Where a task decided against moves, the Declined line it carries, and what happens to its plan and board row
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Task decline reference
|
|
7
|
+
|
|
8
|
+
Applies to a task under `.canon/tasks/` that somebody decided against doing. `canon tasks decline` performs the move, and this file fixes what the move leaves behind.
|
|
9
|
+
|
|
10
|
+
This is an attribute standard. It governs one origin line and one folder move rather than a file of its own, so it carries no template.
|
|
11
|
+
|
|
12
|
+
## Scope
|
|
13
|
+
|
|
14
|
+
Governs the `.canon/tasks/declined/` folder, the `Declined:` line, and what declining does to the task's plan and board row.
|
|
15
|
+
|
|
16
|
+
Does not govern:
|
|
17
|
+
|
|
18
|
+
- The task file's layout, filename, format, other origin lines, and archiving: `tasks.md`
|
|
19
|
+
- The board rows the move clears: `board.md`
|
|
20
|
+
|
|
21
|
+
## What a working decline looks like
|
|
22
|
+
|
|
23
|
+
A declined task works when a later reader can tell, from the folder and the file alone:
|
|
24
|
+
|
|
25
|
+
- Was the work decided against, rather than shipped or merely unscheduled?
|
|
26
|
+
- Who decided, when, and why?
|
|
27
|
+
|
|
28
|
+
## Declining
|
|
29
|
+
|
|
30
|
+
A task decided against moves to `.canon/tasks/declined/` rather than `.canon/tasks/archive/`. The two folders answer different questions: archive means the work shipped, declined means somebody decided against doing it. Neither reading fits a task that is merely unscheduled, which stays on `backlog.md` rather than moving anywhere, since nobody has decided against it and it may still rise when the board has room.
|
|
31
|
+
|
|
32
|
+
`canon tasks decline` carries no outcome-state gate, so a task can be decided against at any outcome state, open outcomes included.
|
|
33
|
+
|
|
34
|
+
The decision is recorded on the task itself with a `Declined:` line, in the `Plan:`/`Pull request:` family: `Declined: <reason>, <who> on <YYYY-MM-DD>`. It anchors the same way `Pull request:` does, after the last origin line the task carries. The line is free prose after the colon, since it names no file to link.
|
|
35
|
+
|
|
36
|
+
Declining a task moves its plan alongside it the same way archiving does, when the declining task is that plan's last live citation. A plan several tasks share stays where it is, and a declined task's plan lands in `.canon/plans/archive/` indistinguishable from a shipped one by folder alone. The task file under `.canon/tasks/declined/` is what records which it was.
|
|
37
|
+
|
|
38
|
+
The move clears whichever of `priority.md` or `backlog.md` holds the task's row.
|
package/standards/tasks.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Tasks reference
|
|
3
3
|
description: Folder layout, filename convention, file format, origin lines, and archiving for task files under .canon/tasks/
|
|
4
|
+
paths:
|
|
5
|
+
- '.canon/tasks/**'
|
|
6
|
+
rule:
|
|
7
|
+
- 'Follow the board standard for `priority.md` and `backlog.md`, their readiness groups, and row order. Read it with `canon standards board`.'
|
|
8
|
+
- 'Never hand-edit `.canon/tasks/index.md`. A hook regenerates it from sibling frontmatter.'
|
|
9
|
+
- 'Follow the task decline standard for a task decided against. Read it with `canon standards tasks-decline`.'
|
|
4
10
|
---
|
|
5
11
|
|
|
6
12
|
# Tasks reference
|
|
@@ -13,10 +19,11 @@ The folder is gitignored. Board state changes when work ships rather than when a
|
|
|
13
19
|
|
|
14
20
|
## Scope
|
|
15
21
|
|
|
16
|
-
Governs the task files under `.canon/tasks/`: folder layout, filenames, frontmatter, file format, origin lines,
|
|
22
|
+
Governs the task files under `.canon/tasks/`: folder layout, filenames, frontmatter, file format, origin lines, and archiving.
|
|
17
23
|
|
|
18
24
|
Does not govern:
|
|
19
25
|
|
|
26
|
+
- The declined folder, the `Declined:` line, and what declining does to a plan and a board row: `tasks-decline.md`
|
|
20
27
|
- Execution order, readiness groups, the backlog, and the generated index beside the tasks: `board.md`
|
|
21
28
|
- The plan file a task cites, its sections, and its answer contract: `plan.md`
|
|
22
29
|
- Phase-label format and which surfaces a label may appear on: `versioning.md`
|
|
@@ -161,15 +168,3 @@ The archive nests inside `.canon/tasks/` rather than sitting beside it as a flat
|
|
|
161
168
|
Archiving a task archives its plan alongside it, when the closing task is that plan's last live citation. The archived task's `Plan:` line is retargeted at `../../plans/archive/feature-<slug>.md`. The ready folder its `Ready:` line names moves with the plan to `.canon/ready/archive/<nn>-<slug>/`, and both pointers to it are retargeted. A plan several tasks share stays live with its ready folder, and the task archives anyway.
|
|
162
169
|
|
|
163
170
|
A task with an open outcome stays on the board, and so does its plan. Close it, or cut it from the task when the work is being abandoned, so what was dropped is recorded rather than inferred from an archived file. Cutting means striking the outcome's body: `- ~~<outcome>~~ <why>`. A struck body reads as cut whatever its checkbox holds, so a task carrying only cut outcomes still archives.
|
|
164
|
-
|
|
165
|
-
## Declining
|
|
166
|
-
|
|
167
|
-
A task decided against moves to `.canon/tasks/declined/` rather than `.canon/tasks/archive/`. The two folders answer different questions: archive means the work shipped, declined means somebody decided against doing it. Neither reading fits a task that is merely unscheduled, which stays on `backlog.md` rather than moving anywhere, since nobody has decided against it and it may still rise when the board has room.
|
|
168
|
-
|
|
169
|
-
`canon tasks decline` carries no outcome-state gate, so a task can be decided against at any outcome state, open outcomes included.
|
|
170
|
-
|
|
171
|
-
The decision is recorded on the task itself with a `Declined:` line, in the `Plan:`/`Pull request:` family: `Declined: <reason>, <who> on <YYYY-MM-DD>`. It anchors the same way `Pull request:` does, after the last origin line the task carries. The line is free prose after the colon, since it names no file to link.
|
|
172
|
-
|
|
173
|
-
Declining a task moves its plan alongside it the same way archiving does, when the declining task is that plan's last live citation. A plan several tasks share stays where it is, and a declined task's plan lands in `.canon/plans/archive/` indistinguishable from a shipped one by folder alone. The task file under `.canon/tasks/declined/` is what records which it was.
|
|
174
|
-
|
|
175
|
-
The move clears whichever of `priority.md` or `backlog.md` holds the task's row.
|
package/standards/teach.md
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Teach reference
|
|
3
3
|
description: Workspace layout, ordinal naming, frontmatter, and the mission and learning-record formats for a learning workspace
|
|
4
|
+
paths:
|
|
5
|
+
- '.canon/teach/**'
|
|
6
|
+
rule:
|
|
7
|
+
- 'Follow the glossary standard for the glossary every workspace carries at its root. It is the single source for the entry shape, the ordering, and which terms the file carries. Read it with `canon standards glossary`.'
|
|
8
|
+
- 'Report it rather than proceeding silently when that file does not resolve. It ships with the plugin and this rule ships with the CLI, so a project that installed governance alone does not have it.'
|
|
4
9
|
---
|
|
5
10
|
|
|
6
11
|
# Teach reference
|
package/standards/wiki.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Wiki reference
|
|
3
3
|
description: Folder split, frontmatter, naming convention, and sourcing for a wiki reference page
|
|
4
|
+
paths:
|
|
5
|
+
- 'wiki/**/*.md'
|
|
6
|
+
rule:
|
|
7
|
+
- 'Read it before drafting a page. Do not work the placement criterion or the naming convention from memory.'
|
|
4
8
|
---
|
|
5
9
|
|
|
6
10
|
# Wiki reference
|
package/standards/wireframes.md
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Wireframe reference
|
|
3
3
|
description: Shape and content rules for canon/wireframes/<surface>.md files
|
|
4
|
+
paths:
|
|
5
|
+
- 'canon/wireframes/**'
|
|
6
|
+
- '.claude/wireframes/**'
|
|
7
|
+
rule:
|
|
8
|
+
- 'Read it before adding or revising a surface.'
|
|
4
9
|
---
|
|
5
10
|
|
|
6
11
|
# Wireframe reference
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Route canon/context edits to the context-entry standard and the consult-first workflow
|
|
3
|
-
paths:
|
|
4
|
-
- 'canon/context/**'
|
|
5
|
-
- '.claude/context/**'
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Context entry standards
|
|
9
|
-
|
|
10
|
-
## Before editing
|
|
11
|
-
|
|
12
|
-
- Before non-trivial work in a domain, read its `canon/context/<domain>.md` entry. Use `canon/context/index.md` to find it.
|
|
13
|
-
- Leave the entry conforming when work in its domain changes what it describes.
|
|
14
|
-
|
|
15
|
-
## Authority
|
|
16
|
-
|
|
17
|
-
- Follow the context standard for entry shape: frontmatter, sections, length, and what goes in. It is the single source. Read it with `canon standards context`.
|