188 lines
6.1 KiB
Markdown
188 lines
6.1 KiB
Markdown
---
|
|
description: Plan a task - gather context from Jira/Confluence/Slack, analyze codebase, update Linear issue with research and checklist
|
|
allowed-tools: [Bash, LinearMCP, AtlassianMCP, SlackMCP, PlaywrightMCP, Context7MCP]
|
|
argument-hint: <linear-issue-id> <jira-ticket-id>
|
|
---
|
|
|
|
# Planning Task: Linear $1 (Jira: $2)
|
|
|
|
You are starting the **Planning Phase** for Linear issue **$1** based on Jira ticket **$2**.
|
|
|
|
## 🚨 CRITICAL: Safety Rules
|
|
|
|
**READ FIRST**: ``$CCPM_COMMANDS_DIR/SAFETY_RULES.md``
|
|
|
|
**NEVER** submit, post, or update anything to Jira, Confluence, BitBucket, or Slack without explicit user confirmation, even in bypass permission mode.
|
|
|
|
- ✅ **READ-ONLY** operations are permitted (fetch, search, view)
|
|
- ⛔ **WRITE operations** require user confirmation
|
|
- ✅ **Linear** operations are permitted (our internal tracking)
|
|
|
|
When in doubt, ASK before posting anything externally.
|
|
|
|
## Project Configuration
|
|
|
|
**IMPORTANT**: This command uses dynamic project configuration from `~/.claude/ccpm-config.yaml`.
|
|
|
|
## Planning Workflow
|
|
|
|
### Step 0: Fetch Existing Linear Issue & Load Project Config
|
|
|
|
Use **Linear MCP** to:
|
|
|
|
1. Get issue details for: $1
|
|
2. Read current title, description, and any existing context
|
|
3. **Determine the project from the Linear issue** (team/project mapping)
|
|
4. Extract any existing Jira ticket reference (if not provided as $2)
|
|
|
|
**Load Project Configuration:**
|
|
|
|
```bash
|
|
# Get project ID from Linear issue's team/project
|
|
# Map Linear team+project to project ID in config
|
|
|
|
# Example: If Linear shows "Work / My App"
|
|
# Search config for matching linear.team="Work" and linear.project="My App"
|
|
|
|
# Load project config
|
|
PROJECT_ARG=$(determine_project_from_linear_issue "$1")
|
|
```
|
|
|
|
**LOAD PROJECT CONFIG**: Follow instructions in `commands/_shared-project-config-loader.md`
|
|
|
|
After loading, you'll have:
|
|
- `${EXTERNAL_PM_ENABLED}` - Whether to query Jira/Confluence/Slack
|
|
- `${EXTERNAL_PM_TYPE}` - Type of external PM
|
|
- `${JIRA_ENABLED}`, `${CONFLUENCE_ENABLED}`, `${SLACK_ENABLED}`
|
|
- All other project settings
|
|
|
|
If $2 (Jira ticket ID) is not provided:
|
|
|
|
- Check Linear description for Jira ticket reference
|
|
- If no Jira ticket found, ask user for Jira ticket ID or proceed without external PM research
|
|
|
|
### Step 0.5+: Execute Shared Planning Workflow
|
|
|
|
**READ**: `commands/_shared-planning-workflow.md`
|
|
|
|
Execute the shared planning workflow to handle all planning steps systematically.
|
|
|
|
**Set required context variables:**
|
|
- `LINEAR_ISSUE_ID` = $1 (the Linear issue to plan)
|
|
- `JIRA_TICKET_ID` = $2 (optional, can be extracted from Linear issue)
|
|
- `PROJECT_CONFIG` = [loaded from Step 0]
|
|
- `EXTERNAL_PM_ENABLED` = [from config]
|
|
- `EXTERNAL_PM_TYPE` = [from config]
|
|
- `JIRA_ENABLED`, `CONFLUENCE_ENABLED`, `SLACK_ENABLED` = [from config]
|
|
|
|
**Execute these steps from the shared workflow:**
|
|
|
|
1. **Step 0.5**: Detect and analyze images in the Linear issue
|
|
- Uses `commands/_shared-image-analysis.md` logic
|
|
- Finds UI mockups, diagrams, screenshots
|
|
- Analyzes and formats for Linear description
|
|
|
|
2. **Step 0.6**: Detect and extract Figma designs
|
|
- Uses `commands/_shared-figma-detection.md` logic
|
|
- Identifies live Figma links
|
|
- Extracts design tokens and specifications
|
|
- Caches results in Linear comments
|
|
|
|
3. **Step 1**: Gather external PM context (Jira, Confluence, Slack)
|
|
- Only if external PM is enabled
|
|
- Fetches Jira ticket details and linked issues
|
|
- Searches Confluence for related documentation
|
|
- Finds Slack thread discussions
|
|
- Checks BitBucket for related PRs
|
|
|
|
4. **Step 2**: Analyze codebase
|
|
- Identifies relevant files to modify
|
|
- Maps patterns and conventions
|
|
- Determines dependencies
|
|
|
|
5. **Step 2.5**: Invoke engineer agents for technical analysis
|
|
- Selects appropriate agents based on task type
|
|
- Backend tasks → `backend-architect`
|
|
- Frontend tasks → `frontend-developer`
|
|
- Mobile tasks → `mobile-developer`
|
|
- Full-stack → both backend and frontend in parallel
|
|
- Security-critical → add `security-auditor`
|
|
|
|
6. **Step 3**: Update Linear description with comprehensive research
|
|
- Creates implementation checklist
|
|
- Inserts visual context (images + Figma designs)
|
|
- Adds research findings
|
|
- Includes agent analysis
|
|
- Links all external resources
|
|
|
|
7. **Step 4**: Confirm completion
|
|
- Display status summary
|
|
- Show research added
|
|
- Provide Linear issue URL
|
|
|
|
## 💡 Hint: Try the New Natural Command
|
|
|
|
For a simpler workflow, consider using:
|
|
|
|
```bash
|
|
/ccpm:plan WORK-123
|
|
```
|
|
|
|
**Benefits:**
|
|
- Same functionality, simpler syntax
|
|
- Part of the 6-command natural workflow
|
|
- See: [Quick Start Guide](./README.md#quick-start)
|
|
|
|
This command still works perfectly! The hint is just a suggestion.
|
|
|
|
---
|
|
|
|
## Output Format
|
|
|
|
Provide a summary like:
|
|
|
|
```
|
|
✅ Planning Complete!
|
|
|
|
📋 Linear Issue Updated: $1
|
|
🔗 URL: https://linear.app/workspace/issue/$1
|
|
📝 Jira Reference: $2 (if available)
|
|
|
|
📊 Research Summary Added:
|
|
- Gathered context from [X] Jira tickets
|
|
- Found [Y] relevant Confluence docs
|
|
- Analyzed [Z] related Slack discussions
|
|
- Identified [N] files to modify
|
|
- Researched best practices from Context7
|
|
|
|
✅ Checklist: [X] subtasks created/updated
|
|
|
|
🚀 Ready for implementation! Run: /ccpm:implementation:start $1
|
|
```
|
|
|
|
## Notes
|
|
|
|
### Checklist Positioning
|
|
|
|
- **ALWAYS place checklist at the TOP** of the description
|
|
- This makes it immediately visible when opening the ticket
|
|
- Use blockquote for status and complexity metadata
|
|
- Separate checklist from detailed research with `---` horizontal rule
|
|
|
|
### Linking Best Practices
|
|
|
|
- **Every ticket/page mention MUST be a clickable link**
|
|
- Extract URLs from MCP API responses, not manual construction
|
|
- Store URLs as you research, use when writing description
|
|
- Link text should be descriptive (not just ticket ID)
|
|
- Example: `[TRAIN-123: Add JWT auth](url)` not just `[TRAIN-123](url)`
|
|
|
|
### Research Quality
|
|
|
|
- Be thorough in research - this is the foundation for successful implementation
|
|
- Always search Context7 for latest best practices
|
|
- Cross-reference multiple sources to validate approach
|
|
- If information is missing, document what's unknown in the Linear issue
|
|
- Create specific, actionable subtasks in the checklist
|
|
- Include links to ALL referenced materials (Jira, Confluence, Slack, PRs)
|