specweave 0.10.1 → 0.11.0
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 +2 -2
- package/CLAUDE.md +55 -146
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +69 -58
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/helpers/issue-tracker/index.d.ts.map +1 -1
- package/dist/cli/helpers/issue-tracker/index.js +39 -0
- package/dist/cli/helpers/issue-tracker/index.js.map +1 -1
- package/dist/cli/helpers/issue-tracker/jira.d.ts.map +1 -1
- package/dist/cli/helpers/issue-tracker/jira.js +2 -9
- package/dist/cli/helpers/issue-tracker/jira.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/skills/increment-planner/SKILL.md +13 -92
- package/plugins/specweave/skills/plugin-installer/SKILL.md +22 -7
- package/plugins/specweave-ado/agents/ado-manager/AGENT.md +2 -0
- package/plugins/specweave-ado/commands/specweave-ado-sync.md +102 -9
- package/plugins/specweave-ado/skills/ado-sync/SKILL.md +7 -3
- package/plugins/specweave-github/agents/github-manager/AGENT.md +14 -4
- package/plugins/specweave-github/commands/specweave-github-sync.md +60 -11
- package/plugins/specweave-github/skills/github-sync/SKILL.md +3 -1
- package/plugins/specweave-jira/agents/jira-manager/AGENT.md +18 -8
- package/plugins/specweave-jira/commands/specweave-jira-sync.md +62 -19
- package/plugins/specweave-jira/skills/jira-sync/SKILL.md +5 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "SpecWeave - Spec-Driven Development Framework. PM-led planning, intelligent model selection, living documentation, multi-tool support.",
|
|
5
5
|
"owner": {
|
|
6
6
|
"name": "Anton Abyzov",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"description": "SpecWeave framework - increment lifecycle, living docs, PM-led planning",
|
|
13
13
|
"source": "./plugins/specweave",
|
|
14
14
|
"category": "development",
|
|
15
|
-
"version": "0.
|
|
15
|
+
"version": "0.11.0",
|
|
16
16
|
"author": {
|
|
17
17
|
"name": "Anton Abyzov",
|
|
18
18
|
"email": "anton@spec-weave.com"
|
package/CLAUDE.md
CHANGED
|
@@ -681,10 +681,10 @@ my-project/
|
|
|
681
681
|
- ✅ Strategy docs are project-level, not module-level
|
|
682
682
|
- ✅ Living docs sync works best with one central location
|
|
683
683
|
|
|
684
|
-
**Plugin
|
|
685
|
-
- ✅
|
|
686
|
-
- ✅
|
|
687
|
-
- ✅
|
|
684
|
+
**Plugin Installation**:
|
|
685
|
+
- ✅ ALL plugins installed automatically during `specweave init`
|
|
686
|
+
- ✅ No selective loading or detection needed
|
|
687
|
+
- ✅ Full capabilities available immediately
|
|
688
688
|
|
|
689
689
|
**Prevents Chaos**:
|
|
690
690
|
- ❌ Nested folders cause: Which is the source of truth?
|
|
@@ -842,7 +842,7 @@ if (parentSpecweave) {
|
|
|
842
842
|
- Domain expertise (ML, payments) = separate plugins
|
|
843
843
|
- Core plugin = only increment lifecycle + living docs automation
|
|
844
844
|
|
|
845
|
-
### Available Plugins (
|
|
845
|
+
### Available Plugins (All Auto-Installed)
|
|
846
846
|
|
|
847
847
|
**Implemented Plugins**:
|
|
848
848
|
|
|
@@ -891,20 +891,22 @@ if (parentSpecweave) {
|
|
|
891
891
|
| **jira-sync** | 1 | 1 | 2 | JIRA project tracking |
|
|
892
892
|
| **ado-sync** | 1 | 1 | 2 | Azure DevOps tracking |
|
|
893
893
|
|
|
894
|
-
### Context Efficiency
|
|
894
|
+
### Context Efficiency
|
|
895
895
|
|
|
896
|
-
**
|
|
897
|
-
-
|
|
898
|
-
-
|
|
899
|
-
-
|
|
896
|
+
**All plugins are installed, but only relevant skills activate based on context**. Claude Code's native skill system ensures:
|
|
897
|
+
- Skills only activate when their description keywords match the conversation
|
|
898
|
+
- Agents only load when explicitly invoked
|
|
899
|
+
- Commands only appear when relevant
|
|
900
900
|
|
|
901
|
-
**
|
|
902
|
-
-
|
|
903
|
-
-
|
|
904
|
-
-
|
|
905
|
-
-
|
|
901
|
+
**Example**: Working on a React frontend:
|
|
902
|
+
- ✅ `specweave-frontend` skills activate (React, Next.js, design systems)
|
|
903
|
+
- ✅ `specweave-github` skills activate (if mentioning GitHub)
|
|
904
|
+
- ❌ `specweave-ml` skills stay dormant (ML keywords not detected)
|
|
905
|
+
- ❌ `specweave-payments` skills stay dormant (Stripe not mentioned)
|
|
906
906
|
|
|
907
|
-
|
|
907
|
+
**Result**: Even with 19+ plugins installed, you only "pay" (in tokens) for what you're actively using in the conversation.
|
|
908
|
+
|
|
909
|
+
### How Plugins Are Loaded (All Plugins Installed Upfront)
|
|
908
910
|
|
|
909
911
|
**SpecWeave's plugin system is designed to be intelligent and non-intrusive:**
|
|
910
912
|
|
|
@@ -932,134 +934,43 @@ When you run `specweave init`:
|
|
|
932
934
|
- Claude Code automatically discovers plugins from GitHub
|
|
933
935
|
- No manual `/plugin marketplace add` needed!
|
|
934
936
|
|
|
935
|
-
2. ✅ **
|
|
936
|
-
- Automatically
|
|
937
|
+
2. ✅ **ALL Plugins Auto-Installation** (Breaking Change: No Selective Loading!)
|
|
938
|
+
- Automatically installs ALL 19+ plugins from marketplace.json
|
|
937
939
|
- Works via CLI during init (uses user's shell to access `claude` command)
|
|
938
|
-
-
|
|
939
|
-
|
|
940
|
+
- Installation process:
|
|
941
|
+
1. Removes existing marketplace (if present)
|
|
942
|
+
2. Re-adds marketplace from GitHub (always fresh)
|
|
943
|
+
3. Reads marketplace.json to get list of all plugins
|
|
944
|
+
4. Installs each plugin via `claude plugin install {name}`
|
|
945
|
+
5. Reports success/failure for each plugin
|
|
946
|
+
- All slash commands available IMMEDIATELY - no manual install needed!
|
|
947
|
+
- Success message: "✔ Installed: 19/19 plugins"
|
|
940
948
|
- Graceful fallback: If CLI unavailable, shows manual install instructions
|
|
941
|
-
|
|
942
|
-
3. ✅ **Issue Tracker Plugin Auto-Installation** (NEW! v0.8.18+)
|
|
943
|
-
- Detects GitHub/Jira/Azure DevOps from project structure
|
|
944
|
-
- Prompts for credentials (API tokens, PATs)
|
|
945
|
-
- **Automatically installs** corresponding plugin (specweave-github, specweave-jira, specweave-ado)
|
|
946
|
-
- Happens AFTER marketplace registration (ensures plugin installation succeeds)
|
|
947
|
-
- Shows detailed error messages if auto-install fails
|
|
948
|
-
- Example: Jira detected → credentials saved → `specweave-jira` plugin installed automatically
|
|
949
|
-
|
|
950
|
-
4. ℹ️ **Optional Plugins Available**
|
|
951
|
-
- Suggested based on project type (frontend, backend, infrastructure)
|
|
952
|
-
- User can install later via `/plugin install specweave-{name}`
|
|
949
|
+
- **No selective loading**: Everything installed upfront for full capabilities
|
|
953
950
|
|
|
954
951
|
**Key Architectural Change**:
|
|
955
952
|
- ❌ Old: Copied `.claude-plugin/` + `plugins/` to every project (~2MB bloat)
|
|
956
953
|
- ✅ New: Reference GitHub marketplace (~2KB settings.json, always up-to-date)
|
|
957
954
|
|
|
958
|
-
#### Phase 2:
|
|
959
|
-
|
|
960
|
-
When you create increments (e.g., `/specweave:increment "Add Stripe billing"`):
|
|
961
|
-
|
|
962
|
-
1. **Spec Analysis** (v0.6.0+, Enhanced v0.8.18+)
|
|
963
|
-
- increment-planner skill scans spec.md content
|
|
964
|
-
- Detects keywords: "Stripe", "GitHub", "Kubernetes", "React", etc.
|
|
965
|
-
- Maps keywords → required plugins (see Step 6 in increment-planner/SKILL.md)
|
|
966
|
-
|
|
967
|
-
2. **🚨 AUTOMATIC Plugin Recommendation** (Enhanced v0.8.18+)
|
|
968
|
-
```
|
|
969
|
-
🔌 Detected plugin requirements from spec content:
|
|
970
|
-
|
|
971
|
-
REQUIRED (will significantly improve implementation):
|
|
972
|
-
• specweave-payments - Stripe integration
|
|
973
|
-
Detected: "billing", "Stripe", "subscriptions"
|
|
974
|
-
Provides: Stripe expert agent, payment flow validation, webhook handling
|
|
975
|
-
→ Without this: Manual Stripe integration, no validation
|
|
976
|
-
|
|
977
|
-
📦 Install recommended plugins:
|
|
978
|
-
/plugin install specweave-payments
|
|
979
|
-
|
|
980
|
-
💡 Benefits:
|
|
981
|
-
• Plugins provide specialized AI agents (Stripe expert, etc.)
|
|
982
|
-
• Skills auto-activate based on context (zero manual invocation)
|
|
983
|
-
• 70%+ context reduction (only load what you need)
|
|
984
|
-
• Best practices built-in (from real-world experience)
|
|
985
|
-
|
|
986
|
-
Would you like me to wait while you install these plugins? (Recommended)
|
|
987
|
-
Or shall I continue without them? (Limited capabilities)
|
|
988
|
-
```
|
|
989
|
-
|
|
990
|
-
3. **User Decision**
|
|
991
|
-
- Install now → Plugin activates immediately (skills available during implementation)
|
|
992
|
-
- Install later → Skills won't be available until plugin installed (can add mid-work)
|
|
993
|
-
- Skip → Increment creation continues (not blocked, but capabilities limited)
|
|
994
|
-
|
|
995
|
-
#### Phase 2.5: Just-in-Time Plugin Installation (NEW! v0.10.0+)
|
|
996
|
-
|
|
997
|
-
**The Critical Gap**: Users request features that require plugins (e.g., "preview docs locally"), but those plugins aren't installed yet. Instead of failing silently or recommending manual installation, SpecWeave now **automatically installs plugins just-in-time**.
|
|
955
|
+
#### Phase 2: Implementation (All Plugins Ready)
|
|
998
956
|
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
1. **Automatic Detection**
|
|
1002
|
-
- User requests a feature (e.g., "Show me the internal docs in a browser")
|
|
1003
|
-
- `plugin-installer` skill detects keywords: "docs", "browser" → needs `specweave-docs-preview`
|
|
1004
|
-
- Checks if plugin is installed: `/plugin list --installed`
|
|
1005
|
-
|
|
1006
|
-
2. **Auto-Installation**
|
|
1007
|
-
```
|
|
1008
|
-
🔌 Detected need for specweave-docs-preview plugin
|
|
1009
|
-
|
|
1010
|
-
📦 Installing specweave-docs-preview...
|
|
1011
|
-
This plugin provides: Beautiful Docusaurus UI for browsing .specweave/docs/
|
|
1012
|
-
|
|
1013
|
-
✅ Plugin installed successfully!
|
|
1014
|
-
You can now:
|
|
1015
|
-
• Browse documentation in beautiful UI
|
|
1016
|
-
• Hot reload when editing markdown files
|
|
1017
|
-
• Render Mermaid diagrams automatically
|
|
1018
|
-
|
|
1019
|
-
Proceeding to launch docs preview server...
|
|
1020
|
-
```
|
|
1021
|
-
|
|
1022
|
-
3. **Seamless Execution**
|
|
1023
|
-
- Plugin installed automatically (no manual intervention)
|
|
1024
|
-
- Feature executes immediately
|
|
1025
|
-
- User sees clear notification of what was installed and why
|
|
1026
|
-
|
|
1027
|
-
**Supported Just-in-Time Plugins**:
|
|
1028
|
-
|
|
1029
|
-
| User Keywords | Auto-Installed Plugin | Capabilities |
|
|
1030
|
-
|--------------|----------------------|--------------|
|
|
1031
|
-
| "preview docs", "documentation UI", "Docusaurus" | `specweave-docs-preview` | Beautiful docs UI, hot reload |
|
|
1032
|
-
| "React", "Next.js", "frontend", "UI component" | `specweave-frontend` | Frontend expert, design systems |
|
|
1033
|
-
| "K8s", "Kubernetes", "Helm", "deploy" | `specweave-kubernetes` | K8s expert, manifest generation |
|
|
1034
|
-
| "TensorFlow", "PyTorch", "ML model" | `specweave-ml` | ML pipelines, training, deployment |
|
|
1035
|
-
| "Stripe", "billing", "payment" | `specweave-payments` | Payment expert, Stripe integration |
|
|
1036
|
-
| "Playwright", "E2E testing", "browser automation" | `specweave-testing` | E2E testing infrastructure |
|
|
1037
|
-
| "Figma", "design tokens", "prototype" | `specweave-figma` | Design system integration |
|
|
1038
|
-
| "Mermaid", "C4 model", "architecture diagram" | `specweave-diagrams` | Diagram generation |
|
|
1039
|
-
|
|
1040
|
-
**Key Benefits**:
|
|
1041
|
-
- ✅ **Zero friction**: No manual plugin installation needed
|
|
1042
|
-
- ✅ **Proactive**: Detects requirements automatically based on user request
|
|
1043
|
-
- ✅ **Clear UX**: Users understand what's being installed and why
|
|
1044
|
-
- ✅ **Fail-safe**: Handles installation errors gracefully with troubleshooting steps
|
|
1045
|
-
|
|
1046
|
-
**See**: `plugins/specweave/skills/plugin-installer/SKILL.md` for complete keyword map and workflow
|
|
1047
|
-
|
|
1048
|
-
#### Phase 3: Implementation (Auto-Activation)
|
|
1049
|
-
|
|
1050
|
-
When plugins are installed:
|
|
957
|
+
After `specweave init`, ALL plugins are already installed. No additional steps needed!
|
|
1051
958
|
|
|
1052
959
|
1. **Skills Auto-Activate**
|
|
1053
960
|
- Based on description keywords (Claude Code native behavior)
|
|
1054
961
|
- No manual invocation needed
|
|
1055
962
|
- Example: Mention "GitHub" → github-sync skill activates
|
|
1056
963
|
|
|
1057
|
-
2. **
|
|
1058
|
-
-
|
|
1059
|
-
-
|
|
1060
|
-
-
|
|
964
|
+
2. **All Capabilities Available**
|
|
965
|
+
- GitHub integration: `/specweave-github:sync`
|
|
966
|
+
- JIRA integration: `/specweave-jira:sync`
|
|
967
|
+
- Documentation preview: `/specweave:docs preview`
|
|
968
|
+
- Frontend tools: React, Next.js, design systems
|
|
969
|
+
- Backend tools: Node.js, Python, .NET
|
|
970
|
+
- Infrastructure: Kubernetes, Helm, monitoring
|
|
971
|
+
- ...and 19+ more plugins ready to use!
|
|
1061
972
|
|
|
1062
|
-
#### Phase
|
|
973
|
+
#### Phase 3: First Increment Completion (Documentation Preview)
|
|
1063
974
|
|
|
1064
975
|
After completing your first increment:
|
|
1065
976
|
|
|
@@ -1096,29 +1007,27 @@ After completing your first increment:
|
|
|
1096
1007
|
- Mermaid diagrams rendered automatically
|
|
1097
1008
|
- Share docs with stakeholders (export static site)
|
|
1098
1009
|
|
|
1099
|
-
###
|
|
1010
|
+
### Plugin Management
|
|
1100
1011
|
|
|
1101
|
-
All
|
|
1012
|
+
**All 19+ plugins are automatically installed during `specweave init`**. You rarely need to manage plugins manually, but Claude Code's native commands are available if needed:
|
|
1102
1013
|
|
|
1103
1014
|
```bash
|
|
1104
|
-
# List installed plugins
|
|
1015
|
+
# List installed plugins (should show all 19+ SpecWeave plugins)
|
|
1105
1016
|
/plugin list --installed
|
|
1106
1017
|
|
|
1107
|
-
#
|
|
1108
|
-
/plugin install specweave-kubernetes
|
|
1109
|
-
|
|
1110
|
-
# Uninstall a plugin
|
|
1018
|
+
# Uninstall a plugin (not recommended - breaks functionality)
|
|
1111
1019
|
/plugin uninstall specweave-kubernetes
|
|
1112
1020
|
|
|
1113
|
-
#
|
|
1114
|
-
|
|
1021
|
+
# Reinstall all plugins (if you uninstalled something by mistake)
|
|
1022
|
+
specweave init . # Re-runs full installation
|
|
1115
1023
|
```
|
|
1116
1024
|
|
|
1117
1025
|
**Key Insight**: SpecWeave uses **ONLY** Claude Code's native plugin system:
|
|
1026
|
+
- ALL plugins installed automatically during init (no manual selection)
|
|
1118
1027
|
- Plugins install globally via `/plugin install specweave-{name}`
|
|
1119
1028
|
- Work across ALL projects (like VS Code extensions)
|
|
1120
1029
|
- Auto-activate based on skills' description keywords
|
|
1121
|
-
- Managed by Claude Code (updates
|
|
1030
|
+
- Managed by Claude Code (updates handled via `specweave init` re-run)
|
|
1122
1031
|
|
|
1123
1032
|
### Development vs Production Setup
|
|
1124
1033
|
|
|
@@ -2129,10 +2038,10 @@ ls -1 .specweave/increments/ | grep -E '^[0-9]{4}' | wc -l
|
|
|
2129
2038
|
|
|
2130
2039
|
```
|
|
2131
2040
|
SpecWeave = Collection of Claude Code Plugins
|
|
2132
|
-
├── specweave (auto-
|
|
2133
|
-
├── specweave-github (
|
|
2134
|
-
├── specweave-figma (
|
|
2135
|
-
└── ...all
|
|
2041
|
+
├── specweave (auto-installed) ← The "framework" IS a plugin
|
|
2042
|
+
├── specweave-github (auto-installed)
|
|
2043
|
+
├── specweave-figma (auto-installed)
|
|
2044
|
+
└── ...all 19+ plugins (auto-installed)
|
|
2136
2045
|
```
|
|
2137
2046
|
|
|
2138
2047
|
**What this means**:
|
|
@@ -2159,7 +2068,7 @@ SpecWeave = Collection of Claude Code Plugins
|
|
|
2159
2068
|
**Discovery**:
|
|
2160
2069
|
- Browse all plugins: `ls plugins/` or check [.claude-plugin/marketplace.json](/.claude-plugin/marketplace.json)
|
|
2161
2070
|
- Live catalog: See `.claude-plugin/README.md` for current marketplace contents
|
|
2162
|
-
-
|
|
2071
|
+
- **All plugins automatically installed** during `specweave init` (no manual selection needed)
|
|
2163
2072
|
|
|
2164
2073
|
**Plugin Structure** (all follow same pattern):
|
|
2165
2074
|
```
|
|
@@ -2171,8 +2080,8 @@ plugins/specweave-{name}/
|
|
|
2171
2080
|
└── lib/ # TypeScript utilities (optional)
|
|
2172
2081
|
```
|
|
2173
2082
|
|
|
2174
|
-
**Key Plugins** (for reference):
|
|
2175
|
-
- `specweave` - Framework essentials
|
|
2083
|
+
**Key Plugins** (for reference - all auto-installed):
|
|
2084
|
+
- `specweave` - Framework essentials
|
|
2176
2085
|
- `specweave-github` - GitHub Issues integration
|
|
2177
2086
|
- `specweave-{frontend|backend|infrastructure}` - Tech stack plugins
|
|
2178
2087
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAoBA,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,WAAW,CAC/B,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAoBA,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,WAAW,CAC/B,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CA+tBf"}
|
|
@@ -496,7 +496,7 @@ export async function initCommand(projectName, options = {}) {
|
|
|
496
496
|
// Non-critical - show manual instructions in next steps
|
|
497
497
|
console.warn(chalk.yellow(`\n${locale.t('cli', 'init.warnings.pluginAutoSetupFailed')}`));
|
|
498
498
|
}
|
|
499
|
-
// 15. AUTO-INSTALL
|
|
499
|
+
// 15. AUTO-INSTALL ALL PLUGINS via Claude CLI (Breaking Change: No selective loading)
|
|
500
500
|
// Pre-flight check: Is Claude CLI available? (ROBUST CHECK)
|
|
501
501
|
const claudeStatus = detectClaudeCli();
|
|
502
502
|
if (!claudeStatus.available) {
|
|
@@ -556,12 +556,10 @@ export async function initCommand(projectName, options = {}) {
|
|
|
556
556
|
autoInstallSucceeded = false;
|
|
557
557
|
}
|
|
558
558
|
else {
|
|
559
|
-
// Claude CLI available →
|
|
559
|
+
// Claude CLI available → install ALL plugins from marketplace
|
|
560
560
|
try {
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
// ✅ This runs REGARDLESS of whether project has local .claude-plugin/
|
|
564
|
-
// ✅ Uses SpecWeave package's .claude-plugin folder as marketplace source
|
|
561
|
+
// Step 1: FORCE marketplace refresh - remove and re-add from GitHub
|
|
562
|
+
spinner.start('Refreshing SpecWeave marketplace...');
|
|
565
563
|
const listResult = execFileNoThrowSync('claude', [
|
|
566
564
|
'plugin',
|
|
567
565
|
'marketplace',
|
|
@@ -570,60 +568,89 @@ export async function initCommand(projectName, options = {}) {
|
|
|
570
568
|
const marketplaceExists = listResult.success &&
|
|
571
569
|
(listResult.stdout || '').toLowerCase().includes('specweave');
|
|
572
570
|
if (marketplaceExists) {
|
|
573
|
-
//
|
|
574
|
-
spinner.stop();
|
|
575
|
-
console.log(chalk.blue(' 🔄 Updating existing SpecWeave marketplace...'));
|
|
571
|
+
// Always remove existing marketplace to ensure fresh install
|
|
576
572
|
execFileNoThrowSync('claude', [
|
|
577
573
|
'plugin',
|
|
578
574
|
'marketplace',
|
|
579
575
|
'remove',
|
|
580
576
|
'specweave'
|
|
581
577
|
]);
|
|
582
|
-
console.log(chalk.
|
|
578
|
+
console.log(chalk.blue(' 🔄 Removed existing marketplace'));
|
|
583
579
|
}
|
|
584
|
-
//
|
|
585
|
-
// ✅ Uses GitHub repo format (owner/repo) - works for all npm installs
|
|
580
|
+
// Add marketplace from GitHub (always fresh)
|
|
586
581
|
const addResult = execFileNoThrowSync('claude', [
|
|
587
582
|
'plugin',
|
|
588
583
|
'marketplace',
|
|
589
584
|
'add',
|
|
590
585
|
'anton-abyzov/specweave'
|
|
591
586
|
]);
|
|
592
|
-
if (addResult.success) {
|
|
593
|
-
|
|
594
|
-
console.log(chalk.green(' ✔ Marketplace updated successfully'));
|
|
595
|
-
}
|
|
587
|
+
if (!addResult.success) {
|
|
588
|
+
throw new Error('Failed to add marketplace from GitHub');
|
|
596
589
|
}
|
|
597
|
-
|
|
598
|
-
|
|
590
|
+
console.log(chalk.green(' ✔ Marketplace registered from GitHub'));
|
|
591
|
+
spinner.succeed('SpecWeave marketplace refreshed');
|
|
592
|
+
// Step 2: Load marketplace.json to get ALL available plugins
|
|
593
|
+
spinner.start('Loading available plugins...');
|
|
594
|
+
const marketplaceJsonPath = findSourceDir('.claude-plugin/marketplace.json');
|
|
595
|
+
if (!fs.existsSync(marketplaceJsonPath)) {
|
|
596
|
+
throw new Error('marketplace.json not found - cannot determine plugins to install');
|
|
599
597
|
}
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
'plugin',
|
|
605
|
-
'install',
|
|
606
|
-
'specweave'
|
|
607
|
-
]);
|
|
608
|
-
if (installResult.success) {
|
|
609
|
-
autoInstallSucceeded = true;
|
|
610
|
-
spinner.succeed('SpecWeave plugin installed successfully!');
|
|
611
|
-
console.log(chalk.green(' ✔ Marketplace: ./claude-plugin → specweave'));
|
|
612
|
-
console.log(chalk.green(' ✔ Plugin: specweave'));
|
|
613
|
-
console.log(chalk.green(' ✔ Slash commands ready: /specweave:increment'));
|
|
598
|
+
const marketplace = JSON.parse(fs.readFileSync(marketplaceJsonPath, 'utf-8'));
|
|
599
|
+
const allPlugins = marketplace.plugins || [];
|
|
600
|
+
if (allPlugins.length === 0) {
|
|
601
|
+
throw new Error('No plugins found in marketplace.json');
|
|
614
602
|
}
|
|
615
|
-
|
|
616
|
-
|
|
603
|
+
console.log(chalk.blue(` 📦 Found ${allPlugins.length} plugins to install`));
|
|
604
|
+
spinner.succeed(`Found ${allPlugins.length} plugins`);
|
|
605
|
+
// Step 3: Install ALL plugins (no selective loading!)
|
|
606
|
+
let successCount = 0;
|
|
607
|
+
let failCount = 0;
|
|
608
|
+
const failedPlugins = [];
|
|
609
|
+
for (const plugin of allPlugins) {
|
|
610
|
+
const pluginName = plugin.name;
|
|
611
|
+
spinner.start(`Installing ${pluginName}...`);
|
|
612
|
+
const installResult = execFileNoThrowSync('claude', [
|
|
613
|
+
'plugin',
|
|
614
|
+
'install',
|
|
615
|
+
pluginName
|
|
616
|
+
]);
|
|
617
|
+
if (installResult.success) {
|
|
618
|
+
successCount++;
|
|
619
|
+
spinner.succeed(`${pluginName} installed`);
|
|
620
|
+
}
|
|
621
|
+
else {
|
|
622
|
+
failCount++;
|
|
623
|
+
failedPlugins.push(pluginName);
|
|
624
|
+
spinner.warn(`${pluginName} failed (will continue)`);
|
|
625
|
+
}
|
|
617
626
|
}
|
|
627
|
+
// Step 4: Report results
|
|
628
|
+
console.log('');
|
|
629
|
+
console.log(chalk.green.bold(`✅ Plugin Installation Complete`));
|
|
630
|
+
console.log(chalk.white(` Installed: ${successCount}/${allPlugins.length} plugins`));
|
|
631
|
+
if (failCount > 0) {
|
|
632
|
+
console.log(chalk.yellow(` Failed: ${failCount} plugins`));
|
|
633
|
+
console.log(chalk.gray(` Failed plugins: ${failedPlugins.join(', ')}`));
|
|
634
|
+
console.log(chalk.gray(` → You can install these manually later`));
|
|
635
|
+
}
|
|
636
|
+
console.log('');
|
|
637
|
+
console.log(chalk.cyan('📋 Available capabilities:'));
|
|
638
|
+
console.log(chalk.gray(' • /specweave:increment - Plan new features'));
|
|
639
|
+
console.log(chalk.gray(' • /specweave:do - Execute tasks'));
|
|
640
|
+
console.log(chalk.gray(' • /specweave-github:sync - GitHub integration'));
|
|
641
|
+
console.log(chalk.gray(' • /specweave-jira:sync - JIRA integration'));
|
|
642
|
+
console.log(chalk.gray(' • /specweave:docs preview - Documentation preview'));
|
|
643
|
+
console.log(chalk.gray(' • ...and more!'));
|
|
644
|
+
autoInstallSucceeded = successCount > 0;
|
|
618
645
|
}
|
|
619
646
|
catch (error) {
|
|
620
647
|
// Installation failed - provide helpful diagnostics
|
|
621
|
-
spinner.warn('Could not auto-install
|
|
648
|
+
spinner.warn('Could not auto-install plugins');
|
|
622
649
|
console.log('');
|
|
623
650
|
// Diagnose error and provide actionable hints
|
|
624
651
|
if (error.message.includes('not found') || error.message.includes('ENOENT')) {
|
|
625
652
|
console.log(chalk.yellow(' Reason: Claude CLI found but command failed'));
|
|
626
|
-
console.log(chalk.gray(' → Try manually:
|
|
653
|
+
console.log(chalk.gray(' → Try manually: /plugin install specweave'));
|
|
627
654
|
}
|
|
628
655
|
else if (error.message.includes('EACCES') || error.message.includes('permission')) {
|
|
629
656
|
console.log(chalk.yellow(' Reason: Permission denied'));
|
|
@@ -639,28 +666,12 @@ export async function initCommand(projectName, options = {}) {
|
|
|
639
666
|
console.log('');
|
|
640
667
|
console.log(chalk.cyan('📦 Manual installation:'));
|
|
641
668
|
console.log(chalk.white(' /plugin install specweave'));
|
|
669
|
+
console.log(chalk.white(' /plugin install specweave-github'));
|
|
670
|
+
console.log(chalk.white(' ...etc.'));
|
|
642
671
|
console.log('');
|
|
643
672
|
autoInstallSucceeded = false;
|
|
644
673
|
}
|
|
645
674
|
}
|
|
646
|
-
// 10.5 Issue Tracker Integration (NEW!)
|
|
647
|
-
// CRITICAL: Must happen AFTER marketplace registration and core plugin install
|
|
648
|
-
// Otherwise plugin installation will fail (marketplace not found)
|
|
649
|
-
try {
|
|
650
|
-
const { setupIssueTracker } = await import('../helpers/issue-tracker/index.js');
|
|
651
|
-
await setupIssueTracker({
|
|
652
|
-
projectPath: targetDir,
|
|
653
|
-
language: language,
|
|
654
|
-
maxRetries: 3
|
|
655
|
-
});
|
|
656
|
-
}
|
|
657
|
-
catch (error) {
|
|
658
|
-
// Non-critical error - log but continue
|
|
659
|
-
if (process.env.DEBUG) {
|
|
660
|
-
console.error(chalk.red(`\n❌ Issue tracker setup error: ${error.message}`));
|
|
661
|
-
}
|
|
662
|
-
console.log(chalk.yellow('\n⚠️ Issue tracker setup skipped (can configure later)'));
|
|
663
|
-
}
|
|
664
675
|
}
|
|
665
676
|
showNextSteps(finalProjectName, toolName, language, usedDotNotation, toolName === 'claude' ? autoInstallSucceeded : undefined);
|
|
666
677
|
}
|
|
@@ -1208,10 +1219,10 @@ function showNextSteps(projectName, adapterName, language, usedDotNotation = fal
|
|
|
1208
1219
|
console.log('');
|
|
1209
1220
|
stepNumber++;
|
|
1210
1221
|
}
|
|
1211
|
-
console.log(` ${stepNumber}. ${chalk.white(
|
|
1212
|
-
console.log(` ${chalk.gray(
|
|
1213
|
-
console.log(` ${chalk.gray(
|
|
1214
|
-
console.log(` ${chalk.gray('
|
|
1222
|
+
console.log(` ${stepNumber}. ${chalk.white('All plugins are already installed!')}`);
|
|
1223
|
+
console.log(` ${chalk.gray('✔ All 19+ SpecWeave plugins installed automatically')}`);
|
|
1224
|
+
console.log(` ${chalk.gray('✔ No need to install additional plugins manually')}`);
|
|
1225
|
+
console.log(` ${chalk.gray('✔ Full capabilities available immediately')}`);
|
|
1215
1226
|
console.log('');
|
|
1216
1227
|
stepNumber++;
|
|
1217
1228
|
console.log(` ${stepNumber}. ${chalk.white(locale.t('cli', 'init.nextSteps.claude.step4'))}`);
|