Autonomously work on Jira backlog tickets, creating PRs and shepherding them to merge
66
58%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Advisory
Suggest reviewing before use
Optimize this skill with Tessl
npx tessl skill review --optimize ./.claude/skills/auto-jira/SKILL.mdThis skill autonomously identifies Jira backlog tickets for a given board that can be worked on without human intervention, implements the code change, and creates draft PRs. Once a draft PR is open, the skill moves on to the next ticket.
Arguments: $ARGUMENTS
For every write action:
Write actions include: creating PRs, posting Jira comments, pushing commits, transitioning ticket status, assigning tickets.
Track all work in AUTO_JIRA.md (gitignored, local only):
NEVER commit this file. Update it as you work, removing notes for completed work and keeping focus on in-progress state and next steps.
Per-ticket loop (repeat until --max-cards reached or no eligible tickets):
1. SELECT TICKET -> Find eligible ticket from board backlog
2. CLAIM TICKET -> Assign to user + add to current sprint
3. IMPLEMENT -> Code change
4. VERIFY -> Run dda inv test + dda inv linter.go on affected packages (fix before continuing)
5. COMMIT & PUSH -> Single focused commit, then git push
6. CREATE PR (DRAFT) -> Open draft PR against main
7. FIX PR TITLE -> Rename to [auto-jira][<KEY>] <description> using gh pr edit
8. LINK & COMMENT -> Post PR link on Jira ticket| When you need to... | Read this |
|---|---|
| Select or claim a Jira ticket | ticket-workflow.md |
| Create a PR | pr-workflow.md |
| Evaluate a ticket that links to CI logs | ci-validation.md |
| Debug common issues | troubleshooting.md |
Do NOT load all docs at once. Only read what is relevant to the current task.
Parse $ARGUMENTS:
ACTP, AGENTCFG, CONTINT3)If BOARD is missing, stop and ask the user.
Initialize AUTO_JIRA.md:
# Auto-JIRA Run — <BOARD> — <TODAY>
## Configuration
- Board: <BOARD>
- Max cards: <N>
- Before date: <BEFORE_DATE>
- Exclude: <EXCLUDED_WORDS or "none">
## In Progress
_none_
## Skipped
_none_Use the Atlassian MCP tools as the primary method:
mcp__atlassian__searchJiraIssuesUsingJql — query tickets
mcp__atlassian__getJiraIssue — fetch ticket details
mcp__atlassian__editJiraIssue — assign, update fields
mcp__atlassian__transitionJiraIssue — change status
mcp__atlassian__addCommentToJiraIssue — add comments
mcp__atlassian__getTransitionsForJiraIssue — list available transitions
mcp__atlassian__atlassianUserInfo — get your account IDAll calls use cloudId: datadoghq.atlassian.net.
If MCP authentication fails for any reason, STOP. Mark the ticket HOLD and report the failure.
Discover the repository root from the current working tree:
git rev-parse --show-toplevelAlways work from this directory. If this command fails (not in a git repo), stop and inform the user.
Local checks catch problems before CI. Do not skip or work around them:
--no-verifydda inv install-toolsDO work on tickets that:
jira_statuses for the team in .ddqa/config.toml (typically To Do)<BEFORE_DATE>do-not-autosolve is NOT setDO NOT work on tickets that:
When uncertain → skip. The goal is reliable autonomous completion, not ambitious attempts that get stuck.
Check eligibility quickly — do a codebase search to confirm the issue is not already fixed before starting any implementation work.
Every interaction must be clearly attributed as coming from Auto-JIRA.
| Platform | Format |
|---|---|
| Jira comment | End with: — Auto-JIRA (https://github.com/DataDog/datadog-agent/blob/main/.claude/skills/auto-jira/SKILL.md) |
| GitHub PR body | Include: _Created by [Auto-JIRA](https://github.com/DataDog/datadog-agent/blob/main/.claude/skills/auto-jira/SKILL.md)._ |
| GitHub comment | End with: _— [Auto-JIRA](https://github.com/DataDog/datadog-agent/blob/main/.claude/skills/auto-jira/SKILL.md)_ |
| Commit | Co-author line: Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
When something requires human intervention:
AUTO_JIRA.md with the blockerTriggers:
Print TASK COMPLETED only when ALL are true:
--max-cards limit has been reachedPrint TASK FAILED only when:
After completing one ticket, always check for more work before stopping.
Every write action needs PRE-CHECK and POST-CHECK.
PRE-ACTION:
Agent(
prompt="""You are a Critic agent.
MODE: PRE-ACTION
PROPOSED ACTION:
[What you are about to do]
PROPOSED CONTENT:
[The exact message / comment / command]
Verify all factual claims and links. Respond APPROVED or REJECTED with evidence.""",
subagent_type="general-purpose"
)POST-ACTION:
Agent(
prompt="""You are a Critic agent.
MODE: POST-ACTION
ACTION TAKEN:
[What was supposed to happen]
EXPECTED RESULT:
[What should be visible now]
Verify the action actually succeeded. Respond APPROVED or REJECTED with evidence.""",
subagent_type="general-purpose"
)If Critic rejects: fix the issues, try again, get a clean APPROVED before continuing.
--no-verify) or force-push to main.git add -A or git add . — stage specific files by name.AUTO_JIRA.md — local tracking only..claude/skills/auto-jira/ — the auto-jira skill must not edit itself. If a ticket would require changes to these files, skip it.| State | When to use |
|---|---|
| In Progress | Actively working on implementation |
| HOLD | Blocked, needs human intervention |
Branch naming: auto-jira/<KEY>-brief-description (lowercase, hyphens only)
0f36ad4
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.