@lifeaitools/rdc-skills 0.24.38 → 0.24.41

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 (196) 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 +376 -375
  10. package/README.sandbox.md +3 -3
  11. package/RELEASE.md +42 -0
  12. package/assets/watcher/viewer.html +164 -164
  13. package/bin/rdc-skills-mcp.mjs +316 -316
  14. package/commands/build.md +183 -183
  15. package/commands/collab.md +180 -180
  16. package/commands/deploy.md +152 -152
  17. package/commands/design.md +31 -31
  18. package/commands/edit.md +28 -28
  19. package/commands/fixit.md +124 -124
  20. package/commands/handoff.md +173 -173
  21. package/commands/help.md +95 -95
  22. package/commands/overnight.md +220 -220
  23. package/commands/plan.md +158 -158
  24. package/commands/preplan.md +131 -131
  25. package/commands/prototype.md +145 -145
  26. package/commands/release.md +49 -49
  27. package/commands/report.md +99 -99
  28. package/commands/review.md +120 -120
  29. package/commands/self-test.md +113 -113
  30. package/commands/status.md +86 -86
  31. package/commands/watch.md +98 -98
  32. package/commands/workitems.md +137 -137
  33. package/git-sha.json +1 -1
  34. package/guides/agent-bootstrap.md +295 -295
  35. package/guides/agents/backend.md +104 -104
  36. package/guides/agents/content.md +94 -94
  37. package/guides/agents/cs2.md +56 -56
  38. package/guides/agents/data.md +87 -87
  39. package/guides/agents/design.md +77 -77
  40. package/guides/agents/frontend.md +92 -92
  41. package/guides/agents/infrastructure.md +81 -81
  42. package/guides/agents/setup.md +281 -281
  43. package/guides/agents/verify.md +151 -151
  44. package/guides/agents/viz.md +106 -106
  45. package/guides/backend.md +146 -146
  46. package/guides/content.md +147 -147
  47. package/guides/cs2.md +190 -190
  48. package/guides/data.md +123 -123
  49. package/guides/design.md +116 -116
  50. package/guides/engineering-behavior.md +43 -43
  51. package/guides/escalation-protocol.md +125 -125
  52. package/guides/frontend.md +151 -151
  53. package/guides/history-md-spec.md +297 -297
  54. package/guides/infrastructure.md +179 -179
  55. package/guides/lessons-learned-spec.md +151 -145
  56. package/guides/output-contract.md +108 -108
  57. package/guides/publish-md-spec.md +289 -289
  58. package/guides/rdc-skills-startup.md +30 -30
  59. package/guides/verify.md +11 -11
  60. package/hooks/check-cwd.js +31 -31
  61. package/hooks/check-rdc-environment.js +164 -164
  62. package/hooks/check-services.js +6 -6
  63. package/hooks/check-stale-work-items.js +19 -19
  64. package/hooks/foreground-process-gate.js +128 -128
  65. package/hooks/gate-watchdog-selfcheck.js +257 -257
  66. package/hooks/hook-logger.js +25 -25
  67. package/hooks/lib/run-evidence-gate.mjs +241 -241
  68. package/hooks/no-stop-open-epics.js +127 -127
  69. package/hooks/post-tool-batch-gate.js +203 -203
  70. package/hooks/post-work-check.js +21 -21
  71. package/hooks/postcompact-log.js +13 -13
  72. package/hooks/precompact-log.js +13 -13
  73. package/hooks/rate-limit-retry.js +46 -46
  74. package/hooks/rdc-invocation-marker.js +157 -157
  75. package/hooks/rdc-output-contract-gate.js +94 -94
  76. package/hooks/require-work-item-on-commit.js +294 -294
  77. package/hooks/restart-brief.js +19 -19
  78. package/hooks/run-hidden-hook.ps1 +47 -47
  79. package/hooks/task-completed-gate.js +274 -274
  80. package/hooks/work-item-exit-gate.js +944 -944
  81. package/lib/catalog.mjs +236 -236
  82. package/lib/cloud-rewrite.mjs +155 -155
  83. package/package.json +57 -56
  84. package/rules/work-items-rpc.md +520 -520
  85. package/scaffold/templates/HISTORY.md.template +39 -39
  86. package/scaffold/templates/PUBLISH.md.template +21 -21
  87. package/scaffold/templates/brochure-studio-default.html +70 -70
  88. package/scripts/acceptance.mjs +502 -502
  89. package/scripts/fixtures/guides/bad-guide.md +15 -15
  90. package/scripts/fixtures/guides-clean/good-guide.md +16 -16
  91. package/scripts/install-rdc-skills.js +1289 -1289
  92. package/scripts/install.ps1 +202 -202
  93. package/scripts/install.sh +132 -132
  94. package/scripts/lib/assertions.mjs +287 -287
  95. package/scripts/lib/manifest-schema.mjs +754 -754
  96. package/scripts/lib/runner.mjs +465 -465
  97. package/scripts/lib/sandbox.mjs +435 -435
  98. package/scripts/prepack.mjs +32 -32
  99. package/scripts/rdc-brochure.mjs +482 -464
  100. package/scripts/rdc-design-cli.mjs +134 -134
  101. package/scripts/rebuild-mcp.mjs +107 -107
  102. package/scripts/self-test.mjs +1460 -1460
  103. package/scripts/stamp-git-sha.mjs +29 -29
  104. package/scripts/test-guide-validator.mjs +196 -196
  105. package/scripts/test-rdc-hooks.mjs +145 -145
  106. package/scripts/uninstall.ps1 +77 -77
  107. package/scripts/uninstall.sh +69 -69
  108. package/scripts/update.ps1 +43 -43
  109. package/scripts/update.sh +43 -43
  110. package/scripts/validate-place-histories.js +461 -461
  111. package/scripts/validate-publish-manifests.js +424 -424
  112. package/scripts/watch-init.mjs +100 -100
  113. package/skills/brochure/SKILL.md +107 -107
  114. package/skills/build/SKILL.md +563 -563
  115. package/skills/channel-formatter/SKILL.md +533 -533
  116. package/skills/co-develop/SKILL.md +196 -196
  117. package/skills/collab/SKILL.md +239 -239
  118. package/skills/convert/SKILL.md +140 -140
  119. package/skills/deploy/SKILL.md +541 -541
  120. package/skills/design/SKILL.md +211 -211
  121. package/skills/design/reference/ownership.md +16 -16
  122. package/skills/design/reference/rampa.md +92 -92
  123. package/skills/design/reference/studio-model.md +153 -153
  124. package/skills/edit/SKILL.md +98 -98
  125. package/skills/fixit/SKILL.md +165 -165
  126. package/skills/fs-mcp/SKILL.md +148 -148
  127. package/skills/handoff/SKILL.md +236 -200
  128. package/skills/help/SKILL.md +143 -143
  129. package/skills/housekeeping/SKILL.md +219 -160
  130. package/skills/lifeai-brochure-author/SKILL.md +340 -340
  131. package/skills/overnight/SKILL.md +251 -251
  132. package/skills/plan/SKILL.md +345 -345
  133. package/skills/preplan/SKILL.md +90 -90
  134. package/skills/prototype/SKILL.md +150 -150
  135. package/skills/rdc-brochurify/SKILL.md +245 -245
  136. package/skills/rdc-extract-verifier-rules/SKILL.md +191 -191
  137. package/skills/release/SKILL.md +140 -140
  138. package/skills/report/SKILL.md +100 -100
  139. package/skills/review/SKILL.md +152 -152
  140. package/skills/rpms-filemap/SKILL.cloud.md +111 -111
  141. package/skills/rpms-filemap/SKILL.md +111 -111
  142. package/skills/self-test/SKILL.md +132 -132
  143. package/skills/status/SKILL.md +99 -99
  144. package/skills/terminal-config/SKILL.md +62 -62
  145. package/skills/tests/MATRIX.md +54 -54
  146. package/skills/tests/README.md +47 -47
  147. package/skills/tests/rdc-brochure.test.json +34 -34
  148. package/skills/tests/rdc-build.test.json +36 -36
  149. package/skills/tests/rdc-channel-formatter.test.json +45 -45
  150. package/skills/tests/rdc-co-develop.test.json +29 -29
  151. package/skills/tests/rdc-collab.test.json +29 -29
  152. package/skills/tests/rdc-convert.test.json +35 -35
  153. package/skills/tests/rdc-deploy.test.json +30 -30
  154. package/skills/tests/rdc-design.test.json +27 -27
  155. package/skills/tests/rdc-edit.test.json +29 -29
  156. package/skills/tests/rdc-fixit.test.json +36 -36
  157. package/skills/tests/rdc-fs-mcp.test.json +36 -36
  158. package/skills/tests/rdc-handoff.test.json +28 -28
  159. package/skills/tests/rdc-help.test.json +29 -29
  160. package/skills/tests/rdc-housekeeping.test.json +32 -28
  161. package/skills/tests/rdc-lifeai-brochure-author.test.json +35 -35
  162. package/skills/tests/rdc-overnight.test.json +37 -37
  163. package/skills/tests/rdc-plan.test.json +27 -27
  164. package/skills/tests/rdc-preplan.test.json +31 -31
  165. package/skills/tests/rdc-prototype.test.json +28 -28
  166. package/skills/tests/rdc-rdc-brochurify.test.json +23 -23
  167. package/skills/tests/rdc-rdc-extract-verifier-rules.test.json +34 -34
  168. package/skills/tests/rdc-release.test.json +29 -29
  169. package/skills/tests/rdc-report.test.json +28 -28
  170. package/skills/tests/rdc-review.test.json +29 -29
  171. package/skills/tests/rdc-rpms-filemap.test.json +28 -28
  172. package/skills/tests/rdc-self-test.test.json +24 -24
  173. package/skills/tests/rdc-status.test.json +29 -29
  174. package/skills/tests/rdc-terminal-config.test.json +29 -29
  175. package/skills/tests/rdc-watch.test.json +24 -24
  176. package/skills/tests/rdc-workitems.test.json +27 -27
  177. package/skills/watch/SKILL.md +97 -97
  178. package/skills/workitems/SKILL.md +151 -151
  179. package/tests/acceptance.test.mjs +59 -59
  180. package/tests/channel-formatter.contract.test.mjs +251 -251
  181. package/tests/curl-surface.test.mjs +289 -289
  182. package/tests/harness-gates.test.mjs +325 -325
  183. package/tests/help-surface.test.mjs +61 -61
  184. package/tests/housekeeping-lessons-triage.test.mjs +49 -0
  185. package/tests/install-rdc-skills.test.mjs +49 -49
  186. package/tests/lessons-pipeline-contract.test.mjs +26 -0
  187. package/tests/manifest-contract-fields.test.mjs +78 -78
  188. package/tests/mcp.test.mjs +271 -271
  189. package/tests/rdc-brochure.test.mjs +125 -0
  190. package/tests/release-contract.test.mjs +16 -0
  191. package/tests/require-work-item-on-commit.test.mjs +162 -162
  192. package/tests/run-evidence-gate.test.mjs +82 -82
  193. package/tests/skill-test-matrix.test.mjs +66 -66
  194. package/tests/validate-skills.js +27 -27
  195. package/tests/work-item-exit-gate-l2.test.mjs +368 -368
  196. package/tests/work-item-exit-gate-l3.test.mjs +197 -197
@@ -1,189 +1,248 @@
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
-
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
+
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
-
27
+ - `rdc:housekeeping --lessons` — process only the weekly lessons triage workflow, including its audit, decision interview, routed work, and report
28
+
28
29
  ## Procedure
29
30
 
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
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.
70
32
 
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
33
+ ### 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)
105
165
 
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
- ```
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.
112
172
 
113
- Flag any .dev apps still on Coolify.
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.
114
183
 
115
- ### 8. Media CDN Hotlink Allowlist
184
+ ### 1. Cluster
116
185
 
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
- ```
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.
121
187
 
122
- Flag any class-A domain NOT in ALLOWED_SUFFIXES.
188
+ ### 2. Resolution audit (mandatory before routing work)
123
189
 
124
- **With `--fix`:** Add missing suffixes to ALLOWED_SUFFIXES and redeploy the worker.
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.
125
191
 
126
- ### 9. Report
192
+ Record auditable evidence and classify the cluster as exactly one of:
127
193
 
128
- Write to `.rdc/reports/YYYY-MM-DD-housekeeping.md`:
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.
129
197
 
130
- ```markdown
131
- # Housekeeping Report — YYYY-MM-DD
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.
132
199
 
133
- ## Summary
134
- | Check | Pass | Fail | Fixed |
135
- |-------|------|------|-------|
200
+ ### 3. Architectural report and interview gate
136
201
 
137
- ## Directory Structure
138
- <table of targets with issues>
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, but does **not** interrupt the simple remediation batch.
139
203
 
140
- ## PUBLISH.md URL Validation
141
- <table of mismatches>
204
+ Create a complete interview list from that report before changing any architectural file. In attended mode, execute and verify the correlated simple batches first, then 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 architectural fixes until all interview questions have answers or the corresponding cluster is explicitly deferred. Silence is not approval.
142
205
 
143
- ## CLAUDE.md Freshness
144
- <stale entries>
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.
145
207
 
146
- ## Package Health
147
- <version/exports/naming issues>
208
+ ### 4. Route only still-open work through RDC
148
209
 
149
- ## Places Compliance
150
- <incomplete places>
210
+ After the resolution audit, route every simple 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. Route architectural clusters only after the complete architectural interview.
151
211
 
152
- ## Orphans
153
- <empty dirs, dead deployments>
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.
154
215
 
155
- ## Media CDN
156
- <missing allowlist entries>
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.
157
217
 
158
- ## Verdict: CLEAN / HAS_ISSUES
159
- ```
218
+ ### 5. Complete weekly lessons report
160
219
 
161
- ## Lessons triage (weekly)
220
+ Add a `## Weekly Lessons Triage` section to `.rdc/reports/YYYY-MM-DD-housekeeping.md` with:
162
221
 
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).
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.
164
227
 
165
228
  ### Attended mode (default — a human is present)
166
229
 
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
230
+ The attended run follows sections 1, 2, and 4 for all simple clusters first, then section 3 for the complete architectural interview, then section 4 for approved architectural work, and finally section 5. 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