{"id":"3960cc38-84de-48e0-98ad-b59166259104","shortId":"LJ5Gds","kind":"skill","title":"code-conventional-commit","tagline":"Generate and validate conventional commit messages following the conventionalcommits.org spec. Use whenever the user wants to commit code, mentions commit messages, git commit, or asks to create a commit. Triggers on \"commit\", \"git commit\", \"conventional\", or when reviewing commi","description":"# Conventional Commit Skill\n\nGenerate and validate commit messages following the [Conventional Commits](https://www.conventionalcommits.org/) specification.\n\n## Conventional Commit Format\n\n```\n<type>(<scope>): <subject>\n\n[optional body]\n\n[optional footer(s)]\n```\n\n### Types\n\n| Type | Description |\n|------|-------------|\n| `feat` | New feature |\n| `fix` | Bug fix |\n| `docs` | Documentation only |\n| `style` | Code style (formatting, semicolons, etc.) |\n| `refactor` | Code change that neither fixes nor adds |\n| `test` | Adding or updating tests |\n| `chore` | Build, tooling, dependencies |\n| `perf` | Performance improvement |\n| `ci` | CI configuration changes |\n| `build` | Build system or dependencies |\n| `revert` | Reverting a previous commit |\n\n### Rules\n\n- **Subject**: Short description, imperative mood, lowercase, no period at end\n- **Scope**: Optional, lowercase, describes what was changed (e.g., `auth`, `api`, `ui`)\n- **Breaking changes**: Add `!` after type/scope: `feat(auth)!: change API`\n- **Footer**: For breaking changes (`BREAKING CHANGE:`) or issue references (`Closes #123`)\n\n## Operations\n\n### 1. Generate Commit from Diff\n\nWhen user wants to commit changes:\n\n1. Run `git status` to see changed files\n2. Run `git diff --staged` for staged changes\n3. Analyze what changed to determine:\n   - **Type**: Which type best describes the changes?\n   - **Scope**: What area was affected? (optional)\n   - **Subject**: What was done? (imperative: \"add\" not \"added\")\n4. Create a conventional commit message\n5. Run `git commit -m \"<message>\"`\n\n**Example:**\n```\nfeat(auth): add JWT token refresh\n\nImplements token refresh endpoint to extend sessions\nwithout requiring re-authentication.\n\nCloses #142\n```\n\n### 2. Validate Commit Message\n\nWhen user asks to validate or check a commit message:\n\n1. Parse the commit message\n2. Check format: `<type>(<scope>): <subject>`\n3. Validate type is from the allowed list\n4. Check subject follows rules (lowercase, imperative, no period)\n5. Flag any issues found\n\n## Input Methods\n\n| Input | Action |\n|-------|--------|\n| User says \"commit\" or \"git commit\" | Generate from git diff, then commit |\n| User says \"validate commit\" | Check the commit message format |\n| User pastes commit message | Validate the provided message |\n\n## Auto-Commit Workflow\n\nWhen generating a commit:\n\n1. Show the user the commit message first\n2. Ask for confirmation before committing (unless user explicitly says \"just do it\")\n3. Execute `git commit -m \"<message>\"` after confirmation\n4. Show the result of the commit\n\n## Error Handling\n\n- If no staged changes: `git status` shows nothing → warn user nothing to commit\n- If git not initialized: Initialize repo or warn user\n- If commit fails: Show error and offer to retry\n\n## Examples\n\n**Input:** \"I fixed the login bug\"\n**Output:**\n```\nfix(auth): resolve login timeout issue\n\nUsers were logged out after 5 minutes due to\nincorrect token expiry calculation.\n```\n\n**Input:** \"I added a new API endpoint for users\"\n**Output:**\n```\nfeat(api): add user profile endpoint\n\nGET /users/:id returns user profile data including\nname, email, and avatar URL.\n\nCloses #89\n```\n\n**Input:** \"I changed the auth API, this breaks old clients\"\n**Output:**\n```\nfeat(auth)!: change token validation endpoint\n\nThe /auth/verify endpoint now requires Bearer token\ninstead of query parameter.\n\nBREAKING CHANGE: Clients must update to send\nAuthorization header with Bearer token.\n```","tags":["code","conventional","commit","atelier","martinffx","agent-skills","agentic-coding","anthropic","claude-code","claude-skills","code-review","codex"],"capabilities":["skill","source-martinffx","skill-code-conventional-commit","topic-agent-skills","topic-agentic-coding","topic-anthropic","topic-claude-code","topic-claude-skills","topic-code-review","topic-codex","topic-codex-skill","topic-opencode","topic-prompt-engineering","topic-sdd","topic-spec-driven-development"],"categories":["atelier"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/martinffx/atelier/code-conventional-commit","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add martinffx/atelier","source_repo":"https://github.com/martinffx/atelier","install_from":"skills.sh"}},"qualityScore":"0.461","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 23 github stars · SKILL.md body (3,434 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-18T19:05:21.717Z","embedding":null,"createdAt":"2026-05-10T07:03:10.751Z","updatedAt":"2026-05-18T19:05:21.717Z","lastSeenAt":"2026-05-18T19:05:21.717Z","tsv":"'/)':58 '/auth/verify':478 '/users':446 '1':163,174,263,334 '123':161 '142':248 '2':182,249,268,342 '3':190,271,355 '4':217,279,362 '5':223,288,421 '89':459 'action':296 'ad':95,216,431 'add':93,144,214,231,441 'affect':207 'allow':277 'analyz':191 'api':140,150,434,440,465 'area':205 'ask':29,255,343 'auth':139,148,230,411,464,472 'authent':246 'author':495 'auto':327 'auto-commit':326 'avatar':456 'bearer':482,498 'best':199 'bodi':64 'break':142,153,155,467,488 'bug':75,408 'build':100,110,111 'calcul':428 'chang':88,109,137,143,149,154,156,173,180,189,193,202,374,462,473,489 'check':259,269,280,313 'chore':99 'ci':106,107 'client':469,490 'close':160,247,458 'code':2,22,81,87 'code-conventional-commit':1 'commi':43 'commit':4,9,21,24,27,33,36,38,45,50,55,61,119,165,172,221,226,251,261,266,299,302,308,312,315,320,328,333,339,347,358,368,383,394 'configur':108 'confirm':345,361 'convent':3,8,39,44,54,60,220 'conventionalcommits.org':13 'creat':31,218 'data':451 'depend':102,114 'describ':134,200 'descript':70,123 'determin':195 'diff':167,185,306 'doc':77 'document':78 'done':212 'due':423 'e.g':138 'email':454 'end':130 'endpoint':238,435,444,476,479 'error':369,397 'etc':85 'exampl':228,402 'execut':356 'expiri':427 'explicit':350 'extend':240 'fail':395 'feat':71,147,229,439,471 'featur':73 'file':181 'first':341 'fix':74,76,91,405,410 'flag':289 'follow':11,52,282 'footer':66,151 'format':62,83,270,317 'found':292 'generat':5,47,164,303,331 'get':445 'git':26,37,176,184,225,301,305,357,375,385 'handl':370 'header':496 'id':447 'imper':124,213,285 'implement':235 'improv':105 'includ':452 'incorrect':425 'initi':387,388 'input':293,295,403,429,460 'instead':484 'issu':158,291,415 'jwt':232 'list':278 'log':418 'login':407,413 'lowercas':126,133,284 'm':227,359 'mention':23 'messag':10,25,51,222,252,262,267,316,321,325,340 'method':294 'minut':422 'mood':125 'must':491 'name':453 'neither':90 'new':72,433 'noth':378,381 'offer':399 'old':468 'oper':162 'option':63,65,132,208 'output':409,438,470 'paramet':487 'pars':264 'past':319 'perf':103 'perform':104 'period':128,287 'previous':118 'profil':443,450 'provid':324 'queri':486 're':245 're-authent':244 'refactor':86 'refer':159 'refresh':234,237 'repo':389 'requir':243,481 'resolv':412 'result':365 'retri':401 'return':448 'revert':115,116 'review':42 'rule':120,283 'run':175,183,224 'say':298,310,351 'scope':131,203 'see':179 'semicolon':84 'send':494 'session':241 'short':122 'show':335,363,377,396 'skill':46 'skill-code-conventional-commit' 'source-martinffx' 'spec':14 'specif':59 'stage':186,188,373 'status':177,376 'style':80,82 'subject':121,209,281 'system':112 'test':94,98 'timeout':414 'token':233,236,426,474,483,499 'tool':101 'topic-agent-skills' 'topic-agentic-coding' 'topic-anthropic' 'topic-claude-code' 'topic-claude-skills' 'topic-code-review' 'topic-codex' 'topic-codex-skill' 'topic-opencode' 'topic-prompt-engineering' 'topic-sdd' 'topic-spec-driven-development' 'trigger':34 'type':68,69,196,198,273 'type/scope':146 'ui':141 'unless':348 'updat':97,492 'url':457 'use':15 'user':18,169,254,297,309,318,337,349,380,392,416,437,442,449 'valid':7,49,250,257,272,311,322,475 'want':19,170 'warn':379,391 'whenev':16 'without':242 'workflow':329 'www.conventionalcommits.org':57 'www.conventionalcommits.org/)':56","prices":[{"id":"a2ffc917-85e9-4597-9b09-dac1a8b7b837","listingId":"3960cc38-84de-48e0-98ad-b59166259104","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"martinffx","category":"atelier","install_from":"skills.sh"},"createdAt":"2026-05-10T07:03:10.751Z"}],"sources":[{"listingId":"3960cc38-84de-48e0-98ad-b59166259104","source":"github","sourceId":"martinffx/atelier/code-conventional-commit","sourceUrl":"https://github.com/martinffx/atelier/tree/main/skills/code-conventional-commit","isPrimary":false,"firstSeenAt":"2026-05-10T07:03:10.751Z","lastSeenAt":"2026-05-18T19:05:21.717Z"}],"details":{"listingId":"3960cc38-84de-48e0-98ad-b59166259104","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"martinffx","slug":"code-conventional-commit","github":{"repo":"martinffx/atelier","stars":23,"topics":["agent-skills","agentic-coding","anthropic","claude-code","claude-skills","code-review","codex","codex-skill","opencode","prompt-engineering","sdd","spec-driven-development"],"license":"mit","html_url":"https://github.com/martinffx/atelier","pushed_at":"2026-05-18T06:56:45Z","description":"An atelier for Opencode, Claude Code, and other coding agents: spec-driven workflows, deep thinking, and code quality.","skill_md_sha":"bffb0fdcadf1e781f55975af0319d001ef518a6c","skill_md_path":"skills/code-conventional-commit/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/martinffx/atelier/tree/main/skills/code-conventional-commit"},"layout":"multi","source":"github","category":"atelier","frontmatter":{"name":"code-conventional-commit","description":"Generate and validate conventional commit messages following the conventionalcommits.org spec. Use whenever the user wants to commit code, mentions commit messages, git commit, or asks to create a commit. Triggers on \"commit\", \"git commit\", \"conventional\", or when reviewing commit message format."},"skills_sh_url":"https://skills.sh/martinffx/atelier/code-conventional-commit"},"updatedAt":"2026-05-18T19:05:21.717Z"}}