jira
Skill138 starsChanged 7 months agoMITView on GitHub
Jira integration via acli CLI. Use when user says '/jira', 'check Jira board', 'create Jira ticket', 'move ticket to done', 'search Jira', 'sync blockers from Jira', 'what's in the sprint', 'Jira status', 'assign ticket', 'view backlog', or wants to interact with Jira issues, sprints, or boards from the terminal.
- Installs packages
We split this skill into the rules it gives an agent
31 rules. 0 are common, 15 are distinctive, and 16 are very specific to this project.
0
Common
Most of the 55 edited versions we read keep these.
15
Distinctive
This author's own choices. Worth a look.
16
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 50
Before any sub-command (except setup), verify acli is installed and authenticated:
- Very specific: line 74
If user provides a Jira project key directly (e.g., TEAM), use it
- Very specific: line 75
If user provides a vault project ID (e.g., project-a), look up integrations.jira.project_mapping in _core/config.yaml
- Very specific: line 76
If no project specified, check for a single active project or use integrations.jira.default_board
- Distinctive: line 77
If ambiguous, ask the user
- Distinctive: line 113
After presenting, ask the user for their Jira site URL and email to help configure.
- Distinctive: line 171
Create a Jira issue, optionally from vault note context.
- Distinctive: line 189
Confirm with user: before creating:
- Very specific: line 209
Add jira_key: KEY-123 to frontmatter
- Very specific: line 251
Check vault for any notes with jira_key: KEY-123 in frontmatter and show cross-references.
- Very specific: line 287
If moved to a "shipped" status (per status_mapping): Update note status: resolved or status: shipped
- Distinctive: line 288
If moved to a "blocked" status: Flag in daily note
- Very specific: line 289
Check if archive_on_status_change applies
- Distinctive: line 295
Update fields on an existing Jira issue.
- Very specific: line 327
If me, resolve current user from config
- Very specific: line 391
When unsure, refer to references/jql-cheatsheet.md for patterns.
- Distinctive: line 457
Create a session task for progress tracking
- Very specific: line 459
Read integrations.jira.status_mapping and integrations.jira.project_mapping from config
- Very specific: line 469
Check if a blocker note with jira_key: KEY already exists
- Very specific: line 470
If not, create one using _templates/blocker.md:
- Distinctive: line 475
If exists and still blocked, skip (no-op)
- Very specific: line 476
If exists but now resolved in Jira, update status: resolved
- Distinctive: line 479
Check today's daily note exists
- Very specific: line 485
Update status: resolved (auto-archive rules will handle the rest)
- Distinctive: line 487
Bulk safety: If sync would create 5+ new notes, show summary and confirm:
- Distinctive: line 519
When called with no arguments, show help and a quick status summary.
- Distinctive: line 523
Check acli connection status
- Very specific: line 524
Read Jira config from _core/config.yaml
- Distinctive: line 561
When a vault note is linked to a Jira issue, add to frontmatter:
- Distinctive: line 592
Mutating commands require confirmation: create, move, edit, assign
- Distinctive: line 594
Bulk operations (5+ changes) show summary: before proceeding
“Common” is measured: kept by at least 6 in 10 of the 55 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
/jira — Jira Integration
Bridge your PM-Kit vault with Jira issue tracking via the acli (Atlassian CLI) command-line tool. View boards, create/edit/transition issues, search via JQL, and sync Jira state with vault notes.
Prerequisites
- acli (Atlassian CLI):
brew install aclior download from https://bobswift.atlassian.net/wiki/spaces/ACLI - Jira Cloud or Server instance with API access
- Authentication configured via
acli jira auth login
Context
Today's date: !date +%Y-%m-%d
Config: @_core/config.yaml
Processing rules: @_core/PROCESSING.md
Active projects: !ls 01-index/*.md 2>/dev/null | sed 's|01-index/||;s|\.md||'
Input
User input: $ARGUMENTS
Sub-commands
Parse the first word of $ARGUMENTS to determine the sub-command:
| Input starts with | Sub-command | Purpose | Read/Write |
setup | Setup | Guide installation + auth configuration | Config write |
board | Board | Show board columns with issue counts | Read-only |
create | Create | Create a Jira issue | Jira write + optional vault note |
status | Status | Show details for a specific issue | Read-only |
move | Move | Transition an issue to a new status | Jira write + vault note update |
edit | Edit | Update issue fields | Jira write |
assign | Assign | Assign an issue to someone | Jira write |
backlog | Backlog | Show backlog items | Read-only |
search | Search | Find issues via JQL or natural language | Read-only |
sprint | Sprint | Show active sprint details | Read-only |
sync | Sync | Pull Jira state into vault notes | Vault write (additive only) |
| (empty) | Help | Show help + quick status summary | Read-only |
Step 0: Connection Check
Before any sub-command (except setup), verify acli is installed and authenticated:
# 1. Check acli is installed
command -v acli &>/dev/null
# 2. Check auth works with a simple query
acli jira --action getServerInfo 2>/dev/nullIf either fails:
Jira CLI (acli) is not connected yet.
Run `/jira setup` to install and configure — it takes about 2 minutes.Then stop. Don't attempt other operations without a working connection.
Project Resolution
Many sub-commands accept an optional [PROJECT] argument. Resolve it:
- If user provides a Jira project key directly (e.g.,
TEAM), use it - If user provides a vault project ID (e.g.,
project-a), look upintegrations.jira.project_mappingin_core/config.yaml - If no project specified, check for a single active project or use
integrations.jira.default_board - If ambiguous, ask the user
setup — Install & Configure
Guide the user through installing acli and connecting to their Jira instance.
Steps to present:
## Jira CLI Setup
### Step 1: Install acli
brew install acli
Or download from: https://bobswift.atlassian.net/wiki/spaces/ACLI
### Step 2: Authenticate
acli jira --server https://YOUR-ORG.atlassian.net --user your@email.com --token YOUR_API_TOKEN --action getServerInfo
Generate an API token at: https://id.atlassian.com/manage-profile/security/api-tokens
### Step 3: Save credentials
Create ~/.acli/credentials with:
jira.server = https://YOUR-ORG.atlassian.net
jira.user = your@email.com
jira.token = YOUR_API_TOKEN
### Step 4: Verify
/jira
You should see your Jira instance info and recent activity.After presenting, ask the user for their Jira site URL and email to help configure.
Then update _core/config.yaml integrations block:
integrations:
jira:
enabled: true
site: "your-org.atlassian.net"
email: "your@email.com"
project_mapping:
project-a: TEAM # vault project ID: JIRA PROJECT KEY
default_board: ""
status_mapping:
"To Do": wip
"In Progress": wip
"Done": shipped
"Blocked": blockedConfirm each value with the user before writing.
board — View Board
Show the current board state with issues grouped by column.
Processing
- Resolve project (see Project Resolution above)
- Fetch board data:
acli jira --action getIssueList --project "PROJECT" --outputType json- Group issues by status and present:
## Jira Board — {PROJECT}
### To Do ({count})
- [{KEY}] {summary} — {assignee} ({priority})
### In Progress ({count})
- [{KEY}] {summary} — {assignee} ({priority})
### Done ({count} recent)
- [{KEY}] {summary} — completed {date}- Highlight any issues matching vault blockers (cross-reference by
jira_keyin frontmatter)
create — Create Issue
Create a Jira issue, optionally from vault note context.
Processing
- Determine source — Check if user provided:
- A vault file path or wikilink → Read that note for context
--type,--summary,--descriptionflags → Use directly- Freeform text → Parse into fields
- Nothing → Ask what to create
- Extract issue fields:
- Project: From vault project mapping or ask
- Type: Task (default), Bug, Story, Epic — from
--typeor inferred from note type (blocker→Bug) - Summary: From
--summary, note H1, or frontmatter title - Description: From note body or
--description(convert wikilinks to plain text) - Priority: Map from blocker severity (high→Highest, medium→High, low→Medium) or ask
- Assignee: From
--assigneeor ask (optional)
- Confirm with user before creating:
Creating Jira issue:
Project: {PROJECT}
Type: {type}
Summary: {summary}
Priority: {priority}
Assignee: {assignee}
Proceed? (y/n)- Create the issue:
acli jira --action createIssue --project "PROJECT" --type "Task" --summary "summary" --description "description" --priority "Medium"- Link back — If created from a vault note, update the note:
- Add
jira_key: KEY-123to frontmatter - Add to
## Links > ### Related:
- [KEY-123](https://site.atlassian.net/browse/KEY-123) — Jira issue - Add
- Report the created issue key and URL.
status — Issue Details
Show detailed information for a specific issue.
Processing
- Parse issue key from
$ARGUMENTS(e.g.,TEAM-42) - Fetch issue details:
acli jira --action getIssue --issue "KEY-123" --outputType json- Present formatted output:
## TEAM-42: {summary}
**Status**: {status} | **Priority**: {priority} | **Type**: {type}
**Assignee**: {assignee} | **Reporter**: {reporter}
**Sprint**: {sprint} | **Created**: {date}
### Description
{description}
### Comments ({count})
- {author} ({date}): {comment snippet}...
### Vault Links
- [[blockers/project-a/2026-03-01-api-rate-limit|API Rate Limit]] (jira_key: TEAM-42)- Check vault for any notes with
jira_key: KEY-123in frontmatter and show cross-references.
move — Transition Issue
Move an issue to a new status (e.g., "In Progress" → "Done").
Processing
- Parse issue key and target status from
$ARGUMENTS- e.g.,
/jira move TEAM-42 "Done"or/jira move TEAM-42 done
- e.g.,
- Fetch available transitions:
acli jira --action getTransitionList --issue "KEY-123"- Match target status (case-insensitive, fuzzy match)
- Confirm before executing:
Moving TEAM-42: "API Rate Limit Fix"
From: In Progress
To: Done
Proceed? (y/n)- Execute transition:
acli jira --action transitionIssue --issue "KEY-123" --transition "Done"- Update vault — If a vault note has
jira_key: KEY-123:- If moved to a "shipped" status (per
status_mapping): Update notestatus: resolvedorstatus: shipped - If moved to a "blocked" status: Flag in daily note
- Check if
archive_on_status_changeapplies
- If moved to a "shipped" status (per
edit — Update Issue Fields
Update fields on an existing Jira issue.
Processing
- Parse issue key and fields from
$ARGUMENTS--summary "new title",--description "new desc",--priority High,--labels "label1,label2"
- Confirm before executing:
Updating TEAM-42:
summary: "New Title"
priority: High
Proceed? (y/n)- Execute update:
acli jira --action updateIssue --issue "KEY-123" --summary "New Title" --priority "High"assign — Assign Issue
Assign an issue to a team member.
Processing
- Parse issue key and assignee from
$ARGUMENTS/jira assign TEAM-42 "john.doe"or/jira assign TEAM-42 me
- If
me, resolve current user from config - Confirm before executing:
Assigning TEAM-42 to john.doe
Proceed? (y/n)- Execute:
acli jira --action updateIssue --issue "KEY-123" --assignee "john.doe"backlog — View Backlog
Show backlog items not in the active sprint.
Processing
- Resolve project
- Fetch backlog issues:
acli jira --action getIssueList --project "PROJECT" --filter "sprint not in openSprints()" --outputType json- Present sorted by priority:
## Backlog — {PROJECT} ({count} items)
### High Priority
- [{KEY}] {summary} — {type} ({assignee})
### Medium Priority
- [{KEY}] {summary} — {type} ({assignee})
### Low / Unset
- [{KEY}] {summary} — {type}search — Search Issues
Find issues using JQL or natural language queries.
Processing
- Parse query from
$ARGUMENTS(everything after "search") - Determine if it's JQL or natural language:
- Contains JQL operators (
=,in,AND,ORDER BY, field names likeassignee,status) → Use as JQL - Otherwise → Convert natural language to JQL
- Contains JQL operators (
Natural language → JQL conversion examples:
- "my open bugs" →
assignee = currentUser() AND type = Bug AND status != Done - "high priority in TEAM" →
project = TEAM AND priority in (Highest, High) - "created this week" →
created >= startOfWeek() - "blocked items" →
status = Blocked OR labels = blocked
When unsure, refer to
references/jql-cheatsheet.mdfor patterns.- "my open bugs" →
- Execute search:
acli jira --action getIssueList --jql "YOUR_JQL" --outputType json- Present results:
## Jira Search: "{query}"
Found {count} issues:
| Key | Summary | Status | Assignee | Priority | Updated |
|-----|---------|--------|----------|----------|---------|
| {key} | {summary} | {status} | {assignee} | {priority} | {date} |- Offer follow-up actions: "Want to
/jira status KEYfor details or/jira move KEY statusto transition?"
sprint — Active Sprint
Show the active sprint with progress metrics.
Processing
- Resolve project
- Fetch active sprint data:
acli jira --action getIssueList --project "PROJECT" --filter "sprint in openSprints()" --outputType json- Present with metrics:
## Active Sprint — {sprint name}
**Dates**: {start} → {end} ({days remaining} days left)
**Progress**: {done}/{total} issues ({percent}%)
### Done ({count})
- [{KEY}] {summary}
### In Progress ({count})
- [{KEY}] {summary} — {assignee}
### To Do ({count})
- [{KEY}] {summary} — {assignee}
### Blocked ({count})
- [{KEY}] {summary} — ⚠ {blocker reason}sync — Pull Jira State Into Vault
Sync Jira issue state with vault notes. Additive only — creates/updates vault notes, never deletes.
Processing
- Create a session task for progress tracking
- Resolve project (or sync all mapped projects)
- Read
integrations.jira.status_mappingandintegrations.jira.project_mappingfrom config - Fetch recent issues (updated in last 7 days, or
--days N):
acli jira --action getIssueList --project "PROJECT" --jql "updated >= -7d" --outputType jsonFor each issue, determine vault action based on
status_mapping:Blocked issues → Create/update blocker notes:
- Check if a blocker note with
jira_key: KEYalready exists - If not, create one using
_templates/blocker.md:jira_key: KEY-123in frontmattertags: [KEY-123]severitymapped from Jira priority## Linksincludes[KEY-123](https://site/browse/KEY-123)
- If exists and still blocked, skip (no-op)
- If exists but now resolved in Jira, update
status: resolved
Shipped issues → Update daily note:
- Check today's daily note exists
- Append shipped items under the relevant project's
### Shippedsection - Format:
- [{KEY}] {summary} ✓
Resolved blockers → Archive:
- Find vault blockers with matching
jira_keywhere Jira status maps to "shipped" - Update
status: resolved(auto-archive rules will handle the rest)
- Check if a blocker note with
- Bulk safety: If sync would create 5+ new notes, show summary and confirm:
Sync will create:
- 3 new blocker notes
- 7 shipped items added to daily note
- 2 blockers resolved
Proceed? (y/n)- Report what was synced:
## Jira Sync Complete — {date}
Created: 3 blocker notes
Updated: 2 blockers → resolved
Daily: 7 shipped items added
Skipped: 12 issues (no vault action needed)Flags
--days N— Look back N days (default: 7)--dry-run— Show what would change without writing--project {name}— Sync only one project
(empty) — Help & Quick Status
When called with no arguments, show help and a quick status summary.
Processing
- Check acli connection status
- Read Jira config from
_core/config.yaml - Count vault notes linked to Jira issues:
grep -rl "^jira_key:" --include="*.md" | wc -l- Present:
## Jira Integration
**Status**: Connected to {site}
**Mapped projects**: {project-a} → TEAM, ...
**Vault links**: {count} notes linked to Jira issues
### Commands
| Command | Example | Purpose |
|---------|---------|---------|
| board | `/jira board TEAM` | View board columns |
| create | `/jira create TEAM --summary "..."` | Create issue |
| status | `/jira status TEAM-42` | Issue details |
| move | `/jira move TEAM-42 Done` | Transition issue |
| edit | `/jira edit TEAM-42 --summary "..."` | Update fields |
| assign | `/jira assign TEAM-42 john` | Assign issue |
| backlog | `/jira backlog TEAM` | View backlog |
| search | `/jira search "my open bugs"` | Search via JQL |
| sprint | `/jira sprint TEAM` | Active sprint |
| sync | `/jira sync` | Pull state into vault |
| setup | `/jira setup` | Configure connection |Vault Integration Patterns
Frontmatter Tagging
When a vault note is linked to a Jira issue, add to frontmatter:
jira_key: TEAM-42
tags: [TEAM-42]Cross-Reference Format
In note body and ## Links sections, use:
[TEAM-42](https://your-org.atlassian.net/browse/TEAM-42)Status Mapping
Map Jira statuses to PM-Kit categories via integrations.jira.status_mapping in config:
| Jira Status | PM-Kit Category |
| To Do | wip |
| In Progress | wip |
| Done | shipped |
| Blocked | blocked |
Users can customize this mapping for their Jira workflow (e.g., add "In Review" → wip).
Safety Rules
- Read-only commands execute without confirmation: board, status, search, sprint, backlog
- Mutating commands require confirmation: create, move, edit, assign
- Sync is additive only — creates/updates vault notes, never deletes vault content
- Bulk operations (5+ changes) show summary before proceeding
- API tokens are handled by acli — never log, display, or store tokens in vault files
- Never auto-transition Jira issues based on vault changes — Jira writes only happen via explicit commands
Error Handling
| Error | Response |
| acli not installed | Show install instructions, suggest /jira setup |
| Not authenticated | Show auth steps, link to API token page |
| Invalid project key | Show available projects from config mapping |
| Issue not found | Suggest search, check key format |
| Transition not available | Show available transitions for the issue |
| No project mapping | Ask user to configure in _core/config.yaml or run /jira setup |
Additional Resources
Reference Files
references/jql-cheatsheet.md— Common JQL patterns for PMs
Scripts
scripts/check-jira.sh— Verify acli installation and auth status
Other versions60 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 60
- meganz/android★ 1.9ksame name
- oracle/graalpython★ 1.7ksame name
- microsoft/hve-core★ 1.6ksame name
- SonarSource/SonarJS★ 1.3ksame name
- mongodb/docs★ 779same name
- sd0xdev/sd0x-dev-flow★ 192same name
- sd0xdev/sd0x-harness★ 192same name
- magnus919/agent-skills★ 162same name
- oprogramadorreal/optimus-claude★ 75same name
- grandcamel/JIRA-Assistant-Skills★ 47same name
50 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use confluence, usecase and 6 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
SpillwaveSolutionsSkillconfluence
Manage Confluence documentation with downloads, uploads, conversions, and diagrams. Use when asked to "download Confluence pages", "upload to Confluence", "convert Wiki Markup", "sync markdown to Confluence", "create Confluence page", or "handle Confluence images".
Also in 9 projects that use this
meganzSkillusecase
Create, update, and refactor Android Use Cases using Test-Driven Development (TDD). Enforces writing test cases before production code, follows project use case conventions (@Inject constructor, operator fun invoke, single responsibility), and supports three modes: create, update, and refactor.
Also in 3 projects that use this
SentrySkilldatadog
Query live Datadog telemetry (logs, metrics, traces, spans, monitors, incidents, dashboards, services, hosts) through Datadog's Pup CLI. Use when users ask to investigate production behavior in Datadog, including searching logs, checking monitor status, inspecting traces or spans, looking up incidents, finding services, or correlating metrics. Do not use it for Sentry issues, repository/source-code work, or ticketing.
Also in 3 projects that use this
refly-aiSkillhubspot
Integrate with HubSpot for CRM management. Use when you need to: (1) manage contacts and deals, (2) track sales pipelines, or (3) automate marketing and CRM workflows.
Also in 3 projects that use this
montymiSkilltech-spec
Parse and review Technical Specification documents for completeness, consistency, and implementation readiness
Also in 3 projects that use this
hdcolaSkillpr-comments
Fetch unresolved review comments from a GitHub PR or mark comments as resolved. Use this when managing PR review feedback, checking pending comments, or marking review threads as resolved. Supports GitHub URLs or explicit owner/repo/PR-number from anywhere, or PR number auto-detection from within a git repository.
Also in 3 projects that use this
In this repository41 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- askSkill
- blockSkill
- dailySkill
- decideSkill
- discoverSkill
- docSkill
- docxSkill
- excalidraw-generatorSkill
- explainSkill
- gwsSkill
- healthSkill
- helpSkill
- inboxSkill
- interviewSkill
- journeySkill
- json-canvasSkill
- linearSkill
- meetSkill
- mermaid-visualizerSkill
- notionSkill
- obsidian-basesSkill
- obsidian-cliSkill
- obsidian-markdownSkill
- onboardSkill
- pdfSkill
- pptxSkill
- previewSkill
- prioritizeSkill
- progressSkill
- pushSkill
- reportSkill
- show-meSkill
- skill-creatorSkill
- todaySkill
- updateSkill
- vault-opsSkill
- weeklySkill
- xlsxSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

