@erclx/aitk 1.0.1 → 1.2.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 (72) hide show
  1. package/claude/.claude-plugin/plugin.json +1 -1
  2. package/claude/skills/claude-address-review/SKILL.md +5 -6
  3. package/claude/skills/claude-autoship/SKILL.md +2 -2
  4. package/claude/skills/claude-design-extract/SKILL.md +3 -5
  5. package/claude/skills/claude-diagram/SKILL.md +2 -2
  6. package/claude/skills/claude-docs/SKILL.md +11 -11
  7. package/claude/skills/claude-feature/SKILL.md +3 -3
  8. package/claude/skills/claude-groundwork/SKILL.md +2 -2
  9. package/claude/skills/claude-intake/SKILL.md +1 -1
  10. package/claude/skills/claude-intake-answer/SKILL.md +1 -1
  11. package/claude/skills/claude-memory-capture/SKILL.md +7 -9
  12. package/claude/skills/claude-memory-review/SKILL.md +6 -8
  13. package/claude/skills/claude-memory-review/references/receipt-format.md +1 -1
  14. package/claude/skills/claude-orchestrate/SKILL.md +3 -3
  15. package/claude/skills/claude-orchestrate/references/orchestrator-handoff.md +1 -1
  16. package/claude/skills/claude-orchestrate/references/orchestrator-resume.md +1 -1
  17. package/claude/skills/claude-pr-review/SKILL.md +2 -2
  18. package/claude/skills/claude-review/SKILL.md +1 -1
  19. package/claude/skills/claude-seed-sync/SKILL.md +1 -1
  20. package/claude/skills/claude-standards-audit/SKILL.md +4 -4
  21. package/claude/skills/claude-tasks/SKILL.md +34 -9
  22. package/claude/skills/claude-teach/SKILL.md +2 -2
  23. package/{standards → claude/skills/claude-teach/references}/glossary.md +1 -0
  24. package/claude/skills/claude-ui-test/SKILL.md +1 -1
  25. package/claude/skills/claude-ux-audit/SKILL.md +2 -4
  26. package/claude/skills/claude-ux-measure/SKILL.md +1 -1
  27. package/claude/skills/claude-worktree/SKILL.md +3 -3
  28. package/claude/skills/create-rule/SKILL.md +2 -2
  29. package/claude/skills/create-skill/SKILL.md +4 -6
  30. package/claude/skills/create-snippet/SKILL.md +1 -3
  31. package/claude/skills/create-standard/SKILL.md +2 -4
  32. package/claude/skills/decision-escalate/SKILL.md +1 -1
  33. package/claude/skills/docs-sync/SKILL.md +3 -5
  34. package/claude/skills/git-commit/SKILL.md +1 -3
  35. package/claude/skills/git-followup/SKILL.md +1 -1
  36. package/claude/skills/git-issue/SKILL.md +2 -4
  37. package/claude/skills/git-pr/SKILL.md +4 -6
  38. package/claude/skills/git-split/SKILL.md +1 -1
  39. package/claude/skills/git-stage/SKILL.md +1 -3
  40. package/claude/skills/migration-claude-md/SKILL.md +2 -2
  41. package/claude/skills/session-resume/SKILL.md +1 -1
  42. package/claude/skills/setup-gov/SKILL.md +1 -1
  43. package/claude/skills/setup-indexes/SKILL.md +1 -1
  44. package/claude/skills/write-human/SKILL.md +2 -2
  45. package/docs/agents/markdown-audit.md +3 -1
  46. package/docs/agents/records.md +1 -1
  47. package/docs/agents/teach.md +1 -1
  48. package/docs/target-projects.md +3 -3
  49. package/governance/rules/claude/501-markdown.md +1 -1
  50. package/governance/rules/claude/510-context.md +1 -1
  51. package/governance/rules/claude/520-wireframes.md +1 -1
  52. package/governance/rules/claude/530-requirements.md +1 -1
  53. package/governance/rules/claude/540-architecture.md +1 -1
  54. package/governance/rules/claude/550-design.md +1 -1
  55. package/governance/rules/claude/555-tasks.md +1 -1
  56. package/governance/rules/claude/556-groundwork.md +1 -1
  57. package/governance/rules/claude/557-intake.md +1 -1
  58. package/governance/rules/claude/558-plan.md +1 -1
  59. package/governance/rules/claude/559-memory.md +1 -1
  60. package/governance/rules/claude/560-diagrams.md +1 -1
  61. package/governance/rules/claude/561-teach.md +3 -2
  62. package/governance/rules/claude/562-session.md +1 -1
  63. package/governance/rules/claude/570-skill.md +1 -1
  64. package/governance/rules/claude/580-readme.md +1 -1
  65. package/governance/rules/claude/590-rule-authoring.md +1 -1
  66. package/governance/rules/claude/591-standard-authoring.md +1 -1
  67. package/package.json +1 -1
  68. package/src/markdown/structure.ts +39 -4
  69. package/standards/bundled/glossary.md +76 -0
  70. package/standards/index.md +0 -1
  71. package/standards/tasks.md +3 -1
  72. package/standards/teach.md +3 -3
@@ -16,5 +16,5 @@ paths:
16
16
 
17
17
  ## Authority
18
18
 
19
- - Follow `.claude/standards/tasks.md` for filenames, frontmatter, what belongs, and the task file format. It is the single source.
19
+ - Follow the tasks standard for filenames, frontmatter, what belongs, and the task file format. It is the single source. Read it with `aitk standards tasks`.
20
20
  - Never hand-edit `.claude/tasks/index.md`. A hook regenerates it from sibling frontmatter.
@@ -13,4 +13,4 @@ paths:
13
13
 
14
14
  ## Authority
15
15
 
16
- - Follow `.claude/standards/groundwork.md` for reserved numbering, frontmatter and dating, what each required file holds, and the conventions a track keeps. It is the single source.
16
+ - Follow the groundwork standard for reserved numbering, frontmatter and dating, what each required file holds, and the conventions a track keeps. It is the single source. Read it with `aitk standards groundwork`.
@@ -13,4 +13,4 @@ paths:
13
13
 
14
14
  ## Authority
15
15
 
16
- - Follow `.claude/standards/intake.md` for the folder layout, frontmatter and dating, the item format, and retrieval. It is the single source.
16
+ - Follow the intake standard for the folder layout, frontmatter and dating, the item format, and retrieval. It is the single source. Read it with `aitk standards intake`.
@@ -20,4 +20,4 @@ paths:
20
20
 
21
21
  ## Authority
22
22
 
23
- - Follow `.claude/standards/plan.md` for the filename and slug, the required sections, the suggested-and-answer contract, and the lifecycle. It is the single source.
23
+ - Follow the plan standard for the filename and slug, the required sections, the suggested-and-answer contract, and the lifecycle. It is the single source. Read it with `aitk standards plan`.
@@ -17,4 +17,4 @@ paths:
17
17
 
18
18
  ## Authority
19
19
 
20
- - Follow `.claude/standards/memory.md` for the filename and type prefix, the frontmatter, the body shape per type, links between entries, and the lifecycle. It is the single source.
20
+ - Follow the memory standard for the filename and type prefix, the frontmatter, the body shape per type, links between entries, and the lifecycle. It is the single source. Read it with `aitk standards memory`.
@@ -9,7 +9,7 @@ paths:
9
9
 
10
10
  ## Authority
11
11
 
12
- - Follow `.claude/standards/diagrams.md` for Mermaid diagram layout, budgets, accessibility, verification, and explanation prose. It is the single source.
12
+ - Follow the diagrams standard for Mermaid diagram layout, budgets, accessibility, verification, and explanation prose. It is the single source. Read it with `aitk standards diagrams`.
13
13
  - A diagram entry carries structure and flow, not implementation. Read the standard before adding or revising a kind.
14
14
 
15
15
  ## Scope
@@ -16,5 +16,6 @@ paths:
16
16
 
17
17
  ## Authority
18
18
 
19
- - Follow `.claude/standards/teach.md` for the folder layout, ordinal naming, frontmatter, and the mission and learning-record formats. It is the single source.
20
- - Follow `.claude/standards/glossary.md` for the glossary every workspace carries at its root.
19
+ - Follow the teach standard for the folder layout, ordinal naming, frontmatter, and the mission and learning-record formats. It is the single source. Read it with `aitk standards teach`.
20
+ - Read `references/glossary.md` inside the `claude-teach` skill for the glossary every workspace carries at its root. It is the single source for the entry shape, the ordering, and which terms the file carries. Read it rather than invoking the skill, which resumes a workspace and runs lessons.
21
+ - Report it rather than proceeding silently when that file does not resolve. It ships with the plugin and this rule ships with the CLI, so a project that installed governance alone does not have it.
@@ -16,4 +16,4 @@ paths:
16
16
 
17
17
  ## Authority
18
18
 
19
- - Follow `.claude/standards/session.md` for the filename and location, frontmatter, the core sections, and the write and read procedures. It is the single source.
19
+ - Follow the session standard for the filename and location, frontmatter, the core sections, and the write and read procedures. It is the single source. Read it with `aitk standards session`.
@@ -20,4 +20,4 @@ paths:
20
20
 
21
21
  ## Authority
22
22
 
23
- - Follow `.claude/standards/skill.md` for skill structure, frontmatter fields, invocation rules, and the shape a `REQUIREMENT.md` states. It is the single source.
23
+ - Follow the skill standard for skill structure, frontmatter fields, invocation rules, and the shape a `REQUIREMENT.md` states. It is the single source. Read it with `aitk standards skill`.
@@ -16,4 +16,4 @@ paths:
16
16
 
17
17
  ## Authority
18
18
 
19
- - Follow `.claude/standards/readme.md` for voice, structure, required and optional sections, heading hierarchy, badge classes, per-project-type content, and what to link out rather than inline. It is the single source.
19
+ - Follow the readme standard for voice, structure, required and optional sections, heading hierarchy, badge classes, per-project-type content, and what to link out rather than inline. It is the single source. Read it with `aitk standards readme`.
@@ -19,5 +19,5 @@ paths:
19
19
 
20
20
  ## Authority
21
21
 
22
- - Follow `.claude/standards/rule.md` for rule frontmatter, body shape, and voice. It is the single source.
22
+ - Follow the rule-authoring standard for rule frontmatter, body shape, and voice. It is the single source. Read it with `aitk standards rule`.
23
23
  - Read it before writing or editing a rule. Do not work the shape from memory.
@@ -17,5 +17,5 @@ paths:
17
17
 
18
18
  ## Authority
19
19
 
20
- - Follow `.claude/standards/standard.md` for a standard's frontmatter, shape, scope, and success criterion. It is the single source.
20
+ - Follow the standard-authoring standard for a standard's frontmatter, shape, scope, and success criterion. It is the single source. Read it with `aitk standards standard`.
21
21
  - Read it before writing or editing a standard. Do not work the shape from memory.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@erclx/aitk",
3
3
  "type": "module",
4
- "version": "1.0.1",
4
+ "version": "1.2.0",
5
5
  "description": "Infrastructure and quality tooling for developer workflows",
6
6
  "license": "MIT",
7
7
  "bin": {
@@ -536,10 +536,45 @@ function measureParagraph(block: readonly BodyLine[]): CadenceFinding {
536
536
  * absence of something, so no addition to that set catches a paragraph whose
537
537
  * sentences are all one length. The measure stops at what is countable. A
538
538
  * sentence's grammatical shape and whether it carries a finite verb are the two
539
- * rules `write-human` states that this does not implement, because identifying
540
- * either needs a parse rather than a match, and an imperative or a heading
541
- * fragment would read as a defect. Reporting them wrong is worse than not
542
- * reporting them, since they name the exact failure this exists to measure.
539
+ * rules `write-human` states that this does not implement. Reporting them wrong
540
+ * is worse than not reporting them, since they name the exact failure this
541
+ * exists to measure.
542
+ *
543
+ * That was a prediction and it has now been measured, against two parsers
544
+ * rather than against the idea of one. Both ran over 11,389 paragraph sentences
545
+ * across 503 markdown files at `c7e92612` on 2026-08-20, and they disagree by
546
+ * a factor of four on a number one of them has to be wrong about.
547
+ *
548
+ * `compromise` reported 2 percent. It tags a fronted past participle as a
549
+ * finite past-tense verb, so all twelve of those sentences in
550
+ * `.claude/ARCHITECTURE.md` read as carrying one, eleven opening `Measured at`
551
+ * and one `Overturned by`, which is the exact shape the measure exists to
552
+ * catch. It is not even consistent with itself there: `Measured at` tags a verb
553
+ * and `Measured against` tags an adjective.
554
+ *
555
+ * `wink-pos-tagger` reported 9 percent and fixes that class, tagging the
556
+ * participle `VBN`. Roughly three quarters of what it flags is still wrong:
557
+ * hand-classifying every 21st of the 1,071 flagged sentences put 12 of 51
558
+ * genuinely verbless. Two classes split the other 39 almost evenly and neither
559
+ * is a tuning problem. Nineteen are imperatives, which this instructional
560
+ * corpus is full of and whose verb tags as a proper noun as often as a verb.
561
+ * Twenty are ordinary declaratives whose predicate is noun-ambiguous and tags
562
+ * as a noun outright, so `Each maps to a skill.` and `Nothing checks either
563
+ * one.` both report verbless. This corpus is built from exactly those words:
564
+ * reports, answers, checks, maps, holds, names, carries, records, measures.
565
+ *
566
+ * Separating them needs to know which token is the predicate, which is syntax
567
+ * rather than a tag. Neither tagger carries one and nothing was found worth
568
+ * taking for a number nothing gates on, so the rule the deferral set is met and
569
+ * still returns no: a parse was tried, twice, and neither produced a number
570
+ * worth printing beside two that hold.
571
+ *
572
+ * Where a shape sits is a different question and is already answered. A heading
573
+ * fragment, a list item, and a table cell are all legitimately verbless and
574
+ * none of them reaches this measure, because `paragraphBlocks` ends a paragraph
575
+ * on each. That exclusion is structural and needs no grammar. The imperative is
576
+ * the one that sits in paragraph prose, and it is what neither parser could
577
+ * separate out.
543
578
  *
544
579
  * A paragraph under the floor is skipped rather than scored. A two-sentence
545
580
  * configuration note has no spread worth reading, and the opener rule is
@@ -0,0 +1,76 @@
1
+ ---
2
+ title: Glossary reference
3
+ description: Frontmatter, entry shape, ordering, and the rules deciding which terms a glossary carries
4
+ consumers: claude-teach
5
+ ---
6
+
7
+ # Glossary reference
8
+
9
+ Applies to a glossary, the file holding one entry per term a body of material defines. It changes whenever the material names a concept a reader cannot look up yet, and it is revised in place rather than appended to.
10
+
11
+ ## Scope
12
+
13
+ Governs a glossary at `.claude/teach/<nn>-<topic>/GLOSSARY.md` and at whatever path a surface fixes for one it holds: its frontmatter, entry shape, ordering, grouping, and the rules deciding which terms it carries.
14
+
15
+ Does not govern:
16
+
17
+ - The folder a learning workspace lays out around its glossary, and the other files in it: `teach.md`
18
+ - Which surface a glossary moves to once it leaves the material that produced it, which belongs to the surface driving that move
19
+ - Voice, rhythm, and sentence construction: the `write-human` skill
20
+ - Headings, punctuation, word choice, and file references: `markdown.md`
21
+
22
+ ## What a working glossary looks like
23
+
24
+ A glossary works when a reader who meets a term in the material settles it here without opening the page that introduced it:
25
+
26
+ - Which word does this material use for the concept, and which words does it deliberately not use?
27
+ - What does the term mean, stated without leaning on the term itself?
28
+ - Where does the term appear, so a reader can see it used rather than only defined?
29
+ - Does every entry carry a term the material actually uses?
30
+
31
+ A glossary failing these is non-conforming even when it satisfies every shape rule below.
32
+
33
+ ## Frontmatter
34
+
35
+ - `title` (required): names the material the terms come from, in sentence case
36
+ - `description` (required): one line naming what a reader gets from the entries
37
+
38
+ ## Entries
39
+
40
+ - Write one entry per term, as a single bullet.
41
+ - Lead the bullet with the term as a bolded span, then the definition in one or two sentences.
42
+ - Define the term without using it. A definition that spends the term explains nothing to the reader who arrived not knowing it.
43
+ - Name where the term first appears, so a reader can reach one use of it in context.
44
+ - Keep an entry to the meaning. Worked detail belongs on the page that teaches the term.
45
+ - Sort entries alphabetically, so a reader who knows only the word finds it without reading the file.
46
+
47
+ ## Which terms it carries
48
+
49
+ - Add a term once the material has used it, never ahead of that. A glossary front-loaded with terms nothing has introduced is a syllabus rather than a reference.
50
+ - Pick one word per concept and use that word everywhere. A glossary carrying two words for one thing hands the reader a choice it exists to remove.
51
+ - List each rejected synonym as an alias to avoid inside the entry that won, so a reader arriving with the wrong word lands on the right one.
52
+ - Use the glossary's own terms inside other definitions. A definition reaching for a synonym of a term defined two entries down teaches the reader a word the material does not use.
53
+ - Revise an entry the material has moved under rather than adding a second one narrating the change.
54
+
55
+ ## Grouping
56
+
57
+ - Keep a short glossary as one alphabetical list under the title. Grouping a handful of entries costs a heading per category and saves no lookup.
58
+ - Group a glossary long enough that one list stops helping under `##` headings by category, sorted alphabetically within each. Roughly two screens of entries is the signal.
59
+ - Name each category so a reader picks it from the term alone. A category a reader cannot predict makes the grouping a second thing to search.
60
+ - State a departure from any rule above in the file itself, naming what it departs from and why. A glossary serving no single body of material is the case that produces one, since a term drawn from everywhere has no first appearance to name.
61
+
62
+ ## Template
63
+
64
+ ```markdown
65
+ ---
66
+ title: <Material the terms come from>
67
+ description: <one line naming what a reader gets from these entries>
68
+ ---
69
+
70
+ # <Material the terms come from>
71
+
72
+ <One line on which material these terms come from and when the file changes.>
73
+
74
+ - **<Term>**: <the meaning in one or two sentences, written without using the term>. Avoid <rejected synonym>. First appears in `<page or lesson>`.
75
+ - **<Term>**: <the meaning in one or two sentences, written without using the term>. First appears in `<page or lesson>`.
76
+ ```
@@ -11,7 +11,6 @@ Reference docs for consistent authoring across the toolkit and target projects.
11
11
  - [Context entry reference](context.md): Shape and content rules for .claude/context/<domain>.md entries
12
12
  - [Design reference](design.md): Shape and content rules for .claude/DESIGN.md
13
13
  - [Diagram reference](diagrams.md): Shape and content rules for .claude/diagrams/<kind>.md files
14
- - [Glossary reference](glossary.md): Frontmatter, entry shape, ordering, and the rules deciding which terms a glossary carries
15
14
  - [Groundwork reference](groundwork.md): Folder layout, reserved numbering, frontmatter and dating, required file contents, and conventions for a measurement track
16
15
  - [Intake reference](intake.md): Folder layout, reserved index number, frontmatter and dating, the item template, the answer contract, and retrieval
17
16
  - [Markdown reference](markdown.md): Headings, paragraph and list structure, code spans, the date form, punctuation, emphasis, file references, banned words, and frontmatter wording
@@ -207,7 +207,9 @@ Why this task exists and what it depends on.
207
207
 
208
208
  Every task names where it came from, through a `Plan:`, `Groundwork:`, `Intake:`, or `Issue:` line under the title. Include each only when the file, folder, or issue it names exists.
209
209
 
210
- A task with no origin is either lost context or work nobody decided to do. The invariant runs both ways, and the second direction is the one that bites: a groundwork track or an open issue that no task points at is work already decided and on its way to being forgotten. An intake folder is exempt from that direction, since it dispositions many items at once and most of them close without ever becoming a task.
210
+ A task with no origin is either lost context or work nobody decided to do. The invariant runs both ways, and the second direction is the one that bites: a groundwork track, an intake folder, or an open issue that no task points at is work already decided and on its way to being forgotten.
211
+
212
+ An intake folder answers that direction at folder scope rather than item scope, since one dump dispositions many items and most close without ever becoming a task. What names a folder is every item answered and no task citing it, on the board or in the archive. That is a dump nobody acted on. Counting the archive beside the board is what separates it from one already promoted and shipped, and a check reading the board alone calls every finished folder abandoned.
211
213
 
212
214
  `Plan:`, `Groundwork:`, and `Intake:` name their target as a markdown link whose text is the file or folder stem, so the line resolves on a ctrl-click the way `priority.md` rows already do. Write the path relative to `.claude/tasks/`, which makes it `../plans/`, `../groundwork/`, and `../intake/`. A path written from the project root renders as a link and resolves to nothing in an editor rooted at the project. `Issue:` stays a bare `#NNN`, since an issue number is not a path and a full URL would write the remote into a gitignored file.
213
215
 
@@ -15,7 +15,7 @@ Governs a learning workspace under `.claude/teach/<nn>-<topic>/`: folder layout,
15
15
 
16
16
  Does not govern:
17
17
 
18
- - The frontmatter, entry shape, and ordering of the glossary the workspace holds: `glossary.md`
18
+ - The frontmatter, entry shape, and ordering of the glossary the workspace holds: the `claude-teach` skill, which carries that reference
19
19
  - What a lesson teaches, how it sequences difficulty, and what makes one worth returning to, which belong to the surface driving the workspace
20
20
  - Where a durable page goes once it leaves the workspace, which belongs to the routing test the destination surface states
21
21
  - One question measured in depth before anyone can plan against it: `groundwork.md`
@@ -97,9 +97,9 @@ Record the wrong answer rather than the fact of an error. A wrong answer names t
97
97
 
98
98
  ## GLOSSARY.md
99
99
 
100
- Required in every workspace, holding one entry per term the subject defines. `glossary.md` fixes what an entry looks like, how the file orders and groups them, and which terms it carries, so this standard states only that the file exists and sits at the workspace root.
100
+ Required in every workspace, holding one entry per term the subject defines. The glossary reference the `claude-teach` skill carries fixes what an entry looks like, how the file orders and groups them, and which terms it carries, so this standard states only that the file exists and sits at the workspace root. That reference ships with the plugin rather than installing here, because a promoted glossary keeps its shape wherever it lands and no project folder covers every destination. Say so and stop rather than working the shape from memory when the project has no plugin to read it from.
101
101
 
102
- Name the lesson or reference page a term first appears in as that standard requires. A workspace is the case it was written for, so a glossary here has a first appearance to name.
102
+ Name the lesson or reference page a term first appears in as that reference requires. A workspace is the case it was written for, so a glossary here has a first appearance to name.
103
103
 
104
104
  ## RESOURCES.md
105
105