update-jira-ticket

Formats and validates Jira issue descriptions and comments across ADF, Markdown, and HTML clients.

1|1|Updated Feb 25, 2026
One-click install
npx skills add https://github.com/williamthorsen/codeassembly --skill update-jira-ticket-williamthorsen
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: update-jira-ticket
Source: https://github.com/williamthorsen/codeassembly/tree/main/packages/agents/content/skills/update-jira-ticket
Command: npx skills add https://github.com/williamthorsen/codeassembly --skill update-jira-ticket-williamthorsen

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Jira stores every issue body as Atlassian Document Format (ADF), but different clients accept different input formats, and the HTML-to-ADF conversion frequently rejects valid-looking HTML with an opaque INVALID_INPUT error. This Skill routes content through the correct path for each client and pre-validates HTML payloads before any MCP round-trip. ## Core Features & Use Cases - Client-aware routing: Identifies whether the client is acli (ADF), a contentFormat-based tool like createJiraIssue/editJiraIssue (Markdown), or an HTML-based tool like create_jira_issue/update_jira_issue, then applies the correct submission rules for each. - Pre-flight HTML checker: A bundled Node.js script validates rendered HTML against every known INVALID_INPUT trigger class, including disallowed elements, Confluence ac:/ri: constructs, named entities, multi-line pre blocks, and code combined with other inline marks. - Checklist handling: Converts Markdown task-list syntax to plain bullets on Markdown and HTML paths, or to native ADF taskList/taskItem nodes on the acli path. - Recovery protocol: When an unknown failure class slips through, it guides probe-ticket bisection with mcp-probe tagging and records failures to a JSONL log for future checker hardening. - Use Case: You drafted acceptance criteria with - [ ] checkboxes in a planning artefact and need to update a Jira ticket via update_jira_issue. The Skill flattens the checkboxes, renders allowlist-only HTML, runs the checker until it returns ok: true, and submits inline. ## Quick Start Ask the agent to update a Jira ticket description from your Markdown notes, and it will pick the right client path and validate the payload before submitting.

Frequently Asked Questions about update-jira-ticket

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I update a Jira ticket description without getting INVALID_INPUT errors?

Author content in Markdown, convert it to HTML using only the allowed element set, then run the bundled pre-flight checker before calling create_jira_issue or update_jira_issue. Fix every finding until the checker returns ok: true, and pass the HTML inline rather than as a file path.

How do I create a Jira issue with Markdown using createJiraIssue?

Pass the Markdown body directly with contentFormat set to markdown on createJiraIssue, or under fields on editJiraIssue. Convert any task-list syntax to plain bullets first, since Jira escapes the brackets instead of rendering checkboxes.

Why do Markdown checkboxes not render in Jira descriptions?

Jira's Markdown and HTML to ADF conversions escape the task-list brackets, so - [ ] persists as a literal bullet. Native checkboxes exist only as ADF taskList and taskItem nodes, which are available only when submitting ADF through acli.

Can I pass Markdown to acli jira workitem create?

No. acli parses the description as Jira wiki markup, so headings become nested ordered list items and punctuation gets backslash-escaped. Convert Markdown to ADF and pass it via --description-file, reserving plain text for structure-free one-liners.

What HTML elements are allowed in Jira description_html payloads?

The allowlist covers headings h1 through h6, p, ul, ol, li, strong, em, code, a, blockquote, hr, br, and table elements. Confluence ac: and ri: constructs, pre blocks, and named entities other than amp, lt, and gt must be stripped.

What should I do when Jira rejects a payload the checker approved?

Follow the recovery protocol: present options to the user, and if probing is chosen, create an mcp-probe-labelled ticket with a minimal payload and bisect the content to isolate the failing fragment. Record the failure as a JSON line in the skill-failures log, capped at four retries.