@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.
- package/.claude-plugin/plugin.json +2 -1
- package/.github/workflows/self-test.yml +34 -34
- package/CHANGELOG.md +10 -0
- package/README.md +1 -1
- package/commands/build.md +181 -181
- package/commands/collab.md +180 -180
- package/commands/deploy.md +152 -152
- package/commands/fixit.md +105 -105
- package/commands/handoff.md +173 -173
- package/commands/overnight.md +220 -220
- package/commands/plan.md +158 -158
- package/commands/preplan.md +131 -131
- package/commands/prototype.md +145 -145
- package/commands/report.md +99 -99
- package/commands/review.md +120 -120
- package/commands/status.md +86 -86
- package/commands/workitems.md +127 -127
- package/guides/agent-bootstrap.md +206 -202
- package/guides/agents/backend.md +102 -102
- package/guides/agents/content.md +94 -94
- package/guides/agents/cs2.md +56 -56
- package/guides/agents/data.md +86 -86
- package/guides/agents/design.md +77 -77
- package/guides/agents/frontend.md +91 -91
- package/guides/agents/infrastructure.md +81 -81
- package/guides/agents/setup.md +280 -278
- package/guides/agents/verify.md +119 -119
- package/guides/agents/viz.md +106 -106
- package/guides/engineering-behavior.md +43 -0
- package/hooks/rdc-invocation-marker.js +143 -0
- package/hooks/rdc-output-contract-gate.js +85 -0
- package/package.json +2 -2
- package/scripts/install-rdc-skills.js +29 -0
- package/scripts/install.ps1 +15 -0
- package/scripts/self-test.mjs +1414 -1323
- package/skills/build/SKILL.md +359 -355
- package/skills/collab/SKILL.md +217 -217
- package/skills/deploy/SKILL.md +198 -198
- package/skills/design/SKILL.md +211 -211
- package/skills/fixit/SKILL.md +136 -132
- package/skills/fs-mcp/SKILL.md +131 -0
- package/skills/handoff/SKILL.md +200 -200
- package/skills/help/SKILL.md +104 -104
- package/skills/overnight/SKILL.md +224 -224
- package/skills/plan/SKILL.md +252 -252
- package/skills/preplan/SKILL.md +86 -86
- package/skills/prototype/SKILL.md +150 -150
- package/skills/release/SKILL.md +342 -342
- package/skills/report/SKILL.md +100 -100
- package/skills/review/SKILL.md +122 -121
- package/skills/self-test/SKILL.md +126 -126
- package/skills/status/SKILL.md +99 -99
- package/skills/watch/SKILL.md +91 -91
- package/skills/workitems/SKILL.md +151 -151
package/skills/deploy/SKILL.md
CHANGED
|
@@ -1,198 +1,198 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: rdc:deploy
|
|
3
|
-
description: "Usage `rdc:deploy <slug> [new|diagnose|audit] [--fix]` — Deploy an app to Coolify (production) or PM2 (staging), add a new Coolify app, diagnose a failed deploy, or audit watch paths. Handles DNS, health checks, and post-deploy verification."
|
|
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
|
-
|
|
11
|
-
# rdc:deploy — Coolify Operations
|
|
12
|
-
|
|
13
|
-
**READ FIRST:** `guides/output-contract.md`. Checklist-only output. No narration.
|
|
14
|
-
No raw MCP dumps. No UUIDs unless asked.
|
|
15
|
-
|
|
16
|
-
> **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.
|
|
17
|
-
>
|
|
18
|
-
> *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.
|
|
19
|
-
|
|
20
|
-
## When to Use
|
|
21
|
-
- Project lead says "deploy", "ship it", "push to production", "update the server"
|
|
22
|
-
- A new app needs to be registered and deployed for the first time (`rdc:deploy new`)
|
|
23
|
-
- A deployed app is behaving unexpectedly and needs diagnosis (`rdc:deploy diagnose`)
|
|
24
|
-
- Running a compliance/health audit of all deployed apps (`rdc:deploy audit`)
|
|
25
|
-
|
|
26
|
-
## Arguments
|
|
27
|
-
|
|
28
|
-
- `rdc:deploy <slug>` — deploy existing app (latest commit on its watched branch)
|
|
29
|
-
- `rdc:deploy <slug> <build-id>` — deploy specific commit/tag
|
|
30
|
-
- `rdc:deploy new <slug>` — create a new Coolify app from registry
|
|
31
|
-
- `rdc:deploy diagnose <slug>` — debug why an app is broken
|
|
32
|
-
- `rdc:deploy audit` — fleet-wide scan for missed failures
|
|
33
|
-
- `rdc:deploy audit --fix` — fleet scan + auto-remediate safe issues
|
|
34
|
-
- `rdc:deploy` (no args) — print mode menu, ask which
|
|
35
|
-
|
|
36
|
-
## Modes
|
|
37
|
-
|
|
38
|
-
### Mode 1 — deploy <slug> [build-id]
|
|
39
|
-
|
|
40
|
-
```
|
|
41
|
-
rdc:deploy: <slug> → <domain>
|
|
42
|
-
[ ] Registry lookup (slug, uuid, branch, type, env_vars_needed)
|
|
43
|
-
[ ] Git state verified (branch matches Coolify, commit pushed)
|
|
44
|
-
[ ] Build-id resolved (default: HEAD of watched branch)
|
|
45
|
-
[ ] Env vars present in Coolify (compare to registry)
|
|
46
|
-
[ ] Type-specific preflight (see docs/runbooks/coolify-deploy-checklist.md)
|
|
47
|
-
[ ] Deploy triggered
|
|
48
|
-
[ ] Deployment reached "finished" state
|
|
49
|
-
[ ] Gate: HTTP 200
|
|
50
|
-
[ ] Gate: TLS valid (no SSL cipher mismatch)
|
|
51
|
-
[ ] Gate: cache headers correct on HTML
|
|
52
|
-
[ ] Gate: container running on declared port
|
|
53
|
-
[ ] Cloudflare cache purged (if proxied)
|
|
54
|
-
[ ] deployment_registry updated (last_deploy_at, status)
|
|
55
|
-
✅ rdc:deploy: <slug> deployed in Nm Ns
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### Mode 2 — new <slug>
|
|
59
|
-
|
|
60
|
-
**MANDATORY:** All new apps are created from `docs/runbooks/coolify-app-templates.json`. Read that file first — pick the right template, substitute the required vars, POST the exact payload. No manual field configuration. No improvisation. The template encodes all learned lessons (base_directory, build_pack, watch_paths, health_check, ports). Deviating from it breaks things.
|
|
61
|
-
|
|
62
|
-
Template selection:
|
|
63
|
-
- `nextjs-app` — for `apps/<name>/` (Dockerfile, turbo filter, port 3000)
|
|
64
|
-
- `static-site` — for `sites/<name>/` (nixpacks, publish_directory=out, no packages)
|
|
65
|
-
- `mcp-server` — for `mcp-servers/<name>/` (Dockerfile, health check enabled, custom port)
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
rdc:deploy new: <slug>
|
|
69
|
-
[ ] .dockerignore present at regen-root root (ls C:/Dev/regen-root/.dockerignore — STOP if missing)
|
|
70
|
-
[ ] Template loaded from docs/runbooks/coolify-app-templates.json (pick nextjs-app / static-site / mcp-server)
|
|
71
|
-
[ ] Required vars substituted: NAME, APP_PATH, DOMAIN, BRANCH, PROJECT_UUID, ENVIRONMENT_UUID [+ TURBO_FILTER / PORT]
|
|
72
|
-
[ ] DNS path chosen (A: *.dev.place.fund B: apex C: other zone)
|
|
73
|
-
[ ] DNS record verified or wildcard confirmed
|
|
74
|
-
[ ] Cloudflare proxy setting correct for DNS path
|
|
75
|
-
[ ] Application created via POST /applications/private-github-app (template payload)
|
|
76
|
-
[ ] UUID recorded from response
|
|
77
|
-
[ ] watch_paths verified via GET /api/v1/applications/<uuid> — must match template
|
|
78
|
-
[ ] Env vars set in Coolify (from deployment_registry.env_vars_needed)
|
|
79
|
-
[ ] First deploy triggered
|
|
80
|
-
[ ] Deployment reached "finished" state
|
|
81
|
-
[ ] Gate: HTTP 200 on <domain>
|
|
82
|
-
[ ] Gate: TLS valid
|
|
83
|
-
[ ] deployment_registry row inserted
|
|
84
|
-
✅ rdc:deploy new: <slug> live at <domain>
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### Mode 3 — diagnose <slug>
|
|
88
|
-
|
|
89
|
-
```
|
|
90
|
-
rdc:deploy diagnose: <slug>
|
|
91
|
-
[ ] App located (uuid, domain, last deploy)
|
|
92
|
-
[ ] Container state (running / restarting / stopped)
|
|
93
|
-
[ ] Last 100 log lines scanned for known error patterns
|
|
94
|
-
[ ] Port mismatch check (declared vs actual)
|
|
95
|
-
[ ] Env var drift check (registry vs Coolify)
|
|
96
|
-
[ ] watch_paths sanity check
|
|
97
|
-
[ ] HTTP / TLS reachability
|
|
98
|
-
[ ] Cloudflare proxy state check
|
|
99
|
-
[ ] Disk space on server
|
|
100
|
-
[ ] Branch mismatch check (Coolify git_branch vs expected)
|
|
101
|
-
⚠️ rdc:deploy diagnose: <root cause in one sentence> — fix: <one command>
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### Mode 4 — audit
|
|
105
|
-
|
|
106
|
-
```
|
|
107
|
-
rdc:deploy audit: fleet scan
|
|
108
|
-
[ ] Inventory join: Coolify apps ⋈ deployment_registry
|
|
109
|
-
[ ] Orphans (in one but not the other)
|
|
110
|
-
[ ] Monorepo apps missing watch_paths
|
|
111
|
-
[ ] Stale deploys (>14 days since last success)
|
|
112
|
-
[ ] Registry rows with status='broken'
|
|
113
|
-
[ ] Failed deployments in last 7 days
|
|
114
|
-
[ ] HTTP gate sweep (non-200 per domain)
|
|
115
|
-
[ ] TLS cert expiry <30 days
|
|
116
|
-
[ ] Port mismatches (ports_exposes vs actual container port)
|
|
117
|
-
[ ] Env var drift (registry.env_vars_needed vs Coolify env)
|
|
118
|
-
[ ] Branch mismatches (Coolify git_branch ≠ expected)
|
|
119
|
-
[ ] Disk space on 64.237.54.189
|
|
120
|
-
[ ] CF proxy misconfigs on *.dev.place.fund
|
|
121
|
-
[ ] Duplicate apps (same repo, multiple UUIDs)
|
|
122
|
-
|
|
123
|
-
Findings:
|
|
124
|
-
| Severity | App | Issue | Fix |
|
|
125
|
-
|----------|-----|-------|-----|
|
|
126
|
-
| HIGH | ... | ... | ... |
|
|
127
|
-
⚠️ rdc:deploy audit: N HIGH · M MED · K LOW — run `rdc:deploy audit --fix` to auto-remediate safe issues
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
Severity rules:
|
|
131
|
-
- **HIGH** — user-facing down (HTTP non-200, TLS invalid, container not running)
|
|
132
|
-
- **MED** — degraded or drifting (watch_paths missing, env var drift, stale deploy, branch mismatch)
|
|
133
|
-
- **LOW** — cleanup (orphans, duplicates, registry status stale)
|
|
134
|
-
|
|
135
|
-
`--fix` auto-remediates only: missing watch_paths, registry row updates, CF cache purges. Never touches env vars, DNS, or container config without explicit confirmation.
|
|
136
|
-
|
|
137
|
-
## Coolify Access — clauth + REST API
|
|
138
|
-
|
|
139
|
-
All Coolify operations use the clauth daemon and the Coolify REST API directly.
|
|
140
|
-
There is no Coolify MCP server. Do not reference `@masonator/coolify-mcp`.
|
|
141
|
-
|
|
142
|
-
```bash
|
|
143
|
-
# Get token (plain text — no JSON parsing needed)
|
|
144
|
-
_COOLIFY=$(curl -s http://127.0.0.1:52437/v/coolify-api)
|
|
145
|
-
|
|
146
|
-
# List applications
|
|
147
|
-
curl -s -H "Authorization: Bearer $_COOLIFY" \
|
|
148
|
-
https://deploy.regendevcorp.com/api/v1/applications
|
|
149
|
-
|
|
150
|
-
# Get application details
|
|
151
|
-
curl -s -H "Authorization: Bearer $_COOLIFY" \
|
|
152
|
-
https://deploy.regendevcorp.com/api/v1/applications/<uuid>
|
|
153
|
-
|
|
154
|
-
# Deploy (trigger)
|
|
155
|
-
curl -s -X POST -H "Authorization: Bearer $_COOLIFY" \
|
|
156
|
-
https://deploy.regendevcorp.com/api/v1/applications/<uuid>/deploy
|
|
157
|
-
|
|
158
|
-
# Get deployment logs
|
|
159
|
-
curl -s -H "Authorization: Bearer $_COOLIFY" \
|
|
160
|
-
https://deploy.regendevcorp.com/api/v1/deployments/<deployment-id>
|
|
161
|
-
|
|
162
|
-
# Set env var
|
|
163
|
-
curl -s -X POST -H "Authorization: Bearer $_COOLIFY" \
|
|
164
|
-
-H "Content-Type: application/json" \
|
|
165
|
-
-d '{"key":"<KEY>","value":"<VALUE>"}' \
|
|
166
|
-
https://deploy.regendevcorp.com/api/v1/applications/<uuid>/envs
|
|
167
|
-
|
|
168
|
-
# Set watch_paths
|
|
169
|
-
curl -s -X PATCH -H "Authorization: Bearer $_COOLIFY" \
|
|
170
|
-
-H "Content-Type: application/json" \
|
|
171
|
-
-d '{"watch_paths":"apps/<name>/**\npackages/**"}' \
|
|
172
|
-
https://deploy.regendevcorp.com/api/v1/applications/<uuid>
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
**Never print `$_COOLIFY` to stdout.** Inline from clauth only — do not assign raw strings.
|
|
176
|
-
|
|
177
|
-
If clauth daemon is not responding (`curl -s http://127.0.0.1:52437/ping` fails):
|
|
178
|
-
```
|
|
179
|
-
BLOCKED: clauth daemon is not responding.
|
|
180
|
-
Fix: Run C:\Dev\regen-root\scripts\restart-clauth.bat, then unlock at http://127.0.0.1:52437
|
|
181
|
-
I cannot proceed until this is resolved.
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
## References
|
|
185
|
-
|
|
186
|
-
- Type-specific checklists + DNS tree + gate commands: `docs/runbooks/coolify-deploy-checklist.md`
|
|
187
|
-
- Rules / registry RPCs / hard limits: `.claude/context/coolify-deployment.md`
|
|
188
|
-
- Infrastructure constants:
|
|
189
|
-
```
|
|
190
|
-
Server UUID: ih386anenvvvn6fy1umtyow0
|
|
191
|
-
Server IP: 64.237.54.189
|
|
192
|
-
Dashboard: https://deploy.regendevcorp.com
|
|
193
|
-
GitHub App UUID: xdmcy60putp5h9j7k4kwg9c3
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
## Supersedes
|
|
197
|
-
|
|
198
|
-
`coolify-deploy` standalone skill (kept for back-compat; new work uses `rdc:deploy`).
|
|
1
|
+
---
|
|
2
|
+
name: rdc:deploy
|
|
3
|
+
description: "Usage `rdc:deploy <slug> [new|diagnose|audit] [--fix]` — Deploy an app to Coolify (production) or PM2 (staging), add a new Coolify app, diagnose a failed deploy, or audit watch paths. Handles DNS, health checks, and post-deploy verification."
|
|
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
|
+
|
|
11
|
+
# rdc:deploy — Coolify Operations
|
|
12
|
+
|
|
13
|
+
**READ FIRST:** `guides/output-contract.md`. Checklist-only output. No narration.
|
|
14
|
+
No raw MCP dumps. No UUIDs unless asked.
|
|
15
|
+
|
|
16
|
+
> **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.
|
|
17
|
+
>
|
|
18
|
+
> *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.
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
- Project lead says "deploy", "ship it", "push to production", "update the server"
|
|
22
|
+
- A new app needs to be registered and deployed for the first time (`rdc:deploy new`)
|
|
23
|
+
- A deployed app is behaving unexpectedly and needs diagnosis (`rdc:deploy diagnose`)
|
|
24
|
+
- Running a compliance/health audit of all deployed apps (`rdc:deploy audit`)
|
|
25
|
+
|
|
26
|
+
## Arguments
|
|
27
|
+
|
|
28
|
+
- `rdc:deploy <slug>` — deploy existing app (latest commit on its watched branch)
|
|
29
|
+
- `rdc:deploy <slug> <build-id>` — deploy specific commit/tag
|
|
30
|
+
- `rdc:deploy new <slug>` — create a new Coolify app from registry
|
|
31
|
+
- `rdc:deploy diagnose <slug>` — debug why an app is broken
|
|
32
|
+
- `rdc:deploy audit` — fleet-wide scan for missed failures
|
|
33
|
+
- `rdc:deploy audit --fix` — fleet scan + auto-remediate safe issues
|
|
34
|
+
- `rdc:deploy` (no args) — print mode menu, ask which
|
|
35
|
+
|
|
36
|
+
## Modes
|
|
37
|
+
|
|
38
|
+
### Mode 1 — deploy <slug> [build-id]
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
rdc:deploy: <slug> → <domain>
|
|
42
|
+
[ ] Registry lookup (slug, uuid, branch, type, env_vars_needed)
|
|
43
|
+
[ ] Git state verified (branch matches Coolify, commit pushed)
|
|
44
|
+
[ ] Build-id resolved (default: HEAD of watched branch)
|
|
45
|
+
[ ] Env vars present in Coolify (compare to registry)
|
|
46
|
+
[ ] Type-specific preflight (see docs/runbooks/coolify-deploy-checklist.md)
|
|
47
|
+
[ ] Deploy triggered
|
|
48
|
+
[ ] Deployment reached "finished" state
|
|
49
|
+
[ ] Gate: HTTP 200
|
|
50
|
+
[ ] Gate: TLS valid (no SSL cipher mismatch)
|
|
51
|
+
[ ] Gate: cache headers correct on HTML
|
|
52
|
+
[ ] Gate: container running on declared port
|
|
53
|
+
[ ] Cloudflare cache purged (if proxied)
|
|
54
|
+
[ ] deployment_registry updated (last_deploy_at, status)
|
|
55
|
+
✅ rdc:deploy: <slug> deployed in Nm Ns
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Mode 2 — new <slug>
|
|
59
|
+
|
|
60
|
+
**MANDATORY:** All new apps are created from `docs/runbooks/coolify-app-templates.json`. Read that file first — pick the right template, substitute the required vars, POST the exact payload. No manual field configuration. No improvisation. The template encodes all learned lessons (base_directory, build_pack, watch_paths, health_check, ports). Deviating from it breaks things.
|
|
61
|
+
|
|
62
|
+
Template selection:
|
|
63
|
+
- `nextjs-app` — for `apps/<name>/` (Dockerfile, turbo filter, port 3000)
|
|
64
|
+
- `static-site` — for `sites/<name>/` (nixpacks, publish_directory=out, no packages)
|
|
65
|
+
- `mcp-server` — for `mcp-servers/<name>/` (Dockerfile, health check enabled, custom port)
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
rdc:deploy new: <slug>
|
|
69
|
+
[ ] .dockerignore present at regen-root root (ls C:/Dev/regen-root/.dockerignore — STOP if missing)
|
|
70
|
+
[ ] Template loaded from docs/runbooks/coolify-app-templates.json (pick nextjs-app / static-site / mcp-server)
|
|
71
|
+
[ ] Required vars substituted: NAME, APP_PATH, DOMAIN, BRANCH, PROJECT_UUID, ENVIRONMENT_UUID [+ TURBO_FILTER / PORT]
|
|
72
|
+
[ ] DNS path chosen (A: *.dev.place.fund B: apex C: other zone)
|
|
73
|
+
[ ] DNS record verified or wildcard confirmed
|
|
74
|
+
[ ] Cloudflare proxy setting correct for DNS path
|
|
75
|
+
[ ] Application created via POST /applications/private-github-app (template payload)
|
|
76
|
+
[ ] UUID recorded from response
|
|
77
|
+
[ ] watch_paths verified via GET /api/v1/applications/<uuid> — must match template
|
|
78
|
+
[ ] Env vars set in Coolify (from deployment_registry.env_vars_needed)
|
|
79
|
+
[ ] First deploy triggered
|
|
80
|
+
[ ] Deployment reached "finished" state
|
|
81
|
+
[ ] Gate: HTTP 200 on <domain>
|
|
82
|
+
[ ] Gate: TLS valid
|
|
83
|
+
[ ] deployment_registry row inserted
|
|
84
|
+
✅ rdc:deploy new: <slug> live at <domain>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Mode 3 — diagnose <slug>
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
rdc:deploy diagnose: <slug>
|
|
91
|
+
[ ] App located (uuid, domain, last deploy)
|
|
92
|
+
[ ] Container state (running / restarting / stopped)
|
|
93
|
+
[ ] Last 100 log lines scanned for known error patterns
|
|
94
|
+
[ ] Port mismatch check (declared vs actual)
|
|
95
|
+
[ ] Env var drift check (registry vs Coolify)
|
|
96
|
+
[ ] watch_paths sanity check
|
|
97
|
+
[ ] HTTP / TLS reachability
|
|
98
|
+
[ ] Cloudflare proxy state check
|
|
99
|
+
[ ] Disk space on server
|
|
100
|
+
[ ] Branch mismatch check (Coolify git_branch vs expected)
|
|
101
|
+
⚠️ rdc:deploy diagnose: <root cause in one sentence> — fix: <one command>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Mode 4 — audit
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
rdc:deploy audit: fleet scan
|
|
108
|
+
[ ] Inventory join: Coolify apps ⋈ deployment_registry
|
|
109
|
+
[ ] Orphans (in one but not the other)
|
|
110
|
+
[ ] Monorepo apps missing watch_paths
|
|
111
|
+
[ ] Stale deploys (>14 days since last success)
|
|
112
|
+
[ ] Registry rows with status='broken'
|
|
113
|
+
[ ] Failed deployments in last 7 days
|
|
114
|
+
[ ] HTTP gate sweep (non-200 per domain)
|
|
115
|
+
[ ] TLS cert expiry <30 days
|
|
116
|
+
[ ] Port mismatches (ports_exposes vs actual container port)
|
|
117
|
+
[ ] Env var drift (registry.env_vars_needed vs Coolify env)
|
|
118
|
+
[ ] Branch mismatches (Coolify git_branch ≠ expected)
|
|
119
|
+
[ ] Disk space on 64.237.54.189
|
|
120
|
+
[ ] CF proxy misconfigs on *.dev.place.fund
|
|
121
|
+
[ ] Duplicate apps (same repo, multiple UUIDs)
|
|
122
|
+
|
|
123
|
+
Findings:
|
|
124
|
+
| Severity | App | Issue | Fix |
|
|
125
|
+
|----------|-----|-------|-----|
|
|
126
|
+
| HIGH | ... | ... | ... |
|
|
127
|
+
⚠️ rdc:deploy audit: N HIGH · M MED · K LOW — run `rdc:deploy audit --fix` to auto-remediate safe issues
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Severity rules:
|
|
131
|
+
- **HIGH** — user-facing down (HTTP non-200, TLS invalid, container not running)
|
|
132
|
+
- **MED** — degraded or drifting (watch_paths missing, env var drift, stale deploy, branch mismatch)
|
|
133
|
+
- **LOW** — cleanup (orphans, duplicates, registry status stale)
|
|
134
|
+
|
|
135
|
+
`--fix` auto-remediates only: missing watch_paths, registry row updates, CF cache purges. Never touches env vars, DNS, or container config without explicit confirmation.
|
|
136
|
+
|
|
137
|
+
## Coolify Access — clauth + REST API
|
|
138
|
+
|
|
139
|
+
All Coolify operations use the clauth daemon and the Coolify REST API directly.
|
|
140
|
+
There is no Coolify MCP server. Do not reference `@masonator/coolify-mcp`.
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Get token (plain text — no JSON parsing needed)
|
|
144
|
+
_COOLIFY=$(curl -s http://127.0.0.1:52437/v/coolify-api)
|
|
145
|
+
|
|
146
|
+
# List applications
|
|
147
|
+
curl -s -H "Authorization: Bearer $_COOLIFY" \
|
|
148
|
+
https://deploy.regendevcorp.com/api/v1/applications
|
|
149
|
+
|
|
150
|
+
# Get application details
|
|
151
|
+
curl -s -H "Authorization: Bearer $_COOLIFY" \
|
|
152
|
+
https://deploy.regendevcorp.com/api/v1/applications/<uuid>
|
|
153
|
+
|
|
154
|
+
# Deploy (trigger)
|
|
155
|
+
curl -s -X POST -H "Authorization: Bearer $_COOLIFY" \
|
|
156
|
+
https://deploy.regendevcorp.com/api/v1/applications/<uuid>/deploy
|
|
157
|
+
|
|
158
|
+
# Get deployment logs
|
|
159
|
+
curl -s -H "Authorization: Bearer $_COOLIFY" \
|
|
160
|
+
https://deploy.regendevcorp.com/api/v1/deployments/<deployment-id>
|
|
161
|
+
|
|
162
|
+
# Set env var
|
|
163
|
+
curl -s -X POST -H "Authorization: Bearer $_COOLIFY" \
|
|
164
|
+
-H "Content-Type: application/json" \
|
|
165
|
+
-d '{"key":"<KEY>","value":"<VALUE>"}' \
|
|
166
|
+
https://deploy.regendevcorp.com/api/v1/applications/<uuid>/envs
|
|
167
|
+
|
|
168
|
+
# Set watch_paths
|
|
169
|
+
curl -s -X PATCH -H "Authorization: Bearer $_COOLIFY" \
|
|
170
|
+
-H "Content-Type: application/json" \
|
|
171
|
+
-d '{"watch_paths":"apps/<name>/**\npackages/**"}' \
|
|
172
|
+
https://deploy.regendevcorp.com/api/v1/applications/<uuid>
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Never print `$_COOLIFY` to stdout.** Inline from clauth only — do not assign raw strings.
|
|
176
|
+
|
|
177
|
+
If clauth daemon is not responding (`curl -s http://127.0.0.1:52437/ping` fails):
|
|
178
|
+
```
|
|
179
|
+
BLOCKED: clauth daemon is not responding.
|
|
180
|
+
Fix: Run C:\Dev\regen-root\scripts\restart-clauth.bat, then unlock at http://127.0.0.1:52437
|
|
181
|
+
I cannot proceed until this is resolved.
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## References
|
|
185
|
+
|
|
186
|
+
- Type-specific checklists + DNS tree + gate commands: `docs/runbooks/coolify-deploy-checklist.md`
|
|
187
|
+
- Rules / registry RPCs / hard limits: `.claude/context/coolify-deployment.md`
|
|
188
|
+
- Infrastructure constants:
|
|
189
|
+
```
|
|
190
|
+
Server UUID: ih386anenvvvn6fy1umtyow0
|
|
191
|
+
Server IP: 64.237.54.189
|
|
192
|
+
Dashboard: https://deploy.regendevcorp.com
|
|
193
|
+
GitHub App UUID: xdmcy60putp5h9j7k4kwg9c3
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Supersedes
|
|
197
|
+
|
|
198
|
+
`coolify-deploy` standalone skill (kept for back-compat; new work uses `rdc:deploy`).
|