@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,99 +1,99 @@
1
- ---
2
- name: rdc:status
3
- description: "Usage `rdc:status` — Read-only snapshot of open epics, work items, Coolify health, blockers, and next recommended action. Safe to call anytime. Start here when disoriented or resuming a session."
4
- ---
5
-
6
- > **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
7
- > Checklist-only output. No tool-call narration. No raw MCP/JSON/log dumps.
8
- > One checklist upfront, updated in place, shown again at end with a 1-line verdict.
9
-
10
- > 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`).
11
-
12
-
13
- # rdc:status — Project Dashboard
14
-
15
- ## When to Use
16
- - Start of any session
17
- - Project lead asks "what's the status", "where are we", "what's open"
18
- - Before deciding what to work on next
19
-
20
- ## Procedure
21
-
22
- 1. **Open epics:**
23
- ```sql
24
- SELECT get_open_epics();
25
- ```
26
-
27
- 2. **Work item counts by status:**
28
- ```sql
29
- SELECT status, count(*) FROM work_items
30
- WHERE status != 'archived'
31
- GROUP BY status ORDER BY status;
32
- ```
33
-
34
- 3. **Items by label/project (top 10 labels):**
35
- ```sql
36
- SELECT unnest(labels) as label, count(*),
37
- count(*) FILTER (WHERE status = 'done') as done,
38
- count(*) FILTER (WHERE status = 'todo') as todo,
39
- count(*) FILTER (WHERE status = 'in_progress') as wip
40
- FROM work_items
41
- GROUP BY label ORDER BY count DESC LIMIT 10;
42
- ```
43
-
44
- 4. **Recent activity (last 48 hours):**
45
- ```sql
46
- SELECT title, status, updated_at
47
- FROM work_items
48
- WHERE updated_at > now() - interval '48 hours'
49
- ORDER BY updated_at DESC LIMIT 15;
50
- ```
51
-
52
- 5. **Git status:**
53
- ```bash
54
- git log --oneline -10
55
- git status
56
- git branch -v
57
- ```
58
-
59
- 6. **Dev server health (PM2):**
60
- SSH into the Coolify server and check PM2 process state:
61
- ```bash
62
- # Note: clauth key name for the SSH key may vary by project. Common names: ssh-key-path, vultr-ssh-key, dev-ssh-key.
63
- # Check available keys with: curl -s http://127.0.0.1:52437/list-services
64
- SSH_KEY=$(curl -s http://127.0.0.1:52437/v/ssh-key-path)
65
- ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no root@64.237.54.189 "pm2 jlist 2>/dev/null"
66
- ```
67
- Parse the JSON array — for each process note `name`, `pm2_env.status` (online/stopped/errored), and `pm2_env.pm_uptime`.
68
- If SSH fails or PM2 returns nothing, note "PM2 unreachable" and continue.
69
-
70
- 7. **Infrastructure health** (if MCP available):
71
- - Get infrastructure overview or diagnose issues
72
- - Report any apps with failed builds or down containers
73
-
74
- 8. **Present as a compact dashboard:**
75
- ```
76
- ## Open Epics (N)
77
- <table>
78
-
79
- ## Work Items: X done | Y todo | Z in_progress
80
-
81
- ## Recent (48h)
82
- <list>
83
-
84
- ## Dev Servers (PM2)
85
- online: studio canvas lifeai ... stopped: issho-invest
86
-
87
- ## Deployments
88
- <green/red/yellow status>
89
-
90
- ## Recommended Next
91
- <highest priority unstarted epic>
92
- ```
93
-
94
- ## Rules
95
- - Keep output concise — this is a glance, not a deep dive
96
- - Always end with a recommendation for what to work on next
97
- - After the Recommended Next section, suggest which guide file from `.rdc/guides/` (fallback: `.rdc/guides/`) the recommended work would need
98
- - Use database MCP for queries (not raw curl)
99
- - If infrastructure MCP is unavailable, skip deployment status and note it
1
+ ---
2
+ name: rdc:status
3
+ description: "Usage `rdc:status` — Read-only snapshot of open epics, work items, Coolify health, blockers, and next recommended action. Safe to call anytime. Start here when disoriented or resuming a session."
4
+ ---
5
+
6
+ > **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
7
+ > Checklist-only output. No tool-call narration. No raw MCP/JSON/log dumps.
8
+ > One checklist upfront, updated in place, shown again at end with a 1-line verdict.
9
+
10
+ > 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`).
11
+
12
+
13
+ # rdc:status — Project Dashboard
14
+
15
+ ## When to Use
16
+ - Start of any session
17
+ - Project lead asks "what's the status", "where are we", "what's open"
18
+ - Before deciding what to work on next
19
+
20
+ ## Procedure
21
+
22
+ 1. **Open epics:**
23
+ ```sql
24
+ SELECT get_open_epics();
25
+ ```
26
+
27
+ 2. **Work item counts by status:**
28
+ ```sql
29
+ SELECT status, count(*) FROM work_items
30
+ WHERE status != 'archived'
31
+ GROUP BY status ORDER BY status;
32
+ ```
33
+
34
+ 3. **Items by label/project (top 10 labels):**
35
+ ```sql
36
+ SELECT unnest(labels) as label, count(*),
37
+ count(*) FILTER (WHERE status = 'done') as done,
38
+ count(*) FILTER (WHERE status = 'todo') as todo,
39
+ count(*) FILTER (WHERE status = 'in_progress') as wip
40
+ FROM work_items
41
+ GROUP BY label ORDER BY count DESC LIMIT 10;
42
+ ```
43
+
44
+ 4. **Recent activity (last 48 hours):**
45
+ ```sql
46
+ SELECT title, status, updated_at
47
+ FROM work_items
48
+ WHERE updated_at > now() - interval '48 hours'
49
+ ORDER BY updated_at DESC LIMIT 15;
50
+ ```
51
+
52
+ 5. **Git status:**
53
+ ```bash
54
+ git log --oneline -10
55
+ git status
56
+ git branch -v
57
+ ```
58
+
59
+ 6. **Dev server health (PM2):**
60
+ SSH into the Coolify server and check PM2 process state:
61
+ ```bash
62
+ # Note: clauth key name for the SSH key may vary by project. Common names: ssh-key-path, vultr-ssh-key, dev-ssh-key.
63
+ # Check available keys with: curl -s http://127.0.0.1:52437/list-services
64
+ SSH_KEY=$(curl -s http://127.0.0.1:52437/v/ssh-key-path)
65
+ ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no root@64.237.54.189 "pm2 jlist 2>/dev/null"
66
+ ```
67
+ Parse the JSON array — for each process note `name`, `pm2_env.status` (online/stopped/errored), and `pm2_env.pm_uptime`.
68
+ If SSH fails or PM2 returns nothing, note "PM2 unreachable" and continue.
69
+
70
+ 7. **Infrastructure health** (if MCP available):
71
+ - Get infrastructure overview or diagnose issues
72
+ - Report any apps with failed builds or down containers
73
+
74
+ 8. **Present as a compact dashboard:**
75
+ ```
76
+ ## Open Epics (N)
77
+ <table>
78
+
79
+ ## Work Items: X done | Y todo | Z in_progress
80
+
81
+ ## Recent (48h)
82
+ <list>
83
+
84
+ ## Dev Servers (PM2)
85
+ online: studio canvas lifeai ... stopped: issho-invest
86
+
87
+ ## Deployments
88
+ <green/red/yellow status>
89
+
90
+ ## Recommended Next
91
+ <highest priority unstarted epic>
92
+ ```
93
+
94
+ ## Rules
95
+ - Keep output concise — this is a glance, not a deep dive
96
+ - Always end with a recommendation for what to work on next
97
+ - After the Recommended Next section, suggest which guide file from `.rdc/guides/` (fallback: `.rdc/guides/`) the recommended work would need
98
+ - Use database MCP for queries (not raw curl)
99
+ - If infrastructure MCP is unavailable, skip deployment status and note it
@@ -1,62 +1,62 @@
1
- ---
2
- name: rdc:terminal-config
3
- description: "Usage `rdc:terminal-config <task>` — read and safely modify Windows Terminal settings, shell profiles, and agent startup sequencing without relying on machine-specific paths."
4
- ---
5
-
6
- > **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
7
- > Checklist-only output. No tool-call narration. No raw MCP/JSON/log dumps.
8
- > One checklist upfront, updated in place, shown again at end with a 1-line verdict.
9
-
10
- # rdc:terminal-config — Terminal & Agent Startup
11
-
12
- ## When to Use
13
-
14
- - Before modifying Windows Terminal settings, shell profiles, keybindings, startup scripts, or agent launch commands.
15
- - When setting up a Claude, Codex, or project-specific cell profile.
16
- - When startup is broken because the wrong cwd, shell, env var, or prompt file is being loaded.
17
-
18
- ## Rules
19
-
20
- 1. Read the current settings file before editing.
21
- 2. Never change existing profile GUIDs unless the user explicitly wants a new profile identity.
22
- 3. Never remove intentionally null keybindings without explaining the consequence.
23
- 4. Validate JSON before saving.
24
- 5. Use environment-derived paths:
25
- - Terminal settings: `$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json`
26
- - Claude user settings: `$env:USERPROFILE\.claude\settings.json`
27
- - Codex user config: `$env:USERPROFILE\.codex\config.toml`
28
- - Project startup scripts: `{PROJECT_ROOT}\scripts\...`
29
-
30
- ## Safe Edit Procedure
31
-
32
- ```
33
- rdc:terminal-config: <task>
34
- [ ] Current settings file located from environment
35
- [ ] File read before edit
36
- [ ] Existing GUIDs preserved
37
- [ ] Null keybindings preserved or explicitly approved
38
- [ ] JSON/TOML syntax validated
39
- [ ] Startup command uses the intended shell, cwd, and project root
40
- [ ] Verification command run
41
- ✅ rdc:terminal-config: <result>
42
- ```
43
-
44
- ## Windows Terminal Notes
45
-
46
- - Prefer `pwsh.exe` for PowerShell 7 profiles.
47
- - Keep `startingDirectory` explicit for project profiles.
48
- - Use a newly generated GUID for each new profile:
49
-
50
- ```powershell
51
- "{$([System.Guid]::NewGuid().ToString())}"
52
- ```
53
-
54
- - Validate settings before restarting Terminal:
55
-
56
- ```powershell
57
- Get-Content "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json" | ConvertFrom-Json
58
- ```
59
-
60
- ## Startup Scripts
61
-
62
- If a project uses role/cell startup scripts, keep those scripts under the project root and commit them with the project. Do not bake one user's absolute machine paths into shared RDC skill files.
1
+ ---
2
+ name: rdc:terminal-config
3
+ description: "Usage `rdc:terminal-config <task>` — read and safely modify Windows Terminal settings, shell profiles, and agent startup sequencing without relying on machine-specific paths."
4
+ ---
5
+
6
+ > **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
7
+ > Checklist-only output. No tool-call narration. No raw MCP/JSON/log dumps.
8
+ > One checklist upfront, updated in place, shown again at end with a 1-line verdict.
9
+
10
+ # rdc:terminal-config — Terminal & Agent Startup
11
+
12
+ ## When to Use
13
+
14
+ - Before modifying Windows Terminal settings, shell profiles, keybindings, startup scripts, or agent launch commands.
15
+ - When setting up a Claude, Codex, or project-specific cell profile.
16
+ - When startup is broken because the wrong cwd, shell, env var, or prompt file is being loaded.
17
+
18
+ ## Rules
19
+
20
+ 1. Read the current settings file before editing.
21
+ 2. Never change existing profile GUIDs unless the user explicitly wants a new profile identity.
22
+ 3. Never remove intentionally null keybindings without explaining the consequence.
23
+ 4. Validate JSON before saving.
24
+ 5. Use environment-derived paths:
25
+ - Terminal settings: `$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json`
26
+ - Claude user settings: `$env:USERPROFILE\.claude\settings.json`
27
+ - Codex user config: `$env:USERPROFILE\.codex\config.toml`
28
+ - Project startup scripts: `{PROJECT_ROOT}\scripts\...`
29
+
30
+ ## Safe Edit Procedure
31
+
32
+ ```
33
+ rdc:terminal-config: <task>
34
+ [ ] Current settings file located from environment
35
+ [ ] File read before edit
36
+ [ ] Existing GUIDs preserved
37
+ [ ] Null keybindings preserved or explicitly approved
38
+ [ ] JSON/TOML syntax validated
39
+ [ ] Startup command uses the intended shell, cwd, and project root
40
+ [ ] Verification command run
41
+ ✅ rdc:terminal-config: <result>
42
+ ```
43
+
44
+ ## Windows Terminal Notes
45
+
46
+ - Prefer `pwsh.exe` for PowerShell 7 profiles.
47
+ - Keep `startingDirectory` explicit for project profiles.
48
+ - Use a newly generated GUID for each new profile:
49
+
50
+ ```powershell
51
+ "{$([System.Guid]::NewGuid().ToString())}"
52
+ ```
53
+
54
+ - Validate settings before restarting Terminal:
55
+
56
+ ```powershell
57
+ Get-Content "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json" | ConvertFrom-Json
58
+ ```
59
+
60
+ ## Startup Scripts
61
+
62
+ If a project uses role/cell startup scripts, keep those scripts under the project root and commit them with the project. Do not bake one user's absolute machine paths into shared RDC skill files.
@@ -1,54 +1,54 @@
1
- # RDC Skill Test Suite Matrix
2
-
3
- Current coverage: 30 manifests for 30 skill directories.
4
-
5
- The manifest layer verifies each skill can be started from a realistic caller prompt in an isolated `RDC_TEST=1` sandbox. The acceptance harness can run either Claude (`--engine claude`) or Codex (`--engine codex`) against the same manifests and records the engine stream, extracted tool calls, stdout/stderr artifacts, rendered assistant output, failures, lessons learned, and next build optimizations under `.rdc/reports/`.
6
-
7
- `rdc:channel-formatter` currently has the strongest content acceptance fixture: it asserts source-grounded social-pack output, forbidden-claim absence, and observable corpus or web-search tool routing. `rdc:help` asserts the public MCP/curl caller surface and structured `format:"json"` discovery path. `rdc:self-test` validates the test-tier/evidence language. Planning/reporting skills (`rdc:preplan`, `rdc:plan`, `rdc:handoff`, `rdc:prototype`, `rdc:review`, `rdc:report`) assert their required artifacts and safety boundaries. Operational/content skills (`rdc:brochure`, `rdc:convert`, `lifeai-brochure-author`, `rdc:build`, `rdc:fixit`, `rdc:fs-mcp`, `rdc:workitems`) assert artifact paths, dispatch gates, scoped commits, filesystem boundaries, and sandboxed work-item behavior. Coordination/design/maintenance skills (`rdc:co-develop`, `rdc:collab`, `rdc:design`, `rdc:extract-verifier-rules`, `rdc:housekeeping`, `rdc:overnight`, `rdc:rpms-filemap`) assert relay safety, token/reference use, verifier corpus safety, maintenance/reporting, unattended sentinel behavior, and canonical file-map rules. All manifests now include a deeper acceptance block beyond the basic executable smoke fixture.
8
-
9
- | Skill | Manifest | Fixture prompt class | Assertions | Acceptance depth |
10
- |---|---|---|---|---|
11
- | `rdc:brochure` | `rdc-brochure.test.json` | HTML-to-PDF brochure fixture | `exit_code`, `stdout_contains` | PDF artifact, page/size/source output, and no upload/deploy/source-modification checks |
12
- | `rdc:build` | `rdc-build.test.json` | Unattended build from sandbox label | `commits_made`, `exit_code`, `stdout_contains` | Dispatch guide, code-review, validator, sandbox, and no-push/no-skip checks |
13
- | `rdc:channel-formatter` | `rdc-channel-formatter.test.json` | Long article to social content pack | `exit_code`, `stdout_contains` | Output contains, output not contains, tool-call routing |
14
- | `rdc:co-develop` | `rdc-co-develop.test.json` | Coordination status | `commits_made`, `exit_code`, `stdout_contains` | codevelop status, sandbox skip, no chitchat/live-send negative checks |
15
- | `rdc:collab` | `rdc-collab.test.json` | Claude session relay fixture | `commits_made`, `exit_code`, `stdout_contains` | chitchat/SSE session handling, sandbox skip, and no-reply/no-push negative checks |
16
- | `rdc:convert` | `rdc-convert.test.json` | Markdown-to-Word conversion fixture | `exit_code`, `stdout_contains` | build-corpus command surface, Word/Markdown flags, and no-GUI/global-install/commit checks |
17
- | `rdc:deploy` | `rdc-deploy.test.json` | Deployment diagnosis | `commits_made`, `exit_code`, `stdout_contains` | Read-only diagnose output and destructive deploy/DNS negative checks |
18
- | `rdc:edit` | `rdc-edit.test.json` | Local editor launch | `exit_code`, `stdout_contains` | Resolved target, editor host URL, and no-unknown-target negative checks |
19
- | `rdc:design` | `rdc-design.test.json` | Studio palette audit | `exit_code`, `stdout_contains` | Studio/token/Rampa references and external-write negative checks |
20
- | `rdc:fixit` | `rdc-fixit.test.json` | Tiny sandbox typo fix | `commits_made`, `exit_code`, `stdout_contains` | Scope, code-review, specific-file staging, and broad-add negative checks |
21
- | `rdc:fs-mcp` | `rdc-fs-mcp.test.json` | File-system bridge read fixture | `commits_made`, `exit_code`, `stdout_contains` | Local-vs-MCP access boundary, live FS, no-preview/no-overwrite checks, and read-tool routing |
22
- | `rdc:handoff` | `rdc-handoff.test.json` | Stub work handoff | `exit_code`, `stdout_contains` | Plan path, DoD, work-item handoff, and placeholder negative checks |
23
- | `rdc:help` | `rdc-help.test.json` | Help menu rendering | `commits_made`, `exit_code`, `stdout_contains` | MCP/curl output, structured JSON fetch, dev-endpoint negative checks |
24
- | `rdc:housekeeping` | `rdc-housekeeping.test.json` | Read-only housekeeping audit | `commits_made`, `exit_code`, `stdout_contains` | PUBLISH/CLAUDE/orphan/report checks and no-fix/no-Coolify-write negative checks |
25
- | `lifeai-brochure-author` | `rdc-lifeai-brochure-author.test.json` | JSX compliance review fixture | `exit_code`, `stdout_contains` | brochure-kit component guidance and raw HTML/style/token negative checks |
26
- | `rdc:overnight` | `rdc-overnight.test.json` | Label-based overnight queue drain | `exit_code`, `stdout_contains` | overnight sentinel, clauth preflight, full chain, and no-wide-add/no-lock-left negative checks |
27
- | `rdc:plan` | `rdc-plan.test.json` | Health-endpoint planning prompt | `exit_code`, `stdout_contains` | Design-decision, decomposition-matrix, work-package, and coarse-check negative checks |
28
- | `rdc:preplan` | `rdc-preplan.test.json` | Rate-limiter research prompt | `commits_made`, `exit_code`, `stdout_contains` | Research artifact, comparison, unknowns, recommendation, and research-tool routing checks |
29
- | `rdc:prototype` | `rdc-prototype.test.json` | Tiny component prototype prompt | `exit_code`, `stdout_contains` | Local TSX prototype artifact, registry, test-mode, and production-write negative checks |
30
- | `rdc:brochurify` | `rdc-rdc-brochurify.test.json` | Read-only markdown Brochurify fixture | `exit_code`, `stdout_contains` | Sandbox output and no-follow-up negative checks |
31
- | `rdc:extract-verifier-rules` | `rdc-rdc-extract-verifier-rules.test.json` | Enhancement-log verifier fixture | `exit_code`, `stdout_contains` | Candidate, false-positive, known-good, recall, and no-auto-merge/PR negative checks |
32
- | `rdc:release` | `rdc-release.test.json` | Dry-run package release | `commits_made`, `exit_code`, `stdout_contains` | Dry-run release checklist and force/bypass negative checks |
33
- | `rdc:report` | `rdc-report.test.json` | Unattended report generation | `exit_code`, `stdout_contains` | Report status block, counts, next recommendation, and dump/push negative checks |
34
- | `rdc:review` | `rdc-review.test.json` | Unattended review gate | `exit_code`, `stdout_contains` | Code-review, verify, fresh-evidence, tsc, and forbidden-build negative checks |
35
- | `rdc:rpms-filemap` | `rdc-rpms-filemap.test.json` | Canonical location lookup | `commits_made`, `exit_code`, `stdout_contains` | Rule #1, context door, one-home rules, and no-hand-edit/second-home negative checks |
36
- | `rdc:self-test` | `rdc-self-test.test.json` | Strict self-test prompt | `commits_made`, `exit_code`, `stdout_contains` | Strict validation evidence, hook/guide checks, and no-relaxed-linter negative check |
37
- | `rdc:status` | `rdc-status.test.json` | Read-only status snapshot | `commits_made`, `exit_code`, `stdout_contains` | Read-only status output and raw-MCP/write negative checks |
38
- | `rdc:terminal-config` | `rdc-terminal-config.test.json` | Hidden-window launch policy audit | `commits_made`, `exit_code`, `stdout_contains` | Hidden-window output and focus/collapse API negative checks |
39
- | `rdc:watch` | `rdc-watch.test.json` | Watcher initialization prompt | `exit_code`, `stdout_contains` | Test-mode no-open output, tool-call routing, and focus-event negative checks |
40
- | `rdc:workitems` | `rdc-workitems.test.json` | Work-item epic listing | `commits_made`, `exit_code`, `stdout_contains` | Read-only epics query, sandbox, and work-item write negative checks |
41
-
42
- ## What The Tests Accomplish
43
-
44
- - Verify every installed RDC skill has at least one executable caller-facing prompt.
45
- - Exercise the `RDC_TEST=1` sandbox contract so build tests do not publish, deploy, or mutate production services.
46
- - Capture observed engine events and extracted tool calls for periodic inspection.
47
- - Preserve stdout, stderr, and rendered assistant output as report artifacts.
48
- - Make content-producing skills eligible for deeper source-fidelity checks through the optional `acceptance` block.
49
-
50
- ## Next Coverage Upgrades
51
-
52
- - Run full scheduled Claude and Codex sweeps regularly, not only changed-skill acceptance, so transcripts and lessons stay fresh.
53
- - Add richer artifact-content checks for output-producing skills (`rdc:brochure`, `rdc:convert`, `rdc:prototype`, `rdc:report`).
54
- - Promote recurring transcript review findings into manifest assertions instead of relying on human inspection.
1
+ # RDC Skill Test Suite Matrix
2
+
3
+ Current coverage: 30 manifests for 30 skill directories.
4
+
5
+ The manifest layer verifies each skill can be started from a realistic caller prompt in an isolated `RDC_TEST=1` sandbox. The acceptance harness can run either Claude (`--engine claude`) or Codex (`--engine codex`) against the same manifests and records the engine stream, extracted tool calls, stdout/stderr artifacts, rendered assistant output, failures, lessons learned, and next build optimizations under `.rdc/reports/`.
6
+
7
+ `rdc:channel-formatter` currently has the strongest content acceptance fixture: it asserts source-grounded social-pack output, forbidden-claim absence, and observable corpus or web-search tool routing. `rdc:help` asserts the public MCP/curl caller surface and structured `format:"json"` discovery path. `rdc:self-test` validates the test-tier/evidence language. Planning/reporting skills (`rdc:preplan`, `rdc:plan`, `rdc:handoff`, `rdc:prototype`, `rdc:review`, `rdc:report`) assert their required artifacts and safety boundaries. Operational/content skills (`rdc:brochure`, `rdc:convert`, `lifeai-brochure-author`, `rdc:build`, `rdc:fixit`, `rdc:fs-mcp`, `rdc:workitems`) assert artifact paths, dispatch gates, scoped commits, filesystem boundaries, and sandboxed work-item behavior. Coordination/design/maintenance skills (`rdc:co-develop`, `rdc:collab`, `rdc:design`, `rdc:extract-verifier-rules`, `rdc:housekeeping`, `rdc:overnight`, `rdc:rpms-filemap`) assert relay safety, token/reference use, verifier corpus safety, maintenance/reporting, unattended sentinel behavior, and canonical file-map rules. All manifests now include a deeper acceptance block beyond the basic executable smoke fixture.
8
+
9
+ | Skill | Manifest | Fixture prompt class | Assertions | Acceptance depth |
10
+ |---|---|---|---|---|
11
+ | `rdc:brochure` | `rdc-brochure.test.json` | HTML-to-PDF brochure fixture | `exit_code`, `stdout_contains` | PDF artifact, page/size/source output, and no upload/deploy/source-modification checks |
12
+ | `rdc:build` | `rdc-build.test.json` | Unattended build from sandbox label | `commits_made`, `exit_code`, `stdout_contains` | Dispatch guide, code-review, validator, sandbox, and no-push/no-skip checks |
13
+ | `rdc:channel-formatter` | `rdc-channel-formatter.test.json` | Long article to social content pack | `exit_code`, `stdout_contains` | Output contains, output not contains, tool-call routing |
14
+ | `rdc:co-develop` | `rdc-co-develop.test.json` | Coordination status | `commits_made`, `exit_code`, `stdout_contains` | codevelop status, sandbox skip, no chitchat/live-send negative checks |
15
+ | `rdc:collab` | `rdc-collab.test.json` | Claude session relay fixture | `commits_made`, `exit_code`, `stdout_contains` | chitchat/SSE session handling, sandbox skip, and no-reply/no-push negative checks |
16
+ | `rdc:convert` | `rdc-convert.test.json` | Markdown-to-Word conversion fixture | `exit_code`, `stdout_contains` | build-corpus command surface, Word/Markdown flags, and no-GUI/global-install/commit checks |
17
+ | `rdc:deploy` | `rdc-deploy.test.json` | Deployment diagnosis | `commits_made`, `exit_code`, `stdout_contains` | Read-only diagnose output and destructive deploy/DNS negative checks |
18
+ | `rdc:edit` | `rdc-edit.test.json` | Local editor launch | `exit_code`, `stdout_contains` | Resolved target, editor host URL, and no-unknown-target negative checks |
19
+ | `rdc:design` | `rdc-design.test.json` | Studio palette audit | `exit_code`, `stdout_contains` | Studio/token/Rampa references and external-write negative checks |
20
+ | `rdc:fixit` | `rdc-fixit.test.json` | Tiny sandbox typo fix | `commits_made`, `exit_code`, `stdout_contains` | Scope, code-review, specific-file staging, and broad-add negative checks |
21
+ | `rdc:fs-mcp` | `rdc-fs-mcp.test.json` | File-system bridge read fixture | `commits_made`, `exit_code`, `stdout_contains` | Local-vs-MCP access boundary, live FS, no-preview/no-overwrite checks, and read-tool routing |
22
+ | `rdc:handoff` | `rdc-handoff.test.json` | Stub work handoff | `exit_code`, `stdout_contains` | Plan path, DoD, work-item handoff, and placeholder negative checks |
23
+ | `rdc:help` | `rdc-help.test.json` | Help menu rendering | `commits_made`, `exit_code`, `stdout_contains` | MCP/curl output, structured JSON fetch, dev-endpoint negative checks |
24
+ | `rdc:housekeeping` | `rdc-housekeeping.test.json` | Read-only housekeeping audit | `commits_made`, `exit_code`, `stdout_contains` | PUBLISH/CLAUDE/orphan/report checks and no-fix/no-Coolify-write negative checks |
25
+ | `lifeai-brochure-author` | `rdc-lifeai-brochure-author.test.json` | JSX compliance review fixture | `exit_code`, `stdout_contains` | brochure-kit component guidance and raw HTML/style/token negative checks |
26
+ | `rdc:overnight` | `rdc-overnight.test.json` | Label-based overnight queue drain | `exit_code`, `stdout_contains` | overnight sentinel, clauth preflight, full chain, and no-wide-add/no-lock-left negative checks |
27
+ | `rdc:plan` | `rdc-plan.test.json` | Health-endpoint planning prompt | `exit_code`, `stdout_contains` | Design-decision, decomposition-matrix, work-package, and coarse-check negative checks |
28
+ | `rdc:preplan` | `rdc-preplan.test.json` | Rate-limiter research prompt | `commits_made`, `exit_code`, `stdout_contains` | Research artifact, comparison, unknowns, recommendation, and research-tool routing checks |
29
+ | `rdc:prototype` | `rdc-prototype.test.json` | Tiny component prototype prompt | `exit_code`, `stdout_contains` | Local TSX prototype artifact, registry, test-mode, and production-write negative checks |
30
+ | `rdc:brochurify` | `rdc-rdc-brochurify.test.json` | Read-only markdown Brochurify fixture | `exit_code`, `stdout_contains` | Sandbox output and no-follow-up negative checks |
31
+ | `rdc:extract-verifier-rules` | `rdc-rdc-extract-verifier-rules.test.json` | Enhancement-log verifier fixture | `exit_code`, `stdout_contains` | Candidate, false-positive, known-good, recall, and no-auto-merge/PR negative checks |
32
+ | `rdc:release` | `rdc-release.test.json` | Dry-run package release | `commits_made`, `exit_code`, `stdout_contains` | Dry-run release checklist and force/bypass negative checks |
33
+ | `rdc:report` | `rdc-report.test.json` | Unattended report generation | `exit_code`, `stdout_contains` | Report status block, counts, next recommendation, and dump/push negative checks |
34
+ | `rdc:review` | `rdc-review.test.json` | Unattended review gate | `exit_code`, `stdout_contains` | Code-review, verify, fresh-evidence, tsc, and forbidden-build negative checks |
35
+ | `rdc:rpms-filemap` | `rdc-rpms-filemap.test.json` | Canonical location lookup | `commits_made`, `exit_code`, `stdout_contains` | Rule #1, context door, one-home rules, and no-hand-edit/second-home negative checks |
36
+ | `rdc:self-test` | `rdc-self-test.test.json` | Strict self-test prompt | `commits_made`, `exit_code`, `stdout_contains` | Strict validation evidence, hook/guide checks, and no-relaxed-linter negative check |
37
+ | `rdc:status` | `rdc-status.test.json` | Read-only status snapshot | `commits_made`, `exit_code`, `stdout_contains` | Read-only status output and raw-MCP/write negative checks |
38
+ | `rdc:terminal-config` | `rdc-terminal-config.test.json` | Hidden-window launch policy audit | `commits_made`, `exit_code`, `stdout_contains` | Hidden-window output and focus/collapse API negative checks |
39
+ | `rdc:watch` | `rdc-watch.test.json` | Watcher initialization prompt | `exit_code`, `stdout_contains` | Test-mode no-open output, tool-call routing, and focus-event negative checks |
40
+ | `rdc:workitems` | `rdc-workitems.test.json` | Work-item epic listing | `commits_made`, `exit_code`, `stdout_contains` | Read-only epics query, sandbox, and work-item write negative checks |
41
+
42
+ ## What The Tests Accomplish
43
+
44
+ - Verify every installed RDC skill has at least one executable caller-facing prompt.
45
+ - Exercise the `RDC_TEST=1` sandbox contract so build tests do not publish, deploy, or mutate production services.
46
+ - Capture observed engine events and extracted tool calls for periodic inspection.
47
+ - Preserve stdout, stderr, and rendered assistant output as report artifacts.
48
+ - Make content-producing skills eligible for deeper source-fidelity checks through the optional `acceptance` block.
49
+
50
+ ## Next Coverage Upgrades
51
+
52
+ - Run full scheduled Claude and Codex sweeps regularly, not only changed-skill acceptance, so transcripts and lessons stay fresh.
53
+ - Add richer artifact-content checks for output-producing skills (`rdc:brochure`, `rdc:convert`, `rdc:prototype`, `rdc:report`).
54
+ - Promote recurring transcript review findings into manifest assertions instead of relying on human inspection.
@@ -1,47 +1,47 @@
1
- # Tier 2 Test Manifests
2
-
3
- Each RDC skill directory has a colocated test manifest at `skills/tests/rdc-<name>.test.json`.
4
- There are currently 30 manifests for 30 skill directories. These drive the Tier 2
5
- behavioral runner and the build acceptance harness for both Claude and Codex.
6
-
7
- See `MATRIX.md` for the current skill-by-skill coverage table.
8
-
9
- ## Schema
10
-
11
- See `../../scripts/lib/manifest-schema.mjs` — the `validateManifest` function
12
- is the source of truth. Top-level fields:
13
-
14
- - `manifest_version` (int) — currently 1
15
- - `skill` (string) — `rdc:<name>`
16
- - `description` (string) — what this test verifies
17
- - `fixture` (object) — prompt, precondition files, env vars
18
- - `assertions` (object) — what to check after the skill runs
19
- - `acceptance` (object, optional) — assistant output and recorded tool-call assertions
20
- - `teardown` (object) — cleanup policy
21
-
22
- `acceptance` supports:
23
-
24
- - `output_contains` — strings that must appear in the rendered assistant output
25
- - `output_not_contains` — strings that must not appear in the rendered assistant output
26
- - `tool_calls_include_any` — at least one recorded tool call with a listed name
27
- - `tool_calls_include_all` — all listed tool-call names must be recorded
28
- - `tool_calls_argument_matches` — tool-call argument regex matchers for source/corpus/tool routing checks
29
-
30
- ## Authoring a manifest
31
-
32
- 1. Start from an existing manifest in this dir
33
- 2. Set `fixture.env.RDC_TEST = "1"` (required — sandbox contract)
34
- 3. Write assertions tight enough to catch real regressions but not flaky
35
- 4. Run `node scripts/acceptance.mjs --skill rdc:<name>` to capture the Claude transcript, tool calls, and lessons learned
36
- 5. When Codex behavior matters, also run `node scripts/acceptance.mjs --engine codex --skill rdc:<name>` against the same manifest
37
- 6. Commit manifest + any skill changes together
38
-
39
- For content-producing skills, include both positive and negative output checks.
40
- Use `stdout_contains` for expected channel-native structure and source facts;
41
- use `stdout_not_contains` for source-fidelity violations or explicitly forbidden
42
- claims.
43
-
44
- ## Adding a new skill
45
-
46
- New skills MUST ship with a manifest. Tier 2 CI will block tag push if a
47
- new skill lands without one.
1
+ # Tier 2 Test Manifests
2
+
3
+ Each RDC skill directory has a colocated test manifest at `skills/tests/rdc-<name>.test.json`.
4
+ There are currently 30 manifests for 30 skill directories. These drive the Tier 2
5
+ behavioral runner and the build acceptance harness for both Claude and Codex.
6
+
7
+ See `MATRIX.md` for the current skill-by-skill coverage table.
8
+
9
+ ## Schema
10
+
11
+ See `../../scripts/lib/manifest-schema.mjs` — the `validateManifest` function
12
+ is the source of truth. Top-level fields:
13
+
14
+ - `manifest_version` (int) — currently 1
15
+ - `skill` (string) — `rdc:<name>`
16
+ - `description` (string) — what this test verifies
17
+ - `fixture` (object) — prompt, precondition files, env vars
18
+ - `assertions` (object) — what to check after the skill runs
19
+ - `acceptance` (object, optional) — assistant output and recorded tool-call assertions
20
+ - `teardown` (object) — cleanup policy
21
+
22
+ `acceptance` supports:
23
+
24
+ - `output_contains` — strings that must appear in the rendered assistant output
25
+ - `output_not_contains` — strings that must not appear in the rendered assistant output
26
+ - `tool_calls_include_any` — at least one recorded tool call with a listed name
27
+ - `tool_calls_include_all` — all listed tool-call names must be recorded
28
+ - `tool_calls_argument_matches` — tool-call argument regex matchers for source/corpus/tool routing checks
29
+
30
+ ## Authoring a manifest
31
+
32
+ 1. Start from an existing manifest in this dir
33
+ 2. Set `fixture.env.RDC_TEST = "1"` (required — sandbox contract)
34
+ 3. Write assertions tight enough to catch real regressions but not flaky
35
+ 4. Run `node scripts/acceptance.mjs --skill rdc:<name>` to capture the Claude transcript, tool calls, and lessons learned
36
+ 5. When Codex behavior matters, also run `node scripts/acceptance.mjs --engine codex --skill rdc:<name>` against the same manifest
37
+ 6. Commit manifest + any skill changes together
38
+
39
+ For content-producing skills, include both positive and negative output checks.
40
+ Use `stdout_contains` for expected channel-native structure and source facts;
41
+ use `stdout_not_contains` for source-fidelity violations or explicitly forbidden
42
+ claims.
43
+
44
+ ## Adding a new skill
45
+
46
+ New skills MUST ship with a manifest. Tier 2 CI will block tag push if a
47
+ new skill lands without one.
@@ -0,0 +1,87 @@
1
+ {
2
+ "skill": "rdc:onramp",
3
+ "description": "Tier-2 self-test for rdc:onramp enrollment skill",
4
+ "tier": 2,
5
+ "sandbox": true,
6
+ "env": {
7
+ "RDC_TEST": "1"
8
+ },
9
+ "invocation": {
10
+ "slug": "onramp-selftest",
11
+ "name": "Onramp Self Test",
12
+ "flags": ["--archetype", "working-landscapes", "--dry-run"]
13
+ },
14
+ "assertions": [
15
+ {
16
+ "type": "exit_code",
17
+ "expect": 0,
18
+ "description": "Skill exits cleanly under RDC_TEST with --dry-run"
19
+ },
20
+ {
21
+ "type": "stdout_contains",
22
+ "pattern": "Preflight",
23
+ "description": "Checklist begins with Preflight step"
24
+ },
25
+ {
26
+ "type": "stdout_contains",
27
+ "pattern": "Resolve drift",
28
+ "description": "Drift resolution step is emitted"
29
+ },
30
+ {
31
+ "type": "stdout_contains",
32
+ "pattern": "\\[RDC_TEST\\]",
33
+ "description": "Sandbox short-circuit marker present — confirms external calls were skipped"
34
+ },
35
+ {
36
+ "type": "file_absent",
37
+ "path": "places/onramp-selftest/_context.md",
38
+ "description": "Scaffolder MUST NOT write _context.md — projection-drift violation gate"
39
+ }
40
+ ],
41
+ "door_contracts": [
42
+ {
43
+ "name": "enroll_place_signature",
44
+ "description": "enroll_place RPC must accept (text, text, jsonb, text) and return jsonb",
45
+ "type": "rpc_introspection",
46
+ "project_id": "uvojezuorjgqzmhhgluu",
47
+ "query": "SELECT p.proname, pg_get_function_identity_arguments(p.oid) AS args, pg_get_function_result(p.oid) AS returns FROM pg_proc p WHERE p.proname = 'enroll_place';",
48
+ "expect_args_contains": ["text", "jsonb"],
49
+ "expect_returns": "jsonb"
50
+ },
51
+ {
52
+ "name": "insert_work_item_accepts_project_node_id",
53
+ "description": "insert_work_item must accept p_project_node_id parameter",
54
+ "type": "rpc_introspection",
55
+ "project_id": "uvojezuorjgqzmhhgluu",
56
+ "query": "SELECT proname, pg_get_function_identity_arguments(oid) FROM pg_proc WHERE proname = 'insert_work_item';",
57
+ "expect_args_contains": ["p_project_node_id"]
58
+ }
59
+ ],
60
+ "disk_ahead_test": {
61
+ "description": "disk-ahead state must STOP and open a reconciliation work item",
62
+ "setup": "mkdir -p places/disk-ahead-test",
63
+ "invocation_slug": "disk-ahead-test",
64
+ "invocation_name": "Disk Ahead Test",
65
+ "assertions": [
66
+ {
67
+ "type": "stdout_contains",
68
+ "pattern": "disk-ahead",
69
+ "description": "Skill identifies the disk-ahead state"
70
+ },
71
+ {
72
+ "type": "stdout_contains",
73
+ "pattern": "STOP",
74
+ "description": "Skill STOPs on disk-ahead"
75
+ },
76
+ {
77
+ "type": "exit_nonzero",
78
+ "description": "Skill exits non-zero on disk-ahead (not a clean enrollment)"
79
+ }
80
+ ],
81
+ "teardown": "rmdir places/disk-ahead-test 2>/dev/null || true"
82
+ },
83
+ "idempotency_test": {
84
+ "description": "Running rdc:onramp twice for already-enrolled should produce zero new writes",
85
+ "note": "Under RDC_TEST=1 this is verified by checking that [RDC_TEST] skipping markers appear (not real insert calls) and the checklist reports already-enrolled"
86
+ }
87
+ }