@erclx/canon 5.51.0 → 5.53.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 +20 -0
- package/README.md +1 -4
- package/claude/.claude-plugin/plugin.json +1 -1
- package/claude/skills/canon-cli/SKILL.md +0 -3
- package/claude/skills/context-fold/REQUIREMENT.md +0 -1
- package/claude/skills/design-taste/references/kinds.md +0 -1
- package/claude/skills/draw-figure/REQUIREMENT.md +2 -3
- package/claude/skills/draw-figure/SKILL.md +4 -5
- package/claude/skills/draw-figure/references/figures.md +0 -1
- package/claude/skills/draw-figure/references/hand-drawn.md +1 -1
- package/claude/skills/git-pr/references/pr.md +1 -1
- package/claude/skills/pick-by-eye/REQUIREMENT.md +0 -1
- package/claude/skills/pick-by-eye/SKILL.md +1 -1
- package/claude/skills/review-address/SKILL.md +1 -1
- package/claude/skills/review-address/references/post-review-findings.md +1 -1
- package/claude/skills/review-pr/references/post.md +2 -2
- package/claude/skills/target-check/SKILL.md +2 -0
- package/claude/skills/target-setup/SKILL.md +1 -1
- package/claude/skills/target-update/REQUIREMENT.md +33 -0
- package/claude/skills/target-update/SKILL.md +136 -0
- package/claude/skills/teach-craft/REQUIREMENT.md +30 -0
- package/claude/skills/teach-craft/SKILL.md +39 -0
- package/claude/skills/teach-craft/references/lesson-craft.md +52 -0
- package/claude/skills/{teach-workspace → teach-craft}/references/pedagogy.md +12 -4
- package/docs/agents/audits.md +0 -1
- package/docs/agents/migrate.md +2 -1
- package/docs/target/migrations.md +12 -1
- package/docs/target/projects.md +1 -1
- package/docs/target/sync.md +1 -1
- package/docs/workflow/parallel-features.md +1 -1
- package/docs/workflow/skill-map-on-request.md +10 -22
- package/docs/workflow/skill-map.md +13 -14
- package/package.json +1 -4
- package/scripts/core/regen-web-previews.ts +2 -67
- package/src/audits/catalog.ts +0 -1
- package/src/browser/engine.ts +3 -6
- package/src/capture/render.ts +1 -1
- package/src/claude/cases/authoring.ts +0 -12
- package/src/claude/cases/misc.ts +0 -17
- package/src/claude/cases/setup.ts +7 -0
- package/src/claude/cases/workflow.ts +2 -38
- package/src/claude/skills-audit.ts +0 -1
- package/src/cli/help.ts +0 -7
- package/src/cli.ts +0 -6
- package/src/commands/labels.ts +9 -7
- package/src/commands/records.ts +0 -1
- package/src/commands/serve.ts +2 -2
- package/src/design/components.ts +8 -1514
- package/src/design/css.ts +5 -6
- package/src/design/fonts.ts +3 -5
- package/src/driver/drive.ts +3 -4
- package/src/driver/steps.ts +2 -5
- package/src/inventory/walk.ts +1 -1
- package/src/markdown/scope.ts +4 -31
- package/src/migrate/status.ts +5 -1
- package/src/records/validate.ts +4 -176
- package/src/sandbox/equivalence.ts +0 -5
- package/tooling/claude/seeds/.claude/hooks/review-post-scan.sh +1 -1
- package/claude/skills/draft-and-pick/REQUIREMENT.md +0 -26
- package/claude/skills/draft-and-pick/SKILL.md +0 -11
- package/claude/skills/draft-doc/REQUIREMENT.md +0 -26
- package/claude/skills/draft-doc/SKILL.md +0 -11
- package/claude/skills/draft-figure/REQUIREMENT.md +0 -26
- package/claude/skills/draft-figure/SKILL.md +0 -11
- package/claude/skills/draft-identity/REQUIREMENT.md +0 -26
- package/claude/skills/draft-identity/SKILL.md +0 -11
- package/claude/skills/draft-ready/REQUIREMENT.md +0 -26
- package/claude/skills/draft-ready/SKILL.md +0 -11
- package/claude/skills/draft-screencast/REQUIREMENT.md +0 -26
- package/claude/skills/draft-screencast/SKILL.md +0 -11
- package/claude/skills/draft-slides/REQUIREMENT.md +0 -26
- package/claude/skills/draft-slides/SKILL.md +0 -11
- package/claude/skills/make-deck/REQUIREMENT.md +0 -36
- package/claude/skills/make-deck/SKILL.md +0 -80
- package/claude/skills/make-deck/references/deck.md +0 -183
- package/claude/skills/read-frames/REQUIREMENT.md +0 -30
- package/claude/skills/read-frames/SKILL.md +0 -55
- package/claude/skills/record-screencast/REQUIREMENT.md +0 -35
- package/claude/skills/record-screencast/SKILL.md +0 -99
- package/claude/skills/script-screencast/REQUIREMENT.md +0 -34
- package/claude/skills/script-screencast/SKILL.md +0 -70
- package/claude/skills/script-screencast/references/beats-template.md +0 -119
- package/claude/skills/teach-workspace/REQUIREMENT.md +0 -34
- package/claude/skills/teach-workspace/SKILL.md +0 -196
- package/claude/skills/teach-workspace/references/glossary.md +0 -90
- package/claude/skills/teach-workspace/references/lesson-build.md +0 -106
- package/claude/skills/teach-workspace/references/lesson-craft.md +0 -135
- package/claude/skills/teach-workspace/references/promotion-fold.md +0 -35
- package/claude/skills/teach-workspace/references/promotion.md +0 -116
- package/claude/skills/teach-workspace/references/revisit.md +0 -28
- package/claude/skills/teach-workspace/references/teach.md +0 -211
- package/claude/skills/video-craft/REQUIREMENT.md +0 -35
- package/claude/skills/video-craft/SKILL.md +0 -96
- package/claude/skills/video-craft/references/adopted.md +0 -110
- package/src/commands/demo.ts +0 -542
- package/src/commands/slides.ts +0 -184
- package/src/commands/teach.ts +0 -1401
- package/src/demo/beats.ts +0 -135
- package/src/demo/compile.ts +0 -350
- package/src/demo/container.ts +0 -219
- package/src/demo/cursors.ts +0 -55
- package/src/demo/drive.ts +0 -442
- package/src/demo/pointer.ts +0 -178
- package/src/demo/theme.ts +0 -112
- package/src/demo/timeline.ts +0 -64
- package/src/slides/convert/chart.ts +0 -165
- package/src/slides/convert/deck.ts +0 -244
- package/src/slides/convert/export.ts +0 -567
- package/src/slides/convert/master.ts +0 -198
- package/src/slides/convert/shapes.ts +0 -804
- package/src/slides/convert/svg.ts +0 -38
- package/src/slides/convert/walk.ts +0 -671
- package/src/slides/decks.ts +0 -110
- package/src/slides/open.ts +0 -18
- package/src/slides/package/fonts.ts +0 -301
- package/src/slides/package/motion.ts +0 -316
- package/src/slides/package/test-face.ts +0 -113
- package/src/teach/browser/compile.ts +0 -44
- package/src/teach/browser/dismiss.ts +0 -76
- package/src/teach/browser/focus-line.ts +0 -19
- package/src/teach/browser/glossary-filter.ts +0 -44
- package/src/teach/browser/head.ts +0 -30
- package/src/teach/browser/quiz.ts +0 -19
- package/src/teach/browser/reload.ts +0 -9
- package/src/teach/browser/sidebar.ts +0 -233
- package/src/teach/browser/theme.ts +0 -18
- package/src/teach/components/code.tsx +0 -24
- package/src/teach/components/heading.tsx +0 -11
- package/src/teach/components/list.tsx +0 -17
- package/src/teach/components/paragraph.tsx +0 -29
- package/src/teach/components/refs.tsx +0 -28
- package/src/teach/cross-references.ts +0 -78
- package/src/teach/fonts.ts +0 -16
- package/src/teach/highlight.ts +0 -71
- package/src/teach/html/jsx-dev-runtime.ts +0 -13
- package/src/teach/html/jsx-runtime.ts +0 -113
- package/src/teach/html/raw.ts +0 -28
- package/src/teach/lesson.ts +0 -178
- package/src/teach/nav.ts +0 -1337
- package/src/teach/render.ts +0 -240
- package/src/teach/workspace.ts +0 -1164
- package/src/teach/write-if-changed.ts +0 -17
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [5.53.0](https://github.com/erclx/canon/compare/v5.52.0...v5.53.0) (2026-10-21)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **products:** drop teach, slides, and demo for a teach-craft skill ([#2588](https://github.com/erclx/canon/issues/2588)) ([bb1930f](https://github.com/erclx/canon/commit/bb1930fa8911ae637eddadbaabfa498e6e7f769d))
|
|
9
|
+
|
|
10
|
+
## [5.52.0](https://github.com/erclx/canon/compare/v5.51.0...v5.52.0) (2026-10-21)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* **labels:** fail the scan on pull request body density ([#2585](https://github.com/erclx/canon/issues/2585)) ([121216f](https://github.com/erclx/canon/commit/121216fa258de521ff2b077aa0b897b5f2b9d519))
|
|
16
|
+
* **skills:** add target-update to catch a target up to the toolkit ([#2583](https://github.com/erclx/canon/issues/2583)) ([065b971](https://github.com/erclx/canon/commit/065b9716df290bd87a94b16bed1e54e4ebf29f4e))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
* **hooks:** anchor the method flag in review-post-scan on whitespace ([#2584](https://github.com/erclx/canon/issues/2584)) ([32c52a2](https://github.com/erclx/canon/commit/32c52a25e4eef6d7d9a88d83aed3d16ab433dcf7))
|
|
22
|
+
|
|
3
23
|
## [5.51.0](https://github.com/erclx/canon/compare/v5.50.0...v5.51.0) (2026-10-21)
|
|
4
24
|
|
|
5
25
|
|
package/README.md
CHANGED
|
@@ -72,8 +72,6 @@ Each domain has a canonical source in this repo and a thin install or sync CLI o
|
|
|
72
72
|
| Governance | Coding and authoring rules that load into a Claude session when a matching path is edited | Installed per project by `canon gov install`, refreshed by sync |
|
|
73
73
|
| Tooling stacks | Golden configs, seeds, and a reference per framework | Laid down by `canon init`, reconciled by `canon tooling sync` |
|
|
74
74
|
| Design system | Ships a `DESIGN.md` intent format pointing at your stylesheet for values, a skill that drafts one, and a render command | `canon design render` |
|
|
75
|
-
| Slides | A folder of HTML slides per deck, drawn in the project's tokens and rebuilt as editable shapes | `canon slides render` writes PowerPoint |
|
|
76
|
-
| Teach | Lessons, sources, and a glossary in one workspace, rendered to a small site | `canon teach` |
|
|
77
75
|
| Canvas | Pages of HTML frames on a local pan and zoom surface, each frame drawn with the project's tokens | `canon canvas serve` |
|
|
78
76
|
| Transcripts | A YouTube transcript with metadata frontmatter | `canon transcripts <url>` writes it into any repo |
|
|
79
77
|
| Sandbox | Scenario scaffolds that provision an isolated project state for verifying each domain flow | `canon sandbox` |
|
|
@@ -93,7 +91,7 @@ The workflow this toolkit ships is the workflow that built it. Several Claude Co
|
|
|
93
91
|
<img src="demos/agent-view-light/demo.gif" alt="The canon landing page scrolling from the dispatch section to the branch graph, three workers and a planner on disjoint file sets with the pull request each opened">
|
|
94
92
|
</picture>
|
|
95
93
|
|
|
96
|
-
That recording is the landing page's own `dispatch` and `workers` sections, driven
|
|
94
|
+
That recording is the landing page's own `dispatch` and `workers` sections, driven through a browser against a local build. The branch graph beside the pull request numbers is authored rather than read, because nothing on a build machine records which files four sessions held.
|
|
97
95
|
|
|
98
96
|
## Documentation
|
|
99
97
|
|
|
@@ -182,7 +180,6 @@ Each domain carries an entry written for someone maintaining the toolkit rather
|
|
|
182
180
|
- [Governance rules](canon/context/surfaces/governance.md)
|
|
183
181
|
- [Tooling stacks](canon/context/surfaces/tooling.md)
|
|
184
182
|
- [Design system](canon/context/features/design.md)
|
|
185
|
-
- [Slides](canon/context/features/slides.md)
|
|
186
183
|
- [Transcripts](canon/context/features/transcripts.md)
|
|
187
184
|
- [Sandbox](canon/context/development/sandbox.md)
|
|
188
185
|
|
|
@@ -45,14 +45,11 @@ Each verb here has a skill that owns the job. Load the skill rather than driving
|
|
|
45
45
|
| Job | Verb | Skill |
|
|
46
46
|
| -------------------------------------------- | ------------------- | --------------------------- |
|
|
47
47
|
| Render the design system | `canon design` | `canon:draw-figure` |
|
|
48
|
-
| Render a slide deck | `canon slides` | `canon:make-deck` |
|
|
49
48
|
| Render an HTML source to a PNG | `canon capture` | `canon:design-identity` |
|
|
50
49
|
| Serve a directory and print the link | `canon serve` | none |
|
|
51
|
-
| Record a running app | `canon demo` | `canon:script-screencast` |
|
|
52
50
|
| Report one computed property across routes | `canon inventory` | `canon:target-check` |
|
|
53
51
|
| Walk a page through interactions and measure | `canon drive` | `canon:ux-measure` |
|
|
54
52
|
| Fetch a YouTube transcript | `canon transcripts` | `canon:youtube-transcripts` |
|
|
55
|
-
| Open a learning workspace | `canon teach` | `canon:teach-workspace` |
|
|
56
53
|
| Work on the local canvas | `canon canvas` | `canon:canvas-board` |
|
|
57
54
|
|
|
58
55
|
## Session and ship
|
|
@@ -29,7 +29,6 @@ The context entries describe the repository the session opened with. An entry ke
|
|
|
29
29
|
## Out of scope
|
|
30
30
|
|
|
31
31
|
- Marking outcomes, sweeping receipts, and archiving a task, which `task-complete` owns
|
|
32
|
-
- Landing a teach promotion page, which `teach-workspace` owns
|
|
33
32
|
- Creating or declining a task file, which `task-board` owns
|
|
34
33
|
- Public-facing docs, which `docs-sync` owns
|
|
35
34
|
- Regenerating the context catalog, which a commit hook owns
|
|
@@ -47,7 +47,6 @@ Documentation, articles, reference pages, learning material. The reader arrived
|
|
|
47
47
|
## Kinds this file does not cover
|
|
48
48
|
|
|
49
49
|
- **Transactional flows** such as checkout, sign-up and settings are read as application UI. Their distinctive rules, state coverage and error recovery, sit in the `ui` governance rules.
|
|
50
|
-
- **Presentation surfaces** such as slide decks are drafted by `make-deck`, which carries the deck's design rules. Take the layer ordering and the floor from the body and the rest from it.
|
|
51
50
|
- **Terminal and text-mode surfaces** have no layout engine and their own color rules, stated where the writing surface is decided rather than here.
|
|
52
51
|
|
|
53
52
|
A read naming any of the three above takes the body's rules and says it has no per-kind guidance, naming the surface that governs it. A read naming a kind this file does not list at all says so rather than borrowing the nearest section.
|
|
@@ -7,13 +7,13 @@ description: Why a figure decides between Mermaid, an architecture view, and fre
|
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
10
|
-
Without this skill, a session asked for a figure takes the first path it thinks of. A graph gets SVG coordinates nobody checked against a render, and a subject that is not a graph gets forced through Mermaid.
|
|
10
|
+
Without this skill, a session asked for a figure takes the first path it thinks of. A graph gets SVG coordinates nobody checked against a render, and a subject that is not a graph gets forced through Mermaid.
|
|
11
11
|
|
|
12
12
|
Asked to refresh one architecture view, it redraws every view beside it. It judges the source and calls the figure verified, though a valid source can render a picture asserting something false. Mermaid's theme writes literal hex values, so the figure stops re-coloring when the page switches palette.
|
|
13
13
|
|
|
14
14
|
## Must
|
|
15
15
|
|
|
16
|
-
- The figure clears the standard's earn-its-place bar, and its path follows whether the subject reduces to a graph
|
|
16
|
+
- The figure clears the standard's earn-its-place bar, and its path follows whether the subject reduces to a graph
|
|
17
17
|
- An architecture view is drawn from its named source signal in `flowchart` or `sequenceDiagram`, and only the view the request names changes
|
|
18
18
|
- The Mermaid render uses the hand-drawn look and the figure font stack, with every literal color rewritten to the host's custom property
|
|
19
19
|
- The render is read back against what the figure means to say, and a figure bound for a rendered page is verified by a capture inside that page
|
|
@@ -31,5 +31,4 @@ Asked to refresh one architecture view, it redraws every view beside it. It judg
|
|
|
31
31
|
|
|
32
32
|
- Mermaid's layout, budgets, and label rules inside the fence, which the mermaid standard owns
|
|
33
33
|
- A UI screen mockup, and design tokens or the visual system, which `canvas-board` owns
|
|
34
|
-
- Which lesson needs a figure and where it sits, which `teach-workspace` owns
|
|
35
34
|
- Implementation detail behind an architecture view, which the context entry the caption points at owns
|
|
@@ -30,12 +30,11 @@ Apply the standard's bar: a relationship, a boundary, a path, or a before-and-af
|
|
|
30
30
|
|
|
31
31
|
Take the first that matches, and state which path was picked and why in one sentence:
|
|
32
32
|
|
|
33
|
-
1. **
|
|
34
|
-
2. **
|
|
35
|
-
3. **
|
|
36
|
-
4. **Anything else**, a spatial or physical arrangement no flowchart reduces to: the hand-drawn path.
|
|
33
|
+
1. **An architecture view**, meaning the request names system context, components, request flow, data pipeline, or deployment: the architecture set, then the Mermaid path.
|
|
34
|
+
2. **Graph-shaped**, meaning the relationship, boundary, or path is already what a flowchart or sequence diagram expresses: the Mermaid path.
|
|
35
|
+
3. **Anything else**, a spatial or physical arrangement no flowchart reduces to: the hand-drawn path.
|
|
37
36
|
|
|
38
|
-
The standard states this as a render-first policy rather than a ban on any tool-exported drawing, so
|
|
37
|
+
The standard states this as a render-first policy rather than a ban on any tool-exported drawing, so a graph-shaped subject always routes through Mermaid even though that is itself an external renderer.
|
|
39
38
|
|
|
40
39
|
## Step 4: draw
|
|
41
40
|
|
|
@@ -39,7 +39,6 @@ Route a graph-shaped subject, one whose relationship, boundary, or path a flowch
|
|
|
39
39
|
|
|
40
40
|
- Reserve freehand inline SVG, plain shapes and lines authored in the markup, for a subject that is not graph-shaped
|
|
41
41
|
- A figure that cannot express its subject through the deterministic path is a worse failure than an inconsistent hand-drawn one, so the hatch stays open
|
|
42
|
-
- Draw a figure in a teach lesson freehand whatever its shape. Its hand font cannot load in the renderer, so Mermaid measures labels in a narrower fallback face and the page clips them.
|
|
43
42
|
- State this as a render-first policy rather than a ban on a tool-exported drawing, since routing through Mermaid is itself running an external tool
|
|
44
43
|
|
|
45
44
|
## Wrapping and captioning
|
|
@@ -5,7 +5,7 @@ description: Authoring a freehand SVG, its color and accessibility audit, and th
|
|
|
5
5
|
|
|
6
6
|
# Hand-drawn path
|
|
7
7
|
|
|
8
|
-
`draw-figure` reads this file when Step 3 routes a figure to a freehand drawing
|
|
8
|
+
`draw-figure` reads this file when Step 3 routes a figure to a freehand drawing, for a subject no flowchart reduces to.
|
|
9
9
|
|
|
10
10
|
## Draw
|
|
11
11
|
|
|
@@ -129,7 +129,7 @@ A live agent session is never the human a box waits on.
|
|
|
129
129
|
|
|
130
130
|
### Density
|
|
131
131
|
|
|
132
|
-
`canon labels scan`
|
|
132
|
+
`canon labels scan` fails on a density finding, naming the section, the kind, and the line in the whole body under `density`. Its help lists every limit.
|
|
133
133
|
|
|
134
134
|
- Every section but Testing holds bullets to 200 characters and 5 in a row, and paragraphs to 350 characters and 2 in a row
|
|
135
135
|
- Any section reports a `subheading`, and Technical context reports a `mixed-form`
|
|
@@ -33,4 +33,3 @@ The evidence fails as well. Arms get reported without being rendered or judged,
|
|
|
33
33
|
- Finding roughness by reading source, which `ux-audit` owns
|
|
34
34
|
- Measuring what a running interface costs to paint, which `ux-measure` owns
|
|
35
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pick-by-eye
|
|
3
|
-
description: Drafts several candidates for a decision judged by looking, lays them out side by side as frames on one canvas page, hands the operator the address, takes the pick through the structured question surface, and loops on the pick until they stop. Use when asked to "draft some options", "show me a few versions", "try a few variations", "mock up alternatives", "give me candidates for X", or when a choice is taste rather than correctness. Do NOT use when the request already names the answer and asks for it to be built, which is `plan-feature`. Do NOT use to read source for roughness, which is `ux-audit`, to measure what a running interface costs to paint, which is `ux-measure`, to write what to look at on a change already made, which is `ui-checklist
|
|
3
|
+
description: Drafts several candidates for a decision judged by looking, lays them out side by side as frames on one canvas page, hands the operator the address, takes the pick through the structured question surface, and loops on the pick until they stop. Use when asked to "draft some options", "show me a few versions", "try a few variations", "mock up alternatives", "give me candidates for X", or when a choice is taste rather than correctness. Do NOT use when the request already names the answer and asks for it to be built, which is `plan-feature`. Do NOT use to read source for roughness, which is `ux-audit`, to measure what a running interface costs to paint, which is `ux-measure`, or to write what to look at on a change already made, which is `ui-checklist`.
|
|
4
4
|
metadata:
|
|
5
5
|
family: decide
|
|
6
6
|
---
|
|
@@ -124,7 +124,7 @@ canon labels scan --body-file .canon/tmp/pr/reply/reply-<number>.md --json
|
|
|
124
124
|
The hook skips `.canon/tmp/`, and the `pull_request` check reads only a pull request's own title and body, so this scan is the only gate on the reply.
|
|
125
125
|
|
|
126
126
|
- Fix any hit, and stop on a `density` entry too, shortening the line it names
|
|
127
|
-
- Read the record rather than the exit, since density never sets the exit code
|
|
127
|
+
- Read the record rather than the exit, since a post's density never sets the exit code
|
|
128
128
|
|
|
129
129
|
Then post and keep the `id` the POST answers with, since Step 7 edits this exact comment:
|
|
130
130
|
|
|
@@ -13,7 +13,7 @@ Write the body the way Step 6 writes a reply.
|
|
|
13
13
|
|
|
14
14
|
- Load `write-human` for voice and word choice, and follow `${CLAUDE_SKILL_DIR}/../markdown-craft/references/markdown.md` for punctuation
|
|
15
15
|
- Run the `${CLAUDE_SKILL_DIR}/../git-pr/references/publish.md` scan before posting, with `canon labels scan --body-file .canon/tmp/pr/reply/reply-<number>.md --json`
|
|
16
|
-
- Stop on a `density` entry as on any hit, since density never sets the exit code
|
|
16
|
+
- Stop on a `density` entry as on any hit, since a post's density never sets the exit code
|
|
17
17
|
- Open with `## Post-review findings` rather than `## Review response`, since nothing on the thread is being answered
|
|
18
18
|
- Close the body with `🤖 Addressed by Claude Code` on its own line, matching the reply's footer
|
|
19
19
|
|
|
@@ -114,7 +114,7 @@ Run `canon labels scan --title "<title>" --body "<body>" --head <headRefName>` a
|
|
|
114
114
|
|
|
115
115
|
- Name the token quoted from the title or body for a phase label, a board identifier, or a session link
|
|
116
116
|
- Name the broken rule, being `structure`, a casing issue, or `length`, for a title-format hit
|
|
117
|
-
- A heading in `sections.outside` or `sections.missing`, or a character in `bannedCharacters`, is a hit of the same weight, naming the heading or the character
|
|
117
|
+
- A heading in `sections.outside` or `sections.missing`, an entry in `density`, or a character in `bannedCharacters`, is a hit of the same weight, naming the heading, the line and kind, or the character
|
|
118
118
|
- This reads the pull request under review, distinct from the comment this pass posts, which the scan later in this step covers
|
|
119
119
|
|
|
120
120
|
### Why the threshold ignores the grade
|
|
@@ -175,7 +175,7 @@ The marker is the read-time record those fields are not.
|
|
|
175
175
|
Before posting, run `canon labels scan --body-file .canon/tmp/pr/review/body-<number>-<short-sha>.md`, which applies the rule in `${CLAUDE_SKILL_DIR}/../git-pr/references/publish.md`. Pass `--json` and fix the body and scan again on a finding.
|
|
176
176
|
|
|
177
177
|
- A `density` entry is a finding here, naming a subject or nested bullet past 200 characters, a run past 5 plain bullets, or a paragraph past its limits, by its line in the whole body
|
|
178
|
-
-
|
|
178
|
+
- A post's density never sets the exit code, so the hook below lets the post through on it and this step is the one that stops
|
|
179
179
|
|
|
180
180
|
- A finding phrased against an internal phase label is what the label half of the scan catches here
|
|
181
181
|
- The call carries no `--title`, so the scan reads the text as a review
|
|
@@ -98,3 +98,5 @@ No overall verdict. The harness row is unchecked rather than passing.
|
|
|
98
98
|
```
|
|
99
99
|
|
|
100
100
|
Keep the harness row `unchecked` on every run until a verb reads it. A domain left out of the table reads as a domain that passed, which is the one shape the row exists to prevent.
|
|
101
|
+
|
|
102
|
+
Close on one line naming `/canon:target-update` as the skill that applies the catch-up, when a domain reads behind and `target-update` did not invoke this check.
|
|
@@ -59,7 +59,7 @@ Three states reach this skill that the chain does not serve. Name the destinatio
|
|
|
59
59
|
|
|
60
60
|
### An existing project
|
|
61
61
|
|
|
62
|
-
Stop and hand off to `target-check`, which reports what the target already carries before anything is repaired. This chain never reads that, so a per-domain install picked here is a guess against configs nobody read.
|
|
62
|
+
Stop and hand off to `target-check`, which reports what the target already carries before anything is repaired. This chain never reads that, so a per-domain install picked here is a guess against configs nobody read. Name `target-update` when the operator wants the catch-up applied.
|
|
63
63
|
|
|
64
64
|
### The `.claude/` folder alone
|
|
65
65
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: target-update
|
|
3
|
+
description: What catching a target up to the toolkit is for, the judgment it holds, and where it hands off to the check and the setup
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Target update requirement
|
|
7
|
+
|
|
8
|
+
## Gap
|
|
9
|
+
|
|
10
|
+
Without this skill, a session catching a target up after a release improvises the order. It runs a sync before the migrations that move its paths, writes a record-tree rewrite with no backup, and lets a sync replace a rule the project customized without saying what was lost.
|
|
11
|
+
|
|
12
|
+
The verbs report every fact, so the gap is the judgment between them. A session reads a refused migration as a step to force, picks rules and seed merges with nobody asked, and ends with no way to tell a current target from one it stopped partway through.
|
|
13
|
+
|
|
14
|
+
## Must
|
|
15
|
+
|
|
16
|
+
- Show the changelog summary, the pending migrations, and the drift before the first write to the target, and apply only on the operator's go-ahead
|
|
17
|
+
- Read every fact from a `canon` verb, so a later release changes what the skill reports with no edit to its body
|
|
18
|
+
- Stop and ask on a refused migration, a stranded file, an unattributed folder, and a rule the stack newly ships
|
|
19
|
+
- Keep a customized file and a drifted seed as the project wrote them, naming the toolkit change each one skipped
|
|
20
|
+
- End on a clean `target-check` or on named remainders, with nothing written when nothing is pending
|
|
21
|
+
|
|
22
|
+
## Must not
|
|
23
|
+
|
|
24
|
+
- Detect pending migrations or parse the changelog inside the body, since `canon migrate status` and `canon changelog` own both
|
|
25
|
+
- Name a toolkit version in an update commit's subject
|
|
26
|
+
- Run from the toolkit's own checkout, or write into a target from another repository's session
|
|
27
|
+
- Rely on being typed by name. It is reached through its description and `target-check`'s close, and a quarter of releases with no migration and no drift is the signal to fold it in there.
|
|
28
|
+
|
|
29
|
+
## Out of scope
|
|
30
|
+
|
|
31
|
+
- First-time scaffold, which `target-setup` owns
|
|
32
|
+
- Reporting drift without repairing it, which `target-check` owns
|
|
33
|
+
- Opening the target's pull request, which `git-ship` owns
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: target-update
|
|
3
|
+
description: Catches a target project up to the toolkit after a release. Upgrades the binary and plugin, previews the changelog summary, the pending migrations, and the drift, then on the operator's go-ahead migrates, syncs, regenerates the indexes, and ends on a clean `target-check` or named remainders. Use when asked to "update this project to the latest canon", "catch this target up", "apply the new release here", "run the pending migrations", or "bring this project current with the toolkit". Do NOT use on a project without the toolkit, which is `target-setup`, or to report drift without repairing it, which is `target-check`.
|
|
4
|
+
metadata:
|
|
5
|
+
family: upkeep
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Target update
|
|
9
|
+
|
|
10
|
+
Takes a target from behind the toolkit to current. Every fact comes from a `canon` verb, and this body holds the order and the judgment calls the verbs leave open. It names no migration, rule, or stack, so a later release reaches it with no edit here.
|
|
11
|
+
|
|
12
|
+
Read `canon docs migrate` for what each migrate verb moves and refuses, and `canon docs sync` for the drift causes. This body cites them rather than restating them.
|
|
13
|
+
|
|
14
|
+
## Guards
|
|
15
|
+
|
|
16
|
+
Stop with the line beside each state.
|
|
17
|
+
|
|
18
|
+
| State | Stop |
|
|
19
|
+
| ------------------------------------------- | ------------------------------------------------------------------------------------------------- |
|
|
20
|
+
| `canon` absent from the path | `❌ canon is not on PATH, so nothing can be read.` |
|
|
21
|
+
| No `.claude/` directory at the working root | `❌ No .claude/ here, so the toolkit is not installed. Run /canon:target-setup instead.` |
|
|
22
|
+
| A `claude/skills/` folder, no leading dot | `❌ This is the toolkit itself rather than a target. Run this from the target's own session.` |
|
|
23
|
+
| A dirty working tree | `❌ Uncommitted changes here. Commit or stash them first, since canon sync refuses a dirty tree.` |
|
|
24
|
+
|
|
25
|
+
Then hold two rules for every verb this body runs.
|
|
26
|
+
|
|
27
|
+
- Run it under `CANON_NON_INTERACTIVE=1` from the target root
|
|
28
|
+
- Branch on its record's fields rather than its exit, which a shell function wrapping `canon` can flatten
|
|
29
|
+
|
|
30
|
+
## Step 1: bring the binary and plugin forward
|
|
31
|
+
|
|
32
|
+
Read `skew` off `canon sync --check . --json`. When `installed` trails `latest`, run `canon upgrade --json`, then `canon claude plugin-update --json` whatever the skew reads.
|
|
33
|
+
|
|
34
|
+
Both write to the machine rather than the target, and the preview needs the verbs and the changelog a newer binary carries, so they run before it. The permission dialog gates each. Report a refusal from either and continue on the installed binary, saying the preview reads against it.
|
|
35
|
+
|
|
36
|
+
## Step 2: read the pending work
|
|
37
|
+
|
|
38
|
+
Run these in parallel from the target root:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
CANON_NON_INTERACTIVE=1 canon changelog --json
|
|
42
|
+
CANON_NON_INTERACTIVE=1 canon migrate status --json
|
|
43
|
+
CANON_NON_INTERACTIVE=1 canon sync --check . --json
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Then take `<stack>` from the first name in the report's `tooling.chain` and run `canon tooling diff <stack> . --json`. Never run it bare, since the stack prompt resolves to the catalog's first entry under the non-interactive variable. Report tooling unmeasured when `tooling.measured` is false or `chain` names nothing.
|
|
47
|
+
|
|
48
|
+
### When a read refuses
|
|
49
|
+
|
|
50
|
+
A refusal is a fact for the preview, never a gap to fill by reading files.
|
|
51
|
+
|
|
52
|
+
- `changelog` refusing `no-stamp` or `unknown-version`: say the summary is unread and why. Offer `--since <version>` when the operator names one, and never guess a start.
|
|
53
|
+
- `migrate status` carrying no such subcommand: the binary predates it. Stop, since pending migrations cannot be listed without detecting them here, which this skill never does.
|
|
54
|
+
- A missing report key is an older binary rather than an empty answer. Name the installed version beside it.
|
|
55
|
+
|
|
56
|
+
## Step 3: preview and wait
|
|
57
|
+
|
|
58
|
+
Write the preview from those records alone, then stop and wait for the operator. Nothing in the target is written before the go-ahead.
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
Target update: `<path>`, canon `<installed>` to `<running>`.
|
|
62
|
+
|
|
63
|
+
**What changed since `<since>`:** <three to six bullets from the changelog entries, each naming what this project will notice, never the version>
|
|
64
|
+
|
|
65
|
+
**Migrations, in run order:** <each pending or refused entry from migrate status, with its verb>
|
|
66
|
+
|
|
67
|
+
**Drift:** <each non-empty cause from sync --check, with its count and paths>
|
|
68
|
+
|
|
69
|
+
**Calls for you:** <each judgment call below this run meets, with the default this skill takes>
|
|
70
|
+
|
|
71
|
+
**Commands, in order:** <the exact commands Steps 4 to 6 will run>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Summarize the changelog for this project, not for the toolkit. Drop an entry that touches nothing the target holds, and lead with anything a migration or a sync will change.
|
|
75
|
+
|
|
76
|
+
### Nothing pending
|
|
77
|
+
|
|
78
|
+
When the changelog range is empty, `migrate status` lists nothing pending or refused, and the drift lines hold nothing a step here would take, write nothing. Invoke `canon:target-check` and report the target current with its table.
|
|
79
|
+
|
|
80
|
+
## Step 4: migrate
|
|
81
|
+
|
|
82
|
+
Run each pending migration in the order `migrate status` gave, one at a time, as the entry's `verb` with `--write --json` appended. The verb carries the flags its dry run used, so a bare `canon migrate <name>` would apply a plan the preview never showed.
|
|
83
|
+
|
|
84
|
+
- Run `canon migrate status --json` again after each write, since an applied move can turn a clean entry pending
|
|
85
|
+
- Stop and ask on a `refused` entry, quoting its reason and the remedy it names. Run the remedy only on the operator's word, since a refusal guards a destination the project may own.
|
|
86
|
+
- Stage each write with `git add -A`, since no migrate verb stages and the tree was clean before it, then commit through `canon:git-commit`, one commit per migration
|
|
87
|
+
- Skip the commit when the write changed no tracked file, as `record-tree` does by touching only gitignored records
|
|
88
|
+
|
|
89
|
+
### Markers
|
|
90
|
+
|
|
91
|
+
A planned rewrite can reach a line that names an old spelling on purpose, such as a dated note or a quoted history. Propose a marker for each such line in the preview, and add it before the write. `canon docs migrate` names the marker for each spelling.
|
|
92
|
+
|
|
93
|
+
### The record-tree backup
|
|
94
|
+
|
|
95
|
+
The record tree is untracked, so a `record-tree` rewrite has no undo. Run `canon records push --json` before its write. When that reports no backup repository, copy `.canon/` to a dated folder outside the project and name the path in the report.
|
|
96
|
+
|
|
97
|
+
## Step 5: sync
|
|
98
|
+
|
|
99
|
+
Run `canon sync .`, then `canon tooling sync <stack> . --write` when the tooling diff named files to change. Treat each drift cause the way the preview stated:
|
|
100
|
+
|
|
101
|
+
| Cause | This skill |
|
|
102
|
+
| --------------------------- | ------------------------------------------------------------------------------------------------ |
|
|
103
|
+
| `stale`, `retired`, renamed | Takes the sync's write |
|
|
104
|
+
| `customized` | Keeps the project's file. Shows `git diff -- <rel>` as the toolkit's change, then `git restore`s |
|
|
105
|
+
| `stranded` | Names where the file sits and where the toolkit now installs, and moves it only on the word |
|
|
106
|
+
| `seeds` drifted | Merges by hand against `canon claude seeds list --json`, keeping the project's edits |
|
|
107
|
+
| `seeds` stale or missing | Takes the toolkit's copy whole |
|
|
108
|
+
| `newRules` | Lists them, and installs only the ones the operator picks, with `canon gov install --add` |
|
|
109
|
+
|
|
110
|
+
A `customized` rule is the file `canon sync` replaces, so read it back after the sync rather than trusting the report from Step 2. Report each kept file with the toolkit's change summarized in a line, so the operator can take it later.
|
|
111
|
+
|
|
112
|
+
### What the toolkit dropped
|
|
113
|
+
|
|
114
|
+
Read `reverse.unclaimed` by attribution. Delete a `dropped` folder, read an `unattributed` one and ask before deleting it, and leave a `project` one alone.
|
|
115
|
+
|
|
116
|
+
Read the report's top-level `superseded` and `unmigrated` lists apart from it. Each names a move only the operator can make, being a file a newer seed replaced or a domain still at the root layout, so name each and move nothing.
|
|
117
|
+
|
|
118
|
+
## Step 6: regenerate and verify
|
|
119
|
+
|
|
120
|
+
Run `canon indexes regen`, then the project's own check script when it carries one. Invoke `canon:target-check` last.
|
|
121
|
+
|
|
122
|
+
Stage the sync, the merges, and the regenerated indexes with `git add -A`, since `canon sync` leaves its writes unstaged, then commit through `canon:git-stage`. Name what changed in the project in each subject, such as the rules refreshed or the seeds merged, and never the toolkit version.
|
|
123
|
+
|
|
124
|
+
## Output
|
|
125
|
+
|
|
126
|
+
```markdown
|
|
127
|
+
Target update: `<path>`, now on canon `<version>`.
|
|
128
|
+
|
|
129
|
+
<the target-check table>
|
|
130
|
+
|
|
131
|
+
**Kept for you:** <each customized or drifted file left as the project wrote it, with the toolkit change it skipped>
|
|
132
|
+
|
|
133
|
+
**Remaining:** <each refusal, stranded file, or unread domain, with the command or decision it waits on>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Omit a section that holds nothing. End on the commits and the check, and leave the pull request to `canon:git-ship`.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: teach-craft
|
|
3
|
+
description: Scope boundary for the teaching judgment a session carries, and why it ships as knowledge rather than as a workspace
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Teach craft requirement
|
|
7
|
+
|
|
8
|
+
## Gap
|
|
9
|
+
|
|
10
|
+
Without this skill, a session asked to teach explains and calls a smooth reply a lesson. It teaches from recall, picks topics from the subject's order rather than the learner's errors, and asks nothing about what they know.
|
|
11
|
+
|
|
12
|
+
Its quizzes leak the answer through option length or position, and nothing tests the learner later, so fluency passes for retention.
|
|
13
|
+
|
|
14
|
+
## Must
|
|
15
|
+
|
|
16
|
+
- Carry retrieval, spacing, interleaving, and placement as rules a session applies before picking what to teach next
|
|
17
|
+
- Ask the learner's starting point and read the subject from sources, saying which claims rest on recall
|
|
18
|
+
- State quiz design that leaks no answer, and pair a quiz with a teach-back
|
|
19
|
+
- Hold that the wrong answer itself is what the next session places from
|
|
20
|
+
|
|
21
|
+
## Must not
|
|
22
|
+
|
|
23
|
+
- Name a verb, a folder, a markup contract, or a stylesheet, since the skill produces nothing of its own
|
|
24
|
+
- Fire on a request to answer one question
|
|
25
|
+
- Go unloaded when a session teaches across exchanges, since a craft body only its author types reaches no lesson
|
|
26
|
+
|
|
27
|
+
## Out of scope
|
|
28
|
+
|
|
29
|
+
- Where a lesson is stored or how it renders, which belongs to whatever surface the session writes to
|
|
30
|
+
- A cited source ledger for the practice family, which is a follow-on task
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: teach-craft
|
|
3
|
+
description: Carries the judgment for teaching a subject so it sticks, being retrieval over review, spacing, interleaving, placing the learner just past what they can do unaided, quiz design that leaks no answer, the teach-back, and what makes a lesson worth returning to. Use before teaching a subject over more than one exchange, when writing a quiz, a lesson, or a study plan, or when asked "teach me X", "quiz me on this", "how should I learn X", or "is this a good quiz question". Do NOT use to answer one question, which is an ordinary reply, or to write project documentation, which belongs to the surface owning that document.
|
|
4
|
+
metadata:
|
|
5
|
+
family: answer
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Teach craft
|
|
9
|
+
|
|
10
|
+
A session asked to teach explains, and a smooth explanation reads as a lesson learned. It is fluency, which decays within days. This skill carries what turns teaching into retention: test before telling, space the returns, and grade only what the learner produced unaided.
|
|
11
|
+
|
|
12
|
+
It produces nothing of its own. The lesson lands wherever the session already writes, being the conversation, a file, or a page.
|
|
13
|
+
|
|
14
|
+
## References
|
|
15
|
+
|
|
16
|
+
- `${CLAUDE_SKILL_DIR}/references/pedagogy.md`: fluency against storage strength, retrieval practice, spacing and its ladder, interleaving, where to place the learner, and where difficulty helps
|
|
17
|
+
- `${CLAUDE_SKILL_DIR}/references/lesson-craft.md`: restraint, quiz design, the teach-back, and what makes a lesson worth returning to
|
|
18
|
+
|
|
19
|
+
Read `pedagogy.md` before picking what to teach next, and `lesson-craft.md` before writing a quiz or a lesson.
|
|
20
|
+
|
|
21
|
+
## Before teaching
|
|
22
|
+
|
|
23
|
+
- Ask what the learner already knows rather than assuming it. Difficulty with no floor under it teaches nobody.
|
|
24
|
+
- Read the subject from sources rather than from recall, and say which claims rest on recall where no source was reachable
|
|
25
|
+
- Open a returning learner on retrieval of what they got wrong last time, before anything new
|
|
26
|
+
|
|
27
|
+
## While teaching
|
|
28
|
+
|
|
29
|
+
- Place each step just past what the learner can do unaided, from what they got wrong rather than from the subject's own order
|
|
30
|
+
- Carry a quiz and a teach-back, since recognition and production fail differently
|
|
31
|
+
- Record the wrong answer itself rather than a count, since the next session places the learner from the misconception
|
|
32
|
+
|
|
33
|
+
## Excuses and rebuttals
|
|
34
|
+
|
|
35
|
+
| Excuse | Rebuttal |
|
|
36
|
+
| ----------------------------------------- | -------------------------------------------------------------------------------------------- |
|
|
37
|
+
| They followed the explanation, so move on | Following is fluency. Advance on a retrieval the learner passed unaided. |
|
|
38
|
+
| Review the last lesson before testing it | Review rebuilds the fluency the test would have measured. Test first, then fill what missed. |
|
|
39
|
+
| The answer is obvious from the options | Then the distractors are not misconceptions anyone holds. Rewrite them. |
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Lesson craft reference
|
|
3
|
+
description: Restraint, quiz design, teach back, and what makes a lesson worth returning to
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Lesson craft reference
|
|
7
|
+
|
|
8
|
+
Judgment rather than shape. This file covers what makes a lesson worth opening twice, whatever surface it renders on.
|
|
9
|
+
|
|
10
|
+
## Contents
|
|
11
|
+
|
|
12
|
+
- [Restraint](#restraint)
|
|
13
|
+
- [Quiz design](#quiz-design)
|
|
14
|
+
- [Teach back](#teach-back)
|
|
15
|
+
- [What makes a lesson worth returning to](#what-makes-a-lesson-worth-returning-to)
|
|
16
|
+
|
|
17
|
+
## Restraint
|
|
18
|
+
|
|
19
|
+
Every element competes with the material for attention.
|
|
20
|
+
|
|
21
|
+
- Cut any decoration that carries no information
|
|
22
|
+
- Use at most one accent color, reserved for the thing the learner acts on
|
|
23
|
+
- Do not animate anything the learner did not trigger
|
|
24
|
+
- Prefer whitespace over rules and boxes to separate sections
|
|
25
|
+
|
|
26
|
+
## Quiz design
|
|
27
|
+
|
|
28
|
+
The quiz is the retrieval, so a leak in its construction turns it into a reading test.
|
|
29
|
+
|
|
30
|
+
- Write every option to the same length, in words and in characters. A longer option reads as the considered one.
|
|
31
|
+
- Rotate the correct option's slot by question number, so question one puts it first, question two second, and so on. An author varying position by judgment settles on the first slot.
|
|
32
|
+
- Make each wrong option a misconception someone actually holds. An obviously wrong option removes itself and shrinks the question.
|
|
33
|
+
- Write one feedback block per question, covering the correct option and why each distractor fails, saying why rather than whether
|
|
34
|
+
- Give feedback after the attempt, never alongside the question
|
|
35
|
+
|
|
36
|
+
One feedback block reads as an explanation where a block per option reads as four verdicts, and only the explanation names what separates a wrong option from the answer. Name the correct option in the feedback text, since it is what a learner reads to find out whether they were right.
|
|
37
|
+
|
|
38
|
+
## Teach back
|
|
39
|
+
|
|
40
|
+
A quiz is recognition and a teach-back is production, which is the form retrieval practice prefers. Carry both: the quiz places the learner against options someone could hold, and the teach-back is where the learner finds out what they cannot say without help.
|
|
41
|
+
|
|
42
|
+
- Ask for an explanation to a named audience rather than for an answer. Telling a non-programmer why a lazy quantifier is not an optional one has a floor, and "explain lazy quantifiers" has none.
|
|
43
|
+
- Ask about the thing the lesson was for, not a detail beside it. A teach-back on a footnote tests attention rather than the material.
|
|
44
|
+
- Carry a self-check, hidden until the learner opens it, listing what a complete explanation covers. A learner with no session in the room otherwise cannot grade the ask, and hidden leaks nothing.
|
|
45
|
+
- Write the self-check as what the explanation has to cover rather than as the explanation itself. A model answer is read instead of produced, which turns the block back into reading.
|
|
46
|
+
|
|
47
|
+
## What makes a lesson worth returning to
|
|
48
|
+
|
|
49
|
+
- The worked example is complete. A learner returning for the example finds the whole thing rather than a fragment they have to reconstruct.
|
|
50
|
+
- The lesson states what it assumes. A returning reader can tell in one line whether they are in the right place.
|
|
51
|
+
- The hard part is named as the hard part. Material that flattens everything to one difficulty gives a returning reader nothing to navigate by.
|
|
52
|
+
- Nothing depends on the session it was written in. A lesson referring to what was discussed is unreadable a week later.
|
|
@@ -5,7 +5,7 @@ description: Fluency against storage strength, retrieval practice, spacing, inte
|
|
|
5
5
|
|
|
6
6
|
# Pedagogy reference
|
|
7
7
|
|
|
8
|
-
The rules a lesson is built from. Read this before picking what to teach next
|
|
8
|
+
The rules a lesson is built from. Read this before picking what to teach next.
|
|
9
9
|
|
|
10
10
|
## Fluency is not storage strength
|
|
11
11
|
|
|
@@ -43,8 +43,7 @@ The same total time spread across days beats the same time in one sitting. Forge
|
|
|
43
43
|
|
|
44
44
|
The ladder is 1, 3, 7, 16, and 35 days. A topic retrieved unaided moves up a rung and a miss drops it back one, held inside the ladder at either end, so a topic the learner keeps missing stays on the shortest gap rather than restarting a sequence.
|
|
45
45
|
|
|
46
|
-
-
|
|
47
|
-
- An author told to widen a gap still picks it by judgment, the same reason quiz option order is drawn by a verb rather than stated here
|
|
46
|
+
- Apply the ladder as written rather than picking a gap by judgment, since an author told to widen a gap settles on whatever feels right
|
|
48
47
|
|
|
49
48
|
## Interleaving
|
|
50
49
|
|
|
@@ -78,4 +77,13 @@ Parametric recall is confident where it is wrong, and a learner cannot audit it.
|
|
|
78
77
|
- Read the subject from sources before teaching, and record each one with its link
|
|
79
78
|
- Mark any claim resting on recall as resting on recall, in the lesson itself
|
|
80
79
|
- List a source found and not opened as a lead, and never cite it
|
|
81
|
-
-
|
|
80
|
+
- Rest each general claim on the highest rung of the ladder below that covers it
|
|
81
|
+
- Never take the learner's own projects, or material specific to one employer, as proof of a general claim. Either may appear as a worked application labeled with whose it is.
|
|
82
|
+
|
|
83
|
+
The ladder runs in three rungs, highest first.
|
|
84
|
+
|
|
85
|
+
1. Documentation or a specification published by whoever owns the subject
|
|
86
|
+
2. A canonical work on the subject, such as the standard text, a reference book, or a primary paper
|
|
87
|
+
3. Other material, such as a tutorial, a course, or a post, and only for a claim the first two rungs do not cover
|
|
88
|
+
|
|
89
|
+
A subject nobody owns, such as a mathematical topic or a craft, has no first rung, so its list starts at the second. Record a third-rung source with the claim it covers and why no higher rung does, since that reason is what a later session checks the choice against.
|
package/docs/agents/audits.md
CHANGED
|
@@ -77,7 +77,6 @@ The placement entry runs pinned to `--backend off`, so its tally stays comparabl
|
|
|
77
77
|
| `records-plans` | `canon records validate plans` | Plan records against their shape | Reports |
|
|
78
78
|
| `records-groundwork` | `canon records validate groundwork` | Groundwork folders against their shape | Reports |
|
|
79
79
|
| `records-intake` | `canon records validate intake` | Intake folders against their shape | Reports |
|
|
80
|
-
| `records-teach` | `canon records validate teach` | Teach records against their shape | Reports |
|
|
81
80
|
| `comments` | `canon comments scan` | Comment density by language and kind, and `TODO`, `FIXME`, `HACK`, `XXX` | Reports |
|
|
82
81
|
| `test-order` | `canon gov test-order` | Implementations that reached branch history before their test | Reports |
|
|
83
82
|
| `secrets` | `canon secrets scan` | Credential-shaped values in the shipped tree | Gates |
|
package/docs/agents/migrate.md
CHANGED
|
@@ -33,7 +33,8 @@ kind: reference
|
|
|
33
33
|
- `record-tree` reports closed groundwork and intake trails, the scratch folder, and backup history as counts and rewrites none
|
|
34
34
|
- `records` reports skipped record folders as a count on its own line
|
|
35
35
|
- A `record-tree` rewrite has no undo in version control, so read the report before `--write`
|
|
36
|
-
|
|
36
|
+
|
|
37
|
+
`status` runs each verb as a dry run and exits 2 while any is pending, with a refusal outranking that. Each entry's `verb` carries the flags its dry run used, so append `--write` to it. A clean entry can turn pending once an earlier one applies, so run it again after each `--write`.
|
|
37
38
|
|
|
38
39
|
Three markers keep an old spelling on a line. Each also covers the nearest non-blank line, below it for `canon-keep-record-root` and above it for `canon-keep-surface-root`.
|
|
39
40
|
|