Expert guide for setting up bidirectional synchronization between SpecWeave and external tools (GitHub Issues, Jira Epics, Azure DevOps Work Items). Provides interactive setup wizards with sync direction options (bidirectional, export-only, import-only, manual). Activates for GitHub sync, Jira integration, Azure DevOps, ADO, external tool setup, issue tracking sync, sync configuration, bidirectional sync, import issues, export increments, sync direction, GitHub issues, Jira epics, work items, project management tools.
Inherits all available tools
Additional assets for this skill
This skill inherits all available tools. When active, it can use any tool Claude has access to.
I'm a specialist in configuring synchronization between SpecWeave (your local source of truth) and external project management tools like GitHub Issues, Jira, and Azure DevOps.
Ask me when you need help with:
Critical Understanding: .specweave/docs/specs/ is the permanent, local source of truth. External tools (GitHub, Jira, ADO) are MIRRORS of this truth.
✅ CORRECT Architecture:
.specweave/docs/specs/ ↔ GitHub Issues
.specweave/docs/specs/ ↔ Jira Epics
.specweave/docs/specs/ ↔ Azure DevOps Work Items
❌ WRONG (External-to-External):
GitHub PRs ↔ Jira
GitHub Issues ↔ Jira Epics
The Hub is LOCAL, not external!
When setting up sync, users choose from 4 options:
| Option | Direction | Description | Use Case |
|---|---|---|---|
| Bidirectional | Local ↔ External | Changes sync both ways | Team collaboration (recommended) |
| Export only | Local → External | Push from Local to External | SpecWeave is source of truth |
| Import only | External → Local | Pull from External to Local | Onboarding existing projects |
| Manual sync | On-demand | No auto-sync, use commands manually | Testing, one-off syncs |
Default recommendation: Bidirectional (most useful for teams)
Question: "Do you want to sync increments to GitHub Issues?"
If YES → Proceed to authentication setup:
brew install gh (macOS) or equivalentgh auth logingh repo set-defaultIf NO → Skip GitHub sync setup
CRITICAL: The prompt MUST say "between local increments and GitHub", NOT "between GitHub and Jira"!
Question:
"What should be the sync behavior between local increments (.specweave/) and GitHub Issues?"
Options:
1. Bidirectional sync (Recommended)
Local increments ↔ GitHub Issues
Features:
- Changes sync both ways automatically (on task completion)
- Conflicts: You will be prompted to resolve when both sides change
- Scope: Active increments only (completed/abandoned not auto-synced)
- Example: Complete task in SpecWeave → GitHub issue updates with progress
Best for: Teams using both SpecWeave and GitHub for project tracking
2. Export only (Local → GitHub)
Local increments → GitHub Issues
Features:
- SpecWeave is source of truth, GitHub is read-only mirror
- Changes push from local to GitHub only
- GitHub changes are ignored (must update locally)
- Example: Create increment in SpecWeave → GitHub issue created automatically
Best for: Solo developers who prefer SpecWeave but want GitHub visibility
3. Import only (GitHub → Local)
GitHub Issues → Local increments
Features:
- GitHub is source of truth, local workspace mirrors it
- Changes pull from GitHub to local only
- Good for: Onboarding existing GitHub projects
- Example: Close GitHub issue → Local increment status updates
Best for: Migrating from GitHub-first workflow to SpecWeave
4. Manual sync only
Use /sw-github:sync command when needed
Features:
- No automatic sync via hooks
- Full control over when sync happens
- Good for: Testing, one-off syncs, experimental increments
Best for: Advanced users who want explicit control
Visual Aid (include in prompt):
✅ CORRECT Architecture:
Local (.specweave/) ↔ GitHub Issues
❌ WRONG:
GitHub ↔ Jira
Question: "Should SpecWeave auto-create GitHub issues when planning increments?"
Options:
1. Yes, auto-create (Recommended)
Every /sw:increment creates a GitHub issue automatically
Benefits:
- Immediate team visibility
- Bidirectional sync works from day 1
- Zero manual work
- Links: spec.md, plan.md, tasks.md included in issue
Best for: Teams that want automatic GitHub integration
2. No, manual creation
Use /sw-github:create-issue manually when needed
Benefits:
- Create issues only for important increments
- More control over what goes to GitHub
- Good for: Experimental/internal increments
Best for: Solo developers or selective GitHub usage
Question: "Do you want to sync increments to Jira Epics?"
If YES → Proceed to authentication setup:
your-company.atlassian.netPROJ (e.g., AUTH, PAY, INFRA)If NO → Skip Jira sync setup
Question:
"What should be the sync behavior between local increments (.specweave/) and Jira Epics?"
Options:
1. Bidirectional sync (Recommended)
Local increments ↔ Jira Epics
Features:
- Changes sync both ways automatically (on task completion)
- Conflicts: You will be prompted to resolve when both sides change
- Scope: Active increments only
- Example: Complete task in SpecWeave → Jira epic status updates
Best for: Teams using both SpecWeave and Jira for project management
2. Export only (Local → Jira)
Local increments → Jira Epics
Features:
- SpecWeave is source of truth, Jira is read-only mirror
- Changes push from local to Jira only
- Jira changes are ignored (must update locally)
- Example: Create increment in SpecWeave → Jira epic created automatically
Best for: Developers who prefer SpecWeave but need Jira reporting
3. Import only (Jira → Local)
Jira Epics → Local increments
Features:
- Jira is source of truth, local workspace mirrors it
- Changes pull from Jira to local only
- Good for: Onboarding existing Jira projects
- Example: Update Jira epic → Local increment syncs
Best for: Migrating from Jira-first workflow to SpecWeave
4. Manual sync only
Use /sw-jira:sync command when needed
Features:
- No automatic sync via hooks
- Full control over when sync happens
Best for: Advanced users or testing scenarios
Question: "Do you want to sync increments to Azure DevOps work items?"
If YES → Proceed to authentication setup:
https://dev.azure.com/your-orgMyProjectIf NO → Skip ADO sync setup
Question:
"What should be the sync behavior between local increments (.specweave/) and Azure DevOps work items?"
Options:
1. Bidirectional sync (Recommended)
Local increments ↔ ADO Work Items
Features:
- Changes sync both ways automatically (on task completion)
- Conflicts: You will be prompted to resolve when both sides change
- Scope: Active increments only
- Example: Complete task in SpecWeave → ADO work item updates
Best for: Enterprise teams using Azure DevOps
2. Export only (Local → ADO)
Local increments → ADO Work Items
Features:
- SpecWeave is source of truth, ADO is read-only mirror
- Changes push from local to ADO only
- ADO changes are ignored (must update locally)
- Example: Create increment in SpecWeave → ADO work item created automatically
Best for: Developers who prefer SpecWeave with ADO visibility
3. Import only (ADO → Local)
ADO Work Items → Local increments
Features:
- ADO is source of truth, local workspace mirrors it
- Changes pull from ADO to local only
- Good for: Onboarding existing ADO projects
- Example: Update ADO work item → Local increment syncs
Best for: Migrating from ADO-first workflow to SpecWeave
4. Manual sync only
Use /sw-ado:sync command when needed
Features:
- No automatic sync via hooks
- Full control over when sync happens
Best for: Advanced users or selective sync scenarios
config.plugins.enabled arraySecrets (.env - gitignored):
# GitHub
GITHUB_TOKEN=ghp_xxx
# Jira
JIRA_API_TOKEN=xxx
JIRA_EMAIL=user@example.com
# Azure DevOps
ADO_PAT=xxx
Configuration (.specweave/config.json - committed to git):
{
"plugins": {
"enabled": ["github", "jira", "ado"]
},
"sync": {
"github": {
"enabled": true,
"direction": "bidirectional",
"autoCreateIssue": true,
"repo": "owner/repo"
},
"jira": {
"enabled": true,
"direction": "bidirectional",
"domain": "company.atlassian.net",
"projectKey": "PROJ"
},
"ado": {
"enabled": true,
"direction": "export-only",
"organization": "your-org",
"project": "MyProject"
}
}
}
Trigger: Task completion hook (post-task-completion.sh)
Flow:
tasks.md updatedConflict Resolution:
Trigger: Task completion hook
Flow:
Use Case: SpecWeave is the authoritative source, external tools are read-only mirrors
Trigger: Manual /specweave-[tool]:sync command
Flow:
Use Case: Onboarding existing projects from external tools
Trigger: Explicit command
Flow:
/sw-github:sync [increment-id]Use Case: Testing, one-off syncs, advanced control
A: SpecWeave syncs to BOTH independently:
.specweave/docs/specs/ ↔ GitHub Issues
.specweave/docs/specs/ ↔ Jira Epics
GitHub and Jira do NOT sync with each other. SpecWeave is the hub.
A: Yes! Edit .specweave/config.json:
{
"sync": {
"github": {
"direction": "export-only" // Change from bidirectional
}
}
}
A: Depends on sync direction:
A:
/sw-github:import-allA: Yes! Use manual sync:
/sw-github:sync 0042-auth-feature # Sync specific increment
Auto-sync only affects active increments (not completed/abandoned).
/sw:incrementDiagnosis:
gh auth status.specweave/config.json → sync.github.autoCreateIssue: true.specweave/increments/####/metadata.json has github sectionFix:
# Manual creation
/sw-github:create-issue 0042-auth-feature
Diagnosis:
.envconfig.json.specweave/logs/sync-*.logFix:
# Manual sync
/sw-jira:sync 0042-auth-feature --force
Diagnosis:
Resolution Options:
Example:
⚠️ Conflict detected for increment 0042-auth-feature
Field: status
Local value: in-progress
GitHub value: completed
Choose resolution:
1. Keep local (in-progress)
2. Keep external (completed)
3. Merge manually
Your choice:
Most teams benefit from bidirectional sync:
If you're working alone and just need GitHub visibility:
When migrating from GitHub/Jira to SpecWeave:
When experimenting or testing:
Golden Rule: Never manually edit the same field in both SpecWeave and external tool simultaneously.
Example:
/sw-github:sync [increment-id] - Manual sync/sw-github:create-issue [increment-id] - Create issue/sw-github:close-issue [increment-id] - Close issue/sw-github:import-all - Import all GitHub issues/sw-github:status [increment-id] - Check sync status/sw-jira:sync [increment-id] - Manual sync/sw-jira:create-epic [increment-id] - Create epic/sw-jira:import-all - Import all Jira epics/sw-jira:status [increment-id] - Check sync status/sw-ado:sync [increment-id] - Manual sync/sw-ado:create-workitem [increment-id] - Create work item/sw-ado:import-all - Import all ADO work items/sw-ado:status [increment-id] - Check sync statusRemember: SpecWeave is your local source of truth. External tools are mirrors. Sync is about keeping mirrors up-to-date, not managing dual sources of truth.