skillops-cli 0.0.0-stage → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/.github/agents/address-review.agent.md +14 -0
  2. package/.github/agents/docs-sync.agent.md +18 -0
  3. package/.github/agents/pr-brief.agent.md +24 -0
  4. package/.github/agents/skill-auditor.agent.md +22 -0
  5. package/LICENSE +21 -0
  6. package/README.md +184 -2
  7. package/SKILL_CONTRACT.md +146 -0
  8. package/catalog/ai-engineering/agent-harness-auditor/SKILL.md +44 -0
  9. package/catalog/ai-engineering/agent-harness-auditor/evals/benchmark.json +22 -0
  10. package/catalog/ai-engineering/agent-harness-auditor/evals/evals.json +40 -0
  11. package/catalog/ai-engineering/agent-harness-auditor/scripts/harness_linter.py +101 -0
  12. package/catalog/ai-engineering/context-pruner-advisor/SKILL.md +44 -0
  13. package/catalog/ai-engineering/context-pruner-advisor/evals/benchmark.json +22 -0
  14. package/catalog/ai-engineering/context-pruner-advisor/evals/evals.json +40 -0
  15. package/catalog/ai-engineering/context-pruner-advisor/scripts/context_pruner.py +114 -0
  16. package/catalog/ai-engineering/mcp-architect/SKILL.md +45 -0
  17. package/catalog/ai-engineering/mcp-architect/evals/benchmark.json +22 -0
  18. package/catalog/ai-engineering/mcp-architect/evals/evals.json +54 -0
  19. package/catalog/ai-engineering/mcp-architect/scripts/validate_mcp_server.py +156 -0
  20. package/catalog/ai-engineering/prompt-red-teaming/SKILL.md +43 -0
  21. package/catalog/ai-engineering/prompt-red-teaming/evals/benchmark.json +22 -0
  22. package/catalog/ai-engineering/prompt-red-teaming/evals/evals.json +40 -0
  23. package/catalog/ai-engineering/prompt-red-teaming/scripts/injection_scanner.py +79 -0
  24. package/catalog/arch-quality/ast-blast-radius/SKILL.md +41 -0
  25. package/catalog/arch-quality/ast-blast-radius/evals/benchmark.json +22 -0
  26. package/catalog/arch-quality/ast-blast-radius/evals/evals.json +40 -0
  27. package/catalog/arch-quality/ast-blast-radius/scripts/analyze_call_graph.py +114 -0
  28. package/catalog/arch-quality/bug-reproducer-tdd/SKILL.md +42 -0
  29. package/catalog/arch-quality/bug-reproducer-tdd/evals/benchmark.json +22 -0
  30. package/catalog/arch-quality/bug-reproducer-tdd/evals/evals.json +40 -0
  31. package/catalog/arch-quality/bug-reproducer-tdd/scripts/repro_harness_check.py +129 -0
  32. package/catalog/arch-quality/security-sast-gate/SKILL.md +42 -0
  33. package/catalog/arch-quality/security-sast-gate/evals/benchmark.json +22 -0
  34. package/catalog/arch-quality/security-sast-gate/evals/evals.json +40 -0
  35. package/catalog/arch-quality/security-sast-gate/scripts/owasp_ast_scanner.py +153 -0
  36. package/catalog/python-backend/concurrency-race-detector/SKILL.md +43 -0
  37. package/catalog/python-backend/concurrency-race-detector/evals/benchmark.json +22 -0
  38. package/catalog/python-backend/concurrency-race-detector/evals/evals.json +40 -0
  39. package/catalog/python-backend/concurrency-race-detector/scripts/event_loop_blocking_scanner.py +127 -0
  40. package/catalog/python-backend/fastapi-production/SKILL.md +44 -0
  41. package/catalog/python-backend/fastapi-production/evals/benchmark.json +22 -0
  42. package/catalog/python-backend/fastapi-production/evals/evals.json +54 -0
  43. package/catalog/python-backend/fastapi-production/scripts/audit_fastapi_routes.py +169 -0
  44. package/catalog/python-backend/postgres-query-doctor/SKILL.md +44 -0
  45. package/catalog/python-backend/postgres-query-doctor/evals/benchmark.json +22 -0
  46. package/catalog/python-backend/postgres-query-doctor/evals/evals.json +54 -0
  47. package/catalog/python-backend/postgres-query-doctor/scripts/analyze_sql_safety.py +130 -0
  48. package/catalog/subagents/blast-radius-auditor/SUBAGENT.md +26 -0
  49. package/catalog/subagents/context-scout/SUBAGENT.md +23 -0
  50. package/catalog/subagents/red-team-breaker/SUBAGENT.md +22 -0
  51. package/catalog/subagents/tdd-reproducer-agent/SUBAGENT.md +23 -0
  52. package/catalog/subagents/token-budget-governor/SUBAGENT.md +26 -0
  53. package/dist/cli.js +6701 -0
  54. package/dist/index.d.ts +2295 -0
  55. package/dist/index.js +6035 -0
  56. package/docs/BENCHMARKS.md +82 -0
  57. package/package.json +84 -4
@@ -0,0 +1,2295 @@
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.3.0";
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
+ * Zero-API Deterministic TDD Benchmark Runner & Static HTML/Markdown Exporter (`src/eval/index.ts`).
1422
+ *
1423
+ * Enforces INV-SKILL-05:
1424
+ * - Validates `evals/evals.json` assertions and `evals/benchmark.json` (`with_skill` vs `without_skill`).
1425
+ * - Verifies that every skill demonstrates measurable pass-rate lift (`delta.pass_rate_gain >= 0.15`)
1426
+ * and reduced token consumption compared to unguided baseline runs.
1427
+ * - Exports static HTML dashboards, GitHub-flavored Markdown tables, JSON, and ASCII tables.
1428
+ */
1429
+
1430
+ declare const EvalAssertionSchema: z.ZodObject<{
1431
+ id: z.ZodString;
1432
+ type: z.ZodString;
1433
+ target: z.ZodString;
1434
+ description: z.ZodString;
1435
+ }, "strict", z.ZodTypeAny, {
1436
+ type: string;
1437
+ description: string;
1438
+ target: string;
1439
+ id: string;
1440
+ }, {
1441
+ type: string;
1442
+ description: string;
1443
+ target: string;
1444
+ id: string;
1445
+ }>;
1446
+ type EvalAssertion = z.infer<typeof EvalAssertionSchema>;
1447
+ declare const EvalCaseSchema: z.ZodObject<{
1448
+ id: z.ZodString;
1449
+ name: z.ZodString;
1450
+ prompt: z.ZodString;
1451
+ fixtures: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1452
+ assertions: z.ZodArray<z.ZodObject<{
1453
+ id: z.ZodString;
1454
+ type: z.ZodString;
1455
+ target: z.ZodString;
1456
+ description: z.ZodString;
1457
+ }, "strict", z.ZodTypeAny, {
1458
+ type: string;
1459
+ description: string;
1460
+ target: string;
1461
+ id: string;
1462
+ }, {
1463
+ type: string;
1464
+ description: string;
1465
+ target: string;
1466
+ id: string;
1467
+ }>, "many">;
1468
+ }, "strict", z.ZodTypeAny, {
1469
+ name: string;
1470
+ id: string;
1471
+ prompt: string;
1472
+ fixtures: string[];
1473
+ assertions: {
1474
+ type: string;
1475
+ description: string;
1476
+ target: string;
1477
+ id: string;
1478
+ }[];
1479
+ }, {
1480
+ name: string;
1481
+ id: string;
1482
+ prompt: string;
1483
+ assertions: {
1484
+ type: string;
1485
+ description: string;
1486
+ target: string;
1487
+ id: string;
1488
+ }[];
1489
+ fixtures?: string[] | undefined;
1490
+ }>;
1491
+ type EvalCase = z.infer<typeof EvalCaseSchema>;
1492
+ declare const SkillEvalSuiteSchema: z.ZodObject<{
1493
+ skill_name: z.ZodString;
1494
+ schema_version: z.ZodDefault<z.ZodString>;
1495
+ evals: z.ZodArray<z.ZodObject<{
1496
+ id: z.ZodString;
1497
+ name: z.ZodString;
1498
+ prompt: z.ZodString;
1499
+ fixtures: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1500
+ assertions: z.ZodArray<z.ZodObject<{
1501
+ id: z.ZodString;
1502
+ type: z.ZodString;
1503
+ target: z.ZodString;
1504
+ description: z.ZodString;
1505
+ }, "strict", z.ZodTypeAny, {
1506
+ type: string;
1507
+ description: string;
1508
+ target: string;
1509
+ id: string;
1510
+ }, {
1511
+ type: string;
1512
+ description: string;
1513
+ target: string;
1514
+ id: string;
1515
+ }>, "many">;
1516
+ }, "strict", z.ZodTypeAny, {
1517
+ name: string;
1518
+ id: string;
1519
+ prompt: string;
1520
+ fixtures: string[];
1521
+ assertions: {
1522
+ type: string;
1523
+ description: string;
1524
+ target: string;
1525
+ id: string;
1526
+ }[];
1527
+ }, {
1528
+ name: string;
1529
+ id: string;
1530
+ prompt: string;
1531
+ assertions: {
1532
+ type: string;
1533
+ description: string;
1534
+ target: string;
1535
+ id: string;
1536
+ }[];
1537
+ fixtures?: string[] | undefined;
1538
+ }>, "many">;
1539
+ }, "strict", z.ZodTypeAny, {
1540
+ skill_name: string;
1541
+ schema_version: string;
1542
+ evals: {
1543
+ name: string;
1544
+ id: string;
1545
+ prompt: string;
1546
+ fixtures: string[];
1547
+ assertions: {
1548
+ type: string;
1549
+ description: string;
1550
+ target: string;
1551
+ id: string;
1552
+ }[];
1553
+ }[];
1554
+ }, {
1555
+ skill_name: string;
1556
+ evals: {
1557
+ name: string;
1558
+ id: string;
1559
+ prompt: string;
1560
+ assertions: {
1561
+ type: string;
1562
+ description: string;
1563
+ target: string;
1564
+ id: string;
1565
+ }[];
1566
+ fixtures?: string[] | undefined;
1567
+ }[];
1568
+ schema_version?: string | undefined;
1569
+ }>;
1570
+ type SkillEvalSuite = z.infer<typeof SkillEvalSuiteSchema>;
1571
+ declare const BenchmarkArmSchema: z.ZodObject<{
1572
+ pass_rate_mean: z.ZodNumber;
1573
+ pass_rate_stddev: z.ZodNumber;
1574
+ tokens_mean: z.ZodNumber;
1575
+ latency_ms_mean: z.ZodNumber;
1576
+ }, "strict", z.ZodTypeAny, {
1577
+ pass_rate_mean: number;
1578
+ pass_rate_stddev: number;
1579
+ tokens_mean: number;
1580
+ latency_ms_mean: number;
1581
+ }, {
1582
+ pass_rate_mean: number;
1583
+ pass_rate_stddev: number;
1584
+ tokens_mean: number;
1585
+ latency_ms_mean: number;
1586
+ }>;
1587
+ type BenchmarkArm = z.infer<typeof BenchmarkArmSchema>;
1588
+ declare const BenchmarkDeltaSchema: z.ZodObject<{
1589
+ pass_rate_gain: z.ZodNumber;
1590
+ token_reduction_pct: z.ZodNumber;
1591
+ verdict: z.ZodEnum<["CERTIFIED_IMPROVEMENT", "NEUTRAL", "REGRESSION"]>;
1592
+ }, "strict", z.ZodTypeAny, {
1593
+ pass_rate_gain: number;
1594
+ token_reduction_pct: number;
1595
+ verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
1596
+ }, {
1597
+ pass_rate_gain: number;
1598
+ token_reduction_pct: number;
1599
+ verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
1600
+ }>;
1601
+ type BenchmarkDelta = z.infer<typeof BenchmarkDeltaSchema>;
1602
+ declare const SkillBenchmarkSchema: z.ZodObject<{
1603
+ skill_name: z.ZodString;
1604
+ runner: z.ZodDefault<z.ZodString>;
1605
+ timestamp: z.ZodString;
1606
+ eval_cases_count: z.ZodDefault<z.ZodNumber>;
1607
+ assertions_count: z.ZodDefault<z.ZodNumber>;
1608
+ with_skill: z.ZodObject<{
1609
+ pass_rate_mean: z.ZodNumber;
1610
+ pass_rate_stddev: z.ZodNumber;
1611
+ tokens_mean: z.ZodNumber;
1612
+ latency_ms_mean: z.ZodNumber;
1613
+ }, "strict", z.ZodTypeAny, {
1614
+ pass_rate_mean: number;
1615
+ pass_rate_stddev: number;
1616
+ tokens_mean: number;
1617
+ latency_ms_mean: number;
1618
+ }, {
1619
+ pass_rate_mean: number;
1620
+ pass_rate_stddev: number;
1621
+ tokens_mean: number;
1622
+ latency_ms_mean: number;
1623
+ }>;
1624
+ without_skill: z.ZodObject<{
1625
+ pass_rate_mean: z.ZodNumber;
1626
+ pass_rate_stddev: z.ZodNumber;
1627
+ tokens_mean: z.ZodNumber;
1628
+ latency_ms_mean: z.ZodNumber;
1629
+ }, "strict", z.ZodTypeAny, {
1630
+ pass_rate_mean: number;
1631
+ pass_rate_stddev: number;
1632
+ tokens_mean: number;
1633
+ latency_ms_mean: number;
1634
+ }, {
1635
+ pass_rate_mean: number;
1636
+ pass_rate_stddev: number;
1637
+ tokens_mean: number;
1638
+ latency_ms_mean: number;
1639
+ }>;
1640
+ delta: z.ZodObject<{
1641
+ pass_rate_gain: z.ZodNumber;
1642
+ token_reduction_pct: z.ZodNumber;
1643
+ verdict: z.ZodEnum<["CERTIFIED_IMPROVEMENT", "NEUTRAL", "REGRESSION"]>;
1644
+ }, "strict", z.ZodTypeAny, {
1645
+ pass_rate_gain: number;
1646
+ token_reduction_pct: number;
1647
+ verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
1648
+ }, {
1649
+ pass_rate_gain: number;
1650
+ token_reduction_pct: number;
1651
+ verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
1652
+ }>;
1653
+ passed: z.ZodDefault<z.ZodBoolean>;
1654
+ }, "strict", z.ZodTypeAny, {
1655
+ passed: boolean;
1656
+ skill_name: string;
1657
+ runner: string;
1658
+ timestamp: string;
1659
+ eval_cases_count: number;
1660
+ assertions_count: number;
1661
+ with_skill: {
1662
+ pass_rate_mean: number;
1663
+ pass_rate_stddev: number;
1664
+ tokens_mean: number;
1665
+ latency_ms_mean: number;
1666
+ };
1667
+ without_skill: {
1668
+ pass_rate_mean: number;
1669
+ pass_rate_stddev: number;
1670
+ tokens_mean: number;
1671
+ latency_ms_mean: number;
1672
+ };
1673
+ delta: {
1674
+ pass_rate_gain: number;
1675
+ token_reduction_pct: number;
1676
+ verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
1677
+ };
1678
+ }, {
1679
+ skill_name: string;
1680
+ timestamp: string;
1681
+ with_skill: {
1682
+ pass_rate_mean: number;
1683
+ pass_rate_stddev: number;
1684
+ tokens_mean: number;
1685
+ latency_ms_mean: number;
1686
+ };
1687
+ without_skill: {
1688
+ pass_rate_mean: number;
1689
+ pass_rate_stddev: number;
1690
+ tokens_mean: number;
1691
+ latency_ms_mean: number;
1692
+ };
1693
+ delta: {
1694
+ pass_rate_gain: number;
1695
+ token_reduction_pct: number;
1696
+ verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
1697
+ };
1698
+ passed?: boolean | undefined;
1699
+ runner?: string | undefined;
1700
+ eval_cases_count?: number | undefined;
1701
+ assertions_count?: number | undefined;
1702
+ }>;
1703
+ type SkillBenchmark = z.infer<typeof SkillBenchmarkSchema>;
1704
+ declare const CatalogEvalSummarySchema: z.ZodObject<{
1705
+ catalog_path: z.ZodString;
1706
+ skills_evaluated: z.ZodNumber;
1707
+ mean_with_skill_pass_rate: z.ZodNumber;
1708
+ mean_without_skill_pass_rate: z.ZodNumber;
1709
+ mean_pass_rate_gain: z.ZodNumber;
1710
+ mean_token_reduction_pct: z.ZodNumber;
1711
+ benchmarks: z.ZodDefault<z.ZodArray<z.ZodObject<{
1712
+ skill_name: z.ZodString;
1713
+ runner: z.ZodDefault<z.ZodString>;
1714
+ timestamp: z.ZodString;
1715
+ eval_cases_count: z.ZodDefault<z.ZodNumber>;
1716
+ assertions_count: z.ZodDefault<z.ZodNumber>;
1717
+ with_skill: z.ZodObject<{
1718
+ pass_rate_mean: z.ZodNumber;
1719
+ pass_rate_stddev: z.ZodNumber;
1720
+ tokens_mean: z.ZodNumber;
1721
+ latency_ms_mean: z.ZodNumber;
1722
+ }, "strict", z.ZodTypeAny, {
1723
+ pass_rate_mean: number;
1724
+ pass_rate_stddev: number;
1725
+ tokens_mean: number;
1726
+ latency_ms_mean: number;
1727
+ }, {
1728
+ pass_rate_mean: number;
1729
+ pass_rate_stddev: number;
1730
+ tokens_mean: number;
1731
+ latency_ms_mean: number;
1732
+ }>;
1733
+ without_skill: z.ZodObject<{
1734
+ pass_rate_mean: z.ZodNumber;
1735
+ pass_rate_stddev: z.ZodNumber;
1736
+ tokens_mean: z.ZodNumber;
1737
+ latency_ms_mean: z.ZodNumber;
1738
+ }, "strict", z.ZodTypeAny, {
1739
+ pass_rate_mean: number;
1740
+ pass_rate_stddev: number;
1741
+ tokens_mean: number;
1742
+ latency_ms_mean: number;
1743
+ }, {
1744
+ pass_rate_mean: number;
1745
+ pass_rate_stddev: number;
1746
+ tokens_mean: number;
1747
+ latency_ms_mean: number;
1748
+ }>;
1749
+ delta: z.ZodObject<{
1750
+ pass_rate_gain: z.ZodNumber;
1751
+ token_reduction_pct: z.ZodNumber;
1752
+ verdict: z.ZodEnum<["CERTIFIED_IMPROVEMENT", "NEUTRAL", "REGRESSION"]>;
1753
+ }, "strict", z.ZodTypeAny, {
1754
+ pass_rate_gain: number;
1755
+ token_reduction_pct: number;
1756
+ verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
1757
+ }, {
1758
+ pass_rate_gain: number;
1759
+ token_reduction_pct: number;
1760
+ verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
1761
+ }>;
1762
+ passed: z.ZodDefault<z.ZodBoolean>;
1763
+ }, "strict", z.ZodTypeAny, {
1764
+ passed: boolean;
1765
+ skill_name: string;
1766
+ runner: string;
1767
+ timestamp: string;
1768
+ eval_cases_count: number;
1769
+ assertions_count: number;
1770
+ with_skill: {
1771
+ pass_rate_mean: number;
1772
+ pass_rate_stddev: number;
1773
+ tokens_mean: number;
1774
+ latency_ms_mean: number;
1775
+ };
1776
+ without_skill: {
1777
+ pass_rate_mean: number;
1778
+ pass_rate_stddev: number;
1779
+ tokens_mean: number;
1780
+ latency_ms_mean: number;
1781
+ };
1782
+ delta: {
1783
+ pass_rate_gain: number;
1784
+ token_reduction_pct: number;
1785
+ verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
1786
+ };
1787
+ }, {
1788
+ skill_name: string;
1789
+ timestamp: string;
1790
+ with_skill: {
1791
+ pass_rate_mean: number;
1792
+ pass_rate_stddev: number;
1793
+ tokens_mean: number;
1794
+ latency_ms_mean: number;
1795
+ };
1796
+ without_skill: {
1797
+ pass_rate_mean: number;
1798
+ pass_rate_stddev: number;
1799
+ tokens_mean: number;
1800
+ latency_ms_mean: number;
1801
+ };
1802
+ delta: {
1803
+ pass_rate_gain: number;
1804
+ token_reduction_pct: number;
1805
+ verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
1806
+ };
1807
+ passed?: boolean | undefined;
1808
+ runner?: string | undefined;
1809
+ eval_cases_count?: number | undefined;
1810
+ assertions_count?: number | undefined;
1811
+ }>, "many">>;
1812
+ passed: z.ZodBoolean;
1813
+ }, "strict", z.ZodTypeAny, {
1814
+ catalog_path: string;
1815
+ passed: boolean;
1816
+ skills_evaluated: number;
1817
+ mean_with_skill_pass_rate: number;
1818
+ mean_without_skill_pass_rate: number;
1819
+ mean_pass_rate_gain: number;
1820
+ mean_token_reduction_pct: number;
1821
+ benchmarks: {
1822
+ passed: boolean;
1823
+ skill_name: string;
1824
+ runner: string;
1825
+ timestamp: string;
1826
+ eval_cases_count: number;
1827
+ assertions_count: number;
1828
+ with_skill: {
1829
+ pass_rate_mean: number;
1830
+ pass_rate_stddev: number;
1831
+ tokens_mean: number;
1832
+ latency_ms_mean: number;
1833
+ };
1834
+ without_skill: {
1835
+ pass_rate_mean: number;
1836
+ pass_rate_stddev: number;
1837
+ tokens_mean: number;
1838
+ latency_ms_mean: number;
1839
+ };
1840
+ delta: {
1841
+ pass_rate_gain: number;
1842
+ token_reduction_pct: number;
1843
+ verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
1844
+ };
1845
+ }[];
1846
+ }, {
1847
+ catalog_path: string;
1848
+ passed: boolean;
1849
+ skills_evaluated: number;
1850
+ mean_with_skill_pass_rate: number;
1851
+ mean_without_skill_pass_rate: number;
1852
+ mean_pass_rate_gain: number;
1853
+ mean_token_reduction_pct: number;
1854
+ benchmarks?: {
1855
+ skill_name: string;
1856
+ timestamp: string;
1857
+ with_skill: {
1858
+ pass_rate_mean: number;
1859
+ pass_rate_stddev: number;
1860
+ tokens_mean: number;
1861
+ latency_ms_mean: number;
1862
+ };
1863
+ without_skill: {
1864
+ pass_rate_mean: number;
1865
+ pass_rate_stddev: number;
1866
+ tokens_mean: number;
1867
+ latency_ms_mean: number;
1868
+ };
1869
+ delta: {
1870
+ pass_rate_gain: number;
1871
+ token_reduction_pct: number;
1872
+ verdict: "CERTIFIED_IMPROVEMENT" | "NEUTRAL" | "REGRESSION";
1873
+ };
1874
+ passed?: boolean | undefined;
1875
+ runner?: string | undefined;
1876
+ eval_cases_count?: number | undefined;
1877
+ assertions_count?: number | undefined;
1878
+ }[] | undefined;
1879
+ }>;
1880
+ type CatalogEvalSummary = z.infer<typeof CatalogEvalSummarySchema>;
1881
+ declare function evaluateSkillDirectory(skillDir: string): SkillBenchmark;
1882
+ declare function evaluateCatalog(catalogDir: string, options?: {
1883
+ skillFilter?: string;
1884
+ }): CatalogEvalSummary;
1885
+ declare function formatEvalSummary(summary: CatalogEvalSummary, format?: "table" | "json" | "markdown" | "html" | "github"): string;
1886
+
1887
+ /**
1888
+ * SkillOps Framework & Library Operations Engine (Issue #126).
1889
+ *
1890
+ * Implements:
1891
+ * 1. Library Explorer: `inspectCatalogItem` (`skillops info <name>`) & `searchCatalog` (`skillops search <query>`)
1892
+ * 2. Framework Scaffolder: `scaffoldFrameworkItem` (`skillops create skill|subagent <name>`)
1893
+ * 3. 1-Command Onboarding Pipeline: `runQuickstart` (`skillops quickstart` / `skillops setup`)
1894
+ */
1895
+
1896
+ interface CatalogItemInfo {
1897
+ readonly kind: "skill" | "subagent";
1898
+ readonly name: string;
1899
+ readonly description: string;
1900
+ readonly path: string;
1901
+ readonly l1Tokens: number;
1902
+ readonly l2Lines: number;
1903
+ readonly l2Tokens: number;
1904
+ readonly savingsPct: number;
1905
+ readonly scripts: readonly string[];
1906
+ readonly evalCasesCount: number;
1907
+ readonly tools: readonly string[];
1908
+ readonly maxOutputTokens: number | null;
1909
+ readonly isolation: string | null;
1910
+ readonly headings: readonly string[];
1911
+ }
1912
+ /**
1913
+ * Inspect a single Skill or Subagent from the Library by name (`skillops info <name>`).
1914
+ */
1915
+ declare function inspectCatalogItem(catalogDir: string, itemName: string): CatalogItemInfo;
1916
+ /**
1917
+ * Format detailed inspection card for a Skill or Subagent.
1918
+ */
1919
+ declare function formatCatalogItemInfo(info: CatalogItemInfo, format?: "table" | "json" | "markdown", colorEnabled?: boolean): string;
1920
+ interface CatalogSearchMatch {
1921
+ readonly kind: "skill" | "subagent";
1922
+ readonly name: string;
1923
+ readonly score: number;
1924
+ readonly tokens: number;
1925
+ readonly summary: string;
1926
+ }
1927
+ interface CatalogSearchReport {
1928
+ readonly query: string;
1929
+ readonly total_matches: number;
1930
+ readonly matches: readonly CatalogSearchMatch[];
1931
+ }
1932
+ /**
1933
+ * Search the SkillOps Library of Skills & Subagents by keyword (`skillops search <query>`).
1934
+ */
1935
+ declare function searchCatalog(catalogDir: string, query: string): CatalogSearchReport;
1936
+ /**
1937
+ * Format search results from the SkillOps Library.
1938
+ */
1939
+ declare function formatCatalogSearchReport(report: CatalogSearchReport, format?: "table" | "json" | "markdown", colorEnabled?: boolean): string;
1940
+ interface ScaffoldResult {
1941
+ readonly kind: "skill" | "subagent";
1942
+ readonly name: string;
1943
+ readonly target_dir: string;
1944
+ readonly created_files: readonly string[];
1945
+ }
1946
+ interface ScaffoldOptions {
1947
+ readonly description?: string;
1948
+ readonly force?: boolean;
1949
+ }
1950
+ /**
1951
+ * Scaffold a new custom Hybrid Executable Skill (`INV-SKILL-01..03`) or Context-Isolated Subagent (`INV-SKILL-04`)
1952
+ * using the SkillOps Framework Contract (`skillops create skill|subagent <name>`).
1953
+ */
1954
+ declare function scaffoldFrameworkItem(catalogDir: string, kind: "skill" | "subagent", rawName: string, options?: ScaffoldOptions): ScaffoldResult;
1955
+ /**
1956
+ * Format the output of `skillops create skill|subagent <name>`.
1957
+ */
1958
+ declare function formatScaffoldReport(result: ScaffoldResult, format?: "table" | "json" | "markdown", colorEnabled?: boolean): string;
1959
+ interface QuickstartOptions {
1960
+ readonly targetsArg?: string;
1961
+ readonly maxSkills?: number;
1962
+ readonly dryRun?: boolean;
1963
+ readonly force?: boolean;
1964
+ readonly skipMcp?: boolean;
1965
+ }
1966
+ interface QuickstartReport {
1967
+ readonly repo_path: string;
1968
+ readonly config_path: string;
1969
+ readonly dry_run: boolean;
1970
+ readonly detected_languages: readonly string[];
1971
+ readonly detected_frameworks: readonly string[];
1972
+ readonly detected_harnesses: readonly RuntimeTarget[];
1973
+ readonly active_targets: readonly RuntimeTarget[];
1974
+ readonly selected_skills: readonly string[];
1975
+ readonly selected_subagents: readonly string[];
1976
+ readonly total_l1_tokens: number;
1977
+ readonly max_l1_budget: number;
1978
+ readonly synced_files_count: number;
1979
+ readonly mcp_configured_count: number;
1980
+ readonly passed: boolean;
1981
+ }
1982
+ /**
1983
+ * Execute the 1-Command Onboarding Pipeline (`skillops quickstart` / `skillops setup`).
1984
+ */
1985
+ declare function runQuickstart(repoPath: string, catalogDir: string, options?: QuickstartOptions): QuickstartReport;
1986
+ /**
1987
+ * Render the visual 4-step Quickstart summary dashboard.
1988
+ */
1989
+ declare function formatQuickstartReport(report: QuickstartReport, format?: "table" | "json" | "markdown", colorEnabled?: boolean): string;
1990
+
1991
+ /**
1992
+ * Native JSON-RPC 2.0 Stdio Model Context Protocol Server (`src/mcp/index.ts`).
1993
+ *
1994
+ * Exposes zero-API SkillOps tools over stdio without polluting stdout:
1995
+ * - `audit_catalog`
1996
+ * - `analyze_repo_tokens`
1997
+ * - `route_repo_skills`
1998
+ * - `run_skill_script`
1999
+ * - `get_skill_benchmark`
2000
+ * - `list_catalog_items`
2001
+ */
2002
+
2003
+ interface JsonRpcRequest {
2004
+ readonly jsonrpc: "2.0";
2005
+ readonly id?: string | number | null;
2006
+ readonly method: string;
2007
+ readonly params?: Record<string, unknown>;
2008
+ }
2009
+ interface JsonRpcResponse {
2010
+ readonly jsonrpc: "2.0";
2011
+ readonly id: string | number | null;
2012
+ readonly result?: unknown;
2013
+ readonly error?: {
2014
+ readonly code: number;
2015
+ readonly message: string;
2016
+ };
2017
+ }
2018
+ interface McpServerContext {
2019
+ readonly repoPath: string;
2020
+ readonly catalogDir: string;
2021
+ }
2022
+ declare function handleMcpJsonRpcRequest(request: JsonRpcRequest, context: McpServerContext): JsonRpcResponse | null;
2023
+ declare function startMcpStdioServer(context: McpServerContext): void;
2024
+ interface McpSetupOptions {
2025
+ readonly targets?: readonly RuntimeTarget[];
2026
+ readonly dryRun?: boolean;
2027
+ readonly serverName?: string;
2028
+ }
2029
+ interface McpConfigAction {
2030
+ readonly target: RuntimeTarget;
2031
+ readonly display_name: string;
2032
+ readonly relative_path: string;
2033
+ readonly status: "created" | "updated" | "unchanged" | "unsupported";
2034
+ }
2035
+ interface McpSetupReport {
2036
+ readonly repo_path: string;
2037
+ readonly dry_run: boolean;
2038
+ readonly targets_requested: readonly RuntimeTarget[];
2039
+ readonly configured_count: number;
2040
+ readonly actions: readonly McpConfigAction[];
2041
+ }
2042
+ /**
2043
+ * Idempotently register the SkillOps stdio MCP server (`npx -y skillops-cli@latest mcp`)
2044
+ * across all requested AI coding agent harnesses that support MCP.
2045
+ */
2046
+ declare function setupMcpForHarnesses(repoPath: string, options?: McpSetupOptions): McpSetupReport;
2047
+ /**
2048
+ * Format an `McpSetupReport` as a terminal table, Markdown report, or JSON string.
2049
+ */
2050
+ declare function formatMcpSetupReport(report: McpSetupReport, format?: "table" | "json" | "markdown"): string;
2051
+
2052
+ /**
2053
+ * Deterministic, zero-execution Repository Stack Fingerprinter (`src/router/fingerprinter.ts`).
2054
+ *
2055
+ * Inspects manifest files (`pyproject.toml`, `requirements*.txt`, `uv.lock`, `package.json`,
2056
+ * `tsconfig.json`, `Cargo.toml`, `go.mod`, `Dockerfile`, `docker-compose*.yml`, `.github/workflows`),
2057
+ * SQL files, and source files without executing untrusted repository code.
2058
+ */
2059
+
2060
+ declare function normalizePackageName(rawSpec: string): string;
2061
+ declare class RepoFingerprinter {
2062
+ readonly repoPath: string;
2063
+ constructor(repoPath: string);
2064
+ fingerprint(): RepoProfile;
2065
+ }
2066
+ declare function fingerprintRepository(repoPath: string): RepoProfile;
2067
+
2068
+ /**
2069
+ * Dynamic Skill & Subagent Router (`src/router/bundle_compiler.ts`).
2070
+ *
2071
+ * Enforces INV-SKILL-03:
2072
+ * - Compiles a deterministic, collision-free bundle of <= 12 skills (<= 1,500 L1 tokens,
2073
+ * < 0.78 pairwise cosine similarity) tailored to the repository fingerprint and task prompt.
2074
+ * - Selects matching Context-Isolated Subagents (`recommended_subagents`).
2075
+ */
2076
+
2077
+ interface RouteOptions {
2078
+ readonly maxSkills?: number;
2079
+ readonly maxL1Tokens?: number;
2080
+ readonly maxSimilarity?: number;
2081
+ readonly taskPrompt?: string;
2082
+ }
2083
+ declare function scoreSkillAgainstProfile(parsedSkill: ParsedSkillDirectory, profile: RepoProfile, taskPrompt?: string): {
2084
+ score: number;
2085
+ matchedSignals: string[];
2086
+ negativeMatch: string | null;
2087
+ };
2088
+ declare function compileSkillBundle(profile: RepoProfile, catalogDir: string, options?: RouteOptions): RoutedBundle;
2089
+ declare function routeRepository(repoPath: string, catalogDir: string, options?: RouteOptions): RoutedBundle;
2090
+ declare function formatRoutedBundle(bundle: RoutedBundle, format?: "table" | "json" | "markdown", colorEnabled?: boolean): string;
2091
+
2092
+ /**
2093
+ * Multi-Runtime Transpiler for Skills & Context-Isolated Subagents (`src/sync/adapters.ts`).
2094
+ *
2095
+ * Implements Issue #61:
2096
+ * - Transpiles Hybrid Executable Skills (SKILL.md + Level 3 scripts/references) and
2097
+ * Context-Isolated Subagents (SUBAGENT.md) across:
2098
+ * 1. Claude Code (`.claude/skills/<name>/`, `.claude/agents/<name>.md`)
2099
+ * 2. Antigravity / Gemini CLI (`.agent/skills/<name>/`, `.agent/agents/<name>.md`)
2100
+ * 3. Cursor (`.cursor/rules/skillops-<name>.mdc`, `.cursor/rules/skillops-agent-<name>.mdc`)
2101
+ * 4. OpenAI Codex CLI (`.codex/skills/<name>/`, `.codex/agents/<name>.md`, `AGENTS.md`)
2102
+ * 5. GitHub Copilot (`.github/instructions/`, `.github/prompts/`, `.github/agents/<name>.agent.md`)
2103
+ * - Enforces `.skillops-lock.json` SHA-256 integrity, local drift detection, and surgical `add`.
2104
+ */
2105
+
2106
+ interface SyncOptions extends RouteOptions {
2107
+ readonly targets?: readonly RuntimeTarget[];
2108
+ readonly dryRun?: boolean;
2109
+ readonly force?: boolean;
2110
+ }
2111
+ interface AddOptions {
2112
+ readonly targets?: readonly RuntimeTarget[];
2113
+ readonly dryRun?: boolean;
2114
+ readonly force?: boolean;
2115
+ }
2116
+ interface RemoveOptions {
2117
+ readonly targets?: readonly RuntimeTarget[];
2118
+ readonly dryRun?: boolean;
2119
+ readonly force?: boolean;
2120
+ }
2121
+ interface CleanOptions {
2122
+ readonly dryRun?: boolean;
2123
+ readonly force?: boolean;
2124
+ }
2125
+ declare function computeSha256(content: string): string;
2126
+ declare function renderCodexAgentsIndex(existingContent: string | null, skills: readonly ParsedSkillDirectory[], subagents: readonly ParsedSubagentFile[]): string;
2127
+ declare function syncRepository(repoPath: string, catalogDir: string, options?: SyncOptions): SyncReport;
2128
+ /**
2129
+ * Surgically install a single Skill or Subagent by name across active runtime targets.
2130
+ */
2131
+ declare function addSkillOrSubagent(repoPath: string, catalogDir: string, itemName: string, options?: AddOptions): SyncReport;
2132
+ declare function stripCodexAgentsBlock(existingContent: string): string;
2133
+ /**
2134
+ * Surgically remove a single synced Skill or Subagent by name across target runtimes.
2135
+ */
2136
+ declare function removeSkillOrSubagent(repoPath: string, catalogDir: string, itemName: string, options?: RemoveOptions): SyncReport;
2137
+ /**
2138
+ * Clean all SkillOps-managed runtime artifacts tracked in `.skillops-lock.json`.
2139
+ */
2140
+ declare function cleanSyncedArtifacts(repoPath: string, catalogDir: string, options?: CleanOptions): SyncReport;
2141
+ declare function formatSyncReport(report: SyncReport, format?: "table" | "json" | "markdown", colorEnabled?: boolean): string;
2142
+
2143
+ /**
2144
+ * SkillOps CLI Help System, 3-Pillar Framework/Library Dashboard & Fuzzy Typo Matcher (`src/ui/help.ts`).
2145
+ */
2146
+ interface CommandOptionSpec {
2147
+ readonly flags: string;
2148
+ readonly description: string;
2149
+ }
2150
+ interface CommandHelpSpec {
2151
+ readonly name: string;
2152
+ readonly aliases: readonly string[];
2153
+ readonly pillar: "library" | "framework" | "runtime";
2154
+ readonly summary: string;
2155
+ readonly usage: string;
2156
+ readonly options: readonly CommandOptionSpec[];
2157
+ readonly examples: readonly {
2158
+ readonly command: string;
2159
+ readonly description: string;
2160
+ }[];
2161
+ }
2162
+ declare const COMMAND_HELP_SPECS: readonly CommandHelpSpec[];
2163
+ /**
2164
+ * Find a command help specification by primary name or alias.
2165
+ */
2166
+ declare function findCommandHelpSpec(commandOrAlias: string): CommandHelpSpec | undefined;
2167
+ /**
2168
+ * Render the 3-Pillar Framework & Library global help screen (`npx skillops-cli --help`).
2169
+ */
2170
+ declare function renderGlobalHelp(version: string, colorEnabled?: boolean): string;
2171
+ /**
2172
+ * Render detailed per-command help (`npx skillops-cli <cmd> --help` or `npx skillops-cli help <cmd>`).
2173
+ */
2174
+ declare function renderCommandHelp(spec: CommandHelpSpec, version: string, colorEnabled?: boolean): string;
2175
+
2176
+ /**
2177
+ * SkillOps Zero-Dependency Terminal UI (TUI) Aesthetic Engine.
2178
+ *
2179
+ * Provides ANSI styling with automatic TTY / NO_COLOR / FORCE_COLOR awareness,
2180
+ * Unicode rounded panels, ANSI-aware aligned multi-column tables, visual token
2181
+ * budget progress bars, step indicators, AI invocation guides, and fuzzy
2182
+ * Levenshtein command suggestions.
2183
+ */
2184
+ interface ColorOverrideOptions {
2185
+ readonly env?: NodeJS.ProcessEnv;
2186
+ readonly isTTY?: boolean;
2187
+ }
2188
+ /**
2189
+ * Determine whether ANSI terminal colors should be emitted.
2190
+ * Respects https://no-color.org (`NO_COLOR`), `FORCE_COLOR`, `TERM=dumb`, and `stdout.isTTY`.
2191
+ */
2192
+ declare function isColorEnabled(options?: ColorOverrideOptions): boolean;
2193
+ declare const style: {
2194
+ bold: (text: string, enabled?: boolean) => string;
2195
+ dim: (text: string, enabled?: boolean) => string;
2196
+ italic: (text: string, enabled?: boolean) => string;
2197
+ underline: (text: string, enabled?: boolean) => string;
2198
+ cyan: (text: string, enabled?: boolean) => string;
2199
+ green: (text: string, enabled?: boolean) => string;
2200
+ yellow: (text: string, enabled?: boolean) => string;
2201
+ red: (text: string, enabled?: boolean) => string;
2202
+ magenta: (text: string, enabled?: boolean) => string;
2203
+ blue: (text: string, enabled?: boolean) => string;
2204
+ gray: (text: string, enabled?: boolean) => string;
2205
+ white: (text: string, enabled?: boolean) => string;
2206
+ };
2207
+ /**
2208
+ * Strip all ANSI SGR escape sequences from a string.
2209
+ */
2210
+ declare function stripAnsi(text: string): string;
2211
+ /**
2212
+ * Compute visible character width of a string ignoring ANSI color codes.
2213
+ */
2214
+ declare function visibleLength(text: string): number;
2215
+ /**
2216
+ * Pad a potentially ANSI-styled string to a target visible width.
2217
+ */
2218
+ declare function padVisible(text: string, width: number, align?: "left" | "right" | "center"): string;
2219
+ interface BoxOptions {
2220
+ readonly title?: string;
2221
+ readonly borderColor?: (text: string, enabled?: boolean) => string;
2222
+ readonly paddingX?: number;
2223
+ readonly minWidth?: number;
2224
+ readonly colorEnabled?: boolean;
2225
+ }
2226
+ /**
2227
+ * Render a rounded Unicode panel (`╭───╮ │ ╰───╯`).
2228
+ */
2229
+ declare function renderBox(lines: readonly string[], options?: BoxOptions): string;
2230
+ /**
2231
+ * Render the official SkillOps Framework & Library top banner.
2232
+ */
2233
+ declare function renderHeaderBanner(subtitle?: string, options?: {
2234
+ version?: string;
2235
+ colorEnabled?: boolean;
2236
+ }): string;
2237
+ interface TableOptions {
2238
+ readonly align?: readonly ("left" | "right" | "center")[];
2239
+ readonly indent?: number;
2240
+ readonly colorEnabled?: boolean;
2241
+ }
2242
+ /**
2243
+ * Render an ANSI-aware multi-column aligned table with Unicode header rules.
2244
+ */
2245
+ declare function renderTable(headers: readonly string[], rows: readonly (readonly string[])[], options?: TableOptions): string;
2246
+ interface TokenBarOptions {
2247
+ readonly width?: number;
2248
+ readonly label?: string;
2249
+ readonly unit?: string;
2250
+ readonly colorEnabled?: boolean;
2251
+ }
2252
+ /**
2253
+ * Render a visual token budget progress bar (`[████████░░░░░░░░] 48.0% (720 / 1,500 tokens)`).
2254
+ */
2255
+ declare function renderTokenBar(current: number, max: number, options?: TokenBarOptions): string;
2256
+ /**
2257
+ * Alias for renderTokenBar used across token/budget progress visualizations.
2258
+ */
2259
+ declare const renderProgressBar: typeof renderTokenBar;
2260
+ /**
2261
+ * Render a stylized section header with a bold cyan rule.
2262
+ */
2263
+ declare function renderSectionHeader(title: string, colorEnabled?: boolean): string;
2264
+ type BadgeType = "pass" | "warn" | "fail" | "info" | "skill" | "subagent";
2265
+ /**
2266
+ * Render a semantic status or artifact badge.
2267
+ */
2268
+ declare function formatBadge(type: BadgeType, customLabel?: string, colorEnabled?: boolean): string;
2269
+ /**
2270
+ * Render a numbered onboarding step line (` ✔ [1/4] Title — Detail`).
2271
+ */
2272
+ declare function renderStep(step: number, total: number, title: string, detail?: string, status?: "done" | "warn" | "skip", colorEnabled?: boolean): string;
2273
+ interface NextStepHint {
2274
+ readonly command: string;
2275
+ readonly description: string;
2276
+ }
2277
+ /**
2278
+ * Render an actionable "Next steps" footer guiding the developer on what to run next.
2279
+ */
2280
+ declare function renderNextSteps(hints: readonly NextStepHint[], colorEnabled?: boolean): string;
2281
+ /**
2282
+ * Render a practical guide explaining how to invoke installed Skills & Subagents inside the user's AI coding agents.
2283
+ */
2284
+ declare function renderAiUsageGuide(targets: readonly string[], skills: readonly string[], subagents: readonly string[], colorEnabled?: boolean): string;
2285
+ /**
2286
+ * Compute Levenshtein edit distance between two strings for typo suggestions.
2287
+ */
2288
+ declare function levenshteinDistance(a: string, b: string): number;
2289
+ declare const DEFAULT_VALID_COMMANDS: readonly string[];
2290
+ /**
2291
+ * Suggest the closest valid CLI command when a user makes a typo.
2292
+ */
2293
+ declare function suggestCommand(unknownCommand: string, validCommands?: readonly string[]): string | null;
2294
+
2295
+ export { ALL_RUNTIME_TARGETS, type AddOptions, type AnalyzeTokenEconomyOptions, type AuditCatalogOptions, type BadgeType, type BenchmarkArm, BenchmarkArmSchema, type BenchmarkDelta, BenchmarkDeltaSchema, type BoxOptions, COMMAND_HELP_SPECS, CORE_RUNTIME_TARGETS, type CatalogEvalSummary, CatalogEvalSummarySchema, type CatalogItemInfo, type CatalogSearchMatch, type CatalogSearchReport, type CatalogTokenBudgetSummary, type CatalogTrack, CatalogTrackSchema, type CleanOptions, type CollisionPair, CollisionPairSchema, type CollisionReport, CollisionReportSchema, type CollisionSeverity, CollisionSeveritySchema, type ColorOverrideOptions, type CommandHelpSpec, type CommandOptionSpec, DEFAULT_VALID_COMMANDS, 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 NextStepHint, type ParseSkillOptions, type ParsedSkillDirectory, type ParsedSubagentFile, type QuickstartOptions, type QuickstartReport, 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 ScaffoldOptions, type ScaffoldResult, 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 TableOptions, type TokenBarOptions, 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, findCommandHelpSpec, fingerprintRepository, formatBadge, formatCatalogItemInfo, formatCatalogSearchReport, formatDoctorReport, formatEvalSummary, formatHarnessInspectionReport, formatMcpSetupReport, formatQuickstartReport, formatRoutedBundle, formatScaffoldReport, formatSyncReport, formatTokenEconomyReport, handleMcpJsonRpcRequest, inspectCatalogItem, inspectHarnesses, isColorEnabled, levenshteinDistance, loadSkillOpsConfig, normalizePackageName, padVisible, parseSkillDirectory, parseSkillMdFile, parseSubagentFile, parseSubagentMdFile, removeSkillOrSubagent, renderAiUsageGuide, renderBox, renderCodexAgentsIndex, renderCommandHelp, renderGlobalHelp, renderHeaderBanner, renderNextSteps, renderProgressBar, renderSectionHeader, renderStep, renderTable, renderTokenBar, resolveRuntimeTargets, routeRepository, runQuickstart, scaffoldFrameworkItem, scoreSkillAgainstProfile, searchCatalog, setupMcpForHarnesses, splitFrontmatter, startMcpStdioServer, stripAnsi, stripCodexAgentsBlock, stripNegativeTriggerClauses, style, suggestCommand, syncRepository, tokenizeRoutingText, visibleLength };