skillops-cli 0.0.0-stage → 1.2.1
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/.github/agents/address-review.agent.md +14 -0
- package/.github/agents/docs-sync.agent.md +18 -0
- package/.github/agents/pr-brief.agent.md +24 -0
- package/.github/agents/skill-auditor.agent.md +22 -0
- package/LICENSE +21 -0
- package/README.md +157 -2
- package/SKILL_CONTRACT.md +146 -0
- package/catalog/ai-engineering/agent-harness-auditor/SKILL.md +44 -0
- package/catalog/ai-engineering/agent-harness-auditor/evals/benchmark.json +22 -0
- package/catalog/ai-engineering/agent-harness-auditor/evals/evals.json +40 -0
- package/catalog/ai-engineering/agent-harness-auditor/scripts/harness_linter.py +101 -0
- package/catalog/ai-engineering/context-pruner-advisor/SKILL.md +44 -0
- package/catalog/ai-engineering/context-pruner-advisor/evals/benchmark.json +22 -0
- package/catalog/ai-engineering/context-pruner-advisor/evals/evals.json +40 -0
- package/catalog/ai-engineering/context-pruner-advisor/scripts/context_pruner.py +114 -0
- package/catalog/ai-engineering/mcp-architect/SKILL.md +45 -0
- package/catalog/ai-engineering/mcp-architect/evals/benchmark.json +22 -0
- package/catalog/ai-engineering/mcp-architect/evals/evals.json +54 -0
- package/catalog/ai-engineering/mcp-architect/scripts/validate_mcp_server.py +156 -0
- package/catalog/ai-engineering/prompt-red-teaming/SKILL.md +43 -0
- package/catalog/ai-engineering/prompt-red-teaming/evals/benchmark.json +22 -0
- package/catalog/ai-engineering/prompt-red-teaming/evals/evals.json +40 -0
- package/catalog/ai-engineering/prompt-red-teaming/scripts/injection_scanner.py +79 -0
- package/catalog/arch-quality/ast-blast-radius/SKILL.md +41 -0
- package/catalog/arch-quality/ast-blast-radius/evals/benchmark.json +22 -0
- package/catalog/arch-quality/ast-blast-radius/evals/evals.json +40 -0
- package/catalog/arch-quality/ast-blast-radius/scripts/analyze_call_graph.py +114 -0
- package/catalog/arch-quality/bug-reproducer-tdd/SKILL.md +42 -0
- package/catalog/arch-quality/bug-reproducer-tdd/evals/benchmark.json +22 -0
- package/catalog/arch-quality/bug-reproducer-tdd/evals/evals.json +40 -0
- package/catalog/arch-quality/bug-reproducer-tdd/scripts/repro_harness_check.py +129 -0
- package/catalog/arch-quality/security-sast-gate/SKILL.md +42 -0
- package/catalog/arch-quality/security-sast-gate/evals/benchmark.json +22 -0
- package/catalog/arch-quality/security-sast-gate/evals/evals.json +40 -0
- package/catalog/arch-quality/security-sast-gate/scripts/owasp_ast_scanner.py +153 -0
- package/catalog/python-backend/concurrency-race-detector/SKILL.md +43 -0
- package/catalog/python-backend/concurrency-race-detector/evals/benchmark.json +22 -0
- package/catalog/python-backend/concurrency-race-detector/evals/evals.json +40 -0
- package/catalog/python-backend/concurrency-race-detector/scripts/event_loop_blocking_scanner.py +127 -0
- package/catalog/python-backend/fastapi-production/SKILL.md +44 -0
- package/catalog/python-backend/fastapi-production/evals/benchmark.json +22 -0
- package/catalog/python-backend/fastapi-production/evals/evals.json +54 -0
- package/catalog/python-backend/fastapi-production/scripts/audit_fastapi_routes.py +169 -0
- package/catalog/python-backend/postgres-query-doctor/SKILL.md +44 -0
- package/catalog/python-backend/postgres-query-doctor/evals/benchmark.json +22 -0
- package/catalog/python-backend/postgres-query-doctor/evals/evals.json +54 -0
- package/catalog/python-backend/postgres-query-doctor/scripts/analyze_sql_safety.py +130 -0
- package/catalog/subagents/blast-radius-auditor/SUBAGENT.md +26 -0
- package/catalog/subagents/context-scout/SUBAGENT.md +23 -0
- package/catalog/subagents/red-team-breaker/SUBAGENT.md +22 -0
- package/catalog/subagents/tdd-reproducer-agent/SUBAGENT.md +23 -0
- package/catalog/subagents/token-budget-governor/SUBAGENT.md +26 -0
- package/dist/cli.js +4578 -0
- package/dist/index.d.ts +2039 -0
- package/dist/index.js +4129 -0
- package/docs/BENCHMARKS.md +82 -0
- package/package.json +84 -4
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,2039 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Normative Zod v3 schemas and TypeScript domain contracts for the SkillOps NPX Engine.
|
|
5
|
+
*
|
|
6
|
+
* Enforces INV-SKILL-01 through INV-SKILL-05 for both Hybrid Executable Skills (SKILL.md)
|
|
7
|
+
* and Context-Isolated Subagents (SUBAGENT.md / *.agent.md), as well as Token Economy
|
|
8
|
+
* telemetry and Multi-Runtime Transpilation lockfiles.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
declare const SKILLOPS_VERSION = "1.2.1";
|
|
12
|
+
/**
|
|
13
|
+
* Count whitespace-delimited words in text.
|
|
14
|
+
*/
|
|
15
|
+
declare function countWords(text: string): number;
|
|
16
|
+
/**
|
|
17
|
+
* Deterministic zero-API token count estimator matching SKILL_CONTRACT.md.
|
|
18
|
+
*/
|
|
19
|
+
declare function estimateTokenCount(text: string): number;
|
|
20
|
+
/**
|
|
21
|
+
* Split a Markdown document into [frontmatterDict, markdownBody].
|
|
22
|
+
*/
|
|
23
|
+
declare function splitFrontmatter(rawText: string, sourceLabel: string): [Record<string, unknown>, string];
|
|
24
|
+
declare const ExitCode: {
|
|
25
|
+
readonly SUCCESS: 0;
|
|
26
|
+
readonly ERROR: 1;
|
|
27
|
+
readonly COLLISION_ERROR: 2;
|
|
28
|
+
readonly BUDGET_OR_CONTRACT_ERROR: 3;
|
|
29
|
+
readonly EVAL_REGRESSION_ERROR: 4;
|
|
30
|
+
};
|
|
31
|
+
type ExitCodeValue = (typeof ExitCode)[keyof typeof ExitCode];
|
|
32
|
+
declare const CatalogTrackSchema: z.ZodEnum<["ai-engineering", "python-backend", "arch-quality", "token-economy"]>;
|
|
33
|
+
type CatalogTrack = z.infer<typeof CatalogTrackSchema>;
|
|
34
|
+
declare const CollisionSeveritySchema: z.ZodEnum<["SAFE", "WARNING", "HIGH_RISK", "BLOCKING_ERROR"]>;
|
|
35
|
+
type CollisionSeverity = z.infer<typeof CollisionSeveritySchema>;
|
|
36
|
+
declare const RuntimeTargetSchema: z.ZodEnum<["claude", "antigravity", "cursor", "codex", "copilot", "windsurf", "cline", "roocode", "kilocode", "zed", "continue", "aider", "openhands", "amp", "goose", "opencode", "kiro", "trae", "amazonq", "junie"]>;
|
|
37
|
+
type RuntimeTarget = z.infer<typeof RuntimeTargetSchema>;
|
|
38
|
+
declare const CORE_RUNTIME_TARGETS: readonly RuntimeTarget[];
|
|
39
|
+
declare const ALL_RUNTIME_TARGETS: readonly RuntimeTarget[];
|
|
40
|
+
type HarnessCategory = "cli-agent" | "ai-ide" | "ide-extension" | "autonomous-swe";
|
|
41
|
+
type HarnessSkillFormat = "progressive-skill-dir" | "mdc-rule" | "copilot-instructions" | "markdown-rule" | "openhands-microagent" | "kiro-steering";
|
|
42
|
+
interface RuntimeHarnessSpec {
|
|
43
|
+
readonly id: RuntimeTarget;
|
|
44
|
+
readonly displayName: string;
|
|
45
|
+
readonly vendor: string;
|
|
46
|
+
readonly category: HarnessCategory;
|
|
47
|
+
readonly skillFormat: HarnessSkillFormat;
|
|
48
|
+
readonly skillsDir: string;
|
|
49
|
+
readonly subagentsDir: string;
|
|
50
|
+
readonly detectionPaths: readonly string[];
|
|
51
|
+
readonly alwaysOnFiles: readonly string[];
|
|
52
|
+
readonly mcpConfigPath: string | null;
|
|
53
|
+
readonly supportsMcp: boolean;
|
|
54
|
+
}
|
|
55
|
+
declare const RUNTIME_HARNESS_SPECS: Readonly<Record<RuntimeTarget, RuntimeHarnessSpec>>;
|
|
56
|
+
/**
|
|
57
|
+
* Deterministically detect which of the 20 AI coding agent harnesses have configuration
|
|
58
|
+
* directories or instruction files present in `repoPath`.
|
|
59
|
+
*/
|
|
60
|
+
declare function detectInstalledHarnesses(repoPath: string): RuntimeTarget[];
|
|
61
|
+
/**
|
|
62
|
+
* Resolve runtime target specifications (`"all"`, `"auto"`, `"core"`, or comma-separated target names)
|
|
63
|
+
* into a deduplicated, validated list of `RuntimeTarget` values.
|
|
64
|
+
*/
|
|
65
|
+
declare function resolveRuntimeTargets(rawSpec?: string | readonly string[], repoPath?: string, fallbackTargets?: readonly RuntimeTarget[]): RuntimeTarget[];
|
|
66
|
+
declare const RoutingSignalsSchema: z.ZodObject<{
|
|
67
|
+
languages: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
68
|
+
files_any: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
69
|
+
dependencies_any: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
70
|
+
negative_triggers: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
71
|
+
}, "strict", z.ZodTypeAny, {
|
|
72
|
+
languages: string[];
|
|
73
|
+
files_any: string[];
|
|
74
|
+
dependencies_any: string[];
|
|
75
|
+
negative_triggers: string[];
|
|
76
|
+
}, {
|
|
77
|
+
languages?: string[] | undefined;
|
|
78
|
+
files_any?: string[] | undefined;
|
|
79
|
+
dependencies_any?: string[] | undefined;
|
|
80
|
+
negative_triggers?: string[] | undefined;
|
|
81
|
+
}>;
|
|
82
|
+
type RoutingSignals = z.infer<typeof RoutingSignalsSchema>;
|
|
83
|
+
declare const ScriptEntrypointSchema: z.ZodObject<{
|
|
84
|
+
path: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
|
|
85
|
+
description: z.ZodString;
|
|
86
|
+
}, "strict", z.ZodTypeAny, {
|
|
87
|
+
path: string;
|
|
88
|
+
description: string;
|
|
89
|
+
}, {
|
|
90
|
+
path: string;
|
|
91
|
+
description: string;
|
|
92
|
+
}>;
|
|
93
|
+
type ScriptEntrypoint = z.infer<typeof ScriptEntrypointSchema>;
|
|
94
|
+
declare const SkillEntrypointsSchema: z.ZodObject<{
|
|
95
|
+
scripts: z.ZodArray<z.ZodObject<{
|
|
96
|
+
path: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
|
|
97
|
+
description: z.ZodString;
|
|
98
|
+
}, "strict", z.ZodTypeAny, {
|
|
99
|
+
path: string;
|
|
100
|
+
description: string;
|
|
101
|
+
}, {
|
|
102
|
+
path: string;
|
|
103
|
+
description: string;
|
|
104
|
+
}>, "many">;
|
|
105
|
+
}, "strict", z.ZodTypeAny, {
|
|
106
|
+
scripts: {
|
|
107
|
+
path: string;
|
|
108
|
+
description: string;
|
|
109
|
+
}[];
|
|
110
|
+
}, {
|
|
111
|
+
scripts: {
|
|
112
|
+
path: string;
|
|
113
|
+
description: string;
|
|
114
|
+
}[];
|
|
115
|
+
}>;
|
|
116
|
+
type SkillEntrypoints = z.infer<typeof SkillEntrypointsSchema>;
|
|
117
|
+
declare const SkillManifestSchema: z.ZodObject<{
|
|
118
|
+
name: z.ZodString;
|
|
119
|
+
description: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
|
|
120
|
+
version: z.ZodDefault<z.ZodString>;
|
|
121
|
+
track: z.ZodEnum<["ai-engineering", "python-backend", "arch-quality", "token-economy"]>;
|
|
122
|
+
tags: z.ZodArray<z.ZodString, "many">;
|
|
123
|
+
routing_signals: z.ZodDefault<z.ZodObject<{
|
|
124
|
+
languages: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
125
|
+
files_any: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
126
|
+
dependencies_any: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
127
|
+
negative_triggers: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
128
|
+
}, "strict", z.ZodTypeAny, {
|
|
129
|
+
languages: string[];
|
|
130
|
+
files_any: string[];
|
|
131
|
+
dependencies_any: string[];
|
|
132
|
+
negative_triggers: string[];
|
|
133
|
+
}, {
|
|
134
|
+
languages?: string[] | undefined;
|
|
135
|
+
files_any?: string[] | undefined;
|
|
136
|
+
dependencies_any?: string[] | undefined;
|
|
137
|
+
negative_triggers?: string[] | undefined;
|
|
138
|
+
}>>;
|
|
139
|
+
entrypoints: z.ZodObject<{
|
|
140
|
+
scripts: z.ZodArray<z.ZodObject<{
|
|
141
|
+
path: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
|
|
142
|
+
description: z.ZodString;
|
|
143
|
+
}, "strict", z.ZodTypeAny, {
|
|
144
|
+
path: string;
|
|
145
|
+
description: string;
|
|
146
|
+
}, {
|
|
147
|
+
path: string;
|
|
148
|
+
description: string;
|
|
149
|
+
}>, "many">;
|
|
150
|
+
}, "strict", z.ZodTypeAny, {
|
|
151
|
+
scripts: {
|
|
152
|
+
path: string;
|
|
153
|
+
description: string;
|
|
154
|
+
}[];
|
|
155
|
+
}, {
|
|
156
|
+
scripts: {
|
|
157
|
+
path: string;
|
|
158
|
+
description: string;
|
|
159
|
+
}[];
|
|
160
|
+
}>;
|
|
161
|
+
body_lines: z.ZodDefault<z.ZodNumber>;
|
|
162
|
+
body_tokens: z.ZodDefault<z.ZodNumber>;
|
|
163
|
+
}, "strict", z.ZodTypeAny, {
|
|
164
|
+
description: string;
|
|
165
|
+
name: string;
|
|
166
|
+
version: string;
|
|
167
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
168
|
+
tags: string[];
|
|
169
|
+
routing_signals: {
|
|
170
|
+
languages: string[];
|
|
171
|
+
files_any: string[];
|
|
172
|
+
dependencies_any: string[];
|
|
173
|
+
negative_triggers: string[];
|
|
174
|
+
};
|
|
175
|
+
entrypoints: {
|
|
176
|
+
scripts: {
|
|
177
|
+
path: string;
|
|
178
|
+
description: string;
|
|
179
|
+
}[];
|
|
180
|
+
};
|
|
181
|
+
body_lines: number;
|
|
182
|
+
body_tokens: number;
|
|
183
|
+
}, {
|
|
184
|
+
description: string;
|
|
185
|
+
name: string;
|
|
186
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
187
|
+
tags: string[];
|
|
188
|
+
entrypoints: {
|
|
189
|
+
scripts: {
|
|
190
|
+
path: string;
|
|
191
|
+
description: string;
|
|
192
|
+
}[];
|
|
193
|
+
};
|
|
194
|
+
version?: string | undefined;
|
|
195
|
+
routing_signals?: {
|
|
196
|
+
languages?: string[] | undefined;
|
|
197
|
+
files_any?: string[] | undefined;
|
|
198
|
+
dependencies_any?: string[] | undefined;
|
|
199
|
+
negative_triggers?: string[] | undefined;
|
|
200
|
+
} | undefined;
|
|
201
|
+
body_lines?: number | undefined;
|
|
202
|
+
body_tokens?: number | undefined;
|
|
203
|
+
}>;
|
|
204
|
+
type SkillManifestInput = z.input<typeof SkillManifestSchema>;
|
|
205
|
+
type SkillManifest = z.output<typeof SkillManifestSchema> & {
|
|
206
|
+
readonly description_words: number;
|
|
207
|
+
readonly description_tokens: number;
|
|
208
|
+
};
|
|
209
|
+
declare function createSkillManifest(input: unknown): SkillManifest;
|
|
210
|
+
declare function parseSkillMdFile(filePath: string): SkillManifest;
|
|
211
|
+
declare const SubagentManifestSchema: z.ZodObject<{
|
|
212
|
+
name: z.ZodString;
|
|
213
|
+
description: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
|
|
214
|
+
tools: z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>;
|
|
215
|
+
user_invocable: z.ZodDefault<z.ZodBoolean>;
|
|
216
|
+
context_isolation: z.ZodDefault<z.ZodBoolean>;
|
|
217
|
+
max_output_tokens: z.ZodDefault<z.ZodNumber>;
|
|
218
|
+
model_tier: z.ZodDefault<z.ZodEnum<["inherit", "fast", "reasoning"]>>;
|
|
219
|
+
tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
220
|
+
system_prompt_lines: z.ZodDefault<z.ZodNumber>;
|
|
221
|
+
system_prompt_tokens: z.ZodDefault<z.ZodNumber>;
|
|
222
|
+
}, "strict", z.ZodTypeAny, {
|
|
223
|
+
description: string;
|
|
224
|
+
name: string;
|
|
225
|
+
tags: string[];
|
|
226
|
+
tools: string[];
|
|
227
|
+
user_invocable: boolean;
|
|
228
|
+
context_isolation: boolean;
|
|
229
|
+
max_output_tokens: number;
|
|
230
|
+
model_tier: "inherit" | "fast" | "reasoning";
|
|
231
|
+
system_prompt_lines: number;
|
|
232
|
+
system_prompt_tokens: number;
|
|
233
|
+
}, {
|
|
234
|
+
description: string;
|
|
235
|
+
name: string;
|
|
236
|
+
tools: string[];
|
|
237
|
+
tags?: string[] | undefined;
|
|
238
|
+
user_invocable?: boolean | undefined;
|
|
239
|
+
context_isolation?: boolean | undefined;
|
|
240
|
+
max_output_tokens?: number | undefined;
|
|
241
|
+
model_tier?: "inherit" | "fast" | "reasoning" | undefined;
|
|
242
|
+
system_prompt_lines?: number | undefined;
|
|
243
|
+
system_prompt_tokens?: number | undefined;
|
|
244
|
+
}>;
|
|
245
|
+
type SubagentManifest = z.output<typeof SubagentManifestSchema> & {
|
|
246
|
+
readonly description_tokens: number;
|
|
247
|
+
};
|
|
248
|
+
declare function createSubagentManifest(input: Record<string, unknown>): SubagentManifest;
|
|
249
|
+
declare function parseSubagentMdFile(filePath: string): {
|
|
250
|
+
manifest: SubagentManifest;
|
|
251
|
+
systemPromptBody: string;
|
|
252
|
+
};
|
|
253
|
+
declare function classifyCollisionSeverity(similarity: number): CollisionSeverity;
|
|
254
|
+
declare const CollisionPairSchema: z.ZodObject<{
|
|
255
|
+
skill_a: z.ZodString;
|
|
256
|
+
skill_b: z.ZodString;
|
|
257
|
+
similarity: z.ZodNumber;
|
|
258
|
+
severity: z.ZodEnum<["SAFE", "WARNING", "HIGH_RISK", "BLOCKING_ERROR"]>;
|
|
259
|
+
shared_terms: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
260
|
+
}, "strict", z.ZodTypeAny, {
|
|
261
|
+
skill_a: string;
|
|
262
|
+
skill_b: string;
|
|
263
|
+
similarity: number;
|
|
264
|
+
severity: "SAFE" | "WARNING" | "HIGH_RISK" | "BLOCKING_ERROR";
|
|
265
|
+
shared_terms: string[];
|
|
266
|
+
}, {
|
|
267
|
+
skill_a: string;
|
|
268
|
+
skill_b: string;
|
|
269
|
+
similarity: number;
|
|
270
|
+
severity: "SAFE" | "WARNING" | "HIGH_RISK" | "BLOCKING_ERROR";
|
|
271
|
+
shared_terms?: string[] | undefined;
|
|
272
|
+
}>;
|
|
273
|
+
type CollisionPair = z.infer<typeof CollisionPairSchema>;
|
|
274
|
+
declare function createCollisionPair(skillA: string, skillB: string, similarity: number, sharedTerms?: string[]): CollisionPair;
|
|
275
|
+
declare const CollisionReportSchema: z.ZodObject<{
|
|
276
|
+
catalog_path: z.ZodString;
|
|
277
|
+
skills_audited: z.ZodNumber;
|
|
278
|
+
subagents_audited: z.ZodDefault<z.ZodNumber>;
|
|
279
|
+
total_l1_tokens: z.ZodNumber;
|
|
280
|
+
max_similarity: z.ZodDefault<z.ZodNumber>;
|
|
281
|
+
pairs: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
282
|
+
skill_a: z.ZodString;
|
|
283
|
+
skill_b: z.ZodString;
|
|
284
|
+
similarity: z.ZodNumber;
|
|
285
|
+
severity: z.ZodEnum<["SAFE", "WARNING", "HIGH_RISK", "BLOCKING_ERROR"]>;
|
|
286
|
+
shared_terms: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
287
|
+
}, "strict", z.ZodTypeAny, {
|
|
288
|
+
skill_a: string;
|
|
289
|
+
skill_b: string;
|
|
290
|
+
similarity: number;
|
|
291
|
+
severity: "SAFE" | "WARNING" | "HIGH_RISK" | "BLOCKING_ERROR";
|
|
292
|
+
shared_terms: string[];
|
|
293
|
+
}, {
|
|
294
|
+
skill_a: string;
|
|
295
|
+
skill_b: string;
|
|
296
|
+
similarity: number;
|
|
297
|
+
severity: "SAFE" | "WARNING" | "HIGH_RISK" | "BLOCKING_ERROR";
|
|
298
|
+
shared_terms?: string[] | undefined;
|
|
299
|
+
}>, "many">>;
|
|
300
|
+
budget_errors: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
301
|
+
}, "strict", z.ZodTypeAny, {
|
|
302
|
+
catalog_path: string;
|
|
303
|
+
skills_audited: number;
|
|
304
|
+
subagents_audited: number;
|
|
305
|
+
total_l1_tokens: number;
|
|
306
|
+
max_similarity: number;
|
|
307
|
+
pairs: {
|
|
308
|
+
skill_a: string;
|
|
309
|
+
skill_b: string;
|
|
310
|
+
similarity: number;
|
|
311
|
+
severity: "SAFE" | "WARNING" | "HIGH_RISK" | "BLOCKING_ERROR";
|
|
312
|
+
shared_terms: string[];
|
|
313
|
+
}[];
|
|
314
|
+
budget_errors: string[];
|
|
315
|
+
}, {
|
|
316
|
+
catalog_path: string;
|
|
317
|
+
skills_audited: number;
|
|
318
|
+
total_l1_tokens: number;
|
|
319
|
+
subagents_audited?: number | undefined;
|
|
320
|
+
max_similarity?: number | undefined;
|
|
321
|
+
pairs?: {
|
|
322
|
+
skill_a: string;
|
|
323
|
+
skill_b: string;
|
|
324
|
+
similarity: number;
|
|
325
|
+
severity: "SAFE" | "WARNING" | "HIGH_RISK" | "BLOCKING_ERROR";
|
|
326
|
+
shared_terms?: string[] | undefined;
|
|
327
|
+
}[] | undefined;
|
|
328
|
+
budget_errors?: string[] | undefined;
|
|
329
|
+
}>;
|
|
330
|
+
type CollisionReport = z.infer<typeof CollisionReportSchema> & {
|
|
331
|
+
readonly blocking_collisions: CollisionPair[];
|
|
332
|
+
readonly high_risk_collisions: CollisionPair[];
|
|
333
|
+
readonly warning_collisions: CollisionPair[];
|
|
334
|
+
readonly passed: boolean;
|
|
335
|
+
};
|
|
336
|
+
declare function createCollisionReport(input: z.input<typeof CollisionReportSchema>): CollisionReport;
|
|
337
|
+
declare const TokenFileCategorySchema: z.ZodEnum<["always_on_instructions", "always_on_cursor_rule", "mcp_schema_tax", "skill_l1_metadata", "skill_l2_body", "skill_l3_script", "subagent_definition"]>;
|
|
338
|
+
type TokenFileCategory = z.infer<typeof TokenFileCategorySchema>;
|
|
339
|
+
declare const TokenFileEntrySchema: z.ZodObject<{
|
|
340
|
+
path: z.ZodString;
|
|
341
|
+
category: z.ZodEnum<["always_on_instructions", "always_on_cursor_rule", "mcp_schema_tax", "skill_l1_metadata", "skill_l2_body", "skill_l3_script", "subagent_definition"]>;
|
|
342
|
+
always_loaded_on_startup: z.ZodBoolean;
|
|
343
|
+
lines: z.ZodNumber;
|
|
344
|
+
estimated_tokens: z.ZodNumber;
|
|
345
|
+
notes: z.ZodDefault<z.ZodString>;
|
|
346
|
+
}, "strict", z.ZodTypeAny, {
|
|
347
|
+
path: string;
|
|
348
|
+
category: "always_on_instructions" | "always_on_cursor_rule" | "mcp_schema_tax" | "skill_l1_metadata" | "skill_l2_body" | "skill_l3_script" | "subagent_definition";
|
|
349
|
+
always_loaded_on_startup: boolean;
|
|
350
|
+
lines: number;
|
|
351
|
+
estimated_tokens: number;
|
|
352
|
+
notes: string;
|
|
353
|
+
}, {
|
|
354
|
+
path: string;
|
|
355
|
+
category: "always_on_instructions" | "always_on_cursor_rule" | "mcp_schema_tax" | "skill_l1_metadata" | "skill_l2_body" | "skill_l3_script" | "subagent_definition";
|
|
356
|
+
always_loaded_on_startup: boolean;
|
|
357
|
+
lines: number;
|
|
358
|
+
estimated_tokens: number;
|
|
359
|
+
notes?: string | undefined;
|
|
360
|
+
}>;
|
|
361
|
+
type TokenFileEntry = z.infer<typeof TokenFileEntrySchema>;
|
|
362
|
+
declare const TokenWasteHotspotSchema: z.ZodObject<{
|
|
363
|
+
path: z.ZodString;
|
|
364
|
+
severity: z.ZodEnum<["LOW", "MEDIUM", "HIGH", "CRITICAL"]>;
|
|
365
|
+
wasted_tokens: z.ZodNumber;
|
|
366
|
+
issue: z.ZodString;
|
|
367
|
+
recommendation: z.ZodString;
|
|
368
|
+
}, "strict", z.ZodTypeAny, {
|
|
369
|
+
path: string;
|
|
370
|
+
severity: "LOW" | "MEDIUM" | "HIGH" | "CRITICAL";
|
|
371
|
+
wasted_tokens: number;
|
|
372
|
+
issue: string;
|
|
373
|
+
recommendation: string;
|
|
374
|
+
}, {
|
|
375
|
+
path: string;
|
|
376
|
+
severity: "LOW" | "MEDIUM" | "HIGH" | "CRITICAL";
|
|
377
|
+
wasted_tokens: number;
|
|
378
|
+
issue: string;
|
|
379
|
+
recommendation: string;
|
|
380
|
+
}>;
|
|
381
|
+
type TokenWasteHotspot = z.infer<typeof TokenWasteHotspotSchema>;
|
|
382
|
+
declare const TokenEconomyReportSchema: z.ZodObject<{
|
|
383
|
+
repo_path: z.ZodString;
|
|
384
|
+
catalog_path: z.ZodString;
|
|
385
|
+
startup_token_tax: z.ZodNumber;
|
|
386
|
+
startup_tax_budget: z.ZodDefault<z.ZodNumber>;
|
|
387
|
+
monolithic_equivalent_tokens: z.ZodNumber;
|
|
388
|
+
progressive_disclosure_l1_tokens: z.ZodNumber;
|
|
389
|
+
zero_token_l3_scripts_count: z.ZodNumber;
|
|
390
|
+
context_isolated_subagents_count: z.ZodNumber;
|
|
391
|
+
estimated_tokens_saved: z.ZodNumber;
|
|
392
|
+
token_savings_pct: z.ZodNumber;
|
|
393
|
+
inspected_files: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
394
|
+
path: z.ZodString;
|
|
395
|
+
category: z.ZodEnum<["always_on_instructions", "always_on_cursor_rule", "mcp_schema_tax", "skill_l1_metadata", "skill_l2_body", "skill_l3_script", "subagent_definition"]>;
|
|
396
|
+
always_loaded_on_startup: z.ZodBoolean;
|
|
397
|
+
lines: z.ZodNumber;
|
|
398
|
+
estimated_tokens: z.ZodNumber;
|
|
399
|
+
notes: z.ZodDefault<z.ZodString>;
|
|
400
|
+
}, "strict", z.ZodTypeAny, {
|
|
401
|
+
path: string;
|
|
402
|
+
category: "always_on_instructions" | "always_on_cursor_rule" | "mcp_schema_tax" | "skill_l1_metadata" | "skill_l2_body" | "skill_l3_script" | "subagent_definition";
|
|
403
|
+
always_loaded_on_startup: boolean;
|
|
404
|
+
lines: number;
|
|
405
|
+
estimated_tokens: number;
|
|
406
|
+
notes: string;
|
|
407
|
+
}, {
|
|
408
|
+
path: string;
|
|
409
|
+
category: "always_on_instructions" | "always_on_cursor_rule" | "mcp_schema_tax" | "skill_l1_metadata" | "skill_l2_body" | "skill_l3_script" | "subagent_definition";
|
|
410
|
+
always_loaded_on_startup: boolean;
|
|
411
|
+
lines: number;
|
|
412
|
+
estimated_tokens: number;
|
|
413
|
+
notes?: string | undefined;
|
|
414
|
+
}>, "many">>;
|
|
415
|
+
hotspots: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
416
|
+
path: z.ZodString;
|
|
417
|
+
severity: z.ZodEnum<["LOW", "MEDIUM", "HIGH", "CRITICAL"]>;
|
|
418
|
+
wasted_tokens: z.ZodNumber;
|
|
419
|
+
issue: z.ZodString;
|
|
420
|
+
recommendation: z.ZodString;
|
|
421
|
+
}, "strict", z.ZodTypeAny, {
|
|
422
|
+
path: string;
|
|
423
|
+
severity: "LOW" | "MEDIUM" | "HIGH" | "CRITICAL";
|
|
424
|
+
wasted_tokens: number;
|
|
425
|
+
issue: string;
|
|
426
|
+
recommendation: string;
|
|
427
|
+
}, {
|
|
428
|
+
path: string;
|
|
429
|
+
severity: "LOW" | "MEDIUM" | "HIGH" | "CRITICAL";
|
|
430
|
+
wasted_tokens: number;
|
|
431
|
+
issue: string;
|
|
432
|
+
recommendation: string;
|
|
433
|
+
}>, "many">>;
|
|
434
|
+
passed_budget: z.ZodBoolean;
|
|
435
|
+
}, "strict", z.ZodTypeAny, {
|
|
436
|
+
catalog_path: string;
|
|
437
|
+
repo_path: string;
|
|
438
|
+
startup_token_tax: number;
|
|
439
|
+
startup_tax_budget: number;
|
|
440
|
+
monolithic_equivalent_tokens: number;
|
|
441
|
+
progressive_disclosure_l1_tokens: number;
|
|
442
|
+
zero_token_l3_scripts_count: number;
|
|
443
|
+
context_isolated_subagents_count: number;
|
|
444
|
+
estimated_tokens_saved: number;
|
|
445
|
+
token_savings_pct: number;
|
|
446
|
+
inspected_files: {
|
|
447
|
+
path: string;
|
|
448
|
+
category: "always_on_instructions" | "always_on_cursor_rule" | "mcp_schema_tax" | "skill_l1_metadata" | "skill_l2_body" | "skill_l3_script" | "subagent_definition";
|
|
449
|
+
always_loaded_on_startup: boolean;
|
|
450
|
+
lines: number;
|
|
451
|
+
estimated_tokens: number;
|
|
452
|
+
notes: string;
|
|
453
|
+
}[];
|
|
454
|
+
hotspots: {
|
|
455
|
+
path: string;
|
|
456
|
+
severity: "LOW" | "MEDIUM" | "HIGH" | "CRITICAL";
|
|
457
|
+
wasted_tokens: number;
|
|
458
|
+
issue: string;
|
|
459
|
+
recommendation: string;
|
|
460
|
+
}[];
|
|
461
|
+
passed_budget: boolean;
|
|
462
|
+
}, {
|
|
463
|
+
catalog_path: string;
|
|
464
|
+
repo_path: string;
|
|
465
|
+
startup_token_tax: number;
|
|
466
|
+
monolithic_equivalent_tokens: number;
|
|
467
|
+
progressive_disclosure_l1_tokens: number;
|
|
468
|
+
zero_token_l3_scripts_count: number;
|
|
469
|
+
context_isolated_subagents_count: number;
|
|
470
|
+
estimated_tokens_saved: number;
|
|
471
|
+
token_savings_pct: number;
|
|
472
|
+
passed_budget: boolean;
|
|
473
|
+
startup_tax_budget?: number | undefined;
|
|
474
|
+
inspected_files?: {
|
|
475
|
+
path: string;
|
|
476
|
+
category: "always_on_instructions" | "always_on_cursor_rule" | "mcp_schema_tax" | "skill_l1_metadata" | "skill_l2_body" | "skill_l3_script" | "subagent_definition";
|
|
477
|
+
always_loaded_on_startup: boolean;
|
|
478
|
+
lines: number;
|
|
479
|
+
estimated_tokens: number;
|
|
480
|
+
notes?: string | undefined;
|
|
481
|
+
}[] | undefined;
|
|
482
|
+
hotspots?: {
|
|
483
|
+
path: string;
|
|
484
|
+
severity: "LOW" | "MEDIUM" | "HIGH" | "CRITICAL";
|
|
485
|
+
wasted_tokens: number;
|
|
486
|
+
issue: string;
|
|
487
|
+
recommendation: string;
|
|
488
|
+
}[] | undefined;
|
|
489
|
+
}>;
|
|
490
|
+
type TokenEconomyReport = z.infer<typeof TokenEconomyReportSchema>;
|
|
491
|
+
declare const RepoProfileSchema: z.ZodObject<{
|
|
492
|
+
repo_path: z.ZodString;
|
|
493
|
+
languages: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
494
|
+
frameworks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
495
|
+
databases: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
496
|
+
dependencies: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
497
|
+
ci_systems: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
498
|
+
detected_files: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
499
|
+
signals: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
500
|
+
detected_harnesses: z.ZodDefault<z.ZodArray<z.ZodEnum<["claude", "antigravity", "cursor", "codex", "copilot", "windsurf", "cline", "roocode", "kilocode", "zed", "continue", "aider", "openhands", "amp", "goose", "opencode", "kiro", "trae", "amazonq", "junie"]>, "many">>;
|
|
501
|
+
python_312_plus: z.ZodDefault<z.ZodBoolean>;
|
|
502
|
+
}, "strict", z.ZodTypeAny, {
|
|
503
|
+
languages: string[];
|
|
504
|
+
repo_path: string;
|
|
505
|
+
frameworks: string[];
|
|
506
|
+
databases: string[];
|
|
507
|
+
dependencies: string[];
|
|
508
|
+
ci_systems: string[];
|
|
509
|
+
detected_files: string[];
|
|
510
|
+
signals: string[];
|
|
511
|
+
detected_harnesses: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[];
|
|
512
|
+
python_312_plus: boolean;
|
|
513
|
+
}, {
|
|
514
|
+
repo_path: string;
|
|
515
|
+
languages?: string[] | undefined;
|
|
516
|
+
frameworks?: string[] | undefined;
|
|
517
|
+
databases?: string[] | undefined;
|
|
518
|
+
dependencies?: string[] | undefined;
|
|
519
|
+
ci_systems?: string[] | undefined;
|
|
520
|
+
detected_files?: string[] | undefined;
|
|
521
|
+
signals?: string[] | undefined;
|
|
522
|
+
detected_harnesses?: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[] | undefined;
|
|
523
|
+
python_312_plus?: boolean | undefined;
|
|
524
|
+
}>;
|
|
525
|
+
type RepoProfile = z.infer<typeof RepoProfileSchema>;
|
|
526
|
+
declare const ScoredSkillSchema: z.ZodObject<{
|
|
527
|
+
name: z.ZodString;
|
|
528
|
+
track: z.ZodEnum<["ai-engineering", "python-backend", "arch-quality", "token-economy"]>;
|
|
529
|
+
skill_dir: z.ZodString;
|
|
530
|
+
relevance_score: z.ZodNumber;
|
|
531
|
+
l1_tokens: z.ZodNumber;
|
|
532
|
+
matched_signals: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
533
|
+
}, "strict", z.ZodTypeAny, {
|
|
534
|
+
name: string;
|
|
535
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
536
|
+
skill_dir: string;
|
|
537
|
+
relevance_score: number;
|
|
538
|
+
l1_tokens: number;
|
|
539
|
+
matched_signals: string[];
|
|
540
|
+
}, {
|
|
541
|
+
name: string;
|
|
542
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
543
|
+
skill_dir: string;
|
|
544
|
+
relevance_score: number;
|
|
545
|
+
l1_tokens: number;
|
|
546
|
+
matched_signals?: string[] | undefined;
|
|
547
|
+
}>;
|
|
548
|
+
type ScoredSkill = z.infer<typeof ScoredSkillSchema>;
|
|
549
|
+
declare const SkippedSkillSchema: z.ZodObject<{
|
|
550
|
+
name: z.ZodString;
|
|
551
|
+
track: z.ZodEnum<["ai-engineering", "python-backend", "arch-quality", "token-economy"]>;
|
|
552
|
+
relevance_score: z.ZodNumber;
|
|
553
|
+
reason: z.ZodString;
|
|
554
|
+
}, "strict", z.ZodTypeAny, {
|
|
555
|
+
name: string;
|
|
556
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
557
|
+
relevance_score: number;
|
|
558
|
+
reason: string;
|
|
559
|
+
}, {
|
|
560
|
+
name: string;
|
|
561
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
562
|
+
relevance_score: number;
|
|
563
|
+
reason: string;
|
|
564
|
+
}>;
|
|
565
|
+
type SkippedSkill = z.infer<typeof SkippedSkillSchema>;
|
|
566
|
+
declare const RoutedBundleSchema: z.ZodObject<{
|
|
567
|
+
repo_profile: z.ZodObject<{
|
|
568
|
+
repo_path: z.ZodString;
|
|
569
|
+
languages: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
570
|
+
frameworks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
571
|
+
databases: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
572
|
+
dependencies: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
573
|
+
ci_systems: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
574
|
+
detected_files: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
575
|
+
signals: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
576
|
+
detected_harnesses: z.ZodDefault<z.ZodArray<z.ZodEnum<["claude", "antigravity", "cursor", "codex", "copilot", "windsurf", "cline", "roocode", "kilocode", "zed", "continue", "aider", "openhands", "amp", "goose", "opencode", "kiro", "trae", "amazonq", "junie"]>, "many">>;
|
|
577
|
+
python_312_plus: z.ZodDefault<z.ZodBoolean>;
|
|
578
|
+
}, "strict", z.ZodTypeAny, {
|
|
579
|
+
languages: string[];
|
|
580
|
+
repo_path: string;
|
|
581
|
+
frameworks: string[];
|
|
582
|
+
databases: string[];
|
|
583
|
+
dependencies: string[];
|
|
584
|
+
ci_systems: string[];
|
|
585
|
+
detected_files: string[];
|
|
586
|
+
signals: string[];
|
|
587
|
+
detected_harnesses: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[];
|
|
588
|
+
python_312_plus: boolean;
|
|
589
|
+
}, {
|
|
590
|
+
repo_path: string;
|
|
591
|
+
languages?: string[] | undefined;
|
|
592
|
+
frameworks?: string[] | undefined;
|
|
593
|
+
databases?: string[] | undefined;
|
|
594
|
+
dependencies?: string[] | undefined;
|
|
595
|
+
ci_systems?: string[] | undefined;
|
|
596
|
+
detected_files?: string[] | undefined;
|
|
597
|
+
signals?: string[] | undefined;
|
|
598
|
+
detected_harnesses?: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[] | undefined;
|
|
599
|
+
python_312_plus?: boolean | undefined;
|
|
600
|
+
}>;
|
|
601
|
+
catalog_path: z.ZodString;
|
|
602
|
+
max_skills: z.ZodDefault<z.ZodNumber>;
|
|
603
|
+
max_l1_tokens: z.ZodDefault<z.ZodNumber>;
|
|
604
|
+
max_similarity: z.ZodDefault<z.ZodNumber>;
|
|
605
|
+
selected_skills: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
606
|
+
name: z.ZodString;
|
|
607
|
+
track: z.ZodEnum<["ai-engineering", "python-backend", "arch-quality", "token-economy"]>;
|
|
608
|
+
skill_dir: z.ZodString;
|
|
609
|
+
relevance_score: z.ZodNumber;
|
|
610
|
+
l1_tokens: z.ZodNumber;
|
|
611
|
+
matched_signals: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
612
|
+
}, "strict", z.ZodTypeAny, {
|
|
613
|
+
name: string;
|
|
614
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
615
|
+
skill_dir: string;
|
|
616
|
+
relevance_score: number;
|
|
617
|
+
l1_tokens: number;
|
|
618
|
+
matched_signals: string[];
|
|
619
|
+
}, {
|
|
620
|
+
name: string;
|
|
621
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
622
|
+
skill_dir: string;
|
|
623
|
+
relevance_score: number;
|
|
624
|
+
l1_tokens: number;
|
|
625
|
+
matched_signals?: string[] | undefined;
|
|
626
|
+
}>, "many">>;
|
|
627
|
+
recommended_subagents: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
628
|
+
skipped_skills: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
629
|
+
name: z.ZodString;
|
|
630
|
+
track: z.ZodEnum<["ai-engineering", "python-backend", "arch-quality", "token-economy"]>;
|
|
631
|
+
relevance_score: z.ZodNumber;
|
|
632
|
+
reason: z.ZodString;
|
|
633
|
+
}, "strict", z.ZodTypeAny, {
|
|
634
|
+
name: string;
|
|
635
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
636
|
+
relevance_score: number;
|
|
637
|
+
reason: string;
|
|
638
|
+
}, {
|
|
639
|
+
name: string;
|
|
640
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
641
|
+
relevance_score: number;
|
|
642
|
+
reason: string;
|
|
643
|
+
}>, "many">>;
|
|
644
|
+
total_l1_tokens: z.ZodDefault<z.ZodNumber>;
|
|
645
|
+
max_pairwise_similarity: z.ZodDefault<z.ZodNumber>;
|
|
646
|
+
passed_invariants: z.ZodDefault<z.ZodBoolean>;
|
|
647
|
+
}, "strict", z.ZodTypeAny, {
|
|
648
|
+
catalog_path: string;
|
|
649
|
+
total_l1_tokens: number;
|
|
650
|
+
max_similarity: number;
|
|
651
|
+
repo_profile: {
|
|
652
|
+
languages: string[];
|
|
653
|
+
repo_path: string;
|
|
654
|
+
frameworks: string[];
|
|
655
|
+
databases: string[];
|
|
656
|
+
dependencies: string[];
|
|
657
|
+
ci_systems: string[];
|
|
658
|
+
detected_files: string[];
|
|
659
|
+
signals: string[];
|
|
660
|
+
detected_harnesses: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[];
|
|
661
|
+
python_312_plus: boolean;
|
|
662
|
+
};
|
|
663
|
+
max_skills: number;
|
|
664
|
+
max_l1_tokens: number;
|
|
665
|
+
selected_skills: {
|
|
666
|
+
name: string;
|
|
667
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
668
|
+
skill_dir: string;
|
|
669
|
+
relevance_score: number;
|
|
670
|
+
l1_tokens: number;
|
|
671
|
+
matched_signals: string[];
|
|
672
|
+
}[];
|
|
673
|
+
recommended_subagents: string[];
|
|
674
|
+
skipped_skills: {
|
|
675
|
+
name: string;
|
|
676
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
677
|
+
relevance_score: number;
|
|
678
|
+
reason: string;
|
|
679
|
+
}[];
|
|
680
|
+
max_pairwise_similarity: number;
|
|
681
|
+
passed_invariants: boolean;
|
|
682
|
+
}, {
|
|
683
|
+
catalog_path: string;
|
|
684
|
+
repo_profile: {
|
|
685
|
+
repo_path: string;
|
|
686
|
+
languages?: string[] | undefined;
|
|
687
|
+
frameworks?: string[] | undefined;
|
|
688
|
+
databases?: string[] | undefined;
|
|
689
|
+
dependencies?: string[] | undefined;
|
|
690
|
+
ci_systems?: string[] | undefined;
|
|
691
|
+
detected_files?: string[] | undefined;
|
|
692
|
+
signals?: string[] | undefined;
|
|
693
|
+
detected_harnesses?: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[] | undefined;
|
|
694
|
+
python_312_plus?: boolean | undefined;
|
|
695
|
+
};
|
|
696
|
+
total_l1_tokens?: number | undefined;
|
|
697
|
+
max_similarity?: number | undefined;
|
|
698
|
+
max_skills?: number | undefined;
|
|
699
|
+
max_l1_tokens?: number | undefined;
|
|
700
|
+
selected_skills?: {
|
|
701
|
+
name: string;
|
|
702
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
703
|
+
skill_dir: string;
|
|
704
|
+
relevance_score: number;
|
|
705
|
+
l1_tokens: number;
|
|
706
|
+
matched_signals?: string[] | undefined;
|
|
707
|
+
}[] | undefined;
|
|
708
|
+
recommended_subagents?: string[] | undefined;
|
|
709
|
+
skipped_skills?: {
|
|
710
|
+
name: string;
|
|
711
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
712
|
+
relevance_score: number;
|
|
713
|
+
reason: string;
|
|
714
|
+
}[] | undefined;
|
|
715
|
+
max_pairwise_similarity?: number | undefined;
|
|
716
|
+
passed_invariants?: boolean | undefined;
|
|
717
|
+
}>;
|
|
718
|
+
type RoutedBundle = z.infer<typeof RoutedBundleSchema>;
|
|
719
|
+
declare const SyncedArtifactSchema: z.ZodObject<{
|
|
720
|
+
target: z.ZodEnum<["claude", "antigravity", "cursor", "codex", "copilot", "windsurf", "cline", "roocode", "kilocode", "zed", "continue", "aider", "openhands", "amp", "goose", "opencode", "kiro", "trae", "amazonq", "junie"]>;
|
|
721
|
+
skill_name: z.ZodString;
|
|
722
|
+
relative_path: z.ZodString;
|
|
723
|
+
sha256: z.ZodString;
|
|
724
|
+
action: z.ZodEnum<["created", "updated", "unchanged", "removed", "planned", "conflict"]>;
|
|
725
|
+
}, "strict", z.ZodTypeAny, {
|
|
726
|
+
target: "claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie";
|
|
727
|
+
skill_name: string;
|
|
728
|
+
relative_path: string;
|
|
729
|
+
sha256: string;
|
|
730
|
+
action: "created" | "updated" | "unchanged" | "removed" | "planned" | "conflict";
|
|
731
|
+
}, {
|
|
732
|
+
target: "claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie";
|
|
733
|
+
skill_name: string;
|
|
734
|
+
relative_path: string;
|
|
735
|
+
sha256: string;
|
|
736
|
+
action: "created" | "updated" | "unchanged" | "removed" | "planned" | "conflict";
|
|
737
|
+
}>;
|
|
738
|
+
type SyncedArtifact = z.infer<typeof SyncedArtifactSchema>;
|
|
739
|
+
declare const SyncLockEntrySchema: z.ZodObject<{
|
|
740
|
+
target: z.ZodEnum<["claude", "antigravity", "cursor", "codex", "copilot", "windsurf", "cline", "roocode", "kilocode", "zed", "continue", "aider", "openhands", "amp", "goose", "opencode", "kiro", "trae", "amazonq", "junie"]>;
|
|
741
|
+
skill_name: z.ZodString;
|
|
742
|
+
relative_path: z.ZodString;
|
|
743
|
+
sha256: z.ZodString;
|
|
744
|
+
}, "strict", z.ZodTypeAny, {
|
|
745
|
+
target: "claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie";
|
|
746
|
+
skill_name: string;
|
|
747
|
+
relative_path: string;
|
|
748
|
+
sha256: string;
|
|
749
|
+
}, {
|
|
750
|
+
target: "claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie";
|
|
751
|
+
skill_name: string;
|
|
752
|
+
relative_path: string;
|
|
753
|
+
sha256: string;
|
|
754
|
+
}>;
|
|
755
|
+
type SyncLockEntry = z.infer<typeof SyncLockEntrySchema>;
|
|
756
|
+
declare const SyncLockfileSchema: z.ZodObject<{
|
|
757
|
+
schema_version: z.ZodDefault<z.ZodString>;
|
|
758
|
+
skillops_version: z.ZodString;
|
|
759
|
+
targets: z.ZodDefault<z.ZodArray<z.ZodEnum<["claude", "antigravity", "cursor", "codex", "copilot", "windsurf", "cline", "roocode", "kilocode", "zed", "continue", "aider", "openhands", "amp", "goose", "opencode", "kiro", "trae", "amazonq", "junie"]>, "many">>;
|
|
760
|
+
selected_skills: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
761
|
+
selected_subagents: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
762
|
+
total_l1_tokens: z.ZodDefault<z.ZodNumber>;
|
|
763
|
+
artifacts: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
764
|
+
target: z.ZodEnum<["claude", "antigravity", "cursor", "codex", "copilot", "windsurf", "cline", "roocode", "kilocode", "zed", "continue", "aider", "openhands", "amp", "goose", "opencode", "kiro", "trae", "amazonq", "junie"]>;
|
|
765
|
+
skill_name: z.ZodString;
|
|
766
|
+
relative_path: z.ZodString;
|
|
767
|
+
sha256: z.ZodString;
|
|
768
|
+
}, "strict", z.ZodTypeAny, {
|
|
769
|
+
target: "claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie";
|
|
770
|
+
skill_name: string;
|
|
771
|
+
relative_path: string;
|
|
772
|
+
sha256: string;
|
|
773
|
+
}, {
|
|
774
|
+
target: "claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie";
|
|
775
|
+
skill_name: string;
|
|
776
|
+
relative_path: string;
|
|
777
|
+
sha256: string;
|
|
778
|
+
}>>>;
|
|
779
|
+
}, "strict", z.ZodTypeAny, {
|
|
780
|
+
total_l1_tokens: number;
|
|
781
|
+
selected_skills: string[];
|
|
782
|
+
schema_version: string;
|
|
783
|
+
skillops_version: string;
|
|
784
|
+
targets: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[];
|
|
785
|
+
selected_subagents: string[];
|
|
786
|
+
artifacts: Record<string, {
|
|
787
|
+
target: "claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie";
|
|
788
|
+
skill_name: string;
|
|
789
|
+
relative_path: string;
|
|
790
|
+
sha256: string;
|
|
791
|
+
}>;
|
|
792
|
+
}, {
|
|
793
|
+
skillops_version: string;
|
|
794
|
+
total_l1_tokens?: number | undefined;
|
|
795
|
+
selected_skills?: string[] | undefined;
|
|
796
|
+
schema_version?: string | undefined;
|
|
797
|
+
targets?: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[] | undefined;
|
|
798
|
+
selected_subagents?: string[] | undefined;
|
|
799
|
+
artifacts?: Record<string, {
|
|
800
|
+
target: "claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie";
|
|
801
|
+
skill_name: string;
|
|
802
|
+
relative_path: string;
|
|
803
|
+
sha256: string;
|
|
804
|
+
}> | undefined;
|
|
805
|
+
}>;
|
|
806
|
+
type SyncLockfile = z.infer<typeof SyncLockfileSchema>;
|
|
807
|
+
declare const SyncReportSchema: z.ZodObject<{
|
|
808
|
+
repo_path: z.ZodString;
|
|
809
|
+
catalog_path: z.ZodString;
|
|
810
|
+
targets: z.ZodDefault<z.ZodArray<z.ZodEnum<["claude", "antigravity", "cursor", "codex", "copilot", "windsurf", "cline", "roocode", "kilocode", "zed", "continue", "aider", "openhands", "amp", "goose", "opencode", "kiro", "trae", "amazonq", "junie"]>, "many">>;
|
|
811
|
+
dry_run: z.ZodDefault<z.ZodBoolean>;
|
|
812
|
+
force: z.ZodDefault<z.ZodBoolean>;
|
|
813
|
+
routed_bundle: z.ZodObject<{
|
|
814
|
+
repo_profile: z.ZodObject<{
|
|
815
|
+
repo_path: z.ZodString;
|
|
816
|
+
languages: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
817
|
+
frameworks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
818
|
+
databases: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
819
|
+
dependencies: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
820
|
+
ci_systems: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
821
|
+
detected_files: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
822
|
+
signals: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
823
|
+
detected_harnesses: z.ZodDefault<z.ZodArray<z.ZodEnum<["claude", "antigravity", "cursor", "codex", "copilot", "windsurf", "cline", "roocode", "kilocode", "zed", "continue", "aider", "openhands", "amp", "goose", "opencode", "kiro", "trae", "amazonq", "junie"]>, "many">>;
|
|
824
|
+
python_312_plus: z.ZodDefault<z.ZodBoolean>;
|
|
825
|
+
}, "strict", z.ZodTypeAny, {
|
|
826
|
+
languages: string[];
|
|
827
|
+
repo_path: string;
|
|
828
|
+
frameworks: string[];
|
|
829
|
+
databases: string[];
|
|
830
|
+
dependencies: string[];
|
|
831
|
+
ci_systems: string[];
|
|
832
|
+
detected_files: string[];
|
|
833
|
+
signals: string[];
|
|
834
|
+
detected_harnesses: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[];
|
|
835
|
+
python_312_plus: boolean;
|
|
836
|
+
}, {
|
|
837
|
+
repo_path: string;
|
|
838
|
+
languages?: string[] | undefined;
|
|
839
|
+
frameworks?: string[] | undefined;
|
|
840
|
+
databases?: string[] | undefined;
|
|
841
|
+
dependencies?: string[] | undefined;
|
|
842
|
+
ci_systems?: string[] | undefined;
|
|
843
|
+
detected_files?: string[] | undefined;
|
|
844
|
+
signals?: string[] | undefined;
|
|
845
|
+
detected_harnesses?: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[] | undefined;
|
|
846
|
+
python_312_plus?: boolean | undefined;
|
|
847
|
+
}>;
|
|
848
|
+
catalog_path: z.ZodString;
|
|
849
|
+
max_skills: z.ZodDefault<z.ZodNumber>;
|
|
850
|
+
max_l1_tokens: z.ZodDefault<z.ZodNumber>;
|
|
851
|
+
max_similarity: z.ZodDefault<z.ZodNumber>;
|
|
852
|
+
selected_skills: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
853
|
+
name: z.ZodString;
|
|
854
|
+
track: z.ZodEnum<["ai-engineering", "python-backend", "arch-quality", "token-economy"]>;
|
|
855
|
+
skill_dir: z.ZodString;
|
|
856
|
+
relevance_score: z.ZodNumber;
|
|
857
|
+
l1_tokens: z.ZodNumber;
|
|
858
|
+
matched_signals: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
859
|
+
}, "strict", z.ZodTypeAny, {
|
|
860
|
+
name: string;
|
|
861
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
862
|
+
skill_dir: string;
|
|
863
|
+
relevance_score: number;
|
|
864
|
+
l1_tokens: number;
|
|
865
|
+
matched_signals: string[];
|
|
866
|
+
}, {
|
|
867
|
+
name: string;
|
|
868
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
869
|
+
skill_dir: string;
|
|
870
|
+
relevance_score: number;
|
|
871
|
+
l1_tokens: number;
|
|
872
|
+
matched_signals?: string[] | undefined;
|
|
873
|
+
}>, "many">>;
|
|
874
|
+
recommended_subagents: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
875
|
+
skipped_skills: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
876
|
+
name: z.ZodString;
|
|
877
|
+
track: z.ZodEnum<["ai-engineering", "python-backend", "arch-quality", "token-economy"]>;
|
|
878
|
+
relevance_score: z.ZodNumber;
|
|
879
|
+
reason: z.ZodString;
|
|
880
|
+
}, "strict", z.ZodTypeAny, {
|
|
881
|
+
name: string;
|
|
882
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
883
|
+
relevance_score: number;
|
|
884
|
+
reason: string;
|
|
885
|
+
}, {
|
|
886
|
+
name: string;
|
|
887
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
888
|
+
relevance_score: number;
|
|
889
|
+
reason: string;
|
|
890
|
+
}>, "many">>;
|
|
891
|
+
total_l1_tokens: z.ZodDefault<z.ZodNumber>;
|
|
892
|
+
max_pairwise_similarity: z.ZodDefault<z.ZodNumber>;
|
|
893
|
+
passed_invariants: z.ZodDefault<z.ZodBoolean>;
|
|
894
|
+
}, "strict", z.ZodTypeAny, {
|
|
895
|
+
catalog_path: string;
|
|
896
|
+
total_l1_tokens: number;
|
|
897
|
+
max_similarity: number;
|
|
898
|
+
repo_profile: {
|
|
899
|
+
languages: string[];
|
|
900
|
+
repo_path: string;
|
|
901
|
+
frameworks: string[];
|
|
902
|
+
databases: string[];
|
|
903
|
+
dependencies: string[];
|
|
904
|
+
ci_systems: string[];
|
|
905
|
+
detected_files: string[];
|
|
906
|
+
signals: string[];
|
|
907
|
+
detected_harnesses: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[];
|
|
908
|
+
python_312_plus: boolean;
|
|
909
|
+
};
|
|
910
|
+
max_skills: number;
|
|
911
|
+
max_l1_tokens: number;
|
|
912
|
+
selected_skills: {
|
|
913
|
+
name: string;
|
|
914
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
915
|
+
skill_dir: string;
|
|
916
|
+
relevance_score: number;
|
|
917
|
+
l1_tokens: number;
|
|
918
|
+
matched_signals: string[];
|
|
919
|
+
}[];
|
|
920
|
+
recommended_subagents: string[];
|
|
921
|
+
skipped_skills: {
|
|
922
|
+
name: string;
|
|
923
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
924
|
+
relevance_score: number;
|
|
925
|
+
reason: string;
|
|
926
|
+
}[];
|
|
927
|
+
max_pairwise_similarity: number;
|
|
928
|
+
passed_invariants: boolean;
|
|
929
|
+
}, {
|
|
930
|
+
catalog_path: string;
|
|
931
|
+
repo_profile: {
|
|
932
|
+
repo_path: string;
|
|
933
|
+
languages?: string[] | undefined;
|
|
934
|
+
frameworks?: string[] | undefined;
|
|
935
|
+
databases?: string[] | undefined;
|
|
936
|
+
dependencies?: string[] | undefined;
|
|
937
|
+
ci_systems?: string[] | undefined;
|
|
938
|
+
detected_files?: string[] | undefined;
|
|
939
|
+
signals?: string[] | undefined;
|
|
940
|
+
detected_harnesses?: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[] | undefined;
|
|
941
|
+
python_312_plus?: boolean | undefined;
|
|
942
|
+
};
|
|
943
|
+
total_l1_tokens?: number | undefined;
|
|
944
|
+
max_similarity?: number | undefined;
|
|
945
|
+
max_skills?: number | undefined;
|
|
946
|
+
max_l1_tokens?: number | undefined;
|
|
947
|
+
selected_skills?: {
|
|
948
|
+
name: string;
|
|
949
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
950
|
+
skill_dir: string;
|
|
951
|
+
relevance_score: number;
|
|
952
|
+
l1_tokens: number;
|
|
953
|
+
matched_signals?: string[] | undefined;
|
|
954
|
+
}[] | undefined;
|
|
955
|
+
recommended_subagents?: string[] | undefined;
|
|
956
|
+
skipped_skills?: {
|
|
957
|
+
name: string;
|
|
958
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
959
|
+
relevance_score: number;
|
|
960
|
+
reason: string;
|
|
961
|
+
}[] | undefined;
|
|
962
|
+
max_pairwise_similarity?: number | undefined;
|
|
963
|
+
passed_invariants?: boolean | undefined;
|
|
964
|
+
}>;
|
|
965
|
+
artifacts: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
966
|
+
target: z.ZodEnum<["claude", "antigravity", "cursor", "codex", "copilot", "windsurf", "cline", "roocode", "kilocode", "zed", "continue", "aider", "openhands", "amp", "goose", "opencode", "kiro", "trae", "amazonq", "junie"]>;
|
|
967
|
+
skill_name: z.ZodString;
|
|
968
|
+
relative_path: z.ZodString;
|
|
969
|
+
sha256: z.ZodString;
|
|
970
|
+
action: z.ZodEnum<["created", "updated", "unchanged", "removed", "planned", "conflict"]>;
|
|
971
|
+
}, "strict", z.ZodTypeAny, {
|
|
972
|
+
target: "claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie";
|
|
973
|
+
skill_name: string;
|
|
974
|
+
relative_path: string;
|
|
975
|
+
sha256: string;
|
|
976
|
+
action: "created" | "updated" | "unchanged" | "removed" | "planned" | "conflict";
|
|
977
|
+
}, {
|
|
978
|
+
target: "claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie";
|
|
979
|
+
skill_name: string;
|
|
980
|
+
relative_path: string;
|
|
981
|
+
sha256: string;
|
|
982
|
+
action: "created" | "updated" | "unchanged" | "removed" | "planned" | "conflict";
|
|
983
|
+
}>, "many">>;
|
|
984
|
+
drift_conflicts: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
985
|
+
lockfile_path: z.ZodString;
|
|
986
|
+
passed: z.ZodDefault<z.ZodBoolean>;
|
|
987
|
+
}, "strict", z.ZodTypeAny, {
|
|
988
|
+
catalog_path: string;
|
|
989
|
+
passed: boolean;
|
|
990
|
+
repo_path: string;
|
|
991
|
+
targets: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[];
|
|
992
|
+
artifacts: {
|
|
993
|
+
target: "claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie";
|
|
994
|
+
skill_name: string;
|
|
995
|
+
relative_path: string;
|
|
996
|
+
sha256: string;
|
|
997
|
+
action: "created" | "updated" | "unchanged" | "removed" | "planned" | "conflict";
|
|
998
|
+
}[];
|
|
999
|
+
dry_run: boolean;
|
|
1000
|
+
force: boolean;
|
|
1001
|
+
routed_bundle: {
|
|
1002
|
+
catalog_path: string;
|
|
1003
|
+
total_l1_tokens: number;
|
|
1004
|
+
max_similarity: number;
|
|
1005
|
+
repo_profile: {
|
|
1006
|
+
languages: string[];
|
|
1007
|
+
repo_path: string;
|
|
1008
|
+
frameworks: string[];
|
|
1009
|
+
databases: string[];
|
|
1010
|
+
dependencies: string[];
|
|
1011
|
+
ci_systems: string[];
|
|
1012
|
+
detected_files: string[];
|
|
1013
|
+
signals: string[];
|
|
1014
|
+
detected_harnesses: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[];
|
|
1015
|
+
python_312_plus: boolean;
|
|
1016
|
+
};
|
|
1017
|
+
max_skills: number;
|
|
1018
|
+
max_l1_tokens: number;
|
|
1019
|
+
selected_skills: {
|
|
1020
|
+
name: string;
|
|
1021
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
1022
|
+
skill_dir: string;
|
|
1023
|
+
relevance_score: number;
|
|
1024
|
+
l1_tokens: number;
|
|
1025
|
+
matched_signals: string[];
|
|
1026
|
+
}[];
|
|
1027
|
+
recommended_subagents: string[];
|
|
1028
|
+
skipped_skills: {
|
|
1029
|
+
name: string;
|
|
1030
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
1031
|
+
relevance_score: number;
|
|
1032
|
+
reason: string;
|
|
1033
|
+
}[];
|
|
1034
|
+
max_pairwise_similarity: number;
|
|
1035
|
+
passed_invariants: boolean;
|
|
1036
|
+
};
|
|
1037
|
+
drift_conflicts: string[];
|
|
1038
|
+
lockfile_path: string;
|
|
1039
|
+
}, {
|
|
1040
|
+
catalog_path: string;
|
|
1041
|
+
repo_path: string;
|
|
1042
|
+
routed_bundle: {
|
|
1043
|
+
catalog_path: string;
|
|
1044
|
+
repo_profile: {
|
|
1045
|
+
repo_path: string;
|
|
1046
|
+
languages?: string[] | undefined;
|
|
1047
|
+
frameworks?: string[] | undefined;
|
|
1048
|
+
databases?: string[] | undefined;
|
|
1049
|
+
dependencies?: string[] | undefined;
|
|
1050
|
+
ci_systems?: string[] | undefined;
|
|
1051
|
+
detected_files?: string[] | undefined;
|
|
1052
|
+
signals?: string[] | undefined;
|
|
1053
|
+
detected_harnesses?: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[] | undefined;
|
|
1054
|
+
python_312_plus?: boolean | undefined;
|
|
1055
|
+
};
|
|
1056
|
+
total_l1_tokens?: number | undefined;
|
|
1057
|
+
max_similarity?: number | undefined;
|
|
1058
|
+
max_skills?: number | undefined;
|
|
1059
|
+
max_l1_tokens?: number | undefined;
|
|
1060
|
+
selected_skills?: {
|
|
1061
|
+
name: string;
|
|
1062
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
1063
|
+
skill_dir: string;
|
|
1064
|
+
relevance_score: number;
|
|
1065
|
+
l1_tokens: number;
|
|
1066
|
+
matched_signals?: string[] | undefined;
|
|
1067
|
+
}[] | undefined;
|
|
1068
|
+
recommended_subagents?: string[] | undefined;
|
|
1069
|
+
skipped_skills?: {
|
|
1070
|
+
name: string;
|
|
1071
|
+
track: "ai-engineering" | "python-backend" | "arch-quality" | "token-economy";
|
|
1072
|
+
relevance_score: number;
|
|
1073
|
+
reason: string;
|
|
1074
|
+
}[] | undefined;
|
|
1075
|
+
max_pairwise_similarity?: number | undefined;
|
|
1076
|
+
passed_invariants?: boolean | undefined;
|
|
1077
|
+
};
|
|
1078
|
+
lockfile_path: string;
|
|
1079
|
+
passed?: boolean | undefined;
|
|
1080
|
+
targets?: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[] | undefined;
|
|
1081
|
+
artifacts?: {
|
|
1082
|
+
target: "claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie";
|
|
1083
|
+
skill_name: string;
|
|
1084
|
+
relative_path: string;
|
|
1085
|
+
sha256: string;
|
|
1086
|
+
action: "created" | "updated" | "unchanged" | "removed" | "planned" | "conflict";
|
|
1087
|
+
}[] | undefined;
|
|
1088
|
+
dry_run?: boolean | undefined;
|
|
1089
|
+
force?: boolean | undefined;
|
|
1090
|
+
drift_conflicts?: string[] | undefined;
|
|
1091
|
+
}>;
|
|
1092
|
+
type SyncReport = z.infer<typeof SyncReportSchema>;
|
|
1093
|
+
declare const SkillOpsTokenEconomyConfigSchema: z.ZodObject<{
|
|
1094
|
+
startup_tax_budget: z.ZodDefault<z.ZodNumber>;
|
|
1095
|
+
max_active_skills: z.ZodDefault<z.ZodNumber>;
|
|
1096
|
+
max_l1_tokens: z.ZodDefault<z.ZodNumber>;
|
|
1097
|
+
max_similarity: z.ZodDefault<z.ZodNumber>;
|
|
1098
|
+
}, "strict", z.ZodTypeAny, {
|
|
1099
|
+
max_similarity: number;
|
|
1100
|
+
startup_tax_budget: number;
|
|
1101
|
+
max_l1_tokens: number;
|
|
1102
|
+
max_active_skills: number;
|
|
1103
|
+
}, {
|
|
1104
|
+
max_similarity?: number | undefined;
|
|
1105
|
+
startup_tax_budget?: number | undefined;
|
|
1106
|
+
max_l1_tokens?: number | undefined;
|
|
1107
|
+
max_active_skills?: number | undefined;
|
|
1108
|
+
}>;
|
|
1109
|
+
type SkillOpsTokenEconomyConfig = z.infer<typeof SkillOpsTokenEconomyConfigSchema>;
|
|
1110
|
+
declare const SkillOpsDetectedStackConfigSchema: z.ZodObject<{
|
|
1111
|
+
languages: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
1112
|
+
frameworks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
1113
|
+
}, "strict", z.ZodTypeAny, {
|
|
1114
|
+
languages: string[];
|
|
1115
|
+
frameworks: string[];
|
|
1116
|
+
}, {
|
|
1117
|
+
languages?: string[] | undefined;
|
|
1118
|
+
frameworks?: string[] | undefined;
|
|
1119
|
+
}>;
|
|
1120
|
+
type SkillOpsDetectedStackConfig = z.infer<typeof SkillOpsDetectedStackConfigSchema>;
|
|
1121
|
+
declare const SkillOpsConfigSchema: z.ZodObject<{
|
|
1122
|
+
version: z.ZodDefault<z.ZodString>;
|
|
1123
|
+
catalog_dir: z.ZodDefault<z.ZodString>;
|
|
1124
|
+
token_economy: z.ZodDefault<z.ZodObject<{
|
|
1125
|
+
startup_tax_budget: z.ZodDefault<z.ZodNumber>;
|
|
1126
|
+
max_active_skills: z.ZodDefault<z.ZodNumber>;
|
|
1127
|
+
max_l1_tokens: z.ZodDefault<z.ZodNumber>;
|
|
1128
|
+
max_similarity: z.ZodDefault<z.ZodNumber>;
|
|
1129
|
+
}, "strict", z.ZodTypeAny, {
|
|
1130
|
+
max_similarity: number;
|
|
1131
|
+
startup_tax_budget: number;
|
|
1132
|
+
max_l1_tokens: number;
|
|
1133
|
+
max_active_skills: number;
|
|
1134
|
+
}, {
|
|
1135
|
+
max_similarity?: number | undefined;
|
|
1136
|
+
startup_tax_budget?: number | undefined;
|
|
1137
|
+
max_l1_tokens?: number | undefined;
|
|
1138
|
+
max_active_skills?: number | undefined;
|
|
1139
|
+
}>>;
|
|
1140
|
+
detected_stack: z.ZodDefault<z.ZodObject<{
|
|
1141
|
+
languages: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
1142
|
+
frameworks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
1143
|
+
}, "strict", z.ZodTypeAny, {
|
|
1144
|
+
languages: string[];
|
|
1145
|
+
frameworks: string[];
|
|
1146
|
+
}, {
|
|
1147
|
+
languages?: string[] | undefined;
|
|
1148
|
+
frameworks?: string[] | undefined;
|
|
1149
|
+
}>>;
|
|
1150
|
+
targets: z.ZodDefault<z.ZodArray<z.ZodEnum<["claude", "antigravity", "cursor", "codex", "copilot", "windsurf", "cline", "roocode", "kilocode", "zed", "continue", "aider", "openhands", "amp", "goose", "opencode", "kiro", "trae", "amazonq", "junie"]>, "many">>;
|
|
1151
|
+
}, "strict", z.ZodTypeAny, {
|
|
1152
|
+
version: string;
|
|
1153
|
+
targets: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[];
|
|
1154
|
+
catalog_dir: string;
|
|
1155
|
+
token_economy: {
|
|
1156
|
+
max_similarity: number;
|
|
1157
|
+
startup_tax_budget: number;
|
|
1158
|
+
max_l1_tokens: number;
|
|
1159
|
+
max_active_skills: number;
|
|
1160
|
+
};
|
|
1161
|
+
detected_stack: {
|
|
1162
|
+
languages: string[];
|
|
1163
|
+
frameworks: string[];
|
|
1164
|
+
};
|
|
1165
|
+
}, {
|
|
1166
|
+
version?: string | undefined;
|
|
1167
|
+
targets?: ("claude" | "antigravity" | "cursor" | "codex" | "copilot" | "windsurf" | "cline" | "roocode" | "kilocode" | "zed" | "continue" | "aider" | "openhands" | "amp" | "goose" | "opencode" | "kiro" | "trae" | "amazonq" | "junie")[] | undefined;
|
|
1168
|
+
catalog_dir?: string | undefined;
|
|
1169
|
+
token_economy?: {
|
|
1170
|
+
max_similarity?: number | undefined;
|
|
1171
|
+
startup_tax_budget?: number | undefined;
|
|
1172
|
+
max_l1_tokens?: number | undefined;
|
|
1173
|
+
max_active_skills?: number | undefined;
|
|
1174
|
+
} | undefined;
|
|
1175
|
+
detected_stack?: {
|
|
1176
|
+
languages?: string[] | undefined;
|
|
1177
|
+
frameworks?: string[] | undefined;
|
|
1178
|
+
} | undefined;
|
|
1179
|
+
}>;
|
|
1180
|
+
type SkillOpsConfig = z.infer<typeof SkillOpsConfigSchema>;
|
|
1181
|
+
interface LoadedSkillOpsConfigResult {
|
|
1182
|
+
readonly config: SkillOpsConfig | null;
|
|
1183
|
+
readonly configPath: string;
|
|
1184
|
+
readonly exists: boolean;
|
|
1185
|
+
readonly error: string | null;
|
|
1186
|
+
}
|
|
1187
|
+
/**
|
|
1188
|
+
* Load and validate `.skillops.yml` from a repository root if present.
|
|
1189
|
+
*/
|
|
1190
|
+
declare function loadSkillOpsConfig(repoPath: string): LoadedSkillOpsConfigResult;
|
|
1191
|
+
|
|
1192
|
+
/**
|
|
1193
|
+
* Directory and file discovery/parsing engine for Hybrid Executable Skills (SKILL.md)
|
|
1194
|
+
* and Context-Isolated Subagents (SUBAGENT.md / *.agent.md).
|
|
1195
|
+
*/
|
|
1196
|
+
|
|
1197
|
+
interface ParsedSkillDirectory {
|
|
1198
|
+
readonly skillDir: string;
|
|
1199
|
+
readonly skillMdPath: string;
|
|
1200
|
+
readonly manifest: SkillManifest;
|
|
1201
|
+
readonly rawText: string;
|
|
1202
|
+
readonly markdownBody: string;
|
|
1203
|
+
readonly totalLines: number;
|
|
1204
|
+
readonly declaredScripts: string[];
|
|
1205
|
+
readonly missingDeclaredScripts: string[];
|
|
1206
|
+
readonly extraScripts: string[];
|
|
1207
|
+
readonly referenceFiles: string[];
|
|
1208
|
+
readonly evalsPath: string | null;
|
|
1209
|
+
}
|
|
1210
|
+
interface ParsedSubagentFile {
|
|
1211
|
+
readonly filePath: string;
|
|
1212
|
+
readonly manifest: SubagentManifest;
|
|
1213
|
+
readonly systemPromptBody: string;
|
|
1214
|
+
readonly rawText: string;
|
|
1215
|
+
}
|
|
1216
|
+
interface ParseSkillOptions {
|
|
1217
|
+
readonly requireLayout?: boolean;
|
|
1218
|
+
}
|
|
1219
|
+
/**
|
|
1220
|
+
* Recursively discover all skill directories under catalogDir containing SKILL.md.
|
|
1221
|
+
*/
|
|
1222
|
+
declare function discoverSkillDirectories(catalogDir: string): string[];
|
|
1223
|
+
/**
|
|
1224
|
+
* Parse a single skill directory and validate its SKILL.md manifest and Level 3 layout.
|
|
1225
|
+
*/
|
|
1226
|
+
declare function parseSkillDirectory(skillDir: string, options?: ParseSkillOptions): ParsedSkillDirectory;
|
|
1227
|
+
/**
|
|
1228
|
+
* Discover all Subagent Markdown definitions in catalog/subagents/ and .github/agents/*.agent.md.
|
|
1229
|
+
*/
|
|
1230
|
+
declare function discoverSubagentFiles(repoOrCatalogRoot: string): string[];
|
|
1231
|
+
/**
|
|
1232
|
+
* Parse and validate a Subagent definition file.
|
|
1233
|
+
*/
|
|
1234
|
+
declare function parseSubagentFile(filePath: string): ParsedSubagentFile;
|
|
1235
|
+
|
|
1236
|
+
/**
|
|
1237
|
+
* 3-Level Progressive Disclosure & Subagent Token Budget Linter (INV-SKILL-01 & INV-SKILL-04).
|
|
1238
|
+
*/
|
|
1239
|
+
interface SkillTokenBudgetAudit {
|
|
1240
|
+
readonly skillName: string;
|
|
1241
|
+
readonly skillDir: string;
|
|
1242
|
+
readonly l1Words: number;
|
|
1243
|
+
readonly l1Tokens: number;
|
|
1244
|
+
readonly l2Lines: number;
|
|
1245
|
+
readonly l2Tokens: number;
|
|
1246
|
+
readonly totalLines: number;
|
|
1247
|
+
readonly scriptsCount: number;
|
|
1248
|
+
readonly passed: boolean;
|
|
1249
|
+
readonly errors: string[];
|
|
1250
|
+
readonly warnings: string[];
|
|
1251
|
+
}
|
|
1252
|
+
interface SubagentTokenBudgetAudit {
|
|
1253
|
+
readonly subagentName: string;
|
|
1254
|
+
readonly filePath: string;
|
|
1255
|
+
readonly descriptionTokens: number;
|
|
1256
|
+
readonly systemPromptLines: number;
|
|
1257
|
+
readonly systemPromptTokens: number;
|
|
1258
|
+
readonly maxOutputTokens: number;
|
|
1259
|
+
readonly tools: string[];
|
|
1260
|
+
readonly passed: boolean;
|
|
1261
|
+
readonly errors: string[];
|
|
1262
|
+
}
|
|
1263
|
+
interface CatalogTokenBudgetSummary {
|
|
1264
|
+
readonly catalogPath: string;
|
|
1265
|
+
readonly skills: SkillTokenBudgetAudit[];
|
|
1266
|
+
readonly subagents: SubagentTokenBudgetAudit[];
|
|
1267
|
+
readonly totalL1Tokens: number;
|
|
1268
|
+
readonly totalSubagentPromptTokens: number;
|
|
1269
|
+
readonly errors: string[];
|
|
1270
|
+
readonly warnings: string[];
|
|
1271
|
+
readonly passed: boolean;
|
|
1272
|
+
}
|
|
1273
|
+
declare function auditSkillTokenBudget(skillDir: string, options?: {
|
|
1274
|
+
requireLayout?: boolean;
|
|
1275
|
+
}): SkillTokenBudgetAudit;
|
|
1276
|
+
declare function auditSubagentTokenBudget(filePath: string): SubagentTokenBudgetAudit;
|
|
1277
|
+
declare function auditCatalogTokenBudgets(catalogDir: string, options?: {
|
|
1278
|
+
requireLayout?: boolean;
|
|
1279
|
+
}): CatalogTokenBudgetSummary;
|
|
1280
|
+
|
|
1281
|
+
/**
|
|
1282
|
+
* Zero-API Hybrid Lexical & Structural Semantic Collision Detector (ADR-0002).
|
|
1283
|
+
*
|
|
1284
|
+
* Prevents Implicit Routing Collapse (arXiv:2610.18522) across large skill & subagent
|
|
1285
|
+
* libraries using weighted TF-IDF word unigrams, bigrams, and character 3-grams with
|
|
1286
|
+
* O(N) vector pre-normalization.
|
|
1287
|
+
*/
|
|
1288
|
+
|
|
1289
|
+
declare function stripNegativeTriggerClauses(description: string): string;
|
|
1290
|
+
declare function tokenizeRoutingText(text: string): string[];
|
|
1291
|
+
/**
|
|
1292
|
+
* Extract weighted lexical, bigram, character 3-gram, and structural routing features.
|
|
1293
|
+
*/
|
|
1294
|
+
declare function extractSkillFeatures(manifest: SkillManifest): Map<string, number>;
|
|
1295
|
+
/**
|
|
1296
|
+
* Compute smooth corpus IDF weights: idf(t) = 1 + ln((N + 1) / (df(t) + 1)).
|
|
1297
|
+
*/
|
|
1298
|
+
declare function computeIdfWeights(featureMaps: readonly Map<string, number>[]): Map<string, number>;
|
|
1299
|
+
/**
|
|
1300
|
+
* Compute weighted cosine similarity and top shared terms between two feature maps.
|
|
1301
|
+
*/
|
|
1302
|
+
declare function computeFeatureCosine(featuresA: Map<string, number>, featuresB: Map<string, number>, idfWeights?: Map<string, number>): {
|
|
1303
|
+
similarity: number;
|
|
1304
|
+
sharedTerms: string[];
|
|
1305
|
+
};
|
|
1306
|
+
/**
|
|
1307
|
+
* Compute all pairwise semantic similarities with O(N) vector pre-normalization.
|
|
1308
|
+
*/
|
|
1309
|
+
declare function computeCollisionMatrix(manifests: readonly SkillManifest[]): CollisionPair[];
|
|
1310
|
+
interface AuditCatalogOptions {
|
|
1311
|
+
readonly requireLayout?: boolean;
|
|
1312
|
+
}
|
|
1313
|
+
/**
|
|
1314
|
+
* Audit a catalog directory for L1/L2/L3 token budgets, subagent contracts, and semantic collisions.
|
|
1315
|
+
*/
|
|
1316
|
+
declare function auditCatalog(catalogDir: string, options?: AuditCatalogOptions): CollisionReport;
|
|
1317
|
+
|
|
1318
|
+
/**
|
|
1319
|
+
* Repository Token Economy & Startup Context Tax Analyzer (`npx skillops@latest tokens`).
|
|
1320
|
+
*
|
|
1321
|
+
* Implements Issue #60:
|
|
1322
|
+
* - Scans always-on repository instruction files (`CLAUDE.md`, `AGENTS.md`, `GEMINI.md`,
|
|
1323
|
+
* `.github/copilot-instructions.md`), `.cursor/rules/*.mdc`, and `.mcp.json` / `.cursor/mcp.json`.
|
|
1324
|
+
* - Scans catalog/repository Skills (L1 frontmatter vs L2 Markdown body vs L3 zero-token scripts)
|
|
1325
|
+
* and Context-Isolated Subagents (`SUBAGENT.md` / `*.agent.md`).
|
|
1326
|
+
* - Quantifies Startup Token Tax, Monolithic Equivalent Tokens, Progressive Disclosure L1 Tokens,
|
|
1327
|
+
* Estimated Tokens Saved, Token Savings %, and actionable TokenWasteHotspot items.
|
|
1328
|
+
*/
|
|
1329
|
+
|
|
1330
|
+
interface AnalyzeTokenEconomyOptions {
|
|
1331
|
+
readonly catalogDir?: string;
|
|
1332
|
+
readonly startupTaxBudget?: number;
|
|
1333
|
+
}
|
|
1334
|
+
/**
|
|
1335
|
+
* Analyze a repository's Startup Token Tax and Progressive Disclosure savings.
|
|
1336
|
+
*/
|
|
1337
|
+
declare function analyzeRepoTokenEconomy(repoPath: string, options?: AnalyzeTokenEconomyOptions): TokenEconomyReport;
|
|
1338
|
+
/**
|
|
1339
|
+
* Render a TokenEconomyReport as a human-readable ASCII table, Markdown report, or JSON string.
|
|
1340
|
+
*/
|
|
1341
|
+
declare function formatTokenEconomyReport(report: TokenEconomyReport, format?: "table" | "json" | "markdown" | "github"): string;
|
|
1342
|
+
|
|
1343
|
+
/**
|
|
1344
|
+
* Repository Environment Diagnostics & Lockfile Drift Auditor (`npx skillops-cli@latest doctor` / `status`).
|
|
1345
|
+
*
|
|
1346
|
+
* Implements Issue #104:
|
|
1347
|
+
* - Verifies Node.js runtime (`>= 20.0.0`) and Python runtime availability (`>= 3.12`) for Level 3 scripts.
|
|
1348
|
+
* - Validates `.skillops.yml` declarative configuration via `loadSkillOpsConfig()`.
|
|
1349
|
+
* - Audits `.skillops-lock.json` tracked artifacts and verifies their on-disk SHA-256 hash (`healthy`, `drifted`, `missing`).
|
|
1350
|
+
* - Audits Startup Token Tax status via `analyzeRepoTokenEconomy()`.
|
|
1351
|
+
*/
|
|
1352
|
+
|
|
1353
|
+
interface LockfileArtifactDiagnostic {
|
|
1354
|
+
readonly relative_path: string;
|
|
1355
|
+
readonly target: RuntimeTarget;
|
|
1356
|
+
readonly item_name: string;
|
|
1357
|
+
readonly expected_sha256: string;
|
|
1358
|
+
readonly actual_sha256: string | null;
|
|
1359
|
+
readonly status: "healthy" | "drifted" | "missing";
|
|
1360
|
+
}
|
|
1361
|
+
interface DoctorCheckItem {
|
|
1362
|
+
readonly id: "node_runtime" | "python_runtime" | "detected_harnesses" | "skillops_config" | "lockfile_integrity" | "startup_token_tax";
|
|
1363
|
+
readonly title: string;
|
|
1364
|
+
readonly status: "pass" | "warn" | "fail";
|
|
1365
|
+
readonly summary: string;
|
|
1366
|
+
}
|
|
1367
|
+
interface DoctorReport {
|
|
1368
|
+
readonly status: "pass" | "warn" | "fail";
|
|
1369
|
+
readonly repo_path: string;
|
|
1370
|
+
readonly node_version: string;
|
|
1371
|
+
readonly python_version: string | null;
|
|
1372
|
+
readonly detected_harnesses: readonly RuntimeTarget[];
|
|
1373
|
+
readonly config_present: boolean;
|
|
1374
|
+
readonly config_valid: boolean;
|
|
1375
|
+
readonly config_error?: string;
|
|
1376
|
+
readonly lockfile_present: boolean;
|
|
1377
|
+
readonly lockfile_valid: boolean;
|
|
1378
|
+
readonly tracked_artifacts_count: number;
|
|
1379
|
+
readonly healthy_artifacts_count: number;
|
|
1380
|
+
readonly drifted_artifacts_count: number;
|
|
1381
|
+
readonly missing_artifacts_count: number;
|
|
1382
|
+
readonly artifacts: readonly LockfileArtifactDiagnostic[];
|
|
1383
|
+
readonly startup_tax_tokens: number;
|
|
1384
|
+
readonly startup_tax_budget: number;
|
|
1385
|
+
readonly startup_tax_within_budget: boolean;
|
|
1386
|
+
readonly checks: readonly DoctorCheckItem[];
|
|
1387
|
+
readonly remediation: readonly string[];
|
|
1388
|
+
}
|
|
1389
|
+
interface HarnessInspectionEntry extends RuntimeHarnessSpec {
|
|
1390
|
+
readonly detected: boolean;
|
|
1391
|
+
}
|
|
1392
|
+
interface HarnessInspectionReport {
|
|
1393
|
+
readonly repo_path: string;
|
|
1394
|
+
readonly total_supported: number;
|
|
1395
|
+
readonly detected_count: number;
|
|
1396
|
+
readonly detected_harnesses: readonly RuntimeTarget[];
|
|
1397
|
+
readonly harnesses: readonly HarnessInspectionEntry[];
|
|
1398
|
+
}
|
|
1399
|
+
interface DiagnoseRepositoryOptions {
|
|
1400
|
+
readonly catalogDir?: string;
|
|
1401
|
+
readonly startupTaxBudget?: number;
|
|
1402
|
+
}
|
|
1403
|
+
/**
|
|
1404
|
+
* Run comprehensive environment, configuration, lockfile drift, and token economy diagnostics.
|
|
1405
|
+
*/
|
|
1406
|
+
declare function diagnoseRepository(repoPath: string, options?: DiagnoseRepositoryOptions): DoctorReport;
|
|
1407
|
+
/**
|
|
1408
|
+
* Inspect all 20 supported AI coding agent harnesses and report which ones are detected in `repoPath`.
|
|
1409
|
+
*/
|
|
1410
|
+
declare function inspectHarnesses(repoPath: string): HarnessInspectionReport;
|
|
1411
|
+
/**
|
|
1412
|
+
* Format a `HarnessInspectionReport` as a terminal table, Markdown table, or JSON string.
|
|
1413
|
+
*/
|
|
1414
|
+
declare function formatHarnessInspectionReport(report: HarnessInspectionReport, format?: "table" | "json" | "markdown"): string;
|
|
1415
|
+
/**
|
|
1416
|
+
* Format a `DoctorReport` as a terminal table, Markdown report, or JSON string.
|
|
1417
|
+
*/
|
|
1418
|
+
declare function formatDoctorReport(report: DoctorReport, format?: "table" | "json" | "markdown" | "github"): string;
|
|
1419
|
+
|
|
1420
|
+
/**
|
|
1421
|
+
* Deterministic, zero-execution Repository Stack Fingerprinter (`src/router/fingerprinter.ts`).
|
|
1422
|
+
*
|
|
1423
|
+
* Inspects manifest files (`pyproject.toml`, `requirements*.txt`, `uv.lock`, `package.json`,
|
|
1424
|
+
* `tsconfig.json`, `Cargo.toml`, `go.mod`, `Dockerfile`, `docker-compose*.yml`, `.github/workflows`),
|
|
1425
|
+
* SQL files, and source files without executing untrusted repository code.
|
|
1426
|
+
*/
|
|
1427
|
+
|
|
1428
|
+
declare function normalizePackageName(rawSpec: string): string;
|
|
1429
|
+
declare class RepoFingerprinter {
|
|
1430
|
+
readonly repoPath: string;
|
|
1431
|
+
constructor(repoPath: string);
|
|
1432
|
+
fingerprint(): RepoProfile;
|
|
1433
|
+
}
|
|
1434
|
+
declare function fingerprintRepository(repoPath: string): RepoProfile;
|
|
1435
|
+
|
|
1436
|
+
/**
|
|
1437
|
+
* Dynamic Skill & Subagent Router (`src/router/bundle_compiler.ts`).
|
|
1438
|
+
*
|
|
1439
|
+
* Enforces INV-SKILL-03:
|
|
1440
|
+
* - Compiles a deterministic, collision-free bundle of <= 12 skills (<= 1,500 L1 tokens,
|
|
1441
|
+
* < 0.78 pairwise cosine similarity) tailored to the repository fingerprint and task prompt.
|
|
1442
|
+
* - Selects matching Context-Isolated Subagents (`recommended_subagents`).
|
|
1443
|
+
*/
|
|
1444
|
+
|
|
1445
|
+
interface RouteOptions {
|
|
1446
|
+
readonly maxSkills?: number;
|
|
1447
|
+
readonly maxL1Tokens?: number;
|
|
1448
|
+
readonly maxSimilarity?: number;
|
|
1449
|
+
readonly taskPrompt?: string;
|
|
1450
|
+
}
|
|
1451
|
+
declare function scoreSkillAgainstProfile(parsedSkill: ParsedSkillDirectory, profile: RepoProfile, taskPrompt?: string): {
|
|
1452
|
+
score: number;
|
|
1453
|
+
matchedSignals: string[];
|
|
1454
|
+
negativeMatch: string | null;
|
|
1455
|
+
};
|
|
1456
|
+
declare function compileSkillBundle(profile: RepoProfile, catalogDir: string, options?: RouteOptions): RoutedBundle;
|
|
1457
|
+
declare function routeRepository(repoPath: string, catalogDir: string, options?: RouteOptions): RoutedBundle;
|
|
1458
|
+
declare function formatRoutedBundle(bundle: RoutedBundle, format?: "table" | "json" | "markdown"): string;
|
|
1459
|
+
|
|
1460
|
+
/**
|
|
1461
|
+
* Multi-Runtime Transpiler for Skills & Context-Isolated Subagents (`src/sync/adapters.ts`).
|
|
1462
|
+
*
|
|
1463
|
+
* Implements Issue #61:
|
|
1464
|
+
* - Transpiles Hybrid Executable Skills (SKILL.md + Level 3 scripts/references) and
|
|
1465
|
+
* Context-Isolated Subagents (SUBAGENT.md) across:
|
|
1466
|
+
* 1. Claude Code (`.claude/skills/<name>/`, `.claude/agents/<name>.md`)
|
|
1467
|
+
* 2. Antigravity / Gemini CLI (`.agent/skills/<name>/`, `.agent/agents/<name>.md`)
|
|
1468
|
+
* 3. Cursor (`.cursor/rules/skillops-<name>.mdc`, `.cursor/rules/skillops-agent-<name>.mdc`)
|
|
1469
|
+
* 4. OpenAI Codex CLI (`.codex/skills/<name>/`, `.codex/agents/<name>.md`, `AGENTS.md`)
|
|
1470
|
+
* 5. GitHub Copilot (`.github/instructions/`, `.github/prompts/`, `.github/agents/<name>.agent.md`)
|
|
1471
|
+
* - Enforces `.skillops-lock.json` SHA-256 integrity, local drift detection, and surgical `add`.
|
|
1472
|
+
*/
|
|
1473
|
+
|
|
1474
|
+
interface SyncOptions extends RouteOptions {
|
|
1475
|
+
readonly targets?: readonly RuntimeTarget[];
|
|
1476
|
+
readonly dryRun?: boolean;
|
|
1477
|
+
readonly force?: boolean;
|
|
1478
|
+
}
|
|
1479
|
+
interface AddOptions {
|
|
1480
|
+
readonly targets?: readonly RuntimeTarget[];
|
|
1481
|
+
readonly dryRun?: boolean;
|
|
1482
|
+
readonly force?: boolean;
|
|
1483
|
+
}
|
|
1484
|
+
interface RemoveOptions {
|
|
1485
|
+
readonly targets?: readonly RuntimeTarget[];
|
|
1486
|
+
readonly dryRun?: boolean;
|
|
1487
|
+
readonly force?: boolean;
|
|
1488
|
+
}
|
|
1489
|
+
interface CleanOptions {
|
|
1490
|
+
readonly dryRun?: boolean;
|
|
1491
|
+
readonly force?: boolean;
|
|
1492
|
+
}
|
|
1493
|
+
declare function computeSha256(content: string): string;
|
|
1494
|
+
declare function renderCodexAgentsIndex(existingContent: string | null, skills: readonly ParsedSkillDirectory[], subagents: readonly ParsedSubagentFile[]): string;
|
|
1495
|
+
declare function syncRepository(repoPath: string, catalogDir: string, options?: SyncOptions): SyncReport;
|
|
1496
|
+
/**
|
|
1497
|
+
* Surgically install a single Skill or Subagent by name across active runtime targets.
|
|
1498
|
+
*/
|
|
1499
|
+
declare function addSkillOrSubagent(repoPath: string, catalogDir: string, itemName: string, options?: AddOptions): SyncReport;
|
|
1500
|
+
declare function stripCodexAgentsBlock(existingContent: string): string;
|
|
1501
|
+
/**
|
|
1502
|
+
* Surgically remove a single synced Skill or Subagent by name across target runtimes.
|
|
1503
|
+
*/
|
|
1504
|
+
declare function removeSkillOrSubagent(repoPath: string, catalogDir: string, itemName: string, options?: RemoveOptions): SyncReport;
|
|
1505
|
+
/**
|
|
1506
|
+
* Clean all SkillOps-managed runtime artifacts tracked in `.skillops-lock.json`.
|
|
1507
|
+
*/
|
|
1508
|
+
declare function cleanSyncedArtifacts(repoPath: string, catalogDir: string, options?: CleanOptions): SyncReport;
|
|
1509
|
+
declare function formatSyncReport(report: SyncReport, format?: "table" | "json" | "markdown"): string;
|
|
1510
|
+
|
|
1511
|
+
/**
|
|
1512
|
+
* Zero-API Deterministic TDD Benchmark Runner & Static HTML/Markdown Exporter (`src/eval/index.ts`).
|
|
1513
|
+
*
|
|
1514
|
+
* Enforces INV-SKILL-05:
|
|
1515
|
+
* - Validates `evals/evals.json` assertions and `evals/benchmark.json` (`with_skill` vs `without_skill`).
|
|
1516
|
+
* - Verifies that every skill demonstrates measurable pass-rate lift (`delta.pass_rate_gain >= 0.15`)
|
|
1517
|
+
* and reduced token consumption compared to unguided baseline runs.
|
|
1518
|
+
* - Exports static HTML dashboards, GitHub-flavored Markdown tables, JSON, and ASCII tables.
|
|
1519
|
+
*/
|
|
1520
|
+
|
|
1521
|
+
declare const EvalAssertionSchema: z.ZodObject<{
|
|
1522
|
+
id: z.ZodString;
|
|
1523
|
+
type: z.ZodString;
|
|
1524
|
+
target: z.ZodString;
|
|
1525
|
+
description: z.ZodString;
|
|
1526
|
+
}, "strict", z.ZodTypeAny, {
|
|
1527
|
+
type: string;
|
|
1528
|
+
description: string;
|
|
1529
|
+
target: string;
|
|
1530
|
+
id: string;
|
|
1531
|
+
}, {
|
|
1532
|
+
type: string;
|
|
1533
|
+
description: string;
|
|
1534
|
+
target: string;
|
|
1535
|
+
id: string;
|
|
1536
|
+
}>;
|
|
1537
|
+
type EvalAssertion = z.infer<typeof EvalAssertionSchema>;
|
|
1538
|
+
declare const EvalCaseSchema: z.ZodObject<{
|
|
1539
|
+
id: z.ZodString;
|
|
1540
|
+
name: z.ZodString;
|
|
1541
|
+
prompt: z.ZodString;
|
|
1542
|
+
fixtures: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
1543
|
+
assertions: z.ZodArray<z.ZodObject<{
|
|
1544
|
+
id: z.ZodString;
|
|
1545
|
+
type: z.ZodString;
|
|
1546
|
+
target: z.ZodString;
|
|
1547
|
+
description: z.ZodString;
|
|
1548
|
+
}, "strict", z.ZodTypeAny, {
|
|
1549
|
+
type: string;
|
|
1550
|
+
description: string;
|
|
1551
|
+
target: string;
|
|
1552
|
+
id: string;
|
|
1553
|
+
}, {
|
|
1554
|
+
type: string;
|
|
1555
|
+
description: string;
|
|
1556
|
+
target: string;
|
|
1557
|
+
id: string;
|
|
1558
|
+
}>, "many">;
|
|
1559
|
+
}, "strict", z.ZodTypeAny, {
|
|
1560
|
+
name: string;
|
|
1561
|
+
id: string;
|
|
1562
|
+
prompt: string;
|
|
1563
|
+
fixtures: string[];
|
|
1564
|
+
assertions: {
|
|
1565
|
+
type: string;
|
|
1566
|
+
description: string;
|
|
1567
|
+
target: string;
|
|
1568
|
+
id: string;
|
|
1569
|
+
}[];
|
|
1570
|
+
}, {
|
|
1571
|
+
name: string;
|
|
1572
|
+
id: string;
|
|
1573
|
+
prompt: string;
|
|
1574
|
+
assertions: {
|
|
1575
|
+
type: string;
|
|
1576
|
+
description: string;
|
|
1577
|
+
target: string;
|
|
1578
|
+
id: string;
|
|
1579
|
+
}[];
|
|
1580
|
+
fixtures?: string[] | undefined;
|
|
1581
|
+
}>;
|
|
1582
|
+
type EvalCase = z.infer<typeof EvalCaseSchema>;
|
|
1583
|
+
declare const SkillEvalSuiteSchema: z.ZodObject<{
|
|
1584
|
+
skill_name: z.ZodString;
|
|
1585
|
+
schema_version: z.ZodDefault<z.ZodString>;
|
|
1586
|
+
evals: z.ZodArray<z.ZodObject<{
|
|
1587
|
+
id: z.ZodString;
|
|
1588
|
+
name: z.ZodString;
|
|
1589
|
+
prompt: z.ZodString;
|
|
1590
|
+
fixtures: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
1591
|
+
assertions: z.ZodArray<z.ZodObject<{
|
|
1592
|
+
id: z.ZodString;
|
|
1593
|
+
type: z.ZodString;
|
|
1594
|
+
target: z.ZodString;
|
|
1595
|
+
description: z.ZodString;
|
|
1596
|
+
}, "strict", z.ZodTypeAny, {
|
|
1597
|
+
type: string;
|
|
1598
|
+
description: string;
|
|
1599
|
+
target: string;
|
|
1600
|
+
id: string;
|
|
1601
|
+
}, {
|
|
1602
|
+
type: string;
|
|
1603
|
+
description: string;
|
|
1604
|
+
target: string;
|
|
1605
|
+
id: string;
|
|
1606
|
+
}>, "many">;
|
|
1607
|
+
}, "strict", z.ZodTypeAny, {
|
|
1608
|
+
name: string;
|
|
1609
|
+
id: string;
|
|
1610
|
+
prompt: string;
|
|
1611
|
+
fixtures: string[];
|
|
1612
|
+
assertions: {
|
|
1613
|
+
type: string;
|
|
1614
|
+
description: string;
|
|
1615
|
+
target: string;
|
|
1616
|
+
id: string;
|
|
1617
|
+
}[];
|
|
1618
|
+
}, {
|
|
1619
|
+
name: string;
|
|
1620
|
+
id: string;
|
|
1621
|
+
prompt: string;
|
|
1622
|
+
assertions: {
|
|
1623
|
+
type: string;
|
|
1624
|
+
description: string;
|
|
1625
|
+
target: string;
|
|
1626
|
+
id: string;
|
|
1627
|
+
}[];
|
|
1628
|
+
fixtures?: string[] | undefined;
|
|
1629
|
+
}>, "many">;
|
|
1630
|
+
}, "strict", z.ZodTypeAny, {
|
|
1631
|
+
skill_name: string;
|
|
1632
|
+
schema_version: string;
|
|
1633
|
+
evals: {
|
|
1634
|
+
name: string;
|
|
1635
|
+
id: string;
|
|
1636
|
+
prompt: string;
|
|
1637
|
+
fixtures: string[];
|
|
1638
|
+
assertions: {
|
|
1639
|
+
type: string;
|
|
1640
|
+
description: string;
|
|
1641
|
+
target: string;
|
|
1642
|
+
id: string;
|
|
1643
|
+
}[];
|
|
1644
|
+
}[];
|
|
1645
|
+
}, {
|
|
1646
|
+
skill_name: string;
|
|
1647
|
+
evals: {
|
|
1648
|
+
name: string;
|
|
1649
|
+
id: string;
|
|
1650
|
+
prompt: string;
|
|
1651
|
+
assertions: {
|
|
1652
|
+
type: string;
|
|
1653
|
+
description: string;
|
|
1654
|
+
target: string;
|
|
1655
|
+
id: string;
|
|
1656
|
+
}[];
|
|
1657
|
+
fixtures?: string[] | undefined;
|
|
1658
|
+
}[];
|
|
1659
|
+
schema_version?: string | undefined;
|
|
1660
|
+
}>;
|
|
1661
|
+
type SkillEvalSuite = z.infer<typeof SkillEvalSuiteSchema>;
|
|
1662
|
+
declare const BenchmarkArmSchema: z.ZodObject<{
|
|
1663
|
+
pass_rate_mean: z.ZodNumber;
|
|
1664
|
+
pass_rate_stddev: z.ZodNumber;
|
|
1665
|
+
tokens_mean: z.ZodNumber;
|
|
1666
|
+
latency_ms_mean: z.ZodNumber;
|
|
1667
|
+
}, "strict", z.ZodTypeAny, {
|
|
1668
|
+
pass_rate_mean: number;
|
|
1669
|
+
pass_rate_stddev: number;
|
|
1670
|
+
tokens_mean: number;
|
|
1671
|
+
latency_ms_mean: number;
|
|
1672
|
+
}, {
|
|
1673
|
+
pass_rate_mean: number;
|
|
1674
|
+
pass_rate_stddev: number;
|
|
1675
|
+
tokens_mean: number;
|
|
1676
|
+
latency_ms_mean: number;
|
|
1677
|
+
}>;
|
|
1678
|
+
type BenchmarkArm = z.infer<typeof BenchmarkArmSchema>;
|
|
1679
|
+
declare const BenchmarkDeltaSchema: z.ZodObject<{
|
|
1680
|
+
pass_rate_gain: z.ZodNumber;
|
|
1681
|
+
token_reduction_pct: z.ZodNumber;
|
|
1682
|
+
verdict: z.ZodEnum<["CERTIFIED_IMPROVEMENT", "NEUTRAL", "REGRESSION"]>;
|
|
1683
|
+
}, "strict", z.ZodTypeAny, {
|
|
1684
|
+
pass_rate_gain: number;
|
|
1685
|
+
token_reduction_pct: number;
|
|
1686
|
+
verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
|
|
1687
|
+
}, {
|
|
1688
|
+
pass_rate_gain: number;
|
|
1689
|
+
token_reduction_pct: number;
|
|
1690
|
+
verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
|
|
1691
|
+
}>;
|
|
1692
|
+
type BenchmarkDelta = z.infer<typeof BenchmarkDeltaSchema>;
|
|
1693
|
+
declare const SkillBenchmarkSchema: z.ZodObject<{
|
|
1694
|
+
skill_name: z.ZodString;
|
|
1695
|
+
runner: z.ZodDefault<z.ZodString>;
|
|
1696
|
+
timestamp: z.ZodString;
|
|
1697
|
+
eval_cases_count: z.ZodDefault<z.ZodNumber>;
|
|
1698
|
+
assertions_count: z.ZodDefault<z.ZodNumber>;
|
|
1699
|
+
with_skill: z.ZodObject<{
|
|
1700
|
+
pass_rate_mean: z.ZodNumber;
|
|
1701
|
+
pass_rate_stddev: z.ZodNumber;
|
|
1702
|
+
tokens_mean: z.ZodNumber;
|
|
1703
|
+
latency_ms_mean: z.ZodNumber;
|
|
1704
|
+
}, "strict", z.ZodTypeAny, {
|
|
1705
|
+
pass_rate_mean: number;
|
|
1706
|
+
pass_rate_stddev: number;
|
|
1707
|
+
tokens_mean: number;
|
|
1708
|
+
latency_ms_mean: number;
|
|
1709
|
+
}, {
|
|
1710
|
+
pass_rate_mean: number;
|
|
1711
|
+
pass_rate_stddev: number;
|
|
1712
|
+
tokens_mean: number;
|
|
1713
|
+
latency_ms_mean: number;
|
|
1714
|
+
}>;
|
|
1715
|
+
without_skill: z.ZodObject<{
|
|
1716
|
+
pass_rate_mean: z.ZodNumber;
|
|
1717
|
+
pass_rate_stddev: z.ZodNumber;
|
|
1718
|
+
tokens_mean: z.ZodNumber;
|
|
1719
|
+
latency_ms_mean: z.ZodNumber;
|
|
1720
|
+
}, "strict", z.ZodTypeAny, {
|
|
1721
|
+
pass_rate_mean: number;
|
|
1722
|
+
pass_rate_stddev: number;
|
|
1723
|
+
tokens_mean: number;
|
|
1724
|
+
latency_ms_mean: number;
|
|
1725
|
+
}, {
|
|
1726
|
+
pass_rate_mean: number;
|
|
1727
|
+
pass_rate_stddev: number;
|
|
1728
|
+
tokens_mean: number;
|
|
1729
|
+
latency_ms_mean: number;
|
|
1730
|
+
}>;
|
|
1731
|
+
delta: z.ZodObject<{
|
|
1732
|
+
pass_rate_gain: z.ZodNumber;
|
|
1733
|
+
token_reduction_pct: z.ZodNumber;
|
|
1734
|
+
verdict: z.ZodEnum<["CERTIFIED_IMPROVEMENT", "NEUTRAL", "REGRESSION"]>;
|
|
1735
|
+
}, "strict", z.ZodTypeAny, {
|
|
1736
|
+
pass_rate_gain: number;
|
|
1737
|
+
token_reduction_pct: number;
|
|
1738
|
+
verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
|
|
1739
|
+
}, {
|
|
1740
|
+
pass_rate_gain: number;
|
|
1741
|
+
token_reduction_pct: number;
|
|
1742
|
+
verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
|
|
1743
|
+
}>;
|
|
1744
|
+
passed: z.ZodDefault<z.ZodBoolean>;
|
|
1745
|
+
}, "strict", z.ZodTypeAny, {
|
|
1746
|
+
passed: boolean;
|
|
1747
|
+
skill_name: string;
|
|
1748
|
+
runner: string;
|
|
1749
|
+
timestamp: string;
|
|
1750
|
+
eval_cases_count: number;
|
|
1751
|
+
assertions_count: number;
|
|
1752
|
+
with_skill: {
|
|
1753
|
+
pass_rate_mean: number;
|
|
1754
|
+
pass_rate_stddev: number;
|
|
1755
|
+
tokens_mean: number;
|
|
1756
|
+
latency_ms_mean: number;
|
|
1757
|
+
};
|
|
1758
|
+
without_skill: {
|
|
1759
|
+
pass_rate_mean: number;
|
|
1760
|
+
pass_rate_stddev: number;
|
|
1761
|
+
tokens_mean: number;
|
|
1762
|
+
latency_ms_mean: number;
|
|
1763
|
+
};
|
|
1764
|
+
delta: {
|
|
1765
|
+
pass_rate_gain: number;
|
|
1766
|
+
token_reduction_pct: number;
|
|
1767
|
+
verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
|
|
1768
|
+
};
|
|
1769
|
+
}, {
|
|
1770
|
+
skill_name: string;
|
|
1771
|
+
timestamp: string;
|
|
1772
|
+
with_skill: {
|
|
1773
|
+
pass_rate_mean: number;
|
|
1774
|
+
pass_rate_stddev: number;
|
|
1775
|
+
tokens_mean: number;
|
|
1776
|
+
latency_ms_mean: number;
|
|
1777
|
+
};
|
|
1778
|
+
without_skill: {
|
|
1779
|
+
pass_rate_mean: number;
|
|
1780
|
+
pass_rate_stddev: number;
|
|
1781
|
+
tokens_mean: number;
|
|
1782
|
+
latency_ms_mean: number;
|
|
1783
|
+
};
|
|
1784
|
+
delta: {
|
|
1785
|
+
pass_rate_gain: number;
|
|
1786
|
+
token_reduction_pct: number;
|
|
1787
|
+
verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
|
|
1788
|
+
};
|
|
1789
|
+
passed?: boolean | undefined;
|
|
1790
|
+
runner?: string | undefined;
|
|
1791
|
+
eval_cases_count?: number | undefined;
|
|
1792
|
+
assertions_count?: number | undefined;
|
|
1793
|
+
}>;
|
|
1794
|
+
type SkillBenchmark = z.infer<typeof SkillBenchmarkSchema>;
|
|
1795
|
+
declare const CatalogEvalSummarySchema: z.ZodObject<{
|
|
1796
|
+
catalog_path: z.ZodString;
|
|
1797
|
+
skills_evaluated: z.ZodNumber;
|
|
1798
|
+
mean_with_skill_pass_rate: z.ZodNumber;
|
|
1799
|
+
mean_without_skill_pass_rate: z.ZodNumber;
|
|
1800
|
+
mean_pass_rate_gain: z.ZodNumber;
|
|
1801
|
+
mean_token_reduction_pct: z.ZodNumber;
|
|
1802
|
+
benchmarks: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
1803
|
+
skill_name: z.ZodString;
|
|
1804
|
+
runner: z.ZodDefault<z.ZodString>;
|
|
1805
|
+
timestamp: z.ZodString;
|
|
1806
|
+
eval_cases_count: z.ZodDefault<z.ZodNumber>;
|
|
1807
|
+
assertions_count: z.ZodDefault<z.ZodNumber>;
|
|
1808
|
+
with_skill: z.ZodObject<{
|
|
1809
|
+
pass_rate_mean: z.ZodNumber;
|
|
1810
|
+
pass_rate_stddev: z.ZodNumber;
|
|
1811
|
+
tokens_mean: z.ZodNumber;
|
|
1812
|
+
latency_ms_mean: z.ZodNumber;
|
|
1813
|
+
}, "strict", z.ZodTypeAny, {
|
|
1814
|
+
pass_rate_mean: number;
|
|
1815
|
+
pass_rate_stddev: number;
|
|
1816
|
+
tokens_mean: number;
|
|
1817
|
+
latency_ms_mean: number;
|
|
1818
|
+
}, {
|
|
1819
|
+
pass_rate_mean: number;
|
|
1820
|
+
pass_rate_stddev: number;
|
|
1821
|
+
tokens_mean: number;
|
|
1822
|
+
latency_ms_mean: number;
|
|
1823
|
+
}>;
|
|
1824
|
+
without_skill: z.ZodObject<{
|
|
1825
|
+
pass_rate_mean: z.ZodNumber;
|
|
1826
|
+
pass_rate_stddev: z.ZodNumber;
|
|
1827
|
+
tokens_mean: z.ZodNumber;
|
|
1828
|
+
latency_ms_mean: z.ZodNumber;
|
|
1829
|
+
}, "strict", z.ZodTypeAny, {
|
|
1830
|
+
pass_rate_mean: number;
|
|
1831
|
+
pass_rate_stddev: number;
|
|
1832
|
+
tokens_mean: number;
|
|
1833
|
+
latency_ms_mean: number;
|
|
1834
|
+
}, {
|
|
1835
|
+
pass_rate_mean: number;
|
|
1836
|
+
pass_rate_stddev: number;
|
|
1837
|
+
tokens_mean: number;
|
|
1838
|
+
latency_ms_mean: number;
|
|
1839
|
+
}>;
|
|
1840
|
+
delta: z.ZodObject<{
|
|
1841
|
+
pass_rate_gain: z.ZodNumber;
|
|
1842
|
+
token_reduction_pct: z.ZodNumber;
|
|
1843
|
+
verdict: z.ZodEnum<["CERTIFIED_IMPROVEMENT", "NEUTRAL", "REGRESSION"]>;
|
|
1844
|
+
}, "strict", z.ZodTypeAny, {
|
|
1845
|
+
pass_rate_gain: number;
|
|
1846
|
+
token_reduction_pct: number;
|
|
1847
|
+
verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
|
|
1848
|
+
}, {
|
|
1849
|
+
pass_rate_gain: number;
|
|
1850
|
+
token_reduction_pct: number;
|
|
1851
|
+
verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
|
|
1852
|
+
}>;
|
|
1853
|
+
passed: z.ZodDefault<z.ZodBoolean>;
|
|
1854
|
+
}, "strict", z.ZodTypeAny, {
|
|
1855
|
+
passed: boolean;
|
|
1856
|
+
skill_name: string;
|
|
1857
|
+
runner: string;
|
|
1858
|
+
timestamp: string;
|
|
1859
|
+
eval_cases_count: number;
|
|
1860
|
+
assertions_count: number;
|
|
1861
|
+
with_skill: {
|
|
1862
|
+
pass_rate_mean: number;
|
|
1863
|
+
pass_rate_stddev: number;
|
|
1864
|
+
tokens_mean: number;
|
|
1865
|
+
latency_ms_mean: number;
|
|
1866
|
+
};
|
|
1867
|
+
without_skill: {
|
|
1868
|
+
pass_rate_mean: number;
|
|
1869
|
+
pass_rate_stddev: number;
|
|
1870
|
+
tokens_mean: number;
|
|
1871
|
+
latency_ms_mean: number;
|
|
1872
|
+
};
|
|
1873
|
+
delta: {
|
|
1874
|
+
pass_rate_gain: number;
|
|
1875
|
+
token_reduction_pct: number;
|
|
1876
|
+
verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
|
|
1877
|
+
};
|
|
1878
|
+
}, {
|
|
1879
|
+
skill_name: string;
|
|
1880
|
+
timestamp: string;
|
|
1881
|
+
with_skill: {
|
|
1882
|
+
pass_rate_mean: number;
|
|
1883
|
+
pass_rate_stddev: number;
|
|
1884
|
+
tokens_mean: number;
|
|
1885
|
+
latency_ms_mean: number;
|
|
1886
|
+
};
|
|
1887
|
+
without_skill: {
|
|
1888
|
+
pass_rate_mean: number;
|
|
1889
|
+
pass_rate_stddev: number;
|
|
1890
|
+
tokens_mean: number;
|
|
1891
|
+
latency_ms_mean: number;
|
|
1892
|
+
};
|
|
1893
|
+
delta: {
|
|
1894
|
+
pass_rate_gain: number;
|
|
1895
|
+
token_reduction_pct: number;
|
|
1896
|
+
verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
|
|
1897
|
+
};
|
|
1898
|
+
passed?: boolean | undefined;
|
|
1899
|
+
runner?: string | undefined;
|
|
1900
|
+
eval_cases_count?: number | undefined;
|
|
1901
|
+
assertions_count?: number | undefined;
|
|
1902
|
+
}>, "many">>;
|
|
1903
|
+
passed: z.ZodBoolean;
|
|
1904
|
+
}, "strict", z.ZodTypeAny, {
|
|
1905
|
+
catalog_path: string;
|
|
1906
|
+
passed: boolean;
|
|
1907
|
+
skills_evaluated: number;
|
|
1908
|
+
mean_with_skill_pass_rate: number;
|
|
1909
|
+
mean_without_skill_pass_rate: number;
|
|
1910
|
+
mean_pass_rate_gain: number;
|
|
1911
|
+
mean_token_reduction_pct: number;
|
|
1912
|
+
benchmarks: {
|
|
1913
|
+
passed: boolean;
|
|
1914
|
+
skill_name: string;
|
|
1915
|
+
runner: string;
|
|
1916
|
+
timestamp: string;
|
|
1917
|
+
eval_cases_count: number;
|
|
1918
|
+
assertions_count: number;
|
|
1919
|
+
with_skill: {
|
|
1920
|
+
pass_rate_mean: number;
|
|
1921
|
+
pass_rate_stddev: number;
|
|
1922
|
+
tokens_mean: number;
|
|
1923
|
+
latency_ms_mean: number;
|
|
1924
|
+
};
|
|
1925
|
+
without_skill: {
|
|
1926
|
+
pass_rate_mean: number;
|
|
1927
|
+
pass_rate_stddev: number;
|
|
1928
|
+
tokens_mean: number;
|
|
1929
|
+
latency_ms_mean: number;
|
|
1930
|
+
};
|
|
1931
|
+
delta: {
|
|
1932
|
+
pass_rate_gain: number;
|
|
1933
|
+
token_reduction_pct: number;
|
|
1934
|
+
verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
|
|
1935
|
+
};
|
|
1936
|
+
}[];
|
|
1937
|
+
}, {
|
|
1938
|
+
catalog_path: string;
|
|
1939
|
+
passed: boolean;
|
|
1940
|
+
skills_evaluated: number;
|
|
1941
|
+
mean_with_skill_pass_rate: number;
|
|
1942
|
+
mean_without_skill_pass_rate: number;
|
|
1943
|
+
mean_pass_rate_gain: number;
|
|
1944
|
+
mean_token_reduction_pct: number;
|
|
1945
|
+
benchmarks?: {
|
|
1946
|
+
skill_name: string;
|
|
1947
|
+
timestamp: string;
|
|
1948
|
+
with_skill: {
|
|
1949
|
+
pass_rate_mean: number;
|
|
1950
|
+
pass_rate_stddev: number;
|
|
1951
|
+
tokens_mean: number;
|
|
1952
|
+
latency_ms_mean: number;
|
|
1953
|
+
};
|
|
1954
|
+
without_skill: {
|
|
1955
|
+
pass_rate_mean: number;
|
|
1956
|
+
pass_rate_stddev: number;
|
|
1957
|
+
tokens_mean: number;
|
|
1958
|
+
latency_ms_mean: number;
|
|
1959
|
+
};
|
|
1960
|
+
delta: {
|
|
1961
|
+
pass_rate_gain: number;
|
|
1962
|
+
token_reduction_pct: number;
|
|
1963
|
+
verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
|
|
1964
|
+
};
|
|
1965
|
+
passed?: boolean | undefined;
|
|
1966
|
+
runner?: string | undefined;
|
|
1967
|
+
eval_cases_count?: number | undefined;
|
|
1968
|
+
assertions_count?: number | undefined;
|
|
1969
|
+
}[] | undefined;
|
|
1970
|
+
}>;
|
|
1971
|
+
type CatalogEvalSummary = z.infer<typeof CatalogEvalSummarySchema>;
|
|
1972
|
+
declare function evaluateSkillDirectory(skillDir: string): SkillBenchmark;
|
|
1973
|
+
declare function evaluateCatalog(catalogDir: string, options?: {
|
|
1974
|
+
skillFilter?: string;
|
|
1975
|
+
}): CatalogEvalSummary;
|
|
1976
|
+
declare function formatEvalSummary(summary: CatalogEvalSummary, format?: "table" | "json" | "markdown" | "html" | "github"): string;
|
|
1977
|
+
|
|
1978
|
+
/**
|
|
1979
|
+
* Native JSON-RPC 2.0 Stdio Model Context Protocol Server (`src/mcp/index.ts`).
|
|
1980
|
+
*
|
|
1981
|
+
* Exposes zero-API SkillOps tools over stdio without polluting stdout:
|
|
1982
|
+
* - `audit_catalog`
|
|
1983
|
+
* - `analyze_repo_tokens`
|
|
1984
|
+
* - `route_repo_skills`
|
|
1985
|
+
* - `run_skill_script`
|
|
1986
|
+
* - `get_skill_benchmark`
|
|
1987
|
+
* - `list_catalog_items`
|
|
1988
|
+
*/
|
|
1989
|
+
|
|
1990
|
+
interface JsonRpcRequest {
|
|
1991
|
+
readonly jsonrpc: "2.0";
|
|
1992
|
+
readonly id?: string | number | null;
|
|
1993
|
+
readonly method: string;
|
|
1994
|
+
readonly params?: Record<string, unknown>;
|
|
1995
|
+
}
|
|
1996
|
+
interface JsonRpcResponse {
|
|
1997
|
+
readonly jsonrpc: "2.0";
|
|
1998
|
+
readonly id: string | number | null;
|
|
1999
|
+
readonly result?: unknown;
|
|
2000
|
+
readonly error?: {
|
|
2001
|
+
readonly code: number;
|
|
2002
|
+
readonly message: string;
|
|
2003
|
+
};
|
|
2004
|
+
}
|
|
2005
|
+
interface McpServerContext {
|
|
2006
|
+
readonly repoPath: string;
|
|
2007
|
+
readonly catalogDir: string;
|
|
2008
|
+
}
|
|
2009
|
+
declare function handleMcpJsonRpcRequest(request: JsonRpcRequest, context: McpServerContext): JsonRpcResponse | null;
|
|
2010
|
+
declare function startMcpStdioServer(context: McpServerContext): void;
|
|
2011
|
+
interface McpSetupOptions {
|
|
2012
|
+
readonly targets?: readonly RuntimeTarget[];
|
|
2013
|
+
readonly dryRun?: boolean;
|
|
2014
|
+
readonly serverName?: string;
|
|
2015
|
+
}
|
|
2016
|
+
interface McpConfigAction {
|
|
2017
|
+
readonly target: RuntimeTarget;
|
|
2018
|
+
readonly display_name: string;
|
|
2019
|
+
readonly relative_path: string;
|
|
2020
|
+
readonly status: "created" | "updated" | "unchanged" | "unsupported";
|
|
2021
|
+
}
|
|
2022
|
+
interface McpSetupReport {
|
|
2023
|
+
readonly repo_path: string;
|
|
2024
|
+
readonly dry_run: boolean;
|
|
2025
|
+
readonly targets_requested: readonly RuntimeTarget[];
|
|
2026
|
+
readonly configured_count: number;
|
|
2027
|
+
readonly actions: readonly McpConfigAction[];
|
|
2028
|
+
}
|
|
2029
|
+
/**
|
|
2030
|
+
* Idempotently register the SkillOps stdio MCP server (`npx -y skillops-cli@latest mcp`)
|
|
2031
|
+
* across all requested AI coding agent harnesses that support MCP.
|
|
2032
|
+
*/
|
|
2033
|
+
declare function setupMcpForHarnesses(repoPath: string, options?: McpSetupOptions): McpSetupReport;
|
|
2034
|
+
/**
|
|
2035
|
+
* Format an `McpSetupReport` as a terminal table, Markdown report, or JSON string.
|
|
2036
|
+
*/
|
|
2037
|
+
declare function formatMcpSetupReport(report: McpSetupReport, format?: "table" | "json" | "markdown"): string;
|
|
2038
|
+
|
|
2039
|
+
export { ALL_RUNTIME_TARGETS, type AddOptions, type AnalyzeTokenEconomyOptions, type AuditCatalogOptions, type BenchmarkArm, BenchmarkArmSchema, type BenchmarkDelta, BenchmarkDeltaSchema, CORE_RUNTIME_TARGETS, type CatalogEvalSummary, CatalogEvalSummarySchema, type CatalogTokenBudgetSummary, type CatalogTrack, CatalogTrackSchema, type CleanOptions, type CollisionPair, CollisionPairSchema, type CollisionReport, CollisionReportSchema, type CollisionSeverity, CollisionSeveritySchema, type DiagnoseRepositoryOptions, type DoctorCheckItem, type DoctorReport, type EvalAssertion, EvalAssertionSchema, type EvalCase, EvalCaseSchema, ExitCode, type ExitCodeValue, type HarnessCategory, type HarnessInspectionEntry, type HarnessInspectionReport, type HarnessSkillFormat, type JsonRpcRequest, type JsonRpcResponse, type LoadedSkillOpsConfigResult, type LockfileArtifactDiagnostic, type McpConfigAction, type McpServerContext, type McpSetupOptions, type McpSetupReport, type ParseSkillOptions, type ParsedSkillDirectory, type ParsedSubagentFile, RUNTIME_HARNESS_SPECS, type RemoveOptions, RepoFingerprinter, type RepoProfile, RepoProfileSchema, type RouteOptions, type RoutedBundle, RoutedBundleSchema, type RoutingSignals, RoutingSignalsSchema, type RuntimeHarnessSpec, type RuntimeTarget, RuntimeTargetSchema, SKILLOPS_VERSION, type ScoredSkill, ScoredSkillSchema, type ScriptEntrypoint, ScriptEntrypointSchema, type SkillBenchmark, SkillBenchmarkSchema, type SkillEntrypoints, SkillEntrypointsSchema, type SkillEvalSuite, SkillEvalSuiteSchema, type SkillManifest, type SkillManifestInput, SkillManifestSchema, type SkillOpsConfig, SkillOpsConfigSchema, type SkillOpsDetectedStackConfig, SkillOpsDetectedStackConfigSchema, type SkillOpsTokenEconomyConfig, SkillOpsTokenEconomyConfigSchema, type SkillTokenBudgetAudit, type SkippedSkill, SkippedSkillSchema, type SubagentManifest, SubagentManifestSchema, type SubagentTokenBudgetAudit, type SyncLockEntry, SyncLockEntrySchema, type SyncLockfile, SyncLockfileSchema, type SyncOptions, type SyncReport, SyncReportSchema, type SyncedArtifact, SyncedArtifactSchema, type TokenEconomyReport, TokenEconomyReportSchema, type TokenFileCategory, TokenFileCategorySchema, type TokenFileEntry, TokenFileEntrySchema, type TokenWasteHotspot, TokenWasteHotspotSchema, addSkillOrSubagent, analyzeRepoTokenEconomy, auditCatalog, auditCatalogTokenBudgets, auditSkillTokenBudget, auditSubagentTokenBudget, classifyCollisionSeverity, cleanSyncedArtifacts, compileSkillBundle, computeCollisionMatrix, computeFeatureCosine, computeIdfWeights, computeSha256, countWords, createCollisionPair, createCollisionReport, createSkillManifest, createSubagentManifest, detectInstalledHarnesses, diagnoseRepository, discoverSkillDirectories, discoverSubagentFiles, estimateTokenCount, evaluateCatalog, evaluateSkillDirectory, extractSkillFeatures, fingerprintRepository, formatDoctorReport, formatEvalSummary, formatHarnessInspectionReport, formatMcpSetupReport, formatRoutedBundle, formatSyncReport, formatTokenEconomyReport, handleMcpJsonRpcRequest, inspectHarnesses, loadSkillOpsConfig, normalizePackageName, parseSkillDirectory, parseSkillMdFile, parseSubagentFile, parseSubagentMdFile, removeSkillOrSubagent, renderCodexAgentsIndex, resolveRuntimeTargets, routeRepository, scoreSkillAgainstProfile, setupMcpForHarnesses, splitFrontmatter, startMcpStdioServer, stripCodexAgentsBlock, stripNegativeTriggerClauses, syncRepository, tokenizeRoutingText };
|