{"manifest":{"name":"Git Commit Formatter","version":"1.0.0","description":"Analyzes staged git changes and generates conventional commit messages. Auto-detects scope, enforces imperative mood, handles breaking changes.","tags":["git","commit","workflow","devtools"],"standard":"agentskills.io","standard_version":"1.0","content_checksum":"5fee4d21a9b25da0f0e0e304eb75621bfce50f15003b5dce7fcb976cedfd5841","bundle_checksum":null,"metadata":{},"files":[]},"files":{"SKILL.md":"# Git Commit Formatter\n\n> **Purpose:** Analyze staged changes and generate a properly formatted conventional commit message.\n\n---\n\n## Invocation\n\n```\n/commit\n```\n\nRuns `git diff --cached --stat` and `git diff --cached` to analyze staged changes.\n\n---\n\n## Conventional Commit Format\n\n```\n<type>(<scope>): <description>\n\n[optional body]\n\n[optional footer]\n```\n\n### Types\n\n| Type | When to use |\n|------|-------------|\n| `feat` | New feature or capability |\n| `fix` | Bug fix |\n| `refactor` | Code restructuring without behavior change |\n| `test` | Adding or updating tests |\n| `docs` | Documentation only |\n| `style` | Formatting, whitespace, semicolons |\n| `perf` | Performance improvement |\n| `ci` | CI/CD configuration |\n| `chore` | Dependencies, tooling, config |\n| `build` | Build system or external dependency changes |\n\n### Scope Detection\n\nInfer scope from the changed files:\n- `components/auth/*` → `auth`\n- `api/skills/*` → `skills-api`\n- `lib/utils/*` → `utils`\n- Multiple unrelated areas → omit scope\n\n### Description Rules\n\n- Imperative mood: \"add\" not \"added\" or \"adds\"\n- No period at the end\n- Under 72 characters\n- Focus on **why**, not **what** (the diff shows what)\n\n---\n\n## Body Guidelines\n\nInclude a body when:\n- The change is not obvious from the description\n- Multiple files are modified for different reasons\n- Breaking changes need explanation\n\nFormat:\n- Wrap at 72 characters\n- Separate from subject with blank line\n- Use bullet points for multiple changes\n\n---\n\n## Footer\n\n- `BREAKING CHANGE: <description>` — for breaking API changes\n- `Closes #123` — for issue references\n- `Co-Authored-By: Name <email>` — for pair programming\n\n---\n\n## Examples\n\n**Simple feature:**\n```\nfeat(auth): add GitHub OAuth login flow\n```\n\n**Bug fix with context:**\n```\nfix(api): prevent duplicate skill submissions\n\nThe content checksum was computed before sanitization,\nallowing whitespace-only differences to bypass dedup.\n\nCloses #47\n```\n\n**Breaking change:**\n```\nrefactor(skills)!: rename focus_pool to engagement_score\n\nBREAKING CHANGE: focus_pool column renamed to engagement_score.\nRun migration 20260301 before deploying.\n```\n\n## Playground\n\n<!DOCTYPE html><html><head><meta charset='utf-8'><style>*{box-sizing:border-box;margin:0;padding:0}body{background:#0d1117;color:#e6edf3;font-family:monospace;font-size:12px;height:100vh;display:flex;flex-direction:column;overflow:hidden}.header{background:#161b22;border-bottom:1px solid #30363d;padding:8px 14px;font-size:11px;color:#8b949e;display:flex;justify-content:space-between;align-items:center;flex-shrink:0}.title{color:#58a6ff;font-weight:bold;font-size:13px}.panels{display:flex;flex:1;overflow:hidden}.panel{flex:1;overflow:auto;padding:12px;border-right:1px solid #30363d}.panel:last-child{border-right:none}.label{font-size:10px;color:#8b949e;text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px}pre{white-space:pre-wrap;word-break:break-word;line-height:1.5}</style></head><body><div class='header'><span class='title'>Git Commit Formatter</span><span>Example · SkillSlap</span></div><div class='panels'><div class='panel'><div class='label'>Input: Raw description</div><pre><span style='color:#8b949e'>i fixed the thing where users would</span>\n<span style='color:#8b949e'>get logged out randomly after like</span>\n<span style='color:#8b949e'>30 mins even though their session</span>\n<span style='color:#8b949e'>should still be valid. also bumped</span>\n<span style='color:#8b949e'>the session timeout from 1h to 8h</span></pre></div><div class='panel'><div class='label'>Output: Commit message</div><pre><span style='color:#3fb950'>fix(auth): prevent premature session expiry</span>\n\n<span style='color:#8b949e'>Sessions were invalidated after 30 min</span>\n<span style='color:#8b949e'>due to a clock-skew bug in the JWT</span>\n<span style='color:#8b949e'>expiry check (server UTC vs client</span>\n<span style='color:#8b949e'>local time comparison).</span>\n\n<span style='color:#8b949e'>Also extends session lifetime from 1h</span>\n<span style='color:#8b949e'>to 8h to match UX expectations.</span>\n\n<span style='color:#8b949e'>Fixes #247</span>\n\n<span style='color:#8b949e'>─────────────────────</span>\n<span style='color:#8b949e'>Type:    fix  |  Scope: auth</span>\n<span style='color:#8b949e'>Breaking: no  |  Refs: #247</span></pre></div></div></body></html>"}}