@lifeaitools/rdc-skills 0.8.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.json +15 -0
- package/.claude-plugin/marketplace.json +21 -0
- package/.claude-plugin/plugin.json +11 -0
- package/.github/workflows/publish.yml +25 -0
- package/.github/workflows/self-test.yml +53 -0
- package/CHANGELOG.md +246 -0
- package/LICENSE +21 -0
- package/MANIFEST.md +190 -0
- package/README.md +188 -0
- package/README.sandbox.md +3 -0
- package/assets/watcher/viewer.html +164 -0
- package/commands/build.md +183 -0
- package/commands/collab.md +180 -0
- package/commands/deploy.md +138 -0
- package/commands/fixit.md +112 -0
- package/commands/handoff.md +173 -0
- package/commands/help.md +88 -0
- package/commands/overnight.md +220 -0
- package/commands/plan.md +158 -0
- package/commands/preplan.md +131 -0
- package/commands/prototype.md +145 -0
- package/commands/release.md +159 -0
- package/commands/report.md +99 -0
- package/commands/review.md +120 -0
- package/commands/self-test.md +107 -0
- package/commands/status.md +86 -0
- package/commands/watch.md +92 -0
- package/commands/workitems.md +132 -0
- package/guides/.gitkeep +0 -0
- package/guides/agent-bootstrap.md +191 -0
- package/guides/agents/backend.md +104 -0
- package/guides/agents/content.md +94 -0
- package/guides/agents/cs2.md +56 -0
- package/guides/agents/data.md +87 -0
- package/guides/agents/design.md +77 -0
- package/guides/agents/frontend.md +92 -0
- package/guides/agents/infrastructure.md +81 -0
- package/guides/agents/setup.md +279 -0
- package/guides/agents/verify.md +132 -0
- package/guides/agents/viz.md +106 -0
- package/guides/backend.md +146 -0
- package/guides/content.md +147 -0
- package/guides/cs2.md +190 -0
- package/guides/data.md +123 -0
- package/guides/design.md +116 -0
- package/guides/frontend.md +151 -0
- package/guides/infrastructure.md +179 -0
- package/guides/output-contract.md +98 -0
- package/hooks/no-stop-open-epics.js +125 -0
- package/package.json +31 -0
- package/rules/work-items-rpc.md +399 -0
- package/scripts/install-rdc-skills.js +559 -0
- package/scripts/install.ps1 +165 -0
- package/scripts/install.sh +132 -0
- package/scripts/lib/assertions.mjs +264 -0
- package/scripts/lib/manifest-schema.mjs +607 -0
- package/scripts/lib/runner.mjs +429 -0
- package/scripts/lib/sandbox.mjs +435 -0
- package/scripts/self-test.mjs +1108 -0
- package/scripts/uninstall.ps1 +77 -0
- package/scripts/uninstall.sh +69 -0
- package/scripts/update.ps1 +43 -0
- package/scripts/update.sh +43 -0
- package/scripts/watch-init.mjs +100 -0
- package/skills/.gitkeep +0 -0
- package/skills/build/SKILL.md +238 -0
- package/skills/collab/SKILL.md +218 -0
- package/skills/deploy/SKILL.md +144 -0
- package/skills/fixit/SKILL.md +112 -0
- package/skills/handoff/SKILL.md +175 -0
- package/skills/help/SKILL.md +101 -0
- package/skills/overnight/SKILL.md +220 -0
- package/skills/plan/SKILL.md +96 -0
- package/skills/preplan/SKILL.md +87 -0
- package/skills/prototype/SKILL.md +151 -0
- package/skills/release/SKILL.md +221 -0
- package/skills/report/SKILL.md +101 -0
- package/skills/review/SKILL.md +120 -0
- package/skills/self-test/SKILL.md +127 -0
- package/skills/status/SKILL.md +86 -0
- package/skills/tests/README.md +29 -0
- package/skills/tests/rdc-build.test.json +22 -0
- package/skills/tests/rdc-deploy.test.json +15 -0
- package/skills/tests/rdc-fixit.test.json +21 -0
- package/skills/tests/rdc-handoff.test.json +14 -0
- package/skills/tests/rdc-overnight.test.json +21 -0
- package/skills/tests/rdc-plan.test.json +14 -0
- package/skills/tests/rdc-preplan.test.json +15 -0
- package/skills/tests/rdc-prototype.test.json +14 -0
- package/skills/tests/rdc-release.test.json +15 -0
- package/skills/tests/rdc-report.test.json +14 -0
- package/skills/tests/rdc-review.test.json +14 -0
- package/skills/tests/rdc-status.test.json +16 -0
- package/skills/tests/rdc-workitems.test.json +15 -0
- package/skills/watch/SKILL.md +92 -0
- package/skills/workitems/SKILL.md +147 -0
- package/tests/validate-skills.js +183 -0
|
@@ -0,0 +1,218 @@
|
|
|
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
|
+
> **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`.
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# /rdc:collab — Claude Code Collab Session Listener
|
|
15
|
+
> Invoked as: `/rdc:collab --session <session_id>`
|
|
16
|
+
> You are the build/execute half of a live collab session with claude.ai.
|
|
17
|
+
> Transport: chitchat MCP tools (`chitchat_poll` / `chitchat_reply`) + SSE stream
|
|
18
|
+
> Dave is watching this terminal and can interject at any time.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## When to Use
|
|
23
|
+
- Project lead wants to delegate a task to a claude.ai session
|
|
24
|
+
- You need bidirectional relay between this CLI agent and a claude.ai coworker
|
|
25
|
+
- An async work handoff is in progress via the chitchat relay
|
|
26
|
+
|
|
27
|
+
## Arguments
|
|
28
|
+
|
|
29
|
+
- `rdc:collab --session <id>` — start or resume a collab relay with the given session ID
|
|
30
|
+
|
|
31
|
+
## What This Is
|
|
32
|
+
|
|
33
|
+
claude.ai writes tasks into your inbox via `chitchat_send`. The clauth daemon
|
|
34
|
+
queues them and — if you are connected to the SSE stream — pushes the event
|
|
35
|
+
immediately (zero-latency). You read, act, commit, reply via `chitchat_reply`,
|
|
36
|
+
and loop. Dave can watch everything in this terminal and interject by typing —
|
|
37
|
+
treat anything Dave types as a high-priority override.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Step 1 — Parse session ID
|
|
42
|
+
|
|
43
|
+
Extract `--session <uuid>` from args.
|
|
44
|
+
|
|
45
|
+
If no `--session`, call `chitchat_list` and show all active sessions.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Step 2 — Initialize (chitchat-native)
|
|
50
|
+
|
|
51
|
+
Call `chitchat_list` to verify the session exists in the daemon.
|
|
52
|
+
|
|
53
|
+
If the session is not found:
|
|
54
|
+
```
|
|
55
|
+
Session <id> not found in clauth daemon.
|
|
56
|
+
Start a session from claude.ai first:
|
|
57
|
+
chitchat_start(name: "<session-slug>")
|
|
58
|
+
Then pass the returned session_id here.
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Send the ready signal via MCP:
|
|
62
|
+
```
|
|
63
|
+
chitchat_reply(session_id, "Claude Code connected. Ready to receive tasks.\ncwd: <rootPath>")
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Print to terminal:
|
|
67
|
+
```
|
|
68
|
+
[rdc:collab] Session <id> active (chitchat transport).
|
|
69
|
+
SSE stream: http://127.0.0.1:52437/chitchat/<id>/stream
|
|
70
|
+
Waiting for messages from claude.ai... (Ctrl+C to end)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Note: File relay at `.rdc/relay/sessions/` is kept for backwards compatibility
|
|
74
|
+
but is no longer the primary transport. Chitchat MCP + SSE is the default.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Step 3 — Wait for message (SSE-first, poll-fallback)
|
|
79
|
+
|
|
80
|
+
### Primary path — SSE (zero-latency)
|
|
81
|
+
|
|
82
|
+
Connect to the SSE stream and wait for the daemon to push a message:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
curl -s -N --max-time 30 http://127.0.0.1:52437/chitchat/<session_id>/stream
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
The stream emits:
|
|
89
|
+
- `event: message` lines with `data: <JSON>` when `chitchat_send` fires from claude.ai
|
|
90
|
+
- `: keepalive` comment lines every 15s (ignore these)
|
|
91
|
+
|
|
92
|
+
**When a `data:` event arrives:** parse the JSON directly — it contains the
|
|
93
|
+
message. The SSE stream drains the inbox as it delivers; do NOT call
|
|
94
|
+
`chitchat_poll` after receiving via SSE. Proceed directly to Step 4 with the
|
|
95
|
+
parsed message body.
|
|
96
|
+
|
|
97
|
+
**If 30s elapses with no message event (only keepalives or silence):**
|
|
98
|
+
Print `[rdc:collab] Still listening...` and retry SSE immediately. After 10
|
|
99
|
+
consecutive 30s timeouts (5 min idle), print a longer heartbeat but keep
|
|
100
|
+
looping.
|
|
101
|
+
|
|
102
|
+
**If curl fails (daemon restart, connection refused, non-200):** fall back to
|
|
103
|
+
polling path below.
|
|
104
|
+
|
|
105
|
+
### Fallback path — polling (2s interval)
|
|
106
|
+
|
|
107
|
+
Use this path only when SSE is unavailable:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
loop:
|
|
111
|
+
result = chitchat_poll(session_id)
|
|
112
|
+
if result.status == "ready":
|
|
113
|
+
→ proceed to Step 4 with result.message
|
|
114
|
+
else (status == "idle"):
|
|
115
|
+
wait 2 seconds
|
|
116
|
+
continue loop
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**`chitchat_poll` return shapes:**
|
|
120
|
+
- `{ status: "idle" }` — inbox empty, keep polling
|
|
121
|
+
- `{ status: "ready", message: "..." }` — message waiting, consume it
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Step 4 — Process message
|
|
126
|
+
|
|
127
|
+
You now have the message body (from SSE `data:` JSON or `chitchat_poll` result).
|
|
128
|
+
|
|
129
|
+
Check if the message begins with `type: stop` (literal prefix) or contains a
|
|
130
|
+
`type` field equal to `"stop"` in the JSON.
|
|
131
|
+
|
|
132
|
+
**`type: stop`** → go to Step 7.
|
|
133
|
+
|
|
134
|
+
**Anything else (default: task/message):**
|
|
135
|
+
|
|
136
|
+
Print to terminal:
|
|
137
|
+
```
|
|
138
|
+
[rdc:collab] Turn <N> from claude.ai:
|
|
139
|
+
──────────────────────────────────────
|
|
140
|
+
<message body>
|
|
141
|
+
──────────────────────────────────────
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Step 5 — Do the work
|
|
147
|
+
|
|
148
|
+
Act on the message. Full Claude Code capabilities:
|
|
149
|
+
- File edits, git commits to `develop`
|
|
150
|
+
- Supabase RPC queries
|
|
151
|
+
- Type-checks: `npx tsc --noEmit` (never `pnpm build`)
|
|
152
|
+
- Run skills: `/rdc:plan`, `/rdc:fixit`, etc.
|
|
153
|
+
- Answer questions directly
|
|
154
|
+
|
|
155
|
+
Follow `.rdc/guides/agent-bootstrap.md` rules throughout.
|
|
156
|
+
|
|
157
|
+
For long tasks, stream progress updates mid-work:
|
|
158
|
+
```
|
|
159
|
+
chitchat_reply(session_id, "Turn <N> in progress: <what you've done so far>...")
|
|
160
|
+
```
|
|
161
|
+
This lets claude.ai see progress immediately rather than waiting for the full
|
|
162
|
+
response.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Step 6 — Send response
|
|
167
|
+
|
|
168
|
+
When work is done, send the response via MCP:
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
chitchat_reply(session_id, "<response body>")
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Response body format:
|
|
175
|
+
```
|
|
176
|
+
Turn <N> complete.
|
|
177
|
+
Commits: <sha1, sha2 or none>
|
|
178
|
+
|
|
179
|
+
<what you did, what you found, any questions or decisions needed from claude.ai>
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Print to terminal:
|
|
183
|
+
```
|
|
184
|
+
[rdc:collab] Turn <N> done. Response sent via chitchat_reply.
|
|
185
|
+
Waiting for next message...
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Return to Step 3.
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Step 7 — End session
|
|
193
|
+
|
|
194
|
+
Received `type: stop` message, or Dave pressed Ctrl+C.
|
|
195
|
+
|
|
196
|
+
Send final summary via MCP:
|
|
197
|
+
```
|
|
198
|
+
chitchat_reply(session_id, "Session complete.\nTurns: <N>\nCommits: <list or none>\nOpen items: <anything unresolved>")
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Then call:
|
|
202
|
+
```
|
|
203
|
+
chitchat_stop(session_id)
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Print:
|
|
207
|
+
```
|
|
208
|
+
[rdc:collab] Session ended.
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Dave Interjections
|
|
214
|
+
|
|
215
|
+
If Dave types in this terminal during a turn:
|
|
216
|
+
- Treat it as an override injected into the current task
|
|
217
|
+
- Acknowledge it in your `chitchat_reply` response
|
|
218
|
+
- If it changes direction mid-task, note what you stopped and why
|
|
@@ -0,0 +1,144 @@
|
|
|
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
|
+
## When to Use
|
|
22
|
+
- Project lead says "deploy", "ship it", "push to production", "update the server"
|
|
23
|
+
- A new app needs to be registered and deployed for the first time (`rdc:deploy new`)
|
|
24
|
+
- A deployed app is behaving unexpectedly and needs diagnosis (`rdc:deploy diagnose`)
|
|
25
|
+
- Running a compliance/health audit of all deployed apps (`rdc:deploy audit`)
|
|
26
|
+
|
|
27
|
+
## Arguments
|
|
28
|
+
|
|
29
|
+
- `rdc:deploy <slug>` — deploy existing app (latest commit on its watched branch)
|
|
30
|
+
- `rdc:deploy <slug> <build-id>` — deploy specific commit/tag
|
|
31
|
+
- `rdc:deploy new <slug>` — create a new Coolify app from registry
|
|
32
|
+
- `rdc:deploy diagnose <slug>` — debug why an app is broken
|
|
33
|
+
- `rdc:deploy audit` — fleet-wide scan for missed failures
|
|
34
|
+
- `rdc:deploy audit --fix` — fleet scan + auto-remediate safe issues
|
|
35
|
+
- `rdc:deploy` (no args) — print mode menu, ask which
|
|
36
|
+
|
|
37
|
+
## Modes
|
|
38
|
+
|
|
39
|
+
### Mode 1 — deploy <slug> [build-id]
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
rdc:deploy: <slug> → <domain>
|
|
43
|
+
[ ] Registry lookup (slug, uuid, branch, type, env_vars_needed)
|
|
44
|
+
[ ] Git state verified (branch matches Coolify, commit pushed)
|
|
45
|
+
[ ] Build-id resolved (default: HEAD of watched branch)
|
|
46
|
+
[ ] Env vars present in Coolify (compare to registry)
|
|
47
|
+
[ ] Type-specific preflight (see docs/runbooks/coolify-deploy-checklist.md)
|
|
48
|
+
[ ] Deploy triggered
|
|
49
|
+
[ ] Deployment reached "finished" state
|
|
50
|
+
[ ] Gate: HTTP 200
|
|
51
|
+
[ ] Gate: TLS valid (no SSL cipher mismatch)
|
|
52
|
+
[ ] Gate: cache headers correct on HTML
|
|
53
|
+
[ ] Gate: container running on declared port
|
|
54
|
+
[ ] Cloudflare cache purged (if proxied)
|
|
55
|
+
[ ] deployment_registry updated (last_deploy_at, status)
|
|
56
|
+
✅ rdc:deploy: <slug> deployed in Nm Ns
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Mode 2 — new <slug>
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
rdc:deploy new: <slug>
|
|
63
|
+
[ ] Registry entry loaded (or interactive create)
|
|
64
|
+
[ ] DNS path chosen (A: *.dev.place.fund B: apex C: other zone)
|
|
65
|
+
[ ] DNS record verified or wildcard confirmed
|
|
66
|
+
[ ] Cloudflare proxy setting correct for DNS path
|
|
67
|
+
[ ] server_uuid, project_uuid, environment_uuid, github_app_uuid resolved
|
|
68
|
+
[ ] Build type chosen (Next.js / Vite / static / standalone)
|
|
69
|
+
[ ] Type-specific fields filled (ports, build cmd, install cmd, start cmd)
|
|
70
|
+
[ ] Application created via /applications/private-github-app
|
|
71
|
+
[ ] watch_paths set and verified
|
|
72
|
+
[ ] Env vars set in Coolify
|
|
73
|
+
[ ] First deploy triggered
|
|
74
|
+
[ ] Gate passed (5 checks)
|
|
75
|
+
[ ] deployment_registry row inserted
|
|
76
|
+
✅ rdc:deploy new: <slug> live at <domain>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Mode 3 — diagnose <slug>
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
rdc:deploy diagnose: <slug>
|
|
83
|
+
[ ] App located (uuid, domain, last deploy)
|
|
84
|
+
[ ] Container state (running / restarting / stopped)
|
|
85
|
+
[ ] Last 100 log lines scanned for known error patterns
|
|
86
|
+
[ ] Port mismatch check (declared vs actual)
|
|
87
|
+
[ ] Env var drift check (registry vs Coolify)
|
|
88
|
+
[ ] watch_paths sanity check
|
|
89
|
+
[ ] HTTP / TLS reachability
|
|
90
|
+
[ ] Cloudflare proxy state check
|
|
91
|
+
[ ] Disk space on server
|
|
92
|
+
[ ] Branch mismatch check (Coolify git_branch vs expected)
|
|
93
|
+
⚠️ rdc:deploy diagnose: <root cause in one sentence> — fix: <one command>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Mode 4 — audit
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
rdc:deploy audit: fleet scan
|
|
100
|
+
[ ] Inventory join: Coolify apps ⋈ deployment_registry
|
|
101
|
+
[ ] Orphans (in one but not the other)
|
|
102
|
+
[ ] Monorepo apps missing watch_paths
|
|
103
|
+
[ ] Stale deploys (>14 days since last success)
|
|
104
|
+
[ ] Registry rows with status='broken'
|
|
105
|
+
[ ] Failed deployments in last 7 days
|
|
106
|
+
[ ] HTTP gate sweep (non-200 per domain)
|
|
107
|
+
[ ] TLS cert expiry <30 days
|
|
108
|
+
[ ] Port mismatches (ports_exposes vs actual container port)
|
|
109
|
+
[ ] Env var drift (registry.env_vars_needed vs Coolify env)
|
|
110
|
+
[ ] Branch mismatches (Coolify git_branch ≠ expected)
|
|
111
|
+
[ ] Disk space on 64.237.54.189
|
|
112
|
+
[ ] CF proxy misconfigs on *.dev.place.fund
|
|
113
|
+
[ ] Duplicate apps (same repo, multiple UUIDs)
|
|
114
|
+
|
|
115
|
+
Findings:
|
|
116
|
+
| Severity | App | Issue | Fix |
|
|
117
|
+
|----------|-----|-------|-----|
|
|
118
|
+
| HIGH | ... | ... | ... |
|
|
119
|
+
⚠️ rdc:deploy audit: N HIGH · M MED · K LOW — run `rdc:deploy audit --fix` to auto-remediate safe issues
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Severity rules:
|
|
123
|
+
- **HIGH** — user-facing down (HTTP non-200, TLS invalid, container not running)
|
|
124
|
+
- **MED** — degraded or drifting (watch_paths missing, env var drift, stale deploy, branch mismatch)
|
|
125
|
+
- **LOW** — cleanup (orphans, duplicates, registry status stale)
|
|
126
|
+
|
|
127
|
+
`--fix` auto-remediates only: missing watch_paths, registry row updates, CF cache purges. Never touches env vars, DNS, or container config without explicit confirmation.
|
|
128
|
+
|
|
129
|
+
## References
|
|
130
|
+
|
|
131
|
+
- Type-specific checklists + DNS tree + gate commands: `docs/runbooks/coolify-deploy-checklist.md`
|
|
132
|
+
- Rules / registry RPCs / hard limits: `.claude/rules/coolify-deployment.md`
|
|
133
|
+
- MCP server: `@masonator/coolify-mcp` (38 tools)
|
|
134
|
+
- Infrastructure constants:
|
|
135
|
+
```
|
|
136
|
+
Server UUID: ih386anenvvvn6fy1umtyow0
|
|
137
|
+
Server IP: 64.237.54.189
|
|
138
|
+
Dashboard: https://deploy.regendevcorp.com
|
|
139
|
+
GitHub App UUID: xdmcy60putp5h9j7k4kwg9c3
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Supersedes
|
|
143
|
+
|
|
144
|
+
`coolify-deploy` standalone skill (kept for back-compat; new work uses `rdc:deploy`).
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rdc:fixit
|
|
3
|
+
description: >-
|
|
4
|
+
Usage `rdc:fixit <description>` — sanctioned bypass for quick fixes under 5 files / 30 min. Creates minimal work item, makes fix, commits, closes. The ONLY alternative to rdc:build. For typos, config patches, hotfixes, dep bumps.
|
|
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
|
+
> 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`).
|
|
12
|
+
|
|
13
|
+
> **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.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# rdc:fixit — Sanctioned Quick Fix
|
|
17
|
+
|
|
18
|
+
## When to Use
|
|
19
|
+
- Typo or single-line text correction
|
|
20
|
+
- Config value change (env vars, constants, feature flags)
|
|
21
|
+
- Emergency hotfix that cannot wait for a full build cycle
|
|
22
|
+
- Dependency version bump
|
|
23
|
+
- CSS/styling tweak on a single component
|
|
24
|
+
- Broken import or export fix
|
|
25
|
+
- Single-file logic correction
|
|
26
|
+
|
|
27
|
+
## When NOT to Use — escalate to rdc:build instead
|
|
28
|
+
- New feature of any size
|
|
29
|
+
- Refactor touching >5 files
|
|
30
|
+
- Anything requiring architecture decisions
|
|
31
|
+
- Work that will take longer than 30 minutes
|
|
32
|
+
- Schema changes or migrations
|
|
33
|
+
|
|
34
|
+
## Arguments
|
|
35
|
+
- `rdc:fixit <description>` — fix the described issue
|
|
36
|
+
|
|
37
|
+
## Procedure
|
|
38
|
+
|
|
39
|
+
### 1. Scope check (mandatory — do this before touching any file)
|
|
40
|
+
|
|
41
|
+
Will this fix touch more than **5 files** or take more than **30 minutes**?
|
|
42
|
+
|
|
43
|
+
- **YES** → Stop. Use `/rdc:build` instead. Explain to the user why.
|
|
44
|
+
- **NO** → Continue.
|
|
45
|
+
|
|
46
|
+
### 2. Create a minimal work item (before touching any code)
|
|
47
|
+
|
|
48
|
+
```sql
|
|
49
|
+
SELECT insert_work_item(
|
|
50
|
+
p_title := 'fixit: <description>',
|
|
51
|
+
p_item_type := 'bug',
|
|
52
|
+
p_priority := 'urgent',
|
|
53
|
+
p_status := 'in_progress',
|
|
54
|
+
p_source := 'fixit'
|
|
55
|
+
);
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Note the returned `id`.
|
|
59
|
+
|
|
60
|
+
### 3. Write the fixit session marker
|
|
61
|
+
|
|
62
|
+
Write to `{USER_HOME}/.claude/fixit.marker`:
|
|
63
|
+
```
|
|
64
|
+
<work_item_id>
|
|
65
|
+
<ISO timestamp>
|
|
66
|
+
<description>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
This signals the Stop hook that fixit is handling its own documentation.
|
|
70
|
+
|
|
71
|
+
### 4. Make the fix
|
|
72
|
+
|
|
73
|
+
Do the minimal work. Scope creep rule: if you discover the fix requires more than originally scoped, **stop immediately**:
|
|
74
|
+
1. Close the work item: `update_work_item_status('<id>', 'blocked', '["Escalated — scope exceeded fixit threshold"]')`
|
|
75
|
+
2. Delete the marker file
|
|
76
|
+
3. Tell the user to use `/rdc:build` instead
|
|
77
|
+
|
|
78
|
+
### 5. Commit
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
git add <specific files only — never git add -A for a fixit>
|
|
82
|
+
git commit -m "fix(<scope>): <description>"
|
|
83
|
+
if [ "$RDC_TEST" != "1" ]; then
|
|
84
|
+
git push origin {development-branch}
|
|
85
|
+
else
|
|
86
|
+
echo "[RDC_TEST] skipping git push origin {development-branch}"
|
|
87
|
+
fi
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 6. Close and clean up
|
|
91
|
+
|
|
92
|
+
```sql
|
|
93
|
+
SELECT update_work_item_status('<id>'::uuid, 'done',
|
|
94
|
+
'["Fixed via rdc:fixit"]'::jsonb
|
|
95
|
+
);
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
rm {USER_HOME}/.claude/fixit.marker
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### 7. Confirm to user
|
|
103
|
+
|
|
104
|
+
Report: what was fixed, file(s) changed, commit hash. One sentence.
|
|
105
|
+
|
|
106
|
+
## Rules
|
|
107
|
+
- Work item created BEFORE any code change — never after
|
|
108
|
+
- `git add` specific files only — never `-A` or `.` for a fixit
|
|
109
|
+
- Branch: development branch always
|
|
110
|
+
- Never run `pnpm build` — not needed for a fixit
|
|
111
|
+
- If scope expands mid-fix: stop, escalate to rdc:build, don't finish under fixit
|
|
112
|
+
- Marker file must be cleaned up whether fix succeeds or escalates
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rdc:handoff
|
|
3
|
+
description: >-
|
|
4
|
+
Usage `rdc:handoff <topic>` — structured handoff from planning session to CLI agents. Produces plan doc in .rdc/plans/, work items in DB, prototype registry entry if applicable. Use when plan/prototype is finalized and ready for implementation.
|
|
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
|
+
> 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`).
|
|
12
|
+
|
|
13
|
+
> **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. Supabase work item writes, prototype registry inserts, design context inserts, and git push are skipped under `RDC_TEST=1`.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# rdc:handoff — Planning → CLI Bridge
|
|
17
|
+
|
|
18
|
+
## When to Use
|
|
19
|
+
|
|
20
|
+
- A prototype has been built and needs production implementation
|
|
21
|
+
- A design decision has been made and needs to be executed
|
|
22
|
+
- Project lead says "hand this off", "give this to the CLI", "write it up"
|
|
23
|
+
- A plan exists in the conversation but hasn't been saved to disk or database yet
|
|
24
|
+
|
|
25
|
+
## What This Skill Produces
|
|
26
|
+
|
|
27
|
+
1. **Plan doc** → `.rdc/plans/<topic-slug>.md` (fallback: `.rdc/plans/<topic-slug>.md`)
|
|
28
|
+
2. **Database epic + child tasks** (with agent types and guide file refs)
|
|
29
|
+
3. **Prototype registry entry** (if a prototype was built)
|
|
30
|
+
4. **Design context entries** (for decisions made in the session)
|
|
31
|
+
|
|
32
|
+
## Procedure
|
|
33
|
+
|
|
34
|
+
### Step 1 — Extract the Plan
|
|
35
|
+
|
|
36
|
+
Identify from the conversation:
|
|
37
|
+
- What is the goal?
|
|
38
|
+
- What prototypes or designs were built? Where are they?
|
|
39
|
+
- What decisions were made? What was rejected and why?
|
|
40
|
+
- What is the sequencing (what depends on what)?
|
|
41
|
+
- Which agent types are needed?
|
|
42
|
+
|
|
43
|
+
### Step 2 — Write the Plan Doc
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
.rdc/plans/<topic-slug>.md
|
|
47
|
+
```
|
|
48
|
+
(fallback: `.rdc/plans/<topic-slug>.md` if `.rdc/` does not exist)
|
|
49
|
+
|
|
50
|
+
Template:
|
|
51
|
+
```markdown
|
|
52
|
+
# Plan: <Topic>
|
|
53
|
+
> Route: <app route or package>
|
|
54
|
+
> Status: Ready for CLI build
|
|
55
|
+
> Created: <date>
|
|
56
|
+
> Source: planning session
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## What Already Exists (Do NOT Re-implement)
|
|
61
|
+
|
|
62
|
+
[List any existing components, database tables, or files
|
|
63
|
+
that agents must use rather than recreate]
|
|
64
|
+
|
|
65
|
+
## What Was Built in Planning (Prototype)
|
|
66
|
+
|
|
67
|
+
[Describe the prototype — file location, key design decisions,
|
|
68
|
+
what to preserve vs what to adapt]
|
|
69
|
+
|
|
70
|
+
## Work Packages
|
|
71
|
+
|
|
72
|
+
### Package 1 — <Name>
|
|
73
|
+
- Agent type: frontend | backend | data | design | infra | content | cs2 | viz
|
|
74
|
+
- Guide: .rdc/guides/<type>.md (fallback: .rdc/guides/<type>.md)
|
|
75
|
+
- Files to create/modify: [list]
|
|
76
|
+
- Deliverables: [specific outputs]
|
|
77
|
+
- Depends on: [other packages if sequential]
|
|
78
|
+
|
|
79
|
+
### Package 2 — <Name>
|
|
80
|
+
[...]
|
|
81
|
+
|
|
82
|
+
## Sequencing
|
|
83
|
+
|
|
84
|
+
Wave 1 (parallel): Package 1, Package 2
|
|
85
|
+
Wave 2 (after Wave 1): Package 3
|
|
86
|
+
|
|
87
|
+
## Definition of Done
|
|
88
|
+
|
|
89
|
+
- [ ] [specific acceptance criterion]
|
|
90
|
+
- [ ] [build verification: zero new TS errors]
|
|
91
|
+
- [ ] [functional test]
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Step 3 — Create Database Epic + Tasks
|
|
95
|
+
|
|
96
|
+
```sql
|
|
97
|
+
-- Check for existing epics first
|
|
98
|
+
SELECT get_open_epics();
|
|
99
|
+
|
|
100
|
+
-- Create epic
|
|
101
|
+
SELECT insert_work_item(
|
|
102
|
+
p_title := 'EPIC: <Topic>',
|
|
103
|
+
p_description := 'See .rdc/plans/<topic-slug>.md for full spec.',
|
|
104
|
+
p_item_type := 'epic',
|
|
105
|
+
p_priority := 'high',
|
|
106
|
+
p_labels := ARRAY['<system-label>'],
|
|
107
|
+
p_source := 'planning'
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
-- Create tasks (one per work package)
|
|
111
|
+
SELECT insert_work_item(
|
|
112
|
+
p_title := '<Package Name>',
|
|
113
|
+
p_description := 'What: <deliverable>
|
|
114
|
+
Where: <files>
|
|
115
|
+
Agent type: <type>
|
|
116
|
+
Guide: .rdc/guides/<type>.md (fallback: .rdc/guides/<type>.md)
|
|
117
|
+
Design doc: .rdc/plans/<topic-slug>.md (fallback: .rdc/plans/<topic-slug>.md)
|
|
118
|
+
Depends on: <other task if applicable>
|
|
119
|
+
Est: <hours>',
|
|
120
|
+
p_parent_id := '<epic-uuid>'::uuid,
|
|
121
|
+
p_item_type := 'task',
|
|
122
|
+
p_priority := 'high',
|
|
123
|
+
p_labels := ARRAY['<label>'],
|
|
124
|
+
p_estimated_hours := 2,
|
|
125
|
+
p_source := 'planning'
|
|
126
|
+
);
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Step 4 — Register Prototype (if one was built)
|
|
130
|
+
|
|
131
|
+
```sql
|
|
132
|
+
INSERT INTO prototype_registry (name, component, source_path, notes, created_by)
|
|
133
|
+
VALUES (
|
|
134
|
+
'<Component Name> v1',
|
|
135
|
+
'<ComponentName>',
|
|
136
|
+
'docs/source/<filename>.jsx',
|
|
137
|
+
'<Key design decisions, data shapes, what to preserve>',
|
|
138
|
+
'planning'
|
|
139
|
+
)
|
|
140
|
+
ON CONFLICT DO NOTHING;
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Step 5 — Record Design Decisions
|
|
144
|
+
|
|
145
|
+
```sql
|
|
146
|
+
INSERT INTO design_context (topic, context_type, summary, source, created_by)
|
|
147
|
+
VALUES
|
|
148
|
+
('<Topic>', 'decision', '<What was decided and why>', 'planning session', 'planning'),
|
|
149
|
+
('<Topic>', 'rejected', '<What was considered but not chosen, and why>', 'planning session', 'planning');
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## System Labels Reference
|
|
153
|
+
|
|
154
|
+
| Label | When |
|
|
155
|
+
|-------|------|
|
|
156
|
+
| `project-a` | Your-app-specific label |
|
|
157
|
+
| `marketing` | Marketing / outreach work |
|
|
158
|
+
| `ui` | Component library work |
|
|
159
|
+
| `data` | Schema, migrations |
|
|
160
|
+
| `infrastructure` | CI/CD, deployment |
|
|
161
|
+
| `cs2` | Core paradigm packages |
|
|
162
|
+
| `website` | Public-facing sites |
|
|
163
|
+
| `media` | Media/asset work |
|
|
164
|
+
|
|
165
|
+
## Output
|
|
166
|
+
|
|
167
|
+
When complete, tell the project lead:
|
|
168
|
+
```
|
|
169
|
+
Handoff complete:
|
|
170
|
+
- Plan: .rdc/plans/<topic-slug>.md
|
|
171
|
+
- Epic: <epic-id> ("<title>")
|
|
172
|
+
- Tasks: <N> tasks created, wave structure: [Wave 1: X, Y | Wave 2: Z]
|
|
173
|
+
- Prototype: registered at docs/source/<file> (if applicable)
|
|
174
|
+
- CLI agents will pick this up on next run.
|
|
175
|
+
```
|