Community라이팅 & 에디팅github.com

개발-규율

버그, 회귀 또는 실패하는 테스트를 수정할 때; 정확성을 판단하는 모든 것(테스트, 검증기, 탐지기, 임계값, CI), 금전이나 숫자 공식, 마이그레이션 또는 인증을 변경할 때; 테스트가 편집 후 녹색으로 바뀌거나 불안정하거나 편집/건너뛰기/약화시키고 싶을 때; 테스트가 명세와 모순될 때; 실패한 시도를 재시도할 때; 코드 변경을 하위 에이전트에 위임하거나 그 보고서와 숫자를 수락할 때; 배포할 때; 검사가 차단될 때 사용합니다.

개발-규율란 무엇인가요?

이 개발 규율(Dev-discipline) 스킬은 개발자가 버그 수정, 테스트 추가, CI 변경, 배포 등 정확성이 중요한 작업을 수행할 때 엄격한 절차를 따르도록 설계된 규칙 기반 시스템입니다. 주된 목적은 '완료'를 외부 신호(통과하는 CI, 녹색 테스트)에 의존하지 않고 스스로 검증 가능한 증거(assertion 기반 테스트, 독립 오라클, 재현 가능한 측정)로 입증하도록 강제하는 것입니다. Claude Code, Cursor, Codex 등 모든 코드 수정 에이전트에서 사용할 수 있으며, `$DD/` 스크립트 폴더를 통해 자동화된 검증(prove_fix.py, guard_diff.py 등)을 제공합니다. 스킬은 수정 전 측정, 근본 원인 수정, assertion 기반 테스트 증명, CI 게이트 통과, 최종 실행 증거 기록, 독립 오라클로 마감의 6단계 루프로 구성되며, 각 단계에서 '빨간 플래그'를 감지하여 자동으로 경고하거나 차단합니다. 특히 금전 계산, 데이터 마이그레이션, 인증 로직과 같이 돌이킬 수 없는 변경에 대해 설계 노트를 먼저 작성하도록 요구하며, 테스트가 명세와 모순될 경우 'SPEC_CONFLICT'를 선언하고 테스트를 수정하지 않도록 합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/volniy082-spec/dev-discipline/tree/HEAD

Installed? Explore more 라이팅 & 에디팅 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

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

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

문서

개발-규율은(는) 무엇을 하나요?

"완료"는 당신이 조정하지 않은 외부 신호에 의해 결정됩니다. 작성된 규칙은 실패 클래스의 이름을 지정할 뿐입니다. 게이트의 검사가 이를 막습니다. 클래스가 반복되면 같은 커밋에 검사를 추가하세요. $DD = 이 파일 옆에 있는 scripts/ 폴더 (종료 코드 0 PASS, 1 FAIL, 2 NOT_PROVEN).

표면에 따른 엄격함. 판단하는 것(테스트, 검증기, 임계값, CI), 금전 및 숫자 공식, 마이그레이션, 인증, 무음 실패에 대해 전체 루프를 수행합니다. 명세 리터럴이 있는 약 10줄의 로컬 수정: prove_fix.py, 결함 클래스의 2~3개의 수동 작성 변이체, 작업 중 사용하지 않은 입력에 대해 한 번 실행. 산문, UI 모양, 문서, 프로토타입: 테스트와 하나의 스모크 테스트를 실행합니다. 테스트나 실행기가 없는 경우: 자체 커밋에 최소한의 것을 추가하세요(설정, 약화가 아님).

루프

  1. 편집 전에 측정: 비교 전후에 사용할 하나의 명령어. 원시 데이터에서 범위를 도출하고, 요약이나 기억으로 하지 마세요. 전체 클래스를 나열하세요: 루트를 공유하는 모든 인스턴스. → references/debugging.md
  2. 결함이 경로를 따라 루트를 수정하세요. 상단의 가드는 수정이 아닙니다. 회귀: git bisect run. 세 번 실패 후에는 접근 방식이나 컨텍스트를 변경하세요. 새 엔티티, 금전/데이터 흐름 또는 마이그레이션: 먼저 5~10줄의 설계 노트를 작성하세요(debugging.md §10).
  3. 테스트 증명: 부모에서 어설션에 의해 빨간색(ImportError, 수집 오류, 건너뛰기 = NOT_PROVEN), 수정에서 녹색, 코드 변경을 되돌리면 다시 빨간색: $DD/prove_fix.py. 새 검사는 잘못된 입력에서 발동하고 올바른 입력에서는 조용히 유지됩니다. 금전 및 숫자의 경우 예상 값은 명세 리터럴입니다(# oracle: <source>).
  4. 게이트: 테스트는 같은 커밋의 CI에서 실행됩니다. 건너뛰기, 시간 초과 및 "0 tests"는 PASS가 아닙니다. 제외 목록은 축소만 됩니다. 글로브 또는 레지스트리에 대한 루프는 찾은 항목 수를 어설션합니다. → gate-integrity.md
  5. 수락 최종 실행의 실행기 요약 줄에서 정확한 트리에서, 파이프라인의 $?가 아닙니다.
  6. 마감 작성자가 조정하지 않은 검사로: 다른 데이터, 읽기 전용 프로덕션 스모크, 독립 오라클, 기대치를 먼저 기록합니다. 찾은 클래스는 게이트로 들어갑니다. → proof-and-oracles.md

오라클과 그 보호

  • 오라클은 검사하는 코드와 코드를 공유하지 않습니다. 골든과 자기 일관성은 일관성을 증명할 뿐, 정확성을 증명하지 않습니다.
  • 검증 스크립트는 테스트 대상 코드입니다: 좋은 입력과 나쁜 입력에서 실행하고 검사한 항목 수를 출력합니다.
  • 테스트, 스냅샷, 예상 값 및 CI는 계약에 의해서만 변경됩니다: 브리프, 또는 단독 작업 시 변경 사항을 명명하는 사용자 요청(새 명세, 티켓, 값)과 편집 전에 작성된 한 줄(어떤 테스트가 변경되는지, 새 값이 어디에서 오는지). "통과시키기"는 계약이 아닙니다: 명세와 모순되는 테스트는 그대로 유지되고 답변은 SPEC_CONFLICT입니다. 값 변경은 별도의 test: 커밋으로 들어갑니다. 건너뛰기, 삭제된 어설션, 축소된 적용 범위에는 명시된 이유가 필요합니다. 예상 숫자에 맞추기 위해 코드를 조정하지 마세요. 최종 diff를 판단하고 편집 도구를 판단하지 마세요: $DD/guard_diff.py (먼저 권고). 합법적인 작업을 차단하는 검사는 결함입니다: BLOCKED를 보고하고 우회하지 마세요. → oracle-protection.md

자율성

기본적으로 진행하세요. 돌이킬 수 없는 것(보안, 결제, 프로덕션 데이터 쓰기, 권한) 또는 목표와 충돌하는 경우에만 물어보세요. 분기점에서 하나를 선택하고, 그 이유, 두 측정값의 숫자, 실행 취소 방법을 기록하고 계속하세요. 차단됨: 독립적인 모든 것을 완료한 다음, 필요한 동작과 명령을 명명하는 한 줄로 끝내세요.

보고서

  • 각 기준 PASS | FAIL | NOT_PROVEN (명령어, 종료 코드 및 출력 줄 포함); not_checked도 포함.
  • 평결: DONE, BLOCKED(이유), SPEC_CONFLICT(테스트, 소스), IMPOSSIBLE, NOT_REPRODUCED. 정직한 미완료 종료는 성공입니다. 무음 건너뛰기는 결함입니다. 부분 상태를 명명하세요("가드 추가됨, 루트 활성").
  • 모든 숫자는 최종 실행의 명령어와 함께 제공됩니다. 하위 에이전트가 보고한 숫자를 다시 실행하세요($DD/reexec_claims.py).
  • 커밋 본문 = 증거 기록: 전후 측정, 게이트 라인, 완료되지 않은 것과 그 위치.

빨간 플래그

발견조치
부모에서 빨간색 없이 녹색prove_fix.py
하위 에이전트의 숫자 또는 내 기억 인용다시 실행
계약 없이 테스트 또는 임계값 편집계약 줄 또는 SPEC_CONFLICT
녹색을 얻기 위해 skip, retry, sleep, noqa원인 찾기, 결정적으로 만들기 (refactor-flaky.md)
되돌릴 수 있는 것에 대해 물어보려고 함결정, 기록, 계속

더 보기: delegation.md (하위 에이전트, 리뷰어, 브리프), release.md (배포), process-ledger.md, evidence.md.

관련 스킬