Project Setup
C#/.NET 프로젝트를 Claude Code용으로 초기화하는 스킬. CLAUDE.md 생성과 컨텍스트 hook(Bash/PowerShell)을 설치합니다.
Arguments
- •
$ARGUMENTS[0]: 서브커맨드 (init|migrate|hooks) - •
$ARGUMENTS[1]: 대상 프로젝트 경로 (선택, 기본값: 현재 디렉토리)
서브커맨드
| 커맨드 | 설명 |
|---|---|
init | 새 프로젝트 초기화 (CLAUDE.md 생성 + hook 설치) |
migrate | 기존 CLAUDE.md에 Context Management 섹션 추가 + hook 설치 |
hooks | hook 스크립트만 설치/업데이트 |
Workflow
Step 1: 인자 파싱
서브커맨드 = $ARGUMENTS[0] (기본값: "init") 대상 경로 = $ARGUMENTS[1] (기본값: 현재 작업 디렉토리)
서브커맨드가 init, migrate, hooks 중 하나가 아니면:
- •첫 번째 인자를 경로로 간주하고 서브커맨드를
init으로 설정
Step 2: C# 프로젝트 감지 (init/migrate)
hooks 서브커맨드인 경우 이 단계 건너뛰기.
- •Glob으로 대상 경로에서
.sln,.csproj파일 탐색 - •
.csproj파일들을 Read하여 다음 정보 추출:- •
<TargetFramework>(예: net8.0, net9.0) - •
<OutputType>(예: WinExe, Exe, Library) - •
<UseWPF>true</UseWPF>여부 - •
<PackageReference>목록 (주요 NuGet 패키지)
- •
- •프로젝트 유형 판별:
| OutputType | UseWPF | 판별 결과 |
|---|---|---|
| WinExe | true | WPF Application |
| Exe | - | Console Application |
| Library | - | Class Library |
| - | - (WebAPI 패키지 있음) | ASP.NET WebAPI |
| - | - (테스트 패키지 있음) | Test Project |
- •솔루션 구조 파악:
- •
.sln파일에서 프로젝트 목록 추출 - •src/tests 디렉토리 구조 확인
- •
Step 3: Hook 스크립트 설치
OS 감지: Bash 도구로 OS를 확인하여 적절한 스크립트 선택:
- •
uname명령어로 OS 확인 - •Windows (MINGW/MSYS/CYGWIN/WSL 아닌 환경) → PowerShell 사용
- •Linux/macOS/WSL → Bash 사용
Bash 환경 (Linux/macOS/WSL):
bash <plugin-path>/skills/project-setup/scripts/setup.sh <target-dir>
PowerShell 환경 (Windows):
pwsh <plugin-path>/skills/project-setup/scripts/setup.ps1 -TargetDir <target-dir>
여기서 <plugin-path>는 이 SKILL.md 파일이 위치한 플러그인의 루트 경로입니다.
이 경로를 확인하려면 Glob으로 **/skills/project-setup/scripts/setup.sh 또는 **/skills/project-setup/scripts/setup.ps1을 검색하세요.
setup 스크립트가 수행하는 작업:
- •
assets/hooks/*(.sh + .ps1) →<target>/scripts/hooks/로 복사 - •
chmod +x설정 (bash 스크립트) - •
.claude/context/,.claude/learnings/디렉토리 생성
Step 4: CLAUDE.md 생성 또는 업데이트
init 서브커맨드: CLAUDE.md 신규 생성
Write 도구로 <target>/CLAUDE.md 생성. references/claude-md-template.md 템플릿을 참조하여 Step 2에서 감지한 정보로 {변수}를 치환합니다.
- •Read로
references/claude-md-template.md읽기 - •템플릿의
{변수}를 Step 2 감지 결과로 치환 - •조건부 섹션 적용:
- •WPF 프로젝트가 아닌 경우:
### WPF/MVVM Patterns섹션 제거 +Skill Workflows > Scaffolding섹션 제거 - •테스트 프로젝트가 없는 경우:
### Test Patterns섹션 제거 +Build & Test Commands에서 Test 행 제거 - •TargetFramework < net8.0인 경우:
### C# 12 Features (.NET 8)섹션 상단에 경고 노트 추가 (> ⚠ 현재 프로젝트는 {TargetFramework}입니다. C# 12 기능은 .NET 8+ 에서 사용 가능합니다.)
- •WPF 프로젝트가 아닌 경우:
- •Write로
<target>/CLAUDE.md생성
migrate 서브커맨드: 기존 CLAUDE.md에 섹션 추가
- •기존 CLAUDE.md를 Read
- •
## Context Management섹션이 없으면 Edit으로 추가 - •
## C#/.NET Quick Reference섹션이 없으면 Edit으로 추가 (템플릿의 Quick Reference 전체) - •
## Detailed References섹션이 없으면 Edit으로 추가 (기존## C#/.NET Coding Guidelines가 있으면## Detailed References로 리네임) - •
## Skill Workflows섹션이 없으면 Edit으로 추가 - •기존 내용은 절대 삭제하지 않음
Step 5: settings.local.json 업데이트
- •Read로
<target>/.claude/settings.local.json읽기 (없으면 새로 생성) - •Step 3에서 감지한 OS에 따라 hook command 결정:
- •Bash 환경:
bash scripts/hooks/<name>.sh - •PowerShell 환경:
pwsh scripts/hooks/<name>.ps1
- •Bash 환경:
- •기존 hooks 설정이 있으면 병합, 없으면 새로 추가:
Bash 환경 (Linux/macOS/WSL):
{
"hooks": {
"SessionStart": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "bash scripts/hooks/session-start.sh"
}
]
}
],
"PreCompact": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "bash scripts/hooks/pre-compact.sh"
}
]
}
],
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "bash scripts/hooks/session-complete.sh"
}
]
}
]
}
}
PowerShell 환경 (Windows):
{
"hooks": {
"SessionStart": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "pwsh scripts/hooks/session-start.ps1"
}
]
}
],
"PreCompact": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "pwsh scripts/hooks/pre-compact.ps1"
}
]
}
],
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "pwsh scripts/hooks/session-complete.ps1"
}
]
}
]
}
}
- •기존 설정이 있으면
hooks키에 병합 (기존 hook은 유지)
Step 6: 검증 체크리스트
모든 설치가 완료된 후 검증:
- •
scripts/hooks/session-start.sh+.ps1존재 - •
scripts/hooks/pre-compact.sh+.ps1존재 - •
scripts/hooks/session-complete.sh+.ps1존재 - •
scripts/hooks/lib/utils.sh+utils.ps1존재 - • Bash 스크립트 실행 권한 확인 (Linux/macOS)
- •
.claude/context/디렉토리 존재 - •
.claude/learnings/디렉토리 존재 - •
.claude/settings.local.json에 hook 등록 확인 - •
CLAUDE.md에## C#/.NET Quick Reference섹션 존재 (init/migrate) - •
CLAUDE.md에## Detailed References섹션 존재 (init/migrate) - •
CLAUDE.md에## Skill Workflows섹션 존재 (init/migrate) - • 조건부 섹션 정상 적용: WPF가 아닌 경우 WPF 섹션 없음, 테스트 없는 경우 Test 섹션 없음
검증 실패 항목이 있으면 사용자에게 알리고 수동 조치 방법 안내.
현재 전달받은 인자
ARGUMENTS: $ARGUMENTS
실행 지시
위 ARGUMENTS를 파싱하여 워크플로우를 시작하세요.
ARGUMENTS가 비어있으면 init을 기본 서브커맨드로 사용하고, 현재 디렉토리를 대상으로 합니다.
호출 예시:
- •
/project-setup→ init + 현재 디렉토리 - •
/project-setup init→ init + 현재 디렉토리 - •
/project-setup init /path/to/project→ init + 지정 경로 - •
/project-setup migrate→ 기존 CLAUDE.md에 섹션 추가 - •
/project-setup hooks→ hook 스크립트만 설치 - •
/project-setup /path/to/project→ init + 지정 경로 (경로가 서브커맨드가 아닌 경우)
Error Handling
| 상황 | 처리 |
|---|---|
| .csproj 없음 | 경고 출력 후 기본 CLAUDE.md 생성 |
| CLAUDE.md 이미 존재 (init) | 사용자에게 덮어쓰기 확인 또는 migrate 제안 |
| settings.local.json 파싱 실패 | 백업 후 새로 생성 |
| setup 스크립트 실행 실패 | 에러 내용 출력 + 수동 설치 방법 안내 |
.gitignore 안내
설치 완료 후 사용자에게 .gitignore에 다음 추가를 안내:
# Claude Code context (auto-generated, session-specific) .claude/context/ .claude/learnings/
scripts/hooks/는 팀 공유를 위해 커밋하는 것을 권장.