@ai-plugin-marketplace/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.
- package/LICENSE +21 -0
- package/README.md +67 -0
- package/dist/config.d.ts +47 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +38 -0
- package/dist/config.js.map +1 -0
- package/dist/core.d.ts +291 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/pipeline/build.d.ts +90 -0
- package/dist/pipeline/build.d.ts.map +1 -0
- package/dist/pipeline/build.js +224 -0
- package/dist/pipeline/build.js.map +1 -0
- package/dist/pipeline/discover.d.ts +37 -0
- package/dist/pipeline/discover.d.ts.map +1 -0
- package/dist/pipeline/discover.js +71 -0
- package/dist/pipeline/discover.js.map +1 -0
- package/dist/pipeline/init-template.d.ts +33 -0
- package/dist/pipeline/init-template.d.ts.map +1 -0
- package/dist/pipeline/init-template.js +142 -0
- package/dist/pipeline/init-template.js.map +1 -0
- package/dist/pipeline/init.d.ts +39 -0
- package/dist/pipeline/init.d.ts.map +1 -0
- package/dist/pipeline/init.js +84 -0
- package/dist/pipeline/init.js.map +1 -0
- package/dist/pipeline/load-config.d.ts +47 -0
- package/dist/pipeline/load-config.d.ts.map +1 -0
- package/dist/pipeline/load-config.js +106 -0
- package/dist/pipeline/load-config.js.map +1 -0
- package/dist/pipeline/operations.d.ts +70 -0
- package/dist/pipeline/operations.d.ts.map +1 -0
- package/dist/pipeline/operations.js +100 -0
- package/dist/pipeline/operations.js.map +1 -0
- package/dist/pipeline/scaffold.d.ts +105 -0
- package/dist/pipeline/scaffold.d.ts.map +1 -0
- package/dist/pipeline/scaffold.js +422 -0
- package/dist/pipeline/scaffold.js.map +1 -0
- package/dist/pipeline/sentinel.d.ts +127 -0
- package/dist/pipeline/sentinel.d.ts.map +1 -0
- package/dist/pipeline/sentinel.js +263 -0
- package/dist/pipeline/sentinel.js.map +1 -0
- package/dist/pipeline/types.d.ts +178 -0
- package/dist/pipeline/types.d.ts.map +1 -0
- package/dist/pipeline/types.js +26 -0
- package/dist/pipeline/types.js.map +1 -0
- package/dist/pipeline/validate.d.ts +90 -0
- package/dist/pipeline/validate.d.ts.map +1 -0
- package/dist/pipeline/validate.js +617 -0
- package/dist/pipeline/validate.js.map +1 -0
- package/dist/targets/claude/scaffold.d.ts +32 -0
- package/dist/targets/claude/scaffold.d.ts.map +1 -0
- package/dist/targets/claude/scaffold.js +48 -0
- package/dist/targets/claude/scaffold.js.map +1 -0
- package/dist/targets/claude/schemas.d.ts +119 -0
- package/dist/targets/claude/schemas.d.ts.map +1 -0
- package/dist/targets/claude/schemas.js +204 -0
- package/dist/targets/claude/schemas.js.map +1 -0
- package/dist/targets/claude/transform.d.ts +40 -0
- package/dist/targets/claude/transform.d.ts.map +1 -0
- package/dist/targets/claude/transform.js +48 -0
- package/dist/targets/claude/transform.js.map +1 -0
- package/dist/targets/claude/validate.d.ts +25 -0
- package/dist/targets/claude/validate.d.ts.map +1 -0
- package/dist/targets/claude/validate.js +263 -0
- package/dist/targets/claude/validate.js.map +1 -0
- package/dist/targets/cursor/scaffold.d.ts +29 -0
- package/dist/targets/cursor/scaffold.d.ts.map +1 -0
- package/dist/targets/cursor/scaffold.js +45 -0
- package/dist/targets/cursor/scaffold.js.map +1 -0
- package/dist/targets/cursor/schemas.d.ts +49 -0
- package/dist/targets/cursor/schemas.d.ts.map +1 -0
- package/dist/targets/cursor/schemas.js +125 -0
- package/dist/targets/cursor/schemas.js.map +1 -0
- package/dist/targets/cursor/validate.d.ts +28 -0
- package/dist/targets/cursor/validate.d.ts.map +1 -0
- package/dist/targets/cursor/validate.js +181 -0
- package/dist/targets/cursor/validate.js.map +1 -0
- package/dist/targets/gemini/bundle.d.ts +25 -0
- package/dist/targets/gemini/bundle.d.ts.map +1 -0
- package/dist/targets/gemini/bundle.js +149 -0
- package/dist/targets/gemini/bundle.js.map +1 -0
- package/dist/targets/gemini/scaffold.d.ts +28 -0
- package/dist/targets/gemini/scaffold.d.ts.map +1 -0
- package/dist/targets/gemini/scaffold.js +57 -0
- package/dist/targets/gemini/scaffold.js.map +1 -0
- package/dist/targets/gemini/schemas.d.ts +53 -0
- package/dist/targets/gemini/schemas.d.ts.map +1 -0
- package/dist/targets/gemini/schemas.js +72 -0
- package/dist/targets/gemini/schemas.js.map +1 -0
- package/dist/targets/gemini/transform.d.ts +106 -0
- package/dist/targets/gemini/transform.d.ts.map +1 -0
- package/dist/targets/gemini/transform.js +137 -0
- package/dist/targets/gemini/transform.js.map +1 -0
- package/dist/targets/gemini/validate.d.ts +26 -0
- package/dist/targets/gemini/validate.d.ts.map +1 -0
- package/dist/targets/gemini/validate.js +146 -0
- package/dist/targets/gemini/validate.js.map +1 -0
- package/dist/targets/kiro/bundle.d.ts +32 -0
- package/dist/targets/kiro/bundle.d.ts.map +1 -0
- package/dist/targets/kiro/bundle.js +106 -0
- package/dist/targets/kiro/bundle.js.map +1 -0
- package/dist/targets/kiro/scaffold.d.ts +28 -0
- package/dist/targets/kiro/scaffold.d.ts.map +1 -0
- package/dist/targets/kiro/scaffold.js +55 -0
- package/dist/targets/kiro/scaffold.js.map +1 -0
- package/dist/targets/kiro/schemas.d.ts +100 -0
- package/dist/targets/kiro/schemas.d.ts.map +1 -0
- package/dist/targets/kiro/schemas.js +147 -0
- package/dist/targets/kiro/schemas.js.map +1 -0
- package/dist/targets/kiro/transform.d.ts +53 -0
- package/dist/targets/kiro/transform.d.ts.map +1 -0
- package/dist/targets/kiro/transform.js +113 -0
- package/dist/targets/kiro/transform.js.map +1 -0
- package/dist/targets/kiro/validate.d.ts +36 -0
- package/dist/targets/kiro/validate.d.ts.map +1 -0
- package/dist/targets/kiro/validate.js +232 -0
- package/dist/targets/kiro/validate.js.map +1 -0
- package/dist/targets/scaffold-kit.d.ts +56 -0
- package/dist/targets/scaffold-kit.d.ts.map +1 -0
- package/dist/targets/scaffold-kit.js +33 -0
- package/dist/targets/scaffold-kit.js.map +1 -0
- package/dist/targets/vercel/scaffold.d.ts +34 -0
- package/dist/targets/vercel/scaffold.d.ts.map +1 -0
- package/dist/targets/vercel/scaffold.js +58 -0
- package/dist/targets/vercel/scaffold.js.map +1 -0
- package/dist/targets/vercel/schemas.d.ts +42 -0
- package/dist/targets/vercel/schemas.d.ts.map +1 -0
- package/dist/targets/vercel/schemas.js +69 -0
- package/dist/targets/vercel/schemas.js.map +1 -0
- package/dist/targets/vercel/validate.d.ts +28 -0
- package/dist/targets/vercel/validate.d.ts.map +1 -0
- package/dist/targets/vercel/validate.js +180 -0
- package/dist/targets/vercel/validate.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-target validators for the Vercel Skills CLI target.
|
|
3
|
+
*
|
|
4
|
+
* The Vercel target's primary authored artifact is `SKILL.md` — one file per
|
|
5
|
+
* skill directory under `plugins/<name>/skills/<skill-name>/SKILL.md`. This
|
|
6
|
+
* module validates:
|
|
7
|
+
* 1. YAML frontmatter presence and schema conformance.
|
|
8
|
+
* 2. Name/parent-directory consistency (the agentskills.io spec requires that
|
|
9
|
+
* a skill's frontmatter `name` matches the name of its immediate parent
|
|
10
|
+
* directory).
|
|
11
|
+
* 3. Body line-count recommendation (soft finding when body exceeds 500 lines).
|
|
12
|
+
*
|
|
13
|
+
* Cross-target concerns (envelope-adherence, name-consistency, mcp-key-sync,
|
|
14
|
+
* marketplace-registration, freshness) are out of scope for this module.
|
|
15
|
+
*
|
|
16
|
+
* @see docs/specs/architecture.md §10 (validation contract), §8.1 (Finding types)
|
|
17
|
+
* @see https://agentskills.io (agentskills.io spec — source of name/description constraints)
|
|
18
|
+
*/
|
|
19
|
+
import * as fs from 'node:fs';
|
|
20
|
+
import * as path from 'node:path';
|
|
21
|
+
import { parse as parseYaml } from 'yaml';
|
|
22
|
+
import { vercelSkillFrontmatterSchema } from './schemas.js';
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
// Constants
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
/** Soft-finding threshold for SKILL.md body length per agentskills.io recommendation. */
|
|
27
|
+
const BODY_LINE_SOFT_LIMIT = 500;
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Internal helpers
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
function hardFinding(pluginName, message, hint) {
|
|
32
|
+
const finding = {
|
|
33
|
+
severity: 'hard',
|
|
34
|
+
code: 'schema-invalid',
|
|
35
|
+
plugin: pluginName,
|
|
36
|
+
message,
|
|
37
|
+
};
|
|
38
|
+
if (hint !== undefined) {
|
|
39
|
+
finding.hint = hint;
|
|
40
|
+
}
|
|
41
|
+
return finding;
|
|
42
|
+
}
|
|
43
|
+
function softFinding(pluginName, code, message, hint) {
|
|
44
|
+
const finding = {
|
|
45
|
+
severity: 'soft',
|
|
46
|
+
code,
|
|
47
|
+
plugin: pluginName,
|
|
48
|
+
message,
|
|
49
|
+
};
|
|
50
|
+
if (hint !== undefined) {
|
|
51
|
+
finding.hint = hint;
|
|
52
|
+
}
|
|
53
|
+
return finding;
|
|
54
|
+
}
|
|
55
|
+
// ---------------------------------------------------------------------------
|
|
56
|
+
// SKILL.md discovery — one level deep under `plugins/<name>/skills/`
|
|
57
|
+
// ---------------------------------------------------------------------------
|
|
58
|
+
/**
|
|
59
|
+
* Return absolute paths to every `SKILL.md` found exactly one directory deep
|
|
60
|
+
* under `skillsDir`. Does not recurse further (current template convention).
|
|
61
|
+
*/
|
|
62
|
+
function findSkillMds(skillsDir) {
|
|
63
|
+
if (!fs.existsSync(skillsDir))
|
|
64
|
+
return [];
|
|
65
|
+
const results = [];
|
|
66
|
+
for (const entry of fs.readdirSync(skillsDir, { withFileTypes: true })) {
|
|
67
|
+
if (!entry.isDirectory())
|
|
68
|
+
continue;
|
|
69
|
+
const candidate = path.join(skillsDir, entry.name, 'SKILL.md');
|
|
70
|
+
if (fs.existsSync(candidate)) {
|
|
71
|
+
results.push(candidate);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return results;
|
|
75
|
+
}
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
// Per-file SKILL.md validation
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
/**
|
|
80
|
+
* Validate a single `SKILL.md` file against the agentskills.io spec.
|
|
81
|
+
*
|
|
82
|
+
* Checks performed:
|
|
83
|
+
* - Frontmatter block present (`---\n...\n---`).
|
|
84
|
+
* - Frontmatter parses as YAML.
|
|
85
|
+
* - Parsed frontmatter satisfies `vercelSkillFrontmatterSchema`.
|
|
86
|
+
* - `name` in frontmatter equals the immediate parent directory name.
|
|
87
|
+
* - Body line count does not exceed the soft limit of 500 lines.
|
|
88
|
+
*/
|
|
89
|
+
function validateSkillMd(skillPath, pluginName) {
|
|
90
|
+
const content = fs.readFileSync(skillPath, 'utf-8');
|
|
91
|
+
// Relative path from the plugin root is included in messages so the author
|
|
92
|
+
// can quickly locate the file (e.g. `skills/evaluate-skill/SKILL.md`).
|
|
93
|
+
const relPath = path.relative(path.join(path.dirname(skillPath), '..', '..'), skillPath);
|
|
94
|
+
// Derive the expected skill name from the parent directory.
|
|
95
|
+
const parentDir = path.basename(path.dirname(skillPath));
|
|
96
|
+
// ------------------------------------------------------------------
|
|
97
|
+
// 1. Frontmatter block
|
|
98
|
+
// ------------------------------------------------------------------
|
|
99
|
+
const fmMatch = /^---\r?\n([\s\S]*?)\r?\n---/m.exec(content);
|
|
100
|
+
if (fmMatch === null) {
|
|
101
|
+
return [
|
|
102
|
+
hardFinding(pluginName, `${relPath}: SKILL.md has no frontmatter block`, `add a YAML frontmatter block between --- markers at the top of ${relPath}`),
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
// ------------------------------------------------------------------
|
|
106
|
+
// 2. YAML parse
|
|
107
|
+
// ------------------------------------------------------------------
|
|
108
|
+
const frontmatterYaml = fmMatch[1] ?? '';
|
|
109
|
+
let parsed;
|
|
110
|
+
try {
|
|
111
|
+
parsed = parseYaml(frontmatterYaml);
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
115
|
+
return [
|
|
116
|
+
hardFinding(pluginName, `${relPath}: frontmatter YAML parse error: ${msg}`, `fix the YAML syntax in the frontmatter of ${relPath}`),
|
|
117
|
+
];
|
|
118
|
+
}
|
|
119
|
+
// ------------------------------------------------------------------
|
|
120
|
+
// 3. Schema validation
|
|
121
|
+
// ------------------------------------------------------------------
|
|
122
|
+
const schemaResult = vercelSkillFrontmatterSchema.safeParse(parsed);
|
|
123
|
+
if (!schemaResult.success) {
|
|
124
|
+
const issues = schemaResult.error.issues
|
|
125
|
+
.map((i) => `${i.path.join('.') || '(root)'}: ${i.message}`)
|
|
126
|
+
.join('; ');
|
|
127
|
+
return [
|
|
128
|
+
hardFinding(pluginName, `${relPath}: frontmatter does not match schema — ${issues}`, `ensure ${relPath} frontmatter includes required fields (name, description) and meets agentskills.io constraints`),
|
|
129
|
+
];
|
|
130
|
+
}
|
|
131
|
+
const frontmatter = schemaResult.data;
|
|
132
|
+
const findings = [];
|
|
133
|
+
// ------------------------------------------------------------------
|
|
134
|
+
// 4. Name/parent-directory consistency (hard)
|
|
135
|
+
// Per agentskills.io: frontmatter `name` must equal the parent dir name.
|
|
136
|
+
// ------------------------------------------------------------------
|
|
137
|
+
if (frontmatter.name !== parentDir) {
|
|
138
|
+
findings.push({
|
|
139
|
+
severity: 'hard',
|
|
140
|
+
code: 'name-consistency',
|
|
141
|
+
plugin: pluginName,
|
|
142
|
+
message: `${relPath}: frontmatter name "${frontmatter.name}" does not match parent directory "${parentDir}"`,
|
|
143
|
+
hint: `rename the skill directory to "${frontmatter.name}" or update the name field to "${parentDir}"`,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
// ------------------------------------------------------------------
|
|
147
|
+
// 5. Body line-count recommendation (soft)
|
|
148
|
+
// The body is everything after the closing `---` of the frontmatter block.
|
|
149
|
+
// ------------------------------------------------------------------
|
|
150
|
+
const fmEnd = content.indexOf('---', content.indexOf('---') + 3);
|
|
151
|
+
if (fmEnd !== -1) {
|
|
152
|
+
const body = content.slice(fmEnd + 3).trimStart();
|
|
153
|
+
const bodyLines = body === '' ? 0 : body.split('\n').length;
|
|
154
|
+
if (bodyLines > BODY_LINE_SOFT_LIMIT) {
|
|
155
|
+
findings.push(softFinding(pluginName, 'schema-invalid', `${relPath}: body is ${bodyLines.toString()} lines (recommended max ${BODY_LINE_SOFT_LIMIT.toString()})`, `consider splitting the skill into smaller, focused skills`));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return findings;
|
|
159
|
+
}
|
|
160
|
+
// ---------------------------------------------------------------------------
|
|
161
|
+
// Public entry point
|
|
162
|
+
// ---------------------------------------------------------------------------
|
|
163
|
+
/**
|
|
164
|
+
* Run Vercel-specific validators (SKILL.md shape and name consistency)
|
|
165
|
+
* against a plugin directory.
|
|
166
|
+
*
|
|
167
|
+
* `pluginDir` is the absolute path to a `plugins/<name>/` directory.
|
|
168
|
+
* All findings use `plugin: path.basename(pluginDir)`.
|
|
169
|
+
*/
|
|
170
|
+
export function validateVercelPlugin(pluginDir) {
|
|
171
|
+
const pluginName = path.basename(pluginDir);
|
|
172
|
+
const skillsDir = path.join(pluginDir, 'skills');
|
|
173
|
+
const skillPaths = findSkillMds(skillsDir);
|
|
174
|
+
const findings = [];
|
|
175
|
+
for (const skillPath of skillPaths) {
|
|
176
|
+
findings.push(...validateSkillMd(skillPath, pluginName));
|
|
177
|
+
}
|
|
178
|
+
return findings;
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/targets/vercel/validate.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ai-plugin-marketplace/core",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Core build pipeline, validation, and scaffolding for the AI plugin marketplace toolkit.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"author": "Mike North <michael.l.north@gmail.com>",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/core.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/core.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./package.json": "./package.json"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"README.md",
|
|
19
|
+
"LICENSE"
|
|
20
|
+
],
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"jiti": "^2.7.0",
|
|
23
|
+
"yaml": "^2.7.0",
|
|
24
|
+
"zod": "^4.0.0"
|
|
25
|
+
},
|
|
26
|
+
"publishConfig": {
|
|
27
|
+
"access": "public"
|
|
28
|
+
},
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "git+https://github.com/ai-plugin-marketplace/tools.git",
|
|
32
|
+
"directory": "packages/core"
|
|
33
|
+
},
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"engines": {
|
|
36
|
+
"node": ">=20.0.0"
|
|
37
|
+
},
|
|
38
|
+
"scripts": {
|
|
39
|
+
"build": "tsc --build && api-extractor run --local",
|
|
40
|
+
"check": "nx run-many --targets=check:typecheck,check:lint-ts,check:api-report,test --projects=@ai-plugin-marketplace/core",
|
|
41
|
+
"check:typecheck": "tsc --build",
|
|
42
|
+
"check:lint-ts": "eslint src",
|
|
43
|
+
"check:api-report": "api-extractor run",
|
|
44
|
+
"fix:api-report": "api-extractor run --local",
|
|
45
|
+
"fix:lint-ts": "eslint src --fix",
|
|
46
|
+
"test": "vitest run",
|
|
47
|
+
"docs": "api-documenter markdown -i temp -o docs",
|
|
48
|
+
"clean": "rimraf dist *.tsbuildinfo temp"
|
|
49
|
+
}
|
|
50
|
+
}
|