specweave 0.4.0 → 0.4.1

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 (62) hide show
  1. package/CLAUDE.md +501 -28
  2. package/README.md +99 -57
  3. package/bin/specweave.js +16 -0
  4. package/dist/adapters/adapter-base.d.ts +21 -0
  5. package/dist/adapters/adapter-base.d.ts.map +1 -1
  6. package/dist/adapters/adapter-base.js +28 -0
  7. package/dist/adapters/adapter-base.js.map +1 -1
  8. package/dist/adapters/adapter-interface.d.ts +41 -0
  9. package/dist/adapters/adapter-interface.d.ts.map +1 -1
  10. package/dist/adapters/claude/adapter.d.ts +36 -0
  11. package/dist/adapters/claude/adapter.d.ts.map +1 -1
  12. package/dist/adapters/claude/adapter.js +135 -0
  13. package/dist/adapters/claude/adapter.js.map +1 -1
  14. package/dist/adapters/copilot/adapter.d.ts +25 -0
  15. package/dist/adapters/copilot/adapter.d.ts.map +1 -1
  16. package/dist/adapters/copilot/adapter.js +112 -0
  17. package/dist/adapters/copilot/adapter.js.map +1 -1
  18. package/dist/adapters/cursor/adapter.d.ts +36 -0
  19. package/dist/adapters/cursor/adapter.d.ts.map +1 -1
  20. package/dist/adapters/cursor/adapter.js +140 -0
  21. package/dist/adapters/cursor/adapter.js.map +1 -1
  22. package/dist/adapters/generic/adapter.d.ts +25 -0
  23. package/dist/adapters/generic/adapter.d.ts.map +1 -1
  24. package/dist/adapters/generic/adapter.js +111 -0
  25. package/dist/adapters/generic/adapter.js.map +1 -1
  26. package/dist/cli/commands/init.d.ts.map +1 -1
  27. package/dist/cli/commands/init.js +48 -1
  28. package/dist/cli/commands/init.js.map +1 -1
  29. package/dist/cli/commands/plugin.d.ts +37 -0
  30. package/dist/cli/commands/plugin.d.ts.map +1 -0
  31. package/dist/cli/commands/plugin.js +296 -0
  32. package/dist/cli/commands/plugin.js.map +1 -0
  33. package/dist/core/plugin-detector.d.ts +96 -0
  34. package/dist/core/plugin-detector.d.ts.map +1 -0
  35. package/dist/core/plugin-detector.js +349 -0
  36. package/dist/core/plugin-detector.js.map +1 -0
  37. package/dist/core/plugin-loader.d.ts +111 -0
  38. package/dist/core/plugin-loader.d.ts.map +1 -0
  39. package/dist/core/plugin-loader.js +319 -0
  40. package/dist/core/plugin-loader.js.map +1 -0
  41. package/dist/core/plugin-manager.d.ts +144 -0
  42. package/dist/core/plugin-manager.d.ts.map +1 -0
  43. package/dist/core/plugin-manager.js +393 -0
  44. package/dist/core/plugin-manager.js.map +1 -0
  45. package/dist/core/schemas/plugin-manifest.schema.json +253 -0
  46. package/dist/core/types/plugin.d.ts +252 -0
  47. package/dist/core/types/plugin.d.ts.map +1 -0
  48. package/dist/core/types/plugin.js +48 -0
  49. package/dist/core/types/plugin.js.map +1 -0
  50. package/dist/integrations/jira/jira-mapper.d.ts +2 -2
  51. package/dist/integrations/jira/jira-mapper.js +2 -2
  52. package/package.json +13 -9
  53. package/src/adapters/adapter-base.ts +33 -0
  54. package/src/adapters/adapter-interface.ts +46 -0
  55. package/src/adapters/claude/adapter.ts +164 -0
  56. package/src/adapters/copilot/adapter.ts +138 -0
  57. package/src/adapters/cursor/adapter.ts +170 -0
  58. package/src/adapters/generic/adapter.ts +137 -0
  59. package/src/commands/specweave.increment.md +48 -4
  60. package/src/hooks/post-increment-plugin-detect.sh +142 -0
  61. package/src/hooks/post-task-completion.sh +53 -11
  62. package/src/hooks/pre-task-plugin-detect.sh +96 -0
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  > **Spec-Driven Development Framework** - Where specifications and documentation are the source of truth
4
4
 
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
- [![Version](https://img.shields.io/badge/version-0.3.8-blue.svg)](https://github.com/anton-abyzov/specweave/releases/tag/v0.3.8)
6
+ [![Version](https://img.shields.io/badge/version-0.4.0-blue.svg)](https://github.com/anton-abyzov/specweave/releases/tag/v0.4.0)
7
7
  [![Status](https://img.shields.io/badge/status-beta-blue.svg)]()
8
8
  [![Website](https://img.shields.io/badge/website-spec--weave.com-green.svg)](https://spec-weave.com)
9
9
 
@@ -30,15 +30,19 @@
30
30
 
31
31
  - 🤖 **Autonomous & Smart** - Just works! Agents ask clarifying questions, review output, validate quality—minimal interaction required
32
32
  - ⚡ **Seamless Workflow** - Auto-resume, auto-close, progress tracking—natural flow without overhead
33
- - 🎯 **10 Agents + 35+ Skills** - PM, Architect, DevOps, QA, Security work in parallel (minimizes context usage). Easily extensible!
34
- - 🔍 **Progressive Disclosure** (NEW) - Skills indexed for 90% token savings. SKILLS-INDEX.md provides single-file discovery across ALL AI tools!
33
+ - 🔌 **Plugin Architecture** (NEW in v0.4.0) - Modular design with 75%+ context reduction! Core framework (12K tokens) + opt-in plugins only when needed
34
+ - Core: 3 agents + 8 skills (always loaded)
35
+ - Plugins: GitHub sync, tech stacks, domain expertise (load on demand)
36
+ - **Context efficiency**: 50K → 12K tokens for basic projects!
37
+ - 🎯 **Extensible & Scalable** - 10+ agents and 40+ skills via plugins. PM, Architect, DevOps, QA, Security work in parallel
35
38
  - 🔧 **Universal Support** - Works with Claude Code (default), Cursor, Gemini CLI, Codex, Copilot, and ANY AI tool (100% market coverage)
36
- - **Claude Code** (default): Native agents/skills pre-installed in `.claude/` - best experience!
37
- - **Other tools**: Progressive disclosure via SKILLS-INDEX.md and AGENTS.md - full skill access!
39
+ - **Claude Code** (default): Native plugin support with auto-activation - best experience!
40
+ - **Cursor/Copilot**: Plugin compilation to AGENTS.md - semi-automation
41
+ - **Other tools**: AGENTS.md for manual workflows - full capability access!
38
42
  - 🧪 **Complete Test Coverage** - 4-level strategy from specs to integration tests (APIs, UIs, CLIs, libraries)
39
43
  - 📚 **Living Documentation** - Specs auto-update after every operation and test—always in sync with code
40
44
  - 🎨 **Visual Architecture** - C4 Model diagrams (Context, Container, Component)
41
- - 🔄 **Tool Integration** - Sync with JIRA, Azure DevOps, GitHub
45
+ - 🔄 **Tool Integration** - GitHub, JIRA, Azure DevOps sync (via plugins)
42
46
  - 🏢 **Brownfield Excellence** - The hardest problem solved: merge with existing docs, create complex architecture (ADRs, HLDs, RFCs), maintain living documentation, safe regression prevention
43
47
  - 🌐 **Framework Agnostic** - Works with TypeScript, Python, Go, Rust, Java, C#—any tech stack
44
48
 
@@ -107,8 +111,9 @@ specweave --help # Show help
107
111
  ```
108
112
 
109
113
  **Note**:
110
- - **Claude Code**: All 10 agents and 35+ skills installed natively in `.claude/` - ready to use immediately!
114
+ - **Claude Code**: Core framework (3 agents + 8 skills) installed natively in `.claude/` + plugins auto-detected and suggested!
111
115
  - **Other tools**: Universal AGENTS.md adapter generated - works with Cursor, Gemini CLI, Codex, Copilot, and ANY AI!
116
+ - **Plugins**: Auto-detected based on your project (GitHub, tech stacks, domain expertise) - enable as needed!
112
117
 
113
118
  ---
114
119
 
@@ -121,10 +126,11 @@ specweave --help # Show help
121
126
  npx specweave init my-app
122
127
  cd my-app
123
128
 
124
- # For Claude Code - everything native and ready immediately:
125
- # ✅ 10 agents in .claude/agents/
126
- # ✅ 35+ skills in .claude/skills/
127
- # ✅ 10 slash commands in .claude/commands/
129
+ # For Claude Code - core framework native and ready immediately:
130
+ # ✅ 3 core agents in .claude/agents/ (PM, Architect, Tech Lead)
131
+ # ✅ 8 core skills in .claude/skills/ (increment lifecycle, living docs)
132
+ # ✅ 7 slash commands in .claude/commands/
133
+ # ✅ Plugins auto-detected and suggested based on project
128
134
  # (Other tools get AGENTS.md adapter instead)
129
135
 
130
136
  # Open Claude Code and use slash commands:
@@ -163,10 +169,11 @@ User: /specweave done 0001 # Close increment with slash command
163
169
 
164
170
  **How it works** (smart append-only workflow: 0001 → 0002 → 0003):
165
171
  1. `specweave init` → Detects your AI tool and configures appropriately
166
- - **Claude Code**: Native components installed (10 agents + 35+ skills)
167
- - **Other tools**: Universal AGENTS.md adapter generated
172
+ - **Claude Code**: Core framework installed + plugins auto-detected and suggested
173
+ - **Other tools**: Universal AGENTS.md adapter generated with enabled plugins
168
174
  2. **Use `/specweave inc "feature"`** (Claude) or "Read AGENTS.md and create increment" (other tools)
169
175
  - PM creates specs + plan + auto-generates tasks
176
+ - **Smart**: Auto-detects needed plugins from feature description
170
177
  - **Smart**: Auto-closes previous increment if PM gates pass
171
178
  3. **Use `/specweave do` or `/specweave do 0001`** → Execute implementation (hooks after EVERY task in Claude)
172
179
  - **Smart**: Auto-resumes from next incomplete task
@@ -183,70 +190,105 @@ User: /specweave done 0001 # Close increment with slash command
183
190
 
184
191
  ---
185
192
 
186
- ## 🤖 Agents (10 Total)
193
+ ## 🤖 Agents
187
194
 
188
- SpecWeave includes **10 specialized AI agents** that work with slash commands and during implementation:
195
+ SpecWeave uses a **modular agent system** - core agents (always available) + plugin agents (opt-in):
196
+
197
+ ### Core Agents (Always Available)
189
198
 
190
199
  | Agent | Role | When It Activates |
191
200
  |-------|------|-------------------|
192
201
  | **pm** | Product Manager - requirements, user stories | Planning features, creating increments |
193
202
  | **architect** | System Architect - design, ADRs, decisions | Technical design, architecture |
194
- | **security** | Security Engineer - threat modeling, OWASP | Security review, vulnerability assessment |
195
- | **qa-lead** | QA Lead - test strategy, quality gates | Testing, quality assurance |
196
- | **devops** | DevOps Engineer - CI/CD, infrastructure | Deployment, infrastructure needs |
197
203
  | **tech-lead** | Technical Lead - code review, best practices | Code review, refactoring |
198
- | **sre** | SRE - incident response, monitoring | Production incidents, troubleshooting |
199
- | **docs-writer** | Technical Writer - documentation | Writing docs, API documentation |
200
- | **performance** | Performance Engineer - optimization | Performance issues, profiling |
201
- | **diagrams-architect** | Diagram Expert - C4 Model, Mermaid | Creating diagrams (via diagrams-generator skill) |
204
+
205
+ ### Plugin Agents (Available via Plugins)
206
+
207
+ | Agent | Plugin | Role | When It Activates |
208
+ |-------|--------|------|-------------------|
209
+ | **github-manager** | specweave-github | GitHub CLI specialist | GitHub operations, issue sync |
210
+ | **security** | specweave-security | Security Engineer - threat modeling | Security review, vulnerabilities |
211
+ | **qa-lead** | specweave-qa | QA Lead - test strategy | Testing, quality assurance |
212
+ | **devops** | specweave-kubernetes | DevOps Engineer - K8s, infrastructure | Deployment, infrastructure |
213
+ | **sre** | specweave-observability | SRE - incident response, monitoring | Production incidents |
214
+ | **docs-writer** | specweave-docs | Technical Writer - documentation | Writing docs, API docs |
215
+ | **performance** | specweave-performance | Performance Engineer - optimization | Performance issues |
216
+ | **diagrams-architect** | specweave-diagrams | Diagram Expert - C4 Model, Mermaid | Creating diagrams |
202
217
 
203
218
  **Agent Access**:
204
- - **Claude Code**: All agents pre-installed natively in `.claude/agents/` - ready to use immediately!
205
- - **Other tools**: Agents documented in universal AGENTS.md - reference roles manually
219
+ - **Claude Code**: Core agents pre-installed in `.claude/agents/`, plugin agents load on demand!
220
+ - **Other tools**: Agents compiled to AGENTS.md - reference roles manually
206
221
 
207
222
  ---
208
223
 
209
- ## 🎯 Skills (35+ Total)
224
+ ## 🎯 Skills
225
+
226
+ SpecWeave uses a **modular skill system** - core skills (always available) + plugin skills (opt-in):
210
227
 
211
- SpecWeave includes **35+ AI skills** that work with slash commands:
228
+ ### Core Skills (Always Available)
212
229
 
213
- ### Core Framework Skills
214
- - **specweave-detector** - Slash command documentation
230
+ **Increment Lifecycle:**
215
231
  - **increment-planner** - Plan features via `/specweave inc` command
216
- - **skill-router** - Route requests to appropriate skills
217
- - **context-loader** - Load relevant specifications
218
- - **role-orchestrator** - Coordinate multiple agents
219
-
220
- ### Technology Stack Skills
221
- - **nextjs** - Next.js App Router, Server Components
222
- - **nodejs-backend** - Node.js, Express, NestJS APIs
223
- - **python-backend** - FastAPI, Django APIs
224
- - **dotnet-backend** - ASP.NET Core APIs
225
- - **frontend** - React, Vue, Angular components
226
-
227
- ### Integration Skills
228
- - **jira-sync** - Sync with JIRA issues
229
- - **ado-sync** - Sync with Azure DevOps
230
- - **github-sync** - Sync with GitHub issues
231
-
232
- ### Design & Diagram Skills
233
- - **diagrams-generator** - Generate C4 diagrams
234
- - **figma-designer** - Create Figma designs
235
- - **figma-implementer** - Convert Figma to code
236
-
237
- ### Infrastructure Skills
238
- - **hetzner-provisioner** - Deploy to Hetzner Cloud
239
- - **cost-optimizer** - Optimize cloud costs
240
-
241
- ### Brownfield Skills
232
+ - **rfc-generator** - Generate RFCs and technical proposals
233
+ - **context-loader** - Explains progressive disclosure and context efficiency
234
+ - **context-optimizer** - Second-pass context optimization (80%+ token reduction)
235
+
236
+ **Project Management:**
237
+ - **project-kickstarter** - Initialize new projects from descriptions
238
+ - **increment-quality-judge** - AI-powered quality assessment
239
+
240
+ **Brownfield Support:**
242
241
  - **brownfield-analyzer** - Analyze existing codebases
243
242
  - **brownfield-onboarder** - Merge existing documentation
244
243
 
245
- **And many more!**
244
+ ### Plugin Skills (40+ Available via Plugins)
245
+
246
+ **GitHub Integration (specweave-github):**
247
+ - **github-sync** - Bidirectional increment ↔ issue sync
248
+ - **github-issue-tracker** - Task-level progress tracking
249
+
250
+ **Technology Stacks:**
251
+ - **nextjs** - Next.js App Router, Server Components (specweave-frontend-stack)
252
+ - **nodejs-backend** - Node.js, Express, NestJS APIs (specweave-backend-stack)
253
+ - **python-backend** - FastAPI, Django APIs (specweave-backend-stack)
254
+ - **dotnet-backend** - ASP.NET Core APIs (specweave-backend-stack)
255
+ - **frontend** - React, Vue, Angular components (specweave-frontend-stack)
256
+
257
+ **Infrastructure:**
258
+ - **hetzner-provisioner** - Deploy to Hetzner Cloud (specweave-cloud)
259
+ - **cost-optimizer** - Optimize cloud costs (specweave-cloud)
260
+ - **k8s-deployer** - Kubernetes deployment (specweave-kubernetes)
261
+
262
+ **Integrations:**
263
+ - **jira-sync** - Sync with JIRA issues (specweave-jira)
264
+ - **ado-sync** - Sync with Azure DevOps (specweave-ado)
265
+
266
+ **Design & Diagrams:**
267
+ - **diagrams-generator** - Generate C4 diagrams (specweave-diagrams)
268
+ - **figma-designer** - Create Figma designs (specweave-figma)
269
+ - **figma-implementer** - Convert Figma to code (specweave-figma)
270
+
271
+ **And 30+ more specialized skills!**
272
+
273
+ ### 🔌 Plugin System (NEW in v0.4.0)
274
+
275
+ SpecWeave v0.4.0 introduces **intelligent plugin detection**:
276
+
277
+ 1. **Auto-Detection** - Plugins suggested based on:
278
+ - Package.json dependencies (React → frontend-stack)
279
+ - Directory structure (kubernetes/ → kubernetes)
280
+ - Git remote (github.com → github)
281
+ - Environment variables (GITHUB_TOKEN → github)
246
282
 
247
- ### 🔍 Progressive Disclosure (NEW in v0.3.8)
283
+ 2. **Context Efficiency** - Load only what you need:
284
+ - Basic project: **12K tokens** (core only)
285
+ - React app: **16K tokens** (core + frontend-stack + github)
286
+ - Backend API: **15K tokens** (core + backend-stack + github)
248
287
 
249
- SpecWeave now includes **SKILLS-INDEX.md** - a single-file reference for all 35+ skills with activation keywords and usage examples.
288
+ 3. **Multi-Tool Support** - Works across all platforms:
289
+ - **Claude Code**: Native plugin loading
290
+ - **Cursor/Copilot**: AGENTS.md compilation
291
+ - **Generic**: Manual workflows
250
292
 
251
293
  **How it works**:
252
294
  1. **Discovery**: Read `.claude/skills/SKILLS-INDEX.md` (1 file vs 35 files = 97% faster)
package/bin/specweave.js CHANGED
@@ -81,6 +81,18 @@ program
81
81
  await loader.listAdapters();
82
82
  });
83
83
 
84
+ // Plugin commands - Manage plugins
85
+ program
86
+ .command('plugin <action> [plugin-name]')
87
+ .description('Manage plugins (list, enable, disable, info)')
88
+ .option('--enabled', 'Show only enabled plugins (for list)')
89
+ .option('--available', 'Show only available plugins (for list)')
90
+ .option('--force', 'Force operation (for enable/disable)')
91
+ .action(async (action, pluginName, options) => {
92
+ const { pluginCommand } = await import('../dist/cli/commands/plugin.js');
93
+ await pluginCommand(action, pluginName, options);
94
+ });
95
+
84
96
  // Help text
85
97
  program.on('--help', () => {
86
98
  console.log('');
@@ -88,6 +100,10 @@ program.on('--help', () => {
88
100
  console.log(' $ specweave init my-saas # Create new project (auto-detect tool)');
89
101
  console.log(' $ specweave init my-saas --adapter cursor # Create project for Cursor');
90
102
  console.log(' $ specweave adapters # List available AI tool adapters');
103
+ console.log(' $ specweave plugin list # List all plugins');
104
+ console.log(' $ specweave plugin enable specweave-github # Enable GitHub plugin');
105
+ console.log(' $ specweave plugin disable specweave-github # Disable GitHub plugin');
106
+ console.log(' $ specweave plugin info specweave-github # Show plugin details');
91
107
  console.log(' $ specweave install pm --local # Install PM agent locally');
92
108
  console.log(' $ specweave install --global # Install all (interactive)');
93
109
  console.log(' $ specweave list # List all available components');
@@ -5,6 +5,7 @@
5
5
  * Concrete adapters extend this class and implement tool-specific logic.
6
6
  */
7
7
  import { IAdapter, AdapterOptions, RequirementsResult, AdapterFile, AutomationLevel } from './adapter-interface.js';
8
+ import type { Plugin } from '../core/types/plugin.js';
8
9
  export declare abstract class AdapterBase implements IAdapter {
9
10
  abstract name: string;
10
11
  abstract description: string;
@@ -46,5 +47,25 @@ export declare abstract class AdapterBase implements IAdapter {
46
47
  * Helper: Read template file and replace variables
47
48
  */
48
49
  protected readTemplate(templatePath: string, variables: Record<string, string>): Promise<string>;
50
+ /**
51
+ * Check if this adapter supports plugins
52
+ * Default: No plugin support (override in concrete adapters)
53
+ */
54
+ supportsPlugins(): boolean;
55
+ /**
56
+ * Compile and install a plugin
57
+ * Default: Throw error (override in concrete adapters that support plugins)
58
+ */
59
+ compilePlugin(plugin: Plugin): Promise<void>;
60
+ /**
61
+ * Unload a plugin
62
+ * Default: Throw error (override in concrete adapters that support plugins)
63
+ */
64
+ unloadPlugin(pluginName: string): Promise<void>;
65
+ /**
66
+ * Get installed plugins
67
+ * Default: Return empty array (override in concrete adapters that support plugins)
68
+ */
69
+ getInstalledPlugins(): Promise<string[]>;
49
70
  }
50
71
  //# sourceMappingURL=adapter-base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-base.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter-base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EACL,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAKhC,8BAAsB,WAAY,YAAW,QAAQ;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAE1C;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IA0BtD;;OAEG;IACH,QAAQ,CAAC,QAAQ,IAAI,WAAW,EAAE;IAElC;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBrD;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzD;;OAEG;IACH,QAAQ,CAAC,eAAe,IAAI,MAAM;IAElC;;OAEG;cACa,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUhE;;OAEG;cACa,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS9D;;OAEG;cACa,YAAY,CAC1B,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,MAAM,CAAC;CAUnB"}
1
+ {"version":3,"file":"adapter-base.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter-base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EACL,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAItD,8BAAsB,WAAY,YAAW,QAAQ;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAE1C;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IA0BtD;;OAEG;IACH,QAAQ,CAAC,QAAQ,IAAI,WAAW,EAAE;IAElC;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBrD;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzD;;OAEG;IACH,QAAQ,CAAC,eAAe,IAAI,MAAM;IAElC;;OAEG;cACa,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUhE;;OAEG;cACa,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS9D;;OAEG;cACa,YAAY,CAC1B,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,MAAM,CAAC;IAWlB;;;OAGG;IACH,eAAe,IAAI,OAAO;IAI1B;;;OAGG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD;;;OAGG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAG/C"}
@@ -107,5 +107,33 @@ export class AdapterBase {
107
107
  }
108
108
  return content;
109
109
  }
110
+ /**
111
+ * Check if this adapter supports plugins
112
+ * Default: No plugin support (override in concrete adapters)
113
+ */
114
+ supportsPlugins() {
115
+ return false;
116
+ }
117
+ /**
118
+ * Compile and install a plugin
119
+ * Default: Throw error (override in concrete adapters that support plugins)
120
+ */
121
+ async compilePlugin(plugin) {
122
+ throw new Error(`Plugin support not implemented for ${this.name} adapter`);
123
+ }
124
+ /**
125
+ * Unload a plugin
126
+ * Default: Throw error (override in concrete adapters that support plugins)
127
+ */
128
+ async unloadPlugin(pluginName) {
129
+ throw new Error(`Plugin support not implemented for ${this.name} adapter`);
130
+ }
131
+ /**
132
+ * Get installed plugins
133
+ * Default: Return empty array (override in concrete adapters that support plugins)
134
+ */
135
+ async getInstalledPlugins() {
136
+ return [];
137
+ }
110
138
  }
111
139
  //# sourceMappingURL=adapter-base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-base.js","sourceRoot":"","sources":["../../src/adapters/adapter-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter-base.js","sourceRoot":"","sources":["../../src/adapters/adapter-base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQzC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE9C,MAAM,OAAgB,WAAW;IAK/B;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB;QACrB,MAAM,MAAM,GAAuB;YACjC,GAAG,EAAE,IAAI;YACT,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,wBAAwB;QACxB,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;QACpC,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAElE,IAAI,YAAY,GAAG,EAAE,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC;YACnB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,+BAA+B,WAAW,GAAG,CAAC,CAAC;QACrE,CAAC;QAED,YAAY;QACZ,IAAI,CAAC;YACH,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;QAChF,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAOD;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzD,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,IAAI,mBAAmB,CAAC,CAAC;QAE7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAChE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAEnE,iCAAiC;YACjC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YAE7C,YAAY;YACZ,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpC,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,OAAuB;QACvC,gCAAgC;QAChC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IAC7C,CAAC;IAOD;;OAEG;IACO,KAAK,CAAC,aAAa,CAAC,OAAe;QAC3C,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;YAC9C,QAAQ,CAAC,SAAS,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,UAAU,CAAC,QAAgB;QACzC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,YAAY,CAC1B,YAAoB,EACpB,SAAiC;QAEjC,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAEvD,8CAA8C;QAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC;IAC7E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,UAAkB;QACnC,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC;IAC7E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,mBAAmB;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
@@ -4,6 +4,7 @@
4
4
  * Defines the contract that all SpecWeave adapters must implement.
5
5
  * Enables SpecWeave to work with ANY AI coding tool (Claude, Cursor, Copilot, etc.)
6
6
  */
7
+ import type { Plugin } from '../core/types/plugin.js';
7
8
  export interface AdapterOptions {
8
9
  projectPath: string;
9
10
  projectName: string;
@@ -104,5 +105,45 @@ export interface IAdapter {
104
105
  * @returns string Markdown-formatted instructions
105
106
  */
106
107
  getInstructions(): string;
108
+ /**
109
+ * Check if this adapter supports plugins
110
+ *
111
+ * Returns true if the adapter can install and compile plugins
112
+ * (Claude native, Cursor AGENTS.md, Copilot instructions.md)
113
+ * Returns false for generic/manual adapters
114
+ *
115
+ * @returns boolean True if plugins are supported
116
+ */
117
+ supportsPlugins(): boolean;
118
+ /**
119
+ * Compile and install a plugin for this adapter
120
+ *
121
+ * Transforms plugin content (skills/agents/commands) to tool-specific format:
122
+ * - Claude: Copy to .claude/skills/, .claude/agents/, .claude/commands/
123
+ * - Cursor: Compile to AGENTS.md + team commands JSON
124
+ * - Copilot: Compile to .github/copilot/instructions.md
125
+ * - Generic: Generate manual copy-paste instructions
126
+ *
127
+ * @param plugin Plugin to compile and install
128
+ * @returns Promise<void>
129
+ */
130
+ compilePlugin(plugin: Plugin): Promise<void>;
131
+ /**
132
+ * Unload (disable) a plugin for this adapter
133
+ *
134
+ * Removes plugin-specific files and restores previous state
135
+ *
136
+ * @param pluginName Name of plugin to unload
137
+ * @returns Promise<void>
138
+ */
139
+ unloadPlugin(pluginName: string): Promise<void>;
140
+ /**
141
+ * Get plugin installation status
142
+ *
143
+ * Returns information about which plugins are currently installed
144
+ *
145
+ * @returns Promise<string[]> Array of installed plugin names
146
+ */
147
+ getInstalledPlugins(): Promise<string[]>;
107
148
  }
108
149
  //# sourceMappingURL=adapter-interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-interface.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter-interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,YAAY,CAAC,EAAE,eAAe,GAAG,aAAa,CAAC;CAChD;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnE;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;;;;OAMG;IACH,eAAe,EAAE,eAAe,CAAC;IAEjC;;;;;;;;;OASG;IACH,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3B;;;;;;;;;OASG;IACH,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEjD;;;;OAIG;IACH,QAAQ,IAAI,WAAW,EAAE,CAAC;IAE1B;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD;;;;;;;;;;OAUG;IACH,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;;;;;OAMG;IACH,eAAe,IAAI,MAAM,CAAC;CAC3B"}
1
+ {"version":3,"file":"adapter-interface.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter-interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,YAAY,CAAC,EAAE,eAAe,GAAG,aAAa,CAAC;CAChD;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnE;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;;;;OAMG;IACH,eAAe,EAAE,eAAe,CAAC;IAEjC;;;;;;;;;OASG;IACH,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3B;;;;;;;;;OASG;IACH,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEjD;;;;OAIG;IACH,QAAQ,IAAI,WAAW,EAAE,CAAC;IAE1B;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD;;;;;;;;;;OAUG;IACH,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;;;;;OAMG;IACH,eAAe,IAAI,MAAM,CAAC;IAE1B;;;;;;;;OAQG;IACH,eAAe,IAAI,OAAO,CAAC;IAE3B;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C;;;;;;;OAOG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD;;;;;;OAMG;IACH,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC1C"}
@@ -9,6 +9,7 @@
9
9
  */
10
10
  import { AdapterBase } from '../adapter-base.js';
11
11
  import { AdapterOptions, AdapterFile } from '../adapter-interface.js';
12
+ import type { Plugin } from '../../core/types/plugin.js';
12
13
  export declare class ClaudeAdapter extends AdapterBase {
13
14
  name: string;
14
15
  description: string;
@@ -50,5 +51,40 @@ export declare class ClaudeAdapter extends AdapterBase {
50
51
  * Get usage instructions for Claude adapter
51
52
  */
52
53
  getInstructions(): string;
54
+ /**
55
+ * Check if Claude adapter supports plugins
56
+ *
57
+ * Claude Code has FULL plugin support via native .claude/ directory
58
+ *
59
+ * @returns boolean Always true
60
+ */
61
+ supportsPlugins(): boolean;
62
+ /**
63
+ * Compile and install a plugin for Claude Code
64
+ *
65
+ * Claude uses native plugin installation:
66
+ * - Copy skills to .claude/skills/{plugin-name}/{skill-name}/
67
+ * - Copy agents to .claude/agents/{plugin-name}/{agent-name}/
68
+ * - Copy commands to .claude/commands/
69
+ *
70
+ * @param plugin Plugin to install
71
+ */
72
+ compilePlugin(plugin: Plugin): Promise<void>;
73
+ /**
74
+ * Unload a plugin from Claude Code
75
+ *
76
+ * Removes plugin files from .claude/ directory
77
+ *
78
+ * @param pluginName Name of plugin to unload
79
+ */
80
+ unloadPlugin(pluginName: string): Promise<void>;
81
+ /**
82
+ * Get list of installed plugins
83
+ *
84
+ * Returns plugin names that are currently installed in .claude/
85
+ *
86
+ * @returns Array of installed plugin names
87
+ */
88
+ getInstalledPlugins(): Promise<string[]>;
53
89
  }
54
90
  //# sourceMappingURL=adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtE,qBAAa,aAAc,SAAQ,WAAW;IAC5C,IAAI,SAAY;IAChB,WAAW,SAA0F;IACrG,eAAe,EAAG,MAAM,CAAU;IAElC;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAUhC;;;;;;;;OAQG;IACH,QAAQ,IAAI,WAAW,EAAE;IAYzB;;;;;;;;;OASG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBrD;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;IACH,eAAe,IAAI,MAAM;CAsD1B"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,qBAAa,aAAc,SAAQ,WAAW;IAC5C,IAAI,SAAY;IAChB,WAAW,SAA0F;IACrG,eAAe,EAAG,MAAM,CAAU;IAElC;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAUhC;;;;;;;;OAQG;IACH,QAAQ,IAAI,WAAW,EAAE;IAYzB;;;;;;;;;OASG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBrD;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;IACH,eAAe,IAAI,MAAM;IAuDzB;;;;;;OAMG;IACH,eAAe,IAAI,OAAO;IAI1B;;;;;;;;;OASG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6DlD;;;;;;OAMG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDrD;;;;;;OAMG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAe/C"}
@@ -143,5 +143,140 @@ You're ready to build with SpecWeave on Claude Code!
143
143
  For complete documentation, see: .claude/README.md
144
144
  `;
145
145
  }
146
+ /**
147
+ * Check if Claude adapter supports plugins
148
+ *
149
+ * Claude Code has FULL plugin support via native .claude/ directory
150
+ *
151
+ * @returns boolean Always true
152
+ */
153
+ supportsPlugins() {
154
+ return true;
155
+ }
156
+ /**
157
+ * Compile and install a plugin for Claude Code
158
+ *
159
+ * Claude uses native plugin installation:
160
+ * - Copy skills to .claude/skills/{plugin-name}/{skill-name}/
161
+ * - Copy agents to .claude/agents/{plugin-name}/{agent-name}/
162
+ * - Copy commands to .claude/commands/
163
+ *
164
+ * @param plugin Plugin to install
165
+ */
166
+ async compilePlugin(plugin) {
167
+ const projectPath = process.cwd();
168
+ const claudeDir = path.join(projectPath, '.claude');
169
+ console.log(`\n📦 Installing plugin: ${plugin.manifest.name}`);
170
+ // Ensure base directories exist
171
+ await fs.ensureDir(path.join(claudeDir, 'skills'));
172
+ await fs.ensureDir(path.join(claudeDir, 'agents'));
173
+ await fs.ensureDir(path.join(claudeDir, 'commands'));
174
+ // Install skills
175
+ for (const skill of plugin.skills) {
176
+ const targetPath = path.join(claudeDir, 'skills', skill.name);
177
+ await fs.ensureDir(targetPath);
178
+ // Copy SKILL.md
179
+ const skillMdPath = path.join(skill.path, 'SKILL.md');
180
+ if (await fs.pathExists(skillMdPath)) {
181
+ await fs.copy(skillMdPath, path.join(targetPath, 'SKILL.md'));
182
+ }
183
+ // Copy test cases if they exist
184
+ const testCasesDir = path.join(skill.path, 'test-cases');
185
+ if (await fs.pathExists(testCasesDir)) {
186
+ await fs.copy(testCasesDir, path.join(targetPath, 'test-cases'));
187
+ }
188
+ console.log(` ✓ Skill: ${skill.name}`);
189
+ }
190
+ // Install agents
191
+ for (const agent of plugin.agents) {
192
+ const targetPath = path.join(claudeDir, 'agents', agent.name);
193
+ await fs.ensureDir(targetPath);
194
+ // Copy AGENT.md
195
+ const agentMdPath = path.join(agent.path, 'AGENT.md');
196
+ if (await fs.pathExists(agentMdPath)) {
197
+ await fs.copy(agentMdPath, path.join(targetPath, 'AGENT.md'));
198
+ }
199
+ console.log(` ✓ Agent: ${agent.name}`);
200
+ }
201
+ // Install commands
202
+ for (const command of plugin.commands) {
203
+ // Commands use their full name as filename
204
+ const fileName = command.name.replace(/\./g, '-') + '.md';
205
+ const targetPath = path.join(claudeDir, 'commands', fileName);
206
+ if (await fs.pathExists(command.path)) {
207
+ await fs.copy(command.path, targetPath);
208
+ }
209
+ console.log(` ✓ Command: /${command.name}`);
210
+ }
211
+ console.log(`\n✅ Plugin ${plugin.manifest.name} installed!`);
212
+ }
213
+ /**
214
+ * Unload a plugin from Claude Code
215
+ *
216
+ * Removes plugin files from .claude/ directory
217
+ *
218
+ * @param pluginName Name of plugin to unload
219
+ */
220
+ async unloadPlugin(pluginName) {
221
+ const projectPath = process.cwd();
222
+ const claudeDir = path.join(projectPath, '.claude');
223
+ console.log(`\n🗑️ Unloading plugin: ${pluginName}`);
224
+ // Read plugin manifest to know what to remove
225
+ const pluginsDir = path.join(projectPath, 'src', 'plugins');
226
+ const pluginPath = path.join(pluginsDir, pluginName);
227
+ if (!(await fs.pathExists(pluginPath))) {
228
+ console.warn(`⚠️ Plugin ${pluginName} not found`);
229
+ return;
230
+ }
231
+ // Load plugin to get its components
232
+ const { PluginLoader } = await import('../../core/plugin-loader.js');
233
+ const loader = new PluginLoader();
234
+ const plugin = await loader.loadFromDirectory(pluginPath);
235
+ // Remove skills
236
+ for (const skill of plugin.skills) {
237
+ const skillPath = path.join(claudeDir, 'skills', skill.name);
238
+ if (await fs.pathExists(skillPath)) {
239
+ await fs.remove(skillPath);
240
+ console.log(` ✓ Removed skill: ${skill.name}`);
241
+ }
242
+ }
243
+ // Remove agents
244
+ for (const agent of plugin.agents) {
245
+ const agentPath = path.join(claudeDir, 'agents', agent.name);
246
+ if (await fs.pathExists(agentPath)) {
247
+ await fs.remove(agentPath);
248
+ console.log(` ✓ Removed agent: ${agent.name}`);
249
+ }
250
+ }
251
+ // Remove commands
252
+ for (const command of plugin.commands) {
253
+ const fileName = command.name.replace(/\./g, '-') + '.md';
254
+ const commandPath = path.join(claudeDir, 'commands', fileName);
255
+ if (await fs.pathExists(commandPath)) {
256
+ await fs.remove(commandPath);
257
+ console.log(` ✓ Removed command: /${command.name}`);
258
+ }
259
+ }
260
+ console.log(`\n✅ Plugin ${pluginName} unloaded!`);
261
+ }
262
+ /**
263
+ * Get list of installed plugins
264
+ *
265
+ * Returns plugin names that are currently installed in .claude/
266
+ *
267
+ * @returns Array of installed plugin names
268
+ */
269
+ async getInstalledPlugins() {
270
+ const projectPath = process.cwd();
271
+ const configPath = path.join(projectPath, '.specweave', 'config.yaml');
272
+ if (!(await fs.pathExists(configPath))) {
273
+ return [];
274
+ }
275
+ // Read config to get enabled plugins
276
+ const yaml = await import('js-yaml');
277
+ const content = await fs.readFile(configPath, 'utf-8');
278
+ const config = yaml.load(content);
279
+ return config.plugins?.enabled || [];
280
+ }
146
281
  }
147
282
  //# sourceMappingURL=adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/claude/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,OAAO,aAAc,SAAQ,WAAW;IAA9C;;QACE,SAAI,GAAG,QAAQ,CAAC;QAChB,gBAAW,GAAG,sFAAsF,CAAC;QACrG,oBAAe,GAAG,MAAe,CAAC;IA0IpC,CAAC;IAxIC;;;;;;OAMG;IACH,KAAK,CAAC,MAAM;QACV,6BAA6B;QAC7B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAExD,2DAA2D;QAC3D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEtD,OAAO,YAAY,IAAI,YAAY,CAAC;IACtC,CAAC;IAED;;;;;;;;OAQG;IACH,QAAQ;QACN,OAAO;YACL;gBACE,UAAU,EAAE,WAAW;gBACvB,UAAU,EAAE,mBAAmB;gBAC/B,WAAW,EAAE,8BAA8B;aAC5C;YACD,sEAAsE;YACtE,qDAAqD;SACtD,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QAEvE,kCAAkC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAE9B,wBAAwB;QACxB,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;QACrD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAElD,cAAc;QACd,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE7B,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;IACjF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,OAAuB;QACvC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmDN,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/claude/adapter.ts"],"names":[],"mappings":"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"}