workspace-maxxing 0.1.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/.agents/skills/workspace-maxxing/.workspace-templates/CONTEXT.md +44 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/SYSTEM.md +44 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/references/anti-patterns.md +16 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/references/iron-laws.md +26 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/references/reporting-format.md +52 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/scripts/benchmark.ts +171 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/scripts/dispatch.ts +473 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/scripts/generate-tests.ts +158 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/scripts/install-tool.ts +82 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/scripts/iterate.ts +265 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/scripts/orchestrator.ts +539 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/scripts/scaffold.ts +282 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/scripts/validate.ts +452 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/skills/architecture/SKILL.md +95 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/skills/fixer/SKILL.md +109 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/skills/iteration/SKILL.md +89 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/skills/prompt-engineering/SKILL.md +87 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/skills/research/SKILL.md +94 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/skills/testing/SKILL.md +89 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/skills/tooling/SKILL.md +87 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/skills/validation/SKILL.md +103 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/skills/worker/SKILL.md +79 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/workspace/00-meta/CONTEXT.md +6 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/workspace/00-meta/execution-log.md +27 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/workspace/01-input/CONTEXT.md +29 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/workspace/02-process/CONTEXT.md +29 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/workspace/03-output/CONTEXT.md +29 -0
- package/.agents/skills/workspace-maxxing/.workspace-templates/workspace/README.md +14 -0
- package/.agents/skills/workspace-maxxing/SKILL.md +312 -0
- package/.agents/skills/workspace-maxxing/scripts/benchmark.ts +171 -0
- package/.agents/skills/workspace-maxxing/scripts/dispatch.ts +473 -0
- package/.agents/skills/workspace-maxxing/scripts/generate-tests.ts +158 -0
- package/.agents/skills/workspace-maxxing/scripts/install-tool.ts +82 -0
- package/.agents/skills/workspace-maxxing/scripts/iterate.ts +265 -0
- package/.agents/skills/workspace-maxxing/scripts/orchestrator.ts +539 -0
- package/.agents/skills/workspace-maxxing/scripts/scaffold.ts +282 -0
- package/.agents/skills/workspace-maxxing/scripts/validate.ts +452 -0
- package/README.md +144 -0
- package/dist/agent-creator.d.ts +9 -0
- package/dist/agent-creator.d.ts.map +1 -0
- package/dist/agent-creator.js +199 -0
- package/dist/agent-creator.js.map +1 -0
- package/dist/agent-iterator.d.ts +38 -0
- package/dist/agent-iterator.d.ts.map +1 -0
- package/dist/agent-iterator.js +327 -0
- package/dist/agent-iterator.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +197 -0
- package/dist/index.js.map +1 -0
- package/dist/install.d.ts +18 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +117 -0
- package/dist/install.js.map +1 -0
- package/dist/platforms/claude.d.ts +7 -0
- package/dist/platforms/claude.d.ts.map +1 -0
- package/dist/platforms/claude.js +70 -0
- package/dist/platforms/claude.js.map +1 -0
- package/dist/platforms/copilot.d.ts +7 -0
- package/dist/platforms/copilot.d.ts.map +1 -0
- package/dist/platforms/copilot.js +75 -0
- package/dist/platforms/copilot.js.map +1 -0
- package/dist/platforms/gemini.d.ts +7 -0
- package/dist/platforms/gemini.d.ts.map +1 -0
- package/dist/platforms/gemini.js +81 -0
- package/dist/platforms/gemini.js.map +1 -0
- package/dist/platforms/index.d.ts +8 -0
- package/dist/platforms/index.d.ts.map +1 -0
- package/dist/platforms/index.js +41 -0
- package/dist/platforms/index.js.map +1 -0
- package/dist/platforms/opencode.d.ts +7 -0
- package/dist/platforms/opencode.d.ts.map +1 -0
- package/dist/platforms/opencode.js +70 -0
- package/dist/platforms/opencode.js.map +1 -0
- package/dist/scripts/benchmark.d.ts +20 -0
- package/dist/scripts/benchmark.d.ts.map +1 -0
- package/dist/scripts/benchmark.js +170 -0
- package/dist/scripts/benchmark.js.map +1 -0
- package/dist/scripts/dispatch.d.ts +32 -0
- package/dist/scripts/dispatch.d.ts.map +1 -0
- package/dist/scripts/dispatch.js +386 -0
- package/dist/scripts/dispatch.js.map +1 -0
- package/dist/scripts/generate-tests.d.ts +11 -0
- package/dist/scripts/generate-tests.d.ts.map +1 -0
- package/dist/scripts/generate-tests.js +118 -0
- package/dist/scripts/generate-tests.js.map +1 -0
- package/dist/scripts/install-tool.d.ts +8 -0
- package/dist/scripts/install-tool.d.ts.map +1 -0
- package/dist/scripts/install-tool.js +98 -0
- package/dist/scripts/install-tool.js.map +1 -0
- package/dist/scripts/iterate.d.ts +44 -0
- package/dist/scripts/iterate.d.ts.map +1 -0
- package/dist/scripts/iterate.js +260 -0
- package/dist/scripts/iterate.js.map +1 -0
- package/dist/scripts/orchestrator.d.ts +40 -0
- package/dist/scripts/orchestrator.d.ts.map +1 -0
- package/dist/scripts/orchestrator.js +378 -0
- package/dist/scripts/orchestrator.js.map +1 -0
- package/dist/scripts/scaffold.d.ts +8 -0
- package/dist/scripts/scaffold.d.ts.map +1 -0
- package/dist/scripts/scaffold.js +279 -0
- package/dist/scripts/scaffold.js.map +1 -0
- package/dist/scripts/validate.d.ts +11 -0
- package/dist/scripts/validate.d.ts.map +1 -0
- package/dist/scripts/validate.js +472 -0
- package/dist/scripts/validate.js.map +1 -0
- package/docs/superpowers/plans/2026-04-07-autonomous-iteration-plan.md +1123 -0
- package/docs/superpowers/plans/2026-04-07-autonomous-iteration-sub-agent-batches.md +1923 -0
- package/docs/superpowers/plans/2026-04-07-autonomous-workflow-sub-skill-plan.md +1505 -0
- package/docs/superpowers/plans/2026-04-07-benchmarking-multi-agent-plan.md +854 -0
- package/docs/superpowers/plans/2026-04-07-workspace-builder-logic-plan.md +1426 -0
- package/docs/superpowers/plans/2026-04-07-workspace-maxxing-plan.md +1299 -0
- package/docs/superpowers/plans/2026-04-08-session-294c-subagent-invocation-plan.md +320 -0
- package/docs/superpowers/plans/2026-04-08-workflow-prompt-hardening-plan.md +1025 -0
- package/docs/superpowers/plans/2026-04-12-workspace-agent-creation-plan.md +992 -0
- package/docs/superpowers/specs/2026-04-07-autonomous-iteration-design.md +214 -0
- package/docs/superpowers/specs/2026-04-07-autonomous-iteration-sub-agent-batches-design.md +188 -0
- package/docs/superpowers/specs/2026-04-07-autonomous-workflow-sub-skill-design.md +137 -0
- package/docs/superpowers/specs/2026-04-07-benchmarking-multi-agent-design.md +105 -0
- package/docs/superpowers/specs/2026-04-07-workspace-builder-logic-design.md +179 -0
- package/docs/superpowers/specs/2026-04-07-workspace-maxxing-design.md +227 -0
- package/docs/superpowers/specs/2026-04-08-session-294c-subagent-invocation-design.md +265 -0
- package/docs/superpowers/specs/2026-04-08-workflow-prompt-hardening-design.md +146 -0
- package/docs/superpowers/specs/2026-04-12-workspace-agent-creation-design.md +239 -0
- package/jest.config.js +8 -0
- package/package.json +32 -0
- package/src/agent-creator.ts +180 -0
- package/src/agent-iterator.ts +397 -0
- package/src/index.ts +189 -0
- package/src/install.ts +105 -0
- package/src/platforms/claude.ts +40 -0
- package/src/platforms/copilot.ts +50 -0
- package/src/platforms/gemini.ts +55 -0
- package/src/platforms/index.ts +45 -0
- package/src/platforms/opencode.ts +41 -0
- package/src/scripts/benchmark.ts +171 -0
- package/src/scripts/dispatch.ts +473 -0
- package/src/scripts/generate-tests.ts +112 -0
- package/src/scripts/install-tool.ts +82 -0
- package/src/scripts/iterate.ts +271 -0
- package/src/scripts/orchestrator.ts +539 -0
- package/src/scripts/scaffold.ts +282 -0
- package/src/scripts/validate.ts +516 -0
- package/templates/.workspace-templates/CONTEXT.md +44 -0
- package/templates/.workspace-templates/SYSTEM.md +44 -0
- package/templates/.workspace-templates/references/anti-patterns.md +16 -0
- package/templates/.workspace-templates/references/iron-laws.md +26 -0
- package/templates/.workspace-templates/references/reporting-format.md +52 -0
- package/templates/.workspace-templates/scripts/benchmark.ts +171 -0
- package/templates/.workspace-templates/scripts/dispatch.ts +473 -0
- package/templates/.workspace-templates/scripts/generate-tests.ts +158 -0
- package/templates/.workspace-templates/scripts/install-tool.ts +82 -0
- package/templates/.workspace-templates/scripts/iterate.ts +265 -0
- package/templates/.workspace-templates/scripts/orchestrator.ts +539 -0
- package/templates/.workspace-templates/scripts/scaffold.ts +282 -0
- package/templates/.workspace-templates/scripts/validate.ts +452 -0
- package/templates/.workspace-templates/skills/architecture/SKILL.md +95 -0
- package/templates/.workspace-templates/skills/fixer/SKILL.md +109 -0
- package/templates/.workspace-templates/skills/iteration/SKILL.md +89 -0
- package/templates/.workspace-templates/skills/prompt-engineering/SKILL.md +87 -0
- package/templates/.workspace-templates/skills/research/SKILL.md +94 -0
- package/templates/.workspace-templates/skills/testing/SKILL.md +89 -0
- package/templates/.workspace-templates/skills/tooling/SKILL.md +87 -0
- package/templates/.workspace-templates/skills/validation/SKILL.md +103 -0
- package/templates/.workspace-templates/skills/worker/SKILL.md +79 -0
- package/templates/.workspace-templates/workspace/00-meta/CONTEXT.md +6 -0
- package/templates/.workspace-templates/workspace/00-meta/execution-log.md +27 -0
- package/templates/.workspace-templates/workspace/01-input/CONTEXT.md +29 -0
- package/templates/.workspace-templates/workspace/02-process/CONTEXT.md +29 -0
- package/templates/.workspace-templates/workspace/03-output/CONTEXT.md +29 -0
- package/templates/.workspace-templates/workspace/README.md +14 -0
- package/templates/SKILL.md +347 -0
- package/tests/benchmark.test.ts +158 -0
- package/tests/cli.test.ts +109 -0
- package/tests/dispatch-parallel.test.ts +124 -0
- package/tests/dispatch.test.ts +218 -0
- package/tests/fixer-skill.test.ts +203 -0
- package/tests/generate-tests.test.ts +101 -0
- package/tests/install-tool.test.ts +141 -0
- package/tests/install.test.ts +144 -0
- package/tests/integration.test.ts +324 -0
- package/tests/iterate.test.ts +219 -0
- package/tests/orchestrator.test.ts +710 -0
- package/tests/scaffold.test.ts +238 -0
- package/tests/templates-enhanced.test.ts +208 -0
- package/tests/templates.test.ts +219 -0
- package/tests/validate.test.ts +421 -0
- package/tests/validation-enhanced.test.ts +303 -0
- package/tests/worker-skill.test.ts +88 -0
- package/tsconfig.json +19 -0
- package/workspace/00-meta/CONTEXT.md +3 -0
- package/workspace/00-meta/execution-log.md +17 -0
- package/workspace/00-meta/tools.md +11 -0
- package/workspace/01-input/CONTEXT.md +27 -0
- package/workspace/CONTEXT.md +35 -0
- package/workspace/README.md +14 -0
- package/workspace/SYSTEM.md +36 -0
- package/workspace-maxxing-0.1.0.tgz +0 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const install_1 = require("./install");
|
|
39
|
+
const scaffold_1 = require("./scripts/scaffold");
|
|
40
|
+
const agent_creator_1 = require("./agent-creator");
|
|
41
|
+
const agent_iterator_1 = require("./agent-iterator");
|
|
42
|
+
const platforms_1 = require("./platforms");
|
|
43
|
+
function showHelp() {
|
|
44
|
+
console.log(`
|
|
45
|
+
workspace-maxxing — npx-installable skill for AI agents
|
|
46
|
+
|
|
47
|
+
Usage:
|
|
48
|
+
npx workspace-maxxing [options]
|
|
49
|
+
|
|
50
|
+
Installation Options:
|
|
51
|
+
--opencode Install skill for OpenCode agents (default)
|
|
52
|
+
--claude Install skill for Claude Code agents
|
|
53
|
+
--copilot Install skill for GitHub Copilot agents
|
|
54
|
+
--gemini Install skill for Gemini CLI agents
|
|
55
|
+
|
|
56
|
+
Workspace Creation Options:
|
|
57
|
+
--create-workspace Create a new workspace with agent
|
|
58
|
+
--workspace-name <name> Name of the workspace (default: "My Workspace")
|
|
59
|
+
--stages <stages> Comma-separated stages (default: "01-input,02-process,03-output")
|
|
60
|
+
--output <path> Output directory (default: "./workspace")
|
|
61
|
+
--agent-name <name> Custom agent name (default: auto-generated from workspace name)
|
|
62
|
+
--no-agent Create workspace without the invokable agent
|
|
63
|
+
--threshold <n> Robustness threshold for agent (default: 85)
|
|
64
|
+
--max-iterations <n> Max agent iterations (default: 3)
|
|
65
|
+
|
|
66
|
+
Examples:
|
|
67
|
+
# Install skill for OpenCode
|
|
68
|
+
npx workspace-maxxing --opencode
|
|
69
|
+
|
|
70
|
+
# Create workspace with agent
|
|
71
|
+
npx workspace-maxxing --create-workspace --workspace-name "Daily Digest" --stages "01-input,02-process,03-output"
|
|
72
|
+
|
|
73
|
+
# Create workspace in specific folder
|
|
74
|
+
npx workspace-maxxing --create-workspace --workspace-name "My Workflow" --output "./my-workspace"
|
|
75
|
+
|
|
76
|
+
# Create workspace without agent
|
|
77
|
+
npx workspace-maxxing --create-workspace --workspace-name "My Workflow" --no-agent
|
|
78
|
+
|
|
79
|
+
# Create workspace with custom agent name
|
|
80
|
+
npx workspace-maxxing --create-workspace --workspace-name "AI News" --agent-name "@news-agent"
|
|
81
|
+
`);
|
|
82
|
+
}
|
|
83
|
+
function extractOption(args, option) {
|
|
84
|
+
const idx = args.indexOf(option);
|
|
85
|
+
return idx !== -1 && idx + 1 < args.length ? args[idx + 1] : undefined;
|
|
86
|
+
}
|
|
87
|
+
function hasFlag(args, flag) {
|
|
88
|
+
return args.includes(flag);
|
|
89
|
+
}
|
|
90
|
+
async function createWorkspace(args) {
|
|
91
|
+
const workspaceName = extractOption(args, '--workspace-name') ?? 'My Workspace';
|
|
92
|
+
const stagesStr = extractOption(args, '--stages') ?? '01-input,02-process,03-output';
|
|
93
|
+
const stages = stagesStr.split(',').map(s => s.trim()).filter(Boolean);
|
|
94
|
+
const withAgent = !hasFlag(args, '--no-agent');
|
|
95
|
+
const agentNameOption = extractOption(args, '--agent-name');
|
|
96
|
+
const outputDir = extractOption(args, '--output')
|
|
97
|
+
? path.resolve(process.cwd(), extractOption(args, '--output'))
|
|
98
|
+
: path.resolve(process.cwd(), 'workspace');
|
|
99
|
+
const threshold = extractOption(args, '--threshold') ? parseInt(extractOption(args, '--threshold'), 10) : 85;
|
|
100
|
+
const maxIterations = extractOption(args, '--max-iterations') ? parseInt(extractOption(args, '--max-iterations'), 10) : 3;
|
|
101
|
+
console.log('=== Workspace-Maxxing ===');
|
|
102
|
+
console.log(`Creating workspace: ${workspaceName}`);
|
|
103
|
+
console.log(`Stages: ${stages.join(', ')}`);
|
|
104
|
+
console.log(`Output: ${outputDir}`);
|
|
105
|
+
console.log(`With agent: ${withAgent}`);
|
|
106
|
+
console.log('');
|
|
107
|
+
// Step 1: Create workspace folder structure
|
|
108
|
+
console.log('Step 1: Creating workspace folder structure...');
|
|
109
|
+
(0, scaffold_1.scaffoldWorkspace)({
|
|
110
|
+
name: workspaceName,
|
|
111
|
+
stages,
|
|
112
|
+
output: outputDir,
|
|
113
|
+
force: true,
|
|
114
|
+
});
|
|
115
|
+
// Step 2: Create agent if enabled
|
|
116
|
+
if (withAgent) {
|
|
117
|
+
console.log('\nStep 2: Creating invokable agent...');
|
|
118
|
+
// Generate agent name from workspace name if not provided
|
|
119
|
+
const agentName = agentNameOption ?? (0, agent_creator_1.generateAgentName)(workspaceName);
|
|
120
|
+
const agentOptions = {
|
|
121
|
+
name: agentName,
|
|
122
|
+
purpose: `Execute ${workspaceName} workflow`,
|
|
123
|
+
workspacePath: outputDir,
|
|
124
|
+
};
|
|
125
|
+
(0, agent_creator_1.createAgent)(agentOptions);
|
|
126
|
+
// Step 3: Run agent self-improvement loop
|
|
127
|
+
console.log('\nStep 3: Running agent self-improvement...');
|
|
128
|
+
const agentDirName = agentName.startsWith('@') ? agentName.slice(1) : agentName;
|
|
129
|
+
const agentPath = path.join(outputDir, '.agents', 'skills', agentDirName);
|
|
130
|
+
const iterationResult = await (0, agent_iterator_1.iterateAgent)({
|
|
131
|
+
agentPath,
|
|
132
|
+
workspacePath: outputDir,
|
|
133
|
+
threshold,
|
|
134
|
+
maxIterations,
|
|
135
|
+
});
|
|
136
|
+
// Step 4: Install for detected platform
|
|
137
|
+
console.log('\nStep 4: Installing for platform...');
|
|
138
|
+
const platform = (0, platforms_1.detectPlatform)();
|
|
139
|
+
console.log(`Detected platform: ${platform}`);
|
|
140
|
+
const installer = (0, platforms_1.getPlatformInstaller)(platform);
|
|
141
|
+
installer.install(agentPath, outputDir);
|
|
142
|
+
console.log('\n=== Workspace Creation Complete ===');
|
|
143
|
+
console.log(`Workspace: ${outputDir}`);
|
|
144
|
+
console.log(`Agent: ${agentName}`);
|
|
145
|
+
console.log(`Score: ${iterationResult.score}/${threshold}`);
|
|
146
|
+
console.log(`Iterations: ${iterationResult.iterations}`);
|
|
147
|
+
console.log(`\nTo invoke the agent, use: @${agentName.slice(1)}`);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
console.log('\n=== Workspace Creation Complete ===');
|
|
151
|
+
console.log(`Workspace: ${outputDir}`);
|
|
152
|
+
console.log('(Agent creation disabled with --no-agent)');
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
async function main() {
|
|
156
|
+
const args = process.argv.slice(2);
|
|
157
|
+
if (args.length === 0 || args.includes('--help')) {
|
|
158
|
+
showHelp();
|
|
159
|
+
process.exit(0);
|
|
160
|
+
}
|
|
161
|
+
// Check for workspace creation
|
|
162
|
+
if (args.includes('--create-workspace')) {
|
|
163
|
+
await createWorkspace(args);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
// Check for install targets
|
|
167
|
+
const agentFlags = ['opencode', 'claude', 'copilot', 'gemini'];
|
|
168
|
+
const detectedAgent = agentFlags.find((flag) => args.includes(`--${flag}`));
|
|
169
|
+
if (detectedAgent) {
|
|
170
|
+
const cwd = process.cwd();
|
|
171
|
+
const projectRoot = (0, install_1.detectProjectRoot)(cwd);
|
|
172
|
+
if (projectRoot !== cwd) {
|
|
173
|
+
console.log(`Detected project root: ${projectRoot}`);
|
|
174
|
+
}
|
|
175
|
+
const templatesDir = process.env.WORKSPACE_MAXXING_TEMPLATES ??
|
|
176
|
+
path.join(__dirname, '..', 'templates');
|
|
177
|
+
console.log(`Installing workspace-maxxing skill for ${detectedAgent}...`);
|
|
178
|
+
const result = await (0, install_1.installSkill)(projectRoot, templatesDir, detectedAgent);
|
|
179
|
+
if (result.success) {
|
|
180
|
+
console.log(`Skill installed to: ${result.skillPath}`);
|
|
181
|
+
console.log(`Open a new ${detectedAgent} session and invoke the workspace-maxxing skill to get started.`);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
console.error(`Installation failed: ${result.error}`);
|
|
185
|
+
process.exit(1);
|
|
186
|
+
}
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
console.error(`Unknown flag: ${args.find((a) => a.startsWith('--'))}`);
|
|
190
|
+
console.error('Run "npx workspace-maxxing --help" for usage.');
|
|
191
|
+
process.exit(1);
|
|
192
|
+
}
|
|
193
|
+
main().catch((error) => {
|
|
194
|
+
console.error(error);
|
|
195
|
+
process.exit(1);
|
|
196
|
+
});
|
|
197
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type AgentTarget = 'opencode' | 'claude' | 'copilot' | 'gemini' | undefined;
|
|
2
|
+
export interface InstallResult {
|
|
3
|
+
success: boolean;
|
|
4
|
+
skillPath: string;
|
|
5
|
+
error?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function getAgentTargetPath(projectRoot: string, agent: AgentTarget): string;
|
|
8
|
+
/**
|
|
9
|
+
* Walk up from startDir looking for package.json or .git directory.
|
|
10
|
+
* Returns the first parent containing a marker, or startDir if none found.
|
|
11
|
+
*/
|
|
12
|
+
export declare function detectProjectRoot(startDir: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Install the workspace-maxxing skill into a project.
|
|
15
|
+
* Copies SKILL.md, .workspace-templates/, and scripts/ to the agent-specific skill directory.
|
|
16
|
+
*/
|
|
17
|
+
export declare function installSkill(projectRoot: string, templatesDir: string, agent?: AgentTarget): Promise<InstallResult>;
|
|
18
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AASD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAGlF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgB1D;AA0BD;;;GAGG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,GAAE,WAAuB,GAC7B,OAAO,CAAC,aAAa,CAAC,CA2BxB"}
|
package/dist/install.js
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getAgentTargetPath = getAgentTargetPath;
|
|
37
|
+
exports.detectProjectRoot = detectProjectRoot;
|
|
38
|
+
exports.installSkill = installSkill;
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const AGENT_PATHS = {
|
|
42
|
+
opencode: '.agents/skills/workspace-maxxing',
|
|
43
|
+
claude: '.claude/skills',
|
|
44
|
+
copilot: '.github/copilot-instructions',
|
|
45
|
+
gemini: '.gemini/skills',
|
|
46
|
+
};
|
|
47
|
+
function getAgentTargetPath(projectRoot, agent) {
|
|
48
|
+
const relativePath = AGENT_PATHS[agent ?? 'opencode'];
|
|
49
|
+
return path.join(projectRoot, relativePath);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Walk up from startDir looking for package.json or .git directory.
|
|
53
|
+
* Returns the first parent containing a marker, or startDir if none found.
|
|
54
|
+
*/
|
|
55
|
+
function detectProjectRoot(startDir) {
|
|
56
|
+
let current = path.resolve(startDir);
|
|
57
|
+
const root = path.parse(current).root;
|
|
58
|
+
while (current !== root) {
|
|
59
|
+
const hasPackageJson = fs.existsSync(path.join(current, 'package.json'));
|
|
60
|
+
const hasGit = fs.existsSync(path.join(current, '.git'));
|
|
61
|
+
if (hasPackageJson || hasGit) {
|
|
62
|
+
return current;
|
|
63
|
+
}
|
|
64
|
+
current = path.dirname(current);
|
|
65
|
+
}
|
|
66
|
+
return startDir;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Recursively copy a directory, overwriting existing files.
|
|
70
|
+
*/
|
|
71
|
+
function copyDirSync(src, dest) {
|
|
72
|
+
if (!fs.existsSync(src)) {
|
|
73
|
+
throw new Error(`Source directory not found: ${src}`);
|
|
74
|
+
}
|
|
75
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
76
|
+
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
77
|
+
for (const entry of entries) {
|
|
78
|
+
const srcPath = path.join(src, entry.name);
|
|
79
|
+
const destPath = path.join(dest, entry.name);
|
|
80
|
+
if (entry.isDirectory()) {
|
|
81
|
+
copyDirSync(srcPath, destPath);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
fs.copyFileSync(srcPath, destPath);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Install the workspace-maxxing skill into a project.
|
|
90
|
+
* Copies SKILL.md, .workspace-templates/, and scripts/ to the agent-specific skill directory.
|
|
91
|
+
*/
|
|
92
|
+
async function installSkill(projectRoot, templatesDir, agent = undefined) {
|
|
93
|
+
const skillDir = getAgentTargetPath(projectRoot, agent);
|
|
94
|
+
try {
|
|
95
|
+
// Copy SKILL.md
|
|
96
|
+
const skillMdSrc = path.join(templatesDir, 'SKILL.md');
|
|
97
|
+
const skillMdDest = path.join(skillDir, 'SKILL.md');
|
|
98
|
+
fs.mkdirSync(path.dirname(skillMdDest), { recursive: true });
|
|
99
|
+
fs.copyFileSync(skillMdSrc, skillMdDest);
|
|
100
|
+
// Copy .workspace-templates/
|
|
101
|
+
const workspaceTemplatesSrc = path.join(templatesDir, '.workspace-templates');
|
|
102
|
+
const workspaceTemplatesDest = path.join(skillDir, '.workspace-templates');
|
|
103
|
+
copyDirSync(workspaceTemplatesSrc, workspaceTemplatesDest);
|
|
104
|
+
// Copy scripts to skill root for direct invocation
|
|
105
|
+
const scriptsSrc = path.join(templatesDir, '.workspace-templates', 'scripts');
|
|
106
|
+
if (fs.existsSync(scriptsSrc)) {
|
|
107
|
+
const scriptsDest = path.join(skillDir, 'scripts');
|
|
108
|
+
copyDirSync(scriptsSrc, scriptsDest);
|
|
109
|
+
}
|
|
110
|
+
return { success: true, skillPath: skillDir };
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
114
|
+
return { success: false, skillPath: skillDir, error: message };
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PlatformInstaller } from './index';
|
|
2
|
+
export declare class ClaudeInstaller implements PlatformInstaller {
|
|
3
|
+
install(agentPath: string, targetDir: string): void;
|
|
4
|
+
getAgentDir(workspacePath: string): string;
|
|
5
|
+
private copyDir;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=claude.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/platforms/claude.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,qBAAa,eAAgB,YAAW,iBAAiB;IACvD,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAenD,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAI1C,OAAO,CAAC,OAAO;CAehB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ClaudeInstaller = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
class ClaudeInstaller {
|
|
40
|
+
install(agentPath, targetDir) {
|
|
41
|
+
// Claude Code expects: .claude/skills/<name>/SKILL.md
|
|
42
|
+
// Need to remove @ prefix for directory name
|
|
43
|
+
const agentName = path.basename(agentPath);
|
|
44
|
+
const cleanName = agentName.startsWith('@') ? agentName.slice(1) : agentName;
|
|
45
|
+
const targetPath = path.join(targetDir, '.claude', 'skills', cleanName);
|
|
46
|
+
// Ensure target directory exists
|
|
47
|
+
fs.mkdirSync(path.dirname(targetPath), { recursive: true });
|
|
48
|
+
this.copyDir(agentPath, targetPath);
|
|
49
|
+
console.log(`[Claude] Installed ${cleanName} at: ${targetPath}`);
|
|
50
|
+
}
|
|
51
|
+
getAgentDir(workspacePath) {
|
|
52
|
+
return path.join(workspacePath, '.claude', 'skills');
|
|
53
|
+
}
|
|
54
|
+
copyDir(src, dest) {
|
|
55
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
56
|
+
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
57
|
+
for (const entry of entries) {
|
|
58
|
+
const srcPath = path.join(src, entry.name);
|
|
59
|
+
const destPath = path.join(dest, entry.name);
|
|
60
|
+
if (entry.isDirectory()) {
|
|
61
|
+
this.copyDir(srcPath, destPath);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
fs.copyFileSync(srcPath, destPath);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.ClaudeInstaller = ClaudeInstaller;
|
|
70
|
+
//# sourceMappingURL=claude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/platforms/claude.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAG7B,MAAa,eAAe;IAC1B,OAAO,CAAC,SAAiB,EAAE,SAAiB;QAC1C,sDAAsD;QACtD,6CAA6C;QAE7C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAExE,iCAAiC;QACjC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5D,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,sBAAsB,SAAS,QAAQ,UAAU,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,WAAW,CAAC,aAAqB;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAEO,OAAO,CAAC,GAAW,EAAE,IAAY;QACvC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAE7C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAnCD,0CAmCC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PlatformInstaller } from './index';
|
|
2
|
+
export declare class CopilotInstaller implements PlatformInstaller {
|
|
3
|
+
install(agentPath: string, targetDir: string): void;
|
|
4
|
+
getAgentDir(workspacePath: string): string;
|
|
5
|
+
private convertToCopilotInstructions;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=copilot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../src/platforms/copilot.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAsBnD,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAI1C,OAAO,CAAC,4BAA4B;CAkBrC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.CopilotInstaller = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
class CopilotInstaller {
|
|
40
|
+
install(agentPath, targetDir) {
|
|
41
|
+
// Copilot expects: .github/copilot-instructions/<name>.md
|
|
42
|
+
// Convert SKILL.md content to markdown instructions
|
|
43
|
+
const agentName = path.basename(agentPath);
|
|
44
|
+
const cleanName = agentName.startsWith('@') ? agentName.slice(1) : agentName;
|
|
45
|
+
const targetPath = path.join(targetDir, '.github', 'copilot-instructions', `${cleanName}.md`);
|
|
46
|
+
// Ensure target directory exists
|
|
47
|
+
fs.mkdirSync(path.dirname(targetPath), { recursive: true });
|
|
48
|
+
// Convert skill to copilot instructions format
|
|
49
|
+
const skillMdPath = path.join(agentPath, 'SKILL.md');
|
|
50
|
+
const skillMd = fs.existsSync(skillMdPath)
|
|
51
|
+
? fs.readFileSync(skillMdPath, 'utf-8')
|
|
52
|
+
: '# Agent\n\nWorkflow agent';
|
|
53
|
+
const instructions = this.convertToCopilotInstructions(skillMd, cleanName);
|
|
54
|
+
fs.writeFileSync(targetPath, instructions);
|
|
55
|
+
console.log(`[Copilot] Installed ${cleanName} at: ${targetPath}`);
|
|
56
|
+
}
|
|
57
|
+
getAgentDir(workspacePath) {
|
|
58
|
+
return path.join(workspacePath, '.github', 'copilot-instructions');
|
|
59
|
+
}
|
|
60
|
+
convertToCopilotInstructions(skillMd, agentName) {
|
|
61
|
+
// Extract description from SKILL.md
|
|
62
|
+
const descMatch = skillMd.match(/^description:\s*"(.+)"$/m);
|
|
63
|
+
const triggersMatch = skillMd.match(/^triggers:\s*\[(.+)\]/m);
|
|
64
|
+
const desc = descMatch ? descMatch[1] : 'Workflow agent';
|
|
65
|
+
const triggers = triggersMatch ? triggersMatch[1].replace(/["']/g, '').split(',') : [];
|
|
66
|
+
let output = `# ${agentName}\n\n${desc}\n\n`;
|
|
67
|
+
if (triggers.length > 0) {
|
|
68
|
+
output += `## Trigger Phrases\n\n${triggers.map(t => `- ${t.trim()}`).join('\n')}\n\n`;
|
|
69
|
+
}
|
|
70
|
+
output += `## Usage\n\nUse this agent when working with the workspace workflow. Simply mention @${agentName} or use the trigger phrases above.\n\n## Capabilities\n\n- Execute workflow tasks following ICM stage boundaries\n- Process inputs and generate outputs\n- Produce structured markdown artifacts\n`;
|
|
71
|
+
return output;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.CopilotInstaller = CopilotInstaller;
|
|
75
|
+
//# sourceMappingURL=copilot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../src/platforms/copilot.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAG7B,MAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAiB,EAAE,SAAiB;QAC1C,0DAA0D;QAC1D,oDAAoD;QAEpD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,sBAAsB,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC;QAE9F,iCAAiC;QACjC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5D,+CAA+C;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;YACxC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC;YACvC,CAAC,CAAC,2BAA2B,CAAC;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE3E,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,uBAAuB,SAAS,QAAQ,UAAU,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,WAAW,CAAC,aAAqB;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC;IACrE,CAAC;IAEO,4BAA4B,CAAC,OAAe,EAAE,SAAiB;QACrE,oCAAoC;QACpC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAE9D,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;QACzD,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvF,IAAI,MAAM,GAAG,KAAK,SAAS,OAAO,IAAI,MAAM,CAAC;QAE7C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,yBAAyB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACzF,CAAC;QAED,MAAM,IAAI,wFAAwF,SAAS,oMAAoM,CAAC;QAEhT,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA7CD,4CA6CC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PlatformInstaller } from './index';
|
|
2
|
+
export declare class GeminiInstaller implements PlatformInstaller {
|
|
3
|
+
install(agentPath: string, targetDir: string): void;
|
|
4
|
+
getAgentDir(workspacePath: string): string;
|
|
5
|
+
private convertToGeminiInstructions;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=gemini.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/platforms/gemini.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,qBAAa,eAAgB,YAAW,iBAAiB;IACvD,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAqBnD,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAI1C,OAAO,CAAC,2BAA2B;CAwBpC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.GeminiInstaller = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
class GeminiInstaller {
|
|
40
|
+
install(agentPath, targetDir) {
|
|
41
|
+
// Gemini expects: .gemini/skills/<name>/instructions.md
|
|
42
|
+
const agentName = path.basename(agentPath);
|
|
43
|
+
const cleanName = agentName.startsWith('@') ? agentName.slice(1) : agentName;
|
|
44
|
+
const targetPath = path.join(targetDir, '.gemini', 'skills', cleanName, 'instructions.md');
|
|
45
|
+
// Ensure target directory exists
|
|
46
|
+
fs.mkdirSync(path.dirname(targetPath), { recursive: true });
|
|
47
|
+
// Convert SKILL.md to Gemini instructions format
|
|
48
|
+
const skillMdPath = path.join(agentPath, 'SKILL.md');
|
|
49
|
+
const skillMd = fs.existsSync(skillMdPath)
|
|
50
|
+
? fs.readFileSync(skillMdPath, 'utf-8')
|
|
51
|
+
: '# Agent\n\nWorkflow agent';
|
|
52
|
+
const instructions = this.convertToGeminiInstructions(skillMd);
|
|
53
|
+
fs.writeFileSync(targetPath, instructions);
|
|
54
|
+
console.log(`[Gemini] Installed ${cleanName} at: ${targetPath}`);
|
|
55
|
+
}
|
|
56
|
+
getAgentDir(workspacePath) {
|
|
57
|
+
return path.join(workspacePath, '.gemini', 'skills');
|
|
58
|
+
}
|
|
59
|
+
convertToGeminiInstructions(skillMd) {
|
|
60
|
+
// Extract key sections from SKILL.md
|
|
61
|
+
const nameMatch = skillMd.match(/^name:\s*(.+)$/m);
|
|
62
|
+
const descMatch = skillMd.match(/^description:\s*"(.+)"$/m);
|
|
63
|
+
const triggersMatch = skillMd.match(/^triggers:\s*\[(.+)\]/m);
|
|
64
|
+
const name = nameMatch ? nameMatch[1] : 'Agent';
|
|
65
|
+
const desc = descMatch ? descMatch[1] : 'Workflow agent';
|
|
66
|
+
const triggers = triggersMatch
|
|
67
|
+
? triggersMatch[1].replace(/["']/g, '').split(',').map(t => t.trim())
|
|
68
|
+
: [];
|
|
69
|
+
let output = `# ${name}\n\n${desc}\n\n## How to Invoke\n\n`;
|
|
70
|
+
if (triggers.length > 0) {
|
|
71
|
+
output += `Use one of these phrases:\n${triggers.map(t => `- "${t}"`).join('\n')}\n\n`;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
output += `Invoke the agent by name.\n\n`;
|
|
75
|
+
}
|
|
76
|
+
output += `## Capabilities\n\n- Execute workflow tasks\n- Process inputs and generate outputs\n- Follow ICM stage boundaries\n- Produce markdown artifacts\n\n## Workflow Context\n\nWhen activated, this agent operates within the workspace context:\n- Read SYSTEM.md first\n- Load relevant stage CONTEXT.md\n- Execute the requested task\n- Produce outputs in appropriate folders\n`;
|
|
77
|
+
return output;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.GeminiInstaller = GeminiInstaller;
|
|
81
|
+
//# sourceMappingURL=gemini.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/platforms/gemini.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAG7B,MAAa,eAAe;IAC1B,OAAO,CAAC,SAAiB,EAAE,SAAiB;QAC1C,wDAAwD;QAExD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAE3F,iCAAiC;QACjC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5D,iDAAiD;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;YACxC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC;YACvC,CAAC,CAAC,2BAA2B,CAAC;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;QAE/D,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,sBAAsB,SAAS,QAAQ,UAAU,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,WAAW,CAAC,aAAqB;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAEO,2BAA2B,CAAC,OAAe;QACjD,qCAAqC;QACrC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAE9D,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAChD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;QACzD,MAAM,QAAQ,GAAG,aAAa;YAC5B,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACrE,CAAC,CAAC,EAAE,CAAC;QAEP,IAAI,MAAM,GAAG,KAAK,IAAI,OAAO,IAAI,0BAA0B,CAAC;QAE5D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,8BAA8B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACzF,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,+BAA+B,CAAC;QAC5C,CAAC;QAED,MAAM,IAAI,iXAAiX,CAAC;QAE5X,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAlDD,0CAkDC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type Platform = 'opencode' | 'claude' | 'copilot' | 'gemini';
|
|
2
|
+
export interface PlatformInstaller {
|
|
3
|
+
install(agentPath: string, targetDir: string): void;
|
|
4
|
+
getAgentDir(workspacePath: string): string;
|
|
5
|
+
}
|
|
6
|
+
export declare function detectPlatform(): Platform;
|
|
7
|
+
export declare function getPlatformInstaller(platform: Platform): PlatformInstaller;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|