kyro-ai 3.2.1 → 3.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +4 -2
- package/README.md +8 -11
- package/WORKFLOW.yaml +1 -1
- package/agents/orchestrator.md +3 -3
- package/commands/forge.md +22 -44
- package/commands/status.md +21 -79
- package/commands/wrap-up.md +18 -74
- package/dist/cli/adapters/codex.js +1 -1
- package/dist/cli/adapters/codex.js.map +1 -1
- package/dist/cli/adapters/command-skills.js +1 -1
- package/dist/cli/adapters/command-skills.js.map +1 -1
- package/dist/cli/app.js +1 -1
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +2 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +8 -4
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/token-audit.d.ts +3 -0
- package/dist/cli/commands/token-audit.d.ts.map +1 -0
- package/dist/cli/commands/token-audit.js +263 -0
- package/dist/cli/commands/token-audit.js.map +1 -0
- package/dist/cli/commands/tui.js +3 -3
- package/dist/cli/commands/tui.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +3 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/options.d.ts.map +1 -1
- package/dist/cli/options.js +5 -0
- package/dist/cli/options.js.map +1 -1
- package/dist/cli/types.d.ts +1 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/docs/HOW-TO-USE-CODEX.md +28 -60
- package/docs/HOW-TO-USE-OPENCODE.md +26 -72
- package/docs/agent-adapters.md +40 -118
- package/docs/architecture.md +7 -2
- package/docs/cli.md +25 -2
- package/docs/commands-reference.md +22 -32
- package/docs/getting-started.md +65 -115
- package/package.json +1 -1
- package/skills/sprint-forge/SKILL.md +11 -10
- package/skills/sprint-forge/assets/README.md +38 -17
- package/skills/sprint-forge/assets/fixtures/subcommands-and-reports.sizingDecision.json +17 -0
- package/skills/sprint-forge/assets/helpers/analysis/audit.md +18 -0
- package/skills/sprint-forge/assets/helpers/analysis/bugfix.md +19 -0
- package/skills/sprint-forge/assets/helpers/analysis/feature.md +28 -0
- package/skills/sprint-forge/assets/helpers/analysis/new-project.md +18 -0
- package/skills/sprint-forge/assets/helpers/analysis/refactor.md +18 -0
- package/skills/sprint-forge/assets/helpers/analysis/tech-debt.md +18 -0
- package/skills/sprint-forge/assets/helpers/metrics.md +4 -4
- package/skills/sprint-forge/assets/helpers/reentry-generator.md +4 -4
- package/skills/sprint-forge/assets/modes/INIT.md +45 -177
- package/skills/sprint-forge/assets/modes/SPRINT.md +20 -246
- package/skills/sprint-forge/assets/modes/STATUS.md +46 -128
- package/skills/sprint-forge/assets/modes/close-sprint.md +29 -0
- package/skills/sprint-forge/assets/modes/execute-task.md +26 -0
- package/skills/sprint-forge/assets/modes/plan-sprint.md +29 -0
- package/skills/sprint-forge/assets/modes/recover.md +23 -0
- package/skills/sprint-forge/assets/modes/review-task.md +25 -0
- package/skills/sprint-forge/assets/templates/DEBT.summary.json +12 -0
- package/skills/sprint-forge/assets/templates/PROJECT-README.md +16 -60
- package/skills/sprint-forge/assets/templates/REENTRY-PROMPTS.md +18 -87
- package/skills/sprint-forge/assets/templates/ROADMAP.md +16 -65
- package/skills/sprint-forge/assets/templates/ROADMAP.summary.json +24 -0
- package/skills/sprint-forge/assets/templates/SPRINT.summary.json +16 -0
- package/skills/sprint-forge/assets/templates/index.json +24 -0
- package/skills/sprint-forge/assets/templates/state.json +11 -0
- package/skills/sprint-forge/assets/helpers/analysis-guide.md +0 -207
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runTokenAuditChecks = runTokenAuditChecks;
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
|
+
const node_path_1 = require("node:path");
|
|
6
|
+
const constants_1 = require("../constants");
|
|
7
|
+
const fs_1 = require("../fs");
|
|
8
|
+
const TOKEN_BUDGET = {
|
|
9
|
+
agentsBlockWords: 150,
|
|
10
|
+
projectedSkillWords: 200,
|
|
11
|
+
commandRouterWords: 500,
|
|
12
|
+
modeFileWords: 900,
|
|
13
|
+
initModeWords: 500,
|
|
14
|
+
analysisHelperWords: 450,
|
|
15
|
+
roadmapTemplateWords: 450,
|
|
16
|
+
reentryTemplateWords: 350,
|
|
17
|
+
startupTokens: 1500,
|
|
18
|
+
statusBriefTokens: 2000,
|
|
19
|
+
initHappyPathTokens: 2000,
|
|
20
|
+
};
|
|
21
|
+
const RISK_LEVEL = {
|
|
22
|
+
LOW: 'low',
|
|
23
|
+
MEDIUM: 'medium',
|
|
24
|
+
HIGH: 'high',
|
|
25
|
+
};
|
|
26
|
+
function runTokenAuditChecks() {
|
|
27
|
+
const checks = [];
|
|
28
|
+
checks.push(...checkCommandRouters());
|
|
29
|
+
checks.push(...checkModeFiles());
|
|
30
|
+
checks.push(checkInitModeBudget());
|
|
31
|
+
checks.push(...checkAnalysisHelperBudgets());
|
|
32
|
+
checks.push(checkTemplateBudget('skills/sprint-forge/assets/templates/ROADMAP.md', TOKEN_BUDGET.roadmapTemplateWords, 'ROADMAP template'));
|
|
33
|
+
checks.push(checkTemplateBudget('skills/sprint-forge/assets/templates/REENTRY-PROMPTS.md', TOKEN_BUDGET.reentryTemplateWords, 'REENTRY template'));
|
|
34
|
+
checks.push(checkProjectedSkills());
|
|
35
|
+
checks.push(checkAgentsBlockBudget());
|
|
36
|
+
checks.push(checkStartupBudget());
|
|
37
|
+
checks.push(checkStatusBriefBudget());
|
|
38
|
+
checks.push(checkInitHappyPathBudget());
|
|
39
|
+
checks.push(checkSizingDecisionFixture());
|
|
40
|
+
checks.push(reportHeaviestFiles());
|
|
41
|
+
return checks;
|
|
42
|
+
}
|
|
43
|
+
function checkCommandRouters() {
|
|
44
|
+
return ['commands/forge.md', 'commands/status.md', 'commands/wrap-up.md'].map((file) => {
|
|
45
|
+
const weighted = weightPackageFile(file);
|
|
46
|
+
if (weighted.words > TOKEN_BUDGET.commandRouterWords) {
|
|
47
|
+
return warn('token budget: command router', `${file} has ${weighted.words} words`, 'Keep command files as routers; move details into mode/helper files.');
|
|
48
|
+
}
|
|
49
|
+
return pass('token budget: command router', `${file} ${weighted.words}/${TOKEN_BUDGET.commandRouterWords} words`);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function checkModeFiles() {
|
|
53
|
+
return listPackageFiles('skills/sprint-forge/assets/modes', '.md').map((file) => {
|
|
54
|
+
const weighted = weightPackageFile(file);
|
|
55
|
+
if (weighted.words > TOKEN_BUDGET.modeFileWords) {
|
|
56
|
+
return warn('token budget: mode file', `${file} has ${weighted.words} words`, 'Split this mode or move detail into a lazy-loaded helper.');
|
|
57
|
+
}
|
|
58
|
+
return pass('token budget: mode file', `${file} ${weighted.words}/${TOKEN_BUDGET.modeFileWords} words`);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
function checkInitModeBudget() {
|
|
62
|
+
const file = 'skills/sprint-forge/assets/modes/INIT.md';
|
|
63
|
+
const weighted = weightPackageFile(file);
|
|
64
|
+
if (weighted.words > TOKEN_BUDGET.initModeWords) {
|
|
65
|
+
return warn('token budget: INIT mode', `${file} has ${weighted.words} words`, 'Keep INIT as a router; move work-type guidance into analysis helpers.');
|
|
66
|
+
}
|
|
67
|
+
return pass('token budget: INIT mode', `${weighted.words}/${TOKEN_BUDGET.initModeWords} words`);
|
|
68
|
+
}
|
|
69
|
+
function checkAnalysisHelperBudgets() {
|
|
70
|
+
return listPackageFiles('skills/sprint-forge/assets/helpers/analysis', '.md').map((file) => {
|
|
71
|
+
const weighted = weightPackageFile(file);
|
|
72
|
+
if (weighted.words > TOKEN_BUDGET.analysisHelperWords) {
|
|
73
|
+
return warn('token budget: analysis helper', `${file} has ${weighted.words} words`, 'Keep each work-type helper focused on routing, findings, and sizing signals.');
|
|
74
|
+
}
|
|
75
|
+
return pass('token budget: analysis helper', `${file} ${weighted.words}/${TOKEN_BUDGET.analysisHelperWords} words`);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
function checkTemplateBudget(file, budget, label) {
|
|
79
|
+
const weighted = weightPackageFile(file);
|
|
80
|
+
if (weighted.words > budget) {
|
|
81
|
+
return warn(`token budget: ${label}`, `${file} has ${weighted.words} words`, 'Keep templates lean; avoid copying lifecycle rules already defined in modes/helpers.');
|
|
82
|
+
}
|
|
83
|
+
return pass(`token budget: ${label}`, `${weighted.words}/${budget} words`);
|
|
84
|
+
}
|
|
85
|
+
function checkProjectedSkills() {
|
|
86
|
+
const skillFiles = ['kyro-forge/SKILL.md', 'kyro-status/SKILL.md', 'kyro-wrap-up/SKILL.md'].map((file) => `${constants_1.AGENT_SKILLS_ROOT}/${file}`);
|
|
87
|
+
const existing = skillFiles.filter((file) => (0, node_fs_1.existsSync)((0, fs_1.resolveManagedPath)(file)));
|
|
88
|
+
if (existing.length === 0) {
|
|
89
|
+
return warn('token budget: projected skills', 'global Kyro skills are not installed', 'Run kyro install, then kyro doctor --tokens again.');
|
|
90
|
+
}
|
|
91
|
+
const oversized = existing.map(weightManagedFile).filter((file) => file.words > TOKEN_BUDGET.projectedSkillWords);
|
|
92
|
+
if (oversized.length > 0) {
|
|
93
|
+
return warn('token budget: projected skills', formatWeightedList(oversized), 'Projected skills must stay as tiny stubs.');
|
|
94
|
+
}
|
|
95
|
+
return pass('token budget: projected skills', `${existing.length} skills within ${TOKEN_BUDGET.projectedSkillWords} words`);
|
|
96
|
+
}
|
|
97
|
+
function checkAgentsBlockBudget() {
|
|
98
|
+
const agentsPath = (0, fs_1.resolveManagedPath)('AGENTS.md');
|
|
99
|
+
if (!(0, node_fs_1.existsSync)(agentsPath)) {
|
|
100
|
+
return warn('token budget: AGENTS block', 'AGENTS.md not found in this workspace', 'Install the codex adapter if this workspace should expose AGENTS.md instructions.');
|
|
101
|
+
}
|
|
102
|
+
const text = (0, node_fs_1.readFileSync)(agentsPath, 'utf-8');
|
|
103
|
+
const match = text.match(/<!-- kyro-ai:agents-md:start -->([\s\S]*?)<!-- kyro-ai:agents-md:end -->/m);
|
|
104
|
+
if (!match) {
|
|
105
|
+
return warn('token budget: AGENTS block', 'Kyro managed block not found', 'Run kyro install --agent codex or kyro sync --agent codex.');
|
|
106
|
+
}
|
|
107
|
+
const words = countWords(match[1]);
|
|
108
|
+
if (words > TOKEN_BUDGET.agentsBlockWords) {
|
|
109
|
+
return warn('token budget: AGENTS block', `${words}/${TOKEN_BUDGET.agentsBlockWords} words`, 'Keep AGENTS.md as bootstrap only.');
|
|
110
|
+
}
|
|
111
|
+
return pass('token budget: AGENTS block', `${words}/${TOKEN_BUDGET.agentsBlockWords} words`);
|
|
112
|
+
}
|
|
113
|
+
function checkStartupBudget() {
|
|
114
|
+
const files = ['commands/forge.md', 'skills/sprint-forge/assets/modes/SPRINT.md'];
|
|
115
|
+
const total = sumEstimatedTokens(files.map(weightPackageFile));
|
|
116
|
+
if (total > TOKEN_BUDGET.startupTokens) {
|
|
117
|
+
return warn('token budget: startup path', `${total}/${TOKEN_BUDGET.startupTokens} estimated tokens`, 'Reduce forge router or sprint router startup instructions.');
|
|
118
|
+
}
|
|
119
|
+
return pass('token budget: startup path', `${total}/${TOKEN_BUDGET.startupTokens} estimated tokens`);
|
|
120
|
+
}
|
|
121
|
+
function checkStatusBriefBudget() {
|
|
122
|
+
const files = ['commands/status.md'];
|
|
123
|
+
const total = sumEstimatedTokens(files.map(weightPackageFile));
|
|
124
|
+
if (total > TOKEN_BUDGET.statusBriefTokens) {
|
|
125
|
+
return warn('token budget: status brief path', `${total}/${TOKEN_BUDGET.statusBriefTokens} estimated tokens`, 'Keep status brief summary-first.');
|
|
126
|
+
}
|
|
127
|
+
return pass('token budget: status brief path', `${total}/${TOKEN_BUDGET.statusBriefTokens} estimated tokens`);
|
|
128
|
+
}
|
|
129
|
+
function checkInitHappyPathBudget() {
|
|
130
|
+
const baseFiles = [
|
|
131
|
+
'commands/forge.md',
|
|
132
|
+
'skills/sprint-forge/assets/modes/INIT.md',
|
|
133
|
+
'skills/sprint-forge/assets/templates/ROADMAP.md',
|
|
134
|
+
'skills/sprint-forge/assets/templates/PROJECT-README.md',
|
|
135
|
+
'skills/sprint-forge/assets/templates/REENTRY-PROMPTS.md',
|
|
136
|
+
].map(weightPackageFile);
|
|
137
|
+
const heaviestHelper = listPackageFiles('skills/sprint-forge/assets/helpers/analysis', '.md').map(weightPackageFile).sort((a, b) => b.estimatedTokens - a.estimatedTokens)[0];
|
|
138
|
+
const files = heaviestHelper ? [...baseFiles, heaviestHelper] : baseFiles;
|
|
139
|
+
const total = sumEstimatedTokens(files);
|
|
140
|
+
if (total > TOKEN_BUDGET.initHappyPathTokens) {
|
|
141
|
+
return warn('token budget: INIT happy path', `${total}/${TOKEN_BUDGET.initHappyPathTokens} estimated tokens`, 'Reduce INIT, routed analysis helper, or scoped templates.');
|
|
142
|
+
}
|
|
143
|
+
return pass('token budget: INIT happy path', `${total}/${TOKEN_BUDGET.initHappyPathTokens} estimated tokens`);
|
|
144
|
+
}
|
|
145
|
+
function checkSizingDecisionFixture() {
|
|
146
|
+
const file = 'skills/sprint-forge/assets/fixtures/subcommands-and-reports.sizingDecision.json';
|
|
147
|
+
const absolutePath = (0, node_path_1.resolve)(constants_1.PACKAGE_ROOT, file);
|
|
148
|
+
if (!(0, node_fs_1.existsSync)(absolutePath)) {
|
|
149
|
+
return fail('sizingDecision fixture', `${file} missing`, 'Add the subcommands-and-reports regression fixture.');
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
const parsed = JSON.parse((0, node_fs_1.readFileSync)(absolutePath, 'utf-8'));
|
|
153
|
+
if (!isSizingDecisionFixture(parsed)) {
|
|
154
|
+
return fail('sizingDecision fixture', `${file} has invalid shape`, 'Keep recommendedSprintCount, splitTriggers, whyNotFewer, whyNotMore, and sprintProofs consistent.');
|
|
155
|
+
}
|
|
156
|
+
const consistencyError = validateSizingDecision(parsed);
|
|
157
|
+
if (consistencyError) {
|
|
158
|
+
return fail('sizingDecision fixture', consistencyError, 'Fix the fixture so sprint boundaries are explicit and justified.');
|
|
159
|
+
}
|
|
160
|
+
return pass('sizingDecision fixture', `subcommands-and-reports validates ${parsed.recommendedSprintCount} justified sprints`);
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
const message = error instanceof Error ? error.message : 'unknown parse error';
|
|
164
|
+
return fail('sizingDecision fixture', `${file}: ${message}`, 'Keep the fixture as valid JSON.');
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function validateSizingDecision(decision) {
|
|
168
|
+
if (decision.recommendedSprintCount !== decision.sprintProofs.length) {
|
|
169
|
+
return `recommendedSprintCount=${decision.recommendedSprintCount} but sprintProofs.length=${decision.sprintProofs.length}`;
|
|
170
|
+
}
|
|
171
|
+
if (decision.recommendedSprintCount > 1 && decision.splitTriggers.length === 0) {
|
|
172
|
+
return 'multi-sprint sizing requires non-empty splitTriggers';
|
|
173
|
+
}
|
|
174
|
+
if (decision.whyNotFewer.trim().length === 0) {
|
|
175
|
+
return 'whyNotFewer must be non-empty';
|
|
176
|
+
}
|
|
177
|
+
if (decision.whyNotMore.trim().length === 0) {
|
|
178
|
+
return 'whyNotMore must be non-empty';
|
|
179
|
+
}
|
|
180
|
+
if (decision.sprintProofs.some((proof) => proof.trim().length === 0)) {
|
|
181
|
+
return 'every planned sprint needs a non-empty proof';
|
|
182
|
+
}
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
function isSizingDecisionFixture(value) {
|
|
186
|
+
if (!isRecord(value))
|
|
187
|
+
return false;
|
|
188
|
+
return (typeof value.recommendedSprintCount === 'number' &&
|
|
189
|
+
isRiskLevel(value.riskLevel) &&
|
|
190
|
+
typeof value.rationale === 'string' &&
|
|
191
|
+
isStringArray(value.splitTriggers) &&
|
|
192
|
+
typeof value.whyNotFewer === 'string' &&
|
|
193
|
+
typeof value.whyNotMore === 'string' &&
|
|
194
|
+
isStringArray(value.sprintProofs));
|
|
195
|
+
}
|
|
196
|
+
function isRecord(value) {
|
|
197
|
+
return typeof value === 'object' && value !== null;
|
|
198
|
+
}
|
|
199
|
+
function isRiskLevel(value) {
|
|
200
|
+
return value === RISK_LEVEL.LOW || value === RISK_LEVEL.MEDIUM || value === RISK_LEVEL.HIGH;
|
|
201
|
+
}
|
|
202
|
+
function isStringArray(value) {
|
|
203
|
+
return Array.isArray(value) && value.every((item) => typeof item === 'string');
|
|
204
|
+
}
|
|
205
|
+
function reportHeaviestFiles() {
|
|
206
|
+
const files = [
|
|
207
|
+
...listPackageFiles('commands', '.md'),
|
|
208
|
+
...listPackageFiles('agents', '.md'),
|
|
209
|
+
...listPackageFiles('skills/sprint-forge', '.md'),
|
|
210
|
+
].map(weightPackageFile).sort((a, b) => b.words - a.words).slice(0, 8);
|
|
211
|
+
return pass('token audit: heaviest files', formatWeightedList(files));
|
|
212
|
+
}
|
|
213
|
+
function listPackageFiles(directory, extension) {
|
|
214
|
+
const root = (0, node_path_1.resolve)(constants_1.PACKAGE_ROOT, directory);
|
|
215
|
+
if (!(0, node_fs_1.existsSync)(root))
|
|
216
|
+
return [];
|
|
217
|
+
const files = [];
|
|
218
|
+
walk(root, files, extension);
|
|
219
|
+
return files.map((file) => (0, node_path_1.relative)(constants_1.PACKAGE_ROOT, file)).sort();
|
|
220
|
+
}
|
|
221
|
+
function walk(current, files, extension) {
|
|
222
|
+
for (const entry of (0, node_fs_1.readdirSync)(current, { withFileTypes: true })) {
|
|
223
|
+
const full = (0, node_path_1.join)(current, entry.name);
|
|
224
|
+
if (entry.isDirectory())
|
|
225
|
+
walk(full, files, extension);
|
|
226
|
+
if (entry.isFile() && entry.name.endsWith(extension))
|
|
227
|
+
files.push(full);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
function weightPackageFile(file) {
|
|
231
|
+
const text = (0, node_fs_1.readFileSync)((0, node_path_1.resolve)(constants_1.PACKAGE_ROOT, file), 'utf-8');
|
|
232
|
+
return buildWeightedFile(file, text);
|
|
233
|
+
}
|
|
234
|
+
function weightManagedFile(file) {
|
|
235
|
+
const text = (0, node_fs_1.readFileSync)((0, fs_1.resolveManagedPath)(file), 'utf-8');
|
|
236
|
+
return buildWeightedFile(file, text);
|
|
237
|
+
}
|
|
238
|
+
function buildWeightedFile(path, text) {
|
|
239
|
+
const words = countWords(text);
|
|
240
|
+
return { path, words, estimatedTokens: estimateTokens(words) };
|
|
241
|
+
}
|
|
242
|
+
function countWords(text) {
|
|
243
|
+
return text.trim().length === 0 ? 0 : text.trim().split(/\s+/).length;
|
|
244
|
+
}
|
|
245
|
+
function estimateTokens(words) {
|
|
246
|
+
return Math.ceil(words * 1.33);
|
|
247
|
+
}
|
|
248
|
+
function sumEstimatedTokens(files) {
|
|
249
|
+
return files.reduce((sum, file) => sum + file.estimatedTokens, 0);
|
|
250
|
+
}
|
|
251
|
+
function formatWeightedList(files) {
|
|
252
|
+
return files.map((file) => `${file.path}=${file.words}w/~${file.estimatedTokens}t`).join(', ');
|
|
253
|
+
}
|
|
254
|
+
function pass(name, detail) {
|
|
255
|
+
return { status: 'pass', name, detail };
|
|
256
|
+
}
|
|
257
|
+
function warn(name, detail, remedy) {
|
|
258
|
+
return { status: 'warn', name, detail, remedy };
|
|
259
|
+
}
|
|
260
|
+
function fail(name, detail, remedy) {
|
|
261
|
+
return { status: 'fail', name, detail, remedy };
|
|
262
|
+
}
|
|
263
|
+
//# sourceMappingURL=token-audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-audit.js","sourceRoot":"","sources":["../../../src/cli/commands/token-audit.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/commands/tui.js
CHANGED
|
@@ -17,13 +17,13 @@ async function runTui() {
|
|
|
17
17
|
console.log('5) Exit');
|
|
18
18
|
const answer = await rl.question('Select an option: ');
|
|
19
19
|
if (answer.trim() === '1') {
|
|
20
|
-
(0, install_1.install)({ agents: [constants_1.AGENT.STANDARD], scope: constants_1.SCOPE.WORKSPACE, dryRun: false, yes: true, help: false });
|
|
20
|
+
(0, install_1.install)({ agents: [constants_1.AGENT.STANDARD], scope: constants_1.SCOPE.WORKSPACE, dryRun: false, yes: true, help: false, tokens: false });
|
|
21
21
|
}
|
|
22
22
|
else if (answer.trim() === '2') {
|
|
23
|
-
(0, install_1.install)({ agents: [constants_1.AGENT.OPENCODE], scope: constants_1.SCOPE.WORKSPACE, dryRun: false, yes: true, help: false });
|
|
23
|
+
(0, install_1.install)({ agents: [constants_1.AGENT.OPENCODE], scope: constants_1.SCOPE.WORKSPACE, dryRun: false, yes: true, help: false, tokens: false });
|
|
24
24
|
}
|
|
25
25
|
else if (answer.trim() === '3') {
|
|
26
|
-
(0, install_1.install)({ agents: [constants_1.AGENT.CODEX], scope: constants_1.SCOPE.WORKSPACE, dryRun: false, yes: true, help: false });
|
|
26
|
+
(0, install_1.install)({ agents: [constants_1.AGENT.CODEX], scope: constants_1.SCOPE.WORKSPACE, dryRun: false, yes: true, help: false, tokens: false });
|
|
27
27
|
}
|
|
28
28
|
else if (answer.trim() === '4') {
|
|
29
29
|
(0, doctor_1.doctor)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../../src/cli/commands/tui.ts"],"names":[],"mappings":";;AAMA,wBAwBC;AA9BD,qDAAyD;AACzD,+CAAgE;AAChE,4CAA4C;AAC5C,qCAAkC;AAClC,uCAAoC;AAE7B,KAAK,UAAU,MAAM;IAC1B,MAAM,EAAE,GAAG,IAAA,0BAAe,EAAC,EAAE,KAAK,EAAL,oBAAK,EAAE,MAAM,EAAN,qBAAM,EAAE,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC1B,IAAA,iBAAO,EAAC,EAAE,MAAM,EAAE,CAAC,iBAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,iBAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../../src/cli/commands/tui.ts"],"names":[],"mappings":";;AAMA,wBAwBC;AA9BD,qDAAyD;AACzD,+CAAgE;AAChE,4CAA4C;AAC5C,qCAAkC;AAClC,uCAAoC;AAE7B,KAAK,UAAU,MAAM;IAC1B,MAAM,EAAE,GAAG,IAAA,0BAAe,EAAC,EAAE,KAAK,EAAL,oBAAK,EAAE,MAAM,EAAN,qBAAM,EAAE,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC1B,IAAA,iBAAO,EAAC,EAAE,MAAM,EAAE,CAAC,iBAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,iBAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACtH,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACjC,IAAA,iBAAO,EAAC,EAAE,MAAM,EAAE,CAAC,iBAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,iBAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACtH,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACjC,IAAA,iBAAO,EAAC,EAAE,MAAM,EAAE,CAAC,iBAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,iBAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACnH,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACjC,IAAA,eAAM,GAAE,CAAC;QACX,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
|
package/dist/cli/help.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,SAAS,IAAI,IAAI,CAEhC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,SAAS,IAAI,IAAI,CAEhC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAYtD"}
|
package/dist/cli/help.js
CHANGED
|
@@ -14,6 +14,9 @@ function printCommandHelp(command) {
|
|
|
14
14
|
if (command === 'install') {
|
|
15
15
|
console.log('Usage: kyro install [--agent standard|opencode|codex] --scope workspace [--dry-run] [--yes]');
|
|
16
16
|
}
|
|
17
|
+
else if (command === 'doctor') {
|
|
18
|
+
console.log('Usage: kyro doctor [--tokens]');
|
|
19
|
+
}
|
|
17
20
|
else if (command === 'sync') {
|
|
18
21
|
console.log('Usage: kyro sync [--agent standard|opencode|codex] [--dry-run]');
|
|
19
22
|
}
|
package/dist/cli/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":";;AAEA,gDAEC;AAED,8BAEC;AAED,
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":";;AAEA,gDAEC;AAED,8BAEC;AAED,4CAYC;AAtBD,6BAA2C;AAE3C,SAAgB,kBAAkB;IAChC,OAAO,IAAA,wBAAmB,EAAsB,cAAc,CAAC,CAAC,OAAO,CAAC;AAC1E,CAAC;AAED,SAAgB,SAAS;IACvB,OAAO,CAAC,GAAG,CAAC,40BAA40B,CAAC,CAAC;AAC51B,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,6FAA6F,CAAC,CAAC;IAC7G,CAAC;SAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;SAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAChF,CAAC;SAAM,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,SAAS,EAAE,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE/D,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE/D,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA+CvD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAQ/C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAItD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAErD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAI9D;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAK7D"}
|
package/dist/cli/options.js
CHANGED
|
@@ -14,6 +14,7 @@ function parseOptions(args) {
|
|
|
14
14
|
let dryRun = false;
|
|
15
15
|
let yes = false;
|
|
16
16
|
let help = false;
|
|
17
|
+
let tokens = false;
|
|
17
18
|
for (let i = 0; i < args.length; i += 1) {
|
|
18
19
|
const arg = args[i];
|
|
19
20
|
if (arg === '--dry-run') {
|
|
@@ -25,6 +26,9 @@ function parseOptions(args) {
|
|
|
25
26
|
else if (arg === '--help' || arg === '-h') {
|
|
26
27
|
help = true;
|
|
27
28
|
}
|
|
29
|
+
else if (arg === '--tokens') {
|
|
30
|
+
tokens = true;
|
|
31
|
+
}
|
|
28
32
|
else if (arg === '--agent' || arg === '--agents') {
|
|
29
33
|
const value = args[i + 1];
|
|
30
34
|
if (!value)
|
|
@@ -58,6 +62,7 @@ function parseOptions(args) {
|
|
|
58
62
|
dryRun,
|
|
59
63
|
yes,
|
|
60
64
|
help,
|
|
65
|
+
tokens,
|
|
61
66
|
};
|
|
62
67
|
}
|
|
63
68
|
function parseAgent(value) {
|
package/dist/cli/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":";;AAIA,
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/types.d.ts
CHANGED
package/dist/cli/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,CAAC,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,CAAC,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,CAAC,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,CAAC,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,cAAc,GAAG,cAAc,GAAG,SAAS,CAAC;IAC5F,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
package/docs/HOW-TO-USE-CODEX.md
CHANGED
|
@@ -1,82 +1,50 @@
|
|
|
1
1
|
# Codex Adapter Guide
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
---
|
|
3
|
+
Codex should use the installed Kyro command skills and root `AGENTS.md` bootstrap. Do not load the whole runtime manually.
|
|
6
4
|
|
|
7
5
|
## Setup
|
|
8
6
|
|
|
9
7
|
```bash
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
cp -r kyro-ai/skills/sprint-forge .skills/
|
|
13
|
-
cp -r kyro-ai/skills/qa-review .skills/
|
|
14
|
-
cp kyro-ai/agents/orchestrator.md .agents/
|
|
8
|
+
npx kyro-ai install --agent codex --scope workspace --yes
|
|
15
9
|
```
|
|
16
10
|
|
|
17
|
-
|
|
11
|
+
This installs:
|
|
18
12
|
|
|
19
|
-
|
|
13
|
+
- global runtime: `~/.agents/kyro/current/`
|
|
14
|
+
- global command skills: `~/.agents/skills/kyro-*`
|
|
15
|
+
- project state: `.agents/kyro/kyro.json`
|
|
16
|
+
- a small Kyro managed block in root `AGENTS.md`
|
|
20
17
|
|
|
21
|
-
|
|
22
|
-
Use Kyro for this project.
|
|
18
|
+
## Usage
|
|
23
19
|
|
|
24
|
-
|
|
25
|
-
- .agents/orchestrator.md
|
|
26
|
-
- .skills/sprint-forge/SKILL.md
|
|
27
|
-
- .skills/qa-review/SKILL.md
|
|
20
|
+
Invoke the command-like skills:
|
|
28
21
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
- status = read artifacts and report progress/debt
|
|
33
|
-
- wrap-up = close the session and update re-entry prompts
|
|
34
|
-
```
|
|
22
|
+
- `kyro-forge` — route analyze/plan/execute/review/close
|
|
23
|
+
- `kyro-status` — summary-first progress and debt report
|
|
24
|
+
- `kyro-wrap-up` — close session and refresh handoff context
|
|
35
25
|
|
|
36
|
-
|
|
26
|
+
The skills read command routers from `~/.agents/kyro/current/commands/` and then load only the routed mode/helper/template.
|
|
37
27
|
|
|
38
|
-
##
|
|
28
|
+
## Artifacts
|
|
39
29
|
|
|
40
|
-
|
|
30
|
+
Persist scope artifacts under:
|
|
41
31
|
|
|
42
32
|
```text
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
33
|
+
.agents/kyro/scopes/{scope}/
|
|
34
|
+
├── state.json
|
|
35
|
+
├── index.json
|
|
36
|
+
├── ROADMAP.md
|
|
37
|
+
├── ROADMAP.summary.json
|
|
38
|
+
└── phases/
|
|
39
|
+
├── SPRINT-N-*.md
|
|
40
|
+
└── SPRINT-N-*.summary.json
|
|
51
41
|
```
|
|
52
42
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
```text
|
|
56
|
-
@file .agents/orchestrator.md
|
|
57
|
-
@file .skills/sprint-forge/SKILL.md
|
|
58
|
-
@file .skills/qa-review/SKILL.md
|
|
43
|
+
Markdown is human evidence. JSON files are the fast routing index.
|
|
59
44
|
|
|
60
|
-
|
|
61
|
-
Use .agents/kyro/scopes/{scope}/ for findings, roadmap, phases,
|
|
62
|
-
handoffs, and re-entry prompts.
|
|
63
|
-
```
|
|
45
|
+
## Verify
|
|
64
46
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
@file .skills/sprint-forge/SKILL.md
|
|
69
|
-
|
|
70
|
-
Run the status intent for .agents/kyro/scopes/{scope}/.
|
|
71
|
-
Report sprint progress, open debt, aged debt, blockers, and next action.
|
|
47
|
+
```bash
|
|
48
|
+
kyro doctor
|
|
49
|
+
kyro doctor --tokens
|
|
72
50
|
```
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## Limitations
|
|
77
|
-
|
|
78
|
-
- Codex environments may not register Kyro slash commands automatically.
|
|
79
|
-
- Artifact persistence depends on the agent writing files correctly.
|
|
80
|
-
- Learned rules work through `.agents/kyro/scopes/rules.md`, not through a runtime service.
|
|
81
|
-
|
|
82
|
-
For generic setup and Cursor/OpenCode notes, see [Agent Adapters](agent-adapters.md).
|
|
@@ -1,93 +1,47 @@
|
|
|
1
1
|
# OpenCode Adapter Guide
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
---
|
|
3
|
+
OpenCode should discover Kyro through global command skills. Do not copy Kyro core into each project.
|
|
6
4
|
|
|
7
5
|
## Setup
|
|
8
6
|
|
|
9
7
|
```bash
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
cp -r kyro-ai/skills/sprint-forge .skills/
|
|
13
|
-
cp -r kyro-ai/skills/qa-review .skills/
|
|
14
|
-
cp kyro-ai/agents/orchestrator.md .agents/
|
|
8
|
+
npx kyro-ai install --agent opencode --scope workspace --yes
|
|
15
9
|
```
|
|
16
10
|
|
|
17
|
-
|
|
11
|
+
This installs:
|
|
18
12
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
│ ├── orchestrator.md
|
|
23
|
-
│ └── core/
|
|
24
|
-
│ └── {scope}/
|
|
25
|
-
├── .skills/
|
|
26
|
-
│ ├── sprint-forge/
|
|
27
|
-
│ └── qa-review/
|
|
28
|
-
└── src/
|
|
29
|
-
```
|
|
13
|
+
- global runtime: `~/.agents/kyro/current/`
|
|
14
|
+
- global command skills: `~/.agents/skills/kyro-*`
|
|
15
|
+
- project state: `.agents/kyro/kyro.json`
|
|
30
16
|
|
|
31
|
-
|
|
17
|
+
## Usage
|
|
32
18
|
|
|
33
|
-
|
|
19
|
+
Use the installed command-like skills:
|
|
34
20
|
|
|
35
|
-
|
|
36
|
-
|
|
21
|
+
- `kyro-forge` — route analyze/plan/execute/review/close
|
|
22
|
+
- `kyro-status` — summary-first progress and debt report
|
|
23
|
+
- `kyro-wrap-up` — close session and refresh handoff context
|
|
37
24
|
|
|
38
|
-
|
|
39
|
-
@file .agents/orchestrator.md
|
|
40
|
-
@file .skills/sprint-forge/SKILL.md
|
|
41
|
-
@file .skills/qa-review/SKILL.md
|
|
25
|
+
Each skill is intentionally tiny. It loads the command router first, then only the mode/helper/template needed for the current step.
|
|
42
26
|
|
|
43
|
-
|
|
44
|
-
If slash commands are unavailable, use:
|
|
45
|
-
- forge = analyze/plan/execute/review/close
|
|
46
|
-
- status = read artifacts and report progress/debt
|
|
47
|
-
- wrap-up = close session and update re-entry prompts
|
|
48
|
-
```
|
|
27
|
+
## Artifacts
|
|
49
28
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
## Example Flows
|
|
53
|
-
|
|
54
|
-
### Sprint Planning
|
|
29
|
+
Save workflow artifacts under:
|
|
55
30
|
|
|
56
31
|
```text
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
32
|
+
.agents/kyro/scopes/{scope}/
|
|
33
|
+
├── state.json
|
|
34
|
+
├── index.json
|
|
35
|
+
├── ROADMAP.md
|
|
36
|
+
├── ROADMAP.summary.json
|
|
37
|
+
└── phases/
|
|
38
|
+
├── SPRINT-N-*.md
|
|
39
|
+
└── SPRINT-N-*.summary.json
|
|
63
40
|
```
|
|
64
41
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
```text
|
|
68
|
-
@file .skills/qa-review/SKILL.md
|
|
69
|
-
@file .agents/kyro/scopes/{scope}/RE-ENTRY-PROMPTS.md
|
|
42
|
+
## Verify
|
|
70
43
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
### Session Wrap-Up
|
|
76
|
-
|
|
77
|
-
```text
|
|
78
|
-
@file .agents/orchestrator.md
|
|
79
|
-
@file .skills/sprint-forge/SKILL.md
|
|
80
|
-
|
|
81
|
-
Run the wrap-up intent for {scope}.
|
|
82
|
-
Update retro notes, debt status, re-entry prompts, and proposed learned rules.
|
|
44
|
+
```bash
|
|
45
|
+
kyro doctor
|
|
46
|
+
kyro doctor --tokens
|
|
83
47
|
```
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## Limitations
|
|
88
|
-
|
|
89
|
-
- OpenCode may not register Kyro commands or skills natively.
|
|
90
|
-
- You must ensure generated artifacts are saved under `.agents/kyro/scopes/{scope}/`.
|
|
91
|
-
- Learned rules are markdown-based and must be maintained in `rules.md`.
|
|
92
|
-
|
|
93
|
-
For the generic adapter contract and Cursor notes, see [Agent Adapters](agent-adapters.md).
|