@hecer/yoke 1.5.1 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/.claude-plugin/plugin.json +13 -13
  2. package/.codex-plugin/plugin.json +7 -7
  3. package/CHANGELOG.md +280 -259
  4. package/README.md +855 -834
  5. package/TODOS.md +5 -5
  6. package/agents/docs.toml +6 -6
  7. package/agents/implementer.toml +6 -6
  8. package/agents/reviewer.toml +6 -6
  9. package/agents/security.toml +6 -6
  10. package/bench/README.md +86 -86
  11. package/bench/RESULTS.md +35 -35
  12. package/bench/output-compaction.mjs +65 -65
  13. package/bench/result-schema.mjs +12 -12
  14. package/bench/results/claude-2026-07-27T18-03-26.json +50 -50
  15. package/bench/results/codex-unavailable-1785175418318.json +15 -15
  16. package/bench/results/gemini-2026-07-27T18-03-44.json +46 -46
  17. package/bench/run-matrix.mjs +26 -26
  18. package/bench/run.mjs +106 -106
  19. package/canon/AGENTS.md +30 -30
  20. package/canon/context/DECISIONS.md +4 -4
  21. package/canon/context/GLOSSARY.md +11 -0
  22. package/canon/context/KNOWLEDGE.md +4 -4
  23. package/canon/context/PROJECT.md +15 -15
  24. package/canon/loop/loop-spec.md +65 -65
  25. package/canon/loop/prd.schema.md +43 -43
  26. package/canon/manifest.yaml +59 -53
  27. package/canon/policy/gates.md +7 -7
  28. package/canon/policy/roles.md +9 -9
  29. package/canon/skills/ATTRIBUTION.md +99 -71
  30. package/canon/skills/authoring-prd/SKILL.md +58 -58
  31. package/canon/skills/brainstorming/SKILL.md +164 -164
  32. package/canon/skills/codebase-design/DEEPENING.md +15 -0
  33. package/canon/skills/codebase-design/DESIGN-IT-TWICE.md +12 -0
  34. package/canon/skills/codebase-design/SKILL.md +39 -0
  35. package/canon/skills/dispatching-parallel-agents/SKILL.md +182 -182
  36. package/canon/skills/document-release/SKILL.md +302 -297
  37. package/canon/skills/domain-modeling/ADR-FORMAT.md +19 -0
  38. package/canon/skills/domain-modeling/CONTEXT-FORMAT.md +39 -0
  39. package/canon/skills/domain-modeling/SKILL.md +35 -0
  40. package/canon/skills/executing-plans/SKILL.md +70 -70
  41. package/canon/skills/finishing-a-development-branch/SKILL.md +200 -200
  42. package/canon/skills/health/SKILL.md +177 -177
  43. package/canon/skills/maintaining-context/SKILL.md +34 -34
  44. package/canon/skills/minimal-code/SKILL.md +21 -21
  45. package/canon/skills/no-ai-slop/SKILL.md +103 -0
  46. package/canon/skills/no-ai-slop/eval.md +43 -0
  47. package/canon/skills/plan-ceo-review/SKILL.md +541 -541
  48. package/canon/skills/plan-eng-review/SKILL.md +362 -362
  49. package/canon/skills/receiving-code-review/SKILL.md +213 -213
  50. package/canon/skills/requesting-code-review/SKILL.md +105 -105
  51. package/canon/skills/resolving-merge-conflicts/SKILL.md +18 -0
  52. package/canon/skills/retro/SKILL.md +397 -397
  53. package/canon/skills/review/SKILL.md +246 -246
  54. package/canon/skills/ship/SKILL.md +691 -691
  55. package/canon/skills/subagent-driven-development/SKILL.md +277 -277
  56. package/canon/skills/systematic-debugging/SKILL.md +296 -296
  57. package/canon/skills/tdd/SKILL.md +371 -371
  58. package/canon/skills/unslop-ui/SKILL.md +34 -34
  59. package/canon/skills/using-git-worktrees/SKILL.md +218 -218
  60. package/canon/skills/verification-before-completion/SKILL.md +139 -139
  61. package/canon/skills/visual-verification/SKILL.md +54 -54
  62. package/canon/skills/workflow/SKILL.md +22 -22
  63. package/canon/skills/writing-for-agents/SKILL-MECHANICS.md +27 -0
  64. package/canon/skills/writing-for-agents/SKILL.md +42 -0
  65. package/canon/skills/writing-plans/SKILL.md +152 -152
  66. package/canon/skills/writing-skills/SKILL.md +655 -655
  67. package/canon/skills/yoke-retrofit/SKILL.md +26 -26
  68. package/canon/skills/yoke-workflow/SKILL.md +20 -20
  69. package/canon/tools/codex-rtk-hook.mjs +35 -35
  70. package/canon/tools/graphify.md +3 -3
  71. package/canon/tools/playwright-mcp.md +3 -3
  72. package/canon/tools/rtk.md +7 -7
  73. package/canon/tools/serena.md +6 -6
  74. package/dist/agents/process.js +3 -0
  75. package/dist/canon/manifest.js +2 -0
  76. package/dist/canon/skill-package.js +113 -0
  77. package/dist/canon/validate.js +16 -1
  78. package/dist/context/command.js +4 -1
  79. package/dist/context/context.js +6 -0
  80. package/dist/loop/dispatcher.js +1 -1
  81. package/dist/loop/loop.js +26 -0
  82. package/dist/loop/parallel-command.js +3 -0
  83. package/dist/loop/run-command.js +11 -0
  84. package/dist/loop/watchdog.js +28 -11
  85. package/dist/loop/worker.js +11 -0
  86. package/dist/prd/command.js +17 -17
  87. package/dist/retrofit/apply.js +22 -7
  88. package/dist/retrofit/command.js +4 -1
  89. package/dist/retrofit/config.js +4 -0
  90. package/dist/retrofit/context-actions.js +1 -1
  91. package/dist/retrofit/detect.js +2 -0
  92. package/dist/retrofit/planners/claude.js +16 -20
  93. package/dist/retrofit/planners/codex.js +3 -7
  94. package/dist/retrofit/planners/gemini.js +11 -1
  95. package/dist/retrofit/preserve.js +2 -2
  96. package/dist/retrofit/report.js +5 -0
  97. package/dist/retrofit/skill-actions.js +66 -0
  98. package/dist/retrofit/ui-detect.js +83 -0
  99. package/dist/scan/gate.js +36 -0
  100. package/docs/MIGRATING-TO-1.0.md +33 -33
  101. package/docs/MIGRATING-TO-1.1.md +27 -27
  102. package/docs/MIGRATING-TO-1.4.md +70 -70
  103. package/docs/PUBLISHING.md +91 -91
  104. package/docs/superpowers/plans/2026-06-28-baustein-e-context-layer.md +981 -981
  105. package/docs/superpowers/plans/2026-06-29-baustein-f-routing.md +258 -258
  106. package/docs/superpowers/plans/2026-06-29-baustein-g-loop-observability.md +1006 -1006
  107. package/docs/superpowers/plans/2026-06-29-baustein-h-loop-robustness.md +374 -374
  108. package/docs/superpowers/plans/2026-06-30-baustein-i-visual-design-verification.md +450 -450
  109. package/docs/superpowers/plans/2026-07-02-baustein-k-zero-to-100-bootstrap.md +1024 -1024
  110. package/docs/superpowers/plans/2026-07-02-baustein-m-flow-smoke-proofs.md +574 -574
  111. package/docs/superpowers/plans/2026-08-13-gauntlet-quality-loop.md +537 -537
  112. package/docs/superpowers/plans/2026-08-16-artifact-backed-output-compaction.md +329 -329
  113. package/docs/superpowers/plans/2026-08-20-automatic-ui-design-gate.md +59 -0
  114. package/docs/superpowers/plans/2026-08-20-capability-skills-and-context.md +51 -0
  115. package/docs/superpowers/plans/2026-08-20-complete-skill-packages-and-invocation.md +59 -0
  116. package/docs/superpowers/plans/2026-08-20-windows-reliability-and-release.md +67 -0
  117. package/docs/superpowers/specs/2026-06-28-baustein-e-context-layer-design.md +146 -146
  118. package/docs/superpowers/specs/2026-06-29-baustein-f-routing-design.md +106 -106
  119. package/docs/superpowers/specs/2026-06-29-baustein-g-loop-observability-design.md +186 -186
  120. package/docs/superpowers/specs/2026-06-29-baustein-h-loop-robustness-design.md +113 -113
  121. package/docs/superpowers/specs/2026-06-30-baustein-i-visual-design-verification-design.md +98 -98
  122. package/docs/superpowers/specs/2026-07-02-baustein-k-zero-to-100-bootstrap-design.md +200 -200
  123. package/docs/superpowers/specs/2026-07-02-baustein-m-flow-smoke-proofs-design.md +155 -155
  124. package/docs/superpowers/specs/2026-08-13-gauntlet-quality-loop-design.md +422 -422
  125. package/docs/superpowers/specs/2026-08-16-artifact-backed-output-compaction-design.md +166 -166
  126. package/docs/superpowers/specs/2026-08-20-skill-capabilities-and-reliability-design.md +391 -0
  127. package/gemini-extension.json +6 -6
  128. package/hooks/hooks.json +19 -19
  129. package/package.json +84 -84
@@ -1,177 +1,177 @@
1
- ---
2
- name: health
3
- description: |
4
- Code Quality Dashboard. Runs the project's type-checker, linter, test runner, and
5
- dead-code detector, scores each category 0-10, and presents a dashboard with trends.
6
- Use when asked for a "health check", "code quality report", or "quality dashboard".
7
- triggers:
8
- - health check
9
- - code quality
10
- - quality dashboard
11
- ---
12
-
13
- # Code Quality Dashboard
14
-
15
- You are running the `health` skill. Detect and run the project's quality tools, score each category, and present a dashboard.
16
-
17
- ---
18
-
19
- ## Step 1: Detect the health stack
20
-
21
- Read `CLAUDE.md` and look for a `## Health Stack` section that lists the project's tools. If found, use those tools. If not found, auto-detect:
22
-
23
- ```bash
24
- # Runtime detection
25
- [ -f Gemfile ] && echo "RUNTIME:ruby"
26
- [ -f package.json ] && echo "RUNTIME:node"
27
- [ -f requirements.txt ] || [ -f pyproject.toml ] && echo "RUNTIME:python"
28
- [ -f go.mod ] && echo "RUNTIME:go"
29
- [ -f Cargo.toml ] && echo "RUNTIME:rust"
30
-
31
- # Type checker
32
- [ -f tsconfig.json ] && echo "TYPECHECK:tsc"
33
- [ -f pyproject.toml ] && command -v mypy >/dev/null 2>&1 && echo "TYPECHECK:mypy"
34
- [ -f Gemfile ] && grep -q "sorbet" Gemfile 2>/dev/null && echo "TYPECHECK:sorbet"
35
-
36
- # Linter
37
- [ -f .eslintrc* ] || [ -f eslint.config* ] && echo "LINT:eslint"
38
- [ -f .rubocop.yml ] && echo "LINT:rubocop"
39
- [ -f pyproject.toml ] && grep -qE "ruff|flake8" pyproject.toml 2>/dev/null && echo "LINT:ruff"
40
- [ -f go.mod ] && echo "LINT:staticcheck"
41
- [ -f Cargo.toml ] && echo "LINT:clippy"
42
-
43
- # Test runner
44
- [ -f jest.config* ] || [ -f vitest.config* ] && echo "TESTS:npm run test"
45
- [ -f .rspec ] && echo "TESTS:bundle exec rspec"
46
- [ -f pytest.ini ] || [ -f conftest.py ] && echo "TESTS:pytest"
47
- [ -f go.mod ] && echo "TESTS:go test ./..."
48
- [ -f Cargo.toml ] && echo "TESTS:cargo test"
49
-
50
- # Dead code detector
51
- command -v ts-prune >/dev/null 2>&1 && echo "DEADCODE:ts-prune"
52
- command -v knip >/dev/null 2>&1 && echo "DEADCODE:knip"
53
- [ -f go.mod ] && echo "DEADCODE:deadcode (go-deadcode)"
54
- [ -f Cargo.toml ] && echo "DEADCODE:cargo udeps"
55
- ```
56
-
57
- Print the detected stack. If nothing is detected, ask the user what tools to run.
58
-
59
- ---
60
-
61
- ## Step 2: Run the tools
62
-
63
- Run each detected tool and capture output. Run them in parallel where possible.
64
-
65
- **Type checker** (run the project's own type-checker, e.g. `tsc --noEmit`, `mypy .`, `srb tc`):
66
- ```bash
67
- # Example for TypeScript:
68
- npx tsc --noEmit 2>&1 | tail -20
69
- ```
70
-
71
- **Linter** (run the project's own linter, e.g. `eslint`, `rubocop`, `ruff`):
72
- ```bash
73
- # Example for ESLint:
74
- npx eslint . --max-warnings 0 2>&1 | tail -30
75
- ```
76
-
77
- **Test runner** (run the project's own test suite):
78
- ```bash
79
- # Example for npm:
80
- npm test -- --passWithNoTests 2>&1 | tail -40
81
- ```
82
-
83
- **Dead-code detector** (run the project's own dead-code tool, e.g. `knip`, `ts-prune`):
84
- ```bash
85
- # Example:
86
- npx knip 2>&1 | tail -20
87
- ```
88
-
89
- Capture raw counts: errors, warnings, test pass/fail/skip counts, dead-code count.
90
-
91
- ---
92
-
93
- ## Step 3: Score each category (0–10)
94
-
95
- Score rules (apply for each category):
96
-
97
- | Score | Meaning |
98
- |-------|---------|
99
- | 10 | Zero issues |
100
- | 8-9 | 1-5 minor warnings, no errors |
101
- | 6-7 | <20 warnings, zero errors |
102
- | 4-5 | 20-50 warnings, or 1-5 errors |
103
- | 2-3 | 50-100 warnings, or 6-20 errors |
104
- | 0-1 | 100+ warnings, or 20+ errors, or tool fails to run |
105
-
106
- For tests, also consider pass rate:
107
- - 10 = 100% pass
108
- - 8 = 95-99%
109
- - 6 = 80-94%
110
- - 4 = 50-79%
111
- - 0-2 = <50%
112
-
113
- ---
114
-
115
- ## Step 4: Present the dashboard
116
-
117
- ```
118
- +=====================================================================+
119
- | CODE QUALITY DASHBOARD |
120
- | {date} — {branch} |
121
- +=====================================================================+
122
- | Category | Score | Status | Details |
123
- |-----------------|-------|---------|--------------------------------|
124
- | Type Safety | 8/10 | WARN | 3 warnings, 0 errors |
125
- | Lint | 10/10 | PASS | 0 issues |
126
- | Tests | 9/10 | PASS | 142/147 pass, 5 skip |
127
- | Dead Code | 7/10 | WARN | 12 unused exports |
128
- +---------------------------------------------------------------------+
129
- | OVERALL | 8.5 | HEALTHY | |
130
- +=====================================================================+
131
-
132
- Top issues (if any):
133
- [TYPECHECK] src/api/users.ts:42 — Parameter 'id' implicitly has type 'any'
134
- [DEADCODE] src/utils/legacy.ts — 4 exports never imported
135
- ```
136
-
137
- Overall score = average of category scores. Verdict:
138
- - 9-10: EXCELLENT
139
- - 7-8: HEALTHY
140
- - 5-6: FAIR — address warnings before adding more features
141
- - 3-4: POOR — address errors before shipping
142
- - 0-2: CRITICAL — stop and fix now
143
-
144
- ---
145
-
146
- ## Step 5: Trend analysis (optional)
147
-
148
- Check if previous health snapshots exist in `.context/health/` (or similar local store in the project). If prior data exists, show trends:
149
-
150
- ```
151
- Trends vs last check:
152
- Type Safety: 8/10 → 8/10 (=)
153
- Lint: 9/10 → 10/10 (↑ +1)
154
- Tests: 7/10 → 9/10 (↑ +2) — 12 new tests added
155
- Dead Code: 5/10 → 7/10 (↑ +2) — cleaned up 8 exports
156
- ```
157
-
158
- Save a snapshot to `.context/health/{date}.json` for future trend comparison:
159
- ```bash
160
- mkdir -p .context/health
161
- ```
162
-
163
- Use the Write tool to save `{date}.json` with the scores, counts, and branch name.
164
-
165
- ---
166
-
167
- ## Step 6: Recommendations
168
-
169
- For each category scoring below 8, provide one concrete action:
170
- - Type Safety: "Run the type-checker and fix the N errors — prioritize the ones in `{hottest file}`"
171
- - Lint: "Run the linter with `--fix` to auto-fix {N} of the warnings"
172
- - Tests: "Add tests for the {N} skipped/failing cases in {file}"
173
- - Dead Code: "Delete the {N} unused exports in {files} — they add maintenance surface"
174
-
175
- ## Completion Status
176
-
177
- Report **DONE** with the dashboard, or **DONE_WITH_CONCERNS** if any category is below 6.
1
+ ---
2
+ name: health
3
+ description: |
4
+ Code Quality Dashboard. Runs the project's type-checker, linter, test runner, and
5
+ dead-code detector, scores each category 0-10, and presents a dashboard with trends.
6
+ Use when asked for a "health check", "code quality report", or "quality dashboard".
7
+ triggers:
8
+ - health check
9
+ - code quality
10
+ - quality dashboard
11
+ ---
12
+
13
+ # Code Quality Dashboard
14
+
15
+ You are running the `health` skill. Detect and run the project's quality tools, score each category, and present a dashboard.
16
+
17
+ ---
18
+
19
+ ## Step 1: Detect the health stack
20
+
21
+ Read `CLAUDE.md` and look for a `## Health Stack` section that lists the project's tools. If found, use those tools. If not found, auto-detect:
22
+
23
+ ```bash
24
+ # Runtime detection
25
+ [ -f Gemfile ] && echo "RUNTIME:ruby"
26
+ [ -f package.json ] && echo "RUNTIME:node"
27
+ [ -f requirements.txt ] || [ -f pyproject.toml ] && echo "RUNTIME:python"
28
+ [ -f go.mod ] && echo "RUNTIME:go"
29
+ [ -f Cargo.toml ] && echo "RUNTIME:rust"
30
+
31
+ # Type checker
32
+ [ -f tsconfig.json ] && echo "TYPECHECK:tsc"
33
+ [ -f pyproject.toml ] && command -v mypy >/dev/null 2>&1 && echo "TYPECHECK:mypy"
34
+ [ -f Gemfile ] && grep -q "sorbet" Gemfile 2>/dev/null && echo "TYPECHECK:sorbet"
35
+
36
+ # Linter
37
+ [ -f .eslintrc* ] || [ -f eslint.config* ] && echo "LINT:eslint"
38
+ [ -f .rubocop.yml ] && echo "LINT:rubocop"
39
+ [ -f pyproject.toml ] && grep -qE "ruff|flake8" pyproject.toml 2>/dev/null && echo "LINT:ruff"
40
+ [ -f go.mod ] && echo "LINT:staticcheck"
41
+ [ -f Cargo.toml ] && echo "LINT:clippy"
42
+
43
+ # Test runner
44
+ [ -f jest.config* ] || [ -f vitest.config* ] && echo "TESTS:npm run test"
45
+ [ -f .rspec ] && echo "TESTS:bundle exec rspec"
46
+ [ -f pytest.ini ] || [ -f conftest.py ] && echo "TESTS:pytest"
47
+ [ -f go.mod ] && echo "TESTS:go test ./..."
48
+ [ -f Cargo.toml ] && echo "TESTS:cargo test"
49
+
50
+ # Dead code detector
51
+ command -v ts-prune >/dev/null 2>&1 && echo "DEADCODE:ts-prune"
52
+ command -v knip >/dev/null 2>&1 && echo "DEADCODE:knip"
53
+ [ -f go.mod ] && echo "DEADCODE:deadcode (go-deadcode)"
54
+ [ -f Cargo.toml ] && echo "DEADCODE:cargo udeps"
55
+ ```
56
+
57
+ Print the detected stack. If nothing is detected, ask the user what tools to run.
58
+
59
+ ---
60
+
61
+ ## Step 2: Run the tools
62
+
63
+ Run each detected tool and capture output. Run them in parallel where possible.
64
+
65
+ **Type checker** (run the project's own type-checker, e.g. `tsc --noEmit`, `mypy .`, `srb tc`):
66
+ ```bash
67
+ # Example for TypeScript:
68
+ npx tsc --noEmit 2>&1 | tail -20
69
+ ```
70
+
71
+ **Linter** (run the project's own linter, e.g. `eslint`, `rubocop`, `ruff`):
72
+ ```bash
73
+ # Example for ESLint:
74
+ npx eslint . --max-warnings 0 2>&1 | tail -30
75
+ ```
76
+
77
+ **Test runner** (run the project's own test suite):
78
+ ```bash
79
+ # Example for npm:
80
+ npm test -- --passWithNoTests 2>&1 | tail -40
81
+ ```
82
+
83
+ **Dead-code detector** (run the project's own dead-code tool, e.g. `knip`, `ts-prune`):
84
+ ```bash
85
+ # Example:
86
+ npx knip 2>&1 | tail -20
87
+ ```
88
+
89
+ Capture raw counts: errors, warnings, test pass/fail/skip counts, dead-code count.
90
+
91
+ ---
92
+
93
+ ## Step 3: Score each category (0–10)
94
+
95
+ Score rules (apply for each category):
96
+
97
+ | Score | Meaning |
98
+ |-------|---------|
99
+ | 10 | Zero issues |
100
+ | 8-9 | 1-5 minor warnings, no errors |
101
+ | 6-7 | <20 warnings, zero errors |
102
+ | 4-5 | 20-50 warnings, or 1-5 errors |
103
+ | 2-3 | 50-100 warnings, or 6-20 errors |
104
+ | 0-1 | 100+ warnings, or 20+ errors, or tool fails to run |
105
+
106
+ For tests, also consider pass rate:
107
+ - 10 = 100% pass
108
+ - 8 = 95-99%
109
+ - 6 = 80-94%
110
+ - 4 = 50-79%
111
+ - 0-2 = <50%
112
+
113
+ ---
114
+
115
+ ## Step 4: Present the dashboard
116
+
117
+ ```
118
+ +=====================================================================+
119
+ | CODE QUALITY DASHBOARD |
120
+ | {date} — {branch} |
121
+ +=====================================================================+
122
+ | Category | Score | Status | Details |
123
+ |-----------------|-------|---------|--------------------------------|
124
+ | Type Safety | 8/10 | WARN | 3 warnings, 0 errors |
125
+ | Lint | 10/10 | PASS | 0 issues |
126
+ | Tests | 9/10 | PASS | 142/147 pass, 5 skip |
127
+ | Dead Code | 7/10 | WARN | 12 unused exports |
128
+ +---------------------------------------------------------------------+
129
+ | OVERALL | 8.5 | HEALTHY | |
130
+ +=====================================================================+
131
+
132
+ Top issues (if any):
133
+ [TYPECHECK] src/api/users.ts:42 — Parameter 'id' implicitly has type 'any'
134
+ [DEADCODE] src/utils/legacy.ts — 4 exports never imported
135
+ ```
136
+
137
+ Overall score = average of category scores. Verdict:
138
+ - 9-10: EXCELLENT
139
+ - 7-8: HEALTHY
140
+ - 5-6: FAIR — address warnings before adding more features
141
+ - 3-4: POOR — address errors before shipping
142
+ - 0-2: CRITICAL — stop and fix now
143
+
144
+ ---
145
+
146
+ ## Step 5: Trend analysis (optional)
147
+
148
+ Check if previous health snapshots exist in `.context/health/` (or similar local store in the project). If prior data exists, show trends:
149
+
150
+ ```
151
+ Trends vs last check:
152
+ Type Safety: 8/10 → 8/10 (=)
153
+ Lint: 9/10 → 10/10 (↑ +1)
154
+ Tests: 7/10 → 9/10 (↑ +2) — 12 new tests added
155
+ Dead Code: 5/10 → 7/10 (↑ +2) — cleaned up 8 exports
156
+ ```
157
+
158
+ Save a snapshot to `.context/health/{date}.json` for future trend comparison:
159
+ ```bash
160
+ mkdir -p .context/health
161
+ ```
162
+
163
+ Use the Write tool to save `{date}.json` with the scores, counts, and branch name.
164
+
165
+ ---
166
+
167
+ ## Step 6: Recommendations
168
+
169
+ For each category scoring below 8, provide one concrete action:
170
+ - Type Safety: "Run the type-checker and fix the N errors — prioritize the ones in `{hottest file}`"
171
+ - Lint: "Run the linter with `--fix` to auto-fix {N} of the warnings"
172
+ - Tests: "Add tests for the {N} skipped/failing cases in {file}"
173
+ - Dead Code: "Delete the {N} unused exports in {files} — they add maintenance surface"
174
+
175
+ ## Completion Status
176
+
177
+ Report **DONE** with the dashboard, or **DONE_WITH_CONCERNS** if any category is below 6.
@@ -1,34 +1,34 @@
1
- ---
2
- name: maintaining-context
3
- description: Use at the start of any substantial task and whenever you make a non-obvious decision or learn a reusable fact — keeps .yoke/context/ (PROJECT, DECISIONS, KNOWLEDGE) the durable source of truth so fresh-context work never drifts.
4
- ---
5
-
6
- # Maintaining Project Context
7
-
8
- Yoke keeps durable, cross-session context in `.yoke/context/`. These files are the
9
- project's memory — they survive between sessions and loop iterations, so an agent
10
- starting with a fresh context window is never blind.
11
-
12
- ## Before substantial work
13
-
14
- 1. Read `.yoke/context/PROJECT.md` — the north star (goal, constraints, **non-goals**, success criteria). Align your work to it. If the task contradicts a non-goal, stop and flag it.
15
- 2. Skim `.yoke/context/KNOWLEDGE.md` for gotchas that affect what you are about to do.
16
-
17
- ## While working
18
-
19
- - When you make a **non-obvious decision** (a trade-off, an architectural choice, a rejected alternative), append it to `.yoke/context/DECISIONS.md`:
20
-
21
- ```
22
- ## <YYYY-MM-DD> — <area-or-story>: <short title>
23
- What you chose and why, in one or two lines.
24
- ```
25
-
26
- (This mirrors the heading the loop writes for completed stories, so loop-authored and hand-authored entries share one shape.)
27
-
28
- - When you learn a **reusable fact or gotcha** (a non-obvious build step, an API quirk, a convention), append a bullet to `.yoke/context/KNOWLEDGE.md`.
29
-
30
- ## Rules
31
-
32
- - Never rewrite history in `DECISIONS.md` — only append.
33
- - Keep `PROJECT.md` curated and short; it is read into every loop prompt.
34
- - Inside the autonomous loop, the loop appends a decision per completed story for you — you still add the *why* and any learnings.
1
+ ---
2
+ name: maintaining-context
3
+ description: Use at the start of any substantial task and whenever you make a non-obvious decision or learn a reusable fact — keeps .yoke/context/ (PROJECT, DECISIONS, KNOWLEDGE) the durable source of truth so fresh-context work never drifts.
4
+ ---
5
+
6
+ # Maintaining Project Context
7
+
8
+ Yoke keeps durable, cross-session context in `.yoke/context/`. These files are the
9
+ project's memory — they survive between sessions and loop iterations, so an agent
10
+ starting with a fresh context window is never blind.
11
+
12
+ ## Before substantial work
13
+
14
+ 1. Read `.yoke/context/PROJECT.md` — the north star (goal, constraints, **non-goals**, success criteria). Align your work to it. If the task contradicts a non-goal, stop and flag it.
15
+ 2. Skim `.yoke/context/KNOWLEDGE.md` for gotchas that affect what you are about to do.
16
+
17
+ ## While working
18
+
19
+ - When you make a **non-obvious decision** (a trade-off, an architectural choice, a rejected alternative), append it to `.yoke/context/DECISIONS.md`:
20
+
21
+ ```
22
+ ## <YYYY-MM-DD> — <area-or-story>: <short title>
23
+ What you chose and why, in one or two lines.
24
+ ```
25
+
26
+ (This mirrors the heading the loop writes for completed stories, so loop-authored and hand-authored entries share one shape.)
27
+
28
+ - When you learn a **reusable fact or gotcha** (a non-obvious build step, an API quirk, a convention), append a bullet to `.yoke/context/KNOWLEDGE.md`.
29
+
30
+ ## Rules
31
+
32
+ - Never rewrite history in `DECISIONS.md` — only append.
33
+ - Keep `PROJECT.md` curated and short; it is read into every loop prompt.
34
+ - Inside the autonomous loop, the loop appends a decision per completed story for you — you still add the *why* and any learnings.
@@ -1,21 +1,21 @@
1
- ---
2
- name: minimal-code
3
- description: Use before writing any code — write the least code that fully solves the task (YAGNI, stdlib-first, no unrequested abstractions) to save tokens and reduce maintenance.
4
- ---
5
-
6
- # Minimal Code (lazy senior dev)
7
-
8
- The best code is the code you never wrote. Before writing anything, walk this ladder and stop at the first rung that solves the task:
9
-
10
- 1. **Does it already exist?** Reuse an existing function, file, or builtin before writing new code.
11
- 2. **Can the language/stdlib do it?** Prefer the standard library and built-in platform features over a dependency or a hand-rolled version.
12
- 3. **Is the abstraction requested?** Do not add layers, config, interfaces, or generality nobody asked for. Solve the concrete case.
13
- 4. **Is it the shortest correct version?** Prefer deletion over addition, boring over clever, one obvious path over branching flexibility.
14
- 5. **Did the task actually ask for this?** Build only what was requested — no speculative features (YAGNI).
15
-
16
- Rules:
17
- - Deletion over addition. Boring over clever. No abstractions that were not requested.
18
- - Prefer the standard library and existing code over new code or new dependencies.
19
- - Mark an intentional simplification with a short `minimal-code:` comment so reviewers see it was deliberate.
20
-
21
- This saves tokens (less generated code), shrinks the review surface, and lowers maintenance — complementary to rtk, which compresses command output. Adapted from the MIT-licensed "ponytail" ruleset (github.com/DietrichGebert/ponytail).
1
+ ---
2
+ name: minimal-code
3
+ description: Use before writing any code — write the least code that fully solves the task (YAGNI, stdlib-first, no unrequested abstractions) to save tokens and reduce maintenance.
4
+ ---
5
+
6
+ # Minimal Code (lazy senior dev)
7
+
8
+ The best code is the code you never wrote. Before writing anything, walk this ladder and stop at the first rung that solves the task:
9
+
10
+ 1. **Does it already exist?** Reuse an existing function, file, or builtin before writing new code.
11
+ 2. **Can the language/stdlib do it?** Prefer the standard library and built-in platform features over a dependency or a hand-rolled version.
12
+ 3. **Is the abstraction requested?** Do not add layers, config, interfaces, or generality nobody asked for. Solve the concrete case.
13
+ 4. **Is it the shortest correct version?** Prefer deletion over addition, boring over clever, one obvious path over branching flexibility.
14
+ 5. **Did the task actually ask for this?** Build only what was requested — no speculative features (YAGNI).
15
+
16
+ Rules:
17
+ - Deletion over addition. Boring over clever. No abstractions that were not requested.
18
+ - Prefer the standard library and existing code over new code or new dependencies.
19
+ - Mark an intentional simplification with a short `minimal-code:` comment so reviewers see it was deliberate.
20
+
21
+ This saves tokens (less generated code), shrinks the review surface, and lowers maintenance — complementary to rtk, which compresses command output. Adapted from the MIT-licensed "ponytail" ruleset (github.com/DietrichGebert/ponytail).
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: no-ai-slop
3
+ description: Edit prose into clearer, more direct writing while preserving the writer's voice, or detect named AI-slop patterns without rewriting or guessing authorship. Use for documentation, release notes, product copy, or prose audits; do not trigger for code-only work.
4
+ ---
5
+
6
+ # No AI slop
7
+
8
+ Preserve the writer's point and voice while making the prose clearer and more alive. Remove observed
9
+ patterns without turning distinctive writing into generic polished copy.
10
+
11
+ ## Choose the job
12
+
13
+ **Edit (default).** Make the minimum effective edit. Return the full edited draft and a short
14
+ **What changed** section.
15
+
16
+ **Detect.** Name every pattern from this skill that appears, quote the affected line, and give a
17
+ short fix. Do not rewrite, score the draft, or guess whether AI wrote it. Offer an edit after the
18
+ report.
19
+
20
+ If no draft was provided, ask for it. Ask one audience/format question only when the answer would
21
+ materially change the edit. If the goal is unclear, ask what the reader should think, feel, or do.
22
+
23
+ ## Editing principles
24
+
25
+ - Read the full draft first and identify its point plus the vocabulary, cadence, bluntness, humor,
26
+ uncertainty, digressions, and polish level worth preserving.
27
+ - Make the minimum effective change. Fix observed patterns, errors, repetition, and unclear
28
+ passages. Leave strong sentences alone.
29
+ - Keep the writer's meaning. Do not invent claims, examples, statistics, sources, or opinions.
30
+ - Lead with the point when setup adds nothing. Keep setup that adds context, tension, or character.
31
+ - Open up tangled prose without flattening its cadence. Keep clear fragments and changes in pace.
32
+ - Prefer concrete facts, mechanisms, consequences, and judgments over abstract importance.
33
+ - Use the portability test: a sentence that could move unchanged to another product or company is
34
+ probably filler unless it carries a necessary general rule.
35
+ - Let facts and examples carry emphasis. Remove commentary that tells the reader what is important
36
+ when the prose already shows it.
37
+ - Prefer direct verbs and active voice when they are clearer.
38
+ - Preserve useful edge, strong opinions, humor, and honest uncertainty.
39
+ - Keep the existing structure unless it hurts the piece. Report any meaningful reorganization.
40
+ - Preserve precise technical and domain terms. A word that is empty in marketing copy can still be
41
+ correct in a product vocabulary. In Yoke, **coding harness** is an established, precise term; do
42
+ not replace it merely because "harness" is often vague elsewhere.
43
+
44
+ ## Words and phrases to inspect
45
+
46
+ Remove these when they add no precise meaning: delve, foster, leverage, utilize, facilitate,
47
+ empower, streamline, robust, cutting-edge, paradigm shift, game changer, tapestry, realm, beacon,
48
+ multifaceted, meticulous, intricate, paramount, transformative, elevate, embark, supercharge,
49
+ harness, ever-evolving.
50
+
51
+ Inspect often-empty adverbs such as just, literally, honestly, simply, actually, truly,
52
+ fundamentally, importantly, crucially, inherently, and inevitably. Keep one when it carries real
53
+ emphasis, uncertainty, contrast, or spoken rhythm.
54
+
55
+ Inspect filler such as "it's worth noting," "at the end of the day," "when it comes to," "at its
56
+ core," "in today's world," "the reality is," "in terms of," "going forward," and "let's dive in."
57
+ Cut it when it delays the point.
58
+
59
+ The lists above are prompts for judgment, not blind replacements. Quoted examples, precise domain
60
+ language, and the writer's recognizable voice take precedence.
61
+
62
+ ## Patterns to cut
63
+
64
+ - **Binary contrasts:** "This is not X. It's Y." State Y directly.
65
+ - **Throat-clearing:** "Here's the thing," "Let me be clear," or "The truth is." Start with the
66
+ point.
67
+ - **Faux-insight setups:** "What most people get wrong" or "The part everyone misses." Make the
68
+ claim stand on evidence.
69
+ - **Colon reveals:** a dramatic noun phrase followed by a lowercase reveal. Use a plain sentence;
70
+ reserve colons for lists, labels, and quotations.
71
+ - **Superficial analysis:** trailing clauses such as "highlighting" or "underscoring" that label
72
+ significance instead of explaining a mechanism or consequence.
73
+ - **Importance puffery:** "marks a pivotal moment," "plays a vital role," or "stands as a
74
+ testament." State the fact.
75
+ - **Interpretive metadiscourse:** "The key point is," "As you can see," "This distinction matters,"
76
+ or a redundant "In other words." Delete it or add the missing support.
77
+ - **Weasel attribution:** "experts agree," "studies show," or "widely regarded as." Name the source
78
+ or flag the unsupported claim.
79
+ - **Fake-strong verbs:** prefer "is" or "has" when they are clearer; otherwise name what the thing
80
+ actually does.
81
+ - **Synonym cycling:** repeat the correct term instead of rotating agent, assistant, and tool for
82
+ style.
83
+ - **Negative listing:** "Not X. Not Y. Z." State Z.
84
+ - **Dramatic fragmentation:** stacked punchy fragments or "That's it. That's the whole thing."
85
+ - **Robotic rhythm:** repeated sentence shapes, identical paragraph structures, or forced symmetry.
86
+ - **Rhetorical setups:** "What if I told you," "Plot twist," and self-answered question/answer pairs.
87
+ - **Fake-profound kickers:** delete the decorative final metaphor or mic-drop line. End on the last
88
+ concrete point or next action.
89
+ - **Summary-recap endings:** remove a final paragraph that merely repeats the piece.
90
+ - **Formatting slop:** emoji headings, decorative bold, bullets that should be sentences, and
91
+ headings over tiny sections.
92
+ - **Em-dash clusters:** use a comma, period, or parentheses unless the dash clearly improves the
93
+ sentence. Short copy usually needs none.
94
+
95
+ ## Workflow
96
+
97
+ 1. Read the whole draft and identify the point plus three to five voice signals internally.
98
+ 2. In Detect mode, return named findings with quoted lines and short fixes, then stop.
99
+ 3. In Edit mode, make the minimum useful changes.
100
+ 4. Read [eval.md](eval.md) and check the result directly. Fix each failed check.
101
+ 5. Return the full edited draft and **What changed**.
102
+
103
+ This skill reports observable prose patterns. It never classifies authorship.
@@ -0,0 +1,43 @@
1
+ # No AI slop eval
2
+
3
+ Use this after an edit. Mark each check pass or fail; fix failures before returning the draft.
4
+
5
+ For Detect mode, verify that the report names each observed pattern, quotes the affected passage,
6
+ and gives a short fix without rewriting, scoring, or claiming authorship.
7
+
8
+ ## Meaning and voice
9
+
10
+ 1. Does the edit preserve the writer's point without adding claims, examples, statistics, quotes,
11
+ sources, or opinions?
12
+ 2. Does it preserve distinctive vocabulary, cadence, bluntness, humor, uncertainty, digressions,
13
+ and level of polish?
14
+ 3. Were strong sentences left alone instead of normalized for consistency?
15
+ 4. Is the amount of cutting proportional to the observed problems?
16
+ 5. Does useful setup remain while generic throat-clearing is gone?
17
+ 6. Was structure preserved unless changing it improved comprehension?
18
+ 7. Are precise technical and domain terms unchanged, including established Yoke product language?
19
+
20
+ ## Clarity
21
+
22
+ 1. Does each generic sentence pass the portability test or carry a necessary general rule?
23
+ 2. Do concrete facts, mechanisms, examples, consequences, and direct verbs do the work?
24
+ 3. Are tangled sentences fixed while clear spoken cadence and fragments remain?
25
+ 4. Are unsupported attributions named as unsupported rather than replaced with invented sources?
26
+
27
+ ## Pattern check
28
+
29
+ 1. Are empty buzzwords, filler phrases, and inflated claims removed unless quoted or used precisely?
30
+ 2. Are binary contrasts, negative lists, rhetorical setups, and throat-clearing removed?
31
+ 3. Are faux-insight setups, colon reveals, superficial analysis, synonym cycling, dramatic fragments,
32
+ and robotic rhythm fixed?
33
+ 4. Is importance puffery replaced with facts, and interpretive metadiscourse removed?
34
+ 5. Are decorative kickers and recap endings gone?
35
+ 6. Does formatting follow the content instead of decorating it?
36
+ 7. Are colons grammatical and em dashes sparse?
37
+
38
+ ## Final read
39
+
40
+ 1. Would the writer recognize the edited draft as their own voice?
41
+ 2. Would it sound natural when read to a sharp colleague?
42
+ 3. Does Edit output include the full draft and **What changed**?
43
+ 4. Does Detect output stop after named, quoted, actionable findings?