feat: add coding-agent skill and anyBins gating
Co-authored-by: Sreekaran Srinath <ss@sreekaran.com>
This commit is contained in:
committed by
GitHub
parent
59601eb99c
commit
0ac30afb29
@@ -215,6 +215,12 @@ describe("buildWorkspaceSkillsPrompt", () => {
|
||||
description: "Needs a bin",
|
||||
metadata: '{"clawdis":{"requires":{"bins":["fakebin"]}}}',
|
||||
});
|
||||
await writeSkill({
|
||||
dir: path.join(skillsDir, "anybin-skill"),
|
||||
name: "anybin-skill",
|
||||
description: "Needs any bin",
|
||||
metadata: '{"clawdis":{"requires":{"anyBins":["missingbin","fakebin"]}}}',
|
||||
});
|
||||
await writeSkill({
|
||||
dir: path.join(skillsDir, "config-skill"),
|
||||
name: "config-skill",
|
||||
@@ -242,6 +248,7 @@ describe("buildWorkspaceSkillsPrompt", () => {
|
||||
expect(defaultPrompt).toContain("always-skill");
|
||||
expect(defaultPrompt).toContain("config-skill");
|
||||
expect(defaultPrompt).not.toContain("bin-skill");
|
||||
expect(defaultPrompt).not.toContain("anybin-skill");
|
||||
expect(defaultPrompt).not.toContain("env-skill");
|
||||
|
||||
await fs.mkdir(binDir, { recursive: true });
|
||||
@@ -258,6 +265,7 @@ describe("buildWorkspaceSkillsPrompt", () => {
|
||||
},
|
||||
});
|
||||
expect(gatedPrompt).toContain("bin-skill");
|
||||
expect(gatedPrompt).toContain("anybin-skill");
|
||||
expect(gatedPrompt).toContain("env-skill");
|
||||
expect(gatedPrompt).toContain("always-skill");
|
||||
expect(gatedPrompt).not.toContain("config-skill");
|
||||
|
||||
@@ -30,6 +30,7 @@ export type ClawdisSkillMetadata = {
|
||||
os?: string[];
|
||||
requires?: {
|
||||
bins?: string[];
|
||||
anyBins?: string[];
|
||||
env?: string[];
|
||||
config?: string[];
|
||||
};
|
||||
@@ -307,6 +308,7 @@ function resolveClawdisMetadata(
|
||||
requires: requiresRaw
|
||||
? {
|
||||
bins: normalizeStringList(requiresRaw.bins),
|
||||
anyBins: normalizeStringList(requiresRaw.anyBins),
|
||||
env: normalizeStringList(requiresRaw.env),
|
||||
config: normalizeStringList(requiresRaw.config),
|
||||
}
|
||||
@@ -347,6 +349,11 @@ function shouldIncludeSkill(params: {
|
||||
if (!hasBinary(bin)) return false;
|
||||
}
|
||||
}
|
||||
const requiredAnyBins = entry.clawdis?.requires?.anyBins ?? [];
|
||||
if (requiredAnyBins.length > 0) {
|
||||
const anyFound = requiredAnyBins.some((bin) => hasBinary(bin));
|
||||
if (!anyFound) return false;
|
||||
}
|
||||
|
||||
const requiredEnv = entry.clawdis?.requires?.env ?? [];
|
||||
if (requiredEnv.length > 0) {
|
||||
|
||||
Reference in New Issue
Block a user