From atlassian-sync
Sync Markdown artifacts with Jira and Confluence. Push stories/epics to Jira, pull status updates, publish Confluence pages. Use when user says "sync to jira", "push to jira", "pull from jira", or "sync-jira".
How this skill is triggered — by the user, by Claude, or both
Slash command
/atlassian-sync:sync-jiraThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Bidirectional sync between local `.md` files and Jira Cloud / Confluence Cloud.
Bidirectional sync between local .md files and Jira Cloud / Confluence Cloud.
Zero external dependencies — uses Python 3.8+ stdlib only.
.env file with Atlassian credentials (run /atlassian-sync:configure if not set up)All commands use the Python CLI at ${CLAUDE_PLUGIN_ROOT}/src/atlassian_cli.py:
python3 "${CLAUDE_PLUGIN_ROOT}/src/atlassian_cli.py" <service> <command> [args...]
Before running any sync operation:
.env exists in the project root with required credentials:
ATLASSIAN_SA_EMAIL and ATLASSIAN_API_TOKENATLASSIAN_CLOUD_ID and ATLASSIAN_SITE_URLJIRA_PROJECT_KEY and CONFLUENCE_SPACE_KEY/atlassian-sync:configure to set up."To push a local .md file to Jira:
jira_key fieldjira_key exists (update):
# heading, description from body)python3 "${CLAUDE_PLUGIN_ROOT}/src/atlassian_cli.py" jira update <jira_key> summary="<title>"jira_key is absent (create):
python3 "${CLAUDE_PLUGIN_ROOT}/src/atlassian_cli.py" jira create <PROJECT_KEY> <Story|Epic> "<title>" "<description>" --labels bmad-syncjira_key back to the file's frontmatterTo pull latest Jira state into a local .md file:
jira_key from the file's frontmatter (required)python3 "${CLAUDE_PLUGIN_ROOT}/src/atlassian_cli.py" jira get <jira_key>status, assignee, last_synced_atpython3 "${CLAUDE_PLUGIN_ROOT}/src/atlassian_cli.py" jira transitions <jira_key>python3 "${CLAUDE_PLUGIN_ROOT}/src/atlassian_cli.py" jira transition <jira_key> <transition_id>python3 "${CLAUDE_PLUGIN_ROOT}/src/atlassian_cli.py" jira search "project = PROJ AND status = 'In Progress'"
# List boards
python3 "${CLAUDE_PLUGIN_ROOT}/src/atlassian_cli.py" jira boards PROJ
# Create sprint
python3 "${CLAUDE_PLUGIN_ROOT}/src/atlassian_cli.py" jira create-sprint <BOARD_ID> "Sprint Name" "Sprint goal"
# Move issues to sprint
python3 "${CLAUDE_PLUGIN_ROOT}/src/atlassian_cli.py" jira move-to-sprint <SPRINT_ID> PROJ-1 PROJ-2
.md file contentconfluence_page_id--space KEY to publish to a space other than the default (CONFLUENCE_SPACE_KEY in .env). If the user provides a Confluence URL, extract the space key from it (e.g., https://site.atlassian.net/wiki/spaces/DD/... → --space DD).python3 "${CLAUDE_PLUGIN_ROOT}/src/atlassian_cli.py" confluence get <page_id>python3 "${CLAUDE_PLUGIN_ROOT}/src/atlassian_cli.py" confluence create "<title>" <temp_file> --parent <parent_id> [--space KEY]python3 "${CLAUDE_PLUGIN_ROOT}/src/atlassian_cli.py" confluence create "<title>" <temp_file> --parent <parent_id> [--space KEY]confluence_page_id back to frontmatterpython3 "${CLAUDE_PLUGIN_ROOT}/src/atlassian_cli.py" jira comment <jira_key> "Comment text here"
| Local Status | Jira Status | Jira Transition |
|---|---|---|
draft | To Do | (initial — no transition) |
ready | To Do | To Do |
in-progress | In Progress | Start Progress |
in-review | In Review | Send to Review |
done | Done | Mark Done |
accepted | Done | Mark Done |
blocked | In Progress | Start Progress + blocked label |
cancelled | Won't Do | Won't Do |
The following fields are read/written in .md YAML frontmatter:
| Field | Direction | Purpose |
|---|---|---|
jira_key | Written on create, read on update | Jira issue key (e.g., PROJ-42) |
confluence_page_id | Written on create, read on update | Confluence page ID |
status | Read (push) / Written (pull) | Workflow status |
last_synced_at | Written | ISO 8601 timestamp of last sync |
assignee | Read/Written | User email for Jira assignee |
When local and Jira statuses differ, use the never-downgrade rule: status only moves forward. If Jira is ahead of local, update local. If local is ahead, push to Jira.
For other fields (summary, description), ask the user which version to keep.
npx claudepluginhub 3d-stories/bmad-atlassian-sync --plugin atlassian-syncInteract with Atlassian Jira and Confluence via REST APIs. Create, edit, search, and transition Jira issues; read and write Confluence pages. No MCP server needed.
Provides templates for Confluence docs like TDD, ADR, API, runbooks, release notes. Covers CQL queries and Jira linking for engineering teams managing technical documentation.
Uploads files, screenshots, PDFs, and documents to Jira issues and Confluence pages via Atlassian REST API. Useful for attaching evidence, documentation, or media to Atlassian products.