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.
Files changed (42) hide show
  1. package/.agents/plugins/rdap-q/plugin.json +1 -1
  2. package/.agents/skills/rdap-q/README.md +1 -1
  3. package/.agents/skills/rdap-q/SKILL.md +1 -1
  4. package/.agents/skills/rdap-q/install/install-unix.sh +1 -1
  5. package/.agents/skills/rdap-q/manifest.json +1 -1
  6. package/.claude/commands/rdapq.md +1 -1
  7. package/.claude-plugin/marketplace.json +1 -1
  8. package/.claude-plugin/plugin-index.json +1 -1
  9. package/.claude-plugin/plugin.json +1 -1
  10. package/.clinerules +1 -1
  11. package/.codex/skill.json +1 -1
  12. package/.github/copilot-instructions.md +1 -1
  13. package/.goosehints +1 -1
  14. package/.grok/rules.md +1 -1
  15. package/.grok/skill.json +1 -1
  16. package/.grok-plugin/marketplace.json +1 -1
  17. package/.grok-plugin/plugin-index.json +1 -1
  18. package/AGENTS.md +1 -1
  19. package/CLAUDE.md +1 -1
  20. package/GEMINI.md +1 -1
  21. package/README.md +90 -224
  22. package/agentskills.json +1 -1
  23. package/install.ps1 +2 -2
  24. package/install.sh +2 -2
  25. package/lib/installer.js +43 -27
  26. package/manifest.json +1 -1
  27. package/marketplace.json +1 -1
  28. package/package.json +3 -2
  29. package/plugin.json +1 -1
  30. package/plugins/rdap-q/plugin.json +1 -1
  31. package/plugins/rdap-q/skills/rdap-q/README.md +1 -1
  32. package/plugins/rdap-q/skills/rdap-q/SKILL.md +1 -1
  33. package/plugins/rdap-q/skills/rdap-q/install/install-unix.sh +1 -1
  34. package/plugins/rdap-q/skills/rdap-q/manifest.json +1 -1
  35. package/rdap-q-skill/README.md +1 -1
  36. package/rdap-q-skill/SKILL.md +1 -1
  37. package/rdap-q-skill/install/install-unix.sh +1 -1
  38. package/rdap-q-skill/manifest.json +1 -1
  39. package/scripts/harness-audit/check.py +387 -0
  40. package/scripts/harness-audit/vendors.json +192 -0
  41. package/scripts/harness-audit/weekly.sh +22 -0
  42. package/skills.json +1 -1
package/agentskills.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/agent-skills/spec/main/agentskills.schema.json",
3
3
  "name": "rdap-q",
4
- "version": "1.2.1",
4
+ "version": "1.2.4",
5
5
  "type": "skill",
6
6
  "entrypoint": "rdap-q-skill/SKILL.md",
7
7
  "invocation": "/rdapq",
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 --yes github:coldcanuk/rdapq install --all`nOr clone the repo and run .\install.ps1 -All"
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 --yes github:coldcanuk/rdapq."
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 --yes github:coldcanuk/rdapq install --all" >&2
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 --yes github:coldcanuk/rdapq." >&2
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 || (process.platform === 'win32'
51
- ? path.join(roaming, 'github-copilot')
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 --yes github:coldcanuk/rdapq.`);
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.rules.md')]];
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, 'rdapq-instructions.md')]];
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 harnessTreeDest(id, layout) {
219
- if (id === 'antigravity') return path.join(layout.gemini, 'antigravity-cli', 'skills', 'rdap-q');
220
- if (id === 'goose') return path.join(layout.goose, 'toolkits', 'rdap-q');
221
- if (id === 'cursor') return path.join(layout.cursor, 'skills', 'rdap-q');
222
- return null;
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, 'commands', 'rdapq.md')],
241
- ['Cline / Roo Code', path.join(layout.cline, 'rdapq.rules.md')],
242
- ['GitHub Copilot', path.join(layout.copilot, 'rdapq-instructions.md')],
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, 'rules.md')],
245
- ['Block Goose', path.join(layout.goose, 'toolkits', 'rdap-q', 'SKILL.md')],
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 --yes github:coldcanuk/rdapq [COMMAND] [OPTIONS]
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. The npm name rdap-q is not published yet.
329
+ are kept unless you pass --force.
321
330
 
322
331
  Examples:
323
- npx --yes github:coldcanuk/rdapq install --claude
324
- npx --yes github:coldcanuk/rdapq install --cursor
325
- npx --yes github:coldcanuk/rdapq#v${version} install --all
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 = harnessTreeDest(id, layout);
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
- const installed = exists(target) && fs.statSync(target).isFile();
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rdap-q",
3
- "version": "1.2.1",
3
+ "version": "1.2.4",
4
4
  "protocol_name": "RDAP-Q Agent Engineering Protocol",
5
5
  "entrypoint": "rdap-q-skill/SKILL.md",
6
6
  "invocation": "/rdapq",
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.1",
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.1",
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rdap-q",
3
- "version": "1.2.1",
3
+ "version": "1.2.4",
4
4
  "description": "Research-Driven Adaptive Planning with Quality Gates protocol plugin for Google Antigravity & AI agents.",
5
5
  "rules": [
6
6
  "GEMINI.md",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rdap-q",
3
- "version": "1.2.1",
3
+ "version": "1.2.4",
4
4
  "description": "Research-Driven Adaptive Planning with Quality Gates protocol for evidence-first software engineering and diminishing-return exit gates.",
5
5
  "author": {
6
6
  "name": "coldcanuk"
@@ -1,4 +1,4 @@
1
- # RDAP-Q Skill v1.2.1
1
+ # RDAP-Q Skill v1.2.4
2
2
 
3
3
  `SKILL.md` is the instruction source. This README is not a second copy of the protocol.
4
4
 
@@ -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.1"
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 --yes github:coldcanuk/rdapq) when you have the full checkout.
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)"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rdap-q",
3
- "version": "1.2.1",
3
+ "version": "1.2.4",
4
4
  "protocol_name": "RDAP-Q Agent Engineering Protocol",
5
5
  "entrypoint": "SKILL.md",
6
6
  "invocation": "/rdapq",
@@ -1,4 +1,4 @@
1
- # RDAP-Q Skill v1.2.1
1
+ # RDAP-Q Skill v1.2.4
2
2
 
3
3
  `SKILL.md` is the instruction source. This README is not a second copy of the protocol.
4
4
 
@@ -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.1"
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 --yes github:coldcanuk/rdapq) when you have the full checkout.
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)"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rdap-q",
3
- "version": "1.2.1",
3
+ "version": "1.2.4",
4
4
  "protocol_name": "RDAP-Q Agent Engineering Protocol",
5
5
  "entrypoint": "SKILL.md",
6
6
  "invocation": "/rdapq",