Create Jira Issue
Configuration
Tenancy values (Jira project key, Atlassian base URL, Atlassian cloud ID) are loaded via the issue-orchestration MCP server's get-config tool in step 0. Jira URL format is <BASE_URL>/browse/<KEY>.
Workflow
Follow these steps in order. Each step's output is required for the next.
0. Preflight: load configuration
Call mcp__plugin_jira-issue-orchestration_issue-orchestration__get-config with no arguments. Bind BASE_URL ← values.atlassianBaseUrl, PROJECT_KEY ← values.jiraProjectKey, CLOUD_ID ← values.atlassianCloudId. If any are missing or empty, stop: Config missing or incomplete. Run /configure-jira-orchestration to set it up, then re-run this skill.
1. Gather input
Required: a free-form description of what the issue is about — what's broken, what needs to be built, what change is wanted.
Source the description in this order:
- If the skill was invoked with explicit instructions/payload, use that.
- Otherwise, derive it from the current conversation — the issue the user has been discussing, the bug just diagnosed, the feature just scoped. The conversation is the input; do not pre-confirm.
- Only if there are no instructions and no conversation context to draw from, ask once via
AskUserQuestionfor the description before doing anything else.
Do not ask which Jira project to use. The project is fixed by PROJECT_KEY from step 0.
2. Resolve the issue type
Call mcp__plugin_atlassian_atlassian__getJiraProjectIssueTypesMetadata with cloudId=CLOUD_ID and projectIdOrKey=PROJECT_KEY to enumerate available issue types.
Default silently to Task if available, otherwise the first available non-Epic, non-Subtask type. Do not probe the input for type-specific language — the template below is general-purpose and applies regardless of type. If the user explicitly named a type in their request (e.g. "file a Bug for..."), honor it.
3. Draft the summary and description
Produce a summary string and a description string per the instructions below. Step 4 displays them; step 5 submits them.
Summary
Format: a single one-line outcome statement. No prefix, no component tag.
Rules:
- State the outcome, not the implementation. "Report failed status for stalled finalizer jobs" beats "Update enum and add stall detector."
- Strong verb start: Add, Fix, Enable, Remove, Migrate, Expose, Prevent, Report, Restore.
- Under ~80 characters.
- No trailing period.
Description
Use this template verbatim. The summary paragraph is unheaded — it sits at the very top of the description before any ## heading. Every section appears — write N/A for sections the input doesn't cover.
<1–2 sentence plain-English overview of the problem or task. No header. Outcome-focused, minimal jargon.>
## Acceptance Criteria
<What must be true for this issue to be considered done. Bulleted list preferred, one criterion per bullet. Written so a reviewer can check each item against the resulting work.>
## Technical/Other Notes
<Technical or other details that help in achieving the goal: error messages, stack traces, file paths, links to related tickets/PRs, environment specifics, constraints, gotchas, references. Code/log content goes in fenced blocks. Write `N/A` if there's nothing real to add.>
Humanize the prose sections
After drafting, pass these sections — and only these — through planning:humanize-text via the Skill tool, one invocation per section, with a context hint identifying the surface:
- The unheaded summary paragraph at the top — hint:
"Jira issue description, summary paragraph". - The body of
## Acceptance Criteria— hint:"Jira issue description, acceptance-criteria section".
Use each returned rewrite verbatim.
Do not humanize ## Technical/Other Notes. That section is intentionally precise — error messages, stack traces, file paths, identifiers, ticket keys. Humanizing strips the specificity a triager or implementer needs.
4. Show the draft and confirm
Print the full draft so the user sees exactly what will ship:
**Project:** <PROJECT_KEY>
**Type:** <issueTypeName>
**Summary:** <summary>
**Description:**
<full description verbatim>
Then ask via AskUserQuestion:
- Question:
Create this Jira issue? - Options:
Create now (Recommended)— proceed to step 5.Edit summary or description— ask the user what to change, apply the edits in-chat, re-show the draft, ask again.Cancel— stop without creating.
Do not call createJiraIssue until the user picks Create now. Jira issue creation is non-reversible from this skill — there is no undo.
5. Create the issue
Call mcp__plugin_atlassian_atlassian__createJiraIssue with:
cloudId=CLOUD_IDprojectKey=PROJECT_KEYissueTypeName= the type chosen in step 2summary= the summary from step 3description= the description from step 3
Do not pass a priority field unless the user's input explicitly named one ("P0", "critical", "blocker", "high priority", etc.). Let Jira apply the project default otherwise.
Required-field fallback
If createJiraIssue fails with a missing-required-field error:
- Call
mcp__plugin_atlassian_atlassian__getJiraIssueTypeMetaWithFieldswithcloudId=CLOUD_ID,projectIdOrKey=PROJECT_KEY, and the issue type ID for the chosen type. - Identify the required fields the create call was missing.
- Ask the user via a single
AskUserQuestionround (one question per missing field; group into one message). - Retry
createJiraIssueonce withadditional_fieldspopulated. If it fails again, surface the error verbatim and stop.
6. Report back
Four lines, nothing more:
Created <KEY> <BASE_URL>/browse/<KEY>
Type: <issueTypeName>
Summary: <summary>
Project: <PROJECT_KEY>
Do not echo the description back — the user can click the URL.
Notes on behavior
- Do not search for duplicates. This skill creates. Adding a search step here is scope creep.
- Do not ask which project.
PROJECT_KEYis bound at config time and is the same for the whole working directory. - Respect overrides. If the user says "skip the confirm, just create it" or "use this summary: ...", honor it.
- One issue per invocation unless the user explicitly asks for multiple.