@erclx/aitk 0.49.0 → 0.50.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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "aitk",
3
3
  "description": "Automated governance, versioning, and discovery tools for Claude Code.",
4
- "version": "0.49.0",
4
+ "version": "0.50.0",
5
5
  "author": {
6
6
  "name": "Eric Le",
7
7
  "url": "https://github.com/erclx"
@@ -18,7 +18,7 @@ The default. `.claude/DESIGN.md` holds visual intent as prose plus token tables
18
18
 
19
19
  ### Seed shape
20
20
 
21
- The toolkit seed in `tooling/claude/seeds/.claude/DESIGN.md` ships a token-table template. The `aitk:claude-design-extract` skill drafts the file, sourcing tokens from a project's existing prose and CLI UI surfaces, or proposing them from `.claude/REQUIREMENTS.md` and a `## Personality` paragraph when no UI code exists yet. `aitk design render` writes an HTML plus CSS preview to `.claude/review/design/` for eyeballing the current system without leaving Claude Code. See `.claude/context/design.md`.
21
+ The toolkit seed in `tooling/claude/seeds/.claude/DESIGN.md` ships a token-table template with a starting set of roles, and `.claude/standards/design.md` carries the same tables under `## Template` with placeholder rows. The column headers are what the renderer parses, so they stay verbatim in either, while the rows and values are the project's own. The `aitk:claude-design-extract` skill drafts the file, sourcing tokens from a project's existing prose and CLI UI surfaces, or proposing them from `.claude/REQUIREMENTS.md` and a `## Personality` paragraph when no UI code exists yet. `aitk design render` writes an HTML plus CSS preview to `.claude/review/design/` for eyeballing the current system without leaving Claude Code. See `.claude/context/design.md`.
22
22
 
23
23
  ### Tools
24
24
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@erclx/aitk",
3
3
  "type": "module",
4
- "version": "0.49.0",
4
+ "version": "0.50.0",
5
5
  "description": "Infrastructure and quality tooling for developer workflows",
6
6
  "license": "MIT",
7
7
  "bin": {
@@ -37,3 +37,47 @@ Does not govern:
37
37
  ## Sections
38
38
 
39
39
  Use `## Personality`, `## Color`, `## Typography`, `## Spacing`, `## Borders`, `## Motion`, and `## Iconography`. The token tables carry fixed headers the renderer reads.
40
+
41
+ ## Template
42
+
43
+ The column headers are the strings the renderer parses, read by exact key, so they stay verbatim. Row names are not. Each is slugged into the variable name it emits, which leaves a project free to rename a row, add one, or drop one it has no use for.
44
+
45
+ ```markdown
46
+ # Design
47
+
48
+ ## Personality
49
+
50
+ <one paragraph on voice, tone, and the feeling a user should have>
51
+
52
+ ## Color
53
+
54
+ | Role | Intent | Value |
55
+ | ------ | ---------------- | ------- |
56
+ | <role> | <what it is for> | <value> |
57
+
58
+ ## Typography
59
+
60
+ | Role | Family | Weight | Size | Line height |
61
+ | ------ | -------- | -------- | ------ | ----------- |
62
+ | <role> | <family> | <weight> | <size> | <height> |
63
+
64
+ ## Spacing
65
+
66
+ | Step | Multiplier | Value |
67
+ | ------ | ------------ | ------- |
68
+ | <step> | <multiplier> | <value> |
69
+
70
+ ## Borders
71
+
72
+ | Role | Radius | Width | When used |
73
+ | ------ | -------- | ------- | ----------- |
74
+ | <role> | <radius> | <width> | <when used> |
75
+
76
+ ## Motion
77
+
78
+ <whether motion is used at all, and if so the default duration and easing>
79
+
80
+ ## Iconography
81
+
82
+ <style, source library, and whether custom icons are allowed>
83
+ ```
@@ -122,3 +122,31 @@ Reference the context entry by path when a reader needs the mechanism. The diagr
122
122
  - That watch samples thinly. It sees the one or two paths an entry happened to cite and nothing else, so a change elsewhere leaves the entry looking current. `verified` is what covers the gap, and an entry whose date sits far behind the branch is due a read whether or not anything flagged it.
123
123
  - The explanation paragraphs around a Mermaid block are prose and follow `prose.md`. The fenced block itself is not, which is why a check scoped to prose is the wrong thing to rely on for what sits inside it.
124
124
  - The punctuation bans still apply to node and subgraph labels, and nothing checks them there. An em dash in a label passes every gate the repository has, so read the labels before shipping the entry.
125
+
126
+ ## Template
127
+
128
+ The filename and the `category` value both come from Entry kinds and are fixed per kind. A stub nobody has drawn yet carries `TODO: never verified` in place of the SHA and date. The node names and labels inside the fence are placeholders, written bare because Mermaid reads an angle bracket as markup.
129
+
130
+ ````markdown
131
+ ---
132
+ title: <what the entry answers>
133
+ description: <which question it settles and which source signal drives it>
134
+ category: <the kind, verbatim from Entry kinds>
135
+ verified: <short-sha> <YYYY-MM-DD>
136
+ ---
137
+
138
+ # <what the entry answers>
139
+
140
+ ```mermaid
141
+ flowchart TB
142
+ accTitle: what the diagram answers
143
+ accDescr: the structure in one sentence for a reader who cannot see the render
144
+
145
+ a[first part] --> b[second part]
146
+ b --> c[third part]
147
+ ```
148
+
149
+ <One paragraph leading with what the diagram shows.>
150
+
151
+ <One paragraph on why this shape was chosen and what was rejected, where the choice was non-obvious. Name one or two code paths the reader can open.>
152
+ ````
@@ -7,7 +7,7 @@ description: Scan run against finished text leaving through a channel no automat
7
7
 
8
8
  ## Scope
9
9
 
10
- Governs the scan an author runs against finished text on its way out, and the responses available when a source it reaches for cannot be read. It is an attribute standard rather than a document-type one, so it applies to any text leaving through a channel no automated check covers.
10
+ Governs the scan an author runs against finished text on its way out, and the responses available when a source it reaches for cannot be read. It is an attribute standard rather than a document-type one, so it applies to any text leaving through a channel no automated check covers, and it carries no template because a scan has no document to shape.
11
11
 
12
12
  Does not govern:
13
13
 
package/standards/slug.md CHANGED
@@ -7,7 +7,7 @@ description: Transform from a git branch name to a slug, and the three responses
7
7
 
8
8
  ## Scope
9
9
 
10
- Governs the transform from a git branch name to the slug a surface carries in a derived name, and the responses available when the transform returns empty. It is an attribute standard rather than a document-type one, so it applies wherever a branch-derived name is produced.
10
+ Governs the transform from a git branch name to the slug a surface carries in a derived name, and the responses available when the transform returns empty. It is an attribute standard rather than a document-type one, so it applies wherever a branch-derived name is produced, and it carries no template because a string has no document to shape.
11
11
 
12
12
  Does not govern:
13
13
 
@@ -91,3 +91,60 @@ A standard failing these questions is non-conforming even when it satisfies ever
91
91
  - When shown, label them `### Correct` and `### Incorrect` with an inline `# reason` on each entry
92
92
  - Keep to two or three entries. Show the pattern, not a catalog.
93
93
  - Keep each entry a short one-liner or command. Do not write multi-line correct and incorrect function blocks.
94
+
95
+ ## Template
96
+
97
+ - Carry one fenced template of the document the standard governs, so an author copies a shape instead of reconstructing it from prose.
98
+ - Bind this to a standard governing a document type. An attribute standard governs a scan, a string, or a label rather than a file, so it has no document to template and carries none.
99
+ - State that exemption in the sentence declaring the standard an attribute standard. An exemption left to inference reads as an omission, and the next author writes a template that teaches nothing.
100
+ - Place the template below the rules it satisfies, under a `## Template` heading or inside the section holding those rules. A reader arrives at it having already read what each part means.
101
+ - Show the skeleton alone: every required section, one placeholder line for what each holds. A full worked document is a second document to maintain.
102
+ - Write placeholders in angle brackets rather than copying a real document. A copied file goes stale, and its backticked filenames read as citations to anything parsing the standard.
103
+ - Switch to a bare word where the fenced language reads `<` as syntax of its own, as Mermaid and HTML do, and say in the line above the fence that the names are placeholders. A template that does not parse in its own language teaches a shape the author cannot run.
104
+ - Carry any header, key, or label a consuming tool parses verbatim. The template is the only place an author learns which strings are load-bearing, since prose calling them fixed does not say what they are.
105
+ - Treat the template as authoritative where it and the prose disagree. An author copies the block, so a contradiction ships as the block, and naming the winner turns a drift into a visible defect rather than a silent one.
106
+
107
+ ````markdown
108
+ ---
109
+ title: <Document type> reference
110
+ description: <one line naming what this standard covers>
111
+ ---
112
+
113
+ # <Document type> reference
114
+
115
+ Applies to `<path/to/document>`. <One line on what the document is for and when it changes.>
116
+
117
+ ## Scope
118
+
119
+ Governs `<path/to/document>`: <the aspects this standard sets>.
120
+
121
+ Does not govern:
122
+
123
+ - <excluded concern>: `<sibling>.md`
124
+ - <excluded concern>: <the surface that owns it>
125
+
126
+ ## What a working <document type> looks like
127
+
128
+ A <document type> works when <the task a reader completes from it alone>:
129
+
130
+ - <question the document must answer>
131
+ - <question the document must answer>
132
+
133
+ A <document type> failing these is non-conforming even when it satisfies every shape rule below.
134
+
135
+ ## Frontmatter
136
+
137
+ - `title` (required): <casing, and what it names>
138
+ - `description` (required): <what the one line covers>
139
+
140
+ ## <Shape rule group>
141
+
142
+ - <imperative rule, one concern per bullet>
143
+ - <imperative rule, one concern per bullet>
144
+
145
+ ## Template
146
+
147
+ ```markdown
148
+ <the skeleton of the governed document, placeholders throughout>
149
+ ```
150
+ ````
@@ -9,7 +9,7 @@ Two namespaces, kept separate.
9
9
 
10
10
  ## Scope
11
11
 
12
- Governs the two version namespaces, phase labels and semver tags, and which surfaces each may appear on. It is an attribute standard rather than a document-type one, so it applies wherever either namespace is written.
12
+ Governs the two version namespaces, phase labels and semver tags, and which surfaces each may appear on. It is an attribute standard rather than a document-type one, so it applies wherever either namespace is written, and it carries no template because a label has no document to shape.
13
13
 
14
14
  Does not govern:
15
15
 
@@ -75,3 +75,38 @@ Reference the context entry from the wireframe by path when a reader needs the m
75
75
 
76
76
  - When a surface's layout or interaction changes, update its wireframe file in the same PR. A wireframe showing a defunct layout is worse than none.
77
77
  - The Behavior and Copy prose around an ASCII block is prose and follows `prose.md`. The fenced block itself is not, so a check scoped to prose is the wrong thing to rely on for what sits inside it.
78
+
79
+ ## Template
80
+
81
+ One H2 per layout variant, each holding its own fence. A surface with a single layout carries one.
82
+
83
+ ````markdown
84
+ ---
85
+ title: <Surface name>
86
+ description: <when and where the surface appears>
87
+ ---
88
+
89
+ # <Surface name>
90
+
91
+ ## <what triggers this variant>
92
+
93
+ ```plaintext
94
+ +------------------------------------------+
95
+ | <region> ← <its role> |
96
+ +------------------------------------------+
97
+ | |
98
+ | <region> ← <its role> |
99
+ | |
100
+ +------------------------------------------+
101
+ ```
102
+
103
+ ## Copy
104
+
105
+ - <on-screen text, word for word>
106
+ - <text the surface templates>: <marked so a reader does not read it as final>
107
+
108
+ ## Behavior
109
+
110
+ - <what the visitor does, and what changes on screen>
111
+ - <what each reachable state looks like>
112
+ ````