|
|
@@ -6,6 +6,7 @@ import { Identifier } from "../id/id"
|
|
|
import PROMPT_INITIALIZE from "./template/initialize.txt"
|
|
|
import PROMPT_REVIEW from "./template/review.txt"
|
|
|
import { MCP } from "../mcp"
|
|
|
+import { Skill } from "../skill"
|
|
|
|
|
|
export namespace Command {
|
|
|
export const Event = {
|
|
|
@@ -27,6 +28,7 @@ export namespace Command {
|
|
|
agent: z.string().optional(),
|
|
|
model: z.string().optional(),
|
|
|
mcp: z.boolean().optional(),
|
|
|
+ skill: z.boolean().optional(),
|
|
|
// workaround for zod not supporting async functions natively so we use getters
|
|
|
// https://zod.dev/v4/changelog?id=zfunction
|
|
|
template: z.promise(z.string()).or(z.string()),
|
|
|
@@ -118,6 +120,21 @@ export namespace Command {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // Add skills as invokable commands
|
|
|
+ for (const skill of await Skill.all()) {
|
|
|
+ // Skip if a command with this name already exists
|
|
|
+ if (result[skill.name]) continue
|
|
|
+ result[skill.name] = {
|
|
|
+ name: skill.name,
|
|
|
+ description: skill.description,
|
|
|
+ skill: true,
|
|
|
+ get template() {
|
|
|
+ return Skill.content(skill.name).then((content) => content ?? "")
|
|
|
+ },
|
|
|
+ hints: [],
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return result
|
|
|
})
|
|
|
|