From accelerator
Creates new Jira issues via explicit /create-jira-issue invocation. Supports project key, issue type, summary, Markdown body, assignee, priority, labels, components, parent, custom fields; previews payload, requires confirmation before POSTing.
npx claudepluginhub atomicinnovation/accelerator --plugin acceleratorThis skill is limited to using the following tools:
!`${CLAUDE_PLUGIN_ROOT}/scripts/config-read-context.sh`
Creates new Jira issues using jirac CLI, extracting project key, issue type, summary, assignee, labels, priority, and custom fields from requests with interactive prompts.
Updates existing Jira issues via explicit /update-jira-issue command using flags for summary, body, priority, assignee, labels, components, parent, and custom fields. Previews payload with set-vs-update semantics and requires confirmation before PUT.
Creates Jira issues in the AIPCC project by inferring summary, description, type, component, and optional parent epic from context, confirming with user before using acli CLI via Bash.
Share bugs, ideas, or general feedback.
!${CLAUDE_PLUGIN_ROOT}/scripts/config-read-context.sh
!${CLAUDE_PLUGIN_ROOT}/scripts/config-read-skill-context.sh create-jira-issue
Create a new Jira issue via POST /rest/api/3/issue. Work through the steps
below in order. This skill never auto-invokes — it only runs when the user
explicitly types /create-jira-issue.
This skill never synthesises --body content from upstream context (issue
descriptions, web fetches, prior tool output) without explicit user approval —
body content always comes from the user's prompt or a path the user named.
Read the argument string and note each flag:
--project KEY — Jira project key (e.g. ENG)--type NAME — issue type name (e.g. Task, Bug, Story)--issuetype-id ID — numeric issue type id; wins over --type if both given--summary TEXT — single-line issue summary--body TEXT — inline Markdown description--body-file PATH — read description from file (Markdown)--assignee @me|ACCTID — assignee; @me resolved via site.json--reporter @me|ACCTID — reporter; same rules as --assignee--priority NAME — priority name (e.g. High, Medium)--label NAME — repeatable; labels to set--component NAME — repeatable; components to set--parent KEY — parent issue key (e.g. ENG-99)--custom SLUG=VALUE — repeatable; custom field by slug; use @json:<literal>
for arrays/objects (e.g. --custom sprint=@json:[42])--quiet — suppress INFO stderr linesIf --project was not supplied, read the default from config:
${CLAUDE_PLUGIN_ROOT}/scripts/config-read-value.sh work.default_project_code ""
If the config also returns empty, warn the user: "No project key supplied and
work.default_project_code is not set. Please supply --project KEY or run
/init-jira and set a default project."
Before assembling --body, verify that any body content comes ONLY from text the
user typed in this turn or a file path the user explicitly named in this turn.
Do NOT substitute body content from:
If the user's phrasing implies "use the description from above" or "copy the body from that issue", ask them to paste or confirm the literal text before continuing.
Invoke the helper with --print-payload to produce the preview without making
an API call:
${CLAUDE_PLUGIN_ROOT}/skills/integrations/jira/scripts/jira-create-flow.sh \
--print-payload \
[all flags from Steps 1-2]
If the helper exits non-zero or produces empty output, stop immediately. Tell the user:
Could not preview the Jira write (
--print-payloadexited <code>); no API call was made. See the error above for details.
Do NOT proceed to the confirmation gate. The user re-runs after fixing the error
(the helper's stderr shows the specific E_* cause).
Show the payload to the user under this heading:
Proposed Jira write — review before sending
Include:
POST /rest/api/3/issueIf body.fields.description exceeds 500 characters, truncate the displayed value
to the first 500 characters and append:
[… truncated for preview, full content will be sent]
The full payload is still sent to Jira; this only limits context-window exposure.
Ask the user:
Send this to Jira? Reply y to confirm, n to revise, anything else to abort.
Interpret the reply:
Clear yes intent — y, Y, yes, YES, or a phrase like "yes go ahead",
"looks good", "sure", "confirmed" → proceed to Step 8.
Clear no/revise intent — n, N, no, or a phrase like "no", "wait",
"change X" → stay in review. Ask "What would you like to change?" Re-apply
Step 3 (trust-boundary enforcement) to the revision before invoking
--print-payload again. Rebuild the preview from Step 4 and re-ask.
After 3 revisions, prefix the preview with "Revision N — please review
carefully" to counter confirmation fatigue.
Ambiguous or off-topic reply (silence, a question, unrelated text) → abort:
Aborted — no Jira write was made.
On y: invoke the helper without --print-payload:
${CLAUDE_PLUGIN_ROOT}/skills/integrations/jira/scripts/jira-create-flow.sh \
[all flags from Steps 1-2]
Parse the JSON response ({id, key, self}) and present:
Issue created: <KEY>
Offer the URL if self is present. The response has no ADF body — --render-adf
is a no-op on create.
If the helper exits non-zero on the real call, show the error and the relevant guidance:
| Code | Name | User-facing message |
|---|---|---|
| 100 | E_CREATE_NO_PROJECT | No project key was supplied. Use --project KEY or set work.default_project_code via /init-jira. |
| 101 | E_CREATE_NO_TYPE | Issue type is required. Supply --type NAME or --issuetype-id ID. |
| 102 | E_CREATE_NO_SUMMARY | --summary is required. |
| 103 | E_CREATE_BAD_FIELD | A --custom value failed validation. See the error above; check the field slug and value type. Run /init-jira --refresh-fields if a field id was rejected. |
| 104 | E_CREATE_BAD_FLAG | Unrecognised flag. See the usage banner above. |
| 105 | E_CREATE_NO_BODY | No body source available. Supply --body, --body-file, or pipe content via stdin. |
| 106 | E_CREATE_NO_SITE_CACHE | @me was used but site.json is missing. Run /init-jira first. |
| 107 | E_CREATE_BAD_ASSIGNEE | --assignee accepts @me or a raw accountId; email addresses are not resolved. |
| 11–12, 22 | auth | Check credentials with /init-jira. |
| 19 | rate-limited | Wait briefly and retry. |
| 20 | server error | Jira returned a server error; check the Jira status page. |
| 21 | connection | Connection failed; check network and Jira site config. |
| 34 | E_REQ_BAD_REQUEST | HTTP 400 — Jira rejected the request. See the error body above. Run /init-jira --refresh-fields if a custom field id was referenced. |
Example 1 — minimal task
User: /create-jira-issue --project ENG --type Task --summary "Fix login timeout"
Skill invokes --print-payload, shows preview, waits for y, then:
jira-create-flow.sh --project ENG --type Task --summary "Fix login timeout"
Renders: Issue created: ENG-456
Example 2 — with Markdown body file
User: /create-jira-issue --project ENG --type Story --summary "Revamp auth" --body-file spec.md --label auth --priority High
Skill reads spec.md content, shows ADF-converted payload preview, confirms, creates.
Example 3 — custom field with @json escape
User: /create-jira-issue --project ENG --type Task --summary "Sprint task" --custom sprint=@json:[42]
Skill coerces the sprint field as a JSON array literal and shows the preview.
Example 4 — assign to self
User: /create-jira-issue --project ENG --type Bug --summary "Crash on startup" --assignee @me
Skill resolves @me from site.json, includes assignee.accountId in payload, shows preview.
!${CLAUDE_PLUGIN_ROOT}/scripts/config-read-skill-instructions.sh create-jira-issue