Communitygithub.com

lguidolin/engineering-constitution

새 프로젝트에서 엔지니어링 헌장을 따를 때 시작하거나, 규칙을 숙지하거나, 특정 작업(스펙 작성, 커밋, 테스트, 보안, 배포, 데이터베이스, UI 작업)에 어떤 엔지니어링 실천법을 적용할지 결정할 때 사용합니다.

engineering-constitution란 무엇인가요?

이 스킬은 엔지니어링 실천법을 이식 가능한 헌장 형태로 정의한 'Engineering Constitution'의 인덱스 역할을 합니다. 핵심 아이디어는 '소프트웨어 엔지니어링은 시간이 지남에 따라 통합되는 프로그래밍'이라는 원칙 아래, 첫 번째 배포보다 장기적인 시스템 운영과 안전한 변경, 복구에 최적화하도록 안내합니다. 8가지 불가침 원칙을 기반으로 하며, 작업 유형에 따라 '설계 전 빌드 금지', '결정 기록', '테스트 우선', 'YAGNI', '자동화' 등의 세부 스킬로 라우팅합니다. Claude Code, Cursor, Codex 등 SKILL.md을 지원하는 모든 AI 에이전트 플랫폼에서 사용 가능하며, 프로젝트의 수명 주기와 스택에 따라 Tier 1(보편 적용)과 Tier 2(스택 특화) 스킬을 선택적으로 로드하여 일관된 엔지니어링 규율을 적용할 수 있습니다.

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

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

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

문서

Engineering Constitution

개요

이식 가능한 엔지니어링 실천법 헌장으로, 집중된 스킬들로 분해되어 있습니다. 이 스킬은 인덱스 역할을 합니다: 불가침 원칙을 명시하고 작업에 맞는 특정 스킬로 안내합니다. 전체 추론 내용은 references/engineering-constitution.md에 있으며, 이 SKILL.md와 함께 번들로 제공되므로 스킬이 설치된 모든 곳에서 함께 사용할 수 있습니다.

핵심 아이디어: 소프트웨어 엔지니어링은 시간이 지남에 따라 통합되는 프로그래밍입니다. 첫 번째 배포가 아닌 장기적인 시스템(운영, 안전한 변경, 장애 복구)에 최적화하세요.

여덟 가지 불가침 원칙

  1. 이해한 후에 구축하라. 승인된 설계 없이 코드를 작성하지 마십시오.
  2. 모든 결정을 그 근거와 함께 기록하고, 무엇을 거부했는지도 기록하라.
  3. 테스트는 통제 수단이지 형식이 아니며, 행동 변화는 테스트 우선이다. 실패하는 테스트는 정보이며, 절대 편집하지 않습니다. 구조적 변경은 기존 테스트 스위트가 편집되지 않고 통과해야 가능합니다.
  4. YAGNI(정말 필요하지 않으면 하지 마라). 엄격하게 적용하십시오.
  5. 반복되는 작업은 자동화하라.
  6. 소프트웨어 엔지니어링은 시간이 지남에 따라 통합되는 프로그래밍이다.
  7. 강제되지 않는 규칙은 제안에 불과하다. 규칙을 도구에 바인딩하거나 리뷰어 판단 레이블을 붙이십시오.
  8. 사용자의 명시적 지시가 이 문서보다 우선한다. 우선순위: 사용자 → 헌장 → 도구 기본값.

어떤 스킬이 필요합니까?

Tier 1 — 보편적 (모든 프로젝트에 적용):

작업스킬
기능 시작, 아이디어를 스펙/계획으로 전환designing-before-building
결정을 내렸을 때, 이를 기록 (ADR, 인덱스, 보류된 아이디어)recording-decisions
커밋, 커밋 메시지 작성, 자동 릴리스conventional-commits-and-releases
테스트 작성/변경, 권한/역할 규칙, 리팩터링에서 테스트 실패tests-as-a-control
코드 작성 또는 리팩터링, 변경 구조화, DRY 결정change-hygiene-and-code-craft
UI, 컴포넌트, 스타일링, 접근성 구축interface-craft-and-accessibility
CI, 푸시 전 훅, 태스크 러너, 병합 게이트merge-gates-and-automation
로깅, 메트릭, 트레이싱, 헬스 체크, SLO, 알림observability-and-slos
신뢰할 수 없는 입력, 비밀, 인증, 의존성, 위협 모델링defense-in-depth-security
핫 경로, 페이지네이션, N+1, 목록 엔드포인트, 공개 인터페이스performance-and-scale
배포, 롤백 또는 인시던트/포스트모템 계획resilience-and-deploy-safety

Tier 2 — 스택 특화 (해당 도구/주제가 있을 때만 로드):

작업스킬
PostgreSQL, PostGraphile, RLS, SQL 파일, 앱→GraphQL→DB 경로postgres-postgraphile-rls-and-sql
UI와 테스트 간에 공유되는 GraphQL 쿼리, 경로/스키마 계약 테스트graphql-contract-testing
유지되어야 하는 데이터를 수반하는 스키마 변경 - 마이그레이션, 백필zero-downtime-migrations
Kubernetes/AKS, 클라우드 시크릿, 점진적 롤아웃, PR별 환경에 배포cloud-delivery-aks

새 프로젝트에 이 스킬들을 적용하는 방법

  • Tier 1은 변경 없이 적용됩니다. 위의 모든 스킬은 웹 앱, 파이프라인, CLI, 라이브러리 등 모든 프로젝트에 적용됩니다.
  • Tier 2는 교체 가능합니다. 스택이 다른 경우 Tier 2 스킬은 트리거되지 않으며(설명이 스택 특화됨), 동등한 스킬로 대체합니다. 이들이 구현하는 원칙(단일 데이터 경로, 최종 적용은 하위에서, 계약 지점, 되돌릴 수 있는 배포)은 여전히 유효합니다.
  • 수명 주기에 맞게 조정하세요. 출시 전 또는 로컬 전용 프로젝트는 제로 다운타임 마이그레이션, 카나리, 공식 인시던트 프로세스를 지금 규칙을 작성하고, 트리거 시 활성화 방식으로 적용합니다. 첫 번째 결정 레코드에 프로젝트의 모드를 명시하십시오.

위험 신호

코드를 작성, 커밋, 배포 또는 테스트를 변경하려고 하는데 관련 스킬을 아직 참조하지 않았다면 — 중단하고 먼저 로드하십시오. 헌장은 기본 습관보다 우선합니다(원칙 7); 헌장이 바로잡으려는 것이 습관입니다.

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/conventional-commits-and-releases

Use when committing, writing a commit message, opening a PR that will be squash-merged, or configuring automated versioning/changelogs. Keywords — conventional commits, release-please, semver, feat/fix/chore, breaking change, changelog.

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/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.

관련 스킬