--- name: jira-builders description: | Guides for using jira-tool CLI correctly to create and manages Jira tickets with rich formatting. Use when working with Jira tickets, epics, or exports. Triggers on "create Jira ticket", "search Jira", "get Jira ticket", "export Jira data", "list epics", or any Jira API operations. Prevents common mistakes like trying to import jira_tool Python module or using curl unnecessarily. Works with jira-tool CLI command and environment variables (JIRA_BASE_URL, JIRA_USERNAME, JIRA_API_TOKEN). --- # Jira Ticket Management Use `jira-tool` CLI for all Jira operations. ## Core Commands ```bash # Get ticket jira-tool get WPCW-370 # Search jira-tool search 'project=WPCW AND status="To Do"' # List epics jira-tool epics --project WPCW # Create epic jira-tool create --project WPCW --type Epic --summary "Title" # Create story under epic jira-tool create --project WPCW --type Story --summary "Title" --parent WPCW-370 # Create subtask jira-tool create --project WPCW --type Sub-task --summary "Title" --parent WPCW-371 # Export for analysis jira-tool export --project WPCW --all --format jsonl -o data.jsonl ``` ## Rich Descriptions Use heredoc for multi-line descriptions: ```bash jira-tool create --project WPCW --type Epic \ --summary "User Authentication" \ --description "$(cat <<'EOF' Implement OAuth2 authentication with session management. **Problem Statement:** Users cannot securely log in. **Acceptance Criteria:** - User can log in with email/password - Session persists across refresh - Logout invalidates sessions EOF )" ``` ## Batch Operations Shell scripts with jira-tool: ```bash #!/bin/bash EPIC=$(jira-tool create --project WPCW --type Epic \ --summary "Parent Epic" --format json | jq -r '.key') for task in "Task 1" "Task 2" "Task 3"; do jira-tool create --project WPCW --type Story \ --summary "$task" --parent "$EPIC" done ``` ## Data Processing Export and process with shell tools: ```bash # Export tickets jira-tool export --project WPCW --all --format jsonl -o tickets.jsonl # Process with jq jq -r 'select(.fields.status.name == "To Do") | .key' tickets.jsonl ``` ## When to Use What - **Single operation:** `jira-tool` directly - **Batch operations:** Shell scripts with `jira-tool` in loops - **Complex workflows:** Invoke `jira-ticket-manager` agent - **Data analysis:** Export + process with jq/awk ## Requirements - `jira-tool` CLI installed (check with `jira-tool --version`) - Environment: `JIRA_BASE_URL`, `JIRA_USERNAME`, `JIRA_API_TOKEN` ## Critical Anti-Patterns to Avoid **DO NOT:** 1. Import jira_tool Python module - it's internal/private ```python # WRONG - This will fail from jira_tool import JiraClient ``` 2. Use curl for Jira API unless jira-tool doesn't support the operation ```bash # WRONG - Fragile, error-prone curl -u "$JIRA_USERNAME:$JIRA_API_TOKEN" "$JIRA_BASE_URL/rest/api/3/search" ``` 3. Create multiple scripts for same purpose (violates DRY principle) ```bash # WRONG - Multiple scripts for slight variations pull_tickets_basic.py, pull_tickets_filtered.py, pull_tickets_csv.py ``` **DO:** 1. Use jira-tool CLI for all operations ```bash # RIGHT - Use the CLI jira-tool search 'project=WPCW' ``` 2. Use subprocess if you need programmatic access ```python # RIGHT - Call CLI from Python import subprocess result = subprocess.run(['jira-tool', 'get', 'PROJ-123'], capture_output=True, text=True) ``` 3. Use command-line flags for variations ```bash # RIGHT - One script with options jira-tool export --format csv --filter status=Open -o file.csv ``` ## Supporting References - **Quick Reference:** `~/.claude/skills/jira-builders/references/QUICK_REFERENCE.md` - Common CLI patterns and examples - **Tool Selection:** `~/.claude/skills/jira-builders/references/TOOL_SELECTION.md` - When to use CLI vs agent vs curl