Project setup
Skill JeongHeonK/c-sharp-custom-marketplace/skills/project-setup
C#/.NET 프로젝트를 Claude Code용으로 초기화. CLAUDE.md 생성 + 컨텍스트 hook 설치 (Bash/PowerShell). Use when setting up new C# projects for Claude Code, migrating existing projects, or updating context hooks.From its SKILL.md
npx -y skills add JeongHeonK/c-sharp-custom-marketplace --skill project-setupAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.8 KB, as published. Nobody here has run it
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 감지: uname -s 결과로 환경 판별:
uname -s 결과 | 환경 | 스크립트 |
|---|---|---|
Linux | Linux/WSL | setup.sh |
Darwin | macOS | setup.sh |
MINGW* / MSYS* / CYGWIN* | Git Bash/MSYS2 | setup.sh |
| 명령 실패 또는 그 외 | Windows (native) | setup.ps1 |
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의 부모 디렉토리(skills/project-setup/)의 절대 경로입니다. setup 스크립트가 hook 파일 복사, 실행 권한 설정, 디렉토리 생성을 수행합니다.
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 설정이 있으면 병합, 없으면 새로 추가:
Hook 등록 구조
{
"hooks": {
"SessionStart": [{ "matcher": "", "hooks": [{ "type": "command", "command": "<runner> scripts/hooks/session-start.<ext>" }] }],
"PreCompact": [{ "matcher": "", "hooks": [{ "type": "command", "command": "<runner> scripts/hooks/pre-compact.<ext>" }] }],
"Stop": [{ "matcher": "", "hooks": [{ "type": "command", "command": "<runner> scripts/hooks/session-complete.<ext>" }] }]
}
}
<runner> / <ext> 치환:
| 환경 | <runner> | <ext> |
|---|---|---|
| Bash (Linux/macOS/WSL) | bash | sh |
| PowerShell (Windows) | pwsh | 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/는 팀 공유를 위해 커밋하는 것을 권장.