[SDD Plugin] 적용한 엔지니어링 — AI 엔지니어링 4가지 패러다임으로 분석

2026-04-08 hit count image

Claude Code용 SDD(Spec-Driven Development) Plugin에 적용된 AI 엔지니어링 기법을 Prompt, Context, Agentic, Harness 4가지 패러다임으로 분석합니다. 각 패러다임이 플러그인에서 어떻게 구현되었는지 실제 코드와 함께 살펴봅니다.

development_process

개요

SDD(Spec-Driven Development) Plugin은 Claude Code용 플러그인으로, GitHub Issue 기반의 4단계 프로세스(분석→설계→구현→테스트)를 통해 AI와 체계적으로 협업할 수 있도록 도와줍니다. 이번 포스트에서는 한 발 뒤로 물러나서, 이 플러그인에 어떤 AI 엔지니어링 원리가 적용되었는지 분석해 봅니다.

SDD Plugin의 전체 구조와 사용법은 SDD Plugin의 전체 구조와 사용법에서, 만들게 된 배경은 AI 코딩의 함정과 해결 방향에서, 개발 과정은 프로토타입에서 완성까지에서 다루고 있습니다.

AI 엔지니어링 4가지 패러다임에 대한 자세한 설명은 AI 엔지니어링 4가지 패러다임 — Prompt, Context, Agentic, Harness를 참고해 주세요.

Prompt Engineering — 범위를 제한하는 지시

SDD Plugin에서 가장 중요한 프롬프트 엔지니어링은 What/Why와 How를 분리하는 것이었습니다.

AI는 질문을 받으면 곧바로 기술적인 구현 방법(How)을 이야기하려는 경향이 있습니다. 하지만 What/Why가 정리되지 않은 상태에서 How를 논의하면 방향이 어긋날 수 있습니다.

analyze.md에서는 이를 명시적으로 차단합니다.

Focus ONLY on What and Why. Do NOT discuss How (technical implementation).

이 한 줄이 AI의 행동을 크게 바꿉니다. 분석 단계에서는 요구사항의 본질에만 집중하고, 기술적 논의는 설계 단계로 자연스럽게 넘어갑니다.

또한 각 단계별 산출물 템플릿도 프롬프트 엔지니어링의 일부입니다. 템플릿이 출력 형식을 미리 정해두기 때문에, AI가 일관된 구조로 결과를 만들어냅니다.

## 요약

- 요청 유형:
- 한 줄 요약:
- 요청 배경:

## 기능 목록

| # | 기능 | 설명 |

Context Engineering — 필요한 정보만 로드하는 구조

SDD Plugin에서 Context Engineering이 적용된 곳은 크게 두 가지입니다.

SKILL.md의 모듈화

개발 과정 포스트에서도 언급했지만, 처음에는 모든 프로세스를 SKILL.md 하나에 넣었습니다. 하지만 이렇게 하면 /sdd analyze를 실행할 때 test.md의 내용까지 전부 컨텍스트에 로드됩니다.

# 변경 전: 모든 프로세스가 하나의 파일에
SKILL.md (500줄) → 전부 컨텍스트에 로드

# 변경 후: 라우터 + 개별 명령어 파일
SKILL.md (라우터, ~60줄) → commands/analyze.md만 추가 로드

11개 명령어가 있지만, 한 번에 1개만 컨텍스트에 들어갑니다. 토큰 사용량이 줄어들고, AI가 불필요한 정보에 혼란스러워하는 것도 방지됩니다.

GitHub에서 필요한 산출물만 가져오기

설계 단계에서는 분석 결과가 필요하고, 구현 단계에서는 설계 결과가 필요합니다. 이때 Issue의 모든 comment를 가져오는 것이 아니라, 마커를 사용해 필요한 산출물만 필터링합니다.

# 모든 코멘트를 컨텍스트에 넣는 대신
gh api .../comments --jq '.[].body'

# 마커가 포함된 코멘트만 가져옴
gh api .../comments --jq '.[] | select(.body | contains("sdd:analyze:output")) | .body'

Issue에 일반 대화 코멘트가 수십 개 달려있어도, 산출물 마커가 있는 코멘트만 정확히 가져올 수 있습니다.

Agentic Engineering — 에이전트와 반복 루프

SDD Plugin에서 가장 눈에 띄는 Agentic Engineering 기법은 역할별 에이전트 분리자기 개선 루프입니다.

탐색 전용 에이전트

설계 단계에서 기존 코드베이스를 분석할 때, 메인 에이전트가 직접 하지 않고 전용 탐색 에이전트를 위임합니다.

Explore the codebase using a dedicated Explore agent (model: "sonnet")

탐색 작업은 빠른 모델(Sonnet)로도 충분하기 때문에, 비용과 속도를 최적화할 수 있습니다. 메인 에이전트는 탐색 결과를 받아서 설계에 집중합니다.

AI 리뷰 루프

모든 단계의 산출물은 ai-review.md에 정의된 독립 리뷰 루프를 거칩니다.

Execute the following loop (maximum 3 rounds):

1. Self-Review: 스스로 산출물을 검토
2. AI Review: 독립 에이전트가 별도로 검토
3. Evaluate: 통과 여부 판단
   → 통과하면 종료, 실패하면 수정 후 다음 라운드

핵심은 리뷰하는 에이전트가 작업한 에이전트와 독립적이라는 것입니다. 자기가 만든 결과를 자기가 리뷰하면 놓치는 부분이 있을 수 있지만, 별도의 에이전트가 리뷰하면 다른 관점에서 문제를 발견할 수 있습니다.

리뷰 기준도 단계별로 다릅니다.

단계리뷰 기준
analyze기능이 명확하게 정의되었는가? What/Why가 충분한가? 빠진 요구사항은 없는가?
design설계가 요구사항과 일치하는가? 실현 가능한가? 아키텍처와 일관성이 있는가?
implement코드 품질은? 테스트 커버리지는? 패턴 일관성은? PR 설명이 정확한가?
test테스트 커버리지가 충분한가? 엣지 케이스가 다뤄졌는가? 리그레이션 리스크는?

Harness Engineering — 실행 환경 설계

SDD Plugin 자체가 하나의 Harness라고 볼 수 있습니다. AI가 작업하는 프로세스, 순서, 제약 조건을 미리 정의해 두는 것이니까요.

선언형 프로세스 제어

코드로 AI를 제어하는 것이 아니라, Markdown으로 프로세스를 선언합니다. SKILL.md가 “이 명령어가 들어오면 이 파일을 읽어라”고 안내하고, 각 command 파일이 “이 단계에서는 이것을 하고, 저것은 하지 마라”고 제약합니다.

이 방식의 장점은 프로세스 수정이 매우 쉽다는 것입니다. Markdown 파일만 편집하면 AI의 행동이 바뀝니다. 코드를 수정하고, 빌드하고, 배포하는 과정이 필요 없습니다.

GitHub 기반 상태 관리

라벨로 진행 상태를 관리하는 것도 Harness Engineering입니다. AI가 임의로 단계를 건너뛰거나 이미 완료된 단계를 다시 실행하는 것을 라벨 체크로 방지합니다.

sdd:analyze → sdd:design → sdd:implement → sdd:test → sdd:done

rollback 명령어도 마찬가지입니다. 이전 단계로만 돌아갈 수 있고, 앞으로 건너뛸 수는 없습니다. AI에게 자유를 주되, 프로세스의 순서는 환경이 강제합니다.

권한 설정

Claude Code의 settings.json을 통해 AI의 권한을 제한할 수도 있습니다.

{
  "permissions": {
    "allow": [
      "Bash(ls:*)",
      "Bash(wc:*)",
      "Read(/path/to/sdd-plugin/skills/sdd/**)"
    ]
  }
}

읽기 전용 bash 명령만 허용하고, 스킬 파일만 읽기 가능하도록 제한하면 안전하게 플러그인을 사용할 수 있습니다.

4가지 패러다임이 만나는 지점

SDD Plugin을 4가지 패러다임으로 분석해 보면, 각각이 독립적으로 작용하는 것이 아니라 서로 맞물려서 동작한다는 것을 알 수 있습니다.

패러다임SDD Plugin에서의 역할
PromptWhat/Why와 How 분리, 산출물 템플릿으로 출력 형식 제어
ContextSKILL.md 모듈화, 마커 기반 산출물 필터링
Agentic탐색 에이전트 위임, 독립 리뷰 루프 (최대 3라운드)
Harness선언형 프로세스, 라벨 기반 상태 관리, 권한 설정

예를 들어 analyze 명령어를 실행하면:

  1. Harness: 라벨을 확인하여 올바른 단계인지 검증
  2. Context: Issue body에서 요구사항을 읽고, 필요한 산출물만 컨텍스트에 로드
  3. Prompt: “What/Why만 분석하세요, How는 논의하지 마세요”로 범위 제한
  4. Agentic: AI가 분석을 수행하고, 독립 에이전트가 리뷰하는 루프 실행

4가지 레이어가 하나의 명령어 안에서 동시에 작동합니다.

완료

이번 포스트에서는 SDD Plugin에 적용된 AI 엔지니어링 기법을 4가지 패러다임으로 분석해 보았습니다.

SDD Plugin을 만들면서 가장 크게 느낀 것은, AI를 잘 활용하려면 프롬프트 하나만 잘 쓰는 것으로는 부족하다는 것이었습니다. 정보를 어떻게 관리하고(Context), 에이전트를 어떻게 구성하며(Agentic), 어떤 환경에서 실행시킬지(Harness)까지 함께 설계해야 비로소 AI가 안정적으로 좋은 결과를 만들어냅니다.

AI와 함께 개발 프로세스를 고민하시는 분들께 도움이 되었으면 좋겠습니다.

관련 포스트

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

블로그를 운영하면서 좋은 기회가 생겨 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.



SHARE
Twitter Facebook RSS