[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FWPKAX99S0Z1H5ME2MK5ME":3,"skill-same:01M6FWPKAX99S0Z1H5ME2MK5ME":61},{"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":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":40,"repositoryHtmlUrl":41,"repositoryHomepageUrl":42,"ownerHtmlUrl":43,"ownerBlogUrl":44,"ownerDescription":45,"updatedAt":46,"install":47,"resources":60},"01M6FWPKAX99S0Z1H5ME2MK5ME","commit-and-push-by-feature",null,"Commit and push all changes to GitHub grouped by logical feature\u002Ffunction buckets with conventional commit messages","GeorgeQLe\u002Fagentic-skills","GeorgeQLe","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F21134126?v=4","01M6D2JP418S0VGJGF8M93EC3H","George Le","01M6D2JPBAKYD82TA5FS6HKQ3D",1,"MIT","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Fpacks\u002Fgitops\u002Fclaude\u002Fcommit-and-push-by-feature\u002Farchive\u002Fv0.1\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30],"commit","push","commit and push","feature","commit and push by feature","github","shipping","messages","conventional commit","commit messages","v0","with","2026-11-10 10:12:30",false,"---\nname: commit-and-push-by-feature\ndescription: Commit and push all changes to GitHub grouped by logical feature\u002Ffunction buckets with conventional commit messages\ntype: shipping\nversion: v0.1\nargument-hint:\n---\n\n# Commit and Push by Feature\n\nCommit and push all changes to GitHub grouped by feature\u002Ffunction.\n\n## Process\n\n1. **Inspect changes:**\n   - Run `git status` and `git diff` to understand all changes.\n   - **Pack install artifact boundary:** Treat `.agents\u002Fproject.json` as the committed project designation. When pack configuration changed, bucket and commit `.agents\u002Fproject.json`. Treat `.claude\u002Fskills\u002F**` and `.codex\u002Fskills\u002F**` as generated local skill roots recreated by `\u002Fpack`, `$pack`, or `scripts\u002Fpack.sh refresh`; generated skill roots must not be staged or committed. If those roots are untracked, leave them uncommitted and report them as generated local artifacts. If any path under those roots is already tracked or modified as a tracked file, stop unless the current task explicitly includes repository hygiene to untrack or ignore generated skill roots.\n\n2. **Identify logical buckets:**\n   - Group changes into feature\u002Ffunction buckets (e.g., \"auth\", \"api\", \"ui\", \"tests\", \"docs\", \"build\", \"refactor\"). Prefer 2–6 commits total unless the change set is tiny.\n\n3. **Commit each bucket:**\n   - For each bucket:\n     - Stage only the files for that bucket (use `git add \u003Cpaths>`; avoid `git add -A` unless it's the final bucket and everything belongs together).\n     - Create a conventional commit message:\n       - `feat(\u003Cscope>): \u003Csummary>` for new functionality\n       - `fix(\u003Cscope>): \u003Csummary>` for bug fixes\n       - `refactor(\u003Cscope>): \u003Csummary>` for refactors without behavior change\n       - `test(\u003Cscope>): \u003Csummary>` for tests only\n       - `docs(\u003Cscope>): \u003Csummary>` for documentation\n       - `chore(\u003Cscope>): \u003Csummary>` for tooling\u002Fconfig\n     - Include a short body only if it clarifies intent or risk.\n     - Verify `git diff --cached` matches the bucket before committing.\n   - If there are uncommitted leftover changes at the end, bucket them; do not leave a dirty working tree. Do not bucket generated local skill roots under `.claude\u002Fskills\u002F**` or `.codex\u002Fskills\u002F**`, even in final leftover cleanup.\n\n4. **Branch handling:**\n   - Determine the primary branch: prefer `main`; if it does not exist, use `master`. If neither exists, stop and explain the blocker.\n   - Ensure the commits land on the primary branch.\n   - If already on `main` or `master`, stay there.\n   - If on any other branch, switch to the primary branch before committing and pushing. Carry the working tree across only if it can be done safely.\n   - If switching would discard work, introduce conflicts you cannot resolve confidently, or otherwise prevent a safe move onto the primary branch, stop and explain the blocker. Do not push the feature branch instead.\n\n5. **Push and report:**\n   - Push the resulting commits to the primary branch. `commit-and-push-by-feature` means commit and push when the workflow succeeds.\n   - Output a concise summary: branch name, list of commits (hash + subject), confirmation that working tree is clean, and whether push was performed or blocked.\n\n## Output\n\n```\n## Commits\n| Hash | Message |\n|------|---------|\n| abc1234 | feat(auth): add OAuth2 login flow |\n| def5678 | docs(readme): update setup instructions |\n\nBranch: current branch\nWorking tree: clean\n```\n\n## Constraints\n\n- Do not amend or rewrite history unless explicitly asked.\n- Do not commit secrets; if you detect likely secrets, stop and report before committing.\n- If pre-commit hooks\u002Ftests fail, fix and retry.\n\n\n## Default Shipping Contract\n\nFollow the shared shipping contract convention in CLAUDE.md.\n","# Commit and Push by Feature\n\nCommit and push all changes to GitHub grouped by feature\u002Ffunction.\n\n## Process\n\n1. **Inspect changes:**\n   - Run `git status` and `git diff` to understand all changes.\n   - **Pack install artifact boundary:** Treat `.agents\u002Fproject.json` as the committed project designation. When pack configuration changed, bucket and commit `.agents\u002Fproject.json`. Treat `.claude\u002Fskills\u002F**` and `.codex\u002Fskills\u002F**` as generated local skill roots recreated by `\u002Fpack`, `$pack`, or `scripts\u002Fpack.sh refresh`; generated skill roots must not be staged or committed. If those roots are untracked, leave them uncommitted and report them as generated local artifacts. If any path under those roots is already tracked or modified as a tracked file, stop unless the current task explicitly includes repository hygiene to untrack or ignore generated skill roots.\n\n2. **Identify logical buckets:**\n   - Group changes into feature\u002Ffunction buckets (e.g., \"auth\", \"api\", \"ui\", \"tests\", \"docs\", \"build\", \"refactor\"). Prefer 2–6 commits total unless the change set is tiny.\n\n3. **Commit each bucket:**\n   - For each bucket:\n     - Stage only the files for that bucket (use `git add \u003Cpaths>`; avoid `git add -A` unless it's the final bucket and everything belongs together).\n     - Create a conventional commit message:\n       - `feat(\u003Cscope>): \u003Csummary>` for new functionality\n       - `fix(\u003Cscope>): \u003Csummary>` for bug fixes\n       - `refactor(\u003Cscope>): \u003Csummary>` for refactors without behavior change\n       - `test(\u003Cscope>): \u003Csummary>` for tests only\n       - `docs(\u003Cscope>): \u003Csummary>` for documentation\n       - `chore(\u003Cscope>): \u003Csummary>` for tooling\u002Fconfig\n     - Include a short body only if it clarifies intent or risk.\n     - Verify `git diff --cached` matches the bucket before committing.\n   - If there are uncommitted leftover changes at the end, bucket them; do not leave a dirty working tree. Do not bucket generated local skill roots under `.claude\u002Fskills\u002F**` or `.codex\u002Fskills\u002F**`, even in final leftover cleanup.\n\n4. **Branch handling:**\n   - Determine the primary branch: prefer `main`; if it does not exist, use `master`. If neither exists, stop and explain the blocker.\n   - Ensure the commits land on the primary branch.\n   - If already on `main` or `master`, stay there.\n   - If on any other branch, switch to the primary branch before committing and pushing. Carry the working tree across only if it can be done safely.\n   - If switching would discard work, introduce conflicts you cannot resolve confidently, or otherwise prevent a safe move onto the primary branch, stop and explain the blocker. Do not push the feature branch instead.\n\n5. **Push and report:**\n   - Push the resulting commits to the primary branch. `commit-and-push-by-feature` means commit and push when the workflow succeeds.\n   - Output a concise summary: branch name, list of commits (hash + subject), confirmation that working tree is clean, and whether push was performed or blocked.\n\n## Output\n\n```\n## Commits\n| Hash | Message |\n|------|---------|\n| abc1234 | feat(auth): add OAuth2 login flow |\n| def5678 | docs(readme): update setup instructions |\n\nBranch: current branch\nWorking tree: clean\n```\n\n## Constraints\n\n- Do not amend or rewrite history unless explicitly asked.\n- Do not commit secrets; if you detect likely secrets, stop and report before committing.\n- If pre-commit hooks\u002Ftests fail, fix and retry.\n\n\n## Default Shipping Contract\n\nFollow the shared shipping contract convention in CLAUDE.md.\n",{"name":5,"type":25,"version":36,"description":7,"argument-hint":6},"v0.1","master","96e2912af886dd1606b1b97df707715aef062b02","packs\u002Fgitops\u002Fclaude\u002Fcommit-and-push-by-feature\u002Farchive\u002Fv0.1",0,"https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills","https:\u002F\u002Fagentic-skills-blush.vercel.app","https:\u002F\u002Fgithub.com\u002FGeorgeQLe","georgeqle.com","George Le is a futurist and serial tech entrepreneur who wants to work toward a world where humanity is free from robotic tasks.","2026-11-10 04:07:24",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add GeorgeQLe\u002Fagentic-skills --skill commit-and-push-by-feature",{"tool":53,"command":54},"bunx","bunx skills add GeorgeQLe\u002Fagentic-skills --skill commit-and-push-by-feature",{"tool":56,"command":57},"pnpm","pnpm dlx skills add GeorgeQLe\u002Fagentic-skills --skill commit-and-push-by-feature","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Fpacks\u002Fgitops\u002Fclaude\u002Fcommit-and-push-by-feature\u002Farchive\u002Fv0.1\u002FSKILL.md",true,[],[62,74,84,96,111,122],{"skillNo":63,"name":64,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":68,"publishedAt":31},"01M6G0NJES15RJKZE6YZ0TSYGF","source-checkout-allowed","Valid source-checkout-only fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fsource-checkout-allowed\u002FSKILL.md",[],[69,70,71,72,29,73],"source checkout allowed","checkout","fixture","only","valid",{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":31},"01M6G0NFZ3R1MNB1E3DVTM0WB7","deck-install-valid","Valid deck install fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fdeck-install\u002FSKILL.md",[],[81,82,83,73,71,29],"deck install valid","deck","install",{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":31},"01M6G0ND3QZQC4MDZ9NVB97PT2","codex-pack-guard-valid","Valid Codex Pack Availability Guard fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fcodex-pack-guard\u002FSKILL.md",[],[91,92,93,73,94,95,71,29],"codex pack guard valid","pack","guard","codex","availability",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":107,"publishedAt":31},"01M6G0NA9YB3NKGZKD3S96JMNB","codex-missing-skill-valid","Valid Codex missing skill fallback fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fcodex-missing-skill-fallback\u002FSKILL.md",[102],{"categoryNo":103,"categoryName":104,"taxonomyType":105,"taxonomyTypeDesc":106},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[108,109,73,94,29,110,71],"codex missing skill valid","missing","fallback",{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":118,"publishedAt":31},"01M6G0N7PC0EKFD40ZWQAXSAQ9","codex-base-skill-fallback-valid","Valid Codex base skill fallback fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fcodex-base-skill-fallback\u002FSKILL.md",[117],{"categoryNo":103,"categoryName":104,"taxonomyType":105,"taxonomyTypeDesc":106},[73,94,110,119,120,121,29,71],"base skill","codex base skill fallback valid","base",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":31},"01M6G0N4VRR2YKZQ6N3Y6S2BQA","claude-pack-guard-valid","Valid Claude Pack Availability Guard fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fclaude-pack-guard\u002FSKILL.md",[],[73,93,92,129,95,29,71],"claude pack guard valid"]