specweave 1.0.444 → 1.0.446
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/bin/specweave.js +14 -0
- package/dist/src/cli/commands/get.d.ts +21 -0
- package/dist/src/cli/commands/get.d.ts.map +1 -0
- package/dist/src/cli/commands/get.js +156 -0
- package/dist/src/cli/commands/get.js.map +1 -0
- package/dist/src/cli/commands/plan/agent-invoker.d.ts +4 -4
- package/dist/src/cli/commands/plan/agent-invoker.d.ts.map +1 -1
- package/dist/src/cli/commands/plan/agent-invoker.js +7 -7
- package/dist/src/cli/commands/plan/agent-invoker.js.map +1 -1
- package/dist/src/cli/commands/plan/plan-orchestrator.js +2 -2
- package/dist/src/cli/commands/plan/plan-orchestrator.js.map +1 -1
- package/dist/src/cli/helpers/get/clone-repo.d.ts +23 -0
- package/dist/src/cli/helpers/get/clone-repo.d.ts.map +1 -0
- package/dist/src/cli/helpers/get/clone-repo.js +62 -0
- package/dist/src/cli/helpers/get/clone-repo.js.map +1 -0
- package/dist/src/cli/helpers/get/register-repo.d.ts +21 -0
- package/dist/src/cli/helpers/get/register-repo.d.ts.map +1 -0
- package/dist/src/cli/helpers/get/register-repo.js +61 -0
- package/dist/src/cli/helpers/get/register-repo.js.map +1 -0
- package/dist/src/cli/helpers/get/source-parser.d.ts +28 -0
- package/dist/src/cli/helpers/get/source-parser.d.ts.map +1 -0
- package/dist/src/cli/helpers/get/source-parser.js +108 -0
- package/dist/src/cli/helpers/get/source-parser.js.map +1 -0
- package/dist/src/core/hooks/LifecycleHookDispatcher.js +1 -1
- package/dist/src/core/hooks/LifecycleHookDispatcher.js.map +1 -1
- package/dist/src/core/increment/spec-sync-manager.js +1 -1
- package/dist/src/core/lazy-loading/llm-plugin-detector.d.ts +1 -1
- package/dist/src/core/lazy-loading/llm-plugin-detector.js +1 -1
- package/dist/src/core/workflow/cost-estimator.d.ts +1 -1
- package/dist/src/core/workflow/cost-estimator.js +1 -1
- package/package.json +1 -1
- package/plugins/FINAL-AUDIT-RECOMMENDATIONS.md +1 -1
- package/plugins/SKILLS-VS-AGENTS.md +1 -3
- package/plugins/specweave/PLUGIN.md +0 -3
- package/plugins/specweave/agents/sw-planner.md +40 -4
- package/plugins/specweave/commands/framework.md +2 -2
- package/plugins/specweave/hooks/v2/guards/skill-chain-enforcement-guard.sh +4 -4
- package/plugins/specweave/skills/get/SKILL.md +80 -0
- package/src/templates/AGENTS.md.template +2 -2
- package/src/templates/CLAUDE.md.template +1 -1
- package/plugins/specweave/commands/docs-updater.md +0 -66
package/bin/specweave.js
CHANGED
|
@@ -1439,6 +1439,20 @@ hooksCmd
|
|
|
1439
1439
|
console.log('Hooks settings written to .claude/settings.json');
|
|
1440
1440
|
});
|
|
1441
1441
|
|
|
1442
|
+
// Get command - Clone and register an existing repository into the workspace
|
|
1443
|
+
program
|
|
1444
|
+
.command('get <source>')
|
|
1445
|
+
.description('Clone and register an existing repository into the workspace')
|
|
1446
|
+
.option('--branch <branch>', 'Clone a specific branch')
|
|
1447
|
+
.option('--prefix <prefix>', 'User story prefix (default: first 3 chars uppercase)')
|
|
1448
|
+
.option('--role <role>', 'Repository role (frontend, backend, mobile, infra, shared)')
|
|
1449
|
+
.option('--no-init', 'Skip specweave init on cloned repo')
|
|
1450
|
+
.option('--yes', 'Skip confirmation prompts')
|
|
1451
|
+
.action(async (source, opts) => {
|
|
1452
|
+
const { getCommand } = await import('../dist/src/cli/commands/get.js');
|
|
1453
|
+
await getCommand(source, opts);
|
|
1454
|
+
});
|
|
1455
|
+
|
|
1442
1456
|
// Migrate-to-umbrella command - Convert single-repo to umbrella workspace
|
|
1443
1457
|
program
|
|
1444
1458
|
.command('migrate-to-umbrella')
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `specweave get` Command
|
|
3
|
+
*
|
|
4
|
+
* Clone an existing repository into the workspace and register it.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* specweave get owner/repo
|
|
8
|
+
* specweave get https://github.com/org/repo
|
|
9
|
+
* specweave get git@github.com:org/repo
|
|
10
|
+
* specweave get ./path/to/local-repo
|
|
11
|
+
*/
|
|
12
|
+
export interface GetOptions {
|
|
13
|
+
branch?: string;
|
|
14
|
+
prefix?: string;
|
|
15
|
+
role?: string;
|
|
16
|
+
/** true by default, false when --no-init is passed */
|
|
17
|
+
init?: boolean;
|
|
18
|
+
yes?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare function getCommand(source: string, options?: GetOptions): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=get.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/get.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA2GxF"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `specweave get` Command
|
|
3
|
+
*
|
|
4
|
+
* Clone an existing repository into the workspace and register it.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* specweave get owner/repo
|
|
8
|
+
* specweave get https://github.com/org/repo
|
|
9
|
+
* specweave get git@github.com:org/repo
|
|
10
|
+
* specweave get ./path/to/local-repo
|
|
11
|
+
*/
|
|
12
|
+
import chalk from 'chalk';
|
|
13
|
+
import * as fs from 'fs';
|
|
14
|
+
import * as path from 'path';
|
|
15
|
+
import { parseSource } from '../helpers/get/source-parser.js';
|
|
16
|
+
import { cloneRepo } from '../helpers/get/clone-repo.js';
|
|
17
|
+
import { registerRepo } from '../helpers/get/register-repo.js';
|
|
18
|
+
import { execFileNoThrow } from '../../utils/execFileNoThrow.js';
|
|
19
|
+
import { detectRepository } from '../../utils/git-utils.js';
|
|
20
|
+
export async function getCommand(source, options = {}) {
|
|
21
|
+
const projectRoot = process.cwd();
|
|
22
|
+
const configPath = path.join(projectRoot, '.specweave', 'config.json');
|
|
23
|
+
// Guard: must be a SpecWeave project
|
|
24
|
+
if (!fs.existsSync(configPath)) {
|
|
25
|
+
console.log(chalk.red('\n Not a SpecWeave project. Run `specweave init` first.\n'));
|
|
26
|
+
process.exit(1);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
let config = {};
|
|
30
|
+
try {
|
|
31
|
+
config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
console.log(chalk.red('\n Could not read .specweave/config.json\n'));
|
|
35
|
+
process.exit(1);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const isUmbrella = config.umbrella?.enabled === true;
|
|
39
|
+
// Parse source
|
|
40
|
+
let parsed;
|
|
41
|
+
try {
|
|
42
|
+
parsed = parseSource(source);
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
console.log(chalk.red(`\n ${err instanceof Error ? err.message : String(err)}\n`));
|
|
46
|
+
process.exit(1);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// Resolve owner/repo for local paths
|
|
50
|
+
let owner = parsed.owner;
|
|
51
|
+
let repo = parsed.repo;
|
|
52
|
+
if (parsed.type === 'local') {
|
|
53
|
+
const absolutePath = parsed.absolutePath;
|
|
54
|
+
if (!fs.existsSync(absolutePath)) {
|
|
55
|
+
console.log(chalk.red(`\n Path does not exist: ${absolutePath}\n`));
|
|
56
|
+
process.exit(1);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (!fs.existsSync(path.join(absolutePath, '.git'))) {
|
|
60
|
+
console.log(chalk.red(`\n Not a git repository: ${absolutePath}\n`));
|
|
61
|
+
process.exit(1);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
// Detect owner/repo from git remote
|
|
65
|
+
const detected = await detectRepository('origin', absolutePath);
|
|
66
|
+
if (detected) {
|
|
67
|
+
owner = detected.owner;
|
|
68
|
+
repo = detected.repo;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// Fall back to directory name
|
|
72
|
+
repo = path.basename(absolutePath);
|
|
73
|
+
owner = '';
|
|
74
|
+
}
|
|
75
|
+
console.log(chalk.blue(`\n Registering local repo: ${absolutePath}\n`));
|
|
76
|
+
if (isUmbrella) {
|
|
77
|
+
const relPath = path.relative(projectRoot, absolutePath).replace(/\\/g, '/');
|
|
78
|
+
await _registerAndInit(projectRoot, owner, repo, relPath, absolutePath, options, false);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
console.log(chalk.yellow(' Not an umbrella workspace — skipping registration.\n'));
|
|
82
|
+
}
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
// Remote source: determine target directory
|
|
86
|
+
// Use '_unknown' as owner fallback for generic git URLs with no detected org
|
|
87
|
+
const ownerDir = owner || '_unknown';
|
|
88
|
+
const targetDir = isUmbrella
|
|
89
|
+
? path.join(projectRoot, 'repositories', ownerDir, repo)
|
|
90
|
+
: path.join(projectRoot, repo);
|
|
91
|
+
console.log(chalk.blue(`\n Getting ${owner || repo}...\n`));
|
|
92
|
+
// Clone
|
|
93
|
+
try {
|
|
94
|
+
const cloneResult = await cloneRepo(parsed, targetDir, { branch: options.branch });
|
|
95
|
+
if (cloneResult.cloned) {
|
|
96
|
+
console.log(chalk.green(` Cloned → ${path.relative(projectRoot, cloneResult.repoPath)}`));
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
console.log(chalk.dim(` Already exists at ${path.relative(projectRoot, cloneResult.repoPath)}, skipping clone`));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
console.log(chalk.red(`\n Clone failed: ${err instanceof Error ? err.message : String(err)}\n`));
|
|
104
|
+
process.exit(1);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
// Register + init
|
|
108
|
+
if (isUmbrella) {
|
|
109
|
+
const relPath = path.relative(projectRoot, targetDir).replace(/\\/g, '/');
|
|
110
|
+
const githubUrl = parsed.type === 'github' ? `https://github.com/${owner}/${repo}` : undefined;
|
|
111
|
+
await _registerAndInit(projectRoot, owner, repo, relPath, targetDir, options, true, githubUrl);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
// Non-umbrella: just run init if requested
|
|
115
|
+
if (options.init !== false) {
|
|
116
|
+
await _runInit(targetDir);
|
|
117
|
+
}
|
|
118
|
+
console.log(chalk.green(`\n Done! Repository available at ./${repo}/\n`));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async function _registerAndInit(projectRoot, owner, repo, relPath, absPath, options, showPath, githubUrl) {
|
|
122
|
+
const regResult = await registerRepo(projectRoot, owner, repo, relPath, {
|
|
123
|
+
prefix: options.prefix,
|
|
124
|
+
role: options.role,
|
|
125
|
+
githubUrl,
|
|
126
|
+
});
|
|
127
|
+
if (regResult.alreadyRegistered) {
|
|
128
|
+
console.log(chalk.dim(` Already registered in umbrella config`));
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
console.log(chalk.green(` Registered in umbrella config (prefix: ${options.prefix || repo.substring(0, 3).toUpperCase()})`));
|
|
132
|
+
}
|
|
133
|
+
if (options.init !== false) {
|
|
134
|
+
await _runInit(absPath);
|
|
135
|
+
}
|
|
136
|
+
console.log(chalk.green(`\n Done!`));
|
|
137
|
+
if (showPath) {
|
|
138
|
+
console.log(chalk.dim(` Path: ${relPath}`));
|
|
139
|
+
}
|
|
140
|
+
console.log(chalk.dim(` Next: /sw:increment to plan work in ${repo}\n`));
|
|
141
|
+
}
|
|
142
|
+
async function _runInit(repoDir) {
|
|
143
|
+
if (fs.existsSync(path.join(repoDir, '.specweave'))) {
|
|
144
|
+
console.log(chalk.dim(' Already has .specweave/, skipping init'));
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
console.log(chalk.dim(' Running specweave init...'));
|
|
148
|
+
const result = await execFileNoThrow('specweave', ['init', '.'], { cwd: repoDir });
|
|
149
|
+
if (result.exitCode === 0) {
|
|
150
|
+
console.log(chalk.green(' Initialized with specweave'));
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
console.log(chalk.yellow(' specweave init had warnings (you can run it manually)'));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/cli/commands/get.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Agent Invoker - Orchestrates AI agent invocations for plan generation
|
|
3
3
|
*
|
|
4
|
-
* This module provides utilities to invoke the Architect and
|
|
4
|
+
* This module provides utilities to invoke the Architect and Planner
|
|
5
5
|
* agents within the Claude Code ecosystem.
|
|
6
6
|
*
|
|
7
7
|
* @module cli/commands/plan/agent-invoker
|
|
@@ -30,12 +30,12 @@ export declare class AgentInvoker {
|
|
|
30
30
|
*/
|
|
31
31
|
invokeArchitectAgent(context: PlanPipelineContext): Promise<AgentInvocationResult>;
|
|
32
32
|
/**
|
|
33
|
-
* Invoke
|
|
33
|
+
* Invoke Planner Agent to generate tasks.md
|
|
34
34
|
*
|
|
35
35
|
* @param context - Pipeline context with spec.md and plan.md content
|
|
36
36
|
* @returns Agent invocation result with generated tasks.md content
|
|
37
37
|
*/
|
|
38
|
-
|
|
38
|
+
invokePlannerAgent(context: PlanPipelineContext): Promise<AgentInvocationResult>;
|
|
39
39
|
/**
|
|
40
40
|
* Extract requirements from spec.md
|
|
41
41
|
*/
|
|
@@ -61,7 +61,7 @@ export declare class AgentInvoker {
|
|
|
61
61
|
*/
|
|
62
62
|
private buildArchitectPrompt;
|
|
63
63
|
/**
|
|
64
|
-
* Build prompt for
|
|
64
|
+
* Build prompt for Planner Agent
|
|
65
65
|
*/
|
|
66
66
|
private buildPlannerPrompt;
|
|
67
67
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-invoker.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/plan/agent-invoker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,aAAa,GAAG,aAAa,CAAC;CAC9C;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB;;;;;OAKG;IACG,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA2BxF;;;;;OAKG;IACG,
|
|
1
|
+
{"version":3,"file":"agent-invoker.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/plan/agent-invoker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,aAAa,GAAG,aAAa,CAAC;CAC9C;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB;;;;;OAKG;IACG,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA2BxF;;;;;OAKG;IACG,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA0BtF;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAkBjC;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkE5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgF1B;;;;;OAKG;IACH,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM;IAoE3D;;OAEG;IACH,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM;CA2C7D"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Agent Invoker - Orchestrates AI agent invocations for plan generation
|
|
3
3
|
*
|
|
4
|
-
* This module provides utilities to invoke the Architect and
|
|
4
|
+
* This module provides utilities to invoke the Architect and Planner
|
|
5
5
|
* agents within the Claude Code ecosystem.
|
|
6
6
|
*
|
|
7
7
|
* @module cli/commands/plan/agent-invoker
|
|
@@ -36,12 +36,12 @@ export class AgentInvoker {
|
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
* Invoke
|
|
39
|
+
* Invoke Planner Agent to generate tasks.md
|
|
40
40
|
*
|
|
41
41
|
* @param context - Pipeline context with spec.md and plan.md content
|
|
42
42
|
* @returns Agent invocation result with generated tasks.md content
|
|
43
43
|
*/
|
|
44
|
-
async
|
|
44
|
+
async invokePlannerAgent(context) {
|
|
45
45
|
const specContent = context.specContent;
|
|
46
46
|
const planContent = context.generatedPlanContent;
|
|
47
47
|
const incrementId = context.incrementId;
|
|
@@ -54,7 +54,7 @@ export class AgentInvoker {
|
|
|
54
54
|
return {
|
|
55
55
|
success: true,
|
|
56
56
|
content: plannerPrompt,
|
|
57
|
-
agentName: '
|
|
57
|
+
agentName: 'planner',
|
|
58
58
|
executionMode: 'instruction'
|
|
59
59
|
};
|
|
60
60
|
}
|
|
@@ -187,11 +187,11 @@ Follow the standard SpecWeave plan.md format with:
|
|
|
187
187
|
`;
|
|
188
188
|
}
|
|
189
189
|
/**
|
|
190
|
-
* Build prompt for
|
|
190
|
+
* Build prompt for Planner Agent
|
|
191
191
|
*/
|
|
192
192
|
buildPlannerPrompt(incrementId, acceptanceCriteria, phases, components) {
|
|
193
193
|
const acList = Array.from(acceptanceCriteria.keys());
|
|
194
|
-
return `#
|
|
194
|
+
return `# Planner Agent Invocation for ${incrementId}
|
|
195
195
|
|
|
196
196
|
## Task
|
|
197
197
|
Generate a tasks.md file with embedded test plans for increment ${incrementId}.
|
|
@@ -372,7 +372,7 @@ coverage_target: 95%
|
|
|
372
372
|
|
|
373
373
|
---
|
|
374
374
|
|
|
375
|
-
**Note**: This is a placeholder tasks file. Run the
|
|
375
|
+
**Note**: This is a placeholder tasks file. Run the Planner agent (sw-planner) to generate the complete task breakdown with embedded test plans.
|
|
376
376
|
|
|
377
377
|
**Total Acceptance Criteria**: ${acceptanceCriteria.size}
|
|
378
378
|
**Mapped to Tasks**: 1 (placeholder)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-invoker.js","sourceRoot":"","sources":["../../../../../src/cli/commands/plan/agent-invoker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH;;GAEG;AACH,MAAM,OAAO,YAAY;IACvB;;;;;OAKG;IACH,KAAK,CAAC,oBAAoB,CAAC,OAA4B;QACrD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACxC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAExC,uCAAuC;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,kBAAkB,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;QAEvE,2CAA2C;QAC3C,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAC/C,WAAW,EACX,YAAY,EACZ,WAAW,EACX,kBAAkB,CACnB,CAAC;QAEF,yEAAyE;QACzE,0DAA0D;QAC1D,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,eAAe;YACxB,SAAS,EAAE,WAAW;YACtB,aAAa,EAAE,aAAa;SAC7B,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"agent-invoker.js","sourceRoot":"","sources":["../../../../../src/cli/commands/plan/agent-invoker.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,7 +61,7 @@ export class PlanCommandOrchestrator {
|
|
|
61
61
|
throw new Error(`Architect agent invocation failed: ${architectResult.error}`);
|
|
62
62
|
}
|
|
63
63
|
// Step 5: Invoke Task Generator
|
|
64
|
-
const plannerResult = await this.agentInvoker.
|
|
64
|
+
const plannerResult = await this.agentInvoker.invokePlannerAgent(context);
|
|
65
65
|
if (plannerResult.success) {
|
|
66
66
|
// Use AgentInvoker's temporary task generation
|
|
67
67
|
// In production Claude Code context, this would be replaced by actual agent output
|
|
@@ -218,7 +218,7 @@ TBD - Architect Agent will assess risks.
|
|
|
218
218
|
|
|
219
219
|
## Notes
|
|
220
220
|
|
|
221
|
-
Tasks will be generated by
|
|
221
|
+
Tasks will be generated by the sw-planner agent based on plan.md.
|
|
222
222
|
|
|
223
223
|
---
|
|
224
224
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-orchestrator.js","sourceRoot":"","sources":["../../../../../src/cli/commands/plan/plan-orchestrator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plan-orchestrator.js","sourceRoot":"","sources":["../../../../../src/cli/commands/plan/plan-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clone Helper for `specweave get`
|
|
3
|
+
*
|
|
4
|
+
* Foreground git clone with idempotency and helpful auth error messages.
|
|
5
|
+
*/
|
|
6
|
+
import type { ParsedSource } from './source-parser.js';
|
|
7
|
+
export interface CloneOptions {
|
|
8
|
+
branch?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface CloneResult {
|
|
11
|
+
/** true if clone happened, false if skipped */
|
|
12
|
+
cloned: boolean;
|
|
13
|
+
/** absolute path to the repo directory */
|
|
14
|
+
repoPath: string;
|
|
15
|
+
/** reason clone was skipped, if applicable */
|
|
16
|
+
skippedReason?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Clone a repository to targetDir.
|
|
20
|
+
* Idempotent: if targetDir/.git already exists, skips clone.
|
|
21
|
+
*/
|
|
22
|
+
export declare function cloneRepo(source: ParsedSource, targetDir: string, options?: CloneOptions): Promise<CloneResult>;
|
|
23
|
+
//# sourceMappingURL=clone-repo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clone-repo.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/get/clone-repo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,MAAM,EAAE,OAAO,CAAC;IAChB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAWD;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CAwDtB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clone Helper for `specweave get`
|
|
3
|
+
*
|
|
4
|
+
* Foreground git clone with idempotency and helpful auth error messages.
|
|
5
|
+
*/
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
import * as fs from 'fs';
|
|
8
|
+
import { execFileNoThrow } from '../../../utils/execFileNoThrow.js';
|
|
9
|
+
const AUTH_ERROR_PATTERNS = [
|
|
10
|
+
'Permission denied (publickey)',
|
|
11
|
+
'Authentication failed',
|
|
12
|
+
'Repository not found',
|
|
13
|
+
'could not read Username',
|
|
14
|
+
'Invalid username or password',
|
|
15
|
+
'remote: Repository not found',
|
|
16
|
+
];
|
|
17
|
+
/**
|
|
18
|
+
* Clone a repository to targetDir.
|
|
19
|
+
* Idempotent: if targetDir/.git already exists, skips clone.
|
|
20
|
+
*/
|
|
21
|
+
export async function cloneRepo(source, targetDir, options = {}) {
|
|
22
|
+
// Idempotency check
|
|
23
|
+
if (fs.existsSync(path.join(targetDir, '.git'))) {
|
|
24
|
+
return {
|
|
25
|
+
cloned: false,
|
|
26
|
+
repoPath: targetDir,
|
|
27
|
+
skippedReason: 'already exists',
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
// Early check: targetDir exists but is not a git repo
|
|
31
|
+
if (fs.existsSync(targetDir)) {
|
|
32
|
+
throw new Error(`Directory already exists but is not a git repository: ${targetDir}\n` +
|
|
33
|
+
'Remove or rename the directory, then try again.');
|
|
34
|
+
}
|
|
35
|
+
const parentDir = path.dirname(targetDir);
|
|
36
|
+
const repoName = path.basename(targetDir);
|
|
37
|
+
try {
|
|
38
|
+
await fs.promises.mkdir(parentDir, { recursive: true });
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
throw new Error(`Cannot create directory ${parentDir}: ${err instanceof Error ? err.message : String(err)}`);
|
|
42
|
+
}
|
|
43
|
+
const args = ['clone', source.cloneUrl, repoName];
|
|
44
|
+
if (options.branch) {
|
|
45
|
+
args.push('--branch', options.branch);
|
|
46
|
+
}
|
|
47
|
+
const result = await execFileNoThrow('git', args, { cwd: parentDir });
|
|
48
|
+
if (result.exitCode !== 0) {
|
|
49
|
+
const stderr = result.stderr || '';
|
|
50
|
+
const isAuthError = AUTH_ERROR_PATTERNS.some(p => stderr.includes(p));
|
|
51
|
+
if (isAuthError) {
|
|
52
|
+
throw new Error(`Authentication failed cloning ${source.cloneUrl}\n\n` +
|
|
53
|
+
'To fix:\n' +
|
|
54
|
+
' • HTTPS: run `gh auth login` or set GH_TOKEN env var\n' +
|
|
55
|
+
' • SSH: ensure your SSH key is added to GitHub\n' +
|
|
56
|
+
`\nGit output: ${stderr.trim()}`);
|
|
57
|
+
}
|
|
58
|
+
throw new Error(`Failed to clone ${source.cloneUrl}\n${stderr.trim() || result.stdout.trim()}`);
|
|
59
|
+
}
|
|
60
|
+
return { cloned: true, repoPath: targetDir };
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=clone-repo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clone-repo.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/get/clone-repo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAgBpE,MAAM,mBAAmB,GAAG;IAC1B,+BAA+B;IAC/B,uBAAuB;IACvB,sBAAsB;IACtB,yBAAyB;IACzB,8BAA8B;IAC9B,8BAA8B;CAC/B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAoB,EACpB,SAAiB,EACjB,UAAwB,EAAE;IAE1B,oBAAoB;IACpB,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO;YACL,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,SAAS;YACnB,aAAa,EAAE,gBAAgB;SAChC,CAAC;IACJ,CAAC;IAED,sDAAsD;IACtD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,yDAAyD,SAAS,IAAI;YACtE,iDAAiD,CAClD,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,2BAA2B,SAAS,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC5F,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,QAAS,EAAE,QAAQ,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAEtE,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtE,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,iCAAiC,MAAM,CAAC,QAAQ,MAAM;gBACtD,WAAW;gBACX,0DAA0D;gBAC1D,mDAAmD;gBACnD,iBAAiB,MAAM,CAAC,IAAI,EAAE,EAAE,CACjC,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,KAAK,CACb,mBAAmB,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAC/E,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Register Helper for `specweave get`
|
|
3
|
+
*
|
|
4
|
+
* Registers a repository in the umbrella config.json.
|
|
5
|
+
* Uses persistUmbrellaConfig for dedup-safe merges.
|
|
6
|
+
*/
|
|
7
|
+
export interface RegisterOptions {
|
|
8
|
+
prefix?: string;
|
|
9
|
+
role?: string;
|
|
10
|
+
githubUrl?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface RegisterResult {
|
|
13
|
+
registered: boolean;
|
|
14
|
+
alreadyRegistered: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Register a repository in the umbrella config.
|
|
18
|
+
* Idempotent: if repo is already in childRepos by id, returns alreadyRegistered=true.
|
|
19
|
+
*/
|
|
20
|
+
export declare function registerRepo(projectRoot: string, owner: string, repoName: string, repoPath: string, options?: RegisterOptions): Promise<RegisterResult>;
|
|
21
|
+
//# sourceMappingURL=register-repo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-repo.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/get/register-repo.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CA+CzB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Register Helper for `specweave get`
|
|
3
|
+
*
|
|
4
|
+
* Registers a repository in the umbrella config.json.
|
|
5
|
+
* Uses persistUmbrellaConfig for dedup-safe merges.
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'fs';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import { persistUmbrellaConfig } from '../../../core/living-docs/umbrella-detector.js';
|
|
10
|
+
/**
|
|
11
|
+
* Register a repository in the umbrella config.
|
|
12
|
+
* Idempotent: if repo is already in childRepos by id, returns alreadyRegistered=true.
|
|
13
|
+
*/
|
|
14
|
+
export async function registerRepo(projectRoot, owner, repoName, repoPath, options = {}) {
|
|
15
|
+
const configPath = path.join(projectRoot, '.specweave', 'config.json');
|
|
16
|
+
// Check for existing entry
|
|
17
|
+
if (fs.existsSync(configPath)) {
|
|
18
|
+
try {
|
|
19
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
20
|
+
const existing = config.umbrella?.childRepos?.find((r) => r.id === repoName);
|
|
21
|
+
if (existing) {
|
|
22
|
+
return { registered: false, alreadyRegistered: true };
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// Proceed with registration if config is unreadable
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const prefix = options.prefix || repoName.substring(0, 3).toUpperCase();
|
|
30
|
+
// Normalize path separators to forward slashes for config.json
|
|
31
|
+
const normalizedPath = repoPath.replace(/\\/g, '/');
|
|
32
|
+
// Base registration via persistUmbrellaConfig (handles dedup-safe merge).
|
|
33
|
+
// persistUmbrellaConfig uses a minimal ChildRepoConfig without prefix/role/githubUrl;
|
|
34
|
+
// those are patched via read-modify-write below (same pattern as addRepoToUmbrella).
|
|
35
|
+
await persistUmbrellaConfig(projectRoot, {
|
|
36
|
+
enabled: true,
|
|
37
|
+
childRepos: [{
|
|
38
|
+
id: repoName,
|
|
39
|
+
path: normalizedPath,
|
|
40
|
+
name: repoName,
|
|
41
|
+
}],
|
|
42
|
+
});
|
|
43
|
+
// Post-patch prefix, role, and githubUrl
|
|
44
|
+
try {
|
|
45
|
+
const rawConfig = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
46
|
+
const repo = rawConfig.umbrella?.childRepos?.find((r) => r.id === repoName);
|
|
47
|
+
if (repo) {
|
|
48
|
+
repo.prefix = prefix;
|
|
49
|
+
if (options.role)
|
|
50
|
+
repo.role = options.role;
|
|
51
|
+
if (options.githubUrl)
|
|
52
|
+
repo.githubUrl = options.githubUrl;
|
|
53
|
+
await fs.promises.writeFile(configPath, JSON.stringify(rawConfig, null, 2));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// Non-fatal: base registration succeeded
|
|
58
|
+
}
|
|
59
|
+
return { registered: true, alreadyRegistered: false };
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=register-repo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-repo.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/get/register-repo.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAavF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,WAAmB,EACnB,KAAa,EACb,QAAgB,EAChB,QAAgB,EAChB,UAA2B,EAAE;IAE7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IAEvE,2BAA2B;IAC3B,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;YAClF,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;YACxD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACxE,+DAA+D;IAC/D,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEpD,0EAA0E;IAC1E,sFAAsF;IACtF,qFAAqF;IACrF,MAAM,qBAAqB,CAAC,WAAW,EAAE;QACvC,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,CAAC;gBACX,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;aACf,CAAC;KACH,CAAC,CAAC;IAEH,yCAAyC;IACzC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QACjF,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,OAAO,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAC3C,IAAI,OAAO,CAAC,SAAS;gBAAE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YAC1D,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,yCAAyC;IAC3C,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source Parser for `specweave get`
|
|
3
|
+
*
|
|
4
|
+
* Parses the <source> argument into a structured type:
|
|
5
|
+
* - GitHub shorthand: owner/repo
|
|
6
|
+
* - GitHub HTTPS URL: https://github.com/owner/repo[.git]
|
|
7
|
+
* - GitHub SSH URL: git@github.com:owner/repo[.git]
|
|
8
|
+
* - Generic git URL: https://other-host.com/org/repo
|
|
9
|
+
* - Local path: ./path, /absolute/path, ../relative
|
|
10
|
+
*/
|
|
11
|
+
export type SourceType = 'github' | 'git' | 'local';
|
|
12
|
+
export interface ParsedSource {
|
|
13
|
+
type: SourceType;
|
|
14
|
+
/** GitHub owner or org, extracted from URL or git remote */
|
|
15
|
+
owner: string;
|
|
16
|
+
/** Repository name (no .git suffix) */
|
|
17
|
+
repo: string;
|
|
18
|
+
/** Full clone URL (undefined for local) */
|
|
19
|
+
cloneUrl?: string;
|
|
20
|
+
/** Resolved absolute path (only for local) */
|
|
21
|
+
absolutePath?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Parse <source> argument into a structured ParsedSource.
|
|
25
|
+
* Throws with a descriptive message if the input is unrecognizable.
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseSource(source: string): ParsedSource;
|
|
28
|
+
//# sourceMappingURL=source-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-parser.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/get/source-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAqGxD"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source Parser for `specweave get`
|
|
3
|
+
*
|
|
4
|
+
* Parses the <source> argument into a structured type:
|
|
5
|
+
* - GitHub shorthand: owner/repo
|
|
6
|
+
* - GitHub HTTPS URL: https://github.com/owner/repo[.git]
|
|
7
|
+
* - GitHub SSH URL: git@github.com:owner/repo[.git]
|
|
8
|
+
* - Generic git URL: https://other-host.com/org/repo
|
|
9
|
+
* - Local path: ./path, /absolute/path, ../relative
|
|
10
|
+
*/
|
|
11
|
+
import * as path from 'path';
|
|
12
|
+
import * as fs from 'fs';
|
|
13
|
+
import * as os from 'os';
|
|
14
|
+
/**
|
|
15
|
+
* Parse <source> argument into a structured ParsedSource.
|
|
16
|
+
* Throws with a descriptive message if the input is unrecognizable.
|
|
17
|
+
*/
|
|
18
|
+
export function parseSource(source) {
|
|
19
|
+
const trimmed = source.trim().replace(/\/+$/, ''); // strip trailing slashes
|
|
20
|
+
// 1. Explicit local path indicators: ./ ../ / ~
|
|
21
|
+
if (trimmed.startsWith('./') ||
|
|
22
|
+
trimmed.startsWith('../') ||
|
|
23
|
+
trimmed.startsWith('/') ||
|
|
24
|
+
trimmed.startsWith('~')) {
|
|
25
|
+
const resolved = trimmed.startsWith('~')
|
|
26
|
+
? path.join(os.homedir(), trimmed.slice(1))
|
|
27
|
+
: path.resolve(trimmed);
|
|
28
|
+
return {
|
|
29
|
+
type: 'local',
|
|
30
|
+
owner: '',
|
|
31
|
+
repo: path.basename(resolved),
|
|
32
|
+
absolutePath: resolved,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
// 2. SSH URL: git@github.com:owner/repo[.git]
|
|
36
|
+
const sshGitHub = trimmed.match(/^git@github\.com:([^/]+)\/(.+?)(?:\.git)?$/);
|
|
37
|
+
if (sshGitHub) {
|
|
38
|
+
return {
|
|
39
|
+
type: 'github',
|
|
40
|
+
owner: sshGitHub[1],
|
|
41
|
+
repo: sshGitHub[2],
|
|
42
|
+
cloneUrl: trimmed.endsWith('.git') ? trimmed : `${trimmed}.git`,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// 3. Generic SSH: git@host:org/repo
|
|
46
|
+
const sshGeneric = trimmed.match(/^git@([^:]+):([^/]+)\/(.+?)(?:\.git)?$/);
|
|
47
|
+
if (sshGeneric) {
|
|
48
|
+
return {
|
|
49
|
+
type: 'git',
|
|
50
|
+
owner: sshGeneric[2],
|
|
51
|
+
repo: sshGeneric[3],
|
|
52
|
+
cloneUrl: trimmed,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// 4. HTTPS GitHub URL
|
|
56
|
+
const httpsGitHub = trimmed.match(/^https?:\/\/github\.com\/([^/]+)\/([^/?#]+?)(?:\.git)?$/);
|
|
57
|
+
if (httpsGitHub) {
|
|
58
|
+
const owner = httpsGitHub[1];
|
|
59
|
+
const repo = httpsGitHub[2];
|
|
60
|
+
return {
|
|
61
|
+
type: 'github',
|
|
62
|
+
owner,
|
|
63
|
+
repo,
|
|
64
|
+
cloneUrl: `https://github.com/${owner}/${repo}.git`,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// 5. Generic HTTPS/HTTP git URL — matches exactly host/owner/repo (no nested paths)
|
|
68
|
+
const httpsGeneric = trimmed.match(/^https?:\/\/([^/]+)\/([^/]+)\/([^/?#]+?)(?:\.git)?$/);
|
|
69
|
+
if (httpsGeneric) {
|
|
70
|
+
return {
|
|
71
|
+
type: 'git',
|
|
72
|
+
owner: httpsGeneric[2],
|
|
73
|
+
repo: httpsGeneric[3],
|
|
74
|
+
cloneUrl: trimmed,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
// 6. GitHub shorthand: owner/repo (exactly one slash, no protocol)
|
|
78
|
+
// Checked BEFORE fs.existsSync to avoid ambiguity with local dirs named "owner/repo"
|
|
79
|
+
const shorthand = trimmed.match(/^([a-zA-Z0-9_.-]+)\/([a-zA-Z0-9_.-]+)$/);
|
|
80
|
+
if (shorthand) {
|
|
81
|
+
const owner = shorthand[1];
|
|
82
|
+
const repo = shorthand[2];
|
|
83
|
+
return {
|
|
84
|
+
type: 'github',
|
|
85
|
+
owner,
|
|
86
|
+
repo,
|
|
87
|
+
cloneUrl: `https://github.com/${owner}/${repo}.git`,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
// 7. Bare name fallback: check if it exists as a local path on disk
|
|
91
|
+
if (fs.existsSync(trimmed)) {
|
|
92
|
+
const resolved = path.resolve(trimmed);
|
|
93
|
+
return {
|
|
94
|
+
type: 'local',
|
|
95
|
+
owner: '',
|
|
96
|
+
repo: path.basename(resolved),
|
|
97
|
+
absolutePath: resolved,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
throw new Error(`Cannot parse source: "${source}"\n` +
|
|
101
|
+
'Accepted formats:\n' +
|
|
102
|
+
' owner/repo GitHub shorthand\n' +
|
|
103
|
+
' https://github.com/owner/repo GitHub HTTPS URL\n' +
|
|
104
|
+
' git@github.com:owner/repo GitHub SSH URL\n' +
|
|
105
|
+
' https://other-host.com/org/repo Any git HTTPS URL\n' +
|
|
106
|
+
' ./path/to/local-repo Local path');
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=source-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-parser.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/get/source-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -166,7 +166,7 @@ export class LifecycleHookDispatcher {
|
|
|
166
166
|
// STEP 1b: Update cross-references in existing docs after feature specs are created.
|
|
167
167
|
// This ensures FEATURE-CATALOG, module docs, and specs README contain links
|
|
168
168
|
// to the newly created feature spec files. Without this, the link update is
|
|
169
|
-
// deferred to the
|
|
169
|
+
// deferred to the done step which may not always run.
|
|
170
170
|
if (syncResult.success && syncResult.featureId) {
|
|
171
171
|
try {
|
|
172
172
|
await LifecycleHookDispatcher.updateDocsLinks(projectRoot, syncResult.featureId, sync.getProjectId());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LifecycleHookDispatcher.js","sourceRoot":"","sources":["../../../../src/core/hooks/LifecycleHookDispatcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LifecycleHookDispatcher.js","sourceRoot":"","sources":["../../../../src/core/hooks/LifecycleHookDispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -487,7 +487,7 @@ Increment: ${detection.incrementId}
|
|
|
487
487
|
|
|
488
488
|
🔄 Automatic sync will regenerate:
|
|
489
489
|
1. plan.md (using Architect Agent)
|
|
490
|
-
2. tasks.md (using
|
|
490
|
+
2. tasks.md (using sw-planner agent)
|
|
491
491
|
|
|
492
492
|
⚡ Task completion status will be preserved
|
|
493
493
|
|
|
@@ -63,7 +63,7 @@ export declare function readPluginAutoLoadConfig(): PluginAutoLoadConfig;
|
|
|
63
63
|
* Note: Release, diagrams, and docs are now merged into CORE sw plugin (v1.0.130+)
|
|
64
64
|
* - sw:npm, sw:release skills are built-in
|
|
65
65
|
* - mermaid, c4, architecture diagram skills are built-in
|
|
66
|
-
* - docs-writer, docs
|
|
66
|
+
* - docs-writer, sync-docs skills are built-in
|
|
67
67
|
*
|
|
68
68
|
* v2.1.0: Domain skills live in vskill marketplace as per-category plugins.
|
|
69
69
|
* Only workflow/integration plugins remain here.
|
|
@@ -112,7 +112,7 @@ export function readPluginAutoLoadConfig() {
|
|
|
112
112
|
* Note: Release, diagrams, and docs are now merged into CORE sw plugin (v1.0.130+)
|
|
113
113
|
* - sw:npm, sw:release skills are built-in
|
|
114
114
|
* - mermaid, c4, architecture diagram skills are built-in
|
|
115
|
-
* - docs-writer, docs
|
|
115
|
+
* - docs-writer, sync-docs skills are built-in
|
|
116
116
|
*
|
|
117
117
|
* v2.1.0: Domain skills live in vskill marketplace as per-category plugins.
|
|
118
118
|
* Only workflow/integration plugins remain here.
|
|
@@ -78,7 +78,7 @@ export declare class CostEstimator {
|
|
|
78
78
|
*/
|
|
79
79
|
estimateIncrement(incrementPath: string): Promise<CostEstimate>;
|
|
80
80
|
/**
|
|
81
|
-
* Estimate planning cost (Architect +
|
|
81
|
+
* Estimate planning cost (Architect + Planner = 2 calls)
|
|
82
82
|
*/
|
|
83
83
|
private estimatePlanning;
|
|
84
84
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.446",
|
|
4
4
|
"description": "100+ domain-expert AI skills — PM, Architect, Frontend, QA, Security and more. Skills learn your team's patterns permanently. Spec-first planning, autonomous execution, multi-agent teams, synced to GitHub/JIRA. Claude Code, Cursor, Copilot & more.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -72,7 +72,7 @@ These have **explicit task instructions** (e.g., "create tests", "generate code"
|
|
|
72
72
|
| `docs-writer` | ✅ "Generates docs ONE SECTION AT A TIME" | ✅ Keep |
|
|
73
73
|
| `devops` (infra) | ✅ "Generates IaC ONE LAYER AT A TIME" | ✅ Keep |
|
|
74
74
|
| `increment` | ✅ Creates increment structure | ✅ Keep |
|
|
75
|
-
| `test-aware-planner` |
|
|
75
|
+
| `test-aware-planner` | Merged into sw-planner agent | ❌ Removed |
|
|
76
76
|
| `tdd-cycle` | ✅ Coordinates TDD workflow | ✅ Keep |
|
|
77
77
|
| (etc.) | | |
|
|
78
78
|
|
|
@@ -99,8 +99,6 @@ plugins/specweave/
|
|
|
99
99
|
│ │ └── templates/
|
|
100
100
|
│ ├── architect/
|
|
101
101
|
│ │ └── SKILL.md
|
|
102
|
-
│ └── test-aware-planner/
|
|
103
|
-
│ └── SKILL.md
|
|
104
102
|
```
|
|
105
103
|
|
|
106
104
|
### How It Works
|
|
@@ -204,7 +202,7 @@ Agent({ subagent_type: "general-purpose", prompt: "Research Stripe integration p
|
|
|
204
202
|
|-------|----------|---------------|--------|-------|
|
|
205
203
|
| **PM** | `sw-pm` | `sw:pm` | spec.md | Opus |
|
|
206
204
|
| **Architect** | `sw-architect` | `sw:architect` | plan.md | Opus |
|
|
207
|
-
| **Planner** | `sw-planner` |
|
|
205
|
+
| **Planner** | `sw-planner` | (inline BDD logic) | tasks.md | Sonnet |
|
|
208
206
|
|
|
209
207
|
### Standalone Skills (context: fork)
|
|
210
208
|
|
|
@@ -15,8 +15,6 @@ SpecWeave framework core plugin. Provides increment planning (PM, Architect, Tec
|
|
|
15
15
|
| pm | Product Manager for spec-driven development with user stories, acceptance criteria, and MVP planning |
|
|
16
16
|
| architect | System architect for scalable, maintainable technical designs and ADRs |
|
|
17
17
|
| roadmap-planner | Product roadmap and feature prioritization with RICE, MoSCoW, and Kano frameworks |
|
|
18
|
-
| spec-generator | Generates comprehensive specifications (spec.md, plan.md, tasks.md) for increments |
|
|
19
|
-
| test-aware-planner | Generate tasks.md with embedded BDD test plans |
|
|
20
18
|
| code-simplifier | Code refinement agent that simplifies and improves code clarity |
|
|
21
19
|
| performance | Performance engineering for web apps, databases, and distributed systems |
|
|
22
20
|
| security | Security engineer for vulnerability assessment and secure code review |
|
|
@@ -25,7 +23,6 @@ SpecWeave framework core plugin. Provides increment planning (PM, Architect, Tec
|
|
|
25
23
|
| serverless-recommender | Serverless platform selection expert for AWS Lambda, Azure Functions, etc. |
|
|
26
24
|
| service-connect | Smart external service connection orchestrator (MCP, REST, SDK, CLI) |
|
|
27
25
|
| external-sync-wizard | Guide for bidirectional sync with GitHub, JIRA, Azure DevOps |
|
|
28
|
-
| docs-updater | Living documentation updater that syncs implementation progress |
|
|
29
26
|
| update-instructions | Smart merge for CLAUDE.md and AGENTS.md instruction files |
|
|
30
27
|
| translator | LLM-native translation skill for SpecWeave content |
|
|
31
28
|
| framework | Expert on SpecWeave framework structure, rules, and conventions |
|
|
@@ -3,8 +3,6 @@ name: sw-planner
|
|
|
3
3
|
description: Test-Aware Planner for generating tasks.md with BDD test plans. Reads spec.md and plan.md to produce implementation tasks with Given/When/Then scenarios. Use during /sw:increment orchestration.
|
|
4
4
|
model: sonnet
|
|
5
5
|
memory: project
|
|
6
|
-
skills:
|
|
7
|
-
- sw:test-aware-planner
|
|
8
6
|
---
|
|
9
7
|
|
|
10
8
|
# Test-Aware Planner Subagent
|
|
@@ -13,11 +11,49 @@ You generate `tasks.md` with embedded test plans for each task. No separate test
|
|
|
13
11
|
|
|
14
12
|
Your prompt will contain: increment ID, increment path, spec.md and plan.md locations. Always read both before generating tasks.
|
|
15
13
|
|
|
16
|
-
|
|
14
|
+
## STEP 0: Register Skill Chain Marker (MANDATORY - DO THIS FIRST)
|
|
15
|
+
|
|
16
|
+
**Before any other work**, register your invocation so the skill-chain-enforcement-guard allows tasks.md writes.
|
|
17
|
+
|
|
18
|
+
Extract the increment ID from your args (e.g., "0323-feature-name"), then write the marker file:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
mkdir -p .specweave/state
|
|
22
|
+
STATE_FILE=".specweave/state/skill-chain-XXXX-name.json"
|
|
23
|
+
if [ -f "$STATE_FILE" ]; then
|
|
24
|
+
jq '.planner_invoked=true | .planner_invoked_at="'$(date -Iseconds)'"' "$STATE_FILE" > "${STATE_FILE}.tmp" && mv "${STATE_FILE}.tmp" "$STATE_FILE"
|
|
25
|
+
else
|
|
26
|
+
echo '{"planner_invoked":true,"planner_invoked_at":"'$(date -Iseconds)'"}' > "$STATE_FILE"
|
|
27
|
+
fi
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Replace `XXXX-name` with the actual increment ID. **This unblocks the guard for tasks.md writes.**
|
|
31
|
+
|
|
32
|
+
## Task Format
|
|
33
|
+
|
|
34
|
+
```markdown
|
|
35
|
+
### T-001: [Task Title]
|
|
36
|
+
**User Story**: US-001 | **Satisfies ACs**: AC-US1-01, AC-US1-02
|
|
37
|
+
**Status**: [ ] Not Started
|
|
38
|
+
**Test**: Given [precondition] → When [action] → Then [expected outcome]
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## BDD Patterns
|
|
42
|
+
|
|
43
|
+
- **Given**: System state or preconditions before the action
|
|
44
|
+
- **When**: The specific action or trigger
|
|
45
|
+
- **Then**: Measurable, verifiable outcome
|
|
46
|
+
|
|
47
|
+
Every task MUST have a `**Test**:` block. No exceptions.
|
|
48
|
+
|
|
49
|
+
## Coverage Rules
|
|
50
|
+
|
|
51
|
+
- Every AC-ID from spec.md must be covered by at least one task
|
|
52
|
+
- Group tasks by user story — one section per US
|
|
53
|
+
- Coverage targets: unit 95%, integration 90%, E2E 100% of AC scenarios
|
|
17
54
|
|
|
18
55
|
## Critical Reminders
|
|
19
56
|
|
|
20
|
-
- **Register skill-chain marker** (STEP 0 in preloaded skill) before writing tasks.md
|
|
21
57
|
- **ONE user story per response** — never generate all tasks at once (prevents crashes)
|
|
22
58
|
- **AC coverage** — every AC-ID from spec.md must be covered by at least one task
|
|
23
59
|
- **Chunking discipline** — never exceed 2000 tokens per response
|
|
@@ -347,7 +347,7 @@ Until hooks are fully automated, **YOU MUST**:
|
|
|
347
347
|
### Core vs. Plugin
|
|
348
348
|
|
|
349
349
|
**Core Framework** (always loaded):
|
|
350
|
-
-
|
|
350
|
+
- 7 core skills (increment, plan, context-loader, etc.)
|
|
351
351
|
- 3 core agents (PM, Architect, Tech Lead)
|
|
352
352
|
- 7 core commands (/sw:inc, /sw:do, etc.)
|
|
353
353
|
|
|
@@ -518,7 +518,7 @@ I activate when you ask about:
|
|
|
518
518
|
- **PM agent** - Leading increment creation (auto-invoked by /sw:inc)
|
|
519
519
|
- **Architect agent** - Designing system architecture
|
|
520
520
|
- **Tech Lead agent** - Code review, best practices
|
|
521
|
-
- **
|
|
521
|
+
- **plan** - Regenerating plan.md and tasks.md for existing increments
|
|
522
522
|
- **context-loader** - Explaining context efficiency
|
|
523
523
|
- **diagrams** - Creating C4/Mermaid diagrams
|
|
524
524
|
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
# 1. /sw:increment creates folder + metadata.json (ALLOWED)
|
|
22
22
|
# 2. /sw:increment MUST invoke Skill("sw:pm") for spec.md
|
|
23
23
|
# 3. /sw:increment MUST invoke Skill("sw:architect") for plan.md
|
|
24
|
-
# 4. /sw:increment MUST
|
|
24
|
+
# 4. /sw:increment MUST delegate to sw-planner agent for tasks.md
|
|
25
25
|
# 5. Each sub-skill writes a marker to .specweave/state/skill-chain-{increment-id}.json
|
|
26
26
|
# 6. This guard checks for that marker before allowing the write
|
|
27
27
|
#
|
|
@@ -133,8 +133,8 @@ case "$FILENAME" in
|
|
|
133
133
|
STATE_KEY="architect_invoked"
|
|
134
134
|
;;
|
|
135
135
|
tasks.md)
|
|
136
|
-
REQUIRED_SKILL="sw
|
|
137
|
-
SKILL_LABEL="
|
|
136
|
+
REQUIRED_SKILL="sw-planner"
|
|
137
|
+
SKILL_LABEL="Planner"
|
|
138
138
|
STATE_KEY="planner_invoked"
|
|
139
139
|
;;
|
|
140
140
|
esac
|
|
@@ -205,7 +205,7 @@ The ${SKILL_LABEL} skill will:
|
|
|
205
205
|
SKILL CHAIN (all 3 MUST be invoked):
|
|
206
206
|
spec.md --> Skill({ skill: \"sw:pm\", args: \"...\" })
|
|
207
207
|
plan.md --> Skill({ skill: \"sw:architect\", args: \"...\" })
|
|
208
|
-
tasks.md -->
|
|
208
|
+
tasks.md --> Agent({ subagent_type: \"sw:sw-planner\", ... })
|
|
209
209
|
|
|
210
210
|
Each skill writes its marker to:
|
|
211
211
|
${STATE_DIR}/skill-chain-${INCREMENT_ID}.json
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
description: >
|
|
4
|
+
Clone and register an existing repository into the SpecWeave workspace.
|
|
5
|
+
Activate when the user wants to: add a repo, get a repo, clone a repo,
|
|
6
|
+
register a repo, bring in a repo, pull in a repo, add a github repo to umbrella,
|
|
7
|
+
clone and register, "get owner/repo", "add this github repo", "clone this repo
|
|
8
|
+
into my workspace", "register this local repo". Also activate for "restore repos"
|
|
9
|
+
or "clone all child repos" on a new machine.
|
|
10
|
+
Do NOT activate for: add a feature, add a task, add a story, add an increment,
|
|
11
|
+
add a user story (those route to sw:increment).
|
|
12
|
+
triggers:
|
|
13
|
+
- "get repo"
|
|
14
|
+
- "add repo"
|
|
15
|
+
- "clone repo"
|
|
16
|
+
- "register repo"
|
|
17
|
+
- "add github repo"
|
|
18
|
+
- "clone and register"
|
|
19
|
+
- "bring in repo"
|
|
20
|
+
- "pull in repo"
|
|
21
|
+
- "restore repos"
|
|
22
|
+
- "clone all child repos"
|
|
23
|
+
negative_triggers:
|
|
24
|
+
- "add a feature"
|
|
25
|
+
- "add a task"
|
|
26
|
+
- "add a story"
|
|
27
|
+
- "add an increment"
|
|
28
|
+
- "create increment"
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
# sw:get — Clone & Register Repository
|
|
32
|
+
|
|
33
|
+
Use this skill when the user wants to add an existing repository to their SpecWeave workspace.
|
|
34
|
+
|
|
35
|
+
## What it does
|
|
36
|
+
|
|
37
|
+
Runs `specweave get <source>` which:
|
|
38
|
+
1. Parses the source (GitHub shorthand, full URL, SSH URL, or local path)
|
|
39
|
+
2. Clones the repo into `repositories/{org}/{repo}/` (in umbrella context)
|
|
40
|
+
3. Registers it in `.specweave/config.json` under `umbrella.childRepos`
|
|
41
|
+
4. Runs `specweave init` inside the cloned repo
|
|
42
|
+
|
|
43
|
+
## Instructions
|
|
44
|
+
|
|
45
|
+
1. Extract the repository source from the user's message:
|
|
46
|
+
- GitHub shorthand: `owner/repo`
|
|
47
|
+
- Full URL: `https://github.com/org/repo`
|
|
48
|
+
- SSH: `git@github.com:org/repo`
|
|
49
|
+
- Local path: `./path/to/repo`
|
|
50
|
+
|
|
51
|
+
2. Check if the user mentioned optional flags:
|
|
52
|
+
- `--prefix` — US prefix (e.g., "use prefix FE")
|
|
53
|
+
- `--role` — repo role (e.g., "it's a backend service")
|
|
54
|
+
- `--branch` — specific branch (e.g., "clone the develop branch")
|
|
55
|
+
- `--no-init` — skip specweave init
|
|
56
|
+
|
|
57
|
+
3. Run the command:
|
|
58
|
+
```bash
|
|
59
|
+
specweave get <source> [--prefix X] [--role Y] [--branch Z] [--no-init]
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
4. Report the result to the user.
|
|
63
|
+
|
|
64
|
+
## Examples
|
|
65
|
+
|
|
66
|
+
| User says | Command |
|
|
67
|
+
|-----------|---------|
|
|
68
|
+
| "add anton-abyzov/my-service" | `specweave get anton-abyzov/my-service` |
|
|
69
|
+
| "clone https://github.com/org/repo" | `specweave get https://github.com/org/repo` |
|
|
70
|
+
| "get this repo: git@github.com:org/repo" | `specweave get git@github.com:org/repo` |
|
|
71
|
+
| "add ./my-local-service to the umbrella" | `specweave get ./my-local-service` |
|
|
72
|
+
| "clone my-service with prefix MSV" | `specweave get owner/my-service --prefix MSV` |
|
|
73
|
+
| "restore all repos on this machine" | See note below |
|
|
74
|
+
|
|
75
|
+
## New Machine Restore
|
|
76
|
+
|
|
77
|
+
If the user says "restore repos", "clone all child repos", or "set up on new machine":
|
|
78
|
+
1. Read `.specweave/config.json` → `umbrella.childRepos`
|
|
79
|
+
2. For each child repo that has a `githubUrl` or derivable URL and whose directory is missing, run `specweave get <owner/repo> --no-init`
|
|
80
|
+
3. Report which repos were cloned and which were already present
|
|
@@ -126,7 +126,7 @@ Good: npm run build → node script.js → Success
|
|
|
126
126
|
|
|
127
127
|
### Test Before Ship
|
|
128
128
|
- Tests pass at every step — unit after each task, E2E before close, no exceptions
|
|
129
|
-
- `/sw:
|
|
129
|
+
- `/sw:increment` generates BDD test plans during design via the sw-planner agent — verify they exist before `/sw:do`
|
|
130
130
|
- TDD cycle: `/sw:tdd-red` → `/sw:tdd-green` → `/sw:tdd-refactor`
|
|
131
131
|
- E2E with Playwright CLI (`npx playwright test`) is a blocking closure gate
|
|
132
132
|
<!-- /SECTION -->
|
|
@@ -378,7 +378,7 @@ specweave context projects
|
|
|
378
378
|
5. Create `tasks.md` (task checklist with BDD tests)
|
|
379
379
|
6. Optional: `plan.md` for complex features
|
|
380
380
|
7. **Verify** tasks.md has `**Test Plan**:` for every task with testable ACs
|
|
381
|
-
8. **Verify** E2E scenarios exist for user-facing user stories — re-run `/sw:
|
|
381
|
+
8. **Verify** E2E scenarios exist for user-facing user stories — re-run `/sw:plan --force` if missing
|
|
382
382
|
|
|
383
383
|
### Completing Tasks
|
|
384
384
|
1. Implement the task
|
|
@@ -221,7 +221,7 @@ Primary: `/sw:progress-sync`. Individual: `/sw-github:push`, `/sw-github:close`.
|
|
|
221
221
|
**Testing is a pipeline step, not an afterthought.**
|
|
222
222
|
|
|
223
223
|
### During Design (`/sw:increment`)
|
|
224
|
-
- `/sw:
|
|
224
|
+
- `/sw:increment` generates tasks.md with BDD test plans (Given/When/Then) for every AC via the sw-planner agent
|
|
225
225
|
- Every task MUST have a `**Test Plan**:` block before implementation begins
|
|
226
226
|
- E2E test scenarios MUST be specified for user-facing features
|
|
227
227
|
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "DEPRECATED: Use /sw:docs-updater skill instead. Living documentation updater that syncs implementation progress to product docs."
|
|
3
|
-
user-invocable: false
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Documentation Updater
|
|
7
|
-
|
|
8
|
-
## Project Overrides
|
|
9
|
-
|
|
10
|
-
!`s="docs-updater"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
|
|
11
|
-
|
|
12
|
-
Updates product documentation (.specweave/docs/) based on implementation progress.
|
|
13
|
-
|
|
14
|
-
## When to Use
|
|
15
|
-
|
|
16
|
-
- Task specifies documentation updates in tasks.md
|
|
17
|
-
- Feature implementation is complete
|
|
18
|
-
- User says "update documentation" or "sync docs"
|
|
19
|
-
- After closing increment to ensure docs reflect reality
|
|
20
|
-
|
|
21
|
-
## What It Does
|
|
22
|
-
|
|
23
|
-
1. **Reads task requirements** - Understands what was implemented from tasks.md
|
|
24
|
-
2. **Updates living docs** - Modifies `.specweave/docs/` files with actual implementation
|
|
25
|
-
3. **Status tracking** - Changes `[DRAFT]` → `[COMPLETE]` on doc sections
|
|
26
|
-
4. **Bidirectional links** - Maintains links between docs and increments
|
|
27
|
-
5. **Format adaptation** - Matches existing doc structure (features/ or modules/)
|
|
28
|
-
|
|
29
|
-
## Workflow
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
1. Read tasks.md → Find documentation tasks
|
|
33
|
-
2. Read implementation → Understand what changed
|
|
34
|
-
3. Update docs → Add real code examples, endpoints, configs
|
|
35
|
-
4. Mark complete → Change [DRAFT] to [COMPLETE]
|
|
36
|
-
5. Verify links → Ensure increment → doc references work
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Example
|
|
40
|
-
|
|
41
|
-
**tasks.md says:**
|
|
42
|
-
```markdown
|
|
43
|
-
**Documentation Updates**:
|
|
44
|
-
- [ ] .specweave/docs/features/payment.md [DRAFT]
|
|
45
|
-
- [ ] .specweave/docs/api/payments.md [DRAFT]
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
**docs-updater does:**
|
|
49
|
-
1. Reads payment implementation code
|
|
50
|
-
2. Updates `payment.md` with actual code examples
|
|
51
|
-
3. Updates API docs with real endpoints discovered in code
|
|
52
|
-
4. Changes status to `[COMPLETE]`
|
|
53
|
-
|
|
54
|
-
## Integration Points
|
|
55
|
-
|
|
56
|
-
- **Called by**: spec-generator, task completion hooks
|
|
57
|
-
- **Updates**: `.specweave/docs/**/*.md`
|
|
58
|
-
- **Reads**: `tasks.md`, implementation code
|
|
59
|
-
|
|
60
|
-
## Best Practices
|
|
61
|
-
|
|
62
|
-
- Run after completing feature tasks, not during
|
|
63
|
-
- Verify doc links are valid (use relative paths)
|
|
64
|
-
- Keep examples in sync with actual code
|
|
65
|
-
- Don't over-document - focus on what users need
|
|
66
|
-
|