Jira Create
Create a Jira work item by calling the Atlassian Remote MCP tools. There is no bundled script — every action runs through mcp__atlassian__*.
Prerequisite (one-time)
If mcp__atlassian__* tools are not visible in /mcp, register the server:
claude mcp add --transport http atlassian https://mcp.atlassian.com/v1/mcp
Then complete the OAuth flow in the browser when prompted. Subsequent sessions reuse the cached token.
Workflow
Resolve cloudId. Call mcp__atlassian__getAccessibleAtlassianResources once; pick the site the user is working against. Reuse the same cloudId for the rest of the session.
Resolve projectKey. If the user did not name one, call mcp__atlassian__getVisibleJiraProjects and either pick the obvious match or ask.
Resolve issue type. Call mcp__atlassian__getJiraProjectIssueTypesMetadata for the chosen project to see what is available, then infer the type from user phrasing:
- "file a bug", "crash", "regression" →
Bug
- "track this work", "todo", "chore" →
Task
- "user-facing feature", "story" →
Story
- "epic for Q3 migration", "umbrella" →
Epic
- "sub-task of X", "child of X" →
Sub-task (also resolve parent.key)
Never default to Bug. If the user's intent is ambiguous, ask which type before proceeding.
Build the payload, preview it for the user, then call mcp__atlassian__createJiraIssue. Print the planned tool call first when fields came from inference rather than explicit user input — equivalent to the old --dry-run.
Return the issue key the tool reports back, with a clickable URL.
Field mapping (from the old acli script)
Old acli flag |
MCP payload field |
Notes |
--summary "..." |
summary |
required |
--project KEY |
projectKey |
discover via getVisibleJiraProjects if not provided |
--type <Type> |
issueTypeName |
no default — infer from context or ask |
--description "..." / --description-file path |
description |
pass markdown/ADF per the tool's schema; if file form, read it and pass the contents |
--assignee email |
accountId |
resolve via mcp__atlassian__lookupJiraAccountId; for @me use the current-user account-id lookup |
--label a,b,c |
labels: ["a","b","c"] |
split comma-separated input; trim whitespace |
--parent KEY-123 |
additional_fields.parent.key |
required for Sub-task |
--from-json file.json |
spread the file's fields object into the tool call |
for custom-field payloads |
--dry-run |
print the planned tool call, await user confirmation |
no separate flag — just behavior |
Examples
Bug from a crash report
"File a bug in AIPROFCOMP: parser crashes on empty counter sets."
→ getAccessibleAtlassianResources → createJiraIssue with projectKey=AIPROFCOMP, issueTypeName=Bug, summary="Parser crashes on empty counter sets", description="...".
Sub-task under a known parent
"Open a sub-task under AIPROFCOMP-517 for adding unit coverage on malformed CSV rows."
→ createJiraIssue with issueTypeName=Sub-task, additional_fields={"parent":{"key":"AIPROFCOMP-517"}}.
Ambiguous type — ask first
"Make a ticket for the roofline export endpoint."
Story or Task? Ask before calling createJiraIssue.
Behavior rules
- Never silently default the issue type to
Bug — infer from context or ask.
- Always preview the planned tool call to the user before any inferred field is committed (project, type, assignee).
- Re-use
cloudId across calls within a session; do not re-call getAccessibleAtlassianResources each time.
- This skill creates only — it does not edit, transition, or delete issues.
Tool-name caveat
The literal tool names above (createJiraIssue, getJiraProjectIssueTypesMetadata, etc.) reflect the Atlassian Remote MCP server's documented surface. If /mcp shows different names in this environment, substitute them but keep the workflow the same.
Writing style
The work item summary and description follow writing style. Describe the
observable problem or outcome in a maintainer's voice; do not pad the description with
restated context the reader already has.
1---2name: jira-create3description: Creates Jira work items (Bug, Story, Task, Epic, Sub-task) on Jira Cloud through the official Atlassian Remote MCP server. Use when the user asks to create a new Jira ticket, issue, bug, story, task, epic, or sub-task, file a new work item, or open a Jira ticket.4---56# Jira Create78Create a Jira work item by calling the Atlassian Remote MCP tools. There is no bundled script — every action runs through `mcp__atlassian__*`.910## Prerequisite (one-time)1112If `mcp__atlassian__*` tools are not visible in `/mcp`, register the server:1314```bash15claude mcp add --transport http atlassian https://mcp.atlassian.com/v1/mcp16```1718Then complete the OAuth flow in the browser when prompted. Subsequent sessions reuse the cached token.1920## Workflow21221. **Resolve `cloudId`.** Call `mcp__atlassian__getAccessibleAtlassianResources` once; pick the site the user is working against. Reuse the same `cloudId` for the rest of the session.232. **Resolve `projectKey`.** If the user did not name one, call `mcp__atlassian__getVisibleJiraProjects` and either pick the obvious match or ask.243. **Resolve issue type.** Call `mcp__atlassian__getJiraProjectIssueTypesMetadata` for the chosen project to see what is available, then **infer the type from user phrasing**:25 - "file a bug", "crash", "regression" → `Bug`26 - "track this work", "todo", "chore" → `Task`27 - "user-facing feature", "story" → `Story`28 - "epic for Q3 migration", "umbrella" → `Epic`29 - "sub-task of X", "child of X" → `Sub-task` (also resolve `parent.key`)3031 **Never default to Bug.** If the user's intent is ambiguous, ask which type before proceeding.324. **Build the payload, preview it for the user, then call `mcp__atlassian__createJiraIssue`.** Print the planned tool call first when fields came from inference rather than explicit user input — equivalent to the old `--dry-run`.335. **Return the issue key** the tool reports back, with a clickable URL.3435## Field mapping (from the old `acli` script)3637| Old `acli` flag | MCP payload field | Notes |38|---|---|---|39| `--summary "..."` | `summary` | required |40| `--project KEY` | `projectKey` | discover via `getVisibleJiraProjects` if not provided |41| `--type <Type>` | `issueTypeName` | **no default** — infer from context or ask |42| `--description "..."` / `--description-file path` | `description` | pass markdown/ADF per the tool's schema; if file form, read it and pass the contents |43| `--assignee email` | `accountId` | resolve via `mcp__atlassian__lookupJiraAccountId`; for `@me` use the current-user account-id lookup |44| `--label a,b,c` | `labels: ["a","b","c"]` | split comma-separated input; trim whitespace |45| `--parent KEY-123` | `additional_fields.parent.key` | required for `Sub-task` |46| `--from-json file.json` | spread the file's fields object into the tool call | for custom-field payloads |47| `--dry-run` | print the planned tool call, await user confirmation | no separate flag — just behavior |4849## Examples5051**Bug from a crash report**52> "File a bug in AIPROFCOMP: parser crashes on empty counter sets."5354→ `getAccessibleAtlassianResources` → `createJiraIssue` with `projectKey=AIPROFCOMP`, `issueTypeName=Bug`, `summary="Parser crashes on empty counter sets"`, `description="..."`.5556**Sub-task under a known parent**57> "Open a sub-task under AIPROFCOMP-517 for adding unit coverage on malformed CSV rows."5859→ `createJiraIssue` with `issueTypeName=Sub-task`, `additional_fields={"parent":{"key":"AIPROFCOMP-517"}}`.6061**Ambiguous type — ask first**62> "Make a ticket for the roofline export endpoint."6364Story or Task? Ask before calling `createJiraIssue`.6566## Behavior rules6768- Never silently default the issue type to `Bug` — infer from context or ask.69- Always preview the planned tool call to the user before any inferred field is committed (project, type, assignee).70- Re-use `cloudId` across calls within a session; do not re-call `getAccessibleAtlassianResources` each time.71- This skill creates only — it does not edit, transition, or delete issues.7273## Tool-name caveat7475The literal tool names above (`createJiraIssue`, `getJiraProjectIssueTypesMetadata`, etc.) reflect the Atlassian Remote MCP server's documented surface. If `/mcp` shows different names in this environment, substitute them but keep the workflow the same.7677## Writing style7879The work item `summary` and `description` follow [writing style](../_shared/WRITING-STYLE.md). Describe the80observable problem or outcome in a maintainer's voice; do not pad the description with81restated context the reader already has.