skills/jira/SKILL.md
--- name: jira description: Create, read, update, comment on, and transition Jira tickets via the Atlassian Remote MCP server. Defaults to the DAFO (Dataforce) project on the Simplicity Labs site. Use when user wants to file a Jira ticket, move a DAFO ticket between board columns, list the board, assign work, or comment on a ticket. Pairs with /ro:confluence and /ro:jira-to-gh. category: project-management argument-hint: [create <Bug|Story|Task|Feature> "title" [--body "..."] [--assignee <accoun
npx skillsauth add RonanCodes/ronan-skills skills/jiraInstall 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.
Opinionated wrapper around the Atlassian Remote MCP server's Jira tools. Reads defaults from ~/.claude/.env so the common case (DAFO ticket on simplicitylabs.atlassian.net) is one short line.
/ro:jira create Bug "Reorder watch fails when SKU has spaces" --body "Repro: ..."
/ro:jira create Story "As a Taskforce ops user, I want bulk inventory adjust"
/ro:jira create Task "Refresh Nango proxy header docs"
/ro:jira move DAFO-42 "In Progress"
/ro:jira move DAFO-42 done
/ro:jira list # active sprint, all statuses
/ro:jira list --status "In Review"
/ro:jira show DAFO-42
/ro:jira comment DAFO-42 "Blocked on Taskforce confirming the SKU format"
/ro:jira assign DAFO-42 me
Override defaults per-call: --project ANOTHER --site other.atlassian.net.
claude mcp add --transport http --scope user atlassian https://mcp.atlassian.com/v1/mcp/authv2
/mcp in any Claude Code session and step through the browser auth for the atlassian server. The token persists across sessions.~/.claude/.env (already wired for Ronan):
ATLASSIAN_SITE=simplicitylabs.atlassian.net
ATLASSIAN_JIRA_PROJECT_DEFAULT=DAFO
ATLASSIAN_JIRA_BOARD_DEFAULT=34
If claude mcp list does not show atlassian as connected, this skill cannot run. Tell the user to install + OAuth before proceeding.
The skill is a playbook over the Atlassian MCP tools — at runtime, look up the actual tool names via the live mcp__atlassian__* tool list (Atlassian iterates on these). Map verbs to tools using the table below.
| Verb | What to do | Atlassian MCP tool to call (typical name) |
|---|---|---|
| create | Read defaults from ~/.claude/.env, build payload (project key, issue type, summary, optional description, labels, assignee), call create | createJiraIssue / atlassian_jira_create_issue |
| move | Look up valid transitions for the ticket, fuzzy-match the user's status string, apply | transitionJiraIssue / atlassian_jira_transition_issue |
| list | Build JQL: project = ${PROJECT} AND sprint in openSprints(), optional AND status = "${status}", render compact table (key, type, status, assignee, title) | searchJiraIssuesUsingJql |
| show | Fetch full issue, render summary + description + status + assignee + last 3 comments + linked Confluence pages | getJiraIssue |
| comment | Post comment body, return URL to ticket | addJiraIssueComment |
| assign | Resolve me to the OAuthed user's accountId; pass unassign as null | assignJiraIssue or update via editJiraIssue |
| Column | When to use | |---|---| | To Do | Ticket exists, not picked up yet | | In Progress | Active work (Skip or Ronan) | | In Review | PR open, waiting on review/agreement; partner-facing Tasks may sit here longer | | Done | Live in production — ticket moves to Done only when shipped |
Be strict on the Done rule when the user asks to close a ticket: only move to Done if the work is deployed. Otherwise use In Review.
Default issue type when ambiguous: ask the user. Do not silently pick.
create: the new ticket key + browser URL (e.g. https://simplicitylabs.atlassian.net/browse/DAFO-42)move: confirm old status → new status + ticket URLlist: a markdown table (no more than 30 rows; if more, paginate by sprint)show: structured summary above, raw description belowcomment/assign: confirm + URLAlways print the URL so the user can click through in Obsidian / terminal.
/ro:jira-to-gh to mirror a DAFO ticket as a GH issue in RonanCodes/dataforce or to seed /ro:write-a-prd from the ticket body./ro:confluence link <page-id> DAFO-42 to attach research docs to a ticket./ro:jira show walk-through can be ingested into llm-wiki-simplicity-taskforce-partnership via /ingest text with the ticket URL as source.| Symptom | Cause | Fix |
|---|---|---|
| "No atlassian MCP tools available" | OAuth not done | /mcp then complete browser flow |
| "Invalid transition" on move | Status name doesn't match the workflow exactly | Skill should fuzzy-match; if it can't, list valid transitions and ask |
| "Project not found" | DAFO default not loaded or site wrong | Verify ~/.claude/.env has ATLASSIAN_* defaults; pass --project / --site explicitly |
| Tickets created with wrong reporter | OAuthed account is not the intended one | Re-run /mcp and re-auth as the correct user |
[[atlassian-rovo-mcp]] in llm-wiki-skill-lab (pattern note — write on first real use)development
--- name: worktree description: Coordinate multiple agents on one repo via a worktree-lock pool, so two agents never clobber each other's working tree. Acquire the first free slot (main, then beta/gamma… worktrees, created on demand), work there on your own branch, release when you've pushed. Use before modifying any repo that might be in use by another agent (factory, dataforce, etc.), or whenever you're told a repo is being worked on. Backed by `ro worktree`. category: development argument-hin
testing
--- name: ship description: Ship a feature branch the local-CI-first way — run the full local gate, push, open a PR, squash-merge, then deploy, without waiting on GitHub Actions. Use when a branch is ready for main and you want it merged and deployed now. Reads CI policy from `ro ci` (default skips remote CI because GitHub Actions billing keeps hitting limits). Sibling to /ro:gh-ship (waits on GitHub checks) and /ro:cf-ship (the deploy half). Triggers on "ship it", "ship this", "merge and deploy
testing
--- name: setup-logging description: Set up (or audit) the observability stack in a TanStack Start + Cloudflare Workers app so it is "diagnosable by default" — structured logging (logtape) with a request context carrying trace_id + userId + tenant/orgId, a trace_id propagated FE→BE→logs→Sentry→PostHog, Cloudflare Workers observability enabled, and Sentry + PostHog wired. Two modes: `setup` (wire it into an app) and `audit` (check an existing app + report gaps). Use when scaffolding a new app, wh
development
Manage credentials INSIDE the active ~/.claude/.env file — read which token/account to use for a given app (Simplicity vs Dataforce vs Ronan-personal), add or update a secret WITHOUT it passing through the chat (an interactive Terminal window prompts for it), and track secrets that were exposed in a transcript so they get rotated. Sibling to /ro:context (which switches WHICH env file is active). Use when the user wants to add an API key/token/secret, asks "which credential do I use for X", needs the env organized/labelled, or a secret was pasted into the chat and should be rotated.