mirror of
https://github.com/addyosmani/agent-skills.git
synced 2026-10-26 23:15:04 +00:00
Merge #675: decode quoted skill identities consistently in run-evals
This commit is contained in:
2 files changed
+21
-4
No files matched your search
@@ -56,6 +56,8 @@ function makeSandbox() {
|
|||||||
fs.mkdirSync(path.join(root, 'evals', 'cases'), { recursive: true });
|
fs.mkdirSync(path.join(root, 'evals', 'cases'), { recursive: true });
|
||||||
fs.mkdirSync(path.join(root, 'evals', 'fixtures', 'project'), { recursive: true });
|
fs.mkdirSync(path.join(root, 'evals', 'fixtures', 'project'), { recursive: true });
|
||||||
fs.copyFileSync(RUNNER, path.join(root, 'scripts', 'run-evals.js'));
|
fs.copyFileSync(RUNNER, path.join(root, 'scripts', 'run-evals.js'));
|
||||||
|
fs.mkdirSync(path.join(root, 'scripts', 'lib'), { recursive: true });
|
||||||
|
fs.copyFileSync(path.join(__dirname, 'lib', 'skill-lint.js'), path.join(root, 'scripts', 'lib', 'skill-lint.js'));
|
||||||
fs.writeFileSync(path.join(root, 'evals', 'fixtures', 'project', 'context.txt'), 'fixture\n');
|
fs.writeFileSync(path.join(root, 'evals', 'fixtures', 'project', 'context.txt'), 'fixture\n');
|
||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
@@ -811,3 +813,18 @@ test('removes the throwaway workspace when fixture setup fails', () => {
|
|||||||
fs.rmSync(temp, { recursive: true, force: true });
|
fs.rmSync(temp, { recursive: true, force: true });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('loads quoted YAML skill identities using their decoded values', () => {
|
||||||
|
const root = makeSandbox();
|
||||||
|
try {
|
||||||
|
writeSkill(root, 'alpha', 'code unit tests');
|
||||||
|
const skill = path.join(root, 'skills', 'alpha', 'SKILL.md');
|
||||||
|
fs.writeFileSync(skill, fs.readFileSync(skill, 'utf8').replace('name: alpha', "name: 'alpha'")
|
||||||
|
.replace('description: code unit tests', 'description: "code unit tests"'));
|
||||||
|
writeJson(path.join(root, 'evals', 'cases', 'alpha.json'), completeCase('alpha', 'code unit tests'));
|
||||||
|
const result = run(root);
|
||||||
|
assert.equal(result.status, 0, result.stdout + result.stderr);
|
||||||
|
assert.match(result.stdout, /PASSED/);
|
||||||
|
} finally { fs.rmSync(root, { recursive: true, force: true }); }
|
||||||
|
});
|
||||||
@@ -31,6 +31,7 @@
|
|||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const os = require('os');
|
const os = require('os');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
|
const { parseFrontmatter } = require('./lib/skill-lint');
|
||||||
const { execFileSync } = require('child_process');
|
const { execFileSync } = require('child_process');
|
||||||
|
|
||||||
const ROOT = path.join(__dirname, '..');
|
const ROOT = path.join(__dirname, '..');
|
||||||
@@ -156,10 +157,9 @@ function loadSkills() {
|
|||||||
const file = path.join(SKILLS_DIR, dir, 'SKILL.md');
|
const file = path.join(SKILLS_DIR, dir, 'SKILL.md');
|
||||||
if (!fs.existsSync(file)) continue;
|
if (!fs.existsSync(file)) continue;
|
||||||
const src = fs.readFileSync(file, 'utf8');
|
const src = fs.readFileSync(file, 'utf8');
|
||||||
const m = src.match(/^---[ \t]*\r?\n([\s\S]*?)\r?\n---[ \t]*(?:\r?\n|$)/);
|
const frontmatter = parseFrontmatter(src);
|
||||||
if (!m) continue;
|
if (!frontmatter) continue;
|
||||||
const name = (m[1].match(/^name:\s*(.+)$/m) || [])[1];
|
const { name, description } = frontmatter;
|
||||||
const description = (m[1].match(/^description:\s*(.+)$/m) || [])[1];
|
|
||||||
if (name && description) skills.push({ name: name.trim(), description: description.trim(), dir });
|
if (name && description) skills.push({ name: name.trim(), description: description.trim(), dir });
|
||||||
}
|
}
|
||||||
return skills;
|
return skills;
|
||||||
|
|||||||
Reference in new issue
Block a user