| name | aidlc-workspace-detection |
| description | Use when starting INCEPTION to detect whether the workspace is greenfield or brownfield and analyze existing code structure. |
| metadata | {"version":"0.6.0","author":"Jay","category":"ai-dlc-workflow","invoke_mode":"orchestrator-only","return_behavior":"stop-no-gate","output_path":"devflow-docs/inception/workspace.md","skill_nature":"amplification","lifecycle":"active"} |
aidlc-workspace-detection
Purpose
Analyze the current workspace to determine project type and context.
Execute
Step 0: ๊ธฐ์กด ๋ถ์ ํ์ธ (๋ธํ ๋ชจ๋)
devflow-docs/inception/workspace.md๊ฐ ์ด๋ฏธ ์กด์ฌํ๋์ง ํ์ธํ๋ค.
์กด์ฌํ์ง ์์ผ๋ฉด โ Step 1๋ก ์งํ (ํ์ค์บ)
์กด์ฌํ๋ฉด โ ๋ธํ ๋ถ์ ์ํ:
- ๊ธฐ์กด
workspace.md๋ฅผ ์ฝ์ด ์ด์ ๋ถ์ ๋ด์ฉ์ ํ๋ณดํ๋ค. ํ์ฑ ์คํจ ์ (๋นํ์ค ํ์, ์์ ๋ฑ) โ Step 1๋ก ์งํ (ํ์ค์บ์ผ๋ก ์ ํ)
- ๋ณ๊ฒฝ ๊ฐ์ง๋ฅผ ์ํํ๋ค:
- ๋งค๋ํ์คํธ ํ์ผ ๋ณ๊ฒฝ ์ฌ๋ถ:
package.json, go.mod, Cargo.toml, pyproject.toml, pom.xml ๋ฑ์ ์กด์ฌ/๋ถ์ฌ ๋ณํ ๋๋ ๋ด์ฉ ๋ณ๊ฒฝ
- Git ์ปค๋ฐ ๋ณํ:
git log --oneline -5๋ก ์ต๊ทผ ์ปค๋ฐ์ด ์ด์ ๋ถ์์ Recent Commits์ ๋ค๋ฅธ์ง ํ์ธ
- CLAUDE.md ๋ณ๊ฒฝ ์ฌ๋ถ: ๊ธฐ์ ์คํ ์น์
์ ๋ด์ฉ ๋ณํ ํ์ธ
- ๋ณ๊ฒฝ ํ์ :
- ๋ณ๊ฒฝ ์์: ๊ธฐ์กด ๋ด์ฉ ์ ์ง,
**Timestamp**๋ง ๊ฐฑ์ ํ์ฌ ์ ์ฅ. **Source** ํ๋์ ์ด์ ๋ถ์([์ด์ Timestamp ๊ฐ]) ๊ธฐ๋ฐ โ ๋ณ๊ฒฝ ์์ ๊ธฐ๋ก โ Step 3์ผ๋ก ์งํ
- ๋ณ๊ฒฝ ์์: ์๋ ๋งคํ์ ๋ฐ๋ผ ํด๋น ์น์
๋ง ์ฌ๋ถ์ํ์ฌ ๊ธฐ์กด ๋ด์ฉ์ ์
๋ฐ์ดํธ.
**Source** ํ๋์ ์ด์ ๋ถ์([์ด์ Timestamp ๊ฐ]) ๊ธฐ๋ฐ + ๋ธํ ์
๋ฐ์ดํธ ๊ธฐ๋ก โ Step 3์ผ๋ก ์งํ
๋ณ๊ฒฝ ์ ํ โ ์ฌ๋ถ์ ์น์
๋งคํ:
| ๋ณ๊ฒฝ ๊ฐ์ง ๋์ | ์ฌ๋ถ์ ์น์
|
|---|
| ๋งค๋ํ์คํธ ํ์ผ | Technology Stack, Key Dependencies |
| Git ์ปค๋ฐ | Git Activity (Recent Commits, Recent Focus) |
| CLAUDE.md ๊ธฐ์ ์คํ | Pre-specified Tech Stack |
Step 1: Scan workspace
Check for the following indicators:
Greenfield indicators:
- No source code files (
.py, .go, .ts, .js, .rs, .java, etc.)
- No
package.json, go.mod, Cargo.toml, pom.xml, pyproject.toml
- No existing test files
Brownfield indicators:
- Existing source code files present
- Build configuration files present
- Git history with multiple commits
- Existing tests
Step 2: Determine project type
| Result | Condition |
|---|
| Greenfield | No existing code found |
| Brownfield | Existing code found |
Step 2a: Brownfield ์ฝ๋๋ฒ ์ด์ค ๋ถ์
Brownfield์ผ ๋๋ง ์คํ. Greenfield๋ฉด ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋ด๋ค.
๋ ๊ฐ์ง๋ฅผ ์์งํ๋ค:
1) Technology Stack โ ๋งค๋ํ์คํธ ํ์ผ ํ์ฑ:
| ๋งค๋ํ์คํธ | ์ธ์ด/๋ฐํ์ |
|---|
package.json | Node.js โ dependencies์์ ์ฃผ์ ํ๋ ์์ํฌ ์๋ณ |
go.mod | Go โ ๋ชจ๋ ๊ฒฝ๋ก + ์ฃผ์ ์์กด์ฑ |
Cargo.toml | Rust โ [dependencies] ์น์
|
pyproject.toml / requirements.txt | Python โ ํจํค์ง + ๋ฒ์ |
pom.xml / build.gradle | Java โ ํ๋ ์์ํฌ (Spring ๋ฑ) |
์ถ๊ฐ๋ก ๋น๋ ๋๊ตฌ, ํ
์คํธ ํ๋ ์์ํฌ, ๋ฆฐํฐ ์ค์ ํ์ผ๋ ๊ธฐ๋กํ๋ค.
- ๋ณต์ ๋งค๋ํ์คํธ ์กด์ฌ ์: ๋ชจ๋ ๋์ด, ์ฃผ ์ธ์ด ํ๋จํ์ง ์์
- ๋ชจ๋
ธ๋ ํฌ ๊ตฌ์กฐ: 1๋จ๊ณ ๊น์ด ์ ์ฝ์ผ๋ก ํ์ ๋งค๋ํ์คํธ๋ ํ์ํ์ง ์์
2) Git Activity โ ์ต๊ทผ ํ๋ ๊ธฐ๋ฐ ํซ์คํ:
git log --oneline -20
git log --pretty=format: --name-only -20 | sort | uniq -c | sort -rn | head -10
์์ง ํญ๋ชฉ:
- ์ต๊ทผ ์ปค๋ฐ ๋ฉ์์ง ์์ฝ (์งํ ์ค์ธ ์์
ํ์
)
- ์ต๊ทผ ๋ณ๊ฒฝ์ด ์ง์ค๋ ๋๋ ํ ๋ฆฌ/ํ์ผ top 5 (ํซ์คํ)
- ๋ง์ง๋ง ์ปค๋ฐ ๋ ์ง (ํ๋ก์ ํธ ํ์ฑ ์ฌ๋ถ)
git ์ ์ฅ์๊ฐ ์๋๋ฉด ์ด ํญ๋ชฉ์ ์คํตํ๋ค.
3) Existing Documentation โ ๊ธฐ์กด ๋ฌธ์ ๊ฐ์ง:
์๋ ํ์ผ/๋๋ ํ ๋ฆฌ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ , ์กด์ฌํ๋ฉด ํต์ฌ ๋ด์ฉ 1~2์ค ์์ฝ:
| ๊ฐ์ง ๋์ | ์ค๋ช
|
|---|
README.md | ํ๋ก์ ํธ ์๊ฐ, ์ค์น/์คํ ๋ฐฉ๋ฒ |
CLAUDE.md | Claude Code ์ง์์ฌํญ |
CONTRIBUTING.md | ๊ธฐ์ฌ ๊ฐ์ด๋ |
ARCHITECTURE.md | ์ํคํ
์ฒ ๋ฌธ์ |
docs/ ๋๋ ํ ๋ฆฌ | ์ถ๊ฐ ๋ฌธ์ ์กด์ฌ ์ฌ๋ถ + ํ์ผ ์ |
ADR/ ๋๋ decisions/ | ์ํคํ
์ฒ ๊ฒฐ์ ๊ธฐ๋ก |
์๋ ํญ๋ชฉ์ ๊ธฐ๋กํ์ง ์๋๋ค.
Step 2b: CLAUDE.md ๊ธฐ์ ์คํ ๊ฐ์ง
Greenfield/Brownfield ๊ณตํต. Step 2a์ ๋
๋ฆฝ์ ์ผ๋ก ์คํ.
CLAUDE.md ํ์ผ์ ์กด์ฌ๋ฅผ ์ง์ ํ์ธํ๊ณ , ๊ธฐ์ ์คํ ์น์
์ ๊ตฌ์กฐ์ ์ผ๋ก ํ์ฑํ๋ค.
๊ฐ์ง ํจํด:
## ํค๋ฉ ์ค "๊ธฐ์ ์คํ" ๋๋ "Tech Stack"์ ํฌํจํ๋ ๊ฒ
- ํค๋ฉ ํ์์
์ธ์ด:, ํ๋ ์์ํฌ:, DB:, ํ
์คํธ:, CI/CD: ๋ฑ ํค-๊ฐ ์
๊ฐ์ง ๊ฒฐ๊ณผ:
- CLAUDE.md ์์ ๋๋ ๊ธฐ์ ์คํ ์น์
์์ โ ์ด ๋จ๊ณ๋ฅผ ์คํต (์ดํ requirements-analysis์์ ์ง๋ฌธ์ผ๋ก ์์ง)
- ๊ธฐ์ ์คํ ์น์
์์ โ ๊ฐ ํญ๋ชฉ์ ํ์ฑํ์ฌ ๋ฆฌ์คํธ๋ก ์ถ์ถ
์ด ๋จ๊ณ์์ Coverage ํ๋จ์ ํ์ง ์๋๋ค. ์ํคํ
์ฒ ํจํด์ด ์์ง ๊ฒฐ์ ๋์ง ์์์ผ๋ฏ๋ก, ๊ฐ์ง๋ ํญ๋ชฉ ๋ชฉ๋ก๋ง ๊ธฐ๋กํ๋ค. Coverage ํ๋จ์ requirements-analysis Step 2b-1์์ ์ํ.
์ ์ฝ:
- CLAUDE.md ์ ์ฒด๋ฅผ ์์ฝํ๋ ๊ฒ์ด ์๋, ๊ธฐ์ ์คํ ์น์
๋ง ๊ตฌ์กฐ์ ์ผ๋ก ํ์ฑ
- ํ์ฑ ์คํจ ์ (๋นํ์ค ํ์) ์คํต
4) Code Structure โ ๋๋ ํ ๋ฆฌ ํธ๋ฆฌ + ์ง์
์ :
- 1๋จ๊ณ ๊น์ด ๋๋ ํ ๋ฆฌ ํธ๋ฆฌ (๋๊ท๋ชจ ํ๋ก์ ํธ ํ ํฐ ๋ฐฉ์ง)
- ์ง์
์ ํ์ผ ์๋ณ (
main.py, index.ts, cmd/ ๋ฑ)
- ๊ด์ฐฐ๋ ์ํคํ
์ฒ ํจํด โ ๋๋ ํ ๋ฆฌ ์ด๋ฆ ๊ธฐ๋ฐ ๊ท์น๋ง ์ ์ฉ:
| ๋๋ ํ ๋ฆฌ ํจํด | ๊ธฐ๋กํ ํจํด |
|---|
controllers/ + models/ + views/ | MVC |
routes/ + services/ + repositories/ | ๋ ์ด์ด ๊ตฌ์กฐ |
cmd/ + internal/ + pkg/ | Go ํ์ค ๋ ์ด์์ |
src/ + tests/ | src ๋ ์ด์์ |
| ์์ ํด๋น ์์ | "ํน์ ํจํด ๋ฏธ๊ฐ์ง" |
5) Coding Patterns (Sampled) โ ํต์ฌ ํ์ผ ์ํ๋ง:
์ง์
์ ํ์ผ ์ค ๊ฐ์ฅ ์์ ํ์ผ 1~2๊ฐ๋ฅผ ์ค์ ๋ก ์ฝ์ด ์ฝ๋ฉ ํจํด์ ์ถ์ถํ๋ค.
์ถ์ถ ํญ๋ชฉ:
- ๋ค์ด๋ฐ ์ปจ๋ฒค์
(camelCase, snake_case, ํ์ผ๋ช
๊ท์น)
- import/require ๊ตฌ์กฐ (์ ๋ ๊ฒฝ๋ก, ์๋ ๊ฒฝ๋ก, alias)
- ์๋ฌ ํธ๋ค๋ง ํจํด (try-catch, Result type, error return)
- ์ฃผ์ ์คํ์ผ (JSDoc, docstring, ํ๊ตญ์ด/์์ด)
- ์ฝ๋ ๊ตฌ์กฐ ํจํด (ํจ์ํ, ํด๋์ค ๊ธฐ๋ฐ, ๋ชจ๋ ํจํด)
์ ์ฝ:
- 200์ค ์ดํ ํ์ผ๋ง ๋์ (ํ ํฐ ํจ์จ)
- 200์ค ์ด๊ณผ ์ ์ฒ์ 100์ค๋ง ์ฝ๊ธฐ
- ์ง์
์ ์ด ์์ผ๋ฉด
src/ ๋๋ lib/ ๋ด ๊ฐ์ฅ ์์ ํ์ผ ์ ํ
- ์ ์ ํ ํ์ผ์ ์ฐพ์ง ๋ชปํ๋ฉด ์ด ํญ๋ชฉ์ ์คํตํ๋ค
Step 3: Save artifact
Create devflow-docs/inception/workspace.md:
# Workspace Analysis
**Detected**: [Greenfield | Brownfield]
**Timestamp**: [ISO 8601]
**Project Root**: [ํ์ฌ ์์
๋๋ ํ ๋ฆฌ ์ ๋ ๊ฒฝ๋ก]
**Requires Path Confirmation**: [true | false]
**Source**: [์ ๊ท ๋ถ์ | ์ด์ ๋ถ์([์ด์ Timestamp ๊ฐ]) ๊ธฐ๋ฐ โ ๋ณ๊ฒฝ ์์ | ์ด์ ๋ถ์([์ด์ Timestamp ๊ฐ]) ๊ธฐ๋ฐ + ๋ธํ ์
๋ฐ์ดํธ]
## Project Structure
[brief description of what was found]
## Key Files Found
[list of significant files, if brownfield]
<!-- CLAUDE.md์ ๊ธฐ์ ์คํ์ด ๋ช
์๋์ด ์์ ๋๋ง ํฌํจ. ์์ผ๋ฉด ์ด ์น์
์๋ต. -->
## Pre-specified Tech Stack
- **Source**: CLAUDE.md
- **Items**: [๊ฐ์ง๋ ํญ๋ชฉ ๋ชฉ๋ก โ ํค: ๊ฐ ํํ๋ก ๋์ด]
<!-- Brownfield์ผ ๋๋ง ํฌํจ. Greenfield๋ ์ด ์น์
์์ด ์ ์ฅ. -->
## Technology Stack
- **Language**: [์ธ์ด + ๋ฒ์ ]
- **Framework**: [ํ๋ ์์ํฌ]
- **Package Manager**: [ํจํค์ง ๋งค๋์ ]
- **Test Framework**: [ํ
์คํธ ํ๋ ์์ํฌ]
- **Key Dependencies**: [์ฃผ์ ์์กด์ฑ ๋ชฉ๋ก]
## Git Activity
- **Last Commit**: [๋ ์ง โ ํ๋ก์ ํธ ํ์ฑ ์ฌ๋ถ]
- **Recent Focus**: [์ต๊ทผ ๋ณ๊ฒฝ ์ง์ค ๋๋ ํ ๋ฆฌ/ํ์ผ top 5]
- **Recent Commits**: [์ต๊ทผ ์ปค๋ฐ ๋ฉ์์ง 3~5์ค ์์ฝ]
## Existing Documentation
- [๊ฐ์ง๋ ๋ฌธ์ ๋ชฉ๋ก โ ๊ฐ 1~2์ค ์์ฝ]
## Code Structure
- **Directory Layout**: [1๋จ๊ณ ํธ๋ฆฌ]
- **Entry Points**: [์ง์
์ ํ์ผ]
- **Observed Patterns**: [๊ด์ฐฐ๋ ํจํด โ ๋ณด์ด๋ ๊ฒ๋ง]
## Coding Patterns (Sampled)
- **Source**: [์ํ๋งํ ํ์ผ๋ช
]
- **Naming**: [๋ค์ด๋ฐ ์ปจ๋ฒค์
]
- **Imports**: [import ๊ตฌ์กฐ]
- **Error Handling**: [์๋ฌ ํธ๋ค๋ง ํจํด]
- **Comments**: [์ฃผ์ ์คํ์ผ]
Requires Path Confirmation ๊ธฐ์ค:
- Greenfield โ
true (์ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ์์น ๋ฏธํ์ )
- Brownfield โ
false (๊ธฐ์กด ์ฝ๋๊ฐ ์๋ ์์น๊ฐ ๊ณง ํ๋ก์ ํธ ๋ฃจํธ)
Return to Orchestrator
conventions ํ์ค ํ์. ๋ฐํ ํ๋:
- ํ๋ก์ ํธ ์ ํ: [Greenfield | Brownfield]
- ๊ฐ์ง๋ ๊ฒฝ๋ก: [์ ๋ ๊ฒฝ๋ก]
- ๊ฒฝ๋ก ํ์ธ ํ์: [yes | no]
- ๋ฐ๊ฒฌ๋ ์ฃผ์ ํ์ผ: [count]๊ฐ
- ์ฝ๋๋ฒ ์ด์ค ๋ถ์: [ํฌํจ | ํด๋น ์์]
- ์ฌ์ ์ง์ ๊ธฐ์ ์คํ: [๊ฐ์ง๋จ (N๊ฐ ํญ๋ชฉ) | ๋ฏธ์ง์ ]
- ์ฐ์ถ๋ฌผ: devflow-docs/inception/workspace.md
- ๋ฆฌ๋ทฐ: ํด๋น ์์ (detection ์คํ
์ด์ง โ ์ฌ์ค ์์ง๋ง ์ํ)
Common Issues
- ๋น ์ํฌ์คํ์ด์ค โ Greenfield๋ก ์ฒ๋ฆฌ, ์ฐ์ถ๋ฌผ์ ๊ธฐ๋ก
- ๊ถํ ์ค๋ฅ โ ํ์ฌ ๋๋ ํ ๋ฆฌ๋ง ์ค์บ (๋น์ฌ๊ท), ์ฐ์ถ๋ฌผ์ ์ ํ ๊ธฐ๋ก