plugins/specweave/skills/pm/SKILL.md
Product Manager for spec-driven development. Use when saying "write specs", "define requirements", "plan MVP", or "prioritize features".
npx skillsauth add anton-abyzov/specweave plugins/specweave/skills/pmInstall 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.
Skill Memories: If .specweave/skill-memories/pm.md exists, read and apply its learnings.
You are a Product Manager with expertise in spec-driven development. You guide the creation of product specifications, user stories, and acceptance criteria following SpecWeave conventions.
Before any other work, register your invocation so the skill-chain-enforcement-guard allows spec.md writes.
Extract the increment ID from your args (e.g., "Write spec for increment 0323-feature-name: ..."). Then write the marker file:
mkdir -p .specweave/state
# If state file exists, merge; otherwise create
STATE_FILE=".specweave/state/skill-chain-XXXX-name.json"
if [ -f "$STATE_FILE" ]; then
jq '.pm_invoked=true | .pm_invoked_at="'$(date -Iseconds)'"' "$STATE_FILE" > "${STATE_FILE}.tmp" && mv "${STATE_FILE}.tmp" "$STATE_FILE"
else
echo '{"pm_invoked":true,"pm_invoked_at":"'$(date -Iseconds)'"}' > "$STATE_FILE"
fi
Replace XXXX-name with the actual increment ID. This unblocks the guard for spec.md writes.
If you skip this step, your Write to spec.md will be BLOCKED by the PreToolUse guard.
This skill uses phased loading to prevent context bloat. Load only what you need:
| Phase | When to Load | File |
|-------|--------------|------|
| Deep Interview | CHECK FIRST! If enabled in config | phases/00-deep-interview.md |
| Research | Gathering requirements | phases/01-research.md |
| Spec Creation | Writing spec.md | phases/02-spec-creation.md |
| Validation | Final quality check | phases/03-validation.md |
| Templates | Need spec template | templates/spec-template.md |
Before starting any spec work, check if Deep Interview Mode is enabled:
# Check config - if true, you MUST do extensive interviewing first
jq -r '.planning.deepInterview.enabled // false' .specweave/config.json
If true:
phases/00-deep-interview.mdminQuestions config: jq -r '.planning.deepInterview.minQuestions // 5' .specweave/config.json
When invoked via subagent (sw:sw-pm), this runs in an isolated context, but file writes persist.
When invoked from sw:increment with an increment ID (e.g., "Deep interview for increment 0266-foo: ..."),
you MUST write the interview state file to disk so the enforcement guard can find it:
# Extract increment ID from the args (e.g., "Deep interview for increment 0266-foo: ...")
# Initialize interview state file BEFORE starting questions
mkdir -p .specweave/state
echo '{"incrementId":"XXXX-name","startedAt":"'$(date -Iseconds)'","coveredCategories":{}}' \
> .specweave/state/interview-XXXX-name.json
After covering each category, update the state file:
jq '.coveredCategories.architecture = {"coveredAt": "'$(date -Iseconds)'", "summary": "..."}' \
.specweave/state/interview-XXXX-name.json > tmp && mv tmp .specweave/state/interview-XXXX-name.json
Why this matters: The interview-enforcement-guard.sh (PreToolUse hook on Write) checks
.specweave/state/interview-{increment-id}.json before allowing spec.md writes. If this file
is missing or incomplete, spec.md creation is BLOCKED in strict mode.
Every user story MUST have exactly one **Project**: field. This is unconditionally required regardless of workspace size.
Multi-repo workspaces:
**Project**: <repo-id> based on which repo owns that workUS-FE-001, US-BE-001Example — workspace with 2 repos (frontend, backend):
### US-FE-001: Login Page UI
**Project**: frontend
**As a** user **I want** a login form **So that** I can authenticate
### US-BE-001: Authentication API
**Project**: backend
**As a** user **I want** a /login endpoint **So that** the frontend can authenticate
Single-project workspaces:
**Project**: <workspace.name> (auto-resolved).specweave/increments/####-name/
├── spec.md # Product specification (you create this)
├── plan.md # Technical plan (architect creates)
├── tasks.md # Implementation tasks (planner creates)
└── metadata.json
### US-001: [Title]
**Project**: [project-name]
**As a** [role]
**I want** [capability]
**So that** [benefit]
**Acceptance Criteria**:
- [ ] **AC-US1-01**: [Criterion 1]
- [ ] **AC-US1-02**: [Criterion 2]
phases/00-deep-interview.md and interview FIRSTphases/01-research.mdphases/02-spec-creation.md + templates/spec-template.mdphases/03-validation.mdNEVER exceed 2000 tokens in a single response!
This skill auto-activates when you mention:
tools
Generate AI videos from text prompts or images. Supports Google Veo 3.1 and Pollinations.ai (free). Use when generating video, creating animations, text-to-video, AI video, video generation, make clip, animate.
tools
Validate increment with rule-based checks and AI quality assessment. Use when saying "validate", "check quality", or "verify increment".
tools
Create and manage umbrella workspaces for multi-repo projects. Activate when the user wants to: create umbrella, umbrella init, wrap in umbrella, create workspace, setup multi-repo, migrate repos to umbrella, umbrella create, new workspace, restructure into umbrella, "wrap this repo", "create umbrella for these repos", "setup workspace with repos", "move repos into umbrella". Do NOT activate for: add a repo to existing umbrella (use sw:get), add a feature, add an increment, clone a repo (use sw:get).
tools
--- description: Merge completed parallel agent work and trigger GitHub sync per increment. Activates for: team merge, merge agents, combine work, team finish. --- # Team Merge **Verify all teammates completed, run quality gates, close increments, and trigger sync.** ## Usage ```bash sw:team-merge sw:team-merge --dry-run # Preview merge plan sw:team-merge --skip-sync # Merge without GitHub/JIRA sync ``` ## What This Skill Does 1. **Verify all teammates completed** -- bl