Bidirectional sync between Markdown artifacts and Jira/Confluence Cloud. Push stories and epics to Jira, pull status updates, publish Confluence pages — all from frontmatter-driven .md files.
npx claudepluginhub 3d-stories/bmad-atlassian-syncBidirectional sync between Markdown artifacts and Jira/Confluence Cloud. Push stories and epics to Jira, pull status updates, publish Confluence pages — all from frontmatter-driven .md files.
Bidirectional sync between Markdown artifacts and Jira Cloud / Confluence Cloud. Built for the BMAD Method but works standalone with any project.
claude plugin add https://github.com/3D-Stories/bmad-atlassian-sync.git
claude plugin install atlassian-sync
Then in any project:
/atlassian-sync:configure — walks you through credentials and project setup/atlassian-sync:sync-jira — push, pull, and sync your .md files with Jira/ConfluenceNo Node.js required. Only Python 3.8+ (stdlib only, zero pip packages).
.md frontmatter (status, timestamps, remote changes)/atlassian-sync:sync-jira in any projectjira_key, confluence_page_id, last_synced_at written back to .md files automaticallyFor BMAD module or TypeScript CLI usage, you also need:
This tool authenticates via the Atlassian Cloud API (api.atlassian.com) using Basic auth with a service account email and API token.
Read:
read:jira-userread:jira-workread:meread:accountread:board-scope.admin:jira-softwareread:board-scope:jira-softwareread:epic:jira-softwareread:issue:jira-softwareread:sprint:jira-softwareread:confluence-content.allread:confluence-content.summaryread:confluence-space.summaryWrite:
write:jira-work (classic scope — required for creating/updating issues via REST v3)write:board-scope:jira-softwarewrite:board-scope.admin:jira-softwarewrite:epic:jira-softwarewrite:issue:jira-softwarewrite:sprint:jira-softwarewrite:confluence-contentwrite:confluence-filewrite:confluence-propswrite:content:confluencewrite:content.property:confluenceNote: The Agile v1 API (boards, sprints) requires the granular Jira Software scopes above. If you get
401 Unauthorized; scope does not matchon board/sprint operations, verify these scopes are on your token. The classicwrite:jira-workscope is also required alongside the granular scopes — they are not interchangeable.
Visit https://your-domain.atlassian.net/_edge/tenant_info and copy the cloudId value.
Create a .env file in your project root (copy from .env.example):
ATLASSIAN_SA_EMAIL=your-service-account@serviceaccount.atlassian.com
ATLASSIAN_API_TOKEN=your-api-token
ATLASSIAN_CLOUD_ID=your-cloud-id
ATLASSIAN_SITE_URL=https://your-domain.atlassian.net
JIRA_PROJECT_KEY=PROJ
CONFLUENCE_SPACE_KEY=PROJ
JIRA_BOARD_ID=1
Works with any project. No BMAD required. Only needs Python 3.8+.
claude plugin add https://github.com/3D-Stories/bmad-atlassian-sync.git
claude plugin install atlassian-sync
Test locally during development:
claude --plugin-dir ./path/to/bmad-atlassian-sync
Two skills are available after install:
/atlassian-sync:configure — set up credentials and project config/atlassian-sync:sync-jira — push, pull, and sync operationsRequires BMAD v6.2.1+.
git clone https://github.com/3D-Stories/bmad-atlassian-sync.git
cd bmad-atlassian-sync
./scripts/install-bmad.sh /path/to/your-bmad-project