specweave 0.10.0 → 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 -93
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +98 -59
- 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/dist/utils/external-resource-validator.d.ts.map +1 -1
- package/dist/utils/external-resource-validator.js +44 -25
- package/dist/utils/external-resource-validator.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/skills/SKILLS-INDEX.md +23 -2
- package/plugins/specweave/skills/increment-planner/SKILL.md +13 -92
- package/plugins/specweave/skills/plugin-installer/SKILL.md +355 -0
- 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-resource-validator/SKILL.md +120 -57
- 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,81 +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
|
|
955
|
+
#### Phase 2: Implementation (All Plugins Ready)
|
|
976
956
|
|
|
977
|
-
|
|
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 3: Implementation (Auto-Activation)
|
|
996
|
-
|
|
997
|
-
When plugins are installed:
|
|
957
|
+
After `specweave init`, ALL plugins are already installed. No additional steps needed!
|
|
998
958
|
|
|
999
959
|
1. **Skills Auto-Activate**
|
|
1000
960
|
- Based on description keywords (Claude Code native behavior)
|
|
1001
961
|
- No manual invocation needed
|
|
1002
962
|
- Example: Mention "GitHub" → github-sync skill activates
|
|
1003
963
|
|
|
1004
|
-
2. **
|
|
1005
|
-
-
|
|
1006
|
-
-
|
|
1007
|
-
-
|
|
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!
|
|
1008
972
|
|
|
1009
|
-
#### Phase
|
|
973
|
+
#### Phase 3: First Increment Completion (Documentation Preview)
|
|
1010
974
|
|
|
1011
975
|
After completing your first increment:
|
|
1012
976
|
|
|
@@ -1043,29 +1007,27 @@ After completing your first increment:
|
|
|
1043
1007
|
- Mermaid diagrams rendered automatically
|
|
1044
1008
|
- Share docs with stakeholders (export static site)
|
|
1045
1009
|
|
|
1046
|
-
###
|
|
1010
|
+
### Plugin Management
|
|
1047
1011
|
|
|
1048
|
-
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:
|
|
1049
1013
|
|
|
1050
1014
|
```bash
|
|
1051
|
-
# List installed plugins
|
|
1015
|
+
# List installed plugins (should show all 19+ SpecWeave plugins)
|
|
1052
1016
|
/plugin list --installed
|
|
1053
1017
|
|
|
1054
|
-
#
|
|
1055
|
-
/plugin install specweave-kubernetes
|
|
1056
|
-
|
|
1057
|
-
# Uninstall a plugin
|
|
1018
|
+
# Uninstall a plugin (not recommended - breaks functionality)
|
|
1058
1019
|
/plugin uninstall specweave-kubernetes
|
|
1059
1020
|
|
|
1060
|
-
#
|
|
1061
|
-
|
|
1021
|
+
# Reinstall all plugins (if you uninstalled something by mistake)
|
|
1022
|
+
specweave init . # Re-runs full installation
|
|
1062
1023
|
```
|
|
1063
1024
|
|
|
1064
1025
|
**Key Insight**: SpecWeave uses **ONLY** Claude Code's native plugin system:
|
|
1026
|
+
- ALL plugins installed automatically during init (no manual selection)
|
|
1065
1027
|
- Plugins install globally via `/plugin install specweave-{name}`
|
|
1066
1028
|
- Work across ALL projects (like VS Code extensions)
|
|
1067
1029
|
- Auto-activate based on skills' description keywords
|
|
1068
|
-
- Managed by Claude Code (updates
|
|
1030
|
+
- Managed by Claude Code (updates handled via `specweave init` re-run)
|
|
1069
1031
|
|
|
1070
1032
|
### Development vs Production Setup
|
|
1071
1033
|
|
|
@@ -2076,10 +2038,10 @@ ls -1 .specweave/increments/ | grep -E '^[0-9]{4}' | wc -l
|
|
|
2076
2038
|
|
|
2077
2039
|
```
|
|
2078
2040
|
SpecWeave = Collection of Claude Code Plugins
|
|
2079
|
-
├── specweave (auto-
|
|
2080
|
-
├── specweave-github (
|
|
2081
|
-
├── specweave-figma (
|
|
2082
|
-
└── ...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)
|
|
2083
2045
|
```
|
|
2084
2046
|
|
|
2085
2047
|
**What this means**:
|
|
@@ -2106,7 +2068,7 @@ SpecWeave = Collection of Claude Code Plugins
|
|
|
2106
2068
|
**Discovery**:
|
|
2107
2069
|
- Browse all plugins: `ls plugins/` or check [.claude-plugin/marketplace.json](/.claude-plugin/marketplace.json)
|
|
2108
2070
|
- Live catalog: See `.claude-plugin/README.md` for current marketplace contents
|
|
2109
|
-
-
|
|
2071
|
+
- **All plugins automatically installed** during `specweave init` (no manual selection needed)
|
|
2110
2072
|
|
|
2111
2073
|
**Plugin Structure** (all follow same pattern):
|
|
2112
2074
|
```
|
|
@@ -2118,8 +2080,8 @@ plugins/specweave-{name}/
|
|
|
2118
2080
|
└── lib/ # TypeScript utilities (optional)
|
|
2119
2081
|
```
|
|
2120
2082
|
|
|
2121
|
-
**Key Plugins** (for reference):
|
|
2122
|
-
- `specweave` - Framework essentials
|
|
2083
|
+
**Key Plugins** (for reference - all auto-installed):
|
|
2084
|
+
- `specweave` - Framework essentials
|
|
2123
2085
|
- `specweave-github` - GitHub Issues integration
|
|
2124
2086
|
- `specweave-{frontend|backend|infrastructure}` - Tech stack plugins
|
|
2125
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"}
|
|
@@ -441,7 +441,35 @@ export async function initCommand(projectName, options = {}) {
|
|
|
441
441
|
enableDocsPreview = response.enableDocsPreview;
|
|
442
442
|
if (enableDocsPreview) {
|
|
443
443
|
console.log(chalk.green(' ✔ Documentation preview enabled'));
|
|
444
|
-
|
|
444
|
+
// 🚨 CRITICAL FIX: Actually install the docs-preview plugin!
|
|
445
|
+
// User said Yes → Install plugin immediately (like issue tracker setup)
|
|
446
|
+
if (detectClaudeCli()) {
|
|
447
|
+
console.log(chalk.gray(' → Installing specweave-docs-preview plugin...'));
|
|
448
|
+
try {
|
|
449
|
+
const result = execFileNoThrowSync('claude', [
|
|
450
|
+
'plugin',
|
|
451
|
+
'install',
|
|
452
|
+
'specweave-docs-preview' // NO @marketplace suffix
|
|
453
|
+
]);
|
|
454
|
+
if (result.success) {
|
|
455
|
+
console.log(chalk.green(' ✔ specweave-docs-preview plugin installed'));
|
|
456
|
+
console.log(chalk.gray(' → Preview with: /specweave:docs preview'));
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
console.log(chalk.yellow(' ⚠️ Plugin install failed (can install later)'));
|
|
460
|
+
console.log(chalk.gray(' → Try manually: /plugin install specweave-docs-preview'));
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
catch (error) {
|
|
464
|
+
console.log(chalk.yellow(' ⚠️ Plugin install failed (can install later)'));
|
|
465
|
+
console.log(chalk.gray(' → Try manually: /plugin install specweave-docs-preview'));
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
else {
|
|
469
|
+
console.log(chalk.gray(' → Preview with: /specweave:docs preview'));
|
|
470
|
+
console.log(chalk.yellow(' ⚠️ Claude CLI not detected - install plugin manually:'));
|
|
471
|
+
console.log(chalk.gray(' → /plugin install specweave-docs-preview'));
|
|
472
|
+
}
|
|
445
473
|
}
|
|
446
474
|
else {
|
|
447
475
|
console.log(chalk.gray(' → Skipped (can enable later in .specweave/config.json)'));
|
|
@@ -468,7 +496,7 @@ export async function initCommand(projectName, options = {}) {
|
|
|
468
496
|
// Non-critical - show manual instructions in next steps
|
|
469
497
|
console.warn(chalk.yellow(`\n${locale.t('cli', 'init.warnings.pluginAutoSetupFailed')}`));
|
|
470
498
|
}
|
|
471
|
-
// 15. AUTO-INSTALL
|
|
499
|
+
// 15. AUTO-INSTALL ALL PLUGINS via Claude CLI (Breaking Change: No selective loading)
|
|
472
500
|
// Pre-flight check: Is Claude CLI available? (ROBUST CHECK)
|
|
473
501
|
const claudeStatus = detectClaudeCli();
|
|
474
502
|
if (!claudeStatus.available) {
|
|
@@ -528,12 +556,10 @@ export async function initCommand(projectName, options = {}) {
|
|
|
528
556
|
autoInstallSucceeded = false;
|
|
529
557
|
}
|
|
530
558
|
else {
|
|
531
|
-
// Claude CLI available →
|
|
559
|
+
// Claude CLI available → install ALL plugins from marketplace
|
|
532
560
|
try {
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
// ✅ This runs REGARDLESS of whether project has local .claude-plugin/
|
|
536
|
-
// ✅ 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...');
|
|
537
563
|
const listResult = execFileNoThrowSync('claude', [
|
|
538
564
|
'plugin',
|
|
539
565
|
'marketplace',
|
|
@@ -542,60 +568,89 @@ export async function initCommand(projectName, options = {}) {
|
|
|
542
568
|
const marketplaceExists = listResult.success &&
|
|
543
569
|
(listResult.stdout || '').toLowerCase().includes('specweave');
|
|
544
570
|
if (marketplaceExists) {
|
|
545
|
-
//
|
|
546
|
-
spinner.stop();
|
|
547
|
-
console.log(chalk.blue(' 🔄 Updating existing SpecWeave marketplace...'));
|
|
571
|
+
// Always remove existing marketplace to ensure fresh install
|
|
548
572
|
execFileNoThrowSync('claude', [
|
|
549
573
|
'plugin',
|
|
550
574
|
'marketplace',
|
|
551
575
|
'remove',
|
|
552
576
|
'specweave'
|
|
553
577
|
]);
|
|
554
|
-
console.log(chalk.
|
|
578
|
+
console.log(chalk.blue(' 🔄 Removed existing marketplace'));
|
|
555
579
|
}
|
|
556
|
-
//
|
|
557
|
-
// ✅ Uses GitHub repo format (owner/repo) - works for all npm installs
|
|
580
|
+
// Add marketplace from GitHub (always fresh)
|
|
558
581
|
const addResult = execFileNoThrowSync('claude', [
|
|
559
582
|
'plugin',
|
|
560
583
|
'marketplace',
|
|
561
584
|
'add',
|
|
562
585
|
'anton-abyzov/specweave'
|
|
563
586
|
]);
|
|
564
|
-
if (addResult.success) {
|
|
565
|
-
|
|
566
|
-
console.log(chalk.green(' ✔ Marketplace updated successfully'));
|
|
567
|
-
}
|
|
587
|
+
if (!addResult.success) {
|
|
588
|
+
throw new Error('Failed to add marketplace from GitHub');
|
|
568
589
|
}
|
|
569
|
-
|
|
570
|
-
|
|
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');
|
|
571
597
|
}
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
'plugin',
|
|
577
|
-
'install',
|
|
578
|
-
'specweave'
|
|
579
|
-
]);
|
|
580
|
-
if (installResult.success) {
|
|
581
|
-
autoInstallSucceeded = true;
|
|
582
|
-
spinner.succeed('SpecWeave plugin installed successfully!');
|
|
583
|
-
console.log(chalk.green(' ✔ Marketplace: ./claude-plugin → specweave'));
|
|
584
|
-
console.log(chalk.green(' ✔ Plugin: specweave'));
|
|
585
|
-
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');
|
|
586
602
|
}
|
|
587
|
-
|
|
588
|
-
|
|
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
|
+
}
|
|
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`));
|
|
589
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;
|
|
590
645
|
}
|
|
591
646
|
catch (error) {
|
|
592
647
|
// Installation failed - provide helpful diagnostics
|
|
593
|
-
spinner.warn('Could not auto-install
|
|
648
|
+
spinner.warn('Could not auto-install plugins');
|
|
594
649
|
console.log('');
|
|
595
650
|
// Diagnose error and provide actionable hints
|
|
596
651
|
if (error.message.includes('not found') || error.message.includes('ENOENT')) {
|
|
597
652
|
console.log(chalk.yellow(' Reason: Claude CLI found but command failed'));
|
|
598
|
-
console.log(chalk.gray(' → Try manually:
|
|
653
|
+
console.log(chalk.gray(' → Try manually: /plugin install specweave'));
|
|
599
654
|
}
|
|
600
655
|
else if (error.message.includes('EACCES') || error.message.includes('permission')) {
|
|
601
656
|
console.log(chalk.yellow(' Reason: Permission denied'));
|
|
@@ -611,28 +666,12 @@ export async function initCommand(projectName, options = {}) {
|
|
|
611
666
|
console.log('');
|
|
612
667
|
console.log(chalk.cyan('📦 Manual installation:'));
|
|
613
668
|
console.log(chalk.white(' /plugin install specweave'));
|
|
669
|
+
console.log(chalk.white(' /plugin install specweave-github'));
|
|
670
|
+
console.log(chalk.white(' ...etc.'));
|
|
614
671
|
console.log('');
|
|
615
672
|
autoInstallSucceeded = false;
|
|
616
673
|
}
|
|
617
674
|
}
|
|
618
|
-
// 10.5 Issue Tracker Integration (NEW!)
|
|
619
|
-
// CRITICAL: Must happen AFTER marketplace registration and core plugin install
|
|
620
|
-
// Otherwise plugin installation will fail (marketplace not found)
|
|
621
|
-
try {
|
|
622
|
-
const { setupIssueTracker } = await import('../helpers/issue-tracker/index.js');
|
|
623
|
-
await setupIssueTracker({
|
|
624
|
-
projectPath: targetDir,
|
|
625
|
-
language: language,
|
|
626
|
-
maxRetries: 3
|
|
627
|
-
});
|
|
628
|
-
}
|
|
629
|
-
catch (error) {
|
|
630
|
-
// Non-critical error - log but continue
|
|
631
|
-
if (process.env.DEBUG) {
|
|
632
|
-
console.error(chalk.red(`\n❌ Issue tracker setup error: ${error.message}`));
|
|
633
|
-
}
|
|
634
|
-
console.log(chalk.yellow('\n⚠️ Issue tracker setup skipped (can configure later)'));
|
|
635
|
-
}
|
|
636
675
|
}
|
|
637
676
|
showNextSteps(finalProjectName, toolName, language, usedDotNotation, toolName === 'claude' ? autoInstallSucceeded : undefined);
|
|
638
677
|
}
|
|
@@ -1180,10 +1219,10 @@ function showNextSteps(projectName, adapterName, language, usedDotNotation = fal
|
|
|
1180
1219
|
console.log('');
|
|
1181
1220
|
stepNumber++;
|
|
1182
1221
|
}
|
|
1183
|
-
console.log(` ${stepNumber}. ${chalk.white(
|
|
1184
|
-
console.log(` ${chalk.gray(
|
|
1185
|
-
console.log(` ${chalk.gray(
|
|
1186
|
-
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')}`);
|
|
1187
1226
|
console.log('');
|
|
1188
1227
|
stepNumber++;
|
|
1189
1228
|
console.log(` ${stepNumber}. ${chalk.white(locale.t('cli', 'init.nextSteps.claude.step4'))}`);
|