Communitygithub.com

lguidolin/conventional-commits-and-releases

커밋, 커밋 메시지 작성, 스쿼시 병합될 PR 열기, 또는 자동 버전 관리/체인지로그 구성을 할 때 사용합니다. 키워드 — 컨벤셔널 커밋, release-please, semver, feat/fix/chore, breaking change, changelog.

conventional-commits-and-releases란 무엇인가요?

이 스킬은 Conventional Commits 형식을 통해 자동 버전 관리와 체인지로그 생성을 가능하게 합니다. 잘못된 커밋 메시지는 잘못된 퍼블릭 버전이나 손상된 릴리즈로 이어지므로, 작은 규율(잘 작성된 하나의 메시지)이 큰 정확성(정확한 체인지로그와 올바른 버전 범프)을 보장합니다. 이 스킬은 다양한 AI 에이전트 플랫폼(Claude Code, Cursor, Codex 등)에서 사용할 수 있으며, 커밋 메시지 형식(type(scope): description), 타입별 버전 영향(feat는 minor, fix는 patch, feat!는 major), 스쿼시 병합 시 PR 제목의 중요성, AI 속성 금지 규칙을 명확히 규정합니다. CI(pull request title validation, AI attribution check)를 통해 자동으로 규칙이 강제되며, 브랜치 커밋 본문은 스쿼시 병합 시 폐기되므로 lint 대상에서 제외됩니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/lguidolin/agent-skills/tree/main/skills/conventional-commits-and-releases

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

컨벤셔널 커밋과 릴리즈

개요

커밋 메시지는 기계가 읽는 인터페이스이지, 단순한 서술이 아닙니다. 자동 버전 관리와 체인지로그 생성은 이를 파싱합니다. 잘못된 형식의 메시지는 잘못된 퍼블릭 버전이나 손상된 릴리즈를 초래합니다. 작은 규율(하나의 잘 작성된 메시지)로 큰 정확성(정확한 체인지로그, 올바른 버전 범프)을 자동으로 얻을 수 있습니다.

형식

<type>(<scope>): <description>

타입효과 / 용도
feat새로운 기능 — minor 범프
fix버그 수정 — patch 범프
docs문서만 변경
chore유지보수, 의존성, 설정
refactor동작을 변경하지 않는 코드 변경
test테스트만 변경
ci / build파이프라인 / 빌드 시스템 변경
  • 명령형 어조: "added X"나 "adds X"가 아닌 "add X"를 사용합니다.
  • Breaking changes: feat!: 또는 BREAKING CHANGE: 푸터 — major 범프를 발생시킵니다.
  • 범위(scope) 는 선택 사항이지만 권장됩니다: feat(auth):, fix(db):.

핵심 세부 사항

  • 타입↔버전 연결은 feat와 fix를 잘못 입력하면 잘못된 버전이 배포됨을 의미합니다. 타입을 신중하게 선택하세요: "add" = 새로운 기능, "update" = 기존 기능 개선, "fix" = 버그.
  • 스쿼시 병합: PR 제목이 배포되는 커밋이 됩니다. PR 제목 자체가 유효한 Conventional Commit이어야 합니다. 그렇지 않으면 릴리즈가 잘못됩니다.
  • 인간 작성 어조. AI/어시스턴트 속성, Co-authored-by 트레일러, 생성됨 푸터를 사용하지 마세요. 커밋은 인간이 작성한 것처럼 읽혀야 합니다.

흔한 변명

변명현실
"메시지는 크게 중요하지 않아요"체인지로그와 버전 번호를 결정합니다. 기계적으로 중요합니다.
"이 기능에는 chore가 충분히 비슷해요"chore는 버전을 범프하지 않으므로 사용자가 릴리즈에서 기능을 받을 수 없습니다. 올바른 타입을 사용하세요.
"PR 제목은 나중에 고칠게요"스쿼시 병합 시 제목은 병합 시점에 최종입니다. 미리 수정하세요.
"Co-authored-by 트레일러는 괜찮아요"프로젝트 규칙에서 AI 속성을 금지합니다. 예외는 없습니다.

적신호 — 즉시 중단

  • 타입 접두사가 없는 커밋 메시지
  • 사용자 동작을 추가하거나 수정하는 작업에 chore/docs 사용
  • 유효한 Conventional Commit이 아닌 스쿼시 PR 제목
  • AI 속성 또는 Co-authored-by 줄

강제 사항:

  • PR 제목 — CI에서 검증되며, 차단됨 (amannn/action-semantic-pull-request). 스쿼시 병합 시 제목이 배포되는 커밋이므로, 이것이 핵심 게이트입니다.
  • AI 속성 — No AI Attribution 차단 작업이 Co-authored-by 트레일러(Claude/Anthropic 명명)와 Generated with [Claude…] 푸터를 거부합니다. 이는 브랜치 커밋과 PR 본문(스쿼시 커밋 본문이 됨) 모두에서 검사됩니다. 인간 Co-authored-by 트레일러는 영향을 받지 않습니다.
  • 브랜치 커밋 본문 — 의도적으로 lint되지 않습니다. 스쿼시 병합 시 폐기되므로 체인지로그에 도달하지 않습니다. 병합 커밋으로 전환하는 경우 commitlint를 추가하세요.

알려진 격차: 에이전트 계정이 커밋을 작성한 경우, GitHub는 스쿼시 시점에 Co-authored-by 트레일러를 구성합니다. 이는 PR 검사가 실행된 후입니다. 위 게이트는 이를 감지할 수 없습니다. 에이전트 신원으로 커밋하지 마세요.

전체 근거: 헌법 제3조, engineering-constitution/references/engineering-constitution.md에 번들됨.

Individual skills in this repo

This repo contains 18 individual skills — each has its own dedicated page.

lguidolin/change-hygiene-and-code-craft

Use when writing or refactoring code, structuring a commit or PR, or deciding whether to abstract duplication. Symptoms — mixing reorg with logic changes, a PR doing several things at once, a file growing large, the second copy of similar code, or unsure whether to DRY something up.

lguidolin/cloud-delivery-aks

Use when deploying to Kubernetes or Azure Kubernetes Service (AKS), configuring cloud secrets, setting up progressive rollout/canary, per-PR ephemeral environments, or k8s health probes. Keywords — Kubernetes, AKS, Key Vault, Argo Rollouts, Flagger, canary, blue-green, liveness, readiness, PodDisruptionBudget, HPA, rollback, GHCR.

lguidolin/commit-history-rewrite

Use when an existing repository has messy commit history that needs to conform to conventional commits before adopting release-please, or when intermediate WIP/fixup/merge commits need to be cleaned up.

lguidolin/defense-in-depth-security

Use when handling untrusted input, secrets, authentication/authorization, or dependencies — or threat-modeling a new surface. Keywords — STRIDE, threat model, least privilege, secrets management, supply chain, dependency scanning, input validation, audit log, defense in depth.

lguidolin/designing-before-building

Use when starting a feature, fixing a non-trivial bug, or about to write implementation code — before any code exists. Symptoms you need this: "this is simple, I'll just code it", reaching for the editor before a design is approved, or an idea that hasn't been turned into a spec and plan.

lguidolin/engineering-constitution

Use when starting work in a project that follows the engineering constitution, orienting to its rules, or deciding which engineering practice applies to a task — spec writing, commits, testing, security, deploys, database, or UI work.

lguidolin/graphql-contract-testing

Use when writing a GraphQL query/mutation that the UI and a test will share, or building route/schema contract or smoke tests. Symptoms — copying a query into a test, a test asserting on query text, schema change that didn't break the UI build, or RLS/permission drift. Keywords — graphql-codegen, typed document, contract test, route smoke test.

lguidolin/init-repo-CI

Use when setting up a new repository with conventional commits, release-please, and CI automation, or when retrofitting an existing repository that lacks automated versioning and PR validation workflows.

lguidolin/interface-craft-and-accessibility

Use when building or styling UI — components, layouts, forms, design tokens — or making accessibility decisions. Keywords — a11y, WCAG, keyboard navigation, focus state, contrast, design system, minimalist UI, component reuse, ARIA, semantic HTML.

lguidolin/merge-gates-and-automation

Use when setting up or changing CI, pre-push hooks, or a task runner, or deciding what must pass before merge. Symptoms — tempted to put authoritative checks only in a local hook, skip CI, bypass with --no-verify, or unsure what gates a merge vs. runs locally.

lguidolin/observability-and-slos

Use when adding logging, metrics, tracing, health checks, SLOs, or alerting — or when building a service surface that needs to be operable and debuggable. Keywords — structured logs, OpenTelemetry, correlation id, RED metrics, liveness, readiness, SLI, SLO, error budget, alerting.

lguidolin/performance-and-scale

Use when working on hot paths, list endpoints, pagination, data-access in loops, or public interfaces/schemas. Symptoms — unbounded queries, N+1 access, no latency budget, optimizing without measuring, or changing an interface many consumers depend on. Keywords — pagination, N+1, Hyrum's Law, performance budget, bundle size.

lguidolin/postgres-postgraphile-rls-and-sql

Use when writing PostgreSQL, PostGraphile config, Row-Level Security policies, SQL schema files, or working on the Browser→App→PostGraphile→Postgres data path. Keywords — RLS, SECURITY DEFINER, search_path, pgSettings, grants, roles, GraphQL depth limit, query cost, statement_timeout, SQL file organization.

lguidolin/recording-decisions

Use when a design or architecture decision has been made and needs to be captured — writing a decision record or ADR, updating a decision index, noting a deferred idea, or superseding a past decision. Keywords — ADR, decision record, rationale, rejected alternatives, dependency index.

lguidolin/resilience-and-deploy-safety

Use when planning a deploy, designing a rollback, or responding to an incident or writing a postmortem. Keywords — deploy safety, rollback, immutable artifact, progressive delivery, canary, blast radius, incident response, blameless postmortem, error budget.

lguidolin/ship-it

Use when the user wants to ship work — push, PR, archive decision records, merge, and clean up. Handles the full lifecycle from committing final changes through post-merge cleanup including converting specs/plans to compact decision records.

lguidolin/tests-as-a-control

Use when writing or modifying tests, when a test breaks during a refactor, or when testing permission/role rules. Symptoms — tempted to edit a test to make it pass, testing only the happy path, a deny-test that started passing, flaky tests, or unsure what to assert.

lguidolin/zero-downtime-migrations

Use when changing a database schema where data must survive the change — adding/removing/renaming columns, constraints, indexes, or backfilling. Symptoms — a destructive migration bundled with a code deploy, a NOT NULL column with a backfill, a table-locking UPDATE, or a rename. Keywords — expand/contract, parallel change, backfill, NOT VALID, CREATE INDEX CONCURRENTLY, graphile-migrate.

관련 스킬