[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6D9TDFC5MDPJW068JGGMB1W":3,"skill-same:01M6D9TDFC5MDPJW068JGGMB1W":64},{"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":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":36,"commitSha":37,"skillDirectory":38,"forksCount":39,"repositoryHtmlUrl":40,"repositoryHomepageUrl":41,"ownerHtmlUrl":42,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":43,"install":44,"resources":57},"01M6D9TDFC5MDPJW068JGGMB1W","spec-driven",null,"End-to-end pipeline from rough idea to merged pull request. Passing --quick forwards the flag to the spec-gen sub workflow.","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\u002Fworkflows\u002Fspec-driven\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30],"spec","spec driven","workflow","pull request","pull","pipeline","idea","end","2026-11-10 10:12:30",false,"---\nname: spec-driven\ndescription: End-to-end pipeline from rough idea to merged pull request. Passing --quick forwards the flag to the spec-gen sub workflow.\n---\n\n# Spec Driven\n\nBefore starting the workflow, check if the current branch is the repo's default branch:\n\n```bash\nREMOTE_URL=$(git remote get-url origin 2>\u002Fdev\u002Fnull || echo \"\")\nif echo \"$REMOTE_URL\" | grep -qi 'github'; then\n  DEFAULT_BRANCH=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name' 2>\u002Fdev\u002Fnull)\nelse\n  DEFAULT_BRANCH=$(git symbolic-ref refs\u002Fremotes\u002Forigin\u002FHEAD 2>\u002Fdev\u002Fnull | sed 's|refs\u002Fremotes\u002Forigin\u002F||')\nfi\nDEFAULT_BRANCH=${DEFAULT_BRANCH:-main}\nCURRENT_BRANCH=$(git branch --show-current)\n```\n\nIf `CURRENT_BRANCH == DEFAULT_BRANCH`:\n1. Determine a branch name automatically from the user's idea (e.g., `feat\u002Fshort-description` or `fix\u002Fshort-description` using conventional commit style).\n2. Create a worktree in `.claude\u002Fworktrees\u002F\u003Cbranch_name>` and switch your working directory to it:\n   ```bash\n   git worktree add .claude\u002Fworktrees\u002F\u003Cbranch_name> -b \u003Cbranch_name>\n   ```\n   Then set your working directory to the worktree path (e.g., via the `EnterWorktree` tool or equivalent). Do not rely on `cd` — it does not persist across shell invocations in agent contexts.\n3. Proceed with the workflow from the worktree directory. All subsequent commands must run from the worktree path.\n\nRun `\u002Ffflow spec-driven` with any arguments passed to this skill.\n","# Spec Driven\n\nBefore starting the workflow, check if the current branch is the repo's default branch:\n\n```bash\nREMOTE_URL=$(git remote get-url origin 2>\u002Fdev\u002Fnull || echo \"\")\nif echo \"$REMOTE_URL\" | grep -qi 'github'; then\n  DEFAULT_BRANCH=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name' 2>\u002Fdev\u002Fnull)\nelse\n  DEFAULT_BRANCH=$(git symbolic-ref refs\u002Fremotes\u002Forigin\u002FHEAD 2>\u002Fdev\u002Fnull | sed 's|refs\u002Fremotes\u002Forigin\u002F||')\nfi\nDEFAULT_BRANCH=${DEFAULT_BRANCH:-main}\nCURRENT_BRANCH=$(git branch --show-current)\n```\n\nIf `CURRENT_BRANCH == DEFAULT_BRANCH`:\n1. Determine a branch name automatically from the user's idea (e.g., `feat\u002Fshort-description` or `fix\u002Fshort-description` using conventional commit style).\n2. Create a worktree in `.claude\u002Fworktrees\u002F\u003Cbranch_name>` and switch your working directory to it:\n   ```bash\n   git worktree add .claude\u002Fworktrees\u002F\u003Cbranch_name> -b \u003Cbranch_name>\n   ```\n   Then set your working directory to the worktree path (e.g., via the `EnterWorktree` tool or equivalent). Do not rely on `cd` — it does not persist across shell invocations in agent contexts.\n3. Proceed with the workflow from the worktree directory. All subsequent commands must run from the worktree path.\n\nRun `\u002Ffflow spec-driven` with any arguments passed to this skill.\n",{"name":5,"description":7},"main","898550a01eca98e666c6c16aef03ee6bbd04175c","packages\u002Ffreeflow\u002Fworkflows\u002Fspec-driven",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":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add freematters\u002Ffreematters --skill spec-driven",{"tool":50,"command":51},"bunx","bunx skills add freematters\u002Ffreematters --skill spec-driven",{"tool":53,"command":54},"pnpm","pnpm dlx skills add freematters\u002Ffreematters --skill spec-driven","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ffreematters\u002Ffreematters\u002Fblob\u002Fmain\u002Fpackages\u002Ffreeflow\u002Fworkflows\u002Fspec-driven\u002FSKILL.md",true,[58],{"path":59,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":62,"sourceHtmlUrl":63},"workflow.yaml","REFERENCE","参考文档",3331,"https:\u002F\u002Fgithub.com\u002Ffreematters\u002Ffreematters\u002Fblob\u002Fmain\u002Fpackages\u002Ffreeflow\u002Fworkflows\u002Fspec-driven\u002Fworkflow.yaml",[65,79,96,112,124,135],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":75,"publishedAt":31},"01M6D9TNZ52Y3DXX3PTGTR1Q0K","verifier","E2E test verifier workflow.","https:\u002F\u002Fgithub.com\u002Ffreematters\u002Ffreematters\u002Fblob\u002Fmain\u002Fpackages\u002Ffreeflow\u002Fworkflows\u002Fverifier\u002FSKILL.md",[71,74],{"categoryNo":72,"categoryName":73,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[67,76,77,78,25],"e2e test","e2e","test",{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":90,"publishedAt":31},"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",[85],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[91,92,23,93,94,95],"spec to code","code","time","plan","implement",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":31},"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",[],[103,23,104,105,29,106,107,108,109,110,111],"spec gen","specification","requirements","implementation","interactive","planning","generate","research","design",{"skillNo":113,"name":114,"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":31},"01M6D9TB81ZTY2ATQRCTDKPXZK","release","General release workflow for GitHub projects.","https:\u002F\u002Fgithub.com\u002Ffreematters\u002Ffreematters\u002Fblob\u002Fmain\u002Fpackages\u002Ffreeflow\u002Fworkflows\u002Frelease\u002FSKILL.md",[118],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[114,120,121,122,25,123],"general","github projects","projects","github",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":31},"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",[],[131,132,133,134],"lifecycle","pr","pr lifecycle","monitor",{"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":31},"01M6D9T5WK8SMNFZW6CZ3Y0TEA","issue-to-spec","Generate a specification from an existing issue.","https:\u002F\u002Fgithub.com\u002Ffreematters\u002Ffreematters\u002Fblob\u002Fmain\u002Fpackages\u002Ffreeflow\u002Fworkflows\u002Fissue-to-spec\u002FSKILL.md",[],[142,23,143,144,109,104],"to spec","issue","issue to spec"]