diff --git a/skills/workflow-render/SKILL.md b/skills/workflow-render/SKILL.md new file mode 100644 index 000000000..3229f4de7 --- /dev/null +++ b/skills/workflow-render/SKILL.md @@ -0,0 +1,74 @@ +--- +name: workflow-render +user-invocable: false +allowed-tools: Bash(node .claude/skills/workflow-render/scripts/render.cjs) +--- + +# Workflow Render + +Deterministic renderer for fixed-shape workflow output. Layout that is fully determined by data is computed here, in code, and emitted verbatim — never re-derived character-by-character on every render. The wrap/width math lives here once, so the gutter-budget bug can exist in only one place. + +Two ways in: + +- **CLI** — Claude invokes it via Bash for trivial-input shapes (a label, a title). Print the result verbatim to the user. +- **Library** — other scripts `require()` it and call the functions in-process. The data-owner (e.g. `discovery.cjs`) builds the structure and calls the renderer; Claude never assembles the input. + +The output is for display. Never read a rendered block back to extract a decision — decision data comes from structured state, not from parsing the rendered text. + +## Invocation + +```bash +node .claude/skills/workflow-render/scripts/render.cjs [args] +``` + +All shapes are a fixed `--width` (default `49`, the canonical workflow width). + +## Commands + +### `signpost