Files
pi_mcps/zoo_backup/work/rules/skills/skill-jira-lifecycle.md
T
2026-06-24 19:27:14 +02:00

6.4 KiB

Skill: jira-lifecycle

Full Jira ticket lifecycle management for ESIDEPAISY.

Invoked by

🎫 JiraOps mode

Required Inputs

Input Source Example
TICKET_KEY Jira issue key ESIDEPAISY-12081

Overview

This skill manages a Jira ticket through its full lifecycle, from initial setup through to final acceptance. It handles field validation, Smart Checklist management, status transitions, attachments, and structured comments.

Steps

1. Validate mandatory fields

ticket = retrieve_ticket_details(TICKET_KEY)

Check and fix:

Field ID Required How to resolve
Feature Link customfield_10001 Mandatory Look up parent Epic via JQL: project = ESIDEPAISY AND issuetype = Epic AND summary ~ "<module>"
Sprint customfield_10000 Mandatory Derive from active sprint: get_agile_boards("ESIDEPAISY")get_sprints_from_board(board_id, states="active")
Assignee assignee Recommended ticket_assignment(TICKET_KEY, assignee="currentUser()")

If Feature Link is missing:

# Find the parent Epic
epics = list_tickets(jql_search='project = ESIDEPAISY AND issuetype = Epic AND summary ~ "<module keyword>"')
# Update the ticket
update_ticket_fields(TICKET_KEY, fields={"customfield_10001": epics[0]["key"]})

2. Create Smart Checklist

Set up the standard PAISY pipeline checklist:

update_checklist(TICKET_KEY, items=[
    {"name": "## Analyse & Planung"},
    {"name": "Assessment erstellt", "status": "-"},
    {"name": "Plan erstellt", "status": "-"},
    {"name": "Testplan erstellt", "status": "-"},
    {"name": "Plan Review bestanden", "status": "-!"},  # mandatory
    {"name": "GO erhalten", "status": "-!"},  # mandatory
    {"name": "---"},
    {"name": "## Implementierung"},
    {"name": "Code-Änderungen", "status": "-"},
    {"name": "Tests implementiert", "status": "-"},
    {"name": "Build grün", "status": "-!"},  # mandatory
    {"name": "---"},
    {"name": "## Security & Review"},
    {"name": "Security Review bestanden", "status": "-!"},  # mandatory
    {"name": "Code Review bestanden", "status": "-"},
    {"name": "---"},
    {"name": "## Dokumentation & Abschluss"},
    {"name": "Lösungsdokumentation", "status": "-"},
    {"name": "PDF generiert", "status": "-"},
    {"name": "Jira aktualisiert", "status": "-"},
])

3. Status transitions

Manage the ticket through the ESIDEPAISY workflow:

Phase Status When
Start In Progress After worktree creation, before implementation
Review In Review After implementation + tests, before code review
Done Accepted After all checklist items complete
update_status(TICKET_KEY, status="In Progress")

4. Update checklist as work progresses

Update individual items as phases complete:

# After assessment is done
update_checklist(TICKET_KEY, items=[
    {"name": "## Analyse"},
    {"name": "Assessment erstellt", "checked": True},
    {"name": "Plan erstellt", "status": "~"},  # in progress
    # ... rest unchanged
])

Important: update_checklist replaces ALL items. Always send the full checklist with updated statuses.

5. Add structured comments at phase boundaries

At each major phase transition, add a German comment:

# After planning + plan review
add_comment_to_ticket(TICKET_KEY, comment="""
*Phase 1-1.5 abgeschlossen: Analyse & Planung*

Assessment, Plan und Testplan erstellt:
- Assessment: [TICKET_KEY-assessment.md]
- Plan: [TICKET_KEY-plan.md]
- Testplan: [TICKET_KEY-testplan.md] ({N} Testfälle)
- Plan Review: [TICKET_KEY-plan-review.md] — ✅ APPROVED

GO erhalten am {date}.
""")

# After implementation + security review
add_comment_to_ticket(TICKET_KEY, comment="""
*Phase 3-5.5 abgeschlossen: Implementierung, Tests & Security*

Branch: current/{type}/{module}/{TICKET_KEY}-{desc}
Änderungen: {N} Dateien geändert, {M} neu
Tests: {T} Tests, alle bestanden
Security Review: ✅ PASS — [TICKET_KEY-security-review.md]
""")

# After documentation
add_comment_to_ticket(TICKET_KEY, comment="""
*Phase 7-8 abgeschlossen: Dokumentation & Finalisierung*

Lösungsdokumentation als PDF angehängt.
Alle Checklist-Punkte erledigt.
""")

6. Upload attachments

# Upload solution PDF
add_attachment_to_ticket(TICKET_KEY, file_path="/absolute/path/to/<TICKET_KEY>-solution.pdf")

7. Final checklist update

Mark all items as done:

update_checklist(TICKET_KEY, items=[
    {"name": "## Analyse & Planung"},
    {"name": "Assessment erstellt", "checked": True},
    {"name": "Plan erstellt", "checked": True},
    {"name": "Testplan erstellt", "checked": True},
    {"name": "Plan Review bestanden", "status": "+!"},
    {"name": "GO erhalten", "status": "+!"},
    {"name": "---"},
    {"name": "## Implementierung"},
    {"name": "Code-Änderungen", "checked": True},
    {"name": "Tests implementiert", "checked": True},
    {"name": "Build grün", "status": "+!"},
    {"name": "---"},
    {"name": "## Security & Review"},
    {"name": "Security Review bestanden", "status": "+!"},
    {"name": "Code Review bestanden", "checked": True},
    {"name": "---"},
    {"name": "## Dokumentation & Abschluss"},
    {"name": "Lösungsdokumentation", "checked": True},
    {"name": "PDF generiert", "checked": True},
    {"name": "Jira aktualisiert", "checked": True},
])

8. Final status transition

update_status(TICKET_KEY, status="Accepted")

Language

  • All Jira content (summary, description, comments, checklist items): German
  • Technical terms (branch names, file paths, tool names): English as-is

Conventions

  • Feature Link (customfield_10001): always look up dynamically, never hardcode Epic keys
  • Sprint: always derive from active sprint, never hardcode sprint IDs
  • Comments: use Jira wiki markup (*bold*, {code}, etc.)
  • Attachments: use absolute file paths
  • Checklist: always send the FULL list (Railsware replaces all items on update)

Partial Lifecycle

Not every ticket needs the full lifecycle. For quick fixes:

Scenario Skip
Trivial bugfix (< 1 hour) Skip assessment, testplan, review. Keep checklist minimal.
Documentation-only change Skip implementation, tests, review phases.
Hotfix Skip planning loop. Minimal checklist: Code → Test → Deploy.

Adjust the checklist template accordingly when creating it.