{"id":"aff6ec75-a168-4f19-a297-39c9b8bceffa","shortId":"AE6NLb","kind":"skill","title":"git-os","tagline":"Enforces conventional commits, atomic changes, and GIT-OS workflow for Wednesday Solutions projects. Every agent that generates a commit must read this skill first.","description":"# GIT-OS — Automation-First Git Workflow\n\n## Trigger\n\nLoad this skill **before any of the following actions** — do not proceed without reading it first:\n- Creating a branch\n- Writing a commit message\n- Running `git commit`\n- Running `git push`\n- Creating or updating a PR title\n\n**Do NOT use this skill for:** reviewing PR comments (use `pr-review`), creating a PR (use `pr-create`), planning a project (use `greenfield`).\n\n---\n\nMy Git history powers automation. Commits drive version bumps, changelogs, release notes, deployments, and CI behavior. If commits are wrong → automation breaks.\n\n## 1. Branching Model\n\n| Branch | From | PR target | Purpose |\n|--------|------|-----------|---------|\n| `feat/<name>` | `<target>` | `<target>` | New feature |\n| `fix/<name>` | `<target>` | `<target>` | Bug fix |\n| `chore/<name>` | `<target>` | `<target>` | Tooling / config |\n| `test/<name>` | `<target>` | `<target>` | Test additions |\n| `hotfix/<name>` | `<target>` | `<target>` | Urgent prod fix |\n\n`<target>` is project-specific (`main`, `develop`, etc.). Never commit directly to target. All changes enter via PR.\n\n**Stacked PRs:** When PRs depend on each other, stack them bottom-up. `feat/b` branches from `feat/a`, targets `feat/a`. Merge order: a → b → c.\n\n## 2. Commit Format\n\n```\ntype(scope?): Description\n\n(optional body)\n\n(optional footer)\n```\n\n### Allowed types\n\n`feat` | `fix` | `refactor` | `perf` | `docs` | `style` | `test` | `chore`\n\nDo NOT invent types. Do NOT skip colon. Do NOT capitalize the type. Do NOT add emoji.\n\n### Subject line rules\n\n- Imperative mood: \"Add login\" not \"Added login\"\n- Under 50 characters\n- No trailing period\n- Lowercase type, capitalized description\n\n### Body rules (when needed)\n\n- Blank line after subject\n- Wrap at 72 characters\n- Explain WHY first, then WHAT changed\n\n### Breaking changes\n\n```\nrefactor: Remove legacy user endpoint\n\nBREAKING CHANGE: /v1/users removed. Use /v2/users\n```\n\n## 3. Atomic Commit Rule\n\nOne logical change per commit. If unsure → split it.\n\n```\n# Good\nfeat: Add login endpoint\ntest: Add login integration tests\n\n# Bad\nfeat: Add login and fix navbar and update readme\n```\n\n## 4. Pre-Push Checklist\n\nBefore pushing any branch, all must pass:\n\n1. `npm run lint`\n2. `npm run format:check`\n3. `npm run test`\n4. `npm run build`\n\nCI is a safety net, not the first line of defense.\n\n## 5. Pull Request Rules\n\n- Max 5–6 files per PR\n- PR title follows the same conventional commit format\n- Use this PR description template:\n\n```\n### Ticket Link\n---\n### Description\n---\n### Steps to Test\n---\n### GIFs\n---\n```\n\n## 6. Tool Usage\n\n| Action | Tool | Notes |\n|--------|------|-------|\n| Run git commands | `Bash` | `git commit`, `git push`, `git log`, etc. |\n| Read a file before editing | `Read` | Always read first — never edit blind |\n| Edit a file | `Edit` | Never use `Bash` with `sed` or `awk` to modify files |\n| Search file contents | `Grep` | Never use `Bash grep` |\n| Find files | `Glob` | Never use `Bash find` |\n\n## 7. What Never To Do\n\n- Commit without a type\n- Bundle multiple concerns in one commit\n- Force push the target branch\n- Rewrite shared history\n- Include AI attribution — no `Co-Authored-By` lines, no AI tool mentions\n\nCommits should look human-authored. No fingerprints.\n\n## 8. Agent Commit Format\n\nWhen an agent generates a commit for a fix from a review comment:\n\n```\nfix(scope): description from review comment\n\nResolves review comment #N\n```\n\n## 9. Commit-Lint Hook (Claude Code)\n\nAdd this to `.claude/settings.json` in the project to enforce commit format automatically before every `git commit`:\n\n```json\n{\n  \"hooks\": {\n    \"PreToolUse\": [\n      {\n        \"matcher\": \"Bash\",\n        \"hooks\": [\n          {\n            \"type\": \"command\",\n            \"command\": \"echo \\\"$CLAUDE_TOOL_INPUT\\\" | grep -q '\\\"git commit' && npx --no-install commitlint --edit || true\"\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\nThis intercepts any Bash tool call containing `git commit` and runs commitlint against the message before the commit lands. Requires `.commitlintrc.json` to be present (copied automatically by `ws-skills install`).","tags":["git","agent","skills","wednesday-solutions","agent-skills","ai-agent-skills","ai-skills","claude-code","copilot","cursor","frontend-skills","vibe-coding"],"capabilities":["skill","source-wednesday-solutions","skill-git-os","topic-agent-skills","topic-ai-agent-skills","topic-ai-skills","topic-claude-code","topic-copilot","topic-cursor","topic-frontend-skills","topic-vibe-coding","topic-vibe-coding-skills"],"categories":["ai-agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/wednesday-solutions/ai-agent-skills/git-os","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add wednesday-solutions/ai-agent-skills","source_repo":"https://github.com/wednesday-solutions/ai-agent-skills","install_from":"skills.sh"}},"qualityScore":"0.524","qualityRationale":"deterministic score 0.52 from registry signals: · indexed on github topic:agent-skills · 148 github stars · SKILL.md body (4,113 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T12:54:44.984Z","embedding":null,"createdAt":"2026-04-18T22:09:40.545Z","updatedAt":"2026-05-02T12:54:44.984Z","lastSeenAt":"2026-05-02T12:54:44.984Z","tsv":"'/v1/users':269 '/v2/users':272 '1':120,318 '2':185,322 '3':273,327 '4':306,331 '5':346,351 '50':233 '6':352,376 '7':434 '72':252 '8':478 '9':505 'action':46,379 'ad':230 'add':220,227,288,292,298,512 'addit':139 'agent':19,479,484 'ai':458,467 'allow':195 'alway':399 'atom':7,274 'attribut':459 'author':463,475 'autom':33,102,118 'automat':523,577 'automation-first':32 'awk':415 'b':183 'bad':296 'bash':385,411,425,432,532,555 'behavior':113 'blank':246 'blind':404 'bodi':192,242 'bottom':172 'bottom-up':171 'branch':56,121,123,175,314,453 'break':119,260,267 'bug':132 'build':334 'bump':106 'bundl':443 'c':184 'call':557 'capit':215,240 'chang':8,157,259,261,268,279 'changelog':107 'charact':234,253 'check':326 'checklist':310 'chore':134,204 'ci':112,335 'claud':510,538 'claude/settings.json':515 'co':462 'co-authored-bi':461 'code':511 'colon':212 'command':384,535,536 'comment':81,494,500,503 'commit':6,23,59,63,103,115,152,186,275,281,362,387,439,448,470,480,487,507,521,527,544,560,569 'commit-lint':506 'commitlint':549,563 'commitlintrc.json':572 'concern':445 'config':136 'contain':558 'content':421 'convent':5,361 'copi':576 'creat':54,67,86,92 'defens':345 'depend':165 'deploy':110 'descript':190,241,367,371,497 'develop':149 'direct':153 'doc':201 'drive':104 'echo':537 'edit':397,403,405,408,550 'emoji':221 'endpoint':266,290 'enforc':4,520 'enter':158 'etc':150,392 'everi':18,525 'explain':254 'feat':128,197,287,297 'feat/a':177,179 'feat/b':174 'featur':130 'file':353,395,407,418,420,428 'find':427,433 'fingerprint':477 'first':28,34,53,256,342,401 'fix':131,133,143,198,301,490,495 'follow':45,358 'footer':194 'forc':449 'format':187,325,363,481,522 'generat':21,485 'gif':375 'git':2,11,30,35,62,65,99,383,386,388,390,526,543,559 'git-o':1,10,29 'glob':429 'good':286 'greenfield':97 'grep':422,426,541 'histori':100,456 'hook':509,529,533 'hotfix':140 'human':474 'human-author':473 'imper':225 'includ':457 'input':540 'instal':548,582 'integr':294 'intercept':553 'invent':207 'json':528 'land':570 'legaci':264 'line':223,247,343,465 'link':370 'lint':321,508 'load':38 'log':391 'logic':278 'login':228,231,289,293,299 'look':472 'lowercas':238 'main':148 'matcher':531 'max':350 'mention':469 'merg':180 'messag':60,566 'model':122 'modifi':417 'mood':226 'multipl':444 'must':24,316 'n':504 'navbar':302 'need':245 'net':339 'never':151,402,409,423,430,436 'new':129 'no-instal':546 'note':109,381 'npm':319,323,328,332 'npx':545 'one':277,447 'option':191,193 'order':181 'os':3,12,31 'pass':317 'per':280,354 'perf':200 'period':237 'plan':93 'power':101 'pr':71,80,84,88,91,125,160,355,356,366 'pr-creat':90 'pr-review':83 'pre':308 'pre-push':307 'present':575 'pretoolus':530 'proceed':49 'prod':142 'project':17,95,146,518 'project-specif':145 'prs':162,164 'pull':347 'purpos':127 'push':66,309,312,389,450 'q':542 'read':25,51,393,398,400 'readm':305 'refactor':199,262 'releas':108 'remov':263,270 'request':348 'requir':571 'resolv':501 'review':79,85,493,499,502 'rewrit':454 'rule':224,243,276,349 'run':61,64,320,324,329,333,382,562 'safeti':338 'scope':189,496 'search':419 'sed':413 'share':455 'skill':27,40,77,581 'skill-git-os' 'skip':211 'solut':16 'source-wednesday-solutions' 'specif':147 'split':284 'stack':161,169 'step':372 'style':202 'subject':222,249 'target':126,155,178,452 'templat':368 'test':137,138,203,291,295,330,374 'ticket':369 'titl':72,357 'tool':135,377,380,468,539,556 'topic-agent-skills' 'topic-ai-agent-skills' 'topic-ai-skills' 'topic-claude-code' 'topic-copilot' 'topic-cursor' 'topic-frontend-skills' 'topic-vibe-coding' 'topic-vibe-coding-skills' 'trail':236 'trigger':37 'true':551 'type':188,196,208,217,239,442,534 'unsur':283 'updat':69,304 'urgent':141 'usag':378 'use':75,82,89,96,271,364,410,424,431 'user':265 'version':105 'via':159 'wednesday':15 'without':50,440 'workflow':13,36 'wrap':250 'write':57 'wrong':117 'ws':580 'ws-skill':579","prices":[{"id":"2a4d125e-1357-47d7-96ec-99a98ff44fd0","listingId":"aff6ec75-a168-4f19-a297-39c9b8bceffa","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"wednesday-solutions","category":"ai-agent-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:09:40.545Z"}],"sources":[{"listingId":"aff6ec75-a168-4f19-a297-39c9b8bceffa","source":"github","sourceId":"wednesday-solutions/ai-agent-skills/git-os","sourceUrl":"https://github.com/wednesday-solutions/ai-agent-skills/tree/main/skills/git-os","isPrimary":false,"firstSeenAt":"2026-04-18T22:09:40.545Z","lastSeenAt":"2026-05-02T12:54:44.984Z"}],"details":{"listingId":"aff6ec75-a168-4f19-a297-39c9b8bceffa","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"wednesday-solutions","slug":"git-os","github":{"repo":"wednesday-solutions/ai-agent-skills","stars":148,"topics":["agent-skills","ai-agent-skills","ai-skills","claude-code","copilot","cursor","frontend-skills","product-engineering-skills","vibe-coding","vibe-coding-skills"],"license":"mit","html_url":"https://github.com/wednesday-solutions/ai-agent-skills","pushed_at":"2026-04-24T12:57:49Z","description":"Pre-configured agent skills for Vibe Coded projects. These skills provide AI coding assistants (Claude Code, Cursor, etc.) with specific guidelines for code quality and design standards.","skill_md_sha":"a1c8cc9e26646411dee0bcecc4b8f4d66766a4f9","skill_md_path":"skills/git-os/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/wednesday-solutions/ai-agent-skills/tree/main/skills/git-os"},"layout":"multi","source":"github","category":"ai-agent-skills","frontmatter":{"name":"git-os","license":"MIT","description":"Enforces conventional commits, atomic changes, and GIT-OS workflow for Wednesday Solutions projects. Every agent that generates a commit must read this skill first."},"skills_sh_url":"https://skills.sh/wednesday-solutions/ai-agent-skills/git-os"},"updatedAt":"2026-05-02T12:54:44.984Z"}}