@lifeaitools/rdc-skills 0.24.41 → 0.25.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 (198) hide show
  1. package/.claude/settings.json +15 -15
  2. package/.claude-plugin/marketplace.json +21 -21
  3. package/.claude-plugin/plugin.json +1518 -1371
  4. package/.github/workflows/publish.yml +34 -34
  5. package/.github/workflows/self-test.yml +58 -58
  6. package/CHANGELOG.md +310 -310
  7. package/LICENSE +21 -21
  8. package/MANIFEST.md +221 -221
  9. package/README.md +375 -376
  10. package/README.sandbox.md +3 -3
  11. package/assets/watcher/viewer.html +164 -164
  12. package/bin/rdc-skills-mcp.mjs +316 -316
  13. package/commands/build.md +183 -183
  14. package/commands/collab.md +180 -180
  15. package/commands/deploy.md +152 -152
  16. package/commands/design.md +31 -31
  17. package/commands/edit.md +28 -28
  18. package/commands/fixit.md +150 -124
  19. package/commands/handoff.md +173 -173
  20. package/commands/help.md +95 -95
  21. package/commands/overnight.md +220 -220
  22. package/commands/plan.md +158 -158
  23. package/commands/preplan.md +131 -131
  24. package/commands/prototype.md +145 -145
  25. package/commands/release.md +49 -49
  26. package/commands/report.md +99 -99
  27. package/commands/review.md +120 -120
  28. package/commands/self-test.md +113 -113
  29. package/commands/status.md +86 -86
  30. package/commands/watch.md +98 -98
  31. package/commands/workitems.md +137 -137
  32. package/git-sha.json +1 -1
  33. package/guides/agent-bootstrap.md +295 -295
  34. package/guides/agents/backend.md +104 -104
  35. package/guides/agents/content.md +94 -94
  36. package/guides/agents/cs2.md +56 -56
  37. package/guides/agents/data.md +87 -87
  38. package/guides/agents/design.md +77 -77
  39. package/guides/agents/frontend.md +92 -92
  40. package/guides/agents/infrastructure.md +81 -81
  41. package/guides/agents/setup.md +281 -281
  42. package/guides/agents/verify.md +151 -151
  43. package/guides/agents/viz.md +106 -106
  44. package/guides/backend.md +146 -146
  45. package/guides/content.md +147 -147
  46. package/guides/cs2.md +190 -190
  47. package/guides/data.md +123 -123
  48. package/guides/design.md +116 -116
  49. package/guides/engineering-behavior.md +43 -43
  50. package/guides/escalation-protocol.md +125 -125
  51. package/guides/frontend.md +151 -151
  52. package/guides/history-md-spec.md +297 -297
  53. package/guides/infrastructure.md +179 -179
  54. package/guides/lessons-learned-spec.md +145 -151
  55. package/guides/output-contract.md +108 -108
  56. package/guides/publish-md-spec.md +289 -289
  57. package/guides/rdc-skills-startup.md +30 -30
  58. package/guides/verify.md +11 -11
  59. package/hooks/check-cwd.js +31 -31
  60. package/hooks/check-rdc-environment.js +164 -164
  61. package/hooks/check-services.js +6 -6
  62. package/hooks/check-stale-work-items.js +19 -19
  63. package/hooks/foreground-process-gate.js +128 -128
  64. package/hooks/gate-watchdog-selfcheck.js +257 -257
  65. package/hooks/hook-logger.js +25 -25
  66. package/hooks/lib/run-evidence-gate.mjs +241 -241
  67. package/hooks/no-stop-open-epics.js +127 -127
  68. package/hooks/post-tool-batch-gate.js +203 -203
  69. package/hooks/post-work-check.js +21 -21
  70. package/hooks/postcompact-log.js +13 -13
  71. package/hooks/precompact-log.js +13 -13
  72. package/hooks/rate-limit-retry.js +46 -46
  73. package/hooks/rdc-invocation-marker.js +157 -157
  74. package/hooks/rdc-output-contract-gate.js +94 -94
  75. package/hooks/require-work-item-on-commit.js +294 -294
  76. package/hooks/restart-brief.js +19 -19
  77. package/hooks/run-hidden-hook.ps1 +47 -47
  78. package/hooks/task-completed-gate.js +274 -274
  79. package/hooks/work-item-exit-gate.js +944 -944
  80. package/lib/catalog.mjs +236 -236
  81. package/lib/cloud-rewrite.mjs +155 -155
  82. package/package.json +57 -57
  83. package/rules/work-items-rpc.md +520 -520
  84. package/scaffold/templates/HISTORY.md.template +39 -39
  85. package/scaffold/templates/PUBLISH.md.template +21 -21
  86. package/scaffold/templates/brochure-studio-default.html +70 -70
  87. package/scripts/acceptance.mjs +502 -502
  88. package/scripts/fixtures/guides/bad-guide.md +15 -15
  89. package/scripts/fixtures/guides-clean/good-guide.md +16 -16
  90. package/scripts/install-rdc-skills.js +1289 -1289
  91. package/scripts/install.ps1 +202 -202
  92. package/scripts/install.sh +132 -132
  93. package/scripts/lib/assertions.mjs +287 -287
  94. package/scripts/lib/manifest-schema.mjs +754 -754
  95. package/scripts/lib/runner.mjs +465 -465
  96. package/scripts/lib/sandbox.mjs +435 -435
  97. package/scripts/prepack.mjs +32 -32
  98. package/scripts/rdc-brochure.mjs +482 -482
  99. package/scripts/rdc-design-cli.mjs +134 -134
  100. package/scripts/rebuild-mcp.mjs +107 -107
  101. package/scripts/self-test.mjs +1460 -1460
  102. package/scripts/stamp-git-sha.mjs +29 -29
  103. package/scripts/test-guide-validator.mjs +196 -196
  104. package/scripts/test-rdc-hooks.mjs +145 -145
  105. package/scripts/uninstall.ps1 +77 -77
  106. package/scripts/uninstall.sh +69 -69
  107. package/scripts/update.ps1 +43 -43
  108. package/scripts/update.sh +43 -43
  109. package/scripts/validate-place-histories.js +461 -461
  110. package/scripts/validate-publish-manifests.js +502 -424
  111. package/scripts/watch-init.mjs +100 -100
  112. package/skills/brochure/SKILL.md +107 -107
  113. package/skills/build/SKILL.md +563 -563
  114. package/skills/channel-formatter/SKILL.md +538 -533
  115. package/skills/co-develop/SKILL.md +196 -196
  116. package/skills/collab/SKILL.md +239 -239
  117. package/skills/convert/SKILL.md +167 -140
  118. package/skills/deploy/SKILL.md +541 -541
  119. package/skills/design/SKILL.md +211 -211
  120. package/skills/design/reference/ownership.md +16 -16
  121. package/skills/design/reference/rampa.md +92 -92
  122. package/skills/design/reference/studio-model.md +153 -153
  123. package/skills/edit/SKILL.md +98 -98
  124. package/skills/fixit/SKILL.md +203 -165
  125. package/skills/fs-mcp/SKILL.md +148 -148
  126. package/skills/handoff/SKILL.md +236 -236
  127. package/skills/help/SKILL.md +143 -143
  128. package/skills/housekeeping/SKILL.md +160 -219
  129. package/skills/lifeai-brochure-author/SKILL.md +340 -340
  130. package/skills/onramp/SKILL.md +248 -0
  131. package/skills/overnight/SKILL.md +251 -251
  132. package/skills/plan/SKILL.md +345 -345
  133. package/skills/preplan/SKILL.md +90 -90
  134. package/skills/prototype/SKILL.md +150 -150
  135. package/skills/rdc-brochurify/SKILL.md +245 -245
  136. package/skills/rdc-extract-verifier-rules/SKILL.md +191 -191
  137. package/skills/release/SKILL.md +140 -140
  138. package/skills/report/SKILL.md +100 -100
  139. package/skills/review/SKILL.md +152 -152
  140. package/skills/rpms-filemap/SKILL.cloud.md +111 -111
  141. package/skills/rpms-filemap/SKILL.md +111 -111
  142. package/skills/self-test/SKILL.md +132 -132
  143. package/skills/status/SKILL.md +99 -99
  144. package/skills/terminal-config/SKILL.md +62 -62
  145. package/skills/tests/MATRIX.md +54 -54
  146. package/skills/tests/README.md +47 -47
  147. package/skills/tests/onramp.test.json +87 -0
  148. package/skills/tests/rdc-brochure.test.json +34 -34
  149. package/skills/tests/rdc-build.test.json +36 -36
  150. package/skills/tests/rdc-channel-formatter.test.json +45 -45
  151. package/skills/tests/rdc-co-develop.test.json +29 -29
  152. package/skills/tests/rdc-collab.test.json +29 -29
  153. package/skills/tests/rdc-convert.test.json +35 -35
  154. package/skills/tests/rdc-deploy.test.json +30 -30
  155. package/skills/tests/rdc-design.test.json +27 -27
  156. package/skills/tests/rdc-edit.test.json +29 -29
  157. package/skills/tests/rdc-fixit.test.json +36 -36
  158. package/skills/tests/rdc-fs-mcp.test.json +36 -36
  159. package/skills/tests/rdc-handoff.test.json +28 -28
  160. package/skills/tests/rdc-help.test.json +29 -29
  161. package/skills/tests/rdc-housekeeping.test.json +28 -32
  162. package/skills/tests/rdc-lifeai-brochure-author.test.json +35 -35
  163. package/skills/tests/rdc-overnight.test.json +37 -37
  164. package/skills/tests/rdc-plan.test.json +27 -27
  165. package/skills/tests/rdc-preplan.test.json +31 -31
  166. package/skills/tests/rdc-prototype.test.json +28 -28
  167. package/skills/tests/rdc-rdc-brochurify.test.json +23 -23
  168. package/skills/tests/rdc-rdc-extract-verifier-rules.test.json +34 -34
  169. package/skills/tests/rdc-release.test.json +29 -29
  170. package/skills/tests/rdc-report.test.json +28 -28
  171. package/skills/tests/rdc-review.test.json +29 -29
  172. package/skills/tests/rdc-rpms-filemap.test.json +28 -28
  173. package/skills/tests/rdc-self-test.test.json +24 -24
  174. package/skills/tests/rdc-status.test.json +29 -29
  175. package/skills/tests/rdc-terminal-config.test.json +29 -29
  176. package/skills/tests/rdc-watch.test.json +24 -24
  177. package/skills/tests/rdc-workitems.test.json +27 -27
  178. package/skills/watch/SKILL.md +97 -97
  179. package/skills/workitems/SKILL.md +151 -151
  180. package/tests/acceptance.test.mjs +59 -59
  181. package/tests/channel-formatter.contract.test.mjs +251 -251
  182. package/tests/curl-surface.test.mjs +289 -289
  183. package/tests/harness-gates.test.mjs +325 -325
  184. package/tests/help-surface.test.mjs +61 -61
  185. package/tests/install-rdc-skills.test.mjs +49 -49
  186. package/tests/manifest-contract-fields.test.mjs +78 -78
  187. package/tests/mcp.test.mjs +271 -271
  188. package/tests/rdc-brochure.test.mjs +125 -125
  189. package/tests/require-work-item-on-commit.test.mjs +162 -162
  190. package/tests/run-evidence-gate.test.mjs +82 -82
  191. package/tests/skill-test-matrix.test.mjs +66 -66
  192. package/tests/validate-skills.js +27 -27
  193. package/tests/work-item-exit-gate-l2.test.mjs +368 -368
  194. package/tests/work-item-exit-gate-l3.test.mjs +197 -197
  195. package/RELEASE.md +0 -42
  196. package/tests/housekeeping-lessons-triage.test.mjs +0 -49
  197. package/tests/lessons-pipeline-contract.test.mjs +0 -26
  198. package/tests/release-contract.test.mjs +0 -16
@@ -1,159 +1,153 @@
1
- ---
2
- mdk_schema_version: "1.0"
3
- doc_type: guide
4
- system: claude-workflow
5
- status: active
6
- owner: infrastructure
7
- created: 2026-06-08
8
- last_reviewed: 2026-06-08
9
- source_of_truth: true
10
- supersedes: []
11
- depends_on:
12
- - ".claude/rules/architectural-change-approval.md"
13
- - ".rdc/guides/output-contract.md"
14
- tags: [rdc, lessons-learned, skills, housekeeping, adaptive]
15
- ---
16
-
17
- # Lessons-Learned Capture & Triage — Spec
18
-
19
- > Auto-referenced by long-running `rdc:*` skills at exit, and by `rdc:housekeeping` for triage.
20
- > Goal: make the fleet an **interactive adaptive modeler** — every run that teaches us
21
- > something writes it down, and the weekly housekeeping pass turns those lessons into
22
- > actual fixes (rules, skill docs, work_items).
23
-
24
- ---
25
-
26
- ## Why this exists
27
-
28
- Lessons learned during a run (a non-obvious infra trap, a wrong assumption, a missing
29
- gate, a tooling gotcha) used to survive only if someone hand-wrote a memory. This system
30
- makes capture a **routine exit step** of every long skill, and triage a **routine phase**
31
- of the weekly housekeeping. Capture is cheap and append-only; triage is where fixes happen.
32
-
33
- Precedent: brochurify's `rdc-extract-verifier-rules` already does read-log → cluster →
34
- propose-rule for one domain. This generalizes that pattern fleet-wide.
35
-
36
- ---
37
-
38
- ## Storage — directory of per-lesson files
39
-
40
- Lessons live in **`.rdc/lessons/`**, one markdown file per lesson:
41
-
42
- ```
43
- .rdc/lessons/<YYYY-MM-DD>-<skill>-<short-slug>.md
44
- ```
45
-
46
- - One file per lesson (NOT a single appended file) so parallel agents finishing at the
47
- same time never collide on one file in git.
48
- - `<skill>` is the capturing skill (`build`, `deploy`, `overnight`, `fixit`, `plan`,
49
- `preplan`, `review`, `release`, `collab`).
50
- - `<short-slug>` is 2–4 kebab words naming the lesson.
51
-
52
- A run that taught nothing writes nothing — **absence is the default**. Only write a lesson
53
- when something was genuinely learned (see § When to capture).
54
-
55
- ---
56
-
57
- ## Lesson file schema
58
-
59
- ```markdown
60
- ---
61
- id: <YYYY-MM-DD>-<skill>-<short-slug>
62
- date: "<YYYY-MM-DD>"
63
- skill: build | deploy | overnight | fixit | plan | preplan | review | release | collab
64
- session: <session-id or short ref>
1
+ ---
2
+ mdk_schema_version: "1.0"
3
+ doc_type: guide
4
+ system: claude-workflow
5
+ status: active
6
+ owner: infrastructure
7
+ created: 2026-06-08
8
+ last_reviewed: 2026-06-08
9
+ source_of_truth: true
10
+ supersedes: []
11
+ depends_on:
12
+ - ".claude/rules/architectural-change-approval.md"
13
+ - ".rdc/guides/output-contract.md"
14
+ tags: [rdc, lessons-learned, skills, housekeeping, adaptive]
15
+ ---
16
+
17
+ # Lessons-Learned Capture & Triage — Spec
18
+
19
+ > Auto-referenced by long-running `rdc:*` skills at exit, and by `rdc:housekeeping` for triage.
20
+ > Goal: make the fleet an **interactive adaptive modeler** — every run that teaches us
21
+ > something writes it down, and the weekly housekeeping pass turns those lessons into
22
+ > actual fixes (rules, skill docs, work_items).
23
+
24
+ ---
25
+
26
+ ## Why this exists
27
+
28
+ Lessons learned during a run (a non-obvious infra trap, a wrong assumption, a missing
29
+ gate, a tooling gotcha) used to survive only if someone hand-wrote a memory. This system
30
+ makes capture a **routine exit step** of every long skill, and triage a **routine phase**
31
+ of the weekly housekeeping. Capture is cheap and append-only; triage is where fixes happen.
32
+
33
+ Precedent: brochurify's `rdc-extract-verifier-rules` already does read-log → cluster →
34
+ propose-rule for one domain. This generalizes that pattern fleet-wide.
35
+
36
+ ---
37
+
38
+ ## Storage — directory of per-lesson files
39
+
40
+ Lessons live in **`.rdc/lessons/`**, one markdown file per lesson:
41
+
42
+ ```
43
+ .rdc/lessons/<YYYY-MM-DD>-<skill>-<short-slug>.md
44
+ ```
45
+
46
+ - One file per lesson (NOT a single appended file) so parallel agents finishing at the
47
+ same time never collide on one file in git.
48
+ - `<skill>` is the capturing skill (`build`, `deploy`, `overnight`, `fixit`, `plan`,
49
+ `preplan`, `review`, `release`, `collab`).
50
+ - `<short-slug>` is 2–4 kebab words naming the lesson.
51
+
52
+ A run that taught nothing writes nothing — **absence is the default**. Only write a lesson
53
+ when something was genuinely learned (see § When to capture).
54
+
55
+ ---
56
+
57
+ ## Lesson file schema
58
+
59
+ ```markdown
60
+ ---
61
+ id: <YYYY-MM-DD>-<skill>-<short-slug>
62
+ date: "<YYYY-MM-DD>"
63
+ skill: build | deploy | overnight | fixit | plan | preplan | review | release | collab
64
+ session: <session-id or short ref>
65
65
  scope: simple | architectural # triage routing — see § Scope gate
66
- lesson_status: open | triaged | applied | wont-fix
67
- area: infra | skill | guide | rule | schema | ui | content | other
68
- links:
69
- commits: [] # SHAs that relate to the lesson
70
- memory: [] # memory file slugs, if a memory was also written
71
- work_items: [] # work_item UUIDs spawned during triage
72
- ---
73
-
74
- ## What happened
75
- <one paragraph — the concrete situation, with evidence (exit code, file:line, command)>
76
-
77
- ## Root cause
78
- <one paragraph — the evidenced cause, not a guess>
79
-
80
- ## The fix / rule
66
+ status: open | triaged | applied | wont-fix
67
+ area: infra | skill | guide | rule | schema | ui | content | other
68
+ links:
69
+ commits: [] # SHAs that relate to the lesson
70
+ memory: [] # memory file slugs, if a memory was also written
71
+ work_items: [] # work_item UUIDs spawned during triage
72
+ ---
73
+
74
+ ## What happened
75
+ <one paragraph — the concrete situation, with evidence (exit code, file:line, command)>
76
+
77
+ ## Root cause
78
+ <one paragraph — the evidenced cause, not a guess>
79
+
80
+ ## The fix / rule
81
81
  <what should change so this never recurs: a rule edit, skill-doc line, code change,
82
- or a check. Cite a same-run related commit as context when useful, but keep
83
- lesson_status: open until the weekly triage audit records the final outcome.>
84
- ```
85
-
82
+ or a check. If already applied in the same run, say so and link the commit.>
83
+ ```
84
+
86
85
  `scope` is the single most important field — it routes triage:
87
-
88
- - **`simple`** — a doc line, a one-file fix, a config tweak, a clarifying sentence in a
89
- skill, a missing grep guard. Housekeeping routes these through `rdc:fixit` or
90
- `rdc:plan` -> `rdc:build`; it never applies them outside an RDC work item.
91
- - **`architectural`** anything matching `.claude/rules/architectural-change-approval.md`
92
- (rule/CLAUDE.md/ARCHITECTURE.md edits, cross-cutting refactors, schema reshape, public
93
- API/MCP changes, skill-contract changes affecting multiple skills). Housekeeping does
94
- NOT apply these; it surfaces them via `AskUserQuestion` for explicit approval first.
95
-
86
+
87
+ - **`simple`** — a doc line, a one-file fix, a config tweak, a clarifying sentence in a
88
+ skill, a missing grep guard. Housekeeping applies these directly.
89
+ - **`architectural`** anything matching `.claude/rules/architectural-change-approval.md`
90
+ (rule/CLAUDE.md/ARCHITECTURE.md edits, cross-cutting refactors, schema reshape, public
91
+ API/MCP changes, skill-contract changes affecting multiple skills). Housekeeping does
92
+ NOT apply these; it surfaces them via `AskUserQuestion` for explicit approval first.
93
+
96
94
  When unsure, mark `architectural`.
97
95
 
98
- ### Legacy status migration
99
-
100
- Older lesson files may use `status` instead of `lesson_status`. During weekly
101
- intake, before filtering or clustering, normalize every lesson that has
102
- `status` and no `lesson_status` by moving the unchanged value to
103
- `lesson_status` and removing the legacy key. Record each migration in the
104
- weekly report. Do not reinterpret a legacy value or create a work item merely
105
- because it was migrated.
106
-
107
- ---
108
-
109
- ## When to capture (at skill exit)
110
-
111
- Write a lesson when ANY of these were true during the run:
112
-
113
- 1. A root cause turned out to be different from the first theory (a wrong assumption).
114
- 2. The standard/documented path didn't work and you had to do something non-obvious.
115
- 3. A gate, check, or doc was missing and its absence cost a round.
116
- 4. A tool/infra behaved in a surprising way (exit codes, caching, serve/PM2/webhook quirks).
117
- 5. A hook blocked you and the block revealed a real gap (not just your mistake).
118
-
119
- Do NOT capture: routine success, your own one-off typo, anything already fully documented
120
- in a rule/guide. If a durable user preference or correction was involved, also write a
121
- `memory` (this spec and memory are complementary — link them).
122
-
123
- ---
124
-
125
- ## Capture procedure (the exit step long skills call)
126
-
127
- At the end of a long skill run, before the final verdict line:
128
-
129
- 1. Decide if anything qualifies (§ When to capture). If not, write nothing and move on.
96
+ ---
97
+
98
+ ## When to capture (at skill exit)
99
+
100
+ Write a lesson when ANY of these were true during the run:
101
+
102
+ 1. A root cause turned out to be different from the first theory (a wrong assumption).
103
+ 2. The standard/documented path didn't work and you had to do something non-obvious.
104
+ 3. A gate, check, or doc was missing and its absence cost a round.
105
+ 4. A tool/infra behaved in a surprising way (exit codes, caching, serve/PM2/webhook quirks).
106
+ 5. A hook blocked you and the block revealed a real gap (not just your mistake).
107
+
108
+ Do NOT capture: routine success, your own one-off typo, anything already fully documented
109
+ in a rule/guide. If a durable user preference or correction was involved, also write a
110
+ `memory` (this spec and memory are complementary — link them).
111
+
112
+ ---
113
+
114
+ ## Capture procedure (the exit step long skills call)
115
+
116
+ At the end of a long skill run, before the final verdict line:
117
+
118
+ 1. Decide if anything qualifies When to capture). If not, write nothing and move on.
130
119
  2. For each lesson, write `.rdc/lessons/<date>-<skill>-<slug>.md` using the schema above.
131
- Set `lesson_status: open`; a captured lesson is never self-marked as applied.
132
- 3. Set `scope` honestly (`simple` vs `architectural`).
133
- 4. Commit the lesson file(s) on `develop` alongside the run's other commits.
134
- 5. Mention in the verdict/summary that N lessons were captured.
135
-
136
- ---
137
-
120
+ Set `status: open` (or `applied` if you already shipped the fix in this same run, with
121
+ the commit linked).
122
+ 3. Set `scope` honestly (`simple` vs `architectural`).
123
+ 4. Commit the lesson file(s) on `develop` alongside the run's other commits.
124
+ 5. Mention in the verdict/summary that N lessons were captured.
125
+
126
+ ---
127
+
138
128
  ## Triage procedure (rdc:housekeeping, weekly)
139
129
 
140
- `rdc:housekeeping` uses this strict order. It prevents duplicate plans and fixits, gathers every architectural answer before changes, and keeps each executable change inside an RDC work item.
141
-
142
- 1. Normalize legacy `status` fields as described above, then read all `.rdc/lessons/*.md` with `lesson_status: open` and cluster by `area` + root-cause similarity.
143
- 2. **Resolution audit before routing:** for every cluster, inspect the relevant code, rules, skills, guides, tests, recent commits, linked work items, and existing mitigations. Record what was inspected, the evidence, and one result: `already-fixed`, `sufficiently-mitigated`, or `still-open`. Do not create an `rdc:fixit`, `rdc:plan`, or `rdc:build` item before this audit.
144
- 3. Resolve no-work clusters from the audit: link the prior commit and set `lesson_status: applied` for `already-fixed`; set `lesson_status: wont-fix` for a sufficient mitigation with its remaining-risk reason. Leave partially mitigated clusters open.
145
- 4. **Architectural report and interview:** before any file changes, report every still-open architectural decision with options, tradeoffs, recommendation, risks, and audit evidence. Create the complete interview list, ask each required question in attended mode, and record every question, answer, decision, rationale, and affected cluster. Gather all answers before the first fix. In unattended mode, create deduplicated `human_items` decision records and defer unresolved choices.
146
- 5. **RDC routing:** route each approved still-open cluster through a complete work item and either `rdc:fixit` (only under its scope limit; it creates the sole work item) or `rdc:plan` -> `rdc:build`. Include cluster and lesson ids in the fixit description or planned task. No direct edits are allowed. Complete the required checklist, implementation report, review, validator closure, commit, and push. Deploy deployable targets to dev through RDC and record the evidence; record `not applicable` for non-deployable work.
147
- 6. Run `rdc:review` across each completed action batch. Mark lessons `lesson_status: applied` only after review passes and the linked commit is pushed; mark deferred and declined clusters `triaged` or `wont-fix` with their linked evidence.
148
- 7. Write the full weekly lessons report with cluster audit, architectural report, interview Q&A, RDC action register, deployment evidence, and counts for open, deduped, already fixed, mitigated, applied, triaged, wont-fix, deferred, fixits, builds, review passes, and dev deployments.
149
-
150
- Lessons are never silently deleted `applied` and `wont-fix` files stay as the audit trail.
151
-
152
- ---
153
-
154
- ## Skills that capture (the long-running set)
155
-
156
- `build` · `deploy` · `overnight` · `fixit` · `plan` · `preplan` · `review` · `release` · `collab`
157
-
158
- Each references this spec from a final "§ Capture lessons" step. A Stop-hook backstop warns
159
- when one of these skills ends a run with findings but no new `.rdc/lessons/` file.
130
+ `rdc:housekeeping` adds a **Lessons triage** phase:
131
+
132
+ 1. Read all `.rdc/lessons/*.md` with `status: open`.
133
+ 2. Cluster by `area` + root-cause similarity (dedupe repeats into one fix).
134
+ 3. For each cluster:
135
+ - `scope: simple` apply the fix directly (rule line, skill-doc edit, config, guard),
136
+ commit it, set the lesson(s) `status: applied` and link the commit.
137
+ - `scope: architectural` do NOT edit. Present the issue + options via
138
+ `AskUserQuestion` (per `architectural-change-approval.md`). On approval, apply via the
139
+ correct lifecycle (rdc-skills tag/push for skills; cited commit for rules) and set
140
+ `status: applied`. If deferred, set `status: triaged` and spawn a `work_item`.
141
+ - Not worth fixing → `status: wont-fix` with a one-line reason.
142
+ 4. Summarize in the housekeeping report: captured / applied / escalated / deferred counts.
143
+
144
+ Lessons are never silently deleted — `applied` and `wont-fix` files stay as the audit trail.
145
+
146
+ ---
147
+
148
+ ## Skills that capture (the long-running set)
149
+
150
+ `build` · `deploy` · `overnight` · `fixit` · `plan` · `preplan` · `review` · `release` · `collab`
151
+
152
+ Each references this spec from a final "§ Capture lessons" step. A Stop-hook backstop warns
153
+ when one of these skills ends a run with findings but no new `.rdc/lessons/` file.
@@ -1,108 +1,108 @@
1
- # RDC Skill Output Contract
2
- > Every `rdc:*` skill MUST follow this contract. Non-negotiable.
3
-
4
- ## Why
5
-
6
- The user has zero visibility when skills narrate tool calls and dump raw output.
7
- A wall of JSON, MCP responses, and "let me check X..." chatter buries the one
8
- thing they need: **is this working or not, and what step are we on?**
9
-
10
- ## The contract
11
-
12
- 1. **One checklist per invocation.** Show it upfront, update it in place as items
13
- progress, print it again at the end with a 1-line verdict.
14
-
15
- 2. **Checklist markers:**
16
- - `[ ]` pending
17
- - `[~]` in progress (currently executing)
18
- - `[x]` done
19
- - `[!]` failed
20
- - `[-]` skipped (with one-word reason in parens)
21
-
22
- 3. **NO narration of tool calls.** Forbidden phrases: "Let me...", "I'll check...",
23
- "Now reading...", "Let me fetch...", "Let me verify...". Tool calls happen
24
- silently. The checklist is the communication channel.
25
-
26
- 4. **NO raw tool output in chat.** No MCP JSON, no log dumps, no UUIDs, no
27
- SQL result tables, no curl bodies — unless a checklist item explicitly asks
28
- for one (e.g., "show HTTP status"). Everything else is consumed silently and
29
- folded into checklist state.
30
-
31
- 5. **Failures are one sentence.** When `[!]` fires, print ONE sentence on what
32
- failed and what you're doing about it. Stack traces, full error messages,
33
- and debug dumps go in memory, not in chat.
34
-
35
- 6. **Verdict line.** End every invocation with one line:
36
- - `✅ <skill>: <outcome> in Nm Ns`
37
- - `⚠️ <skill>: <N findings> — <next action>`
38
- - `❌ <skill>: <one-sentence reason>`
39
-
40
- ⛔ **The verdict emoji (✅ / ⚠️ / ❌) MUST be the FIRST character of the final
41
- line — never prefix it with `**Verdict:**` or any other text.** The enforcing
42
- Stop-hook checks that a line *begins* with the emoji; `**Verdict:** ✅ PASS …`
43
- reads as a verdict to a human but FAILS the machine check because the line
44
- starts with `**Verdict:`, not `✅` (lesson 2026-06-08-collab-verdict-line-must-start-with-emoji).
45
-
46
- > This guide is the source under `guides/output-contract.md`; it is mirrored to
47
- > `regen-root/.rdc/guides/output-contract.md` by the installer. Edit only the
48
- > rdc-skills source here — never the mirror.
49
-
50
- 7. **Interactive checklists only when human input is required.** If the skill
51
- needs a decision (pick an epic, confirm a destructive op), ask ONE question,
52
- then resume.
53
-
54
- 8. **TaskCreate is internal.** If you use TaskCreate/TodoWrite for internal
55
- tracking, that's fine — but the checklist shown to the user is the one
56
- defined in the skill's markdown, not the raw task list.
57
-
58
- ## Template
59
-
60
- Every skill invocation prints, in order:
61
-
62
- ```
63
- <Skill Name>: <one-line subject>
64
- [ ] Step 1
65
- [ ] Step 2
66
- [ ] Step 3
67
- ...
68
- ```
69
-
70
- Then executes silently, re-rendering the checklist when state changes (tools
71
- like CLI agents that stream output should refresh in place). At the end:
72
-
73
- ```
74
- <Skill Name>: <one-line subject>
75
- [x] Step 1
76
- [x] Step 2
77
- [x] Step 3
78
- ✅ <verdict>
79
- ```
80
-
81
- ## What the skill may additionally emit
82
-
83
- - **One question at a time** when input is required
84
- - **One-sentence status updates** at major state transitions (optional)
85
- - **Final artifacts** if the skill's output is itself a file/report/diff — link,
86
- don't inline the full content
87
-
88
- ## What the skill MUST NOT emit
89
-
90
- - Tool call narration
91
- - Raw MCP responses
92
- - JSON dumps
93
- - Log tails
94
- - SQL result grids
95
- - UUIDs unless asked
96
- - "I'm going to..." preambles
97
- - "Let me now..." transitions
98
- - Summaries of what just happened (the checklist shows it)
99
- - Apologies for verbosity
100
-
101
- ## Enforcement
102
-
103
- If a skill violates this contract, the user will say "squelch" — at which point
104
- any in-flight narration stops, only the checklist + verdict is shown for the
105
- remainder of the session.
106
-
107
- Skills SHOULD self-enforce by treating every tool call as silent and every
108
- user-facing emission as a deliberate checklist update.
1
+ # RDC Skill Output Contract
2
+ > Every `rdc:*` skill MUST follow this contract. Non-negotiable.
3
+
4
+ ## Why
5
+
6
+ The user has zero visibility when skills narrate tool calls and dump raw output.
7
+ A wall of JSON, MCP responses, and "let me check X..." chatter buries the one
8
+ thing they need: **is this working or not, and what step are we on?**
9
+
10
+ ## The contract
11
+
12
+ 1. **One checklist per invocation.** Show it upfront, update it in place as items
13
+ progress, print it again at the end with a 1-line verdict.
14
+
15
+ 2. **Checklist markers:**
16
+ - `[ ]` pending
17
+ - `[~]` in progress (currently executing)
18
+ - `[x]` done
19
+ - `[!]` failed
20
+ - `[-]` skipped (with one-word reason in parens)
21
+
22
+ 3. **NO narration of tool calls.** Forbidden phrases: "Let me...", "I'll check...",
23
+ "Now reading...", "Let me fetch...", "Let me verify...". Tool calls happen
24
+ silently. The checklist is the communication channel.
25
+
26
+ 4. **NO raw tool output in chat.** No MCP JSON, no log dumps, no UUIDs, no
27
+ SQL result tables, no curl bodies — unless a checklist item explicitly asks
28
+ for one (e.g., "show HTTP status"). Everything else is consumed silently and
29
+ folded into checklist state.
30
+
31
+ 5. **Failures are one sentence.** When `[!]` fires, print ONE sentence on what
32
+ failed and what you're doing about it. Stack traces, full error messages,
33
+ and debug dumps go in memory, not in chat.
34
+
35
+ 6. **Verdict line.** End every invocation with one line:
36
+ - `✅ <skill>: <outcome> in Nm Ns`
37
+ - `⚠️ <skill>: <N findings> — <next action>`
38
+ - `❌ <skill>: <one-sentence reason>`
39
+
40
+ ⛔ **The verdict emoji (✅ / ⚠️ / ❌) MUST be the FIRST character of the final
41
+ line — never prefix it with `**Verdict:**` or any other text.** The enforcing
42
+ Stop-hook checks that a line *begins* with the emoji; `**Verdict:** ✅ PASS …`
43
+ reads as a verdict to a human but FAILS the machine check because the line
44
+ starts with `**Verdict:`, not `✅` (lesson 2026-06-08-collab-verdict-line-must-start-with-emoji).
45
+
46
+ > This guide is the source under `guides/output-contract.md`; it is mirrored to
47
+ > `regen-root/.rdc/guides/output-contract.md` by the installer. Edit only the
48
+ > rdc-skills source here — never the mirror.
49
+
50
+ 7. **Interactive checklists only when human input is required.** If the skill
51
+ needs a decision (pick an epic, confirm a destructive op), ask ONE question,
52
+ then resume.
53
+
54
+ 8. **TaskCreate is internal.** If you use TaskCreate/TodoWrite for internal
55
+ tracking, that's fine — but the checklist shown to the user is the one
56
+ defined in the skill's markdown, not the raw task list.
57
+
58
+ ## Template
59
+
60
+ Every skill invocation prints, in order:
61
+
62
+ ```
63
+ <Skill Name>: <one-line subject>
64
+ [ ] Step 1
65
+ [ ] Step 2
66
+ [ ] Step 3
67
+ ...
68
+ ```
69
+
70
+ Then executes silently, re-rendering the checklist when state changes (tools
71
+ like CLI agents that stream output should refresh in place). At the end:
72
+
73
+ ```
74
+ <Skill Name>: <one-line subject>
75
+ [x] Step 1
76
+ [x] Step 2
77
+ [x] Step 3
78
+ ✅ <verdict>
79
+ ```
80
+
81
+ ## What the skill may additionally emit
82
+
83
+ - **One question at a time** when input is required
84
+ - **One-sentence status updates** at major state transitions (optional)
85
+ - **Final artifacts** if the skill's output is itself a file/report/diff — link,
86
+ don't inline the full content
87
+
88
+ ## What the skill MUST NOT emit
89
+
90
+ - Tool call narration
91
+ - Raw MCP responses
92
+ - JSON dumps
93
+ - Log tails
94
+ - SQL result grids
95
+ - UUIDs unless asked
96
+ - "I'm going to..." preambles
97
+ - "Let me now..." transitions
98
+ - Summaries of what just happened (the checklist shows it)
99
+ - Apologies for verbosity
100
+
101
+ ## Enforcement
102
+
103
+ If a skill violates this contract, the user will say "squelch" — at which point
104
+ any in-flight narration stops, only the checklist + verdict is shown for the
105
+ remainder of the session.
106
+
107
+ Skills SHOULD self-enforce by treating every tool call as silent and every
108
+ user-facing emission as a deliberate checklist update.