[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HZ1G7XB2YCYMRTAH5GS77S":3,"skill-same:01M6HZ1G7XB2YCYMRTAH5GS77S":69},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":54,"install":55,"resources":68},"01M6HZ1G7XB2YCYMRTAH5GS77S","speckit-git-validate",null,"Validate current branch follows feature branch naming conventions","ldilov\u002Fharness-forge","ldilov","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F25016670?v=4","01M6HYXAEJP0KYT2DF86WYN8QK","Lazar Dilov","01M6HYXAJETHAW5DD5TAAFEQ7D",6,"GPL-3.0","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fspeckit-git-validate\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"validate","git","speckit git validate","speckit","conventions","naming conventions","kit","naming","with","spec-kit","feature","commands","project","directory","structure","branch","specify","project structure","github","spec","2026-11-10 10:12:30",false,"---\nname: speckit-git-validate\ndescription: Validate current branch follows feature branch naming conventions\ncompatibility: Requires spec-kit project structure with .specify\u002F directory\nmetadata:\n  author: github-spec-kit\n  source: git:commands\u002Fspeckit.git.validate.md\n---\n\n# Validate Feature Branch\n\nValidate that the current Git branch follows the expected feature branch naming conventions.\n\n## Prerequisites\n\n- Check if Git is available by running `git rev-parse --is-inside-work-tree 2>\u002Fdev\u002Fnull`\n- If Git is not available, output a warning and skip validation:\n  ```\n  [specify] Warning: Git repository not detected; skipped branch validation\n  ```\n\n## Validation Rules\n\nGet the current branch name:\n\n```bash\ngit rev-parse --abbrev-ref HEAD\n```\n\nThe branch name must match one of these patterns:\n\n1. **Sequential**: `^[0-9]{3,}-` (e.g., `001-feature-name`, `042-fix-bug`, `1000-big-feature`)\n2. **Timestamp**: `^[0-9]{8}-[0-9]{6}-` (e.g., `20260319-143022-feature-name`)\n\n## Execution\n\nIf on a feature branch (matches either pattern):\n- Output: `✓ On feature branch: \u003Cbranch-name>`\n- Check if the corresponding spec directory exists under `specs\u002F`:\n  - For sequential branches, look for `specs\u002F\u003Cprefix>-*` where prefix matches the numeric portion\n  - For timestamp branches, look for `specs\u002F\u003Cprefix>-*` where prefix matches the `YYYYMMDD-HHMMSS` portion\n- If spec directory exists: `✓ Spec directory found: \u003Cpath>`\n- If spec directory missing: `⚠ No spec directory found for prefix \u003Cprefix>`\n\nIf NOT on a feature branch:\n- Output: `✗ Not on a feature branch. Current branch: \u003Cbranch-name>`\n- Output: `Feature branches should be named like: 001-feature-name or 20260319-143022-feature-name`\n\n## Graceful Degradation\n\nIf Git is not installed or the directory is not a Git repository:\n- Check the `SPECIFY_FEATURE` environment variable as a fallback\n- If set, validate that value against the naming patterns\n- If not set, skip validation with a warning","# Validate Feature Branch\n\nValidate that the current Git branch follows the expected feature branch naming conventions.\n\n## Prerequisites\n\n- Check if Git is available by running `git rev-parse --is-inside-work-tree 2>\u002Fdev\u002Fnull`\n- If Git is not available, output a warning and skip validation:\n  ```\n  [specify] Warning: Git repository not detected; skipped branch validation\n  ```\n\n## Validation Rules\n\nGet the current branch name:\n\n```bash\ngit rev-parse --abbrev-ref HEAD\n```\n\nThe branch name must match one of these patterns:\n\n1. **Sequential**: `^[0-9]{3,}-` (e.g., `001-feature-name`, `042-fix-bug`, `1000-big-feature`)\n2. **Timestamp**: `^[0-9]{8}-[0-9]{6}-` (e.g., `20260319-143022-feature-name`)\n\n## Execution\n\nIf on a feature branch (matches either pattern):\n- Output: `✓ On feature branch: \u003Cbranch-name>`\n- Check if the corresponding spec directory exists under `specs\u002F`:\n  - For sequential branches, look for `specs\u002F\u003Cprefix>-*` where prefix matches the numeric portion\n  - For timestamp branches, look for `specs\u002F\u003Cprefix>-*` where prefix matches the `YYYYMMDD-HHMMSS` portion\n- If spec directory exists: `✓ Spec directory found: \u003Cpath>`\n- If spec directory missing: `⚠ No spec directory found for prefix \u003Cprefix>`\n\nIf NOT on a feature branch:\n- Output: `✗ Not on a feature branch. Current branch: \u003Cbranch-name>`\n- Output: `Feature branches should be named like: 001-feature-name or 20260319-143022-feature-name`\n\n## Graceful Degradation\n\nIf Git is not installed or the directory is not a Git repository:\n- Check the `SPECIFY_FEATURE` environment variable as a fallback\n- If set, validate that value against the naming patterns\n- If not set, skip validation with a warning",{"name":5,"metadata":44,"description":7,"compatibility":47},{"author":45,"source":46},"github-spec-kit","git:commands\u002Fspeckit.git.validate.md","Requires spec-kit project structure with .specify\u002F directory","main","27337828f396bcf279d7c4353a4a4f0cdc97659f",".agents\u002Fskills\u002Fspeckit-git-validate",1,"https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge","https:\u002F\u002Fgithub.com\u002Fldilov","2026-05-19 21:48:38",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add ldilov\u002Fharness-forge --skill speckit-git-validate",{"tool":61,"command":62},"bunx","bunx skills add ldilov\u002Fharness-forge --skill speckit-git-validate",{"tool":64,"command":65},"pnpm","pnpm dlx skills add ldilov\u002Fharness-forge --skill speckit-git-validate","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fspeckit-git-validate\u002FSKILL.md",true,[],[70,102,134,154,169,178],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":81,"publishedAt":39},"01M6HZ7WE4DSYWPX0W2JX9BD8K","typescript-engineering","typescript and javascript engineering guidance seeded from the harness forge knowledge base. use when the repo or task is dominated by .ts, .tsx, package.json, tsconfig, node.js services, react, next.js, frontend tooling, or multi-package workspaces where type boundaries matter.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-engineering\u002FSKILL.md",[76],{"categoryNo":77,"categoryName":78,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101],"typescript","engineering","typescript engineering","frontend","javascript","react","harness","package","forge","Next.js","knowledge","node","repo","use","workspaces","tsx","task","next","knowledge base","type",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":116,"publishedAt":39},"01M6HZ7QRWHQP72E7DPB6W5S6C","token-budget-optimizer","compact context, reuse existing runtime artifacts, and choose the smallest authoritative surface before expanding prompt history. use when the task is growing large, when earlier repo intelligence already exists, or when repeated rescans would waste tokens without adding new evidence.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Ftoken-budget-optimizer\u002FSKILL.md",[108,111],{"categoryNo":109,"categoryName":110,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":112,"categoryName":113,"taxonomyType":114,"taxonomyTypeDesc":115},"01JBSEEDCAT000000000000040","财务","PROFESSION","适用职业",[117,118,119,120,121,122,123,124,94,125,126,95,127,98,128,129,130,131,132,133],"Budget","optimizer","token","token budget","token budget optimizer","artifacts","choose","history","prompt","context","evidence","intelligence","compact","tokens","runtime","reuse","Existing",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":143,"publishedAt":39},"01M6HZ7MMX3ZZP4KF2FVC2EHP0","test-strategy-and-coverage","Define right-sized test layers and coverage priorities for a change.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Ftest-strategy-and-coverage\u002FSKILL.md",[140],{"categoryNo":141,"categoryName":142,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000008","测试与质量",[144,145,146,147,148,149,150,151,152,153],"test","strategy","coverage","test strategy","test strategy and coverage","change","priorities","define","layers","for",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":160,"publishedAt":39},"01M6HZ7HE9C6MGWT9JG17Z3Y3M","speckit-taskstoissues","Convert existing tasks into actionable, dependency-ordered GitHub issues for the feature based on available design artifacts.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fspeckit-taskstoissues\u002FSKILL.md",[],[161,22,162,32,36,163,164,122,165,35,166,167,33,31,30,29,168,25,153,133],"speckit taskstoissues","design","tasks","github issues","issues","convert","dependency","actionable",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":175,"publishedAt":39},"01M6HZ7E2NMYB9N2GKYVRF09AK","speckit-tasks","Generate an actionable, dependency-ordered tasks.md for the feature based on available design artifacts.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fspeckit-tasks\u002FSKILL.md",[],[163,176,22,162,32,37,36,177,122,35,167,33,31,30,29,168,28,27,25,153],"speckit tasks","generate",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":184,"publishedAt":39},"01M6HZ7AS0E880YSZN4FEFF6QF","speckit-specify","Create or update the feature specification from a natural language feature description.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fspeckit-specify\u002FSKILL.md",[],[35,185,22,32,38,37,36,186,187,188,189,190,33,31,30,29,28,27,191,25],"speckit specify","create","update","templates","specification","natural language","feature specification"]