specweave 0.6.7 → 0.7.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/README.md +1 -1
- package/CLAUDE.md +920 -107
- package/README.md +143 -207
- package/bin/specweave.js +67 -0
- package/dist/adapters/adapter-interface.d.ts +11 -11
- package/dist/adapters/adapter-interface.d.ts.map +1 -1
- package/dist/adapters/adapter-interface.js +1 -1
- package/dist/adapters/adapter-loader.d.ts +1 -2
- package/dist/adapters/adapter-loader.d.ts.map +1 -1
- package/dist/adapters/adapter-loader.js +3 -6
- package/dist/adapters/adapter-loader.js.map +1 -1
- package/dist/adapters/agents-md-generator.d.ts +3 -3
- package/dist/adapters/agents-md-generator.js +3 -3
- package/dist/adapters/generic/adapter.d.ts +2 -2
- package/dist/adapters/generic/adapter.d.ts.map +1 -1
- package/dist/adapters/generic/adapter.js +28 -9
- package/dist/adapters/generic/adapter.js.map +1 -1
- 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 +141 -40
- 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 +37 -2
- 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 -5
- package/plugins/specweave/commands/{done.md → specweave-done.md} +2 -0
- 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/{validate.md → specweave-validate.md} +2 -0
- package/plugins/specweave/commands/specweave.md +21 -21
- package/plugins/specweave/hooks/docs-changed.sh +23 -3
- package/plugins/specweave/hooks/human-input-required.sh +23 -3
- package/plugins/specweave/hooks/post-increment-planning.sh +335 -0
- package/plugins/specweave/hooks/post-task-completion.sh +161 -1
- package/plugins/specweave/hooks/pre-implementation.sh +23 -3
- 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 +652 -1
- 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/dist/adapters/copilot/adapter.d.ts +0 -86
- package/dist/adapters/copilot/adapter.d.ts.map +0 -1
- package/dist/adapters/copilot/adapter.js +0 -396
- package/dist/adapters/copilot/adapter.js.map +0 -1
- package/plugins/.specweave/logs/hooks-debug.log +0 -24
- package/plugins/.specweave/logs/last-hook-fire +0 -1
- package/plugins/.specweave/logs/last-todowrite-time +0 -1
- package/plugins/.specweave/logs/tasks.log +0 -6
- package/plugins/specweave/commands/inc.md +0 -85
- package/plugins/specweave/commands/list-increments.md +0 -180
- package/src/adapters/README.md +0 -311
- package/src/adapters/adapter-base.ts +0 -182
- package/src/adapters/adapter-interface.ts +0 -166
- package/src/adapters/adapter-loader.ts +0 -259
- 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/copilot/README.md +0 -240
- package/src/adapters/copilot/adapter.ts +0 -444
- 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 -359
- package/src/adapters/registry.yaml +0 -187
- /package/plugins/specweave/commands/{costs.md → specweave-costs.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
|
@@ -9,7 +9,6 @@ import * as path from 'path';
|
|
|
9
9
|
import * as YAML from 'yaml';
|
|
10
10
|
import { execSync } from 'child_process';
|
|
11
11
|
import { CursorAdapter } from './cursor/adapter.js';
|
|
12
|
-
import { CopilotAdapter } from './copilot/adapter.js';
|
|
13
12
|
import { GeminiAdapter } from './gemini/adapter.js';
|
|
14
13
|
import { CodexAdapter } from './codex/adapter.js';
|
|
15
14
|
import { GenericAdapter } from './generic/adapter.js';
|
|
@@ -33,7 +32,6 @@ export class AdapterLoader {
|
|
|
33
32
|
initializeAdapters() {
|
|
34
33
|
// Note: No ClaudeAdapter - Claude is the baseline, not an adaptation!
|
|
35
34
|
this.adapters.set('cursor', new CursorAdapter());
|
|
36
|
-
this.adapters.set('copilot', new CopilotAdapter());
|
|
37
35
|
this.adapters.set('gemini', new GeminiAdapter());
|
|
38
36
|
this.adapters.set('codex', new CodexAdapter());
|
|
39
37
|
this.adapters.set('generic', new GenericAdapter());
|
|
@@ -74,15 +72,14 @@ export class AdapterLoader {
|
|
|
74
72
|
* 2. Cursor (if cursor CLI or .cursor/ or .cursorrules exists)
|
|
75
73
|
* 3. Gemini CLI (if gemini CLI found)
|
|
76
74
|
* 4. Codex (if codex CLI found)
|
|
77
|
-
* 5.
|
|
78
|
-
* 6. Generic (only if explicitly requested via --adapter generic)
|
|
75
|
+
* 5. Generic (only if explicitly requested via --adapter generic)
|
|
79
76
|
*
|
|
80
77
|
* @returns Promise<string> Detected tool name (not adapter - Claude has no adapter!)
|
|
81
78
|
*/
|
|
82
79
|
async detectTool() {
|
|
83
80
|
console.log('🔍 Detecting AI coding tool...\n');
|
|
84
81
|
// Check other tools first (if they have specific indicators)
|
|
85
|
-
const detectionOrder = ['cursor', 'gemini', 'codex'
|
|
82
|
+
const detectionOrder = ['cursor', 'gemini', 'codex'];
|
|
86
83
|
for (const adapterName of detectionOrder) {
|
|
87
84
|
const adapter = this.adapters.get(adapterName);
|
|
88
85
|
if (!adapter)
|
|
@@ -199,7 +196,7 @@ export class AdapterLoader {
|
|
|
199
196
|
if (explicitChoice) {
|
|
200
197
|
const adapter = this.adapters.get(explicitChoice);
|
|
201
198
|
if (!adapter) {
|
|
202
|
-
throw new Error(`Invalid adapter: ${explicitChoice}. Use 'claude', 'cursor',
|
|
199
|
+
throw new Error(`Invalid adapter: ${explicitChoice}. Use 'claude', 'cursor', or 'generic'`);
|
|
203
200
|
}
|
|
204
201
|
return adapter;
|
|
205
202
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter-loader.js","sourceRoot":"","sources":["../../src/adapters/adapter-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"adapter-loader.js","sourceRoot":"","sources":["../../src/adapters/adapter-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
*
|
|
7
7
|
* IMPORTANT:
|
|
8
8
|
* - Claude Code does NOT read this file - it only reads CLAUDE.md
|
|
9
|
-
* - This file is for: Cursor,
|
|
9
|
+
* - This file is for: Cursor, GitHub Copilot, ChatGPT, Gemini, and ANY other AI tool
|
|
10
10
|
*
|
|
11
11
|
* This ONE file replaces:
|
|
12
|
-
* - .cursorrules (Cursor)
|
|
13
|
-
* - .github/copilot/instructions.md (Copilot)
|
|
12
|
+
* - .cursorrules (Cursor - legacy)
|
|
13
|
+
* - .github/copilot/instructions.md (Copilot - no longer needed, Copilot reads AGENTS.md)
|
|
14
14
|
* - Any other tool-specific configuration files
|
|
15
15
|
*/
|
|
16
16
|
export interface AgentsMdOptions {
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
*
|
|
7
7
|
* IMPORTANT:
|
|
8
8
|
* - Claude Code does NOT read this file - it only reads CLAUDE.md
|
|
9
|
-
* - This file is for: Cursor,
|
|
9
|
+
* - This file is for: Cursor, GitHub Copilot, ChatGPT, Gemini, and ANY other AI tool
|
|
10
10
|
*
|
|
11
11
|
* This ONE file replaces:
|
|
12
|
-
* - .cursorrules (Cursor)
|
|
13
|
-
* - .github/copilot/instructions.md (Copilot)
|
|
12
|
+
* - .cursorrules (Cursor - legacy)
|
|
13
|
+
* - .github/copilot/instructions.md (Copilot - no longer needed, Copilot reads AGENTS.md)
|
|
14
14
|
* - Any other tool-specific configuration files
|
|
15
15
|
*/
|
|
16
16
|
import { DocGenerator } from './doc-generator.js';
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Universal adapter that works with ANY AI tool.
|
|
5
5
|
* All AI tools can read AGENTS.md (universal standard) for workflow instructions.
|
|
6
6
|
*
|
|
7
|
-
* This adapter ensures 100% compatibility - works with
|
|
8
|
-
* Gemini, or literally ANY AI that can read markdown and follow instructions.
|
|
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
9
|
*/
|
|
10
10
|
import { AdapterBase } from '../adapter-base.js';
|
|
11
11
|
import { AdapterOptions, AdapterFile } from '../adapter-interface.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/generic/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;AAIzD,qBAAa,cAAe,SAAQ,WAAW;IAC7C,IAAI,SAAa;IACjB,WAAW,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/generic/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;AAIzD,qBAAa,cAAe,SAAQ,WAAW;IAC7C,IAAI,SAAa;IACjB,WAAW,SAAyF;IACpG,eAAe,EAAG,QAAQ,CAAU;IAEpC;;;;;OAKG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAKhC;;;;;OAKG;IACH,QAAQ,IAAI,WAAW,EAAE;IAIzB;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;IACH,eAAe,IAAI,MAAM;IAyHzB;;;;;;OAMG;IACH,eAAe,IAAI,OAAO;IAI1B;;;;OAIG;YACW,iBAAiB;IAiB/B;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;;;;;;;OAQG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqElD;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCrD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAmB/C"}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Universal adapter that works with ANY AI tool.
|
|
5
5
|
* All AI tools can read AGENTS.md (universal standard) for workflow instructions.
|
|
6
6
|
*
|
|
7
|
-
* This adapter ensures 100% compatibility - works with
|
|
8
|
-
* Gemini, or literally ANY AI that can read markdown and follow instructions.
|
|
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
9
|
*/
|
|
10
10
|
import * as path from 'path';
|
|
11
11
|
import fs from 'fs-extra';
|
|
@@ -15,7 +15,7 @@ export class GenericAdapter extends AdapterBase {
|
|
|
15
15
|
constructor() {
|
|
16
16
|
super(...arguments);
|
|
17
17
|
this.name = 'generic';
|
|
18
|
-
this.description = 'Generic adapter - AGENTS.md works with ANY AI tool (ChatGPT, Gemini, etc.)';
|
|
18
|
+
this.description = 'Generic adapter - AGENTS.md works with ANY AI tool (Copilot, ChatGPT, Gemini, etc.)';
|
|
19
19
|
this.automationLevel = 'manual';
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
@@ -43,7 +43,7 @@ export class GenericAdapter extends AdapterBase {
|
|
|
43
43
|
async install(options) {
|
|
44
44
|
console.log('\n📦 Configuring for Universal AI Tool Compatibility\n');
|
|
45
45
|
// No files to install - any AI can read AGENTS.md
|
|
46
|
-
console.log('✅ AGENTS.md works with any AI tool (ChatGPT, Gemini, Claude web, etc.)');
|
|
46
|
+
console.log('✅ AGENTS.md works with any AI tool (Copilot, ChatGPT, Gemini, Claude web, etc.)');
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
49
|
* Post-installation instructions
|
|
@@ -64,19 +64,38 @@ Your project is now configured for ANY AI tool!
|
|
|
64
64
|
|
|
65
65
|
WHAT THIS PROVIDES:
|
|
66
66
|
|
|
67
|
-
- AGENTS.
|
|
68
|
-
-
|
|
67
|
+
- AGENTS.MD (Universal Standard)
|
|
68
|
+
- GitHub Copilot automatically reads this file
|
|
69
|
+
- ChatGPT, Gemini, Claude web can also use it
|
|
69
70
|
- Contains all workflow instructions
|
|
70
71
|
- Project structure and templates
|
|
71
72
|
- Following agents.md standard (https://agents.md/)
|
|
72
73
|
|
|
73
74
|
- 100% Compatibility
|
|
75
|
+
- GitHub Copilot (best experience with AGENTS.md)
|
|
74
76
|
- ChatGPT (web), Claude (web), Gemini
|
|
75
77
|
- Any AI that can read markdown
|
|
76
78
|
|
|
77
79
|
HOW TO USE AGENTS.MD WITH ANY AI:
|
|
78
80
|
|
|
79
|
-
Method 1:
|
|
81
|
+
Method 1: Command Discovery (GitHub Copilot - Recommended!)
|
|
82
|
+
1. AI reads AGENTS.md automatically (Copilot scans project files)
|
|
83
|
+
2. AGENTS.md contains "SpecWeave Commands" section with all 17 commands
|
|
84
|
+
3. Ask: "create increment for payments" or "run /inc payments"
|
|
85
|
+
4. AI reads plugins/specweave/commands/inc.md
|
|
86
|
+
5. AI executes PM-led workflow (market research, spec.md, plan.md, tasks.md)
|
|
87
|
+
6. Increment created - same result as Claude Code!
|
|
88
|
+
|
|
89
|
+
Available commands AI can execute:
|
|
90
|
+
- /inc "feature" - Plan new increment
|
|
91
|
+
- /do - Execute implementation tasks
|
|
92
|
+
- /done 0001 - Close increment
|
|
93
|
+
- /validate 0001 - Quality validation
|
|
94
|
+
- /progress - Check status
|
|
95
|
+
- /sync-docs - Sync living documentation
|
|
96
|
+
... and 11 more commands!
|
|
97
|
+
|
|
98
|
+
Method 2: Copy-Paste Workflow (ChatGPT web, Claude web, etc.)
|
|
80
99
|
1. Open AGENTS.md in your browser/editor
|
|
81
100
|
2. Copy relevant section (e.g., "Creating a Feature Increment")
|
|
82
101
|
3. Paste into AI chat (ChatGPT, Claude web, Gemini, etc.)
|
|
@@ -84,10 +103,10 @@ Method 1: Copy-Paste Workflow (ChatGPT web, Claude web, etc.)
|
|
|
84
103
|
5. AI generates content (spec.md, plan.md, etc.)
|
|
85
104
|
6. Copy AI's response, save to files
|
|
86
105
|
|
|
87
|
-
Method
|
|
106
|
+
Method 3: File System Access (AI with file access)
|
|
88
107
|
1. AI automatically reads AGENTS.md
|
|
89
108
|
2. Ask: "Create increment for user authentication"
|
|
90
|
-
3. AI follows AGENTS.md workflow
|
|
109
|
+
3. AI follows AGENTS.md workflow and command execution instructions
|
|
91
110
|
4. AI creates files directly
|
|
92
111
|
|
|
93
112
|
UNDERSTANDING "MANUAL":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/generic/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,OAAO,EAAmB,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAGlG,MAAM,OAAO,cAAe,SAAQ,WAAW;IAA/C;;QACE,SAAI,GAAG,SAAS,CAAC;QACjB,gBAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/generic/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface AbandonCommandOptions {
|
|
2
|
+
reason?: string;
|
|
3
|
+
force?: boolean;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* CLI command to abandon an increment
|
|
7
|
+
*
|
|
8
|
+
* @param incrementId - The increment ID to abandon (e.g., "0007")
|
|
9
|
+
* @param options - Command options (reason, force)
|
|
10
|
+
*/
|
|
11
|
+
export declare function abandonCommand(incrementId: string, options?: AbandonCommandOptions): Promise<void>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=abandon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abandon.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/abandon.ts"],"names":[],"mappings":"AAEA,UAAU,qBAAqB;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAM5G"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { abandonIncrement } from '../../core/increment/status-commands.js';
|
|
2
|
+
/**
|
|
3
|
+
* CLI command to abandon an increment
|
|
4
|
+
*
|
|
5
|
+
* @param incrementId - The increment ID to abandon (e.g., "0007")
|
|
6
|
+
* @param options - Command options (reason, force)
|
|
7
|
+
*/
|
|
8
|
+
export async function abandonCommand(incrementId, options = {}) {
|
|
9
|
+
await abandonIncrement({
|
|
10
|
+
incrementId,
|
|
11
|
+
reason: options.reason,
|
|
12
|
+
force: options.force
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=abandon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abandon.js","sourceRoot":"","sources":["../../../src/cli/commands/abandon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAkB,MAAM,yCAAyC,CAAC;AAO3F;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,WAAmB,EAAE,UAAiC,EAAE;IAC3F,MAAM,gBAAgB,CAAC;QACrB,WAAW;QACX,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAmBA,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":"AAmBA,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,CA2pBf"}
|
|
@@ -173,18 +173,31 @@ export async function initCommand(projectName, options = {}) {
|
|
|
173
173
|
console.log(chalk.cyan(`🔍 ${locale.t('cli', 'init.toolDetection.header')}`));
|
|
174
174
|
console.log(chalk.gray(` ${locale.t('cli', 'init.toolDetection.detected', { tool: detectedTool })}`));
|
|
175
175
|
console.log('');
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
176
|
+
// Check if running in CI/non-interactive environment
|
|
177
|
+
const isCI = process.env.CI === 'true' ||
|
|
178
|
+
process.env.GITHUB_ACTIONS === 'true' ||
|
|
179
|
+
process.env.GITLAB_CI === 'true' ||
|
|
180
|
+
process.env.CIRCLECI === 'true' ||
|
|
181
|
+
!process.stdin.isTTY;
|
|
182
|
+
let confirmTool = true; // Default to yes
|
|
183
|
+
if (isCI) {
|
|
184
|
+
// In CI, automatically use detected tool without prompting
|
|
185
|
+
console.log(chalk.gray(` ${locale.t('cli', 'init.toolDetection.ciAutoConfirm', { tool: detectedTool })}`));
|
|
185
186
|
toolName = detectedTool;
|
|
186
187
|
}
|
|
187
188
|
else {
|
|
189
|
+
// Interactive mode - ask for confirmation
|
|
190
|
+
const response = await inquirer.prompt([
|
|
191
|
+
{
|
|
192
|
+
type: 'confirm',
|
|
193
|
+
name: 'confirmTool',
|
|
194
|
+
message: locale.t('cli', 'init.toolDetection.confirmPrompt', { tool: detectedTool }),
|
|
195
|
+
default: true
|
|
196
|
+
}
|
|
197
|
+
]);
|
|
198
|
+
confirmTool = response.confirmTool;
|
|
199
|
+
}
|
|
200
|
+
if (!confirmTool) {
|
|
188
201
|
// Let user choose from available tools
|
|
189
202
|
const { selectedTool } = await inquirer.prompt([
|
|
190
203
|
{
|
|
@@ -192,10 +205,9 @@ export async function initCommand(projectName, options = {}) {
|
|
|
192
205
|
name: 'selectedTool',
|
|
193
206
|
message: locale.t('cli', 'init.toolDetection.selectPrompt'),
|
|
194
207
|
choices: [
|
|
195
|
-
{ name:
|
|
196
|
-
{ name:
|
|
197
|
-
{ name:
|
|
198
|
-
{ name: locale.t('cli', 'init.toolDetection.tools.generic'), value: 'generic' }
|
|
208
|
+
{ name: `Claude Code (Recommended - Full automation)`, value: 'claude' },
|
|
209
|
+
{ name: 'Cursor (Partial - AGENTS.md compilation, team commands, less reliable)', value: 'cursor' },
|
|
210
|
+
{ name: 'Other (Copilot, ChatGPT, Gemini - Limited: no hooks, manual workflow, high context usage)', value: 'generic' }
|
|
199
211
|
]
|
|
200
212
|
}
|
|
201
213
|
]);
|
|
@@ -256,6 +268,46 @@ export async function initCommand(projectName, options = {}) {
|
|
|
256
268
|
techStack: options.techStack ? { language: options.techStack } : undefined,
|
|
257
269
|
docsApproach: 'incremental'
|
|
258
270
|
});
|
|
271
|
+
// 6. Copy plugins/ folder for non-Claude adapters
|
|
272
|
+
// CRITICAL: Copilot/Cursor/Generic need local plugins/ folder!
|
|
273
|
+
// AGENTS.md instructs AI to read plugins/specweave/commands/*.md
|
|
274
|
+
// Without this folder, those commands don't exist in the project!
|
|
275
|
+
if (toolName !== 'claude') {
|
|
276
|
+
spinner.start('Copying plugins folder for command execution...');
|
|
277
|
+
try {
|
|
278
|
+
const specweavePackageRoot = findPackageRoot(__dirname);
|
|
279
|
+
if (specweavePackageRoot) {
|
|
280
|
+
const sourcePluginsDir = path.join(specweavePackageRoot, 'plugins');
|
|
281
|
+
const targetPluginsDir = path.join(targetDir, 'plugins');
|
|
282
|
+
if (fs.existsSync(sourcePluginsDir)) {
|
|
283
|
+
// Copy entire plugins/ folder from SpecWeave package to user project
|
|
284
|
+
fs.copySync(sourcePluginsDir, targetPluginsDir, {
|
|
285
|
+
overwrite: true,
|
|
286
|
+
filter: (src) => {
|
|
287
|
+
// Exclude .DS_Store and other hidden files
|
|
288
|
+
const basename = path.basename(src);
|
|
289
|
+
return !basename.startsWith('.');
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
spinner.succeed('Plugins folder copied successfully');
|
|
293
|
+
console.log(chalk.green(' ✔ AI can now execute SpecWeave commands'));
|
|
294
|
+
console.log(chalk.gray(' → Copilot/Cursor will read plugins/specweave/commands/*.md'));
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
spinner.warn('Could not find plugins/ in SpecWeave package');
|
|
298
|
+
console.log(chalk.yellow(' → Command execution may not work without plugins/ folder'));
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
spinner.warn('Could not locate SpecWeave package');
|
|
303
|
+
console.log(chalk.yellow(' → Skipping plugins/ folder copy'));
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
catch (error) {
|
|
307
|
+
spinner.warn('Could not copy plugins folder');
|
|
308
|
+
console.log(chalk.yellow(` ${error instanceof Error ? error.message : error}`));
|
|
309
|
+
}
|
|
310
|
+
}
|
|
259
311
|
// 7. Install core plugin for non-Claude adapters
|
|
260
312
|
// CRITICAL: Cursor/Copilot/Generic need plugin files in project!
|
|
261
313
|
// Claude uses plugin system (global), but others need local files for AGENTS.md/instructions.md
|
|
@@ -315,6 +367,23 @@ export async function initCommand(projectName, options = {}) {
|
|
|
315
367
|
spinner.text = 'Using existing Git repository...';
|
|
316
368
|
}
|
|
317
369
|
spinner.succeed('SpecWeave project created successfully!');
|
|
370
|
+
// 10.5 Issue Tracker Integration (NEW!)
|
|
371
|
+
// Ask user to configure GitHub/Jira/ADO integration
|
|
372
|
+
try {
|
|
373
|
+
const { setupIssueTracker } = await import('../helpers/issue-tracker/index.js');
|
|
374
|
+
await setupIssueTracker({
|
|
375
|
+
projectPath: targetDir,
|
|
376
|
+
language: language,
|
|
377
|
+
maxRetries: 3
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
catch (error) {
|
|
381
|
+
// Non-critical error - log but continue
|
|
382
|
+
if (process.env.DEBUG) {
|
|
383
|
+
console.error(chalk.red(`\n❌ Issue tracker setup error: ${error.message}`));
|
|
384
|
+
}
|
|
385
|
+
console.log(chalk.yellow('\n⚠️ Issue tracker setup skipped (can configure later)'));
|
|
386
|
+
}
|
|
318
387
|
// 11. Auto-detect and suggest plugins (T-018)
|
|
319
388
|
console.log('');
|
|
320
389
|
const pluginSpinner = ora('Detecting plugins...').start();
|
|
@@ -327,17 +396,59 @@ export async function initCommand(projectName, options = {}) {
|
|
|
327
396
|
pluginSpinner.succeed(`Detected ${suggestedPlugins.length} suggested plugins`);
|
|
328
397
|
if (suggestedPlugins.length > 0) {
|
|
329
398
|
console.log(chalk.cyan(`\n${locale.t('cli', 'init.info.suggestedPlugins')}`));
|
|
330
|
-
|
|
331
|
-
|
|
399
|
+
// Group by confidence (high, medium, low)
|
|
400
|
+
const highConfidence = detectionResults.filter(r => r.confidence >= 0.7);
|
|
401
|
+
const mediumConfidence = detectionResults.filter(r => r.confidence >= 0.4 && r.confidence < 0.7);
|
|
402
|
+
const lowConfidence = detectionResults.filter(r => r.confidence < 0.4);
|
|
403
|
+
if (highConfidence.length > 0) {
|
|
404
|
+
console.log(chalk.white.bold('\n Recommended (high confidence):'));
|
|
405
|
+
for (const result of highConfidence) {
|
|
406
|
+
console.log(` ${chalk.green('•')} ${chalk.white(result.pluginName)} ${chalk.gray('- ' + result.reason)}`);
|
|
407
|
+
if (result.trigger && result.trigger.length > 0) {
|
|
408
|
+
console.log(` ${chalk.gray('Signals: ' + result.trigger)}`);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
332
411
|
}
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
412
|
+
if (mediumConfidence.length > 0) {
|
|
413
|
+
console.log(chalk.white.bold('\n Suggested (medium confidence):'));
|
|
414
|
+
for (const result of mediumConfidence) {
|
|
415
|
+
console.log(` ${chalk.yellow('•')} ${chalk.white(result.pluginName)} ${chalk.gray('- ' + result.reason)}`);
|
|
416
|
+
if (result.trigger && result.trigger.length > 0) {
|
|
417
|
+
console.log(` ${chalk.gray('Signals: ' + result.trigger)}`);
|
|
418
|
+
}
|
|
339
419
|
}
|
|
340
|
-
|
|
420
|
+
}
|
|
421
|
+
if (lowConfidence.length > 0) {
|
|
422
|
+
console.log(chalk.white.bold('\n Optional (low confidence):'));
|
|
423
|
+
for (const result of lowConfidence) {
|
|
424
|
+
console.log(` ${chalk.gray('•')} ${chalk.white(result.pluginName)} ${chalk.gray('- ' + result.reason)}`);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
console.log(''); // Blank line before prompt
|
|
428
|
+
// Check if running in CI/non-interactive environment
|
|
429
|
+
const isCI = process.env.CI === 'true' ||
|
|
430
|
+
process.env.GITHUB_ACTIONS === 'true' ||
|
|
431
|
+
process.env.GITLAB_CI === 'true' ||
|
|
432
|
+
process.env.CIRCLECI === 'true' ||
|
|
433
|
+
!process.stdin.isTTY;
|
|
434
|
+
let enablePlugins = false; // Default to no in CI
|
|
435
|
+
if (isCI) {
|
|
436
|
+
// In CI, skip plugin enablement (can be done manually later)
|
|
437
|
+
console.log(chalk.gray(` ${locale.t('cli', 'init.info.ciSkipPlugins')}`));
|
|
438
|
+
enablePlugins = false;
|
|
439
|
+
}
|
|
440
|
+
else {
|
|
441
|
+
// Interactive mode - ask for confirmation
|
|
442
|
+
const response = await inquirer.prompt([
|
|
443
|
+
{
|
|
444
|
+
type: 'confirm',
|
|
445
|
+
name: 'enablePlugins',
|
|
446
|
+
message: 'Enable suggested plugins now?',
|
|
447
|
+
default: true
|
|
448
|
+
}
|
|
449
|
+
]);
|
|
450
|
+
enablePlugins = response.enablePlugins;
|
|
451
|
+
}
|
|
341
452
|
if (enablePlugins) {
|
|
342
453
|
const adapter = adapterLoader.getAdapter(toolName);
|
|
343
454
|
if (!adapter) {
|
|
@@ -521,24 +632,23 @@ function createDirectoryStructure(targetDir, adapterName) {
|
|
|
521
632
|
'.specweave/increments',
|
|
522
633
|
// 5-pillar documentation structure
|
|
523
634
|
'.specweave/docs/internal/strategy', // Business specs (WHAT, WHY)
|
|
524
|
-
'.specweave/docs/internal/
|
|
635
|
+
'.specweave/docs/internal/rfc', // Request for Comments (proposals at all stages)
|
|
636
|
+
'.specweave/docs/internal/architecture', // Technical design (HOW) - accepted designs
|
|
637
|
+
'.specweave/docs/internal/architecture/adr', // Architecture Decision Records
|
|
638
|
+
'.specweave/docs/internal/architecture/diagrams', // Architecture diagrams
|
|
525
639
|
'.specweave/docs/internal/delivery', // Roadmap, CI/CD, guides
|
|
526
640
|
'.specweave/docs/internal/operations', // Runbooks, SLOs
|
|
527
641
|
'.specweave/docs/internal/governance', // Security, compliance
|
|
528
642
|
'.specweave/docs/public', // Published documentation
|
|
529
643
|
];
|
|
530
|
-
// For
|
|
531
|
-
//
|
|
532
|
-
if (adapterName
|
|
533
|
-
directories.push('.claude
|
|
644
|
+
// For Claude Code ONLY: Create .claude/ folder (for settings.json)
|
|
645
|
+
// Non-Claude adapters: NO .claude/ folder (they use plugins/ folder directly)
|
|
646
|
+
if (adapterName === 'claude') {
|
|
647
|
+
directories.push('.claude');
|
|
534
648
|
}
|
|
535
649
|
directories.forEach((dir) => {
|
|
536
650
|
fs.mkdirSync(path.join(targetDir, dir), { recursive: true });
|
|
537
651
|
});
|
|
538
|
-
// For Claude Code: Create .claude/ parent folder (for settings.json)
|
|
539
|
-
if (adapterName === 'claude') {
|
|
540
|
-
fs.mkdirSync(path.join(targetDir, '.claude'), { recursive: true });
|
|
541
|
-
}
|
|
542
652
|
}
|
|
543
653
|
async function copyTemplates(templatesDir, targetDir, projectName, language = 'en') {
|
|
544
654
|
const locale = getLocaleManager(language);
|
|
@@ -1052,15 +1162,6 @@ function showNextSteps(projectName, adapterName, language, usedDotNotation = fal
|
|
|
1052
1162
|
console.log(` ${stepNumber + 2}. ${chalk.white(locale.t('cli', 'init.nextSteps.cursor.step3'))}`);
|
|
1053
1163
|
console.log(` ${locale.t('cli', 'init.nextSteps.cursor.shortcuts')}`);
|
|
1054
1164
|
}
|
|
1055
|
-
else if (adapterName === 'copilot') {
|
|
1056
|
-
console.log(` ${stepNumber}. ${chalk.white(locale.t('cli', 'init.nextSteps.copilot.step1'))}`);
|
|
1057
|
-
console.log('');
|
|
1058
|
-
console.log(` ${stepNumber + 1}. ${chalk.white(locale.t('cli', 'init.nextSteps.copilot.step2'))}`);
|
|
1059
|
-
console.log(` ${locale.t('cli', 'init.nextSteps.copilot.action')}`);
|
|
1060
|
-
console.log('');
|
|
1061
|
-
console.log(` ${stepNumber + 2}. ${chalk.white(locale.t('cli', 'init.nextSteps.copilot.step3'))}`);
|
|
1062
|
-
console.log(` ${locale.t('cli', 'init.nextSteps.copilot.example')}`);
|
|
1063
|
-
}
|
|
1064
1165
|
else if (adapterName === 'generic') {
|
|
1065
1166
|
console.log(` ${stepNumber}. ${chalk.white(locale.t('cli', 'init.nextSteps.generic.step1'))}`);
|
|
1066
1167
|
console.log('');
|