@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,180 +1,180 @@
1
- ---
2
- name: rdc:collab
3
- description: >-
4
- Usage `rdc:collab --session <id>` — bidirectional relay with claude.ai. Read inbox, do work, write outbox, loop. Dave watches terminal and can interject.
5
- ---
6
-
7
- > **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
8
- > Checklist-only output. No tool-call narration. No raw MCP/JSON/log dumps.
9
- > One checklist upfront, updated in place, shown again at end with a 1-line verdict.
10
-
11
-
12
- # /rdc:collab — Claude Code Collab Session Listener
13
- > Invoked as: `/rdc:collab --session <session_id>`
14
- > You are the build/execute half of a live collab session with claude.ai.
15
- > Transport: file relay via `.rdc/relay/sessions/<id>/inbox/` + `outbox/`
16
- > Dave is watching this terminal and can interject at any time.
17
-
18
- ---
19
-
20
- ## What This Is
21
-
22
- claude.ai writes tasks into your inbox. You read, act, commit, write the response
23
- to outbox, and loop. clauth relays messages between claude.ai and this session via
24
- the `chitchat_*` MCP tools. Dave can watch everything in this terminal and interject
25
- by typing — treat anything Dave types as a high-priority override.
26
-
27
- ---
28
-
29
- ## Step 1 — Parse session ID
30
-
31
- Extract `--session <uuid>` from args.
32
-
33
- If no `--session`, list `.rdc/relay/sessions/` and show available sessions.
34
-
35
- ---
36
-
37
- ## Step 2 — Initialize
38
-
39
- ```
40
- sessionDir = .rdc/relay/sessions/<session_id>/
41
- inbox = sessionDir/inbox/
42
- outbox = sessionDir/outbox/
43
- ```
44
-
45
- Verify both dirs exist. If not:
46
- ```
47
- Session directory not found. Run chitchat_start from claude.ai first.
48
- ```
49
-
50
- Update `sessionDir/status.json`:
51
- ```json
52
- { "status": "active", "cli_connected_at": "<iso>", "session_id": "<id>" }
53
- ```
54
-
55
- Write a ready signal to outbox so claude.ai knows the CLI is connected:
56
-
57
- ```
58
- outbox/<iso-ts>-ready.md
59
- ---
60
- from: claude-code
61
- to: claude-ai
62
- session_id: <id>
63
- type: ready
64
- responded_at: <iso>
65
- ---
66
- Claude Code connected. Ready to receive tasks.
67
- cwd: <rootPath>
68
- ```
69
-
70
- Print to terminal:
71
- ```
72
- [rdc:collab] Session <id> active.
73
- Inbox: .rdc/relay/sessions/<id>/inbox/
74
- Outbox: .rdc/relay/sessions/<id>/outbox/
75
- Waiting for messages from claude.ai... (Ctrl+C to end)
76
- ```
77
-
78
- ---
79
-
80
- ## Step 3 — Poll inbox
81
-
82
- Scan `inbox/` for `.md` files that do NOT end in `.processed`. Sort ascending by name.
83
-
84
- - **No files:** wait 5 seconds, poll again.
85
- - **After 10 min idle:** print `[rdc:collab] Still listening...` heartbeat, keep waiting.
86
- - **Files found:** process the oldest one first (Step 4).
87
-
88
- ---
89
-
90
- ## Step 4 — Process message
91
-
92
- Read the file. Parse frontmatter `type` field.
93
-
94
- **`type: stop`** → go to Step 6.
95
-
96
- **Anything else (default: task/message):**
97
-
98
- Print to terminal:
99
- ```
100
- [rdc:collab] Turn <N> from claude.ai:
101
- ──────────────────────────────────────
102
- <message body>
103
- ──────────────────────────────────────
104
- ```
105
-
106
- Rename the inbox file to `<filename>.processed`.
107
-
108
- ---
109
-
110
- ## Step 5 — Do the work
111
-
112
- Act on the message. Full Claude Code capabilities:
113
- - File edits, git commits to `develop`
114
- - Supabase RPC queries
115
- - Type-checks: `npx tsc --noEmit` (never `pnpm build`)
116
- - Run skills: `/rdc:plan`, `/rdc:fixit`, etc.
117
- - Answer questions directly
118
-
119
- Follow `.rdc/guides/agent-bootstrap.md` rules throughout.
120
-
121
- When done, write response to outbox:
122
- ```
123
- outbox/<iso-ts>-turn<N>.md
124
- ---
125
- from: claude-code
126
- to: claude-ai
127
- session_id: <session_id>
128
- turn: <N>
129
- responded_at: <iso>
130
- commits: <sha1, sha2 or none>
131
- ---
132
-
133
- <what you did, what you found, any questions or decisions needed from claude.ai>
134
- ```
135
-
136
- Print to terminal:
137
- ```
138
- [rdc:collab] Turn <N> done. Response written to outbox.
139
- Waiting for next message...
140
- ```
141
-
142
- Return to Step 3.
143
-
144
- ---
145
-
146
- ## Step 6 — End session
147
-
148
- Received `type: stop` in inbox, or Dave pressed Ctrl+C.
149
-
150
- Write final summary to outbox:
151
- ```
152
- outbox/<iso-ts>-final.md
153
- ---
154
- from: claude-code
155
- to: claude-ai
156
- session_id: <session_id>
157
- type: final
158
- responded_at: <iso>
159
- ---
160
- Session complete.
161
- Turns: <N>
162
- Commits: <list or none>
163
- Open items: <anything unresolved>
164
- ```
165
-
166
- Update `status.json` → `{ "status": "done", "ended_at": "<iso>" }`
167
-
168
- Print:
169
- ```
170
- [rdc:collab] Session ended.
171
- ```
172
-
173
- ---
174
-
175
- ## Dave Interjections
176
-
177
- If Dave types in this terminal during a turn:
178
- - Treat it as an override injected into the current task
179
- - Acknowledge it in your outbox response
180
- - If it changes direction mid-task, note what you stopped and why
1
+ ---
2
+ name: rdc:collab
3
+ description: >-
4
+ Usage `rdc:collab --session <id>` — bidirectional relay with claude.ai. Read inbox, do work, write outbox, loop. Dave watches terminal and can interject.
5
+ ---
6
+
7
+ > **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
8
+ > Checklist-only output. No tool-call narration. No raw MCP/JSON/log dumps.
9
+ > One checklist upfront, updated in place, shown again at end with a 1-line verdict.
10
+
11
+
12
+ # /rdc:collab — Claude Code Collab Session Listener
13
+ > Invoked as: `/rdc:collab --session <session_id>`
14
+ > You are the build/execute half of a live collab session with claude.ai.
15
+ > Transport: file relay via `.rdc/relay/sessions/<id>/inbox/` + `outbox/`
16
+ > Dave is watching this terminal and can interject at any time.
17
+
18
+ ---
19
+
20
+ ## What This Is
21
+
22
+ claude.ai writes tasks into your inbox. You read, act, commit, write the response
23
+ to outbox, and loop. clauth relays messages between claude.ai and this session via
24
+ the `chitchat_*` MCP tools. Dave can watch everything in this terminal and interject
25
+ by typing — treat anything Dave types as a high-priority override.
26
+
27
+ ---
28
+
29
+ ## Step 1 — Parse session ID
30
+
31
+ Extract `--session <uuid>` from args.
32
+
33
+ If no `--session`, list `.rdc/relay/sessions/` and show available sessions.
34
+
35
+ ---
36
+
37
+ ## Step 2 — Initialize
38
+
39
+ ```
40
+ sessionDir = .rdc/relay/sessions/<session_id>/
41
+ inbox = sessionDir/inbox/
42
+ outbox = sessionDir/outbox/
43
+ ```
44
+
45
+ Verify both dirs exist. If not:
46
+ ```
47
+ Session directory not found. Run chitchat_start from claude.ai first.
48
+ ```
49
+
50
+ Update `sessionDir/status.json`:
51
+ ```json
52
+ { "status": "active", "cli_connected_at": "<iso>", "session_id": "<id>" }
53
+ ```
54
+
55
+ Write a ready signal to outbox so claude.ai knows the CLI is connected:
56
+
57
+ ```
58
+ outbox/<iso-ts>-ready.md
59
+ ---
60
+ from: claude-code
61
+ to: claude-ai
62
+ session_id: <id>
63
+ type: ready
64
+ responded_at: <iso>
65
+ ---
66
+ Claude Code connected. Ready to receive tasks.
67
+ cwd: <rootPath>
68
+ ```
69
+
70
+ Print to terminal:
71
+ ```
72
+ [rdc:collab] Session <id> active.
73
+ Inbox: .rdc/relay/sessions/<id>/inbox/
74
+ Outbox: .rdc/relay/sessions/<id>/outbox/
75
+ Waiting for messages from claude.ai... (Ctrl+C to end)
76
+ ```
77
+
78
+ ---
79
+
80
+ ## Step 3 — Poll inbox
81
+
82
+ Scan `inbox/` for `.md` files that do NOT end in `.processed`. Sort ascending by name.
83
+
84
+ - **No files:** wait 5 seconds, poll again.
85
+ - **After 10 min idle:** print `[rdc:collab] Still listening...` heartbeat, keep waiting.
86
+ - **Files found:** process the oldest one first (Step 4).
87
+
88
+ ---
89
+
90
+ ## Step 4 — Process message
91
+
92
+ Read the file. Parse frontmatter `type` field.
93
+
94
+ **`type: stop`** → go to Step 6.
95
+
96
+ **Anything else (default: task/message):**
97
+
98
+ Print to terminal:
99
+ ```
100
+ [rdc:collab] Turn <N> from claude.ai:
101
+ ──────────────────────────────────────
102
+ <message body>
103
+ ──────────────────────────────────────
104
+ ```
105
+
106
+ Rename the inbox file to `<filename>.processed`.
107
+
108
+ ---
109
+
110
+ ## Step 5 — Do the work
111
+
112
+ Act on the message. Full Claude Code capabilities:
113
+ - File edits, git commits to `develop`
114
+ - Supabase RPC queries
115
+ - Type-checks: `npx tsc --noEmit` (never `pnpm build`)
116
+ - Run skills: `/rdc:plan`, `/rdc:fixit`, etc.
117
+ - Answer questions directly
118
+
119
+ Follow `.rdc/guides/agent-bootstrap.md` rules throughout.
120
+
121
+ When done, write response to outbox:
122
+ ```
123
+ outbox/<iso-ts>-turn<N>.md
124
+ ---
125
+ from: claude-code
126
+ to: claude-ai
127
+ session_id: <session_id>
128
+ turn: <N>
129
+ responded_at: <iso>
130
+ commits: <sha1, sha2 or none>
131
+ ---
132
+
133
+ <what you did, what you found, any questions or decisions needed from claude.ai>
134
+ ```
135
+
136
+ Print to terminal:
137
+ ```
138
+ [rdc:collab] Turn <N> done. Response written to outbox.
139
+ Waiting for next message...
140
+ ```
141
+
142
+ Return to Step 3.
143
+
144
+ ---
145
+
146
+ ## Step 6 — End session
147
+
148
+ Received `type: stop` in inbox, or Dave pressed Ctrl+C.
149
+
150
+ Write final summary to outbox:
151
+ ```
152
+ outbox/<iso-ts>-final.md
153
+ ---
154
+ from: claude-code
155
+ to: claude-ai
156
+ session_id: <session_id>
157
+ type: final
158
+ responded_at: <iso>
159
+ ---
160
+ Session complete.
161
+ Turns: <N>
162
+ Commits: <list or none>
163
+ Open items: <anything unresolved>
164
+ ```
165
+
166
+ Update `status.json` → `{ "status": "done", "ended_at": "<iso>" }`
167
+
168
+ Print:
169
+ ```
170
+ [rdc:collab] Session ended.
171
+ ```
172
+
173
+ ---
174
+
175
+ ## Dave Interjections
176
+
177
+ If Dave types in this terminal during a turn:
178
+ - Treat it as an override injected into the current task
179
+ - Acknowledge it in your outbox response
180
+ - If it changes direction mid-task, note what you stopped and why
@@ -1,152 +1,152 @@
1
- ---
2
- name: rdc:deploy
3
- description: >-
4
- Coolify ops. Usage `rdc:deploy <slug> [build-id]` or `rdc:deploy new <slug>` or `rdc:deploy diagnose <slug>` or `rdc:deploy audit [--fix]` — type checklists, DNS decision tree, mandatory post-deploy gate. Checklist-only output.
5
- ---
6
-
7
- > **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
8
- > Checklist-only output. No tool-call narration. No raw MCP/JSON/log dumps.
9
- > One checklist upfront, updated in place, shown again at end with a 1-line verdict.
10
-
11
-
12
- # rdc:deploy — Coolify Operations
13
-
14
- **READ FIRST:** `guides/output-contract.md`. Checklist-only output. No narration.
15
- No raw MCP dumps. No UUIDs unless asked.
16
-
17
- > **Sandbox contract:** This skill honors `RDC_TEST=1` per `guides/agent-bootstrap.md` § RDC_TEST Sandbox Contract. Destructive external calls short-circuit under the flag.
18
- >
19
- > *Under `$RDC_TEST=1`:* Modes 1 (deploy) and 2 (new) are **entirely skipped** — echo `[RDC_TEST] skipping Coolify deploy/create` and mark every `[ ]` line in those checklists as `[~]`. Modes 3 (diagnose) and 4 (audit without `--fix`) are **read-only and run normally**. Mode 4 with `--fix` skips all remediation — echo `[RDC_TEST] skipping audit --fix remediation` and report findings only. Registry SELECTs, Coolify status reads, HTTP gate probes, TLS checks, and DNS lookups are NOT destructive and run normally. Anything that writes (create app, set watch_paths, deploy trigger, env var write, DNS write, CF cache purge, registry UPDATE/INSERT) is gated.
20
-
21
- ## Arguments
22
-
23
- - `rdc:deploy <slug>` — deploy existing app (latest commit on its watched branch)
24
- - `rdc:deploy <slug> <build-id>` — deploy specific commit/tag
25
- - `rdc:deploy new <slug>` — create a new Coolify app from registry
26
- - `rdc:deploy diagnose <slug>` — debug why an app is broken
27
- - `rdc:deploy audit` — fleet-wide scan for missed failures
28
- - `rdc:deploy audit --fix` — fleet scan + auto-remediate safe issues
29
- - `rdc:deploy` (no args) — print mode menu, ask which
30
-
31
- ## Modes
32
-
33
- ### Mode 1 — deploy <slug> [build-id]
34
-
35
- ```
36
- rdc:deploy: <slug> → <domain>
37
- [ ] Registry lookup (slug, uuid, branch, type, env_vars_needed)
38
- [ ] Git state verified (branch matches Coolify, commit pushed)
39
- [ ] Build-id resolved (default: HEAD of watched branch)
40
- [ ] Env vars present in Coolify (compare to registry)
41
- [ ] Type-specific preflight (see docs/runbooks/coolify-deploy-checklist.md)
42
- [ ] Deploy triggered
43
- [ ] Deployment reached "finished" state
44
- [ ] Gate: HTTP 200
45
- [ ] Gate: TLS valid (no SSL cipher mismatch)
46
- [ ] Gate: cache headers correct on HTML
47
- [ ] Gate: container running on declared port
48
- [ ] Cloudflare cache purged (if proxied)
49
- [ ] deployment_registry updated (last_deploy_at, status)
50
- ✅ rdc:deploy: <slug> deployed in Nm Ns
51
- ```
52
-
53
- ### Mode 2 — new <slug>
54
-
55
- ```
56
- rdc:deploy new: <slug>
57
- [ ] Registry entry loaded (or interactive create)
58
- [ ] DNS path chosen (A: staging wildcard B: apex C: other zone)
59
- [ ] DNS record verified or wildcard confirmed
60
- [ ] Cloudflare proxy setting correct for DNS path
61
- [ ] server_uuid, project_uuid, environment_uuid, github_app_uuid resolved
62
- [ ] Build type chosen (Next.js / Vite / static / standalone)
63
- [ ] Type-specific fields filled (ports, build cmd, install cmd, start cmd)
64
- [ ] Application created via /applications/private-github-app
65
- [ ] watch_paths set and verified
66
- [ ] Env vars set in Coolify
67
- [ ] First deploy triggered
68
- [ ] Gate passed (5 checks)
69
- [ ] deployment_registry row inserted
70
- ✅ rdc:deploy new: <slug> live at <domain>
71
- ```
72
-
73
- ### Mode 3 — diagnose <slug>
74
-
75
- ```
76
- rdc:deploy diagnose: <slug>
77
- [ ] App located (uuid, domain, last deploy)
78
- [ ] Container state (running / restarting / stopped)
79
- [ ] Last 100 log lines scanned for known error patterns
80
- [ ] Port mismatch check (declared vs actual)
81
- [ ] Env var drift check (registry vs Coolify)
82
- [ ] watch_paths sanity check
83
- [ ] HTTP / TLS reachability
84
- [ ] Cloudflare proxy state check
85
- [ ] Disk space on server
86
- [ ] Branch mismatch check (Coolify git_branch vs expected)
87
- ⚠️ rdc:deploy diagnose: <root cause in one sentence> — fix: <one command>
88
- ```
89
-
90
- ### Mode 4 — audit
91
-
92
- ```
93
- rdc:deploy audit: fleet scan
94
- [ ] Inventory join: Coolify apps ⋈ deployment_registry
95
- [ ] Orphans (in one but not the other)
96
- [ ] Monorepo apps missing watch_paths
97
- [ ] Stale deploys (>14 days since last success)
98
- [ ] Registry rows with status='broken'
99
- [ ] Failed deployments in last 7 days
100
- [ ] HTTP gate sweep (non-200 per domain)
101
- [ ] TLS cert expiry <30 days
102
- [ ] Port mismatches (ports_exposes vs actual container port)
103
- [ ] Env var drift (registry.env_vars_needed vs Coolify env)
104
- [ ] Branch mismatches (Coolify git_branch ≠ expected)
105
- [ ] Disk space on 64.237.54.189
106
- [ ] DNS/proxy misconfigs on configured staging wildcard
107
- [ ] Duplicate apps (same repo, multiple UUIDs)
108
-
109
- Findings:
110
- | Severity | App | Issue | Fix |
111
- |----------|-----|-------|-----|
112
- | HIGH | ... | ... | ... |
113
- ⚠️ rdc:deploy audit: N HIGH · M MED · K LOW — run `rdc:deploy audit --fix` to auto-remediate safe issues
114
- ```
115
-
116
- Severity rules:
117
- - **HIGH** — user-facing down (HTTP non-200, TLS invalid, container not running)
118
- - **MED** — degraded or drifting (watch_paths missing, env var drift, stale deploy, branch mismatch)
119
- - **LOW** — cleanup (orphans, duplicates, registry status stale)
120
-
121
- `--fix` auto-remediates only: missing watch_paths, registry row updates, CF cache purges. Never touches env vars, DNS, or container config without explicit confirmation.
122
-
123
- ## Coolify Access — clauth + REST API
124
-
125
- All Coolify operations use the clauth daemon and the Coolify REST API directly.
126
- There is no Coolify MCP server — do not reference `@masonator/coolify-mcp`.
127
-
128
- ```bash
129
- _COOLIFY=$(curl -s http://127.0.0.1:52437/v/coolify-api)
130
- curl -s -H "Authorization: Bearer $_COOLIFY" "$DEPLOY_API_BASE/api/v1/applications"
131
- ```
132
-
133
- If clauth daemon is not responding:
134
- ```
135
- BLOCKED: clauth daemon not responding. Run scripts\restart-clauth.bat, unlock at http://127.0.0.1:52437
136
- ```
137
-
138
- ## References
139
-
140
- - Type-specific checklists + DNS tree + gate commands: `docs/runbooks/coolify-deploy-checklist.md`
141
- - Rules / registry RPCs / hard limits: `.claude/rules/coolify-deployment.md`
142
- - Infrastructure constants:
143
- ```
144
- Server UUID: ih386anenvvvn6fy1umtyow0
145
- Server IP: 64.237.54.189
146
- Dashboard: <deployment-dashboard-url>
147
- GitHub App UUID: xdmcy60putp5h9j7k4kwg9c3
148
- ```
149
-
150
- ## Supersedes
151
-
152
- `coolify-deploy` standalone skill (kept for back-compat; new work uses `rdc:deploy`).
1
+ ---
2
+ name: rdc:deploy
3
+ description: >-
4
+ Coolify ops. Usage `rdc:deploy <slug> [build-id]` or `rdc:deploy new <slug>` or `rdc:deploy diagnose <slug>` or `rdc:deploy audit [--fix]` — type checklists, DNS decision tree, mandatory post-deploy gate. Checklist-only output.
5
+ ---
6
+
7
+ > **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
8
+ > Checklist-only output. No tool-call narration. No raw MCP/JSON/log dumps.
9
+ > One checklist upfront, updated in place, shown again at end with a 1-line verdict.
10
+
11
+
12
+ # rdc:deploy — Coolify Operations
13
+
14
+ **READ FIRST:** `guides/output-contract.md`. Checklist-only output. No narration.
15
+ No raw MCP dumps. No UUIDs unless asked.
16
+
17
+ > **Sandbox contract:** This skill honors `RDC_TEST=1` per `guides/agent-bootstrap.md` § RDC_TEST Sandbox Contract. Destructive external calls short-circuit under the flag.
18
+ >
19
+ > *Under `$RDC_TEST=1`:* Modes 1 (deploy) and 2 (new) are **entirely skipped** — echo `[RDC_TEST] skipping Coolify deploy/create` and mark every `[ ]` line in those checklists as `[~]`. Modes 3 (diagnose) and 4 (audit without `--fix`) are **read-only and run normally**. Mode 4 with `--fix` skips all remediation — echo `[RDC_TEST] skipping audit --fix remediation` and report findings only. Registry SELECTs, Coolify status reads, HTTP gate probes, TLS checks, and DNS lookups are NOT destructive and run normally. Anything that writes (create app, set watch_paths, deploy trigger, env var write, DNS write, CF cache purge, registry UPDATE/INSERT) is gated.
20
+
21
+ ## Arguments
22
+
23
+ - `rdc:deploy <slug>` — deploy existing app (latest commit on its watched branch)
24
+ - `rdc:deploy <slug> <build-id>` — deploy specific commit/tag
25
+ - `rdc:deploy new <slug>` — create a new Coolify app from registry
26
+ - `rdc:deploy diagnose <slug>` — debug why an app is broken
27
+ - `rdc:deploy audit` — fleet-wide scan for missed failures
28
+ - `rdc:deploy audit --fix` — fleet scan + auto-remediate safe issues
29
+ - `rdc:deploy` (no args) — print mode menu, ask which
30
+
31
+ ## Modes
32
+
33
+ ### Mode 1 — deploy <slug> [build-id]
34
+
35
+ ```
36
+ rdc:deploy: <slug> → <domain>
37
+ [ ] Registry lookup (slug, uuid, branch, type, env_vars_needed)
38
+ [ ] Git state verified (branch matches Coolify, commit pushed)
39
+ [ ] Build-id resolved (default: HEAD of watched branch)
40
+ [ ] Env vars present in Coolify (compare to registry)
41
+ [ ] Type-specific preflight (see docs/runbooks/coolify-deploy-checklist.md)
42
+ [ ] Deploy triggered
43
+ [ ] Deployment reached "finished" state
44
+ [ ] Gate: HTTP 200
45
+ [ ] Gate: TLS valid (no SSL cipher mismatch)
46
+ [ ] Gate: cache headers correct on HTML
47
+ [ ] Gate: container running on declared port
48
+ [ ] Cloudflare cache purged (if proxied)
49
+ [ ] deployment_registry updated (last_deploy_at, status)
50
+ ✅ rdc:deploy: <slug> deployed in Nm Ns
51
+ ```
52
+
53
+ ### Mode 2 — new <slug>
54
+
55
+ ```
56
+ rdc:deploy new: <slug>
57
+ [ ] Registry entry loaded (or interactive create)
58
+ [ ] DNS path chosen (A: staging wildcard B: apex C: other zone)
59
+ [ ] DNS record verified or wildcard confirmed
60
+ [ ] Cloudflare proxy setting correct for DNS path
61
+ [ ] server_uuid, project_uuid, environment_uuid, github_app_uuid resolved
62
+ [ ] Build type chosen (Next.js / Vite / static / standalone)
63
+ [ ] Type-specific fields filled (ports, build cmd, install cmd, start cmd)
64
+ [ ] Application created via /applications/private-github-app
65
+ [ ] watch_paths set and verified
66
+ [ ] Env vars set in Coolify
67
+ [ ] First deploy triggered
68
+ [ ] Gate passed (5 checks)
69
+ [ ] deployment_registry row inserted
70
+ ✅ rdc:deploy new: <slug> live at <domain>
71
+ ```
72
+
73
+ ### Mode 3 — diagnose <slug>
74
+
75
+ ```
76
+ rdc:deploy diagnose: <slug>
77
+ [ ] App located (uuid, domain, last deploy)
78
+ [ ] Container state (running / restarting / stopped)
79
+ [ ] Last 100 log lines scanned for known error patterns
80
+ [ ] Port mismatch check (declared vs actual)
81
+ [ ] Env var drift check (registry vs Coolify)
82
+ [ ] watch_paths sanity check
83
+ [ ] HTTP / TLS reachability
84
+ [ ] Cloudflare proxy state check
85
+ [ ] Disk space on server
86
+ [ ] Branch mismatch check (Coolify git_branch vs expected)
87
+ ⚠️ rdc:deploy diagnose: <root cause in one sentence> — fix: <one command>
88
+ ```
89
+
90
+ ### Mode 4 — audit
91
+
92
+ ```
93
+ rdc:deploy audit: fleet scan
94
+ [ ] Inventory join: Coolify apps ⋈ deployment_registry
95
+ [ ] Orphans (in one but not the other)
96
+ [ ] Monorepo apps missing watch_paths
97
+ [ ] Stale deploys (>14 days since last success)
98
+ [ ] Registry rows with status='broken'
99
+ [ ] Failed deployments in last 7 days
100
+ [ ] HTTP gate sweep (non-200 per domain)
101
+ [ ] TLS cert expiry <30 days
102
+ [ ] Port mismatches (ports_exposes vs actual container port)
103
+ [ ] Env var drift (registry.env_vars_needed vs Coolify env)
104
+ [ ] Branch mismatches (Coolify git_branch ≠ expected)
105
+ [ ] Disk space on 64.237.54.189
106
+ [ ] DNS/proxy misconfigs on configured staging wildcard
107
+ [ ] Duplicate apps (same repo, multiple UUIDs)
108
+
109
+ Findings:
110
+ | Severity | App | Issue | Fix |
111
+ |----------|-----|-------|-----|
112
+ | HIGH | ... | ... | ... |
113
+ ⚠️ rdc:deploy audit: N HIGH · M MED · K LOW — run `rdc:deploy audit --fix` to auto-remediate safe issues
114
+ ```
115
+
116
+ Severity rules:
117
+ - **HIGH** — user-facing down (HTTP non-200, TLS invalid, container not running)
118
+ - **MED** — degraded or drifting (watch_paths missing, env var drift, stale deploy, branch mismatch)
119
+ - **LOW** — cleanup (orphans, duplicates, registry status stale)
120
+
121
+ `--fix` auto-remediates only: missing watch_paths, registry row updates, CF cache purges. Never touches env vars, DNS, or container config without explicit confirmation.
122
+
123
+ ## Coolify Access — clauth + REST API
124
+
125
+ All Coolify operations use the clauth daemon and the Coolify REST API directly.
126
+ There is no Coolify MCP server — do not reference `@masonator/coolify-mcp`.
127
+
128
+ ```bash
129
+ _COOLIFY=$(curl -s http://127.0.0.1:52437/v/coolify-api)
130
+ curl -s -H "Authorization: Bearer $_COOLIFY" "$DEPLOY_API_BASE/api/v1/applications"
131
+ ```
132
+
133
+ If clauth daemon is not responding:
134
+ ```
135
+ BLOCKED: clauth daemon not responding. Run scripts\restart-clauth.bat, unlock at http://127.0.0.1:52437
136
+ ```
137
+
138
+ ## References
139
+
140
+ - Type-specific checklists + DNS tree + gate commands: `docs/runbooks/coolify-deploy-checklist.md`
141
+ - Rules / registry RPCs / hard limits: `.claude/rules/coolify-deployment.md`
142
+ - Infrastructure constants:
143
+ ```
144
+ Server UUID: ih386anenvvvn6fy1umtyow0
145
+ Server IP: 64.237.54.189
146
+ Dashboard: <deployment-dashboard-url>
147
+ GitHub App UUID: xdmcy60putp5h9j7k4kwg9c3
148
+ ```
149
+
150
+ ## Supersedes
151
+
152
+ `coolify-deploy` standalone skill (kept for back-compat; new work uses `rdc:deploy`).