@erclx/canon 5.53.0 → 5.54.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.
Files changed (94) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +10 -9
  3. package/claude/.claude-plugin/plugin.json +1 -1
  4. package/claude/skills/canon-cli/SKILL.md +5 -5
  5. package/claude/skills/design-identity/REQUIREMENT.md +2 -2
  6. package/claude/skills/design-identity/SKILL.md +6 -6
  7. package/claude/skills/design-record/REQUIREMENT.md +2 -2
  8. package/claude/skills/design-record/SKILL.md +4 -4
  9. package/claude/skills/design-record/references/folder.md +1 -1
  10. package/claude/skills/design-taste/REQUIREMENT.md +1 -1
  11. package/claude/skills/draw-figure/REQUIREMENT.md +1 -1
  12. package/claude/skills/draw-figure/SKILL.md +1 -1
  13. package/claude/skills/pick-by-eye/REQUIREMENT.md +4 -4
  14. package/claude/skills/pick-by-eye/SKILL.md +34 -41
  15. package/claude/skills/pick-by-eye/references/board.md +42 -0
  16. package/claude/skills/pick-by-eye/references/live-arms.md +3 -3
  17. package/claude/skills/plan-groundwork/SKILL.md +1 -1
  18. package/claude/skills/teach-craft/REQUIREMENT.md +1 -1
  19. package/claude/skills/teach-craft/SKILL.md +32 -1
  20. package/claude/skills/teach-craft/references/adopted.md +113 -0
  21. package/claude/skills/teach-craft/references/lesson-craft.md +10 -2
  22. package/claude/skills/teach-craft/references/pedagogy.md +29 -2
  23. package/docs/agents/install-and-sync.md +0 -8
  24. package/docs/target/migrations.md +8 -3
  25. package/docs/target/projects.md +1 -1
  26. package/docs/workflow/skill-map.md +0 -1
  27. package/docs/workflow/visual-design-workflow.md +1 -4
  28. package/governance/detect.toml +1 -6
  29. package/governance/renames.toml +0 -1
  30. package/package.json +2 -5
  31. package/src/claude/cases/misc.ts +0 -5
  32. package/src/claude/skills-audit.ts +1 -0
  33. package/src/cli/help.ts +0 -3
  34. package/src/cli.ts +0 -2
  35. package/src/commands/design.ts +16 -315
  36. package/src/commands/sync.ts +4 -5
  37. package/src/design/regen.ts +5 -32
  38. package/src/design/render.ts +1 -1
  39. package/src/design/tokens.ts +3 -2
  40. package/src/gate/stages.ts +4 -10
  41. package/src/gov/audit.ts +1 -6
  42. package/src/markdown/scope.ts +2 -4
  43. package/src/shipped/references.ts +1 -2
  44. package/src/sync/check.ts +4 -29
  45. package/src/sync/stamp.ts +6 -6
  46. package/src/sync/target.ts +1 -4
  47. package/tooling/claude/reference.md +1 -1
  48. package/tooling/claude/seeds/canon/DESIGN.md +1 -1
  49. package/claude/skills/canvas-board/REQUIREMENT.md +0 -35
  50. package/claude/skills/canvas-board/SKILL.md +0 -143
  51. package/claude/skills/canvas-board/references/canvas.md +0 -170
  52. package/governance/rules/ui/canvas.md +0 -13
  53. package/src/canvas/address.ts +0 -227
  54. package/src/canvas/arrange.ts +0 -66
  55. package/src/canvas/capture.ts +0 -391
  56. package/src/canvas/client/app.tsx +0 -188
  57. package/src/canvas/client/inspector/align-grid.tsx +0 -162
  58. package/src/canvas/client/inspector/color-field.tsx +0 -398
  59. package/src/canvas/client/inspector/color-inputs.tsx +0 -139
  60. package/src/canvas/client/inspector/color-picker.tsx +0 -668
  61. package/src/canvas/client/inspector/color-space.ts +0 -240
  62. package/src/canvas/client/inspector/field.tsx +0 -263
  63. package/src/canvas/client/inspector/fields.css +0 -763
  64. package/src/canvas/client/inspector/section.tsx +0 -27
  65. package/src/canvas/client/inspector/size-field.tsx +0 -69
  66. package/src/canvas/client/inspector/token-select.tsx +0 -109
  67. package/src/canvas/client/inspector/values.ts +0 -297
  68. package/src/canvas/client/inspector.tsx +0 -692
  69. package/src/canvas/client/keys.ts +0 -71
  70. package/src/canvas/client/layers.tsx +0 -118
  71. package/src/canvas/client/main.tsx +0 -71
  72. package/src/canvas/client/pages-panel.tsx +0 -212
  73. package/src/canvas/client/panel-handle.tsx +0 -90
  74. package/src/canvas/client/selection.tsx +0 -199
  75. package/src/canvas/client/shell.css +0 -762
  76. package/src/canvas/client/state.ts +0 -792
  77. package/src/canvas/client/surface.tsx +0 -803
  78. package/src/canvas/client/theme-panel.tsx +0 -55
  79. package/src/canvas/client/tools.tsx +0 -153
  80. package/src/canvas/content.ts +0 -781
  81. package/src/canvas/edit.ts +0 -575
  82. package/src/canvas/editing.ts +0 -203
  83. package/src/canvas/fit.ts +0 -238
  84. package/src/canvas/global.d.ts +0 -15
  85. package/src/canvas/history.ts +0 -116
  86. package/src/canvas/index.html +0 -20
  87. package/src/canvas/server.ts +0 -766
  88. package/src/canvas/tokens.ts +0 -221
  89. package/src/commands/canvas.ts +0 -1097
  90. package/src/design/adapter.ts +0 -59
  91. package/src/design/base.css +0 -203
  92. package/src/design/brand-favicon.ts +0 -18
  93. package/src/design/neutral.ts +0 -127
  94. package/src/design/project-fonts.ts +0 -392
@@ -0,0 +1,113 @@
1
+ ---
2
+ title: Adopted and declined
3
+ description: Which learning-science sources this skill's rules rest on, the passage each one was taken from, what was declined, and which rules stand as house judgment with no opened source behind them
4
+ ---
5
+
6
+ # Adopted and declined
7
+
8
+ The field is learning science and cognitive psychology, with educational measurement for quiz construction. Every source below was opened, the papers through the PubMed API and the practice guide as a PDF. Each entry quotes the passage relied on, and a later session extends this file rather than re-arguing an item settled here.
9
+
10
+ ## Contents
11
+
12
+ - [Adopted](#adopted)
13
+ - [Declined](#declined)
14
+ - [House judgment](#house-judgment)
15
+
16
+ ## Adopted
17
+
18
+ ### Retrieval over restudy, and fluency against retention
19
+
20
+ [Roediger and Karpicke 2006, Test-enhanced learning](https://pubmed.ncbi.nlm.nih.gov/16507066/) backs testing before reviewing, and the rule that confidence says nothing about retention.
21
+
22
+ - Passage: "prior testing produced substantially greater retention than studying, even though repeated studying increased students' confidence in their ability to remember the material"
23
+ - The same abstract: "When the final test was given after 5 min, repeated studying improved recall relative to repeated testing"
24
+ - Adopted in `pedagogy.md` as the fluency and retrieval sections, and in the body's excuses table
25
+
26
+ ### Failing an attempt before the answer
27
+
28
+ [Kornell, Hays and Bjork 2009, Unsuccessful retrieval attempts enhance subsequent learning](https://pubmed.ncbi.nlm.nih.gov/19586265/) backs asking before telling and letting the learner fail first.
29
+
30
+ - Passage: in the test condition "participants attempted to answer the question before being shown the answer", and "Unsuccessful retrieval attempts enhanced learning with both types of materials"
31
+ - The read-only condition it beat is "the question and answer were presented together"
32
+ - Adopted as the rule to open on the question, and in `lesson-craft.md` as feedback after the attempt rather than beside the question
33
+
34
+ ### Spacing, and the gap growing with the interval
35
+
36
+ [Cepeda et al. 2006, Distributed practice in verbal recall tasks](https://pubmed.ncbi.nlm.nih.gov/16719566/) backs spacing, and the best gap growing with how long the material has to last.
37
+
38
+ - Passage: "the ISI producing maximal retention increased as retention interval increased"
39
+ - Adopted as the spacing section's principle. It names no schedule and reports no result for expanding gaps, so the ladder is house judgment.
40
+
41
+ [Pashler et al. 2007, IES practice guide NCER 2007-2004](https://ies.ed.gov/ncee/wwc/Docs/PracticeGuide/20072004.pdf) backs the same at classroom scale, and its panel rates the evidence moderate.
42
+
43
+ - Passage: key concepts seen on at least two occasions, "separated by a period of several weeks to several months"
44
+ - Adopted as the rule to revisit once forgetting has begun rather than while the material is fresh
45
+
46
+ ### Quizzing at every phase
47
+
48
+ The same IES guide, in Recommendation 5, backs carrying a quiz in every lesson. Its panel rates quizzes that re-expose key content as strong evidence and pre-questions as low.
49
+
50
+ - Passage: "Use quizzing with active retrieval of information at all phases of the learning process"
51
+ - Adopted as the rule to carry a quiz. Opening on a question rests on Kornell, Hays and Bjork above, with this as weak support.
52
+
53
+ ### Worked examples while acquiring
54
+
55
+ The IES guide's Recommendation 2 backs worked examples for a learner taking on a procedure, rated moderate.
56
+
57
+ - Passage: students "learn more by alternating between studying examples of worked-out problem solutions and solving similar problems on their own"
58
+ - Adopted as the clause introducing new material through worked examples. The wider split between skill and knowledge is house judgment below.
59
+
60
+ ### Interleaving exemplars
61
+
62
+ [Kornell and Bjork 2008, Learning concepts and categories](https://pubmed.ncbi.nlm.nih.gov/18578849/) backs mixing related items within a session, and names the fluency trap of blocked practice.
63
+
64
+ - Passage: paintings "presented consecutively (massed) or interleaved with other artists' paintings (spaced)", and induction profited from the interleaved order
65
+ - The same abstract: "Participants rated massing as more effective than spacing"
66
+ - Adopted as the claim that blocked practice feels better and teaches less. The study mixes exemplars of categories, so mixing topics is an extension, recorded below.
67
+
68
+ ### Feedback on a quiz
69
+
70
+ [Butler and Roediger 2008, Feedback and multiple-choice testing](https://pubmed.ncbi.nlm.nih.gov/18491500/) backs giving feedback on a multiple-choice quiz.
71
+
72
+ - Passage: "The selection of lures can lead students to acquire false knowledge", and feedback "reduced the proportion of intrusions"
73
+ - Adopted as the rule to write feedback for every question. It tests feedback against none, not where distractors come from or how feedback explains them.
74
+ - It found immediate and delayed feedback both help, so the timing rule rests on Kornell, Hays and Bjork instead
75
+
76
+ ### The teach-back
77
+
78
+ [Nestojko et al. 2014, Expecting to teach](https://pubmed.ncbi.nlm.nih.gov/24845756/) backs asking the learner to explain to an audience.
79
+
80
+ - Passage: "Participants expecting to teach produced more complete and better organized free recall of the passage"
81
+ - Adopted as the teach-back block and its named audience
82
+ - The participants expected to teach and never taught. The finding backs framing the ask as teaching, not a gain from the explanation itself.
83
+
84
+ ## Declined
85
+
86
+ ### A fixed schedule from the literature
87
+
88
+ Cepeda's synthesis and the IES guide each tie the best gap to how long the material has to last, and neither names a sequence of days. Neither is cited for the ladder, so the ladder does not read as sourced.
89
+
90
+ ### Dunlosky et al. 2013
91
+
92
+ [Improving students' learning](https://journals.sagepub.com/doi/10.1177/1529100612453266) refused with a 403. It stays a lead, never cited, and is the first source to open when extending the retrieval or spacing rules.
93
+
94
+ ### Leads not opened
95
+
96
+ Bjork on desirable difficulties, Vygotsky on the zone of proximal development, and Haladyna, Downing and Rodriguez 2002 on item writing were each searched for and not opened. The item-writing review refused with a 403 at the publisher, and Crossref carries no abstract for it. Each rule it would back is labeled below.
97
+
98
+ ## House judgment
99
+
100
+ These rules stay with no opened source behind them, each for the reason given.
101
+
102
+ - **The review ladder.** The 1, 3, 7, 16, and 35 day rungs, and moving a rung on each hit or miss, are a house schedule. An author told to widen a gap settles on whatever feels right.
103
+ - **Forgetting as the mechanism of spacing.** It explains why the gap matters, and no opened source tests it.
104
+ - **Production over selection, and no cue in the question.** Both studies above compare testing with restudy, and neither compares a recognition test.
105
+ - **Misconception distractors, explained one by one.** A distractor nobody holds removes itself, and Butler tests only feedback against none.
106
+ - **Interleaving topics rather than exemplars.** This extends Kornell and Bjork and the IES worked-example finding. It stays because working out which approach a problem calls for carries over.
107
+ - **Never interleaving an unseen topic.** Telling two things apart needs something on each side.
108
+ - **Where difficulty helps and hurts.** The split stays because it changes what a lesson withholds. Kornell, Hays and Bjork back difficulty at retrieval, and IES backs worked examples while acquiring.
109
+ - **The zone of proximal development.** Placing the learner just past what they can do unaided is how a session picks the next step from the learning record.
110
+ - **Equal option length.** A longer option reads as the considered one, and a session can check the rule by counting.
111
+ - **Rotating the correct slot.** An author varying position by judgment settles on the first slot.
112
+ - **Restraint and what makes a lesson worth returning to.** Both are editorial judgment about a page rather than claims about memory.
113
+ - **The sourcing ladder.** It is this toolkit's rule for what a lesson cites, not a finding about learning.
@@ -5,7 +5,7 @@ description: Restraint, quiz design, teach back, and what makes a lesson worth r
5
5
 
6
6
  # Lesson craft reference
7
7
 
8
- Judgment rather than shape. This file covers what makes a lesson worth opening twice, whatever surface it renders on.
8
+ Judgment rather than shape. This file covers what makes a lesson worth opening twice, whatever surface it renders on. Each section names its research or says it is house judgment, and `adopted.md` beside this file carries the passages.
9
9
 
10
10
  ## Contents
11
11
 
@@ -23,6 +23,8 @@ Every element competes with the material for attention.
23
23
  - Do not animate anything the learner did not trigger
24
24
  - Prefer whitespace over rules and boxes to separate sections
25
25
 
26
+ This section is house judgment, an editorial call about a page rather than a claim about memory.
27
+
26
28
  ## Quiz design
27
29
 
28
30
  The quiz is the retrieval, so a leak in its construction turns it into a reading test.
@@ -35,18 +37,24 @@ The quiz is the retrieval, so a leak in its construction turns it into a reading
35
37
 
36
38
  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
39
 
40
+ Butler and Roediger 2008 back giving feedback on a multiple-choice quiz, since its lures can teach false knowledge. Kornell, Hays and Bjork 2009 back giving it after the attempt. Misconception distractors, explaining each one, equal option length, and the slot rotation are house judgment.
41
+
38
42
  ## Teach back
39
43
 
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.
44
+ A quiz is recognition and a teach-back is production, which this skill prefers as house judgment. 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
45
 
42
46
  - 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
47
  - 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
48
  - 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
49
  - 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
50
 
51
+ Nestojko et al. 2014 back framing the ask as teaching a named audience. The self-check rules are house judgment.
52
+
47
53
  ## What makes a lesson worth returning to
48
54
 
49
55
  - The worked example is complete. A learner returning for the example finds the whole thing rather than a fragment they have to reconstruct.
50
56
  - The lesson states what it assumes. A returning reader can tell in one line whether they are in the right place.
51
57
  - 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
58
  - Nothing depends on the session it was written in. A lesson referring to what was discussed is unreadable a week later.
59
+
60
+ This section is house judgment, like restraint above.
@@ -7,15 +7,29 @@ description: Fluency against storage strength, retrieval practice, spacing, inte
7
7
 
8
8
  The rules a lesson is built from. Read this before picking what to teach next.
9
9
 
10
+ Each section names the research behind it or says it is house judgment. The passage each source was taken from, and the reason each house rule stays, sit in `adopted.md` beside this file.
11
+
12
+ ## Contents
13
+
14
+ - [Fluency is not storage strength](#fluency-is-not-storage-strength)
15
+ - [Retrieval practice](#retrieval-practice)
16
+ - [Spacing](#spacing)
17
+ - [Interleaving](#interleaving)
18
+ - [The zone of proximal development](#the-zone-of-proximal-development)
19
+ - [Where difficulty helps and where it hurts](#where-difficulty-helps-and-where-it-hurts)
20
+ - [Sourcing](#sourcing)
21
+
10
22
  ## Fluency is not storage strength
11
23
 
12
- A learner who follows an explanation smoothly has demonstrated that the explanation was clear. That is fluency, and it decays within days. Storage strength is whether the material can be retrieved later without the explanation present, and the two move independently.
24
+ A learner who follows an explanation smoothly has demonstrated that the explanation was clear. That is fluency, and it does not last. Storage strength is whether the material can be retrieved later without the explanation present, and the two move independently.
13
25
 
14
26
  The practical consequence is that a lesson cannot report its own success. Only a later retrieval can, which is why the learning record exists and why every session opens by testing the last one rather than by reviewing it.
15
27
 
16
28
  - Treat a learner's confidence as evidence about the lesson, never about their retention
17
29
  - Never advance on the strength of a smooth session. Advance on a retrieval the learner passed unaided.
18
30
 
31
+ Roediger and Karpicke 2006 back this section. Restudying won on a test five minutes later and lost on the delayed tests, while it raised the learners' confidence.
32
+
19
33
  ## Retrieval practice
20
34
 
21
35
  Pulling an answer out of memory strengthens it far more than reading it again. Recognition is the weak form: a learner who picks the right option from four has done less work than one who produced the answer from nothing.
@@ -24,6 +38,7 @@ Pulling an answer out of memory strengthens it far more than reading it again. R
24
38
  - Prefer a question the learner has to produce an answer to over one they select from
25
39
  - Let the learner fail an attempt before correcting it. A failed retrieval followed by the answer beats being told first.
26
40
  - Do not cue the answer in the question. A question restating the material tests reading rather than memory.
41
+ - Asking first and the failed attempt rest on Kornell, Hays and Bjork 2009. Production over selection and the no-cue rule are house judgment, since no opened study compared a recognition test.
27
42
 
28
43
  The teach-back block is the production form this section prefers, which is why a lesson carries one beside its quiz. A quiz is recognition, so a lesson offering only one tests the weak form and reports it as retrieval.
29
44
 
@@ -33,6 +48,8 @@ Explaining the material to somebody who lacks it makes the learner produce the w
33
48
  - Name the audience the explanation is for, since an explanation with no reader has no floor to sit above
34
49
  - Record what the explanation left out under what the learner got wrong. A missed production and a missed selection are both retrieval failures, and two sections would split one placement input.
35
50
 
51
+ Nestojko et al. 2014 found that expecting to teach produced fuller and better organized recall. Its participants never taught, so the finding backs framing the ask as teaching.
52
+
36
53
  ## Spacing
37
54
 
38
55
  The same total time spread across days beats the same time in one sitting. Forgetting between sessions is the mechanism rather than the cost, because effortful retrieval is what strengthens the trace.
@@ -41,10 +58,14 @@ The same total time spread across days beats the same time in one sitting. Forge
41
58
  - Widen the gap each time a topic is retrieved correctly, and shorten it after a miss
42
59
  - Name what to revisit and when in the learning record, so the next session has a schedule rather than a guess
43
60
 
61
+ Cepeda et al. 2006 found the best gap grew with how long the material had to last, and the IES practice guide recommends spacing at classroom scale. Forgetting as the mechanism, and widening or shortening the gap after each retrieval, are house judgment.
62
+
44
63
  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
64
 
46
65
  - 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
47
66
 
67
+ The ladder is house judgment. No opened source names a sequence of days or tests a gap that widens after each correct retrieval.
68
+
48
69
  ## Interleaving
49
70
 
50
71
  Mixing related topics within a session beats finishing one before starting the next. Blocked practice inflates in-session performance and hurts what survives it, because the learner stops having to work out which approach a problem calls for.
@@ -53,6 +74,8 @@ Mixing related topics within a session beats finishing one before starting the n
53
74
  - Keep problems in a mixed set close enough that telling them apart is the work
54
75
  - Do not interleave a topic the learner has never seen. Interleaving discriminates between things already known.
55
76
 
77
+ Kornell and Bjork 2008 found interleaved paintings taught each artist's style better, while learners rated blocked study as more effective. The study mixed exemplars of categories, so mixing topics and the unseen-topic clause are house judgment.
78
+
56
79
  ## The zone of proximal development
57
80
 
58
81
  The productive band is what the learner cannot do alone and can do with support. Below it the session is review, and above it the support carries the whole task and nothing transfers.
@@ -62,6 +85,8 @@ The productive band is what the learner cannot do alone and can do with support.
62
85
  - Withdraw support as the learner succeeds, and restore it on a miss rather than repeating the lesson
63
86
  - Where the records show nothing, ask. A guessed starting point misses in both directions.
64
87
 
88
+ This section is house judgment. Vygotsky's account was not opened, so the band rests on how a session picks the next step from the record rather than on a citation.
89
+
65
90
  ## Where difficulty helps and where it hurts
66
91
 
67
92
  Difficulty is not uniformly good. It helps skill acquisition, where the learner is building a procedure they will execute, and it hurts knowledge acquisition, where the learner is taking on facts and structure they do not have yet.
@@ -70,9 +95,11 @@ Difficulty is not uniformly good. It helps skill acquisition, where the learner
70
95
  - Add difficulty once the learner is practicing rather than acquiring: withhold the worked step, vary the surface of the problem, delay the feedback
71
96
  - Never confuse a hard explanation with a hard problem. A confusing explanation adds load that teaches nothing.
72
97
 
98
+ The split between skill and knowledge acquisition is house judgment. The IES guide backs worked examples while a learner acquires a procedure, and Kornell, Hays and Bjork back difficulty at retrieval.
99
+
73
100
  ## Sourcing
74
101
 
75
- Parametric recall is confident where it is wrong, and a learner cannot audit it. Every claim in a lesson traces to something read.
102
+ Parametric recall is confident where it is wrong, and a learner cannot audit it. Every claim in a lesson traces to something read. This section is the toolkit's rule for what a lesson cites rather than a finding about memory.
76
103
 
77
104
  - Read the subject from sources before teaching, and record each one with its link
78
105
  - Mark any claim resting on recall as resting on recall, in the lesson itself
@@ -70,14 +70,6 @@ After a rename the new name shows as `missing` when the stamp records a stack, a
70
70
 
71
71
  `canon tooling inject` and `prune-gitignore` apply one stack with no scan or prompt, and the latter prints the number removed on stdout. Use `sync` unless scripting provisioning, and pass `--nested` inside an open frame.
72
72
 
73
- ## Design
74
-
75
- - `canon design install` copies `base.css` to `.claude/design/` and creates no override
76
- - Project overrides live in `.claude/design/project/`, which `design sync` never touches
77
- - `canon design fonts add <file> --family <name>` copies a `woff2`, `woff`, `ttf`, or `otf` face into `project/fonts/` with its `fonts.css` rule, and refuses mismatched bytes as `invalid-font`
78
- - `fonts list --json` flags a missing or out-of-folder file as a `problem`
79
- - `canon sync` skips the domain where `design install` never ran
80
-
81
73
  ## Whole-project sync
82
74
 
83
75
  `canon sync [path]` runs every installed domain sync, then offers a commit and pull request. Headlessly it applies the syncs, refuses the git workflow, reports what it would have made, and exits 0. It refuses a dirty working tree.
@@ -121,7 +121,7 @@ From the registry the walk reports `historyUnavailable`, so check both paths by
121
121
  | ----------------- | ------------------------------------------------------------- |
122
122
  | `task-board` | `board`, `tasks`, `tasks-decline` |
123
123
  | `context-fold` | `context` |
124
- | `canvas-board` | `canvas`, `design` |
124
+ | `canvas-board` | `canvas`, `design` <!-- canon-keep-retired --> |
125
125
  | `docs-sync` | `docs`, `readme` |
126
126
  | `draw-figure` | `figures`, `mermaid` |
127
127
  | `create-rule` | `rule` |
@@ -150,12 +150,17 @@ The wireframes record is retired, and nothing deletes what a project holds.
150
150
 
151
151
  ## Keep or delete the retired product files, your call
152
152
 
153
- The learning workspace, the deck renderer, and the app recorder are retired with their verbs and skills, and nothing deletes what a project holds.
153
+ The learning workspace, deck renderer, app recorder, canvas, and design install are retired with their verbs, and nothing deletes what a project holds.
154
154
 
155
- - `.canon/teach/` holds rendered HTML that opens as it is, so it needs nothing <!-- canon-keep-retired -->
155
+ - `.canon/teach/` holds HTML that opens as it is <!-- canon-keep-retired -->
156
156
  - `.canon/slides/` and a `demos/` folder hold sources nothing renders any more, so delete them once nothing cites them <!-- canon-keep-retired -->
157
+ - Move the `.claude/design/project/` values, `fonts/`, and `fonts.css` to the stylesheet your `canon/DESIGN.md` lead names, then delete `.claude/design/`
158
+
159
+ A reference to a retired skill takes a hand edit.
160
+
157
161
  - Replace a `canon:teach-workspace` reference with `canon:teach-craft` by hand, since `canon migrate skill-names` does not rewrite it <!-- canon-keep-retired -->
158
162
  - Delete a `canon:make-deck`, `canon:script-screencast`, `canon:record-screencast`, `canon:read-frames`, or `canon:video-craft` reference, since none has a successor <!-- canon-keep-retired -->
163
+ - Delete a `canon:canvas-board` reference too. Frameboard, which `canon:pick-by-eye` drives, reads each `.canon/canvas/` folder as a project, so move a kept page under one <!-- canon-keep-retired -->
159
164
 
160
165
  ## Move decisions out of a held architecture record, once
161
166
 
@@ -56,7 +56,7 @@ Keep the `## Scripts` table in `canon/context/development/local-loop.md` current
56
56
  Before the first feature session:
57
57
 
58
58
  1. Fill `canon/REQUIREMENTS.md` with the problem, goals, and non-goals. The seed's 600-word cap gates under `canon context audit`.
59
- 2. For a UI project, write `canon/DESIGN.md` from the seed and name the stylesheet in its lead, or work the direction out with `canon:canvas-board`
59
+ 2. For a UI project, write `canon/DESIGN.md` from the seed and name the stylesheet in its lead, or work the direction out with `canon:pick-by-eye`
60
60
  3. Optionally invoke `canon:draw-figure` for an architecture view. The Mermaid CLI downloads on first use.
61
61
  4. Start the feature loop in [AI workflow](../workflow/ai-workflow.md)
62
62
 
@@ -25,7 +25,6 @@ Groups run in the order a project meets them. Every name `canon claude skills li
25
25
  | `canon:plan-groundwork` | The state is unmeasured and approaches compete |
26
26
  | `canon:decision-escalate` | Open decisions turn on your preference |
27
27
  | `canon:pick-by-eye` | The call is taste, wanting candidates side by side |
28
- | `canon:canvas-board` | A direction should be drawn as editable frames |
29
28
  | `canon:task-board` | A decided item needs a file on the board |
30
29
  | `canon:plan-feature` | The approach is settled and needs a plan |
31
30
  | `canon:codebase-layout` | A change adds a file and needs a folder |
@@ -13,14 +13,11 @@ Three tiers run from prose-only design docs to a graphical source of truth, and
13
13
  The default. `canon/DESIGN.md` holds visual intent as one Overview paragraph, at most three one-line rules a section, and a table naming each color and shape role, with a lead naming the stylesheet. Claude Code alone suffices, and [`test-craft`](../../claude/skills/test-craft/SKILL.md) says which layer a Playwright journey belongs at.
14
14
 
15
15
  - The seed is `tooling/claude/seeds/canon/DESIGN.md`, and its column headers stay verbatim
16
- - `canon design render` previews it in `.canon/tmp/render/design/`
17
- - `canon design install` copies a neutral base to `.claude/design/base.css`, so override values in `.claude/design/project/`. See `canon/context/features/design.md`.
18
16
 
19
17
  These skills cover the tier:
20
18
 
21
19
  - `canon:ui-checklist`, `canon:ux-audit`, and `canon:ux-measure` review and measure a UI
22
- - `canon:pick-by-eye` drafts candidates as frames on the canvas and takes your pick
23
- - `canon:canvas-board` works a direction out as HTML frames you edit in the browser, and hands the pick on
20
+ - `canon:pick-by-eye` drafts candidates as frames on a [Frameboard](https://www.npmjs.com/package/frameboard) board and takes your pick
24
21
  - `canon:design-record` lands a pick in `canon/design/` and carries its values into `canon/DESIGN.md`
25
22
  - `canon:design-identity` drafts a logo mark and social card
26
23
 
@@ -9,8 +9,7 @@
9
9
  # root and in every folder to depth two. `files` are globs matched against the
10
10
  # target's git-listed paths to depth two, and against each folder on those
11
11
  # paths, so `.github/workflows` matches a folder holding a workflow. A glob with
12
- # no wildcard is also tested on disk, which reaches a gitignored path such as
13
- # `.canon/canvas`.
12
+ # no wildcard is also tested on disk, which reaches a gitignored path.
14
13
  #
15
14
  # Every rule no stack reaches needs a table here, which the `unreferenced-rules`
16
15
  # gate stage checks, along with every key naming a live rule. A table for a rule
@@ -201,10 +200,6 @@ files = ["index.html", "*/index.html"]
201
200
  deps = ["react", "vue", "svelte", "astro", "next", "solid-js", "preact"]
202
201
  files = ["index.html", "*/index.html"]
203
202
 
204
- ["canvas"]
205
- deps = []
206
- files = [".canon/canvas"]
207
-
208
203
  ["design-reference"]
209
204
  deps = []
210
205
  files = ["canon/design/*/"]
@@ -73,4 +73,3 @@
73
73
  "460-design-taste" = "design-taste"
74
74
  "465-interface-casing" = "interface-casing"
75
75
  "470-motion" = "motion"
76
- "480-canvas" = "canvas"
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@erclx/canon",
3
3
  "type": "module",
4
- "version": "5.53.0",
4
+ "version": "5.54.0",
5
5
  "description": "Runs your agent's work and keeps its code good, on one setup for every repo.",
6
6
  "license": "MIT",
7
7
  "bin": {
@@ -51,11 +51,9 @@
51
51
  "web:e2e": "cd web && playwright test"
52
52
  },
53
53
  "dependencies": {
54
- "@preact/signals": "^2.11.3",
55
54
  "commander": "^13.1.0",
56
55
  "execa": "^9.5.2",
57
- "playwright-core": "1.64.1",
58
- "preact": "^11.0.0"
56
+ "playwright-core": "1.64.1"
59
57
  },
60
58
  "devDependencies": {
61
59
  "@astrojs/check": "^0.9.8",
@@ -68,7 +66,6 @@
68
66
  "@types/bun": "^1.2.10",
69
67
  "@types/micromatch": "^4.0.10",
70
68
  "astro": "^6.1.9",
71
- "happy-dom": "^20.14.5",
72
69
  "husky": "^9.1.7",
73
70
  "micromatch": "^4.0.8",
74
71
  "oxfmt": "0.73.0",
@@ -22,11 +22,6 @@ export const MISC_CASES: readonly SkillCase[] = [
22
22
  'This project has no logo yet. Draft one and give me a social card to go with it.',
23
23
  expect: 'design-identity',
24
24
  },
25
- {
26
- prompt:
27
- 'Draw the signup screen as a frame on the canvas, then restyle the element I just selected there.',
28
- expect: 'canvas-board',
29
- },
30
25
  {
31
26
  prompt:
32
27
  'The operator picked the new settings panel, so land it in canon/design with an index row for it.',
@@ -55,6 +55,7 @@ export const PRACTICE_SKILLS: readonly string[] = [
55
55
  join(SHIPPED_CORPUS, 'build-in-slices'),
56
56
  join(SHIPPED_CORPUS, 'deprecation-migration'),
57
57
  join(SHIPPED_CORPUS, 'search-craft'),
58
+ join(SHIPPED_CORPUS, 'teach-craft'),
58
59
  ]
59
60
 
60
61
  /**
package/src/cli/help.ts CHANGED
@@ -43,7 +43,6 @@ export const COMMAND_GROUPS: { title: string; rows: CommandRow[] }[] = [
43
43
  ['inventory [subj]', 'Report one computed property across every route'],
44
44
  ['drive <url> <run>', 'Walk a page through interactions, measure each'],
45
45
  ['transcripts <url>', 'Fetch a YouTube transcript with frontmatter'],
46
- ['canvas [cmd]', 'Local canvas of pages and frames'],
47
46
  ],
48
47
  },
49
48
  {
@@ -98,8 +97,6 @@ const EXAMPLES = [
98
97
  'canon indexes regen --dry-run --json',
99
98
  'canon docs list --json',
100
99
  'canon docs agents',
101
- 'canon design render',
102
- 'canon canvas list --json',
103
100
  'canon capture assets/captures/install.html --selector .window --out assets/frames',
104
101
  'canon inventory focus --json',
105
102
  'canon drive http://localhost:4173 run.json --json',
package/src/cli.ts CHANGED
@@ -18,7 +18,6 @@ import { register as feedback } from '@/commands/feedback'
18
18
  import { register as transcripts } from '@/commands/transcripts'
19
19
  import { register as tasks } from '@/commands/tasks'
20
20
  import { register as intake } from '@/commands/intake'
21
- import { register as canvas } from '@/commands/canvas'
22
21
  import { register as comments } from '@/commands/comments'
23
22
  import { register as context } from '@/commands/context'
24
23
  import { register as markdown } from '@/commands/markdown'
@@ -76,7 +75,6 @@ feedback(program)
76
75
  transcripts(program)
77
76
  tasks(program)
78
77
  intake(program)
79
- canvas(program)
80
78
  comments(program)
81
79
  context(program)
82
80
  markdown(program)