بنقرة واحدة
test-driven-development
새 도구 개발 또는 버그 수정 시 실패하는 테스트를 먼저 작성하고, 구현 후 통과를 확인. superpowers의 test-driven-development 기반.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
새 도구 개발 또는 버그 수정 시 실패하는 테스트를 먼저 작성하고, 구현 후 통과를 확인. superpowers의 test-driven-development 기반.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
BM25 Okapi 알고리즘을 사용하여 법령/판례 API 결과를 관련도 순으로 재랭킹합니다. search_enhance_tools.py와 bm25_search.py 구현 시 참조.
법령/판례 캐시 데이터 관리 시 사용. 캐시 저장/로드, 만료 처리, 지식 그래프 동기화. 성능 최적화 및 API 호출 최소화를 위해 캐싱 구현 시 참조.
법제처 OPEN API를 MCP 프로젝트에 통합할 때 사용. lawSearch.do와 lawService.do 엔드포인트, target 파라미터로 기능 구분. 새로운 API 엔드포인트 통합 시 참조.
도구 실패/API 오류 발생 시 4단계 근본 원인 분석 후 수정. 증상 수정이 아닌 원인 수정. superpowers의 systematic-debugging 기반.
도구 개발/개선 완료 선언 전 반드시 실제 API 호출 테스트를 수행하고 증거를 기록할 때 사용. superpowers의 verification-before-completion 기반.
Tool에서 API 호출 시 컨텍스트 처리. streamable-http와 stdio transport 모두 지원. with_context() 패턴으로 전역 컨텍스트 fallback 자동 처리.
| name | test-driven-development |
| description | 새 도구 개발 또는 버그 수정 시 실패하는 테스트를 먼저 작성하고, 구현 후 통과를 확인. superpowers의 test-driven-development 기반. |
원본: superpowers/test-driven-development MCP 한국 법령 프로젝트에 맞게 커스터마이징
실패하는 테스트 없이 프로덕션 코드를 작성하지 않는다.
새 도구 개발 시:
# tests/test_api_regression.py에 추가
def test_new_tool_returns_results(self, legislation_client):
result = legislation_client.search(
target="NEW_TARGET",
params={"query": "테스트", "type": "JSON", "display": 5}
)
assert result is not None
assert not result.get("error")
버그 수정 시:
# 버그를 재현하는 테스트
def test_tool_handles_empty_query(self, legislation_client):
"""빈 검색어에 대한 에러 처리 확인"""
result = legislation_client.search(
target="law",
params={"query": "", "type": "JSON"}
)
# 빈 검색어에도 적절한 응답 반환
assert result is not None
.venv/bin/python -m pytest tests/test_api_regression.py::TestAPIRegression::test_new_tool -v
반드시 확인:
도구를 구현하여 테스트를 통과시킴:
@mcp.tool(name="new_tool", description="...")
def new_tool(query: Annotated[str, "..."]) -> TextContent:
result = with_context(
None, "new_tool",
lambda context: context.law_api.search(
target="NEW_TARGET", query=query
)
)
return TextContent(type="text", text=str(result))
# 새 테스트 통과 확인
.venv/bin/python -m pytest tests/test_api_regression.py::TestAPIRegression::test_new_tool -v
# 전체 테스트 회귀 확인
.venv/bin/python -m pytest tests/ -v --tb=short
테스트가 통과한 후에만:
정리 후에도 테스트가 통과하는지 재확인.
type: "development" 작업 선택tests/test_api_regression.py에 추가