From openstack-k8s-agent-tools
Integrates with Jira for openstack-k8s-operators workflows: reads tickets, validates feature/epic/story hierarchy, posts outcome comments with AI prefix, suggests story creation.
npx claudepluginhub openstack-k8s-operators/devskills --plugin openstack-k8s-agent-tools<ticket-id>This skill is limited to using the following tools:
Jira integration skill for openstack-k8s-operators development workflows.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Jira integration skill for openstack-k8s-operators development workflows.
When invoked directly (/jira OSPRH-2345), inspect the ticket and report its type, hierarchy, and linked issues. When used as a reference by other skills, follow the rules below.
Human approval is REQUIRED for all write operations. Never post comments, create stories, update tickets, or modify any Jira resource without presenting the exact content to the human operator and receiving explicit approval first. Read operations (fetching tickets, inspecting hierarchy) do not require approval.
ALL Jira comments MUST start with [AI-GENERATED] prefix. This is mandatory and non-negotiable. Never post a comment without this prefix.
Feature / Initiative
|
| Feature
| Initiative
|
+-- Epic
| |
| | Groups stories/tasks/bugs for a single release
| | Must be scoped to a single release
| |
| +-- Story / Task
| | Actual engineering work, maps to PR(s)
| | Story and Task are interchangeable
| |
| +-- Bug
| Defect (same level as Story, different workflow)
|
+-- Epic
...
Sub-tasks are NOT used. Do not create sub-tasks.
Story and Task are interchangeable. No semantic difference. Teams may have local conventions, but they are not generalizable.
Outcome comments go on the Story/Task/Bug, never on Epic or Feature. The Story is where engineering work is tracked. The Epic is a container. The Feature is PM-owned.
If the input ticket is a Feature, find its child Epics. If there's a relevant Epic, find its Stories. Guide the user down to the right Story to work on.
If the input ticket is an Epic with no child Stories, check if a Spike exists under the Epic instead. If a Spike is found, warn the user: "This Epic has a Spike () but no Story. Spikes are timeboxed research — not implementation work. Do you want to continue planning against the Spike, or create a Story first?" If no Spike and no Story, suggest creating a Story before starting implementation.
Bugs follow their own workflow (New, Refinement, Planning, Backlog, In Progress, Review, Verified, Closed) but are at the same level as Stories for hierarchy purposes.
Bug-to-Story workflow. When a Bug has a parent Epic:
Plan breakdown items become separate Stories under the Epic, not sub-tasks.
When given a ticket ID:
Example output:
Ticket: OSPRH-2345
Type: Story
Status: In Progress
Priority: Major
fixVersion: 18.0.1
Summary: Add topology support to GlanceAPI
Parent Epic: OSPRH-1000 (Glance operator enhancements)
Linked Stories: OSPRH-2346, OSPRH-2347
Hierarchy: OK — Story linked to Epic
Before any write operation, that must be approved by the human operator, check the hierarchy:
Story/Task/Bug — OK to work on:
Hierarchy check for OSPRH-2345:
Type: Story
Parent Epic: OSPRH-1000
Status: OK — proceed with planning/implementation
Bug with parent Epic — suggest Story creation:
Hierarchy check for OSPRH-3456:
Type: Bug
Parent Epic: OSPRH-1000 (Glance operator enhancements)
Sibling Stories: none that cover this fix
This Bug has a parent Epic but no Story to track the fix.
Bugs are typically not added to sprints — a Story is needed
to track the implementation work.
Suggested Story:
Project: OSPRH
Type: Story
Summary: Fix <bug summary>
Epic Link: OSPRH-1000
fixVersion: <from Bug>
Description: Implementation work for OSPRH-3456
Create this Story? (y/n)
After creation, transition both tickets?
OSPRH-3456 (Bug): Backlog -> In Progress
OSPRH-XXXX (Story): Backlog -> In Progress
Confirm? (y/n)
Epic — has a Spike but no Story:
Hierarchy check for OSPRH-1000:
Type: Epic
Child Stories: none
Child Spikes: OSPRH-1050 (Investigate topology approach)
Status: WARNING — this Epic has a Spike but no Story.
Spikes are timeboxed research, not implementation work.
Options:
1. Continue planning against the Spike (OSPRH-1050)
2. Create a Story under this Epic first
Which option?
Epic — no Stories and no Spikes:
Hierarchy check for OSPRH-1000:
Type: Epic
Child Stories: none
Status: WARNING — create a Story under this Epic before
starting implementation.
Suggested Story:
Project: OSPRH
Type: Story
Summary: <suggested based on plan context>
Epic Link: OSPRH-1000
fixVersion: <from Epic>
Description: <suggested based on plan context>
Create this story in Jira, then re-run with the story ID.
Feature — needs navigation down:
Hierarchy check for OSPRH-500:
Type: Feature
Child Epics:
- OSPRH-1000: Glance operator enhancements (In Progress)
- OSPRH-1001: Glance API v2 migration (Backlog)
Status: INFO — this is a Feature. Pick the relevant Epic,
then find or create a Story under it.
Which Epic is this work related to?
When /task-executor completes implementation and the user approves posting:
[AI-GENERATED] prefix:[AI-GENERATED] Implementation completed.
Commit: abc1234
Branch: feature/topology-support
Summary:
- Added TopologyRef field to GlanceAPISpec and GlanceSpec
- Reconciler propagates topology constraints to pod specs
- EnvTest coverage for topology reconciliation path
Files changed:
- api/v1beta1/glanceapi_types.go
- controllers/glanceapi_controller.go
- test/functional/glanceapi_controller_test.go
When the plan breakdown has multiple work items and the user wants to track them in Jira:
AssignedTeam from the parent Epic — read customfield_10606 from the Epic and set it on every created Story. Jira does not propagate this automatically.Your plan has 3 groups of work under Epic OSPRH-1000.
These would be separate Stories under the Epic:
1. Story: Add TopologyRef to GlanceAPI types and webhooks
Epic Link: OSPRH-1000
fixVersion: 18.0.1
AssignedTeam: <value from Epic's customfield_10606>
2. Story: Reconcile topology constraints in GlanceAPI controller
Epic Link: OSPRH-1000
fixVersion: 18.0.1
AssignedTeam: <value from Epic's customfield_10606>
3. Story: Add EnvTest coverage for topology reconciliation
Epic Link: OSPRH-1000
fixVersion: 18.0.1
AssignedTeam: <value from Epic's customfield_10606>
Create these Stories in Jira? (I'll provide the fields, you create them)
Backlog → To Do → In Progress → Closed
New → Refinement → Planning → Backlog → In Progress → Review → Verified → Closed
New → Refinement → Backlog → In Progress → Review → Closed
New → Refinement → Backlog → In Progress → Release Pending → Closed
/jira OSPRH-2345/jira OSPRH-1000