@erclx/canon 5.72.1 → 5.74.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 (79) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/claude/.claude-plugin/plugin.json +1 -1
  3. package/claude/skills/api-design/references/adopted.md +5 -3
  4. package/claude/skills/app-drive/REQUIREMENT.md +2 -2
  5. package/claude/skills/app-drive/SKILL.md +22 -5
  6. package/claude/skills/app-drive/references/config.md +2 -1
  7. package/claude/skills/app-drive/references/drive-record.md +13 -0
  8. package/claude/skills/app-drive/references/isolate.md +1 -1
  9. package/claude/skills/build-in-slices/references/adopted.md +4 -2
  10. package/claude/skills/code-craft/references/adopted.md +9 -7
  11. package/claude/skills/codebase-layout/references/adopted.md +8 -6
  12. package/claude/skills/create-skill/references/skill-practice.md +5 -0
  13. package/claude/skills/deprecation-migration/references/adopted.md +5 -3
  14. package/claude/skills/design-pick/references/board.md +2 -2
  15. package/claude/skills/plan-feature/SKILL.md +3 -2
  16. package/claude/skills/plan-feature/references/plan.md +12 -2
  17. package/claude/skills/plan-groundwork/SKILL.md +2 -0
  18. package/claude/skills/plan-intake/references/intake.md +3 -2
  19. package/claude/skills/pr-evidence/REQUIREMENT.md +1 -0
  20. package/claude/skills/pr-evidence/SKILL.md +2 -0
  21. package/claude/skills/pr-evidence/references/evidence.md +11 -4
  22. package/claude/skills/{ui-film/references/pr-clip.md → pr-evidence/references/reel.md} +21 -21
  23. package/claude/skills/proposal-critique/REQUIREMENT.md +34 -0
  24. package/claude/skills/proposal-critique/SKILL.md +126 -0
  25. package/claude/skills/review-craft/references/adopted.md +4 -4
  26. package/claude/skills/role-orchestrator/SKILL.md +3 -2
  27. package/claude/skills/role-orchestrator/references/orchestrator-filing.md +8 -0
  28. package/claude/skills/role-orchestrator/references/orchestrator-handback.md +4 -1
  29. package/claude/skills/role-orchestrator/references/orchestrator-review-dispatch.md +26 -2
  30. package/claude/skills/role-orchestrator/references/orchestrator-reviewer-launch.md +22 -3
  31. package/claude/skills/role-planner/SKILL.md +3 -1
  32. package/claude/skills/role-reviewer/SKILL.md +15 -4
  33. package/claude/skills/search-craft/references/adopted.md +9 -7
  34. package/claude/skills/systematic-debugging/REQUIREMENT.md +1 -0
  35. package/claude/skills/systematic-debugging/SKILL.md +21 -8
  36. package/claude/skills/systematic-debugging/references/adopted.md +15 -4
  37. package/claude/skills/teach-craft/references/adopted.md +8 -6
  38. package/claude/skills/test-craft/references/adopted.md +14 -12
  39. package/claude/skills/test-first/SKILL.md +1 -1
  40. package/claude/skills/test-first/references/adopted.md +9 -5
  41. package/claude/skills/ui-film/REQUIREMENT.md +5 -6
  42. package/claude/skills/ui-film/SKILL.md +21 -13
  43. package/claude/skills/ui-film/references/compose-craft.md +3 -2
  44. package/claude/skills/ui-film/references/handoff.md +12 -8
  45. package/claude/skills/ui-film/references/take-craft.md +10 -0
  46. package/claude/skills/write-human/references/adopted.md +8 -3
  47. package/docs/agents/records.md +1 -1
  48. package/docs/target/index.md +1 -0
  49. package/docs/target/outside-tools.md +39 -0
  50. package/docs/workflow/operating-model.md +8 -8
  51. package/docs/workflow/parallel-features.md +1 -1
  52. package/docs/workflow/skill-map.md +2 -1
  53. package/governance/ledger/canon/plan.md +20 -0
  54. package/governance/ledger/skills/build-in-slices/SKILL.md +55 -0
  55. package/governance/ledger/skills/proposal-critique/SKILL.md +66 -0
  56. package/governance/ledger/skills/search-craft/SKILL.md +54 -0
  57. package/governance/ledger/skills/systematic-debugging/SKILL.md +64 -0
  58. package/governance/ledger/skills/test-first/SKILL.md +28 -0
  59. package/governance/ledger/skills/write-human/SKILL.md +62 -0
  60. package/governance/ledger/skills/write-human/density.md +36 -0
  61. package/governance/ledger/skills/write-human/machine-tells.md +30 -0
  62. package/governance/rules/canon/plan.md +1 -0
  63. package/package.json +1 -1
  64. package/scripts/ci/docs-only.sh +24 -0
  65. package/src/claude/cases/misc.ts +14 -0
  66. package/src/claude/skills-audit.ts +89 -8
  67. package/src/commands/intake.ts +4 -1
  68. package/src/commands/pr.ts +110 -13
  69. package/src/gate/measures.ts +1 -1
  70. package/src/gate/sequencer.ts +7 -1
  71. package/src/gate/stages.ts +36 -24
  72. package/src/intake/drive-check.ts +75 -4
  73. package/src/markdown/scope.ts +2 -0
  74. package/src/pr/checks.ts +75 -3
  75. package/src/pr/evidence.ts +62 -1
  76. package/src/pr/lift.ts +23 -2
  77. package/src/pr/merge.ts +13 -3
  78. package/src/records/backup.ts +1 -0
  79. package/src/targets/pulls.ts +42 -0
@@ -0,0 +1,20 @@
1
+ ---
2
+ title: Plan rule ledger
3
+ description: Decisions behind governance/rules/canon/plan.md, one row per bullet
4
+ ---
5
+
6
+ # Plan rule ledger
7
+
8
+ The rule is a core rule, so every row is a house choice rather than a citation. Only the guard bullet was decided in the change that wrote this ledger, so the older bullets carry the reason their own text gives, and none carries a date nobody recorded.
9
+
10
+ ## Plan files
11
+
12
+ | Bullet | Source | Read |
13
+ | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
14
+ | Load plan-feature before an edit | House choice: the skill's references own a plan's shape and lifecycle, so an edit made without them breaks a section a later reader parses. It beat restating the shape in the rule | Unknown |
15
+ | Expect plan-guard on a new plan | House choice: a path-scoped rule loads on a Read, Write, or Edit, and a heredoc is none of them, so the planner writing most plans never saw the bullet above. It beat a reminder, which arrives after the plan is composed, and the rule stays the floor where the hook fails open | 2026-10-28 |
16
+ | Never fill an Answer slot | House choice: a filled slot reads as the owner's decision, so an agent's guess would execute as a settled call. It beat letting the executing session record its pick there | Unknown |
17
+ | Rewrite an overridden Suggested | House choice: a deviation left unrecorded makes the plan disagree with the diff, and the blank slot keeps the owner's answer distinct from the override. It beat a note appended below the question | Unknown |
18
+ | Quote the source or mark it | House choice: a source cited from recall goes stale or never said the line, and nothing downstream rechecks it. It beat trusting a citation's presence | Unknown |
19
+ | Archive a shipped plan | House choice: a deleted plan loses the record a later session reads to learn why the code is shaped as it is. It beat deleting a plan once its branch merged | Unknown |
20
+ | Amend in place | House choice: a narrated change leaves two passages a reader must reconcile, and the stale one reads as current. It beat an appended changelog section | Unknown |
@@ -0,0 +1,55 @@
1
+ ---
2
+ title: Build in slices skill ledger
3
+ description: Sources for claude/skills/build-in-slices/SKILL.md, one row per bullet in its concern groups
4
+ ---
5
+
6
+ # Build in slices skill ledger
7
+
8
+ The field is software delivery practice. Google's engineering practices carry small changes, Fowler's continuous integration article carries reverting to a good build, and Addy Osmani's `incremental-implementation` skill carries the cycle and the slicing order.
9
+
10
+ The closing sections and `## What this delegates` restate these rules or route, so they take no table.
11
+
12
+ The house rows route a rule through this toolkit's own surfaces, being `git-commit`, the task's findings, and a ship chain's verify gate, where no outside source takes a side. `references/adopted.md` stays the record of what was adopted and declined at the source level.
13
+
14
+ ## Run the cycle per slice
15
+
16
+ | Bullet | Source | Read |
17
+ | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- |
18
+ | Implement through `test-first` | [addyosmani/agent-skills, Incremental Implementation](https://github.com/addyosmani/agent-skills/blob/2686b620/skills/incremental-implementation/SKILL.md): "Implement the smallest complete piece of functionality", then "write a test if none exists". [Google, Small CLs](https://google.github.io/eng-practices/review/developer/small-cls.html): "A CL that adds or changes logic should be accompanied by new or updated tests for the new behavior." | 2026-10-28 |
19
+ | Run every check it could affect | [addyosmani/agent-skills, Incremental Implementation](https://github.com/addyosmani/agent-skills/blob/2686b620/skills/incremental-implementation/SKILL.md): "Run each verification command after a change that could affect it." | 2026-10-28 |
20
+ | Commit through `git-commit` | [addyosmani/agent-skills, Incremental Implementation](https://github.com/addyosmani/agent-skills/blob/2686b620/skills/incremental-implementation/SKILL.md): "save your progress with a descriptive message". Routing it through `git-commit` and staging only the slice's files is a House choice: a whole-tree commit sweeps a second slice's edits into the first, which no later revert can split | 2026-10-28 |
21
+ | Carry forward from the commit | [addyosmani/agent-skills, Incremental Implementation](https://github.com/addyosmani/agent-skills/blob/2686b620/skills/incremental-implementation/SKILL.md): "Move to the next slice", then "carry forward, don't restart" | 2026-10-28 |
22
+
23
+ ## Choose the next slice
24
+
25
+ | Bullet | Source | Read |
26
+ | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- |
27
+ | One path through every layer | [Google, Small CLs](https://google.github.io/eng-practices/review/developer/small-cls.html): "you can instead break down your code into smaller, full-stack, vertical features." [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills/blob/2686b620/skills/incremental-implementation/SKILL.md): "Build one complete path through the stack" | 2026-10-28 |
28
+ | Riskiest piece first | [addyosmani/agent-skills, Incremental Implementation](https://github.com/addyosmani/agent-skills/blob/2686b620/skills/incremental-implementation/SKILL.md): "Tackle the riskiest or most uncertain piece first", since "If Slice 1 fails, you discover it before investing in Slices 2 and 3." | 2026-10-28 |
29
+ | Contract first, then each side | [addyosmani/agent-skills, Incremental Implementation](https://github.com/addyosmani/agent-skills/blob/2686b620/skills/incremental-implementation/SKILL.md): "Slice 0: Define the API contract (types, interfaces, OpenAPI spec)", with the backend and frontend built against it as slices 1a and 1b | 2026-10-28 |
30
+ | File list as scope, not order | House choice: a plan lists its files by path, and building them in that order builds one layer at a time, the order the slicing rules above exist to replace | 2026-10-28 |
31
+
32
+ ## Keep each commit safe to revert on its own
33
+
34
+ | Bullet | Source | Read |
35
+ | ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
36
+ | One logical change per commit | [Google, Small CLs](https://google.github.io/eng-practices/review/developer/small-cls.html): "The CL makes a minimal change that addresses just one thing." [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills/blob/2686b620/skills/incremental-implementation/SKILL.md): "Each increment changes one logical thing." | 2026-10-28 |
37
+ | Test with or ahead of its code | [Google, Small CLs](https://google.github.io/eng-practices/review/developer/small-cls.html): "CLs should include related test code." | 2026-10-28 |
38
+ | No delete and replace in one | [addyosmani/agent-skills, Incremental Implementation](https://github.com/addyosmani/agent-skills/blob/2686b620/skills/incremental-implementation/SKILL.md): "Avoid deleting something in one commit and replacing it in the same commit", then "separate them" | 2026-10-28 |
39
+ | Narrow edits to existing code | [addyosmani/agent-skills, Incremental Implementation](https://github.com/addyosmani/agent-skills/blob/2686b620/skills/incremental-implementation/SKILL.md): "Modifications to existing code should be minimal and focused". [Fowler, Continuous Integration](https://martinfowler.com/articles/continuousIntegration.html): "Usually the best way to fix the build is to revert the latest commit from the mainline," | 2026-10-28 |
40
+
41
+ ## Note what you notice, and leave it
42
+
43
+ | Bullet | Source | Read |
44
+ | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
45
+ | One line under the task's findings | [addyosmani/agent-skills, Incremental Implementation](https://github.com/addyosmani/agent-skills/blob/2686b620/skills/incremental-implementation/SKILL.md): "If you notice something worth improving outside your task scope, note it". The task's `## Findings` as the place is a House choice: a note left in the session's output dies with the session | 2026-10-28 |
46
+ | The handover when no task exists | House choice: a file created to hold a finding is a task with no row on the board, so nobody schedules it. It beat the source's offer to "create tasks for these", which a worker may not do | 2026-10-28 |
47
+ | Leave the file, even for one line | [addyosmani/agent-skills, Incremental Implementation](https://github.com/addyosmani/agent-skills/blob/2686b620/skills/incremental-implementation/SKILL.md): "Touch only what the task requires." [Google, Small CLs](https://google.github.io/eng-practices/review/developer/small-cls.html): "It's usually best to do refactorings in a separate CL from feature changes or bug fixes." | 2026-10-28 |
48
+ | Fix it only when the plan needs it | [addyosmani/agent-skills, Incremental Implementation](https://github.com/addyosmani/agent-skills/blob/2686b620/skills/incremental-implementation/SKILL.md): "After each increment, the project must build and existing tests must pass." Saying so in the commit is a House choice: an unexplained out-of-scope hunk reads to review as scope creep | 2026-10-28 |
49
+
50
+ ## Run a check when the code under it changed
51
+
52
+ | Bullet | Source | Read |
53
+ | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
54
+ | Re-run after an edit it can see | [addyosmani/agent-skills, Incremental Implementation](https://github.com/addyosmani/agent-skills/blob/2686b620/skills/incremental-implementation/SKILL.md): "After a successful run, don't repeat the same command unless the code has changed since", since "re-running on unchanged code adds no information." | 2026-10-28 |
55
+ | A chain's verify step still runs | House choice: read unscoped, the source's note lets a session skip a ship gate's verify on a resumed run, where the gate is the only check reading the tree as it now stands. It beat applying the note to every run | 2026-10-28 |
@@ -0,0 +1,66 @@
1
+ ---
2
+ title: Proposal critique skill ledger
3
+ description: Sources for claude/skills/proposal-critique/SKILL.md, one row per bullet in its steps
4
+ ---
5
+
6
+ # Proposal critique skill ledger
7
+
8
+ The field is judgment and decision-making, plus red teaming doctrine. Kahneman, Lovallo, and Sibony carry the question set and independence, Klein the premortem, Bezos the scaling, and the UK Ministry of Defence handbook the devil's advocate.
9
+
10
+ A row opening `House choice` states a rule no source makes. `## Output` and `## What this delegates` restate the steps or route, so they take no table.
11
+
12
+ ## Guards
13
+
14
+ | Bullet | Source | Read |
15
+ | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- |
16
+ | Stop when no proposal is named | House choice: a critique of a guessed proposal answers questions nobody asked | 2026-10-28 |
17
+ | Critique only what is not built | [Klein, 2007](https://hbr.org/2007/09/performing-a-project-premortem): those with reservations "may speak freely at the outset, so that the project can be improved rather than autopsied" | 2026-10-28 |
18
+ | Write nothing into the record | House choice: a plan's sections belong to its validator, and the operator decides what moves into a record | 2026-10-28 |
19
+
20
+ ## Step 1: read the proposal
21
+
22
+ | Bullet | Source | Read |
23
+ | ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
24
+ | Say it was read from the conversation | [Kahneman, Lovallo, and Sibony, 2011](https://thecne.org/wp-content/uploads/2016/04/The-Big-Idea_-Before-You-Make-That-Big-Decision.pdf): "What you see is all there is", so the reader names what it saw | 2026-10-28 |
25
+ | Say when this session wrote it | [Kahneman, Lovallo, and Sibony, 2011](https://thecne.org/wp-content/uploads/2016/04/The-Big-Idea_-Before-You-Make-That-Big-Decision.pdf): "the individuals using this quality screen should be completely independent from the teams making the recommendations" | 2026-10-28 |
26
+ | Read the requirements record | House choice: the goal and non-goal questions need the record that states them | 2026-10-28 |
27
+
28
+ ## Step 2: size the critique
29
+
30
+ | Bullet | Source | Read |
31
+ | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
32
+ | Reversibility | [Bezos, 2016 letter](https://www.aboutamazon.com/news/company-news/2016-letter-to-shareholders): "Many decisions are reversible, two-way doors. Those decisions can use a light-weight process" | 2026-10-28 |
33
+ | Reach | [Kahneman, Lovallo, and Sibony, 2011](https://thecne.org/wp-content/uploads/2016/04/The-Big-Idea_-Before-You-Make-That-Big-Decision.pdf): "This approach is not designed for routine decisions that an executive formally rubber-stamps" | 2026-10-28 |
34
+
35
+ ## Step 3: ask in both directions
36
+
37
+ | Bullet | Source | Read |
38
+ | ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
39
+ | What does it solve, who hits it | [Kahneman, Lovallo, and Sibony, 2011](https://thecne.org/wp-content/uploads/2016/04/The-Big-Idea_-Before-You-Make-That-Big-Decision.pdf): the third group of questions is "aimed at evaluating the proposal" | 2026-10-28 |
40
+ | Which goal, which non-goal | House choice: a requirements record states goals and non-goals, and a proposal crossing one is decided there | 2026-10-28 |
41
+ | Is the cause ours | House choice: a fix for an upstream fault ships as ours unless the evidence separating the two is named first | 2026-10-28 |
42
+ | The strongest rival explanation | [UK MoD Red Teaming Handbook, 2021](https://assets.publishing.service.gov.uk/media/61702155e90e07197867eb93/20210625-Red_Teaming_Handbook.pdf): "Team members should adopt the role of devil's advocate" | 2026-10-28 |
43
+ | Where the numbers came from | [Kahneman, Lovallo, and Sibony, 2011](https://thecne.org/wp-content/uploads/2016/04/The-Big-Idea_-Before-You-Make-That-Big-Decision.pdf): "Do you know where the numbers came from?" and "Which numbers in this plan are facts and which are estimates?" | 2026-10-28 |
44
+ | What doing nothing costs | [Kahneman, Lovallo, and Sibony, 2011](https://thecne.org/wp-content/uploads/2016/04/The-Big-Idea_-Before-You-Make-That-Big-Decision.pdf): "Is the base case overly optimistic?" | 2026-10-28 |
45
+ | Around the cause or into it | House choice: a retry into an upstream failure repeats it, which only a question about the mechanism catches | 2026-10-28 |
46
+ | Has its mechanism worked once | House choice: a mechanism never seen working, such as a cache that never saved, is a guess the fix rests on | 2026-10-28 |
47
+ | Is it too cautious | [Kahneman, Lovallo, and Sibony, 2011](https://thecne.org/wp-content/uploads/2016/04/The-Big-Idea_-Before-You-Make-That-Big-Decision.pdf): "Is the recommending team overly cautious?", since "excessive conservatism is a source of less visible but serious chronic underperformance" | 2026-10-28 |
48
+ | Assume it shipped and failed | [Klein, 2007](https://hbr.org/2007/09/performing-a-project-premortem): "the premortem operates on the assumption that the 'patient' has died, and so asks what did go wrong" | 2026-10-28 |
49
+ | The cheapest reversible probe | [Kahneman, Lovallo, and Sibony, 2011](https://thecne.org/wp-content/uploads/2016/04/The-Big-Idea_-Before-You-Make-That-Big-Decision.pdf): "what information would you want, and can you get more of it now?" | 2026-10-28 |
50
+ | When to stop mitigating | House choice: a mitigation chain with no end point set in advance keeps adding fixes after each one fails | 2026-10-28 |
51
+
52
+ ## Step 4: route what evidence cannot answer
53
+
54
+ | Bullet | Source | Read |
55
+ | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
56
+ | One batch through the question surface | House choice: `decision-escalate` owns the batch shape, so a preference question takes its form rather than a second one | 2026-10-28 |
57
+ | Hold the verdict when an answer moves it | [Bezos, 2016 letter](https://www.aboutamazon.com/news/company-news/2016-letter-to-shareholders): "most decisions should probably be made with somewhere around 70% of the information you wish you had" | 2026-10-28 |
58
+
59
+ ## Step 5: give one verdict
60
+
61
+ | Bullet | Source | Read |
62
+ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
63
+ | Go | [Bezos, 2016 letter](https://www.aboutamazon.com/news/company-news/2016-letter-to-shareholders): "If you're good at course correcting, being wrong may be less costly than you think" | 2026-10-28 |
64
+ | Probe first | [Kahneman, Lovallo, and Sibony, 2011](https://thecne.org/wp-content/uploads/2016/04/The-Big-Idea_-Before-You-Make-That-Big-Decision.pdf): "can you get more of it now?" | 2026-10-28 |
65
+ | Absorb | House choice: a fix costing more than the problem it removes is declined with its reason recorded | 2026-10-28 |
66
+ | Stop | House choice: a problem not shown or a cause not ours leaves the fix nothing to act on | 2026-10-28 |
@@ -0,0 +1,54 @@
1
+ ---
2
+ title: Search craft skill ledger
3
+ description: Sources for claude/skills/search-craft/SKILL.md, one row per bullet in its concern groups
4
+ ---
5
+
6
+ # Search craft skill ledger
7
+
8
+ The field is information literacy and research methods. ACRL's framework carries how a searcher picks producers and judges authority, and Wineburg and McGrew's study of fact checkers carries reading past the ranking. Caulfield's SIFT carries tracing a claim to its origin, while Anthropic's tool docs carry the domain filter.
9
+
10
+ The closing sections and `## What this delegates` restate these rules or route, so they take no table.
11
+
12
+ The access note's Reddit and X rows record refusals, so they are measurements re-run on the date in `Read` rather than citations. Its last row cites a source like any other.
13
+
14
+ ## Name the field
15
+
16
+ | Bullet | Source | Read |
17
+ | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- |
18
+ | Name the field before a query | [ACRL Framework, Searching as Strategic Exploration](https://www.ala.org/acrl/standards/ilframework): learners "match information needs to appropriate search tools and information producers" | 2026-10-28 |
19
+ | At a practitioner's level | [ACRL Framework, Searching as Strategic Exploration](https://www.ala.org/acrl/standards/ilframework): learners "distinguish between different types of searching language (e.g., controlled vocabulary, keywords, natural language)" | 2026-10-28 |
20
+ | Say the field in the output | House choice: an answer from a search run in the wrong field reads the same as a wrong fact unless the output names where it looked. It beat reporting the sources alone | 2026-10-28 |
21
+
22
+ ## Derive who the field trusts
23
+
24
+ | Bullet | Source | Read |
25
+ | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
26
+ | Ask what kind of body settles it | [ACRL Framework, Authority Is Constructed and Contextual](https://www.ala.org/acrl/standards/ilframework): "authority is a type of influence recognized or exerted within a community", and learners "identify different types of authority" | 2026-10-28 |
27
+ | Derive the names, never a list | House choice: a remembered list of sites per category rots with nobody noticing, and reading one skips the test of what kind of body the field trusts. It beat a per-category directory, declined in `references/adopted.md` | 2026-10-28 |
28
+ | Search for the authorities first | [Wineburg and McGrew, Lateral Reading and the Nature of Expertise](https://stacks.stanford.edu/file/druid:yk133ht8603/Wineburg%20McGrew_Lateral%20Reading%20and%20the%20Nature%20of%20Expertise.pdf): "before diving deeply into unfamiliar content, chart a plan for moving forward" | 2026-10-28 |
29
+ | Each new question derives its own names | [ACRL Framework, Authority Is Constructed and Contextual](https://www.ala.org/acrl/standards/ilframework): "the information need of the individual or community may help to determine the form of authority required" | 2026-10-28 |
30
+
31
+ ## Search twice
32
+
33
+ | Bullet | Source | Read |
34
+ | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
35
+ | The same query scoped and open | [Wineburg and McGrew, Lateral Reading and the Nature of Expertise](https://stacks.stanford.edu/file/druid:yk133ht8603/Wineburg%20McGrew_Lateral%20Reading%20and%20the%20Nature%20of%20Expertise.pdf): fact checkers "knew that the first result was not necessarily the most authoritative", since optimizers push "more authoritative sites to the bottom" | 2026-10-28 |
36
+ | Prefer the scoped side, and say so | House choice: a silent pick hides which source a fact rests on, so a reader cannot re-check the disagreement. It beat keeping whichever result ranked higher | 2026-10-28 |
37
+ | The open result for what is unpublished | [Wineburg and McGrew, Lateral Reading and the Nature of Expertise](https://stacks.stanford.edu/file/druid:yk133ht8603/Wineburg%20McGrew_Lateral%20Reading%20and%20the%20Nature%20of%20Expertise.pdf): reading laterally means "drawing on the resources of the Internet to learn more about a site and its claims" | 2026-10-28 |
38
+ | Check every scoped result's domain | [Anthropic, Server tools, Domain filtering](https://platform.claude.com/docs/en/agents-and-tools/tool-use/server-tools): "Subdomains are automatically included (`example.com` covers `docs.example.com`)", and Unicode names "can bypass domain filters through homograph attacks" | 2026-10-28 |
39
+ | Fetch the page where summaries differ | [Caulfield, SIFT (The Four Moves)](https://hapgood.us/2019/06/19/sift-the-four-moves/): "we'll have you trace the claim, quote, or media back to the source" | 2026-10-28 |
40
+
41
+ ## Prefer a structured source
42
+
43
+ | Bullet | Source | Read |
44
+ | ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
45
+ | A public API over a summarized page | [Crossref REST API](https://www.crossref.org/documentation/retrieve-metadata/rest-api/): "Our publicly available REST API exposes the scholarly metadata that members and trusted sources deposit with Crossref" | 2026-10-28 |
46
+ | A plain request rather than a wrapper | [claude-research-stack](https://github.com/aghori3004/claude-research-stack): "The skill talks to the CLIs and MCPs directly, on purpose", listing "No wrapper scripts" among what it leaves out | 2026-10-28 |
47
+
48
+ ## Access note
49
+
50
+ | Bullet | Source | Read |
51
+ | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- |
52
+ | Reddit refuses keyless routes | House choice, measured: `curl` on `/r/programming/.rss` and on `/search.json` both returned 403, and `WebFetch` answered that it is "unable to fetch from www.reddit.com" | 2026-10-28 |
53
+ | X answers nothing without login | House choice, measured: `curl` on `/search` returned 307 to `/i/jf/onboarding/web` with `mode=login`, and `WebFetch` returned "HTTP 402 Payment Required" | 2026-10-28 |
54
+ | Ask before a route that pays | [x-research-skill](https://github.com/rohunvora/x-research-skill): "Each search page returns up to 100 posts = ~$0.50/page", a spend that is the operator's to authorize rather than one a session discovers | 2026-10-28 |
@@ -0,0 +1,64 @@
1
+ ---
2
+ title: Systematic debugging skill ledger
3
+ description: Sources for claude/skills/systematic-debugging/SKILL.md, one row per step and bullet in its concern groups
4
+ ---
5
+
6
+ # Systematic debugging skill ledger
7
+
8
+ The field is software debugging, with reliability engineering for a cause outside the code. Most rows cite the `obra/superpowers` skill this one was ported from, and `addyosmani/agent-skills` adds the non-reproducible tree. Git's docs, Zeller's Debugging Book, and the SRE book cover bisect, reduction, and retry.
9
+
10
+ The closing sections restate these rules, so they take no table. `references/adopted.md` stays the record of what was adopted and declined at the source level.
11
+
12
+ ## Phase 1: investigate
13
+
14
+ | Bullet | Source | Read |
15
+ | ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
16
+ | Read every line of the output | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): "Read stack traces completely", noting "line numbers, file paths, error codes" | 2026-10-28 |
17
+ | Reproduce, by the likely cause | [agent-skills](https://github.com/addyosmani/agent-skills/blob/2686b620fc1fed2e8f60c704839c766b8594c6b6/skills/debugging-and-error-recovery/SKILL.md): its non-reproducible tree splits on "Timing-dependent?", "Environment-dependent?", "State-dependent?" | 2026-10-28 |
18
+ | Check what changed, bisecting a regression | [git-bisect](https://git-scm.com/docs/git-bisect): "uses a binary search algorithm to find which commit in your project's history introduced a bug" | 2026-10-28 |
19
+ | Instrument each component boundary | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): "Run once to gather evidence showing WHERE it breaks", then "investigate that specific component" | 2026-10-28 |
20
+ | Trace a bad value to its source | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): "Keep tracing up until you find the source" and "Fix at source, not at symptom" | 2026-10-28 |
21
+
22
+ ## Phase 2: reduce and find the pattern
23
+
24
+ | Bullet | Source | Read |
25
+ | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
26
+ | Reduce to the smallest failing case | [The Debugging Book, Reducing Failure-Inducing Inputs](https://www.debuggingbook.org/html/DeltaDebugger.html): a minimum "not only eases debugging" but explains "why and when the program fails" | 2026-10-28 |
27
+ | Compare against working code | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): "Locate similar working code in same codebase" | 2026-10-28 |
28
+ | Read a reference completely | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): "read reference implementation COMPLETELY", and "Don't skim - read every line" | 2026-10-28 |
29
+ | List every difference | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): "List every difference, however small", and "Don't assume "that can't matter"" | 2026-10-28 |
30
+
31
+ ## Phase 3: hypothesize and test
32
+
33
+ | Bullet | Source | Read |
34
+ | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
35
+ | State one specific hypothesis | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): "State clearly: "I think X is the root cause because Y"", "Be specific, not vague" | 2026-10-28 |
36
+ | The smallest change, one variable | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): "Make the SMALLEST possible change to test hypothesis", "One variable at a time" | 2026-10-28 |
37
+ | A new hypothesis, not a stacked fix | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): "Didn't work? Form NEW hypothesis" and "DON'T add more fixes on top" | 2026-10-28 |
38
+ | Say what you do not understand | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): "Say "I don't understand X"" and "Don't pretend to know" | 2026-10-28 |
39
+
40
+ ## Phase 4: fix
41
+
42
+ | Bullet | Source | Read |
43
+ | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
44
+ | A failing test before the fix | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): the failing test case is one you "MUST have before fixing" | 2026-10-28 |
45
+ | One change at the root cause | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): "ONE change at a time", "No "while I'm here" improvements", "No bundled refactoring" | 2026-10-28 |
46
+ | The test passes and nothing breaks | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): "Test passes now?" and "No other tests broken?" | 2026-10-28 |
47
+
48
+ ## Three-fix circuit breaker
49
+
50
+ | Bullet | Source | Read |
51
+ | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- |
52
+ | Each fix reveals a new problem | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): "Each fix reveals new shared state/coupling/problem in different place" | 2026-10-28 |
53
+ | Each fix needs refactoring elsewhere | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): "Fixes require "massive refactoring" to implement" | 2026-10-28 |
54
+ | Symptoms keep moving | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): "Each fix creates new symptoms elsewhere" | 2026-10-28 |
55
+
56
+ ## When the cause is external or not found
57
+
58
+ | Bullet | Source | Read |
59
+ | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
60
+ | Document what was ruled out | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): for a cause that is "truly environmental, timing-dependent, or external", "Document what you investigated" | 2026-10-28 |
61
+ | Log for the next occurrence | [superpowers, Systematic Debugging](https://github.com/obra/superpowers/blob/8ca22dba9a94f28898bbce59f2537ff4d87c747d/skills/systematic-debugging/SKILL.md): "Add monitoring/logging for future investigation" | 2026-10-28 |
62
+ | Ask whether handling routes around | House choice: CI retried a degraded package mirror when the fix that fit was routing around it. It beat naming retry first | 2026-10-28 |
63
+ | Ask whether a retry meets the fault | [SRE book, Addressing Cascading Failures](https://sre.google/sre-book/addressing-cascading-failures/): "the retries themselves may be keeping the backend in an overloaded mode" | 2026-10-28 |
64
+ | Count what absorbing costs | House choice: a retry kept a degraded package mirror on CI's path, and each rerun paid its time and spend. It beat retry by default | 2026-10-28 |
@@ -0,0 +1,28 @@
1
+ ---
2
+ title: Test first skill ledger
3
+ description: Sources for claude/skills/test-first/SKILL.md, one row per step and bullet in its concern groups
4
+ ---
5
+
6
+ # Test first skill ledger
7
+
8
+ The field is test-driven development. Kent Beck states the loop, Martin Fowler makes its refactor step mandatory, and `obra/superpowers` carries the failure check the loop runs before writing code. `## What this delegates` routes, so it takes no table.
9
+
10
+ `references/adopted.md` stays the record of what was adopted and declined at the source level.
11
+
12
+ ## The loop
13
+
14
+ | Bullet | Source | Read |
15
+ | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
16
+ | The test before the code it covers | [Fowler, TestDrivenDevelopment](https://martinfowler.com/bliki/TestDrivenDevelopment.html): "Write a test for the next bit of functionality you want to add", ahead of "Write the functional code until the test passes" | 2026-10-28 |
17
+ | The behavior to come, named as proved | [obra/superpowers, Test-Driven Development](https://github.com/obra/superpowers/blob/5bf4e78/skills/test-driven-development/SKILL.md): a good test "Demonstrates desired API", and its "Name describes behavior" where `test('test1')` does not | 2026-10-28 |
18
+ | A failure for the missing behavior | [obra/superpowers, Test-Driven Development](https://github.com/obra/superpowers/blob/5bf4e78/skills/test-driven-development/SKILL.md): confirm the test "Fails because feature missing (not typos)", and on an error "Fix error, re-run until it fails correctly" | 2026-10-28 |
19
+ | The smallest change that passes | [obra/superpowers, Test-Driven Development](https://github.com/obra/superpowers/blob/5bf4e78/skills/test-driven-development/SKILL.md): "Write simplest code to pass the test", and "Don't add features, refactor other code, or "improve" beyond the test" | 2026-10-28 |
20
+ | The pass it was written for, then suite | [Beck, Canon TDD](https://newsletter.kentbeck.com/p/canon-tdd): "Change the code to make the test (& all previous tests) pass", where "delete assertions so the test pretends to pass" is a mistake | 2026-10-28 |
21
+ | Refactor with the suite green | [Fowler, TestDrivenDevelopment](https://martinfowler.com/bliki/TestDrivenDevelopment.html): "Refactor both new and old code to make it well structured", since "The most common way that I hear to screw up TDD is neglecting the third step" | 2026-10-28 |
22
+
23
+ ## Extending existing behavior
24
+
25
+ | Bullet | Source | Read |
26
+ | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
27
+ | A changed assertion fails first | [obra/superpowers, Test-Driven Development](https://github.com/obra/superpowers/blob/5bf4e78/skills/test-driven-development/SKILL.md) applies the loop "Always" to "Behavior changes", under "If you didn't watch the test fail, you don't know if it tests the right thing" | 2026-10-28 |
28
+ | A pass before any change is no test | [obra/superpowers, Test-Driven Development](https://github.com/obra/superpowers/blob/5bf4e78/skills/test-driven-development/SKILL.md): "Test passes? You're testing existing behavior. Fix test." | 2026-10-28 |
@@ -0,0 +1,62 @@
1
+ ---
2
+ title: Write human skill ledger
3
+ description: Sources for claude/skills/write-human/SKILL.md, one row per bullet and ordered step in its concern groups
4
+ ---
5
+
6
+ # Write human skill ledger
7
+
8
+ The field is plain-language writing and technical editing. Government plain-language guidance from GOV.UK and digital.gov, the Google and Microsoft developer style guides, and Nielsen Norman Group's reading research carry most rows. Purdue OWL carries the cadence rows, whose thresholds are the toolkit's own.
9
+
10
+ `## The bans stay in force`, `## Machine tells`, and `## Source material` point elsewhere and hold no bullet, so they take no table. The five ordered steps under `## Revising a passage` each take a row, the way a bullet does.
11
+
12
+ ## What yields and what does not
13
+
14
+ | Bullet | Source | Read |
15
+ | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- |
16
+ | A surface's own voice wins | House choice: a changelog or commit standard that fixes its own voice would otherwise answer to two authorities, and the session picks whichever it read last | 2026-10-28 |
17
+ | The yield covers voice alone | House choice: a declared warmer voice would otherwise excuse the fragment, the padding, and the tells, which read as defects in every register | 2026-10-28 |
18
+ | Terse reference prose is the default | [Microsoft Learn style quick start](https://learn.microsoft.com/en-us/contribute/content/style-quick-start): "Don't waste words. Be affirmative and don't use extra words or lots of qualifiers" | 2026-10-28 |
19
+
20
+ ## Voice
21
+
22
+ | Bullet | Source | Read |
23
+ | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
24
+ | A reader scanning, not studying | [How users read on the web](https://www.nngroup.com/articles/how-users-read-on-the-web/): "79 percent of our test users always scanned any new page they came across", and 16 percent read word by word | 2026-10-28 |
25
+ | Active voice and present tense | [digital.gov, Writing for understanding](https://digital.gov/guides/plain-language/writing): "Active voice makes it clear who should do what", and "The simplest and strongest form of a verb is present tense" | 2026-10-28 |
26
+ | Name the actor | [Google style guide, Active voice](https://developers.google.com/style/voice): "In passive voice, it's easy to neglect to indicate who or what is performing a particular action" | 2026-10-28 |
27
+ | Direct verbs and plain words | [GOV.UK, Use clear language](https://guidance.publishing.service.gov.uk/writing-to-gov-uk-standards/writing-guidelines/clear-language/): "Do not use formal or long words when easy or short ones will do" | 2026-10-28 |
28
+ | Drop marketing words | [GOV.UK A to Z, Words to avoid](https://guidance.publishing.service.gov.uk/writing-to-gov-uk-standards/style-guides/a-to-z-style-guide/#words-to-avoid): "leverage (unless in the financial sense), use 'influence' or 'use'" | 2026-10-28 |
29
+ | Drop vague qualifiers | [Google style guide, Word list](https://developers.google.com/style/word-list): "just" is "Usually, just is a filler word that you can delete without affecting your meaning" | 2026-10-28 |
30
+ | Direct on fact, hedged on doubt | [Microsoft Learn style quick start](https://learn.microsoft.com/en-us/contribute/content/style-quick-start): "Be affirmative and don't use extra words or lots of qualifiers" | 2026-10-28 |
31
+ | Assume developer-level knowledge | [GOV.UK, Meet user needs](https://guidance.publishing.service.gov.uk/writing-to-gov-uk-standards/writing-guidelines/meet-user-needs/): "only include what someone needs to know so they can complete a task" | 2026-10-28 |
32
+ | Front-load, and every sentence is new | [Microsoft, Top 10 tips](https://learn.microsoft.com/en-us/style-guide/top-10-tips-style-voice): "Lead with what's most important. Front-load keywords for scanning" | 2026-10-28 |
33
+
34
+ ## Rhythm
35
+
36
+ | Bullet | Source | Read |
37
+ | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
38
+ | Read the paragraph as one block | House choice: cadence is a property of the run, so an edit made line by line clears each sentence and leaves the paragraph as flat as it was | 2026-10-28 |
39
+ | Longest and shortest within five | [Purdue OWL, Sentence variety](https://owl.purdue.edu/owl/general_writing/academic_writing/sentence_variety/index.html): "Too many sentences with the same structure and length can grow monotonous for readers". The five-word spread is the toolkit's own threshold | 2026-10-28 |
40
+ | Three alike openings is a pattern | [Purdue OWL, Sentence variety](https://owl.purdue.edu/owl/general_writing/academic_writing/sentence_variety/index.html): "If too many sentences start with the same word, especially The, It, This, or I, prose can grow tedious for readers" | 2026-10-28 |
41
+ | Vary the shape, not the word | [Purdue OWL, Sentence variety](https://owl.purdue.edu/owl/general_writing/academic_writing/sentence_variety/index.html): the monotony it names comes from "the same structure and length", so a new first word over one structure leaves it in place | 2026-10-28 |
42
+ | Never buy variety with a fragment | [Microsoft Learn style quick start](https://learn.microsoft.com/en-us/contribute/content/style-quick-start): small words "(such as "a," "the," "that," and "is") are crucial for machine translation. Be sure to include them" | 2026-10-28 |
43
+ | A connective for flow, never rhythm | House choice: a connective added to vary cadence names no relation the sentences carry, so it reads as the padding the density rules cut | 2026-10-28 |
44
+
45
+ ## Density
46
+
47
+ | Bullet | Source | Read |
48
+ | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- |
49
+ | One claim per sentence | [digital.gov, Write short sentences](https://digital.gov/guides/plain-language/writing/clear-short): "Express only one idea in each sentence" | 2026-10-28 |
50
+ | Cut a restatement | [Microsoft, Top 10 tips](https://learn.microsoft.com/en-us/style-guide/top-10-tips-style-voice): "Give customers just enough information to make decisions confidently. Prune every excess word" | 2026-10-28 |
51
+ | Compress without the verb going | [Microsoft Learn style quick start](https://learn.microsoft.com/en-us/contribute/content/style-quick-start): "Include the "small words"", since words "understood for context" are still needed | 2026-10-28 |
52
+ | Resolve a pronoun to its noun | [Google style guide, Pronouns](https://developers.google.com/style/pronouns): "Avoid vague and confusing references between a pronoun and its antecedent" | 2026-10-28 |
53
+
54
+ ## Revising a passage
55
+
56
+ | Bullet | Source | Read |
57
+ | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
58
+ | Read the whole passage first | House choice: an edit made before the whole is read polishes a sentence a later paragraph makes redundant | 2026-10-28 |
59
+ | Mark lengths and openings | House choice: the counts the rhythm rules name are invisible until written down, and the flattest run carries most of the uniformity a reader hears | 2026-10-28 |
60
+ | Cut a sentence adding no claim | House choice: shortening a sentence that carries no claim leaves the padding in place at a smaller size | 2026-10-28 |
61
+ | Re-read model text for the tells | [Wikipedia, Signs of AI writing](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing): it catalogs patterns model output carries, such as "LLMs overuse the rule of three" | 2026-10-28 |
62
+ | Run the audit and rewrite each hit | House choice: a near-synonym swapped for a flagged token clears the scan and keeps the habit, the failure that narrowed the markdown standard to characters | 2026-10-28 |
@@ -0,0 +1,36 @@
1
+ ---
2
+ title: Information density reference ledger
3
+ description: Sources for claude/skills/write-human/references/density.md, one row per bullet
4
+ ---
5
+
6
+ # Information density reference ledger
7
+
8
+ The field is plain-language writing and technical editing. The Google and Microsoft developer style guides and digital.gov's plain-language guide carry the sourced rows. `## Measuring a paragraph` holds prose and no bullet, so it takes no table.
9
+
10
+ ## What to cut
11
+
12
+ | Bullet | Source | Read |
13
+ | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
14
+ | A restatement at another altitude | [Microsoft, Top 10 tips](https://learn.microsoft.com/en-us/style-guide/top-10-tips-style-voice): "Give customers just enough information to make decisions confidently. Prune every excess word" | 2026-10-28 |
15
+ | A setup clause naming the subject | [Microsoft, Top 10 tips](https://learn.microsoft.com/en-us/style-guide/top-10-tips-style-voice): "Edit out you can when it isn't necessary. Avoid weak phrasing like there is, there are, and there were" | 2026-10-28 |
16
+ | A qualifier changing no truth | [Microsoft Learn style quick start](https://learn.microsoft.com/en-us/contribute/content/style-quick-start): "Be affirmative and don't use extra words or lots of qualifiers" | 2026-10-28 |
17
+ | An example repeating the one above | House choice: a second example teaching what the first taught doubles the reading for no new case, and the reader goes looking for the difference | 2026-10-28 |
18
+ | A transition naming the relation | House choice: a transition such as `Additionally` before an addition restates the relation the sentence order already shows, so it adds a word and no claim | 2026-10-28 |
19
+
20
+ ## What never to cut
21
+
22
+ | Bullet | Source | Read |
23
+ | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
24
+ | The verb | [Microsoft Learn style quick start](https://learn.microsoft.com/en-us/contribute/content/style-quick-start): small words "(such as "a," "the," "that," and "is") are crucial for machine translation" | 2026-10-28 |
25
+ | A qualifier that bounds a claim | [Google style guide, Excessive claims](https://developers.google.com/style/excessive-claims): "avoid superlatives like best, simplest, fastest, never, and always", the claim a dropped bound turns `most` into | 2026-10-28 |
26
+ | The source and the date of a claim | House choice: a measurement with no ref or date cannot be re-run, so a later reader cannot tell a current number from a stale one | 2026-10-28 |
27
+ | The actor | [Google style guide, Active voice](https://developers.google.com/style/voice): "Make clear who's performing the action" | 2026-10-28 |
28
+
29
+ ## Keeping a compressed sentence unambiguous
30
+
31
+ | Bullet | Source | Read |
32
+ | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
33
+ | Resolve every pronoun | [Google style guide, Write for a global audience](https://developers.google.com/style/translation): "if a pronoun is ambiguous, then replace it with the appropriate noun" | 2026-10-28 |
34
+ | Attach every modifier | [Google style guide, Write for a global audience](https://developers.google.com/style/translation): "place a word like only immediately before the word or phrase that it relates to" | 2026-10-28 |
35
+ | Quantify an amount | [Google style guide, Excessive claims](https://developers.google.com/style/excessive-claims): avoid a statement "about performance or cost that isn't easily verifiable with data that's available to the reader" | 2026-10-28 |
36
+ | Split two claims joined by `and` | [digital.gov, Write short sentences](https://digital.gov/guides/plain-language/writing/clear-short): "Break up your idea into parts and make each one the subject of its own sentence" | 2026-10-28 |
@@ -0,0 +1,30 @@
1
+ ---
2
+ title: Machine tells reference ledger
3
+ description: Sources for claude/skills/write-human/references/machine-tells.md, one entry per tell, held as lists since the reference carries no ledgered bullet
4
+ ---
5
+
6
+ # Machine tells reference ledger
7
+
8
+ The field is plain-language writing and technical editing, narrowed to the patterns editors flag in model-written text. Wikipedia's Signs of AI writing, which the humanizer catalog `adopted.md` names is built on, carries most tells. Every source below was read on 2026-10-28.
9
+
10
+ The reference states each tell as prose under its own H2, and its one list is `## Contents`, which the audit skips. A table here would count rows against no bullet and fail, so each tell takes a list entry instead.
11
+
12
+ ## Sourced to the catalog of model tells
13
+
14
+ - Rule of three: [Signs of AI writing](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing) says "LLMs overuse the rule of three"
15
+ - Inline-header lists: the same page says model output "often includes vertical lists formatted in a specific way"
16
+ - Closing restatement: the same page names section summaries, which older models "often added" to longer outputs
17
+ - Escalating parallel clauses: the same page names negative parallelisms, which read "as though it is clearing up a common misconception"
18
+ - Empty superlative frames: the same page says "LLM writing often puffs up the importance of the subject matter"
19
+
20
+ ## Sourced to a style guide
21
+
22
+ - Synonym cycling: [Google, Write for a global audience](https://developers.google.com/style/translation) says "If you use different names for the same thing", readers "might think you're referring to different concepts"
23
+ - Adverb propping: [Google, Excessive claims](https://developers.google.com/style/excessive-claims) rules out a claim "that isn't easily verifiable with data that's available to the reader"
24
+ - Passive voice with an unnamed actor: [Google, Active voice](https://developers.google.com/style/voice) says "Make clear who's performing the action"
25
+
26
+ ## House choices
27
+
28
+ - False ranges: a `from X to Y` over items with no scale claims a coverage the sentence never lists, so a reader cannot check what falls inside
29
+ - Question as transition: a question standing between paragraphs delays the answer by one line and adds no claim, the padding the density rules cut
30
+ - A colon or comma where the dash was: a session told to drop a banned dash swaps the mark and keeps the join, so the ban clears and the habit stays
@@ -9,6 +9,7 @@ paths:
9
9
  ## Plan files
10
10
 
11
11
  - Load the `canon:plan-feature` skill before a hand edit under `.canon/plans/`, whose references own its shape and lifecycle. Report it rather than proceeding silently when it does not resolve.
12
+ - Where `plan-guard.sh` is installed, expect it to block a new plan until the skill is invoked for it or an `auto-ship` launch names its path, since a shell write never loads this rule.
12
13
  - Never fill an `- Answer:` slot on behalf of the person who owns it. A blank slot accepts the suggestion at execution time.
13
14
  - Rewrite an unanswered question's `- Suggested:` line as `overridden at execution to <pick>,` plus the measurement when execution deviates, leaving the slot blank.
14
15
  - Fetch the source a decision rests on and quote the passage under `**Sources:**`, or mark the entry `unverified`. Never cite an outside source from recall.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@erclx/canon",
3
3
  "type": "module",
4
- "version": "5.72.1",
4
+ "version": "5.74.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": {
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env bash
2
+ # Reports whether a pull request changes anything besides Markdown, called by
3
+ # the changes job in verify.yml to skip the macOS tests on a docs-only change.
4
+ # Prints code=false only when git lists at least one changed file and every
5
+ # one ends in .md, so a missing base, a failed diff, or an empty diff runs the
6
+ # tests rather than skipping them. Renames are split into a delete and an add,
7
+ # so a code file renamed to .md still counts as code.
8
+ #
9
+ # Usage: docs-only.sh <base>
10
+ # Writes to $GITHUB_OUTPUT, or stdout outside Actions, and always exits 0.
11
+
12
+ set -e
13
+
14
+ out=${GITHUB_OUTPUT:-/dev/stdout}
15
+ code=true
16
+
17
+ if [ $# -eq 1 ] && files=$(git diff --name-only --no-renames "$1" HEAD) && [ -n "$files" ]; then
18
+ if ! grep -qv '\.md$' <<<"$files"; then
19
+ code=false
20
+ fi
21
+ fi
22
+
23
+ echo "code=$code" >>"$out"
24
+ echo "code=$code" >&2
@@ -7,6 +7,20 @@ export const MISC_CASES: readonly SkillCase[] = [
7
7
  'Bundle up every open call that only I can make and ask me all at once.',
8
8
  expect: 'decision-escalate',
9
9
  },
10
+ {
11
+ prompt: 'What do you need me to decide before you keep going?',
12
+ expect: 'decision-escalate',
13
+ },
14
+ {
15
+ prompt:
16
+ 'Poke holes in this plan before we build it. Is the problem even real?',
17
+ expect: 'proposal-critique',
18
+ },
19
+ {
20
+ prompt:
21
+ 'CI keeps failing on the install step and the plan is to add a retry. Is the cause actually ours, and is this fix worth it?',
22
+ expect: 'proposal-critique',
23
+ },
10
24
  {
11
25
  prompt:
12
26
  'Show me a few different treatments for this callout so I can pick one by looking.',