agentic-swe 1.0.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/agents/developer.md +133 -0
- package/.claude/agents/git-ops.md +94 -0
- package/.claude/agents/panel/adversarial.md +35 -0
- package/.claude/agents/panel/architect.md +36 -0
- package/.claude/agents/panel/security.md +36 -0
- package/.claude/agents/pr-manager.md +76 -0
- package/.claude/agents/subagents/01-core-development/api-designer.md +237 -0
- package/.claude/agents/subagents/01-core-development/backend-developer.md +222 -0
- package/.claude/agents/subagents/01-core-development/electron-pro.md +251 -0
- package/.claude/agents/subagents/01-core-development/frontend-developer.md +159 -0
- package/.claude/agents/subagents/01-core-development/fullstack-developer.md +246 -0
- package/.claude/agents/subagents/01-core-development/graphql-architect.md +238 -0
- package/.claude/agents/subagents/01-core-development/microservices-architect.md +239 -0
- package/.claude/agents/subagents/01-core-development/mobile-developer.md +283 -0
- package/.claude/agents/subagents/01-core-development/ui-designer.md +200 -0
- package/.claude/agents/subagents/01-core-development/websocket-engineer.md +150 -0
- package/.claude/agents/subagents/02-language-specialists/angular-architect.md +287 -0
- package/.claude/agents/subagents/02-language-specialists/cpp-pro.md +277 -0
- package/.claude/agents/subagents/02-language-specialists/csharp-developer.md +287 -0
- package/.claude/agents/subagents/02-language-specialists/django-developer.md +287 -0
- package/.claude/agents/subagents/02-language-specialists/dotnet-core-expert.md +287 -0
- package/.claude/agents/subagents/02-language-specialists/dotnet-framework-4.8-expert.md +306 -0
- package/.claude/agents/subagents/02-language-specialists/elixir-expert.md +311 -0
- package/.claude/agents/subagents/02-language-specialists/expo-react-native-expert.md +268 -0
- package/.claude/agents/subagents/02-language-specialists/fastapi-developer.md +287 -0
- package/.claude/agents/subagents/02-language-specialists/flutter-expert.md +287 -0
- package/.claude/agents/subagents/02-language-specialists/golang-pro.md +277 -0
- package/.claude/agents/subagents/02-language-specialists/java-architect.md +287 -0
- package/.claude/agents/subagents/02-language-specialists/javascript-pro.md +277 -0
- package/.claude/agents/subagents/02-language-specialists/kotlin-specialist.md +287 -0
- package/.claude/agents/subagents/02-language-specialists/laravel-specialist.md +287 -0
- package/.claude/agents/subagents/02-language-specialists/nextjs-developer.md +298 -0
- package/.claude/agents/subagents/02-language-specialists/php-pro.md +287 -0
- package/.claude/agents/subagents/02-language-specialists/powershell-5.1-expert.md +59 -0
- package/.claude/agents/subagents/02-language-specialists/powershell-7-expert.md +57 -0
- package/.claude/agents/subagents/02-language-specialists/python-pro.md +277 -0
- package/.claude/agents/subagents/02-language-specialists/rails-expert.md +358 -0
- package/.claude/agents/subagents/02-language-specialists/react-specialist.md +298 -0
- package/.claude/agents/subagents/02-language-specialists/rust-engineer.md +287 -0
- package/.claude/agents/subagents/02-language-specialists/spring-boot-engineer.md +287 -0
- package/.claude/agents/subagents/02-language-specialists/sql-pro.md +287 -0
- package/.claude/agents/subagents/02-language-specialists/swift-expert.md +287 -0
- package/.claude/agents/subagents/02-language-specialists/symfony-specialist.md +354 -0
- package/.claude/agents/subagents/02-language-specialists/typescript-pro.md +277 -0
- package/.claude/agents/subagents/02-language-specialists/vue-expert.md +298 -0
- package/.claude/agents/subagents/03-infrastructure/azure-infra-engineer.md +53 -0
- package/.claude/agents/subagents/03-infrastructure/cloud-architect.md +277 -0
- package/.claude/agents/subagents/03-infrastructure/database-administrator.md +287 -0
- package/.claude/agents/subagents/03-infrastructure/deployment-engineer.md +287 -0
- package/.claude/agents/subagents/03-infrastructure/devops-engineer.md +287 -0
- package/.claude/agents/subagents/03-infrastructure/devops-incident-responder.md +287 -0
- package/.claude/agents/subagents/03-infrastructure/docker-expert.md +278 -0
- package/.claude/agents/subagents/03-infrastructure/incident-responder.md +287 -0
- package/.claude/agents/subagents/03-infrastructure/kubernetes-specialist.md +287 -0
- package/.claude/agents/subagents/03-infrastructure/network-engineer.md +287 -0
- package/.claude/agents/subagents/03-infrastructure/platform-engineer.md +287 -0
- package/.claude/agents/subagents/03-infrastructure/security-engineer.md +277 -0
- package/.claude/agents/subagents/03-infrastructure/sre-engineer.md +287 -0
- package/.claude/agents/subagents/03-infrastructure/terraform-engineer.md +287 -0
- package/.claude/agents/subagents/03-infrastructure/terragrunt-expert.md +307 -0
- package/.claude/agents/subagents/03-infrastructure/windows-infra-admin.md +52 -0
- package/.claude/agents/subagents/04-quality-security/accessibility-tester.md +277 -0
- package/.claude/agents/subagents/04-quality-security/ad-security-reviewer.md +56 -0
- package/.claude/agents/subagents/04-quality-security/architect-reviewer.md +287 -0
- package/.claude/agents/subagents/04-quality-security/chaos-engineer.md +277 -0
- package/.claude/agents/subagents/04-quality-security/code-reviewer.md +287 -0
- package/.claude/agents/subagents/04-quality-security/compliance-auditor.md +277 -0
- package/.claude/agents/subagents/04-quality-security/debugger.md +287 -0
- package/.claude/agents/subagents/04-quality-security/error-detective.md +287 -0
- package/.claude/agents/subagents/04-quality-security/penetration-tester.md +287 -0
- package/.claude/agents/subagents/04-quality-security/performance-engineer.md +287 -0
- package/.claude/agents/subagents/04-quality-security/powershell-security-hardening.md +54 -0
- package/.claude/agents/subagents/04-quality-security/qa-expert.md +287 -0
- package/.claude/agents/subagents/04-quality-security/security-auditor.md +287 -0
- package/.claude/agents/subagents/04-quality-security/test-automator.md +287 -0
- package/.claude/agents/subagents/05-data-ai/ai-engineer.md +287 -0
- package/.claude/agents/subagents/05-data-ai/data-analyst.md +277 -0
- package/.claude/agents/subagents/05-data-ai/data-engineer.md +287 -0
- package/.claude/agents/subagents/05-data-ai/data-scientist.md +287 -0
- package/.claude/agents/subagents/05-data-ai/database-optimizer.md +287 -0
- package/.claude/agents/subagents/05-data-ai/llm-architect.md +287 -0
- package/.claude/agents/subagents/05-data-ai/machine-learning-engineer.md +277 -0
- package/.claude/agents/subagents/05-data-ai/ml-engineer.md +287 -0
- package/.claude/agents/subagents/05-data-ai/mlops-engineer.md +287 -0
- package/.claude/agents/subagents/05-data-ai/nlp-engineer.md +287 -0
- package/.claude/agents/subagents/05-data-ai/postgres-pro.md +287 -0
- package/.claude/agents/subagents/05-data-ai/prompt-engineer.md +287 -0
- package/.claude/agents/subagents/05-data-ai/reinforcement-learning-engineer.md +277 -0
- package/.claude/agents/subagents/06-developer-experience/build-engineer.md +286 -0
- package/.claude/agents/subagents/06-developer-experience/cli-developer.md +286 -0
- package/.claude/agents/subagents/06-developer-experience/dependency-manager.md +286 -0
- package/.claude/agents/subagents/06-developer-experience/documentation-engineer.md +276 -0
- package/.claude/agents/subagents/06-developer-experience/dx-optimizer.md +286 -0
- package/.claude/agents/subagents/06-developer-experience/git-workflow-manager.md +286 -0
- package/.claude/agents/subagents/06-developer-experience/legacy-modernizer.md +286 -0
- package/.claude/agents/subagents/06-developer-experience/mcp-developer.md +275 -0
- package/.claude/agents/subagents/06-developer-experience/powershell-module-architect.md +58 -0
- package/.claude/agents/subagents/06-developer-experience/powershell-ui-architect.md +135 -0
- package/.claude/agents/subagents/06-developer-experience/refactoring-specialist.md +286 -0
- package/.claude/agents/subagents/06-developer-experience/slack-expert.md +232 -0
- package/.claude/agents/subagents/06-developer-experience/tooling-engineer.md +286 -0
- package/.claude/agents/subagents/07-specialized-domains/api-documenter.md +277 -0
- package/.claude/agents/subagents/07-specialized-domains/blockchain-developer.md +287 -0
- package/.claude/agents/subagents/07-specialized-domains/embedded-systems.md +287 -0
- package/.claude/agents/subagents/07-specialized-domains/fintech-engineer.md +287 -0
- package/.claude/agents/subagents/07-specialized-domains/game-developer.md +287 -0
- package/.claude/agents/subagents/07-specialized-domains/iot-engineer.md +287 -0
- package/.claude/agents/subagents/07-specialized-domains/m365-admin.md +48 -0
- package/.claude/agents/subagents/07-specialized-domains/mobile-app-developer.md +287 -0
- package/.claude/agents/subagents/07-specialized-domains/payment-integration.md +287 -0
- package/.claude/agents/subagents/07-specialized-domains/quant-analyst.md +287 -0
- package/.claude/agents/subagents/07-specialized-domains/risk-manager.md +287 -0
- package/.claude/agents/subagents/07-specialized-domains/seo-specialist.md +184 -0
- package/.claude/agents/subagents/08-business-product/business-analyst.md +287 -0
- package/.claude/agents/subagents/08-business-product/content-marketer.md +287 -0
- package/.claude/agents/subagents/08-business-product/customer-success-manager.md +287 -0
- package/.claude/agents/subagents/08-business-product/legal-advisor.md +287 -0
- package/.claude/agents/subagents/08-business-product/product-manager.md +287 -0
- package/.claude/agents/subagents/08-business-product/project-manager.md +287 -0
- package/.claude/agents/subagents/08-business-product/sales-engineer.md +287 -0
- package/.claude/agents/subagents/08-business-product/scrum-master.md +287 -0
- package/.claude/agents/subagents/08-business-product/technical-writer.md +287 -0
- package/.claude/agents/subagents/08-business-product/ux-researcher.md +287 -0
- package/.claude/agents/subagents/08-business-product/wordpress-master.md +316 -0
- package/.claude/agents/subagents/09-meta-orchestration/agent-installer.md +97 -0
- package/.claude/agents/subagents/09-meta-orchestration/agent-organizer.md +287 -0
- package/.claude/agents/subagents/09-meta-orchestration/context-manager.md +287 -0
- package/.claude/agents/subagents/09-meta-orchestration/error-coordinator.md +287 -0
- package/.claude/agents/subagents/09-meta-orchestration/it-ops-orchestrator.md +60 -0
- package/.claude/agents/subagents/09-meta-orchestration/knowledge-synthesizer.md +287 -0
- package/.claude/agents/subagents/09-meta-orchestration/multi-agent-coordinator.md +287 -0
- package/.claude/agents/subagents/09-meta-orchestration/performance-monitor.md +287 -0
- package/.claude/agents/subagents/09-meta-orchestration/task-distributor.md +287 -0
- package/.claude/agents/subagents/09-meta-orchestration/workflow-orchestrator.md +287 -0
- package/.claude/agents/subagents/10-research-analysis/competitive-analyst.md +287 -0
- package/.claude/agents/subagents/10-research-analysis/data-researcher.md +287 -0
- package/.claude/agents/subagents/10-research-analysis/market-researcher.md +287 -0
- package/.claude/agents/subagents/10-research-analysis/research-analyst.md +287 -0
- package/.claude/agents/subagents/10-research-analysis/scientific-literature-researcher.md +151 -0
- package/.claude/agents/subagents/10-research-analysis/search-specialist.md +287 -0
- package/.claude/agents/subagents/10-research-analysis/trend-analyst.md +287 -0
- package/.claude/commands/check.md +58 -0
- package/.claude/commands/ci-status.md +68 -0
- package/.claude/commands/conflict-resolver.md +76 -0
- package/.claude/commands/diff-review.md +123 -0
- package/.claude/commands/evaluate-work.md +25 -0
- package/.claude/commands/install.md +60 -0
- package/.claude/commands/lint.md +86 -0
- package/.claude/commands/plan-only.md +28 -0
- package/.claude/commands/repo-scan.md +96 -0
- package/.claude/commands/security-scan.md +98 -0
- package/.claude/commands/subagent.md +109 -0
- package/.claude/commands/test-runner.md +85 -0
- package/.claude/commands/work.md +76 -0
- package/.claude/phases/code-review.md +92 -0
- package/.claude/phases/completion.md +57 -0
- package/.claude/phases/design-review.md +66 -0
- package/.claude/phases/design.md +59 -0
- package/.claude/phases/escalate-code.md +34 -0
- package/.claude/phases/escalate-validation.md +33 -0
- package/.claude/phases/failed.md +35 -0
- package/.claude/phases/fast-implementation.md +59 -0
- package/.claude/phases/fast-path-check.md +46 -0
- package/.claude/phases/feasibility.md +80 -0
- package/.claude/phases/implementation.md +43 -0
- package/.claude/phases/permissions.md +42 -0
- package/.claude/phases/pr-created.md +50 -0
- package/.claude/phases/self-review.md +53 -0
- package/.claude/phases/subagent-selection.md +298 -0
- package/.claude/phases/test.md +68 -0
- package/.claude/phases/validation.md +58 -0
- package/.claude/phases/verification.md +45 -0
- package/.claude/references/frontend-aesthetics.md +91 -0
- package/.claude/references/github.md +73 -0
- package/.claude/templates/artifact-format.md +33 -0
- package/.claude/templates/audit.log +30 -0
- package/.claude/templates/evidence-standard.md +19 -0
- package/.claude/templates/phase-checklist.md +62 -0
- package/.claude/templates/progress.md +15 -0
- package/.claude/templates/state.json +108 -0
- package/.claude/tools/subagent-catalog/README.md +58 -0
- package/.claude/tools/subagent-catalog/config.sh +88 -0
- package/.claude/tools/subagent-catalog/fetch.md +54 -0
- package/.claude/tools/subagent-catalog/invalidate.md +47 -0
- package/.claude/tools/subagent-catalog/list.md +48 -0
- package/.claude/tools/subagent-catalog/search.md +41 -0
- package/CLAUDE.md +342 -0
- package/LICENSE +21 -0
- package/README.md +204 -0
- package/bin/agentic-swe.js +241 -0
- package/package.json +43 -0
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Installs Agentic SWE into a target project (same behavior as install.sh).
|
|
4
|
+
*/
|
|
5
|
+
'use strict';
|
|
6
|
+
|
|
7
|
+
const fs = require('fs');
|
|
8
|
+
const path = require('path');
|
|
9
|
+
const readline = require('readline');
|
|
10
|
+
const { spawnSync } = require('child_process');
|
|
11
|
+
|
|
12
|
+
const DELIMITER =
|
|
13
|
+
'<!-- BEGIN autonomous-swe-pipeline policy -- do not edit above this line -->';
|
|
14
|
+
const SUBDIRS = ['commands', 'phases', 'agents', 'templates', 'references', 'tools'];
|
|
15
|
+
|
|
16
|
+
function pkgRoot() {
|
|
17
|
+
return path.join(__dirname, '..');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function parseArgs(argv) {
|
|
21
|
+
const args = { help: false, yes: false, target: null };
|
|
22
|
+
const rest = [];
|
|
23
|
+
for (let i = 2; i < argv.length; i++) {
|
|
24
|
+
const a = argv[i];
|
|
25
|
+
if (a === '-h' || a === '--help') args.help = true;
|
|
26
|
+
else if (a === '-y' || a === '--yes') args.yes = true;
|
|
27
|
+
else if (!a.startsWith('-')) rest.push(a);
|
|
28
|
+
}
|
|
29
|
+
if (rest[0] === 'install' && rest[1]) args.target = path.resolve(rest[1]);
|
|
30
|
+
else if (rest[0] === 'install' && !rest[1]) args.target = process.cwd();
|
|
31
|
+
else if (rest[0] && rest[0] !== 'install') args.target = path.resolve(rest[0]);
|
|
32
|
+
else if (!rest.length) args.target = process.cwd();
|
|
33
|
+
return args;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function printHelp() {
|
|
37
|
+
console.log(`Usage:
|
|
38
|
+
agentic-swe [options] [path]
|
|
39
|
+
agentic-swe install [path]
|
|
40
|
+
|
|
41
|
+
Install the Agentic SWE pipeline into a project directory (default: current directory).
|
|
42
|
+
|
|
43
|
+
Options:
|
|
44
|
+
-y, --yes Skip the prompt when the target is not a git repository
|
|
45
|
+
-h, --help Show this help
|
|
46
|
+
`);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function isGitRepo(dir) {
|
|
50
|
+
const r = spawnSync('git', ['-C', dir, 'rev-parse', '--git-dir'], {
|
|
51
|
+
encoding: 'utf8',
|
|
52
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
53
|
+
});
|
|
54
|
+
return r.status === 0;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function stripTrailingBlankAndRule(content) {
|
|
58
|
+
let lines = content.replace(/\r\n/g, '\n').split('\n');
|
|
59
|
+
while (lines.length && lines[lines.length - 1].trim() === '') lines.pop();
|
|
60
|
+
while (lines.length && lines[lines.length - 1].trim() === '---') lines.pop();
|
|
61
|
+
while (lines.length && lines[lines.length - 1].trim() === '') lines.pop();
|
|
62
|
+
return lines.join('\n');
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function countSubagentMd(dir) {
|
|
66
|
+
let n = 0;
|
|
67
|
+
const subagents = path.join(dir, 'agents', 'subagents');
|
|
68
|
+
if (!fs.existsSync(subagents)) return 0;
|
|
69
|
+
function walk(d) {
|
|
70
|
+
for (const name of fs.readdirSync(d, { withFileTypes: true })) {
|
|
71
|
+
const p = path.join(d, name.name);
|
|
72
|
+
if (name.isDirectory()) walk(p);
|
|
73
|
+
else if (name.isFile() && name.name.endsWith('.md')) n++;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
walk(subagents);
|
|
77
|
+
return n;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function countGlob(dir, pattern) {
|
|
81
|
+
if (!fs.existsSync(dir)) return 0;
|
|
82
|
+
return fs.readdirSync(dir).filter((f) => f.endsWith('.md')).length;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
async function confirmNonGit() {
|
|
86
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
87
|
+
return new Promise((resolve) => {
|
|
88
|
+
rl.question('Continue anyway? [y/N] ', (answer) => {
|
|
89
|
+
rl.close();
|
|
90
|
+
resolve(/^y$/i.test(answer.trim()));
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function appendGitignore(targetDir) {
|
|
96
|
+
const gitignorePath = path.join(targetDir, '.gitignore');
|
|
97
|
+
const line = '.claude/.work/';
|
|
98
|
+
if (fs.existsSync(gitignorePath)) {
|
|
99
|
+
const body = fs.readFileSync(gitignorePath, 'utf8');
|
|
100
|
+
if (!body.split(/\r?\n/).includes(line)) {
|
|
101
|
+
fs.appendFileSync(gitignorePath, (body.endsWith('\n') ? '' : '\n') + line + '\n');
|
|
102
|
+
console.log('Added .claude/.work/ to .gitignore');
|
|
103
|
+
}
|
|
104
|
+
} else {
|
|
105
|
+
fs.writeFileSync(gitignorePath, line + '\n');
|
|
106
|
+
console.log('Created .gitignore with .claude/.work/');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function install() {
|
|
111
|
+
const args = parseArgs(process.argv);
|
|
112
|
+
if (args.help) {
|
|
113
|
+
printHelp();
|
|
114
|
+
process.exit(0);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const root = pkgRoot();
|
|
118
|
+
const sourceClaude = path.join(root, '.claude');
|
|
119
|
+
const sourceClaudeMd = path.join(root, 'CLAUDE.md');
|
|
120
|
+
const targetDir = path.resolve(args.target || process.cwd());
|
|
121
|
+
|
|
122
|
+
if (!fs.existsSync(path.join(sourceClaude, 'phases')) || !fs.existsSync(path.join(sourceClaude, 'commands'))) {
|
|
123
|
+
console.error(
|
|
124
|
+
'ERROR: Could not find .claude/phases/ or .claude/commands/ next to this CLI.\n' +
|
|
125
|
+
' Reinstall the agentic-swe package or run from a full clone.'
|
|
126
|
+
);
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
if (!fs.existsSync(sourceClaudeMd)) {
|
|
131
|
+
console.error('ERROR: CLAUDE.md missing from package root.');
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (path.resolve(root) === targetDir) {
|
|
136
|
+
console.error(
|
|
137
|
+
'ERROR: Target is the same as the agentic-swe package root.\n' +
|
|
138
|
+
' Point at your project directory, e.g. agentic-swe /path/to/your/project'
|
|
139
|
+
);
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (!fs.existsSync(targetDir)) {
|
|
144
|
+
console.error(`ERROR: Directory does not exist: ${targetDir}`);
|
|
145
|
+
process.exit(1);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
(async () => {
|
|
149
|
+
if (!isGitRepo(targetDir)) {
|
|
150
|
+
console.warn(`WARNING: ${targetDir} is not a git repository.`);
|
|
151
|
+
if (!args.yes) {
|
|
152
|
+
const ok = await confirmNonGit();
|
|
153
|
+
if (!ok) process.exit(1);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
console.log('=== Agentic SWE Pipeline Installer ===\n');
|
|
158
|
+
console.log(`Source: ${sourceClaude}`);
|
|
159
|
+
console.log(`Target: ${path.join(targetDir, '.claude')}\n`);
|
|
160
|
+
|
|
161
|
+
console.log('Copying pipeline files...');
|
|
162
|
+
const targetClaude = path.join(targetDir, '.claude');
|
|
163
|
+
fs.mkdirSync(targetClaude, { recursive: true });
|
|
164
|
+
|
|
165
|
+
for (const dir of SUBDIRS) {
|
|
166
|
+
const from = path.join(sourceClaude, dir);
|
|
167
|
+
if (fs.existsSync(from)) {
|
|
168
|
+
fs.cpSync(from, path.join(targetClaude, dir), { recursive: true });
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
const workDir = path.join(targetClaude, '.work');
|
|
173
|
+
fs.mkdirSync(workDir, { recursive: true });
|
|
174
|
+
fs.writeFileSync(path.join(workDir, '.gitkeep'), '');
|
|
175
|
+
|
|
176
|
+
if (fs.existsSync(path.join(targetClaude, 'settings.local.json'))) {
|
|
177
|
+
console.log(' Preserving existing settings.local.json');
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
const agentCount = countSubagentMd(targetClaude);
|
|
181
|
+
|
|
182
|
+
const policyBody = fs.readFileSync(sourceClaudeMd, 'utf8');
|
|
183
|
+
const targetClaudeMd = path.join(targetDir, 'CLAUDE.md');
|
|
184
|
+
|
|
185
|
+
console.log('Setting up CLAUDE.md...');
|
|
186
|
+
if (fs.existsSync(targetClaudeMd)) {
|
|
187
|
+
let existing = fs.readFileSync(targetClaudeMd, 'utf8');
|
|
188
|
+
if (existing.includes('BEGIN autonomous-swe-pipeline policy')) {
|
|
189
|
+
console.log(' Updating existing pipeline policy...');
|
|
190
|
+
const idx = existing.indexOf(DELIMITER);
|
|
191
|
+
if (idx === -1) {
|
|
192
|
+
console.log(' (delimiter not found; appending policy block)');
|
|
193
|
+
existing =
|
|
194
|
+
existing.trimEnd() +
|
|
195
|
+
'\n\n---\n\n' +
|
|
196
|
+
DELIMITER +
|
|
197
|
+
'\n\n' +
|
|
198
|
+
policyBody;
|
|
199
|
+
} else {
|
|
200
|
+
const before = stripTrailingBlankAndRule(existing.slice(0, idx));
|
|
201
|
+
existing = before + '\n\n---\n\n' + DELIMITER + '\n\n' + policyBody;
|
|
202
|
+
}
|
|
203
|
+
fs.writeFileSync(targetClaudeMd, existing);
|
|
204
|
+
} else {
|
|
205
|
+
console.log(' Appending pipeline policy to existing CLAUDE.md...');
|
|
206
|
+
fs.appendFileSync(
|
|
207
|
+
targetClaudeMd,
|
|
208
|
+
'\n\n---\n\n' + DELIMITER + '\n\n' + policyBody
|
|
209
|
+
);
|
|
210
|
+
}
|
|
211
|
+
} else {
|
|
212
|
+
console.log(' Creating CLAUDE.md...');
|
|
213
|
+
fs.copyFileSync(sourceClaudeMd, targetClaudeMd);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
appendGitignore(targetDir);
|
|
217
|
+
|
|
218
|
+
const cmdCount = countGlob(path.join(targetClaude, 'commands'));
|
|
219
|
+
const phaseCount = countGlob(path.join(targetClaude, 'phases'));
|
|
220
|
+
const coreAgents = fs.existsSync(path.join(targetClaude, 'agents'))
|
|
221
|
+
? fs.readdirSync(path.join(targetClaude, 'agents')).filter(
|
|
222
|
+
(f) => f.endsWith('.md') && !fs.statSync(path.join(targetClaude, 'agents', f)).isDirectory()
|
|
223
|
+
).length
|
|
224
|
+
: 0;
|
|
225
|
+
const panelCount = countGlob(path.join(targetClaude, 'agents', 'panel'));
|
|
226
|
+
|
|
227
|
+
console.log('\n=== Installation complete ===\n');
|
|
228
|
+
console.log(` Commands: ${cmdCount} slash commands`);
|
|
229
|
+
console.log(` Phases: ${phaseCount} phase prompts`);
|
|
230
|
+
console.log(` Agents: ${coreAgents} core + ${panelCount} panel`);
|
|
231
|
+
console.log(` Subagents: ${agentCount} specialized subagents\n`);
|
|
232
|
+
console.log('Next steps:');
|
|
233
|
+
console.log(` cd ${targetDir} && claude`);
|
|
234
|
+
console.log(' /work <your task description>\n');
|
|
235
|
+
})().catch((e) => {
|
|
236
|
+
console.error(e);
|
|
237
|
+
process.exit(1);
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
install();
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "agentic-swe",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Autonomous SWE pipeline for Claude Code — install markdown policies, phases, and agents into your repo",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Suraj Gupta",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/surajSFDC/agentic-swe.git"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/surajSFDC/agentic-swe#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/surajSFDC/agentic-swe/issues"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"claude",
|
|
17
|
+
"claude-code",
|
|
18
|
+
"agent",
|
|
19
|
+
"swe",
|
|
20
|
+
"pipeline",
|
|
21
|
+
"orchestration"
|
|
22
|
+
],
|
|
23
|
+
"engines": {
|
|
24
|
+
"node": ">=18"
|
|
25
|
+
},
|
|
26
|
+
"bin": {
|
|
27
|
+
"agentic-swe": "bin/agentic-swe.js"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"bin",
|
|
31
|
+
"CLAUDE.md",
|
|
32
|
+
".claude/commands",
|
|
33
|
+
".claude/phases",
|
|
34
|
+
".claude/agents",
|
|
35
|
+
".claude/templates",
|
|
36
|
+
".claude/references",
|
|
37
|
+
".claude/tools"
|
|
38
|
+
],
|
|
39
|
+
"scripts": {
|
|
40
|
+
"prepack": "node -e \"const fs=require('fs');const p=require('path');const r=p.join('.claude','phases');if(!fs.existsSync(r))process.exit(1)\"",
|
|
41
|
+
"test": "node bin/agentic-swe.js --help"
|
|
42
|
+
}
|
|
43
|
+
}
|