Pattern Skills

reopt-module-contract

모듈 계약

모듈의 입출력·거절 조건·실패 모드를 계약으로 선언한다.

OCLS CONTRACT

설치

cp skills/patterns/reopt-module-contract/SKILL.md <your-project>/.claude/skills/reopt-module-contract/SKILL.md

이 레포의 파일을 당신의 프로젝트에 복사하면 Claude Code 세션에서 바로 활성화된다.

markdownskills/patterns/reopt-module-contract/SKILL.md
---
name: reopt-module-contract
description: 새 모듈·도구·함수를 추가하거나 교체할 때. API 경계 설계, 외부 시스템 통합, 에이전트 간 인터페이스 정의. 입출력 스키마와 거절 조건이 불명확한 코드를 만졌을 때.
---

# 모듈 계약 (Module Contract)

OCLS 단계: **CONTRACT** · 실행 단위의 조건, 권한, 실패 경로를 계약으로 선언한다.

## 핵심 규칙

- 모든 모듈에 명시적 계약을 부여한다: 입력 스키마, 출력 스키마, 필요 권한, 거절 조건, 실패 시 반환 형태.
- 계약은 코드와 문서 양쪽에 존재하며, 위반은 런타임에서 감지 가능해야 한다.
- 모듈 교체 시 계약 호환성을 먼저 검증한다.
- 사람 인터페이스에 투자하듯 에이전트 인터페이스(Agent-Computer Interface)에도 투자한다 — Poka-yoke 원칙(잘못 사용하기 어렵게 설계).

## 판단 질문

**이 모듈은 어떤 조건에서 거절하거나 실패해야 하는가?**

## 적용 체크

1. 입력/출력 스키마가 명시되어 있는가?
2. 거절해야 하는 입력은 무엇인가?
3. 실패 시 반환 형태는? 호출자는 이를 어떻게 감지하나?
4. 필요 권한 범위는 어디까지인가?

## 코드 예시

```typescript
// ✅ 명시적 계약을 가진 모듈
interface GenerateReplyContract {
  input: {
    category: string;
    context: string;
    tone: "formal" | "casual";
    maxTokens: number;
  };
  output:
    | { ok: true; response: string; confidence: number; sources: string[] }
    | { ok: false; reason: "rejected" | "failed"; code: string };
  authority: { read: ["knowledge-base"]; write: [] };
  rejects: [
    "category === 'legal-advice'",
    "context.length > 10000",
    "PII detected in context",
  ];
}

async function generateReply(
  input: GenerateReplyContract["input"],
): Promise<GenerateReplyContract["output"]> {
  if (input.category === "legal-advice") {
    return { ok: false, reason: "rejected", code: "LEGAL_ADVICE" };
  }
  // ... 실행
}
```

## 안티패턴

**고객 상담**: 계약 없이 운영하면 "LLM을 바꿨더니 응답 형식이 달라져 QA Agent 파싱 실패", "새 모듈이 법률 자문에도 답해 컴플라이언스 이슈" 같은 문제가 발생한다.

**DevOps**: 계약 없는 배포 도구는 "dev 환경에서는 동작하는데 prod에서는 권한 부족"처럼 환경별 실패가 반복된다. 필요 권한·롤백 조건·타임아웃을 계약에 명시하면 환경 간 일관성이 보장된다.

## 호출 예시

```
"Response Agent의 generate() 함수에 Module Contract를 적용해줘.
현재 계약 없이 string을 반환한다.
거절 조건(PII 포함, 법률 자문)과 실패 모드(신뢰도 < 0.7)를 계약에 포함해."
```

## 관련 패턴

- Responsibility Partitioning — 분할된 책임 경계마다 계약 필요
- Evaluation and Guardrails — 계약 위반의 런타임 검증

연결된 패턴

Module Contract모듈 계약실행 단위의 조건, 권한, 실패 경로를 계약으로 선언한다.