{"id":50610509,"url":"https://github.com/rhino-ty/principled-git-commit","last_synced_at":"2026-06-06T03:04:11.953Z","repository":{"id":356953883,"uuid":"1234716116","full_name":"rhino-ty/principled-git-commit","owner":"rhino-ty","description":"Claude Code skill: Conventional Commits + best-practice workflow + project-dialect scaffolding. Treats commits as durable history serving four readers — git log scanners, git blame tracers, git bisect hunters, and AI agents.","archived":false,"fork":false,"pushed_at":"2026-05-10T16:23:50.000Z","size":99,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-10T17:24:56.969Z","etag":null,"topics":["ai-skill","claude-skills","commit-message","conventional-commits","git","git-workflow","methodology","skill"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rhino-ty.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-10T14:51:32.000Z","updated_at":"2026-05-10T16:23:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rhino-ty/principled-git-commit","commit_stats":null,"previous_names":["rhino-ty/principled-git-commit"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/rhino-ty/principled-git-commit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhino-ty%2Fprincipled-git-commit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhino-ty%2Fprincipled-git-commit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhino-ty%2Fprincipled-git-commit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhino-ty%2Fprincipled-git-commit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rhino-ty","download_url":"https://codeload.github.com/rhino-ty/principled-git-commit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhino-ty%2Fprincipled-git-commit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33967640,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-skill","claude-skills","commit-message","conventional-commits","git","git-workflow","methodology","skill"],"created_at":"2026-06-06T03:04:11.350Z","updated_at":"2026-06-06T03:04:11.933Z","avatar_url":"https://github.com/rhino-ty.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# principled-git-commit\n\n\u003e Claude Code skill: Conventional Commits + 5 founding principles + 5-step workflow + project-dialect scaffolding. Treats commits as durable history that serves four readers — `git log` scanners, `git blame` tracers, `git bisect` hunters, and **AI agents**.\n\n[![Made with](https://img.shields.io/badge/Made%20with-Claude%20Skills-blueviolet)](https://docs.claude.com)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n---\n\nMost commit conventions stop at \"use Conventional Commits.\" This skill adds:\n\n- **Five founding principles** (atomic, leaves-repo-green, why-over-what, imperative, searchable) — each with a one-line rationale tying back to a concrete reader scenario\n- **Five-step commit workflow** (diff inspection → staging → type-decision tree → secrets blocklist → mental checklist) absorbed from `awesome-copilot/git-commit` patterns\n- **Breaking change / revert / amend protocols** so history stays bisect-friendly\n- **Anti-patterns** with concrete remediation (vague summaries, `##` headers in body, `git add -A`, amending published commits, etc.)\n- **Project dialect scaffolder** — generates a per-project `docs/references/COMMIT.md` skeleton for project-specific extensions (native-language domain nouns, custom trailers like `Refs: #1234` / `Flag:` / `Plan SC:`, workflow hooks like PDCA / Linear / Jira / squash-merge PR, scope catalogs derived from actual `git log` analysis)\n\nThe skill is **content-separated**: universal rules ship inside the skill, project-specific dialect lives in the project's `docs/references/`. This lets one global install serve every repo while each repo retains its own dialect.\n\n## Why \"AI agent\" is a first-class reader\n\nModern git history is consumed by LLM agents at least as often as by humans — for `/clear` context rebuild, PR review, changelog generation, and natural-language history queries. AI readers depend heavily on:\n\n- **Atomic commits** so a one-sentence summary captures the change without conflating intents\n- **Searchable keywords** (concrete nouns, function names, file paths) so embedding search hits the right commit\n- **English body by default** so cross-cultural LLM models perform consistently\n- **Consistent trailers** (`Refs:`, `BREAKING CHANGE:`, custom dialect trailers) for graph navigation\n\nEvery principle in this skill calls out the AI-reader implication alongside the human-reader implication.\n\n## Install\n\n```bash\nnpx skills add rhino-ty/principled-git-commit\n```\n\nAuto-loads on next Claude Code session and triggers on keywords: `commit`, `git commit`, `stage`, `commit message`, `커밋`.\n\nTo verify:\n\n```bash\nls ~/.claude/skills/principled-git-commit/\n# SKILL.md  lang/  templates/  scripts/  references/  examples/\n```\n\n## Project-level install\n\nIf a team needs to pin the skill version per repo (and have it land for new clones automatically), install at project level instead:\n\n```bash\ncd \u003cproject\u003e\nnpx skills add rhino-ty/principled-git-commit --project\n```\n\nThis places the skill in `\u003cproject\u003e/.claude/skills/principled-git-commit/` (repo-tracked). Project install **overrides** any global install of the same skill.\n\n## Generate a project dialect\n\nWhen you start a fresh project (or import this skill into an existing one), let the skill scaffold the dialect file:\n\n```bash\ncd \u003cproject\u003e\n~/.claude/skills/principled-git-commit/scripts/scaffold-dialect.sh\n```\n\nThis drops `docs/references/COMMIT.md` (a project-specific extension that points back to the skill) populated with:\n\n- A pointer to this skill as the universal source of truth\n- Slots for domain proper nouns (e.g., Korean product names that should stay un-translated)\n- A scope catalog auto-extracted from `git log` (frequency-ranked, top 200 commits)\n- Slots for custom trailers (`Plan SC`, `Refs:`, `Match Rate`, etc.)\n- Optional workflow hooks (PDCA / Linear / Jira-style auto-commit boundaries)\n\nEdit the result to match your project. The skill loads both `SKILL.md` and the project's dialect file at trigger time.\n\n## Language\n\nThe skill ships with English prose in `SKILL.md` and an optional Korean prose variant under `lang/ko/SKILL.md`. Toggle via the skill's `args.lang` parameter or by editing the symlink in your install — see `lang/README.md`.\n\nThe **convention itself** (English-default body, lowercase summary, imperative mood) does not change between language variants. Only the explanation prose differs.\n\n## Layout\n\n```\nprincipled-git-commit/\n├── SKILL.md                      # Universal conventions (English)\n├── lang/\n│   └── ko/SKILL.md               # Korean prose variant\n├── templates/\n│   ├── DIALECT.template.md       # Project dialect skeleton\n│   └── DIALECT.example.md        # Filled example (Acme Cloud — fictional pnpm monorepo + Linear + LaunchDarkly)\n├── scripts/\n│   ├── scaffold-dialect.sh       # Interactive dialect generator\n│   └── analyze-history.sh        # git log → scope catalog\n├── references/\n│   └── REFERENCES.md             # Source attribution (Conventional Commits, Tim Pope, awesome-copilot)\n└── examples/\n    └── good-commits.md           # Annotated good/bad real commits\n```\n\n## Source attribution\n\nThis skill stands on the shoulders of:\n\n- [Conventional Commits 1.0.0](https://www.conventionalcommits.org/)\n- Tim Pope, [\"A Note About Git Commit Messages\"](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)\n- `github/awesome-copilot@git-commit` (workflow patterns, type detection, secrets blocklist)\n- `git interpret-trailers` (1.8.13+) for footer parsing\n\nPlus an empirical 200-commit log analysis that produced the length sweet-spot (avg 71-char summary, 16-line body) and the observation that `##` markdown headers in commit bodies are a 2.5%-of-commits outlier (and therefore noise rather than signal).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhino-ty%2Fprincipled-git-commit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhino-ty%2Fprincipled-git-commit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhino-ty%2Fprincipled-git-commit/lists"}