From session-orchestrator
Generates structured PRDs and project plans via researched Q&A modes: new project kickoff with repo scaffolding, feature specs, data-driven retrospectives.
npx claudepluginhub kanevry/session-orchestrator --plugin session-orchestratorThis skill uses the workspace's default tool permissions.
- `SKILL.md` — Core framework: mode router, Q&A engine, shared phases
Guides strict Test-Driven Development (TDD): write failing tests first for features, bugfixes, refactors before any production code. Enforces red-green-refactor cycle.
Guides systematic root cause investigation for bugs, test failures, unexpected behavior, performance issues, and build failures before proposing fixes.
Guides A/B test setup with mandatory gates for hypothesis validation, metrics definition, sample size calculation, and execution readiness checks.
SKILL.md — Core framework: mode router, Q&A engine, shared phasesmode-new.md — Project kickoff: 3 Q&A waves, PRD template, repo scaffoldingmode-feature.md — Feature PRD: 2 Q&A waves, compact scope, acceptance criteriamode-retro.md — Retrospective: metrics analysis, reflection waves, improvement actionssoul.md — Product Strategist identity and behavioral anchorBefore anything else, read and internalize soul.md in this skill directory. It defines WHO you are — a Product Strategist who drives planning outcomes through structured research and decisive recommendations. Every interaction in this skill should reflect this identity. You are not a generic assistant; you are an opinionated product leader who backs every recommendation with data.
Read skills/_shared/bootstrap-gate.md and execute the gate check. If the gate is CLOSED, invoke skills/bootstrap/SKILL.md and wait for completion before proceeding. If the gate is OPEN, continue to Phase 1.
Read and parse Session Config per skills/_shared/config-reading.md. Store result as $CONFIG.
After parsing, verify that plan-baseline-path is not null: echo "$CONFIG" | jq -e '."plan-baseline-path"'. If null, stop with: "Error: plan-baseline-path is not configured in Session Config. Add it to your CLAUDE.md under ## Session Config. Example: plan-baseline-path: ~/Projects/projects-baseline"
Plan-specific fields (also parse these): plan-default-visibility, plan-prd-location, plan-retro-location, vcs
Store all values for use in subsequent phases.
Path expansion: Expand ~ to $HOME in plan-baseline-path, plan-prd-location, and plan-retro-location. Verify expanded paths exist. If plan-baseline-path doesn't exist, warn: "Baseline path not found at [path]. /plan new repo scaffolding will be unavailable."
If no ## Session Config section exists at all, stop and report: "Error: No Session Config section found in CLAUDE.md. The /plan skill requires at minimum plan-baseline-path to be configured."
Platform Note: This skill uses
AskUserQuestionextensively. On Codex CLI where this tool is unavailable, present all choices as numbered Markdown lists with "(Recommended)" on the first option. The user responds with their choice number. Seeskills/_shared/platform-tools.md.
On Codex CLI, Explore agents map to the
exploreragent role. Seeskills/_shared/platform-tools.md.
Parse $ARGUMENTS to determine the planning mode:
new — Read mode-new.md in this skill directory for mode-specific instructions. This mode handles full project kickoff: requirement gathering, PRD generation, repo scaffolding, and issue creation.feature — Read mode-feature.md in this skill directory for mode-specific instructions. This mode handles feature-level PRDs with compact scope and acceptance criteria.retro — Read mode-retro.md in this skill directory for mode-specific instructions. This mode handles data-driven retrospectives with metrics analysis and improvement actions.If $ARGUMENTS is empty or does not match any mode, use AskUserQuestion to ask:
AskUserQuestion({
questions: [{
question: "Which planning mode do you want to run?",
header: "Plan Mode",
options: [
{ label: "new", description: "Project kickoff — full PRD, repo setup, issue creation. Use when starting a brand new project." },
{ label: "feature", description: "Feature PRD — compact scope, acceptance criteria, issues. Use when adding a feature to an existing project." },
{ label: "retro", description: "Retrospective — metrics analysis, reflection, improvement actions. Use after completing a project phase or sprint." }
],
multiSelect: false
}]
})
After mode selection, proceed to Phase 3 with the chosen mode.
This is the distinctive mechanic shared by all three modes. Every question wave follows the same pattern: research first, then ask.
Before each Q&A wave, dispatch 2-3 Agent() tool calls in a single message (parallel execution) with subagent_type: "Explore":
$BASELINE_PATH to discover available options (archetypes, styles, configurations). Tools: Read, Glob, Grep./plan new wave 1) — analyzes the current repository for existing patterns, file structure, dependencies, and conventions. Tools: Read, Glob, Grep.Example dispatch:
Agent({ subagent_type: "Explore", description: "Research market context for [topic]",
prompt: "Search online for [topic]. Report findings with pros/cons for each option." })
Agent({ subagent_type: "Explore", description: "Analyze baseline templates",
prompt: "Read projects-baseline at $BASELINE_PATH/templates/. List available archetypes, their README descriptions, and key features." })
Agent({ subagent_type: "Explore", description: "Analyze repo context",
prompt: "Explore current repo for [relevant patterns]. Report affected files and existing conventions." })
Wait for ALL agents to complete before proceeding. Use run_in_background: false for all agents.
Synthesize research results into 5 questions per wave. Split across 2 AskUserQuestion calls (3+2 or 4+1) to stay within the 4-question-per-call limit.
Option format rules:
(Recommended) in the labeldescription with Pros/Cons drawn from the researchmultiSelect: false unless the question genuinely requires multiple selectionsExample payload:
AskUserQuestion({ questions: [
{ question: "Which project archetype fits best?", header: "Archetype", options: [
{ label: "nextjs-saas (Recommended)", description: "Pro: Full SaaS stack with auth, payments. Con: Heavier initial setup." },
{ label: "express-service", description: "Pro: Lightweight API. Con: No frontend." },
{ label: "docker-service", description: "Pro: Maximum flexibility. Con: More manual setup." },
{ label: "Other", description: "Describe your preferred archetype." }
], multiSelect: false },
{ question: "Which visibility tier?", header: "Visibility", options: [
{ label: "internal (Recommended)", description: "Pro: GitLab private, team access. Con: No external visibility." },
{ label: "private", description: "Pro: + optional GitHub mirror. Con: Limited collaboration." },
{ label: "public/OSS", description: "Pro: Open source, GitHub public + license. Con: Requires careful secret management." }
], multiSelect: false },
{ question: "Who is the target audience?", header: "Audience", options: [
{ label: "Internal team (Recommended)", description: "Pro: Controlled rollout. Con: Limited feedback pool." },
{ label: "B2B customers", description: "Pro: Revenue potential. Con: Higher quality bar." },
{ label: "Public/developers", description: "Pro: Community contributions. Con: Support burden." },
{ label: "Other", description: "Describe your target audience." }
], multiSelect: false }
]})
Each mode defines a starting wave count:
/plan new — start with 3 waves minimum/plan feature — start with 1 wave minimum/plan retro — start with 1 wave minimumMaximum across all modes: 5 waves.
After each wave, assess whether to continue:
Maintain a running summary of all answers across waves. After each wave, output a brief recap:
## Answers So Far (Wave N/M)
1. Archetype: nextjs-saas
2. Visibility: internal
3. Audience: B2B customers
4. ...
This ensures transparency and allows the user to correct any misunderstanding before the next wave.
After Q&A completes, generate the output document.
Select the template based on mode:
/plan new — read prd-full-template.md in this skill directory (8-section full PRD)/plan feature — read prd-feature-template.md in this skill directory (5-section compact PRD)/plan retro — read retro-template.md in this skill directory (retrospective document)Fill every template section with gathered answers. Use the research agent outputs to enrich sections beyond what the user explicitly stated — add technical details, risk analysis, and architecture sketches derived from the baseline and repo analysis.
Do NOT leave any section with TBD, placeholder, or empty content. If a section cannot be filled from gathered data, make a best-effort recommendation and mark it with <!-- REVIEW: inferred from research, confirm with stakeholders -->.
Write the document to the configured location:
{plan-prd-location}/YYYY-MM-DD-{project-or-feature-name}.md{plan-retro-location}/YYYY-MM-DD-retro.mdUse today's date. Derive the name slug from the project name (for new) or feature name (for feature) — lowercase, hyphens, no special characters.
Ensure the target directory exists (create with mkdir -p if needed) before writing.
Dispatch a reviewer subagent: read prd-reviewer-prompt.md in this skill directory for review instructions. Pass the full PRD content to the reviewer.
The reviewer checks 6 criteria:
If any criterion is FAIL:
Maximum 3 iterations. After 3 iterations with remaining issues, present them to the user via AskUserQuestion:
AskUserQuestion({
questions: [{
question: "The PRD reviewer flagged these remaining issues after 3 revision rounds:\n\n[list issues]\n\nHow do you want to proceed?",
header: "PRD Review",
options: [
{ label: "Accept as-is (Recommended)", description: "Issues are minor, proceed with current PRD." },
{ label: "Manual edit", description: "I'll edit the PRD myself before continuing." },
{ label: "Re-run review", description: "Try one more revision round." }
],
multiSelect: false
}]
})
After the reviewer passes (or user accepts), present the final PRD:
AskUserQuestion({
questions: [{
question: "PRD is ready for your review. It has been saved to [path].\n\nPlease review the document and confirm.",
header: "PRD Approval",
options: [
{ label: "Approve PRD (Recommended)", description: "PRD looks good, proceed to issue creation." },
{ label: "Request changes", description: "I have feedback — let me describe what to change." }
],
multiSelect: false
}]
})
If user requests changes, apply them, save the updated document, and re-present for approval. No limit on user-requested revisions.
Determine Epic and sub-issues based on mode:
/plan new — derive from PRD Section 4 (Solution & Scope). Each major scope item becomes a sub-issue. Group under an Epic named after the project./plan feature — derive from PRD Section 3 (Acceptance Criteria). Each Given/When/Then block becomes a sub-issue. Group under an Epic named after the feature./plan retro — derive from the improvement actions in the reflection phase. Each action becomes an issue (no Epic wrapper unless 5+ actions).Score each issue using three factors:
Technical dependencies (highest weight): Issues that other issues depend on get priority:critical or priority:high. Identify dependency chains: DB schema before API, API before frontend, shared libs before consumers, infrastructure before application.
Business value (medium weight): Issues the user marked as core MVP features in the PRD get priority:high. Nice-to-haves and polish items get priority:medium or priority:low.
Risk (tiebreaker): Issues with identified risks, unknowns, or external dependencies get bumped up one priority level.
Assign labels from the standard taxonomy:
priority:critical / priority:high / priority:medium / priority:lowtype:feature / type:enhancement / type:bug / type:chore / type:discoverystatus:readyarea:<inferred from content> (e.g., area:api, area:frontend, area:infra)/plan new: add appetite:<1w|2w|6w> and mvp-phase labels where applicablePresent the full issue structure via AskUserQuestion before creating anything:
AskUserQuestion({
questions: [{
question: "Proposed issue structure:\n\n**Epic:** [title]\n\n| # | Sub-Issue | Priority | Labels | Blocked By |\n|---|----------|----------|--------|------------|\n| 1 | [title] | critical | [labels] | — |\n| 2 | [title] | high | [labels] | #1 |\n| ... | ... | ... | ... | ... |\n\nTotal: [N] issues. Confirm or adjust.",
header: "Issue Review",
options: [
{ label: "Create all issues (Recommended)", description: "Proceed with the proposed structure." },
{ label: "Adjust priorities", description: "I want to change some priorities before creating." },
{ label: "Remove issues", description: "Some issues should not be created." },
{ label: "Cancel", description: "Do not create any issues." }
],
multiSelect: false
}]
})
If user selects "Adjust priorities" or "Remove issues", handle the adjustments interactively and re-present.
VCS Reference: Detect the VCS platform per the "VCS Auto-Detection" section of the gitlab-ops skill. Use CLI commands per the "Common CLI Commands" section.
For each approved issue:
--label flag:
glab issue create --title "[Plan] <title>" --label "type:feature,priority:high,status:ready" --description "<body>"gh issue create --title "[Plan] <title>" --label "type:feature,priority:high,status:ready" --body "<body>"glab api to set blocks/is-blocked-by relations## Plan Complete
### Document
- [PRD/Retro] saved to: [path]
- Review status: [approved / accepted with notes]
### Issues Created
| # | Title | Priority | Labels | Blocks |
|---|-------|----------|--------|--------|
| <IID> | <title> | <priority> | <labels> | <blocked issues> |
### Dependencies
[Dependency graph as text: #1 → #2 → #4, #1 → #3, #5 (independent)]
### Next Steps
- [Contextual recommendations based on mode]
For /plan new, next steps include: "Run /session feature in the new repo to begin implementation."
For /plan feature, next steps include: "Run /session feature to implement this PRD."
For /plan retro, next steps include: "Address improvement issues in your next session."
plan-baseline-path. Templates change; hardcoded assumptions break.(Recommended) in the label. Every question must have a clear recommendation./plan with the same mode, check for an existing PRD at the target location. If found, use AskUserQuestion to offer: "Update existing PRD" vs. "Create new version" vs. "Cancel".This skill uses 8 sub-files in the same directory:
| File | Purpose |
|---|---|
soul.md | Product Strategist identity — read first, defines communication style and values |
mode-new.md | Project kickoff mode: 3-wave requirement gathering, repo scaffolding, full PRD |
mode-feature.md | Feature PRD mode: 1-2 wave discovery, compact PRD, acceptance criteria |
mode-retro.md | Retrospective mode: metrics analysis, reflection waves, improvement actions |
prd-full-template.md | 8-section PRD template for /plan new |
prd-feature-template.md | 5-section compact PRD template for /plan feature |
retro-template.md | Retrospective document template for /plan retro |
prd-reviewer-prompt.md | PRD quality review instructions for the reviewer subagent |