ponytail 재현 실험에서 'AI에게 게을러지라고 시키면 코드가 32% 준다'를 실측한 뒤(캐싱 27→17, 재시도 47→33, 중복제거 12→1), 그 개념을 우리 증상 사전 포맷으로 재구현했다. 철학 사다리를 리브랜드한 게 아니라, '안 만들어도 되는 것'을 증상별로 목록화하고 표준 대안·요청 문장·실측 before/after·확인법을 붙였다. 핵심 규율은 즉방형/분기형 구분이다. 캐싱·중복제거처럼 표준에 정답이 있는 건 바로 되돌리고, 설정 클래스·커스텀 예외·미들웨어처럼 추상화가 때로 정당한 건 무조건 '만들지 마'가 아니라 갈림길로 진단부터 시킨다. 과잉설계가 잦은 바이브코더에게 도입 후보.
실물부터, 설치 전에 전부 만져보세요
아래는 이미지가 아니라 이 스킬이 담고 있는 진짜 HTML입니다. 눌러 보세요.
안 만들어도 되는 것 · 15가지
AI는 시키면 다 만들어요 안 만들어도 되는 것까지
AI는 시키면 다 만든다. 문제는 '안 만들어도 되는 걸' 만들 때다. 이 사전은 부풀기 쉬운 지점을 증상별로 짚고, 표준 한 줄로 되돌리는 요청 문장을 준다. 실측한 before/after가 붙어 있다.
결과 캐싱을 직접 만든다실측 27줄 → 17줄
✗ 부풀린 코드
_cache = {}
def compute(a, b):
key = (a, b)
if key in _cache:
return _cache[key]
result = a + b # 실제 계산
_cache[key] = result
return result
✓ 표준으로
from functools import cache
@cache
def compute(a, b):
return a + b # 실제 계산
이 함수 결과를 캐싱하고 싶어. 캐시를 직접 만들지 말고 functools.cache 로 해줘.
이 API 를 호출하는데, 단순한 요청이면 표준 urllib 로 하고, 세션·재시도가 진짜 필요할 때만 라이브러리를 쓸지 먼저 알려줘.
04 안 시킨 추상화 3
분기형
"설정값 몇 개에 클래스 계층을 만든다"
✗ 부풀린 코드
class BaseConfig:
def __init__(self): ...
class DevConfig(BaseConfig): ...
class ProdConfig(BaseConfig): ...
class ConfigFactory:
def create(self, env): ...
✓ 표준으로
from dataclasses import dataclass
@dataclass
class Config:
email: str = ""
notify: bool = True
theme: str = "light"
분기형
"커스텀 예외 계층을 미리 만든다"
✗ 부풀린 코드
class AppError(Exception): pass
class ValidationError(AppError): pass
class NotFoundError(AppError): pass
# 아무도 종류로 분기 안 함
✓ 표준으로
raise ValueError("이메일 형식이 올바르지 않습니다")
분기형
"싱글톤 패턴을 구현한다"
✗ 부풀린 코드
class DB:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super().__new__(cls)
return cls._instance
✓ 표준으로
# db.py: 모듈이 이미 싱글톤
connection = connect() # import 하면 하나만 존재
"이거 캐싱 기능 하나 만들어줘"라고 하면 AI는 딕셔너리에 키를 넣고 꺼내는 캐시 클래스를 짓는다. 그런데 파이썬 표준에는 functools.cache 한 줄이 이미 있다. 우리가 ponytail을 재현하며 실측한 게 이거다. 게으르라고 시키자 같은 기능이 27줄에서 17줄로 줄었다.
이 사전은 그 실측을 제품으로 만든 것이다. 부풀기 쉬운 지점을 증상으로 짚는다. "캐시 클래스 만들어줘", "설정 관리 시스템 만들어줘", "플러그인 로더 만들어줘" 같은 말이 입구다. 각 항목에 무엇을 과하게 만들려는지(범인), 표준으로 되돌리는 처방, 그대로 복사해 시키는 요청 문장, 그리고 부풀린 코드와 표준 코드를 나란히 붙였다.
즉방형과 분기형: 추상화를 무조건 미워하지 않는다
이 사전의 규율은 하나다. 추상화 자체가 나쁜 게 아니라, 안 시킨·지금 안 쓰는 추상화가 부채다. 그래서 항목을 둘로 나눈다.
즉방형 9개: 표준에 정답이 있다. 캐싱→functools.cache, 중복제거→dict.fromkeys, 개수 세기→Counter. 바로 되돌린다
분기형 6개: 추상화가 때로 정당하다. 설정 클래스, 커스텀 예외, 싱글톤, 미들웨어, 플러그인 로더. 여기서는 절대 무조건 "만들지 마"라고 하지 않는다: 갈림길 질문으로 지금이 어느 상황인지 진단하고, 표준으로 될 상황이면 되돌리되 추상화가 정당한 상황이면 그렇다고 인정한다
설정값 3개엔 dataclass 하나면 되지만, 환경별로 동작이 갈리면 계층이 정당하다. 그 경계를 판단하는 게 분기형이다.
재현 실측이 근거다
항목의 감소 수치는 지어낸 게 아니라 재현 실험에서 나왔다. 같은 주문(캐싱·재시도·중복제거)을 스킬 없이/게으름 규율 장착으로 격리 실행해 줄 수를 쟀다. 캐싱 27→17(-37%), 재시도 47→33(-30%), 중복제거 12→1. before/after 코드도 그 실측 산출물이다.
쓰는 법 세 가지
사람이 찾기: 아래 갤러리에서 만들려는 것을 찾아 요청 문장을 복사한다
Claude Code: 설치하면 AI가 "X 만들어줘"를 받을 때 표준으로 되는지 먼저 점검한다 (분기형 규율 포함)
다른 AI: llms.txt 한 줄이면 어떤 AI든 이 사전을 통째로 읽는다. giting.kr/skills/codelazy/llms.txt
계보를 밝힌다
이 사전은 ponytail(별 136,406, MIT)의 "제일 게으른 시니어처럼" 정신에서 왔다. 그대로 옮긴 게 아니라, 철학 사다리 대신 우리 증상 사전 포맷(증상→표준 한 줄→요청 문장→실측 before/after→확인법)으로 재구현했다. ponytail 검수 리포트는 여기.