specweave 0.30.12 → 0.30.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/.claude-plugin/marketplace.json +0 -11
  2. package/CLAUDE.md +1 -1
  3. package/bin/fix-marketplace-errors.sh +1 -1
  4. package/dist/src/cli/commands/init.d.ts.map +1 -1
  5. package/dist/src/cli/commands/init.js +13 -0
  6. package/dist/src/cli/commands/init.js.map +1 -1
  7. package/dist/src/cli/helpers/ado-area-selector.d.ts.map +1 -1
  8. package/dist/src/cli/helpers/ado-area-selector.js +13 -0
  9. package/dist/src/cli/helpers/ado-area-selector.js.map +1 -1
  10. package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +1 -1
  11. package/dist/src/cli/helpers/issue-tracker/index.js +7 -2
  12. package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
  13. package/dist/src/cli/helpers/issue-tracker/sync-config-writer.d.ts +7 -0
  14. package/dist/src/cli/helpers/issue-tracker/sync-config-writer.d.ts.map +1 -1
  15. package/dist/src/cli/helpers/issue-tracker/sync-config-writer.js +33 -2
  16. package/dist/src/cli/helpers/issue-tracker/sync-config-writer.js.map +1 -1
  17. package/dist/src/cli/workers/clone-worker.js +19 -3
  18. package/dist/src/cli/workers/clone-worker.js.map +1 -1
  19. package/dist/src/core/living-docs/board-matcher.d.ts +120 -0
  20. package/dist/src/core/living-docs/board-matcher.d.ts.map +1 -0
  21. package/dist/src/core/living-docs/board-matcher.js +466 -0
  22. package/dist/src/core/living-docs/board-matcher.js.map +1 -0
  23. package/dist/src/core/living-docs/foundation-builder.js +1 -1
  24. package/dist/src/core/living-docs/foundation-builder.js.map +1 -1
  25. package/dist/src/core/living-docs/living-docs-sync.d.ts +19 -8
  26. package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
  27. package/dist/src/core/living-docs/living-docs-sync.js +148 -52
  28. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
  29. package/dist/src/core/living-docs/suggestions-generator.js +1 -1
  30. package/dist/src/core/living-docs/suggestions-generator.js.map +1 -1
  31. package/dist/src/core/living-docs/umbrella-detector.d.ts +4 -0
  32. package/dist/src/core/living-docs/umbrella-detector.d.ts.map +1 -1
  33. package/dist/src/core/living-docs/umbrella-detector.js +20 -1
  34. package/dist/src/core/living-docs/umbrella-detector.js.map +1 -1
  35. package/dist/src/core/living-docs/workitem-matcher.js +5 -5
  36. package/dist/src/core/living-docs/workitem-matcher.js.map +1 -1
  37. package/dist/src/importers/item-converter.d.ts +4 -0
  38. package/dist/src/importers/item-converter.d.ts.map +1 -1
  39. package/dist/src/importers/item-converter.js +4 -0
  40. package/dist/src/importers/item-converter.js.map +1 -1
  41. package/dist/src/init/repo/types.d.ts +1 -1
  42. package/dist/src/living-docs/enterprise-analyzer.d.ts.map +1 -1
  43. package/dist/src/living-docs/enterprise-analyzer.js +70 -19
  44. package/dist/src/living-docs/enterprise-analyzer.js.map +1 -1
  45. package/dist/src/living-docs/epic-id-allocator.d.ts +4 -0
  46. package/dist/src/living-docs/epic-id-allocator.d.ts.map +1 -1
  47. package/dist/src/living-docs/epic-id-allocator.js +4 -0
  48. package/dist/src/living-docs/epic-id-allocator.js.map +1 -1
  49. package/dist/src/living-docs/fs-id-allocator.d.ts +4 -0
  50. package/dist/src/living-docs/fs-id-allocator.d.ts.map +1 -1
  51. package/dist/src/living-docs/fs-id-allocator.js +4 -0
  52. package/dist/src/living-docs/fs-id-allocator.js.map +1 -1
  53. package/dist/src/living-docs/smart-doc-organizer.d.ts +114 -0
  54. package/dist/src/living-docs/smart-doc-organizer.d.ts.map +1 -0
  55. package/dist/src/living-docs/smart-doc-organizer.js +535 -0
  56. package/dist/src/living-docs/smart-doc-organizer.js.map +1 -0
  57. package/package.json +13 -13
  58. package/plugins/PLUGINS-INDEX.md +2 -3
  59. package/plugins/specweave/commands/specweave-judge.md +265 -0
  60. package/plugins/specweave/commands/specweave-organize-docs.md +185 -0
  61. package/plugins/specweave/hooks/hooks.json +3 -3
  62. package/plugins/specweave/hooks/universal/hook-wrapper.cmd +26 -0
  63. package/plugins/specweave/hooks/universal/hook-wrapper.sh +67 -0
  64. package/plugins/specweave-ado/commands/{specweave-ado-close-workitem.md → close.md} +9 -5
  65. package/plugins/specweave-ado/commands/{specweave-ado-create-workitem.md → create.md} +9 -5
  66. package/plugins/specweave-ado/commands/pull.md +459 -0
  67. package/plugins/specweave-ado/commands/push.md +361 -0
  68. package/plugins/specweave-ado/commands/{specweave-ado-status.md → status.md} +12 -0
  69. package/plugins/specweave-ado/commands/{specweave-ado-sync.md → sync.md} +64 -3
  70. package/plugins/specweave-ado/hooks/README.md +1 -1
  71. package/plugins/specweave-docs/commands/build.md +158 -0
  72. package/plugins/specweave-docs/commands/{docs-generate.md → generate.md} +10 -5
  73. package/plugins/specweave-docs/commands/health.md +268 -0
  74. package/plugins/specweave-docs/commands/{docs-init.md → init.md} +11 -6
  75. package/plugins/specweave-docs/commands/organize.md +184 -0
  76. package/plugins/specweave-docs/commands/preview.md +138 -0
  77. package/plugins/specweave-docs/skills/preview/SKILL.md +105 -0
  78. package/plugins/specweave-github/agents/user-story-updater/AGENT.md +1 -1
  79. package/plugins/specweave-github/commands/{specweave-github-close-issue.md → close.md} +2 -2
  80. package/plugins/specweave-github/commands/{specweave-github-create-issue.md → create.md} +2 -2
  81. package/plugins/specweave-github/commands/pull.md +142 -0
  82. package/plugins/specweave-github/commands/push.md +154 -0
  83. package/plugins/specweave-github/commands/{specweave-github-sync.md → sync.md} +19 -5
  84. package/plugins/specweave-github/commands/{specweave-github-update-user-story.md → update-user-story.md} +1 -1
  85. package/plugins/specweave-github/hooks/README.md +1 -1
  86. package/plugins/specweave-jira/commands/pull.md +164 -0
  87. package/plugins/specweave-jira/commands/push.md +170 -0
  88. package/plugins/specweave-jira/commands/{specweave-jira-sync.md → sync.md} +18 -3
  89. package/plugins/specweave-jira/hooks/README.md +1 -1
  90. package/plugins/specweave-kafka/README.md +20 -0
  91. package/plugins/specweave-kafka/benchmarks/kafka-throughput.benchmark.ts +551 -0
  92. package/plugins/specweave-kafka/examples/README.md +191 -0
  93. package/plugins/specweave-kafka/examples/avro-schema-registry/.env.example +8 -0
  94. package/plugins/specweave-kafka/examples/avro-schema-registry/README.md +69 -0
  95. package/plugins/specweave-kafka/examples/avro-schema-registry/consumer.js +37 -0
  96. package/plugins/specweave-kafka/examples/avro-schema-registry/package.json +14 -0
  97. package/plugins/specweave-kafka/examples/avro-schema-registry/producer.js +57 -0
  98. package/plugins/specweave-kafka/examples/exactly-once-semantics/.env.example +5 -0
  99. package/plugins/specweave-kafka/examples/exactly-once-semantics/README.md +30 -0
  100. package/plugins/specweave-kafka/examples/exactly-once-semantics/eos-pipeline.js +79 -0
  101. package/plugins/specweave-kafka/examples/exactly-once-semantics/package.json +11 -0
  102. package/plugins/specweave-kafka/examples/kafka-streams-app/.env.example +4 -0
  103. package/plugins/specweave-kafka/examples/kafka-streams-app/README.md +30 -0
  104. package/plugins/specweave-kafka/examples/kafka-streams-app/package.json +11 -0
  105. package/plugins/specweave-kafka/examples/kafka-streams-app/windowed-aggregation.js +66 -0
  106. package/plugins/specweave-kafka/examples/n8n-workflow/README.md +54 -0
  107. package/plugins/specweave-kafka/examples/n8n-workflow/docker-compose.yml +19 -0
  108. package/plugins/specweave-kafka/examples/n8n-workflow/kafka-to-slack.json +50 -0
  109. package/plugins/specweave-kafka/examples/simple-producer-consumer/.env.example +15 -0
  110. package/plugins/specweave-kafka/examples/simple-producer-consumer/README.md +183 -0
  111. package/plugins/specweave-kafka/examples/simple-producer-consumer/consumer.js +60 -0
  112. package/plugins/specweave-kafka/examples/simple-producer-consumer/docker-compose.yml +30 -0
  113. package/plugins/specweave-kafka/examples/simple-producer-consumer/package.json +18 -0
  114. package/plugins/specweave-kafka/examples/simple-producer-consumer/producer.js +52 -0
  115. package/plugins/specweave-release/commands/specweave-release-npm.md +26 -239
  116. package/plugins/specweave-docs-preview/.claude-plugin/plugin.json +0 -21
  117. package/plugins/specweave-docs-preview/commands/build.md +0 -489
  118. package/plugins/specweave-docs-preview/commands/preview.md +0 -355
  119. package/plugins/specweave-docs-preview/skills/docs-preview/SKILL.md +0 -386
  120. /package/plugins/specweave-ado/commands/{specweave-ado-clone-repos.md → clone.md} +0 -0
  121. /package/plugins/specweave-ado/commands/{specweave-ado-import-areas.md → import-areas.md} +0 -0
  122. /package/plugins/specweave-ado/commands/{specweave-ado-import-projects.md → import-projects.md} +0 -0
  123. /package/plugins/specweave-github/commands/{specweave-github-cleanup-duplicates.md → cleanup-duplicates.md} +0 -0
  124. /package/plugins/specweave-github/commands/{specweave-github-reconcile.md → reconcile.md} +0 -0
  125. /package/plugins/specweave-github/commands/{specweave-github-status.md → status.md} +0 -0
  126. /package/plugins/specweave-jira/commands/{specweave-jira-import-boards.md → import-boards.md} +0 -0
  127. /package/plugins/specweave-jira/commands/{specweave-jira-import-projects.md → import-projects-full.md} +0 -0
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: preview
3
+ description: Documentation preview expert for Docusaurus integration. Launches interactive preview server for SpecWeave living documentation with hot reload, auto-generated sidebar, and Mermaid diagrams. Activates for preview docs, view documentation, Docusaurus server, docs UI, documentation website, local docs server, hot reload docs, static site build.
4
+ ---
5
+
6
+ # Documentation Preview Skill
7
+
8
+ Expert in launching and managing Docusaurus documentation preview for SpecWeave projects.
9
+
10
+ ## What I Do
11
+
12
+ I help you preview and build your SpecWeave living documentation with Docusaurus:
13
+
14
+ ### 1. Interactive Preview
15
+ - Launch local development server (default port: 3016)
16
+ - Auto-generate sidebar from folder structure
17
+ - Hot reload - edit markdown, see changes instantly
18
+ - Mermaid diagram rendering
19
+ - Mobile-responsive UI
20
+ - Search functionality
21
+
22
+ ### 2. Static Site Building
23
+ - Build production-ready static site
24
+ - Output to `.specweave/docs-site-internal/build/`
25
+ - Ready for deployment to any static host
26
+ - Optimized for performance
27
+
28
+ ### 3. Smart Setup
29
+ - Lazy installation (only installs when first used)
30
+ - Checks Node.js version (18+ required)
31
+ - Installs Docusaurus dependencies automatically
32
+ - Configures from `.specweave/config.json` settings
33
+
34
+ ## Available Commands
35
+
36
+ ### Preview Documentation
37
+ ```bash
38
+ /specweave-docs:preview
39
+ ```
40
+
41
+ **What it does:**
42
+ 1. Checks if Docusaurus is installed (installs if needed)
43
+ 2. Generates sidebar from `.specweave/docs/internal/` structure
44
+ 3. Starts development server on port 3016 (configurable)
45
+ 4. Opens browser automatically
46
+ 5. Enables hot reload
47
+
48
+ ### Build Static Site
49
+ ```bash
50
+ /specweave-docs:build
51
+ ```
52
+
53
+ **What it does:**
54
+ 1. Checks if Docusaurus is installed
55
+ 2. Runs production build
56
+ 3. Outputs to `.specweave/docs-site-internal/build/`
57
+ 4. Shows build stats and output path
58
+
59
+ ## When to Use This Skill
60
+
61
+ ### Activate for questions like:
62
+ - "How do I preview my documentation?"
63
+ - "Show me my docs in a UI"
64
+ - "Launch Docusaurus server"
65
+ - "View my living documentation"
66
+ - "Start docs preview"
67
+ - "Build static docs site"
68
+
69
+ ### Common workflows:
70
+
71
+ **1. First-time preview:**
72
+ ```
73
+ User: "I want to preview my docs"
74
+ You: "I'll set up the documentation preview with Docusaurus."
75
+ [Run: /specweave-docs:preview]
76
+ ```
77
+
78
+ **2. Build for deployment:**
79
+ ```
80
+ User: "I need to deploy my docs"
81
+ You: "I'll build the static site for deployment."
82
+ [Run: /specweave-docs:build]
83
+ ```
84
+
85
+ ## Configuration
86
+
87
+ ```json
88
+ {
89
+ "documentation": {
90
+ "preview": {
91
+ "enabled": true,
92
+ "autoInstall": true,
93
+ "port": 3016,
94
+ "openBrowser": true,
95
+ "theme": "default"
96
+ }
97
+ }
98
+ }
99
+ ```
100
+
101
+ ## See Also
102
+
103
+ - `/specweave-docs:organize` - Organize large folders with themed indexes
104
+ - `/specweave-docs:health` - Documentation health report
105
+ - `/specweave-docs:generate` - Generate docs from code
@@ -161,7 +161,7 @@ Agent: "I'll update GitHub issue #501 for US-004 to include checkable ACs and ta
161
161
 
162
162
  **Related Files**:
163
163
  - `plugins/specweave-github/lib/user-story-content-builder.ts` - Core builder class
164
- - `plugins/specweave-github/commands/specweave-github-update-user-story.md` - Command spec
164
+ - `plugins/specweave-github/commands/update-user-story.md` - Command spec
165
165
  - `.specweave/docs/internal/specs/{project}/FS-*/us-*.md` - User story files
166
166
 
167
167
  **Testing**:
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: specweave-github:close-issue
2
+ name: specweave-github:close
3
3
  description: Close GitHub issue for completed SpecWeave increment. Posts completion summary with final stats, deliverables, and closes the issue. Links closure in increment metadata.
4
4
  ---
5
5
 
@@ -7,7 +7,7 @@ description: Close GitHub issue for completed SpecWeave increment. Posts complet
7
7
 
8
8
  Close the GitHub issue associated with a completed SpecWeave increment.
9
9
 
10
- ## Usage
10
+ **Usage**: `/specweave-github:close <increment-id>`
11
11
 
12
12
  ```bash
13
13
  /specweave:github:close-issue <increment-id> [options]
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: specweave-github:create-issue
2
+ name: specweave-github:create
3
3
  description: Create a GitHub issue for a SpecWeave increment. Generates issue from increment specs with task checklist, labels, and milestone. Links issue to increment metadata.
4
4
  ---
5
5
 
@@ -7,7 +7,7 @@ description: Create a GitHub issue for a SpecWeave increment. Generates issue fr
7
7
 
8
8
  Create a GitHub issue for the specified SpecWeave increment.
9
9
 
10
- ## Usage
10
+ **Usage**: `/specweave-github:create <increment-id>`
11
11
 
12
12
  ```bash
13
13
  /specweave:github:create-issue <increment-id> [options]
@@ -0,0 +1,142 @@
1
+ ---
2
+ name: specweave-github:pull
3
+ description: Pull latest changes from GitHub Issues (like git pull). Imports comments, labels, and status changes.
4
+ ---
5
+
6
+ # GitHub Pull Command
7
+
8
+ **Usage**: `/specweave-github:pull [increment-id]`
9
+
10
+ **Purpose**: Pull latest changes from GitHub Issues to your local increment (like `git pull`)
11
+
12
+ ---
13
+
14
+ ## Quick Start
15
+
16
+ ```bash
17
+ # Pull for current/active increment
18
+ /specweave-github:pull
19
+
20
+ # Pull for specific increment
21
+ /specweave-github:pull 0005
22
+ ```
23
+
24
+ ---
25
+
26
+ ## What Gets Pulled
27
+
28
+ | Field | Behavior |
29
+ |-------|----------|
30
+ | **Status** | Issue state (open/closed) -> increment status |
31
+ | **Labels** | Priority labels imported |
32
+ | **Comments** | New team comments imported to notes |
33
+ | **Assignees** | Updated if changed |
34
+ | **Milestone** | Iteration/sprint mapping |
35
+
36
+ ---
37
+
38
+ ## Command Behavior
39
+
40
+ When user runs this command:
41
+
42
+ ### 1. Resolve Increment
43
+
44
+ ```typescript
45
+ const incrementId = args.incrementId || await findActiveIncrement();
46
+
47
+ const metadata = JSON.parse(await fs.readFile(
48
+ `.specweave/increments/${incrementId}/metadata.json`, 'utf-8'
49
+ ));
50
+
51
+ const issueNumber = metadata?.external_sync?.github?.issue;
52
+ if (!issueNumber) {
53
+ console.log(`Not linked to GitHub. Run: /specweave-github:create ${incrementId}`);
54
+ return;
55
+ }
56
+ ```
57
+
58
+ ### 2. Fetch and Compare
59
+
60
+ ```
61
+ Use Task tool with subagent_type: "specweave-github:github-manager:AGENT"
62
+
63
+ Prompt: "Pull changes from GitHub for increment {increment-id}.
64
+
65
+ Issue: #{issueNumber}
66
+
67
+ Steps:
68
+ 1. Fetch issue #{issueNumber} via gh api
69
+ 2. Compare GitHub state vs local status
70
+ 3. Apply conflict resolution (external wins for status)
71
+ 4. Import new comments to increment notes
72
+ 5. Update labels/assignees in metadata
73
+ 6. Display what changed"
74
+ ```
75
+
76
+ ### 3. Display Changes
77
+
78
+ ```
79
+ Pulled from GitHub
80
+
81
+ Issue: #123
82
+ Repository: owner/repo
83
+
84
+ Changes Applied:
85
+ Status: open -> closed (mapped to: completed)
86
+ Labels: +bug, +priority-high
87
+ Comments: 2 new imported
88
+
89
+ Last synced: 2025-12-04 10:30:00
90
+ URL: https://github.com/owner/repo/issues/123
91
+ ```
92
+
93
+ ---
94
+
95
+ ## Status Mapping
96
+
97
+ | GitHub State | SpecWeave Status |
98
+ |--------------|------------------|
99
+ | `open` | in-progress |
100
+ | `closed` | completed |
101
+
102
+ ---
103
+
104
+ ## Examples
105
+
106
+ ### Example 1: Simple Pull
107
+
108
+ ```
109
+ User: /specweave-github:pull
110
+
111
+ Claude:
112
+ Pulling from GitHub...
113
+ Increment: 0005-payment-integration
114
+ Issue: #123
115
+
116
+ Changes Applied:
117
+ Status: open -> closed (completed)
118
+
119
+ Pull complete!
120
+ ```
121
+
122
+ ### Example 2: Not Linked
123
+
124
+ ```
125
+ User: /specweave-github:pull 0005
126
+
127
+ Claude:
128
+ Increment 0005 not linked to GitHub yet.
129
+
130
+ To link: /specweave-github:create 0005
131
+ ```
132
+
133
+ ---
134
+
135
+ ## Related Commands
136
+
137
+ | Command | Purpose |
138
+ |---------|---------|
139
+ | `/specweave-github:push` | Push local changes to GitHub |
140
+ | `/specweave-github:sync` | Two-way sync (pull + push) |
141
+ | `/specweave-github:status` | Check sync status |
142
+ | `/specweave-github:create` | Create GitHub issue |
@@ -0,0 +1,154 @@
1
+ ---
2
+ name: specweave-github:push
3
+ description: Push local progress to GitHub Issues (like git push). Updates issue with task completion checklist.
4
+ ---
5
+
6
+ # GitHub Push Command
7
+
8
+ **Usage**: `/specweave-github:push [increment-id]`
9
+
10
+ **Purpose**: Push local progress to GitHub Issues (like `git push`)
11
+
12
+ ---
13
+
14
+ ## Quick Start
15
+
16
+ ```bash
17
+ # Push current/active increment
18
+ /specweave-github:push
19
+
20
+ # Push specific increment
21
+ /specweave-github:push 0005
22
+ ```
23
+
24
+ ---
25
+
26
+ ## What Gets Pushed
27
+
28
+ | Field | Source |
29
+ |-------|--------|
30
+ | **Task Checklist** | Updated from tasks.md completion |
31
+ | **Comment** | Auto-generated progress update |
32
+ | **Labels** | Status labels updated |
33
+ | **State** | Closed if 100% complete |
34
+
35
+ ---
36
+
37
+ ## Command Behavior
38
+
39
+ When user runs this command:
40
+
41
+ ### 1. Check Permission Gate
42
+
43
+ ```typescript
44
+ const config = JSON.parse(await fs.readFile('.specweave/config.json', 'utf-8'));
45
+ const canUpdateExternal = config?.sync?.settings?.canUpdateExternalItems ?? false;
46
+
47
+ if (!canUpdateExternal) {
48
+ console.log(`
49
+ Permission Denied: GitHub writes disabled
50
+
51
+ To enable: Set sync.settings.canUpdateExternalItems = true
52
+
53
+ Or use read-only: /specweave-github:pull ${incrementId}
54
+ `);
55
+ return;
56
+ }
57
+ ```
58
+
59
+ ### 2. Calculate Progress
60
+
61
+ ```typescript
62
+ const tasksContent = await fs.readFile(
63
+ `.specweave/increments/${incrementId}/tasks.md`, 'utf-8'
64
+ );
65
+
66
+ const totalTasks = (tasksContent.match(/### T-\d+/g) || []).length;
67
+ const completedTasks = (tasksContent.match(/\[x\] completed/gi) || []).length;
68
+ const percentage = Math.round((completedTasks / totalTasks) * 100);
69
+ ```
70
+
71
+ ### 3. Invoke Push Sync
72
+
73
+ ```
74
+ Use Task tool with subagent_type: "specweave-github:github-manager:AGENT"
75
+
76
+ Prompt: "Push progress to GitHub for increment {increment-id}.
77
+
78
+ Issue: #{issueNumber}
79
+ Progress: {completedTasks}/{totalTasks} ({percentage}%)
80
+
81
+ Steps:
82
+ 1. Update issue body task checklist
83
+ 2. Add progress comment
84
+ 3. Update labels if needed
85
+ 4. Close issue if 100% complete (if canUpdateStatus)
86
+ 5. Update sync timestamp"
87
+ ```
88
+
89
+ ### 4. Display Result
90
+
91
+ ```
92
+ Pushed to GitHub
93
+
94
+ Issue: #123
95
+ Repository: owner/repo
96
+
97
+ Progress: 6/10 tasks (60%)
98
+
99
+ Updates:
100
+ Task checklist: 6/10 checked
101
+ Comment: Progress update posted
102
+ Labels: +in-progress
103
+
104
+ URL: https://github.com/owner/repo/issues/123
105
+ ```
106
+
107
+ ---
108
+
109
+ ## Examples
110
+
111
+ ### Example 1: Simple Push
112
+
113
+ ```
114
+ User: /specweave-github:push
115
+
116
+ Claude:
117
+ Pushing to GitHub...
118
+ Increment: 0005-payment-integration
119
+ Issue: #123
120
+
121
+ Progress: 8/10 tasks (80%)
122
+ Checklist updated, comment posted.
123
+
124
+ Push complete!
125
+ ```
126
+
127
+ ### Example 2: 100% Complete
128
+
129
+ ```
130
+ User: /specweave-github:push 0005
131
+
132
+ Claude:
133
+ Pushing to GitHub...
134
+
135
+ Progress: 10/10 tasks (100%)
136
+
137
+ Updates:
138
+ Task checklist: 10/10 checked
139
+ Comment: "All tasks complete!"
140
+ Issue: CLOSED
141
+
142
+ Ready for next: /specweave:done 0005
143
+ ```
144
+
145
+ ---
146
+
147
+ ## Related Commands
148
+
149
+ | Command | Purpose |
150
+ |---------|---------|
151
+ | `/specweave-github:pull` | Pull changes from GitHub |
152
+ | `/specweave-github:sync` | Two-way sync (pull + push) |
153
+ | `/specweave-github:status` | Check sync status |
154
+ | `/specweave-github:close` | Close issue with summary |
@@ -547,13 +547,27 @@ If automatic profile creation fails:
547
547
  /specweave-github:sync 0004
548
548
  ```
549
549
 
550
+ ## Simpler Alternatives
551
+
552
+ For most use cases, use the git-style commands:
553
+
554
+ | Command | Purpose |
555
+ |---------|---------|
556
+ | `/specweave-github:pull` | Pull changes from GitHub (read-only) |
557
+ | `/specweave-github:push` | Push progress to GitHub |
558
+
559
+ Use `/specweave-github:sync` for advanced operations with time ranges and rate limit control.
560
+
550
561
  ## Related Commands
551
562
 
552
- - `/specweave-github:create-issue <increment-id>`: Create issue with profile selection
553
- - `/specweave-github:close-issue <increment-id>`: Close issue
554
- - `/specweave-github:status <increment-id>`: Check sync status
555
- - `/specweave:sync-profile create`: Create new sync profile
556
- - `/specweave:sync-profile list`: List all profiles
563
+ | Command | Purpose |
564
+ |---------|---------|
565
+ | `/specweave-github:pull` | Pull from GitHub (git-style) |
566
+ | `/specweave-github:push` | Push to GitHub (git-style) |
567
+ | `/specweave-github:create` | Create GitHub issue |
568
+ | `/specweave-github:close` | Close GitHub issue |
569
+ | `/specweave-github:status` | Check sync status |
570
+ | `/specweave:sync-profile create` | Create new sync profile |
557
571
 
558
572
  ## Tips & Best Practices
559
573
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: specweave-github-update-user-story
2
+ name: specweave-github:update-user-story
3
3
  description: Update GitHub issue for user story with proper ACs and tasks
4
4
  ---
5
5
 
@@ -281,7 +281,7 @@ If upgrading from SpecWeave v0.12.x or earlier:
281
281
  - **Core Plugin Hooks**: `plugins/specweave/hooks/README.md`
282
282
  - **Architecture Analysis**: `.specweave/increments/0018-strict-increment-discipline-enforcement/reports/HOOKS-ARCHITECTURE-ANALYSIS.md`
283
283
  - **Claude Code Hooks Guide**: https://code.claude.com/docs/en/hooks-guide
284
- - **GitHub Sync Command**: `plugins/specweave-github/commands/specweave-github-sync.md`
284
+ - **GitHub Sync Command**: `plugins/specweave-github/commands/sync.md`
285
285
 
286
286
  ---
287
287
 
@@ -0,0 +1,164 @@
1
+ ---
2
+ name: specweave-jira:pull
3
+ description: Pull latest changes from Jira (like git pull). Imports status, priority, sprint, and comments.
4
+ ---
5
+
6
+ # Jira Pull Command
7
+
8
+ **Usage**: `/specweave-jira:pull [increment-id]`
9
+
10
+ **Purpose**: Pull latest changes from Jira to your local increment (like `git pull`)
11
+
12
+ ---
13
+
14
+ ## Quick Start
15
+
16
+ ```bash
17
+ # Pull for current/active increment
18
+ /specweave-jira:pull
19
+
20
+ # Pull for specific increment
21
+ /specweave-jira:pull 0005
22
+ ```
23
+
24
+ ---
25
+
26
+ ## What Gets Pulled
27
+
28
+ | Field | Behavior |
29
+ |-------|----------|
30
+ | **Status** | External ALWAYS wins (QA/stakeholder decisions) |
31
+ | **Priority** | External wins (stakeholder prioritization) |
32
+ | **Sprint** | Updated if changed in Jira |
33
+ | **Comments** | New team comments imported to notes |
34
+ | **Assignee** | Updated if changed |
35
+ | **Story Points** | Imported if set |
36
+
37
+ ---
38
+
39
+ ## Status Mapping
40
+
41
+ | Jira Status | SpecWeave Status |
42
+ |-------------|------------------|
43
+ | To Do | draft |
44
+ | In Progress | in-progress |
45
+ | Code Review | implemented |
46
+ | In Review | implemented |
47
+ | QA / Testing | in-qa |
48
+ | Done / Closed | completed |
49
+ | Blocked | blocked |
50
+ | Cancelled | cancelled |
51
+
52
+ ---
53
+
54
+ ## Command Behavior
55
+
56
+ When user runs this command:
57
+
58
+ ### 1. Resolve Increment
59
+
60
+ ```typescript
61
+ const incrementId = args.incrementId || await findActiveIncrement();
62
+
63
+ const metadata = JSON.parse(await fs.readFile(
64
+ `.specweave/increments/${incrementId}/metadata.json`, 'utf-8'
65
+ ));
66
+
67
+ const jiraIssueKey = metadata?.external_sync?.jira?.issueKey;
68
+ if (!jiraIssueKey) {
69
+ console.log(`Not linked to Jira. Link manually or use: /specweave-jira:sync ${incrementId}`);
70
+ return;
71
+ }
72
+ ```
73
+
74
+ ### 2. Fetch and Apply
75
+
76
+ ```
77
+ Use Task tool with subagent_type: "specweave-jira:jira-manager:jira-manager"
78
+
79
+ Prompt: "Pull changes from Jira for increment {increment-id}.
80
+
81
+ Issue: {jiraIssueKey}
82
+
83
+ Steps:
84
+ 1. Fetch issue {jiraIssueKey} via Jira REST API
85
+ 2. Compare Jira status vs local status
86
+ 3. Apply conflict resolution (EXTERNAL WINS for status/priority)
87
+ 4. Import new comments to increment notes
88
+ 5. Update sprint/assignee in metadata
89
+ 6. Display what changed"
90
+ ```
91
+
92
+ ### 3. Display Changes
93
+
94
+ ```
95
+ Pulled from Jira
96
+
97
+ Issue: PROJ-123
98
+ Project: My Project
99
+
100
+ Changes Applied:
101
+ Status: In Progress -> Done (mapped to: completed)
102
+ Priority: Medium -> High
103
+ Sprint: Sprint 23 -> Sprint 24
104
+ Comments: 3 new imported
105
+
106
+ Last synced: 2025-12-04 10:30:00
107
+ URL: https://mycompany.atlassian.net/browse/PROJ-123
108
+ ```
109
+
110
+ ---
111
+
112
+ ## Conflict Resolution
113
+
114
+ **CRITICAL**: External tool status ALWAYS wins.
115
+
116
+ | Scenario | Winner | Reason |
117
+ |----------|--------|--------|
118
+ | Status differs | **External** | QA/stakeholder decisions |
119
+ | Priority differs | **External** | Stakeholder prioritization |
120
+ | Sprint differs | **External** | Sprint planning decisions |
121
+
122
+ ---
123
+
124
+ ## Examples
125
+
126
+ ### Example 1: Simple Pull
127
+
128
+ ```
129
+ User: /specweave-jira:pull
130
+
131
+ Claude:
132
+ Pulling from Jira...
133
+ Increment: 0005-payment-integration
134
+ Issue: PROJ-123
135
+
136
+ Changes Applied:
137
+ Status: In Progress -> Done (completed)
138
+
139
+ Pull complete!
140
+ ```
141
+
142
+ ### Example 2: Already Up to Date
143
+
144
+ ```
145
+ User: /specweave-jira:pull 0005
146
+
147
+ Claude:
148
+ Pulling from Jira...
149
+ Increment: 0005-payment-integration
150
+ Issue: PROJ-123
151
+
152
+ Already up to date!
153
+ Last synced: 5 minutes ago
154
+ ```
155
+
156
+ ---
157
+
158
+ ## Related Commands
159
+
160
+ | Command | Purpose |
161
+ |---------|---------|
162
+ | `/specweave-jira:push` | Push local changes to Jira |
163
+ | `/specweave-jira:sync` | Two-way sync (pull + push) |
164
+ | `/specweave-jira:import-boards` | Import Jira boards |