| name | pm-assistant |
| description | Product Owner assistance for ticket refinement, epic breakdown, dependency analysis, and backlog management across multiple project management systems. Use this skill when working with tickets to create, analyze, propose amendments, or generate discussion questions. Supports Linear, Local Markdown, Jira, GitHub Issues, and other PM systems through extensible connectors. |
PM Assistant Skill
Overview
This skill enables Product Owner workflows across multiple project management systems:
- Create and refine tickets with proper structure and acceptance criteria
- Analyze tickets for gaps, clarity, completeness, and dependencies
- Break down epics into actionable sub-tickets
- Generate meaningful refinement session questions
- Propose amendments based on conversation context
The skill automatically detects which PM system the project uses (Linear, Local Markdown, Jira, GitHub, etc.) and applies the appropriate connector to query and mutate data. All analysis patterns and refinement workflows are system-agnostic and work consistently across platforms.
Getting Started: PM System Detection
Before starting any work, the skill automatically establishes the PM system context:
1. PM System Detection
The skill detects which PM system the project uses by:
- Checking for MCP servers - Is Linear, Jira, GitHub, or other PM connector available?
- Checking CLAUDE.md - Does the project declare a PM system explicitly?
- Checking for docs/tickets directory - Does Local Markdown tickets directory exist?
- Using AskUserQuestion tool - If detection is ambiguous (see "Using AskUserQuestion for User Input" section)
2. PM System Configuration
Configure the PM system in CLAUDE.md file in your project root:
Example for Linear:
# CLAUDE.md
## Project Management
- **System**: Linear
- **Team Prefix**: PROD
- **Project**: Backend Services
Example for Jira:
# CLAUDE.md
## Project Management
- **System**: Jira
- **Instance**: https://company.atlassian.net
- **Project**: BACKEND
Example for Local Markdown:
# CLAUDE.md
## Project Management
- **System**: Local-Markdown
- **Directory**: docs/tickets
3. Connector-Specific Discovery
Once the PM system is detected, the skill loads the appropriate connector from connectors/ (e.g., connectors/linear.md, connectors/local-markdown.md, connectors/jira.md). The connector handles:
- Finding team/project context specific to that system
- Discovering available workspaces, teams, or projects
- Using AskUserQuestion tool if multiple options exist (see "Using AskUserQuestion for User Input" section)
This ensures all operations are scoped to the correct workspace for the detected PM system.
Core Capabilities
1. Create Tickets from Conversation
Scenario: "Create a ticket for this feature with acceptance criteria" or "Based on the conversation transcript create epic with tickets/ticket"
Process:
- Extract requirements from conversation context
- Use ticket template from
assets/ticket_template.md - Structure as simple or complex ticket based on scope
- Apply appropriate type labels (Feature, Bug, Enhancement, etc.)
- Present proposal to user for review
- Use AskUserQuestion tool for confirmation: Wait for explicit approval before proceeding
- After user confirms: Create ticket using the loaded PM connector
- Report created ticket with ID and link
Guidelines:
- Refer to
references/ticket_structure_guide.mdfor formatting standards - Use
connectors/{system}.mdfor PM system-specific API details - Include acceptance criteria for complex work
- Flag open questions when scope is unclear
- Suggest dependencies if work relates to existing tickets
2. Propose Ticket Amendments
Scenario: "Are there any wrong assumptions in the ticket?" or "Based on the conversation transcript suggest adjustments to epic XXX-123"
Process:
- Fetch existing ticket/epic using the loaded PM connector
- Analyze current state (description, acceptance criteria, scope)
- Cross-reference with provided context (code, conversation, etc.)
- Use patterns from
references/analysis_patterns.mdto identify:- Assumption mismatches
- Scope gaps or overreach
- Missing edge cases or error handling
- Outdated requirements
- Present proposed changes:
- "Current state" (quote from ticket)
- "Suggested changes" (with rationale)
- "Questions for team" (if needed)
- Use AskUserQuestion tool for confirmation: Wait for explicit approval before proceeding
- After user confirms: Update ticket using the loaded PM connector
- Report changes applied
Guidelines:
- Be specific: quote the problematic text
- Explain the "why" behind each suggested change
- Distinguish between critical (must fix) and nice-to-have improvements
- Use AskUserQuestion tool if context is ambiguous or requires clarification
3. Analyze Tickets for Quality
Scenario: "Review existing Linear tickets for completeness, clarity, dependencies, open questions" for range AIA-100 through AIA-110
Process:
- Fetch all tickets in range using the loaded PM connector with appropriate filters
- For each ticket, evaluate against criteria:
- Clarity: Title, description, acceptance criteria
- Completeness: All required fields, edge cases covered
- Dependencies: Blocks/Blocked-by relationships identified
- Open questions: Uncertainties flagged
- Use
references/analysis_patterns.mdPattern 4 for systematic evaluation - Compile findings:
- Strong tickets (ready for development)
- Needs work (specific improvements recommended)
- Needs breakdown (too large)
- Blocked (waiting on decisions)
- Present report with:
- Summary per ticket
- Recommended actions
- Highest-priority refinements needed
Guidelines:
- Use consistent evaluation structure
- Highlight both strengths and issues
- Provide specific, actionable recommendations
- Flag patterns across multiple tickets (e.g., all missing error handling)
4. Identify Gaps in Epic Coverage
Scenario: "Identify gaps in the planned tickets for epic XXX-123"
Process:
- Fetch epic using the loaded PM connector
- Query subtickets using the connector's hierarchy query (e.g., filter
parent:"XXX-123") - Analyze epic scope vs. ticket coverage using
references/analysis_patterns.mdPattern 1:- Frontend/UI components
- Backend services and APIs
- Testing and QA work
- Documentation and knowledge base
- Deployment or infrastructure
- Edge cases and error scenarios
- Present findings:
- Identified gaps with context
- Suggested new tickets for each gap
- Estimated scope per gap
- Use AskUserQuestion tool for confirmation: Present options to create all tickets, select specific ones, or review proposals first
- After user confirms: Create tickets using the loaded PM connector
Guidelines:
- Be thorough but realistic (not everything needs a separate ticket)
- Group related gaps (e.g., multiple API endpoints in one ticket)
- Consider team's estimation approach when scoping gaps
- Link new tickets to epic as subtickets
5. Analyze Dependencies and Suggest Parallelization
Scenario: User asks about dependencies between tickets or how to parallelize work
Process:
- Fetch relevant tickets and analyze relationships
- Use
references/analysis_patterns.mdPattern 3:- Extract explicit Blocks/Blocked-by relationships
- Identify implicit dependencies
- Find critical path (work that must complete first)
- Group by parallelizable tracks
- Present parallelization strategy:
- Work that can happen simultaneously
- Critical path dependencies
- Recommended team allocation
- Suggest implementation sequence
Guidelines:
- Consider frontend/backend can often run in parallel if API contract is clear
- Testing can often run alongside implementation if setup is clear
- Documentation can start early with skeleton/outline
- Infrastructure work often critical path
6. Generate Refinement Session Questions
Scenario: "Generate questions for the next refinement session for tickets XXX-100 through XXX-110"
Process:
- Fetch ticket range using the loaded PM connector with appropriate filters
- Analyze each ticket for uncertainty patterns:
- Missing acceptance criteria
- Ambiguous requirements
- Unknown trade-offs
- Implicit assumptions
- Unclear edge cases
- Use
references/refinement_session_guide.mdandreferences/analysis_patterns.mdPattern 5 - Generate questions organized by:
- Critical blockers: Must resolve first
- Design/Technical questions: Needed before building
- Edge cases: Clarify completeness
- Dependencies: Identify coordination needs
- Success metrics: Define what "done" means
- Present as structured question set with:
- Target audience (Product, Engineering, Design)
- Why the question matters
- Suggested answers or options
Guidelines:
- Prioritize high-impact questions first
- Frame as open-ended (not leading)
- Group related questions by theme
- Note interdependencies between questions
- Suggest time-boxing for discussion
Analysis Patterns and Templates
Reference Materials
For ticket structure standards:
references/ticket_structure_guide.md- Detailed standards, templates, red flagsassets/ticket_template.md- Practical templates for simple/complex/bug/epic tickets
For analysis workflows:
references/analysis_patterns.md- Detailed patterns for gaps, assumptions, dependencies, clarity, refinementconnectors/{system}.md- PM system-specific tool reference:connectors/linear.md- Linear MCP API referenceconnectors/local-markdown.md- Local Markdown connector documentationconnectors/local-markdown/setup.md- Setup instructions
For refinement sessions:
references/refinement_session_guide.md- Question generation, facilitation, templates
When to Use Each Analysis Pattern
| Pattern | Trigger Question | Reference |
|---|---|---|
| Gap Identification | "Identify gaps in epic XXX" | analysis_patterns.md Pattern 1 |
| Assumption Mismatch | "Are there wrong assumptions?" | analysis_patterns.md Pattern 2 |
| Dependency Analysis | "What are dependencies?" | analysis_patterns.md Pattern 3 |
| Quality Review | "Review tickets for completeness" | analysis_patterns.md Pattern 4 |
| Refinement Questions | "Generate questions for session" | analysis_patterns.md Pattern 5, refinement_session_guide.md |
| Epic Adjustment | "Suggest adjustments to epic" | analysis_patterns.md Pattern 6 |
Workflow: Create and Propose
All creation and amendment operations follow this pattern:
Step 1: Gather Context
- User provides requirements (conversation, transcript, existing ticket)
- Establish team/project scope if not already known
- Fetch existing data if modifying
Step 2: Analyze and Draft
- Use appropriate patterns from
references/analysis_patterns.md - Follow structure from
references/ticket_structure_guide.mdor templates - Draft ticket/amendment with complete context
Step 3: Present for Review
- Show "current state" and "proposed state" for amendments
- Show "proposed ticket" for new tickets
- Include rationale for each decision
- Use AskUserQuestion tool if clarification is needed
Step 4: Wait for Confirmation
- Use AskUserQuestion tool to get explicit user confirmation before proceeding
- Do not proceed until user confirms via the tool response
- Offer to adjust draft if user suggests changes
- Re-present adjusted version and confirm again using AskUserQuestion
Step 5: Apply Changes
- Use the loaded PM connector to create/update
- Call connector-specific create/update functions
- Include team/project context in all operations (per connector requirements)
Step 6: Report Results
- Confirm what was created/updated
- Provide ticket ID and Link (if available)
- Ask: "What would you like to do next?"
Best Practices
PM System and Project Scoping
- Always detect the PM system (MCP server, CLAUDE.md, or use AskUserQuestion tool)
- Check CLAUDE.md in project directory for explicit system configuration
- Load the correct connector for the detected system
- Discover team/project context using the connector's discovery functions
- Use AskUserQuestion tool if multiple teams/projects found and context is ambiguous
- Filter all queries to correct team and project per the connector's requirements
Ticket Quality
- Read
references/ticket_structure_guide.mdfor quality standards - Ensure titles are specific and action-oriented
- Include acceptance criteria for complex work
- Flag open questions when scope is unclear
- Link dependencies explicitly
Analysis Completeness
- Quote specific text when identifying issues
- Explain the "why" behind recommendations
- Distinguish between facts (what's written) and inferences
- Flag assumptions clearly
- Suggest options with trade-offs when multiple paths exist
User Confirmation Protocol
- Always show proposals before applying
- Use AskUserQuestion tool to get explicit user confirmation with clear options
- Wait for confirmation response from the tool before proceeding
- Never assume approval
- Offer revision if user suggests changes
- Re-present for approval after revisions (using AskUserQuestion again)
PM Connector Usage
- Refer to
connectors/{system}.mdfor complete tool reference for the detected system - Use filters appropriately (per the connector's query syntax)
- Handle errors gracefully (following connector-specific error handling guidance)
- Respect rate limits and batch operations when possible
Using AskUserQuestion for User Input
When user input is required during workflow execution, use the AskUserQuestion tool to present structured options. This ensures clear, actionable choices and reduces ambiguity.
When to Use AskUserQuestion
Use the tool for:
- PM system/project detection - When multiple teams or projects exist and context is ambiguous
- Clarifying questions during analysis - When requirements, scope, or context needs clarification
- Confirmation before actions - Before creating or updating tickets in the PM system
Do NOT use for:
- Open-ended conversational follow-ups ("What would you like to do next?")
- Refinement session questions (those are for human facilitators)
Example 1: PM System Detection (Multiple Teams Available)
Scenario: Multiple Linear teams found, need to determine which one to use.
Use AskUserQuestion tool with:
{
"questions": [{
"question": "Multiple Linear teams found in your workspace. Which team should I use for this project?",
"header": "Team Selection",
"multiSelect": false,
"options": [
{
"label": "PROD - Product Team",
"description": "Main product development team (15 active issues)"
},
{
"label": "ENG - Engineering Platform",
"description": "Infrastructure and platform team (8 active issues)"
},
{
"label": "DESIGN - Design System",
"description": "Design system and component library team (5 active issues)"
}
]
}]
}
Example 2: Clarifying Requirements During Analysis
Scenario: Analyzing a ticket but scope is ambiguous between two interpretations.
Use AskUserQuestion tool with:
{
"questions": [{
"question": "The ticket mentions 'email notifications' but doesn't specify the scope. What should be included?",
"header": "Scope",
"multiSelect": true,
"options": [
{
"label": "Digest emails",
"description": "Scheduled summary emails sent daily/weekly"
},
{
"label": "Real-time notifications",
"description": "Immediate emails when events occur"
},
{
"label": "Transactional emails",
"description": "System-triggered emails (password reset, confirmations)"
}
]
}]
}
Example 3: Confirming Before Creating Tickets
Scenario: Identified 3 gaps in epic coverage, ready to create tickets.
Use AskUserQuestion tool with:
{
"questions": [{
"question": "I've identified 3 missing tickets for the email digest epic. Should I create them?",
"header": "Create Tickets",
"multiSelect": false,
"options": [
{
"label": "Create all 3 tickets",
"description": "Create tickets for: UI preferences component, end-to-end testing, and scheduled job setup"
},
{
"label": "Show me the proposals first",
"description": "Present detailed ticket proposals for review before creating"
},
{
"label": "Create only high-priority ones",
"description": "Create tickets for UI component and testing, defer infrastructure work"
}
]
}]
}
Guidelines for Effective Questions
Structure:
- Use clear, specific question text
- Provide 2-4 options (not just yes/no when possible)
- Include descriptions explaining what each option means
- Use
multiSelect: trueonly when choices are not mutually exclusive
Headers:
- Keep short (max 12 chars): "Team", "Scope", "Approach", "Confirm"
- Describes the decision type
Options:
- Label: Concise choice (1-5 words)
- Description: Explain implications or what happens if chosen