mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-15 08:03:39 +00:00
feat(coding-agent): add --skills CLI flag for filtering skills
Adds glob pattern support for skill filtering: - --skills <patterns> CLI flag (comma-separated glob patterns) - includeSkills setting in settings.json - ignoredSkills now supports glob patterns - ignoredSkills takes precedence over includeSkills and --skills Closes #268
This commit is contained in:
parent
70440f7591
commit
d95a5c4186
8 changed files with 148 additions and 4 deletions
|
|
@ -258,6 +258,34 @@ describe("skills", () => {
|
|||
expect(skills).toHaveLength(0);
|
||||
});
|
||||
|
||||
it("should support glob patterns in ignoredSkills", () => {
|
||||
const { skills } = loadSkills({
|
||||
enableCodexUser: false,
|
||||
enableClaudeUser: false,
|
||||
enableClaudeProject: false,
|
||||
enablePiUser: false,
|
||||
enablePiProject: false,
|
||||
customDirectories: [fixturesDir],
|
||||
ignoredSkills: ["valid-*"],
|
||||
});
|
||||
expect(skills.every((s) => !s.name.startsWith("valid-"))).toBe(true);
|
||||
});
|
||||
|
||||
it("should have ignoredSkills take precedence over includeSkills", () => {
|
||||
const { skills } = loadSkills({
|
||||
enableCodexUser: false,
|
||||
enableClaudeUser: false,
|
||||
enableClaudeProject: false,
|
||||
enablePiUser: false,
|
||||
enablePiProject: false,
|
||||
customDirectories: [fixturesDir],
|
||||
includeSkills: ["valid-*"],
|
||||
ignoredSkills: ["valid-skill"],
|
||||
});
|
||||
// valid-skill should be excluded even though it matches includeSkills
|
||||
expect(skills.every((s) => s.name !== "valid-skill")).toBe(true);
|
||||
});
|
||||
|
||||
it("should expand ~ in customDirectories", () => {
|
||||
const homeSkillsDir = join(homedir(), ".pi/agent/skills");
|
||||
const { skills: withTilde } = loadSkills({
|
||||
|
|
@ -289,6 +317,67 @@ describe("skills", () => {
|
|||
});
|
||||
expect(skills).toHaveLength(0);
|
||||
});
|
||||
|
||||
it("should filter skills with includeSkills glob patterns", () => {
|
||||
// Load all skills from fixtures
|
||||
const { skills: allSkills } = loadSkills({
|
||||
enableCodexUser: false,
|
||||
enableClaudeUser: false,
|
||||
enableClaudeProject: false,
|
||||
enablePiUser: false,
|
||||
enablePiProject: false,
|
||||
customDirectories: [fixturesDir],
|
||||
});
|
||||
expect(allSkills.length).toBeGreaterThan(0);
|
||||
|
||||
// Filter to only include "valid-skill"
|
||||
const { skills: filtered } = loadSkills({
|
||||
enableCodexUser: false,
|
||||
enableClaudeUser: false,
|
||||
enableClaudeProject: false,
|
||||
enablePiUser: false,
|
||||
enablePiProject: false,
|
||||
customDirectories: [fixturesDir],
|
||||
includeSkills: ["valid-skill"],
|
||||
});
|
||||
expect(filtered).toHaveLength(1);
|
||||
expect(filtered[0].name).toBe("valid-skill");
|
||||
});
|
||||
|
||||
it("should support glob patterns in includeSkills", () => {
|
||||
const { skills } = loadSkills({
|
||||
enableCodexUser: false,
|
||||
enableClaudeUser: false,
|
||||
enableClaudeProject: false,
|
||||
enablePiUser: false,
|
||||
enablePiProject: false,
|
||||
customDirectories: [fixturesDir],
|
||||
includeSkills: ["valid-*"],
|
||||
});
|
||||
expect(skills.length).toBeGreaterThan(0);
|
||||
expect(skills.every((s) => s.name.startsWith("valid-"))).toBe(true);
|
||||
});
|
||||
|
||||
it("should return all skills when includeSkills is empty", () => {
|
||||
const { skills: withEmpty } = loadSkills({
|
||||
enableCodexUser: false,
|
||||
enableClaudeUser: false,
|
||||
enableClaudeProject: false,
|
||||
enablePiUser: false,
|
||||
enablePiProject: false,
|
||||
customDirectories: [fixturesDir],
|
||||
includeSkills: [],
|
||||
});
|
||||
const { skills: withoutOption } = loadSkills({
|
||||
enableCodexUser: false,
|
||||
enableClaudeUser: false,
|
||||
enableClaudeProject: false,
|
||||
enablePiUser: false,
|
||||
enablePiProject: false,
|
||||
customDirectories: [fixturesDir],
|
||||
});
|
||||
expect(withEmpty.length).toBe(withoutOption.length);
|
||||
});
|
||||
});
|
||||
|
||||
describe("collision handling", () => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue