From jaan-to
Generates Product Requirements Documents (PRDs) from initiative descriptions via analysis of user problems, success metrics, scope boundaries, and user stories. Useful for defining product scope and features.
npx claudepluginhub parhumm/jaan-to --plugin jaan-toThis skill is limited to using the following tools:
> Generate a PRD from initiative description.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Generate a PRD from initiative description.
$JAAN_CONTEXT_DIR/config.md - Configuration$JAAN_CONTEXT_DIR/boundaries.md - Trust rules$JAAN_TEMPLATES_DIR/jaan-to-pm-prd-write.template.md - PRD template$JAAN_LEARN_DIR/jaan-to-pm-prd-write.learn.md - Past lessons (loaded in Pre-Execution)$JAAN_CONTEXT_DIR/tech.md - Tech context (if exists)$JAAN_CONTEXT_DIR/team.md - Team context (if exists)${CLAUDE_PLUGIN_ROOT}/docs/extending/language-protocol.md - Language resolution protocolInitiative: $ARGUMENTS
IMPORTANT: The initiative above is your input. Use it directly. Do NOT ask for the initiative again.
MANDATORY — Read and execute ALL steps in: ${CLAUDE_PLUGIN_ROOT}/docs/extending/pre-execution-protocol.md
Skill name: pm-prd-write
Execute: Step 0 (Init Guard) → A (Load Lessons) → B (Resolve Template) → C (Offer Template Seeding)
Also read context files if available:
$JAAN_CONTEXT_DIR/tech.md - Know the tech stack to reference$JAAN_CONTEXT_DIR/team.md - Know team structure and normsIf the file does not exist, continue without it.
Read and apply language protocol: ${CLAUDE_PLUGIN_ROOT}/docs/extending/language-protocol.md
Override field for this skill: language_pm-prd-write
You already have the initiative from the Input section above. Now ask these questions:
After receiving answers, mentally outline:
Before generating the PRD, confirm with the user:
"I have all the information needed. Ready to generate the PRD for '{initiative}'? [y/n]"
Do NOT proceed to Phase 2 without explicit approval.
Use the template from: $JAAN_TEMPLATES_DIR/jaan-to-pm-prd-write.template.md
Fill all sections:
If user provided image/screenshot paths in Step 1 Q4, embed them inline using  in relevant sections (Solution Overview, User Stories, Appendix). Use URL-encoded paths for spaces/special characters.
If $JAAN_CONTEXT_DIR/tech.md exists:
If tech.md doesn't exist:
$JAAN_CONTEXT_DIR/tech.md for tech-aware PRDs"Before showing preview, verify:
 syntax with URL-encoded pathsIf any check fails, revise before preview.
Show the complete PRD and ask:
"Here's the PRD preview. Approve writing to output? [y/n]"
If approved, set up the output structure:
source "${CLAUDE_PLUGIN_ROOT}/scripts/lib/id-generator.sh"
# Define subdomain directory
SUBDOMAIN_DIR="$JAAN_OUTPUTS_DIR/pm/prd"
mkdir -p "$SUBDOMAIN_DIR"
# Generate next ID
NEXT_ID=$(generate_next_id "$SUBDOMAIN_DIR")
# Create folder and file paths
slug="{lowercase-hyphenated-from-title-max-50-chars}"
OUTPUT_FOLDER="${SUBDOMAIN_DIR}/${NEXT_ID}-${slug}"
MAIN_FILE="${OUTPUT_FOLDER}/${NEXT_ID}-prd-${slug}.md"
Output Configuration
- ID: {NEXT_ID}
- Folder: $JAAN_OUTPUTS_DIR/pm/prd/{NEXT_ID}-{slug}/
- Main file: {NEXT_ID}-prd-{slug}.md
If user provided image paths in Step 1 Q4:
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/asset-embedding-reference.mdfor the asset resolution protocol (path detection, copy rules, markdown embedding).
Source ${CLAUDE_PLUGIN_ROOT}/scripts/lib/asset-handler.sh. For each image path: check is_jaan_path — if inside $JAAN_*, reference in-place; if external, ask user "Copy these external assets into output folder? [y/n]" and call copy_external_assets if approved. Use resolve_asset_path to get markdown-relative paths for the generated PRD.
mkdir -p "$OUTPUT_FOLDER"
cat > "$MAIN_FILE" <<'EOF'
{generated PRD content with Executive Summary}
EOF
source "${CLAUDE_PLUGIN_ROOT}/scripts/lib/index-updater.sh"
add_to_index \
"$SUBDOMAIN_DIR/README.md" \
"$NEXT_ID" \
"${NEXT_ID}-${slug}" \
"{PRD Title}" \
"{1-2 sentence executive summary from PRD}"
✓ PRD written to: $JAAN_OUTPUTS_DIR/pm/prd/{NEXT_ID}-{slug}/{NEXT_ID}-prd-{slug}.md ✓ Index updated: $JAAN_OUTPUTS_DIR/pm/prd/README.md
Use AskUserQuestion:
If "No", skip to Step 8.
If "Yes":
List the user stories from the generated PRD:
"Which stories to expand into full user stories?"
[1] As a {persona}, I want {action} so that {benefit} [2] As a {persona}, I want {action} so that {benefit} [3] As a {persona}, I want {action} so that {benefit} [All] Generate all stories
Enter numbers (e.g., "1,3" or "all"):
For each selected story, run:
/jaan-to:pm-story-write "{story_statement}"
This invokes the full story-write skill with INVEST validation, Gherkin acceptance criteria, and edge case mapping.
After PRD is written, ask:
"Any feedback or improvements needed? [y/n]"
If yes:
"How should I handle this? [1] Fix now - Update this PRD [2] Learn - Save for future PRDs [3] Both - Fix now AND save lesson"
Option 1 - Fix now:
Option 2 - Learn for future:
/jaan-to:learn-add pm-prd-write "{feedback}"Option 3 - Both:
/jaan-to:learn-add (Option 2)If no:
$JAAN_OUTPUTS_DIR path