skills/jira-report-comment/SKILL.md
This skill should be used when the user asks to "jira report", "post update to jira", "summarize commits for jira", "report to jira", "update the ticket", "comment on the ticket", "generate implementation report", "write a jira comment", "summarize my changes", or wants to notify PM/QA about completed work on a Jira ticket. Generates a business-friendly implementation report from git commits and saves it as a local markdown report.
npx skillsauth add alexander-danilenko/ai-skills jira-report-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.
Generate a short Jira comment (60-100 words) describing what shipped on a ticket, and save it as a local markdown file.
Announce at start: "Using the jira-report-comment skill to generate an implementation report."
The reader is a PM, QA engineer, or architect who already has the Jira ticket open. They do not need a recap of the ticket. They need:
Default output:
Verify and Deploy appear only when a Decision Rule in Step 4 is triggered.
Determine the Jira issue key using this priority:
If the user provided an issue key (e.g., "CX-4328"), use it directly.
Otherwise, extract from the current branch name:
git branch --show-current
Find the first match of [A-Z]+-[0-9]+ (e.g., feature/ABC-1234-description yields ABC-1234).
If no key can be determined, ask the user.
Confirm the resolved key before proceeding: "I detected CX-4328 from your branch. Use this issue key?"
After confirming the issue key, reserve the output file. This locks the filename for the session - all writes go to this file.
mkdir -p docs/jira-reports
touch "docs/jira-reports/$(date +%Y-%m-%d-%H%M%S)-<ISSUE_KEY>.md"
Store the full path in conversation context (e.g., docs/jira-reports/2026-03-27-153012-ABC-123.md). If the skill is invoked again in the same session for the same issue, reuse this path - do not create a new file.
Retrieve the issue. Try the Atlassian MCP tool first:
mcp__atlassian__getJiraIssue
issueIdOrKey: "<ISSUE_KEY>"
If the MCP tool is unavailable or fails, ask the user: "Atlassian MCP is not available. Please paste the issue text (title, description, acceptance criteria) or provide an XML export."
Read and note:
This is what the reader already knows. Do not paraphrase, quote, or restate any phrase from these in the comment. Use this content as the reference for what to leave out, not as material for the report.
Find all commits referencing the issue key:
git log --grep="<ISSUE_KEY>" --format="%H %s" --reverse
If no commits found, widen the search:
git log --all --grep="<ISSUE_KEY>" --format="%H %s" --reverse
If still no commits, fall back to diffing the current branch against its base:
git merge-base HEAD main
git diff $(git merge-base HEAD main)..HEAD --stat
git diff $(git merge-base HEAD main)..HEAD
Try main, then master, then develop as the base branch. If no meaningful diff is found, inform the user and stop.
For the aggregate diff across all found commits (first commit's parent to last commit):
git diff <FIRST_COMMIT>^..<LAST_COMMIT> --stat
git diff <FIRST_COMMIT>^..<LAST_COMMIT>
If the first commit is the initial repository commit (no parent), use git diff $(git hash-object -t tree /dev/null)..<LAST_COMMIT> instead.
This shows the net result across all commits, not incremental progress.
If the diff is very large (50+ files), focus on the stat summary and read only the most significant files. Configuration files, test files, and migration files often reveal intent better than implementation details.
For tickets that fix an existing problem, also read commit messages for cause clues. The diff itself shows before-vs-after - that is where root cause lives.
Load the output skeleton:
references/report-template.md - read this now for the structureDefault output:
Add a Root Cause section if the ticket fixes an existing problem - the description mentions broken behavior, an incorrect result, a defect, or a regression. Issue type Bug is a strong but not required signal; some Story or Task tickets also fix problems.
The section explains:
Limit to 1 or 2 bullets, max 25 words each. Derive both from the diff and commit messages, not from the ticket description.
Add a Verify section if AT LEAST ONE is true:
Add a Deploy section if AT LEAST ONE is true:
If neither set of triggers fires: write only the summary. Stop.
references/formatting-rules.md and follow it.Draft in this order:
If Root Cause, Verify, and Deploy are all empty after step 3, the comment is the summary line and nothing else.
BUG-789 "Cancellation email sent twice when a user cancels their subscription"onCancellation handler registration in SubscriptionEvents. The newer onSubscriptionCancelled handler now sends the email alone. Test added covering single-send behavior.Comment:
BUG-789
Cancellation now sends a single confirmation email.
Root Cause
- Two handlers were subscribed to the cancellation event after a partial refactor - the new
onSubscriptionCancelledand the legacyonCancellationwere both firing.- Removed the legacy registration; the new handler is the single source of truth.
The ticket described the symptom; Root Cause explains the underlying duplication. No Verify (the test path matches the ticket); no Deploy (routine code change).
XYZ-456 "Send weekly digest email to active members"weekly_digest_enabled (default off), new env var DIGEST_SENDER_EMAIL.Comment:
XYZ-456
Weekly digest emails now ship every Monday at 9am to active members, skipping accounts with no activity in the last 7 days.
Deploy
- Set
DIGEST_SENDER_EMAILin production before enabling the feature- Toggle
weekly_digest_enabledto on after a smoke test- First scheduled run lands the Monday after deploy
The test path matches what the ticket described, so no Verify section. Deploy fires because of the new env var, the new flag, and the new cron entry.
Write the report content to the reserved file path (overwriting the empty placeholder):
Write tool -> file_path: <RESERVED_FILE_PATH>
content: <REPORT_CONTENT>
Confirm to the user: "Report saved to <RESERVED_FILE_PATH>."
If the user requests changes, revise and overwrite the same file.
If the humanize-text skill is available, run the final report through it before presenting to the user.
references/report-template.md - Output skeleton. Load in Step 4.references/formatting-rules.md - Length and style rules. Load alongside the skeleton in Step 4.development
Apply these opinionated documentation conventions when adding docstrings, OpenAPI specs, or doc sites: Microsoft style (contract over implementation), language-specific docstrings (JSDoc, Google, NumPy), OpenAPI/Swagger, doc portals, tutorials, user guides.
tools
Apply these opinionated TypeScript conventions when writing TS in this codebase: branded types, advanced generics, conditional and utility types, type guards, discriminated unions, strict tsconfig, tRPC, monorepo setup.
tools
Apply these opinionated testing conventions when writing tests or test strategies: three modes (functional, performance, security), unit/integration/E2E patterns, coverage analysis, automation frameworks, defect tracking, accessibility and usability.
development
Apply this opinionated workflow when reverse-engineering legacy or undocumented systems: scope, explore with Glob/Grep/Read, trace data flows, document in EARS format, flag uncertainties. For code archaeology, onboarding, and requirements extraction.