@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.
Files changed (196) hide show
  1. package/.claude/settings.json +15 -15
  2. package/.claude-plugin/marketplace.json +21 -21
  3. package/.claude-plugin/plugin.json +1371 -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 +376 -375
  10. package/README.sandbox.md +3 -3
  11. package/RELEASE.md +42 -0
  12. package/assets/watcher/viewer.html +164 -164
  13. package/bin/rdc-skills-mcp.mjs +316 -316
  14. package/commands/build.md +183 -183
  15. package/commands/collab.md +180 -180
  16. package/commands/deploy.md +152 -152
  17. package/commands/design.md +31 -31
  18. package/commands/edit.md +28 -28
  19. package/commands/fixit.md +124 -124
  20. package/commands/handoff.md +173 -173
  21. package/commands/help.md +95 -95
  22. package/commands/overnight.md +220 -220
  23. package/commands/plan.md +158 -158
  24. package/commands/preplan.md +131 -131
  25. package/commands/prototype.md +145 -145
  26. package/commands/release.md +49 -49
  27. package/commands/report.md +99 -99
  28. package/commands/review.md +120 -120
  29. package/commands/self-test.md +113 -113
  30. package/commands/status.md +86 -86
  31. package/commands/watch.md +98 -98
  32. package/commands/workitems.md +137 -137
  33. package/git-sha.json +1 -1
  34. package/guides/agent-bootstrap.md +295 -295
  35. package/guides/agents/backend.md +104 -104
  36. package/guides/agents/content.md +94 -94
  37. package/guides/agents/cs2.md +56 -56
  38. package/guides/agents/data.md +87 -87
  39. package/guides/agents/design.md +77 -77
  40. package/guides/agents/frontend.md +92 -92
  41. package/guides/agents/infrastructure.md +81 -81
  42. package/guides/agents/setup.md +281 -281
  43. package/guides/agents/verify.md +151 -151
  44. package/guides/agents/viz.md +106 -106
  45. package/guides/backend.md +146 -146
  46. package/guides/content.md +147 -147
  47. package/guides/cs2.md +190 -190
  48. package/guides/data.md +123 -123
  49. package/guides/design.md +116 -116
  50. package/guides/engineering-behavior.md +43 -43
  51. package/guides/escalation-protocol.md +125 -125
  52. package/guides/frontend.md +151 -151
  53. package/guides/history-md-spec.md +297 -297
  54. package/guides/infrastructure.md +179 -179
  55. package/guides/lessons-learned-spec.md +151 -145
  56. package/guides/output-contract.md +108 -108
  57. package/guides/publish-md-spec.md +289 -289
  58. package/guides/rdc-skills-startup.md +30 -30
  59. package/guides/verify.md +11 -11
  60. package/hooks/check-cwd.js +31 -31
  61. package/hooks/check-rdc-environment.js +164 -164
  62. package/hooks/check-services.js +6 -6
  63. package/hooks/check-stale-work-items.js +19 -19
  64. package/hooks/foreground-process-gate.js +128 -128
  65. package/hooks/gate-watchdog-selfcheck.js +257 -257
  66. package/hooks/hook-logger.js +25 -25
  67. package/hooks/lib/run-evidence-gate.mjs +241 -241
  68. package/hooks/no-stop-open-epics.js +127 -127
  69. package/hooks/post-tool-batch-gate.js +203 -203
  70. package/hooks/post-work-check.js +21 -21
  71. package/hooks/postcompact-log.js +13 -13
  72. package/hooks/precompact-log.js +13 -13
  73. package/hooks/rate-limit-retry.js +46 -46
  74. package/hooks/rdc-invocation-marker.js +157 -157
  75. package/hooks/rdc-output-contract-gate.js +94 -94
  76. package/hooks/require-work-item-on-commit.js +294 -294
  77. package/hooks/restart-brief.js +19 -19
  78. package/hooks/run-hidden-hook.ps1 +47 -47
  79. package/hooks/task-completed-gate.js +274 -274
  80. package/hooks/work-item-exit-gate.js +944 -944
  81. package/lib/catalog.mjs +236 -236
  82. package/lib/cloud-rewrite.mjs +155 -155
  83. package/package.json +57 -56
  84. package/rules/work-items-rpc.md +520 -520
  85. package/scaffold/templates/HISTORY.md.template +39 -39
  86. package/scaffold/templates/PUBLISH.md.template +21 -21
  87. package/scaffold/templates/brochure-studio-default.html +70 -70
  88. package/scripts/acceptance.mjs +502 -502
  89. package/scripts/fixtures/guides/bad-guide.md +15 -15
  90. package/scripts/fixtures/guides-clean/good-guide.md +16 -16
  91. package/scripts/install-rdc-skills.js +1289 -1289
  92. package/scripts/install.ps1 +202 -202
  93. package/scripts/install.sh +132 -132
  94. package/scripts/lib/assertions.mjs +287 -287
  95. package/scripts/lib/manifest-schema.mjs +754 -754
  96. package/scripts/lib/runner.mjs +465 -465
  97. package/scripts/lib/sandbox.mjs +435 -435
  98. package/scripts/prepack.mjs +32 -32
  99. package/scripts/rdc-brochure.mjs +482 -464
  100. package/scripts/rdc-design-cli.mjs +134 -134
  101. package/scripts/rebuild-mcp.mjs +107 -107
  102. package/scripts/self-test.mjs +1460 -1460
  103. package/scripts/stamp-git-sha.mjs +29 -29
  104. package/scripts/test-guide-validator.mjs +196 -196
  105. package/scripts/test-rdc-hooks.mjs +145 -145
  106. package/scripts/uninstall.ps1 +77 -77
  107. package/scripts/uninstall.sh +69 -69
  108. package/scripts/update.ps1 +43 -43
  109. package/scripts/update.sh +43 -43
  110. package/scripts/validate-place-histories.js +461 -461
  111. package/scripts/validate-publish-manifests.js +424 -424
  112. package/scripts/watch-init.mjs +100 -100
  113. package/skills/brochure/SKILL.md +107 -107
  114. package/skills/build/SKILL.md +563 -563
  115. package/skills/channel-formatter/SKILL.md +533 -533
  116. package/skills/co-develop/SKILL.md +196 -196
  117. package/skills/collab/SKILL.md +239 -239
  118. package/skills/convert/SKILL.md +140 -140
  119. package/skills/deploy/SKILL.md +541 -541
  120. package/skills/design/SKILL.md +211 -211
  121. package/skills/design/reference/ownership.md +16 -16
  122. package/skills/design/reference/rampa.md +92 -92
  123. package/skills/design/reference/studio-model.md +153 -153
  124. package/skills/edit/SKILL.md +98 -98
  125. package/skills/fixit/SKILL.md +165 -165
  126. package/skills/fs-mcp/SKILL.md +148 -148
  127. package/skills/handoff/SKILL.md +236 -200
  128. package/skills/help/SKILL.md +143 -143
  129. package/skills/housekeeping/SKILL.md +219 -160
  130. package/skills/lifeai-brochure-author/SKILL.md +340 -340
  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/rdc-brochure.test.json +34 -34
  148. package/skills/tests/rdc-build.test.json +36 -36
  149. package/skills/tests/rdc-channel-formatter.test.json +45 -45
  150. package/skills/tests/rdc-co-develop.test.json +29 -29
  151. package/skills/tests/rdc-collab.test.json +29 -29
  152. package/skills/tests/rdc-convert.test.json +35 -35
  153. package/skills/tests/rdc-deploy.test.json +30 -30
  154. package/skills/tests/rdc-design.test.json +27 -27
  155. package/skills/tests/rdc-edit.test.json +29 -29
  156. package/skills/tests/rdc-fixit.test.json +36 -36
  157. package/skills/tests/rdc-fs-mcp.test.json +36 -36
  158. package/skills/tests/rdc-handoff.test.json +28 -28
  159. package/skills/tests/rdc-help.test.json +29 -29
  160. package/skills/tests/rdc-housekeeping.test.json +32 -28
  161. package/skills/tests/rdc-lifeai-brochure-author.test.json +35 -35
  162. package/skills/tests/rdc-overnight.test.json +37 -37
  163. package/skills/tests/rdc-plan.test.json +27 -27
  164. package/skills/tests/rdc-preplan.test.json +31 -31
  165. package/skills/tests/rdc-prototype.test.json +28 -28
  166. package/skills/tests/rdc-rdc-brochurify.test.json +23 -23
  167. package/skills/tests/rdc-rdc-extract-verifier-rules.test.json +34 -34
  168. package/skills/tests/rdc-release.test.json +29 -29
  169. package/skills/tests/rdc-report.test.json +28 -28
  170. package/skills/tests/rdc-review.test.json +29 -29
  171. package/skills/tests/rdc-rpms-filemap.test.json +28 -28
  172. package/skills/tests/rdc-self-test.test.json +24 -24
  173. package/skills/tests/rdc-status.test.json +29 -29
  174. package/skills/tests/rdc-terminal-config.test.json +29 -29
  175. package/skills/tests/rdc-watch.test.json +24 -24
  176. package/skills/tests/rdc-workitems.test.json +27 -27
  177. package/skills/watch/SKILL.md +97 -97
  178. package/skills/workitems/SKILL.md +151 -151
  179. package/tests/acceptance.test.mjs +59 -59
  180. package/tests/channel-formatter.contract.test.mjs +251 -251
  181. package/tests/curl-surface.test.mjs +289 -289
  182. package/tests/harness-gates.test.mjs +325 -325
  183. package/tests/help-surface.test.mjs +61 -61
  184. package/tests/housekeeping-lessons-triage.test.mjs +49 -0
  185. package/tests/install-rdc-skills.test.mjs +49 -49
  186. package/tests/lessons-pipeline-contract.test.mjs +26 -0
  187. package/tests/manifest-contract-fields.test.mjs +78 -78
  188. package/tests/mcp.test.mjs +271 -271
  189. package/tests/rdc-brochure.test.mjs +125 -0
  190. package/tests/release-contract.test.mjs +16 -0
  191. package/tests/require-work-item-on-commit.test.mjs +162 -162
  192. package/tests/run-evidence-gate.test.mjs +82 -82
  193. package/tests/skill-test-matrix.test.mjs +66 -66
  194. package/tests/validate-skills.js +27 -27
  195. package/tests/work-item-exit-gate-l2.test.mjs +368 -368
  196. package/tests/work-item-exit-gate-l3.test.mjs +197 -197
@@ -1,151 +1,151 @@
1
- > **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
2
- > Checklist-only output. No tool-call narration. No raw MCP/JSON/log dumps.
3
- > One checklist upfront, updated in place, shown again at end with a 1-line verdict.
4
-
5
-
6
- # rdc:verify — Verification Before Completion
7
-
8
- > Adapted from obra/superpowers `verification-before-completion`.
9
- > Stack-specific: uses `npx vitest run` + `npx tsc --noEmit`. NEVER `pnpm build` (crashes machine — 800MB/process).
10
-
11
- ## The Iron Law
12
-
13
- **NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.**
14
-
15
- You may not say "done", "complete", "working", "fixed", "passing", or imply success until you have:
16
-
17
- 1. **Identified** the exact commands that prove the claim
18
- 2. **Run** those commands fresh in the current state (not memory, not "earlier", not "should")
19
- 3. **Read** the full output
20
- 4. **Verified** the output matches the claim
21
- 5. Only THEN made the claim, quoting the evidence
22
-
23
- If you cannot run the commands, say so explicitly. Do not substitute reasoning for evidence.
24
-
25
- ## Red Flags — Stop and Verify
26
-
27
- If you're about to write any of these, STOP:
28
-
29
- - "should work" / "should pass" / "should be fine"
30
- - "probably" / "seems to" / "looks good"
31
- - "I think the tests pass"
32
- - "the types check out" (without running tsc)
33
- - "everything compiles" (without fresh output)
34
- - Expressing satisfaction or wrapping up before the gate ran
35
-
36
- ## The Gate — Commands for This Stack
37
-
38
- Run these in order. All must pass. Capture output.
39
-
40
- ### 0. Checklist decomposition quality
41
-
42
- Before code verification, inspect each work item checklist and the matching plan section.
43
-
44
- Required plan evidence:
45
- - `## Checklist Decomposition Matrix`
46
- - `## Checklist Quality Gate`
47
- - `verdict: PASS`
48
-
49
- Required work item evidence:
50
- - At least one `decomp-*` checklist item for every implementation work item
51
- - At least one `test-*` checklist item for every implementation work item
52
- - Each `decomp-*` item includes a route or file path, one action, one expected result, and one evidence artifact
53
- - Each `decomp-*` item is independently pass/fail; vague rows like "UI complete", "theme management works", or "integration verified" are failures
54
-
55
- If this check fails, stop validation for that item and reopen it. Do not mark a work item `done` when the checklist itself is not decomposed enough to prove completion.
56
-
57
- ### 1. Per-package vitest (every package touched)
58
-
59
- ```bash
60
- cd <repo-root>
61
- for pkg in <changed-packages>; do
62
- npx vitest run --dir packages/$pkg 2>&1 | tee /tmp/verify-$pkg.log
63
- done
64
- ```
65
-
66
- Or for a single package:
67
- ```bash
68
- npx vitest run --dir packages/<pkg>
69
- npx vitest run --dir apps/<app>
70
- ```
71
-
72
- **NEVER** run `pnpm build` or `pnpm test` at the repo root — spawns 5-7 node processes at 800MB each and crashes the machine.
73
-
74
- ### 2. Typecheck per package
75
-
76
- ```bash
77
- npx tsc --noEmit --project packages/<pkg>/tsconfig.json
78
- npx tsc --noEmit --project apps/<app>/tsconfig.json
79
- ```
80
-
81
- One package at a time. Read the full output — zero errors required.
82
-
83
- ### 3. Lint (if configured for the package)
84
-
85
- ```bash
86
- npx eslint <paths> --max-warnings=0
87
- ```
88
-
89
- ### 4. Smoke check exports (if package adds public API)
90
-
91
- ```bash
92
- node -e "const m = require('<pkg>'); console.log(Object.keys(m));"
93
- ```
94
-
95
- Or for ESM:
96
- ```bash
97
- node --input-type=module -e "import * as m from '<pkg>'; console.log(Object.keys(m));"
98
- ```
99
-
100
- ## Rationalization Prevention
101
-
102
- | You're tempted to think... | Reality |
103
- |---|---|
104
- | "Tests passed earlier, should still pass" | Run them now. Code changed. |
105
- | "TypeScript is strict, if it built it works" | You didn't build. Run tsc. |
106
- | "Small change, no need to retest" | Small changes are where regressions hide. |
107
- | "I'll note it as pending verification" | No. Verify now or mark incomplete. |
108
- | "The test file looks right" | Reading ≠ running. Run it. |
109
-
110
- ## Output Format — Required
111
-
112
- When reporting completion, use this structure:
113
-
114
- ```
115
- ## Verification Evidence
116
-
117
- ### vitest
118
- $ npx vitest run --dir packages/hail
119
- Test Files 12 passed (12)
120
- Tests 147 passed (147)
121
-
122
- ### tsc
123
- $ npx tsc --noEmit --project packages/hail/tsconfig.json
124
- (no output — clean)
125
-
126
- ### Status
127
- Checklist quality: PASS
128
- PASS — safe to mark tasks done.
129
- ```
130
-
131
- If any step fails: do NOT claim completion. Report the failure, fix it, re-run the entire gate.
132
-
133
- ## When to Invoke
134
-
135
- - **End of `/rdc:build`** — mandatory final phase before marking epic done
136
- - **During `/rdc:review`** — verification gate after fixes applied
137
- - **Before any "done" declaration** — if an agent or supervisor is about to say work is complete
138
- - **After merging waves** — when parallel agents finish and their work is combined
139
-
140
- ## Agent Delegation
141
-
142
- When dispatching a verification agent, give them:
143
- - Exact list of packages/apps to verify
144
- - Explicit ban on `pnpm build` / `pnpm test` / `pnpm -r`
145
- - Work item checklists and the matching plan doc so `decomp-*` quality can be verified first
146
- - Required output format (above)
147
- - Instruction: "If any command fails, STOP and report. Do not fix. Do not continue."
148
-
149
- ## The Bottom Line
150
-
151
- Evidence before claims. Fresh evidence, not remembered evidence. Full output, not selective reading. If you skip the gate, you are lying about the work being done.
1
+ > **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
2
+ > Checklist-only output. No tool-call narration. No raw MCP/JSON/log dumps.
3
+ > One checklist upfront, updated in place, shown again at end with a 1-line verdict.
4
+
5
+
6
+ # rdc:verify — Verification Before Completion
7
+
8
+ > Adapted from obra/superpowers `verification-before-completion`.
9
+ > Stack-specific: uses `npx vitest run` + `npx tsc --noEmit`. NEVER `pnpm build` (crashes machine — 800MB/process).
10
+
11
+ ## The Iron Law
12
+
13
+ **NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.**
14
+
15
+ You may not say "done", "complete", "working", "fixed", "passing", or imply success until you have:
16
+
17
+ 1. **Identified** the exact commands that prove the claim
18
+ 2. **Run** those commands fresh in the current state (not memory, not "earlier", not "should")
19
+ 3. **Read** the full output
20
+ 4. **Verified** the output matches the claim
21
+ 5. Only THEN made the claim, quoting the evidence
22
+
23
+ If you cannot run the commands, say so explicitly. Do not substitute reasoning for evidence.
24
+
25
+ ## Red Flags — Stop and Verify
26
+
27
+ If you're about to write any of these, STOP:
28
+
29
+ - "should work" / "should pass" / "should be fine"
30
+ - "probably" / "seems to" / "looks good"
31
+ - "I think the tests pass"
32
+ - "the types check out" (without running tsc)
33
+ - "everything compiles" (without fresh output)
34
+ - Expressing satisfaction or wrapping up before the gate ran
35
+
36
+ ## The Gate — Commands for This Stack
37
+
38
+ Run these in order. All must pass. Capture output.
39
+
40
+ ### 0. Checklist decomposition quality
41
+
42
+ Before code verification, inspect each work item checklist and the matching plan section.
43
+
44
+ Required plan evidence:
45
+ - `## Checklist Decomposition Matrix`
46
+ - `## Checklist Quality Gate`
47
+ - `verdict: PASS`
48
+
49
+ Required work item evidence:
50
+ - At least one `decomp-*` checklist item for every implementation work item
51
+ - At least one `test-*` checklist item for every implementation work item
52
+ - Each `decomp-*` item includes a route or file path, one action, one expected result, and one evidence artifact
53
+ - Each `decomp-*` item is independently pass/fail; vague rows like "UI complete", "theme management works", or "integration verified" are failures
54
+
55
+ If this check fails, stop validation for that item and reopen it. Do not mark a work item `done` when the checklist itself is not decomposed enough to prove completion.
56
+
57
+ ### 1. Per-package vitest (every package touched)
58
+
59
+ ```bash
60
+ cd <repo-root>
61
+ for pkg in <changed-packages>; do
62
+ npx vitest run --dir packages/$pkg 2>&1 | tee /tmp/verify-$pkg.log
63
+ done
64
+ ```
65
+
66
+ Or for a single package:
67
+ ```bash
68
+ npx vitest run --dir packages/<pkg>
69
+ npx vitest run --dir apps/<app>
70
+ ```
71
+
72
+ **NEVER** run `pnpm build` or `pnpm test` at the repo root — spawns 5-7 node processes at 800MB each and crashes the machine.
73
+
74
+ ### 2. Typecheck per package
75
+
76
+ ```bash
77
+ npx tsc --noEmit --project packages/<pkg>/tsconfig.json
78
+ npx tsc --noEmit --project apps/<app>/tsconfig.json
79
+ ```
80
+
81
+ One package at a time. Read the full output — zero errors required.
82
+
83
+ ### 3. Lint (if configured for the package)
84
+
85
+ ```bash
86
+ npx eslint <paths> --max-warnings=0
87
+ ```
88
+
89
+ ### 4. Smoke check exports (if package adds public API)
90
+
91
+ ```bash
92
+ node -e "const m = require('<pkg>'); console.log(Object.keys(m));"
93
+ ```
94
+
95
+ Or for ESM:
96
+ ```bash
97
+ node --input-type=module -e "import * as m from '<pkg>'; console.log(Object.keys(m));"
98
+ ```
99
+
100
+ ## Rationalization Prevention
101
+
102
+ | You're tempted to think... | Reality |
103
+ |---|---|
104
+ | "Tests passed earlier, should still pass" | Run them now. Code changed. |
105
+ | "TypeScript is strict, if it built it works" | You didn't build. Run tsc. |
106
+ | "Small change, no need to retest" | Small changes are where regressions hide. |
107
+ | "I'll note it as pending verification" | No. Verify now or mark incomplete. |
108
+ | "The test file looks right" | Reading ≠ running. Run it. |
109
+
110
+ ## Output Format — Required
111
+
112
+ When reporting completion, use this structure:
113
+
114
+ ```
115
+ ## Verification Evidence
116
+
117
+ ### vitest
118
+ $ npx vitest run --dir packages/hail
119
+ Test Files 12 passed (12)
120
+ Tests 147 passed (147)
121
+
122
+ ### tsc
123
+ $ npx tsc --noEmit --project packages/hail/tsconfig.json
124
+ (no output — clean)
125
+
126
+ ### Status
127
+ Checklist quality: PASS
128
+ PASS — safe to mark tasks done.
129
+ ```
130
+
131
+ If any step fails: do NOT claim completion. Report the failure, fix it, re-run the entire gate.
132
+
133
+ ## When to Invoke
134
+
135
+ - **End of `/rdc:build`** — mandatory final phase before marking epic done
136
+ - **During `/rdc:review`** — verification gate after fixes applied
137
+ - **Before any "done" declaration** — if an agent or supervisor is about to say work is complete
138
+ - **After merging waves** — when parallel agents finish and their work is combined
139
+
140
+ ## Agent Delegation
141
+
142
+ When dispatching a verification agent, give them:
143
+ - Exact list of packages/apps to verify
144
+ - Explicit ban on `pnpm build` / `pnpm test` / `pnpm -r`
145
+ - Work item checklists and the matching plan doc so `decomp-*` quality can be verified first
146
+ - Required output format (above)
147
+ - Instruction: "If any command fails, STOP and report. Do not fix. Do not continue."
148
+
149
+ ## The Bottom Line
150
+
151
+ Evidence before claims. Fresh evidence, not remembered evidence. Full output, not selective reading. If you skip the gate, you are lying about the work being done.
@@ -1,106 +1,106 @@
1
- > **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
2
- > Checklist-only output. No tool-call narration. No raw MCP/JSON/log dumps.
3
- > One checklist upfront, updated in place, shown again at end with a 1-line verdict.
4
-
5
- > If dispatching subagents or running as a subagent: read `{PROJECT_ROOT}/.rdc/guides/agent-bootstrap.md` first (fallback: `{PROJECT_ROOT}/.rdc/guides/agent-bootstrap.md`).
6
-
7
-
8
- # rdc:viz — Visualization Agent
9
-
10
- ## Mandatory First Steps
11
-
12
- Read BOTH guides before ANY code:
13
- ```
14
- {PROJECT_ROOT}/.rdc/guides/frontend.md (fallback: {PROJECT_ROOT}/.rdc/guides/frontend.md)
15
- {PROJECT_ROOT}/.rdc/guides/design.md (fallback: {PROJECT_ROOT}/.rdc/guides/design.md)
16
- ```
17
-
18
- ## Before Writing Any Code
19
-
20
- 1. **Check for existing prototypes:**
21
- ```sql
22
- SELECT name, component, source_path, status, notes
23
- FROM prototype_registry
24
- WHERE status IN ('prototype', 'converting')
25
- ORDER BY created_at DESC;
26
- ```
27
- Source path is usually `docs/source/`. **Read it first.**
28
-
29
- 2. **Check design decisions:**
30
- ```sql
31
- SELECT topic, summary FROM design_context
32
- WHERE topic ILIKE '%<viz-name>%';
33
- ```
34
-
35
- ## SVG Layout Patterns
36
-
37
- When building new SVG-based viz:
38
- - Define all layout constants at top (`W`, `H`, column x-centers, box dimensions)
39
- - Build path builders as pure functions
40
- - Separate data from rendering
41
- - Use `viewBox` for responsive scaling
42
- - Animate with appropriate motion libraries
43
-
44
- ```tsx
45
- const W = 980, H = 570;
46
- const COL_A = 80, COL_B = 240, COL_C = 435;
47
-
48
- function pathTo(x1: number, y1: number, x2: number, y2: number): string {
49
- const mx = (x1 + x2) / 2;
50
- return `M ${x1} ${y1} C ${mx} ${y1} ${mx} ${y2} ${x2} ${y2}`;
51
- }
52
- ```
53
-
54
- ## Viz Component Contract
55
-
56
- ```tsx
57
- "use client";
58
- import * as React from "react";
59
- import { cva, type VariantProps } from "class-variance-authority";
60
- import { cn } from "../lib/utils";
61
-
62
- // CVA variants required on every new viz component
63
- const myVizVariants = cva("relative w-full", {
64
- variants: {
65
- layout: { single: "", double: "flex flex-col", grid: "" },
66
- density: { compact: "", comfortable: "", spacious: "" },
67
- },
68
- defaultVariants: { layout: "single", density: "comfortable" },
69
- });
70
-
71
- interface MyVizProps
72
- extends React.HTMLAttributes<HTMLDivElement>,
73
- VariantProps<typeof myVizVariants> {}
74
-
75
- const MyViz = React.forwardRef<HTMLDivElement, MyVizProps>(
76
- ({ className, layout, density, ...props }, ref) => (
77
- <div ref={ref} className={cn(myVizVariants({ layout, density }), className)} {...props} />
78
- )
79
- );
80
- MyViz.displayName = "MyViz";
81
- export { MyViz, myVizVariants };
82
- ```
83
-
84
- Export from package's index after building.
85
-
86
- ## Registering New Viz Components
87
-
88
- After completing:
89
- ```sql
90
- INSERT INTO prototype_registry (name, component, source_path, notes, created_by)
91
- VALUES (
92
- 'MyViz v1.0',
93
- 'MyViz',
94
- 'packages/ui/src/components/my-viz.tsx',
95
- 'Production component. Props: <list key props>',
96
- 'agent'
97
- );
98
- ```
99
-
100
- ## Safety Rules
101
-
102
- - Branch: development branch — auto-commit
103
- - NEVER run `pnpm build`
104
- - Reduce motion: always wrap animations with appropriate hooks
105
- - NEVER overlap with other agents on the same component file
106
- - Write tests FIRST — red → implement → green
1
+ > **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
2
+ > Checklist-only output. No tool-call narration. No raw MCP/JSON/log dumps.
3
+ > One checklist upfront, updated in place, shown again at end with a 1-line verdict.
4
+
5
+ > If dispatching subagents or running as a subagent: read `{PROJECT_ROOT}/.rdc/guides/agent-bootstrap.md` first (fallback: `{PROJECT_ROOT}/.rdc/guides/agent-bootstrap.md`).
6
+
7
+
8
+ # rdc:viz — Visualization Agent
9
+
10
+ ## Mandatory First Steps
11
+
12
+ Read BOTH guides before ANY code:
13
+ ```
14
+ {PROJECT_ROOT}/.rdc/guides/frontend.md (fallback: {PROJECT_ROOT}/.rdc/guides/frontend.md)
15
+ {PROJECT_ROOT}/.rdc/guides/design.md (fallback: {PROJECT_ROOT}/.rdc/guides/design.md)
16
+ ```
17
+
18
+ ## Before Writing Any Code
19
+
20
+ 1. **Check for existing prototypes:**
21
+ ```sql
22
+ SELECT name, component, source_path, status, notes
23
+ FROM prototype_registry
24
+ WHERE status IN ('prototype', 'converting')
25
+ ORDER BY created_at DESC;
26
+ ```
27
+ Source path is usually `docs/source/`. **Read it first.**
28
+
29
+ 2. **Check design decisions:**
30
+ ```sql
31
+ SELECT topic, summary FROM design_context
32
+ WHERE topic ILIKE '%<viz-name>%';
33
+ ```
34
+
35
+ ## SVG Layout Patterns
36
+
37
+ When building new SVG-based viz:
38
+ - Define all layout constants at top (`W`, `H`, column x-centers, box dimensions)
39
+ - Build path builders as pure functions
40
+ - Separate data from rendering
41
+ - Use `viewBox` for responsive scaling
42
+ - Animate with appropriate motion libraries
43
+
44
+ ```tsx
45
+ const W = 980, H = 570;
46
+ const COL_A = 80, COL_B = 240, COL_C = 435;
47
+
48
+ function pathTo(x1: number, y1: number, x2: number, y2: number): string {
49
+ const mx = (x1 + x2) / 2;
50
+ return `M ${x1} ${y1} C ${mx} ${y1} ${mx} ${y2} ${x2} ${y2}`;
51
+ }
52
+ ```
53
+
54
+ ## Viz Component Contract
55
+
56
+ ```tsx
57
+ "use client";
58
+ import * as React from "react";
59
+ import { cva, type VariantProps } from "class-variance-authority";
60
+ import { cn } from "../lib/utils";
61
+
62
+ // CVA variants required on every new viz component
63
+ const myVizVariants = cva("relative w-full", {
64
+ variants: {
65
+ layout: { single: "", double: "flex flex-col", grid: "" },
66
+ density: { compact: "", comfortable: "", spacious: "" },
67
+ },
68
+ defaultVariants: { layout: "single", density: "comfortable" },
69
+ });
70
+
71
+ interface MyVizProps
72
+ extends React.HTMLAttributes<HTMLDivElement>,
73
+ VariantProps<typeof myVizVariants> {}
74
+
75
+ const MyViz = React.forwardRef<HTMLDivElement, MyVizProps>(
76
+ ({ className, layout, density, ...props }, ref) => (
77
+ <div ref={ref} className={cn(myVizVariants({ layout, density }), className)} {...props} />
78
+ )
79
+ );
80
+ MyViz.displayName = "MyViz";
81
+ export { MyViz, myVizVariants };
82
+ ```
83
+
84
+ Export from package's index after building.
85
+
86
+ ## Registering New Viz Components
87
+
88
+ After completing:
89
+ ```sql
90
+ INSERT INTO prototype_registry (name, component, source_path, notes, created_by)
91
+ VALUES (
92
+ 'MyViz v1.0',
93
+ 'MyViz',
94
+ 'packages/ui/src/components/my-viz.tsx',
95
+ 'Production component. Props: <list key props>',
96
+ 'agent'
97
+ );
98
+ ```
99
+
100
+ ## Safety Rules
101
+
102
+ - Branch: development branch — auto-commit
103
+ - NEVER run `pnpm build`
104
+ - Reduce motion: always wrap animations with appropriate hooks
105
+ - NEVER overlap with other agents on the same component file
106
+ - Write tests FIRST — red → implement → green