@lifeaitools/rdc-skills 0.9.15 → 0.9.17
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/package.json +1 -1
- package/skills/build/SKILL.md +17 -1
- package/skills/plan/SKILL.md +53 -5
- package/skills/status/SKILL.md +14 -2
package/package.json
CHANGED
package/skills/build/SKILL.md
CHANGED
|
@@ -192,6 +192,15 @@ Read the task title and description, then:
|
|
|
192
192
|
- **`"When done, set your work item to 'review' (NOT 'done') and return AGENT_COMPLETE with a verification field. The validator closes work items — you do not."`**
|
|
193
193
|
- **`"COMPLETION PROOF REQUIRED in AGENT_COMPLETE: list every file written, the exact commit hash, and paste the vitest/tsc output. A report without this evidence will be rejected."`**
|
|
194
194
|
- **`"If you find that a file or feature already exists: you MUST still verify it satisfies the full task spec before marking review. Finding a file is not completion. Run verification, check every requirement, and report what you found vs. what was required."`**
|
|
195
|
+
- **The test plan items from the work item's checklist** (all `test-*` prefixed items). Include them verbatim in the prompt and instruct the agent:
|
|
196
|
+
```
|
|
197
|
+
TEST PLAN — you MUST implement/verify each of these and tick them off via update_checklist_item:
|
|
198
|
+
- test-assert-xxx: <description> → write a vitest test that proves this
|
|
199
|
+
- test-smoke-xxx: <description> → run the command and confirm the result
|
|
200
|
+
- test-visual-xxx: <description> → note: delegate to UI audit (you cannot verify this yourself)
|
|
201
|
+
- test-contract-xxx: <description> → verify the export/type/shape exists
|
|
202
|
+
Tick each item as you complete it. Do NOT batch — tick immediately after each verification.
|
|
203
|
+
```
|
|
195
204
|
- Use `run_in_background: true` for parallel execution
|
|
196
205
|
- NEVER let agents overlap on the same files
|
|
197
206
|
|
|
@@ -255,11 +264,18 @@ Read the task title and description, then:
|
|
|
255
264
|
- Runs `npx tsc --noEmit` for every touched app/package
|
|
256
265
|
- Starts the dev server and probes every modified route (expects HTTP 200, not 500)
|
|
257
266
|
- Runs vitest for every touched package
|
|
267
|
+
- **Verifies test plan completion per work item:**
|
|
268
|
+
- For each `test-assert-*` checklist item: confirm a corresponding vitest test exists and passes
|
|
269
|
+
- For each `test-smoke-*` checklist item: run the command and confirm exit code / HTTP status
|
|
270
|
+
- For each `test-visual-*` checklist item: note as "delegated to UI audit" (validator cannot verify visuals)
|
|
271
|
+
- For each `test-contract-*` checklist item: verify the export/type/shape exists in the built code
|
|
272
|
+
- Any unchecked `test-*` item with `required: true` = work item CANNOT be set to `done` (DB enforces this)
|
|
258
273
|
- Sets passing items to `done`, failing items back to `todo` with failure detail
|
|
259
|
-
- Returns `VALIDATOR_COMPLETE` report
|
|
274
|
+
- Returns `VALIDATOR_COMPLETE` report with test plan status per item
|
|
260
275
|
|
|
261
276
|
**If the validator finds failures:** fix them in a new wave, then re-run the validator. Do not skip.
|
|
262
277
|
**File existence alone is NOT verification.** A route returning 500 is a failure regardless of tsc passing.
|
|
278
|
+
**Unchecked test plan items are a hard gate** — `update_work_item_status('done')` will raise an exception if any `required: true` checklist item is unchecked.
|
|
263
279
|
|
|
264
280
|
11. **After verification passes:**
|
|
265
281
|
- All wave commits are already on develop and pushed (Step 9 pushes after each wave merge).
|
package/skills/plan/SKILL.md
CHANGED
|
@@ -49,26 +49,74 @@ description: >-
|
|
|
49
49
|
4. **Define work packages** — break into agent-dispatchable units:
|
|
50
50
|
- Each work package = one agent assignment
|
|
51
51
|
- No file overlap between packages
|
|
52
|
-
- Each package has: scope, files to create/modify, test
|
|
52
|
+
- Each package has: scope, files to create/modify, test plan
|
|
53
53
|
- Assign an agent type to each work package from the typed dispatch table in rdc:build. Include the guide file path (from `.rdc/guides/`, fallback `.rdc/guides/`) in each work package description.
|
|
54
54
|
- Estimate: small (1 agent, <500 LOC), medium (1 agent, 500-1500 LOC), large (needs splitting)
|
|
55
55
|
|
|
56
|
-
5. **Write
|
|
56
|
+
5. **Write a test plan for each work package (MANDATORY):**
|
|
57
|
+
|
|
58
|
+
Every work package MUST have a `test_plan` section with specific, concrete test items. Each item has a type:
|
|
59
|
+
|
|
60
|
+
| Type | What it proves | How agent verifies | Example |
|
|
61
|
+
|------|---------------|-------------------|---------|
|
|
62
|
+
| `assert` | Logic is correct | Write a vitest test — input → expected output | `extractCode("```tsx\nfoo\n```") returns "foo"` |
|
|
63
|
+
| `smoke` | It runs without crashing | Run command, check exit code / HTTP status | `tsc --noEmit passes`, `GET /api/layout/scan returns 200` |
|
|
64
|
+
| `visual` | It looks right | Delegate to UI audit tool with specific checkpoints | `"/layout page renders container tree, not login screen"` |
|
|
65
|
+
| `contract` | Interface matches spec | Check exports, prop types, response shape | `ScanResult has { roots: ContainerNode[] }` |
|
|
66
|
+
|
|
67
|
+
**Rules for writing test plan items:**
|
|
68
|
+
- Every item must be a specific, falsifiable assertion — not "write tests" or "verify it works"
|
|
69
|
+
- New functions/modules MUST have at least one `assert` item
|
|
70
|
+
- API routes MUST have at least one `smoke` item
|
|
71
|
+
- UI pages MUST have at least one `visual` item
|
|
72
|
+
- New exports/types MUST have at least one `contract` item
|
|
73
|
+
- `assert` and `smoke` are mandatory for every work package. `visual` and `contract` when applicable.
|
|
74
|
+
|
|
75
|
+
**Example test plan in a plan doc:**
|
|
76
|
+
```markdown
|
|
77
|
+
### WP-2: AST Scanner
|
|
78
|
+
**Test plan:**
|
|
79
|
+
- assert: `scanFile` returns only Window/Frame/Pane/SubPane nodes, not Badge/Button
|
|
80
|
+
- assert: SubPane nested directly in root produces a warning
|
|
81
|
+
- assert: Valid Window > Frame > Pane > SubPane nesting produces no warnings
|
|
82
|
+
- smoke: `GET /api/layout/scan?dir=apps/studio/src` returns 200 with JSON body
|
|
83
|
+
- smoke: `npx tsc --noEmit` exits 0
|
|
84
|
+
- contract: `ScanResult` has shape `{ filePath: string, roots: ContainerNode[], warnings: ScanWarning[] }`
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
6. **Write plan doc** to `.rdc/plans/<topic-slug>.md` (fallback: `.rdc/plans/<topic-slug>.md` if `.rdc/` does not exist):
|
|
57
88
|
```markdown
|
|
58
89
|
# Plan: <Topic>
|
|
59
90
|
> Generated: <date> | Epic: <id if exists>
|
|
60
91
|
|
|
61
92
|
## Goal
|
|
62
93
|
## Design Decisions
|
|
63
|
-
## Work Packages
|
|
94
|
+
## Work Packages (each with test plan)
|
|
64
95
|
## Sequencing (what can parallelize, what depends on what)
|
|
65
96
|
## Risks & Mitigations
|
|
66
97
|
```
|
|
67
98
|
|
|
68
|
-
|
|
69
|
-
- Epic via `insert_work_item(p_item_type := 'epic', p_definition_of_done := '[
|
|
99
|
+
7. **Create Supabase epic + child tasks:**
|
|
100
|
+
- Epic via `insert_work_item(p_item_type := 'epic', p_definition_of_done := '[...]'::jsonb, ...)`
|
|
101
|
+
- Epic DoD MUST include: `{"id":"test-plan-verified","text":"All test plan items implemented and passing","required":true,"checked":false}`
|
|
70
102
|
- Set `p_definition_of_done` on the epic — child tasks inserted under it will auto-inherit it as their checklist
|
|
71
103
|
- One task per work package via `insert_work_item(p_parent_id := <epic_id>, ...)` — checklist auto-hydrated from epic's DoD
|
|
104
|
+
- **Additionally, write test plan items as checklist items** on each task, using id format `test-<type>-<slug>`:
|
|
105
|
+
```sql
|
|
106
|
+
SELECT insert_work_item(
|
|
107
|
+
p_parent_id := '<epic_id>',
|
|
108
|
+
p_title := 'WP-2: AST Scanner',
|
|
109
|
+
p_checklist := '[
|
|
110
|
+
{"id":"test-assert-scanner-filters","text":"assert: scanFile returns only container components","required":true,"checked":false},
|
|
111
|
+
{"id":"test-assert-nesting-warn","text":"assert: invalid nesting produces warnings","required":true,"checked":false},
|
|
112
|
+
{"id":"test-smoke-scan-api","text":"smoke: GET /api/layout/scan returns 200","required":true,"checked":false},
|
|
113
|
+
{"id":"test-contract-scanresult","text":"contract: ScanResult shape matches spec","required":true,"checked":false},
|
|
114
|
+
{"id":"tsc-clean","text":"npx tsc --noEmit passes","required":true,"checked":false}
|
|
115
|
+
]'::jsonb
|
|
116
|
+
);
|
|
117
|
+
```
|
|
118
|
+
- Agents MUST tick each `test-*` checklist item as they implement/verify it (via `update_checklist_item`)
|
|
119
|
+
- `update_work_item_status('done')` will REJECT if any `required: true` item is unchecked — this is the enforcement gate
|
|
72
120
|
- Set priorities: urgent/high/normal based on sequencing
|
|
73
121
|
|
|
74
122
|
7. **Report results:**
|
package/skills/status/SKILL.md
CHANGED
|
@@ -57,11 +57,20 @@ description: >-
|
|
|
57
57
|
git branch -v
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
6. **
|
|
60
|
+
6. **Dev server health (PM2):**
|
|
61
|
+
SSH into the Coolify server and check PM2 process state:
|
|
62
|
+
```bash
|
|
63
|
+
SSH_KEY=$(curl -s http://127.0.0.1:52437/v/ssh-key-path)
|
|
64
|
+
ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no root@64.237.54.189 "pm2 jlist 2>/dev/null"
|
|
65
|
+
```
|
|
66
|
+
Parse the JSON array — for each process note `name`, `pm2_env.status` (online/stopped/errored), and `pm2_env.pm_uptime`.
|
|
67
|
+
If SSH fails or PM2 returns nothing, note "PM2 unreachable" and continue.
|
|
68
|
+
|
|
69
|
+
7. **Infrastructure health** (if MCP available):
|
|
61
70
|
- Get infrastructure overview or diagnose issues
|
|
62
71
|
- Report any apps with failed builds or down containers
|
|
63
72
|
|
|
64
|
-
|
|
73
|
+
8. **Present as a compact dashboard:**
|
|
65
74
|
```
|
|
66
75
|
## Open Epics (N)
|
|
67
76
|
<table>
|
|
@@ -71,6 +80,9 @@ description: >-
|
|
|
71
80
|
## Recent (48h)
|
|
72
81
|
<list>
|
|
73
82
|
|
|
83
|
+
## Dev Servers (PM2)
|
|
84
|
+
online: studio canvas lifeai ... stopped: issho-invest
|
|
85
|
+
|
|
74
86
|
## Deployments
|
|
75
87
|
<green/red/yellow status>
|
|
76
88
|
|