feat: add developer skill — coding conventions + architecture guide

Adds 'uwf skill developer' for contributors to the workflow engine.
Covers: monorepo structure, dependency layers, functional-first conventions,
error handling, logging with tagged logger, development workflow,
testing, publishing, key modules (moderator, extract pipeline, createAgent).

Refs #541
This commit is contained in:
2026-05-26 17:11:07 +00:00
parent c4e94bbe56
commit 09b7ddf6d0
5 changed files with 163 additions and 0 deletions
@@ -10,6 +10,7 @@ import {
cmdSkillArchitecture,
cmdSkillAuthor,
cmdSkillCli,
cmdSkillDeveloper,
cmdSkillList,
cmdSkillModerator,
cmdSkillUser,
@@ -27,6 +28,7 @@ describe("skill commands", () => {
expect(result).toContain("actor");
expect(result).toContain("user");
expect(result).toContain("author");
expect(result).toContain("developer");
for (const name of result) {
expect(name).toMatch(/^\S+$/);
}
@@ -97,6 +99,15 @@ describe("skill commands", () => {
expect(result.length).toBeGreaterThan(500);
});
test("skill developer returns non-empty markdown string", () => {
const result = cmdSkillDeveloper();
expect(typeof result).toBe("string");
expect(result).toContain("Monorepo");
expect(result).toContain("CAS");
expect(result).toContain("Biome");
expect(result.length).toBeGreaterThan(500);
});
test("skill help subcommand is suppressed", () => {
const output = execFileSync("bun", ["src/cli.ts", "skill", "--help"], {
cwd: join(__dirname, "..", ".."),
@@ -111,6 +122,7 @@ describe("skill commands", () => {
expect(output).toContain("actor");
expect(output).toContain("user");
expect(output).toContain("author");
expect(output).toContain("developer");
expect(output).toContain("list");
});
});
+8
View File
@@ -21,6 +21,7 @@ import {
cmdSkillArchitecture,
cmdSkillAuthor,
cmdSkillCli,
cmdSkillDeveloper,
cmdSkillList,
cmdSkillModerator,
cmdSkillUser,
@@ -520,6 +521,13 @@ skill
console.log(cmdSkillAuthor());
});
skill
.command("developer")
.description("Print the developer reference (coding conventions + architecture)")
.action(() => {
console.log(cmdSkillDeveloper());
});
skill
.command("moderator")
.description("Print the moderator reference")
@@ -3,6 +3,7 @@ export {
generateArchitectureReference as cmdSkillArchitecture,
generateAuthorReference as cmdSkillAuthor,
generateCliReference as cmdSkillCli,
generateDeveloperReference as cmdSkillDeveloper,
generateModeratorReference as cmdSkillModerator,
generateUserReference as cmdSkillUser,
generateYamlReference as cmdSkillYaml,
@@ -16,6 +17,7 @@ const SKILL_NAMES = [
"actor",
"user",
"author",
"developer",
] as const;
export function cmdSkillList(): ReadonlyArray<string> {