specweave 0.6.8 → 0.7.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.
- package/.claude-plugin/README.md +1 -1
- package/CLAUDE.md +903 -99
- package/README.md +143 -207
- package/bin/specweave.js +67 -0
- package/dist/cli/commands/abandon.d.ts +13 -0
- package/dist/cli/commands/abandon.d.ts.map +1 -0
- package/dist/cli/commands/abandon.js +15 -0
- package/dist/cli/commands/abandon.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +94 -18
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/pause.d.ts +13 -0
- package/dist/cli/commands/pause.d.ts.map +1 -0
- package/dist/cli/commands/pause.js +15 -0
- package/dist/cli/commands/pause.js.map +1 -0
- package/dist/cli/commands/qa.d.ts +54 -0
- package/dist/cli/commands/qa.d.ts.map +1 -0
- package/dist/cli/commands/qa.js +98 -0
- package/dist/cli/commands/qa.js.map +1 -0
- package/dist/cli/commands/resume.d.ts +12 -0
- package/dist/cli/commands/resume.d.ts.map +1 -0
- package/dist/cli/commands/resume.js +14 -0
- package/dist/cli/commands/resume.js.map +1 -0
- package/dist/cli/commands/status.d.ts +12 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +23 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/helpers/issue-tracker/ado.d.ts +57 -0
- package/dist/cli/helpers/issue-tracker/ado.d.ts.map +1 -0
- package/dist/cli/helpers/issue-tracker/ado.js +223 -0
- package/dist/cli/helpers/issue-tracker/ado.js.map +1 -0
- package/dist/cli/helpers/issue-tracker/github.d.ts +65 -0
- package/dist/cli/helpers/issue-tracker/github.d.ts.map +1 -0
- package/dist/cli/helpers/issue-tracker/github.js +284 -0
- package/dist/cli/helpers/issue-tracker/github.js.map +1 -0
- package/dist/cli/helpers/issue-tracker/index.d.ts +22 -0
- package/dist/cli/helpers/issue-tracker/index.d.ts.map +1 -0
- package/dist/cli/helpers/issue-tracker/index.js +270 -0
- package/dist/cli/helpers/issue-tracker/index.js.map +1 -0
- package/dist/cli/helpers/issue-tracker/jira.d.ts +61 -0
- package/dist/cli/helpers/issue-tracker/jira.d.ts.map +1 -0
- package/dist/cli/helpers/issue-tracker/jira.js +265 -0
- package/dist/cli/helpers/issue-tracker/jira.js.map +1 -0
- package/dist/cli/helpers/issue-tracker/types.d.ts +86 -0
- package/dist/cli/helpers/issue-tracker/types.d.ts.map +1 -0
- package/dist/cli/helpers/issue-tracker/types.js +16 -0
- package/dist/cli/helpers/issue-tracker/types.js.map +1 -0
- package/dist/cli/helpers/issue-tracker/utils.d.ts +103 -0
- package/dist/cli/helpers/issue-tracker/utils.d.ts.map +1 -0
- package/dist/cli/helpers/issue-tracker/utils.js +240 -0
- package/dist/cli/helpers/issue-tracker/utils.js.map +1 -0
- package/dist/core/increment/limits.d.ts +68 -0
- package/dist/core/increment/limits.d.ts.map +1 -0
- package/dist/core/increment/limits.js +224 -0
- package/dist/core/increment/limits.js.map +1 -0
- package/dist/core/increment/metadata-manager.d.ts +114 -0
- package/dist/core/increment/metadata-manager.d.ts.map +1 -0
- package/dist/core/increment/metadata-manager.js +320 -0
- package/dist/core/increment/metadata-manager.js.map +1 -0
- package/dist/core/increment/status-commands.d.ts +43 -0
- package/dist/core/increment/status-commands.d.ts.map +1 -0
- package/dist/core/increment/status-commands.js +277 -0
- package/dist/core/increment/status-commands.js.map +1 -0
- package/dist/core/plugin-detector.d.ts +1 -0
- package/dist/core/plugin-detector.d.ts.map +1 -1
- package/dist/core/plugin-detector.js +25 -0
- package/dist/core/plugin-detector.js.map +1 -1
- package/dist/core/qa/qa-runner.d.ts +16 -0
- package/dist/core/qa/qa-runner.d.ts.map +1 -0
- package/dist/core/qa/qa-runner.js +404 -0
- package/dist/core/qa/qa-runner.js.map +1 -0
- package/dist/core/qa/quality-gate-decider.d.ts +53 -0
- package/dist/core/qa/quality-gate-decider.d.ts.map +1 -0
- package/dist/core/qa/quality-gate-decider.js +268 -0
- package/dist/core/qa/quality-gate-decider.js.map +1 -0
- package/dist/core/qa/risk-calculator.d.ts +126 -0
- package/dist/core/qa/risk-calculator.d.ts.map +1 -0
- package/dist/core/qa/risk-calculator.js +247 -0
- package/dist/core/qa/risk-calculator.js.map +1 -0
- package/dist/core/qa/types.d.ts +315 -0
- package/dist/core/qa/types.d.ts.map +1 -0
- package/dist/core/qa/types.js +8 -0
- package/dist/core/qa/types.js.map +1 -0
- package/dist/core/types/config.d.ts +35 -0
- package/dist/core/types/config.d.ts.map +1 -1
- package/dist/core/types/config.js +16 -0
- package/dist/core/types/config.js.map +1 -1
- package/dist/core/types/increment-metadata.d.ts +120 -0
- package/dist/core/types/increment-metadata.d.ts.map +1 -0
- package/dist/core/types/increment-metadata.js +138 -0
- package/dist/core/types/increment-metadata.js.map +1 -0
- package/dist/hooks/lib/invoke-translator-skill.d.ts +60 -0
- package/dist/hooks/lib/invoke-translator-skill.d.ts.map +1 -0
- package/dist/hooks/lib/invoke-translator-skill.js +201 -0
- package/dist/hooks/lib/invoke-translator-skill.js.map +1 -0
- package/dist/hooks/lib/translate-file.d.ts +59 -0
- package/dist/hooks/lib/translate-file.d.ts.map +1 -0
- package/dist/hooks/lib/translate-file.js +350 -0
- package/dist/hooks/lib/translate-file.js.map +1 -0
- package/dist/locales/en/cli.json +3 -1
- package/dist/metrics/calculators/change-failure-rate.d.ts +22 -0
- package/dist/metrics/calculators/change-failure-rate.d.ts.map +1 -0
- package/dist/metrics/calculators/change-failure-rate.js +70 -0
- package/dist/metrics/calculators/change-failure-rate.js.map +1 -0
- package/dist/metrics/calculators/deployment-frequency.d.ts +20 -0
- package/dist/metrics/calculators/deployment-frequency.d.ts.map +1 -0
- package/dist/metrics/calculators/deployment-frequency.js +61 -0
- package/dist/metrics/calculators/deployment-frequency.js.map +1 -0
- package/dist/metrics/calculators/lead-time.d.ts +22 -0
- package/dist/metrics/calculators/lead-time.d.ts.map +1 -0
- package/dist/metrics/calculators/lead-time.js +82 -0
- package/dist/metrics/calculators/lead-time.js.map +1 -0
- package/dist/metrics/calculators/mttr.d.ts +21 -0
- package/dist/metrics/calculators/mttr.d.ts.map +1 -0
- package/dist/metrics/calculators/mttr.js +60 -0
- package/dist/metrics/calculators/mttr.js.map +1 -0
- package/dist/metrics/dora-calculator.d.ts +24 -0
- package/dist/metrics/dora-calculator.d.ts.map +1 -0
- package/dist/metrics/dora-calculator.js +104 -0
- package/dist/metrics/dora-calculator.js.map +1 -0
- package/dist/metrics/github-client.d.ts +51 -0
- package/dist/metrics/github-client.d.ts.map +1 -0
- package/dist/metrics/github-client.js +133 -0
- package/dist/metrics/github-client.js.map +1 -0
- package/dist/metrics/types.d.ts +112 -0
- package/dist/metrics/types.d.ts.map +1 -0
- package/dist/metrics/types.js +10 -0
- package/dist/metrics/types.js.map +1 -0
- package/dist/metrics/utils/percentile.d.ts +25 -0
- package/dist/metrics/utils/percentile.d.ts.map +1 -0
- package/dist/metrics/utils/percentile.js +46 -0
- package/dist/metrics/utils/percentile.js.map +1 -0
- package/dist/metrics/utils/tier-classifier.d.ts +61 -0
- package/dist/metrics/utils/tier-classifier.d.ts.map +1 -0
- package/dist/metrics/utils/tier-classifier.js +100 -0
- package/dist/metrics/utils/tier-classifier.js.map +1 -0
- package/dist/utils/auth-helpers.d.ts +58 -0
- package/dist/utils/auth-helpers.d.ts.map +1 -0
- package/dist/utils/auth-helpers.js +108 -0
- package/dist/utils/auth-helpers.js.map +1 -0
- package/dist/utils/env-file.d.ts +88 -0
- package/dist/utils/env-file.d.ts.map +1 -0
- package/dist/utils/env-file.js +180 -0
- package/dist/utils/env-file.js.map +1 -0
- package/dist/utils/plugin-detection.d.ts +50 -0
- package/dist/utils/plugin-detection.d.ts.map +1 -0
- package/dist/utils/plugin-detection.js +229 -0
- package/dist/utils/plugin-detection.js.map +1 -0
- package/dist/utils/secrets-loader.d.ts +88 -0
- package/dist/utils/secrets-loader.d.ts.map +1 -0
- package/dist/utils/secrets-loader.js +271 -0
- package/dist/utils/secrets-loader.js.map +1 -0
- package/dist/utils/translation.d.ts +187 -0
- package/dist/utils/translation.d.ts.map +1 -0
- package/dist/utils/translation.js +414 -0
- package/dist/utils/translation.js.map +1 -0
- package/package.json +28 -44
- package/plugins/specweave/.claude-plugin/plugin.json +3 -3
- package/plugins/specweave/agents/pm/AGENT.md +330 -54
- package/plugins/specweave/agents/test-aware-planner/AGENT.md +1035 -0
- package/plugins/specweave/agents/test-aware-planner/templates/README.md +118 -0
- package/plugins/specweave/agents/test-aware-planner/templates/task-non-testable.md.template +24 -0
- package/plugins/specweave/agents/test-aware-planner/templates/task-testable.md.template +53 -0
- package/plugins/specweave/agents/test-aware-planner/templates/tasks-frontmatter.md.template +11 -0
- package/plugins/specweave/commands/README.md +88 -163
- package/plugins/specweave/commands/specweave-abandon.md +314 -0
- package/plugins/specweave/commands/specweave-check-tests.md +546 -0
- package/plugins/specweave/commands/{do.md → specweave-do.md} +5 -7
- package/plugins/specweave/commands/{increment.md → specweave-increment.md} +231 -4
- package/plugins/specweave/commands/specweave-pause.md +189 -0
- package/plugins/specweave/commands/specweave-qa.md +245 -0
- package/plugins/specweave/commands/specweave-resume.md +216 -0
- package/plugins/specweave/commands/specweave-status.md +397 -0
- package/plugins/specweave/commands/specweave-sync-tasks.md +256 -0
- package/plugins/specweave/commands/{translate.md → specweave-translate.md} +3 -3
- package/plugins/specweave/commands/specweave-update-scope.md +351 -0
- package/plugins/specweave/commands/specweave.md +21 -21
- package/plugins/specweave/hooks/post-increment-planning.sh +335 -0
- package/plugins/specweave/hooks/post-task-completion.sh +141 -0
- package/plugins/specweave/skills/SKILLS-INDEX.md +1 -1
- package/plugins/specweave/skills/brownfield-analyzer/SKILL.md +9 -9
- package/plugins/specweave/skills/increment-planner/SKILL.md +400 -212
- package/plugins/specweave/skills/increment-quality-judge-v2/SKILL.md +499 -0
- package/plugins/specweave/skills/plugin-detector/SKILL.md +114 -1
- package/plugins/specweave/skills/project-kickstarter/SKILL.md +74 -1
- package/plugins/specweave/skills/{rfc-generator → spec-generator}/SKILL.md +22 -29
- package/plugins/specweave/skills/specweave-detector/SKILL.md +3 -3
- package/plugins/specweave/skills/specweave-framework/SKILL.md +2 -2
- package/plugins/specweave-ado/.claude-plugin/plugin.json +18 -4
- package/plugins/specweave-ado/agents/ado-manager/AGENT.md +426 -0
- package/plugins/specweave-ado/commands/close-workitem.md +52 -0
- package/plugins/specweave-ado/commands/create-workitem.md +53 -0
- package/plugins/specweave-ado/commands/status.md +53 -0
- package/plugins/specweave-ado/commands/sync.md +55 -0
- package/plugins/specweave-ado/lib/ado-client.ts +361 -0
- package/plugins/specweave-ado/reference/ado-specweave-mapping.md +552 -0
- package/plugins/specweave-ado/skills/ado-sync/SKILL.md +344 -193
- package/plugins/specweave-docs/skills/docusaurus/SKILL.md +73 -0
- package/plugins/specweave-github/agents/github-manager/AGENT.md +49 -0
- package/plugins/specweave-github/commands/{github-close-issue.md → close-issue.md} +1 -1
- package/plugins/specweave-github/commands/{github-create-issue.md → create-issue.md} +1 -1
- package/plugins/specweave-github/commands/{github-status.md → status.md} +1 -1
- package/plugins/specweave-github/commands/{github-sync-tasks.md → sync-tasks.md} +1 -1
- package/plugins/specweave-github/commands/{github-sync.md → sync.md} +1 -1
- package/plugins/specweave-github/reference/github-specweave-mapping.md +377 -0
- package/plugins/specweave-github/skills/github-sync/SKILL.md +11 -3
- package/plugins/specweave-infrastructure/commands/{specweave.monitor-setup.md → monitor-setup.md} +5 -0
- package/plugins/specweave-infrastructure/commands/{specweave.slo-implement.md → slo-implement.md} +5 -0
- package/plugins/specweave-jira/agents/jira-manager/AGENT.md +380 -0
- package/plugins/specweave-jira/commands/{specweave.sync-jira.md → sync.md} +1 -1
- package/plugins/specweave-jira/reference/jira-specweave-mapping.md +508 -0
- package/plugins/specweave-ml/commands/ml-deploy.md +1 -1
- package/plugins/specweave-ml/commands/ml-evaluate.md +1 -1
- package/plugins/specweave-ml/commands/ml-explain.md +1 -1
- package/plugins/specweave-ml/commands/{specweave.ml-pipeline.md → ml-pipeline.md} +5 -0
- package/src/templates/AGENTS.md.template +331 -31
- package/src/templates/CLAUDE.md.template +36 -21
- package/src/templates/COMPLETION-REPORT.template.md +128 -0
- package/src/templates/README.md.template +17 -16
- package/src/templates/docs/README.md +11 -9
- package/src/templates/docs/spec-template.md +229 -0
- package/plugins/specweave/commands/inc.md +0 -85
- package/plugins/specweave/commands/list-increments.md +0 -180
- package/src/adapters/README.md +0 -275
- package/src/adapters/adapter-base.ts +0 -182
- package/src/adapters/adapter-interface.ts +0 -166
- package/src/adapters/adapter-loader.ts +0 -256
- package/src/adapters/agents-md-generator.ts +0 -228
- package/src/adapters/claude/README.md +0 -233
- package/src/adapters/claude/adapter.ts +0 -468
- package/src/adapters/claude-md-generator.ts +0 -377
- package/src/adapters/codex/README.md +0 -105
- package/src/adapters/codex/adapter.ts +0 -333
- package/src/adapters/cursor/.cursor/context/docs-context.md +0 -62
- package/src/adapters/cursor/.cursor/context/increments-context.md +0 -71
- package/src/adapters/cursor/.cursor/context/strategy-context.md +0 -73
- package/src/adapters/cursor/.cursor/context/tests-context.md +0 -89
- package/src/adapters/cursor/README.md +0 -283
- package/src/adapters/cursor/adapter.ts +0 -451
- package/src/adapters/doc-generator.ts +0 -331
- package/src/adapters/gemini/README.md +0 -97
- package/src/adapters/gemini/adapter.ts +0 -298
- package/src/adapters/generic/README.md +0 -277
- package/src/adapters/generic/adapter.ts +0 -378
- package/src/adapters/registry.yaml +0 -187
- /package/plugins/specweave/commands/{costs.md → specweave-costs.md} +0 -0
- /package/plugins/specweave/commands/{done.md → specweave-done.md} +0 -0
- /package/plugins/specweave/commands/{next.md → specweave-next.md} +0 -0
- /package/plugins/specweave/commands/{progress.md → specweave-progress.md} +0 -0
- /package/plugins/specweave/commands/{sync-docs.md → specweave-sync-docs.md} +0 -0
- /package/plugins/specweave/commands/{tdd-cycle.md → specweave-tdd-cycle.md} +0 -0
- /package/plugins/specweave/commands/{tdd-green.md → specweave-tdd-green.md} +0 -0
- /package/plugins/specweave/commands/{tdd-red.md → specweave-tdd-red.md} +0 -0
- /package/plugins/specweave/commands/{tdd-refactor.md → specweave-tdd-refactor.md} +0 -0
- /package/plugins/specweave/commands/{validate.md → specweave-validate.md} +0 -0
|
@@ -1,378 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generic Adapter
|
|
3
|
-
*
|
|
4
|
-
* Universal adapter that works with ANY AI tool.
|
|
5
|
-
* All AI tools can read AGENTS.md (universal standard) for workflow instructions.
|
|
6
|
-
*
|
|
7
|
-
* This adapter ensures 100% compatibility - works with GitHub Copilot, ChatGPT web,
|
|
8
|
-
* Claude web, Gemini, or literally ANY AI that can read markdown and follow instructions.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import * as path from 'path';
|
|
12
|
-
import fs from 'fs-extra';
|
|
13
|
-
import { AdapterBase } from '../adapter-base.js';
|
|
14
|
-
import { AdapterOptions, AdapterFile } from '../adapter-interface.js';
|
|
15
|
-
import type { Plugin } from '../../core/types/plugin.js';
|
|
16
|
-
import { LanguageManager, getSystemPromptForLanguage } from '../../core/i18n/language-manager.js';
|
|
17
|
-
import type { SupportedLanguage } from '../../core/i18n/types.js';
|
|
18
|
-
|
|
19
|
-
export class GenericAdapter extends AdapterBase {
|
|
20
|
-
name = 'generic';
|
|
21
|
-
description = 'Generic adapter - AGENTS.md works with ANY AI tool (Copilot, ChatGPT, Gemini, etc.)';
|
|
22
|
-
automationLevel = 'manual' as const;
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Detect if generic adapter should be used
|
|
26
|
-
*
|
|
27
|
-
* This adapter is the universal fallback - always returns true
|
|
28
|
-
* since it works with literally any AI tool.
|
|
29
|
-
*/
|
|
30
|
-
async detect(): Promise<boolean> {
|
|
31
|
-
// Generic adapter works with ANY tool - always available
|
|
32
|
-
return true;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Get files to install for Generic adapter
|
|
37
|
-
*
|
|
38
|
-
* Note: Any AI tool can read AGENTS.md (universal standard).
|
|
39
|
-
* No additional files needed.
|
|
40
|
-
*/
|
|
41
|
-
getFiles(): AdapterFile[] {
|
|
42
|
-
return [];
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Install Generic adapter
|
|
47
|
-
*/
|
|
48
|
-
async install(options: AdapterOptions): Promise<void> {
|
|
49
|
-
console.log('\n📦 Configuring for Universal AI Tool Compatibility\n');
|
|
50
|
-
|
|
51
|
-
// No files to install - any AI can read AGENTS.md
|
|
52
|
-
console.log('✅ AGENTS.md works with any AI tool (Copilot, ChatGPT, Gemini, Claude web, etc.)');
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Post-installation instructions
|
|
57
|
-
*/
|
|
58
|
-
async postInstall(options: AdapterOptions): Promise<void> {
|
|
59
|
-
console.log(this.getInstructions());
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Get usage instructions for Generic adapter
|
|
64
|
-
*/
|
|
65
|
-
getInstructions(): string {
|
|
66
|
-
return `
|
|
67
|
-
================================================================
|
|
68
|
-
Generic Adapter - Universal Compatibility
|
|
69
|
-
================================================================
|
|
70
|
-
|
|
71
|
-
Your project is now configured for ANY AI tool!
|
|
72
|
-
|
|
73
|
-
WHAT THIS PROVIDES:
|
|
74
|
-
|
|
75
|
-
- AGENTS.MD (Universal Standard)
|
|
76
|
-
- GitHub Copilot automatically reads this file
|
|
77
|
-
- ChatGPT, Gemini, Claude web can also use it
|
|
78
|
-
- Contains all workflow instructions
|
|
79
|
-
- Project structure and templates
|
|
80
|
-
- Following agents.md standard (https://agents.md/)
|
|
81
|
-
|
|
82
|
-
- 100% Compatibility
|
|
83
|
-
- GitHub Copilot (best experience with AGENTS.md)
|
|
84
|
-
- ChatGPT (web), Claude (web), Gemini
|
|
85
|
-
- Any AI that can read markdown
|
|
86
|
-
|
|
87
|
-
HOW TO USE AGENTS.MD WITH ANY AI:
|
|
88
|
-
|
|
89
|
-
Method 1: Command Discovery (GitHub Copilot - Recommended!)
|
|
90
|
-
1. AI reads AGENTS.md automatically (Copilot scans project files)
|
|
91
|
-
2. AGENTS.md contains "SpecWeave Commands" section with all 17 commands
|
|
92
|
-
3. Ask: "create increment for payments" or "run /inc payments"
|
|
93
|
-
4. AI reads plugins/specweave/commands/inc.md
|
|
94
|
-
5. AI executes PM-led workflow (market research, spec.md, plan.md, tasks.md)
|
|
95
|
-
6. Increment created - same result as Claude Code!
|
|
96
|
-
|
|
97
|
-
Available commands AI can execute:
|
|
98
|
-
- /inc "feature" - Plan new increment
|
|
99
|
-
- /do - Execute implementation tasks
|
|
100
|
-
- /done 0001 - Close increment
|
|
101
|
-
- /validate 0001 - Quality validation
|
|
102
|
-
- /progress - Check status
|
|
103
|
-
- /sync-docs - Sync living documentation
|
|
104
|
-
... and 11 more commands!
|
|
105
|
-
|
|
106
|
-
Method 2: Copy-Paste Workflow (ChatGPT web, Claude web, etc.)
|
|
107
|
-
1. Open AGENTS.md in your browser/editor
|
|
108
|
-
2. Copy relevant section (e.g., "Creating a Feature Increment")
|
|
109
|
-
3. Paste into AI chat (ChatGPT, Claude web, Gemini, etc.)
|
|
110
|
-
4. Ask AI to follow the instructions
|
|
111
|
-
5. AI generates content (spec.md, plan.md, etc.)
|
|
112
|
-
6. Copy AI's response, save to files
|
|
113
|
-
|
|
114
|
-
Method 3: File System Access (AI with file access)
|
|
115
|
-
1. AI automatically reads AGENTS.md
|
|
116
|
-
2. Ask: "Create increment for user authentication"
|
|
117
|
-
3. AI follows AGENTS.md workflow and command execution instructions
|
|
118
|
-
4. AI creates files directly
|
|
119
|
-
|
|
120
|
-
UNDERSTANDING "MANUAL":
|
|
121
|
-
|
|
122
|
-
Manual = You Orchestrate, AI Executes
|
|
123
|
-
|
|
124
|
-
Example workflow:
|
|
125
|
-
1. Read AGENTS.md section "Creating a Feature Increment"
|
|
126
|
-
2. Copy instructions to ChatGPT
|
|
127
|
-
3. ChatGPT generates spec.md content
|
|
128
|
-
4. Save content to .specweave/increments/0001-auth/spec.md
|
|
129
|
-
5. Repeat for plan.md, tasks.md
|
|
130
|
-
|
|
131
|
-
Manual does not mean harder - just means YOU control each step (no automation).
|
|
132
|
-
Benefit: Works with ANY AI tool!
|
|
133
|
-
|
|
134
|
-
COMPARISON:
|
|
135
|
-
|
|
136
|
-
Claude Code (Full): "create increment" -> Done in 30 seconds (auto)
|
|
137
|
-
Cursor (Semi): "create increment" -> Done in 5 minutes (reads AGENTS.md)
|
|
138
|
-
Copilot (Basic): Reads AGENTS.md, suggests content as you type
|
|
139
|
-
Generic (Manual): Copy AGENTS.md instructions to any AI (10-30 min)
|
|
140
|
-
|
|
141
|
-
Trade-off: Speed vs Compatibility
|
|
142
|
-
- Claude Code: Fast, but requires Claude Code CLI
|
|
143
|
-
- Generic: Slower, but works with EVERY AI tool (even web-based)!
|
|
144
|
-
|
|
145
|
-
WHEN TO USE:
|
|
146
|
-
|
|
147
|
-
Use Generic adapter if:
|
|
148
|
-
- You use ChatGPT web, Claude web, Gemini, or other AI
|
|
149
|
-
- You don't have access to Claude Code or Cursor
|
|
150
|
-
- You want maximum compatibility (works with ANYTHING)
|
|
151
|
-
- Simple projects where automation isn't critical
|
|
152
|
-
|
|
153
|
-
Consider alternatives if:
|
|
154
|
-
- You want automation -> Use Claude Code (full)
|
|
155
|
-
- You have CLI access -> Use Cursor (semi) or Copilot (basic)
|
|
156
|
-
- Large projects -> Manual workflow becomes tedious
|
|
157
|
-
|
|
158
|
-
QUICK START:
|
|
159
|
-
|
|
160
|
-
1. Open AGENTS.md
|
|
161
|
-
Read the "Common Workflows" section
|
|
162
|
-
|
|
163
|
-
2. Copy workflow to your AI tool:
|
|
164
|
-
- "Creating a Feature Increment" section
|
|
165
|
-
- Paste into ChatGPT/Claude/Gemini
|
|
166
|
-
|
|
167
|
-
3. Follow AI's guidance:
|
|
168
|
-
- AI generates spec.md content (copy & save)
|
|
169
|
-
- AI generates plan.md content (copy & save)
|
|
170
|
-
- AI generates tasks.md content (copy & save)
|
|
171
|
-
|
|
172
|
-
4. Use any AI tool you prefer:
|
|
173
|
-
ChatGPT, Claude web, Gemini, Perplexity, etc.
|
|
174
|
-
|
|
175
|
-
DOCUMENTATION:
|
|
176
|
-
|
|
177
|
-
- AGENTS.md: Universal workflow instructions (works with any AI!)
|
|
178
|
-
- .specweave/docs/: Project documentation
|
|
179
|
-
|
|
180
|
-
You're ready to build with SpecWeave using ANY AI tool!
|
|
181
|
-
|
|
182
|
-
Remember: AGENTS.md is the universal standard - it works everywhere!
|
|
183
|
-
`;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* Check if Generic adapter supports plugins
|
|
188
|
-
*
|
|
189
|
-
* Generic has manual plugin support via AGENTS.md
|
|
190
|
-
*
|
|
191
|
-
* @returns boolean True
|
|
192
|
-
*/
|
|
193
|
-
supportsPlugins(): boolean {
|
|
194
|
-
return true;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Read language configuration from project config
|
|
199
|
-
*
|
|
200
|
-
* @returns Language setting from config, defaults to 'en'
|
|
201
|
-
*/
|
|
202
|
-
private async getLanguageConfig(): Promise<SupportedLanguage> {
|
|
203
|
-
const projectPath = process.cwd();
|
|
204
|
-
const configPath = path.join(projectPath, '.specweave', 'config.json');
|
|
205
|
-
|
|
206
|
-
if (!(await fs.pathExists(configPath))) {
|
|
207
|
-
return 'en'; // Default to English if no config
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
try {
|
|
211
|
-
const config = await fs.readJson(configPath);
|
|
212
|
-
return (config.language as SupportedLanguage) || 'en';
|
|
213
|
-
} catch (error) {
|
|
214
|
-
console.warn('⚠️ Could not read language from config, defaulting to English');
|
|
215
|
-
return 'en';
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
/**
|
|
220
|
-
* Inject system prompt for non-English languages
|
|
221
|
-
*
|
|
222
|
-
* Prepends language instruction to markdown content if language !== 'en'
|
|
223
|
-
*
|
|
224
|
-
* @param content Original markdown content
|
|
225
|
-
* @param language Target language
|
|
226
|
-
* @returns Modified content with system prompt (or unchanged if English)
|
|
227
|
-
*/
|
|
228
|
-
private injectSystemPrompt(content: string, language: SupportedLanguage): string {
|
|
229
|
-
if (language === 'en') {
|
|
230
|
-
return content; // No changes for English - preserve default behavior
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
// Get system prompt for target language
|
|
234
|
-
const systemPrompt = getSystemPromptForLanguage(language);
|
|
235
|
-
|
|
236
|
-
// For AGENTS.md compilation, inject at the beginning of the content
|
|
237
|
-
return `${systemPrompt}\n\n${content}`;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
/**
|
|
241
|
-
* Compile and install a plugin for Generic adapter
|
|
242
|
-
*
|
|
243
|
-
* Appends plugin content to AGENTS.md for manual copy-paste workflows
|
|
244
|
-
*
|
|
245
|
-
* NEW: Injects system prompts for non-English languages
|
|
246
|
-
*
|
|
247
|
-
* @param plugin Plugin to install
|
|
248
|
-
*/
|
|
249
|
-
async compilePlugin(plugin: Plugin): Promise<void> {
|
|
250
|
-
const projectPath = process.cwd();
|
|
251
|
-
const agentsMdPath = path.join(projectPath, 'AGENTS.md');
|
|
252
|
-
|
|
253
|
-
console.log(`\n📦 Adding plugin to AGENTS.md: ${plugin.manifest.name}`);
|
|
254
|
-
|
|
255
|
-
// Get language configuration for system prompt injection
|
|
256
|
-
const language = await this.getLanguageConfig();
|
|
257
|
-
if (language !== 'en') {
|
|
258
|
-
console.log(` 🌐 Language: ${language} (system prompts will be injected)`);
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
if (!(await fs.pathExists(agentsMdPath))) {
|
|
262
|
-
throw new Error('AGENTS.md not found. Run specweave init first.');
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
let agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
|
|
266
|
-
|
|
267
|
-
const pluginMarker = `<!-- Plugin: ${plugin.manifest.name} -->`;
|
|
268
|
-
if (agentsMd.includes(pluginMarker)) {
|
|
269
|
-
console.log(` ℹ️ Plugin ${plugin.manifest.name} already in AGENTS.md`);
|
|
270
|
-
return;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
let pluginSection = `\n\n${pluginMarker}\n\n`;
|
|
274
|
-
pluginSection += `# Plugin: ${plugin.manifest.name}\n\n`;
|
|
275
|
-
pluginSection += `${plugin.manifest.description}\n\n`;
|
|
276
|
-
|
|
277
|
-
if (plugin.skills.length > 0) {
|
|
278
|
-
pluginSection += `## Skills\n\n`;
|
|
279
|
-
for (const skill of plugin.skills) {
|
|
280
|
-
const skillContent = await fs.readFile(path.join(skill.path, 'SKILL.md'), 'utf-8');
|
|
281
|
-
const contentWithoutFrontmatter = skillContent.replace(/^---\n[\s\S]+?\n---\n/, '');
|
|
282
|
-
// Inject system prompt if needed
|
|
283
|
-
const modifiedContent = this.injectSystemPrompt(contentWithoutFrontmatter, language);
|
|
284
|
-
pluginSection += `### ${skill.name}\n\n${modifiedContent}\n\n`;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
if (plugin.agents.length > 0) {
|
|
289
|
-
pluginSection += `## Agents\n\n`;
|
|
290
|
-
for (const agent of plugin.agents) {
|
|
291
|
-
const agentContent = await fs.readFile(path.join(agent.path, 'AGENT.md'), 'utf-8');
|
|
292
|
-
// Inject system prompt if needed
|
|
293
|
-
const modifiedContent = this.injectSystemPrompt(agentContent, language);
|
|
294
|
-
pluginSection += `### ${agent.name}\n\n${modifiedContent}\n\n`;
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
if (plugin.commands.length > 0) {
|
|
299
|
-
pluginSection += `## Workflows (Manual)\n\n`;
|
|
300
|
-
for (const command of plugin.commands) {
|
|
301
|
-
const commandContent = await fs.readFile(command.path, 'utf-8');
|
|
302
|
-
const contentWithoutFrontmatter = commandContent.replace(/^---\n[\s\S]+?\n---\n/, '');
|
|
303
|
-
// Inject system prompt if needed
|
|
304
|
-
const modifiedContent = this.injectSystemPrompt(contentWithoutFrontmatter, language);
|
|
305
|
-
pluginSection += `### ${command.name.replace('specweave.', '')}\n\n${modifiedContent}\n\n`;
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
pluginSection += `<!-- End Plugin: ${plugin.manifest.name} -->\n`;
|
|
310
|
-
|
|
311
|
-
agentsMd += pluginSection;
|
|
312
|
-
await fs.writeFile(agentsMdPath, agentsMd, 'utf-8');
|
|
313
|
-
|
|
314
|
-
console.log(` ✓ Added to AGENTS.md (copy-paste workflows)`);
|
|
315
|
-
console.log(`\n✅ Plugin ${plugin.manifest.name} available for manual use!`);
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
/**
|
|
319
|
-
* Unload a plugin from Generic adapter
|
|
320
|
-
*/
|
|
321
|
-
async unloadPlugin(pluginName: string): Promise<void> {
|
|
322
|
-
const projectPath = process.cwd();
|
|
323
|
-
const agentsMdPath = path.join(projectPath, 'AGENTS.md');
|
|
324
|
-
|
|
325
|
-
console.log(`\n🗑️ Removing plugin from AGENTS.md: ${pluginName}`);
|
|
326
|
-
|
|
327
|
-
if (!(await fs.pathExists(agentsMdPath))) {
|
|
328
|
-
console.warn(`⚠️ AGENTS.md not found`);
|
|
329
|
-
return;
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
let agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
|
|
333
|
-
|
|
334
|
-
const startMarker = `<!-- Plugin: ${pluginName} -->`;
|
|
335
|
-
const endMarker = `<!-- End Plugin: ${pluginName} -->`;
|
|
336
|
-
|
|
337
|
-
const startIndex = agentsMd.indexOf(startMarker);
|
|
338
|
-
if (startIndex === -1) {
|
|
339
|
-
console.warn(`⚠️ Plugin ${pluginName} not found in AGENTS.md`);
|
|
340
|
-
return;
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
const endIndex = agentsMd.indexOf(endMarker, startIndex);
|
|
344
|
-
if (endIndex === -1) {
|
|
345
|
-
console.warn(`⚠️ Plugin ${pluginName} section malformed`);
|
|
346
|
-
return;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
agentsMd = agentsMd.slice(0, startIndex) + agentsMd.slice(endIndex + endMarker.length);
|
|
350
|
-
await fs.writeFile(agentsMdPath, agentsMd, 'utf-8');
|
|
351
|
-
|
|
352
|
-
console.log(` ✓ Removed from AGENTS.md`);
|
|
353
|
-
console.log(`\n✅ Plugin ${pluginName} removed!`);
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
/**
|
|
357
|
-
* Get list of installed plugins for Generic adapter
|
|
358
|
-
*/
|
|
359
|
-
async getInstalledPlugins(): Promise<string[]> {
|
|
360
|
-
const projectPath = process.cwd();
|
|
361
|
-
const agentsMdPath = path.join(projectPath, 'AGENTS.md');
|
|
362
|
-
|
|
363
|
-
if (!(await fs.pathExists(agentsMdPath))) {
|
|
364
|
-
return [];
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
const agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
|
|
368
|
-
const pluginMarkerRegex = /<!-- Plugin: (specweave-[a-z0-9-]+) -->/g;
|
|
369
|
-
const matches = agentsMd.matchAll(pluginMarkerRegex);
|
|
370
|
-
|
|
371
|
-
const plugins: string[] = [];
|
|
372
|
-
for (const match of matches) {
|
|
373
|
-
plugins.push(match[1]);
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
return plugins;
|
|
377
|
-
}
|
|
378
|
-
}
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
# SpecWeave Adapter Registry
|
|
3
|
-
#
|
|
4
|
-
# Lists all available adapters for multi-tool support.
|
|
5
|
-
# CLI reads this file to show available adapters.
|
|
6
|
-
|
|
7
|
-
version: 1
|
|
8
|
-
last_updated: 2025-10-27
|
|
9
|
-
|
|
10
|
-
adapters:
|
|
11
|
-
- name: claude
|
|
12
|
-
description: "Claude Code - NATIVE/BASELINE (no adapter needed!). Full automation with skills, agents, hooks"
|
|
13
|
-
automation_level: full
|
|
14
|
-
status: native
|
|
15
|
-
directory: claude
|
|
16
|
-
features:
|
|
17
|
-
- Native skills, agents, hooks (no approximation needed)
|
|
18
|
-
- Skills auto-activate (specweave-detector, skill-router, etc.)
|
|
19
|
-
- Agents coordinate (PM, Architect, DevOps, QA, Security)
|
|
20
|
-
- Hooks auto-update docs (post-task-completion, etc.)
|
|
21
|
-
- Slash commands (/create-increment, /sync-docs, etc.)
|
|
22
|
-
- Best experience, most features - THE BASELINE!
|
|
23
|
-
requirements:
|
|
24
|
-
- Claude Code CLI installed
|
|
25
|
-
- Node.js >= 18.0.0
|
|
26
|
-
market_share: 10%
|
|
27
|
-
priority: P0
|
|
28
|
-
note: "Claude is the native experience - adapters exist to approximate these capabilities for other tools"
|
|
29
|
-
|
|
30
|
-
- name: cursor
|
|
31
|
-
description: "Cursor adapter - Semi-automation with .cursorrules and @ shortcuts"
|
|
32
|
-
automation_level: semi
|
|
33
|
-
status: active
|
|
34
|
-
directory: cursor
|
|
35
|
-
features:
|
|
36
|
-
- .cursorrules with SpecWeave workflow instructions
|
|
37
|
-
- "@ context shortcuts (@increments, @docs, @strategy)"
|
|
38
|
-
- Composer multi-file editing support
|
|
39
|
-
- Good experience, semi-automated
|
|
40
|
-
requirements:
|
|
41
|
-
- Cursor editor installed
|
|
42
|
-
- Node.js >= 18.0.0
|
|
43
|
-
market_share: 30%
|
|
44
|
-
priority: P1
|
|
45
|
-
|
|
46
|
-
- name: copilot
|
|
47
|
-
description: "GitHub Copilot adapter - Basic automation with workspace instructions"
|
|
48
|
-
automation_level: basic
|
|
49
|
-
status: active
|
|
50
|
-
directory: copilot
|
|
51
|
-
features:
|
|
52
|
-
- .github/copilot/instructions.md workspace guidance
|
|
53
|
-
- Copilot reads context manifests for suggestions
|
|
54
|
-
- Works with built-in Copilot features only
|
|
55
|
-
- Decent experience, basic automation
|
|
56
|
-
requirements:
|
|
57
|
-
- GitHub Copilot extension (VS Code)
|
|
58
|
-
- Node.js >= 18.0.0
|
|
59
|
-
market_share: 40%
|
|
60
|
-
priority: P1
|
|
61
|
-
|
|
62
|
-
- name: generic
|
|
63
|
-
description: "Generic adapter - Manual workflow for ANY AI tool (ChatGPT, Gemini, etc.)"
|
|
64
|
-
automation_level: manual
|
|
65
|
-
status: active
|
|
66
|
-
directory: generic
|
|
67
|
-
features:
|
|
68
|
-
- SPECWEAVE.md with step-by-step manual instructions
|
|
69
|
-
- Works with ANY AI (ChatGPT, Gemini, Claude web, etc.)
|
|
70
|
-
- No automation, user guides AI through workflow
|
|
71
|
-
- Basic experience, maximum compatibility (100%)
|
|
72
|
-
requirements:
|
|
73
|
-
- Node.js >= 18.0.0 (for CLI init only)
|
|
74
|
-
- Any AI tool (web or local)
|
|
75
|
-
market_share: 20%
|
|
76
|
-
priority: P1
|
|
77
|
-
|
|
78
|
-
- name: gemini
|
|
79
|
-
description: "Gemini CLI adapter - Semi-automation with AGENTS.md and agent mode"
|
|
80
|
-
automation_level: semi
|
|
81
|
-
status: active
|
|
82
|
-
directory: gemini
|
|
83
|
-
features:
|
|
84
|
-
- AGENTS.md universal instructions
|
|
85
|
-
- 1M token context window (5x larger than Claude!)
|
|
86
|
-
- Agent mode for multi-file tasks
|
|
87
|
-
- MCP (Model Context Protocol) support
|
|
88
|
-
- Free tier available (60 req/min, 1K req/day)
|
|
89
|
-
- Open source (Apache 2.0)
|
|
90
|
-
requirements:
|
|
91
|
-
- Gemini CLI installed
|
|
92
|
-
- Node.js >= 18.0.0
|
|
93
|
-
market_share: 10%
|
|
94
|
-
priority: P1
|
|
95
|
-
|
|
96
|
-
- name: codex
|
|
97
|
-
description: "OpenAI Codex adapter - Semi-automation with AGENTS.md and GPT-5-Codex"
|
|
98
|
-
automation_level: semi
|
|
99
|
-
status: active
|
|
100
|
-
directory: codex
|
|
101
|
-
features:
|
|
102
|
-
- AGENTS.md universal instructions
|
|
103
|
-
- GPT-5-Codex optimized for engineering
|
|
104
|
-
- Multiple access points (CLI + Web + IDE + GitHub + iOS)
|
|
105
|
-
- Task-based isolated execution
|
|
106
|
-
- File operations and test execution
|
|
107
|
-
requirements:
|
|
108
|
-
- ChatGPT Plus/Pro/Business/Enterprise
|
|
109
|
-
- Node.js >= 18.0.0
|
|
110
|
-
market_share: 20%
|
|
111
|
-
priority: P1
|
|
112
|
-
|
|
113
|
-
# Future adapters (P2/P3)
|
|
114
|
-
future_adapters:
|
|
115
|
-
- name: windsurf
|
|
116
|
-
description: "Windsurf adapter (if requested by community)"
|
|
117
|
-
automation_level: semi
|
|
118
|
-
status: planned
|
|
119
|
-
priority: P2
|
|
120
|
-
|
|
121
|
-
# Adapter capabilities comparison
|
|
122
|
-
capabilities:
|
|
123
|
-
skills:
|
|
124
|
-
claude: full
|
|
125
|
-
cursor: via_agents_md
|
|
126
|
-
copilot: via_agents_md
|
|
127
|
-
gemini: via_agents_md
|
|
128
|
-
codex: via_agents_md
|
|
129
|
-
generic: via_agents_md
|
|
130
|
-
|
|
131
|
-
agents:
|
|
132
|
-
claude: full
|
|
133
|
-
cursor: via_agents_md
|
|
134
|
-
copilot: via_agents_md
|
|
135
|
-
gemini: via_agents_md
|
|
136
|
-
codex: via_agents_md
|
|
137
|
-
generic: via_agents_md
|
|
138
|
-
|
|
139
|
-
hooks:
|
|
140
|
-
claude: full
|
|
141
|
-
cursor: none
|
|
142
|
-
copilot: none
|
|
143
|
-
gemini: none
|
|
144
|
-
codex: none
|
|
145
|
-
generic: none
|
|
146
|
-
|
|
147
|
-
instruction_file:
|
|
148
|
-
claude: .claude/skills + agents
|
|
149
|
-
cursor: AGENTS.md
|
|
150
|
-
copilot: AGENTS.md
|
|
151
|
-
gemini: AGENTS.md
|
|
152
|
-
codex: AGENTS.md
|
|
153
|
-
generic: AGENTS.md
|
|
154
|
-
|
|
155
|
-
context_manifests:
|
|
156
|
-
claude: auto_load
|
|
157
|
-
cursor: manual_reference
|
|
158
|
-
copilot: manual_reference
|
|
159
|
-
gemini: manual_reference
|
|
160
|
-
codex: manual_reference
|
|
161
|
-
generic: manual_copy_paste
|
|
162
|
-
|
|
163
|
-
# Target market coverage
|
|
164
|
-
market_coverage:
|
|
165
|
-
claude: 10%
|
|
166
|
-
cursor: 30%
|
|
167
|
-
copilot: 35%
|
|
168
|
-
gemini: 10%
|
|
169
|
-
codex: 20%
|
|
170
|
-
generic: 5%
|
|
171
|
-
total: 110% # Overlapping users
|
|
172
|
-
unique_coverage: 100%
|
|
173
|
-
goal: "Make SpecWeave accessible to ALL developers"
|
|
174
|
-
|
|
175
|
-
# Universal AGENTS.md
|
|
176
|
-
universal_standard:
|
|
177
|
-
file: AGENTS.md
|
|
178
|
-
purpose: "Single source of truth for all adapters (except Claude which has native support)"
|
|
179
|
-
replaces:
|
|
180
|
-
- .cursorrules (Cursor)
|
|
181
|
-
- .github/copilot/instructions.md (Copilot)
|
|
182
|
-
- Multiple tool-specific files
|
|
183
|
-
benefits:
|
|
184
|
-
- Single file to maintain
|
|
185
|
-
- Works across ALL tools
|
|
186
|
-
- Auto-generated from actual skills/agents
|
|
187
|
-
- Follows agents.md standard
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|