一键导入
issue-impl
GitHub 이슈와 계획서 댓글을 기반으로 TDD 워크플로우로 구현을 수행하는 스킬입니다. main에서 새 워크트리와 브랜치를 생성하고, 진행 상황을 이슈 댓글로 업데이트합니다. 이 스킬은 "/issue-impl", "/issue-impl
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
GitHub 이슈와 계획서 댓글을 기반으로 TDD 워크플로우로 구현을 수행하는 스킬입니다. main에서 새 워크트리와 브랜치를 생성하고, 진행 상황을 이슈 댓글로 업데이트합니다. 이 스킬은 "/issue-impl", "/issue-impl
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | issue-impl |
| description | GitHub 이슈와 계획서 댓글을 기반으로 TDD 워크플로우로 구현을 수행하는 스킬입니다. main에서 새 워크트리와 브랜치를 생성하고, 진행 상황을 이슈 댓글로 업데이트합니다. 이 스킬은 "/issue-impl", "/issue-impl |
GitHub 이슈와 계획서 댓글을 기반으로 TDD 워크플로우로 Phase-by-Phase 구현을 수행한다. main에서 새 워크트리와 브랜치를 생성하고, 진행 상황을 이슈 댓글로 업데이트한다.
이 스킬은 완전 자동 모드로 동작한다. 다음 행위에 대해 사용자 확인을 묻지 않고 즉시 실행한다:
사용자에게 질문하는 경우는 오직:
이슈 번호를 다음 우선순위로 결정한다:
/issue-impl #123 → #123issue/123-feature-name → #123../worktrees/issue/123-feature-name → #123CRITICAL: 구현 시작 전 반드시 프로젝트 컨텍스트를 로드한다.
새 테스트 작성 전 반드시 확인:
@Valid/입력 검증(400)인가? → Controller 단위 테스트 (standaloneSetup)@PreAuthorize 권한 검증(403)인가? → ArchUnit 정적 검사 (E2E 금지)⚠️
SecurityE2ESupport(Track B) 상속은 금지한다.@PreAuthorize검증은 ArchUnit으로 대체한다 (#1339).
# 이슈 정보 조회
gh issue view {issue-number} -R invigoworks/bitda-back --json title,body,labels,comments
이슈 댓글에서 ## 📋 구현 계획서로 시작하는 계획서를 찾아 파싱한다.
계획서가 없는 경우: 사용자에게 /issue-plan #{issue-number} 실행을 안내한다.
이슈 번호와 제목에서 브랜치 이름을 생성한다.
네이밍 규칙:
Issue #123: 사용자 로그인 기능 구현
└─────────┬────────────┘
↓
Branch: issue/123-user-login
Worktree: ../worktrees/issue/123-user-login
Procedure:
(CRITICAL) main 브랜치 최신화:
git fetch origin main
git checkout main
git pull origin main
⚠️ 이 단계를 건너뛰면 최신 코드 없이 작업하게 되어 충돌 및 Out of Order 문제 발생
이슈 제목에서 슬러그 생성 (한글 → 영문 변환 또는 핵심 키워드 추출)
브랜치 이름 결정: issue/{number}-{slug}
기존 워크트리/브랜치 확인 (Resume 시나리오):
git worktree list
git branch --list "issue/{number}-*"
신규 생성:
git worktree add -b issue/{number}-{slug} ../worktrees/issue/{number}-{slug} main
이미 존재 시:
cd ../worktrees/issue/{number}-{slug}
git fetch origin main
git rebase origin/main
이후 모든 파일 작업은 워크트리 경로에서 수행
계획서의 Phase를 순차적으로 실행한다.
사용자에게 현재 Phase 정보를 알린다.
🔴 RED Tasks: 테스트 먼저 작성
🟢 GREEN Tasks: 최소 구현
🔵 REFACTOR Tasks: 리팩토링
효율성 원칙: Phase별 검증은 해당 Phase에서 수정한 모듈 단위로 테스트한다. Gradle Build Cache가 변경되지 않은 태스크를 자동 스킵하므로, 모듈 단위 실행으로도 충분히 빠르다.
수정된 모듈 테스트 실행:
# 수정된 모듈의 테스트 실행 (예시)
./gradlew :modules:application:core:test
# ktlintCheck는 전체 실행 (빠름)
./gradlew ktlintCheck
테스트 범위 결정 기준:
./gradlew classes testClasses로 빠르게 확인./gradlew build에서 의존 모듈 포함 전체 regression 검증| Check | Result |
|---|---|
| Compile | ✅ / ❌ |
| ktlintCheck | ✅ / ❌ |
| Phase Tests | ✅ / ❌ (N passed, M failed) |
각 Phase 완료 시 이슈에 진행 상황 댓글을 추가한다:
gh issue comment {issue-number} --body "{진행 상황}" -R invigoworks/bitda-back
진행 상황 댓글 형식:
## ✅ Phase 1 완료
**완료 시간**: YYYY-MM-DD HH:MM
**Quality Gate**: ✅ All Passed
### 완료된 작업
- [x] `UserService.kt` 생성
- [x] `UserServiceTest.kt` 테스트 추가
### 다음 Phase
Phase 2: Core Feature 진행 중...
문제 발생 시 댓글 형식:
## ⚠️ Phase 2 진행 중 문제 발생
**발생 시간**: YYYY-MM-DD HH:MM
### 문제 내용
{문제 설명}
### 시도한 해결 방법
1. {시도 1}
2. {시도 2}
### 현재 상태
{블로킹 여부, 다음 조치 등}
Quality gate 통과 시:
Quality gate 실패 시:
ktlintFormat)모든 Phase 완료 후:
전체 검증 (MANDATORY)
./gradlew build
⚠️
clean없이 실행하여 Gradle Build Cache + Incremental Compilation을 활용한다. 변경되지 않은 모듈은 UP-TO-DATE로 스킵되어 빌드 시간이 대폭 단축된다. Phase별 incremental 테스트에서 놓친 regression은 의존성 그래프를 통해 자동 감지된다.
계획서 댓글의 체크박스 업데이트 (편집 가능한 경우)
완료 댓글 등록:
## 🎉 구현 완료
**완료 시간**: YYYY-MM-DD HH:MM
**브랜치**: `issue/{number}-{slug}`
### 완료된 Phase
- [x] Phase 1: Foundation
- [x] Phase 2: Core Feature
- [x] Phase 3: Integration
### Quality Gate 최종 결과 (Clean Build)
- `./gradlew build`: ✅
- Tests: ✅ (N passed)
- ktlintCheck: ✅
### 다음 단계
- `/issue-pr #{issue-number}` 로 PR 생성
사용자에게 다음 단계 안내
워크트리와 브랜치가 이미 존재하는 경우:
git worktree listcd ../worktrees/issue/{number}-{slug}
git fetch origin main
git rebase origin/main
⚠️ 충돌 발생 시 해결 후
git rebase --continue
| 시나리오 | 조치 |
|---|---|
| Build 실패 | 에러 출력, 수정 시도, 재실행 |
| Test 실패 | 실패 테스트 상세 표시, 수정 구현 |
| ktlintCheck 실패 | ./gradlew ktlintFormat 자동 실행, 재검증 |
| 워크트리 충돌 | 재사용 또는 재생성 사용자 선택 |
| 계획서 없음 | /issue-plan 실행 안내 |
internal 가시성Instant, DB 컬럼은 TIMESTAMPTZ# main 브랜치 최신화 (작업 시작 전 필수)
git fetch origin main
git checkout main
git pull origin main
# 기존 브랜치에서 main 변경사항 rebase (재개 시)
git fetch origin main
git rebase origin/main
# 이슈 조회 (댓글 포함)
gh issue view {number} -R owner/repo --json title,body,labels,comments
# 이슈에 댓글 추가
gh issue comment {number} --body "댓글 내용" -R owner/repo
# 워크트리 목록
git worktree list
# 워크트리 생성
git worktree add -b {branch} {path} main
# 워크트리 제거
git worktree remove {path}
jh_kim dev 계정(dev Keycloak)으로 E2E API 테스트를 수행하는 스킬입니다. 로컬 main 빌드 API + dev DB + dev Keycloak PKCE 토큰 조합으로, dev API 서버에 아직 배포되지 않은 머지 코드를 실데이터 환경에서 검증할 때 사용합니다. "/e2e-test-dev", "dev 계정으로 E2E", "jh_kim으로 API 테스트", "dev DB로 E2E 테스트" 등을 요청할 때 사용됩니다. (로컬 Docker Keycloak 기반 테스트는 e2e-test 스킬 사용)
plan-master(기획용 FE 코드 + docs/specs 기획서)와 bitda-back(구현된 BE 코드) 사이의 갭을 분석하여 누락된 기능·API·정책을 GitHub 이슈로 자동 생성하는 스킬입니다. 기획서→이슈 전달 과정에서 발생하는 누락을 방지하기 위해 FE 코드를 1차 소스로 사용합니다. "/gap-analyze", "/gap-analyze BOM", "/gap-analyze production" 등을 요청할 때 사용됩니다.
plan-master FE 코드만을 유일한 1차 소스로(기획서 .md 배제) 멀티팀 에이전트가 BE가 보장해야 할 비즈니스 로직과 FE 작업에 필요한 API 항목을 도출하고, 총괄 에이전트가 bitda-back BE 구현과 실측 대조하여 누락 갭을 발굴, 직렬 verifier로 확정한 뒤 GitHub 이슈로 생성하는 스킬입니다. gap-analyze의 변종으로, 기획서가 구현완료를 선언해 갭을 가리는 오염을 제거하기 위해 기획서를 의도적으로 보지 않습니다. /gap-fe-code 생산현황, 기획서 빼고 FE 코드로 갭 분석, FE 코드만 보고 누락 API 이슈 만들어 등을 요청할 때 사용됩니다.
실제 API 서버(8080 포트)를 실행하고 Keycloak OAuth 인증을 통해 E2E API 테스트를 수행하는 스킬입니다. 테스트 결과와 요청/응답을 docs/e2e-test/{test}/ 디렉토리에 markdown 형식으로 기록합니다. 이 스킬은 다음 상황에서 사용됩니다: - 특정 API의 실제 동작을 테스트하고 싶을 때 - API 변경 후 실제 환경에서 검증이 필요할 때 - 사용자가 "E2E 테스트", "API 테스트", "/e2e-test" 등을 요청할 때
Creates phase-based feature plans with quality gates and incremental delivery structure. Use when planning features, organizing work, breaking down tasks, creating roadmaps, or structuring development strategy. Keywords: plan, planning, phases, breakdown, strategy, roadmap, organize, structure, outline.
Swagger 스냅샷(api-docs.json)과 코드베이스를 기반으로 Notion API 맵핑 DB에 API 문서를 등록하고 상세 페이지를 작성하는 스킬입니다. (notion-api.py REST wrapper 사용 버전) 이 스킬은 다음 상황에서 사용됩니다: - 특정 API를 Notion에 문서화할 때 (MCP 비활성화 환경) - mcp__notion__* 도구 deprecated/불안정한 경우 - 사용자가 "api 노션 등록 (api 모드)", "/api-to-notion-api" 등을 요청할 때