@lifeaitools/rdc-skills 0.9.33 → 0.9.35

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 (54) hide show
  1. package/.claude-plugin/plugin.json +2 -1
  2. package/.github/workflows/self-test.yml +34 -34
  3. package/CHANGELOG.md +10 -0
  4. package/README.md +1 -1
  5. package/commands/build.md +181 -181
  6. package/commands/collab.md +180 -180
  7. package/commands/deploy.md +152 -152
  8. package/commands/fixit.md +105 -105
  9. package/commands/handoff.md +173 -173
  10. package/commands/overnight.md +220 -220
  11. package/commands/plan.md +158 -158
  12. package/commands/preplan.md +131 -131
  13. package/commands/prototype.md +145 -145
  14. package/commands/report.md +99 -99
  15. package/commands/review.md +120 -120
  16. package/commands/status.md +86 -86
  17. package/commands/workitems.md +127 -127
  18. package/guides/agent-bootstrap.md +206 -202
  19. package/guides/agents/backend.md +102 -102
  20. package/guides/agents/content.md +94 -94
  21. package/guides/agents/cs2.md +56 -56
  22. package/guides/agents/data.md +86 -86
  23. package/guides/agents/design.md +77 -77
  24. package/guides/agents/frontend.md +91 -91
  25. package/guides/agents/infrastructure.md +81 -81
  26. package/guides/agents/setup.md +280 -278
  27. package/guides/agents/verify.md +119 -119
  28. package/guides/agents/viz.md +106 -106
  29. package/guides/engineering-behavior.md +43 -0
  30. package/hooks/rdc-invocation-marker.js +143 -0
  31. package/hooks/rdc-output-contract-gate.js +85 -0
  32. package/package.json +2 -2
  33. package/scripts/install-rdc-skills.js +29 -0
  34. package/scripts/install.ps1 +15 -0
  35. package/scripts/self-test.mjs +1414 -1323
  36. package/skills/build/SKILL.md +359 -355
  37. package/skills/collab/SKILL.md +217 -217
  38. package/skills/deploy/SKILL.md +198 -198
  39. package/skills/design/SKILL.md +211 -211
  40. package/skills/fixit/SKILL.md +136 -132
  41. package/skills/fs-mcp/SKILL.md +131 -0
  42. package/skills/handoff/SKILL.md +200 -200
  43. package/skills/help/SKILL.md +104 -104
  44. package/skills/overnight/SKILL.md +224 -224
  45. package/skills/plan/SKILL.md +252 -252
  46. package/skills/preplan/SKILL.md +86 -86
  47. package/skills/prototype/SKILL.md +150 -150
  48. package/skills/release/SKILL.md +342 -342
  49. package/skills/report/SKILL.md +100 -100
  50. package/skills/review/SKILL.md +122 -121
  51. package/skills/self-test/SKILL.md +126 -126
  52. package/skills/status/SKILL.md +99 -99
  53. package/skills/watch/SKILL.md +91 -91
  54. package/skills/workitems/SKILL.md +151 -151
@@ -1,217 +1,217 @@
1
- ---
2
- name: rdc:collab
3
- description: "Usage `rdc:collab --session <session_id>` — Bidirectional relay with a claude.ai session — read inbox, do work, write outbox, loop. Use when coordinating with a parallel claude.ai conversation."
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
- > **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. Chitchat relay writes (`chitchat_reply`) and git push are skipped under `RDC_TEST=1`.
11
-
12
-
13
- # /rdc:collab — Claude Code Collab Session Listener
14
- > Invoked as: `/rdc:collab --session <session_id>`
15
- > You are the build/execute half of a live collab session with claude.ai.
16
- > Transport: chitchat MCP tools (`chitchat_poll` / `chitchat_reply`) + SSE stream
17
- > Dave is watching this terminal and can interject at any time.
18
-
19
- ---
20
-
21
- ## When to Use
22
- - Project lead wants to delegate a task to a claude.ai session
23
- - You need bidirectional relay between this CLI agent and a claude.ai coworker
24
- - An async work handoff is in progress via the chitchat relay
25
-
26
- ## Arguments
27
-
28
- - `rdc:collab --session <id>` — start or resume a collab relay with the given session ID
29
-
30
- ## What This Is
31
-
32
- claude.ai writes tasks into your inbox via `chitchat_send`. The clauth daemon
33
- queues them and — if you are connected to the SSE stream — pushes the event
34
- immediately (zero-latency). You read, act, commit, reply via `chitchat_reply`,
35
- and loop. Dave can watch everything in this terminal and interject by typing —
36
- treat anything Dave types as a high-priority override.
37
-
38
- ---
39
-
40
- ## Step 1 — Parse session ID
41
-
42
- Extract `--session <uuid>` from args.
43
-
44
- If no `--session`, call `chitchat_list` and show all active sessions.
45
-
46
- ---
47
-
48
- ## Step 2 — Initialize (chitchat-native)
49
-
50
- Call `chitchat_list` to verify the session exists in the daemon.
51
-
52
- If the session is not found:
53
- ```
54
- Session <id> not found in clauth daemon.
55
- Start a session from claude.ai first:
56
- chitchat_start(name: "<session-slug>")
57
- Then pass the returned session_id here.
58
- ```
59
-
60
- Send the ready signal via MCP:
61
- ```
62
- chitchat_reply(session_id, "Claude Code connected. Ready to receive tasks.\ncwd: <rootPath>")
63
- ```
64
-
65
- Print to terminal:
66
- ```
67
- [rdc:collab] Session <id> active (chitchat transport).
68
- SSE stream: http://127.0.0.1:52437/chitchat/<id>/stream
69
- Waiting for messages from claude.ai... (Ctrl+C to end)
70
- ```
71
-
72
- Note: File relay at `.rdc/relay/sessions/` is kept for backwards compatibility
73
- but is no longer the primary transport. Chitchat MCP + SSE is the default.
74
-
75
- ---
76
-
77
- ## Step 3 — Wait for message (SSE-first, poll-fallback)
78
-
79
- ### Primary path — SSE (zero-latency)
80
-
81
- Connect to the SSE stream and wait for the daemon to push a message:
82
-
83
- ```bash
84
- curl -s -N --max-time 30 http://127.0.0.1:52437/chitchat/<session_id>/stream
85
- ```
86
-
87
- The stream emits:
88
- - `event: message` lines with `data: <JSON>` when `chitchat_send` fires from claude.ai
89
- - `: keepalive` comment lines every 15s (ignore these)
90
-
91
- **When a `data:` event arrives:** parse the JSON directly — it contains the
92
- message. The SSE stream drains the inbox as it delivers; do NOT call
93
- `chitchat_poll` after receiving via SSE. Proceed directly to Step 4 with the
94
- parsed message body.
95
-
96
- **If 30s elapses with no message event (only keepalives or silence):**
97
- Print `[rdc:collab] Still listening...` and retry SSE immediately. After 10
98
- consecutive 30s timeouts (5 min idle), print a longer heartbeat but keep
99
- looping.
100
-
101
- **If curl fails (daemon restart, connection refused, non-200):** fall back to
102
- polling path below.
103
-
104
- ### Fallback path — polling (2s interval)
105
-
106
- Use this path only when SSE is unavailable:
107
-
108
- ```
109
- loop:
110
- result = chitchat_poll(session_id)
111
- if result.status == "ready":
112
- → proceed to Step 4 with result.message
113
- else (status == "idle"):
114
- wait 2 seconds
115
- continue loop
116
- ```
117
-
118
- **`chitchat_poll` return shapes:**
119
- - `{ status: "idle" }` — inbox empty, keep polling
120
- - `{ status: "ready", message: "..." }` — message waiting, consume it
121
-
122
- ---
123
-
124
- ## Step 4 — Process message
125
-
126
- You now have the message body (from SSE `data:` JSON or `chitchat_poll` result).
127
-
128
- Check if the message begins with `type: stop` (literal prefix) or contains a
129
- `type` field equal to `"stop"` in the JSON.
130
-
131
- **`type: stop`** → go to Step 7.
132
-
133
- **Anything else (default: task/message):**
134
-
135
- Print to terminal:
136
- ```
137
- [rdc:collab] Turn <N> from claude.ai:
138
- ──────────────────────────────────────
139
- <message body>
140
- ──────────────────────────────────────
141
- ```
142
-
143
- ---
144
-
145
- ## Step 5 — Do the work
146
-
147
- Act on the message. Full Claude Code capabilities:
148
- - File edits, git commits to `develop`
149
- - Supabase RPC queries
150
- - Type-checks: `npx tsc --noEmit` (never `pnpm build`)
151
- - Run skills: `/rdc:plan`, `/rdc:fixit`, etc.
152
- - Answer questions directly
153
-
154
- Follow `.rdc/guides/agent-bootstrap.md` rules throughout.
155
-
156
- For long tasks, stream progress updates mid-work:
157
- ```
158
- chitchat_reply(session_id, "Turn <N> in progress: <what you've done so far>...")
159
- ```
160
- This lets claude.ai see progress immediately rather than waiting for the full
161
- response.
162
-
163
- ---
164
-
165
- ## Step 6 — Send response
166
-
167
- When work is done, send the response via MCP:
168
-
169
- ```
170
- chitchat_reply(session_id, "<response body>")
171
- ```
172
-
173
- Response body format:
174
- ```
175
- Turn <N> complete.
176
- Commits: <sha1, sha2 or none>
177
-
178
- <what you did, what you found, any questions or decisions needed from claude.ai>
179
- ```
180
-
181
- Print to terminal:
182
- ```
183
- [rdc:collab] Turn <N> done. Response sent via chitchat_reply.
184
- Waiting for next message...
185
- ```
186
-
187
- Return to Step 3.
188
-
189
- ---
190
-
191
- ## Step 7 — End session
192
-
193
- Received `type: stop` message, or Dave pressed Ctrl+C.
194
-
195
- Send final summary via MCP:
196
- ```
197
- chitchat_reply(session_id, "Session complete.\nTurns: <N>\nCommits: <list or none>\nOpen items: <anything unresolved>")
198
- ```
199
-
200
- Then call:
201
- ```
202
- chitchat_stop(session_id)
203
- ```
204
-
205
- Print:
206
- ```
207
- [rdc:collab] Session ended.
208
- ```
209
-
210
- ---
211
-
212
- ## Dave Interjections
213
-
214
- If Dave types in this terminal during a turn:
215
- - Treat it as an override injected into the current task
216
- - Acknowledge it in your `chitchat_reply` response
217
- - If it changes direction mid-task, note what you stopped and why
1
+ ---
2
+ name: rdc:collab
3
+ description: "Usage `rdc:collab --session <session_id>` — Bidirectional relay with a claude.ai session — read inbox, do work, write outbox, loop. Use when coordinating with a parallel claude.ai conversation."
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
+ > **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. Chitchat relay writes (`chitchat_reply`) and git push are skipped under `RDC_TEST=1`.
11
+
12
+
13
+ # /rdc:collab — Claude Code Collab Session Listener
14
+ > Invoked as: `/rdc:collab --session <session_id>`
15
+ > You are the build/execute half of a live collab session with claude.ai.
16
+ > Transport: chitchat MCP tools (`chitchat_poll` / `chitchat_reply`) + SSE stream
17
+ > Dave is watching this terminal and can interject at any time.
18
+
19
+ ---
20
+
21
+ ## When to Use
22
+ - Project lead wants to delegate a task to a claude.ai session
23
+ - You need bidirectional relay between this CLI agent and a claude.ai coworker
24
+ - An async work handoff is in progress via the chitchat relay
25
+
26
+ ## Arguments
27
+
28
+ - `rdc:collab --session <id>` — start or resume a collab relay with the given session ID
29
+
30
+ ## What This Is
31
+
32
+ claude.ai writes tasks into your inbox via `chitchat_send`. The clauth daemon
33
+ queues them and — if you are connected to the SSE stream — pushes the event
34
+ immediately (zero-latency). You read, act, commit, reply via `chitchat_reply`,
35
+ and loop. Dave can watch everything in this terminal and interject by typing —
36
+ treat anything Dave types as a high-priority override.
37
+
38
+ ---
39
+
40
+ ## Step 1 — Parse session ID
41
+
42
+ Extract `--session <uuid>` from args.
43
+
44
+ If no `--session`, call `chitchat_list` and show all active sessions.
45
+
46
+ ---
47
+
48
+ ## Step 2 — Initialize (chitchat-native)
49
+
50
+ Call `chitchat_list` to verify the session exists in the daemon.
51
+
52
+ If the session is not found:
53
+ ```
54
+ Session <id> not found in clauth daemon.
55
+ Start a session from claude.ai first:
56
+ chitchat_start(name: "<session-slug>")
57
+ Then pass the returned session_id here.
58
+ ```
59
+
60
+ Send the ready signal via MCP:
61
+ ```
62
+ chitchat_reply(session_id, "Claude Code connected. Ready to receive tasks.\ncwd: <rootPath>")
63
+ ```
64
+
65
+ Print to terminal:
66
+ ```
67
+ [rdc:collab] Session <id> active (chitchat transport).
68
+ SSE stream: http://127.0.0.1:52437/chitchat/<id>/stream
69
+ Waiting for messages from claude.ai... (Ctrl+C to end)
70
+ ```
71
+
72
+ Note: File relay at `.rdc/relay/sessions/` is kept for backwards compatibility
73
+ but is no longer the primary transport. Chitchat MCP + SSE is the default.
74
+
75
+ ---
76
+
77
+ ## Step 3 — Wait for message (SSE-first, poll-fallback)
78
+
79
+ ### Primary path — SSE (zero-latency)
80
+
81
+ Connect to the SSE stream and wait for the daemon to push a message:
82
+
83
+ ```bash
84
+ curl -s -N --max-time 30 http://127.0.0.1:52437/chitchat/<session_id>/stream
85
+ ```
86
+
87
+ The stream emits:
88
+ - `event: message` lines with `data: <JSON>` when `chitchat_send` fires from claude.ai
89
+ - `: keepalive` comment lines every 15s (ignore these)
90
+
91
+ **When a `data:` event arrives:** parse the JSON directly — it contains the
92
+ message. The SSE stream drains the inbox as it delivers; do NOT call
93
+ `chitchat_poll` after receiving via SSE. Proceed directly to Step 4 with the
94
+ parsed message body.
95
+
96
+ **If 30s elapses with no message event (only keepalives or silence):**
97
+ Print `[rdc:collab] Still listening...` and retry SSE immediately. After 10
98
+ consecutive 30s timeouts (5 min idle), print a longer heartbeat but keep
99
+ looping.
100
+
101
+ **If curl fails (daemon restart, connection refused, non-200):** fall back to
102
+ polling path below.
103
+
104
+ ### Fallback path — polling (2s interval)
105
+
106
+ Use this path only when SSE is unavailable:
107
+
108
+ ```
109
+ loop:
110
+ result = chitchat_poll(session_id)
111
+ if result.status == "ready":
112
+ → proceed to Step 4 with result.message
113
+ else (status == "idle"):
114
+ wait 2 seconds
115
+ continue loop
116
+ ```
117
+
118
+ **`chitchat_poll` return shapes:**
119
+ - `{ status: "idle" }` — inbox empty, keep polling
120
+ - `{ status: "ready", message: "..." }` — message waiting, consume it
121
+
122
+ ---
123
+
124
+ ## Step 4 — Process message
125
+
126
+ You now have the message body (from SSE `data:` JSON or `chitchat_poll` result).
127
+
128
+ Check if the message begins with `type: stop` (literal prefix) or contains a
129
+ `type` field equal to `"stop"` in the JSON.
130
+
131
+ **`type: stop`** → go to Step 7.
132
+
133
+ **Anything else (default: task/message):**
134
+
135
+ Print to terminal:
136
+ ```
137
+ [rdc:collab] Turn <N> from claude.ai:
138
+ ──────────────────────────────────────
139
+ <message body>
140
+ ──────────────────────────────────────
141
+ ```
142
+
143
+ ---
144
+
145
+ ## Step 5 — Do the work
146
+
147
+ Act on the message. Full Claude Code capabilities:
148
+ - File edits, git commits to `develop`
149
+ - Supabase RPC queries
150
+ - Type-checks: `npx tsc --noEmit` (never `pnpm build`)
151
+ - Run skills: `/rdc:plan`, `/rdc:fixit`, etc.
152
+ - Answer questions directly
153
+
154
+ Follow `.rdc/guides/agent-bootstrap.md` rules throughout.
155
+
156
+ For long tasks, stream progress updates mid-work:
157
+ ```
158
+ chitchat_reply(session_id, "Turn <N> in progress: <what you've done so far>...")
159
+ ```
160
+ This lets claude.ai see progress immediately rather than waiting for the full
161
+ response.
162
+
163
+ ---
164
+
165
+ ## Step 6 — Send response
166
+
167
+ When work is done, send the response via MCP:
168
+
169
+ ```
170
+ chitchat_reply(session_id, "<response body>")
171
+ ```
172
+
173
+ Response body format:
174
+ ```
175
+ Turn <N> complete.
176
+ Commits: <sha1, sha2 or none>
177
+
178
+ <what you did, what you found, any questions or decisions needed from claude.ai>
179
+ ```
180
+
181
+ Print to terminal:
182
+ ```
183
+ [rdc:collab] Turn <N> done. Response sent via chitchat_reply.
184
+ Waiting for next message...
185
+ ```
186
+
187
+ Return to Step 3.
188
+
189
+ ---
190
+
191
+ ## Step 7 — End session
192
+
193
+ Received `type: stop` message, or Dave pressed Ctrl+C.
194
+
195
+ Send final summary via MCP:
196
+ ```
197
+ chitchat_reply(session_id, "Session complete.\nTurns: <N>\nCommits: <list or none>\nOpen items: <anything unresolved>")
198
+ ```
199
+
200
+ Then call:
201
+ ```
202
+ chitchat_stop(session_id)
203
+ ```
204
+
205
+ Print:
206
+ ```
207
+ [rdc:collab] Session ended.
208
+ ```
209
+
210
+ ---
211
+
212
+ ## Dave Interjections
213
+
214
+ If Dave types in this terminal during a turn:
215
+ - Treat it as an override injected into the current task
216
+ - Acknowledge it in your `chitchat_reply` response
217
+ - If it changes direction mid-task, note what you stopped and why