feat(installer): Add selective install filters and new skill

Add installer filters for risk, category, and tags so maintainers and
users can ship smaller skill surfaces to context-sensitive runtimes.
Document the reduced-install flow for OpenCode-style hosts, add the
humanize-chinese community skill, and sync the generated catalog and
plugin-safe artifacts that now reflect the release batch.

Refs #437
Refs #440
Refs #443
This commit is contained in:
sickn33
2026-04-03 17:08:33 +02:00
parent db36188c78
commit bb2304a34f
36 changed files with 4076 additions and 158 deletions

View File

@@ -3,7 +3,7 @@ const fs = require("fs");
const os = require("os");
const path = require("path");
const { listSkillIds, listSkillIdsRecursive } = require("../../lib/skill-utils");
const { listSkillIds, listSkillIdsRecursive, readSkill } = require("../../lib/skill-utils");
function withTempDir(fn) {
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "skill-utils-security-"));
@@ -110,3 +110,33 @@ withTempDir((root) => {
fs.lstatSync = originalLstatSync;
}
});
withTempDir((root) => {
const skillsDir = path.join(root, "skills");
const skillDir = path.join(skillsDir, "metadata-skill");
fs.mkdirSync(skillDir, { recursive: true });
fs.writeFileSync(
path.join(skillDir, "SKILL.md"),
`---
name: metadata-skill
category: backend
risk: safe
metadata:
tags: "[api, saas]"
---
# metadata-skill
`,
"utf8",
);
const skill = readSkill(skillsDir, "metadata-skill");
assert.strictEqual(skill.category, "backend", "readSkill should expose category metadata");
assert.strictEqual(skill.risk, "safe", "readSkill should expose risk metadata");
assert.deepStrictEqual(
skill.tags,
["api", "saas"],
"readSkill should normalize inline tag lists from metadata.tags",
);
});