@erclx/canon 4.74.0 → 4.75.1
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/claude/.claude-plugin/plugin.json +1 -1
- package/claude/skills/create-skill/SKILL.md +0 -1
- package/claude/skills/docs-fold/SKILL.md +1 -1
- package/claude/skills/git-followup/SKILL.md +9 -5
- package/claude/skills/git-pr/SKILL.md +21 -0
- package/claude/skills/markdown-propose/REQUIREMENT.md +1 -1
- package/claude/skills/markdown-propose/SKILL.md +9 -7
- package/claude/skills/markdown-propose/references/format.md +5 -3
- package/claude/skills/plan-feature/SKILL.md +1 -1
- package/claude/skills/review-pr/SKILL.md +2 -2
- package/claude/skills/role-orchestrator/scripts/poll.sh +16 -10
- package/claude/skills/teach-workspace/references/lesson-craft.md +1 -6
- package/docs/agents/commands.md +1 -0
- package/docs/agents/index.md +1 -0
- package/docs/agents/pr-evidence.md +108 -0
- package/governance/rules/ui/440-surface-capture.md +1 -0
- package/package.json +1 -1
- package/src/commands/design.ts +10 -2
- package/src/commands/pr.ts +220 -0
- package/src/design/base.css +59 -0
- package/src/design/components.ts +80 -50
- package/src/design/fonts.ts +21 -0
- package/src/pr/evidence.ts +171 -0
- package/src/teach/fonts.ts +9 -11
- package/standards/architecture.md +1 -0
- package/standards/figures.md +51 -0
- package/standards/groundwork.md +1 -0
- package/standards/index.md +1 -0
- package/standards/intake.md +1 -0
- package/standards/skill.md +1 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Figure reference
|
|
3
|
+
description: 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
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Figure reference
|
|
7
|
+
|
|
8
|
+
Applies to every hand-drawn figure, wherever it is authored. A figure sits inside a document some other standard shapes, so this file reaches the figure and stops at its closing `</figure>` tag.
|
|
9
|
+
|
|
10
|
+
## Scope
|
|
11
|
+
|
|
12
|
+
Governs a hand-drawn figure wherever one is authored, naming no path because an attribute standard governs a fragment rather than a document type: when it earns its place, the render-first policy routing a graph-shaped subject through Mermaid, the wrapping and caption every figure carries, and its color and accessibility rules. It carries no template, since a figure has no document shape of its own and sits inside one another standard sets.
|
|
13
|
+
|
|
14
|
+
Does not govern:
|
|
15
|
+
|
|
16
|
+
- Direction, layout, node and edge budgets, labels, and render verification for the Mermaid path: `mermaid.md`
|
|
17
|
+
- The toolkit's own architecture-diagram surface at `.canon/diagrams/`, which shares no code, font, or visual language with this convention: `diagrams.md`
|
|
18
|
+
- Language, word choice, punctuation, and formatting in the caption or surrounding prose: `markdown.md`
|
|
19
|
+
- Voice, rhythm, and sentence construction in that prose: the `write-human` skill
|
|
20
|
+
- Which document types may carry a figure, and what else they require: that document type's own standard
|
|
21
|
+
|
|
22
|
+
## What a working figure looks like
|
|
23
|
+
|
|
24
|
+
A figure works when a reader who cannot see it still gets what it was for, and one who can see it gets nothing a well-placed sentence could not carry:
|
|
25
|
+
|
|
26
|
+
- Does the subject clear the bar: a relationship, a boundary, a path, or a before-and-after that prose or a list cannot carry as well?
|
|
27
|
+
- Does the caption name what to take from the figure rather than what it shows?
|
|
28
|
+
- Does the figure still read after every color and font it depends on is stripped to its fallback?
|
|
29
|
+
|
|
30
|
+
A figure failing these is non-conforming even when it satisfies every shape rule below.
|
|
31
|
+
|
|
32
|
+
## When a figure earns its place
|
|
33
|
+
|
|
34
|
+
- Draw a figure only when a relationship, a boundary, a path, or a before-and-after is the point of the passage rather than decoration for it. Most passages do not clear that bar.
|
|
35
|
+
- Leave the point in prose or a list when it already carries there. A figure reaching for every passage repeats the failure restraint already guards against elsewhere in the document.
|
|
36
|
+
|
|
37
|
+
## The render-first policy
|
|
38
|
+
|
|
39
|
+
- Route a graph-shaped subject, one whose relationship, boundary, or path a flowchart already expresses, through Mermaid's own hand-drawn look rather than through model-authored SVG coordinates. `mermaid.md` governs the fence itself.
|
|
40
|
+
- Reserve freehand inline SVG, plain shapes and lines authored directly in the markup, for a subject that is not graph-shaped. A figure that cannot express its subject through the deterministic path is a worse failure than an inconsistent one drawn by hand, so the hatch stays open rather than forcing every figure through the renderer.
|
|
41
|
+
- State this as a render-first policy rather than a ban on a tool-exported drawing. Routing a graph-shaped figure through Mermaid is itself running it through an external tool, so a rule banning any diagram "exported from a diagramming tool" would forbid the path this policy requires.
|
|
42
|
+
|
|
43
|
+
## Wrapping and captioning
|
|
44
|
+
|
|
45
|
+
- Wrap a figure in a `<figure>` element holding its drawing and a `<figcaption>` that names what to take from the figure rather than what it shows.
|
|
46
|
+
- Let the figure run wider than the surrounding prose column. A figure cramped to the reading measure loses the labels it needs.
|
|
47
|
+
|
|
48
|
+
## Color and accessibility
|
|
49
|
+
|
|
50
|
+
- Color every fill and stroke through a custom property the surrounding document's own stylesheet defines, never a literal hex value. The figure then re-colors itself on the same switch that re-colors the page.
|
|
51
|
+
- Give the drawing an accessible name: `role="img"` with `aria-label` for one short line, or `aria-labelledby` pointing at a `<title>` element inside it for a longer one.
|
package/standards/groundwork.md
CHANGED
|
@@ -25,6 +25,7 @@ Does not govern:
|
|
|
25
25
|
## Folder name
|
|
26
26
|
|
|
27
27
|
- Name the folder `<nn>-<slug>`, a two-digit zero-padded ordinal followed by a kebab-case slug.
|
|
28
|
+
- The ordinal marks a folder per track, opened once and worked over time, distinct from a file addressed by name, one already carrying its own sorting prefix, or one deliberately overwritten.
|
|
28
29
|
- Claim the ordinal through `canon records ordinal groundwork <slug> --claim`, which reads the highest one already present across both `.canon/groundwork/` and `.canon/intake/` and creates the folder in the same atomic act, closing the race a read-then-create sequence leaves open between two sessions opening at once. A listing then sorts by when each folder opened rather than alphabetically, and the count includes both kinds because the two share one creation-order line.
|
|
29
30
|
- With neither folder holding an entry, the first one opened takes `01`. Do not read this off the numbering inside a track, which starts at `00` on a large one and disagrees with intake's own first file.
|
|
30
31
|
- Never renumber an existing folder. The ordinal is the order it opened, and a later reader cites it by that name.
|
package/standards/index.md
CHANGED
|
@@ -14,6 +14,7 @@ Reference docs for consistent authoring across the toolkit and target projects.
|
|
|
14
14
|
- [Design reference](design.md): Shape and content rules for .claude/DESIGN.md
|
|
15
15
|
- [Diagram reference](diagrams.md): Shape and content rules for .canon/diagrams/<kind>.md files
|
|
16
16
|
- [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
|
|
17
|
+
- [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
|
|
17
18
|
- [Glossary reference](glossary.md): Frontmatter, entry shape, ordering, and the rules deciding which terms a glossary carries
|
|
18
19
|
- [Groundwork reference](groundwork.md): Folder layout, ordinal naming, reserved numbering, frontmatter and dating, required file contents, and conventions for a measurement track
|
|
19
20
|
- [Intake reference](intake.md): Folder layout, ordinal naming, reserved index number, frontmatter and dating, the item template, the answer contract, and retrieval
|
package/standards/intake.md
CHANGED
|
@@ -25,6 +25,7 @@ Does not govern:
|
|
|
25
25
|
## Folder name
|
|
26
26
|
|
|
27
27
|
- Name the folder `<nn>-<slug>`, a two-digit zero-padded ordinal followed by a kebab-case slug. This is the folder's own ordinal, distinct from the `NN-<domain>.md` numbering a cluster file carries inside it.
|
|
28
|
+
- The ordinal marks a folder per track, opened once and worked over time, distinct from a file addressed by name, one already carrying its own sorting prefix, or one deliberately overwritten.
|
|
28
29
|
- Claim the ordinal through `canon records ordinal intake <slug> --claim`, which reads the highest one already present across both `.canon/intake/` and `.canon/groundwork/` and creates the folder in the same atomic act, closing the race a read-then-create sequence leaves open between two sessions opening at once. A listing then sorts by when each folder opened rather than alphabetically, and the count includes both kinds because the two share one creation-order line.
|
|
29
30
|
- With neither folder holding an entry, the first one opened takes `01`. Do not read this off the numbering inside a dump, which starts at `00` and disagrees with groundwork's own first required file.
|
|
30
31
|
- Never renumber an existing folder. The ordinal is the order it opened, and a later reader cites it by that name.
|
package/standards/skill.md
CHANGED
|
@@ -156,7 +156,7 @@ Without this skill, a session <observed failure>, <observed failure>.
|
|
|
156
156
|
|
|
157
157
|
- `name` (required): kebab-case, matches folder name, no spaces or capitals
|
|
158
158
|
- `description` (required): what it does + when to use it, under 1024 chars, no XML tags
|
|
159
|
-
- `disable-model-invocation: true`: user-invoked only, Claude will not auto-trigger
|
|
159
|
+
- `disable-model-invocation: true`: user-invoked only, Claude will not auto-trigger. Set it on a skill that starts a process the operator owns, never on one reachable by a matched trigger. The field marks that boundary, not a style preference.
|
|
160
160
|
- `allowed-tools`: restrict tool access when the skill is active
|
|
161
161
|
- `metadata`: optional key-value pairs (`author`, `version`, `mcp-server`)
|
|
162
162
|
|