@lifeaitools/rdc-skills 0.24.37 → 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.
- package/.claude/settings.json +15 -15
- package/.claude-plugin/marketplace.json +21 -21
- package/.claude-plugin/plugin.json +1371 -1371
- package/.github/workflows/publish.yml +34 -34
- package/.github/workflows/self-test.yml +58 -58
- package/CHANGELOG.md +310 -310
- package/LICENSE +21 -21
- package/MANIFEST.md +221 -221
- package/README.md +377 -377
- package/README.sandbox.md +3 -3
- package/assets/watcher/viewer.html +164 -164
- package/bin/rdc-skills-mcp.mjs +316 -316
- package/commands/build.md +183 -183
- package/commands/collab.md +180 -180
- package/commands/deploy.md +152 -152
- package/commands/design.md +31 -31
- package/commands/edit.md +28 -28
- package/commands/fixit.md +124 -124
- package/commands/handoff.md +173 -173
- package/commands/help.md +95 -95
- package/commands/overnight.md +220 -220
- package/commands/plan.md +158 -158
- package/commands/preplan.md +131 -131
- package/commands/prototype.md +145 -145
- package/commands/release.md +49 -49
- package/commands/report.md +99 -99
- package/commands/review.md +120 -120
- package/commands/self-test.md +113 -113
- package/commands/status.md +86 -86
- package/commands/watch.md +98 -98
- package/commands/workitems.md +137 -137
- package/git-sha.json +1 -1
- package/guides/agent-bootstrap.md +295 -295
- package/guides/agents/backend.md +104 -104
- package/guides/agents/content.md +94 -94
- package/guides/agents/cs2.md +56 -56
- package/guides/agents/data.md +87 -87
- package/guides/agents/design.md +77 -77
- package/guides/agents/frontend.md +92 -92
- package/guides/agents/infrastructure.md +81 -81
- package/guides/agents/setup.md +281 -281
- package/guides/agents/verify.md +151 -151
- package/guides/agents/viz.md +106 -106
- package/guides/backend.md +146 -146
- package/guides/content.md +147 -147
- package/guides/cs2.md +190 -190
- package/guides/data.md +123 -123
- package/guides/design.md +116 -116
- package/guides/engineering-behavior.md +43 -43
- package/guides/escalation-protocol.md +125 -125
- package/guides/frontend.md +151 -151
- package/guides/history-md-spec.md +297 -297
- package/guides/infrastructure.md +179 -179
- package/guides/lessons-learned-spec.md +153 -153
- package/guides/output-contract.md +108 -108
- package/guides/publish-md-spec.md +289 -289
- package/guides/rdc-skills-startup.md +30 -30
- package/guides/verify.md +11 -11
- package/hooks/check-cwd.js +31 -31
- package/hooks/check-rdc-environment.js +164 -164
- package/hooks/check-services.js +6 -6
- package/hooks/check-stale-work-items.js +19 -19
- package/hooks/foreground-process-gate.js +128 -128
- package/hooks/gate-watchdog-selfcheck.js +257 -257
- package/hooks/hook-logger.js +25 -25
- package/hooks/lib/run-evidence-gate.mjs +241 -241
- package/hooks/no-stop-open-epics.js +127 -127
- package/hooks/post-tool-batch-gate.js +203 -203
- package/hooks/post-work-check.js +21 -21
- package/hooks/postcompact-log.js +13 -13
- package/hooks/precompact-log.js +13 -13
- package/hooks/rate-limit-retry.js +46 -46
- package/hooks/rdc-invocation-marker.js +157 -157
- package/hooks/rdc-output-contract-gate.js +94 -94
- package/hooks/require-work-item-on-commit.js +294 -294
- package/hooks/restart-brief.js +19 -19
- package/hooks/run-hidden-hook.ps1 +47 -47
- package/hooks/task-completed-gate.js +274 -274
- package/hooks/work-item-exit-gate.js +944 -944
- package/lib/catalog.mjs +236 -236
- package/lib/cloud-rewrite.mjs +155 -155
- package/package.json +56 -56
- package/rules/work-items-rpc.md +520 -520
- package/scaffold/templates/HISTORY.md.template +39 -39
- package/scaffold/templates/PUBLISH.md.template +21 -21
- package/scaffold/templates/brochure-studio-default.html +70 -70
- package/scripts/acceptance.mjs +502 -502
- package/scripts/fixtures/guides/bad-guide.md +15 -15
- package/scripts/fixtures/guides-clean/good-guide.md +16 -16
- package/scripts/install-rdc-skills.js +1289 -1289
- package/scripts/install.ps1 +202 -202
- package/scripts/install.sh +132 -132
- package/scripts/lib/assertions.mjs +287 -287
- package/scripts/lib/manifest-schema.mjs +754 -754
- package/scripts/lib/runner.mjs +465 -465
- package/scripts/lib/sandbox.mjs +435 -435
- package/scripts/prepack.mjs +32 -32
- package/scripts/rdc-brochure.mjs +464 -464
- package/scripts/rdc-design-cli.mjs +134 -134
- package/scripts/rebuild-mcp.mjs +107 -107
- package/scripts/self-test.mjs +1460 -1460
- package/scripts/stamp-git-sha.mjs +29 -29
- package/scripts/test-guide-validator.mjs +196 -196
- package/scripts/test-rdc-hooks.mjs +145 -145
- package/scripts/uninstall.ps1 +77 -77
- package/scripts/uninstall.sh +69 -69
- package/scripts/update.ps1 +43 -43
- package/scripts/update.sh +43 -43
- package/scripts/validate-place-histories.js +461 -461
- package/scripts/validate-publish-manifests.js +424 -424
- package/scripts/watch-init.mjs +100 -100
- package/skills/brochure/SKILL.md +107 -107
- package/skills/build/SKILL.md +563 -554
- package/skills/channel-formatter/SKILL.md +533 -533
- package/skills/co-develop/SKILL.md +196 -196
- package/skills/collab/SKILL.md +239 -239
- package/skills/convert/SKILL.md +140 -140
- package/skills/deploy/SKILL.md +541 -541
- package/skills/design/SKILL.md +211 -211
- package/skills/design/reference/ownership.md +16 -16
- package/skills/design/reference/rampa.md +92 -92
- package/skills/design/reference/studio-model.md +153 -153
- package/skills/edit/SKILL.md +98 -98
- package/skills/fixit/SKILL.md +165 -165
- package/skills/fs-mcp/SKILL.md +148 -148
- package/skills/handoff/SKILL.md +236 -200
- package/skills/help/SKILL.md +143 -143
- package/skills/housekeeping/SKILL.md +189 -189
- package/skills/lifeai-brochure-author/SKILL.md +340 -340
- package/skills/overnight/SKILL.md +251 -251
- package/skills/plan/SKILL.md +345 -314
- package/skills/preplan/SKILL.md +90 -90
- package/skills/prototype/SKILL.md +150 -150
- package/skills/rdc-brochurify/SKILL.md +245 -245
- package/skills/rdc-extract-verifier-rules/SKILL.md +191 -191
- package/skills/release/SKILL.md +140 -140
- package/skills/report/SKILL.md +100 -100
- package/skills/review/SKILL.md +152 -152
- package/skills/rpms-filemap/SKILL.cloud.md +111 -111
- package/skills/rpms-filemap/SKILL.md +111 -111
- package/skills/self-test/SKILL.md +132 -132
- package/skills/status/SKILL.md +99 -99
- package/skills/terminal-config/SKILL.md +62 -62
- package/skills/tests/MATRIX.md +54 -54
- package/skills/tests/README.md +47 -47
- package/skills/tests/rdc-brochure.test.json +34 -34
- package/skills/tests/rdc-build.test.json +36 -36
- package/skills/tests/rdc-channel-formatter.test.json +45 -45
- package/skills/tests/rdc-co-develop.test.json +29 -29
- package/skills/tests/rdc-collab.test.json +29 -29
- package/skills/tests/rdc-convert.test.json +35 -35
- package/skills/tests/rdc-deploy.test.json +30 -30
- package/skills/tests/rdc-design.test.json +27 -27
- package/skills/tests/rdc-edit.test.json +29 -29
- package/skills/tests/rdc-fixit.test.json +36 -36
- package/skills/tests/rdc-fs-mcp.test.json +36 -36
- package/skills/tests/rdc-handoff.test.json +28 -28
- package/skills/tests/rdc-help.test.json +29 -29
- package/skills/tests/rdc-housekeeping.test.json +31 -31
- package/skills/tests/rdc-lifeai-brochure-author.test.json +35 -35
- package/skills/tests/rdc-overnight.test.json +37 -37
- package/skills/tests/rdc-plan.test.json +27 -27
- package/skills/tests/rdc-preplan.test.json +31 -31
- package/skills/tests/rdc-prototype.test.json +28 -28
- package/skills/tests/rdc-rdc-brochurify.test.json +23 -23
- package/skills/tests/rdc-rdc-extract-verifier-rules.test.json +34 -34
- package/skills/tests/rdc-release.test.json +29 -29
- package/skills/tests/rdc-report.test.json +28 -28
- package/skills/tests/rdc-review.test.json +29 -29
- package/skills/tests/rdc-rpms-filemap.test.json +28 -28
- package/skills/tests/rdc-self-test.test.json +24 -24
- package/skills/tests/rdc-status.test.json +29 -29
- package/skills/tests/rdc-terminal-config.test.json +29 -29
- package/skills/tests/rdc-watch.test.json +24 -24
- package/skills/tests/rdc-workitems.test.json +27 -27
- package/skills/watch/SKILL.md +97 -97
- package/skills/workitems/SKILL.md +151 -151
- package/tests/acceptance.test.mjs +59 -59
- package/tests/channel-formatter.contract.test.mjs +251 -251
- package/tests/curl-surface.test.mjs +289 -289
- package/tests/harness-gates.test.mjs +325 -325
- package/tests/help-surface.test.mjs +61 -61
- package/tests/install-rdc-skills.test.mjs +49 -49
- package/tests/manifest-contract-fields.test.mjs +78 -78
- package/tests/mcp.test.mjs +271 -271
- package/tests/require-work-item-on-commit.test.mjs +162 -162
- package/tests/run-evidence-gate.test.mjs +82 -82
- package/tests/skill-test-matrix.test.mjs +66 -66
- package/tests/validate-skills.js +27 -27
- package/tests/work-item-exit-gate-l2.test.mjs +368 -368
- 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
|