api-design-principles
작성자 wshobsonapi-design-principles는 체크리스트, 참고 문서, FastAPI 템플릿을 바탕으로 REST 및 GraphQL API를 설계하고 검토할 수 있게 도와주는 스킬입니다. 구현에 들어가기 전에 리소스 네이밍, HTTP 시맨틱, 페이지네이션, 오류 처리, 버저닝, 스키마 구조를 더 탄탄하게 다듬는 데 유용합니다.
이 스킬은 82/100점을 받아, 재사용 가능한 API 설계 가이드가 필요한 디렉터리 사용자에게 충분히 추천할 만한 항목입니다. 저장소에는 명확한 사용 트리거와 충실한 설계 콘텐츠가 갖춰져 있고, 체크리스트, REST 템플릿, 분리된 REST/GraphQL 참고 문서 같은 실무형 산출물도 포함되어 있습니다. 그래서 워크플로 자체는 단계별 실행형이라기보다 자문형에 가깝지만, 일반적인 프롬프트보다 훨씬 적은 추측으로 에이전트가 활용하기 좋습니다.
- 트리거 적합성이 높습니다. 설명과 "When to Use" 섹션에서 REST 또는 GraphQL API의 설계, 리뷰, 리팩터링, 표준화까지 적용 범위를 분명하게 제시합니다.
- 실무 지원이 좋습니다. 구체적인 API 설계 체크리스트와 함께 페이지네이션, 필터링, 오류 처리 패턴을 담은 FastAPI REST 템플릿을 제공합니다.
- 점진적 정보 공개 구성이 유용합니다. 핵심 스킬 가이드와 더 깊이 있는 REST 및 GraphQL 참고 문서를 분리해 두어, 필요할 때 세부 정보를 꺼내 쓰기 쉽습니다.
- 실행 흐름은 다소 느슨합니다. 유의미한 가이드는 충분하지만, 대안 사이에서 무엇을 선택할지 판단하는 명시적 단계나 의사결정 규칙은 제한적입니다.
- 설치·도입 관점의 안내는 약한 편입니다. install command나 README 스타일의 빠른 시작 안내가 없어, 사용자가 자신의 워크플로에 어떻게 녹일지 스스로 판단해야 합니다.
api-design-principles 스킬 개요
api-design-principles로 할 수 있는 일
api-design-principles 스킬은 REST 및 GraphQL API를 위한 설계 리뷰·초안 작성 보조 도구입니다. 대략적인 제품 요구사항을 더 정돈된 API 형태로 바꿔야 할 때, 구현 전에 기존 스펙을 검토해야 할 때, 혹은 팀 차원에서 엔드포인트와 스키마 설계 방식을 표준화하고 싶을 때 특히 유용합니다.
잘 맞는 사용자와 팀
다음에 해당한다면 api-design-principles를 쓰는 것이 좋습니다.
- 새로운 공개 API 또는 내부 API를 설계하고 있다
- 엔드포인트나 스키마 제안을 일관성 있게 리뷰하고 싶다
- REST와 GraphQL 패턴 중 무엇을 택할지 고민 중이다
- 코드 작성 전에 피할 수 있는 설계 실수를 미리 잡고 싶다
- 팀용으로 가벼운 API 설계 표준을 만들고 싶다
특히 백엔드 엔지니어, 테크 리드, 플랫폼 팀, 그리고 전체 구현보다 API 계약안을 제안해야 하는 AI 에이전트에 잘 맞습니다.
이 스킬을 설치할 가치가 있는 이유
핵심 가치는 새로움이 아니라 구조화에 있습니다. 이 스킬은 실무적인 설계 가이드, 리뷰 체크리스트, REST 예시, GraphQL 스키마 패턴을 하나의 재사용 가능한 프롬프트 워크플로로 묶어 제공합니다. 일반적인 “API 하나 설계해줘” 프롬프트와 비교하면, api-design-principles는 다음 항목에서 더 나은 기본값을 제공합니다.
- 리소스 네이밍과 URL 구조
- HTTP 메서드 의미와 상태 코드
- 페이지네이션, 필터링, 버저닝
- 일관된 에러 응답 형태
- GraphQL 스키마 구성, nullability, input 모델링
하지 않는 일
이 스킬은 API gateway, code generator, 또는 완전한 governance framework가 아닙니다. 설계 품질과 리뷰 범위는 좋아지지만, 인증, 도메인 제약, 컴플라이언스, 런타임 운영에 대한 규칙은 여전히 직접 정해야 합니다. 구현용 스캐폴딩이 필요하다면 포함된 FastAPI template가 REST에 한해 도움을 주지만, 이 스킬의 강점은 엔드투엔드 구현보다 설계 원칙 쪽에 더 가깝습니다.
api-design-principles 스킬 사용 방법
api-design-principles 스킬 설치
wshobson/agents 저장소에서 스킬을 설치하세요.
npx skills add https://github.com/wshobson/agents --skill api-design-principles
에이전트 환경이 skill discovery를 지원한다면, 작업이 비즈니스 로직 구현보다 API 형태 설계, 계약 리뷰, 패러다임 선택에 관한 것일 때 api-design-principles를 호출하면 됩니다.
먼저 읽어야 할 파일
빠르게 익히려면 다음 순서로 파일을 읽는 것이 좋습니다.
SKILL.md— 범위와 내장 워크플로 확인assets/api-design-checklist.md— 리뷰 기준 확인references/rest-best-practices.md— 구체적인 REST 규약 확인references/graphql-schema-design.md— 스키마 패턴 확인assets/rest-api-template.py— REST 구현 예시도 보고 싶다면 확인
이 순서가 중요한 이유는 실제 리뷰 작업에서 가장 신호가 강한 산출물이 체크리스트이고, reference 파일들은 에이전트가 출력에 재활용할 수 있는 예시를 제공하기 때문입니다.
스킬이 필요로 하는 핵심 입력 파악하기
api-design-principles skill은 다음 정보를 줄수록 더 잘 동작합니다.
- 도메인 객체: users, orders, invoices, projects
- 주요 사용자 액션: create, list, update, search, approve
- 클라이언트 유형: public third-party, internal web app, mobile, partner integration
- API 스타일 제약: REST, GraphQL, 또는 “help me choose”
- 운영 요구사항: pagination, filtering, versioning, rate limits, webhooks, real-time
- 호환성 제약: existing endpoints, legacy payloads, migration limits
이 정보가 없으면 에이전트는 겉보기엔 깔끔하지만 실제 사용 패턴을 놓치는, 너무 일반적인 엔드포인트나 얕은 스키마를 내놓는 경우가 많습니다.
애매한 요청을 강한 프롬프트로 바꾸기
약한 요청:
- “Design an API for tasks.”
더 나은 요청:
- “Use
api-design-principlesto design a REST API for a task management product. Main resources: workspaces, projects, tasks, comments. Clients: web app and mobile app. Required features: pagination, filtering by status and assignee, partial updates, audit-friendly timestamps, stable error responses, and versioning. Avoid deep nesting. Return endpoint list, request and response examples, status codes, and design rationale.”
이 요청이 더 좋은 이유:
- 리소스가 명확하다
- 클라이언트 맥락이 들어 있다
- 반드시 필요한 동작이 분명하다
- 스킬이 최적화할 수 있는 제약 조건이 포함되어 있다
REST 설계 리뷰에 api-design-principles 활용하기
REST 작업에서는 다음 항목을 평가하도록 요청해 보세요.
- resource nouns와 action verbs 사용 구분
- 얕은 중첩인지, 과도하게 깊은 중첩인지
GET,POST,PUT,PATCH,DELETE메서드 사용의 적절성- 상태 코드 선택
- filtering, sorting, search를 위한 query parameter 설계
- 페이지네이션 패턴 선택
- 버저닝 및 deprecation 전략
- 에러 응답 일관성
실무적으로 유용한 프롬프트 예시:
- “Run
api-design-principlesagainst this draft endpoint list and flag naming, method semantics, pagination, and error-handling issues. Rewrite only the parts that violate established conventions.”
이렇게 하면 전체를 갈아엎는 대신, 출력이 리뷰 중심으로 유지되고 필요한 부분만 교정하는 데 집중할 수 있습니다.
GraphQL 스키마 설계에 api-design-principles 활용하기
GraphQL에서는 단순히 타입 목록을 뽑기보다, 스키마 구조 결정을 요청할 때 이 스킬의 가치가 더 잘 드러납니다. 좋은 요청 예시는 다음과 같습니다.
- 모듈형 스키마 구성
- nullability 결정
- input 및 payload 타입 설계
- query와 mutation 네이밍
- interface와 union 활용
- connection-style pagination
- 자주 쓰는 클라이언트 질의를 고려한 필드 설계
강한 프롬프트 예시:
- “Use
api-design-principlesto design a GraphQL schema for a B2B support platform. IncludeUser,Ticket, andCommenttypes, cursor pagination, clear mutation inputs, and sensible nullability. Explain tradeoffs where fields should remain nullable.”
api-design-principles로 REST와 GraphQL 중 선택하기
아직 결정을 못 했다면, 제품 상황에 맞춘 비교 추천을 요청하세요.
- 클라이언트별 요청 다양성
- 부분 데이터 선택 필요성
- 캐싱 및 CDN 친화성
- 팀의 학습 곡선
- 내부 개발자 대상인지 외부 개발자 대상인지
유용한 프롬프트 예시:
- “Apply
api-design-principles for API Developmentto compare REST and GraphQL for an internal analytics platform used by web dashboards and automation scripts. Recommend one approach and include the operational tradeoffs.”
구현 전에 체크리스트를 게이트로 사용하기
포함된 assets/api-design-checklist.md는 일관된 리뷰 프로세스를 원하는 팀에 가장 유용한 산출물입니다. 구현 전 게이트처럼 활용하세요.
- 모든 리소스와 작업 검토
- 모든 collection에 페이지네이션이 있는지 확인
- 버저닝 방식을 명시적으로 선택
- 에러 및 상태 코드 동작 확인
- search, sort, sparse-field 패턴 누락 여부 확인
바로 이 지점에서 이 스킬의 의사결정 가치가 커집니다. 구현이 굳어지기 전에 계약 수준의 결함을 먼저 잡아낼 수 있기 때문입니다.
REST 템플릿은 신중하게 재사용하기
assets/rest-api-template.py는 유용한 reference이지만, 범용 프로덕션 스타터로 받아들이면 안 됩니다. 다음과 같은 패턴을 보여주는 예시라고 보는 편이 맞습니다.
- FastAPI 구조
- pagination과 validation
- enum 사용
- middleware 배치
- 일관된 응답 처리
동시에 permissive CORS, trusted host configuration 같은 프로덕션 수준의 명백한 TODO도 포함되어 있습니다. 즉, 보안 기본값이 갖춰진 drop-in 템플릿이 아니라, 설계 선택이 코드로 어떻게 연결되는지 확인하는 용도로 써야 합니다.
더 나은 출력을 위한 일반적인 워크플로
신뢰할 만한 api-design-principles usage 워크플로는 다음과 같습니다.
- 제품 목표와 사용자 역할을 설명한다
- 리소스와 핵심 작업을 나열한다
- REST, GraphQL을 선택하거나 스킬에게 비교를 요청한다
- 1차 계약안을 요청한다
- 체크리스트 범주로 리뷰 패스를 돌린다
- pagination, errors, versioning, nullability 같은 엣지 케이스를 다듬는다
- 그다음에야 구현으로 넘어간다
이 순서를 따르면 네이밍과 계약 의미가 더 이르게 안정화되어, 뒤늦은 수정으로 인한 churn을 줄일 수 있습니다.
api-design-principles 스킬 FAQ
api-design-principles는 입문자에게도 좋은가요?
네, 기본적인 HTTP 또는 GraphQL 개념을 이미 알고 있다면 충분히 도움이 됩니다. 이 스킬은 읽기 쉽고 예시 중심이지만, 백엔드 개발을 처음부터 배우는 용도라기보다 설계 결정을 내리는 상황을 전제로 합니다. 입문자라면 완전히 새 API를 백지에서 만드는 것보다, 초안을 리뷰하는 용도로 쓸 때 더 큰 효과를 볼 수 있습니다.
api-design-principles와 일반적인 AI 프롬프트의 차이는 무엇인가요?
일반 프롬프트도 그럴듯한 엔드포인트를 만들 수는 있지만, api-design-principles는 훨씬 더 촘촘한 리뷰 프레임을 제공합니다. 일관된 리소스 모델링, 메서드 의미, 상태 코드, 페이지네이션, 스키마 구조 쪽으로 방향을 잡아주기 때문에, 보통 첫 초안 이후 정리해야 할 일이 줄어듭니다.
api-design-principles가 잘 맞지 않는 경우는 언제인가요?
다음이 주된 목적이라면 이 스킬만으로는 부족합니다.
- 여러 프레임워크에 걸친 코드 생성
- REST나 GraphQL 밖의 프로토콜별 가이드
- 조직 특화 컴플라이언스 요구사항
- 깊이 있는 인증 설계 또는 event-driven architecture 설계
이런 경우에도 api-design-principles guide 내용이 보조 자료로는 도움이 될 수 있지만, 유일한 판단 기준으로 삼아서는 안 됩니다.
이 스킬은 신규 설계뿐 아니라 기존 API에도 도움이 되나요?
그렇습니다. 가장 좋은 활용처 중 하나가 기존 초안 리뷰나 레거시 정리입니다. 현재 엔드포인트나 스키마 일부를 입력으로 주고, 설계 이슈의 우선순위 목록, 하위 호환성 우려, 리스크가 낮은 개선안까지 정리해 달라고 요청해 보세요.
이 스킬은 REST와 GraphQL 중 하나에 더 치우쳐 있나요?
둘 다 지원하지만, 구현 깊이까지 동일하게 다루지는 않습니다. REST 가이드는 체크리스트와 코드 템플릿으로 더 탄탄하게 보강되어 있고, GraphQL 가이드는 런타임 셋업보다는 스키마 패턴과 설계 예시에 더 강합니다. 실행 가능한 GraphQL scaffolding이 필요하다면 별도 도구를 함께 써야 합니다.
api-design-principles 스킬을 더 잘 활용하는 방법
추상 명사보다 실제 도메인 맥락을 제공하기
api-design-principles 출력 품질을 가장 빨리 높이는 방법은 실제 엔터티와 워크플로를 설명하는 것입니다. “Users manage projects and invoices”는 “build a business API”보다 훨씬 낫습니다. 도메인이 구체적일수록 리소스 경계, 중첩 방식, mutation 형태를 더 정확하게 판단할 수 있습니다.
클라이언트가 가장 자주 하는 일을 구체적으로 알려주기
API 설계는 실제 사용 패턴을 따라가야 합니다. 스킬에 다음을 알려주세요.
- 가장 중요한 read 경로
- 가장 흔한 write 작업
- 어떤 필터가 중요한지
- 클라이언트가 bulk operation을 필요로 하는지
- 모바일 대역폭이나 third-party integration이 중요한지
이 정보는 결과를 실질적으로 바꿉니다. 예를 들어, 리스트 필터링과 sparse retrieval가 많은 경우의 REST 설계 방향은, 대시보드처럼 질의 형태가 매우 가변적인 경우와 다르며 후자는 GraphQL이 더 유리할 수 있습니다.
초안만이 아니라 트레이드오프까지 요청하기
약한 출력은 “an API design”만 달라고 하고 이유를 묻지 않을 때 많이 나옵니다. 다음과 같은 프롬프트로 결과를 개선해 보세요.
- “Propose two designs and compare tradeoffs.”
- “Flag any endpoint that violates REST semantics.”
- “Explain why fields are nullable or non-null in GraphQL.”
- “Show where versioning will hurt us later.”
이렇게 해야 그럴듯하지만 깨지기 쉬운 계약안을 내놓는 데서 그치지 않고, 스킬이 판단 근거를 드러내게 됩니다.
체크리스트 항목별로 수정 지시하기
첫 출력이 너무 일반적이라면, 섹션별로 나눠 반복 요청하세요.
- “Revise only resource naming and URL hierarchy.”
- “Now review status codes and error format.”
- “Now add pagination, filtering, and sorting rules.”
- “Now review versioning and deprecation.”
체크리스트 파일이 강력한 이유는 품질을 막연한 “더 좋게 만들어줘”가 아니라, 실제로 점검 가능한 세부 차원으로 바꿔주기 때문입니다.
흔한 실패 패턴을 주의하기
api-design-principles install은 성공했지만 출력이 약하게 나오는 대표적인 원인은 다음과 같습니다.
- 도메인 제약이 빠져 있다
- 대상 클라이언트 맥락이 없다
- REST와 GraphQL을 함께 요청하면서도 결정 목표가 없다
- 기존 API에 대한 호환성 요구사항이 없다
- 기대하는 payload 형태 예시가 없다
이런 상황에서는 일반적인 리소스 설계, 어색한 중첩, 모호한 에러 처리, 얕은 스키마 설계로 흐르기 쉽습니다.
결과를 실제 제약 조건에 맞춰 검증하기
api-design-principles for API Development가 제안한 내용을 채택하기 전에 다음을 확인하세요.
- 현재 auth 모델로 이 작업들을 지원할 수 있는가?
- 클라이언트가 모든 곳에서 stable IDs와 timestamps를 필요로 하는가?
- collection은 기본적으로 페이지네이션되는가?
- 에러 형태가 플랫폼 규약과 맞는가?
- 버저닝 방식이 현재 릴리스 프로세스와 맞는가?
- nullable GraphQL fields가 의도된 것인가?
이 스킬은 설계 품질을 높여주지만, 최종 계약에 대한 책임은 여전히 팀에 있습니다.
가벼운 리뷰 표준으로 팀 도입을 강화하기
지속적인 가치를 원한다면 이 스킬을 팀의 작업 방식으로 바꾸는 것이 좋습니다.
- API spec용 pull request에서 체크리스트를 사용한다
- 버저닝과 페이지네이션 선택에 대한 근거를 요구한다
- 리소스와 mutation에 대한 하나의 네이밍 규칙을 문서화한다
- 새 패턴을 도입할 때는 reference 파일 하나를 함께 리뷰한다
이렇게 해야 api-design-principles usage가 특정 엔지니어만 아는 일회성 프롬프트가 아니라, 반복 가능한 팀 실천 방식으로 자리잡습니다.
