nx/skills/rdr-gate/SKILL.md
Use when an RDR appears complete and needs finalization validation — structural, assumption, and AI critique checks
npx skillsauth add hellblazer/nexus rdr-gateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Optional validation for high-stakes decisions. Most RDRs don't need a formal gate — use this when the decision is expensive to reverse and you want to confront what you don't actually know before committing.
Delegates Layer 3 to the substantive-critic agent (sonnet). See registry.yaml.
/nx:rdr-gate003Resolve RDR directory from .nexus.yml indexing.rdr_paths[0]; default docs/rdr. Use the Step 0 snippet from the rdr-create skill, stored as RDR_DIR. All file paths below use $RDR_DIR in place of docs/rdr.
Read the RDR markdown file. Check that these sections are present AND non-empty (not just the heading with placeholder text):
Heading matching: RDRs use varied heading names. Match any of the variants listed above (separated by /). If none of the variants match, report the section as missing — do NOT silently skip it.
Gap-structure sub-check (post-65 RDRs only): the ## Problem Statement (or ## Problem) section must contain one or more #### Gap N: <title> headings (regex ^#{3,5} Gap \d+:). The command preamble script emits a BLOCKED outcome automatically when this check fails — the gate skill should not attempt to run Layers 2 or 3 after that block. Legacy RDRs with id < 65 are grandfathered and skip the gap check. Use /nx:rdr-gate <id> --skip-gaps to override for the rare RDR where the structure does not fit; the override is recorded in the gate audit trail.
If any section is missing or contains only placeholder text (e.g., [What is the specific challenge]):
mcp__plugin_nx_nexus__memory_get(project="{repo}_rdr", title=""
Filter entries matching NNN-research-*. Analyze:
Display:
Assumption Audit for RDR NNN:
- 3 verified (2 source search, 1 spike)
- 1 documented (docs only)
- 2 assumed — ⚠ UNRESOLVED
[seq 4] "Library X supports feature Y" (docs only) ← HIGH RISK
[seq 6] "Latency under 100ms" (docs only) ← HIGH RISK
If assumed findings remain:
acknowledged: trueBefore dispatch, seed link-context so the gate critique auto-links to the RDR:
mcp__plugin_nx_nexus__scratch(action="put", content='{"targets": [{"tumbler": "<rdr-tumbler>", "link_type": "relates"}], "source_agent": "rdr-gate"}', tags="link-context")
Dispatch the substantive-critic agent via Agent tool with this relay:
## Relay: substantive-critic
**Task**: Critique RDR NNN for internal consistency, missing failure modes, scope creep, and proportionality.
**Bead**: none
### Input Artifacts
- nx store: none
- nx memory: {repo}_rdr/NNN (status and research records)
- Files: docs/rdr/NNN-*.md
### Deliverable
Structured critique with pass/warn/fail per finalization gate criterion:
1. Contradiction Check — pass/warn/fail
2. Assumption Verification — pass/warn/fail
3. Scope Verification — pass/warn/fail
4. Cross-Cutting Concerns — pass/warn/fail
5. Proportionality — pass/warn/fail
### Quality Criteria
- [ ] Every fail has a specific section reference and fix suggestion
- [ ] Warns are actionable but non-blocking
- [ ] Prior RDR search attempted (may return empty on cold-start)
Prior-art search (within the agent): Use catalog if available, fall back to raw search:
mcp__plugin_nx_nexus-catalog__search(query="relevant terms from problem statement", content_type="rdr")
mcp__plugin_nx_nexus-catalog__links(tumbler="<result>", direction="both") to discover related RDRs in the graphrdr__ prefix (RDR-103 conformant names start rdr__<owner>__voyage-context-3__v1)Important: The AI critique supplements but does not replace the author completing the Finalization Gate section with written responses. The gate should verify that the Finalization Gate section contains substantive written responses, not just "N/A" or placeholder text.
> Run '/nx:rdr-accept <id>' to accept this RDR.Status remains Draft until the author explicitly accepts via /nx:rdr-accept.
outcome: "BLOCKED")When dispatching the substantive-critic agent via Agent tool for Layer 3 critique, use this exact structure:
## Relay: substantive-critic
**Task**: Critique RDR NNN for internal consistency, missing failure modes, scope creep, and proportionality.
**Bead**: [ID] (status: [status]) or 'none'
### Input Artifacts
- nx store: [prior RDR collections or "none"]
- nx memory: {repo}_rdr/NNN (status and research records)
- nx scratch: [scratch IDs from Layer 1/2 or "none"]
- Files: docs/rdr/NNN-*.md
### Deliverable
Structured critique with pass/warn/fail per finalization gate criterion:
1. Contradiction Check
2. Assumption Verification
3. Scope Verification
4. Cross-Cutting Concerns
5. Proportionality
### Quality Criteria
- [ ] Every fail has a specific section reference and fix suggestion
- [ ] Warns are actionable but non-blocking
- [ ] Prior RDR search attempted (may return empty on cold-start)
Required: All fields must be present. Agent will validate relay before starting.
For additional optional fields, see RELAY_TEMPLATE.md.
.nexus.yml indexing.rdr_paths[0] (default docs/rdr){id}-gate-latest (both pass and fail)Outputs generated by the substantive-critic agent (Layer 3):
Session Scratch (T1): Use scratch tool for ephemeral notes during multi-layer validation. Flagged items auto-promote to T2 at session end.
T2 retrieval is O(N): Layer 2's memory_get tool with project="{repo}_rdr", title="" returns all records. Client-side filtering by title pattern (NNN-research-*) is required. Validate that parsed records have rdr_id and seq fields before using them.
development
Use when critiquing / auditing / reviewing a change set against decision history — tries the review plan library first (catalog lookup → decision-evolution traversal → extract → compare), falls through to /nx:query if nothing matches
documentation
Use when doing design / architecture / planning work that walks from prose (RDRs, docs, knowledge) into the modules implementing a concept
development
Use when surveying the plan library's runtime metrics to propose plans for promotion to a higher scope — advisory-only; dispatches the plan-promote-propose meta-seed (no lifecycle ops — those ship in RDR-079)
business
Use when inspecting plan runtime metrics or enumerating dimension-registry usage — dispatches plan_match with dimensions={verb:plan-inspect}; strategy:default reports per-plan metrics, strategy:dimensions reports registry usage counts