@lifeaitools/rdc-skills 0.24.36 → 0.24.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rdc",
3
- "version": "0.24.36",
3
+ "version": "0.24.38",
4
4
  "description": "RDC typed-agent dispatch skill suite for Claude Code — plan, build, review, overnight unattended builds with work-item tracking and TDD enforcement.",
5
5
  "author": {
6
6
  "name": "LIFEAI",
package/git-sha.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "sha": "cf32c946a9301254d1cd07754c1d457de585b682"
2
+ "sha": "89d32243a6d9217b533b5de150c891f0750cdaf5"
3
3
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifeaitools/rdc-skills",
3
- "version": "0.24.36",
3
+ "version": "0.24.38",
4
4
  "description": "RDC typed-agent dispatch skill suite for Claude Code - plan, build, review, overnight builds",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -101,7 +101,7 @@ Read the task title and description, then:
101
101
  | Tasks exist but all have empty `description` fields | → Invoke `rdc:plan` on this epic. Tasks without descriptions cannot be safely dispatched. |
102
102
  | Plan doc missing `## Checklist Decomposition Matrix` | → Invoke `rdc:plan` on this epic. Do NOT dispatch agents. |
103
103
  | Plan doc missing `## Checklist Quality Gate` with `verdict: PASS` | → Invoke `rdc:plan` on this epic. Do NOT dispatch agents. |
104
- | Any implementation task lacks `decomp-*` checklist items | → Invoke `rdc:plan` on this epic. Coarse checklists cannot be safely dispatched. |
104
+ | Any implementation task lacks `decomp-*` items, has < 10 attested rows, or leaves a declared surface (screen/api/db/tool) uncovered | → Invoke `rdc:plan` on this epic. Coarse/under-decomposed checklists cannot be safely dispatched. |
105
105
  | Any `decomp-*` item lacks route/file, action, expected result, or evidence artifact | → Invoke `rdc:plan` on this epic. Do NOT dispatch agents. |
106
106
  | Tasks exist and have descriptions | → Continue with build. |
107
107
 
@@ -144,6 +144,10 @@ Read the task title and description, then:
144
144
  - `verdict: PASS`
145
145
 
146
146
  Required task checklist shape:
147
+ - Every implementation work item has >= 10 attested `decomp-*`/`test-*` rows and meets the
148
+ per-surface completeness floors from rdc:plan (each declared surface covered; a multi-surface
149
+ WP carries the SUM of its surface floors, typically 12-20). A flat 5-6-row checklist for a
150
+ feature WP is REJECTED — reopen the epic to rdc:plan for full surface-area decomposition.
147
151
  - Every implementation work item has at least one `decomp-*` checklist row and one `test-*` checklist row.
148
152
  - Every `decomp-*` row names a concrete route or file path.
149
153
  - Every `decomp-*` row names one user/agent action.
@@ -163,6 +167,11 @@ Read the task title and description, then:
163
167
  - DB/migration task: at least schema object, relationship/guard, policy/permission, seed/fixture or backfill, and smoke query.
164
168
  - Editor/sidebar/CLI workflow: at least start, attach/open, enqueue action, observe result, timeout/error, and live refresh where applicable.
165
169
 
170
+ HARD FLOOR (mirrors rdc:plan): every implementation task carries >= 10 attested rows; a
171
+ multi-surface WP carries the SUM of its per-surface floors (typically 12-20). A flat 5-6-row
172
+ feature checklist, or any declared surface (screen/api/db/tool) left uncovered, is a REJECT —
173
+ reopen to rdc:plan. Every row must name its surface + one verification artifact (attested).
174
+
166
175
  ### ⛔ Deliverable / acceptance check-off table — show BEFORE any implementation
167
176
  Before dispatching the first wave, render a deliverable/acceptance table and
168
177
  keep it visible through the build (lesson 2026-06-16-build-poor-goal-execution-mdk-brain:
@@ -506,7 +515,7 @@ Read the task title and description, then:
506
515
  - Starts the dev server and probes every modified route (expects HTTP 200, not 500)
507
516
  - Runs vitest for every touched package
508
517
  - **Verifies checklist decomposition quality per work item before functional validation:**
509
- - Every implementation work item has at least one `decomp-*` item and one `test-*` item
518
+ - Every implementation work item has >= 10 attested `decomp-*`/`test-*` items, meets the per-surface completeness floors (each declared surface covered), and no feature WP ships a 5-6-row checklist
510
519
  - Every `decomp-*` item includes route/file, action, expected result, and evidence artifact
511
520
  - Any unchecked `decomp-*` item with `required: true` = work item CANNOT be set to `done`
512
521
  - Any coarse or non-falsifiable `decomp-*` item = reopen to `todo` with the specific failure
@@ -34,19 +34,56 @@ description: "Usage `rdc:edit <site|brand|route|file>` — open the local websit
34
34
  - `test`, `studio_test`, and `studio-test` resolve to `brandSlug=test` and `appSlug=studio_test`.
35
35
  - If the target is a local file or route and the brand/app is unclear, ask one concise question.
36
36
 
37
- ### 3. Start or reuse the editor host
38
- - The editor host lives at `http://localhost:3015`.
39
- - Launch the host if needed:
37
+ Resolve the **target dev server** (package + port) so the preview iframe has
38
+ something live to load. Read the brand app's `package.json` `name` and its
39
+ `dev` script port never hard-code a stale port:
40
+
41
+ | Target | App dir | Package (`name`) | Dev port | `targetUrl` |
42
+ |--------|---------|------------------|----------|-------------|
43
+ | `prt` / `prtrust.fund` | `apps/prt` | `@regen/prt-portal` | `3006` | `http://localhost:3006` |
44
+ | `test` / `studio_test` | (bundled) | — (editor host serves it) | `3015` | auto (`/editor/local-test-target`) |
45
+
46
+ For any other brand, derive the package name and port by reading
47
+ `apps/<app>/package.json` (`name` field and the `--port` in the `dev` script).
48
+ `brandSlug=test` needs no target server — the editor host serves the fixture
49
+ on its own origin.
50
+
51
+ ### 3. Start or reuse BOTH servers (edit starts everything)
52
+ `rdc:edit` must bring up everything the preview needs — the editor host AND the
53
+ target brand's dev server. Start-or-reuse each: probe the port first, only
54
+ launch if it is dead.
55
+
56
+ **3a. Editor host (`http://localhost:3015`)**
57
+ - Probe: `curl -s -o /dev/null -w "%{http_code}" http://localhost:3015/` — any
58
+ non-`000` means it is already up; reuse it.
59
+ - Launch only if down (background, do not block the session):
40
60
  ```powershell
41
61
  pnpm --filter @regen/editor-host dev
42
62
  ```
43
- - Open the editor page for the resolved target:
63
+
64
+ **3b. Target brand dev server (skip for `brandSlug=test`)**
65
+ - Probe the resolved dev port (e.g. `http://localhost:3006/`). Non-`000` =
66
+ already running; reuse it. `EADDRINUSE` on launch also means reuse — not an error.
67
+ - Launch only if down (background), then health-wait on the port before opening:
68
+ ```powershell
69
+ pnpm --filter <package> dev
70
+ ```
71
+ Bounded health-wait only (no `for`/`seq`/`sleep` polling loops):
72
+ ```bash
73
+ until curl -s -o /dev/null http://localhost:<port>/; do sleep 2; done
74
+ ```
75
+ - Open the editor page for the resolved target once BOTH report a live code:
44
76
  ```txt
45
- http://localhost:3015/editor/local/<brandSlug>?targetUrl=<targetUrl>
77
+ http://localhost:3015/editor/local/<brandSlug>?appSlug=<appSlug>&targetUrl=<targetUrl>
46
78
  ```
47
79
 
48
80
  ### 4. Open the page
49
81
  - Normal use: open the URL in the browser and confirm the editor loaded.
82
+ Open via PowerShell `Start-Process`, NOT `cmd start` — `cmd` treats the `&`
83
+ between query params as a command separator and truncates the URL:
84
+ ```powershell
85
+ Start-Process 'http://localhost:3015/editor/local/<brandSlug>?appSlug=<appSlug>&targetUrl=<targetUrl>'
86
+ ```
50
87
  - `RDC_TEST=1`: do not force a foreground browser action; report the exact editor URL and whether the target was resolved.
51
88
 
52
89
  ### 5. Report the result
@@ -126,12 +126,36 @@ description: "Usage `rdc:plan <topic>` — No epic exists and you need architect
126
126
  - Visual work: each named screenshot and visual checkpoint gets its own row.
127
127
  - Cross-system workflows: each handoff boundary gets its own row.
128
128
 
129
- Minimum row-count heuristics:
130
- - UI route: at least 4 rows.
131
- - CRUD surface: at least 6 rows.
132
- - API route: at least 3 rows.
133
- - DB work package: at least 5 rows.
134
- - Local editor/sidebar workflow: at least 5 rows.
129
+ Per-surface completeness floors — ATTESTED BY SURFACE AREA (not a flat minimum):
130
+ A checklist MUST carry at minimum one attested `decomp-*` row for EACH applicable item
131
+ below. This is a COMPLETENESS requirement measured against the surfaces the WP touches —
132
+ decompose the whole surface area; do not stop at a token few rows.
133
+ - UI screen (per screen the WP renders): a row for EACH applicable state — loaded, empty,
134
+ loading, error, detail — plus mobile and auth-gate where applicable. Floor: >= 6 rows PER screen.
135
+ - UI actions (per interactive surface): one row for EACH action that exists — open, search,
136
+ filter, select, create, edit, duplicate, save, assign, activate, archive, delete, import,
137
+ apply, cancel.
138
+ - API route (per route): success-read, success-write, validation-failure (4xx),
139
+ unauthorized/forbidden, and side-effect verification. Floor: >= 4 rows per route.
140
+ - DB / migration: ONE row per database object — per table, per non-trivial column-group, per
141
+ index, per RLS policy, per trigger, per function/RPC, per FK/guard — plus rollback/smoke and
142
+ type-exposure. A 10-table WP therefore carries ~15-20 rows, not 5.
143
+ - CLI / sidebar / local tool: start, attach, enqueue, poll, reply, timeout/not-found,
144
+ live-refresh. Floor: >= 6 rows.
145
+ - Visual: one row per named screenshot/checkpoint. Cross-system: one row per handoff boundary.
146
+
147
+ HARD FLOORS — reject the checklist (do NOT create work items) if any is violated:
148
+ - Every implementation task carries >= 10 attested `decomp-*`/`test-*` rows.
149
+ - A MULTI-SURFACE WP (two or more of screen/api/db/tool) carries the SUM of its per-surface
150
+ floors — typically 12-20 rows. A flat 5-6-row checklist for a real feature WP is a REJECT,
151
+ not a pass.
152
+ - COVERAGE: the checklist covers EVERY surface the WP declares. A WP touching screen+api+db
153
+ that lists only db rows FAILS the coverage gate.
154
+ - ATTESTATION: every row names its surface + ONE concrete verification artifact (test name,
155
+ route probe, Playwright screenshot, SQL query, migration proof, CLI transcript). A row with
156
+ no attestation artifact is a REJECT.
157
+ - If a WP genuinely has < 10 observable behaviors, SPLIT it or justify the low count explicitly
158
+ in the Quality Gate `deferred:` note — never silently ship a thin checklist.
135
159
 
136
160
  Reject these checklist items as too coarse:
137
161
  - "theme management works"
@@ -146,11 +170,18 @@ description: "Usage `rdc:plan <topic>` — No epic exists and you need architect
146
170
  - `decomp-api-import-validation: POST /api/tools/theme-import rejects missing source URL with 400 JSON error; evidence: route probe`
147
171
 
148
172
  Add a `## Checklist Quality Gate` section with:
149
- - `verdict: PASS` only when every row passes the rubric.
150
- - `failures:` list any coarse, missing, duplicate, or unverifiable rows.
151
- - `deferred:` list any explicit out-of-scope rows.
152
-
153
- Do not create build-ready work items unless this gate is `PASS`.
173
+ - `verdict: PASS` only when EVERY row passes the rubric AND every WP meets the per-surface
174
+ completeness floors above (each declared surface covered; >= 10 attested rows; multi-surface =
175
+ sum of surface floors) AND every row carries a verification artifact.
176
+ - `per_wp_row_counts:` list each WP and its attested row count so a reviewer sees at a glance
177
+ that no feature WP is under-decomposed (no 5-6-row feature WP).
178
+ - `coverage:` per WP, list the surfaces it declares and confirm each is covered by >= its floor.
179
+ - `failures:` list any coarse, under-decomposed, uncovered-surface, missing, duplicate, or
180
+ unattested rows.
181
+ - `deferred:` list any explicit out-of-scope rows (with the reason a low count is justified).
182
+
183
+ Do not create build-ready work items unless this gate is `PASS`. A `PASS` with any feature WP
184
+ under 10 attested rows, or any declared surface left uncovered, is invalid.
154
185
 
155
186
  5. **Write a test plan for each work package (MANDATORY):**
156
187
 
@@ -110,7 +110,7 @@ description: "Usage `rdc:review [--unattended]` — Post-build quality gate: tsc
110
110
  After any fixes land, run the verify gate on every touched package. See `guides/agents/verify.md`.
111
111
  Apply `guides/engineering-behavior.md` while reviewing: flag unnecessary abstraction, drive-by refactors, missing assumptions, hidden uncertainty, out-of-scope edits, and prose-only verification.
112
112
  **Iron Law: no CLEAN verdict without fresh evidence.** Quote the checklist decomposition verdict, vitest output, and tsc output in the report.
113
- The verify agent must reject any work item that lacks passed `decomp-*` checklist rows or whose rows are too coarse to prove one observable behavior at a time.
113
+ The verify agent must reject any work item that lacks passed `decomp-*` checklist rows, whose rows are too coarse to prove one observable behavior at a time, OR whose checklist falls below the per-surface completeness floor (a feature WP with 5-6 rows where its surfaces demand 12-20 attested rows is a REJECT).
114
114
  If verify fails → do NOT emit CLEAN. Loop back, fix, re-run verify.
115
115
 
116
116
  10. **Fix issues found:**