Engineering Constitution
개요
이식 가능한 엔지니어링 실천법 헌장으로, 집중된 스킬들로 분해되어 있습니다. 이 스킬은 인덱스 역할을 합니다: 불가침 원칙을 명시하고 작업에 맞는 특정 스킬로 안내합니다. 전체 추론 내용은 references/engineering-constitution.md에 있으며, 이 SKILL.md와 함께 번들로 제공되므로 스킬이 설치된 모든 곳에서 함께 사용할 수 있습니다.
핵심 아이디어: 소프트웨어 엔지니어링은 시간이 지남에 따라 통합되는 프로그래밍입니다. 첫 번째 배포가 아닌 장기적인 시스템(운영, 안전한 변경, 장애 복구)에 최적화하세요.
여덟 가지 불가침 원칙
- 이해한 후에 구축하라. 승인된 설계 없이 코드를 작성하지 마십시오.
- 모든 결정을 그 근거와 함께 기록하고, 무엇을 거부했는지도 기록하라.
- 테스트는 통제 수단이지 형식이 아니며, 행동 변화는 테스트 우선이다. 실패하는 테스트는 정보이며, 절대 편집하지 않습니다. 구조적 변경은 기존 테스트 스위트가 편집되지 않고 통과해야 가능합니다.
- YAGNI(정말 필요하지 않으면 하지 마라). 엄격하게 적용하십시오.
- 반복되는 작업은 자동화하라.
- 소프트웨어 엔지니어링은 시간이 지남에 따라 통합되는 프로그래밍이다.
- 강제되지 않는 규칙은 제안에 불과하다. 규칙을 도구에 바인딩하거나 리뷰어 판단 레이블을 붙이십시오.
- 사용자의 명시적 지시가 이 문서보다 우선한다. 우선순위: 사용자 → 헌장 → 도구 기본값.
어떤 스킬이 필요합니까?
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); 헌장이 바로잡으려는 것이 습관입니다.