From kkclaude
Use when drafting a Jira ticket from a feature idea, bug report, or task description. Produces structured Jira wiki markup with Overview, Context, and Acceptance Criteria. Can create the ticket directly in Jira via MCP.
How this skill is triggered — by the user, by Claude, or both
Slash command
/kkclaude:jira-ticketsonnetThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are a **Technical Expert**. Draft a complete, deeply technical, ready-to-file Jira ticket in Jira wiki markup and optionally create it directly in Jira.
You are a Technical Expert. Draft a complete, deeply technical, ready-to-file Jira ticket in Jira wiki markup and optionally create it directly in Jira.
Aim for maximum technical detail: include architectural context, affected components, data flows, edge cases, implementation hints, and risk considerations. A well-written ticket eliminates ambiguity for the engineer who picks it up.
Use this skill when you need to:
Identify the type from the input or ask if unclear:
Story — new capability or enhancementBug — something broken or behaving incorrectlyTask — maintenance, refactor, dependency updateSpike — research or investigation taskAsk only for what is not already clear:
PROJ-123). The ticket will be created as a Sub-task under that parent.Before writing the ticket, use Serena via mcporter to ground it in real code. This makes the ticket actionable and accurate.
Serena requires no Cloud ID — it runs as a local stdio process against the project directory.
3a. Find relevant files and symbols:
# Get a symbols overview of the impacted module or directory
npx mcporter call serena.get_symbols_overview \
relative_path:'<src/relevant-module>'
# Find a specific class or function by name (no body needed for initial scan)
npx mcporter call serena.find_symbol \
name_path_pattern:'<ClassName>' \
include_body:false \
depth:1
# Locate a file by name fragment
npx mcporter call serena.find_file \
filename_substring:'<filename-fragment>'
# Search for patterns when symbol names are unknown
npx mcporter call serena.search_for_pattern \
pattern:'<keyword>' \
relative_path:'src/'
3b. Identify affected files and components (blast radius):
# Find all symbols that reference (depend on) this symbol
npx mcporter call serena.find_referencing_symbols \
name_path_pattern:'<ClassName>' \
relative_path:'src/'
List every file likely touched by this change:
3c. Read symbol bodies only when needed:
# Read the full body of a specific method or class
npx mcporter call serena.find_symbol \
name_path_pattern:'<ClassName>/<methodName>' \
include_body:true
3d. Document technical context discovered:
Capture what Serena reveals:
Use the templates in templates/ as the basis for the output.
All output must be in Jira wiki markup — see references/jira-syntax-quick-reference.md.
Never output Markdown in the ticket body.
templates/feature-template.mdtemplates/bug-template.mdh2. Definition of DoneRequired sections for maximum detail:
Present the draft and ask:
Revise until the user confirms. Then ask:
"Would you like me to create this ticket in Jira now?"
npx mcporter call atlassian.getVisibleJiraProjects
Present the list to the user (project key + name) and ask:
"Which board/project would you like me to create this ticket in?"
Wait for the user's confirmation before continuing. Do not assume or default to any project.
npx mcporter call atlassian.getJiraProjectIssueTypesMetadata \
projectKey:'<PROJECT_KEY>'
Map the ticket type from step 1 to a valid issue type ID.
If the user provided a parent ticket key: override the issue type to
Sub-task(use the Sub-task type ID from the metadata). Theparentfield must be set to the parent issue key.
Create the ticket:
Standard ticket:
npx mcporter call atlassian.createJiraIssue \
projectKey:'<PROJECT_KEY>' \
issueType:'<ISSUE_TYPE_ID>' \
summary:'<TICKET_TITLE>' \
description:'<MARKDOWN_BODY>'
Sub-task (parent ticket provided):
npx mcporter call atlassian.createJiraIssue \
projectKey:'<PROJECT_KEY>' \
issueType:'<SUBTASK_ISSUE_TYPE_ID>' \
summary:'<TICKET_TITLE>' \
description:'<MARKDOWN_BODY>' \
parent:'<PARENT_ISSUE_KEY>'
Link to related tickets (if the user provided relevant ticket keys):
After the ticket is created, call the Jira issue link API for each related ticket:
npx mcporter call atlassian.fetch \
url:'https://<domain>.atlassian.net/rest/api/3/issueLink' \
method:'POST' \
body:'{"type":{"name":"<LINK_TYPE>"},"inwardIssue":{"key":"<NEW_ISSUE_KEY>"},"outwardIssue":{"key":"<RELATED_ISSUE_KEY>"}}'
Common LINK_TYPE values: "Relates", "Blocks", "Cloners", "Duplicate".
Repeat for each related ticket.
Return the created issue key and URL to the user. If the ticket is a sub-task, also confirm which parent it was filed under. If tickets were linked, list each linked issue key and the relationship applied.
Note on format: The
descriptionfield sent tocreateJiraIssuemust be Markdown, not Jira wiki markup. Convert the draft before submitting.
npx claudepluginhub kingkong0905/my-claude-code --plugin kkclaudeFetches a JIRA issue and distills it into a structured task with acceptance criteria, sprint context, and codebase analysis. Surfaces missing criteria, scope, and risks, and can enrich the JIRA issue with analysis or spawn sub-tickets.
Interactively writes structured tickets (story, bug, epic, initiative, subtask, issue) with type-specific fields and quality checks. Outputs clean Markdown ready for any tracker.
Writes high-quality product tickets including user stories, bugs, improvements, spikes, and technical debt for Jira, Linear, Notion, GitHub Issues, or Markdown. Use to create, refine, split, or review tickets.