@lifeaitools/rdc-skills 0.24.12 → 0.24.13
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-plugin/plugin.json +1 -1
- package/README.md +82 -10
- package/git-sha.json +1 -1
- package/package.json +2 -2
- package/scripts/install-rdc-skills.js +46 -4
- package/tests/install-rdc-skills.test.mjs +21 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rdc",
|
|
3
|
-
"version": "0.24.
|
|
3
|
+
"version": "0.24.13",
|
|
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/README.md
CHANGED
|
@@ -66,6 +66,61 @@ node scripts/install-rdc-skills.js --project-root /path/to/project --write-start
|
|
|
66
66
|
|
|
67
67
|
This writes `.rdc/guides/rdc-skills-startup.md` and managed RDC sections in `CLAUDE.md` and `AGENTS.md`.
|
|
68
68
|
|
|
69
|
+
### MCP endpoint and direct curl access
|
|
70
|
+
|
|
71
|
+
The shared MCP endpoint is:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
https://rdc-skills.regendevcorp.com/mcp
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Health check:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
curl -s https://rdc-skills.regendevcorp.com/health
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Streamable HTTP MCP calls must use `POST` and include the SSE-compatible
|
|
84
|
+
`Accept` header:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
curl -s -X POST https://rdc-skills.regendevcorp.com/mcp \
|
|
88
|
+
-H 'Content-Type: application/json' \
|
|
89
|
+
-H 'Accept: application/json, text/event-stream' \
|
|
90
|
+
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
List tools:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
curl -s -X POST https://rdc-skills.regendevcorp.com/mcp \
|
|
97
|
+
-H 'Content-Type: application/json' \
|
|
98
|
+
-H 'Accept: application/json, text/event-stream' \
|
|
99
|
+
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
List skills:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
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":3,"method":"tools/call","params":{"name":"rdc_skill_list","arguments":{}}}'
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Fetch a skill body for a specific caller surface:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
curl -s -X POST https://rdc-skills.regendevcorp.com/mcp \
|
|
115
|
+
-H 'Content-Type: application/json' \
|
|
116
|
+
-H 'Accept: application/json, text/event-stream' \
|
|
117
|
+
-d '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"rdc_skill_get","arguments":{"name":"build","variant":"cli"}}}'
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Use `variant:"cli"` for Claude Code/Codex/local terminal instructions. Use
|
|
121
|
+
`variant:"cloud"` for claude.ai web sessions where local daemon, shell, or
|
|
122
|
+
filesystem steps need cloud-safe wording.
|
|
123
|
+
|
|
69
124
|
### Legacy install scripts (deprecated since v0.6.0)
|
|
70
125
|
|
|
71
126
|
`scripts/install.sh` and `scripts/install.ps1` copy files into `~/.claude/skills/user/`. These exist only for environments that cannot use the plugin system. Running them alongside the plugin creates duplicates. Do not use them if you have the plugin installed.
|
|
@@ -84,7 +139,7 @@ Throughout the skills, the following substitutions have been made to make them p
|
|
|
84
139
|
|
|
85
140
|
## Skills Overview
|
|
86
141
|
|
|
87
|
-
|
|
142
|
+
29 skills organized into 6 categories:
|
|
88
143
|
|
|
89
144
|
### Orchestration Skills (workflow drivers)
|
|
90
145
|
- rdc:build, rdc:plan, rdc:preplan, rdc:review, rdc:overnight, rdc:fixit, rdc:status, rdc:report
|
|
@@ -98,13 +153,25 @@ Located in `guides/agents/` — plain markdown playbooks spawned as sub-agents:
|
|
|
98
153
|
|
|
99
154
|
### Utility Skills
|
|
100
155
|
- rdc:collab
|
|
156
|
+
- rdc:co-develop — peer-aware Claude/Codex co-development over clauth
|
|
157
|
+
- rdc:fs-mcp — File System MCP bridge guidance for live repo reads/writes
|
|
158
|
+
- rdc:terminal-config — Windows Terminal and hidden-launch policy audit
|
|
159
|
+
- rdc:watch — session-log viewer initialization for attended sessions
|
|
101
160
|
- rdc:channel-formatter — channel-native formatting and content repurposing for LinkedIn, Twitter/X, Slack/Teams, email, decks, Word/PDF structure, web copy, and content packs
|
|
102
161
|
|
|
103
162
|
### Design Skills
|
|
104
163
|
- rdc:design — RDC/Studio design, tokens, palettes, themes, and Rampa CLI-assisted color systems
|
|
105
164
|
|
|
165
|
+
### Document and Brochure Skills
|
|
166
|
+
- rdc:convert — Office/Markdown conversion via build-corpus
|
|
167
|
+
- rdc:brochure — HTML/folder/zip/URL/Markdown to print-quality PDF
|
|
168
|
+
- rdc:brochurify — six-wave Brochurify orchestration contract
|
|
169
|
+
- lifeai-brochure-author — brochure JSX authoring contract for @lifeai/brochure-kit
|
|
170
|
+
- rdc:extract-verifier-rules — verifier-rule candidates from enhancement logs
|
|
171
|
+
- rpms-filemap — canonical RPMS file-map lookup
|
|
172
|
+
|
|
106
173
|
### Reference
|
|
107
|
-
- rdc:help
|
|
174
|
+
- rdc:help, rdc:self-test
|
|
108
175
|
|
|
109
176
|
## Channel Formatting and Content Packs
|
|
110
177
|
|
|
@@ -203,6 +270,13 @@ skills/
|
|
|
203
270
|
release/SKILL.md (atomic package/app release)
|
|
204
271
|
self-test/SKILL.md (skill suite health check)
|
|
205
272
|
watch/SKILL.md (session log watcher)
|
|
273
|
+
channel-formatter/SKILL.md (channel-native formatting and content packs)
|
|
274
|
+
convert/SKILL.md (Office/Markdown conversion)
|
|
275
|
+
brochure/SKILL.md (print-quality PDF rendering)
|
|
276
|
+
rdc-brochurify/SKILL.md (Brochurify orchestration)
|
|
277
|
+
lifeai-brochure-author/SKILL.md (brochure JSX authoring)
|
|
278
|
+
rdc-extract-verifier-rules/SKILL.md (verifier rule extraction)
|
|
279
|
+
rpms-filemap/SKILL.md (canonical RPMS file map)
|
|
206
280
|
|
|
207
281
|
guides/agents/ (agent-only playbooks — dispatched by rdc:build, not user-invocable)
|
|
208
282
|
frontend.md (React, UI, Tailwind)
|
|
@@ -224,18 +298,16 @@ scripts/
|
|
|
224
298
|
## Check installed version
|
|
225
299
|
|
|
226
300
|
```bash
|
|
227
|
-
#
|
|
228
|
-
|
|
301
|
+
# Published package
|
|
302
|
+
npm view @lifeaitools/rdc-skills version
|
|
229
303
|
|
|
230
|
-
#
|
|
231
|
-
|
|
304
|
+
# Installed global package
|
|
305
|
+
npm list -g @lifeaitools/rdc-skills --depth=0
|
|
232
306
|
|
|
233
|
-
#
|
|
234
|
-
/
|
|
307
|
+
# Running MCP service
|
|
308
|
+
curl -s https://rdc-skills.regendevcorp.com/health
|
|
235
309
|
```
|
|
236
310
|
|
|
237
|
-
Current version: **v0.9.36**
|
|
238
|
-
|
|
239
311
|
## Quick Start
|
|
240
312
|
|
|
241
313
|
1. Copy this directory to your project
|
package/git-sha.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifeaitools/rdc-skills",
|
|
3
|
-
"version": "0.24.
|
|
3
|
+
"version": "0.24.13",
|
|
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",
|
|
38
|
+
"test:acceptance": "node tests/acceptance.test.mjs && node tests/install-rdc-skills.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",
|
|
@@ -102,6 +102,48 @@ function run(cmd, options = {}) {
|
|
|
102
102
|
return execSync(cmd, { encoding: 'utf8', stdio: 'pipe', ...options }).trim();
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
+
function updateCodexMcpToml(toml, mcpUrl) {
|
|
106
|
+
const blockRe = /(^|\n)(\[mcp_servers\.rdc-skills\]\n)([\s\S]*?)(?=\n\[|\s*$)/;
|
|
107
|
+
const desiredLine = `url = '${mcpUrl}'`;
|
|
108
|
+
if (blockRe.test(toml)) {
|
|
109
|
+
return toml.replace(blockRe, (match, prefix, header, body) => {
|
|
110
|
+
if (/^url\s*=.*$/m.test(body)) {
|
|
111
|
+
return `${prefix}${header}${body.replace(/^url\s*=.*$/m, desiredLine)}`;
|
|
112
|
+
}
|
|
113
|
+
const trimmed = body.replace(/\s*$/, '');
|
|
114
|
+
return `${prefix}${header}${trimmed}${trimmed ? '\n' : ''}${desiredLine}\n`;
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
return toml.replace(/\s*$/, '\n') + `\n[mcp_servers.rdc-skills]\n${desiredLine}\n`;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function selfTestCodexMcpToml() {
|
|
121
|
+
const url = 'https://rdc-skills.regendevcorp.com/mcp';
|
|
122
|
+
const stale = "[mcp_servers.clauth]\nurl = 'https://clauth.regendevcorp.com/mcp'\n\n[mcp_servers.rdc-skills]\nurl = 'https://rdc-skills.dev.regendevcorp.com/mcp'\n\n[mcp_servers.web-research]\nurl = 'https://research.regendevcorp.com/mcp'\n";
|
|
123
|
+
const updated = updateCodexMcpToml(stale, url);
|
|
124
|
+
if (!updated.includes(`url = '${url}'`)) throw new Error('did not write production rdc-skills URL');
|
|
125
|
+
if (updated.includes('rdc-skills.dev.regendevcorp.com')) throw new Error('stale dev URL survived');
|
|
126
|
+
if (!updated.includes('[mcp_servers.clauth]') || !updated.includes('[mcp_servers.web-research]')) throw new Error('neighbor MCP blocks were damaged');
|
|
127
|
+
|
|
128
|
+
const missing = updateCodexMcpToml("[mcp_servers.clauth]\nurl = 'https://clauth.regendevcorp.com/mcp'\n", url);
|
|
129
|
+
if (!missing.includes('[mcp_servers.rdc-skills]')) throw new Error('missing block was not appended');
|
|
130
|
+
|
|
131
|
+
const noUrl = updateCodexMcpToml('[mcp_servers.rdc-skills]\nstartup_timeout_sec = 30\n', url);
|
|
132
|
+
if (!noUrl.includes("startup_timeout_sec = 30") || !noUrl.includes(`url = '${url}'`)) throw new Error('url-less block was not repaired');
|
|
133
|
+
|
|
134
|
+
console.log('install-rdc-skills codex MCP TOML self-test — PASS');
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (args.includes('--self-test-codex-mcp-toml')) {
|
|
138
|
+
try {
|
|
139
|
+
selfTestCodexMcpToml();
|
|
140
|
+
process.exit(0);
|
|
141
|
+
} catch (e) {
|
|
142
|
+
console.error(e.message || e);
|
|
143
|
+
process.exit(1);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
105
147
|
// ── Filesystem helpers ────────────────────────────────────────────────────────
|
|
106
148
|
function copyDir(src, dst, ext) {
|
|
107
149
|
if (!fs.existsSync(src)) { warn(`Source not found: ${src}`); return 0; }
|
|
@@ -624,14 +666,14 @@ function registerMcpEndpoints() {
|
|
|
624
666
|
}
|
|
625
667
|
} catch (e) { out.push(`claude WARN:${e.message}`); }
|
|
626
668
|
|
|
627
|
-
// Codex —
|
|
669
|
+
// Codex — ensure [mcp_servers.rdc-skills] exists and points at the live shared endpoint.
|
|
628
670
|
try {
|
|
629
671
|
const codexToml = path.join(os.homedir(), '.codex', 'config.toml');
|
|
630
672
|
if (fs.existsSync(codexToml)) {
|
|
631
673
|
const toml = fs.readFileSync(codexToml, 'utf8');
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
fs.writeFileSync(codexToml,
|
|
674
|
+
const next = updateCodexMcpToml(toml, MCP_URL);
|
|
675
|
+
if (next !== toml) {
|
|
676
|
+
fs.writeFileSync(codexToml, next);
|
|
635
677
|
out.push('codex(~/.codex/config.toml)');
|
|
636
678
|
}
|
|
637
679
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { spawnSync } from 'node:child_process';
|
|
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 REPO_ROOT = resolve(__dirname, '..');
|
|
9
|
+
const script = join(REPO_ROOT, 'scripts', 'install-rdc-skills.js');
|
|
10
|
+
|
|
11
|
+
const syntax = spawnSync(process.execPath, ['--check', script], { encoding: 'utf8' });
|
|
12
|
+
assert.equal(syntax.status, 0, syntax.stderr);
|
|
13
|
+
|
|
14
|
+
const toml = spawnSync(process.execPath, [script, '--self-test-codex-mcp-toml'], {
|
|
15
|
+
cwd: REPO_ROOT,
|
|
16
|
+
encoding: 'utf8',
|
|
17
|
+
});
|
|
18
|
+
assert.equal(toml.status, 0, `${toml.stdout}\n${toml.stderr}`);
|
|
19
|
+
assert.match(toml.stdout, /PASS/);
|
|
20
|
+
|
|
21
|
+
console.log('install-rdc-skills tests — PASS');
|