feat: add author skill — workflow YAML design guide

Adds 'uwf skill author' for agents/humans designing workflow definitions.
Covers: YAML structure, role definition, frontmatter schema design,
graph routing, edge prompts, self-testing, and common pitfalls.

Refs #539
This commit is contained in:
2026-05-26 16:48:52 +00:00
parent 6483bc4861
commit dbefe793f2
5 changed files with 216 additions and 1 deletions
@@ -8,6 +8,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
import {
cmdSkillActor,
cmdSkillArchitecture,
cmdSkillAuthor,
cmdSkillCli,
cmdSkillList,
cmdSkillModerator,
@@ -25,6 +26,7 @@ describe("skill commands", () => {
expect(result).toContain("moderator");
expect(result).toContain("actor");
expect(result).toContain("user");
expect(result).toContain("author");
for (const name of result) {
expect(name).toMatch(/^\S+$/);
}
@@ -84,6 +86,17 @@ describe("skill commands", () => {
expect(result.length).toBeGreaterThan(500);
});
test("skill author returns non-empty markdown string", () => {
const result = cmdSkillAuthor();
expect(typeof result).toBe("string");
expect(result).toContain("frontmatter");
expect(result).toContain("graph");
expect(result).toContain("$START");
expect(result).toContain("$END");
expect(result).toContain("$status");
expect(result.length).toBeGreaterThan(500);
});
test("skill help subcommand is suppressed", () => {
const output = execFileSync("bun", ["src/cli.ts", "skill", "--help"], {
cwd: join(__dirname, "..", ".."),
@@ -97,6 +110,7 @@ describe("skill commands", () => {
expect(output).toContain("moderator");
expect(output).toContain("actor");
expect(output).toContain("user");
expect(output).toContain("author");
expect(output).toContain("list");
});
});
+8
View File
@@ -19,6 +19,7 @@ import { cmdSetup, cmdSetupInteractive } from "./commands/setup.js";
import {
cmdSkillActor,
cmdSkillArchitecture,
cmdSkillAuthor,
cmdSkillCli,
cmdSkillList,
cmdSkillModerator,
@@ -512,6 +513,13 @@ skill
console.log(cmdSkillActor());
});
skill
.command("author")
.description("Print the author reference (workflow YAML design guide)")
.action(() => {
console.log(cmdSkillAuthor());
});
skill
.command("moderator")
.description("Print the moderator reference")
+10 -1
View File
@@ -1,13 +1,22 @@
export {
generateActorReference as cmdSkillActor,
generateArchitectureReference as cmdSkillArchitecture,
generateAuthorReference as cmdSkillAuthor,
generateCliReference as cmdSkillCli,
generateModeratorReference as cmdSkillModerator,
generateUserReference as cmdSkillUser,
generateYamlReference as cmdSkillYaml,
} from "@uncaged/workflow-util";
const SKILL_NAMES = ["cli", "architecture", "yaml", "moderator", "actor", "user"] as const;
const SKILL_NAMES = [
"cli",
"architecture",
"yaml",
"moderator",
"actor",
"user",
"author",
] as const;
export function cmdSkillList(): ReadonlyArray<string> {
return [...SKILL_NAMES];