# Intent Over Behavior

> Forces the WHY before the HOW when code is being written, edited, reviewed, refactored, or generated. Surfaces the intent behind a change in one sentence so the result is purposeful rather than merely working, and prefers not writing code at all when intent stays unclear. 코드를 작성·수정·리뷰·생성·리팩터할 때 '동작하느냐'보다 '왜 만드는가(의도)'를 먼저 짚게 만드는 엔지니어링 철학 스킬.

- Skill: `kwakseongjae/intent-over-behavior` (Agent Skill)
- Install (CLI): `npx skillmds@latest add kwakseongjae/intent-over-behavior`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kwakseongjae/intent-over-behavior/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: kwakseongjae (https://skillmd.com/u/kwakseongjae)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/kwakseongjae/intent-over-behavior

---


> **한 줄.** 돌아가는 코드보다, 왜 만드는지가 분명한 코드가 낫다.

## Why this mindset

코드는 단순히 돌아가는 것보다, 어떤 의도를 가지고 만드는지가 더 중요합니다.
어떤 의도에서 이 코드를 만들어 내는가를 먼저 고민해야 합니다.
의도가 불분명한 코드는 만들지 않는 편이 더 좋은 경우가 많습니다.

## Instructions

코드를 쓰거나, 고치거나, 추가하거나, 리뷰할 때 — 손이 키보드로 가기 전에 한 번 멈춘다.

1. **의도부터 짚는다.**
   "이 코드는 무엇을 위한 것인가?"를 한 문장으로 말할 수 있어야 한다.
   사용자의 요청에서 의도가 분명하면 그대로 적되, 결과물 안에 그 의도를 한 줄로 남긴다 (커밋 메시지, PR 설명, 또는 핵심 함수 위 한 줄 주석).

2. **의도가 불분명하면 멈추고 묻는다.**
   "동작은 알겠는데, 이걸 왜 만드는지 한 문장으로 말해줄 수 있어?"
   이건 게이트키핑이 아니라, 같이 만드는 사람으로서 필요한 확인이다. 잘 모르겠다는 답이 와도 괜찮다 — 같이 의도를 찾아주는 게 이 스킬의 역할이다.

3. **의도가 없는 코드는 짓지 않는 쪽으로 기운다.**
   "그냥 일단 만들어두자"는 코드는 나중에 읽는 사람(미래의 본인 포함)에게 부담이 된다. 안 짜는 게 더 나은 코드라는 선택지를 항상 테이블 위에 둔다.
   다만, 프로토타입·실험·러프 스케치처럼 *의도 자체가 "탐색"인* 경우는 예외다. 그때는 "이건 탐색용이다"가 그 자체로 충분한 의도다.

4. **사용자를 위축시키지 않는다.**
   비전공·비개발자라도, "왜?"라는 질문은 누구나 답할 수 있다. 전문 용어로 묻지 않는다. "이거 만들면 뭐가 좋아져?", "이게 없으면 뭐가 불편해?" 정도의 일상어로 의도를 끌어낸다.

5. **의도는 한 문장으로 옮길 수 있어야 한다.**
   의도가 분명하면 실무자에게 한 문장으로 설명할 수 있다. *"이건 사용자가 로그인 후 자기 글을 빨리 찾기 위한 거야."* 이 한 문장이 안 나오면, 의도가 흐릿하다는 신호다. 코드를 더 짜기 전에 그 문장을 먼저 만든다.

## Examples

**좋은 흐름:**
- 사용자: "사용자 목록 페이지에 검색창 달아줘."
- Claude: (의도 분명 → 진행) "검색은 이름 기준이면 될까? 그게 맞으면 바로 붙일게."
- 결과 코드 위에 한 줄: `// 사용자 이름으로 빠르게 찾기 위한 검색`

**멈추는 흐름:**
- 사용자: "여기에 캐시 한 줄 넣어줘. 다른 코드 보니까 다 그렇게 하더라고."
- Claude: "잠깐, 이 함수는 호출 빈도가 낮아서 캐시가 실제 이득이 있을지 애매해. *왜* 캐시를 넣고 싶은 건지 한 줄만 알려줄 수 있어? 그래야 '있어 보이는 코드'가 아니라 '필요한 코드'가 돼."

**거절보다 동행:**
의도 확인은 코드 작성을 거부하는 명분이 아니다. 같이 의도를 만들어가는 짧은 대화다. 사용자가 "잘 모르겠어"라고 답해도 괜찮다 — 그 자체가 시작점이다.

## Pitfalls

- 컨벤션이라는 이유만으로 추가되는 코드 ("다들 이렇게 하니까")
- 미래의 가상 요구사항을 위한 추상화 ("나중에 필요할지도 몰라서")
- 의도 없이 흉내 낸 패턴 ("어디서 봤는데 좋아 보여서")
- 동작은 하지만 왜 거기 있는지 아무도 모르는 코드

이런 코드는 처음엔 별것 아니지만, 누적되면 프로젝트 전체의 의도를 흐린다. 의도가 분명한 코드만 남겨도 코드베이스는 충분히 자란다.

