[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6D9SVEFGE45J808H545WJ2S":3,"skill-same:01M6D9SVEFGE45J808H545WJ2S":60},{"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":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":41,"repositoryHtmlUrl":42,"repositoryHomepageUrl":43,"ownerHtmlUrl":44,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":45,"install":46,"resources":59},"01M6D9SVEFGE45J808H545WJ2S","fflow",null,"Start a workflow run. Default uses fflow start with CLI tracking. Use --lite for lite mode, --markdown for prompt-only mode.","freematters\u002Ffreematters","freematters","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F266749953?v=4","01M6D9S9REGCVDFCTZ7BM853DS","01M6D9S9WY29PTMRNB7X58QGTP",27,"MIT","https:\u002F\u002Fgithub.com\u002Ffreematters\u002Ffreematters\u002Fblob\u002Fmain\u002Fpackages\u002Ffreeflow\u002Fskills\u002Ffflow\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,23,24,25,26,27,28,29,30,31,32],"cli","workflow","run","start","markdown","prompt","tracking","use","only","default","2026-11-10 10:12:30",false,"---\nname: fflow\ndescription: Start a workflow run. Default uses fflow start with CLI tracking. Use --lite for lite mode, --markdown for prompt-only mode.\n---\n\n# Start Workflow Run\n\nInitialize a new workflow run from a workflow YAML file.\n\n## Usage\n\n- `\u002Ffflow PATH` — normal mode (default). Uses `fflow start` with full CLI tracking.\n- `\u002Ffflow --lite PATH` — lite mode. Uses `fflow start --lite` (simplified cards on revisits).\n- `\u002Ffflow --markdown PATH` — markdown-only mode. Uses `fflow render` to inject the full workflow as a prompt. No CLI state tracking or hooks.\n\n## Mode Detection\n\n1. If args contain `--markdown`: use **markdown mode** (see below).\n2. If args contain `--lite`: use **lite mode** (see below).\n3. Otherwise: use **normal mode** (see below).\n\nStrip the mode flag from args before extracting PATH.\n\n---\n\n## Common Steps (all modes)\n\n### 1. Check for active run\n\nIf there is a remembered `run_id` from a previous `\u002Ffflow` in this conversation, run `fflow current --run-id \u003Crun_id>`. If the current state is **not** `done`, prompt the user:\n- \"You have an active workflow `\u003Crun_id>` in state `\u003Cstate>`. Abort it and start a new one?\"\n- Options: \"Abort and start new\" \u002F \"Keep it, start new anyway\"\n- If the user chooses to abort, run `fflow abort --run-id \u003Crun_id>` first.\n- If the state is `done` or the run doesn't exist, skip this step silently.\n\n### 2. Generate a run ID\n\nUse the format `\u003Cworkflow-name>-$(date '+%Y%m%d%H%M%S')` where workflow-name is derived from the workflow filename. Use lowercase letters, numbers, and hyphens.\n\n---\n\n## Normal Mode (`\u002Ffflow PATH`)\n\nFull CLI-tracked mode with event sourcing and hooks.\n\n### Process\n\n1. Complete the **Common Steps** above.\n\n2. **Run the CLI command:**\n\n```bash\nfflow start \u003CPATH> --run-id \u003Crun-id>\n```\n\nNever omit `--run-id`. PATH can be a workflow name (e.g. `spec-gen`) or a full path. The CLI resolves it automatically.\n\n3. **Remember the run ID** — Store the `run_id` value for use in subsequent `fflow current --run-id \u003Crun-id>` and `fflow goto \u003Cstate> --run-id \u003Crun-id> --on \u003Ctransition-label>` calls within this conversation.\n\n4. **Flow CLI output**\n\n> **WARNING — DO NOT TRUNCATE CLI OUTPUT**\n>\n> `fflow start`, `fflow goto`, and `fflow current` output **state cards** that contain critical workflow instructions. You MUST read the **complete, untruncated** output of these commands. NEVER pipe them through `tail`, `head`, or any other tool that truncates output. NEVER use a line-limit or byte-limit on their output. Truncating the output will cause you to miss **guide rules**, **state instructions**, and **transition definitions**, which will lead to incorrect workflow execution.\n\n`fflow start` will output the initial state card. `fflow goto` will output the new state card. If the target state is `done`, the workflow is completed.\n\nThe state card consists of instructions, todos and valid state transitions. Follow the instructions and transition to the correct state based on the output of your actions.\n\n**Execution model**: After every state transition, immediately execute the new state's instructions. You may summarize progress or report status, but do NOT stop between states. Keep driving the workflow forward until you reach a terminal state (a state with no transitions). Only a terminal state ends the workflow.\n\n**Before ending a turn**: You MUST run `fflow current --run-id \u003Crun_id>` before ending your turn to check if there is remaining work in the current state. Only end your turn if the current state has no actionable work left or requires user input. This prevents accidentally dropping tasks mid-state.\n\nIf the exit code of any CLI is not 0, the CLI will output the error message. Follow the error message on right actions to take.\n\n---\n\n## Lite Mode (`\u002Ffflow --lite PATH`)\n\nSame as normal mode but with `--lite` flag. Revisited states show simplified cards.\n\n### Process\n\n1. Complete the **Common Steps** above.\n\n2. **Run the CLI command:**\n\n```bash\nfflow start \u003CPATH> --run-id \u003Crun-id> --lite\n```\n\n3. Follow the same **Flow CLI output** instructions as normal mode above.\n\n---\n\n## Markdown Mode (`\u002Ffflow --markdown PATH`)\n\nThe agent reads the full workflow once and self-manages state transitions — no CLI calls after the initial render. Uses `fflow start --markdown` to create a minimal run directory and output the full workflow as markdown.\n\n### Process\n\n1. Complete the **Common Steps** above.\n2. Run:\n\n```bash\nfflow start \u003CPATH> --run-id \u003Crun-id> --markdown\n```\n\nThis creates a run directory with only `fsm.meta.json` (no event sourcing) and outputs the full resolved workflow as markdown to stdout with `${workflow_dir}` and `${run_dir}` substituted.\n\n3. **Remember the run ID** — you can use `fflow current --run-id \u003Crun-id>` to retrieve metadata (run_id, mode, workflow_dir, run_dir), but `goto` and `finish` are blocked in markdown mode.\n\n4. Read the **complete, untruncated** output. This is the entire workflow specification.\n\n5. You are now running a workflow. The full workflow is rendered above. Follow these rules:\n\n   - **Start at the initial state** (the first state in the document).\n   - **Read the state's instructions** and execute them fully.\n   - **Check transitions**: after completing a state's work, evaluate which transition condition is met and move to that target state.\n   - **Track your current state yourself** — there are no CLI commands to call (`goto` and `finish` will error with `MARKDOWN_MODE`).\n   - **Keep driving forward**: after every state transition, immediately execute the new state's instructions. Do NOT stop between states.\n   - **Terminal state**: a state with no transitions ends the workflow. Only stop when you reach a terminal state.\n   - **Guide rules**: if the workflow has a guide section, follow those rules throughout all states.\n\n---\n\n## `workflow_dir` — Workflow Directory\n\nThe CLI commands (`fflow start`, `fflow current`, `fflow goto`) include a `workflow_dir`\nfield in their output. In markdown mode (`fflow render`), it appears as an HTML comment:\n`\u003C!-- workflow_dir: \u002Fpath -->`. This is the directory containing the workflow YAML file.\n\nUse `workflow_dir` from CLI output whenever workflow prompts reference files relative to\nthe workflow directory (e.g., `{workflow_dir}\u002F..\u002Freferences\u002Fgithub-cli.md`).\n\n## Error Handling\n\n- **`RUN_EXISTS`** — The generated run_id is already taken. Generate a different slug and retry.\n- **`SCHEMA_INVALID`** — The YAML file has validation errors. Show the error message and suggest using `\u002Ffflow-author` to build a valid workflow.\n","# Start Workflow Run\n\nInitialize a new workflow run from a workflow YAML file.\n\n## Usage\n\n- `\u002Ffflow PATH` — normal mode (default). Uses `fflow start` with full CLI tracking.\n- `\u002Ffflow --lite PATH` — lite mode. Uses `fflow start --lite` (simplified cards on revisits).\n- `\u002Ffflow --markdown PATH` — markdown-only mode. Uses `fflow render` to inject the full workflow as a prompt. No CLI state tracking or hooks.\n\n## Mode Detection\n\n1. If args contain `--markdown`: use **markdown mode** (see below).\n2. If args contain `--lite`: use **lite mode** (see below).\n3. Otherwise: use **normal mode** (see below).\n\nStrip the mode flag from args before extracting PATH.\n\n---\n\n## Common Steps (all modes)\n\n### 1. Check for active run\n\nIf there is a remembered `run_id` from a previous `\u002Ffflow` in this conversation, run `fflow current --run-id \u003Crun_id>`. If the current state is **not** `done`, prompt the user:\n- \"You have an active workflow `\u003Crun_id>` in state `\u003Cstate>`. Abort it and start a new one?\"\n- Options: \"Abort and start new\" \u002F \"Keep it, start new anyway\"\n- If the user chooses to abort, run `fflow abort --run-id \u003Crun_id>` first.\n- If the state is `done` or the run doesn't exist, skip this step silently.\n\n### 2. Generate a run ID\n\nUse the format `\u003Cworkflow-name>-$(date '+%Y%m%d%H%M%S')` where workflow-name is derived from the workflow filename. Use lowercase letters, numbers, and hyphens.\n\n---\n\n## Normal Mode (`\u002Ffflow PATH`)\n\nFull CLI-tracked mode with event sourcing and hooks.\n\n### Process\n\n1. Complete the **Common Steps** above.\n\n2. **Run the CLI command:**\n\n```bash\nfflow start \u003CPATH> --run-id \u003Crun-id>\n```\n\nNever omit `--run-id`. PATH can be a workflow name (e.g. `spec-gen`) or a full path. The CLI resolves it automatically.\n\n3. **Remember the run ID** — Store the `run_id` value for use in subsequent `fflow current --run-id \u003Crun-id>` and `fflow goto \u003Cstate> --run-id \u003Crun-id> --on \u003Ctransition-label>` calls within this conversation.\n\n4. **Flow CLI output**\n\n> **WARNING — DO NOT TRUNCATE CLI OUTPUT**\n>\n> `fflow start`, `fflow goto`, and `fflow current` output **state cards** that contain critical workflow instructions. You MUST read the **complete, untruncated** output of these commands. NEVER pipe them through `tail`, `head`, or any other tool that truncates output. NEVER use a line-limit or byte-limit on their output. Truncating the output will cause you to miss **guide rules**, **state instructions**, and **transition definitions**, which will lead to incorrect workflow execution.\n\n`fflow start` will output the initial state card. `fflow goto` will output the new state card. If the target state is `done`, the workflow is completed.\n\nThe state card consists of instructions, todos and valid state transitions. Follow the instructions and transition to the correct state based on the output of your actions.\n\n**Execution model**: After every state transition, immediately execute the new state's instructions. You may summarize progress or report status, but do NOT stop between states. Keep driving the workflow forward until you reach a terminal state (a state with no transitions). Only a terminal state ends the workflow.\n\n**Before ending a turn**: You MUST run `fflow current --run-id \u003Crun_id>` before ending your turn to check if there is remaining work in the current state. Only end your turn if the current state has no actionable work left or requires user input. This prevents accidentally dropping tasks mid-state.\n\nIf the exit code of any CLI is not 0, the CLI will output the error message. Follow the error message on right actions to take.\n\n---\n\n## Lite Mode (`\u002Ffflow --lite PATH`)\n\nSame as normal mode but with `--lite` flag. Revisited states show simplified cards.\n\n### Process\n\n1. Complete the **Common Steps** above.\n\n2. **Run the CLI command:**\n\n```bash\nfflow start \u003CPATH> --run-id \u003Crun-id> --lite\n```\n\n3. Follow the same **Flow CLI output** instructions as normal mode above.\n\n---\n\n## Markdown Mode (`\u002Ffflow --markdown PATH`)\n\nThe agent reads the full workflow once and self-manages state transitions — no CLI calls after the initial render. Uses `fflow start --markdown` to create a minimal run directory and output the full workflow as markdown.\n\n### Process\n\n1. Complete the **Common Steps** above.\n2. Run:\n\n```bash\nfflow start \u003CPATH> --run-id \u003Crun-id> --markdown\n```\n\nThis creates a run directory with only `fsm.meta.json` (no event sourcing) and outputs the full resolved workflow as markdown to stdout with `${workflow_dir}` and `${run_dir}` substituted.\n\n3. **Remember the run ID** — you can use `fflow current --run-id \u003Crun-id>` to retrieve metadata (run_id, mode, workflow_dir, run_dir), but `goto` and `finish` are blocked in markdown mode.\n\n4. Read the **complete, untruncated** output. This is the entire workflow specification.\n\n5. You are now running a workflow. The full workflow is rendered above. Follow these rules:\n\n   - **Start at the initial state** (the first state in the document).\n   - **Read the state's instructions** and execute them fully.\n   - **Check transitions**: after completing a state's work, evaluate which transition condition is met and move to that target state.\n   - **Track your current state yourself** — there are no CLI commands to call (`goto` and `finish` will error with `MARKDOWN_MODE`).\n   - **Keep driving forward**: after every state transition, immediately execute the new state's instructions. Do NOT stop between states.\n   - **Terminal state**: a state with no transitions ends the workflow. Only stop when you reach a terminal state.\n   - **Guide rules**: if the workflow has a guide section, follow those rules throughout all states.\n\n---\n\n## `workflow_dir` — Workflow Directory\n\nThe CLI commands (`fflow start`, `fflow current`, `fflow goto`) include a `workflow_dir`\nfield in their output. In markdown mode (`fflow render`), it appears as an HTML comment:\n`\u003C!-- workflow_dir: \u002Fpath -->`. This is the directory containing the workflow YAML file.\n\nUse `workflow_dir` from CLI output whenever workflow prompts reference files relative to\nthe workflow directory (e.g., `{workflow_dir}\u002F..\u002Freferences\u002Fgithub-cli.md`).\n\n## Error Handling\n\n- **`RUN_EXISTS`** — The generated run_id is already taken. Generate a different slug and retry.\n- **`SCHEMA_INVALID`** — The YAML file has validation errors. Show the error message and suggest using `\u002Ffflow-author` to build a valid workflow.\n",{"name":5,"description":7},"main","898550a01eca98e666c6c16aef03ee6bbd04175c","packages\u002Ffreeflow\u002Fskills\u002Ffflow",5,"https:\u002F\u002Fgithub.com\u002Ffreematters\u002Ffreematters","https:\u002F\u002Ffreematters.vercel.app","https:\u002F\u002Fgithub.com\u002Ffreematters","2026-05-19 20:22:18",{"source":8,"skillName":5,"commands":47,"prompt":57,"zipAvailable":58},[48,51,54],{"tool":49,"command":50},"npx","npx skills add freematters\u002Ffreematters --skill fflow",{"tool":52,"command":53},"bunx","bunx skills add freematters\u002Ffreematters --skill fflow",{"tool":55,"command":56},"pnpm","pnpm dlx skills add freematters\u002Ffreematters --skill fflow","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ffreematters\u002Ffreematters\u002Fblob\u002Fmain\u002Fpackages\u002Ffreeflow\u002Fskills\u002Ffflow\u002FSKILL.md",true,[],[61,75,93,110,123,135],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":71,"publishedAt":33},"01M6D9TNZ52Y3DXX3PTGTR1Q0K","verifier","E2E test verifier workflow.","https:\u002F\u002Fgithub.com\u002Ffreematters\u002Ffreematters\u002Fblob\u002Fmain\u002Fpackages\u002Ffreeflow\u002Fworkflows\u002Fverifier\u002FSKILL.md",[67,70],{"categoryNo":68,"categoryName":69,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[63,72,73,74,24],"e2e test","e2e","test",{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":86,"publishedAt":33},"01M6D9TJSJDF87RMDCDSXRBZHT","spec-to-code","Implement a spec into working code, one plan step at a time.","https:\u002F\u002Fgithub.com\u002Ffreematters\u002Ffreematters\u002Fblob\u002Fmain\u002Fpackages\u002Ffreeflow\u002Fworkflows\u002Fspec-to-code\u002FSKILL.md",[81],{"categoryNo":82,"categoryName":83,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[87,88,89,90,91,92],"spec to code","code","spec","time","plan","implement",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":33},"01M6D9TFTDG16JC379AD3TT9E8","spec-gen","Generate a complete specification from a rough idea through interactive requirements gathering, research, design, and implementation planning.","https:\u002F\u002Fgithub.com\u002Ffreematters\u002Ffreematters\u002Fblob\u002Fmain\u002Fpackages\u002Ffreeflow\u002Fworkflows\u002Fspec-gen\u002FSKILL.md",[],[100,89,101,102,103,104,105,106,107,108,109],"spec gen","implementation","requirements","idea","specification","interactive","planning","generate","research","design",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":117,"publishedAt":33},"01M6D9TDFC5MDPJW068JGGMB1W","spec-driven","End-to-end pipeline from rough idea to merged pull request. Passing --quick forwards the flag to the spec-gen sub workflow.","https:\u002F\u002Fgithub.com\u002Ffreematters\u002Ffreematters\u002Fblob\u002Fmain\u002Fpackages\u002Ffreeflow\u002Fworkflows\u002Fspec-driven\u002FSKILL.md",[116],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[118,89,119,103,120,121,122,24],"spec driven","end","pipeline","pull","pull request",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":130,"publishedAt":33},"01M6D9TB81ZTY2ATQRCTDKPXZK","release","General release workflow for GitHub projects.","https:\u002F\u002Fgithub.com\u002Ffreematters\u002Ffreematters\u002Fblob\u002Fmain\u002Fpackages\u002Ffreeflow\u002Fworkflows\u002Frelease\u002FSKILL.md",[129],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[125,131,24,132,133,134],"github","general","projects","github projects",{"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":33},"01M6D9T8Y48YE2YM0HYXPV59PM","pr-lifecycle","Monitor a PR\u002FMR until it is merged or closed.","https:\u002F\u002Fgithub.com\u002Ffreematters\u002Ffreematters\u002Fblob\u002Fmain\u002Fpackages\u002Ffreeflow\u002Fworkflows\u002Fpr-lifecycle\u002FSKILL.md",[],[142,143,144,145],"pr","pr lifecycle","lifecycle","monitor"]