# Jira Create

> 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.

- Skill: `abchoudh-amd/jira-create` (Agent Skill)
- Install (CLI): `npx skillmds@latest add abchoudh-amd/jira-create`
- Raw SKILL.md: https://api.skillmd.com/api/skills/abchoudh-amd/jira-create/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: abchoudh-amd (https://skillmd.com/u/abchoudh-amd)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/abchoudh-amd/jira-create

---


# 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:

```bash
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

1. **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.
2. **Resolve `projectKey`.** If the user did not name one, call `mcp__atlassian__getVisibleJiraProjects` and either pick the obvious match or ask.
3. **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.
4. **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`.
5. **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](../_shared/WRITING-STYLE.md). Describe the
observable problem or outcome in a maintainer's voice; do not pad the description with
restated context the reader already has.

