[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BXRC6ASRQV8A9PC72ZQ262":3,"skill-same:01M6BXRC6ASRQV8A9PC72ZQ262":70},{"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":54,"updatedAt":55,"install":56,"resources":69},"01M6BXRC6ASRQV8A9PC72ZQ262","speckit-git-commit",null,"Auto-commit changes after a Spec Kit command completes","gram-data\u002Ftree-sitter-gram","gram-data","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F64245548?v=4","01M6BXQXB5HJV0M61XTAABYKTE","Gram Data","01M6BXQXFKDCKKB0KVXC7V5TM8",6,"MIT","https:\u002F\u002Fgithub.com\u002Fgram-data\u002Ftree-sitter-gram\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fspeckit-git-commit\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"commit","git commit","git","speckit","speckit git commit","command","changes","kit","with","spec-kit","project","structure","commit changes","auto","directory","specify","spec kit","core","project structure","spec","2026-11-10 10:12:30",false,"---\nname: speckit-git-commit\ndescription: Auto-commit changes after a Spec Kit command completes\ncompatibility: Requires spec-kit project structure with .specify\u002F directory\nmetadata:\n  author: spec-kit-core\n  source: git:commands\u002Fspeckit.git.commit.md\n---\n\n# Auto-Commit Changes\n\nAutomatically stage and commit all changes after a Spec Kit command completes.\n\n## Behavior\n\nThis command is invoked as a hook after (or before) core commands. It:\n\n1. Determines the event name from the hook context (e.g., if invoked as an `after_specify` hook, the event is `after_specify`; if `before_plan`, the event is `before_plan`)\n2. Checks `.specify\u002Fextensions\u002Fgit\u002Fgit-config.yml` for the `auto_commit` section\n3. Looks up the specific event key to see if auto-commit is enabled\n4. Falls back to `auto_commit.default` if no event-specific key exists\n5. Determines the commit message based on `commit_style` (see below)\n6. If enabled and there are uncommitted changes, runs `git add .` + `git commit`\n\n## Commit Message Styles\n\nControlled by the `commit_style` key in `.specify\u002Fextensions\u002Fgit\u002Fgit-config.yml`:\n\n- **`fixed`** (default): use the per-command `message` if configured, otherwise a generic `[Spec Kit] Auto-commit \u003Cphase> \u003Ccommand>` message.\n- **`conventional`**: inspect the actual changes (`git diff` \u002F `git status`) since the last commit and generate a single-line [Conventional Commit](https:\u002F\u002Fwww.conventionalcommits.org\u002F) message (`type(scope): subject`, e.g. `feat: add OAuth specification` or `docs: update implementation plan`) that accurately summarizes the change. Write this message to a temporary file and pass the file's path to the script (see Execution below). The configured `message` values are ignored in this mode.\n\n## Execution\n\nDetermine the event name from the hook that triggered this command, then run the script:\n\n- **Bash**: `.specify\u002Fextensions\u002Fgit\u002Fscripts\u002Fbash\u002Fauto-commit.sh \u003Cevent_name> [--message-file \u003Cpath>]`\n- **PowerShell**: `.specify\u002Fextensions\u002Fgit\u002Fscripts\u002Fpowershell\u002Fauto-commit.ps1 \u003Cevent_name> [-MessageFile \u003Cpath>]`\n\nReplace `\u003Cevent_name>` with the actual hook event (e.g., `after_specify`, `before_plan`, `after_implement`). Only pass a generated message when `commit_style: conventional` is configured — first check `.specify\u002Fextensions\u002Fgit\u002Fgit-config.yml` for the value of `commit_style`:\n\n- If `conventional`: inspect the diff and generate a Conventional Commit message. **Do not interpolate the generated message directly into a shell command string** — its content is derived from repository changes and may contain characters (quotes, `$(...)`, backticks) that a shell would execute or that would break command quoting. Instead, write the message to a temporary file using your file-editing tool (not a shell `echo`\u002F`printf`), then pass that file's path via `--message-file \u003Cpath>` (Bash) or `-MessageFile \u003Cpath>` (PowerShell).\n- If `fixed` or absent: run the script with just `\u003Cevent_name>`; it uses the configured\u002Fstatic message.\n\n## Configuration\n\nIn `.specify\u002Fextensions\u002Fgit\u002Fgit-config.yml`:\n\n```yaml\n# \"fixed\" (default) uses the messages below; \"conventional\" asks the agent\n# to generate a Conventional Commit message from the diff instead.\ncommit_style: fixed\n\nauto_commit:\n  default: false          # Global toggle — set true to enable for all commands\n  after_specify:\n    enabled: true          # Override per-command\n    message: \"[Spec Kit] Add specification\"\n  after_plan:\n    enabled: false\n    message: \"[Spec Kit] Add implementation plan\"\n```\n\n## Graceful Degradation\n\n- If Git is not available or the current directory is not a repository: skips with a warning\n- If no config file exists: skips (disabled by default)\n- If no changes to commit: skips with a message\n- If `commit_style: conventional` is set and no generated message was supplied: fails with a clear error instead of silently falling back to the fixed message format","# Auto-Commit Changes\n\nAutomatically stage and commit all changes after a Spec Kit command completes.\n\n## Behavior\n\nThis command is invoked as a hook after (or before) core commands. It:\n\n1. Determines the event name from the hook context (e.g., if invoked as an `after_specify` hook, the event is `after_specify`; if `before_plan`, the event is `before_plan`)\n2. Checks `.specify\u002Fextensions\u002Fgit\u002Fgit-config.yml` for the `auto_commit` section\n3. Looks up the specific event key to see if auto-commit is enabled\n4. Falls back to `auto_commit.default` if no event-specific key exists\n5. Determines the commit message based on `commit_style` (see below)\n6. If enabled and there are uncommitted changes, runs `git add .` + `git commit`\n\n## Commit Message Styles\n\nControlled by the `commit_style` key in `.specify\u002Fextensions\u002Fgit\u002Fgit-config.yml`:\n\n- **`fixed`** (default): use the per-command `message` if configured, otherwise a generic `[Spec Kit] Auto-commit \u003Cphase> \u003Ccommand>` message.\n- **`conventional`**: inspect the actual changes (`git diff` \u002F `git status`) since the last commit and generate a single-line [Conventional Commit](https:\u002F\u002Fwww.conventionalcommits.org\u002F) message (`type(scope): subject`, e.g. `feat: add OAuth specification` or `docs: update implementation plan`) that accurately summarizes the change. Write this message to a temporary file and pass the file's path to the script (see Execution below). The configured `message` values are ignored in this mode.\n\n## Execution\n\nDetermine the event name from the hook that triggered this command, then run the script:\n\n- **Bash**: `.specify\u002Fextensions\u002Fgit\u002Fscripts\u002Fbash\u002Fauto-commit.sh \u003Cevent_name> [--message-file \u003Cpath>]`\n- **PowerShell**: `.specify\u002Fextensions\u002Fgit\u002Fscripts\u002Fpowershell\u002Fauto-commit.ps1 \u003Cevent_name> [-MessageFile \u003Cpath>]`\n\nReplace `\u003Cevent_name>` with the actual hook event (e.g., `after_specify`, `before_plan`, `after_implement`). Only pass a generated message when `commit_style: conventional` is configured — first check `.specify\u002Fextensions\u002Fgit\u002Fgit-config.yml` for the value of `commit_style`:\n\n- If `conventional`: inspect the diff and generate a Conventional Commit message. **Do not interpolate the generated message directly into a shell command string** — its content is derived from repository changes and may contain characters (quotes, `$(...)`, backticks) that a shell would execute or that would break command quoting. Instead, write the message to a temporary file using your file-editing tool (not a shell `echo`\u002F`printf`), then pass that file's path via `--message-file \u003Cpath>` (Bash) or `-MessageFile \u003Cpath>` (PowerShell).\n- If `fixed` or absent: run the script with just `\u003Cevent_name>`; it uses the configured\u002Fstatic message.\n\n## Configuration\n\nIn `.specify\u002Fextensions\u002Fgit\u002Fgit-config.yml`:\n\n```yaml\n# \"fixed\" (default) uses the messages below; \"conventional\" asks the agent\n# to generate a Conventional Commit message from the diff instead.\ncommit_style: fixed\n\nauto_commit:\n  default: false          # Global toggle — set true to enable for all commands\n  after_specify:\n    enabled: true          # Override per-command\n    message: \"[Spec Kit] Add specification\"\n  after_plan:\n    enabled: false\n    message: \"[Spec Kit] Add implementation plan\"\n```\n\n## Graceful Degradation\n\n- If Git is not available or the current directory is not a repository: skips with a warning\n- If no config file exists: skips (disabled by default)\n- If no changes to commit: skips with a message\n- If `commit_style: conventional` is set and no generated message was supplied: fails with a clear error instead of silently falling back to the fixed message format",{"name":5,"metadata":44,"description":7,"compatibility":47},{"author":45,"source":46},"spec-kit-core","git:commands\u002Fspeckit.git.commit.md","Requires spec-kit project structure with .specify\u002F directory","main","932a079d81e98586bebe6782472bed02e3a0f82a",".claude\u002Fskills\u002Fspeckit-git-commit",2,"https:\u002F\u002Fgithub.com\u002Fgram-data\u002Ftree-sitter-gram","https:\u002F\u002Fgithub.com\u002Fgram-data","Data format for working with connected data","2026-11-14 04:26:04",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add gram-data\u002Ftree-sitter-gram --skill speckit-git-commit",{"tool":62,"command":63},"bunx","bunx skills add gram-data\u002Ftree-sitter-gram --skill speckit-git-commit",{"tool":65,"command":66},"pnpm","pnpm dlx skills add gram-data\u002Ftree-sitter-gram --skill speckit-git-commit","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgram-data\u002Ftree-sitter-gram\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fspeckit-git-commit\u002FSKILL.md",true,[],[71,77,112,130,139,153],{"skillNo":72,"name":73,"nameZh":6,"description":6,"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":76,"publishedAt":39},"01M6BXSRDDQZQY85T7HA1PNP0E","gram","https:\u002F\u002Fgithub.com\u002Fgram-data\u002Ftree-sitter-gram\u002Fblob\u002Fmain\u002Ftools\u002Fgram\u002Fskills\u002Fgram\u002FSKILL.md",[],[73],{"skillNo":78,"name":73,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":87,"publishedAt":39},"01M6BXSNS6HJRW4Q2M86NXWMSC","Work with gram notation files (.gram). Use this skill when the user is creating, reading, editing, or validating gram notation — a text format for Pattern\u003CSubject> structures. Gram encodes nodes, annotations, relationships, and general list\u002Ftree patterns in two interchangeable syntactic styles: square-bracket pattern notation and parenthesis path notation. Trigger on .gram files, graph data tasks, or any task involving Pattern\u003CSubject> serialization.","https:\u002F\u002Fgithub.com\u002Fgram-data\u002Ftree-sitter-gram\u002Fblob\u002Fmain\u002Fskills\u002Fgram\u002FSKILL.md",[82],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[73,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111],"cli","github","tasks","graph","https","serialization","data","verify","format","text","annotations","work","list","install","files","patterns","square","pattern","cargo","reading","tree","path","for","when",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":39},"01M6BXSKPF9TCQ6W10R1FK057D","speckit-taskstoissues","Convert existing tasks into actionable, dependency-ordered GitHub issues for the feature based on available design artifacts.","https:\u002F\u002Fgithub.com\u002Fgram-data\u002Ftree-sitter-gram\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fspeckit-taskstoissues\u002FSKILL.md",[],[119,22,120,33,38,89,37,90,121,122,123,34,124,125,126,30,29,127,128,28,27,26,110,129],"speckit taskstoissues","design","github issues","artifacts","issues","templates","convert","dependency","feature","actionable","Existing",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":39},"01M6BXSHFER1S6YBP3QYNFBRC1","speckit-tasks","Generate an actionable, dependency-ordered tasks.md for the feature based on available design artifacts.","https:\u002F\u002Fgithub.com\u002Fgram-data\u002Ftree-sitter-gram\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fspeckit-tasks\u002FSKILL.md",[],[90,137,22,120,33,38,89,37,138,122,34,124,126,30,29,127,128,28,27,26,110],"speckit tasks","generate",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":39},"01M6BXSFGB5PGR2JYZ6H0N2N8B","speckit-specify","Create or update the feature specification from a natural language feature description.","https:\u002F\u002Fgithub.com\u002Fgram-data\u002Ftree-sitter-gram\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fspeckit-specify\u002FSKILL.md",[],[34,146,22,33,38,89,37,147,148,124,149,150,30,29,151,127,28,27,152,26],"speckit specify","create","update","specification","natural language","commands","feature specification",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":164,"publishedAt":39},"01M6BXSCZ235X1JQ06GB78Q68H","speckit-plan","Execute the implementation planning workflow using the plan template to generate design artifacts.","https:\u002F\u002Fgithub.com\u002Fgram-data\u002Ftree-sitter-gram\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fspeckit-plan\u002FSKILL.md",[159],{"categoryNo":160,"categoryName":161,"taxonomyType":162,"taxonomyTypeDesc":163},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",[165,166,22,120,33,38,89,167,37,138,168,122,34,124,169,170,171,30,29,28,27,26],"plan","speckit plan","workflow","planning","template","generate design","planning workflow"]