@lifeaitools/rdc-skills 0.24.30 → 0.24.32

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.30",
3
+ "version": "0.24.32",
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": "e247eb79f223c88807aab96c87a8fe37e5b67f15"
2
+ "sha": "6cdbc94b363ce35e08dad017896af45a10122ddb"
3
3
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifeaitools/rdc-skills",
3
- "version": "0.24.30",
3
+ "version": "0.24.32",
4
4
  "description": "RDC typed-agent dispatch skill suite for Claude Code - plan, build, review, overnight builds",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -4,39 +4,39 @@ Current coverage: 29 manifests for 29 skill directories.
4
4
 
5
5
  The manifest layer verifies each skill can be started from a realistic caller prompt in an isolated `RDC_TEST=1` sandbox. The acceptance harness records the engine stream, extracted tool calls, stdout/stderr artifacts, rendered assistant output, failures, lessons learned, and next build optimizations under `.rdc/reports/`.
6
6
 
7
- `rdc:channel-formatter` currently has the strongest content acceptance fixture: it asserts source-grounded social-pack output, forbidden-claim absence, and observable corpus or web-search tool routing. `rdc:help` asserts the public MCP/curl caller surface and structured `format:"json"` discovery path. `rdc:self-test` validates the test-tier/evidence language. Planning/reporting skills (`rdc:preplan`, `rdc:plan`, `rdc:handoff`, `rdc:prototype`, `rdc:review`, `rdc:report`) now assert their required artifacts and safety boundaries. `rdc:release`, `rdc:deploy`, `rdc:terminal-config`, `rdc:status`, and `rdc:watch` add safety negative checks for publish/deploy/window/read-only behavior. The remaining manifests are basic behavioral smoke tests and should gain deeper acceptance assertions as each skill is touched.
7
+ `rdc:channel-formatter` currently has the strongest content acceptance fixture: it asserts source-grounded social-pack output, forbidden-claim absence, and observable corpus or web-search tool routing. `rdc:help` asserts the public MCP/curl caller surface and structured `format:"json"` discovery path. `rdc:self-test` validates the test-tier/evidence language. Planning/reporting skills (`rdc:preplan`, `rdc:plan`, `rdc:handoff`, `rdc:prototype`, `rdc:review`, `rdc:report`) assert their required artifacts and safety boundaries. Operational/content skills (`rdc:brochure`, `rdc:convert`, `lifeai-brochure-author`, `rdc:build`, `rdc:fixit`, `rdc:fs-mcp`, `rdc:workitems`) assert artifact paths, dispatch gates, scoped commits, filesystem boundaries, and sandboxed work-item behavior. Coordination/design/maintenance skills (`rdc:co-develop`, `rdc:collab`, `rdc:design`, `rdc:extract-verifier-rules`, `rdc:housekeeping`, `rdc:overnight`, `rdc:rpms-filemap`) assert relay safety, token/reference use, verifier corpus safety, maintenance/reporting, unattended sentinel behavior, and canonical file-map rules. All manifests now include a deeper acceptance block beyond the basic executable smoke fixture.
8
8
 
9
9
  | Skill | Manifest | Fixture prompt class | Assertions | Acceptance depth |
10
10
  |---|---|---|---|---|
11
- | `rdc:brochure` | `rdc-brochure.test.json` | HTML-to-PDF brochure fixture | `exit_code`, `stdout_contains` | Basic manifest |
12
- | `rdc:build` | `rdc-build.test.json` | Unattended build from sandbox label | `commits_made`, `exit_code`, `stdout_contains` | Basic manifest |
11
+ | `rdc:brochure` | `rdc-brochure.test.json` | HTML-to-PDF brochure fixture | `exit_code`, `stdout_contains` | PDF artifact, page/size/source output, and no upload/deploy/source-modification checks |
12
+ | `rdc:build` | `rdc-build.test.json` | Unattended build from sandbox label | `commits_made`, `exit_code`, `stdout_contains` | Dispatch guide, code-review, validator, sandbox, and no-push/no-skip checks |
13
13
  | `rdc:channel-formatter` | `rdc-channel-formatter.test.json` | Long article to social content pack | `exit_code`, `stdout_contains` | Output contains, output not contains, tool-call routing |
14
- | `rdc:co-develop` | `rdc-co-develop.test.json` | Coordination status | `commits_made`, `exit_code`, `stdout_contains` | Basic manifest |
15
- | `rdc:collab` | `rdc-collab.test.json` | Claude session relay fixture | `commits_made`, `exit_code`, `stdout_contains` | Basic manifest |
16
- | `rdc:convert` | `rdc-convert.test.json` | Markdown-to-Word conversion fixture | `exit_code`, `stdout_contains` | Basic manifest |
14
+ | `rdc:co-develop` | `rdc-co-develop.test.json` | Coordination status | `commits_made`, `exit_code`, `stdout_contains` | codevelop status, sandbox skip, no chitchat/live-send negative checks |
15
+ | `rdc:collab` | `rdc-collab.test.json` | Claude session relay fixture | `commits_made`, `exit_code`, `stdout_contains` | chitchat/SSE session handling, sandbox skip, and no-reply/no-push negative checks |
16
+ | `rdc:convert` | `rdc-convert.test.json` | Markdown-to-Word conversion fixture | `exit_code`, `stdout_contains` | build-corpus command surface, Word/Markdown flags, and no-GUI/global-install/commit checks |
17
17
  | `rdc:deploy` | `rdc-deploy.test.json` | Deployment diagnosis | `commits_made`, `exit_code`, `stdout_contains` | Read-only diagnose output and destructive deploy/DNS negative checks |
18
- | `rdc:design` | `rdc-design.test.json` | Studio palette audit | `exit_code`, `stdout_contains` | Basic manifest |
19
- | `rdc:fixit` | `rdc-fixit.test.json` | Tiny sandbox typo fix | `commits_made`, `exit_code`, `stdout_contains` | Basic manifest |
20
- | `rdc:fs-mcp` | `rdc-fs-mcp.test.json` | File-system bridge read fixture | `commits_made`, `exit_code`, `stdout_contains` | Basic manifest |
18
+ | `rdc:design` | `rdc-design.test.json` | Studio palette audit | `exit_code`, `stdout_contains` | Studio/token/Rampa references and external-write negative checks |
19
+ | `rdc:fixit` | `rdc-fixit.test.json` | Tiny sandbox typo fix | `commits_made`, `exit_code`, `stdout_contains` | Scope, code-review, specific-file staging, and broad-add negative checks |
20
+ | `rdc:fs-mcp` | `rdc-fs-mcp.test.json` | File-system bridge read fixture | `commits_made`, `exit_code`, `stdout_contains` | Local-vs-MCP access boundary, live FS, no-preview/no-overwrite checks, and read-tool routing |
21
21
  | `rdc:handoff` | `rdc-handoff.test.json` | Stub work handoff | `exit_code`, `stdout_contains` | Plan path, DoD, work-item handoff, and placeholder negative checks |
22
22
  | `rdc:help` | `rdc-help.test.json` | Help menu rendering | `commits_made`, `exit_code`, `stdout_contains` | MCP/curl output, structured JSON fetch, dev-endpoint negative checks |
23
- | `rdc:housekeeping` | `rdc-housekeeping.test.json` | Read-only housekeeping audit | `commits_made`, `exit_code`, `stdout_contains` | Basic manifest |
24
- | `lifeai-brochure-author` | `rdc-lifeai-brochure-author.test.json` | JSX compliance review fixture | `exit_code`, `stdout_contains` | Basic manifest |
25
- | `rdc:overnight` | `rdc-overnight.test.json` | Label-based overnight queue drain | `exit_code`, `stdout_contains` | Basic manifest |
23
+ | `rdc:housekeeping` | `rdc-housekeeping.test.json` | Read-only housekeeping audit | `commits_made`, `exit_code`, `stdout_contains` | PUBLISH/CLAUDE/orphan/report checks and no-fix/no-Coolify-write negative checks |
24
+ | `lifeai-brochure-author` | `rdc-lifeai-brochure-author.test.json` | JSX compliance review fixture | `exit_code`, `stdout_contains` | brochure-kit component guidance and raw HTML/style/token negative checks |
25
+ | `rdc:overnight` | `rdc-overnight.test.json` | Label-based overnight queue drain | `exit_code`, `stdout_contains` | overnight sentinel, clauth preflight, full chain, and no-wide-add/no-lock-left negative checks |
26
26
  | `rdc:plan` | `rdc-plan.test.json` | Health-endpoint planning prompt | `exit_code`, `stdout_contains` | Design-decision, decomposition-matrix, work-package, and coarse-check negative checks |
27
27
  | `rdc:preplan` | `rdc-preplan.test.json` | Rate-limiter research prompt | `commits_made`, `exit_code`, `stdout_contains` | Research artifact, comparison, unknowns, recommendation, and research-tool routing checks |
28
28
  | `rdc:prototype` | `rdc-prototype.test.json` | Tiny component prototype prompt | `exit_code`, `stdout_contains` | Local TSX prototype artifact, registry, test-mode, and production-write negative checks |
29
29
  | `rdc:brochurify` | `rdc-rdc-brochurify.test.json` | Read-only markdown Brochurify fixture | `exit_code`, `stdout_contains` | Sandbox output and no-follow-up negative checks |
30
- | `rdc:extract-verifier-rules` | `rdc-rdc-extract-verifier-rules.test.json` | Enhancement-log verifier fixture | `exit_code`, `stdout_contains` | Basic manifest |
30
+ | `rdc:extract-verifier-rules` | `rdc-rdc-extract-verifier-rules.test.json` | Enhancement-log verifier fixture | `exit_code`, `stdout_contains` | Candidate, false-positive, known-good, recall, and no-auto-merge/PR negative checks |
31
31
  | `rdc:release` | `rdc-release.test.json` | Dry-run package release | `commits_made`, `exit_code`, `stdout_contains` | Dry-run release checklist and force/bypass negative checks |
32
32
  | `rdc:report` | `rdc-report.test.json` | Unattended report generation | `exit_code`, `stdout_contains` | Report status block, counts, next recommendation, and dump/push negative checks |
33
33
  | `rdc:review` | `rdc-review.test.json` | Unattended review gate | `exit_code`, `stdout_contains` | Code-review, verify, fresh-evidence, tsc, and forbidden-build negative checks |
34
- | `rdc:rpms-filemap` | `rdc-rpms-filemap.test.json` | Canonical location lookup | `commits_made`, `exit_code`, `stdout_contains` | Basic manifest |
34
+ | `rdc:rpms-filemap` | `rdc-rpms-filemap.test.json` | Canonical location lookup | `commits_made`, `exit_code`, `stdout_contains` | Rule #1, context door, one-home rules, and no-hand-edit/second-home negative checks |
35
35
  | `rdc:self-test` | `rdc-self-test.test.json` | Strict self-test prompt | `commits_made`, `exit_code`, `stdout_contains` | Tier/evidence output checks and no-relaxed-linter negative check |
36
36
  | `rdc:status` | `rdc-status.test.json` | Read-only status snapshot | `commits_made`, `exit_code`, `stdout_contains` | Read-only status output and raw-MCP/write negative checks |
37
37
  | `rdc:terminal-config` | `rdc-terminal-config.test.json` | Hidden-window launch policy audit | `commits_made`, `exit_code`, `stdout_contains` | Hidden-window output and focus/collapse API negative checks |
38
38
  | `rdc:watch` | `rdc-watch.test.json` | Watcher initialization prompt | `exit_code`, `stdout_contains` | Test-mode no-open output, tool-call routing, and focus-event negative checks |
39
- | `rdc:workitems` | `rdc-workitems.test.json` | Work-item epic listing | `commits_made`, `exit_code`, `stdout_contains` | Basic manifest |
39
+ | `rdc:workitems` | `rdc-workitems.test.json` | Work-item epic listing | `commits_made`, `exit_code`, `stdout_contains` | Read-only epics query, sandbox, and work-item write negative checks |
40
40
 
41
41
  ## What The Tests Accomplish
42
42
 
@@ -16,5 +16,20 @@
16
16
  "exit_code": 0,
17
17
  "stdout_contains": ["PDF", "Pages", "Size"]
18
18
  },
19
+ "acceptance": {
20
+ "output_contains": [
21
+ "PDF",
22
+ "Pages",
23
+ "Size",
24
+ "Source",
25
+ ".rdc/reports/brochure-fixture.pdf"
26
+ ],
27
+ "output_not_contains": [
28
+ "upload",
29
+ "deploy",
30
+ "git push",
31
+ "modify source"
32
+ ]
33
+ },
19
34
  "teardown": { "reset_branch": true }
20
35
  }
@@ -18,5 +18,20 @@
18
18
  "commits_made": { "min": 0, "message_matches": "." },
19
19
  "stdout_contains": ["Verdict"]
20
20
  },
21
+ "acceptance": {
22
+ "output_contains": [
23
+ "RDC_TEST",
24
+ "agent-bootstrap",
25
+ "engineering-behavior",
26
+ "code-review",
27
+ "validator"
28
+ ],
29
+ "output_not_contains": [
30
+ "git push origin",
31
+ "raw MCP",
32
+ "dispatch without",
33
+ "skip validation"
34
+ ]
35
+ },
21
36
  "teardown": { "reset_branch": true }
22
37
  }
@@ -11,5 +11,20 @@
11
11
  "commits_made": { "min": 0 },
12
12
  "stdout_contains": ["Verdict"]
13
13
  },
14
+ "acceptance": {
15
+ "output_contains": [
16
+ "codevelop",
17
+ "status",
18
+ "RDC_TEST",
19
+ "skipped",
20
+ "Verdict"
21
+ ],
22
+ "output_not_contains": [
23
+ "chitchat_",
24
+ "send a live turn",
25
+ "raw MCP",
26
+ "git push"
27
+ ]
28
+ },
14
29
  "teardown": { "reset_branch": true }
15
30
  }
@@ -11,5 +11,20 @@
11
11
  "commits_made": { "min": 0 },
12
12
  "stdout_contains": ["Verdict"]
13
13
  },
14
+ "acceptance": {
15
+ "output_contains": [
16
+ "session",
17
+ "chitchat",
18
+ "SSE",
19
+ "RDC_TEST",
20
+ "Verdict"
21
+ ],
22
+ "output_not_contains": [
23
+ "chitchat_reply",
24
+ "git push",
25
+ "curl exit 28 is failure",
26
+ "raw MCP"
27
+ ]
28
+ },
14
29
  "teardown": { "reset_branch": true }
15
30
  }
@@ -16,5 +16,20 @@
16
16
  "exit_code": 0,
17
17
  "stdout_contains": ["build-corpus", "Markdown", "Word"]
18
18
  },
19
+ "acceptance": {
20
+ "output_contains": [
21
+ "build-corpus",
22
+ "Markdown",
23
+ "Word",
24
+ "--to",
25
+ "--out"
26
+ ],
27
+ "output_not_contains": [
28
+ "launch GUI",
29
+ "install global dependencies implicitly",
30
+ "commit",
31
+ "deploy"
32
+ ]
33
+ },
19
34
  "teardown": { "reset_branch": true }
20
35
  }
@@ -10,5 +10,20 @@
10
10
  "exit_code": 0,
11
11
  "stdout_contains": ["Verdict"]
12
12
  },
13
+ "acceptance": {
14
+ "output_contains": [
15
+ "Studio",
16
+ "tokens",
17
+ "Rampa",
18
+ "RDC_TEST",
19
+ "Verdict"
20
+ ],
21
+ "output_not_contains": [
22
+ "Supabase write",
23
+ "git push",
24
+ "package publish",
25
+ "deploy"
26
+ ]
27
+ },
13
28
  "teardown": { "reset_branch": true }
14
29
  }
@@ -17,5 +17,20 @@
17
17
  "commits_made": { "min": 1, "message_matches": "[Ff]ix" },
18
18
  "stdout_contains": ["Verdict"]
19
19
  },
20
+ "acceptance": {
21
+ "output_contains": [
22
+ "fixit",
23
+ "scope",
24
+ "code-review",
25
+ "specific files",
26
+ "Verdict"
27
+ ],
28
+ "output_not_contains": [
29
+ "git add -A",
30
+ "git add .",
31
+ "skip code-review",
32
+ "scope exceeded"
33
+ ]
34
+ },
20
35
  "teardown": { "reset_branch": true }
21
36
  }
@@ -17,5 +17,21 @@
17
17
  "commits_made": { "min": 0 },
18
18
  "stdout_contains": ["FS MCP", "access path"]
19
19
  },
20
+ "acceptance": {
21
+ "output_contains": [
22
+ "FS MCP",
23
+ "access path",
24
+ "local scripts",
25
+ "MCP",
26
+ "live local FS"
27
+ ],
28
+ "output_not_contains": [
29
+ "preview",
30
+ "git add",
31
+ "overwrite",
32
+ "raw MCP"
33
+ ],
34
+ "tool_calls_include_any": ["Read", "Grep", "Glob", "fs_read", "fs_grep", "fs_glob"]
35
+ },
20
36
  "teardown": { "reset_branch": true }
21
37
  }
@@ -11,5 +11,20 @@
11
11
  "commits_made": { "min": 0 },
12
12
  "stdout_contains": ["Verdict"]
13
13
  },
14
+ "acceptance": {
15
+ "output_contains": [
16
+ "Housekeeping",
17
+ "PUBLISH.md",
18
+ "CLAUDE.md",
19
+ "orphan",
20
+ ".rdc/reports"
21
+ ],
22
+ "output_not_contains": [
23
+ "auto-remediate",
24
+ "git push",
25
+ "raw MCP",
26
+ "Coolify write"
27
+ ]
28
+ },
14
29
  "teardown": { "reset_branch": true }
15
30
  }
@@ -16,5 +16,20 @@
16
16
  "exit_code": 0,
17
17
  "stdout_contains": ["brochure-kit", "Raw HTML"]
18
18
  },
19
+ "acceptance": {
20
+ "output_contains": [
21
+ "@lifeai/brochure-kit",
22
+ "Raw HTML",
23
+ "<Brochure>",
24
+ "<Stack>",
25
+ "validator"
26
+ ],
27
+ "output_not_contains": [
28
+ "<div className",
29
+ "style={{",
30
+ "hex codes",
31
+ "viewport units"
32
+ ]
33
+ },
19
34
  "teardown": { "reset_branch": true }
20
35
  }
@@ -17,5 +17,22 @@
17
17
  "exit_code": 0,
18
18
  "stdout_contains": ["Verdict"]
19
19
  },
20
+ "acceptance": {
21
+ "output_contains": [
22
+ "overnight.lock",
23
+ "clauth",
24
+ "preplan",
25
+ "plan",
26
+ "build",
27
+ "review",
28
+ "report"
29
+ ],
30
+ "output_not_contains": [
31
+ "credential daemon offline",
32
+ "git add -A",
33
+ "raw MCP",
34
+ "leave overnight.lock"
35
+ ]
36
+ },
20
37
  "teardown": { "reset_branch": true }
21
38
  }
@@ -16,5 +16,20 @@
16
16
  "exit_code": 0,
17
17
  "stdout_contains": ["candidate", "FP"]
18
18
  },
19
+ "acceptance": {
20
+ "output_contains": [
21
+ "candidate",
22
+ "false-positive",
23
+ "known-good",
24
+ "recall",
25
+ "FP"
26
+ ],
27
+ "output_not_contains": [
28
+ "auto-merge",
29
+ "opened PR",
30
+ "raw tool logs",
31
+ "matches known-good"
32
+ ]
33
+ },
19
34
  "teardown": { "reset_branch": true }
20
35
  }
@@ -11,5 +11,20 @@
11
11
  "commits_made": { "min": 0 },
12
12
  "stdout_contains": ["RULE #1", "Canonical"]
13
13
  },
14
+ "acceptance": {
15
+ "output_contains": [
16
+ "RULE #1",
17
+ "Canonical",
18
+ "_context.md",
19
+ "One Home Per Fact",
20
+ ".rdc/reports"
21
+ ],
22
+ "output_not_contains": [
23
+ "hand-edit generated",
24
+ "second home",
25
+ "raw manifests",
26
+ "binary commit"
27
+ ]
28
+ },
14
29
  "teardown": { "reset_branch": true }
15
30
  }
@@ -11,5 +11,19 @@
11
11
  "commits_made": { "min": 0 },
12
12
  "stdout_contains": ["Verdict"]
13
13
  },
14
+ "acceptance": {
15
+ "output_contains": [
16
+ "get_open_epics",
17
+ "read-only",
18
+ "Verdict",
19
+ "RDC_TEST"
20
+ ],
21
+ "output_not_contains": [
22
+ "insert_work_item",
23
+ "update_work_item_status",
24
+ "bump_epic_version",
25
+ "raw MCP"
26
+ ]
27
+ },
14
28
  "teardown": { "reset_branch": true }
15
29
  }
@@ -56,4 +56,11 @@ for (const entry of valid) {
56
56
  }
57
57
  }
58
58
 
59
+ const shallow = valid
60
+ .map((entry) => entry.manifest)
61
+ .filter((manifest) => !manifest.acceptance || Object.keys(manifest.acceptance).length === 0)
62
+ .map((manifest) => manifest.skill);
63
+ assert.deepEqual(shallow, [], `all skill manifests must include acceptance checks; missing: ${shallow.join(', ')}`);
64
+ assert.match(matrix, /All manifests now include a deeper acceptance block/);
65
+
59
66
  console.log('skill test matrix tests — PASS');