@lifeaitools/rdc-skills 0.24.13 → 0.24.14

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.13",
3
+ "version": "0.24.14",
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/commands/help.md CHANGED
@@ -1,90 +1,72 @@
1
1
  ---
2
2
  name: rdc:help
3
3
  description: >-
4
- Usage `rdc:help` or `rdc` — selection menu of all rdc:* skills with their full argument syntax. Use when unsure which command to invoke or what args it takes.
4
+ Usage `rdc:help` or `rdc` — manifest-driven menu of all rdc:* skills with
5
+ argument syntax, requirements, decision hints, and direct MCP/curl access.
5
6
  ---
6
7
 
7
- > **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
8
- > Checklist-only output. No tool-call narration. No raw MCP/JSON/log dumps.
8
+ > **Output contract:** Checklist/table output only. No raw MCP/JSON/log dumps.
9
9
 
10
+ # rdc:help — Manifest-Driven Command Reference
10
11
 
11
- # rdc:help Command Reference
12
+ Print a concise command reference from the plugin manifest, then stop. Do not
13
+ ask which command to run unless the user explicitly asks for a recommendation.
12
14
 
13
- Print the full usage menu below verbatim, then ask the project lead which command to run.
15
+ ## Source Of Truth
14
16
 
15
- ## Workflow the RDC loop
17
+ Resolve the manifest in this order and use the first existing file:
16
18
 
17
- | Command | Usage |
18
- |---|---|
19
- | `rdc:preplan` | `rdc:preplan <topic> [--unattended]` — research, no code |
20
- | `rdc:plan` | `rdc:plan <topic> [--unattended]` — architecture + epic/tasks |
21
- | `rdc:build` | `rdc:build <epic-id\|topic> [--unattended]` — dispatch agents, commit, close items |
22
- | `rdc:review` | `rdc:review [--unattended]` — typecheck, tests, fix, commit |
23
- | `rdc:report` | `rdc:report [--unattended]` — write `.rdc/reports/YYYY-MM-DD.md` |
24
- | `rdc:overnight` | `rdc:overnight [epic-id\|label=X]` — chain preplan→plan→build→review→report |
25
- | `rdc:status` | `rdc:status` — read-only dashboard |
26
- | `rdc:fixit` | `rdc:fixit <description>` — bypass the loop, <5 files / <30 min |
19
+ 1. `{PLUGIN_ROOT}/.claude-plugin/plugin.json`
20
+ 2. `C:/Dev/rdc-skills/.claude-plugin/plugin.json`
21
+ 3. `~/.claude/plugins/cache/rdc-skills/rdc-skills/latest/.claude-plugin/plugin.json`
27
22
 
28
- ## Ops
23
+ Read `skills_meta` from the manifest. Group entries by `category` in this order:
24
+ `planning`, `build`, `deploy`, `release`, `dev-loop`, `reporting`, `tooling`,
25
+ `infra`.
29
26
 
30
- | Command | Usage |
31
- |---|---|
32
- | `rdc:deploy` | `rdc:deploy <slug> [build-id]` · `rdc:deploy new <slug>` · `rdc:deploy diagnose <slug>` · `rdc:deploy audit [--fix]` |
33
- | `rdc:release` | `rdc:release <repo> [version]` · `rdc:release <repo> --patch\|--minor\|--major` · `rdc:release <repo> --dry-run` |
27
+ For each row, show:
34
28
 
35
- ## Planning ↔ CLI bridge
29
+ ```text
30
+ {slash} — {usage} — needs: {requires or "(none)"} — cf: {yes|no}
31
+ ```
32
+
33
+ At the end, render a short decision tree from `skills_meta[].triggers`.
36
34
 
37
- | Command | Usage |
38
- |---|---|
39
- | `rdc:handoff` | `rdc:handoff <topic>` — finalize plan → work items for CLI |
40
- | `rdc:prototype` | `rdc:prototype <description>` — JSX mock for review |
41
- | `rdc:workitems` | `rdc:workitems <add\|update\|done\|list\|epics> [args]` |
42
- | `rdc:collab` | `rdc:collab --session <id>` — claude.ai bidirectional relay |
43
- | `rdc:design` | `rdc:design <command\|brief>` — RDC/Studio design, tokens, palettes, themes, Rampa CLI |
35
+ If the manifest is unreachable, say `manifest fallback used` and render the
36
+ static fallback table from `skills/help/SKILL.md`.
44
37
 
45
- ## Agent guides (dispatched by rdc:build, not user-invocable)
38
+ ## Direct MCP / curl Access
46
39
 
47
- These live under `guides/agents/` — they are role playbooks the build skill spawns as sub-agents. You do NOT invoke them directly.
40
+ Show this block after the command table so non-Claude callers have the same
41
+ entry point:
48
42
 
49
- - `guides/agents/frontend.md` — [agent-only — dispatched by rdc:build, not user-invocable]
50
- - `guides/agents/backend.md` — [agent-only — dispatched by rdc:build, not user-invocable]
51
- - `guides/agents/data.md` — [agent-only — dispatched by rdc:build, not user-invocable]
52
- - `guides/agents/design.md` — [agent-only — dispatched by rdc:build, not user-invocable]
53
- - `guides/agents/infrastructure.md` — [agent-only — dispatched by rdc:build, not user-invocable]
54
- - `guides/agents/content.md` [agent-only dispatched by rdc:build, not user-invocable]
55
- - `guides/agents/cs2.md` — [agent-only — dispatched by rdc:build, not user-invocable]
56
- - `guides/agents/viz.md` — [agent-only — dispatched by rdc:build, not user-invocable]
57
- - `guides/agents/setup.md` — [agent-only — dispatched by rdc:build, not user-invocable]
58
- - `guides/agents/verify.md` — [agent-only — dispatched by rdc:build, not user-invocable]
43
+ ```text
44
+ MCP endpoint: https://rdc-skills.regendevcorp.com/mcp
45
+ Health: curl -s https://rdc-skills.regendevcorp.com/health
46
+ Header: Accept: application/json, text/event-stream
47
+ Tools: rdc_skill_list, rdc_skill_search, rdc_skill_get
48
+ Variants: cli for Claude Code/Codex/local terminal; cloud for claude.ai
49
+ ```
59
50
 
60
- Each agent reads `.rdc/guides/agent-bootstrap.md` first, then its role guide.
51
+ Minimal curl examples:
61
52
 
62
- ## Decision tree
53
+ ```bash
54
+ curl -s -X POST https://rdc-skills.regendevcorp.com/mcp \
55
+ -H 'Content-Type: application/json' \
56
+ -H 'Accept: application/json, text/event-stream' \
57
+ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"rdc_skill_list","arguments":{}}}'
63
58
 
64
- ```
65
- Project lead says → invoke
66
- ─────────────────────────────────────────────────
67
- "research this" / "how do others do" → rdc:preplan <topic>
68
- "plan this out" / "architect" → rdc:plan <topic>
69
- "build it" / "go" / "execute" → rdc:build <topic>
70
- "run overnight" / "while I sleep" → rdc:overnight
71
- "quick fix" / "hotfix" / "typo" → rdc:fixit <desc>
72
- "review" / "is it clean" → rdc:review
73
- "report" / "summarize" → rdc:report
74
- "status" / "where are we" → rdc:status
75
- "deploy" / "ship" → rdc:deploy <slug>
76
- "release" / "publish" → rdc:release <repo>
77
- "hand this off" / "give to agents" → rdc:handoff
78
- "show me what it looks like" → rdc:prototype
79
- "add to backlog" / "create a ticket" → rdc:workitems
80
- "design/tokens/palette/theme" → rdc:design <command>
81
- "what commands" / "what skills" → rdc:help
59
+ curl -s -X POST https://rdc-skills.regendevcorp.com/mcp \
60
+ -H 'Content-Type: application/json' \
61
+ -H 'Accept: application/json, text/event-stream' \
62
+ -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"rdc_skill_get","arguments":{"name":"build","variant":"cli"}}}'
82
63
  ```
83
64
 
84
- ## Hard rules (apply everywhere)
65
+ ## Hard Rules
85
66
 
86
- - NEVER `pnpm build` crashes the machine. Typecheck with `npx tsc --noEmit`.
87
- - NEVER commit to `main` without explicit approval. Default branch is `develop`.
88
- - NEVER overlap agents on the same files.
89
- - ALWAYS update work items in real time via RPCs (see `.claude/rules/work-items-rpc.md`).
90
- - ALWAYS credentials via clauth daemon: `curl -s http://127.0.0.1:52437/get/<service>`.
67
+ - `cf: yes` skills must consult CodeFlow before acting.
68
+ - Never run `pnpm build` at monorepo root. Use scoped typecheck/tests.
69
+ - Never commit to `main` without explicit approval.
70
+ - Never overlap agents on the same files.
71
+ - Update work items in real time for skills that require work-items RPCs.
72
+ - Credentials come from clauth: `curl -s http://127.0.0.1:52437/v/<service>`.
package/git-sha.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "sha": "855a6b20f3ed897365cb835a6e7ad4a92b793d7a"
2
+ "sha": "090e6c4a0a643acca7ca0bfca384f43cc150dca9"
3
3
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifeaitools/rdc-skills",
3
- "version": "0.24.13",
3
+ "version": "0.24.14",
4
4
  "description": "RDC typed-agent dispatch skill suite for Claude Code - plan, build, review, overnight builds",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -35,7 +35,7 @@
35
35
  "rdc-design": "node scripts/rdc-design-cli.mjs",
36
36
  "test:hooks": "node scripts/test-rdc-hooks.mjs",
37
37
  "test:truth-gate": "node tests/run-evidence-gate.test.mjs && node tests/work-item-exit-gate-l2.test.mjs && node tests/work-item-exit-gate-l3.test.mjs && node tests/require-work-item-on-commit.test.mjs && node tests/harness-gates.test.mjs",
38
- "test:acceptance": "node tests/acceptance.test.mjs && node tests/install-rdc-skills.test.mjs",
38
+ "test:acceptance": "node tests/acceptance.test.mjs && node tests/install-rdc-skills.test.mjs && node tests/help-surface.test.mjs",
39
39
  "acceptance": "node scripts/acceptance.mjs --changed",
40
40
  "test:mcp": "node tests/mcp.test.mjs",
41
41
  "test:mcp:remote": "node tests/mcp.test.mjs --remote",
@@ -21,7 +21,8 @@ description: "Usage `rdc:help` — Show all rdc:* skills with usage, requirement
21
21
  3. Group entries by `category` in this order: `planning, build, deploy, release, dev-loop, reporting, tooling, infra`.
22
22
  4. For each entry render one row: `{slash} — {usage} — needs: {requires.join(',')} — cf: {codeflow_required ? 'yes' : 'no'}`.
23
23
  5. Print a Decision Tree at the end that maps natural-language phrases to skills, derived from each entry's `triggers[]`.
24
- 6. Hard rules section at the bottom (see below verbatim).
24
+ 6. Print the Direct MCP / curl Access block so non-Claude callers have the same entry point.
25
+ 7. Hard rules section at the bottom (see below — verbatim).
25
26
 
26
27
  ## Required output format
27
28
 
@@ -86,6 +87,26 @@ RDC SKILLS — manifest: .claude-plugin/plugin.json @ v{version}
86
87
  "claude.ai relay" / "collab session" → /rdc:collab
87
88
  "palette" / "studio design" / "tokens" → /rdc:design
88
89
 
90
+ ## Direct MCP / curl Access
91
+
92
+ MCP endpoint: https://rdc-skills.regendevcorp.com/mcp
93
+ Health: curl -s https://rdc-skills.regendevcorp.com/health
94
+ Header: Accept: application/json, text/event-stream
95
+ Tools: rdc_skill_list, rdc_skill_search, rdc_skill_get
96
+ Variants: cli for Claude Code/Codex/local terminal; cloud for claude.ai
97
+
98
+ List skills:
99
+ curl -s -X POST https://rdc-skills.regendevcorp.com/mcp \
100
+ -H 'Content-Type: application/json' \
101
+ -H 'Accept: application/json, text/event-stream' \
102
+ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"rdc_skill_list","arguments":{}}}'
103
+
104
+ Fetch a skill:
105
+ curl -s -X POST https://rdc-skills.regendevcorp.com/mcp \
106
+ -H 'Content-Type: application/json' \
107
+ -H 'Accept: application/json, text/event-stream' \
108
+ -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"rdc_skill_get","arguments":{"name":"build","variant":"cli"}}}'
109
+
89
110
  ## Hard rules
90
111
 
91
112
  - `cf: yes` skills MUST consult CodeFlow before acting. Hooks fail-closed on unreachable CodeFlow for these.
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env node
2
+ import assert from 'node:assert/strict';
3
+ import { readFileSync } from 'node:fs';
4
+ import { dirname, join, resolve } from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+
7
+ const __dirname = dirname(fileURLToPath(import.meta.url));
8
+ const root = resolve(__dirname, '..');
9
+
10
+ const files = {
11
+ readme: join(root, 'README.md'),
12
+ skillHelp: join(root, 'skills', 'help', 'SKILL.md'),
13
+ commandHelp: join(root, 'commands', 'help.md'),
14
+ };
15
+
16
+ const docs = Object.fromEntries(
17
+ Object.entries(files).map(([key, file]) => [key, readFileSync(file, 'utf8')]),
18
+ );
19
+
20
+ for (const [name, text] of Object.entries(docs)) {
21
+ assert.match(text, /https:\/\/rdc-skills\.regendevcorp\.com\/mcp/, `${name} must expose production MCP endpoint`);
22
+ assert.match(text, /Accept: application\/json, text\/event-stream/, `${name} must show Streamable HTTP Accept header`);
23
+ assert.match(text, /rdc_skill_list/, `${name} must mention rdc_skill_list`);
24
+ assert.match(text, /rdc_skill_get/, `${name} must mention rdc_skill_get`);
25
+ assert.doesNotMatch(text, /https:\/\/rdc-skills\.dev\.regendevcorp\.com\/mcp/, `${name} must not point callers at dev MCP`);
26
+ }
27
+
28
+ assert.match(docs.skillHelp, /manifest-driven/i, 'skill help should be manifest-driven');
29
+ assert.match(docs.commandHelp, /manifest-driven/i, 'command help should be manifest-driven');
30
+ assert.doesNotMatch(docs.commandHelp, /Print the full usage menu below verbatim/, 'command help must not use stale static menu wording');
31
+ assert.doesNotMatch(docs.commandHelp, /get\/<service>/, 'command help must use current clauth /v/<service> wording');
32
+
33
+ console.log('help surface tests — PASS');