@agentkitforge/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/CLI.md +177 -0
  3. package/LICENSE +69 -0
  4. package/README.md +326 -0
  5. package/SECURITY.md +33 -0
  6. package/SPEC.md +159 -0
  7. package/VERSIONING.md +45 -0
  8. package/dist/adapters/claudeCode.d.ts +11 -0
  9. package/dist/adapters/claudeCode.js +120 -0
  10. package/dist/adapters/claudeCode.js.map +1 -0
  11. package/dist/adapters/codex.d.ts +12 -0
  12. package/dist/adapters/codex.js +141 -0
  13. package/dist/adapters/codex.js.map +1 -0
  14. package/dist/app/exampleInputDocuments.d.ts +21 -0
  15. package/dist/app/exampleInputDocuments.js +24 -0
  16. package/dist/app/exampleInputDocuments.js.map +1 -0
  17. package/dist/app/inspect.d.ts +15 -0
  18. package/dist/app/inspect.js +96 -0
  19. package/dist/app/inspect.js.map +1 -0
  20. package/dist/app/loadAsDraft.d.ts +7 -0
  21. package/dist/app/loadAsDraft.js +148 -0
  22. package/dist/app/loadAsDraft.js.map +1 -0
  23. package/dist/app/summary.d.ts +17 -0
  24. package/dist/app/summary.js +89 -0
  25. package/dist/app/summary.js.map +1 -0
  26. package/dist/artifacts/naming.d.ts +8 -0
  27. package/dist/artifacts/naming.js +26 -0
  28. package/dist/artifacts/naming.js.map +1 -0
  29. package/dist/builder/draftRequest.d.ts +24 -0
  30. package/dist/builder/draftRequest.js +87 -0
  31. package/dist/builder/draftRequest.js.map +1 -0
  32. package/dist/builder/instructions.d.ts +1 -0
  33. package/dist/builder/instructions.js +30 -0
  34. package/dist/builder/instructions.js.map +1 -0
  35. package/dist/builder/revisionRequest.d.ts +24 -0
  36. package/dist/builder/revisionRequest.js +94 -0
  37. package/dist/builder/revisionRequest.js.map +1 -0
  38. package/dist/cli/index.d.ts +2 -0
  39. package/dist/cli/index.js +5 -0
  40. package/dist/cli/index.js.map +1 -0
  41. package/dist/cli/program.d.ts +2 -0
  42. package/dist/cli/program.js +273 -0
  43. package/dist/cli/program.js.map +1 -0
  44. package/dist/context/builder.d.ts +2 -0
  45. package/dist/context/builder.js +159 -0
  46. package/dist/context/builder.js.map +1 -0
  47. package/dist/context/types.d.ts +23 -0
  48. package/dist/context/types.js +2 -0
  49. package/dist/context/types.js.map +1 -0
  50. package/dist/domains/catalog.d.ts +7 -0
  51. package/dist/domains/catalog.js +45 -0
  52. package/dist/domains/catalog.js.map +1 -0
  53. package/dist/draft/render.d.ts +13 -0
  54. package/dist/draft/render.js +207 -0
  55. package/dist/draft/render.js.map +1 -0
  56. package/dist/draft/schema.d.ts +107 -0
  57. package/dist/draft/schema.js +78 -0
  58. package/dist/draft/schema.js.map +1 -0
  59. package/dist/draft/session.d.ts +56 -0
  60. package/dist/draft/session.js +115 -0
  61. package/dist/draft/session.js.map +1 -0
  62. package/dist/export/onefile.d.ts +1 -0
  63. package/dist/export/onefile.js +109 -0
  64. package/dist/export/onefile.js.map +1 -0
  65. package/dist/fs/safety.d.ts +26 -0
  66. package/dist/fs/safety.js +187 -0
  67. package/dist/fs/safety.js.map +1 -0
  68. package/dist/index.d.ts +45 -0
  69. package/dist/index.js +26 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/init/create.d.ts +14 -0
  72. package/dist/init/create.js +48 -0
  73. package/dist/init/create.js.map +1 -0
  74. package/dist/init/templates.d.ts +12 -0
  75. package/dist/init/templates.js +202 -0
  76. package/dist/init/templates.js.map +1 -0
  77. package/dist/package/packager.d.ts +5 -0
  78. package/dist/package/packager.js +30 -0
  79. package/dist/package/packager.js.map +1 -0
  80. package/dist/package/reader.d.ts +3 -0
  81. package/dist/package/reader.js +21 -0
  82. package/dist/package/reader.js.map +1 -0
  83. package/dist/prompts/prompts.d.ts +35 -0
  84. package/dist/prompts/prompts.js +206 -0
  85. package/dist/prompts/prompts.js.map +1 -0
  86. package/dist/prompts/schema.d.ts +71 -0
  87. package/dist/prompts/schema.js +46 -0
  88. package/dist/prompts/schema.js.map +1 -0
  89. package/dist/providers/catalog.d.ts +15 -0
  90. package/dist/providers/catalog.js +211 -0
  91. package/dist/providers/catalog.js.map +1 -0
  92. package/dist/providers/types.d.ts +30 -0
  93. package/dist/providers/types.js +2 -0
  94. package/dist/providers/types.js.map +1 -0
  95. package/dist/schema/agentkit.d.ts +54 -0
  96. package/dist/schema/agentkit.js +63 -0
  97. package/dist/schema/agentkit.js.map +1 -0
  98. package/dist/types.d.ts +69 -0
  99. package/dist/types.js +2 -0
  100. package/dist/types.js.map +1 -0
  101. package/dist/validation/skill.d.ts +3 -0
  102. package/dist/validation/skill.js +83 -0
  103. package/dist/validation/skill.js.map +1 -0
  104. package/dist/validation/validator.d.ts +2 -0
  105. package/dist/validation/validator.js +247 -0
  106. package/dist/validation/validator.js.map +1 -0
  107. package/package.json +57 -0
@@ -0,0 +1,15 @@
1
+ import type { AiProviderType, KnownModel, ProviderCapabilities } from "./types.js";
2
+ export declare const aiProviderTypes: AiProviderType[];
3
+ export declare const modelCatalog: Record<AiProviderType, KnownModel[]>;
4
+ export declare const structuredOutputGuidance: {
5
+ readonly draftGeneration: "Agent Kit draft generation must return valid JSON matching the AgentKitDraft schema.";
6
+ readonly reliability: "Providers and models vary in JSON reliability. Validate every returned draft before rendering it.";
7
+ readonly localModelWarning: "Local and custom models should warn users when structured JSON support is not known or explicitly disabled.";
8
+ };
9
+ export declare function getKnownModelsForProvider(providerType: AiProviderType): KnownModel[];
10
+ export declare function getDefaultModelForProvider(providerType: AiProviderType): string | undefined;
11
+ export declare function getProviderCapabilities(providerType: AiProviderType): ProviderCapabilities;
12
+ export declare function isApiKeyRequiredForProvider(providerType: AiProviderType): boolean;
13
+ export declare function isBaseUrlRequiredForProvider(providerType: AiProviderType): boolean;
14
+ export declare function normalizeBaseUrl(providerType: AiProviderType, baseUrl?: string): string | undefined;
15
+ export declare function providerSupportsStructuredJson(providerType: AiProviderType, modelId?: string, explicitOverride?: boolean): boolean;
@@ -0,0 +1,211 @@
1
+ export const aiProviderTypes = [
2
+ "openai",
3
+ "anthropic",
4
+ "gemini",
5
+ "ollama",
6
+ "openai-compatible"
7
+ ];
8
+ export const modelCatalog = {
9
+ openai: [
10
+ {
11
+ id: "gpt-5.5",
12
+ label: "GPT-5.5",
13
+ providerTypes: ["openai"],
14
+ recommendedFor: ["kit-use", "draft-generation"],
15
+ supportsStructuredJson: true,
16
+ notes: "Current flagship suggestion for complex reasoning, coding, and agentic workflows. Consumers must allow custom OpenAI model IDs."
17
+ },
18
+ {
19
+ id: "gpt-5.4",
20
+ label: "GPT-5.4",
21
+ providerTypes: ["openai"],
22
+ recommendedFor: ["kit-use", "draft-generation"],
23
+ supportsStructuredJson: true,
24
+ notes: "Current affordable GPT-5.4 suggestion for coding and professional work."
25
+ },
26
+ {
27
+ id: "gpt-5.4-mini",
28
+ label: "GPT-5.4 Mini",
29
+ providerTypes: ["openai"],
30
+ recommendedFor: ["kit-use", "fast", "cheap"],
31
+ supportsStructuredJson: true,
32
+ notes: "Lower-latency, lower-cost suggestion for well-defined kit use and draft iteration."
33
+ },
34
+ {
35
+ id: "gpt-5.4-nano",
36
+ label: "GPT-5.4 Nano",
37
+ providerTypes: ["openai"],
38
+ recommendedFor: ["fast", "cheap"],
39
+ supportsStructuredJson: true,
40
+ notes: "Smallest current GPT-5.4 variant suggestion for fast, cost-sensitive tasks."
41
+ }
42
+ ],
43
+ anthropic: [
44
+ {
45
+ id: "claude-opus-4-7",
46
+ label: "Claude Opus 4.7",
47
+ providerTypes: ["anthropic"],
48
+ recommendedFor: ["kit-use", "draft-generation"],
49
+ supportsStructuredJson: true,
50
+ notes: "Anthropic's most capable generally available Claude model suggestion for complex reasoning and agentic coding."
51
+ },
52
+ {
53
+ id: "claude-sonnet-4-6",
54
+ label: "Claude Sonnet 4.6",
55
+ providerTypes: ["anthropic"],
56
+ recommendedFor: ["kit-use", "draft-generation", "fast"],
57
+ supportsStructuredJson: true,
58
+ notes: "Balanced Claude suggestion for speed and intelligence."
59
+ },
60
+ {
61
+ id: "claude-haiku-4-5",
62
+ label: "Claude Haiku 4.5",
63
+ providerTypes: ["anthropic"],
64
+ recommendedFor: ["kit-use", "fast", "cheap"],
65
+ supportsStructuredJson: true,
66
+ notes: "Fast Claude suggestion for lower-latency workflows."
67
+ }
68
+ ],
69
+ gemini: [
70
+ {
71
+ id: "gemini-3.1-pro-preview",
72
+ label: "Gemini 3.1 Pro Preview",
73
+ providerTypes: ["gemini"],
74
+ recommendedFor: ["kit-use", "draft-generation"],
75
+ supportsStructuredJson: true,
76
+ notes: "Gemini 3.1 Pro preview suggestion for advanced multimodal and agentic work."
77
+ },
78
+ {
79
+ id: "gemini-3.5-flash",
80
+ label: "Gemini 3.5 Flash",
81
+ providerTypes: ["gemini"],
82
+ recommendedFor: ["kit-use", "fast"],
83
+ supportsStructuredJson: true,
84
+ notes: "Stable Gemini 3.5 suggestion for speed, scale, and agentic workflows."
85
+ },
86
+ {
87
+ id: "gemini-3.1-flash-lite",
88
+ label: "Gemini 3.1 Flash-Lite",
89
+ providerTypes: ["gemini"],
90
+ recommendedFor: ["fast", "cheap"],
91
+ supportsStructuredJson: true,
92
+ notes: "Stable cost-efficient Gemini 3.1 suggestion for high-throughput workflows."
93
+ }
94
+ ],
95
+ ollama: [
96
+ {
97
+ id: "gpt-oss:20b",
98
+ label: "gpt-oss 20B",
99
+ providerTypes: ["ollama"],
100
+ recommendedFor: ["kit-use", "local"],
101
+ supportsStructuredJson: true,
102
+ notes: "OpenAI open-weight Ollama model suggestion. Installed local model IDs vary by machine."
103
+ },
104
+ {
105
+ id: "qwen3:30b",
106
+ label: "Qwen3 30B",
107
+ providerTypes: ["ollama"],
108
+ recommendedFor: ["kit-use", "draft-generation", "local"],
109
+ supportsStructuredJson: false,
110
+ notes: "Strong local reasoning/coding suggestion. JSON reliability depends on local runtime and prompting."
111
+ },
112
+ {
113
+ id: "gemma3:12b",
114
+ label: "Gemma 3 12B",
115
+ providerTypes: ["ollama"],
116
+ recommendedFor: ["kit-use", "fast", "local"],
117
+ supportsStructuredJson: false,
118
+ notes: "Local model suggestion. Installed Ollama model IDs vary by machine."
119
+ }
120
+ ],
121
+ "openai-compatible": []
122
+ };
123
+ const providerCapabilities = {
124
+ openai: {
125
+ providerType: "openai",
126
+ apiKeyRequired: true,
127
+ baseUrlRequired: false,
128
+ supportsCustomModels: true,
129
+ supportsStructuredJson: true
130
+ },
131
+ anthropic: {
132
+ providerType: "anthropic",
133
+ apiKeyRequired: true,
134
+ baseUrlRequired: false,
135
+ supportsCustomModels: true,
136
+ supportsStructuredJson: true
137
+ },
138
+ gemini: {
139
+ providerType: "gemini",
140
+ apiKeyRequired: true,
141
+ baseUrlRequired: false,
142
+ supportsCustomModels: true,
143
+ supportsStructuredJson: true
144
+ },
145
+ ollama: {
146
+ providerType: "ollama",
147
+ apiKeyRequired: false,
148
+ baseUrlRequired: true,
149
+ supportsCustomModels: true,
150
+ supportsStructuredJson: false,
151
+ notes: "Local model JSON reliability depends on the installed model and runtime options."
152
+ },
153
+ "openai-compatible": {
154
+ providerType: "openai-compatible",
155
+ apiKeyRequired: true,
156
+ baseUrlRequired: true,
157
+ supportsCustomModels: true,
158
+ supportsStructuredJson: false,
159
+ notes: "Structured JSON support depends on the compatible server and selected model."
160
+ }
161
+ };
162
+ export const structuredOutputGuidance = {
163
+ draftGeneration: "Agent Kit draft generation must return valid JSON matching the AgentKitDraft schema.",
164
+ reliability: "Providers and models vary in JSON reliability. Validate every returned draft before rendering it.",
165
+ localModelWarning: "Local and custom models should warn users when structured JSON support is not known or explicitly disabled."
166
+ };
167
+ export function getKnownModelsForProvider(providerType) {
168
+ return [...modelCatalog[providerType]];
169
+ }
170
+ export function getDefaultModelForProvider(providerType) {
171
+ return modelCatalog[providerType][0]?.id;
172
+ }
173
+ export function getProviderCapabilities(providerType) {
174
+ return { ...providerCapabilities[providerType] };
175
+ }
176
+ export function isApiKeyRequiredForProvider(providerType) {
177
+ return providerCapabilities[providerType].apiKeyRequired;
178
+ }
179
+ export function isBaseUrlRequiredForProvider(providerType) {
180
+ return providerCapabilities[providerType].baseUrlRequired;
181
+ }
182
+ export function normalizeBaseUrl(providerType, baseUrl) {
183
+ const trimmed = baseUrl?.trim();
184
+ if (trimmed) {
185
+ return trimmed.replace(/\/+$/, "");
186
+ }
187
+ if (providerType === "openai") {
188
+ return "https://api.openai.com/v1";
189
+ }
190
+ if (providerType === "anthropic") {
191
+ return "https://api.anthropic.com/v1";
192
+ }
193
+ if (providerType === "gemini") {
194
+ return "https://generativelanguage.googleapis.com/v1beta";
195
+ }
196
+ if (providerType === "ollama") {
197
+ return "http://localhost:11434";
198
+ }
199
+ return undefined;
200
+ }
201
+ export function providerSupportsStructuredJson(providerType, modelId, explicitOverride) {
202
+ if (explicitOverride !== undefined) {
203
+ return explicitOverride;
204
+ }
205
+ const knownModel = modelCatalog[providerType].find((model) => model.id === modelId);
206
+ if (knownModel?.supportsStructuredJson !== undefined) {
207
+ return knownModel.supportsStructuredJson;
208
+ }
209
+ return providerCapabilities[providerType].supportsStructuredJson;
210
+ }
211
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/providers/catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ export type AiProviderType = "openai" | "anthropic" | "gemini" | "ollama" | "openai-compatible";
2
+ export type ModelRecommendationTag = "kit-use" | "draft-generation" | "fast" | "cheap" | "local";
3
+ export interface AiProviderConfigBase {
4
+ id: string;
5
+ name: string;
6
+ type: AiProviderType;
7
+ baseUrl?: string;
8
+ apiKeyRequired?: boolean;
9
+ defaultModel?: string;
10
+ supportsStructuredJson?: boolean;
11
+ createdAt?: string;
12
+ updatedAt?: string;
13
+ }
14
+ export type AiProviderConfigShape = AiProviderConfigBase;
15
+ export interface KnownModel {
16
+ id: string;
17
+ label: string;
18
+ providerTypes: AiProviderType[];
19
+ recommendedFor: ModelRecommendationTag[];
20
+ supportsStructuredJson?: boolean;
21
+ notes?: string;
22
+ }
23
+ export interface ProviderCapabilities {
24
+ providerType: AiProviderType;
25
+ apiKeyRequired: boolean;
26
+ baseUrlRequired: boolean;
27
+ supportsCustomModels: boolean;
28
+ supportsStructuredJson: boolean;
29
+ notes?: string;
30
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,54 @@
1
+ import { z } from "zod";
2
+ export declare const agentKitSkillSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ path: z.ZodString;
5
+ description: z.ZodString;
6
+ triggers: z.ZodArray<z.ZodString>;
7
+ }, z.core.$strip>;
8
+ export declare const agentKitPromptSchema: z.ZodObject<{
9
+ id: z.ZodString;
10
+ path: z.ZodString;
11
+ description: z.ZodString;
12
+ }, z.core.$strip>;
13
+ export declare const agentKitManifestSchema: z.ZodObject<{
14
+ schemaVersion: z.ZodString;
15
+ kind: z.ZodString;
16
+ id: z.ZodString;
17
+ name: z.ZodString;
18
+ version: z.ZodString;
19
+ description: z.ZodString;
20
+ author: z.ZodObject<{
21
+ name: z.ZodString;
22
+ }, z.core.$strip>;
23
+ license: z.ZodString;
24
+ entrypoints: z.ZodObject<{
25
+ human: z.ZodString;
26
+ agent: z.ZodString;
27
+ }, z.core.$strip>;
28
+ userExperience: z.ZodObject<{
29
+ setupLevel: z.ZodString;
30
+ }, z.core.$strip>;
31
+ compatibility: z.ZodObject<{
32
+ targets: z.ZodArray<z.ZodString>;
33
+ }, z.core.$strip>;
34
+ risk: z.ZodObject<{
35
+ level: z.ZodString;
36
+ }, z.core.$strip>;
37
+ skills: z.ZodArray<z.ZodObject<{
38
+ id: z.ZodString;
39
+ path: z.ZodString;
40
+ description: z.ZodString;
41
+ triggers: z.ZodArray<z.ZodString>;
42
+ }, z.core.$strip>>;
43
+ prompts: z.ZodOptional<z.ZodArray<z.ZodObject<{
44
+ id: z.ZodString;
45
+ path: z.ZodString;
46
+ description: z.ZodString;
47
+ }, z.core.$strip>>>;
48
+ scripts: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
49
+ id: z.ZodOptional<z.ZodString>;
50
+ path: z.ZodString;
51
+ description: z.ZodOptional<z.ZodString>;
52
+ }, z.core.$strip>]>>>;
53
+ }, z.core.$loose>;
54
+ export type AgentKitManifestInput = z.input<typeof agentKitManifestSchema>;
@@ -0,0 +1,63 @@
1
+ import { z } from "zod";
2
+ import { assertSafeRelativePath, isSafeId } from "../fs/safety.js";
3
+ const safeIdSchema = z.string().min(1).refine(isSafeId, "Use lowercase letters, numbers, and hyphens");
4
+ const safePathSchema = z.string().min(1).refine((value) => {
5
+ try {
6
+ assertSafeRelativePath(value);
7
+ return true;
8
+ }
9
+ catch {
10
+ return false;
11
+ }
12
+ }, "Use a safe relative path inside the Agent Kit");
13
+ export const agentKitSkillSchema = z.object({
14
+ id: safeIdSchema,
15
+ path: safePathSchema,
16
+ description: z.string().min(1),
17
+ triggers: z.array(z.string().min(1)).min(1)
18
+ });
19
+ export const agentKitPromptSchema = z.object({
20
+ id: safeIdSchema,
21
+ path: safePathSchema,
22
+ description: z.string().min(1)
23
+ });
24
+ export const agentKitManifestSchema = z
25
+ .object({
26
+ schemaVersion: z.string().min(1),
27
+ kind: z.string().min(1),
28
+ id: safeIdSchema,
29
+ name: z.string().min(1),
30
+ version: z.string().min(1),
31
+ description: z.string().min(1),
32
+ author: z.object({
33
+ name: z.string().min(1)
34
+ }),
35
+ license: z.string().min(1),
36
+ entrypoints: z.object({
37
+ human: z.string().min(1),
38
+ agent: z.string().min(1)
39
+ }),
40
+ userExperience: z.object({
41
+ setupLevel: z.string().min(1)
42
+ }),
43
+ compatibility: z.object({
44
+ targets: z.array(z.string().min(1)).min(1)
45
+ }),
46
+ risk: z.object({
47
+ level: z.string().min(1)
48
+ }),
49
+ skills: z.array(agentKitSkillSchema).min(1),
50
+ prompts: z.array(agentKitPromptSchema).optional(),
51
+ scripts: z
52
+ .array(z.union([
53
+ safePathSchema,
54
+ z.object({
55
+ id: z.string().min(1).optional(),
56
+ path: safePathSchema,
57
+ description: z.string().min(1).optional()
58
+ })
59
+ ]))
60
+ .optional()
61
+ })
62
+ .passthrough();
63
+ //# sourceMappingURL=agentkit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentkit.js","sourceRoot":"","sources":["../../src/schema/agentkit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEnE,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,6CAA6C,CAAC,CAAC;AACvG,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,EAAE,+CAA+C,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KACxB,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KACzB,CAAC;IACF,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC;QACvB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC9B,CAAC;IACF,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC;QACtB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3C,CAAC;IACF,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KACzB,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;IACjD,OAAO,EAAE,CAAC;SACP,KAAK,CACJ,CAAC,CAAC,KAAK,CAAC;QACN,cAAc;QACd,CAAC,CAAC,MAAM,CAAC;YACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YAChC,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;SAC1C,CAAC;KACH,CAAC,CACH;SACA,QAAQ,EAAE;CACd,CAAC;KACD,WAAW,EAAE,CAAC"}
@@ -0,0 +1,69 @@
1
+ export type AgentKitValidationProfile = "local-valid" | "publishable" | "trusted" | "verified";
2
+ export type ValidationIssueSeverity = "error" | "warning";
3
+ export interface ValidationIssue {
4
+ severity: ValidationIssueSeverity;
5
+ code: string;
6
+ message: string;
7
+ path?: string;
8
+ }
9
+ export interface ValidationReport {
10
+ valid: boolean;
11
+ profile: AgentKitValidationProfile;
12
+ rootPath: string;
13
+ issues: ValidationIssue[];
14
+ }
15
+ export interface AgentKitSkillManifest {
16
+ id: string;
17
+ path: string;
18
+ description: string;
19
+ triggers: string[];
20
+ }
21
+ export interface AgentKitPromptManifest {
22
+ id: string;
23
+ path: string;
24
+ description: string;
25
+ }
26
+ export interface AgentKitManifest {
27
+ schemaVersion: string;
28
+ kind: string;
29
+ id: string;
30
+ name: string;
31
+ version: string;
32
+ description: string;
33
+ author: {
34
+ name: string;
35
+ };
36
+ license: string;
37
+ entrypoints: {
38
+ human: string;
39
+ agent: string;
40
+ };
41
+ userExperience: {
42
+ setupLevel: string;
43
+ };
44
+ compatibility: {
45
+ targets: string[];
46
+ };
47
+ risk: {
48
+ level: string;
49
+ };
50
+ skills: AgentKitSkillManifest[];
51
+ prompts?: AgentKitPromptManifest[];
52
+ scripts?: Array<string | {
53
+ id?: string;
54
+ path: string;
55
+ description?: string;
56
+ }>;
57
+ [key: string]: unknown;
58
+ }
59
+ export interface LoadedAgentKit {
60
+ rootPath: string;
61
+ manifestPath: string;
62
+ manifestRaw: unknown;
63
+ manifest?: AgentKitManifest;
64
+ }
65
+ export interface SkillDocument {
66
+ path: string;
67
+ frontmatter: Record<string, unknown>;
68
+ body: string;
69
+ }
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { SkillDocument, ValidationIssue } from "../types.js";
2
+ export declare function parseSkillMarkdown(content: string, filePath: string): SkillDocument;
3
+ export declare function validateSkillFile(filePath: string): Promise<ValidationIssue[]>;
@@ -0,0 +1,83 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import YAML from "yaml";
3
+ const REQUIRED_FRONTMATTER_FIELDS = [
4
+ "id",
5
+ "name",
6
+ "description",
7
+ "triggers",
8
+ "riskLevel"
9
+ ];
10
+ const REQUIRED_SECTIONS = ["## Use when", "## Procedure", "## Output"];
11
+ export function parseSkillMarkdown(content, filePath) {
12
+ if (!content.startsWith("---\n") && !content.startsWith("---\r\n")) {
13
+ throw new Error("Missing YAML frontmatter block");
14
+ }
15
+ const endMatch = /\r?\n---\r?\n/.exec(content.slice(3));
16
+ if (!endMatch) {
17
+ throw new Error("Unclosed YAML frontmatter block");
18
+ }
19
+ const frontmatterEnd = 3 + endMatch.index;
20
+ const frontmatterText = content.slice(3, frontmatterEnd);
21
+ const body = content.slice(frontmatterEnd + endMatch[0].length);
22
+ const parsed = YAML.parse(frontmatterText);
23
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
24
+ throw new Error("YAML frontmatter must be an object");
25
+ }
26
+ return {
27
+ path: filePath,
28
+ frontmatter: parsed,
29
+ body
30
+ };
31
+ }
32
+ export async function validateSkillFile(filePath) {
33
+ const issues = [];
34
+ let skill;
35
+ try {
36
+ skill = parseSkillMarkdown(await readFile(filePath, "utf8"), filePath);
37
+ }
38
+ catch (error) {
39
+ return [
40
+ {
41
+ severity: "error",
42
+ code: "skill.frontmatter.invalid",
43
+ message: error instanceof Error ? error.message : "Invalid SKILL.md frontmatter",
44
+ path: filePath
45
+ }
46
+ ];
47
+ }
48
+ for (const field of REQUIRED_FRONTMATTER_FIELDS) {
49
+ const value = skill.frontmatter[field];
50
+ if (value === undefined ||
51
+ value === null ||
52
+ value === "" ||
53
+ (Array.isArray(value) && value.length === 0)) {
54
+ issues.push({
55
+ severity: "error",
56
+ code: "skill.frontmatter.missing",
57
+ message: `Missing required SKILL.md frontmatter field: ${field}`,
58
+ path: filePath
59
+ });
60
+ }
61
+ }
62
+ if (!/^#\s+\S+/m.test(skill.body)) {
63
+ issues.push({
64
+ severity: "error",
65
+ code: "skill.section.missing_title",
66
+ message: "Missing required SKILL.md title section: # Title",
67
+ path: filePath
68
+ });
69
+ }
70
+ for (const section of REQUIRED_SECTIONS) {
71
+ const escaped = section.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
72
+ if (!new RegExp(`^${escaped}\\s*$`, "m").test(skill.body)) {
73
+ issues.push({
74
+ severity: "error",
75
+ code: "skill.section.missing",
76
+ message: `Missing required SKILL.md section: ${section}`,
77
+ path: filePath
78
+ });
79
+ }
80
+ }
81
+ return issues;
82
+ }
83
+ //# sourceMappingURL=skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/validation/skill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { AgentKitValidationProfile, ValidationReport } from "../types.js";
2
+ export declare function validateAgentKit(rootPath: string, profile?: AgentKitValidationProfile): Promise<ValidationReport>;