rdap-q 1.2.1 → 1.2.4
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/.agents/plugins/rdap-q/plugin.json +1 -1
- package/.agents/skills/rdap-q/README.md +1 -1
- package/.agents/skills/rdap-q/SKILL.md +1 -1
- package/.agents/skills/rdap-q/install/install-unix.sh +1 -1
- package/.agents/skills/rdap-q/manifest.json +1 -1
- package/.claude/commands/rdapq.md +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin-index.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.clinerules +1 -1
- package/.codex/skill.json +1 -1
- package/.github/copilot-instructions.md +1 -1
- package/.goosehints +1 -1
- package/.grok/rules.md +1 -1
- package/.grok/skill.json +1 -1
- package/.grok-plugin/marketplace.json +1 -1
- package/.grok-plugin/plugin-index.json +1 -1
- package/AGENTS.md +1 -1
- package/CLAUDE.md +1 -1
- package/GEMINI.md +1 -1
- package/README.md +90 -224
- package/agentskills.json +1 -1
- package/install.ps1 +2 -2
- package/install.sh +2 -2
- package/lib/installer.js +43 -27
- package/manifest.json +1 -1
- package/marketplace.json +1 -1
- package/package.json +3 -2
- package/plugin.json +1 -1
- package/plugins/rdap-q/plugin.json +1 -1
- package/plugins/rdap-q/skills/rdap-q/README.md +1 -1
- package/plugins/rdap-q/skills/rdap-q/SKILL.md +1 -1
- package/plugins/rdap-q/skills/rdap-q/install/install-unix.sh +1 -1
- package/plugins/rdap-q/skills/rdap-q/manifest.json +1 -1
- package/rdap-q-skill/README.md +1 -1
- package/rdap-q-skill/SKILL.md +1 -1
- package/rdap-q-skill/install/install-unix.sh +1 -1
- package/rdap-q-skill/manifest.json +1 -1
- package/scripts/harness-audit/check.py +387 -0
- package/scripts/harness-audit/vendors.json +192 -0
- package/scripts/harness-audit/weekly.sh +22 -0
- package/skills.json +1 -1
package/agentskills.json
CHANGED
package/install.ps1
CHANGED
|
@@ -22,7 +22,7 @@ param(
|
|
|
22
22
|
$ErrorActionPreference = "Stop"
|
|
23
23
|
|
|
24
24
|
if (-not $PSCommandPath) {
|
|
25
|
-
Write-Error "refusing a piped install (irm | iex). Use: npx
|
|
25
|
+
Write-Error "refusing a piped install (irm | iex). Use: npx rdap-q install --all`nOr clone the repo and run .\install.ps1 -All"
|
|
26
26
|
exit 1
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -37,7 +37,7 @@ if (-not (Test-Path -LiteralPath $Skill) -or -not (Test-Path -LiteralPath $Cli))
|
|
|
37
37
|
|
|
38
38
|
$Node = Get-Command node -ErrorAction SilentlyContinue
|
|
39
39
|
if (-not $Node) {
|
|
40
|
-
Write-Error "Node.js >= 18 is required. Install Node, then re-run .\install.ps1 or use npx
|
|
40
|
+
Write-Error "Node.js >= 18 is required. Install Node, then re-run .\install.ps1 or use npx rdap-q."
|
|
41
41
|
exit 1
|
|
42
42
|
}
|
|
43
43
|
|
package/install.sh
CHANGED
|
@@ -9,7 +9,7 @@ if [[ -z "${BASH_SOURCE[0]:-}" || "${BASH_SOURCE[0]}" == "-" || ! -f "${BASH_SOU
|
|
|
9
9
|
echo "That path cannot see the skill tree and used to delete an existing install before failing." >&2
|
|
10
10
|
echo "Use one of:" >&2
|
|
11
11
|
echo " git clone https://github.com/coldcanuk/rdapq.git && cd rdapq && ./install.sh --all" >&2
|
|
12
|
-
echo " npx
|
|
12
|
+
echo " npx rdap-q install --all" >&2
|
|
13
13
|
exit 1
|
|
14
14
|
fi
|
|
15
15
|
|
|
@@ -21,7 +21,7 @@ if [[ ! -f "$SCRIPT_DIR/rdap-q-skill/SKILL.md" || ! -f "$SCRIPT_DIR/bin/rdapq.js
|
|
|
21
21
|
fi
|
|
22
22
|
|
|
23
23
|
if ! command -v node >/dev/null 2>&1; then
|
|
24
|
-
echo "error: Node.js >= 18 is required. Install Node, then re-run ./install.sh or use npx
|
|
24
|
+
echo "error: Node.js >= 18 is required. Install Node, then re-run ./install.sh or use npx rdap-q." >&2
|
|
25
25
|
exit 1
|
|
26
26
|
fi
|
|
27
27
|
|
package/lib/installer.js
CHANGED
|
@@ -37,7 +37,6 @@ function readVersion(pkgRoot) {
|
|
|
37
37
|
|
|
38
38
|
function resolveLayout(env) {
|
|
39
39
|
const home = env.HOME || env.USERPROFILE || require('os').homedir();
|
|
40
|
-
const roaming = env.APPDATA || path.join(home, 'AppData', 'Roaming');
|
|
41
40
|
return {
|
|
42
41
|
rdapq: env.RDAPQ_HOME || path.join(home, '.rdapq'),
|
|
43
42
|
gemini: env.GEMINI_HOME || path.join(home, '.gemini'),
|
|
@@ -47,16 +46,15 @@ function resolveLayout(env) {
|
|
|
47
46
|
cline: env.CLINE_HOME || path.join(home, '.cline'),
|
|
48
47
|
codex: env.CODEX_HOME || path.join(home, '.codex'),
|
|
49
48
|
grok: env.GROK_HOME || path.join(home, '.grok'),
|
|
50
|
-
copilot: env.COPILOT_HOME || (
|
|
51
|
-
|
|
52
|
-
: path.join(home, '.config', 'github-copilot')),
|
|
49
|
+
copilot: env.COPILOT_HOME || path.join(home, '.copilot'),
|
|
50
|
+
agents: env.AGENTS_HOME || path.join(home, '.agents'),
|
|
53
51
|
};
|
|
54
52
|
}
|
|
55
53
|
|
|
56
54
|
function skillSource(pkgRoot) {
|
|
57
55
|
const src = path.join(pkgRoot, 'rdap-q-skill');
|
|
58
56
|
if (!exists(path.join(src, 'SKILL.md'))) {
|
|
59
|
-
throw new Error(`RDAP-Q skill source is missing (${src}). Install from a full checkout or via npx
|
|
57
|
+
throw new Error(`RDAP-Q skill source is missing (${src}). Install from a full checkout or via npx rdap-q.`);
|
|
60
58
|
}
|
|
61
59
|
return src;
|
|
62
60
|
}
|
|
@@ -188,14 +186,16 @@ function harnessFiles(id, layout, pkgRoot) {
|
|
|
188
186
|
case 'claude':
|
|
189
187
|
return [[path.join(pkgRoot, '.claude', 'commands', 'rdapq.md'), path.join(layout.claude, 'commands', 'rdapq.md')]];
|
|
190
188
|
case 'cline':
|
|
191
|
-
return [[path.join(pkgRoot, '.clinerules'), path.join(layout.cline, 'rdapq.
|
|
189
|
+
return [[path.join(pkgRoot, '.clinerules'), path.join(layout.cline, 'rules', 'rdapq.md')]];
|
|
192
190
|
case 'copilot':
|
|
193
|
-
return [[path.join(pkgRoot, '.github', 'copilot-instructions.md'), path.join(layout.copilot, '
|
|
191
|
+
return [[path.join(pkgRoot, '.github', 'copilot-instructions.md'), path.join(layout.copilot, 'copilot-instructions.md')]];
|
|
194
192
|
case 'codex':
|
|
195
193
|
return [[path.join(pkgRoot, 'AGENTS.md'), path.join(layout.codex, 'AGENTS.md')]];
|
|
194
|
+
case 'goose':
|
|
195
|
+
return [[path.join(pkgRoot, '.goosehints'), path.join(layout.goose, '.goosehints')]];
|
|
196
196
|
case 'grok':
|
|
197
|
-
return [[path.join(pkgRoot, '.grok', 'rules.md'), path.join(layout.grok, 'rules.md')]];
|
|
198
197
|
case 'cursor':
|
|
198
|
+
case 'antigravity':
|
|
199
199
|
return [];
|
|
200
200
|
default:
|
|
201
201
|
return [];
|
|
@@ -215,18 +215,27 @@ function harnessLabel(id) {
|
|
|
215
215
|
}[id];
|
|
216
216
|
}
|
|
217
217
|
|
|
218
|
-
function
|
|
219
|
-
if (id === 'antigravity')
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
218
|
+
function harnessTreeDests(id, layout) {
|
|
219
|
+
if (id === 'antigravity') {
|
|
220
|
+
return [
|
|
221
|
+
path.join(layout.gemini, 'antigravity-cli', 'skills', 'rdap-q'),
|
|
222
|
+
path.join(layout.gemini, 'config', 'skills', 'rdap-q'),
|
|
223
|
+
];
|
|
224
|
+
}
|
|
225
|
+
if (id === 'goose') return [];
|
|
226
|
+
if (id === 'cursor') return [path.join(layout.cursor, 'skills', 'rdap-q')];
|
|
227
|
+
if (id === 'grok') return [path.join(layout.grok, 'skills', 'rdap-q')];
|
|
228
|
+
if (id === 'claude') return [path.join(layout.claude, 'skills', 'rdap-q')];
|
|
229
|
+
if (id === 'copilot') return [path.join(layout.copilot, 'skills', 'rdap-q')];
|
|
230
|
+
if (id === 'codex') return [path.join(layout.agents, 'skills', 'rdap-q')];
|
|
231
|
+
return [];
|
|
223
232
|
}
|
|
224
233
|
|
|
225
234
|
const REPO_BRIDGES = [
|
|
226
235
|
['AGENTS.md', 'AGENTS.md'],
|
|
227
236
|
['CLAUDE.md', 'CLAUDE.md'],
|
|
228
237
|
['GEMINI.md', 'GEMINI.md'],
|
|
229
|
-
['.clinerules', '.clinerules'],
|
|
238
|
+
['.clinerules', path.join('.clinerules', 'rdapq.md')],
|
|
230
239
|
['.goosehints', '.goosehints'],
|
|
231
240
|
[path.join('.grok', 'rules.md'), path.join('.grok', 'rules.md')],
|
|
232
241
|
[path.join('.github', 'copilot-instructions.md'), path.join('.github', 'copilot-instructions.md')],
|
|
@@ -237,12 +246,12 @@ function statusRows(layout) {
|
|
|
237
246
|
return [
|
|
238
247
|
['Core Protocol ($RDAPQ_HOME)', path.join(layout.rdapq, 'skills', 'rdap-q', 'SKILL.md')],
|
|
239
248
|
['Google Antigravity', path.join(layout.gemini, 'antigravity-cli', 'skills', 'rdap-q', 'SKILL.md')],
|
|
240
|
-
['Anthropic Claude Code', path.join(layout.claude, '
|
|
241
|
-
['Cline / Roo Code', path.join(layout.cline, 'rdapq.
|
|
242
|
-
['GitHub Copilot', path.join(layout.copilot, '
|
|
249
|
+
['Anthropic Claude Code', path.join(layout.claude, 'skills', 'rdap-q', 'SKILL.md')],
|
|
250
|
+
['Cline / Roo Code', path.join(layout.cline, 'rules', 'rdapq.md')],
|
|
251
|
+
['GitHub Copilot', path.join(layout.copilot, 'copilot-instructions.md')],
|
|
243
252
|
['OpenAI Codex', path.join(layout.codex, 'AGENTS.md')],
|
|
244
|
-
['xAI Grok', path.join(layout.grok, '
|
|
245
|
-
['Block Goose', path.join(layout.goose, '
|
|
253
|
+
['xAI Grok', path.join(layout.grok, 'skills', 'rdap-q', 'SKILL.md')],
|
|
254
|
+
['Block Goose', path.join(layout.goose, '.goosehints')],
|
|
246
255
|
['Cursor', path.join(layout.cursor, 'skills', 'rdap-q', 'SKILL.md')],
|
|
247
256
|
];
|
|
248
257
|
}
|
|
@@ -290,7 +299,7 @@ function parseArgs(argv) {
|
|
|
290
299
|
|
|
291
300
|
function helpText(version) {
|
|
292
301
|
return `Usage: rdapq [COMMAND] [OPTIONS]
|
|
293
|
-
npx
|
|
302
|
+
npx rdap-q [COMMAND] [OPTIONS]
|
|
294
303
|
|
|
295
304
|
Research-Driven Adaptive Planning with Quality Gates (v${version})
|
|
296
305
|
|
|
@@ -317,12 +326,12 @@ Options:
|
|
|
317
326
|
|
|
318
327
|
There is no separate update command. Run install again with the same flags.
|
|
319
328
|
Skill trees are replaced after the new copy verifies. Edited harness files
|
|
320
|
-
are kept unless you pass --force.
|
|
329
|
+
are kept unless you pass --force.
|
|
321
330
|
|
|
322
331
|
Examples:
|
|
323
|
-
npx
|
|
324
|
-
npx
|
|
325
|
-
npx
|
|
332
|
+
npx rdap-q install --claude
|
|
333
|
+
npx rdap-q install --cursor
|
|
334
|
+
npx rdap-q@${version} install --all
|
|
326
335
|
rdapq init
|
|
327
336
|
rdapq init --force
|
|
328
337
|
rdapq status
|
|
@@ -355,8 +364,7 @@ function installCore(pkgRoot, layout, log) {
|
|
|
355
364
|
|
|
356
365
|
function installHarness(id, pkgRoot, layout, force, log) {
|
|
357
366
|
log(`==> Configuring for ${harnessLabel(id)}...`);
|
|
358
|
-
const treeDest
|
|
359
|
-
if (treeDest) {
|
|
367
|
+
for (const treeDest of harnessTreeDests(id, layout)) {
|
|
360
368
|
publishTree(skillSource(pkgRoot), treeDest);
|
|
361
369
|
log(` ✓ skill tree installed to ${treeDest}`);
|
|
362
370
|
}
|
|
@@ -379,13 +387,21 @@ function installRepo(pkgRoot, repoArg, cwd, force, log) {
|
|
|
379
387
|
const skillDest = path.join(abs, '.agents', 'skills', 'rdap-q');
|
|
380
388
|
publishTree(skillSource(pkgRoot), skillDest);
|
|
381
389
|
log(` ✓ skill tree installed to ${skillDest}`);
|
|
390
|
+
const claudeSkill = path.join(abs, '.claude', 'skills', 'rdap-q');
|
|
391
|
+
publishTree(skillSource(pkgRoot), claudeSkill);
|
|
392
|
+
log(` ✓ skill tree installed to ${claudeSkill}`);
|
|
382
393
|
log(' ✓ Workspace bridges processed for Codex, Grok, Copilot, Antigravity, Goose, Claude, and Cline.');
|
|
383
394
|
}
|
|
384
395
|
|
|
385
396
|
function printStatus(layout, log) {
|
|
386
397
|
log('==> Inspecting RDAP-Q Multi-Harness Status:');
|
|
387
398
|
for (const [name, target] of statusRows(layout)) {
|
|
388
|
-
|
|
399
|
+
let installed = false;
|
|
400
|
+
try {
|
|
401
|
+
installed = fs.lstatSync(target).isFile();
|
|
402
|
+
} catch {
|
|
403
|
+
installed = false;
|
|
404
|
+
}
|
|
389
405
|
const icon = installed ? '✓' : '✗';
|
|
390
406
|
const detail = installed ? `Installed (${target})` : 'Not installed';
|
|
391
407
|
log(` [${icon}] ${name.padEnd(28)}: ${detail}`);
|
package/manifest.json
CHANGED
package/marketplace.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/agent-skills/spec/main/marketplace.schema.json",
|
|
3
3
|
"name": "rdap-q",
|
|
4
4
|
"displayName": "RDAP-Q: Adaptive Planning with Quality Gates",
|
|
5
|
-
"version": "1.2.
|
|
5
|
+
"version": "1.2.4",
|
|
6
6
|
"protocol": "RDAP-Q Agent Engineering Protocol",
|
|
7
7
|
"summary": "Universal AI agent engineering protocol for evidence-first software development, calibrated scoring, and quality gates across Codex, Grok, Copilot, Antigravity, Goose, Claude, Cline, and Cursor.",
|
|
8
8
|
"description": "Vendor-neutral Research-Driven Adaptive Planning with Quality Gates (RDAP-Q) enables autonomous AI coding agents to execute non-trivial software tasks with disciplined evidence collection, deterministic phase execution, persistent project state, calibrated quality scoring (0-10 scale), and diminishing-return exit logic. Native support for OpenAI Codex, xAI Grok, GitHub Copilot, Google Antigravity, Block Goose, Anthropic Claude, Cline, and Cursor.",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rdap-q",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4",
|
|
4
4
|
"description": "Research-Driven Adaptive Planning with Quality Gates (RDAP-Q) — Vendor-neutral AI agent engineering protocol & skill for Codex, Grok, Copilot, Antigravity, Goose, Claude, Cline, and Cursor. Evidence-first software engineering, persistent memory, and calibrated quality gates.",
|
|
5
5
|
"main": "rdap-q-skill/SKILL.md",
|
|
6
6
|
"bin": {
|
|
@@ -68,7 +68,8 @@
|
|
|
68
68
|
"install:codex": "node bin/rdapq.js install --codex",
|
|
69
69
|
"install:grok": "node bin/rdapq.js install --grok",
|
|
70
70
|
"install:goose": "node bin/rdapq.js install --goose",
|
|
71
|
-
"install:cursor": "node bin/rdapq.js install --cursor"
|
|
71
|
+
"install:cursor": "node bin/rdapq.js install --cursor",
|
|
72
|
+
"audit:harnesses": "python3 scripts/harness-audit/check.py"
|
|
72
73
|
},
|
|
73
74
|
"engines": {
|
|
74
75
|
"node": ">=18.0.0"
|
package/plugin.json
CHANGED
|
@@ -4,7 +4,7 @@ description: Run the RDAP-Q evidence-first engineering protocol. Invoke with /rd
|
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
---
|
|
6
6
|
name: rdap-q
|
|
7
|
-
version: "1.2.
|
|
7
|
+
version: "1.2.4"
|
|
8
8
|
description: Evidence-first engineering protocol. Load this file, then the current phase playbook only.
|
|
9
9
|
invocation: /rdapq
|
|
10
10
|
home_env: RDAPQ_HOME
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env sh
|
|
2
2
|
# Install the skill tree into $RDAPQ_HOME. Stage first, swap only after SKILL.md
|
|
3
3
|
# is present, so a failed copy cannot delete a working install.
|
|
4
|
-
# Prefer the repo installer (./install.sh or npx
|
|
4
|
+
# Prefer the repo installer (./install.sh or npx rdap-q) when you have the full checkout.
|
|
5
5
|
set -eu
|
|
6
6
|
|
|
7
7
|
SOURCE_DIR="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)"
|
package/rdap-q-skill/README.md
CHANGED
package/rdap-q-skill/SKILL.md
CHANGED
|
@@ -4,7 +4,7 @@ description: Run the RDAP-Q evidence-first engineering protocol. Invoke with /rd
|
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
---
|
|
6
6
|
name: rdap-q
|
|
7
|
-
version: "1.2.
|
|
7
|
+
version: "1.2.4"
|
|
8
8
|
description: Evidence-first engineering protocol. Load this file, then the current phase playbook only.
|
|
9
9
|
invocation: /rdapq
|
|
10
10
|
home_env: RDAPQ_HOME
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env sh
|
|
2
2
|
# Install the skill tree into $RDAPQ_HOME. Stage first, swap only after SKILL.md
|
|
3
3
|
# is present, so a failed copy cannot delete a working install.
|
|
4
|
-
# Prefer the repo installer (./install.sh or npx
|
|
4
|
+
# Prefer the repo installer (./install.sh or npx rdap-q) when you have the full checkout.
|
|
5
5
|
set -eu
|
|
6
6
|
|
|
7
7
|
SOURCE_DIR="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)"
|