@lifeaitools/rdc-skills 0.31.2 → 0.34.0

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 (73) hide show
  1. package/.claude-plugin/plugin.json +8 -8
  2. package/.github/workflows/publish.yml +35 -3
  3. package/.github/workflows/self-test.yml +34 -34
  4. package/CHANGELOG.md +348 -348
  5. package/MANIFEST.md +224 -224
  6. package/README.md +2 -2
  7. package/clauth-plugin.json +85 -0
  8. package/deploy/install-systemd.sh +0 -0
  9. package/ecosystem.local.config.cjs +18 -0
  10. package/guides/agent-bootstrap.md +195 -195
  11. package/guides/agents/backend.md +102 -102
  12. package/guides/agents/content.md +94 -94
  13. package/guides/agents/cs2.md +56 -56
  14. package/guides/agents/data.md +86 -86
  15. package/guides/agents/design.md +77 -77
  16. package/guides/agents/frontend.md +91 -91
  17. package/guides/agents/infrastructure.md +81 -81
  18. package/guides/agents/setup.md +272 -272
  19. package/guides/agents/verify.md +119 -119
  20. package/guides/agents/viz.md +106 -106
  21. package/guides/lessons-learned-spec.md +1 -1
  22. package/guides/orchestration-epic.md +17 -17
  23. package/package.json +3 -2
  24. package/scripts/clean-malformed-registrations.js +257 -0
  25. package/scripts/postinstall.js +142 -0
  26. package/scripts/self-test.mjs +1459 -1459
  27. package/skills/behavior-audit/SKILL.md +1 -1
  28. package/skills/behavior-audit/agents/openai.yaml +4 -4
  29. package/skills/brochure/SKILL.md +1 -1
  30. package/skills/{rdc-brochurify → brochurify}/SKILL.md +1 -1
  31. package/skills/build/SKILL.md +1 -1
  32. package/skills/channel-formatter/SKILL.md +1 -1
  33. package/skills/co-develop/SKILL.md +1 -1
  34. package/skills/collab/SKILL.md +1 -1
  35. package/skills/convert/SKILL.md +1 -1
  36. package/skills/deploy/SKILL.md +1 -1
  37. package/skills/design/SKILL.md +1 -1
  38. package/skills/edit/SKILL.md +1 -1
  39. package/skills/env/SKILL.md +1 -1
  40. package/skills/{rdc-extract-verifier-rules → extract-verifier-rules}/SKILL.md +1 -1
  41. package/skills/fixit/SKILL.md +1 -1
  42. package/skills/fs-mcp/SKILL.md +1 -1
  43. package/skills/handoff/SKILL.md +1 -1
  44. package/skills/help/SKILL.md +1 -1
  45. package/skills/housekeeping/SKILL.md +1 -1
  46. package/skills/onramp/SKILL.md +1 -1
  47. package/skills/overnight/SKILL.md +1 -1
  48. package/skills/plan/SKILL.md +1 -1
  49. package/skills/preplan/SKILL.md +1 -1
  50. package/skills/prototype/SKILL.md +1 -1
  51. package/skills/refactor/SKILL.md +1 -1
  52. package/skills/regen-media/SKILL.md +1 -1
  53. package/skills/release/SKILL.md +1 -1
  54. package/skills/report/SKILL.md +1 -1
  55. package/skills/review/SKILL.md +1 -1
  56. package/skills/self-test/SKILL.md +1 -1
  57. package/skills/status/SKILL.md +1 -1
  58. package/skills/terminal-config/SKILL.md +1 -1
  59. package/skills/tests/MATRIX.md +2 -2
  60. package/skills/tests/onramp.test.json +101 -101
  61. package/skills/tests/rdc-env.test.json +12 -12
  62. package/skills/tests/rdc-new-model.test.json +12 -12
  63. package/skills/tests/rdc-refactor.test.json +29 -29
  64. package/skills/tests/rdc-regen-media.test.json +29 -29
  65. package/skills/watch/SKILL.md +1 -1
  66. package/skills/workitems/SKILL.md +1 -1
  67. package/tests/channel-formatter.contract.test.mjs +2 -2
  68. package/tests/clauth-plugin-postinstall.test.mjs +256 -0
  69. package/tests/mcp.test.mjs +1 -1
  70. package/tests/plugin-cache-clean-install.test.mjs +76 -0
  71. package/tests/plugin-namespace-names.test.mjs +125 -0
  72. /package/skills/tests/{rdc-rdc-brochurify.test.json → rdc-brochurify.test.json} +0 -0
  73. /package/skills/tests/{rdc-rdc-extract-verifier-rules.test.json → rdc-extract-verifier-rules.test.json} +0 -0
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:behavior-audit
2
+ name: behavior-audit
3
3
  description: "Usage `rdc:behavior-audit <report-dir> [--since-days N] [--latest N] [--reprocess]` — produces a bounded, redacted Claude/Codex transcript evidence bundle, incrementally skips completed transcript hashes, and aligns candidate behavior problems to shared truth-governance rules."
4
4
  ---
5
5
 
@@ -1,4 +1,4 @@
1
- interface:
2
- display_name: "Behavior Audit"
3
- short_description: "Audit Claude and Codex behavior against shared rules."
4
- default_prompt: "Run a behavior audit for the last seven days and write the evidence bundle to a report directory."
1
+ interface:
2
+ display_name: "Behavior Audit"
3
+ short_description: "Audit Claude and Codex behavior against shared rules."
4
+ default_prompt: "Run a behavior audit for the last seven days and write the evidence bundle to a report directory."
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:brochure
2
+ name: brochure
3
3
  description: "Usage `rdc:brochure <input> [--out <path>] [--template <name>] [--format Letter|A4]` — Turn a zip, folder, HTML file, URL, or markdown folder into a print-quality PDF brochure via Puppeteer. Auto-detects print-variant HTML, honors @page CSS, falls back to a Studio-token-aware template when no HTML exists."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc-brochurify
2
+ name: brochurify
3
3
  version: 0.1.0
4
4
  description: |
5
5
  Orchestrate a Brochurify job from source ingest through delivered PDF, using six parallel-dispatched typed sub-agents and the convergence loop. Use this skill EVERY TIME the user invokes Brochurify directly via "brochurify this", "make a brochure from", "convert this to a brochure PDF", or "rdc:brochurify". Also runs automatically when a job arrives from the broker via monkey_dispatch. The skill enforces D-001 through D-016 from the brochurify DECISIONS-LOG.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:build
2
+ name: build
3
3
  description: "Usage `rdc:build <epic-id>` — You have a planned epic with tasks ready to execute. Dispatches parallel typed agents, each commits atomically to develop, runs a mandatory per-wave code-review gate (pr-review-toolkit:code-reviewer), closes work items, and runs the validator gate. Call after rdc:plan or when told to build."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:channel-formatter
2
+ name: channel-formatter
3
3
  description: "Usage `rdc:channel-formatter <channel|pack> [content]` — Apply precise, channel-native formatting and content repurposing to any output: LinkedIn, Twitter/X, Slack/Teams, Email (external/internal), Pitch Deck slides, Word/DOCX, PDF Report, Web/Landing Page, and multi-output content packs. Use EVERY TIME the user names an output channel/platform/document type, asks to 'write a post', 'draft an email', 'format this for', 'make this a slide', 'send to LinkedIn', 'write a tweet', 'social media post', 'turn this article into posts', 'make a content pack', 'make a social pack', or 'repurpose this article'. Each channel has its own Unicode strategy, emphasis system, length limits, and structure — never apply generic markdown to channel-specific output. This skill FORMATS, STRUCTURES, and REPURPOSES text only — for actual .docx/.pptx ↔ Markdown FILE conversion (either direction) use `rdc:convert` (build-corpus), not this skill. Self-contained: all channel and pack rules are inlined below (no external reference files)."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:co-develop
2
+ name: co-develop
3
3
  description: "Usage `rdc:co-develop <ask|reply|inbox|start|resume|status>` — peer-aware Claude/Codex co-development over clauth, with ask --wait as the default delegation pattern."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:collab
2
+ name: collab
3
3
  description: "Usage `rdc:collab <collaborator> [inbound] <topic>` — Structured agent-to-agent CONVERSATION with Codex, a local LLM, a Claude agent, or a claude.ai session. Converges on a decision and never writes to the repo — work that needs writing becomes a work item for rdc:build. Run `rdc:collab status <peer>` first — both sides emit probed capability state. Every dispatch carries a response contract."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:convert
2
+ name: convert
3
3
  description: "Usage `rdc:convert <input> [--out <dir>] [--to markdown|word] [--images assets|base64|s3]` — Convert .docx/.pptx/.ppt → Markdown (Word OMML equations as KaTeX TeX, tables, images) or Markdown → Word via the build-corpus CLI from npm `regen.mde`. Portable: runs in any session that can reach npm — Claude Code CLI, Codex, and claude.ai can fetch + run it. Use whenever the user asks to convert an Office document, build a Markdown corpus from .docx/.pptx, turn Markdown into a .docx, or open the report in the regen-mde editor on Windows."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:deploy
2
+ name: deploy
3
3
  description: "Usage `rdc:deploy <slug> [promote|diagnose|audit|convert]` — registry-resolved PM2 development deployment and Coolify production promotion through clauth's bearer-authenticated job control plane, with status receipts and mandatory content gates."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:design
2
+ name: design
3
3
  description: "Usage `rdc:design <topic>` — RDC-owned design work for Studio, Palette Library, and token-aware UI systems. Use for Rampant color work or design-system-first builds owned by the design cell. Not for general UI polish — use impeccable for that."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:edit
2
+ name: edit
3
3
  description: "Usage `rdc:edit <site|brand|route|file>` — open the local website editor host for a target site, brand, route, or file. Resolves the target, launches or reuses the local editor host on port 3015, and opens the target in the browser when not under `RDC_TEST=1`."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:env
2
+ name: env
3
3
  description: "Usage `rdc:env [status|install|repair|update]` — Manage the LIFEAI environment harness: check status, install on a fresh box, repair broken services, or pull updates. Reads $LIFEAI_ENV/manifest.json as the source of truth. Use when: 'check the environment', 'install environment', 'repair environment', 'update environment', 'setup env', 'fix env', 'env status', or after a reboot/GPU crash."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc-extract-verifier-rules
2
+ name: extract-verifier-rules
3
3
  version: 0.1.0
4
4
  description: |
5
5
  Read recent enhancement-log entries, cluster failures by pattern, generate candidate verifier rules, test them against the known-good corpus and the failure corpus, and propose pull requests adding the highest-confidence rules to forbidden-patterns.json. Use this skill on a nightly cadence (3 AM PT), or manually when the user says "extract verifier rules", "promote enhancement log", "what new rules should we add", or after a significant brochure run produced many failures.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:fixit
2
+ name: fixit
3
3
  description: "Usage `rdc:fixit <description>` — Quick fix under 5 files / 30 min that does not warrant a full plan→build cycle. Creates a minimal work item, makes the change, commits, runs a mandatory code-review pass (pr-review-toolkit:code-reviewer), DELIVERS the change to where it is consumed (publish/deploy/land) and verifies it, then closes. The only sanctioned bypass of rdc:build."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:fs-mcp
2
+ name: fs-mcp
3
3
  description: "Usage `rdc:fs-mcp <task>` — Use the File System MCP bridge for live repo reads, safe writes, cloud-to-local ingest, and GitHub-branch imports into a dirty local monorepo. Use when Claude.ai, Cowork, or CLI agents need fs_read/fs_write/fs_import_git_files guidance."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:handoff
2
+ name: handoff
3
3
  description: "Usage `rdc:handoff [--from-prototype <id>]` — Convert a finalized plan or prototype into CLI-ready artifacts: writes .rdc/plans/, creates Supabase work items with DoD checklists, registers prototype if present. Bridge between planning session and rdc:build."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:help
2
+ name: help
3
3
  description: "Usage `rdc:help` — Show all MCP skills with usage, requirements, slash forms, and codeflow status. Reads `.claude-plugin/plugin.json` skills_meta (single source of truth). Call when unsure which skill to use or what args it takes."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:housekeeping
2
+ name: housekeeping
3
3
  description: "Usage `rdc:housekeeping [--fix]` — Weekly maintenance audit: directory structure verification, PUBLISH.md URL validation, CLAUDE.md freshness, orphan detection, places compliance, and stale version scan. Produces `.rdc/reports/YYYY-MM-DD-housekeeping.md`. With `--fix`, auto-remediate safe issues."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:onramp
2
+ name: onramp
3
3
  description: "Usage `rdc:onramp <slug> --name \"<Display Name>\"` — Full-pipeline enrollment orchestrator for a new Place Fund project. Runs all 7 phases: enroll → research + document integration → conflict resolution → brand book + imagery → Regen Score gate → site build → deploy dev. Each phase is idempotent and resumable."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:overnight
2
+ name: overnight
3
3
  description: "Usage `rdc:overnight [epic-id|label=<label>]` — Unattended end-to-end: drain the entire work queue autonomously (preplan → plan → build → review → report). Inherits mandatory per-wave code-review (pr-review-toolkit:code-reviewer) from rdc:build and rdc:review. Use when leaving Claude to run unsupervised for an extended session."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:plan
2
+ name: plan
3
3
  description: "Usage `rdc:plan <topic>` — No epic exists and you need architecture + task breakdown. Produces design decisions, tradeoffs, and Supabase epics/tasks with DoD checklists that feed rdc:build. Use after rdc:preplan or when given clear architectural direction."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:preplan
2
+ name: preplan
3
3
  description: "Usage `rdc:preplan <topic>` — Before committing to an architecture, research unknowns first. Codebase scan + web search, no code written, no work items created. Output feeds rdc:plan. Use for open-ended approach questions."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:prototype
2
+ name: prototype
3
3
  description: "Usage `rdc:prototype <description>` — Build a JSX/TSX mockup for visual review before implementation. Saves to docs/source/, registers in prototype_registry. Use when asked to mock something up or show what it looks like. Not production code."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:refactor
2
+ name: refactor
3
3
  description: "Usage `rdc:refactor <epic-id|topic> --takeover <reason>` — Governed consolidation and implementation of a cross-cutting refactor. Authorizes an explicit takeover, preserves evidence, re-parents relevant work through the consolidation RPC, isolates every writer, and uses the same review, validator, landing, and delivery gates as rdc:build."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:regen-media
2
+ name: regen-media
3
3
  description: "Usage `rdc:regen-media <generate|edit|upscale|upload> <brief-or-path>` - Primary image-generation and Regen Media asset workflow. Use for image generation, image editing/upscaling, GPT Image/gpt-image-2 requests, Codex built-in image_gen, and uploading finished images to regen-media/R2. The default path is keyless local Codex gpt-image-2 via the built-in image_gen tool; server-side regen-media MCP/API generation is fallback only."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:release
2
+ name: release
3
3
  description: "Usage `rdc:release <repo> [version|--patch|--minor|--major|--dry-run]` — bump, commit, tag, push, wait for CI/publish, install, and verify a package or project using repo-local release metadata."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:report
2
+ name: report
3
3
  description: "Usage `rdc:report` — Write the nightly session summary to .rdc/reports/YYYY-MM-DD.md covering completed work, open items, per-project progress, and infra status. Call at session end."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:review
2
+ name: review
3
3
  description: "Usage `rdc:review [--unattended]` — Post-build quality gate: tsc, tests, stale docs, export conflicts, and a mandatory pr-review-toolkit:code-reviewer pass across modified packages. Fixes what it can automatically, escalates the rest. Call after rdc:build and before merging to main."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:self-test
2
+ name: self-test
3
3
  description: "Usage `rdc:self-test [--strict]` — Validate all rdc:* skills, plugin manifest, and tooling consistency. Use after editing skills, upgrading the plugin, or when a skill behaves unexpectedly."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:status
2
+ name: status
3
3
  description: "Usage `rdc:status` — Read-only snapshot of open epics, work items, Coolify health, blockers, and next recommended action. Safe to call anytime. Start here when disoriented or resuming a session."
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: rdc:terminal-config
2
+ name: terminal-config
3
3
  description: "Usage `rdc:terminal-config <task>` — read and safely modify Windows Terminal settings, shell profiles, and agent startup sequencing without relying on machine-specific paths."
4
4
  ---
5
5
 
@@ -31,8 +31,8 @@ The manifest layer verifies each skill can be started from a realistic caller pr
31
31
  | `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 |
32
32
  | `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 |
33
33
  | `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 |
34
- | `rdc:brochurify` | `rdc-rdc-brochurify.test.json` | Read-only markdown Brochurify fixture | `exit_code`, `stdout_contains` | Sandbox output and no-follow-up negative checks |
35
- | `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 |
34
+ | `rdc:brochurify` | `rdc-brochurify.test.json` | Read-only markdown Brochurify fixture | `exit_code`, `stdout_contains` | Sandbox output and no-follow-up negative checks |
35
+ | `rdc:extract-verifier-rules` | `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 |
36
36
  | `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 |
37
37
  | `rdc:regen-media` | `rdc-regen-media.test.json` | Image generation path selection | `commits_made`, `exit_code`, `stdout_contains` | Local keyless Codex gpt-image-2 default, test-mode no-generation, and server-side fallback negative checks |
38
38
  | `rdc:report` | `rdc-report.test.json` | Unattended report generation | `exit_code`, `stdout_contains` | Report status block, counts, next recommendation, and dump/push negative checks |
@@ -1,101 +1,101 @@
1
- {
2
- "manifest_version": 1,
3
- "skill": "rdc:onramp",
4
- "description": "Tier-2 self-test for rdc:onramp enrollment skill",
5
- "tier": 2,
6
- "sandbox": true,
7
- "env": {
8
- "RDC_TEST": "1"
9
- },
10
- "invocation": {
11
- "slug": "onramp-selftest",
12
- "name": "Onramp Self Test",
13
- "flags": ["--archetype", "working-landscapes", "--dry-run"]
14
- },
15
- "fixture": {
16
- "prompt": "rdc:onramp onramp-selftest --name \"Onramp Self Test\" --archetype working-landscapes --dry-run",
17
- "env": { "RDC_\u0054EST": "1" },
18
- "slow": true
19
- },
20
- "assertions": {
21
- "exit_code": 0,
22
- "stdout_contains": ["Preflight", "Resolve drift"]
23
- },
24
- "acceptance": {
25
- "output_contains": ["Preflight", "Resolve drift", "disk-ahead", "already-enrolled"],
26
- "output_not_contains": ["hand-edit _context.md", "raw insert"]
27
- },
28
- "legacy_assertions": [
29
- {
30
- "type": "exit_code",
31
- "expect": 0,
32
- "description": "Skill exits cleanly under RDC_TEST with --dry-run"
33
- },
34
- {
35
- "type": "stdout_contains",
36
- "pattern": "Preflight",
37
- "description": "Checklist begins with Preflight step"
38
- },
39
- {
40
- "type": "stdout_contains",
41
- "pattern": "Resolve drift",
42
- "description": "Drift resolution step is emitted"
43
- },
44
- {
45
- "type": "stdout_contains",
46
- "pattern": "\\[RDC_TEST\\]",
47
- "description": "Sandbox short-circuit marker present — confirms external calls were skipped"
48
- },
49
- {
50
- "type": "file_absent",
51
- "path": "places/onramp-selftest/_context.md",
52
- "description": "Scaffolder MUST NOT write _context.md — projection-drift violation gate"
53
- }
54
- ],
55
- "door_contracts": [
56
- {
57
- "name": "enroll_place_signature",
58
- "description": "enroll_place RPC must accept (text, text, jsonb, text) and return jsonb",
59
- "type": "rpc_introspection",
60
- "project_id": "uvojezuorjgqzmhhgluu",
61
- "query": "SELECT p.proname, pg_get_function_identity_arguments(p.oid) AS args, pg_get_function_result(p.oid) AS returns FROM pg_proc p WHERE p.proname = 'enroll_place';",
62
- "expect_args_contains": ["text", "jsonb"],
63
- "expect_returns": "jsonb"
64
- },
65
- {
66
- "name": "insert_work_item_accepts_project_node_id",
67
- "description": "insert_work_item must accept p_project_node_id parameter",
68
- "type": "rpc_introspection",
69
- "project_id": "uvojezuorjgqzmhhgluu",
70
- "query": "SELECT proname, pg_get_function_identity_arguments(oid) FROM pg_proc WHERE proname = 'insert_work_item';",
71
- "expect_args_contains": ["p_project_node_id"]
72
- }
73
- ],
74
- "disk_ahead_test": {
75
- "description": "disk-ahead state must STOP and open a reconciliation work item",
76
- "setup": "mkdir -p places/disk-ahead-test",
77
- "invocation_slug": "disk-ahead-test",
78
- "invocation_name": "Disk Ahead Test",
79
- "assertions": [
80
- {
81
- "type": "stdout_contains",
82
- "pattern": "disk-ahead",
83
- "description": "Skill identifies the disk-ahead state"
84
- },
85
- {
86
- "type": "stdout_contains",
87
- "pattern": "STOP",
88
- "description": "Skill STOPs on disk-ahead"
89
- },
90
- {
91
- "type": "exit_nonzero",
92
- "description": "Skill exits non-zero on disk-ahead (not a clean enrollment)"
93
- }
94
- ],
95
- "teardown": "rmdir places/disk-ahead-test 2>/dev/null || true"
96
- },
97
- "idempotency_test": {
98
- "description": "Running rdc:onramp twice for already-enrolled should produce zero new writes",
99
- "note": "Under RDC_TEST=1 this is verified by checking that [RDC_TEST] skipping markers appear (not real insert calls) and the checklist reports already-enrolled"
100
- }
101
- }
1
+ {
2
+ "manifest_version": 1,
3
+ "skill": "rdc:onramp",
4
+ "description": "Tier-2 self-test for rdc:onramp enrollment skill",
5
+ "tier": 2,
6
+ "sandbox": true,
7
+ "env": {
8
+ "RDC_TEST": "1"
9
+ },
10
+ "invocation": {
11
+ "slug": "onramp-selftest",
12
+ "name": "Onramp Self Test",
13
+ "flags": ["--archetype", "working-landscapes", "--dry-run"]
14
+ },
15
+ "fixture": {
16
+ "prompt": "rdc:onramp onramp-selftest --name \"Onramp Self Test\" --archetype working-landscapes --dry-run",
17
+ "env": { "RDC_\u0054EST": "1" },
18
+ "slow": true
19
+ },
20
+ "assertions": {
21
+ "exit_code": 0,
22
+ "stdout_contains": ["Preflight", "Resolve drift"]
23
+ },
24
+ "acceptance": {
25
+ "output_contains": ["Preflight", "Resolve drift", "disk-ahead", "already-enrolled"],
26
+ "output_not_contains": ["hand-edit _context.md", "raw insert"]
27
+ },
28
+ "legacy_assertions": [
29
+ {
30
+ "type": "exit_code",
31
+ "expect": 0,
32
+ "description": "Skill exits cleanly under RDC_TEST with --dry-run"
33
+ },
34
+ {
35
+ "type": "stdout_contains",
36
+ "pattern": "Preflight",
37
+ "description": "Checklist begins with Preflight step"
38
+ },
39
+ {
40
+ "type": "stdout_contains",
41
+ "pattern": "Resolve drift",
42
+ "description": "Drift resolution step is emitted"
43
+ },
44
+ {
45
+ "type": "stdout_contains",
46
+ "pattern": "\\[RDC_TEST\\]",
47
+ "description": "Sandbox short-circuit marker present — confirms external calls were skipped"
48
+ },
49
+ {
50
+ "type": "file_absent",
51
+ "path": "places/onramp-selftest/_context.md",
52
+ "description": "Scaffolder MUST NOT write _context.md — projection-drift violation gate"
53
+ }
54
+ ],
55
+ "door_contracts": [
56
+ {
57
+ "name": "enroll_place_signature",
58
+ "description": "enroll_place RPC must accept (text, text, jsonb, text) and return jsonb",
59
+ "type": "rpc_introspection",
60
+ "project_id": "uvojezuorjgqzmhhgluu",
61
+ "query": "SELECT p.proname, pg_get_function_identity_arguments(p.oid) AS args, pg_get_function_result(p.oid) AS returns FROM pg_proc p WHERE p.proname = 'enroll_place';",
62
+ "expect_args_contains": ["text", "jsonb"],
63
+ "expect_returns": "jsonb"
64
+ },
65
+ {
66
+ "name": "insert_work_item_accepts_project_node_id",
67
+ "description": "insert_work_item must accept p_project_node_id parameter",
68
+ "type": "rpc_introspection",
69
+ "project_id": "uvojezuorjgqzmhhgluu",
70
+ "query": "SELECT proname, pg_get_function_identity_arguments(oid) FROM pg_proc WHERE proname = 'insert_work_item';",
71
+ "expect_args_contains": ["p_project_node_id"]
72
+ }
73
+ ],
74
+ "disk_ahead_test": {
75
+ "description": "disk-ahead state must STOP and open a reconciliation work item",
76
+ "setup": "mkdir -p places/disk-ahead-test",
77
+ "invocation_slug": "disk-ahead-test",
78
+ "invocation_name": "Disk Ahead Test",
79
+ "assertions": [
80
+ {
81
+ "type": "stdout_contains",
82
+ "pattern": "disk-ahead",
83
+ "description": "Skill identifies the disk-ahead state"
84
+ },
85
+ {
86
+ "type": "stdout_contains",
87
+ "pattern": "STOP",
88
+ "description": "Skill STOPs on disk-ahead"
89
+ },
90
+ {
91
+ "type": "exit_nonzero",
92
+ "description": "Skill exits non-zero on disk-ahead (not a clean enrollment)"
93
+ }
94
+ ],
95
+ "teardown": "rmdir places/disk-ahead-test 2>/dev/null || true"
96
+ },
97
+ "idempotency_test": {
98
+ "description": "Running rdc:onramp twice for already-enrolled should produce zero new writes",
99
+ "note": "Under RDC_TEST=1 this is verified by checking that [RDC_TEST] skipping markers appear (not real insert calls) and the checklist reports already-enrolled"
100
+ }
101
+ }
@@ -1,12 +1,12 @@
1
- {
2
- "manifest_version": 1,
3
- "skill": "rdc:env",
4
- "description": "Environment status is read-only and reports installed version.",
5
- "fixture": { "prompt": "rdc:env status", "env": { "RDC_\u0054EST": "1" }, "slow": false },
6
- "assertions": { "exit_code": 0, "stdout_contains": ["Environment"] },
7
- "acceptance": {
8
- "output_contains": ["version", "status"],
9
- "output_not_contains": ["force", "delete environment"]
10
- },
11
- "teardown": { "reset_branch": true }
12
- }
1
+ {
2
+ "manifest_version": 1,
3
+ "skill": "rdc:env",
4
+ "description": "Environment status is read-only and reports installed version.",
5
+ "fixture": { "prompt": "rdc:env status", "env": { "RDC_\u0054EST": "1" }, "slow": false },
6
+ "assertions": { "exit_code": 0, "stdout_contains": ["Environment"] },
7
+ "acceptance": {
8
+ "output_contains": ["version", "status"],
9
+ "output_not_contains": ["force", "delete environment"]
10
+ },
11
+ "teardown": { "reset_branch": true }
12
+ }
@@ -1,12 +1,12 @@
1
- {
2
- "manifest_version": 1,
3
- "skill": "rdc:new-model",
4
- "description": "New-model registration begins with the canonical gate.",
5
- "fixture": { "prompt": "rdc:new-model example-model", "env": { "RDC_\u0054EST": "1" }, "slow": true },
6
- "assertions": { "exit_code": 0, "stdout_contains": ["New Model"] },
7
- "acceptance": {
8
- "output_contains": ["canonical", "registration"],
9
- "output_not_contains": ["raw insert", "skip gate"]
10
- },
11
- "teardown": { "reset_branch": true }
12
- }
1
+ {
2
+ "manifest_version": 1,
3
+ "skill": "rdc:new-model",
4
+ "description": "New-model registration begins with the canonical gate.",
5
+ "fixture": { "prompt": "rdc:new-model example-model", "env": { "RDC_\u0054EST": "1" }, "slow": true },
6
+ "assertions": { "exit_code": 0, "stdout_contains": ["New Model"] },
7
+ "acceptance": {
8
+ "output_contains": ["canonical", "registration"],
9
+ "output_not_contains": ["raw insert", "skip gate"]
10
+ },
11
+ "teardown": { "reset_branch": true }
12
+ }
@@ -1,29 +1,29 @@
1
- {
2
- "manifest_version": 1,
3
- "skill": "rdc:refactor",
4
- "description": "Refactor preserves evidence and isolates all dispatched writers.",
5
- "fixture": {
6
- "prompt": "rdc:refactor hook-scope --takeover \"corrective consolidation\"",
7
- "env": { "RDC_\u0054EST": "1" },
8
- "slow": true
9
- },
10
- "assertions": {
11
- "exit_code": 0,
12
- "commits_made": { "min": 0 },
13
- "stdout_contains": ["RDC Refactor"]
14
- },
15
- "acceptance": {
16
- "output_contains": [
17
- "consolidate_work_items_into_epic",
18
- "unique leased worktree",
19
- "collaboration manifest",
20
- "validator"
21
- ],
22
- "output_not_contains": [
23
- "raw update",
24
- "shared working directory",
25
- "archive all"
26
- ]
27
- },
28
- "teardown": { "reset_branch": true }
29
- }
1
+ {
2
+ "manifest_version": 1,
3
+ "skill": "rdc:refactor",
4
+ "description": "Refactor preserves evidence and isolates all dispatched writers.",
5
+ "fixture": {
6
+ "prompt": "rdc:refactor hook-scope --takeover \"corrective consolidation\"",
7
+ "env": { "RDC_\u0054EST": "1" },
8
+ "slow": true
9
+ },
10
+ "assertions": {
11
+ "exit_code": 0,
12
+ "commits_made": { "min": 0 },
13
+ "stdout_contains": ["RDC Refactor"]
14
+ },
15
+ "acceptance": {
16
+ "output_contains": [
17
+ "consolidate_work_items_into_epic",
18
+ "unique leased worktree",
19
+ "collaboration manifest",
20
+ "validator"
21
+ ],
22
+ "output_not_contains": [
23
+ "raw update",
24
+ "shared working directory",
25
+ "archive all"
26
+ ]
27
+ },
28
+ "teardown": { "reset_branch": true }
29
+ }