@lifeaitools/rdc-skills 0.24.38 → 0.24.39

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 (191) hide show
  1. package/.claude/settings.json +15 -15
  2. package/.claude-plugin/marketplace.json +21 -21
  3. package/.claude-plugin/plugin.json +1371 -1371
  4. package/.github/workflows/publish.yml +34 -34
  5. package/.github/workflows/self-test.yml +58 -58
  6. package/CHANGELOG.md +310 -310
  7. package/LICENSE +21 -21
  8. package/MANIFEST.md +221 -221
  9. package/README.md +377 -377
  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 +124 -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 +153 -153
  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 +56 -56
  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 +1289 -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 +464 -464
  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 +424 -424
  111. package/scripts/watch-init.mjs +100 -100
  112. package/skills/brochure/SKILL.md +107 -107
  113. package/skills/build/SKILL.md +563 -563
  114. package/skills/channel-formatter/SKILL.md +533 -533
  115. package/skills/co-develop/SKILL.md +196 -196
  116. package/skills/collab/SKILL.md +239 -239
  117. package/skills/convert/SKILL.md +140 -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/fixit/SKILL.md +165 -165
  125. package/skills/fs-mcp/SKILL.md +148 -148
  126. package/skills/handoff/SKILL.md +236 -200
  127. package/skills/help/SKILL.md +143 -143
  128. package/skills/housekeeping/SKILL.md +189 -189
  129. package/skills/lifeai-brochure-author/SKILL.md +340 -340
  130. package/skills/overnight/SKILL.md +251 -251
  131. package/skills/plan/SKILL.md +345 -345
  132. package/skills/preplan/SKILL.md +90 -90
  133. package/skills/prototype/SKILL.md +150 -150
  134. package/skills/rdc-brochurify/SKILL.md +245 -245
  135. package/skills/rdc-extract-verifier-rules/SKILL.md +191 -191
  136. package/skills/release/SKILL.md +140 -140
  137. package/skills/report/SKILL.md +100 -100
  138. package/skills/review/SKILL.md +152 -152
  139. package/skills/rpms-filemap/SKILL.cloud.md +111 -111
  140. package/skills/rpms-filemap/SKILL.md +111 -111
  141. package/skills/self-test/SKILL.md +132 -132
  142. package/skills/status/SKILL.md +99 -99
  143. package/skills/terminal-config/SKILL.md +62 -62
  144. package/skills/tests/MATRIX.md +54 -54
  145. package/skills/tests/README.md +47 -47
  146. package/skills/tests/rdc-brochure.test.json +34 -34
  147. package/skills/tests/rdc-build.test.json +36 -36
  148. package/skills/tests/rdc-channel-formatter.test.json +45 -45
  149. package/skills/tests/rdc-co-develop.test.json +29 -29
  150. package/skills/tests/rdc-collab.test.json +29 -29
  151. package/skills/tests/rdc-convert.test.json +35 -35
  152. package/skills/tests/rdc-deploy.test.json +30 -30
  153. package/skills/tests/rdc-design.test.json +27 -27
  154. package/skills/tests/rdc-edit.test.json +29 -29
  155. package/skills/tests/rdc-fixit.test.json +36 -36
  156. package/skills/tests/rdc-fs-mcp.test.json +36 -36
  157. package/skills/tests/rdc-handoff.test.json +28 -28
  158. package/skills/tests/rdc-help.test.json +29 -29
  159. package/skills/tests/rdc-housekeeping.test.json +31 -31
  160. package/skills/tests/rdc-lifeai-brochure-author.test.json +35 -35
  161. package/skills/tests/rdc-overnight.test.json +37 -37
  162. package/skills/tests/rdc-plan.test.json +27 -27
  163. package/skills/tests/rdc-preplan.test.json +31 -31
  164. package/skills/tests/rdc-prototype.test.json +28 -28
  165. package/skills/tests/rdc-rdc-brochurify.test.json +23 -23
  166. package/skills/tests/rdc-rdc-extract-verifier-rules.test.json +34 -34
  167. package/skills/tests/rdc-release.test.json +29 -29
  168. package/skills/tests/rdc-report.test.json +28 -28
  169. package/skills/tests/rdc-review.test.json +29 -29
  170. package/skills/tests/rdc-rpms-filemap.test.json +28 -28
  171. package/skills/tests/rdc-self-test.test.json +24 -24
  172. package/skills/tests/rdc-status.test.json +29 -29
  173. package/skills/tests/rdc-terminal-config.test.json +29 -29
  174. package/skills/tests/rdc-watch.test.json +24 -24
  175. package/skills/tests/rdc-workitems.test.json +27 -27
  176. package/skills/watch/SKILL.md +97 -97
  177. package/skills/workitems/SKILL.md +151 -151
  178. package/tests/acceptance.test.mjs +59 -59
  179. package/tests/channel-formatter.contract.test.mjs +251 -251
  180. package/tests/curl-surface.test.mjs +289 -289
  181. package/tests/harness-gates.test.mjs +325 -325
  182. package/tests/help-surface.test.mjs +61 -61
  183. package/tests/install-rdc-skills.test.mjs +49 -49
  184. package/tests/manifest-contract-fields.test.mjs +78 -78
  185. package/tests/mcp.test.mjs +271 -271
  186. package/tests/require-work-item-on-commit.test.mjs +162 -162
  187. package/tests/run-evidence-gate.test.mjs +82 -82
  188. package/tests/skill-test-matrix.test.mjs +66 -66
  189. package/tests/validate-skills.js +27 -27
  190. package/tests/work-item-exit-gate-l2.test.mjs +368 -368
  191. package/tests/work-item-exit-gate-l3.test.mjs +197 -197
@@ -1,189 +1,189 @@
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
- ## Arguments
25
- - `rdc:housekeeping` — audit only, report issues
26
- - `rdc:housekeeping --fix` — auto-remediate safe issues (scaffold missing CLAUDE.md, fix PUBLISH.md URLs, create missing tracker dirs)
27
-
28
- ## Procedure
29
-
30
- ### 1. Directory Structure Verification
31
-
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
70
-
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
76
-
77
- **With `--fix`:** Re-scaffold CLAUDE.md from current src/ state.
78
-
79
- ### 4. Package.json Health
80
-
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
86
-
87
- ### 5. Places Compliance
88
-
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
95
-
96
- **With `--fix`:** Scaffold missing PLACE.md from HISTORY.md frontmatter, create missing tracker/corpus dirs.
97
-
98
- ### 6. Orphan Detection
99
-
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'`
103
-
104
- ### 7. Stale Coolify Apps on .dev URLs
105
-
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
- ```
112
-
113
- Flag any .dev apps still on Coolify.
114
-
115
- ### 8. Media CDN Hotlink Allowlist
116
-
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
- ```
121
-
122
- Flag any class-A domain NOT in ALLOWED_SUFFIXES.
123
-
124
- **With `--fix`:** Add missing suffixes to ALLOWED_SUFFIXES and redeploy the worker.
125
-
126
- ### 9. Report
127
-
128
- Write to `.rdc/reports/YYYY-MM-DD-housekeeping.md`:
129
-
130
- ```markdown
131
- # Housekeeping Report — YYYY-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).
164
-
165
- ### Attended mode (default — a human is present)
166
-
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
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
+ ## Arguments
25
+ - `rdc:housekeeping` — audit only, report issues
26
+ - `rdc:housekeeping --fix` — auto-remediate safe issues (scaffold missing CLAUDE.md, fix PUBLISH.md URLs, create missing tracker dirs)
27
+
28
+ ## Procedure
29
+
30
+ ### 1. Directory Structure Verification
31
+
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
70
+
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
76
+
77
+ **With `--fix`:** Re-scaffold CLAUDE.md from current src/ state.
78
+
79
+ ### 4. Package.json Health
80
+
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
86
+
87
+ ### 5. Places Compliance
88
+
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
95
+
96
+ **With `--fix`:** Scaffold missing PLACE.md from HISTORY.md frontmatter, create missing tracker/corpus dirs.
97
+
98
+ ### 6. Orphan Detection
99
+
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'`
103
+
104
+ ### 7. Stale Coolify Apps on .dev URLs
105
+
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
+ ```
112
+
113
+ Flag any .dev apps still on Coolify.
114
+
115
+ ### 8. Media CDN Hotlink Allowlist
116
+
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
+ ```
121
+
122
+ Flag any class-A domain NOT in ALLOWED_SUFFIXES.
123
+
124
+ **With `--fix`:** Add missing suffixes to ALLOWED_SUFFIXES and redeploy the worker.
125
+
126
+ ### 9. Report
127
+
128
+ Write to `.rdc/reports/YYYY-MM-DD-housekeeping.md`:
129
+
130
+ ```markdown
131
+ # Housekeeping Report — YYYY-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).
164
+
165
+ ### Attended mode (default — a human is present)
166
+
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