@lifeaitools/rdc-skills 0.9.37 → 0.9.38

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rdc",
3
- "version": "0.9.37",
3
+ "version": "0.9.38",
4
4
  "description": "RDC typed-agent dispatch skill suite for Claude Code — plan, build, review, overnight unattended builds with work-item tracking and TDD enforcement.",
5
5
  "author": {
6
6
  "name": "LIFEAI",
package/CHANGELOG.md CHANGED
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ---
9
9
 
10
+ ## v0.9.38 — Clean-box npm install hardening
11
+
12
+ ### Fixed
13
+
14
+ - **Fresh Claude home install.** The installer now creates `CLAUDE_HOME` and `settings.json` when they do not exist, so a first-time machine is not blocked before Claude has written config files.
15
+ - **Public package portability.** Removed the most brittle user-machine paths from public skill docs and hooks, replacing them with `{PROJECT_ROOT}`, `{RDC_SKILLS_ROOT}`, or environment-derived paths.
16
+ - **Hook path fallback.** Commit hygiene hooks now use the current OS home directory instead of a user-specific fallback path.
17
+
18
+ ### Added
19
+
20
+ - **npm binaries.** `rdc-skills-install` and `rdc-skills-self-test` are exposed from the npm package for simpler clean-box installs.
21
+
22
+ ---
23
+
10
24
  ## v0.9.37 — RDC hook loop guard and behavior tests
11
25
 
12
26
  ### Fixed
@@ -55,7 +55,7 @@ rdc:deploy: <slug> → <domain>
55
55
  ```
56
56
  rdc:deploy new: <slug>
57
57
  [ ] Registry entry loaded (or interactive create)
58
- [ ] DNS path chosen (A: *.dev.place.fund B: apex C: other zone)
58
+ [ ] DNS path chosen (A: staging wildcard B: apex C: other zone)
59
59
  [ ] DNS record verified or wildcard confirmed
60
60
  [ ] Cloudflare proxy setting correct for DNS path
61
61
  [ ] server_uuid, project_uuid, environment_uuid, github_app_uuid resolved
@@ -103,7 +103,7 @@ rdc:deploy audit: fleet scan
103
103
  [ ] Env var drift (registry.env_vars_needed vs Coolify env)
104
104
  [ ] Branch mismatches (Coolify git_branch ≠ expected)
105
105
  [ ] Disk space on 64.237.54.189
106
- [ ] CF proxy misconfigs on *.dev.place.fund
106
+ [ ] DNS/proxy misconfigs on configured staging wildcard
107
107
  [ ] Duplicate apps (same repo, multiple UUIDs)
108
108
 
109
109
  Findings:
@@ -127,7 +127,7 @@ There is no Coolify MCP server — do not reference `@masonator/coolify-mcp`.
127
127
 
128
128
  ```bash
129
129
  _COOLIFY=$(curl -s http://127.0.0.1:52437/v/coolify-api)
130
- curl -s -H "Authorization: Bearer $_COOLIFY" https://deploy.regendevcorp.com/api/v1/applications
130
+ curl -s -H "Authorization: Bearer $_COOLIFY" "$DEPLOY_API_BASE/api/v1/applications"
131
131
  ```
132
132
 
133
133
  If clauth daemon is not responding:
@@ -143,7 +143,7 @@ BLOCKED: clauth daemon not responding. Run scripts\restart-clauth.bat, unlock at
143
143
  ```
144
144
  Server UUID: ih386anenvvvn6fy1umtyow0
145
145
  Server IP: 64.237.54.189
146
- Dashboard: https://deploy.regendevcorp.com
146
+ Dashboard: <deployment-dashboard-url>
147
147
  GitHub App UUID: xdmcy60putp5h9j7k4kwg9c3
148
148
  ```
149
149
 
@@ -15,7 +15,7 @@ Use `skills/design/SKILL.md` as the source of truth.
15
15
 
16
16
  - Studio, Palette Library, brand-token, theme, component, or live-editor work
17
17
  - Any design task that must understand RDC's real token tables and Studio routes
18
- - UI critique, audit, polish, colorize, type, layout, or craft work in `regen-root`
18
+ - UI critique, audit, polish, colorize, type, layout, or craft work in `{PROJECT_ROOT}`
19
19
  - Agent-side color-system exploration using Rampa CLI
20
20
 
21
21
  ## Arguments
@@ -30,13 +30,13 @@ description: >-
30
30
  **First action — set the overnight sentinel** so the `no-stop-open-epics` Stop hook engages (interactive sessions are not gated by it):
31
31
 
32
32
  ```bash
33
- mkdir -p C:/Dev/regen-root/.rdc && touch C:/Dev/regen-root/.rdc/overnight.lock
33
+ mkdir -p {PROJECT_ROOT}/.rdc && touch {PROJECT_ROOT}/.rdc/overnight.lock
34
34
  ```
35
35
 
36
36
  **Last action at end of run (success OR failure) — remove the sentinel:**
37
37
 
38
38
  ```bash
39
- rm -f C:/Dev/regen-root/.rdc/overnight.lock
39
+ rm -f {PROJECT_ROOT}/.rdc/overnight.lock
40
40
  ```
41
41
 
42
42
  If the sentinel file does not exist, the Stop hook will NOT block — which means interactive sessions stop freely and only `rdc:overnight` is held to the "drain the queue" contract.
@@ -1,159 +1,49 @@
1
1
  ---
2
- name: rdc:release
3
2
  description: >-
4
- Atomic release. Usage `rdc:release <repo> [version]` or `rdc:release <repo> --patch|--minor|--major` or `rdc:release <repo> --dry-run` — bump, commit, tag, push, wait CI, install, verify, restart. Known repos: clauth, rdc-skills, regen-media, gws. No user handoff.
3
+ Atomic release. Usage `rdc:release <repo> [version]` or `rdc:release <repo> --patch|--minor|--major|--dry-run` — bump, commit, tag, push, wait CI/publish, install, and verify. Uses repo-local release metadata.
5
4
  ---
6
5
 
6
+ # rdc:release — Generic Release
7
+
7
8
  > **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
8
- > Checklist-only output. No tool-call narration. No raw git/npm/CI dumps.
9
+ > Checklist-only output. No raw git/npm/CI dumps.
9
10
  > One checklist upfront, updated in place, shown again at end with 1-line verdict.
10
11
 
11
- > **Sandbox contract:** This skill honors `RDC_TEST=1` per `guides/agent-bootstrap.md` § RDC_TEST Sandbox Contract. Destructive external calls (git tag push, CI poll, npm publish verification, global install, daemon restart) short-circuit under the flag — the checklist still runs, but each destructive step echoes `[RDC_TEST] skipping <step>` instead of mutating external state.
12
-
13
- # rdc:release — Atomic LIFEAI Package Release
14
-
15
- ## Purpose
16
-
17
- Dave has Bash access. Therefore Dave should never be asked to run install
18
- commands. This skill handles the complete release loop for any LIFEAI-published
19
- package so the user sees one checklist and one verdict, not a series of "now run
20
- this" handoffs.
21
-
22
- ## Arguments
23
-
24
- - `rdc:release <repo>` — patch bump (default), full loop
25
- - `rdc:release <repo> <version>` — explicit version (e.g. `1.6.0`)
26
- - `rdc:release <repo> --minor` | `--major` | `--patch` — semver bump
27
- - `rdc:release <repo> --dry-run` — show checklist and planned version, do nothing
28
- - `rdc:release` (no args) — list known repos, ask which
29
-
30
- ## Known repos
31
-
32
- Resolve `<repo>` to source path + install mechanism:
33
-
34
- | Repo | Source path | Publish | Install | Post-install |
35
- |------|-------------|---------|---------|--------------|
36
- | `clauth` | `C:/Dev/clauth` | npm via tag → GitHub Actions | `npm install -g @lifeaitools/clauth@latest` | `curl -s -X POST http://127.0.0.1:52437/restart` |
37
- | `rdc-skills` | `C:/Dev/rdc-skills` | local (no npm) | `bash C:/Dev/rdc-skills/scripts/install.sh` + cp fallback | none |
38
- | `regen-media` | `C:/Dev/regen-root/mcp-servers/regen-media` | local | restart MCP server | none |
39
- | `gws` | `C:/Dev/regen-root/mcp-servers/gws` | local | restart MCP server | none |
40
-
41
- Add new repos to this table as they emerge. If user specifies an unknown repo,
42
- ask for the source path and install command.
43
-
44
- ## Checklist (run every mode)
12
+ ## Checklist
45
13
 
46
14
  ```
47
- rdc:release: <repo> vX.Y.Z vA.B.C
15
+ rdc:release: <repo> vX.Y.Z -> vA.B.C
48
16
  [ ] Source path resolved
49
- [ ] Working tree clean (git status)
50
- [ ] Current version detected (package.json)
17
+ [ ] Release metadata read
18
+ [ ] Working tree clean or user-approved dirty scope identified
19
+ [ ] Current version detected
51
20
  [ ] New version computed
52
- [ ] Dry-run gate (if --dry-run, stop here)
53
- [ ] package.json bumped (all version fields)
21
+ [ ] Dry-run gate handled
22
+ [ ] Version files updated
23
+ [ ] Tests/self-test passed
54
24
  [ ] Commit created
55
- [ ] Tag vA.B.C created
56
- [ ] Push to origin
57
- [ ] Push --tags to origin
58
- [ ] CI run located (gh run list, if applicable)
59
- [ ] CI completed successfully (poll every 20s, 10min timeout)
60
- [ ] npm registry shows vA.B.C (if npm package, poll every 15s, 3min timeout)
61
- [ ] Local install executed
62
- [ ] Installed version verified matches vA.B.C
63
- [ ] Post-install action (daemon restart, etc., if applicable)
64
- [ ] Smoke test (ping health endpoint or binary --version)
65
- ✅ rdc:release <repo>: vA.B.C live and installed
25
+ [ ] Tag created
26
+ [ ] Branch and tag pushed
27
+ [ ] CI/publish status verified
28
+ [ ] Registry/package/deploy target shows vA.B.C, if applicable
29
+ [ ] Local install/update executed, if applicable
30
+ [ ] Installed/runtime version verified
31
+ [ ] Smoke test passed
32
+ rdc:release <repo>: vA.B.C live and verified
66
33
  ```
67
34
 
68
- ## Execution details (silent to user — don't narrate)
35
+ ## Rules
69
36
 
70
- ### 1. Version bump
71
- - Read `package.json`, parse version
72
- - Apply bump: patch (default), minor, major, or explicit
73
- - Rewrite all `version` fields (some packages have version in `claude.version` too)
37
+ - Do not release without explicit user authorization.
38
+ - Prefer repo-local release instructions in `.rdc/release.json`, README, package scripts, or CI workflows.
39
+ - Never force push or bypass hooks.
40
+ - Never declare success without verifying the installed or deployed version.
74
41
 
75
- ### 2. Commit + tag + push
76
- ```bash
77
- cd <source_path>
78
- git add package.json
79
- git commit -m "chore(release): vA.B.C"
80
- if [ "$RDC_TEST" != "1" ]; then
81
- git tag vA.B.C
82
- git push && git push --tags
83
- else
84
- echo "[RDC_TEST] skipping git tag + git push --tags"
85
- fi
86
- ```
87
- Never `--no-verify`. Never `--force`. If pre-commit hook fails, fix root cause, don't skip.
42
+ ## RDC Skills Package
88
43
 
89
- *Under `$RDC_TEST=1`, sections 3 (CI poll), 4 (npm registry poll), 5 (install), 6 (verify install), 7 (post-install), and 8 (smoke test) are also skipped — echo `[RDC_TEST] skipping <section>` for each and mark the checklist line as `[~]`.*
44
+ After publishing this package to npm, a clean-box install should use:
90
45
 
91
- ### 3. CI poll (for repos with GH Actions publish)
92
46
  ```bash
93
- # Locate the run triggered by the tag push
94
- gh run list --repo LIFEAI/<repo> --limit 5 --json status,conclusion,headBranch,databaseId
95
- # Poll its status field every 20s until conclusion ∈ {success, failure, cancelled}
96
- # Max 10 minutes — if timeout, fail with [!] and report run URL
47
+ npm install -g @lifeaitools/rdc-skills@latest
48
+ rdc-skills-install --profile core
97
49
  ```
98
-
99
- ### 4. npm registry poll (only if published to npm)
100
- ```bash
101
- npm view @lifeaitools/<repo> version
102
- # Poll every 15s until matches new version
103
- # Max 3 minutes — usually lands within 30-60s after CI success
104
- ```
105
-
106
- ### 5. Install
107
- - **clauth:** `npm install -g @lifeaitools/clauth@latest`
108
- - **rdc-skills:** `bash C:/Dev/rdc-skills/scripts/install.sh` — if output shows only one file copied (known bug), fall back to `cp C:/Dev/rdc-skills/skills/*.md ~/.claude/skills/user/ && cp C:/Dev/rdc-skills/skills/*.md C:/Dev/regen-root/.claude/skills/user/`
109
- - **MCP servers:** restart the server process (find its PID, kill, respawn — or document how)
110
-
111
- ### 6. Verify install
112
- - **clauth:** `curl -s http://127.0.0.1:52437/ping | jq -r .app_version` — must equal new version
113
- - **rdc-skills:** `ls ~/.claude/skills/user/rdc-release.md` (or whichever file is new in this release) — must exist
114
- - **Global npm:** `npm list -g --depth=0 @lifeaitools/<repo>` — version matches
115
-
116
- ### 7. Post-install
117
- - **clauth:** `curl -s -X POST http://127.0.0.1:52437/restart` — wait 3s — ping again
118
- - Others: N/A
119
-
120
- ### 8. Smoke test
121
- - **clauth:** new tool roundtrip (e.g., `curl -s http://127.0.0.1:52437/get/openai | head -c 10` succeeds without error)
122
- - **rdc-skills:** load one new skill file and check frontmatter parses
123
- - **MCP:** server responds to `tools/list`
124
-
125
- ## Failure modes → checklist outcome
126
-
127
- | Failure | Marker | Next |
128
- |---------|--------|------|
129
- | Dirty working tree | `[!]` line 2 | Abort with one-sentence diff summary; ask user to commit or stash |
130
- | Pre-commit hook fails | `[!]` line 7 | Fix root cause, re-stage, retry (NEVER --no-verify) |
131
- | CI fails | `[!]` line 11 | Print run URL, tail 20 lines of failing job, ask user |
132
- | npm doesn't register | `[!]` line 12 | Print npm error, check if CI actually published (not a silent skip) |
133
- | Install script broken | `[!]` line 13 | Fall back to manual cp; note the installer bug as a task |
134
- | Version mismatch after install | `[!]` line 14 | Uninstall + clean install; if still wrong, likely cache issue |
135
- | Post-install restart fails | `[!]` line 15 | Print ping error; instruct user to run `scripts\restart-clauth.bat` manually |
136
-
137
- Even on failure, show the full checklist with `[!]` markers so user sees exactly
138
- where it stopped.
139
-
140
- ## Dry-run mode
141
-
142
- Prints the checklist + resolved version bump + every command that WOULD run, but
143
- executes nothing beyond reads. Use when user says "what would you do" or before
144
- risky major bumps.
145
-
146
- ## Never
147
-
148
- - Never release on behalf of the user without an explicit `rdc:release` invocation
149
- - Never skip CI verification ("it'll probably work" is how stale installs happen)
150
- - Never `--force` push, never `--no-verify`, never `--no-gpg-sign`
151
- - Never touch `main` — release tags go on the default branch the repo uses (`master` for clauth, rdc-skills)
152
- - Never declare success without verifying the installed version matches
153
-
154
- ## Related
155
-
156
- - `.claude/rules/clauth.md` — clauth release workflow source of truth
157
- - `feedback_version_bump_must_tag.md` (memory) — never bump without tagging
158
- - `feedback_clauth_ci.md` (memory) — CI publish pattern
159
- - `feedback_just_do_it.md` (memory) — don't hand commands to Dave; run them
@@ -29,7 +29,7 @@ description: >-
29
29
 
30
30
  1. **Run the linter:**
31
31
  ```bash
32
- node C:/Dev/rdc-skills/scripts/self-test.mjs
32
+ node {RDC_SKILLS_ROOT}/scripts/self-test.mjs
33
33
  ```
34
34
 
35
35
  2. **Interpret exit codes:**
package/commands/watch.md CHANGED
@@ -24,7 +24,7 @@ description: >-
24
24
  ```bash
25
25
  node ${CLAUDE_PLUGIN_ROOT}/scripts/watch-init.mjs
26
26
  ```
27
- (If `CLAUDE_PLUGIN_ROOT` is not set, resolve the plugin path from your invocation context. On Windows it's typically `C:/Dev/rdc-skills`.)
27
+ (If `CLAUDE_PLUGIN_ROOT` is not set, resolve the plugin path from your invocation context or the installed plugin cache.)
28
28
 
29
29
  2. **Parse the output.** The script prints `run_id`, `log_path`, `current`, `viewer`, and `open_hint`. Capture `log_path` and `viewer` for the rest of the session.
30
30
 
@@ -137,7 +137,7 @@ When `RDC_TEST=1` is set, the skill is running inside the Tier 2 sandbox harness
137
137
  **Bash pattern:**
138
138
  ```bash
139
139
  if [ "$RDC_TEST" != "1" ]; then
140
- curl -X POST "https://deploy.regendevcorp.com/api/v1/applications/$UUID/deploy" ...
140
+ curl -X POST "$DEPLOY_API_BASE/api/v1/applications/$UUID/deploy" ...
141
141
  else
142
142
  echo "[RDC_TEST] skipping Coolify deploy"
143
143
  fi
@@ -156,7 +156,7 @@ if (process.env.RDC_TEST !== '1') {
156
156
 
157
157
  **New-skill contract:** every new `rdc:*` skill MUST honor `RDC_TEST` before shipping. Tier 2 manifests will fail any skill that writes to external state under the flag.
158
158
 
159
- **Known blocker:** The `check-cwd.js` SessionStart hook hard-blocks Claude sessions launched from `C:/Dev/rdc-skills`. The hook must check `process.env.RDC_TEST === '1'` and call `process.exit(0)` early to allow Tier 2 sandbox runs. Without this bypass, all Tier 2 headless invocations fail with `exit_code: -1`. File: `~/.claude/hooks/check-cwd.js`.
159
+ **Known blocker:** Project-specific cwd hooks must check `process.env.RDC_TEST === '1'` and call `process.exit(0)` early to allow Tier 2 sandbox runs. Without this bypass, headless self-test invocations can fail before the skill loads. File: `~/.claude/hooks/check-cwd.js`.
160
160
 
161
161
  ---
162
162
 
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
- // Hard blocks session if CWD is not the regen-root project directory.
2
+ // Hard blocks session if CWD is not the expected project directory.
3
3
  // Exits with code 1 to fail the hook + outputs a blocking systemMessage.
4
4
 
5
5
  const { execSync } = require('child_process');
6
6
  const hookLog = require('./hook-logger');
7
7
  const cwd = process.cwd().replace(/\\/g, '/');
8
8
 
9
- let expected = 'regen-root';
9
+ let expected = process.env.RDC_PROJECT_SCOPE || 'regen-root';
10
10
  try {
11
11
  expected = execSync('git rev-parse --show-toplevel', { encoding: 'utf8', stdio: 'pipe' })
12
12
  .trim().replace(/\\/g, '/');
13
13
  } catch (_) {}
14
14
 
15
- if (!cwd.endsWith('regen-root')) {
15
+ if (!cwd.endsWith(expected)) {
16
16
  hookLog('check-cwd', 'SessionStart', 'block', { cwd, expected });
17
17
  process.stdout.write(JSON.stringify({
18
18
  systemMessage:
@@ -5,7 +5,7 @@
5
5
  * Fires on every Stop event where Claude decided to end_turn.
6
6
  * Queries get_open_epics() via Supabase REST.
7
7
  * Only blocks if epics with status=todo exist — in_progress means another session owns them.
8
- * Only fires in the regen-root project (scope guard on event.cwd).
8
+ * Only fires in the configured project scope (scope guard on event.cwd).
9
9
  *
10
10
  * Exit codes:
11
11
  * 0 = allow stop
@@ -15,8 +15,9 @@
15
15
  * NEXT_PUBLIC_SUPABASE_URL=https://<ref>.supabase.co
16
16
  * NEXT_PUBLIC_SUPABASE_ANON_KEY=<key>
17
17
  *
18
- * PROJECT SCOPE in package.json or plugin config:
19
- * "hookScope": "regen-root" folder name that must appear in event.cwd
18
+ * PROJECT SCOPE:
19
+ * RDC_PROJECT_SCOPE=<folder-name> folder name that must appear in event.cwd
20
+ * RDC_PROJECT_ROOT=<path> root used to find .rdc/overnight.lock and .env.local
20
21
  */
21
22
 
22
23
  const fs = require('fs');
@@ -24,11 +25,12 @@ const path = require('path');
24
25
 
25
26
  // ── Config — override these per project ──────────────────────────────────────
26
27
 
27
- const PROJECT_SCOPE = 'regen-root'; // only block in sessions inside this folder name
28
- const OVERNIGHT_SENTINEL = 'C:/Dev/regen-root/.rdc/overnight.lock'; // only fire when this exists
28
+ const PROJECT_SCOPE = process.env.RDC_PROJECT_SCOPE || 'regen-root'; // LIFEAI default; override per project
29
+ const PROJECT_ROOT = process.env.RDC_PROJECT_ROOT || process.cwd();
30
+ const OVERNIGHT_SENTINEL = process.env.RDC_OVERNIGHT_LOCK || path.join(PROJECT_ROOT, '.rdc', 'overnight.lock');
29
31
  const ENV_PATHS = [
30
- 'C:/Dev/regen-root/apps/rdc-marketing-engine/.env.local',
31
- 'C:/Dev/regen-root/.env.local',
32
+ ...(process.env.RDC_ENV_PATHS ? process.env.RDC_ENV_PATHS.split(path.delimiter) : []),
33
+ path.join(PROJECT_ROOT, '.env.local'),
32
34
  ];
33
35
  const SUPABASE_URL = process.env.SUPABASE_URL || readEnvVar('NEXT_PUBLIC_SUPABASE_URL');
34
36
 
@@ -18,10 +18,11 @@
18
18
 
19
19
  const fs = require('fs');
20
20
  const path = require('path');
21
+ const os = require('os');
21
22
  const hookLog = require('./hook-logger');
22
23
 
23
24
  const MARKER_FILE = path.join(
24
- process.env.USERPROFILE || process.env.HOME || 'C:/Users/DaveLadouceur',
25
+ process.env.USERPROFILE || process.env.HOME || os.homedir(),
25
26
  '.claude',
26
27
  'fixit.marker'
27
28
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifeaitools/rdc-skills",
3
- "version": "0.9.37",
3
+ "version": "0.9.38",
4
4
  "description": "RDC typed-agent dispatch skill suite for Claude Code - plan, build, review, overnight builds",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -19,9 +19,13 @@
19
19
  "type": "plugin",
20
20
  "skills": "skills/",
21
21
  "guides": "guides/",
22
- "version": "0.9.37",
22
+ "version": "0.9.38",
23
23
  "commands": "commands/"
24
24
  },
25
+ "bin": {
26
+ "rdc-skills-install": "scripts/install-rdc-skills.js",
27
+ "rdc-skills-self-test": "scripts/self-test.mjs"
28
+ },
25
29
  "scripts": {
26
30
  "install-rdc-skills": "node scripts/install-rdc-skills.js",
27
31
  "uninstall:win": "powershell -ExecutionPolicy Bypass -File scripts/uninstall.ps1",
@@ -766,8 +766,12 @@ async function main() {
766
766
  console.log('');
767
767
 
768
768
  if (!fs.existsSync(claudeHome)) {
769
- fail(`CLAUDE_HOME not found: ${claudeHome}`);
770
- process.exit(1);
769
+ fs.mkdirSync(claudeHome, { recursive: true });
770
+ warn(`CLAUDE_HOME did not exist — created ${claudeHome}`);
771
+ }
772
+ if (!fs.existsSync(settingsPath)) {
773
+ writeJson(settingsPath, {});
774
+ info(` created settings.json`);
771
775
  }
772
776
 
773
777
  // Read version + git SHA once
@@ -301,8 +301,8 @@ Read the task title and description, then:
301
301
  ⚠️ The validator does NOT use `isolation: "worktree"` — it must read the fully merged develop branch. Omit the isolation parameter for this dispatch only.
302
302
 
303
303
  ```
304
- "Read C:/Dev/regen-root/.rdc/guides/agent-bootstrap.md then C:/Dev/regen-root/.rdc/guides/verify.md.
305
- Read C:/Dev/regen-root/.rdc/guides/engineering-behavior.md before validating scope, deviations, and evidence.
304
+ "Read {PROJECT_ROOT}/.rdc/guides/agent-bootstrap.md then {PROJECT_ROOT}/.rdc/guides/verify.md.
305
+ Read {PROJECT_ROOT}/.rdc/guides/engineering-behavior.md before validating scope, deviations, and evidence.
306
306
  Validate these work items: [list of IDs and titles].
307
307
  Apps touched: [list].
308
308
  Git diff since build start: [attach or reference].
@@ -110,7 +110,7 @@ the source of truth.
110
110
  "skill": "rdc:review",
111
111
  "task": "Audit the current diff for regressions before merge.",
112
112
  "context": {
113
- "repo": "C:\\Dev\\regen-root",
113
+ "repo": "{PROJECT_ROOT}",
114
114
  "work_item_id": "<optional-uuid>",
115
115
  "branch": "develop",
116
116
  "owned_files": []
@@ -66,10 +66,10 @@ Template selection:
66
66
 
67
67
  ```
68
68
  rdc:deploy new: <slug>
69
- [ ] .dockerignore present at regen-root root (ls C:/Dev/regen-root/.dockerignore — STOP if missing)
69
+ [ ] .dockerignore present at project root (`ls {PROJECT_ROOT}/.dockerignore` — STOP if missing)
70
70
  [ ] Template loaded from docs/runbooks/coolify-app-templates.json (pick nextjs-app / static-site / mcp-server)
71
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)
72
+ [ ] DNS path chosen (A: staging wildcard B: apex C: other zone)
73
73
  [ ] DNS record verified or wildcard confirmed
74
74
  [ ] Cloudflare proxy setting correct for DNS path
75
75
  [ ] Application created via POST /applications/private-github-app (template payload)
@@ -117,7 +117,7 @@ rdc:deploy audit: fleet scan
117
117
  [ ] Env var drift (registry.env_vars_needed vs Coolify env)
118
118
  [ ] Branch mismatches (Coolify git_branch ≠ expected)
119
119
  [ ] Disk space on 64.237.54.189
120
- [ ] CF proxy misconfigs on *.dev.place.fund
120
+ [ ] DNS/proxy misconfigs on configured staging wildcard
121
121
  [ ] Duplicate apps (same repo, multiple UUIDs)
122
122
 
123
123
  Findings:
@@ -145,39 +145,39 @@ _COOLIFY=$(curl -s http://127.0.0.1:52437/v/coolify-api)
145
145
 
146
146
  # List applications
147
147
  curl -s -H "Authorization: Bearer $_COOLIFY" \
148
- https://deploy.regendevcorp.com/api/v1/applications
148
+ "$DEPLOY_API_BASE/api/v1/applications"
149
149
 
150
150
  # Get application details
151
151
  curl -s -H "Authorization: Bearer $_COOLIFY" \
152
- https://deploy.regendevcorp.com/api/v1/applications/<uuid>
152
+ "$DEPLOY_API_BASE/api/v1/applications/<uuid>"
153
153
 
154
154
  # Deploy (trigger)
155
155
  curl -s -X POST -H "Authorization: Bearer $_COOLIFY" \
156
- https://deploy.regendevcorp.com/api/v1/applications/<uuid>/deploy
156
+ "$DEPLOY_API_BASE/api/v1/applications/<uuid>/deploy"
157
157
 
158
158
  # Get deployment logs
159
159
  curl -s -H "Authorization: Bearer $_COOLIFY" \
160
- https://deploy.regendevcorp.com/api/v1/deployments/<deployment-id>
160
+ "$DEPLOY_API_BASE/api/v1/deployments/<deployment-id>"
161
161
 
162
162
  # Set env var
163
163
  curl -s -X POST -H "Authorization: Bearer $_COOLIFY" \
164
164
  -H "Content-Type: application/json" \
165
165
  -d '{"key":"<KEY>","value":"<VALUE>"}' \
166
- https://deploy.regendevcorp.com/api/v1/applications/<uuid>/envs
166
+ "$DEPLOY_API_BASE/api/v1/applications/<uuid>/envs"
167
167
 
168
168
  # Set watch_paths
169
169
  curl -s -X PATCH -H "Authorization: Bearer $_COOLIFY" \
170
170
  -H "Content-Type: application/json" \
171
171
  -d '{"watch_paths":"apps/<name>/**\npackages/**"}' \
172
- https://deploy.regendevcorp.com/api/v1/applications/<uuid>
172
+ "$DEPLOY_API_BASE/api/v1/applications/<uuid>"
173
173
  ```
174
174
 
175
175
  **Never print `$_COOLIFY` to stdout.** Inline from clauth only — do not assign raw strings.
176
176
 
177
177
  If clauth daemon is not responding (`curl -s http://127.0.0.1:52437/ping` fails):
178
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
179
+ BLOCKED: credential provider is not responding.
180
+ Fix: start the project's credential provider or configure deployment credentials through env vars, then retry.
181
181
  I cannot proceed until this is resolved.
182
182
  ```
183
183
 
@@ -189,7 +189,7 @@ I cannot proceed until this is resolved.
189
189
  ```
190
190
  Server UUID: ih386anenvvvn6fy1umtyow0
191
191
  Server IP: 64.237.54.189
192
- Dashboard: https://deploy.regendevcorp.com
192
+ Dashboard: <deployment-dashboard-url>
193
193
  GitHub App UUID: xdmcy60putp5h9j7k4kwg9c3
194
194
  ```
195
195
 
@@ -19,7 +19,7 @@ RDC-owned design execution for Studio and LIFEAI interfaces. This skill is the S
19
19
 
20
20
  - Studio, Palette Library, brand-token, theme, component, or live-editor work
21
21
  - Any design task that must understand RDC's real token tables and Studio routes
22
- - UI critique, audit, polish, colorize, type, layout, or craft work in `regen-root`
22
+ - UI critique, audit, polish, colorize, type, layout, or craft work in `{PROJECT_ROOT}`
23
23
  - Agent-side color-system exploration using Rampa CLI
24
24
  - Preparing token-aware implementation instructions for frontend/backend/data agents
25
25
 
@@ -166,7 +166,7 @@ Project docs to read for Studio work:
166
166
  8. **Verify.**
167
167
  - Run scoped tests only.
168
168
  - For Studio: prefer route smoke checks, token API checks, and browser screenshots when UI changed.
169
- - For CLI prompt work: run `node C:/Dev/rdc-skills/scripts/rdc-design-cli.mjs <command> <brief>` and inspect the generated report under `.rdc/reports/rdc-design-cli/`.
169
+ - For CLI prompt work: run `node {RDC_SKILLS_ROOT}/scripts/rdc-design-cli.mjs <command> <brief>` and inspect the generated report under `.rdc/reports/rdc-design-cli/`.
170
170
 
171
171
  ## Command Menu
172
172
 
@@ -188,15 +188,15 @@ Project docs to read for Studio work:
188
188
  Use the local helper to see exactly how much instruction text the skill is generating before sending it through an agent:
189
189
 
190
190
  ```powershell
191
- node C:/Dev/rdc-skills/scripts/rdc-design-cli.mjs studio "audit the Studio palette page"
192
- node C:/Dev/rdc-skills/scripts/rdc-design-cli.mjs palette "generate a PRT palette workflow"
193
- node C:/Dev/rdc-skills/scripts/rdc-design-cli.mjs --json theme "RDC earth-forward light theme"
191
+ node {RDC_SKILLS_ROOT}/scripts/rdc-design-cli.mjs studio "audit the Studio palette page"
192
+ node {RDC_SKILLS_ROOT}/scripts/rdc-design-cli.mjs palette "generate a PRT palette workflow"
193
+ node {RDC_SKILLS_ROOT}/scripts/rdc-design-cli.mjs --json theme "RDC earth-forward light theme"
194
194
  ```
195
195
 
196
196
  The helper writes logs to:
197
197
 
198
198
  ```text
199
- C:/Dev/rdc-skills/.rdc/reports/rdc-design-cli/
199
+ {RDC_SKILLS_ROOT}/.rdc/reports/rdc-design-cli/
200
200
  ```
201
201
 
202
202
  Each run includes character count, word count, approximate token count, references loaded, and the final prompt text.
@@ -11,7 +11,7 @@ description: "Usage `rdc:fs-mcp <task>` — Use the File System MCP bridge for l
11
11
  # rdc:fs-mcp — File System MCP Bridge
12
12
 
13
13
  ## When to Use
14
- - Claude.ai, Cowork, or another remote surface needs live access to `C:/Dev/regen-root` through the File System MCP.
14
+ - Claude.ai, Cowork, or another remote surface needs live access to `{PROJECT_ROOT}` through the File System MCP.
15
15
  - You need to read, search, or list current local repo files without relying on GitHub freshness.
16
16
  - You need to write a small/scratch file through FS MCP.
17
17
  - You need to move a larger cloud file into the local repo.
@@ -88,7 +88,7 @@ Required Claude.ai handoff shape:
88
88
 
89
89
  ```json
90
90
  {
91
- "repo": "LIFEAI/regen-root",
91
+ "repo": "<owner>/<repo>",
92
92
  "remote": "origin",
93
93
  "ref": "claude-ai/docs-upload-123",
94
94
  "paths": ["docs/plans/foo.md"],
@@ -227,7 +227,7 @@ Q1. Which Coolify project does this app belong to?
227
227
  → Record: project_uuid + environment_uuid (staging or production)
228
228
 
229
229
  Q2. What is the domain?
230
- *.dev.place.fund subdomain? (staging / internal tools)
230
+ staging wildcard subdomain? (staging / internal tools)
231
231
  → Custom subdomain on an existing zone? (e.g. app.regendevcorp.com)
232
232
  → Apex domain? (e.g. place.fund itself)
233
233
  → Domain on a different zone entirely? (e.g. skymesasouth.com)
@@ -238,7 +238,7 @@ Q3. Is this domain already in our Cloudflare account?
238
238
  → If NS not delegated to Cloudflare: A record in Cloudflare does nothing — must go to registrar
239
239
 
240
240
  Q4. Does this app need Cloudflare proxy (orange cloud)?
241
- *.dev.place.fund: NEVER proxy — breaks Traefik Let's Encrypt HTTP-01 cert provisioning
241
+ → Traefik/Let's Encrypt HTTP-01 staging wildcards are often safest unproxied; verify your platform's DNS requirements.
242
242
  → Custom domain needing DDoS/CDN: proxy OK only if SSL mode = Full (strict) + origin cert provisioned
243
243
  → Any doubt: start unproxied, add proxy after confirming SSL works
244
244