Loading...
Loading...
Ping-pong TDD 세션의 첫 번째 단계. TrackerBoot MCP에서 스토리를 가져오거나 직접 붙여넣은 스토리 내용을 받아들이고, 프로젝트 스택과 컨벤션을 감지하며, 협력하여 태스크 분해를 계획하고, /tdd-task와 /tdd-commit이 사용할 .tdd-session.md 파일을 작성합니다.
npx skill4agent add junhyunny/skills tdd-plan/tdd-plan <project-id> <story-id>
/tdd-plan <project-id> "full story content"project-idstory-id12345678#12345678"full story content"project-idstory-idproject-id❌ TrackerBoot 프로젝트 ID가 필요합니다.
프로젝트 ID 없이 실행하면 권한이 있는 임의의 프로젝트에서 스토리를 조회할 수 있습니다.
사용법: /tdd-plan <project-id> <story-id>
/tdd-plan <project-id> "스토리 내용"
예시: /tdd-plan 99887766 12345678story-id❌ 스토리가 필요합니다.
TrackerBoot 스토리 ID를 제공하거나 스토리 내용을 붙여넣으세요.
사용법: /tdd-plan <project-id> <story-id>
/tdd-plan <project-id> "스토리 내용"project-idtracker-boot-mcp-tb_get_story{
"storyId": 12345678
}##1234567812345678namedescriptiontasks[]current_state"Could not fetch story [ID] from TrackerBoot.
Please check that the TrackerBoot MCP server is configured, then try again,
or paste the story content directly."## Story
**ID:** [id or "—"]
**Title:** [title]
**Description:**
[description]
**Acceptance Criteria:**
- [ ] [AC 1]
- [ ] [AC 2]
...
---
Does this look correct? Type "ok" to continue, or let me know what to fix.| 파일 존재 | 스택 |
|---|---|
의존성에 | TypeScript + React |
kotlin 플러그인이 있는 | Kotlin + Spring |
| Java + Spring |
| Java + Spring (Maven) |
| Python + FastAPI |
"vitest""jest""@playwright/test"playwright.config.*"cypress".agents/skills/tdd-plan/references/tech-stack-detection.mdtest/*.test.ts*Test.kttest_*.py@Nested## Project Conventions Detected
Files read: [file list]
- **Test location:** [co-located / test/ directory]
- **Test naming:** [pattern]
- **Test structure:** [describe/it / @Nested / class-based]
- **Assertions:** [expect().toEqual / assertThat / assert ==]
- **Mocks:** [vi.mock / vi.fn injection / mockk / MagicMock]
- **Source structure:** [feature-based / layer-based]
All new code will follow these patterns..agents/skills/tdd-plan/references/convention-detection.md---
## 🏓 Session State
| Field | Value |
|-------|-------|
| Story | [ID]: [title] |
| Stack | [stack] |
| Test FW | [test framework] |
| E2E FW | [e2e framework] |
| Conventions | [new project / existing — key patterns] |
| Phase | PLANNING |
---
## Task Plan (Draft)
### Task List
#### Task 1: [title]
- **Type:** unit | integration | e2e
- **The test will assert:** [one sentence]
- **Implementation scope:** [what code will be written]
- **Acceptance criteria link:** [which ACs]
- **Dependencies:** none
#### Task 2: [title]
...
#### Task [N] (E2E): [title]
- **Type:** e2e
- **The test will assert:** [full user flow]
- **Implementation scope:** E2E test only
- **Acceptance criteria link:** Full AC coverage check
- **Dependencies:** Task [N-1]
---
**Questions for clarification:**
1. [ambiguity or scope question]
---
Please review. You can add, remove, reorder, or adjust tasks.
Type **"ready"**, **"go"**, or **"approved"** when satisfied.readygoapprovedlooks good.tdd-sessions/| 상황 | 파일 이름 |
|---|---|
스토리 ID 사용 가능 (예: | |
| 스토리 ID 없음 (붙여넣은 내용) | |
user-profile-update.tdd-sessions/user-profile-update-2026-03-31.md.tdd-sessions/.gitignore.gitignore.tdd-sessions/.tdd-sessions.gitignore.tdd-sessions/.gitignore.tdd-sessions/.tdd-sessions/.gitignore.tdd-sessions/.gitignore.tdd-sessions/# TDD Session
## Meta
- **Story ID:** [id or "—"]
- **Story Title:** [title]
- **Stack:** [stack]
- **Test FW:** [framework]
- **E2E FW:** [framework]
- **Conventions:** [summary line]
## Tasks
| # | Title | Type | Status |
|---|-------|------|--------|
| 1 | [title] | unit | ⏳ pending |
| 2 | [title] | integration | ⏳ pending |
| 3 | [title] | e2e | ⏳ pending |
## Task Details
### Task 1: [title]
- **Type:** unit
- **The test will assert:** [assertion description]
- **Implementation scope:** [scope]
- **Acceptance criteria link:** [AC reference]
- **Dependencies:** none
- **Status:** ⏳ pending
### Task 2: [title]
...## ✅ Session Ready
`.tdd-sessions/[filename]` created with [N] tasks.
Run **/tdd-task** to start Task 1.