helpers/skills/jira-workitem-comment/SKILL.md
Add comments to Jira tickets using simple text or Jira markup (ADF JSON). Supports rich formatting with code blocks, lists, mentions, and links. Use when user wants to comment on a ticket.
npx skillsauth add opendatahub-io/ai-helpers jira-workitem-commentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Add comments to Jira tickets using the acli CLI with support for both simple text and rich Atlassian Document Format (ADF).
acli must be installed and authenticated (acli jira auth)Before proceeding, verify that acli is installed and authenticated by invoking the acli-setup-check skill:
/acli-setup-check
If the setup check fails, stop execution and guide the user to fix the issue.
Ticket Key:
[A-Z]+-\d+Comment Content:
Comment Type:
For plain text comments, write the comment text to a temporary file and use acli to create the comment:
# Validate ticket key format (PROJECT-NUMBER)
TICKET_KEY="<ticket-key-from-step-2>"
if [[ ! "$TICKET_KEY" =~ ^[A-Z]+-[0-9]+$ ]]; then
echo "Error: Invalid ticket key format. Expected PROJECT-NUMBER (e.g., AIPCC-1234)"
exit 1
fi
# Write comment to temp file (uses system temp directory)
TMPFILE=$(mktemp -t acli-comment-XXXX.txt)
cat > "$TMPFILE" << 'EOF'
<comment text goes here>
EOF
# Create the comment with validated ticket key
acli jira workitem comment create --key "$TICKET_KEY" --body-file "$TMPFILE"
# Clean up
rm -f "$TMPFILE"
For comments that need rich formatting (code blocks, lists, mentions, links), construct an ADF JSON structure.
Basic text with formatting:
{
"version": 1,
"type": "doc",
"content": [
{
"type": "paragraph",
"content": [
{"type": "text", "text": "This is "},
{"type": "text", "text": "bold text", "marks": [{"type": "strong"}]},
{"type": "text", "text": " and "},
{"type": "text", "text": "italic text", "marks": [{"type": "em"}]}
]
}
]
}
Code block:
{
"version": 1,
"type": "doc",
"content": [
{
"type": "paragraph",
"content": [
{"type": "text", "text": "Here's the fix:"}
]
},
{
"type": "codeBlock",
"attrs": {"language": "python"},
"content": [
{
"type": "text",
"text": "def hello():\n print('Hello, world!')"
}
]
}
]
}
Bullet list:
{
"version": 1,
"type": "doc",
"content": [
{
"type": "bulletList",
"content": [
{
"type": "listItem",
"content": [
{
"type": "paragraph",
"content": [{"type": "text", "text": "First item"}]
}
]
},
{
"type": "listItem",
"content": [
{
"type": "paragraph",
"content": [{"type": "text", "text": "Second item"}]
}
]
}
]
}
]
}
Link:
{
"version": 1,
"type": "doc",
"content": [
{
"type": "paragraph",
"content": [
{"type": "text", "text": "See "},
{
"type": "text",
"text": "the documentation",
"marks": [
{
"type": "link",
"attrs": {"href": "https://example.com/docs"}
}
]
}
]
}
]
}
User mention:
{
"version": 1,
"type": "doc",
"content": [
{
"type": "paragraph",
"content": [
{
"type": "mention",
"attrs": {
"id": "557058:12345678-abcd-1234-abcd-123456789012",
"text": "@code-samurai"
}
},
{"type": "text", "text": " please review"}
]
}
]
}
Write the ADF JSON to a temporary file and create the comment:
# Validate ticket key format (PROJECT-NUMBER)
TICKET_KEY="<ticket-key-from-step-2>"
if [[ ! "$TICKET_KEY" =~ ^[A-Z]+-[0-9]+$ ]]; then
echo "Error: Invalid ticket key format. Expected PROJECT-NUMBER (e.g., AIPCC-1234)"
exit 1
fi
# Write ADF JSON to temp file (uses system temp directory)
TMPFILE=$(mktemp -t acli-comment-XXXX.json)
cat > "$TMPFILE" << 'EOF'
{
"version": 1,
"type": "doc",
"content": [...]
}
EOF
# Create comment with ADF and validated ticket key
acli jira workitem comment create --key "$TICKET_KEY" --body-file "$TMPFILE"
# Clean up
rm -f "$TMPFILE"
For important or lengthy comments, show a preview to the user:
I'll add this comment to <TICKET-KEY>:
---
<comment preview>
---
Should I proceed?
Wait for confirmation before creating the comment.
After successfully creating the comment, report to the user:
Comment added to <TICKET-KEY>
View: https://redhat.atlassian.net/browse/<TICKET-KEY>
Use ADF (Step 3b) when the comment includes:
Use simple text (Step 3a) for:
acli-setup-check skillacli-setup-check skillUser: Add a comment to AIPCC-1234 saying the fix is ready for review
Assistant: [Creates simple text comment]
Comment added to AIPCC-1234
View: https://redhat.atlassian.net/browse/AIPCC-1234
User: Comment on AIPCC-5678 with this error message: [paste error]
Assistant: [Creates ADF comment with code block]
Comment added to AIPCC-5678 with formatted code block
View: https://redhat.atlassian.net/browse/AIPCC-5678
User: Add a status update to AIPCC-910 with these action items:
- Fix merged to main
- QA testing in progress
- Deployment scheduled for Friday
Assistant: [Creates ADF comment with bullet list]
Comment added to AIPCC-910
View: https://redhat.atlassian.net/browse/AIPCC-910
tools
Use this skill to filter a pre-fetched set of Hacker News stories down to those that report supply-chain security threats relevant to software developers — including malicious packages on npm or PyPI, compromised developer tooling, and attacks targeting source code repositories or CI/CD infrastructure. Reads stories from stories.json in the workspace, performs semantic analysis (fetching HN threads when the title alone is ambiguous), and writes the stories worth alerting on to findings.json.
development
Run hexora static analysis on a Python package repository to detect suspicious code patterns, then triage findings with deterministic rules and AI reasoning to produce a structured risk report section.
development
Inspect recent git history of a Python package repository for suspicious commits touching supply-chain-sensitive files, then triage findings with AI reasoning to produce a structured risk report section.
development
Scan a Python package repository for compiled/binary files using Fromager-style detection and malcontent YARA analysis, then triage findings with deterministic rules and AI reasoning to produce a structured risk report section.