[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CZGD2YWGXTV25FM004F7ZM":3,"skill-same:01M6CZGD2YWGXTV25FM004F7ZM":73},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":13,"repositoryHtmlUrl":54,"repositoryHomepageUrl":55,"ownerHtmlUrl":56,"ownerBlogUrl":57,"ownerDescription":6,"updatedAt":58,"install":59,"resources":72},"01M6CZGD2YWGXTV25FM004F7ZM","pipeline-designer",null,"Design and create structured output pipelines. Gathers requirements, designs step sequences with output schemas, generates valid YAML pipeline definitions, and validates them.","clankercode\u002Fclawq","clankercode","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F269201082?v=4","01M6CZFKG57M58N3F63P2H9742","01M6CZFKMHDHR7D6ADH22V9T11",0,"Unlicense","https:\u002F\u002Fgithub.com\u002Fclankercode\u002Fclawq\u002Fblob\u002Fmaster\u002Fdocs\u002Fbuiltin-skills\u002Fpipeline-designer\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"pipeline designer","pipeline","designer","read","requirements","structured","message","what the","do","pipelines","user","write","design","question","ask","shell","yaml","file","create","valid","2026-11-10 10:12:30",false,"---\nname: pipeline-designer\ndescription: Design and create structured output pipelines. Gathers requirements, designs step sequences with output schemas, generates valid YAML pipeline definitions, and validates them.\nallowed-tools: shell_exec, file_write, file_read, ask_user_question, send_message\nargument-hint: [description of what the pipeline should do]\n---\n\n# \u002Fpipeline-designer — Structured Output Pipeline Designer\n\nDesign and create multi-step structured output pipelines for clawq. Each pipeline is a YAML file defining a sequence of LLM prompt steps with validated JSON Schema outputs. Steps can reference previous step outputs and compose other pipelines.\n\n**Note:** This skill provides in-conversation pipeline authoring guided by the agent. For an interactive CLI setup wizard, use `clawq pipeline wizard` instead. Both approaches produce the same pipeline YAML files — use whichever fits your workflow.\n\n## Progress Reporting\n\nAt the start of each phase, call send_message to report progress:\n- send_message(text=\"Pipeline Designer, step 1\u002F5: Gathering requirements...\")\n- send_message(text=\"Pipeline Designer, step 2\u002F5: Designing step sequence...\")\n- send_message(text=\"Pipeline Designer, step 3\u002F5: Defining output schemas...\")\n- send_message(text=\"Pipeline Designer, step 4\u002F5: Generating YAML definition...\")\n- send_message(text=\"Pipeline Designer, step 5\u002F5: Validating pipeline...\")\n\nAlways send the progress message before starting each phase.\n\n## Phase 1: Gather Requirements\n\n> First, call send_message(text=\"Pipeline Designer, step 1\u002F5: Gathering requirements...\").\n\nIf `$ARGUMENTS` provides a description, parse it for context and pre-fill answers. Confirm with the user.\n\nCollect via `ask_user_question` (or conversationally if unavailable):\n\n1. **Pipeline name** (text) — short identifier using alphanumeric chars and hyphens (e.g. \"research-report\")\n2. **Description** (text) — what the pipeline should accomplish\n3. **Inputs** — what parameters the pipeline needs (name, type, description, required?, default value?)\n4. **Desired outputs** — what the final output should look like\n5. **Number of steps** (optional) — rough estimate of how many steps\n\n## Phase 2: Design Step Sequence\n\n> First, call send_message(text=\"Pipeline Designer, step 2\u002F5: Designing step sequence...\").\n\nBased on requirements, design the step sequence:\n\n1. Identify logical stages (e.g. outline -> draft -> review)\n2. Determine data flow between steps (which step outputs feed into which step prompts)\n3. Decide if any steps should reference existing pipelines (composability)\n4. Choose appropriate models for each step if different from default (optional)\n5. Set retry counts for steps that may need multiple attempts (default: 2)\n\nPresent the proposed step sequence to the user for review before proceeding.\n\n## Phase 3: Define Output Schemas\n\n> First, call send_message(text=\"Pipeline Designer, step 3\u002F5: Defining output schemas...\").\n\nFor each prompt step, define a JSON Schema for the expected output. Follow these rules:\n\n### Supported JSON Schema Keywords\n\nThe pipeline validator supports this subset of JSON Schema:\n\n**Type keywords:** `type` (one of: `object`, `array`, `string`, `integer`, `number`, `boolean`, `null`)\n\n**Object keywords:**\n- `properties` — map of property name to sub-schema\n- `required` — array of required property names\n- `additionalProperties` — boolean (default true; set false to reject extra keys)\n\n**Array keywords:**\n- `items` — schema for array elements\n- `minItems`, `maxItems` — integer bounds on array length\n\n**String keywords:**\n- `minLength`, `maxLength` — integer bounds on string length\n- `enum` — array of allowed values\n\n**Numeric keywords:**\n- `minimum`, `maximum` — numeric bounds\n\n### Schema Design Guidelines\n\n- Keep schemas focused — only require what subsequent steps actually need\n- Use `required` for fields that downstream steps depend on\n- Prefer `string` for free-text content, `integer` for counts, `array` for lists\n- Use `enum` to constrain categorical values (e.g. `[\"low\", \"medium\", \"high\"]`)\n- Nest objects for structured sub-components\n- Set `additionalProperties: false` only when strict shape control matters\n\n## Phase 4: Generate YAML Definition\n\n> First, call send_message(text=\"Pipeline Designer, step 4\u002F5: Generating YAML definition...\").\n\nGenerate the complete pipeline YAML file. Use `file_write` to save it to `~\u002F.clawq\u002Fpipelines\u002F\u003Cname>.yaml`.\n\n### Pipeline YAML Format Reference\n\n```yaml\nname: pipeline-name\nversion: \"1.0\"\ndescription: What this pipeline does\n\ninputs:\n  input_name:\n    type: string\n    description: What this input is for\n    required: true\n    default: optional-default-value\n\nsteps:\n  # Prompt step — calls an LLM and validates the output\n  - name: step-name\n    prompt: |\n      Your prompt text here.\n      Use {{input.input_name}} for input variables.\n      Use {{previous_step_name}} for full JSON output of a previous step.\n      Use {{previous_step_name.field}} for a specific field from a previous step.\n    system_prompt: Optional system prompt override\n    model: Optional model override (e.g. \"openai:gpt-5.4\")\n    output_schema:\n      type: object\n      properties:\n        field_name:\n          type: string\n        another_field:\n          type: integer\n      required: [field_name]\n    max_retries: 2\n\n  # Pipeline step — runs another pipeline as a sub-step\n  - name: sub-step-name\n    pipeline: other-pipeline-name\n    input_map:\n      other_input: \"{{input.my_input}}\"\n      derived_input: \"{{previous_step_name.field}}\"\n```\n\n### Template Variable Syntax\n\n- `{{input.X}}` — replaced with the value of input parameter `X`\n- `{{step_name}}` — replaced with the full JSON output of the named step\n- `{{step_name.field}}` — replaced with a specific field extracted from a step's JSON output (top-level string\u002Fnumber fields only; objects\u002Farrays use the full JSON representation)\n\n### Key Constraints\n\n- Step names must be unique within a pipeline\n- Step names must be valid identifiers (alphanumeric + hyphens)\n- Pipeline steps can reference other pipelines by name (max nesting depth: 3)\n- `max_retries` defaults to 1 if omitted\n- `version` should be a string (e.g. \"1.0\")\n\n## Phase 5: Validate Pipeline\n\n> First, call send_message(text=\"Pipeline Designer, step 5\u002F5: Validating pipeline...\").\n\nAfter writing the YAML file, validate it:\n\n```\nshell_exec(\"clawq pipeline validate \u003Cname>\")\n```\n\nIf validation fails, fix the issues and re-validate. Common issues:\n- Duplicate step names\n- Invalid JSON Schema (unknown type, malformed properties)\n- Missing required fields in pipeline definition\n- YAML syntax errors\n\nOptionally, show the user how to run the pipeline:\n\n```\nclawq pipeline run \u003Cname> --input key1=value1 --input key2=value2\n```\n\n## Example Pipelines\n\n### Research Report Pipeline\nA 3-step pipeline: outline the report structure, write the draft, then review it.\n- Inputs: `topic` (required), `depth` (default: \"medium\")\n- Steps: outline -> draft -> review\n- Each step's schema validates the expected structure\n\n### Code Review Pipeline\nA 2-step pipeline: analyze code, then generate review feedback.\n- Inputs: `code` (required), `language` (default: \"ocaml\")\n- Steps: analyze -> review\n- Analysis step outputs: issues array, complexity score\n- Review step outputs: summary, recommendations array, rating\n\n### Data Extraction Pipeline\nA 2-step pipeline: extract entities, then classify them.\n- Inputs: `text` (required), `categories` (required)\n- Steps: extract -> classify\n- Extract outputs array of entities with name and context\n- Classify maps each entity to a category from the input list\n","# \u002Fpipeline-designer — Structured Output Pipeline Designer\n\nDesign and create multi-step structured output pipelines for clawq. Each pipeline is a YAML file defining a sequence of LLM prompt steps with validated JSON Schema outputs. Steps can reference previous step outputs and compose other pipelines.\n\n**Note:** This skill provides in-conversation pipeline authoring guided by the agent. For an interactive CLI setup wizard, use `clawq pipeline wizard` instead. Both approaches produce the same pipeline YAML files — use whichever fits your workflow.\n\n## Progress Reporting\n\nAt the start of each phase, call send_message to report progress:\n- send_message(text=\"Pipeline Designer, step 1\u002F5: Gathering requirements...\")\n- send_message(text=\"Pipeline Designer, step 2\u002F5: Designing step sequence...\")\n- send_message(text=\"Pipeline Designer, step 3\u002F5: Defining output schemas...\")\n- send_message(text=\"Pipeline Designer, step 4\u002F5: Generating YAML definition...\")\n- send_message(text=\"Pipeline Designer, step 5\u002F5: Validating pipeline...\")\n\nAlways send the progress message before starting each phase.\n\n## Phase 1: Gather Requirements\n\n> First, call send_message(text=\"Pipeline Designer, step 1\u002F5: Gathering requirements...\").\n\nIf `$ARGUMENTS` provides a description, parse it for context and pre-fill answers. Confirm with the user.\n\nCollect via `ask_user_question` (or conversationally if unavailable):\n\n1. **Pipeline name** (text) — short identifier using alphanumeric chars and hyphens (e.g. \"research-report\")\n2. **Description** (text) — what the pipeline should accomplish\n3. **Inputs** — what parameters the pipeline needs (name, type, description, required?, default value?)\n4. **Desired outputs** — what the final output should look like\n5. **Number of steps** (optional) — rough estimate of how many steps\n\n## Phase 2: Design Step Sequence\n\n> First, call send_message(text=\"Pipeline Designer, step 2\u002F5: Designing step sequence...\").\n\nBased on requirements, design the step sequence:\n\n1. Identify logical stages (e.g. outline -> draft -> review)\n2. Determine data flow between steps (which step outputs feed into which step prompts)\n3. Decide if any steps should reference existing pipelines (composability)\n4. Choose appropriate models for each step if different from default (optional)\n5. Set retry counts for steps that may need multiple attempts (default: 2)\n\nPresent the proposed step sequence to the user for review before proceeding.\n\n## Phase 3: Define Output Schemas\n\n> First, call send_message(text=\"Pipeline Designer, step 3\u002F5: Defining output schemas...\").\n\nFor each prompt step, define a JSON Schema for the expected output. Follow these rules:\n\n### Supported JSON Schema Keywords\n\nThe pipeline validator supports this subset of JSON Schema:\n\n**Type keywords:** `type` (one of: `object`, `array`, `string`, `integer`, `number`, `boolean`, `null`)\n\n**Object keywords:**\n- `properties` — map of property name to sub-schema\n- `required` — array of required property names\n- `additionalProperties` — boolean (default true; set false to reject extra keys)\n\n**Array keywords:**\n- `items` — schema for array elements\n- `minItems`, `maxItems` — integer bounds on array length\n\n**String keywords:**\n- `minLength`, `maxLength` — integer bounds on string length\n- `enum` — array of allowed values\n\n**Numeric keywords:**\n- `minimum`, `maximum` — numeric bounds\n\n### Schema Design Guidelines\n\n- Keep schemas focused — only require what subsequent steps actually need\n- Use `required` for fields that downstream steps depend on\n- Prefer `string` for free-text content, `integer` for counts, `array` for lists\n- Use `enum` to constrain categorical values (e.g. `[\"low\", \"medium\", \"high\"]`)\n- Nest objects for structured sub-components\n- Set `additionalProperties: false` only when strict shape control matters\n\n## Phase 4: Generate YAML Definition\n\n> First, call send_message(text=\"Pipeline Designer, step 4\u002F5: Generating YAML definition...\").\n\nGenerate the complete pipeline YAML file. Use `file_write` to save it to `~\u002F.clawq\u002Fpipelines\u002F\u003Cname>.yaml`.\n\n### Pipeline YAML Format Reference\n\n```yaml\nname: pipeline-name\nversion: \"1.0\"\ndescription: What this pipeline does\n\ninputs:\n  input_name:\n    type: string\n    description: What this input is for\n    required: true\n    default: optional-default-value\n\nsteps:\n  # Prompt step — calls an LLM and validates the output\n  - name: step-name\n    prompt: |\n      Your prompt text here.\n      Use {{input.input_name}} for input variables.\n      Use {{previous_step_name}} for full JSON output of a previous step.\n      Use {{previous_step_name.field}} for a specific field from a previous step.\n    system_prompt: Optional system prompt override\n    model: Optional model override (e.g. \"openai:gpt-5.4\")\n    output_schema:\n      type: object\n      properties:\n        field_name:\n          type: string\n        another_field:\n          type: integer\n      required: [field_name]\n    max_retries: 2\n\n  # Pipeline step — runs another pipeline as a sub-step\n  - name: sub-step-name\n    pipeline: other-pipeline-name\n    input_map:\n      other_input: \"{{input.my_input}}\"\n      derived_input: \"{{previous_step_name.field}}\"\n```\n\n### Template Variable Syntax\n\n- `{{input.X}}` — replaced with the value of input parameter `X`\n- `{{step_name}}` — replaced with the full JSON output of the named step\n- `{{step_name.field}}` — replaced with a specific field extracted from a step's JSON output (top-level string\u002Fnumber fields only; objects\u002Farrays use the full JSON representation)\n\n### Key Constraints\n\n- Step names must be unique within a pipeline\n- Step names must be valid identifiers (alphanumeric + hyphens)\n- Pipeline steps can reference other pipelines by name (max nesting depth: 3)\n- `max_retries` defaults to 1 if omitted\n- `version` should be a string (e.g. \"1.0\")\n\n## Phase 5: Validate Pipeline\n\n> First, call send_message(text=\"Pipeline Designer, step 5\u002F5: Validating pipeline...\").\n\nAfter writing the YAML file, validate it:\n\n```\nshell_exec(\"clawq pipeline validate \u003Cname>\")\n```\n\nIf validation fails, fix the issues and re-validate. Common issues:\n- Duplicate step names\n- Invalid JSON Schema (unknown type, malformed properties)\n- Missing required fields in pipeline definition\n- YAML syntax errors\n\nOptionally, show the user how to run the pipeline:\n\n```\nclawq pipeline run \u003Cname> --input key1=value1 --input key2=value2\n```\n\n## Example Pipelines\n\n### Research Report Pipeline\nA 3-step pipeline: outline the report structure, write the draft, then review it.\n- Inputs: `topic` (required), `depth` (default: \"medium\")\n- Steps: outline -> draft -> review\n- Each step's schema validates the expected structure\n\n### Code Review Pipeline\nA 2-step pipeline: analyze code, then generate review feedback.\n- Inputs: `code` (required), `language` (default: \"ocaml\")\n- Steps: analyze -> review\n- Analysis step outputs: issues array, complexity score\n- Review step outputs: summary, recommendations array, rating\n\n### Data Extraction Pipeline\nA 2-step pipeline: extract entities, then classify them.\n- Inputs: `text` (required), `categories` (required)\n- Steps: extract -> classify\n- Extract outputs array of entities with name and context\n- Classify maps each entity to a category from the input list\n",{"name":5,"description":7,"allowed-tools":48,"argument-hint":49},"shell_exec, file_write, file_read, ask_user_question, send_message",[50],"description of what the pipeline should do","master","7c87c0cf8d869c392efbe4b2f0065c85657bf969","docs\u002Fbuiltin-skills\u002Fpipeline-designer","https:\u002F\u002Fgithub.com\u002Fclankercode\u002Fclawq","https:\u002F\u002Fclawq.org\u002F","https:\u002F\u002Fgithub.com\u002Fclankercode","xk.io","2026-11-12 11:53:34",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add clankercode\u002Fclawq --skill pipeline-designer",{"tool":65,"command":66},"bunx","bunx skills add clankercode\u002Fclawq --skill pipeline-designer",{"tool":68,"command":69},"pnpm","pnpm dlx skills add clankercode\u002Fclawq --skill pipeline-designer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fclankercode\u002Fclawq\u002Fblob\u002Fmaster\u002Fdocs\u002Fbuiltin-skills\u002Fpipeline-designer\u002FSKILL.md",true,[],[74,103,113,135,146,157],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":83,"publishedAt":43},"01M6CZGG2GJZ7PGVTZSG8NDB2R","run-task","Runs a backlog item (bug, feature, task, epic, milestone, phase) end-to-end by gathering context, constructing a startup prompt, spawning a worktree-backed subagent, and managing the claim\u002Fdone\u002Freview cycle. Use when the user wants to execute a backlog target like B123, F456, P2.M4.E3, etc.","https:\u002F\u002Fgithub.com\u002Fclankercode\u002Fclawq\u002Fblob\u002Fmaster\u002Fdocs\u002Fbuiltin-skills\u002Frun-task\u002FSKILL.md",[80],{"categoryNo":81,"categoryName":82,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[84,85,86,87,88,89,90,91,92,93,94,95,33,96,97,98,99,100,101,102],"run task","run","task","worktree","backlog","review","feature","startup","subagent","extra","prompt","review cycle","execute","use","done","bug","cycle","milestone","claim",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":43},"01M6CZGAY23A6HQS1G7JK7WQGM","idea","Log a planning idea to the backlog. Use when the user has a feature idea, enhancement suggestion, or brainstorm they want tracked.","https:\u002F\u002Fgithub.com\u002Fclankercode\u002Fclawq\u002Fblob\u002Fmaster\u002Fdocs\u002Fbuiltin-skills\u002Fidea\u002FSKILL.md",[],[105,90,88,110,97,33,111,112],"log","brainstorm","planning",{"skillNo":114,"name":90,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":119,"publishedAt":43},"01M6CZG7S5TSVHB6S8YA3JMGFJ","Automate the creation of a new feature for clawq. Gathers requirements, discovers existing capabilities, decomposes into implementation layers, gates risky work behind approval, and delegates implementation. Prefers skills\u002Frigs\u002Fcron\u002Ftemplates over OCaml code changes.","https:\u002F\u002Fgithub.com\u002Fclankercode\u002Fclawq\u002Fblob\u002Fmaster\u002Fdocs\u002Fbuiltin-skills\u002Ffeature\u002FSKILL.md",[118],{"categoryNo":81,"categoryName":82,"taxonomyType":20,"taxonomyTypeDesc":21},[90,120,121,122,123,124,125,126,127,128,129,130,131,132,27,133,134],"language","capabilities","code","clawq","templates","cron","automate","work","new feature","approval","implementation","ocaml","natural language","gates","creation",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":43},"01M6CZG4STQ8R15F6HFT5BE98J","telegram-formatting","Telegram HTML and MarkdownV2 formatting reference for clawq message code","https:\u002F\u002Fgithub.com\u002Fclankercode\u002Fclawq\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftelegram-formatting\u002FSKILL.md",[],[142,143,122,144,145,29,123],"telegram formatting","telegram","html","reference",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":43},"01M6CZG2ZASD966C153XZY3BQ1","pag-review-via-team","review work using teams + review-and-fix","https:\u002F\u002Fgithub.com\u002Fclankercode\u002Fclawq\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fpag-review-via-team\u002FSKILL.md",[],[153,154,89,155,127,156],"pag review via team","team","teams","fix",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":163,"publishedAt":43},"01M6CZG02S14BW5NN1P2F2PN7Q","clawq-version-bump","Bump clawq version, commit, tag, push, and create a GitHub release","https:\u002F\u002Fgithub.com\u002Fclankercode\u002Fclawq\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fclawq-version-bump\u002FSKILL.md",[],[123,164,165,166,167,168,41,169,170,171,172],"clawq version bump","version bump","bump","version","commit","release","push","github release","github"]