Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/reference/file-formats.md
Original file line number Diff line number Diff line change
Expand Up @@ -488,6 +488,7 @@ copilotcli: # for GitHub Copilot CLI-specific parameters (optional; project .git
rovodev: # for Rovo Dev CLI-specific parameters (optional; Agent Skills standard)
allowed-tools: "grep bash" # (optional) space-separated string (a YAML list is also accepted)
license: MIT # (optional)
compatibility: "Requires Python 3.14+ and uv" # (optional) free-form string (object form also accepted)
metadata: # (optional) free-form metadata
author: rulesync
zed: # for Zed-specific parameters (optional)
Expand Down
1 change: 1 addition & 0 deletions skills/rulesync/file-formats.md
Original file line number Diff line number Diff line change
Expand Up @@ -488,6 +488,7 @@ copilotcli: # for GitHub Copilot CLI-specific parameters (optional; project .git
rovodev: # for Rovo Dev CLI-specific parameters (optional; Agent Skills standard)
allowed-tools: "grep bash" # (optional) space-separated string (a YAML list is also accepted)
license: MIT # (optional)
compatibility: "Requires Python 3.14+ and uv" # (optional) free-form string (object form also accepted)
metadata: # (optional) free-form metadata
author: rulesync
zed: # for Zed-specific parameters (optional)
Expand Down
3 changes: 3 additions & 0 deletions src/features/skills/rovodev-skill.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,7 @@ body`,
description: "Desc",
"allowed-tools": "grep bash",
license: "MIT",
compatibility: "Requires Python 3.14+ and uv",
metadata: { author: "rulesync" },
},
body: "Body",
Expand All @@ -305,6 +306,7 @@ body`,
expect(rulesync.getFrontmatter().rovodev).toEqual({
"allowed-tools": "grep bash",
license: "MIT",
compatibility: "Requires Python 3.14+ and uv",
metadata: { author: "rulesync" },
});

Expand All @@ -317,6 +319,7 @@ body`,
const fm = roundTripped.getFrontmatter();
expect(fm["allowed-tools"]).toBe("grep bash");
expect(fm.license).toBe("MIT");
expect(fm.compatibility).toBe("Requires Python 3.14+ and uv");
expect(fm.metadata).toEqual({ author: "rulesync" });
});
});
Expand Down
9 changes: 9 additions & 0 deletions src/features/skills/rovodev-skill.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ export const RovodevSkillFrontmatterSchema = z.looseObject({
// https://support.atlassian.com/rovo/docs/extend-rovo-dev-cli-with-agent-skills/
"allowed-tools": z.optional(z.union([z.string(), z.array(z.string())])),
license: z.optional(z.string()),
// The Agent Skills spec defines `compatibility` as a free-form string
// (1–500 chars); the object form stays accepted for back-compat.
compatibility: z.optional(z.union([z.string(), z.looseObject({})])),
metadata: z.optional(z.looseObject({})),
});

Expand Down Expand Up @@ -138,6 +141,9 @@ export class RovodevSkill extends ToolSkill {
"allowed-tools": frontmatter["allowed-tools"],
}),
...(frontmatter.license !== undefined && { license: frontmatter.license }),
...(frontmatter.compatibility !== undefined && {
compatibility: frontmatter.compatibility,
}),
...(frontmatter.metadata !== undefined && { metadata: frontmatter.metadata }),
};
const rulesyncFrontmatter: RulesyncSkillFrontmatterInput = {
Expand Down Expand Up @@ -176,6 +182,9 @@ export class RovodevSkill extends ToolSkill {
"allowed-tools": rovodevSection["allowed-tools"],
}),
...(rovodevSection?.license !== undefined && { license: rovodevSection.license }),
...(rovodevSection?.compatibility !== undefined && {
compatibility: rovodevSection.compatibility,
}),
...(rovodevSection?.metadata !== undefined && { metadata: rovodevSection.metadata }),
};

Expand Down
4 changes: 4 additions & 0 deletions src/features/skills/rulesync-skill.ts
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,9 @@ const RulesyncSkillFrontmatterSchemaInternal = z.looseObject({
z.looseObject({
"allowed-tools": z.optional(z.union([z.string(), z.array(z.string())])),
license: z.optional(z.string()),
// The Agent Skills spec defines `compatibility` as a free-form string
// (1–500 chars); the object form stays accepted for back-compat.
compatibility: z.optional(z.union([z.string(), z.looseObject({})])),
metadata: z.optional(z.looseObject({})),
}),
),
Expand Down Expand Up @@ -268,6 +271,7 @@ export type RulesyncSkillFrontmatterInput = {
rovodev?: {
"allowed-tools"?: string | string[];
license?: string;
compatibility?: string | Record<string, unknown>;
metadata?: Record<string, unknown>;
};
cursor?: {
Expand Down