@lifeaitools/rdc-skills 0.24.42 → 0.25.1

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 (202) hide show
  1. package/.claude/settings.json +15 -15
  2. package/.claude-plugin/marketplace.json +21 -21
  3. package/.claude-plugin/plugin.json +1560 -1371
  4. package/.github/workflows/publish.yml +34 -34
  5. package/.github/workflows/self-test.yml +58 -58
  6. package/CHANGELOG.md +322 -310
  7. package/LICENSE +21 -21
  8. package/MANIFEST.md +224 -221
  9. package/README.md +377 -376
  10. package/README.sandbox.md +3 -3
  11. package/assets/watcher/viewer.html +164 -164
  12. package/bin/rdc-skills-mcp.mjs +316 -316
  13. package/commands/build.md +183 -183
  14. package/commands/collab.md +180 -180
  15. package/commands/deploy.md +152 -152
  16. package/commands/design.md +31 -31
  17. package/commands/edit.md +28 -28
  18. package/commands/fixit.md +150 -124
  19. package/commands/handoff.md +173 -173
  20. package/commands/help.md +95 -95
  21. package/commands/overnight.md +220 -220
  22. package/commands/plan.md +158 -158
  23. package/commands/preplan.md +131 -131
  24. package/commands/prototype.md +145 -145
  25. package/commands/release.md +49 -49
  26. package/commands/report.md +99 -99
  27. package/commands/review.md +120 -120
  28. package/commands/self-test.md +113 -113
  29. package/commands/status.md +86 -86
  30. package/commands/watch.md +98 -98
  31. package/commands/workitems.md +137 -137
  32. package/git-sha.json +1 -1
  33. package/guides/agent-bootstrap.md +295 -295
  34. package/guides/agents/backend.md +104 -104
  35. package/guides/agents/content.md +94 -94
  36. package/guides/agents/cs2.md +56 -56
  37. package/guides/agents/data.md +87 -87
  38. package/guides/agents/design.md +77 -77
  39. package/guides/agents/frontend.md +92 -92
  40. package/guides/agents/infrastructure.md +81 -81
  41. package/guides/agents/setup.md +281 -281
  42. package/guides/agents/verify.md +151 -151
  43. package/guides/agents/viz.md +106 -106
  44. package/guides/backend.md +146 -146
  45. package/guides/content.md +147 -147
  46. package/guides/cs2.md +190 -190
  47. package/guides/data.md +123 -123
  48. package/guides/design.md +116 -116
  49. package/guides/engineering-behavior.md +43 -43
  50. package/guides/escalation-protocol.md +125 -125
  51. package/guides/frontend.md +151 -151
  52. package/guides/history-md-spec.md +297 -297
  53. package/guides/infrastructure.md +179 -179
  54. package/guides/lessons-learned-spec.md +145 -151
  55. package/guides/output-contract.md +108 -108
  56. package/guides/publish-md-spec.md +289 -289
  57. package/guides/rdc-skills-startup.md +30 -30
  58. package/guides/verify.md +11 -11
  59. package/hooks/check-cwd.js +31 -31
  60. package/hooks/check-rdc-environment.js +164 -164
  61. package/hooks/check-services.js +6 -6
  62. package/hooks/check-stale-work-items.js +19 -19
  63. package/hooks/foreground-process-gate.js +128 -128
  64. package/hooks/gate-watchdog-selfcheck.js +257 -257
  65. package/hooks/hook-logger.js +25 -25
  66. package/hooks/lib/run-evidence-gate.mjs +241 -241
  67. package/hooks/no-stop-open-epics.js +127 -127
  68. package/hooks/post-tool-batch-gate.js +203 -203
  69. package/hooks/post-work-check.js +21 -21
  70. package/hooks/postcompact-log.js +13 -13
  71. package/hooks/precompact-log.js +13 -13
  72. package/hooks/rate-limit-retry.js +46 -46
  73. package/hooks/rdc-invocation-marker.js +157 -157
  74. package/hooks/rdc-output-contract-gate.js +94 -94
  75. package/hooks/require-work-item-on-commit.js +294 -294
  76. package/hooks/restart-brief.js +19 -19
  77. package/hooks/run-hidden-hook.ps1 +47 -47
  78. package/hooks/task-completed-gate.js +274 -274
  79. package/hooks/work-item-exit-gate.js +944 -944
  80. package/lib/catalog.mjs +236 -236
  81. package/lib/cloud-rewrite.mjs +155 -155
  82. package/package.json +57 -57
  83. package/rules/work-items-rpc.md +520 -520
  84. package/scaffold/templates/HISTORY.md.template +39 -39
  85. package/scaffold/templates/PUBLISH.md.template +21 -21
  86. package/scaffold/templates/brochure-studio-default.html +70 -70
  87. package/scripts/acceptance.mjs +502 -502
  88. package/scripts/fixtures/guides/bad-guide.md +15 -15
  89. package/scripts/fixtures/guides-clean/good-guide.md +16 -16
  90. package/scripts/install-rdc-skills.js +1401 -1289
  91. package/scripts/install.ps1 +202 -202
  92. package/scripts/install.sh +132 -132
  93. package/scripts/lib/assertions.mjs +287 -287
  94. package/scripts/lib/manifest-schema.mjs +754 -754
  95. package/scripts/lib/runner.mjs +465 -465
  96. package/scripts/lib/sandbox.mjs +435 -435
  97. package/scripts/prepack.mjs +32 -32
  98. package/scripts/rdc-brochure.mjs +482 -482
  99. package/scripts/rdc-design-cli.mjs +134 -134
  100. package/scripts/rebuild-mcp.mjs +107 -107
  101. package/scripts/self-test.mjs +1460 -1460
  102. package/scripts/stamp-git-sha.mjs +29 -29
  103. package/scripts/test-guide-validator.mjs +196 -196
  104. package/scripts/test-rdc-hooks.mjs +145 -145
  105. package/scripts/uninstall.ps1 +77 -77
  106. package/scripts/uninstall.sh +69 -69
  107. package/scripts/update.ps1 +43 -43
  108. package/scripts/update.sh +43 -43
  109. package/scripts/validate-place-histories.js +461 -461
  110. package/scripts/validate-publish-manifests.js +502 -424
  111. package/scripts/watch-init.mjs +100 -100
  112. package/skills/brochure/SKILL.md +107 -107
  113. package/skills/build/SKILL.md +578 -563
  114. package/skills/channel-formatter/SKILL.md +538 -533
  115. package/skills/co-develop/SKILL.md +196 -196
  116. package/skills/collab/SKILL.md +239 -239
  117. package/skills/convert/SKILL.md +167 -140
  118. package/skills/deploy/SKILL.md +541 -541
  119. package/skills/design/SKILL.md +211 -211
  120. package/skills/design/reference/ownership.md +16 -16
  121. package/skills/design/reference/rampa.md +92 -92
  122. package/skills/design/reference/studio-model.md +153 -153
  123. package/skills/edit/SKILL.md +98 -98
  124. package/skills/env/SKILL.md +141 -0
  125. package/skills/fixit/SKILL.md +203 -165
  126. package/skills/fs-mcp/SKILL.md +183 -148
  127. package/skills/handoff/SKILL.md +236 -236
  128. package/skills/help/SKILL.md +143 -143
  129. package/skills/housekeeping/SKILL.md +160 -219
  130. package/skills/lifeai-brochure-author/SKILL.md +340 -340
  131. package/skills/new-model/SKILL.md +49 -0
  132. package/skills/onramp/SKILL.md +1459 -0
  133. package/skills/overnight/SKILL.md +251 -251
  134. package/skills/plan/SKILL.md +345 -345
  135. package/skills/preplan/SKILL.md +90 -90
  136. package/skills/prototype/SKILL.md +150 -150
  137. package/skills/rdc-brochurify/SKILL.md +245 -245
  138. package/skills/rdc-extract-verifier-rules/SKILL.md +191 -191
  139. package/skills/regen-media/SKILL.md +94 -0
  140. package/skills/release/SKILL.md +140 -140
  141. package/skills/report/SKILL.md +100 -100
  142. package/skills/review/SKILL.md +160 -152
  143. package/skills/rpms-filemap/SKILL.cloud.md +111 -111
  144. package/skills/rpms-filemap/SKILL.md +111 -111
  145. package/skills/self-test/SKILL.md +132 -132
  146. package/skills/status/SKILL.md +99 -99
  147. package/skills/terminal-config/SKILL.md +62 -62
  148. package/skills/tests/MATRIX.md +55 -54
  149. package/skills/tests/README.md +47 -47
  150. package/skills/tests/onramp.test.json +87 -0
  151. package/skills/tests/rdc-brochure.test.json +34 -34
  152. package/skills/tests/rdc-build.test.json +36 -36
  153. package/skills/tests/rdc-channel-formatter.test.json +45 -45
  154. package/skills/tests/rdc-co-develop.test.json +29 -29
  155. package/skills/tests/rdc-collab.test.json +29 -29
  156. package/skills/tests/rdc-convert.test.json +35 -35
  157. package/skills/tests/rdc-deploy.test.json +30 -30
  158. package/skills/tests/rdc-design.test.json +27 -27
  159. package/skills/tests/rdc-edit.test.json +29 -29
  160. package/skills/tests/rdc-fixit.test.json +36 -36
  161. package/skills/tests/rdc-fs-mcp.test.json +36 -36
  162. package/skills/tests/rdc-handoff.test.json +28 -28
  163. package/skills/tests/rdc-help.test.json +29 -29
  164. package/skills/tests/rdc-housekeeping.test.json +28 -32
  165. package/skills/tests/rdc-lifeai-brochure-author.test.json +35 -35
  166. package/skills/tests/rdc-overnight.test.json +37 -37
  167. package/skills/tests/rdc-plan.test.json +27 -27
  168. package/skills/tests/rdc-preplan.test.json +31 -31
  169. package/skills/tests/rdc-prototype.test.json +28 -28
  170. package/skills/tests/rdc-rdc-brochurify.test.json +23 -23
  171. package/skills/tests/rdc-rdc-extract-verifier-rules.test.json +34 -34
  172. package/skills/tests/rdc-regen-media.test.json +29 -0
  173. package/skills/tests/rdc-release.test.json +29 -29
  174. package/skills/tests/rdc-report.test.json +28 -28
  175. package/skills/tests/rdc-review.test.json +29 -29
  176. package/skills/tests/rdc-rpms-filemap.test.json +28 -28
  177. package/skills/tests/rdc-self-test.test.json +24 -24
  178. package/skills/tests/rdc-status.test.json +29 -29
  179. package/skills/tests/rdc-terminal-config.test.json +29 -29
  180. package/skills/tests/rdc-watch.test.json +24 -24
  181. package/skills/tests/rdc-workitems.test.json +27 -27
  182. package/skills/watch/SKILL.md +97 -97
  183. package/skills/workitems/SKILL.md +151 -151
  184. package/tests/acceptance.test.mjs +59 -59
  185. package/tests/channel-formatter.contract.test.mjs +251 -251
  186. package/tests/curl-surface.test.mjs +289 -289
  187. package/tests/harness-gates.test.mjs +325 -325
  188. package/tests/help-surface.test.mjs +61 -61
  189. package/tests/install-rdc-skills.test.mjs +49 -49
  190. package/tests/manifest-contract-fields.test.mjs +78 -78
  191. package/tests/mcp.test.mjs +271 -271
  192. package/tests/rdc-brochure.test.mjs +125 -125
  193. package/tests/require-work-item-on-commit.test.mjs +162 -162
  194. package/tests/run-evidence-gate.test.mjs +82 -82
  195. package/tests/skill-test-matrix.test.mjs +66 -66
  196. package/tests/validate-skills.js +27 -27
  197. package/tests/work-item-exit-gate-l2.test.mjs +368 -368
  198. package/tests/work-item-exit-gate-l3.test.mjs +197 -197
  199. package/RELEASE.md +0 -42
  200. package/tests/housekeeping-lessons-triage.test.mjs +0 -49
  201. package/tests/lessons-pipeline-contract.test.mjs +0 -27
  202. package/tests/release-contract.test.mjs +0 -16
@@ -1,248 +1,189 @@
1
- ---
2
- name: rdc:housekeeping
3
- description: "Usage `rdc:housekeeping [--fix|--lessons]` — Weekly maintenance audit and lessons-only triage with a prior-fix audit, architectural interview gate, RDC work routing, and a complete report. Produces `.rdc/reports/YYYY-MM-DD-housekeeping.md`."
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
- > 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`), then `{PROJECT_ROOT}/.rdc/guides/engineering-behavior.md` (fallback: `{PROJECT_ROOT}/.rdc/guides/engineering-behavior.md`).
11
-
12
- > **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.
13
-
14
-
15
- # rdc:housekeeping — Weekly Maintenance Audit
16
-
17
- ## When to Use
18
- - Weekly maintenance (Sunday or session start)
19
- - After large batch of new apps/packages/sites added
20
- - Before monthly `workspace-intelligence-audit`
21
- - When disoriented about repo health
22
- - Called by `rdc:overnight` as a pre-flight if `--housekeeping` flag set
23
-
1
+ ---
2
+ name: rdc:housekeeping
3
+ description: "Usage `rdc:housekeeping [--fix]` — Weekly maintenance audit: directory structure verification, PUBLISH.md URL validation, CLAUDE.md freshness, orphan detection, places compliance, and stale version scan. Produces `.rdc/reports/YYYY-MM-DD-housekeeping.md`. With `--fix`, auto-remediate safe issues."
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
+ > 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`), then `{PROJECT_ROOT}/.rdc/guides/engineering-behavior.md` (fallback: `{PROJECT_ROOT}/.rdc/guides/engineering-behavior.md`).
11
+
12
+ > **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.
13
+
14
+
15
+ # rdc:housekeeping — Weekly Maintenance Audit
16
+
17
+ ## When to Use
18
+ - Weekly maintenance (Sunday or session start)
19
+ - After large batch of new apps/packages/sites added
20
+ - Before monthly `workspace-intelligence-audit`
21
+ - When disoriented about repo health
22
+ - Called by `rdc:overnight` as a pre-flight if `--housekeeping` flag set
23
+
24
24
  ## Arguments
25
25
  - `rdc:housekeeping` — audit only, report issues
26
26
  - `rdc:housekeeping --fix` — auto-remediate safe issues (scaffold missing CLAUDE.md, fix PUBLISH.md URLs, create missing tracker dirs)
27
- - `rdc:housekeeping --lessons` — process only the weekly lessons triage workflow, including its audit, decision interview, routed work, and report
28
-
29
- ## Procedure
30
27
 
31
- When invoked with `--lessons`, skip every non-lessons maintenance section below (including Directory Structure Verification) and begin directly at **Lessons triage (weekly)**. Produce the lessons report only.
28
+ ## Procedure
32
29
 
33
30
  ### 1. Directory Structure Verification
34
-
35
- Scan every deployable target for required files:
36
-
37
- ```
38
- For each dir in apps/*, sites/*, models/*, workers/*, mcp-servers/*, packages/*:
39
- ```
40
-
41
- | Target Type | Required Files |
42
- |-------------|---------------|
43
- | Next.js app (`apps/*` with next.config) | `package.json`, `CLAUDE.md`, `PUBLISH.md`, `tsconfig.json` |
44
- | Vite SPA (`models/*`, `sites/*` with vite.config) | `package.json`, `CLAUDE.md`, `PUBLISH.md`, `vite.config.js` or `.ts`, `dist/` |
45
- | Static site (`sites/*` no vite/next) | `index.html`, `CLAUDE.md`, `PUBLISH.md` |
46
- | Worker (`workers/*`) | `package.json`, `CLAUDE.md`, `wrangler.toml`, `src/index.ts` |
47
- | MCP server (`mcp-servers/*`) | `package.json`, `CLAUDE.md`, `ARCHITECTURE.md`, `PUBLISH.md` |
48
- | Package (`packages/*`) | `package.json`, `CLAUDE.md`, `tsconfig.json`, `src/` |
49
-
50
- Report: `PASS` / `MISSING: <file list>` per target.
51
-
52
- **With `--fix`:** Scaffold missing CLAUDE.md files using package.json description + src/ inspection (same pattern as the 2026-06-08 audit). Do NOT auto-create PUBLISH.md (requires domain knowledge).
53
-
54
- ### 2. PUBLISH.md URL Validation
55
-
56
- For every PUBLISH.md that exists:
57
-
58
- 1. Parse frontmatter: extract `entity_slug`, `environments`, `status`
59
- 2. Query `app_deployments` for the slug:
60
- ```sql
61
- SELECT app_slug, environment, url, host_type FROM app_deployments WHERE app_slug = '<slug>';
62
- ```
63
- 3. Cross-reference: any URL mentioned in the PUBLISH.md body/notes/SURFACE blocks must match the `app_deployments.url` for that environment
64
- 4. Check domain convention compliance (per `.claude/rules/domain-conventions.md`):
65
- - Real estate projects → `*.dev.place.fund` (dev) / `*.place.fund` (prod)
66
- - Class-A brands → `dev.<brand>` (dev) / `<brand>` (prod)
67
- - Internal tools → `*.dev.regendevcorp.com` (dev) / `*.regendevcorp.com` (prod)
68
- 5. Flag mismatches: `MISMATCH: PUBLISH.md says <X>, app_deployments says <Y>`
69
-
70
- **With `--fix`:** Update PUBLISH.md URLs to match app_deployments (the DB is the source of truth).
71
-
72
- ### 3. CLAUDE.md Freshness Check
73
-
74
- For each package with a CLAUDE.md:
75
- 1. Get CLAUDE.md last modified date
76
- 2. Get latest src/ modification date
77
- 3. If src/ changed after CLAUDE.md by >30 days, flag: `STALE: CLAUDE.md older than src/ by <N> days`
78
- 4. Check if new exports were added to `src/index.ts` that aren't mentioned in CLAUDE.md
79
-
80
- **With `--fix`:** Re-scaffold CLAUDE.md from current src/ state.
81
-
82
- ### 4. Package.json Health
83
-
84
- For each package:
85
- 1. Check `version` — flag `0.0.0` or `0.1.0` on packages with >5 src files as potentially stale
86
- 2. Check `exports` field exists (required for monorepo packages)
87
- 3. Check `name` matches `@regen/<dir-name>` or `@lifeai/<dir-name>` convention
88
- 4. Flag name mismatches between directory and package.json
89
-
90
- ### 5. Places Compliance
91
-
92
- For each directory under `places/`:
93
- 1. Check PLACE.md exists with valid frontmatter (`schema_version`, `prt_slug`, `project_type`, `research_status`)
94
- 2. Check HISTORY.md exists (required for real-estate project types per `.claude/rules/history-md-convention.md`)
95
- 3. Check `corpus/INDEX.md` exists
96
- 4. Check `tracker/` directory exists with DECISIONS.md + MILESTONES.md
97
- 5. Check `artifacts/` directory exists
98
-
99
- **With `--fix`:** Scaffold missing PLACE.md from HISTORY.md frontmatter, create missing tracker/corpus dirs.
100
-
101
- ### 6. Orphan Detection
102
-
103
- 1. **Empty/stub directories:** Any target dir with <3 files and no package.json → flag for removal
104
- 2. **Standalone repo drift:** Check `C:/Dev/` for repos that have monorepo copies and compare versions
105
- 3. **Dead app_deployments rows:** Query for slugs with `status='down'` or `status='broken'`
106
-
107
- ### 7. Stale Coolify Apps on .dev URLs
108
-
109
- Query Coolify API for apps serving `.dev.*` URLs — these should be on PM2 per domain conventions:
110
- ```bash
111
- TOKEN=$(curl -s http://127.0.0.1:52437/v/coolify-api)
112
- curl -s -H "Authorization: Bearer $TOKEN" "https://deploy.regendevcorp.com/api/v1/applications" | \
113
- python3 -c "import sys,json; [print(a['name'], a.get('fqdn','')) for a in json.load(sys.stdin) if '.dev.' in (a.get('fqdn',''))]"
114
- ```
115
-
116
- Flag any .dev apps still on Coolify.
117
-
118
- ### 8. Media CDN Hotlink Allowlist
119
-
120
- Read `workers/media-cdn/src/index.ts` ALLOWED_SUFFIXES. Cross-reference against all class-A brand domains from `app_deployments`:
121
- ```sql
122
- SELECT DISTINCT url FROM app_deployments WHERE host_type = 'coolify' AND url NOT LIKE '%.place.fund' AND url NOT LIKE '%.regendevcorp.com';
123
- ```
124
-
125
- Flag any class-A domain NOT in ALLOWED_SUFFIXES.
126
-
127
- **With `--fix`:** Add missing suffixes to ALLOWED_SUFFIXES and redeploy the worker.
128
-
129
- ### 9. Report
130
-
131
- Write to `.rdc/reports/YYYY-MM-DD-housekeeping.md`:
132
-
133
- ```markdown
134
- # Housekeeping Report — YYYY-MM-DD
135
-
136
- ## Summary
137
- | Check | Pass | Fail | Fixed |
138
- |-------|------|------|-------|
139
-
140
- ## Directory Structure
141
- <table of targets with issues>
142
-
143
- ## PUBLISH.md URL Validation
144
- <table of mismatches>
145
-
146
- ## CLAUDE.md Freshness
147
- <stale entries>
148
-
149
- ## Package Health
150
- <version/exports/naming issues>
151
-
152
- ## Places Compliance
153
- <incomplete places>
154
-
155
- ## Orphans
156
- <empty dirs, dead deployments>
157
-
158
- ## Media CDN
159
- <missing allowlist entries>
160
-
161
- ## Verdict: CLEAN / HAS_ISSUES
162
- ```
163
-
164
- ## Lessons triage (weekly)
165
31
 
166
- Before filtering or clustering, read every candidate lesson **in full**. Normalize every
167
- legacy lesson that has `status` but no `lesson_status` by moving its existing value to
168
- `lesson_status` and record the migration in the report. Validate that each candidate has
169
- exactly one frontmatter block, canonical `lesson_status`, and the required routing fields
170
- (`id`, `date`, `skill`, `runtime`, `scope`, `area`, `needs_claude`, `links`); a malformed
171
- record is itself a triage finding, never an invisible parser omission.
32
+ Scan every deployable target for required files:
33
+
34
+ ```
35
+ For each dir in apps/*, sites/*, models/*, workers/*, mcp-servers/*, packages/*:
36
+ ```
37
+
38
+ | Target Type | Required Files |
39
+ |-------------|---------------|
40
+ | Next.js app (`apps/*` with next.config) | `package.json`, `CLAUDE.md`, `PUBLISH.md`, `tsconfig.json` |
41
+ | Vite SPA (`models/*`, `sites/*` with vite.config) | `package.json`, `CLAUDE.md`, `PUBLISH.md`, `vite.config.js` or `.ts`, `dist/` |
42
+ | Static site (`sites/*` no vite/next) | `index.html`, `CLAUDE.md`, `PUBLISH.md` |
43
+ | Worker (`workers/*`) | `package.json`, `CLAUDE.md`, `wrangler.toml`, `src/index.ts` |
44
+ | MCP server (`mcp-servers/*`) | `package.json`, `CLAUDE.md`, `ARCHITECTURE.md`, `PUBLISH.md` |
45
+ | Package (`packages/*`) | `package.json`, `CLAUDE.md`, `tsconfig.json`, `src/` |
46
+
47
+ Report: `PASS` / `MISSING: <file list>` per target.
48
+
49
+ **With `--fix`:** Scaffold missing CLAUDE.md files using package.json description + src/ inspection (same pattern as the 2026-06-08 audit). Do NOT auto-create PUBLISH.md (requires domain knowledge).
50
+
51
+ ### 2. PUBLISH.md URL Validation
52
+
53
+ For every PUBLISH.md that exists:
54
+
55
+ 1. Parse frontmatter: extract `entity_slug`, `environments`, `status`
56
+ 2. Query `app_deployments` for the slug:
57
+ ```sql
58
+ SELECT app_slug, environment, url, host_type FROM app_deployments WHERE app_slug = '<slug>';
59
+ ```
60
+ 3. Cross-reference: any URL mentioned in the PUBLISH.md body/notes/SURFACE blocks must match the `app_deployments.url` for that environment
61
+ 4. Check domain convention compliance (per `.claude/rules/domain-conventions.md`):
62
+ - Real estate projects → `*.dev.place.fund` (dev) / `*.place.fund` (prod)
63
+ - Class-A brands → `dev.<brand>` (dev) / `<brand>` (prod)
64
+ - Internal tools → `*.dev.regendevcorp.com` (dev) / `*.regendevcorp.com` (prod)
65
+ 5. Flag mismatches: `MISMATCH: PUBLISH.md says <X>, app_deployments says <Y>`
66
+
67
+ **With `--fix`:** Update PUBLISH.md URLs to match app_deployments (the DB is the source of truth).
68
+
69
+ ### 3. CLAUDE.md Freshness Check
172
70
 
173
- Before asking Dave a single question or routing any fix, write four synthesis artifacts in
174
- the weekly report: (1) a correlation table accounting for **every** candidate lesson with its
175
- remediation train, shared root cause, systemic fix, owner/lifecycle, and closure evidence;
176
- (2) a remediation model that collapses recurring symptoms into the smallest control set and
177
- execution order; (3) a resolution audit; and (4) one compact architectural-decision table
178
- with options and a recommendation for each genuine trade-off. Do not make Dave reconstruct
179
- the model from serial lesson prompts. This phase is a controlled weekly workflow: synthesize
180
- first, then collect the complete architectural interview, then route approved work through
181
- RDC. It must never create a duplicate plan or fixit for a lesson that is already fixed or
182
- sufficiently mitigated.
71
+ For each package with a CLAUDE.md:
72
+ 1. Get CLAUDE.md last modified date
73
+ 2. Get latest src/ modification date
74
+ 3. If src/ changed after CLAUDE.md by >30 days, flag: `STALE: CLAUDE.md older than src/ by <N> days`
75
+ 4. Check if new exports were added to `src/index.ts` that aren't mentioned in CLAUDE.md
183
76
 
184
- ### 1. Cluster
77
+ **With `--fix`:** Re-scaffold CLAUDE.md from current src/ state.
185
78
 
186
- Cluster by `area` + root-cause similarity and dedupe repeats into one proposed outcome. Give every cluster a stable identifier and list its lesson ids, area, evidenced root cause, proposed change, scope, and linked commits/work items.
79
+ ### 4. Package.json Health
187
80
 
188
- ### 2. Resolution audit (mandatory before routing work)
81
+ For each package:
82
+ 1. Check `version` — flag `0.0.0` or `0.1.0` on packages with >5 src files as potentially stale
83
+ 2. Check `exports` field exists (required for monorepo packages)
84
+ 3. Check `name` matches `@regen/<dir-name>` or `@lifeai/<dir-name>` convention
85
+ 4. Flag name mismatches between directory and package.json
189
86
 
190
- For every cluster, inspect the relevant code, rules, skills, guides, tests, recent commits, linked work items, and existing mitigations before creating any `rdc:fixit`, `rdc:plan`, or `rdc:build` work.
87
+ ### 5. Places Compliance
191
88
 
192
- Record auditable evidence and classify the cluster as exactly one of:
89
+ For each directory under `places/`:
90
+ 1. Check PLACE.md exists with valid frontmatter (`schema_version`, `prt_slug`, `project_type`, `research_status`)
91
+ 2. Check HISTORY.md exists (required for real-estate project types per `.claude/rules/history-md-convention.md`)
92
+ 3. Check `corpus/INDEX.md` exists
93
+ 4. Check `tracker/` directory exists with DECISIONS.md + MILESTONES.md
94
+ 5. Check `artifacts/` directory exists
193
95
 
194
- - `already-fixed` the needed behavior is present and backed by a cited source location, test, or shipped commit; do not create new work.
195
- - `sufficiently-mitigated` — an existing guard, process, or documentation reduces the risk enough that no additional change is justified; do not create new work and record the remaining risk.
196
- - `still-open` — the evidence does not fully address the root cause; only this result may enter the routing phase.
96
+ **With `--fix`:** Scaffold missing PLACE.md from HISTORY.md frontmatter, create missing tracker/corpus dirs.
197
97
 
198
- The audit must name what was inspected, the evidence found or missing, the conclusion, and the reason no duplicate work was created. Mark an already-fixed lesson `lesson_status: applied` only when its prior commit is linked; mark a sufficiently-mitigated lesson `lesson_status: wont-fix` with the mitigation and remaining-risk reason. Keep partially mitigated clusters open for routing.
98
+ ### 6. Orphan Detection
199
99
 
200
- ### 3. Architectural report and interview gate
100
+ 1. **Empty/stub directories:** Any target dir with <3 files and no package.json flag for removal
101
+ 2. **Standalone repo drift:** Check `C:/Dev/` for repos that have monorepo copies and compare versions
102
+ 3. **Dead app_deployments rows:** Query for slugs with `status='down'` or `status='broken'`
201
103
 
202
- After the synthesis artifacts are complete, write the full architectural report for every `still-open` architectural cluster. For each one include the decision to make, affected systems, options and tradeoffs, recommendation, unresolved risks, and the result of the resolution audit. This produces the complete decision table and is the required gate before every routed fix.
104
+ ### 7. Stale Coolify Apps on .dev URLs
203
105
 
204
- Create a complete interview list from that report before changing any file. In attended mode, ask every required architectural question via `AskUserQuestion`, one question at a time, and record the question, answer, decision, rationale, and affected cluster. Do not start simple or architectural fixes until all interview questions have answers or the corresponding cluster is explicitly deferred. Silence is not approval.
106
+ Query Coolify API for apps serving `.dev.*` URLs these should be on PM2 per domain conventions:
107
+ ```bash
108
+ TOKEN=$(curl -s http://127.0.0.1:52437/v/coolify-api)
109
+ curl -s -H "Authorization: Bearer $TOKEN" "https://deploy.regendevcorp.com/api/v1/applications" | \
110
+ python3 -c "import sys,json; [print(a['name'], a.get('fqdn','')) for a in json.load(sys.stdin) if '.dev.' in (a.get('fqdn',''))]"
111
+ ```
205
112
 
206
- If there are no architectural decisions, record `Architectural interview: none required` in the report before continuing. In unattended mode, do not guess: create the equivalent `human_items` decision records for every unresolved architectural question, link a work item, and defer those clusters.
113
+ Flag any .dev apps still on Coolify.
207
114
 
208
- ### 4. Route only still-open, approved work through RDC
115
+ ### 8. Media CDN Hotlink Allowlist
209
116
 
210
- After the resolution audit and the complete architectural interview, route every approved executable cluster through an RDC lifecycle with a complete work item, required checklist evidence, implementation report, review status, validator closure, commit, and push. Direct edits outside an RDC work item are forbidden.
117
+ Read `workers/media-cdn/src/index.ts` ALLOWED_SUFFIXES. Cross-reference against all class-A brand domains from `app_deployments`:
118
+ ```sql
119
+ SELECT DISTINCT url FROM app_deployments WHERE host_type = 'coolify' AND url NOT LIKE '%.place.fund' AND url NOT LIKE '%.regendevcorp.com';
120
+ ```
211
121
 
212
- - `scope: simple` invoke `rdc:fixit` when the change is genuinely under five files and thirty minutes; `rdc:fixit` creates and completes the sole work item. Include the cluster and lesson ids in its description and action-register entry. Otherwise use `rdc:plan` followed by `rdc:build`.
213
- - `scope: architectural` — use `rdc:plan` followed by `rdc:build` unless the approved change is genuinely within the `rdc:fixit` threshold. The plan must contain the approved interview decision and acceptance checks.
214
- - Deferred or declined clusters — set `lesson_status: triaged` or `lesson_status: wont-fix`, link the work item or reason, and do not make an unapproved change.
122
+ Flag any class-A domain NOT in ALLOWED_SUFFIXES.
215
123
 
216
- Each routed wave must run the review gate: `rdc:fixit` performs its mandatory review and every batch also completes `rdc:review` before lessons are marked applied. Deploy a changed deployable target to dev through its normal RDC lifecycle and record the deployment evidence; document `not applicable` for documentation-only, rule-only, or skill-only work.
124
+ **With `--fix`:** Add missing suffixes to ALLOWED_SUFFIXES and redeploy the worker.
217
125
 
218
- ### 5. Complete weekly lessons report
126
+ ### 9. Report
219
127
 
220
- Add a `## Weekly Lessons Triage` section to `.rdc/reports/YYYY-MM-DD-housekeeping.md` with:
128
+ Write to `.rdc/reports/YYYY-MM-DD-housekeeping.md`:
221
129
 
222
- 1. `### Cluster and resolution audit` — cluster ids, lessons, area/cause, inspected evidence, `already-fixed` / `sufficiently-mitigated` / `still-open` result, and duplicate-work decision.
223
- 2. `### Architectural report` each decision, options, tradeoffs, recommendation, risks, and audit result.
224
- 3. `### Architectural interview` — the complete question-and-answer list, decisions, deferrals, and clusters affected; explicitly state when none was required.
225
- 4. `### RDC action register` — work item, selected lifecycle (`rdc:fixit` or `rdc:plan` -> `rdc:build`), test/review evidence, commit/push, dev deployment or `not applicable`, and final lesson status.
226
- 5. `### Outcome counts` open, deduped, already fixed, sufficiently mitigated, applied, triaged, wont-fix, deferred, fixits, builds, review passes, and dev deployments.
130
+ ```markdown
131
+ # Housekeeping ReportYYYY-MM-DD
132
+
133
+ ## Summary
134
+ | Check | Pass | Fail | Fixed |
135
+ |-------|------|------|-------|
136
+
137
+ ## Directory Structure
138
+ <table of targets with issues>
139
+
140
+ ## PUBLISH.md URL Validation
141
+ <table of mismatches>
142
+
143
+ ## CLAUDE.md Freshness
144
+ <stale entries>
145
+
146
+ ## Package Health
147
+ <version/exports/naming issues>
148
+
149
+ ## Places Compliance
150
+ <incomplete places>
151
+
152
+ ## Orphans
153
+ <empty dirs, dead deployments>
154
+
155
+ ## Media CDN
156
+ <missing allowlist entries>
157
+
158
+ ## Verdict: CLEAN / HAS_ISSUES
159
+ ```
160
+
161
+ ## Lessons triage (weekly)
162
+
163
+ Read all `.rdc/lessons/*.md` with `status: open` (schema + procedure: `.rdc/guides/lessons-learned-spec.md` § Triage procedure). Cluster by `area` + root-cause similarity (dedupe repeats into one fix).
227
164
 
228
165
  ### Attended mode (default — a human is present)
229
166
 
230
- The attended run follows sections 1 through 5 in order. The full interview list and all answers are collected before the first routed fix starts; then batch approved fixes by lifecycle and target. Set `lesson_status: applied` only after the routed work item has passed review, the commit is pushed, required dev deployment evidence is recorded, and the commit is linked.
231
-
232
- ### Unattended mode (no human overnight / cron / `rdc:overnight`)
233
-
234
- When the weekly triage runs unattended, perform the same cluster and resolution audit before any routing, then follow `.rdc/guides/lessons-learned-spec.md` § **Triage procedure — UNATTENDED weekly mode** — do not run `AskUserQuestion`. In brief (the spec is authoritative):
235
-
236
- - **Per-difficulty model routing** (reuses the `rdc:build` table): the run is led by `claude-opus-4-8` for clustering + scope/difficulty triage; mechanical apply → `claude-sonnet-4-6`; harder multi-file/migration fix → `claude-opus-4-6`; design/architectural fix → `claude-opus-4-8`.
237
- - `scope: simple` → create a complete work item and route via `rdc:fixit` or `rdc:plan` -> `rdc:build`; never apply directly.
238
- - `scope: architectural` with a single clear correct fix (records an already-learned lesson — e.g. "document X", "add a gate", update a guide) route through `rdc:plan` `rdc:build` (or `rdc:fixit` if genuinely <5 files), update the documentation, set `lesson_status: applied`/`triaged`.
239
- - `scope: architectural` **and genuinely ambiguous** (multiple valid approaches, real tradeoffs) → write a `human_items` row (`item_type='decision'`, with options in `suggested_agent_prompt`, `source_type='lesson'`, `source_fingerprint` for dedupe), set `lesson_status: triaged`, spawn + link a `work_item`. Decided in the morning. This is the asynchronous equivalent of the attended interview and honors `.claude/rules/architectural-change-approval.md`.
240
-
241
- Never delete lesson files `applied` and `wont-fix` stay as the audit trail.
242
-
243
- ## Rules
244
- - Never run `pnpm build` — not needed for this audit
245
- - Never modify app_deploymentsthe DB is the source of truth; PUBLISH.md conforms to it
246
- - The `--fix` flag only auto-remediates safe issues (CLAUDE.md scaffold, missing dirs, URL alignment)
247
- - Architectural changes (name mismatches, dead package removal) are always flagged, never auto-fixed
248
- - This skill is read-heavy, write-light most runs are audit-only
167
+ For each cluster:
168
+
169
+ - `scope: simple` → apply the fix directly (rule line, skill-doc edit, config, guard), commit it, set the lesson(s) `status: applied` with the commit linked.
170
+ - `scope: architectural` → do NOT edit. Present the issue + options via `AskUserQuestion` (per `.claude/rules/architectural-change-approval.md`). On approval, apply via the correct lifecycle (rdc-skills tag/push for skills; cited commit for rules) and set `status: applied`. If deferred, set `status: triaged` and spawn a `work_item`.
171
+ - Not worth fixing `status: wont-fix` with a one-line reason.
172
+
173
+ ### Unattended mode (no human overnight / cron / `rdc:overnight`)
174
+
175
+ When the weekly triage runs unattended, follow `.rdc/guides/lessons-learned-spec.md` § **Triage procedure UNATTENDED weekly mode** do not run `AskUserQuestion`. In brief (the spec is authoritative):
176
+
177
+ - **Per-difficulty model routing** (reuses the `rdc:build` table): the run is led by `claude-opus-4-8` for clustering + scope/difficulty triage; mechanical apply → `claude-sonnet-4-6`; harder multi-file/migration fix → `claude-opus-4-6`; design/architectural fix → `claude-opus-4-8`.
178
+ - `scope: simple` apply directly or via `rdc:fixit`, commit, `status: applied`.
179
+ - `scope: architectural` with a single clear correct fix (records an already-learned lesson — e.g. "document X", "add a gate", update a guide) → route through `rdc:plan` → `rdc:build` (or `rdc:fixit` if genuinely <5 files), update the documentation, set `status: applied`/`triaged`.
180
+ - `scope: architectural` **and genuinely ambiguous** (multiple valid approaches, real tradeoffs) → write a `human_items` row (`item_type='decision'`, with options in `suggested_agent_prompt`, `source_type='lesson'`, `source_fingerprint` for dedupe), set `status: triaged`, spawn + link a `work_item`. Decided in the morning. This is the asynchronous equivalent of the attended interview and honors `.claude/rules/architectural-change-approval.md`.
181
+
182
+ Never delete lesson files `applied` and `wont-fix` stay as the audit trail. Report captured / applied / escalated / deferred counts in the housekeeping report.
183
+
184
+ ## Rules
185
+ - Never run `pnpm build`not needed for this audit
186
+ - Never modify app_deployments — the DB is the source of truth; PUBLISH.md conforms to it
187
+ - The `--fix` flag only auto-remediates safe issues (CLAUDE.md scaffold, missing dirs, URL alignment)
188
+ - Architectural changes (name mismatches, dead package removal) are always flagged, never auto-fixed
189
+ - This skill is read-heavy, write-light — most runs are audit-only