Commit a4b1953a9b46

Vincent Demeester <vincent@sbr.pm>
2025-12-18 10:01:55
feat(claude): Add Jira skill for issue management
- Enable seamless Jira workflow from Claude Code sessions - Integrate issue tracking with org-mode for unified task management - Automate API authentication with passage-based token injection Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent ed0cf28
dots/.config/claude/skills/Jira/tools/jira-sprint-summary
@@ -0,0 +1,308 @@
+#!/usr/bin/env bash
+# Generate sprint summary for standup, planning, or retrospective
+
+set -euo pipefail
+
+usage() {
+    cat <<EOF
+Usage: jira-sprint-summary [options]
+
+Generate sprint summaries and reports.
+
+Options:
+  --current          Current sprint summary (default)
+  --prev             Previous sprint summary
+  --next             Next sprint summary
+  --standup          Daily standup format
+  --retro            Retrospective format
+  --planning         Planning format
+  --format FORMAT    Output format: text, org, md (default: text)
+  --output FILE      Output to file (default: stdout)
+  -h, --help         Show this help
+
+Examples:
+  # Current sprint summary
+  jira-sprint-summary --current
+
+  # Daily standup notes
+  jira-sprint-summary --standup
+
+  # Retrospective data
+  jira-sprint-summary --prev --retro --format org
+EOF
+    exit 1
+}
+
+# Default options
+SPRINT_TYPE="current"
+REPORT_TYPE="summary"
+FORMAT="text"
+OUTPUT=""
+
+# Parse options
+while [[ $# -gt 0 ]]; do
+    case "$1" in
+        --current) SPRINT_TYPE="current"; shift ;;
+        --prev) SPRINT_TYPE="prev"; shift ;;
+        --next) SPRINT_TYPE="next"; shift ;;
+        --standup) REPORT_TYPE="standup"; shift ;;
+        --retro) REPORT_TYPE="retro"; shift ;;
+        --planning) REPORT_TYPE="planning"; shift ;;
+        --format) FORMAT="$2"; shift 2 ;;
+        --output) OUTPUT="$2"; shift 2 ;;
+        -h|--help) usage ;;
+        *) echo "Unknown option: $1"; usage ;;
+    esac
+done
+
+# Get sprint list based on type
+case "$SPRINT_TYPE" in
+    current) SPRINT_FLAG="--current" ;;
+    prev) SPRINT_FLAG="--prev" ;;
+    next) SPRINT_FLAG="--next" ;;
+esac
+
+# Get sprint info
+SPRINT_INFO=$(jira sprint list "$SPRINT_FLAG" 2>/dev/null) || {
+    echo "Error: Could not fetch sprint"
+    exit 1
+}
+
+SPRINT_NAME=$(echo "$SPRINT_INFO" | head -1)
+
+# Get sprint ID for queries (try to extract from first field)
+SPRINT_ID=$(jira sprint list "$SPRINT_FLAG" --plain 2>/dev/null | head -1 | awk '{print $1}' || echo "")
+
+# Generate JQL for sprint
+if [[ "$SPRINT_TYPE" == "current" ]]; then
+    SPRINT_JQL="sprint in openSprints()"
+elif [[ -n "$SPRINT_ID" ]]; then
+    SPRINT_JQL="sprint = $SPRINT_ID"
+else
+    echo "Warning: Could not determine sprint ID, using openSprints()" >&2
+    SPRINT_JQL="sprint in openSprints()"
+fi
+
+# Fetch sprint issues
+ISSUES=$(jira issue list --jql "$SPRINT_JQL" --plain 2>/dev/null || echo "")
+TOTAL_COUNT=$(echo "$ISSUES" | grep -c "^" || echo "0")
+
+# Count by status
+DONE_COUNT=$(jira issue list --jql "$SPRINT_JQL AND status = Done" --plain 2>/dev/null | grep -c "^" || echo "0")
+IN_PROGRESS_COUNT=$(jira issue list --jql "$SPRINT_JQL AND status = 'In Progress'" --plain 2>/dev/null | grep -c "^" || echo "0")
+CODE_REVIEW_COUNT=$(jira issue list --jql "$SPRINT_JQL AND status = 'Code Review'" --plain 2>/dev/null | grep -c "^" || echo "0")
+QE_REVIEW_COUNT=$(jira issue list --jql "$SPRINT_JQL AND status = 'QE Review'" --plain 2>/dev/null | grep -c "^" || echo "0")
+TODO_COUNT=$(jira issue list --jql "$SPRINT_JQL AND status = 'To Do'" --plain 2>/dev/null | grep -c "^" || echo "0")
+BLOCKED_COUNT=$(jira issue list --jql "$SPRINT_JQL AND status = Blocked" --plain 2>/dev/null | grep -c "^" || echo "0")
+
+# Calculate completion rate
+if [[ $TOTAL_COUNT -gt 0 ]]; then
+    COMPLETION_RATE=$((DONE_COUNT * 100 / TOTAL_COUNT))
+else
+    COMPLETION_RATE=0
+fi
+
+# Count by type
+BUG_COUNT=$(jira issue list --jql "$SPRINT_JQL AND type = Bug" --plain 2>/dev/null | grep -c "^" || echo "0")
+TASK_COUNT=$(jira issue list --jql "$SPRINT_JQL AND type = Task" --plain 2>/dev/null | grep -c "^" || echo "0")
+STORY_COUNT=$(jira issue list --jql "$SPRINT_JQL AND type = Story" --plain 2>/dev/null | grep -c "^" || echo "0")
+
+# Generate output based on report type and format
+generate_output() {
+    case "$REPORT_TYPE" in
+        standup)
+            case "$FORMAT" in
+                org)
+                    cat <<EOF
+* Daily Standup - $(date +'%Y-%m-%d')
+** Sprint: $SPRINT_NAME
+
+** Yesterday
+$(jira issue list --jql "$SPRINT_JQL AND assignee = currentUser() AND updated >= -1d" --plain 2>/dev/null | head -5 | sed 's/^/- /')
+
+** Today
+$(jira issue list --jql "$SPRINT_JQL AND assignee = currentUser() AND status IN ('In Progress', 'Code Review')" --plain 2>/dev/null | sed 's/^/- /')
+
+** Blockers
+$(jira issue list --jql "$SPRINT_JQL AND assignee = currentUser() AND status = Blocked" --plain 2>/dev/null | sed 's/^/- /' || echo "- None")
+
+** Sprint Progress
+- Total: $TOTAL_COUNT issues
+- Done: $DONE_COUNT ($COMPLETION_RATE%)
+- In Progress: $IN_PROGRESS_COUNT
+- To Do: $TODO_COUNT
+- Blocked: $BLOCKED_COUNT
+EOF
+                    ;;
+                md)
+                    cat <<EOF
+# Daily Standup - $(date +'%Y-%m-%d')
+
+## Sprint: $SPRINT_NAME
+
+### Yesterday
+$(jira issue list --jql "$SPRINT_JQL AND assignee = currentUser() AND updated >= -1d" --plain 2>/dev/null | head -5 | sed 's/^/- /')
+
+### Today
+$(jira issue list --jql "$SPRINT_JQL AND assignee = currentUser() AND status IN ('In Progress', 'Code Review')" --plain 2>/dev/null | sed 's/^/- /')
+
+### Blockers
+$(jira issue list --jql "$SPRINT_JQL AND assignee = currentUser() AND status = Blocked" --plain 2>/dev/null | sed 's/^/- /' || echo "- None")
+
+### Sprint Progress
+- Total: $TOTAL_COUNT issues
+- Done: $DONE_COUNT ($COMPLETION_RATE%)
+- In Progress: $IN_PROGRESS_COUNT
+- To Do: $TODO_COUNT
+- Blocked: $BLOCKED_COUNT
+EOF
+                    ;;
+                *)
+                    cat <<EOF
+=== Daily Standup - $(date +'%Y-%m-%d') ===
+Sprint: $SPRINT_NAME
+
+Yesterday:
+$(jira issue list --jql "$SPRINT_JQL AND assignee = currentUser() AND updated >= -1d" --plain 2>/dev/null | head -5)
+
+Today:
+$(jira issue list --jql "$SPRINT_JQL AND assignee = currentUser() AND status IN ('In Progress', 'Code Review')" --plain 2>/dev/null)
+
+Blockers:
+$(jira issue list --jql "$SPRINT_JQL AND assignee = currentUser() AND status = Blocked" --plain 2>/dev/null || echo "None")
+
+Sprint Progress:
+  Total: $TOTAL_COUNT issues
+  Done: $DONE_COUNT ($COMPLETION_RATE%)
+  In Progress: $IN_PROGRESS_COUNT
+  To Do: $TODO_COUNT
+  Blocked: $BLOCKED_COUNT
+EOF
+                    ;;
+            esac
+            ;;
+
+        retro)
+            case "$FORMAT" in
+                org)
+                    cat <<EOF
+* Sprint Retrospective - $SPRINT_NAME
+
+** Metrics
+- Total Issues: $TOTAL_COUNT
+- Completed: $DONE_COUNT
+- Incomplete: $((TOTAL_COUNT - DONE_COUNT))
+- Completion Rate: $COMPLETION_RATE%
+
+** Issue Breakdown
+- Bugs: $BUG_COUNT
+- Tasks: $TASK_COUNT
+- Stories: $STORY_COUNT
+
+** Status Distribution
+- Done: $DONE_COUNT
+- In Progress: $IN_PROGRESS_COUNT
+- Code Review: $CODE_REVIEW_COUNT
+- QE Review: $QE_REVIEW_COUNT
+- To Do: $TODO_COUNT
+- Blocked: $BLOCKED_COUNT
+
+** Completed Issues
+$(jira issue list --jql "$SPRINT_JQL AND status = Done" --columns KEY,SUMMARY --plain 2>/dev/null | sed 's/^/- /')
+
+** Incomplete Issues
+$(jira issue list --jql "$SPRINT_JQL AND status != Done" --columns KEY,SUMMARY --plain 2>/dev/null | sed 's/^/- /')
+
+** What Went Well
+
+
+** What Could Be Improved
+
+
+** Action Items
+- [ ]
+
+EOF
+                    ;;
+                *)
+                    cat <<EOF
+=== Sprint Retrospective - $SPRINT_NAME ===
+
+Metrics:
+  Total Issues: $TOTAL_COUNT
+  Completed: $DONE_COUNT
+  Incomplete: $((TOTAL_COUNT - DONE_COUNT))
+  Completion Rate: $COMPLETION_RATE%
+
+Issue Breakdown:
+  Bugs: $BUG_COUNT
+  Tasks: $TASK_COUNT
+  Stories: $STORY_COUNT
+
+Status Distribution:
+  Done: $DONE_COUNT
+  In Progress: $IN_PROGRESS_COUNT
+  Code Review: $CODE_REVIEW_COUNT
+  QE Review: $QE_REVIEW_COUNT
+  To Do: $TODO_COUNT
+  Blocked: $BLOCKED_COUNT
+
+Completed Issues:
+$(jira issue list --jql "$SPRINT_JQL AND status = Done" --columns KEY,SUMMARY --plain 2>/dev/null)
+
+Incomplete Issues:
+$(jira issue list --jql "$SPRINT_JQL AND status != Done" --columns KEY,SUMMARY --plain 2>/dev/null)
+EOF
+                    ;;
+            esac
+            ;;
+
+        planning)
+            cat <<EOF
+=== Sprint Planning - $SPRINT_NAME ===
+
+Current Sprint Summary:
+  Total: $TOTAL_COUNT issues
+  Done: $DONE_COUNT
+  Remaining: $((TOTAL_COUNT - DONE_COUNT))
+
+High Priority Backlog Items:
+$(jira issue list --jql "priority IN (Critical, High) AND status = 'To Do' AND sprint is EMPTY ORDER BY priority DESC" --limit 10 --plain 2>/dev/null)
+
+Unassigned Bugs:
+$(jira issue list --jql "type = Bug AND assignee is EMPTY AND status = 'To Do' ORDER BY priority DESC" --limit 5 --plain 2>/dev/null)
+EOF
+            ;;
+
+        *)
+            # Default summary
+            cat <<EOF
+=== Sprint Summary - $SPRINT_NAME ===
+
+Total Issues: $TOTAL_COUNT
+Completion: $DONE_COUNT/$TOTAL_COUNT ($COMPLETION_RATE%)
+
+Status Breakdown:
+  Done:        $DONE_COUNT
+  In Progress: $IN_PROGRESS_COUNT
+  Code Review: $CODE_REVIEW_COUNT
+  QE Review:   $QE_REVIEW_COUNT
+  To Do:       $TODO_COUNT
+  Blocked:     $BLOCKED_COUNT
+
+Type Breakdown:
+  Bugs:    $BUG_COUNT
+  Tasks:   $TASK_COUNT
+  Stories: $STORY_COUNT
+EOF
+            ;;
+    esac
+}
+
+# Output to file or stdout
+if [[ -n "$OUTPUT" ]]; then
+    generate_output > "$OUTPUT"
+    echo "Summary written to: $OUTPUT"
+else
+    generate_output
+fi
dots/.config/claude/skills/Jira/tools/jira-to-org
@@ -0,0 +1,201 @@
+#!/usr/bin/env bash
+# Convert Jira issue to org-mode format
+
+set -euo pipefail
+
+usage() {
+    cat <<EOF
+Usage: jira-to-org ISSUE-KEY [options]
+
+Convert Jira issue to org-mode format for denote notes.
+
+Options:
+  --template TYPE    Template type: investigation, planning, discussion
+  --output FILE      Output file (default: stdout)
+  -h, --help         Show this help
+
+Examples:
+  jira-to-org SRVKP-1234
+  jira-to-org SRVKP-1234 --template investigation
+  jira-to-org SRVKP-1234 --output ~/notes/issue.org
+EOF
+    exit 1
+}
+
+ISSUE_KEY="${1:-}"
+TEMPLATE="basic"
+OUTPUT=""
+
+shift || true
+
+while [[ $# -gt 0 ]]; do
+    case "$1" in
+        --template)
+            TEMPLATE="$2"
+            shift 2
+            ;;
+        --output)
+            OUTPUT="$2"
+            shift 2
+            ;;
+        -h|--help)
+            usage
+            ;;
+        *)
+            echo "Unknown option: $1"
+            usage
+            ;;
+    esac
+done
+
+if [[ -z "$ISSUE_KEY" ]]; then
+    echo "Error: ISSUE-KEY required"
+    usage
+fi
+
+# Fetch issue details
+ISSUE_DATA=$(jira issue view "$ISSUE_KEY" --plain 2>/dev/null || {
+    echo "Error: Failed to fetch issue $ISSUE_KEY"
+    exit 1
+})
+
+# Extract fields (basic parsing - adjust based on actual output format)
+SUMMARY=$(echo "$ISSUE_DATA" | grep -A1 "^Summary:" | tail -1 | sed 's/^[[:space:]]*//')
+STATUS=$(echo "$ISSUE_DATA" | grep "Status:" | sed 's/.*Status:[[:space:]]*//' | awk '{print $1}')
+PRIORITY=$(echo "$ISSUE_DATA" | grep "Priority:" | sed 's/.*Priority:[[:space:]]*//' | awk '{print $1}')
+ASSIGNEE=$(echo "$ISSUE_DATA" | grep "Assignee:" | sed 's/.*Assignee:[[:space:]]*//')
+TYPE=$(echo "$ISSUE_DATA" | grep "Type:" | sed 's/.*Type:[[:space:]]*//' | awk '{print $1}')
+
+# Generate org-mode content based on template
+generate_org() {
+    cat <<EOF
+* $ISSUE_KEY: $SUMMARY
+
+:PROPERTIES:
+:JIRA: https://issues.redhat.com/browse/$ISSUE_KEY
+:JIRA_KEY: $ISSUE_KEY
+:JIRA_STATUS: $STATUS
+:JIRA_PRIORITY: $PRIORITY
+:JIRA_TYPE: $TYPE
+:CREATED: $(date '+[%Y-%m-%d %a %H:%M]')
+:END:
+
+[[https://issues.redhat.com/browse/$ISSUE_KEY][View in Jira]]
+
+** Issue Details
+- Status: $STATUS
+- Priority: $PRIORITY
+- Assignee: $ASSIGNEE
+- Type: $TYPE
+
+** Description
+EOF
+
+    # Add template-specific sections
+    case "$TEMPLATE" in
+        investigation)
+            cat <<'EOF'
+
+** Investigation
+*** Hypothesis
+
+
+*** Findings
+
+
+*** Root Cause
+
+
+** Solution
+*** Proposed Fix
+
+
+*** Testing Plan
+- [ ] Test case 1
+- [ ] Test case 2
+
+*** Implementation Notes
+
+
+** Related
+- Related issues:
+- PRs:
+- Documentation:
+EOF
+            ;;
+        planning)
+            cat <<'EOF'
+
+** Goals
+
+
+** Requirements
+*** Functional Requirements
+
+
+*** Non-Functional Requirements
+
+
+** Design
+*** Architecture
+
+
+*** Components
+
+
+** Implementation Plan
+*** Phase 1
+- [ ] Task 1
+- [ ] Task 2
+
+** Testing Strategy
+
+
+** Timeline
+| Phase | Start | End | Status |
+|-------+-------+-----+--------|
+|       |       |     |        |
+EOF
+            ;;
+        discussion)
+            cat <<'EOF'
+
+** Context
+
+
+** Discussion Points
+
+
+** Decisions
+
+
+** Action Items
+- [ ] Action 1
+- [ ] Action 2
+
+** Next Steps
+
+EOF
+            ;;
+        basic)
+            cat <<'EOF'
+
+** Notes
+
+
+** Tasks
+- [ ] Task 1
+
+** Related
+EOF
+            ;;
+    esac
+}
+
+# Output to file or stdout
+if [[ -n "$OUTPUT" ]]; then
+    generate_org > "$OUTPUT"
+    echo "Created org-mode note: $OUTPUT"
+else
+    generate_org
+fi
dots/.config/claude/skills/Jira/tools/jira-to-todo
@@ -0,0 +1,213 @@
+#!/usr/bin/env bash
+# Convert Jira issues to org-mode TODOs
+
+set -euo pipefail
+
+usage() {
+    cat <<EOF
+Usage: jira-to-todo [options] [ISSUE-KEY...]
+
+Convert Jira issues to org-mode TODO format and optionally add to todos.org.
+
+Options:
+  --jql QUERY        Use JQL query to find issues
+  --output FILE      Output file (default: stdout)
+  --section SECTION  Section in todos.org (Work, Projects, Systems, Personal)
+  --add              Add to ~/desktop/org/todos.org
+  --state STATE      TODO state (TODO, NEXT, STRT) (default: TODO)
+  --priority N       Org priority [#1] through [#5]
+  -h, --help         Show this help
+
+Examples:
+  # Convert single issue
+  jira-to-todo SRVKP-1234
+
+  # Convert my sprint issues and add to Work section
+  jira-to-todo --jql "sprint in openSprints() AND assignee = currentUser()" --add --section Work
+
+  # Convert and save to file
+  jira-to-todo SRVKP-1234 SRVKP-5678 --output /tmp/todos.org
+EOF
+    exit 1
+}
+
+# Default options
+JQL=""
+OUTPUT=""
+SECTION=""
+ADD_TO_FILE=false
+STATE="TODO"
+PRIORITY=""
+ISSUES=()
+
+# Parse options
+while [[ $# -gt 0 ]]; do
+    case "$1" in
+        --jql)
+            JQL="$2"
+            shift 2
+            ;;
+        --output)
+            OUTPUT="$2"
+            shift 2
+            ;;
+        --section)
+            SECTION="$2"
+            shift 2
+            ;;
+        --add)
+            ADD_TO_FILE=true
+            shift
+            ;;
+        --state)
+            STATE="$2"
+            shift 2
+            ;;
+        --priority)
+            PRIORITY="[#$2]"
+            shift 2
+            ;;
+        -h|--help)
+            usage
+            ;;
+        -*)
+            echo "Unknown option: $1"
+            usage
+            ;;
+        *)
+            ISSUES+=("$1")
+            shift
+            ;;
+    esac
+done
+
+# Get issues from JQL or arguments
+if [[ -n "$JQL" ]]; then
+    mapfile -t ISSUE_KEYS < <(jira issue list --jql "$JQL" --plain 2>/dev/null | awk '{print $1}')
+elif [[ ${#ISSUES[@]} -gt 0 ]]; then
+    ISSUE_KEYS=("${ISSUES[@]}")
+else
+    echo "Error: Provide ISSUE-KEY or --jql QUERY"
+    usage
+fi
+
+if [[ ${#ISSUE_KEYS[@]} -eq 0 ]]; then
+    echo "No issues found"
+    exit 1
+fi
+
+# Convert priority from Jira to org (if not specified)
+jira_to_org_priority() {
+    local jira_priority="$1"
+    case "$jira_priority" in
+        Blocker|Critical) echo "[#1]" ;;
+        Major|High) echo "[#2]" ;;
+        Medium) echo "[#3]" ;;
+        Minor) echo "[#4]" ;;
+        Trivial) echo "[#5]" ;;
+        *) echo "[#3]" ;;  # Default to medium
+    esac
+}
+
+# Generate TODO entry for an issue
+generate_todo() {
+    local issue_key="$1"
+
+    # Fetch issue details
+    local issue_data
+    issue_data=$(jira issue view "$issue_key" --plain 2>/dev/null) || {
+        echo "Warning: Could not fetch $issue_key" >&2
+        return 1
+    }
+
+    # Parse fields (basic extraction - adjust based on actual format)
+    local summary status jira_priority type
+    summary=$(echo "$issue_data" | grep -i "summary" | head -1 | sed 's/.*:[[:space:]]*//' || echo "Unknown")
+    status=$(echo "$issue_data" | grep -i "status" | head -1 | sed 's/.*:[[:space:]]*//' | awk '{print $1}' || echo "Unknown")
+    jira_priority=$(echo "$issue_data" | grep -i "priority" | head -1 | sed 's/.*:[[:space:]]*//' | awk '{print $1}' || echo "Medium")
+    type=$(echo "$issue_data" | grep -i "type" | head -1 | sed 's/.*:[[:space:]]*//' | awk '{print $1}' || echo "Task")
+
+    # Determine org priority
+    local org_priority
+    if [[ -n "$PRIORITY" ]]; then
+        org_priority="$PRIORITY"
+    else
+        org_priority=$(jira_to_org_priority "$jira_priority")
+    fi
+
+    # Determine TODO state based on Jira status
+    local todo_state="$STATE"
+    if [[ "$STATE" == "TODO" ]]; then
+        case "$status" in
+            "In Progress"|"Code Review"|"QE Review") todo_state="STRT" ;;
+            "To Do") todo_state="TODO" ;;
+            "Done") todo_state="DONE" ;;
+            *) todo_state="TODO" ;;
+        esac
+    fi
+
+    # Generate TODO entry
+    cat <<EOF
+** $todo_state $org_priority $issue_key: $summary
+:PROPERTIES:
+:CREATED:       [$(date +'%Y-%m-%d %a %H:%M')]
+:JIRA:          https://issues.redhat.com/browse/$issue_key
+:JIRA_KEY:      $issue_key
+:JIRA_STATUS:   $status
+:JIRA_PRIORITY: $jira_priority
+:JIRA_TYPE:     $type
+:CATEGORY:      work
+:END:
+
+Jira: [[https://issues.redhat.com/browse/$issue_key][$issue_key]]
+Type: $type | Status: $status | Priority: $jira_priority
+
+EOF
+}
+
+# Generate all TODOs
+generate_all() {
+    for issue_key in "${ISSUE_KEYS[@]}"; do
+        generate_todo "$issue_key"
+    done
+}
+
+# Output to file or stdout
+if [[ "$ADD_TO_FILE" == true ]]; then
+    TODOS_FILE="$HOME/desktop/org/todos.org"
+
+    if [[ ! -f "$TODOS_FILE" ]]; then
+        echo "Error: $TODOS_FILE not found"
+        exit 1
+    fi
+
+    if [[ -z "$SECTION" ]]; then
+        echo "Error: --section required when using --add"
+        exit 1
+    fi
+
+    # Create temporary file with new TODOs
+    TMPFILE=$(mktemp)
+    generate_all > "$TMPFILE"
+
+    # Use org-manager to add to section (if available)
+    if command -v ~/.config/claude/skills/Org/tools/org-manager &>/dev/null; then
+        # TODO: Implement adding to specific section
+        # For now, just append to file and let user refile
+        echo "Adding ${#ISSUE_KEYS[@]} TODOs to inbox..."
+        cat "$TMPFILE" >> "$HOME/desktop/org/inbox.org"
+        echo "TODOs added to inbox.org. Please refile to appropriate sections."
+    else
+        # Fallback: just show the TODOs
+        echo "Generated TODOs (add manually to $SECTION section):"
+        cat "$TMPFILE"
+    fi
+
+    rm "$TMPFILE"
+
+elif [[ -n "$OUTPUT" ]]; then
+    generate_all > "$OUTPUT"
+    echo "TODOs written to: $OUTPUT"
+else
+    generate_all
+fi
dots/.config/claude/skills/Jira/workflows/Comment.md
@@ -0,0 +1,320 @@
+# Add Comment to Jira Issue
+
+Add comments, updates, or discussion to Jira issues.
+
+## When to Use
+
+- User wants to add a comment to an issue
+- Need to provide update or status
+- Responding to question in issue
+- Documenting progress or findings
+- Communicating with team on issue
+
+## Steps
+
+1. **Identify the issue** to comment on
+2. **Prepare the comment** text
+3. **Add the comment** using jira command
+4. **Confirm addition**
+5. **Offer to view** the updated issue
+
+## Commands
+
+### Interactive Comment
+```bash
+jira issue comment add ISSUE-KEY
+```
+Opens editor for multi-line comment
+
+### Inline Comment
+```bash
+jira issue comment add ISSUE-KEY "Comment text here"
+```
+
+### Comment from File
+```bash
+jira issue comment add ISSUE-KEY --from-file comment.txt
+```
+
+### View Comments
+```bash
+jira issue view ISSUE-KEY --comments 10
+```
+
+### Comment with Mention
+```bash
+jira issue comment add ISSUE-KEY "[~vdemeester] Can you take a look at this?"
+```
+
+## Comment Formatting
+
+### Mention User
+```
+[~username] or [@username]
+```
+
+### Link to Issue
+```
+SRVKP-1234 (auto-linked)
+```
+
+### Code Block
+```
+{code:bash}
+kubectl get pods
+{code}
+```
+
+### Quote
+```
+{quote}
+Original text here
+{quote}
+```
+
+### Bold/Italic
+```
+*bold text*
+_italic text_
+```
+
+### Lists
+```
+* Item 1
+* Item 2
+** Sub-item 2a
+```
+
+### Links
+```
+[Link text|https://example.com]
+```
+
+## Examples
+
+### Example 1: Quick Update
+**User**: "Comment on SRVKP-7327 that I'm investigating this"
+
+**Action**:
+```bash
+jira issue comment add SRVKP-7327 "Investigating this issue. Will provide update by EOD."
+```
+
+**Response**: "Added comment. Would you like to change the status to In Progress?"
+
+### Example 2: Provide Solution
+**User**: "Add comment with the workaround for SRVKP-1234"
+
+**Action**:
+```bash
+jira issue comment add SRVKP-1234 "$(cat <<'EOF'
+*Workaround Found*
+
+Set the following SCC to the default service account:
+
+{code:bash}
+oc adm policy add-scc-to-user anyuid system:serviceaccount:default:default
+{code}
+
+This allows the affinity assistant pod to be created successfully.
+EOF
+)"
+```
+
+### Example 3: Tag Team Member
+**User**: "Ask Vincent to review SRVKP-5678"
+
+**Action**:
+```bash
+jira issue comment add SRVKP-5678 "[~vdemeester] Could you review this when you have time? Thanks!"
+```
+
+### Example 4: Progress Update
+**User**: "Comment that I've finished the implementation"
+
+**Action**:
+```bash
+jira issue comment add ISSUE-KEY "Implementation completed. Ready for code review.
+
+Changes:
+* Added feature X
+* Updated tests
+* Updated documentation
+
+PR: https://github.com/org/repo/pull/123"
+```
+
+## Common Comment Patterns
+
+### Status Update
+```bash
+jira issue comment add ISSUE-KEY "Working on this. Currently investigating the root cause."
+```
+
+### Blocker Notification
+```bash
+jira issue comment add ISSUE-KEY "Blocked by SRVKP-9999. Cannot proceed until that's resolved."
+```
+
+### Request for Information
+```bash
+jira issue comment add ISSUE-KEY "[~reporter] Can you provide more details about how to reproduce this?"
+```
+
+### Resolution Summary
+```bash
+jira issue comment add ISSUE-KEY "Fixed in PR #123. The issue was caused by X. Solution implemented: Y."
+```
+
+### Testing Results
+```bash
+jira issue comment add ISSUE-KEY "Tested on environment X. All scenarios passed. Ready for QE review."
+```
+
+## Multi-line Comments
+
+For longer comments, use heredoc:
+
+```bash
+jira issue comment add ISSUE-KEY "$(cat <<'EOF'
+# Investigation Summary
+
+## Root Cause
+The issue occurs because...
+
+## Proposed Fix
+We should...
+
+## Testing Plan
+1. Test scenario A
+2. Test scenario B
+3. Verify no regression
+
+## Timeline
+- Implementation: 2 days
+- Testing: 1 day
+- Review: 1 day
+EOF
+)"
+```
+
+## Comment Best Practices
+
+### 1. Be Clear and Concise
+- State the purpose upfront
+- Use formatting for readability
+- Break up long text into sections
+
+### 2. Provide Context
+- Reference related issues
+- Link to PRs, commits, docs
+- Include relevant code snippets
+
+### 3. Tag Appropriately
+- Mention users who need to see it
+- Use @username or [~username]
+- Don't over-notify
+
+### 4. Use Formatting
+- Code blocks for code
+- Lists for steps or items
+- Bold for important points
+- Links for references
+
+### 5. Keep Professional
+- Focus on facts and solutions
+- Be constructive in feedback
+- Use neutral tone
+
+## Viewing Comments
+
+### View All Comments
+```bash
+jira issue view ISSUE-KEY --comments 100
+```
+
+### View Recent Comments
+```bash
+jira issue view ISSUE-KEY --comments 5
+```
+
+### Plain Text Comments
+```bash
+jira issue view ISSUE-KEY --comments 10 --plain
+```
+
+## Comment Templates
+
+### Investigation Update
+```
+*Investigation Update*
+
+Status: In Progress
+Findings:
+* Finding 1
+* Finding 2
+
+Next Steps:
+* Step 1
+* Step 2
+
+ETA: [date]
+```
+
+### Fix Applied
+```
+*Fix Applied*
+
+Changes: [PR link or commit]
+Testing: Passed local tests
+Deployment: Ready for QE
+
+Resolves: [describe how it fixes the issue]
+```
+
+### Needs Information
+```
+*Additional Information Needed*
+
+To proceed, we need:
+1. [Item 1]
+2. [Item 2]
+
+[~reporter] Could you provide these details?
+```
+
+### Blocked
+```
+*Issue Blocked*
+
+Blocked by: SRVKP-XXXX
+Reason: [explain dependency]
+Workaround: [if available]
+
+Can we prioritize the blocker?
+```
+
+## Follow-up Actions
+
+After commenting:
+- **Change status**: If comment indicates progress
+- **Update labels**: Add relevant tags
+- **Notify team**: Send email if urgent
+- **Link issues**: Connect related work
+- **Log work**: Track time spent
+
+## Tips
+
+- **Use templates**: Save common comment patterns
+- **Format code**: Always use code blocks
+- **Link everything**: PRs, commits, docs
+- **Be timely**: Comment when you make progress
+- **Document decisions**: Explain why, not just what
+- **Use mentions sparingly**: Notify only relevant people
+- **Edit if needed**: Fix mistakes or add clarification
+
+## Integration
+
+- **Notes Skill**: Copy comment content to notes
+- **Email Skill**: Send comment summary to stakeholders
+- **Git**: Reference issue in commits with similar message
dots/.config/claude/skills/Jira/workflows/Create.md
@@ -0,0 +1,332 @@
+# Create Jira Issue
+
+Create new Jira issues (bugs, tasks, stories, epics).
+
+## When to Use
+
+- User wants to create a new ticket
+- User says "file a bug", "create task", "new issue"
+- Need to track work or report a problem
+- Converting discussion or notes into actionable items
+
+## Steps
+
+1. **Determine issue type** (Bug, Task, Story, Epic)
+2. **Gather required information**:
+   - Summary (title)
+   - Description
+   - Project key (default: SRVKP)
+   - Priority (optional)
+   - Labels (optional)
+   - Assignee (optional)
+3. **Create issue** using interactive or non-interactive mode
+4. **Confirm creation** and provide issue key
+5. **Offer follow-up actions** (assign, link to note, add to sprint)
+
+## Commands
+
+### Interactive Create
+```bash
+jira issue create
+```
+Prompts for all fields interactively
+
+### Create with Template
+```bash
+jira issue create -t
+```
+Uses project template
+
+### Create Bug
+```bash
+jira issue create \
+  --type Bug \
+  --summary "Affinity assistant pod not created" \
+  --priority Major \
+  --label bug,scc
+```
+
+### Create Task
+```bash
+jira issue create \
+  --type Task \
+  --summary "Update documentation for feature X" \
+  --assignee $(jira me)
+```
+
+### Create from File
+```bash
+jira issue create --template issue-template.json
+```
+
+## Required Fields
+
+### All Issues
+- **Project**: Usually SRVKP (can be set as default)
+- **Issue Type**: Bug, Task, Story, Epic, Spike, Sub-task
+- **Summary**: Brief title (should be descriptive)
+
+### Bugs
+- **Description**: Steps to reproduce, actual/expected behavior
+- **Priority**: Severity of the issue
+- **Affects Version**: Which version has the bug
+- **Environment**: OS, platform, configuration
+
+### Stories/Tasks
+- **Description**: What needs to be done and why
+- **Acceptance Criteria**: Definition of done
+
+### Epics
+- **Epic Name**: Short name for the epic
+- **Description**: High-level goal
+
+## Issue Types
+
+### Bug
+Software defects that need fixing
+```bash
+jira issue create \
+  --type Bug \
+  --summary "Title" \
+  --priority Major \
+  --description "$(cat <<'EOF'
+Description of problem:
+Steps to reproduce:
+1.
+2.
+3.
+
+Actual results:
+
+
+Expected results:
+
+
+Reproducibility: Always/Intermittent/Only Once
+EOF
+)"
+```
+
+### Task
+General work items
+```bash
+jira issue create \
+  --type Task \
+  --summary "Implement feature X" \
+  --description "Technical details..."
+```
+
+### Story
+User-focused features
+```bash
+jira issue create \
+  --type Story \
+  --summary "As a user, I want to..." \
+  --description "User story and acceptance criteria"
+```
+
+### Epic
+Large initiatives
+```bash
+jira issue create \
+  --type Epic \
+  --summary "Epic: Major feature set" \
+  --description "High-level goals and sub-initiatives"
+```
+
+## Priority Levels
+
+- **Blocker**: Blocks development/testing, needs immediate attention
+- **Critical**: System crashes, data loss, no workaround
+- **Major**: Major functionality broken, workaround exists
+- **Minor**: Minor functionality issue
+- **Trivial**: Cosmetic issues, nice-to-have
+
+## Common Labels
+
+Red Hat Jira common labels:
+- `bug` - Bug fix
+- `feature` - New feature
+- `documentation` - Docs work
+- `test` - Testing work
+- `release-notes-pending` - Needs release notes
+- `docs-pending` - Needs documentation
+- `customer-reported` - From customer
+- `security` - Security issue
+
+## Examples
+
+### Example 1: Quick Bug Report
+**User**: "File a bug that the affinity assistant pod isn't being created"
+
+**Action**:
+```bash
+jira issue create \
+  --type Bug \
+  --summary "Affinity assistant pod not created" \
+  --priority Major \
+  --label bug,docs-pending \
+  --description "Description of the issue..."
+```
+
+**Response**: "Created SRVKP-7327. Would you like me to assign it to you or add it to the current sprint?"
+
+### Example 2: Task from Discussion
+**User**: "Create a task to update the beets configuration documentation"
+
+**Action**:
+```bash
+jira issue create \
+  --type Task \
+  --summary "Update beets configuration documentation" \
+  --assignee $(jira me) \
+  --label documentation
+```
+
+### Example 3: Interactive Creation
+**User**: "Create a new issue"
+
+**Action**: Run `jira issue create` and guide user through prompts:
+1. Project: SRVKP (or ask)
+2. Issue Type: (ask user)
+3. Summary: (ask user)
+4. Description: (ask user to provide details)
+5. Additional fields as needed
+
+## Best Practices
+
+### 1. Clear Summaries
+- Be specific and descriptive
+- Include key information in title
+- Avoid vague titles like "Fix bug" or "Update code"
+
+**Good**: "Affinity assistant pod fails to create with default serviceAccount"
+**Bad**: "Pod issue"
+
+### 2. Detailed Descriptions
+For bugs:
+- Steps to reproduce
+- Actual vs expected behavior
+- Environment details
+- Reproducibility
+
+For tasks/stories:
+- Context and motivation
+- Acceptance criteria
+- Technical notes if relevant
+
+### 3. Appropriate Priority
+- Don't over-prioritize everything as Critical
+- Consider actual impact on users/system
+- Align with team conventions
+
+### 4. Useful Labels
+- Add relevant labels for filtering
+- Include `release-notes-pending` if user-facing
+- Add `docs-pending` if docs needed
+- Tag with component or area
+
+### 5. Link Related Issues
+- Reference related issues in description
+- Use "relates to", "blocks", "is blocked by"
+- Link to epics or parent issues
+
+## Description Templates
+
+### Bug Template
+```markdown
+### Description of problem:
+[What's wrong]
+
+### Prerequisites:
+[Setup, operators/versions]
+
+### Steps to Reproduce:
+1. [First step]
+2. [Second step]
+3. [Third step]
+
+### Actual results:
+[What happens]
+
+### Expected results:
+[What should happen]
+
+### Reproducibility:
+Always / Intermittent / Only Once
+
+### Additional info:
+[Logs, screenshots, etc]
+```
+
+### Task Template
+```markdown
+### Objective:
+[What needs to be done]
+
+### Context:
+[Why this is needed]
+
+### Acceptance Criteria:
+- [ ] [Criterion 1]
+- [ ] [Criterion 2]
+- [ ] [Criterion 3]
+
+### Technical Notes:
+[Implementation details]
+```
+
+## Follow-up Actions
+
+After creating an issue:
+- **Assign it**: To yourself or team member
+- **Add to sprint**: Include in current sprint
+- **Link to epic**: Associate with larger initiative
+- **Create note**: Document in org-mode
+- **Add TODO**: Track in personal task list
+- **Share**: Send link to team
+
+## Non-Interactive Examples
+
+### Create and Assign
+```bash
+jira issue create \
+  --type Task \
+  --summary "Title" \
+  --assignee $(jira me) \
+  --no-input
+```
+
+### Create with Labels
+```bash
+jira issue create \
+  --type Bug \
+  --summary "Title" \
+  --label bug,critical,customer-reported \
+  --priority Critical
+```
+
+### Create Sub-task
+```bash
+jira issue create \
+  --type Sub-task \
+  --summary "Subtask title" \
+  --parent SRVKP-1234
+```
+
+## Tips
+
+- **Use templates**: Save common issue patterns
+- **Set defaults**: Configure default project/type in config
+- **Copy from similar**: Base on previous issues
+- **Include context**: Link to docs, PRs, commits
+- **Tag appropriately**: Make issues discoverable
+- **Assign on creation**: If you know the owner
+- **Link immediately**: Connect to epics/sprints early
+
+## Integration
+
+- **Notes Skill**: Reference issue in denote notes
+- **TODOs Skill**: Create corresponding TODO
+- **Git**: Reference issue key in commits
+- **Email**: Notify team about new issue
dots/.config/claude/skills/Jira/workflows/LinkToNote.md
@@ -0,0 +1,356 @@
+# Link Jira Issue to Org-Mode Note
+
+Create or link Jira issues with org-mode denote notes for documentation and context.
+
+## When to Use
+
+- User wants to document a Jira issue in detail
+- Need to track investigation or research
+- Creating comprehensive issue analysis
+- Linking work context with issues
+- Project planning with Jira integration
+
+## Steps
+
+1. **Identify the Jira issue** to document
+2. **Fetch issue details** for context
+3. **Create denote note** with appropriate tags
+4. **Add Jira issue link** to note
+5. **Optionally add note link** to Jira comment
+6. **Confirm creation** and offer next actions
+
+## Integration Pattern
+
+### 1. Fetch Issue Information
+```bash
+jira issue view ISSUE-KEY --plain
+```
+
+### 2. Create Denote Note
+Use Notes skill to create note with:
+- **Title**: "ISSUE-KEY: Issue Summary"
+- **Tags**: `jira`, project tag (e.g., `tekton`), issue type (e.g., `bug`)
+- **Keywords**: Relevant keywords from issue
+
+### 3. Add Jira Link to Note
+```org
+* ISSUE-KEY: Issue Summary
+
+:PROPERTIES:
+:JIRA: https://issues.redhat.com/browse/ISSUE-KEY
+:CREATED: [timestamp]
+:END:
+
+[[https://issues.redhat.com/browse/ISSUE-KEY][View in Jira]]
+
+** Issue Details
+- Status: [status]
+- Priority: [priority]
+- Assignee: [assignee]
+- Type: [type]
+
+** Description
+[Issue description]
+
+** Investigation Notes
+[Your notes here]
+
+** Related Work
+- Link to related notes
+- Link to code changes
+- Link to documentation
+```
+
+### 4. Link Note to Jira (Optional)
+```bash
+jira issue comment add ISSUE-KEY "Documentation: file://path/to/note.org"
+```
+
+## Examples
+
+### Example 1: Document Bug Investigation
+**User**: "Create a note for investigating SRVKP-7327"
+
+**Actions**:
+1. Fetch issue:
+```bash
+jira issue view SRVKP-7327 --plain
+```
+
+2. Create note with Notes skill:
+- Title: "SRVKP-7327: Affinity assistant pod not created"
+- Tags: `jira`, `tekton`, `bug`, `affinity-assistant`
+
+3. Populate note with issue details and add sections for:
+- Root cause analysis
+- Investigation steps
+- Testing notes
+- Solution approach
+
+4. Add comment to Jira:
+```bash
+jira issue comment add SRVKP-7327 "Investigation notes: [link to note]"
+```
+
+### Example 2: Feature Planning
+**User**: "Create a planning note for the new epic SRVKP-8000"
+
+**Actions**:
+1. Fetch epic details
+2. Create note with:
+   - Epic summary
+   - Goals and requirements
+   - Sub-tasks breakdown
+   - Technical approach
+3. Link sub-tasks as they're created
+
+### Example 3: Link Existing Note
+**User**: "Link my note about affinity assistants to SRVKP-7327"
+
+**Actions**:
+1. Find the note using Notes skill
+2. Add Jira property to note:
+```org
+:PROPERTIES:
+:JIRA: https://issues.redhat.com/browse/SRVKP-7327
+:END:
+```
+3. Add comment to Jira with note reference
+
+## Note Templates
+
+### Bug Investigation Note
+```org
+* SRVKP-XXXX: Bug Summary
+
+:PROPERTIES:
+:JIRA: https://issues.redhat.com/browse/SRVKP-XXXX
+:CREATED: [timestamp]
+:END:
+
+[[https://issues.redhat.com/browse/SRVKP-XXXX][View in Jira]]
+
+** Issue Details
+- Status: To Do
+- Priority: Major
+- Assignee: username
+- Reporter: reporter-name
+- Type: Bug
+
+** Description
+[Issue description from Jira]
+
+** Reproduction Steps
+1. Step 1
+2. Step 2
+3. Step 3
+
+** Investigation
+*** Hypothesis
+[Initial thoughts on root cause]
+
+*** Findings
+- Finding 1
+- Finding 2
+
+*** Root Cause
+[Identified root cause]
+
+** Solution
+*** Proposed Fix
+[Description of fix]
+
+*** Testing Plan
+- [ ] Test case 1
+- [ ] Test case 2
+- [ ] Regression testing
+
+*** Implementation Notes
+[Technical details]
+
+** Related
+- Related issues: [[SRVKP-YYYY]]
+- PRs: [[link]]
+- Documentation: [[link]]
+```
+
+### Feature Planning Note
+```org
+* SRVKP-XXXX: Feature Name
+
+:PROPERTIES:
+:JIRA: https://issues.redhat.com/browse/SRVKP-XXXX
+:TYPE: Epic
+:CREATED: [timestamp]
+:END:
+
+** Overview
+[Feature description]
+
+** Goals
+- Goal 1
+- Goal 2
+- Goal 3
+
+** Requirements
+*** Functional Requirements
+- Requirement 1
+- Requirement 2
+
+*** Non-Functional Requirements
+- Performance
+- Security
+- Scalability
+
+** Design
+*** Architecture
+[Architecture overview]
+
+*** Components
+- Component 1: [description]
+- Component 2: [description]
+
+*** Data Model
+[Data structures]
+
+** Implementation Plan
+*** Phase 1: [Name]
+- [ ] Task 1 - SRVKP-XXX1
+- [ ] Task 2 - SRVKP-XXX2
+
+*** Phase 2: [Name]
+- [ ] Task 3 - SRVKP-XXX3
+- [ ] Task 4 - SRVKP-XXX4
+
+** Testing Strategy
+- Unit tests
+- Integration tests
+- E2E tests
+
+** Documentation
+- User documentation
+- API documentation
+- Migration guide
+
+** Timeline
+| Phase | Start | End | Status |
+|-------+-------+-----+--------|
+| Phase 1 | [date] | [date] | In Progress |
+| Phase 2 | [date] | [date] | Planned |
+
+** Related Issues
+- SRVKP-XXX1: [[link]]
+- SRVKP-XXX2: [[link]]
+```
+
+### Meeting/Discussion Note
+```org
+* SRVKP-XXXX Discussion Notes
+
+:PROPERTIES:
+:JIRA: https://issues.redhat.com/browse/SRVKP-XXXX
+:MEETING_DATE: [date]
+:ATTENDEES: person1, person2, person3
+:END:
+
+** Context
+[Issue being discussed]
+
+** Discussion Points
+*** Point 1
+[Discussion and decisions]
+
+*** Point 2
+[Discussion and decisions]
+
+** Decisions
+- Decision 1
+- Decision 2
+
+** Action Items
+- [ ] Action 1 - @person1
+- [ ] Action 2 - @person2
+
+** Next Steps
+[What happens next]
+```
+
+## Workflow Integration
+
+### From Jira to Note
+1. User mentions Jira issue
+2. Fetch issue details
+3. Create denote note with structure
+4. Populate with issue information
+5. Add sections for work tracking
+
+### From Note to Jira
+1. User creates note about topic
+2. Realize it needs Jira tracking
+3. Create Jira issue with Notes skill context
+4. Link note to newly created issue
+5. Add Jira property to note
+
+### Bi-directional Linking
+1. Issue has note reference in comment
+2. Note has Jira property
+3. Easy navigation between both
+4. Synchronized updates
+
+## Org-Mode Properties for Jira
+
+```org
+:PROPERTIES:
+:JIRA: https://issues.redhat.com/browse/ISSUE-KEY
+:JIRA_KEY: SRVKP-1234
+:JIRA_STATUS: In Progress
+:JIRA_PRIORITY: Major
+:JIRA_ASSIGNEE: username
+:LAST_SYNCED: [timestamp]
+:END:
+```
+
+## Benefits
+
+1. **Rich Documentation**: More detailed than Jira allows
+2. **Local Search**: Find issues via denote search
+3. **Context Preservation**: Keep investigation notes
+4. **Linking**: Connect issues with code, docs, other notes
+5. **Version Control**: Track note changes over time
+6. **Offline Access**: Work without internet
+7. **Integration**: Part of your note-taking workflow
+
+## Best Practices
+
+1. **Create early**: Start note when beginning work
+2. **Update regularly**: Keep notes current
+3. **Link liberally**: Connect to related notes
+4. **Use org features**: Tags, TODOs, timestamps
+5. **Sync key info**: Update Jira with major findings
+6. **Preserve context**: Don't delete investigation paths
+7. **Structure consistently**: Use templates
+
+## Follow-up Actions
+
+After linking:
+- **Add TODO**: If action needed
+- **Update Jira**: Comment with note link
+- **Tag appropriately**: For denote searching
+- **Link related notes**: Cross-reference
+- **Schedule review**: Revisit for updates
+
+## Tips
+
+- **Use denote backlinks**: Find all issues-related notes
+- **Tag by project**: `tekton`, `pipelines`, etc.
+- **Tag by type**: `bug`, `feature`, `investigation`
+- **Include timestamps**: Track when work done
+- **Export to Jira**: Copy sections to Jira when done
+- **Archive when done**: Don't delete, archive
+
+## Integration with Other Skills
+
+- **Notes Skill**: Create and manage denote notes
+- **TODOs Skill**: Create action items from issues
+- **Git Skill**: Link commits to issues and notes
+- **Org Skill**: Manage org-mode structure
dots/.config/claude/skills/Jira/workflows/List.md
@@ -0,0 +1,235 @@
+# List Jira Issues
+
+List and filter Jira issues based on various criteria.
+
+## When to Use
+
+- User asks to see their issues/tickets
+- User wants to filter issues by status, priority, assignee, etc.
+- Need to get an overview of work items
+- Preparing for standup or sprint planning
+- Finding issues to work on
+
+## Steps
+
+1. **Determine filter criteria** from user request
+2. **Construct appropriate jira command** with filters
+3. **Execute and present results** in a clear format
+4. **Offer refinement or actions** on the listed issues
+
+## Common Commands
+
+### My Open Issues
+```bash
+jira issue list -a $(jira me) -s ~Done
+```
+
+### My Current Work
+```bash
+jira issue list -a $(jira me) -s "In Progress"
+```
+
+### High Priority Issues
+```bash
+jira issue list -p Critical,Blocker,High -s ~Done
+```
+
+### Recent Bugs
+```bash
+jira issue list -t Bug --created-after -7d
+```
+
+### Unassigned Issues in Project
+```bash
+jira issue list -a x@
+```
+
+### Issues Updated Recently
+```bash
+jira issue list --updated-after -3d
+```
+
+### Plain Text List (for processing)
+```bash
+jira issue list --plain -a $(jira me)
+```
+
+## Filter Options
+
+### By Assignee
+- `-a USERNAME` or `-a $(jira me)` for yourself
+- `-a x@` for unassigned issues
+
+### By Status
+- `-s "To Do"` - Specific status
+- `-s "To Do","In Progress"` - Multiple statuses
+- `-s ~Done` - NOT Done (all open)
+
+### By Type
+- `-t Bug` - Bugs only
+- `-t Task,Story` - Multiple types
+- `-t Epic` - Epics only
+
+### By Priority
+- `-p Critical,Blocker` - High priority
+- `-p Minor,Trivial` - Low priority
+
+### By Time
+- `--created-after -7d` - Created in last 7 days
+- `--updated-after -1w` - Updated in last week
+- `--created-before 2025-01-01` - Before specific date
+
+### By Labels
+- `-l documentation,bug` - Has specific labels
+- `-l release-notes-pending` - Needs release notes
+
+### Custom Columns
+```bash
+jira issue list --columns TYPE,KEY,SUMMARY,STATUS,ASSIGNEE
+```
+
+### Limit Results
+```bash
+jira issue list -a $(jira me) --limit 20
+```
+
+## Output Formatting
+
+### Default View
+Shows table with key, summary, status, assignee
+
+### Plain Text (--plain)
+Best for scripting and AI processing:
+```bash
+jira issue list --plain -a $(jira me) -s "In Progress"
+```
+
+### No Truncation (--no-truncate)
+Shows full field values:
+```bash
+jira issue list --no-truncate
+```
+
+### Reverse Order (--reverse)
+Reverse the sort order:
+```bash
+jira issue list --reverse
+```
+
+## Examples
+
+### Example 1: Daily Standup Prep
+**User**: "What am I working on?"
+
+**Action**:
+```bash
+jira issue list -a $(jira me) -s "In Progress","Code Review"
+```
+
+**Presentation**: List issues with status, highlighting blockers
+
+### Example 2: Find Something to Work On
+**User**: "Show me unassigned tasks in SRVKP"
+
+**Action**:
+```bash
+jira issue list -a x@ -t Task -s "To Do" --limit 10
+```
+
+**Follow-up**: "Would you like me to assign any of these to you?"
+
+### Example 3: Check Team Progress
+**User**: "What bugs are still open?"
+
+**Action**:
+```bash
+jira issue list -t Bug -s ~Done --order-by priority
+```
+
+**Presentation**: Group by priority, show counts
+
+### Example 4: Sprint Planning
+**User**: "Show high priority items not in a sprint"
+
+**Action**:
+```bash
+jira issue list -p High,Critical --jql "sprint is EMPTY"
+```
+
+## Advanced JQL Queries
+
+For complex queries, use `--jql`:
+
+### Issues I Reported
+```bash
+jira issue list --jql "reporter = currentUser()"
+```
+
+### Stale Issues
+```bash
+jira issue list --jql "status != Done AND updated <= -30d"
+```
+
+### Issues Needing Review
+```bash
+jira issue list --jql "status = 'Code Review' AND assignee = currentUser()"
+```
+
+### Blocked Issues
+```bash
+jira issue list --jql "status = Blocked ORDER BY priority DESC"
+```
+
+## Common Patterns
+
+### 1. Daily Standup
+```bash
+# What I did yesterday
+jira issue list -a $(jira me) --updated-after -1d --plain
+
+# What I'm doing today
+jira issue list -a $(jira me) -s "In Progress" --plain
+```
+
+### 2. Sprint Overview
+```bash
+# All sprint issues by status
+jira issue list --jql "sprint in openSprints() GROUP BY status"
+```
+
+### 3. Bug Triage
+```bash
+# Unassigned bugs by priority
+jira issue list -t Bug -a x@ --order-by priority --reverse
+```
+
+### 4. Release Planning
+```bash
+# Issues with release label
+jira issue list -l release-2.0 -s ~Done
+```
+
+## Follow-up Actions
+
+After listing issues, offer to:
+- **View specific issue**: Get details on interesting item
+- **Update filters**: Refine the search
+- **Assign issues**: Take ownership
+- **Create TODO**: Add to personal task list
+- **Export list**: Save to file or share
+
+## Tips
+
+- **Use --plain for scripting**: Easier to parse
+- **Combine filters**: Narrow down results effectively
+- **Save common queries**: Document frequent JQL patterns
+- **Use $(jira me)**: Always works regardless of username
+- **Check counts first**: Use `--limit` for large result sets
+- **Group by fields**: Use JQL GROUP BY for summaries
+- **Order by priority**: Show most important first
+
+## Integration
+
+- **TODOs Skill**: Convert list to org-mode TODOs
+- **Notes Skill**: Document planning in notes
+- **Email Skill**: Send list summaries to team
dots/.config/claude/skills/Jira/workflows/Search.md
@@ -0,0 +1,366 @@
+# Search Jira Issues with JQL
+
+Advanced searching using JQL (Jira Query Language) for complex filtering.
+
+## When to Use
+
+- User needs complex filtering beyond basic options
+- Finding specific sets of issues
+- Creating custom queries
+- Reporting and analysis
+- Cross-project searches
+
+## Steps
+
+1. **Understand the search criteria** from user request
+2. **Construct JQL query** based on requirements
+3. **Execute search** using `--jql` flag
+4. **Present results** in appropriate format
+5. **Offer to refine** or save the query
+
+## JQL Basics
+
+### Simple Query
+```bash
+jira issue list --jql "assignee = currentUser()"
+```
+
+### Combined Conditions (AND)
+```bash
+jira issue list --jql "project = SRVKP AND status = 'In Progress'"
+```
+
+### Alternative Conditions (OR)
+```bash
+jira issue list --jql "priority = High OR priority = Critical"
+```
+
+### Negation (NOT)
+```bash
+jira issue list --jql "status != Done"
+```
+
+### IN Clause
+```bash
+jira issue list --jql "status IN ('To Do', 'In Progress', 'Blocked')"
+```
+
+## Common JQL Fields
+
+### User Fields
+- `assignee = currentUser()` - Assigned to me
+- `reporter = currentUser()` - Reported by me
+- `assignee = username@redhat.com` - Specific user
+- `assignee is EMPTY` - Unassigned
+
+### Status & Priority
+- `status = "In Progress"` - Specific status
+- `status != Done` - Not done
+- `priority IN (High, Critical)` - Multiple priorities
+
+### Project & Type
+- `project = SRVKP` - Specific project
+- `type = Bug` - Issue type
+- `type IN (Bug, Task)` - Multiple types
+
+### Time-Based
+- `created >= -7d` - Last 7 days
+- `updated <= -30d` - Older than 30 days
+- `created >= "2025-01-01"` - Specific date
+- `resolved >= startOfWeek()` - This week
+
+### Text Search
+- `text ~ "affinity assistant"` - Contains text
+- `summary ~ "pod"` - Summary contains
+- `description ~ "workaround"` - Description contains
+
+### Labels & Components
+- `labels = documentation` - Has label
+- `labels is EMPTY` - No labels
+- `component = "Tekton Pipelines"` - Specific component
+
+### Version
+- `fixVersion = "1.15.0"` - Fix version
+- `affectedVersion = "1.14.0"` - Affects version
+
+### Links & Hierarchy
+- `issuekey in linkedIssues(SRVKP-1234)` - Linked issues
+- `parent = SRVKP-1234` - Sub-tasks of issue
+- `"Epic Link" = SRVKP-1000` - Issues in epic
+
+## JQL Functions
+
+### User Functions
+- `currentUser()` - Logged-in user
+- `membersOf("team-name")` - Team members
+
+### Time Functions
+- `startOfDay()`, `endOfDay()` - Day boundaries
+- `startOfWeek()`, `endOfWeek()` - Week boundaries
+- `startOfMonth()`, `endOfMonth()` - Month boundaries
+- `startOfYear()`, `endOfYear()` - Year boundaries
+
+### Sprint Functions
+- `sprint in openSprints()` - Current sprints
+- `sprint in closedSprints()` - Past sprints
+- `sprint in futureSprints()` - Upcoming sprints
+
+### Issue Functions
+- `linkedIssues(ISSUE-KEY)` - Linked issues
+- `issueHistory()` - Issues you viewed
+
+## Example Queries
+
+### My Work
+```bash
+# My open issues
+jira issue list --jql "assignee = currentUser() AND status != Done"
+
+# Issues I reported
+jira issue list --jql "reporter = currentUser() ORDER BY created DESC"
+
+# Recently assigned to me
+jira issue list --jql "assignee = currentUser() AND updated >= -7d"
+```
+
+### Team Queries
+```bash
+# Unassigned bugs
+jira issue list --jql "project = SRVKP AND type = Bug AND assignee is EMPTY"
+
+# Blocked items
+jira issue list --jql "status = Blocked ORDER BY priority DESC"
+
+# High priority open issues
+jira issue list --jql "project = SRVKP AND priority IN (Critical, High) AND status != Done"
+```
+
+### Time-Based
+```bash
+# Stale issues (no update in 30 days)
+jira issue list --jql "status != Done AND updated <= -30d ORDER BY updated ASC"
+
+# Recent bugs
+jira issue list --jql "type = Bug AND created >= -14d ORDER BY created DESC"
+
+# This week's completed work
+jira issue list --jql "assignee = currentUser() AND resolved >= startOfWeek()"
+```
+
+### Sprint & Release
+```bash
+# Current sprint issues
+jira issue list --jql "sprint in openSprints() AND assignee = currentUser()"
+
+# Issues missing from sprint
+jira issue list --jql "project = SRVKP AND status != Done AND sprint is EMPTY"
+
+# Release 1.15 work
+jira issue list --jql "fixVersion = '1.15.0' AND status != Done"
+```
+
+### Labels & Components
+```bash
+# Documentation needed
+jira issue list --jql "labels = docs-pending AND status = Done"
+
+# Customer-reported bugs
+jira issue list --jql "type = Bug AND labels = customer-reported"
+
+# Tekton Pipelines component
+jira issue list --jql "component = 'Tekton Pipelines' AND status != Done"
+```
+
+### Advanced
+```bash
+# Issues with no activity
+jira issue list --jql "status IN ('To Do', 'In Progress') AND updated <= -30d AND assignee = currentUser()"
+
+# Subtasks of epic
+jira issue list --jql "parent = SRVKP-1000 ORDER BY priority DESC"
+
+# Issues linked to specific issue
+jira issue list --jql "issuekey in linkedIssues(SRVKP-1234)"
+
+# Reopened issues
+jira issue list --jql "status was Done AND status != Done"
+```
+
+## Sorting & Limiting
+
+### ORDER BY
+```bash
+# By priority (descending)
+jira issue list --jql "project = SRVKP ORDER BY priority DESC"
+
+# By created date (newest first)
+jira issue list --jql "assignee = currentUser() ORDER BY created DESC"
+
+# Multiple sort fields
+jira issue list --jql "status != Done ORDER BY priority DESC, updated ASC"
+```
+
+### Limit Results
+```bash
+# Limit in jira-cli
+jira issue list --jql "project = SRVKP" --limit 20
+
+# Limit in JQL (not supported by all Jira versions)
+jira issue list --jql "project = SRVKP ORDER BY created DESC" --limit 10
+```
+
+## Saved Queries
+
+Common queries worth saving:
+
+### My Active Work
+```jql
+assignee = currentUser() AND status IN ("In Progress", "Code Review", "QE Review")
+```
+
+### Needs Attention
+```jql
+assignee = currentUser() AND status = Blocked
+OR (assignee = currentUser() AND priority = Critical AND status != Done)
+```
+
+### Team Triage
+```jql
+project = SRVKP AND type = Bug AND assignee is EMPTY AND status = "To Do"
+ORDER BY priority DESC, created ASC
+```
+
+### Weekly Summary
+```jql
+assignee = currentUser() AND updated >= startOfWeek()
+ORDER BY status ASC, priority DESC
+```
+
+### Release Planning
+```jql
+project = SRVKP AND fixVersion is EMPTY AND status != Done
+ORDER BY priority DESC
+```
+
+## Examples
+
+### Example 1: Find Stale Work
+**User**: "Show me issues I haven't updated in 2 weeks"
+
+**Action**:
+```bash
+jira issue list --jql "assignee = currentUser() AND status != Done AND updated <= -14d ORDER BY updated ASC"
+```
+
+### Example 2: Sprint Planning
+**User**: "What high priority issues aren't in a sprint?"
+
+**Action**:
+```bash
+jira issue list --jql "project = SRVKP AND priority IN (Critical, High) AND status != Done AND sprint is EMPTY ORDER BY priority DESC"
+```
+
+### Example 3: Bug Triage
+**User**: "Show unassigned customer-reported bugs"
+
+**Action**:
+```bash
+jira issue list --jql "type = Bug AND labels = customer-reported AND assignee is EMPTY ORDER BY created ASC"
+```
+
+### Example 4: Weekly Review
+**User**: "What did I complete this week?"
+
+**Action**:
+```bash
+jira issue list --jql "assignee = currentUser() AND status changed to Done DURING (startOfWeek(), endOfWeek())"
+```
+
+## JQL Best Practices
+
+1. **Use quotes for multi-word values**: `status = "In Progress"`
+2. **Use parentheses for complex logic**: `(A OR B) AND C`
+3. **Use currentUser()**: More portable than hardcoded usernames
+4. **Use relative dates**: `-7d` instead of specific dates
+5. **Test incrementally**: Build complex queries step by step
+6. **Save common queries**: Document frequent searches
+7. **Use ORDER BY**: Sort results meaningfully
+
+## Debugging JQL
+
+### Test in Web UI First
+Use Jira's advanced search to test queries:
+https://issues.redhat.com/issues/?jql=YOUR_QUERY
+
+### Common Errors
+- **Unquoted multi-word values**: Use quotes
+- **Wrong field names**: Check field names in UI
+- **Invalid syntax**: Check parentheses and operators
+- **Permission issues**: Some fields may be restricted
+
+### Use --debug Flag
+```bash
+jira issue list --jql "..." --debug
+```
+
+## Output Formatting
+
+### Plain Text
+```bash
+jira issue list --jql "..." --plain
+```
+
+### Specific Columns
+```bash
+jira issue list --jql "..." --columns KEY,SUMMARY,STATUS,ASSIGNEE
+```
+
+### No Truncation
+```bash
+jira issue list --jql "..." --no-truncate
+```
+
+## Integration with Shell
+
+### Count Results
+```bash
+jira issue list --jql "status = Done AND resolved >= startOfWeek()" --plain | wc -l
+```
+
+### Extract Keys
+```bash
+jira issue list --jql "..." --plain | awk '{print $1}'
+```
+
+### Bulk Operations
+```bash
+jira issue list --jql "status = 'Code Review' AND assignee = currentUser()" --plain | \
+while read key rest; do
+  jira issue move "$key" "QE Review"
+done
+```
+
+## Tips
+
+- **Learn gradually**: Start simple, add complexity
+- **Use web UI**: Visual query builder helps
+- **Document queries**: Save useful patterns
+- **Combine with grep**: Filter results further
+- **Use --plain**: For scripting
+- **Test on small sets**: Before bulk operations
+- **Check performance**: Complex queries may be slow
+
+## Follow-up Actions
+
+After searching:
+- **Refine query**: Adjust filters
+- **Save query**: Document for reuse
+- **Bulk update**: Act on results
+- **Export results**: Share with team
+- **Create dashboard**: Monitor regularly
+
+## Related Resources
+
+- JQL Reference: https://issues.redhat.com/secure/JiraJQLHelp.jspa
+- JQL Functions: Click "Advanced" in Jira search
+- Field Names: Visible in issue view
dots/.config/claude/skills/Jira/workflows/Sprint.md
@@ -0,0 +1,596 @@
+# Sprint Management
+
+Manage sprints, sprint planning, and sprint-related issues.
+
+## When to Use
+
+- User mentions "sprint", "current sprint", "sprint planning"
+- Need to view sprint contents or progress
+- Adding/removing issues from sprints
+- Sprint planning and organization
+- Sprint retrospectives or reviews
+
+## Steps
+
+1. **Identify sprint operation** (list, add, remove, view)
+2. **Determine sprint context** (current, specific sprint, future)
+3. **Execute sprint command** with appropriate options
+4. **Present results** clearly
+5. **Offer follow-up actions** (add issues, view details, etc.)
+
+## Commands
+
+### List Sprints
+
+#### Current Sprint
+```bash
+jira sprint list --current
+```
+
+#### Previous Sprints
+```bash
+jira sprint list --prev
+```
+
+#### Future Sprints
+```bash
+jira sprint list --next
+```
+
+#### All Sprints
+```bash
+jira sprint list
+```
+
+#### Sprints for Specific Board
+```bash
+jira sprint list --board "Board Name"
+```
+
+### View Sprint Issues
+
+#### Issues in Current Sprint
+```bash
+jira issue list --jql "sprint in openSprints()"
+```
+
+#### Issues in Specific Sprint (by ID)
+```bash
+jira sprint list --current --plain  # Get sprint ID
+jira issue list --jql "sprint = SPRINT-ID"
+```
+
+#### My Issues in Current Sprint
+```bash
+jira issue list --jql "sprint in openSprints() AND assignee = currentUser()"
+```
+
+#### Sprint Issues by Status
+```bash
+jira issue list --jql "sprint in openSprints() ORDER BY status, priority DESC"
+```
+
+### Add Issues to Sprint
+
+#### Add Single Issue
+```bash
+jira sprint add SPRINT-ID ISSUE-KEY
+```
+
+#### Add Multiple Issues
+```bash
+jira sprint add SPRINT-ID ISSUE-KEY-1 ISSUE-KEY-2 ISSUE-KEY-3
+```
+
+#### Add from JQL Query
+```bash
+# Get issues first
+jira issue list --jql "priority = High AND status = 'To Do' AND sprint is EMPTY" --plain
+
+# Then add them (in loop)
+for key in ISSUE-1 ISSUE-2; do
+  jira sprint add SPRINT-ID "$key"
+done
+```
+
+### Remove Issues from Sprint
+
+#### Remove Single Issue
+```bash
+jira sprint remove SPRINT-ID ISSUE-KEY
+```
+
+#### Remove Multiple Issues
+```bash
+jira sprint remove SPRINT-ID ISSUE-KEY-1 ISSUE-KEY-2
+```
+
+## Sprint Information
+
+### Get Current Sprint ID
+```bash
+# List current sprint and extract ID
+jira sprint list --current --plain
+```
+
+### Sprint State
+Sprints can be:
+- **Active/Open**: Currently running
+- **Future**: Planned but not started
+- **Closed**: Completed
+
+### Sprint Metadata
+When viewing sprint:
+- Sprint name
+- Start date
+- End date
+- State (active/future/closed)
+- Associated board
+
+## Common Sprint Queries
+
+### Sprint Planning
+
+#### High Priority Items Not in Sprint
+```bash
+jira issue list --jql "project = SRVKP AND priority IN (Critical, High) AND status = 'To Do' AND sprint is EMPTY ORDER BY priority DESC"
+```
+
+#### Ready for Sprint (All To Do, no sprint)
+```bash
+jira issue list --jql "status = 'To Do' AND sprint is EMPTY ORDER BY priority DESC"
+```
+
+#### Estimate Sprint Capacity
+```bash
+# List current sprint issues with story points (if configured)
+jira issue list --jql "sprint in openSprints()" --plain
+```
+
+### Sprint Monitoring
+
+#### Sprint Progress by Status
+```bash
+jira issue list --jql "sprint in openSprints()" --columns STATUS,COUNT --plain | \
+  sort | uniq -c
+```
+
+#### Sprint Blockers
+```bash
+jira issue list --jql "sprint in openSprints() AND status = Blocked ORDER BY priority DESC"
+```
+
+#### Incomplete Sprint Items
+```bash
+jira issue list --jql "sprint in openSprints() AND status != Done"
+```
+
+#### Completed This Sprint
+```bash
+jira issue list --jql "sprint in openSprints() AND status = Done ORDER BY resolved DESC"
+```
+
+### Sprint Velocity
+
+#### Issues Completed in Sprint
+```bash
+jira issue list --jql "sprint in openSprints() AND status = Done" --plain | wc -l
+```
+
+#### Issues Completed Last Sprint
+```bash
+jira issue list --jql "sprint in closedSprints() ORDER BY sprint DESC" --plain | head -20 | wc -l
+```
+
+## Examples
+
+### Example 1: View Current Sprint
+**User**: "What's in the current sprint?"
+
+**Action**:
+```bash
+# Get current sprint info
+jira sprint list --current
+
+# Get issues in current sprint
+jira issue list --jql "sprint in openSprints() ORDER BY status, priority DESC"
+```
+
+**Presentation**:
+- Sprint name and dates
+- Total issues
+- Breakdown by status (To Do, In Progress, Done)
+- Highlight blockers
+- Show high priority items
+
+### Example 2: Sprint Planning
+**User**: "Help me plan the next sprint"
+
+**Actions**:
+1. View future sprint:
+```bash
+jira sprint list --next
+```
+
+2. Find high priority unassigned items:
+```bash
+jira issue list --jql "priority IN (Critical, High) AND status = 'To Do' AND sprint is EMPTY AND assignee = currentUser() ORDER BY priority DESC" --limit 20
+```
+
+3. Show candidate issues for sprint
+
+**Follow-up**: "Would you like me to add any of these to the sprint?"
+
+### Example 3: Add Issues to Sprint
+**User**: "Add SRVKP-1234 and SRVKP-5678 to the current sprint"
+
+**Actions**:
+```bash
+# Get current sprint ID
+SPRINT_ID=$(jira sprint list --current --plain | awk '{print $1}' | head -1)
+
+# Add issues
+jira sprint add "$SPRINT_ID" SRVKP-1234
+jira sprint add "$SPRINT_ID" SRVKP-5678
+
+# Verify
+jira issue view SRVKP-1234 --plain | grep -i sprint
+jira issue view SRVKP-5678 --plain | grep -i sprint
+```
+
+**Response**: "Added SRVKP-1234 and SRVKP-5678 to sprint [NAME]"
+
+### Example 4: Sprint Standup
+**User**: "What's my sprint progress?"
+
+**Actions**:
+```bash
+# My sprint items by status
+jira issue list --jql "sprint in openSprints() AND assignee = currentUser() ORDER BY status, priority DESC"
+```
+
+**Presentation**:
+- Done: X issues
+- In Progress: Y issues
+- To Do: Z issues
+- Blocked: W issues (if any)
+
+### Example 5: Sprint Cleanup
+**User**: "Move incomplete items to next sprint"
+
+**Actions**:
+1. Get current sprint ID:
+```bash
+CURRENT=$(jira sprint list --current --plain | awk '{print $1}' | head -1)
+```
+
+2. Get next sprint ID:
+```bash
+NEXT=$(jira sprint list --next --plain | awk '{print $1}' | head -1)
+```
+
+3. Find incomplete items:
+```bash
+jira issue list --jql "sprint = $CURRENT AND status != Done" --plain
+```
+
+4. Move to next sprint:
+```bash
+jira issue list --jql "sprint = $CURRENT AND status != Done" --plain | \
+while read key rest; do
+  jira sprint remove "$CURRENT" "$key"
+  jira sprint add "$NEXT" "$key"
+  echo "Moved $key to next sprint"
+done
+```
+
+### Example 6: Sprint Retrospective Data
+**User**: "Show me sprint statistics for the retrospective"
+
+**Actions**:
+```bash
+# Get last closed sprint
+SPRINT_ID=$(jira sprint list --prev --plain | head -1 | awk '{print $1}')
+
+# Total issues
+TOTAL=$(jira issue list --jql "sprint = $SPRINT_ID" --plain | wc -l)
+
+# Completed
+DONE=$(jira issue list --jql "sprint = $SPRINT_ID AND status = Done" --plain | wc -l)
+
+# Incomplete
+INCOMPLETE=$(jira issue list --jql "sprint = $SPRINT_ID AND status != Done" --plain | wc -l)
+
+# By type
+echo "Bugs: $(jira issue list --jql "sprint = $SPRINT_ID AND type = Bug" --plain | wc -l)"
+echo "Tasks: $(jira issue list --jql "sprint = $SPRINT_ID AND type = Task" --plain | wc -l)"
+echo "Stories: $(jira issue list --jql "sprint = $SPRINT_ID AND type = Story" --plain | wc -l)"
+```
+
+**Presentation**:
+- Sprint name and dates
+- Completion rate (Done/Total)
+- Issues by type
+- Average time to complete
+- Blockers encountered
+
+## Sprint Planning Workflow
+
+### 1. Review Previous Sprint
+```bash
+# Last sprint stats
+jira sprint list --prev
+
+# What was completed
+jira issue list --jql "sprint in closedSprints() ORDER BY sprint DESC" --limit 20
+
+# What was carried over
+jira issue list --jql "sprint in closedSprints() AND status != Done ORDER BY sprint DESC"
+```
+
+### 2. Identify Capacity
+- Team size
+- Available days
+- Planned time off
+- Known commitments
+
+### 3. Prioritize Backlog
+```bash
+# High priority items
+jira issue list --jql "priority IN (Critical, High) AND status = 'To Do' AND sprint is EMPTY ORDER BY priority DESC, created ASC"
+
+# Customer reported issues
+jira issue list --jql "labels = customer-reported AND status = 'To Do' AND sprint is EMPTY ORDER BY priority DESC"
+
+# Technical debt
+jira issue list --jql "labels = tech-debt AND status = 'To Do' AND sprint is EMPTY"
+```
+
+### 4. Add to Sprint
+```bash
+# Get next/current sprint ID
+SPRINT_ID=$(jira sprint list --current --plain | awk '{print $1}' | head -1)
+
+# Add selected issues
+jira sprint add "$SPRINT_ID" ISSUE-1 ISSUE-2 ISSUE-3
+```
+
+### 5. Balance Sprint
+```bash
+# Review sprint composition
+jira issue list --jql "sprint in openSprints()" --columns TYPE,PRIORITY,SUMMARY
+
+# Check for:
+- Mix of bugs and features
+- Range of priorities
+- Team member distribution
+- Dependencies
+```
+
+## Sprint Monitoring
+
+### Daily
+
+#### Daily Standup Data
+```bash
+# Team sprint progress
+jira issue list --jql "sprint in openSprints() ORDER BY status, assignee"
+
+# Blockers
+jira issue list --jql "sprint in openSprints() AND status = Blocked"
+
+# Recently completed
+jira issue list --jql "sprint in openSprints() AND status changed to Done DURING (-1d, now())"
+```
+
+#### Burndown Tracking
+```bash
+# Remaining items
+jira issue list --jql "sprint in openSprints() AND status != Done" --plain | wc -l
+
+# Ideal vs actual (manual calculation based on sprint duration)
+```
+
+### Mid-Sprint
+
+#### Health Check
+```bash
+# On track items
+jira issue list --jql "sprint in openSprints() AND status IN ('In Progress', 'Code Review', 'QE Review')"
+
+# At risk (still To Do with less than 3 days left)
+jira issue list --jql "sprint in openSprints() AND status = 'To Do'"
+
+# Completed so far
+jira issue list --jql "sprint in openSprints() AND status = Done" --plain | wc -l
+```
+
+### End of Sprint
+
+#### Sprint Completion
+```bash
+# What's done
+jira issue list --jql "sprint in openSprints() AND status = Done"
+
+# What's not done
+jira issue list --jql "sprint in openSprints() AND status != Done"
+
+# Carry over to next sprint
+# (see Example 5 above)
+```
+
+## Integration Patterns
+
+### With TODOs Skill
+
+Create sprint TODOs in org-mode:
+```bash
+# Get sprint issues
+jira issue list --jql "sprint in openSprints() AND assignee = currentUser()" --plain
+
+# Create TODOs in org file for each issue
+# (Use TODOs skill to create entries)
+```
+
+### With Notes Skill
+
+Sprint planning note:
+```org
+* Sprint Planning - [Sprint Name]
+
+** Sprint Goals
+- Goal 1
+- Goal 2
+
+** Committed Issues
+- [ ] SRVKP-1234: Issue summary
+- [ ] SRVKP-5678: Issue summary
+
+** Capacity
+- Team size: X
+- Days available: Y
+- Planned velocity: Z points
+
+** Risks
+- Risk 1
+- Risk 2
+```
+
+Sprint retrospective note:
+```org
+* Sprint Retrospective - [Sprint Name]
+
+** What Went Well
+- Item 1
+- Item 2
+
+** What Could Be Improved
+- Item 1
+- Item 2
+
+** Action Items
+- [ ] Action 1 - SRVKP-XXXX
+- [ ] Action 2 - SRVKP-YYYY
+
+** Metrics
+- Planned: X issues
+- Completed: Y issues
+- Completion rate: Z%
+```
+
+## Best Practices
+
+### 1. Sprint Planning
+- Plan realistic capacity
+- Include mix of types (bugs, features, tech debt)
+- Account for dependencies
+- Leave buffer for urgent items
+- Balance across team members
+
+### 2. During Sprint
+- Daily standup updates
+- Move items through workflow
+- Flag blockers immediately
+- Add unplanned work explicitly
+- Update status regularly
+
+### 3. Sprint Review
+- Demo completed work
+- Accept/reject stories
+- Document learnings
+- Update velocity data
+
+### 4. Sprint Retrospective
+- Celebrate wins
+- Identify improvements
+- Create action items
+- Track action item completion
+
+### 5. Continuous Improvement
+- Track velocity trends
+- Monitor completion rates
+- Identify recurring blockers
+- Adjust planning based on data
+
+## Common Patterns
+
+### Sprint Handoff
+When transitioning sprints:
+1. Close current sprint
+2. Move incomplete items to backlog or next sprint
+3. Create next sprint
+4. Plan next sprint content
+5. Start new sprint
+
+### Emergency Additions
+When urgent work arises:
+1. Assess impact on sprint goals
+2. Remove equal capacity if needed
+3. Add to sprint
+4. Document in retrospective
+
+### Scope Creep Prevention
+- Clear sprint goals
+- Formal change process
+- Track unplanned work
+- Discuss in retrospective
+
+## Tips
+
+- **Use sprint goals**: Clear objectives for each sprint
+- **Track velocity**: Historical data for planning
+- **Visualize progress**: Charts and graphs
+- **Regular updates**: Keep sprint board current
+- **Team collaboration**: Involve whole team in planning
+- **Protect sprint**: Minimize mid-sprint changes
+- **Retrospect**: Learn from each sprint
+- **Celebrate**: Acknowledge completed work
+
+## Troubleshooting
+
+### Can't Find Sprint
+- Check board name
+- Verify sprint state (active/future/closed)
+- Use web UI to confirm sprint exists
+
+### Issues Not Showing in Sprint
+- Verify sprint assignment
+- Check project/board configuration
+- Refresh board in web UI
+
+### Can't Add Issues to Sprint
+- Verify permissions
+- Check issue state (resolved issues can't be added)
+- Ensure sprint is active or future
+
+## Follow-up Actions
+
+After sprint operations:
+- **Update team**: Notify of sprint changes
+- **Create notes**: Document planning decisions
+- **Update TODOs**: Sync personal task list
+- **Review dependencies**: Check linked issues
+- **Plan ceremonies**: Schedule sprint events
+
+## Related Commands
+
+```bash
+# Board operations
+jira board list
+
+# Issue operations
+jira issue list --jql "sprint = SPRINT-ID"
+jira issue edit ISSUE-KEY --sprint SPRINT-ID
+
+# Sprint metadata
+jira sprint list --state active
+jira sprint list --state future
+jira sprint list --state closed
+```
+
+## Integration with Other Skills
+
+- **TODOs**: Create sprint tasks in org-mode
+- **Notes**: Sprint planning and retrospective notes
+- **Calendar**: Sprint timeline and ceremonies
+- **Email**: Sprint summaries to stakeholders
dots/.config/claude/skills/Jira/workflows/Transition.md
@@ -0,0 +1,309 @@
+# Transition Jira Issue Through Workflow
+
+Move issues through workflow states (To Do → In Progress → Done, etc.).
+
+## When to Use
+
+- User wants to change issue status
+- Moving issue to next workflow step
+- Starting or completing work
+- Marking issues as blocked or resolved
+
+## Steps
+
+1. **Identify the issue** to transition
+2. **Determine target state** (e.g., In Progress, Done)
+3. **Check available transitions** if unsure
+4. **Execute transition** command
+5. **Confirm success** and offer follow-up
+
+## Commands
+
+### Move to State
+```bash
+jira issue move ISSUE-KEY "In Progress"
+```
+
+### List Available Transitions
+```bash
+jira issue transitions ISSUE-KEY
+```
+
+### Interactive Transition
+```bash
+jira issue move ISSUE-KEY
+```
+Shows menu of available transitions
+
+## Common Workflow States
+
+Red Hat Jira typical workflow:
+- **To Do** - Not started
+- **In Progress** - Actively working
+- **Code Review** - Implementation done, awaiting review
+- **QE Review** - Code reviewed, awaiting QA
+- **Blocked** - Waiting on external dependency
+- **Done** - Completed and verified
+
+## Common Transitions
+
+### Start Work
+```bash
+jira issue move ISSUE-KEY "In Progress"
+```
+
+### Submit for Review
+```bash
+jira issue move ISSUE-KEY "Code Review"
+```
+
+### Pass to QA
+```bash
+jira issue move ISSUE-KEY "QE Review"
+```
+
+### Mark Complete
+```bash
+jira issue move ISSUE-KEY "Done"
+```
+
+### Mark Blocked
+```bash
+jira issue move ISSUE-KEY "Blocked"
+```
+
+### Reopen
+```bash
+jira issue move ISSUE-KEY "To Do"
+```
+
+## Workflow Patterns
+
+### Standard Flow
+```
+To Do → In Progress → Code Review → QE Review → Done
+```
+
+### With Blocking
+```
+Any State → Blocked → [Previous State]
+```
+
+### Reopening
+```
+Done → To Do (or In Progress)
+```
+
+## Examples
+
+### Example 1: Start Working
+**User**: "Start work on SRVKP-1234"
+
+**Actions**:
+1. Transition to In Progress:
+```bash
+jira issue move SRVKP-1234 "In Progress"
+```
+
+2. Optionally assign to yourself:
+```bash
+jira issue assign SRVKP-1234 $(jira me)
+```
+
+3. Optionally add comment:
+```bash
+jira issue comment add SRVKP-1234 "Starting work on this issue"
+```
+
+**Response**: "Moved SRVKP-1234 to In Progress and assigned to you."
+
+### Example 2: Submit for Review
+**User**: "SRVKP-7327 is ready for review"
+
+**Actions**:
+```bash
+jira issue move SRVKP-7327 "Code Review"
+jira issue comment add SRVKP-7327 "Implementation complete. PR: https://github.com/org/repo/pull/123"
+```
+
+### Example 3: Mark as Blocked
+**User**: "SRVKP-5678 is blocked by another issue"
+
+**Actions**:
+```bash
+jira issue move SRVKP-5678 "Blocked"
+jira issue comment add SRVKP-5678 "Blocked by SRVKP-9999. Cannot proceed until that's resolved."
+```
+
+### Example 4: Complete Work
+**User**: "Mark SRVKP-1234 as done"
+
+**Actions**:
+```bash
+jira issue move SRVKP-1234 "Done"
+jira issue comment add SRVKP-1234 "Completed. Tested and verified in production."
+```
+
+### Example 5: Check Available Transitions
+**User**: "What can I do with SRVKP-1234?"
+
+**Action**:
+```bash
+jira issue transitions SRVKP-1234
+```
+
+Shows available transitions for the issue's current state.
+
+## Bulk Transitions
+
+### Move Multiple Issues
+```bash
+for issue in SRVKP-1 SRVKP-2 SRVKP-3; do
+  jira issue move "$issue" "In Progress"
+done
+```
+
+### Move Based on Criteria
+```bash
+# Start all my To Do tasks
+jira issue list --jql "assignee = currentUser() AND status = 'To Do'" --plain | \
+while read key rest; do
+  jira issue move "$key" "In Progress"
+  jira issue comment add "$key" "Starting work"
+done
+```
+
+### Complete Sprint Items
+```bash
+# Mark current sprint tasks as done
+jira issue list --jql "sprint in openSprints() AND assignee = currentUser() AND status = 'QE Review'" --plain | \
+while read key rest; do
+  jira issue move "$key" "Done"
+done
+```
+
+## Workflow Best Practices
+
+### 1. Assign Before Starting
+```bash
+jira issue assign ISSUE-KEY $(jira me)
+jira issue move ISSUE-KEY "In Progress"
+```
+
+### 2. Add Comments on Transition
+```bash
+jira issue move ISSUE-KEY "Code Review"
+jira issue comment add ISSUE-KEY "Ready for review. PR: [link]"
+```
+
+### 3. Document Blocks
+```bash
+jira issue move ISSUE-KEY "Blocked"
+jira issue comment add ISSUE-KEY "Blocked because: [reason]. Blocking issue: [ISSUE-KEY]"
+```
+
+### 4. Log Work on Completion
+```bash
+jira issue move ISSUE-KEY "Done"
+jira worklog add ISSUE-KEY "4h" "Implemented feature X and tests"
+```
+
+### 5. Update Related Issues
+```bash
+# Complete task and update epic
+jira issue move SRVKP-1234 "Done"
+jira issue comment add SRVKP-1000 "Subtask SRVKP-1234 completed"
+```
+
+## Common Transition Scenarios
+
+### Scenario 1: Taking Over Work
+```bash
+# Assign and start
+jira issue assign ISSUE-KEY $(jira me)
+jira issue move ISSUE-KEY "In Progress"
+jira issue comment add ISSUE-KEY "Taking over this work"
+```
+
+### Scenario 2: Handing Off
+```bash
+# Move to review and notify
+jira issue move ISSUE-KEY "Code Review"
+jira issue comment add ISSUE-KEY "[~reviewer] Ready for your review"
+```
+
+### Scenario 3: Unblocking
+```bash
+# Move from blocked back to in progress
+jira issue move ISSUE-KEY "In Progress"
+jira issue comment add ISSUE-KEY "Blocker resolved, resuming work"
+```
+
+### Scenario 4: Closing Duplicate
+```bash
+# Link to original and close
+jira issue link ISSUE-KEY ORIGINAL-KEY "duplicates"
+jira issue move ISSUE-KEY "Done"
+jira issue comment add ISSUE-KEY "Duplicate of [ORIGINAL-KEY]"
+```
+
+## Validation Checks
+
+Before transitioning, consider:
+- **Assignee**: Is it assigned to the right person?
+- **Sprint**: Is it in a sprint if needed?
+- **Linked issues**: Are dependencies resolved?
+- **Required fields**: Are all mandatory fields filled?
+- **Acceptance criteria**: Are they met (for Done)?
+
+## State-Specific Actions
+
+### When Moving to "In Progress"
+- Assign to yourself
+- Add comment about approach
+- Update story points if needed
+- Link to related work
+
+### When Moving to "Code Review"
+- Add PR link in comment
+- Tag reviewers
+- Ensure tests pass
+- Update documentation
+
+### When Moving to "Done"
+- Verify acceptance criteria
+- Log work time
+- Update fix version
+- Add release notes if needed
+
+### When Moving to "Blocked"
+- Document blocker clearly
+- Link blocking issue
+- Set target resolution date
+- Notify stakeholders
+
+## Follow-up Actions
+
+After transition:
+- **Update TODO**: Sync with org-mode TODOs
+- **Notify team**: If affects others
+- **Update notes**: Document in denote notes
+- **Check dependencies**: Update linked issues
+- **Plan next**: Identify next task
+
+## Tips
+
+- **Use autocomplete**: Type first letters of state
+- **Check transitions**: Use `transitions` command if unsure
+- **Add context**: Always comment on major transitions
+- **Be consistent**: Follow team conventions
+- **Update promptly**: Don't let states go stale
+- **Consider dependencies**: Check linked issues
+- **Track time**: Log work on meaningful transitions
+
+## Integration
+
+- **TODOs Skill**: Update org-mode TODO states
+- **Notes Skill**: Document transition reasoning
+- **Git Skill**: Reference in commits
+- **Email Skill**: Notify stakeholders
dots/.config/claude/skills/Jira/workflows/Update.md
@@ -0,0 +1,248 @@
+# Update Jira Issue
+
+Update issue fields like assignee, priority, labels, or other metadata.
+
+## When to Use
+
+- User wants to change issue assignee
+- Need to update priority or labels
+- Changing issue metadata without workflow transition
+- Bulk updating issue fields
+
+## Steps
+
+1. **Identify the issue** to update
+2. **Determine which field(s)** to modify
+3. **Execute update command** with new values
+4. **Confirm the change**
+5. **Offer additional updates** if needed
+
+## Commands
+
+### Assign Issue
+```bash
+# Assign to yourself
+jira issue assign ISSUE-KEY $(jira me)
+
+# Assign to specific user
+jira issue assign ISSUE-KEY username@redhat.com
+
+# Unassign
+jira issue assign ISSUE-KEY x@
+```
+
+### Update Priority
+```bash
+jira issue edit ISSUE-KEY --priority Critical
+```
+
+### Add Labels
+```bash
+jira issue edit ISSUE-KEY --label +documentation,+release-notes
+```
+
+### Remove Labels
+```bash
+jira issue edit ISSUE-KEY --label -old-label
+```
+
+### Update Summary
+```bash
+jira issue edit ISSUE-KEY --summary "New title"
+```
+
+### Update Description
+```bash
+jira issue edit ISSUE-KEY --description "New description"
+```
+
+### Update Multiple Fields
+```bash
+jira issue edit ISSUE-KEY \
+  --priority High \
+  --assignee $(jira me) \
+  --label +urgent
+```
+
+## Assignee Operations
+
+### Assign to Me
+```bash
+jira issue assign ISSUE-KEY $(jira me)
+```
+
+### Assign to Teammate
+```bash
+jira issue assign ISSUE-KEY vdemeester@redhat.com
+```
+
+### Unassign (Assign to Unassigned)
+```bash
+jira issue assign ISSUE-KEY x@
+```
+
+### Reassign (Change Assignee)
+```bash
+jira issue assign ISSUE-KEY new-assignee@redhat.com
+```
+
+## Priority Updates
+
+Available priorities:
+- Blocker
+- Critical
+- Major
+- Minor
+- Trivial
+
+```bash
+# Increase priority
+jira issue edit ISSUE-KEY --priority Critical
+
+# Lower priority
+jira issue edit ISSUE-KEY --priority Minor
+```
+
+## Label Management
+
+### Add Labels (Keep Existing)
+```bash
+jira issue edit ISSUE-KEY --label +new-label,+another-label
+```
+
+### Remove Labels
+```bash
+jira issue edit ISSUE-KEY --label -old-label
+```
+
+### Replace All Labels
+```bash
+jira issue edit ISSUE-KEY --label bug,urgent,customer-reported
+```
+
+### Common Labels
+- `+documentation` - Needs docs
+- `+release-notes-pending` - Needs release notes
+- `+customer-reported` - From customer
+- `+upstream` - Upstream issue
+- `+test-req` - Needs tests
+- `+security` - Security related
+
+## Component Updates
+
+```bash
+jira issue edit ISSUE-KEY --component "Tekton Pipelines"
+```
+
+## Fix Version / Affects Version
+
+```bash
+# Set fix version
+jira issue edit ISSUE-KEY --fix-version 1.15.0
+
+# Set affects version
+jira issue edit ISSUE-KEY --affects-version 1.14.0
+```
+
+## Examples
+
+### Example 1: Take Ownership
+**User**: "Assign SRVKP-1234 to me"
+
+**Action**:
+```bash
+jira issue assign SRVKP-1234 $(jira me)
+```
+
+**Response**: "Assigned SRVKP-1234 to you. Would you like to move it to In Progress?"
+
+### Example 2: Escalate Priority
+**User**: "Mark SRVKP-7327 as critical"
+
+**Action**:
+```bash
+jira issue edit SRVKP-7327 --priority Critical
+```
+
+**Response**: "Updated priority to Critical. Should I add the 'urgent' label?"
+
+### Example 3: Tag for Documentation
+**User**: "Add documentation label to SRVKP-1234"
+
+**Action**:
+```bash
+jira issue edit SRVKP-1234 --label +documentation,+docs-pending
+```
+
+### Example 4: Bulk Update
+**User**: "Assign all high priority bugs to me"
+
+**Action**:
+```bash
+# Get list of issues
+jira issue list -t Bug -p High -a x@ --plain | while read key rest; do
+  jira issue assign "$key" $(jira me)
+done
+```
+
+## Field Reference
+
+Common editable fields:
+- `--summary`: Issue title
+- `--description`: Issue description
+- `--priority`: Priority level
+- `--label`: Labels (use +/- for add/remove)
+- `--component`: Component
+- `--fix-version`: Fix version
+- `--affects-version`: Affects version
+- `--assignee`: Assignee (via separate command)
+
+## Tips
+
+- **Use $(jira me)**: Always works for current user
+- **Preview before bulk**: Test on one issue first
+- **Add labels incrementally**: Use +label to preserve existing
+- **Document reason**: Add comment explaining major changes
+- **Check permissions**: Some fields may be restricted
+- **Use --web**: Open in browser for complex edits
+
+## Bulk Operations
+
+### Assign Multiple Issues
+```bash
+for issue in SRVKP-1 SRVKP-2 SRVKP-3; do
+  jira issue assign "$issue" $(jira me)
+done
+```
+
+### Add Label to Multiple
+```bash
+jira issue list --jql "project = SRVKP AND status = Done AND fixVersion = 1.15.0" --plain | \
+while read key rest; do
+  jira issue edit "$key" --label +released
+done
+```
+
+### Update Priority Based on Criteria
+```bash
+# Escalate old blocked issues
+jira issue list --jql "status = Blocked AND updated <= -7d" --plain | \
+while read key rest; do
+  jira issue edit "$key" --priority High
+done
+```
+
+## Follow-up Actions
+
+After updating:
+- **Add comment**: Explain the change
+- **Notify stakeholders**: If reassigning or escalating
+- **Update related issues**: Sync parent/child issues
+- **Check workflow**: Ensure status still makes sense
+- **Document in notes**: Track important changes
+
+## Integration
+
+- **TODOs Skill**: Update corresponding TODOs
+- **Notes Skill**: Document change reasoning
+- **Email Skill**: Notify team of changes
dots/.config/claude/skills/Jira/workflows/View.md
@@ -0,0 +1,112 @@
+# View Jira Issue
+
+View detailed information about a Jira issue.
+
+## When to Use
+
+- User asks to view/show/display a specific issue
+- User mentions an issue key (e.g., SRVKP-1234)
+- Need to see issue details, comments, or status
+- Want to understand issue context before taking action
+
+## Steps
+
+1. **Identify the issue key** from the user's request or ask if not provided
+2. **Fetch issue details** using `jira issue view`
+3. **Present relevant information** clearly
+4. **Offer follow-up actions** based on context
+
+## Commands
+
+### Basic View
+```bash
+jira issue view ISSUE-KEY
+```
+
+### View with Comments
+```bash
+jira issue view ISSUE-KEY --comments 10
+```
+
+### Plain Text View (for processing)
+```bash
+jira issue view ISSUE-KEY --plain
+```
+
+### View with Full Details
+```bash
+jira issue view ISSUE-KEY --no-truncate
+```
+
+## Information Displayed
+
+Standard issue view includes:
+- **Issue key and summary**: The identifier and title
+- **Type and priority**: Bug/Task/Story and importance level
+- **Status**: Current workflow state
+- **Assignee**: Who's working on it
+- **Reporter**: Who created it
+- **Created/Updated dates**: Timeline information
+- **Description**: Full issue description
+- **Labels and components**: Categorization
+- **Comments**: Recent discussion (use --comments for more)
+- **Links**: Related issues, epics, sprints
+
+## Follow-up Actions
+
+After viewing an issue, ask the user if they want to:
+- **Update status**: Move to different workflow state
+- **Add comment**: Contribute to discussion
+- **Assign**: Change assignee
+- **Create note**: Link to org-mode note for documentation
+- **Create TODO**: Add to personal task list
+- **View related issues**: Check linked issues or epic
+
+## Examples
+
+### Example 1: View Specific Issue
+**User**: "Show me SRVKP-7327"
+
+**Action**:
+```bash
+jira issue view SRVKP-7327
+```
+
+**Follow-up**: "Would you like to add a comment, update the status, or create a note about this issue?"
+
+### Example 2: View with Context
+**User**: "What's the status of the affinity assistant bug?"
+
+**Action**:
+1. Search for issue if key not known: `jira issue list --jql "text ~ 'affinity assistant' AND type = Bug"`
+2. View the issue: `jira issue view SRVKP-7327`
+3. Highlight the current status and key information
+
+### Example 3: Quick Summary
+**User**: "Give me a quick summary of SRVKP-1234"
+
+**Action**:
+```bash
+jira issue view SRVKP-1234 --plain
+```
+Then extract and present:
+- Current status
+- Assignee
+- Priority
+- Brief description
+- Last update date
+
+## Tips
+
+- **Use --plain** when you need to extract specific fields
+- **Check comments** for recent updates and discussion
+- **Look at labels** to understand categorization
+- **Note the assignee** to know who to contact
+- **Check linked issues** for related work
+- **Review sprint/epic** to understand broader context
+
+## Integration with Other Skills
+
+- **Notes**: Create a denote note with `[[https://issues.redhat.com/browse/ISSUE-KEY][ISSUE-KEY]]` link
+- **TODOs**: Add a TODO if action is needed
+- **Email**: Draft email to assignee if needed
dots/.config/claude/skills/Jira/INTEGRATION.md
@@ -0,0 +1,545 @@
+# Jira Skill Integration Guide
+
+Deep integration patterns between Jira and your existing workflow tools.
+
+## Integration Tools
+
+### 1. jira-to-todo
+Convert Jira issues to org-mode TODOs
+
+**Features**:
+- Single or multiple issue conversion
+- JQL query support
+- Automatic priority mapping (Jira → Org)
+- Automatic state mapping (Jira status → TODO state)
+- Add to inbox.org or output to file
+- Preserves Jira metadata in properties
+
+**Usage**:
+```bash
+# Convert single issue
+jira-to-todo SRVKP-1234
+
+# Convert my sprint issues
+jira-to-todo --jql "sprint in openSprints() AND assignee = currentUser()"
+
+# Add to inbox for refiling
+jira-to-todo --jql "..." --add
+
+# Save to file
+jira-to-todo SRVKP-1234 --output ~/notes/issue-todo.org
+```
+
+**Priority Mapping**:
+- Blocker/Critical → [#1]
+- Major/High → [#2]
+- Medium → [#3]
+- Minor → [#4]
+- Trivial → [#5]
+
+**State Mapping**:
+- To Do → TODO
+- In Progress/Code Review/QE Review → STRT
+- Done → DONE
+- (Others) → TODO
+
+### 2. jira-sprint-summary
+Generate sprint summaries for standups, retrospectives, and planning
+
+**Features**:
+- Current/previous/next sprint selection
+- Multiple report types (standup, retro, planning)
+- Multiple output formats (text, org, md)
+- Automatic metrics calculation
+- Issue breakdowns by status and type
+
+**Usage**:
+```bash
+# Daily standup notes
+jira-sprint-summary --standup
+
+# Retrospective in org format
+jira-sprint-summary --prev --retro --format org
+
+# Save planning notes
+jira-sprint-summary --next --planning --output ~/notes/sprint-plan.org
+
+# Current sprint summary
+jira-sprint-summary --current
+```
+
+### 3. jira-search
+Predefined search patterns (already covered in README)
+
+### 4. jira-to-org
+Convert issues to denote note format (already covered)
+
+## Integration Patterns
+
+### Pattern 1: Sprint → TODOs Workflow
+
+**Scenario**: New sprint starts, create TODOs for your sprint commitments
+
+```bash
+# 1. Get current sprint issues
+jira-sprint-summary --current
+
+# 2. Convert sprint issues to TODOs
+jira-to-todo --jql "sprint in openSprints() AND assignee = currentUser()" \
+  --add --section Work
+
+# 3. Review in Emacs and refile to appropriate sections
+emacs ~/desktop/org/inbox.org
+```
+
+**Integration Points**:
+- Jira sprint → org-mode TODOs
+- Automatic priority/state mapping
+- Preserves Jira links in properties
+- Daily sync capability
+
+### Pattern 2: Issue → Note → TODO Workflow
+
+**Scenario**: Complex issue requiring investigation and tracking
+
+```bash
+# 1. View issue
+jira issue view SRVKP-7327
+
+# 2. Create investigation note
+jira-to-org SRVKP-7327 --template investigation \
+  --output ~/desktop/org/notes/$(date +%Y%m%dT%H%M%S)--srvkp-7327-affinity-assistant__jira_tekton_bug.org
+
+# 3. Create TODO
+jira-to-todo SRVKP-7327 --add --section Work
+
+# 4. Start work
+jira issue assign SRVKP-7327 $(jira me)
+jira issue move SRVKP-7327 "In Progress"
+
+# 5. Work in note, update Jira with findings
+# (In Emacs, edit note)
+
+# 6. Update Jira
+jira issue comment add SRVKP-7327 "$(cat <<EOF
+Root cause identified: [details from note]
+
+Investigation notes: ~/desktop/org/notes/[note-file]
+EOF
+)"
+
+# 7. Complete
+jira issue move SRVKP-7327 "Code Review"
+# Update TODO state in org-mode
+```
+
+**Integration Points**:
+- Jira → denote note with structure
+- Jira → org TODO
+- Note ↔ Jira bidirectional references
+- Manual sync of states
+
+### Pattern 3: Daily Standup Workflow
+
+**Scenario**: Prepare for daily standup
+
+```bash
+# 1. Generate standup notes
+jira-sprint-summary --standup --format org \
+  --output ~/desktop/org/notes/$(date +%Y%m%dT%H%M%S)--daily-standup__standup_work.org
+
+# 2. Review in Emacs
+emacs ~/desktop/org/notes/*standup*.org
+
+# 3. During standup, reference the note
+
+# 4. After standup, update Jira states based on discussion
+# (Use Transition workflow)
+```
+
+**Integration Points**:
+- Jira → standup note
+- Automatic yesterday/today/blockers extraction
+- Sprint progress visibility
+- Action item tracking
+
+### Pattern 4: Sprint Planning Workflow
+
+**Scenario**: Plan next sprint
+
+```bash
+# 1. Review previous sprint
+jira-sprint-summary --prev --retro --format org \
+  --output ~/desktop/org/notes/$(date +%Y%m%dT%H%M%S)--sprint-retro__sprint_tekton.org
+
+# 2. Generate planning notes
+jira-sprint-summary --next --planning --format org \
+  --output ~/desktop/org/notes/$(date +%Y%m%dT%H%M%S)--sprint-planning__sprint_tekton.org
+
+# 3. Add high priority items to sprint
+# (View planning notes, then add to sprint)
+SPRINT_ID=$(jira sprint list --next --plain | head -1 | awk '{print $1}')
+jira sprint add "$SPRINT_ID" SRVKP-1234 SRVKP-5678
+
+# 4. Create TODOs for sprint commitments
+jira-to-todo --jql "sprint = $SPRINT_ID AND assignee = currentUser()" --add
+
+# 5. In Emacs, organize TODOs and add to calendar
+```
+
+**Integration Points**:
+- Previous sprint retrospective
+- Planning notes generation
+- High priority backlog visibility
+- Sprint → TODOs conversion
+- Calendar integration (manual)
+
+### Pattern 5: Bug Triage Workflow
+
+**Scenario**: Weekly bug triage session
+
+```bash
+# 1. Find unassigned bugs
+jira-search team-bugs --limit 20 > /tmp/bugs.txt
+
+# 2. Review and assign
+cat /tmp/bugs.txt
+# For each bug you take:
+jira issue assign SRVKP-XXXX $(jira me)
+jira-to-todo SRVKP-XXXX --add --section Work
+
+# 3. Create triage notes
+cat > ~/desktop/org/notes/$(date +%Y%m%dT%H%M%S)--bug-triage__triage_tekton.org <<EOF
+* Bug Triage - $(date +%Y-%m-%d)
+
+** Assigned to Me
+$(jira issue list --jql "type = Bug AND assignee = currentUser() AND created >= -7d" --plain | sed 's/^/- /')
+
+** Deferred
+- [List of bugs deferred with reason]
+
+** Action Items
+- [ ] Follow up on critical bugs
+- [ ] Update priorities
+EOF
+```
+
+**Integration Points**:
+- Jira search → file output
+- Assignment + TODO creation
+- Triage session notes
+- Action item tracking
+
+### Pattern 6: Weekly Review Workflow
+
+**Scenario**: End of week review
+
+```bash
+# 1. What did I accomplish this week?
+jira-search my-week --plain > ~/weekly-work.txt
+
+# 2. Sprint progress
+jira-sprint-summary --current --format org \
+  --output ~/desktop/org/notes/$(date +%Y%m%dT%H%M%S)--weekly-review__review_work.org
+
+# 3. Create weekly review note
+cat >> ~/desktop/org/notes/*weekly-review*.org <<EOF
+
+** Completed This Week
+$(jira issue list --jql "assignee = currentUser() AND status changed to Done DURING (startOfWeek(), now())" --plain | sed 's/^/- DONE /')
+
+** In Progress
+$(jira-search my-progress --plain | sed 's/^/- STRT /')
+
+** Next Week Focus
+- [ ]
+- [ ]
+
+** Issues Encountered
+-
+
+** Notes
+-
+EOF
+
+# 4. Review in Emacs and plan next week
+```
+
+**Integration Points**:
+- Weekly accomplishments from Jira
+- Sprint summary
+- Weekly review note
+- Planning for next week
+
+## Automation Ideas
+
+### 1. Auto-sync TODO States
+
+**Cron job** to sync Jira → org-mode:
+```bash
+#!/bin/bash
+# ~/bin/jira-todo-sync
+
+# Get all Jira issues mentioned in org files
+grep -rho "SRVKP-[0-9]*" ~/desktop/org/*.org | sort -u | while read issue; do
+  # Get Jira status
+  status=$(jira issue view "$issue" --plain 2>/dev/null | grep -i "status" | awk '{print $2}')
+
+  # Map to org state
+  case "$status" in
+    Done) org_state="DONE" ;;
+    "In Progress"|"Code Review") org_state="STRT" ;;
+    "To Do") org_state="TODO" ;;
+    *) org_state="" ;;
+  esac
+
+  # Update org file (requires custom org-mode function)
+  # emacsclient --eval "(update-todo-by-jira \"$issue\" \"$org_state\")"
+done
+```
+
+**Cron schedule**:
+```
+# Sync every morning at 8 AM
+0 8 * * 1-5 ~/bin/jira-todo-sync
+```
+
+### 2. Daily Standup Note Generator
+
+**Cron job** to generate daily standup notes:
+```bash
+#!/bin/bash
+# ~/bin/generate-standup
+
+NOTE_FILE=~/desktop/org/notes/$(date +%Y%m%dT%H%M%S)--daily-standup__standup_work.org
+
+jira-sprint-summary --standup --format org --output "$NOTE_FILE"
+
+# Optionally send notification
+notify-send "Standup Notes Ready" "Generated: $NOTE_FILE"
+```
+
+**Cron schedule**:
+```
+# Generate standup notes at 8:30 AM on weekdays
+30 8 * * 1-5 ~/bin/generate-standup
+```
+
+### 3. Sprint Start Automation
+
+**Script** to run at sprint start:
+```bash
+#!/bin/bash
+# ~/bin/sprint-start
+
+# Get sprint info
+SPRINT_ID=$(jira sprint list --current --plain | head -1 | awk '{print $1}')
+SPRINT_NAME=$(jira sprint list --current | head -1)
+
+# Create sprint planning note
+NOTE_FILE=~/desktop/org/notes/$(date +%Y%m%dT%H%M%S)--sprint-start-${SPRINT_ID}__sprint_tekton.org
+
+jira-sprint-summary --current --planning --format org --output "$NOTE_FILE"
+
+# Create TODOs for sprint
+jira-to-todo --jql "sprint in openSprints() AND assignee = currentUser()" --add
+
+echo "Sprint started: $SPRINT_NAME"
+echo "Planning note: $NOTE_FILE"
+echo "TODOs added to inbox.org"
+```
+
+### 4. Weekly Retrospective
+
+**Script** to run weekly:
+```bash
+#!/bin/bash
+# ~/bin/weekly-retro
+
+# Last week's work
+RETRO_FILE=~/desktop/org/notes/$(date +%Y%m%dT%H%M%S)--weekly-retro__retro_work.org
+
+cat > "$RETRO_FILE" <<EOF
+* Weekly Retrospective - $(date +%Y-%m-%d)
+
+** Completed This Week
+$(jira issue list --jql "assignee = currentUser() AND status changed to Done DURING (startOfWeek(), now())" --plain | sed 's/^/- /')
+
+** Sprint Progress
+$(jira-sprint-summary --current)
+
+** What Went Well
+
+
+** What Could Be Improved
+
+
+** Action Items for Next Week
+- [ ]
+
+** Notes
+
+EOF
+
+echo "Retrospective note created: $RETRO_FILE"
+```
+
+**Cron schedule**:
+```
+# Every Friday at 4 PM
+0 16 * * 5 ~/bin/weekly-retro
+```
+
+## Integration with Existing Skills
+
+### TODOs Skill
+
+**Bidirectional Integration**:
+```elisp
+;; In Emacs, function to fetch Jira status for TODO
+(defun my/sync-jira-todo ()
+  "Sync Jira status to current TODO"
+  (interactive)
+  (save-excursion
+    (org-back-to-heading t)
+    (when-let ((jira-key (org-entry-get nil "JIRA_KEY")))
+      (let* ((status (shell-command-to-string
+                      (format "jira issue view %s --plain | grep -i status | awk '{print $2}'" jira-key)))
+             (org-state (pcase (string-trim status)
+                          ("Done" "DONE")
+                          ((or "In Progress" "Code Review" "QE Review") "STRT")
+                          ("To Do" "TODO")
+                          (_ nil))))
+        (when org-state
+          (org-todo org-state)
+          (message "Synced %s: %s -> %s" jira-key status org-state))))))
+```
+
+### Notes Skill
+
+**Create Note with Jira Context**:
+When creating a denote note, automatically add Jira properties if issue mentioned:
+```elisp
+(defun my/denote-with-jira ()
+  "Create denote note with Jira issue context"
+  (interactive)
+  (let ((issue-key (read-string "Jira issue (optional): ")))
+    (when (and issue-key (not (string-empty-p issue-key)))
+      ;; Fetch issue details and populate note
+      (shell-command (format "jira-to-org %s" issue-key)))))
+```
+
+### Git Skill
+
+**Auto-reference in Commits**:
+```bash
+# Git prepare-commit-msg hook
+#!/bin/bash
+# .git/hooks/prepare-commit-msg
+
+# Extract branch name
+BRANCH=$(git symbolic-ref --short HEAD)
+
+# If branch contains Jira key, add to commit message
+if [[ $BRANCH =~ (SRVKP-[0-9]+) ]]; then
+  JIRA_KEY="${BASH_REMATCH[1]}"
+  # Add Jira reference if not already present
+  if ! grep -q "$JIRA_KEY" "$1"; then
+    echo "" >> "$1"
+    echo "Refs: $JIRA_KEY" >> "$1"
+  fi
+fi
+```
+
+### Email Skill
+
+**Send Sprint Summary via Email**:
+```bash
+#!/bin/bash
+# ~/bin/email-sprint-summary
+
+SUMMARY=$(jira-sprint-summary --current)
+
+# Use email skill or sendmail
+cat <<EOF | mail -s "Sprint Summary - $(date +%Y-%m-%d)" team@example.com
+$SUMMARY
+
+--
+Generated by jira-sprint-summary
+EOF
+```
+
+## Keyboard Shortcuts (Emacs)
+
+Add to your Emacs config:
+```elisp
+;; Jira integration shortcuts
+(defun my/jira-view-at-point ()
+  "View Jira issue at point"
+  (interactive)
+  (when-let ((issue-key (thing-at-point 'symbol)))
+    (when (string-match "SRVKP-[0-9]+" issue-key)
+      (shell-command (format "jira issue view %s" issue-key)))))
+
+(defun my/jira-create-todo ()
+  "Create TODO from Jira issue at point"
+  (interactive)
+  (when-let ((issue-key (thing-at-point 'symbol)))
+    (when (string-match "SRVKP-[0-9]+" issue-key)
+      (shell-command (format "jira-to-todo %s --add" issue-key))
+      (message "Created TODO for %s" issue-key))))
+
+(defun my/jira-sync-current-todo ()
+  "Sync current TODO with Jira"
+  (interactive)
+  (my/sync-jira-todo))
+
+;; Keybindings
+(global-set-key (kbd "C-c j v") 'my/jira-view-at-point)
+(global-set-key (kbd "C-c j t") 'my/jira-create-todo)
+(global-set-key (kbd "C-c j s") 'my/jira-sync-current-todo)
+```
+
+## Best Practices
+
+1. **Regular Sync**: Run jira-todo-sync daily or before standup
+2. **Note References**: Always link Jira issues in notes
+3. **Consistent Workflow**: Follow established patterns
+4. **Automation**: Use cron for regular tasks
+5. **Documentation**: Document custom integrations
+6. **Backup**: Keep notes in version control
+7. **Review**: Weekly review of integration effectiveness
+
+## Troubleshooting
+
+### TODOs Out of Sync
+Run manual sync:
+```bash
+jira-to-todo --jql "assignee = currentUser() AND status != Done" --add
+```
+
+### Missing Sprint Data
+Verify sprint exists and you have access:
+```bash
+jira sprint list --current
+jira sprint list --prev
+```
+
+### Integration Scripts Failing
+Check:
+- jira command is in PATH
+- API token is valid
+- JQL queries are correct
+- File paths exist
+- Permissions are correct
+
+## Future Enhancements
+
+1. **Real-time Sync**: Watch for Jira webhooks
+2. **Conflict Resolution**: Handle divergent states
+3. **Bulk Operations**: Batch sync multiple issues
+4. **Calendar Integration**: Add sprint events to calendar
+5. **Dashboard**: Terminal dashboard with live data
+6. **Mobile Integration**: Phone notifications for updates
+7. **AI Summaries**: LLM-generated sprint summaries
+8. **Metrics Tracking**: Historical velocity and trends
dots/.config/claude/skills/Jira/PROPOSALS.md
@@ -0,0 +1,481 @@
+# Proposed Jira Skill Enhancements
+
+Additional workflows and tools that could be added to enhance the Jira skill.
+
+## Proposed Additional Workflows
+
+### 1. Sprint Workflow
+**File**: `workflows/Sprint.md`
+**Purpose**: Manage sprints and sprint planning
+
+**Capabilities**:
+- List current/past/future sprints
+- Add/remove issues from sprints
+- View sprint burndown/progress
+- Sprint planning assistance
+- Close/complete sprints
+
+**Commands**:
+```bash
+jira sprint list --current
+jira sprint add SPRINT-ID ISSUE-KEY
+jira sprint remove SPRINT-ID ISSUE-KEY
+```
+
+### 2. Epic Workflow
+**File**: `workflows/Epic.md`
+**Purpose**: Manage epics and epic-level planning
+
+**Capabilities**:
+- Create epics
+- List issues in epic
+- Add/remove issues from epics
+- Track epic progress
+- View epic hierarchy
+
+**Commands**:
+```bash
+jira epic create
+jira epic list
+jira epic add EPIC-KEY ISSUE-KEY
+jira issue list --epic EPIC-KEY
+```
+
+### 3. Worklog Workflow
+**File**: `workflows/Worklog.md`
+**Purpose**: Time tracking and work logging
+
+**Capabilities**:
+- Log time spent on issues
+- View work logs
+- Generate time reports
+- Track hours per project/sprint
+
+**Commands**:
+```bash
+jira worklog add ISSUE-KEY "4h" "Description of work"
+jira worklog list ISSUE-KEY
+jira worklog report --week
+```
+
+### 4. Watch Workflow
+**File**: `workflows/Watch.md`
+**Purpose**: Manage watchers and notifications
+
+**Capabilities**:
+- Watch/unwatch issues
+- List watched issues
+- View watchers on issue
+- Manage notification preferences
+
+**Commands**:
+```bash
+jira issue watch ISSUE-KEY
+jira issue unwatch ISSUE-KEY
+jira issue list --watched
+```
+
+### 5. Link Workflow
+**File**: `workflows/Link.md`
+**Purpose**: Manage issue relationships
+
+**Capabilities**:
+- Link issues (blocks, relates to, duplicates)
+- View linked issues
+- Remove links
+- Visualize dependency chains
+
+**Commands**:
+```bash
+jira issue link ISSUE-KEY-1 ISSUE-KEY-2 "blocks"
+jira issue link ISSUE-KEY-1 ISSUE-KEY-2 "relates to"
+jira issue view ISSUE-KEY --links
+```
+
+### 6. Bulk Workflow
+**File**: `workflows/Bulk.md`
+**Purpose**: Batch operations on multiple issues
+
+**Capabilities**:
+- Bulk assign issues
+- Bulk transition states
+- Bulk add labels
+- Bulk update fields
+- Preview before executing
+
+**Commands**:
+```bash
+jira bulk assign --jql "..." $(jira me)
+jira bulk transition --jql "..." "In Progress"
+jira bulk label --jql "..." +urgent
+```
+
+### 7. Report Workflow
+**File**: `workflows/Report.md`
+**Purpose**: Generate reports and analytics
+
+**Capabilities**:
+- Weekly/monthly summaries
+- Sprint reports
+- Burndown charts (text-based)
+- Issue statistics
+- Velocity tracking
+
+**Commands**:
+```bash
+jira report weekly
+jira report sprint SPRINT-ID
+jira report stats --project SRVKP
+```
+
+### 8. Template Workflow
+**File**: `workflows/Template.md`
+**Purpose**: Manage issue templates
+
+**Capabilities**:
+- Save issue creation templates
+- List available templates
+- Create from template
+- Share templates with team
+
+**Commands**:
+```bash
+jira template save bug-template
+jira template list
+jira template create bug-template
+```
+
+### 9. Export Workflow
+**File**: `workflows/Export.md`
+**Purpose**: Export issue data
+
+**Capabilities**:
+- Export to CSV/JSON
+- Export to org-mode
+- Generate markdown reports
+- Backup issue data
+
+**Commands**:
+```bash
+jira export --jql "..." --format csv
+jira export --jql "..." --format org
+jira export --jql "..." --format json
+```
+
+### 10. Notification Workflow
+**File**: `workflows/Notification.md`
+**Purpose**: Manage notifications and mentions
+
+**Capabilities**:
+- View mentions
+- Check recent notifications
+- Mark as read
+- Filter notifications
+
+**Commands**:
+```bash
+jira notifications list
+jira notifications mentions
+jira notifications clear
+```
+
+## Proposed Additional Tools
+
+### 1. jira-stats
+**Purpose**: Generate statistics and metrics
+
+```bash
+#!/usr/bin/env bash
+# Usage: jira-stats [period]
+# Generates statistics for period: day, week, month, sprint
+
+# Features:
+- Issues created/resolved
+- Average resolution time
+- Top contributors
+- Issue type breakdown
+- Priority distribution
+```
+
+### 2. jira-sync
+**Purpose**: Sync Jira with org-mode TODOs
+
+```bash
+#!/usr/bin/env bash
+# Usage: jira-sync [--dry-run]
+
+# Features:
+- Find Jira issues in org files
+- Update TODO states based on Jira status
+- Create TODOs from assigned issues
+- Flag out-of-sync items
+```
+
+### 3. jira-template
+**Purpose**: Manage issue templates
+
+```bash
+#!/usr/bin/env bash
+# Usage: jira-template [save|load|list] [name]
+
+# Features:
+- Save current issue as template
+- Load template for new issue
+- List available templates
+- Share templates as files
+```
+
+### 4. jira-daily
+**Purpose**: Daily standup helper
+
+```bash
+#!/usr/bin/env bash
+# Usage: jira-daily [--email] [--format org|md|plain]
+
+# Features:
+- What did I do yesterday?
+- What am I doing today?
+- Any blockers?
+- Generate standup report
+- Email to team
+```
+
+### 5. jira-burndown
+**Purpose**: Text-based burndown visualization
+
+```bash
+#!/usr/bin/env bash
+# Usage: jira-burndown SPRINT-ID
+
+# Features:
+- ASCII chart of sprint progress
+- Remaining vs ideal line
+- Daily completed issues
+- Sprint velocity
+```
+
+### 6. jira-dependency
+**Purpose**: Visualize issue dependencies
+
+```bash
+#!/usr/bin/env bash
+# Usage: jira-dependency ISSUE-KEY [--depth N]
+
+# Features:
+- Show dependency tree
+- Identify blockers
+- Find circular dependencies
+- Export as dot/mermaid
+```
+
+### 7. jira-clone
+**Purpose**: Clone issue with modifications
+
+```bash
+#!/usr/bin/env bash
+# Usage: jira-clone ISSUE-KEY [options]
+
+# Features:
+- Clone issue structure
+- Modify fields during clone
+- Clone with subtasks
+- Clone across projects
+```
+
+### 8. jira-mentions
+**Purpose**: Find your mentions
+
+```bash
+#!/usr/bin/env bash
+# Usage: jira-mentions [--since 7d]
+
+# Features:
+- Find issues where you're mentioned
+- Group by status
+- Mark as read
+- Generate summary
+```
+
+### 9. jira-compare
+**Purpose**: Compare two issues or sprints
+
+```bash
+#!/usr/bin/env bash
+# Usage: jira-compare ISSUE-1 ISSUE-2
+
+# Features:
+- Side-by-side comparison
+- Field differences
+- Timeline comparison
+- Similarity score
+```
+
+### 10. jira-remind
+**Purpose**: Set reminders for issues
+
+```bash
+#!/usr/bin/env bash
+# Usage: jira-remind ISSUE-KEY DATE "message"
+
+# Features:
+- Set reminder for specific date
+- List upcoming reminders
+- Integrate with system notifications
+- Sync with org-mode SCHEDULED
+```
+
+## Integration Enhancements
+
+### 1. Deeper Org-Mode Integration
+- Automatic TODO creation from assigned issues
+- Bi-directional sync (org → Jira)
+- Org agenda views with Jira data
+- Clocking integration with worklog
+
+### 2. Git Integration
+- Auto-reference issues in commits
+- Create issues from commit messages
+- Link PRs to issues automatically
+- Generate release notes from Jira
+
+### 3. Email Integration
+- Email issue summaries
+- Create issues from email
+- Comment via email
+- Daily digest emails
+
+### 4. Calendar Integration
+- Show deadlines in calendar
+- Sprint timeline visualization
+- Meeting notes linked to issues
+
+### 5. Terminal UI (TUI)
+- Interactive issue browser
+- Keyboard-driven navigation
+- Real-time updates
+- Dashboard view
+
+## Data Analysis Tools
+
+### 1. Issue Age Analysis
+Track how long issues stay in each state
+
+### 2. Bottleneck Detection
+Identify workflow bottlenecks
+
+### 3. Velocity Tracking
+Team and personal velocity metrics
+
+### 4. Trend Analysis
+Issue creation/resolution trends
+
+### 5. Health Metrics
+Project health dashboard
+
+## Automation Ideas
+
+### 1. Auto-labeling
+Automatically label issues based on content
+
+### 2. Auto-assignment
+Assign based on component or keywords
+
+### 3. Stale Issue Cleanup
+Auto-close or escalate stale issues
+
+### 4. Duplicate Detection
+Find potential duplicates
+
+### 5. Related Issue Suggestion
+Suggest related issues when viewing
+
+## API Extensions
+
+### 1. Custom Fields
+Support for custom Jira fields
+
+### 2. Attachments
+Upload/download attachments
+
+### 3. Issue History
+View full change history
+
+### 4. Comments Threading
+Threaded comment views
+
+### 5. Advanced Permissions
+Handle complex permission schemes
+
+## UI/UX Improvements
+
+### 1. Colored Output
+Color-code priorities and statuses
+
+### 2. Table Formatting
+Better table layouts for lists
+
+### 3. Progress Bars
+Visual progress indicators
+
+### 4. Interactive Prompts
+Better interactive creation flows
+
+### 5. Auto-completion
+Shell completion for commands
+
+## Documentation
+
+### 1. Video Tutorials
+Screen recordings for workflows
+
+### 2. Cheat Sheets
+Quick reference cards
+
+### 3. Use Case Library
+Collection of real-world examples
+
+### 4. Troubleshooting Guide
+Common issues and solutions
+
+### 5. Best Practices
+Team-specific guidelines
+
+## Priority Recommendations
+
+**High Priority** (Most Useful):
+1. Sprint Workflow - Essential for sprint planning
+2. Worklog Workflow - Time tracking
+3. jira-daily Tool - Standup preparation
+4. jira-sync Tool - Org-mode sync
+5. Link Workflow - Dependency management
+
+**Medium Priority** (Nice to Have):
+1. Epic Workflow - Epic management
+2. Bulk Workflow - Batch operations
+3. Report Workflow - Analytics
+4. jira-stats Tool - Metrics
+5. Deeper Org-Mode Integration
+
+**Low Priority** (Future):
+1. TUI Application - Visual interface
+2. Advanced analytics - Trends
+3. Email integration - Notifications
+4. Automation - Auto-labeling
+5. API extensions - Custom fields
+
+## Next Steps
+
+To implement a new workflow:
+1. Choose from proposals above
+2. Create workflow markdown file
+3. Define triggers and steps
+4. Add to skill.md routing table
+5. Document in README
+6. Test with real scenarios
+
+To implement a new tool:
+1. Write bash script in tools/
+2. Make executable
+3. Document usage
+4. Add examples
+5. Integrate with workflows
dots/.config/claude/skills/Jira/README.md
@@ -0,0 +1,407 @@
+# Jira Skill for Claude Code
+
+Comprehensive Jira issue management skill for Red Hat's issues.redhat.com, integrated with your Nix configuration and org-mode workflow.
+
+## Overview
+
+This skill provides full command-line access to Jira issues through the jira-cli tool, with automatic API token injection from passage and deep integration with your existing workflow (org-mode notes, TODOs, Git).
+
+## Installation
+
+Already configured! The skill is located at:
+```
+~/.config/claude/skills/Jira/
+```
+
+The `jira` command is wrapped with your API token automatically via Nix configuration in `/home/vincent/src/home/systems/kyushu/home.nix`.
+
+## Structure
+
+```
+Jira/
+├── skill.md              # Main skill definition
+├── README.md             # This file
+├── workflows/            # Workflow guides
+│   ├── View.md           # View issue details
+│   ├── List.md           # List and filter issues
+│   ├── Create.md         # Create new issues
+│   ├── Update.md         # Update issue fields
+│   ├── Comment.md        # Add comments
+│   ├── Search.md         # Advanced JQL searches
+│   ├── LinkToNote.md     # Org-mode integration
+│   └── Transition.md     # Workflow state changes
+└── tools/                # Helper scripts
+    ├── jira-search       # Common search patterns
+    └── jira-to-org       # Convert issue to org-mode
+```
+
+## Quick Start
+
+### View an Issue
+```bash
+jira issue view SRVKP-7327
+```
+
+### List Your Issues
+```bash
+jira issue list -a $(jira me) -s ~Done
+```
+
+### Create an Issue
+```bash
+jira issue create
+```
+
+### Search with JQL
+```bash
+jira issue list --jql "project = SRVKP AND status = 'To Do' ORDER BY priority DESC"
+```
+
+## Workflows
+
+### 1. View Workflow
+**Trigger**: User mentions issue key or asks to view issue
+**Purpose**: Display detailed issue information
+**Example**: "Show me SRVKP-7327"
+
+### 2. List Workflow
+**Trigger**: "list my issues", "show tickets", etc.
+**Purpose**: Filter and display multiple issues
+**Example**: "Show my open bugs"
+
+### 3. Create Workflow
+**Trigger**: "create issue", "file bug", "new task"
+**Purpose**: Create new Jira issues
+**Example**: "Create a bug for the pod creation issue"
+
+### 4. Update Workflow
+**Trigger**: "assign to", "change priority", "add label"
+**Purpose**: Modify issue fields
+**Example**: "Assign SRVKP-1234 to me"
+
+### 5. Comment Workflow
+**Trigger**: "add comment", "comment on"
+**Purpose**: Add discussion to issues
+**Example**: "Comment that I'm working on it"
+
+### 6. Search Workflow
+**Trigger**: "search for", "find issues", complex filtering
+**Purpose**: Advanced JQL queries
+**Example**: "Find stale high priority issues"
+
+### 7. LinkToNote Workflow
+**Trigger**: "create note for", "link to note"
+**Purpose**: Integrate with org-mode denote notes
+**Example**: "Create investigation note for SRVKP-7327"
+
+### 8. Transition Workflow
+**Trigger**: "start work", "mark done", "move to"
+**Purpose**: Change workflow states
+**Example**: "Move SRVKP-1234 to In Progress"
+
+## Helper Tools
+
+### jira-search
+Predefined search patterns for common queries:
+
+```bash
+# My open issues
+jira-search my-open
+
+# My work in progress
+jira-search my-progress
+
+# Unassigned team bugs
+jira-search team-bugs
+
+# Stale issues
+jira-search stale
+
+# High priority items
+jira-search high-priority
+```
+
+Available patterns:
+- `my-open` - Your open issues
+- `my-progress` - Your in-progress work
+- `my-week` - Updated this week
+- `my-blocked` - Your blocked issues
+- `team-bugs` - Unassigned bugs
+- `team-blocked` - All blocked issues
+- `stale` - No updates in 30+ days
+- `high-priority` - Critical/High/Blocker items
+- `needs-review` - In code/QE review
+
+### jira-to-org
+Convert Jira issues to org-mode format:
+
+```bash
+# Basic conversion
+jira-to-org SRVKP-1234
+
+# Investigation template
+jira-to-org SRVKP-1234 --template investigation
+
+# Save to file
+jira-to-org SRVKP-1234 --output ~/notes/issue.org
+```
+
+Templates:
+- `basic` - Simple note structure
+- `investigation` - Bug investigation template
+- `planning` - Feature planning template
+- `discussion` - Meeting/discussion notes
+
+## Integration with Other Skills
+
+### TODOs Skill
+Create org-mode TODOs from Jira issues:
+1. View issue details
+2. Extract key information
+3. Create TODO in todos.org
+4. Link back to Jira issue
+
+### Notes Skill
+Document Jira work in denote notes:
+1. Use jira-to-org to create note structure
+2. Add JIRA property for linking
+3. Track investigation and findings
+4. Reference in Jira comments
+
+### Git Skill
+Reference issues in commits:
+```bash
+git commit -m "fix: Resolve pod creation issue
+
+Fixes SRVKP-7327"
+```
+
+### Email Skill
+Share issue summaries with team
+
+## Common Use Cases
+
+### Daily Standup Prep
+```bash
+# What did I do yesterday?
+jira-search my-week --plain
+
+# What am I doing today?
+jira-search my-progress
+```
+
+### Bug Triage
+```bash
+# Unassigned bugs by priority
+jira-search team-bugs --plain
+
+# Assign to yourself
+jira issue assign SRVKP-1234 $(jira me)
+```
+
+### Sprint Planning
+```bash
+# High priority items not in sprint
+jira issue list --jql "priority IN (Critical, High) AND sprint is EMPTY"
+
+# Add to sprint
+jira sprint add SPRINT-123 SRVKP-1234
+```
+
+### Investigation Workflow
+```bash
+# 1. View issue
+jira issue view SRVKP-7327
+
+# 2. Create investigation note
+jira-to-org SRVKP-7327 --template investigation --output ~/notes/investigation.org
+
+# 3. Start work
+jira issue assign SRVKP-7327 $(jira me)
+jira issue move SRVKP-7327 "In Progress"
+
+# 4. Add findings
+# (Edit note, add findings)
+
+# 5. Update Jira
+jira issue comment add SRVKP-7327 "Root cause identified: [details]"
+
+# 6. Complete
+jira issue move SRVKP-7327 "Code Review"
+```
+
+## Configuration
+
+### Jira Config
+Located at: `~/.config/.jira/.config.yml`
+
+Key settings:
+- **server**: https://issues.redhat.com
+- **installation**: local
+- **auth_type**: bearer
+- **project.key**: SRVKP (default)
+
+### API Token
+Managed via passage, automatically injected by Nix wrapper:
+```bash
+passage show redhat/issues/token/kyushu
+```
+
+### Wrapper Location
+`/home/vincent/src/home/systems/kyushu/home.nix`:
+```nix
+jira-wrapped = pkgs.writeShellScriptBin "jira" ''
+  export JIRA_API_TOKEN=$(${pkgs.passage}/bin/passage show redhat/issues/token/kyushu)
+  exec ${pkgs.jira-cli-go}/bin/jira "$@"
+'';
+```
+
+## Best Practices
+
+### Always Use --plain for Processing
+```bash
+jira issue view ISSUE-KEY --plain
+```
+
+### Document State Changes
+```bash
+jira issue move ISSUE-KEY "Done"
+jira issue comment add ISSUE-KEY "Completed: [details]"
+```
+
+### Link Related Work
+- Reference issue keys in commits
+- Link PRs in Jira comments
+- Connect denote notes to issues
+
+### Use Consistent Labels
+- `documentation` - Needs docs
+- `release-notes-pending` - User-facing changes
+- `customer-reported` - From customers
+- `test-req` - Needs tests
+
+### Save Common Queries
+Document frequently-used JQL queries in notes
+
+## Tips & Tricks
+
+1. **Alias common commands**:
+   ```bash
+   alias jira-mine='jira issue list -a $(jira me) -s ~Done'
+   alias jira-todo='jira issue list -a $(jira me) -s "To Do"'
+   ```
+
+2. **Combine with shell tools**:
+   ```bash
+   # Count my issues
+   jira-search my-open --plain | wc -l
+
+   # Extract issue keys
+   jira-search team-bugs --plain | awk '{print $1}'
+   ```
+
+3. **Batch operations**:
+   ```bash
+   # Add label to multiple issues
+   for issue in SRVKP-{1..5}; do
+     jira issue edit "$issue" --label +urgent
+   done
+   ```
+
+4. **Use currentUser()**:
+   Always use `$(jira me)` or `currentUser()` instead of hardcoding usernames
+
+5. **Relative dates**:
+   Use `-7d`, `startOfWeek()` instead of specific dates
+
+## Troubleshooting
+
+### API Token Issues
+```bash
+# Verify token
+passage show redhat/issues/token/kyushu
+
+# Test connection
+jira me
+
+# Check config
+cat ~/.config/.jira/.config.yml
+```
+
+### Permission Errors
+- Ensure you're on Red Hat VPN
+- Verify project access in web UI
+- Check API token scopes
+
+### No Results
+- Verify project key
+- Check filter criteria
+- Try with --debug flag
+- Use web UI to test JQL
+
+## Resources
+
+- **Jira CLI Documentation**: https://github.com/ankitpokhrel/jira-cli
+- **Red Hat Jira**: https://issues.redhat.com
+- **JQL Reference**: https://issues.redhat.com/secure/JiraJQLHelp.jspa
+- **Skill Location**: `~/.config/claude/skills/Jira/`
+
+## Examples
+
+### Complete Workflow Example
+
+```bash
+# Morning standup
+jira-search my-progress
+
+# Find work
+jira-search team-bugs --limit 5
+
+# Assign and start
+jira issue assign SRVKP-1234 $(jira me)
+jira issue move SRVKP-1234 "In Progress"
+
+# Create investigation note
+jira-to-org SRVKP-1234 --template investigation --output ~/notes/srvkp-1234.org
+
+# Work on it...
+# (Make code changes, test)
+
+# Update Jira
+jira issue comment add SRVKP-1234 "Fix implemented in PR #123"
+jira issue move SRVKP-1234 "Code Review"
+
+# End of day
+jira-search my-week --plain > ~/standup-notes.txt
+```
+
+## Future Enhancements
+
+Possible additions:
+- Sprint management workflows
+- Epic management workflows
+- Bulk operations tools
+- Dashboard generation
+- Report generation
+- Metrics and analytics
+- Custom field support
+- Attachment handling
+- Time tracking workflows
+
+## Contributing
+
+To add new workflows:
+1. Create workflow file in `workflows/`
+2. Update `skill.md` workflow routing table
+3. Document in this README
+4. Test with real Jira issues
+
+To add new tools:
+1. Create script in `tools/`
+2. Make executable: `chmod +x tools/script-name`
+3. Document usage in this README
+4. Add examples
+
+## License
+
+This skill configuration is part of your personal NixOS configuration.
dots/.config/claude/skills/Jira/skill.md
@@ -0,0 +1,262 @@
+# Jira Issue Management
+
+## Purpose
+Interactive command-line management of Jira issues, epics, and sprints for Red Hat's issues.redhat.com. Minimizes reliance on the web interface while providing comprehensive issue tracking, workflow automation, and integration with org-mode notes.
+
+### Context Detection
+
+**This skill activates when:**
+- User mentions "jira", "ticket", "issue", "epic", or "sprint"
+- User references specific Jira issue keys (e.g., SRVKP-1234)
+- Working with Red Hat Jira issues
+- Need to manage issue workflows, assignments, or tracking
+- User wants to automate Jira operations
+- Integrating Jira issues with org-mode notes or TODOs
+
+## Workflow Routing
+
+When the user's request matches specific Jira operations, route to the appropriate workflow:
+
+| Workflow | Trigger | File |
+|----------|---------|------|
+| **View** | "view issue", "show ticket", "get details", issue key mentioned | `workflows/View.md` |
+| **List** | "list issues", "show my tickets", "what's assigned to me" | `workflows/List.md` |
+| **Create** | "create issue", "new ticket", "file bug", "open task" | `workflows/Create.md` |
+| **Update** | "update issue", "change status", "assign to", "move to" | `workflows/Update.md` |
+| **Comment** | "add comment", "comment on", "reply to issue" | `workflows/Comment.md` |
+| **Search** | "search for", "find issues", "JQL query", complex filtering | `workflows/Search.md` |
+| **LinkToNote** | "link to note", "create note for issue", "document issue" | `workflows/LinkToNote.md` |
+| **Sprint** | "sprint", "current sprint", "add to sprint" | `workflows/Sprint.md` |
+| **Epic** | "epic", "epic issues", "add to epic" | `workflows/Epic.md` |
+| **Transition** | "transition", "workflow", "move issue to", state changes | `workflows/Transition.md` |
+
+## Key Features
+
+### Issue Management
+- View detailed issue information
+- Create new issues (bugs, tasks, stories, epics)
+- Update issue fields (status, assignee, priority, labels)
+- Add comments and work logs
+- Attach files and links
+
+### Advanced Filtering
+- List issues by assignee, reporter, project
+- Filter by status, priority, type
+- Time-based filtering (created, updated, resolved)
+- Custom JQL queries for complex searches
+- Save and reuse common filters
+
+### Sprint & Epic Management
+- List current, previous, and future sprints
+- Add/remove issues from sprints
+- Track epic progress
+- Filter issues by epic or sprint
+
+### Integration with Org-Mode
+- Link Jira issues to org-mode notes
+- Create TODOs from Jira issues
+- Reference issues in project planning
+- Track issue progress in daily notes
+
+## Common Jira Projects
+
+Red Hat Jira projects you commonly work with:
+- **SRVKP**: Tekton Pipelines (Service, Kubernetes Pipelines)
+- **SRVCOM**: Common services and infrastructure
+- **RHCLOUD**: Red Hat Cloud services
+
+## Best Practices
+
+### 1. Use Plain Output for Scripting
+Always use `--plain` flag when the output will be processed:
+```bash
+jira issue list --plain -a $(jira me) -s "To Do"
+```
+
+### 2. Use JQL for Complex Queries
+For advanced filtering, use JQL (Jira Query Language):
+```bash
+jira issue list --jql "project = SRVKP AND assignee = currentUser() AND status != Done ORDER BY priority DESC"
+```
+
+### 3. Set Default Project
+Configure your most-used project in `~/.config/.jira/.config.yml`:
+```yaml
+project:
+  key: SRVKP
+```
+
+### 4. Integrate with Workflows
+- Create org-mode TODOs for critical issues
+- Link issues to notes for context
+- Use jira commands in scripts and automation
+
+### 5. Common Filters
+Save time with these common queries:
+- My open issues: `-a $(jira me) -s ~Done`
+- High priority bugs: `-t Bug -p High,Highest`
+- Recently updated: `--updated-after -7d`
+- Blocked issues: `-s Blocked,Waiting`
+
+## Configuration
+
+### Jira Config Location
+`~/.config/.jira/.config.yml`
+
+### Key Configuration Options
+- **server**: https://issues.redhat.com
+- **login**: Your Red Hat email
+- **project.key**: Default project (e.g., SRVKP)
+- **installation**: local (for on-premise)
+- **auth_type**: bearer (using API token from passage)
+
+### API Token
+Managed automatically via Nix wrapper using passage:
+```bash
+passage show redhat/issues/token/kyushu
+```
+
+## Jira CLI Quick Reference
+
+### Issue Operations
+```bash
+# View issue
+jira issue view SRVKP-1234
+
+# Create issue
+jira issue create
+
+# List issues
+jira issue list -a $(jira me)
+
+# Update issue
+jira issue move SRVKP-1234 "In Progress"
+
+# Add comment
+jira issue comment add SRVKP-1234
+```
+
+### Filtering Options
+```bash
+-a, --assignee    Filter by assignee
+-r, --reporter    Filter by reporter
+-t, --type        Filter by type (Bug, Task, Story, Epic)
+-s, --status      Filter by status
+-p, --priority    Filter by priority
+-l, --label       Filter by labels
+--created-after   Issues created after date
+--updated-after   Issues updated after date
+--jql            Custom JQL query
+```
+
+### Output Options
+```bash
+--plain          Plain text output (AI-friendly)
+--no-truncate    Don't truncate long fields
+--columns        Specify columns to display
+--order-by       Sort order
+--reverse        Reverse sort order
+```
+
+## Issue Types
+
+Common issue types in Red Hat Jira:
+- **Bug**: Software defects
+- **Task**: General work items
+- **Story**: User stories for features
+- **Epic**: Large features or initiatives
+- **Spike**: Research or investigation work
+- **Sub-task**: Child issues of other issues
+
+## Issue Priorities
+
+- **Blocker**: Blocks development/testing
+- **Critical**: System crashes, data loss
+- **Major**: Major functionality broken
+- **Minor**: Minor functionality issue
+- **Trivial**: Cosmetic issues
+
+## Workflow States
+
+Common workflow transitions:
+- **To Do** → **In Progress**: Start work
+- **In Progress** → **Code Review**: Submit for review
+- **Code Review** → **QE Review**: Pass to QA
+- **QE Review** → **Done**: Complete
+- **Any** → **Blocked**: Mark as blocked
+
+## Integration Patterns
+
+### 1. Daily Standup Prep
+```bash
+# Get issues I worked on yesterday
+jira issue list --plain -a $(jira me) --updated-after -1d
+
+# Get issues I'm working on today
+jira issue list --plain -a $(jira me) -s "In Progress"
+```
+
+### 2. Create TODO from Issue
+```bash
+# View issue and create corresponding TODO
+jira issue view SRVKP-1234 --plain
+# Then use TODOs skill to add to org-mode
+```
+
+### 3. Link to Org Notes
+```bash
+# View issue and create denote note with issue link
+jira issue view SRVKP-1234
+# Create note using Notes skill with Jira URL
+```
+
+### 4. Sprint Planning
+```bash
+# List current sprint issues
+jira sprint list --current
+
+# Add issue to sprint
+jira sprint add SPRINT-123 SRVKP-1234
+```
+
+## Tips
+
+1. **Use aliases for common commands**: Add shell aliases for frequent operations
+2. **Combine with grep/jq**: Filter jira output for specific data
+3. **Use --plain in scripts**: Ensures consistent, parseable output
+4. **Save JQL queries**: Keep complex queries in notes for reuse
+5. **Set project defaults**: Configure common projects to reduce typing
+6. **Use issue keys in commit messages**: Link commits to issues
+7. **Comment from CLI**: Add quick updates without opening browser
+8. **Track time efficiently**: Log work time from command line
+
+## Troubleshooting
+
+### Authentication Issues
+- Verify API token in passage: `passage show redhat/issues/token/kyushu`
+- Check config: `cat ~/.config/.jira/.config.yml`
+- Test connection: `jira me`
+
+### Permission Errors
+- Verify you're on Red Hat VPN if required
+- Check project permissions in web UI
+- Ensure API token has correct scopes
+
+### No Issues Found
+- Verify project key is correct
+- Check filter criteria (status, assignee, etc.)
+- Try with `--jql` for direct query
+- Use `--debug` flag to see API calls
+
+## Related Skills
+
+- **TODOs**: Create TODOs from Jira issues
+- **Notes**: Document issues in denote notes
+- **Git**: Reference issues in commits
+- **Email**: Email issue summaries to team
+
+## Learn More
+
+- Jira CLI GitHub: https://github.com/ankitpokhrel/jira-cli
+- Red Hat Jira: https://issues.redhat.com
+- JQL Reference: https://issues.redhat.com/secure/JiraJQLHelp.jspa
systems/kyushu/home.nix
@@ -1,4 +1,11 @@
 { pkgs, ... }:
+let
+  # Wrapper for jira-cli that injects API token from passage
+  jira-wrapped = pkgs.writeShellScriptBin "jira" ''
+    export JIRA_API_TOKEN=$(${pkgs.passage}/bin/passage show redhat/issues/token/kyushu)
+    exec ${pkgs.jira-cli-go}/bin/jira "$@"
+  '';
+in
 {
   imports = [
     ../../home/common/dev/containers.nix
@@ -53,7 +60,7 @@
     transmission_4-gtk
 
     forgejo-cli
-    jira-cli-go
+    jira-wrapped
 
     # lisp
     roswell