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.
- package/.claude-plugin/marketplace.json +0 -11
- package/CLAUDE.md +1 -1
- package/bin/fix-marketplace-errors.sh +1 -1
- package/dist/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +13 -0
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/helpers/ado-area-selector.d.ts.map +1 -1
- package/dist/src/cli/helpers/ado-area-selector.js +13 -0
- package/dist/src/cli/helpers/ado-area-selector.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/index.js +7 -2
- package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/sync-config-writer.d.ts +7 -0
- package/dist/src/cli/helpers/issue-tracker/sync-config-writer.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/sync-config-writer.js +33 -2
- package/dist/src/cli/helpers/issue-tracker/sync-config-writer.js.map +1 -1
- package/dist/src/cli/workers/clone-worker.js +19 -3
- package/dist/src/cli/workers/clone-worker.js.map +1 -1
- package/dist/src/core/living-docs/board-matcher.d.ts +120 -0
- package/dist/src/core/living-docs/board-matcher.d.ts.map +1 -0
- package/dist/src/core/living-docs/board-matcher.js +466 -0
- package/dist/src/core/living-docs/board-matcher.js.map +1 -0
- package/dist/src/core/living-docs/foundation-builder.js +1 -1
- package/dist/src/core/living-docs/foundation-builder.js.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.d.ts +19 -8
- package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.js +148 -52
- package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
- package/dist/src/core/living-docs/suggestions-generator.js +1 -1
- package/dist/src/core/living-docs/suggestions-generator.js.map +1 -1
- package/dist/src/core/living-docs/umbrella-detector.d.ts +4 -0
- package/dist/src/core/living-docs/umbrella-detector.d.ts.map +1 -1
- package/dist/src/core/living-docs/umbrella-detector.js +20 -1
- package/dist/src/core/living-docs/umbrella-detector.js.map +1 -1
- package/dist/src/core/living-docs/workitem-matcher.js +5 -5
- package/dist/src/core/living-docs/workitem-matcher.js.map +1 -1
- package/dist/src/importers/item-converter.d.ts +4 -0
- package/dist/src/importers/item-converter.d.ts.map +1 -1
- package/dist/src/importers/item-converter.js +4 -0
- package/dist/src/importers/item-converter.js.map +1 -1
- package/dist/src/init/repo/types.d.ts +1 -1
- package/dist/src/living-docs/enterprise-analyzer.d.ts.map +1 -1
- package/dist/src/living-docs/enterprise-analyzer.js +70 -19
- package/dist/src/living-docs/enterprise-analyzer.js.map +1 -1
- package/dist/src/living-docs/epic-id-allocator.d.ts +4 -0
- package/dist/src/living-docs/epic-id-allocator.d.ts.map +1 -1
- package/dist/src/living-docs/epic-id-allocator.js +4 -0
- package/dist/src/living-docs/epic-id-allocator.js.map +1 -1
- package/dist/src/living-docs/fs-id-allocator.d.ts +4 -0
- package/dist/src/living-docs/fs-id-allocator.d.ts.map +1 -1
- package/dist/src/living-docs/fs-id-allocator.js +4 -0
- package/dist/src/living-docs/fs-id-allocator.js.map +1 -1
- package/dist/src/living-docs/smart-doc-organizer.d.ts +114 -0
- package/dist/src/living-docs/smart-doc-organizer.d.ts.map +1 -0
- package/dist/src/living-docs/smart-doc-organizer.js +535 -0
- package/dist/src/living-docs/smart-doc-organizer.js.map +1 -0
- package/package.json +13 -13
- package/plugins/PLUGINS-INDEX.md +2 -3
- package/plugins/specweave/commands/specweave-judge.md +265 -0
- package/plugins/specweave/commands/specweave-organize-docs.md +185 -0
- package/plugins/specweave/hooks/hooks.json +3 -3
- package/plugins/specweave/hooks/universal/hook-wrapper.cmd +26 -0
- package/plugins/specweave/hooks/universal/hook-wrapper.sh +67 -0
- package/plugins/specweave-ado/commands/{specweave-ado-close-workitem.md → close.md} +9 -5
- package/plugins/specweave-ado/commands/{specweave-ado-create-workitem.md → create.md} +9 -5
- package/plugins/specweave-ado/commands/pull.md +459 -0
- package/plugins/specweave-ado/commands/push.md +361 -0
- package/plugins/specweave-ado/commands/{specweave-ado-status.md → status.md} +12 -0
- package/plugins/specweave-ado/commands/{specweave-ado-sync.md → sync.md} +64 -3
- package/plugins/specweave-ado/hooks/README.md +1 -1
- package/plugins/specweave-docs/commands/build.md +158 -0
- package/plugins/specweave-docs/commands/{docs-generate.md → generate.md} +10 -5
- package/plugins/specweave-docs/commands/health.md +268 -0
- package/plugins/specweave-docs/commands/{docs-init.md → init.md} +11 -6
- package/plugins/specweave-docs/commands/organize.md +184 -0
- package/plugins/specweave-docs/commands/preview.md +138 -0
- package/plugins/specweave-docs/skills/preview/SKILL.md +105 -0
- package/plugins/specweave-github/agents/user-story-updater/AGENT.md +1 -1
- package/plugins/specweave-github/commands/{specweave-github-close-issue.md → close.md} +2 -2
- package/plugins/specweave-github/commands/{specweave-github-create-issue.md → create.md} +2 -2
- package/plugins/specweave-github/commands/pull.md +142 -0
- package/plugins/specweave-github/commands/push.md +154 -0
- package/plugins/specweave-github/commands/{specweave-github-sync.md → sync.md} +19 -5
- package/plugins/specweave-github/commands/{specweave-github-update-user-story.md → update-user-story.md} +1 -1
- package/plugins/specweave-github/hooks/README.md +1 -1
- package/plugins/specweave-jira/commands/pull.md +164 -0
- package/plugins/specweave-jira/commands/push.md +170 -0
- package/plugins/specweave-jira/commands/{specweave-jira-sync.md → sync.md} +18 -3
- package/plugins/specweave-jira/hooks/README.md +1 -1
- package/plugins/specweave-kafka/README.md +20 -0
- package/plugins/specweave-kafka/benchmarks/kafka-throughput.benchmark.ts +551 -0
- package/plugins/specweave-kafka/examples/README.md +191 -0
- package/plugins/specweave-kafka/examples/avro-schema-registry/.env.example +8 -0
- package/plugins/specweave-kafka/examples/avro-schema-registry/README.md +69 -0
- package/plugins/specweave-kafka/examples/avro-schema-registry/consumer.js +37 -0
- package/plugins/specweave-kafka/examples/avro-schema-registry/package.json +14 -0
- package/plugins/specweave-kafka/examples/avro-schema-registry/producer.js +57 -0
- package/plugins/specweave-kafka/examples/exactly-once-semantics/.env.example +5 -0
- package/plugins/specweave-kafka/examples/exactly-once-semantics/README.md +30 -0
- package/plugins/specweave-kafka/examples/exactly-once-semantics/eos-pipeline.js +79 -0
- package/plugins/specweave-kafka/examples/exactly-once-semantics/package.json +11 -0
- package/plugins/specweave-kafka/examples/kafka-streams-app/.env.example +4 -0
- package/plugins/specweave-kafka/examples/kafka-streams-app/README.md +30 -0
- package/plugins/specweave-kafka/examples/kafka-streams-app/package.json +11 -0
- package/plugins/specweave-kafka/examples/kafka-streams-app/windowed-aggregation.js +66 -0
- package/plugins/specweave-kafka/examples/n8n-workflow/README.md +54 -0
- package/plugins/specweave-kafka/examples/n8n-workflow/docker-compose.yml +19 -0
- package/plugins/specweave-kafka/examples/n8n-workflow/kafka-to-slack.json +50 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/.env.example +15 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/README.md +183 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/consumer.js +60 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/docker-compose.yml +30 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/package.json +18 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/producer.js +52 -0
- package/plugins/specweave-release/commands/specweave-release-npm.md +26 -239
- package/plugins/specweave-docs-preview/.claude-plugin/plugin.json +0 -21
- package/plugins/specweave-docs-preview/commands/build.md +0 -489
- package/plugins/specweave-docs-preview/commands/preview.md +0 -355
- package/plugins/specweave-docs-preview/skills/docs-preview/SKILL.md +0 -386
- /package/plugins/specweave-ado/commands/{specweave-ado-clone-repos.md → clone.md} +0 -0
- /package/plugins/specweave-ado/commands/{specweave-ado-import-areas.md → import-areas.md} +0 -0
- /package/plugins/specweave-ado/commands/{specweave-ado-import-projects.md → import-projects.md} +0 -0
- /package/plugins/specweave-github/commands/{specweave-github-cleanup-duplicates.md → cleanup-duplicates.md} +0 -0
- /package/plugins/specweave-github/commands/{specweave-github-reconcile.md → reconcile.md} +0 -0
- /package/plugins/specweave-github/commands/{specweave-github-status.md → status.md} +0 -0
- /package/plugins/specweave-jira/commands/{specweave-jira-import-boards.md → import-boards.md} +0 -0
- /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/
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
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
|
|
|
@@ -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/
|
|
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 |
|