@lifeaitools/rdc-skills 0.24.38 → 0.24.41
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.
- package/.claude/settings.json +15 -15
- package/.claude-plugin/marketplace.json +21 -21
- package/.claude-plugin/plugin.json +1371 -1371
- package/.github/workflows/publish.yml +34 -34
- package/.github/workflows/self-test.yml +58 -58
- package/CHANGELOG.md +310 -310
- package/LICENSE +21 -21
- package/MANIFEST.md +221 -221
- package/README.md +376 -375
- package/README.sandbox.md +3 -3
- package/RELEASE.md +42 -0
- package/assets/watcher/viewer.html +164 -164
- package/bin/rdc-skills-mcp.mjs +316 -316
- package/commands/build.md +183 -183
- package/commands/collab.md +180 -180
- package/commands/deploy.md +152 -152
- package/commands/design.md +31 -31
- package/commands/edit.md +28 -28
- package/commands/fixit.md +124 -124
- package/commands/handoff.md +173 -173
- package/commands/help.md +95 -95
- package/commands/overnight.md +220 -220
- package/commands/plan.md +158 -158
- package/commands/preplan.md +131 -131
- package/commands/prototype.md +145 -145
- package/commands/release.md +49 -49
- package/commands/report.md +99 -99
- package/commands/review.md +120 -120
- package/commands/self-test.md +113 -113
- package/commands/status.md +86 -86
- package/commands/watch.md +98 -98
- package/commands/workitems.md +137 -137
- package/git-sha.json +1 -1
- package/guides/agent-bootstrap.md +295 -295
- package/guides/agents/backend.md +104 -104
- package/guides/agents/content.md +94 -94
- package/guides/agents/cs2.md +56 -56
- package/guides/agents/data.md +87 -87
- package/guides/agents/design.md +77 -77
- package/guides/agents/frontend.md +92 -92
- package/guides/agents/infrastructure.md +81 -81
- package/guides/agents/setup.md +281 -281
- package/guides/agents/verify.md +151 -151
- package/guides/agents/viz.md +106 -106
- package/guides/backend.md +146 -146
- package/guides/content.md +147 -147
- package/guides/cs2.md +190 -190
- package/guides/data.md +123 -123
- package/guides/design.md +116 -116
- package/guides/engineering-behavior.md +43 -43
- package/guides/escalation-protocol.md +125 -125
- package/guides/frontend.md +151 -151
- package/guides/history-md-spec.md +297 -297
- package/guides/infrastructure.md +179 -179
- package/guides/lessons-learned-spec.md +151 -145
- package/guides/output-contract.md +108 -108
- package/guides/publish-md-spec.md +289 -289
- package/guides/rdc-skills-startup.md +30 -30
- package/guides/verify.md +11 -11
- package/hooks/check-cwd.js +31 -31
- package/hooks/check-rdc-environment.js +164 -164
- package/hooks/check-services.js +6 -6
- package/hooks/check-stale-work-items.js +19 -19
- package/hooks/foreground-process-gate.js +128 -128
- package/hooks/gate-watchdog-selfcheck.js +257 -257
- package/hooks/hook-logger.js +25 -25
- package/hooks/lib/run-evidence-gate.mjs +241 -241
- package/hooks/no-stop-open-epics.js +127 -127
- package/hooks/post-tool-batch-gate.js +203 -203
- package/hooks/post-work-check.js +21 -21
- package/hooks/postcompact-log.js +13 -13
- package/hooks/precompact-log.js +13 -13
- package/hooks/rate-limit-retry.js +46 -46
- package/hooks/rdc-invocation-marker.js +157 -157
- package/hooks/rdc-output-contract-gate.js +94 -94
- package/hooks/require-work-item-on-commit.js +294 -294
- package/hooks/restart-brief.js +19 -19
- package/hooks/run-hidden-hook.ps1 +47 -47
- package/hooks/task-completed-gate.js +274 -274
- package/hooks/work-item-exit-gate.js +944 -944
- package/lib/catalog.mjs +236 -236
- package/lib/cloud-rewrite.mjs +155 -155
- package/package.json +57 -56
- package/rules/work-items-rpc.md +520 -520
- package/scaffold/templates/HISTORY.md.template +39 -39
- package/scaffold/templates/PUBLISH.md.template +21 -21
- package/scaffold/templates/brochure-studio-default.html +70 -70
- package/scripts/acceptance.mjs +502 -502
- package/scripts/fixtures/guides/bad-guide.md +15 -15
- package/scripts/fixtures/guides-clean/good-guide.md +16 -16
- package/scripts/install-rdc-skills.js +1289 -1289
- package/scripts/install.ps1 +202 -202
- package/scripts/install.sh +132 -132
- package/scripts/lib/assertions.mjs +287 -287
- package/scripts/lib/manifest-schema.mjs +754 -754
- package/scripts/lib/runner.mjs +465 -465
- package/scripts/lib/sandbox.mjs +435 -435
- package/scripts/prepack.mjs +32 -32
- package/scripts/rdc-brochure.mjs +482 -464
- package/scripts/rdc-design-cli.mjs +134 -134
- package/scripts/rebuild-mcp.mjs +107 -107
- package/scripts/self-test.mjs +1460 -1460
- package/scripts/stamp-git-sha.mjs +29 -29
- package/scripts/test-guide-validator.mjs +196 -196
- package/scripts/test-rdc-hooks.mjs +145 -145
- package/scripts/uninstall.ps1 +77 -77
- package/scripts/uninstall.sh +69 -69
- package/scripts/update.ps1 +43 -43
- package/scripts/update.sh +43 -43
- package/scripts/validate-place-histories.js +461 -461
- package/scripts/validate-publish-manifests.js +424 -424
- package/scripts/watch-init.mjs +100 -100
- package/skills/brochure/SKILL.md +107 -107
- package/skills/build/SKILL.md +563 -563
- package/skills/channel-formatter/SKILL.md +533 -533
- package/skills/co-develop/SKILL.md +196 -196
- package/skills/collab/SKILL.md +239 -239
- package/skills/convert/SKILL.md +140 -140
- package/skills/deploy/SKILL.md +541 -541
- package/skills/design/SKILL.md +211 -211
- package/skills/design/reference/ownership.md +16 -16
- package/skills/design/reference/rampa.md +92 -92
- package/skills/design/reference/studio-model.md +153 -153
- package/skills/edit/SKILL.md +98 -98
- package/skills/fixit/SKILL.md +165 -165
- package/skills/fs-mcp/SKILL.md +148 -148
- package/skills/handoff/SKILL.md +236 -200
- package/skills/help/SKILL.md +143 -143
- package/skills/housekeeping/SKILL.md +219 -160
- package/skills/lifeai-brochure-author/SKILL.md +340 -340
- package/skills/overnight/SKILL.md +251 -251
- package/skills/plan/SKILL.md +345 -345
- package/skills/preplan/SKILL.md +90 -90
- package/skills/prototype/SKILL.md +150 -150
- package/skills/rdc-brochurify/SKILL.md +245 -245
- package/skills/rdc-extract-verifier-rules/SKILL.md +191 -191
- package/skills/release/SKILL.md +140 -140
- package/skills/report/SKILL.md +100 -100
- package/skills/review/SKILL.md +152 -152
- package/skills/rpms-filemap/SKILL.cloud.md +111 -111
- package/skills/rpms-filemap/SKILL.md +111 -111
- package/skills/self-test/SKILL.md +132 -132
- package/skills/status/SKILL.md +99 -99
- package/skills/terminal-config/SKILL.md +62 -62
- package/skills/tests/MATRIX.md +54 -54
- package/skills/tests/README.md +47 -47
- package/skills/tests/rdc-brochure.test.json +34 -34
- package/skills/tests/rdc-build.test.json +36 -36
- package/skills/tests/rdc-channel-formatter.test.json +45 -45
- package/skills/tests/rdc-co-develop.test.json +29 -29
- package/skills/tests/rdc-collab.test.json +29 -29
- package/skills/tests/rdc-convert.test.json +35 -35
- package/skills/tests/rdc-deploy.test.json +30 -30
- package/skills/tests/rdc-design.test.json +27 -27
- package/skills/tests/rdc-edit.test.json +29 -29
- package/skills/tests/rdc-fixit.test.json +36 -36
- package/skills/tests/rdc-fs-mcp.test.json +36 -36
- package/skills/tests/rdc-handoff.test.json +28 -28
- package/skills/tests/rdc-help.test.json +29 -29
- package/skills/tests/rdc-housekeeping.test.json +32 -28
- package/skills/tests/rdc-lifeai-brochure-author.test.json +35 -35
- package/skills/tests/rdc-overnight.test.json +37 -37
- package/skills/tests/rdc-plan.test.json +27 -27
- package/skills/tests/rdc-preplan.test.json +31 -31
- package/skills/tests/rdc-prototype.test.json +28 -28
- package/skills/tests/rdc-rdc-brochurify.test.json +23 -23
- package/skills/tests/rdc-rdc-extract-verifier-rules.test.json +34 -34
- package/skills/tests/rdc-release.test.json +29 -29
- package/skills/tests/rdc-report.test.json +28 -28
- package/skills/tests/rdc-review.test.json +29 -29
- package/skills/tests/rdc-rpms-filemap.test.json +28 -28
- package/skills/tests/rdc-self-test.test.json +24 -24
- package/skills/tests/rdc-status.test.json +29 -29
- package/skills/tests/rdc-terminal-config.test.json +29 -29
- package/skills/tests/rdc-watch.test.json +24 -24
- package/skills/tests/rdc-workitems.test.json +27 -27
- package/skills/watch/SKILL.md +97 -97
- package/skills/workitems/SKILL.md +151 -151
- package/tests/acceptance.test.mjs +59 -59
- package/tests/channel-formatter.contract.test.mjs +251 -251
- package/tests/curl-surface.test.mjs +289 -289
- package/tests/harness-gates.test.mjs +325 -325
- package/tests/help-surface.test.mjs +61 -61
- package/tests/housekeeping-lessons-triage.test.mjs +49 -0
- package/tests/install-rdc-skills.test.mjs +49 -49
- package/tests/lessons-pipeline-contract.test.mjs +26 -0
- package/tests/manifest-contract-fields.test.mjs +78 -78
- package/tests/mcp.test.mjs +271 -271
- package/tests/rdc-brochure.test.mjs +125 -0
- package/tests/release-contract.test.mjs +16 -0
- package/tests/require-work-item-on-commit.test.mjs +162 -162
- package/tests/run-evidence-gate.test.mjs +82 -82
- package/tests/skill-test-matrix.test.mjs +66 -66
- package/tests/validate-skills.js +27 -27
- package/tests/work-item-exit-gate-l2.test.mjs +368 -368
- package/tests/work-item-exit-gate-l3.test.mjs +197 -197
|
@@ -1,153 +1,159 @@
|
|
|
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
|
-
|
|
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
|
+
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
|
|
81
81
|
<what should change so this never recurs: a rule edit, skill-doc line, code change,
|
|
82
|
-
or a check.
|
|
83
|
-
|
|
84
|
-
|
|
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
|
+
|
|
85
86
|
`scope` is the single most important field — it routes triage:
|
|
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
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
+
|
|
94
96
|
When unsure, mark `architectural`.
|
|
95
97
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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.
|
|
119
130
|
2. For each lesson, write `.rdc/lessons/<date>-<skill>-<slug>.md` using the schema above.
|
|
120
|
-
Set `
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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
|
+
|
|
128
138
|
## Triage procedure (rdc:housekeeping, weekly)
|
|
129
139
|
|
|
130
|
-
`rdc:housekeeping`
|
|
131
|
-
|
|
132
|
-
1.
|
|
133
|
-
2.
|
|
134
|
-
3.
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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.
|
|
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.
|
|
@@ -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.
|