nx/skills/rdr-create/SKILL.md
Use when starting a new research-design-review document to think through a technical decision
npx skillsauth add hellblazer/nexus rdr-createInstall 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.
/nx:rdr-createPrompt the user for:
Read the RDR base directory from .nexus.yml indexing.rdr_paths[0]; default docs/rdr:
python3 -c "
import os, re, sys
f = '.nexus.yml'
if not os.path.exists(f): print('docs/rdr'); sys.exit()
t = open(f).read()
try:
import yaml; d = yaml.safe_load(t) or {}; paths = (d.get('indexing') or {}).get('rdr_paths', ['docs/rdr']); print(paths[0] if paths else 'docs/rdr')
except ImportError:
m = re.search(r'rdr_paths[^\[]*\[([^\]]+)\]', t) or re.search(r'rdr_paths:\s*\n\s+-\s*(.+)', t)
v = m.group(1) if m else ''; parts = re.findall(r'[a-z][a-z0-9/_-]+', v)
print(parts[0] if parts else 'docs/rdr')
" 2>/dev/null || echo "docs/rdr"
Use this value as RDR_DIR throughout all steps below (wherever docs/rdr appears).
If $RDR_DIR does not exist:
$RDR_DIR/ and $RDR_DIR/post-mortem/ directories$CLAUDE_PLUGIN_ROOT/resources/rdr/TEMPLATE.md to $RDR_DIR/TEMPLATE.md$CLAUDE_PLUGIN_ROOT/resources/rdr/post-mortem/TEMPLATE.md to $RDR_DIR/post-mortem/TEMPLATE.md$RDR_DIR/README.md from $CLAUDE_PLUGIN_ROOT/resources/rdr/README-TEMPLATE.mdIf $CLAUDE_PLUGIN_ROOT is not available, use the templates inline (they are embedded below in the Templates section).
Gap convention (enforced at
/nx:rdr-gateLayer 1 and/nx:rdr-closefor post-65 RDRs): the## Problem Statement(or## Problem) section must contain one or more#### Gap N: <title>headings (regex:^#{3,5} Gap \d+:). Fill these in during drafting — the template scaffoldsGap 1andGap 2placeholders. Replacing the Problem Statement with free-form prose and removing the gap headings will fail the gate at accept time, not just at close time. Authors can override with/nx:rdr-gate <id> --skip-gapswhen the gap structure truly does not fit (audit-trail escape only; prefer adding real gap headings).
Scan $RDR_DIR/ for files matching [0-9][0-9][0-9]-*.md. Find the highest number. Next ID = max + 1, zero-padded to 3 digits. If no files exist, start at 001.
Derive project prefix from repo name:
basename $(git rev-parse --show-toplevel) | tr '[:lower:]' '[:upper:]' | tr -cd '[:alnum:]' | head -c 3
Example: nexus → NEX, arcaneum → ARC, nx-tools → NXT (hyphens stripped)
Create $RDR_DIR/NNN-kebab-case-title.md from the template with these metadata fields pre-filled:
Replace [NUMBER] with the assigned ID and [TITLE] with the user's title.
mcp__plugin_nx_nexus__memory_put(content="id: NNN\nprefix: PREFIX\ntitle: User's Title\nstatus: Draft\ntype: Feature\npriority: Medium\ncreated: YYYY-MM-DD\ngated: \nclosed: \nclose_reason: \nsuperseded_by: \nsupersedes: \nepic_bead: \narchived: false\nfile_path: $RDR_DIR/NNN-kebab-title.md", project="{repo}_rdr", title="{NNN}", ttl="permanent", tags="rdr,{type}"
Read all T2 records for {repo}_rdr project via memory_get tool: project="{repo}_rdr", title="". If T2 is empty (first create before T2 write completes), also scan filesystem frontmatter. Generate the index table and update $RDR_DIR/README.md.
git add $RDR_DIR/NNN-kebab-title.md $RDR_DIR/README.md
If bootstrap ran, also stage: $RDR_DIR/TEMPLATE.md, $RDR_DIR/post-mortem/TEMPLATE.md
Print:
Created RDR PREFIX-NNN: "Title"
File: docs/rdr/NNN-kebab-title.md
Status: Draft
Next: Fill in Problem Statement and Context, then use /nx:rdr-research to add findings.
.nexus.yml indexing.rdr_paths[0] (default docs/rdr)$RDR_DIR/NNN-kebab-title.md with correct metadata{repo}_rdr project with all required fields$RDR_DIR/README.md index regenerated with new entrygit addThis skill produces outputs directly (no agent delegation):
/nx:rdr-close)docs/rdr/NNN-kebab-title.md, updated docs/rdr/README.mdSession Scratch (T1): Use scratch tool for ephemeral working notes if the creation involves multiple prompts or complex ID assignment. Flagged items auto-promote to T2 at session end.
/nx:rdr-close)/nx:rdr-gate)nx index rdr (user can do this manually or it happens at gate/close)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