| name | bootstrap-agents-md |
| description | This skill should be used when starting work on a project that has no AGENTS.md file, to generate one. Triggered automatically by plan-feature when AGENTS.md is missing, manually with "/pjc:bootstrap-agents-md", or when the user asks to create a project agent guide - e.g. "AGENTS.md ๋ง๋ค์ด์ค", "ํ๋ก์ ํธ ๊ฐ์ด๋ ๋ฌธ์ ์๋์ผ๋ก ๋ง๋ค์ด์ค", "Claude๊ฐ ์ด ํ๋ก์ ํธ ์ปจ๋ฒค์
์ ์๊ฒ ํด์ค". Detects project stack from marker files (.csproj, package.json, pyproject.toml, go.mod, Cargo.toml, etc.) and generates a minimal AGENTS.md from one of 9 stack templates (plus generic/multi-stack). If stack is unknown, asks the user. Do NOT trigger when an AGENTS.md or CLAUDE.md already exists, when only editing/adding a line to an existing AGENTS.md, or for writing a README. |
| argument-hint | (์๋) |
Bootstrap AGENTS.md
ํ๋ก์ ํธ ๋ฃจํธ์ AGENTS.md๊ฐ ์์ ๋, ํ์ ํ์ผ์ ๊ฐ์งํ์ฌ ์ ์ ํ template์ผ๋ก
์ด๊ธฐ AGENTS.md๋ฅผ ์์ฑํ๋ค.
ํธ์ถ ํ๋ฆ
| ์์ | ํธ์ถ ๋ฐฉ์ |
|---|
plan-feature Step 1์์ AGENTS.md ๋ถ์ฌ ๊ฐ์ง | ์๋ ํธ์ถ |
| ์ฌ์ฉ์ ์ง์ ํธ์ถ | /pjc:bootstrap-agents-md |
์์ฑ ํ plan-feature๊ฐ ๊ทธ AGENTS.md๋ฅผ ์ฝ๊ณ ์ ์ ์งํ.
์ ๋ ๊ท์น
- ์ฌ์ฉ์ ํ์ธ ์์ด ์ ์ฅ ๊ธ์ง. ์์ฑํ ๋ด์ฉ์ ๋ณด์ฌ์ฃผ๊ณ ๋ช
์์ ์น์ธ ๋ฐ์.
- ๊ธฐ์กด AGENTS.md ๋ฎ์ด์ฐ๊ธฐ ๊ธ์ง. ์์ผ๋ฉด ์ฆ์ ์ข
๋ฃ.
- ๋น ์นธ์ ๋น ์นธ์ผ๋ก ์ ์ง. ๋ชจ๋ฅด๋ ์ ๋ณด๋ฅผ ์ถ์ธกํด ์ฑ์ฐ์ง ์์.
- ๋ค์ค stack ๋ฐ๊ฒฌ ์ ์ฌ์ฉ์์๊ฒ ์ ํ ์์ฒญ.
- AGENTS.md ์ ๊ท ์์ฑ์ ์ด ์คํฌ ์ ์ฐจ๋ก๋ง. ์คํฌ์ ๋ฐ๋ํ์ง ์์ ์ง์ Write๋
require-plan-for-write hook์ bootstrap ๊ฒ์ดํธ๊ฐ ์ฐจ๋จํ๋ค โ ์ฐจ๋จ๋๋ฉด ์ ์ ๊ฒฝ๋ก๋ ์ด ์คํฌ์ Skill ๋๊ตฌ๋ก ํธ์ถํ๋ ๊ฒ์ด๋ฉฐ, ๊ฒ์ดํธ๋ฅผ ์ฐํํ ๋ค๋ฅธ ์ฐ๊ธฐ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ง ์๋๋ค.
์คํ ๋จ๊ณ
Step 1. ๊ธฐ์กด AGENTS.md ํ์ธ
(Test-Path AGENTS.md) -or (Test-Path CLAUDE.md)
๊ฒฐ๊ณผ๊ฐ True๋ฉด(๋ ์ค ํ๋๋ผ๋ ์์ผ๋ฉด) โ ์ฆ์ ์ข
๋ฃ, plan-feature๋ก ๋ณต๊ท.
Step 2. ํ์ ํ์ผ ๊ฐ์ง
๋ค์ ํ ์์๋๋ก ๊ฒ์ฌ (์์์๋ถํฐ):
| ํ์ ํ์ผ (glob) | Stack | Template ํ์ผ |
|---|
*.csproj์ <UseWinUI>true</UseWinUI> ํฌํจ | WinUI 3 | winui3.md |
*.csproj์ <UseWPF>true</UseWPF> ํฌํจ (WinUI ์๋) | WPF | wpf.md |
*.csproj์ <UseMaui>true</UseMaui> ํฌํจ (WinUI/WPF ์๋) | MAUI | maui.md |
*.csproj, *.sln, *.slnx, *.fsproj (WinUI/WPF/MAUI ์๋) | .NET | dotnet.md |
AndroidManifest.xml ๋๋ build.gradle*์ com.android.application/library ํ๋ฌ๊ทธ์ธ | Android | android.md |
build.gradle*/settings.gradle*๋ง (์ Android ํ์ ์์ โ Spring BootยทJVM ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ) | JVM (Gradle) | Case B โ generic.md |
package.json + tsconfig.json ๋๋ *.ts ํ์ผ | Node/TypeScript | node-typescript.md |
package.json (TS ์์) | Node/JavaScript | node-typescript.md (๋ผ๋ฒจ๋ง ๋ณ๊ฒฝ) |
pyproject.toml, setup.py, requirements*.txt | Python | python.md |
go.mod | Go | go.md |
Cargo.toml | Rust | rust.md |
pubspec.yaml / Package.swift / Gemfile / mix.exs / build.zig / pom.xml | Flutter / Swift / Ruby / Elixir / Zig / Java(Maven) | Case B โ generic.md |
Gradle ํ์ผ๋ง์ผ๋ก๋ Android๋ก ํ์ ํ์ง ์๋๋ค โ AndroidManifest.xml์ด๋ com.android.* ํ๋ฌ๊ทธ์ธ์ด ์๋ ์์ JVM Gradle ํ๋ก์ ํธ(Spring Boot ๋ฑ)๋ฅผ android.md๋ก ์คํํ๋ ๊ฒ์ ๋ง๊ธฐ ์ํจ. Case B ํ์(๋ง์ง๋ง ๋ ํ)๋ Step 2์์ ํจ๊ป ํ์ํด์ผ Case B ๋ถ๊ธฐ๊ฐ ์ค์ ๋ก ์๋ํ๋ค.
.NET UI ํ๋ ์์ํฌ ์ฐ์ ํ์ : .csproj๊ฐ ์์ผ๋ฉด ๊ทธ ์์ UI ํ๋๊ทธ๋ฅผ ๋จผ์ ํ์ธํ๋ค. <UseWinUI>true</UseWinUI>๋ฉด winui3.md, <UseWPF>true</UseWPF>(WinUI ์๋)๋ฉด wpf.md, <UseMaui>true</UseMaui>(WinUI/WPF ์๋)๋ฉด maui.md, ์
๋ค ์์ผ๋ฉด dotnet.md. WinUI 3๊ฐ WPF๋ณด๋ค ์ฐ์ (WinUI ํ๋ก์ ํธ๋ ๋๋ฌผ๊ฒ UseWPF๊ฐ ๋ณด์ผ ์ ์์).
๊ฒ์ ๋ช
๋ น (PowerShell):
# ์์กด์ฑยท์ฐ์ถ๋ฌผ ๋๋ ํฐ๋ฆฌ ์ ์ธ โ ํ์ node_modules์ package.json ๋ฑ์ด stack์ผ๋ก ์คํ๋๋ ๊ฒ ๋ฐฉ์ง
$excludeDirs = '\\(node_modules|bin|obj|\.git|target|build|dist|out|\.venv|__pycache__|Pods|vendor)\\'
# -Recurse -Depth 3: ํ์์ด ๋ฃจํธ๊ฐ ์๋ ํ์(src/, ๋ชจ๋ ํด๋ ๋ฑ)์ ์์ด๋ ๊ฐ์ง (๊น์ด 3 ์ํ)
function Find-Marker([string[]]$patterns) {
foreach ($p in $patterns) {
$hit = Get-ChildItem -Filter $p -Recurse -Depth 3 -File -ErrorAction SilentlyContinue |
Where-Object { $_.FullName -notmatch $excludeDirs } | Select-Object -First 1
if ($hit) { return $hit }
}
return $null
}
# [ordered]: ํ ์์ ๋ณด์ฅ (@{}๋ ํค ์์ ๋น๋ณด์ฅ โ "ํ ์์๋๋ก ๊ฒ์ฌ"๊ฐ ์ค์ ๋ก ์ง์ผ์ง๊ฒ)
$markers = [ordered]@{
'dotnet' = @('*.csproj', '*.sln', '*.slnx', '*.fsproj')
'android' = @('AndroidManifest.xml') # Gradle ํ์ผ๋ง์ผ๋ก๋ Android ํ์ ๊ธ์ง (์๋ gradle-jvm ์ ์ ์ฐธ์กฐ)
'gradle-jvm' = @('build.gradle', 'build.gradle.kts', 'settings.gradle', 'settings.gradle.kts')
'node-typescript' = @('package.json', 'tsconfig.json')
'python' = @('pyproject.toml', 'setup.py', 'requirements*.txt')
'go' = @('go.mod')
'rust' = @('Cargo.toml')
# โ template ์๋ ๊ธฐ์ง ํ์ โ ๋ฐ๊ฒฌ ์ Case B๋ก ๋ผ์ฐํ
'flutter' = @('pubspec.yaml')
'swift' = @('Package.swift')
'ruby' = @('Gemfile')
'elixir' = @('mix.exs')
'zig' = @('build.zig')
'java-maven' = @('pom.xml')
}
$detected = @()
foreach ($stack in $markers.Keys) {
if (Find-Marker $markers[$stack]) { $detected += $stack }
}
# gradle-jvm ์ ์ : build.gradle์ com.android ํ๋ฌ๊ทธ์ธ์ด ์์ผ๋ฉด android๋ก ์น๊ฒฉ,
# ์์ผ๋ฉด ์์ JVM(Gradle) ํ๋ก์ ํธ โ Case B (Spring Boot ๋ฑ์ android.md๋ก ์คํํ์ง ์์)
if ($detected -contains 'gradle-jvm' -and $detected -notcontains 'android') {
$gradleContent = Get-ChildItem -Include 'build.gradle','build.gradle.kts' -Recurse -Depth 3 -File -ErrorAction SilentlyContinue |
Where-Object { $_.FullName -notmatch $excludeDirs } |
Get-Content -Raw -ErrorAction SilentlyContinue
if ($gradleContent | Select-String -Pattern 'com\.android\.(application|library)' -Quiet) {
$detected += 'android'
}
}
if ($detected -contains 'android') {
$detected = @($detected | Where-Object { $_ -ne 'gradle-jvm' })
}
# WinUI 3 / WPF / MAUI ์ฐ์ ํ์ : csproj์ UI ํ๋๊ทธ๋ก dotnet โ winui3/wpf/maui ์น๊ฒฉ
if ($detected -contains 'dotnet') {
$csprojContent = Get-ChildItem -Filter '*.csproj' -Recurse -Depth 3 -File -ErrorAction SilentlyContinue |
Where-Object { $_.FullName -notmatch $excludeDirs } |
Get-Content -Raw -ErrorAction SilentlyContinue
$isWinUI = $csprojContent | Select-String -Pattern '<UseWinUI>\s*true\s*</UseWinUI>' -Quiet
$isWPF = $csprojContent | Select-String -Pattern '<UseWPF>\s*true\s*</UseWPF>' -Quiet
$isMaui = $csprojContent | Select-String -Pattern '<UseMaui>\s*true\s*</UseMaui>' -Quiet
if ($isWinUI) {
$detected = @($detected | Where-Object { $_ -ne 'dotnet' }) + 'winui3'
} elseif ($isWPF) {
$detected = @($detected | Where-Object { $_ -ne 'dotnet' }) + 'wpf'
} elseif ($isMaui) {
$detected = @($detected | Where-Object { $_ -ne 'dotnet' }) + 'maui'
}
}
# flutter/swift/ruby/elixir/zig/java-maven/gradle-jvm ์ด $detected์ ์์ผ๋ฉด โ Case B๋ก ์งํ
Step 3. ๊ฒฐ๊ณผ ๋ถ๊ธฐ
Case A โ ๋จ์ผ stack ๋งค์นญ๋จ
ํด๋น templates/<stack>.md ๋ณต์ฌ + ์๋ ์ถ๋ก ๊ฐ๋ฅํ ๊ฐ ์ฑ์.
์๋ ์ฑ์ธ ์ ์๋ ๊ฐ:
- dotnet:
*.sln ํ์ผ๋ช
์ผ๋ก ์๋ฃจ์
๊ฒฝ๋ก ์ถ์
- android:
app/build.gradle์์ namespace/minSdk/targetSdk ์ถ์ถ
- node-typescript:
package.json์ scripts ๋ถ์ (build, test, dev, lint)
- python:
pyproject.toml์ project.name, tool.pytest ์ค์
- go:
go.mod์ module ๊ฒฝ๋ก
- rust:
Cargo.toml์ package.name, edition
Case A-1 โ ์ํคํ
์ฒ ํ์ธ (ํ
ํ๋ฆฟ ๋ณต์ฌ ํ, ์ ์ฅ ์ )
ํ
ํ๋ฆฟ์ ์ํคํ
์ฒ ํญ๋ชฉ์ ์ ํํ ๋น ์นธ์ด๋ค โ ๊ฐ์ด ๋ฐํ ์์ง ์๋ค(v1.119.0). ๊ทธ๋๋ก ๋๋ฉด Claude๊ฐ ์ด๋์ ์ฝ๋๋ฅผ ๋์ง ๋ชจ๋ฅด๋ฏ๋ก, Step 4์ [Y/E/N] ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ์ด ์ง๋ฌธ์ ํจ๊ป ์ค์ด ์ฌ์ฉ์์๊ฒ ํ์ธํ๋ค (์ง๋ฌธ ๋ผ์ด๋๋ฅผ ์๋ก ๋๋ฆฌ์ง ์๋๋ค).
- ๊ตฌ์กฐ๋ก ๊ทผ๊ฑฐ๋ฅผ ๋ง๋ ๋ค: ๋ ์ด์ด ํด๋(
Domain/ยทdomain/ยทinternal/domain/ ๋ฑ)๊ฐ ์ค์ฌํ๋์ง Glob์ผ๋ก ํ์ธํ๋ค. ์ฝ๋๊ฐ ์ด๋ฏธ ์์ผ๋ฉด ๊ทธ ๊ตฌ์กฐ๊ฐ ๊ณง ๋ต์ด๋ค.
- ํ๋ณด๋ฅผ ์ ์ํ๊ณ ๊ณ ๋ฅด๊ฒ ํ๋ค:
์ํคํ
์ฒ๋ฅผ ํ์ธํด ์ฃผ์ธ์ (AGENTS.md์ "์ด๋์ ์ฝ๋๋ฅผ ๋์ง"๋ฅผ ๊ฒฐ์ ํฉ๋๋ค):
A) DDD/Clean โ ๋๋ฉ์ธ ๊ท์น(๊ฒ์ฆยท์ํ ์ ์ดยท๊ณ์ฐ)์ด ๋ํฐ์. ์ํฐํฐ์ ํ์๋ฅผ ๋๊ณ ์ ๊ทธ๋ฆฌ๊ฒ์ดํธ ๊ฒฝ๊ณ๋ฅผ ์ก์
B) ๊ณ์ธตํ(ํธ๋์ญ์
์คํฌ๋ฆฝํธ) โ ๊ท์น์ด ์์ CRUDยท์กฐํ ์์ฃผ. ์๋น์ค๊ฐ ์ ์ฐจ๋ฅผ ์์๋๋ก ์คํ
C) ๊ธฐํ (์ง์ ๋ช
์)
<๊ฐ์ง๋ ๊ตฌ์กฐ๊ฐ ์์ผ๋ฉด: "src/์ Domain/ยทApplication/ ํด๋๊ฐ ๋ณด์
๋๋ค โ A๋ก ์ถ์ ">
- ๋ต์ ๋ชป ์ป์ผ๋ฉด ๋น ์นธ์ผ๋ก ์ ์ฅํ๋ค โ ์ถ์ธกํด์ ์ฑ์ฐ์ง ์๋๋ค(ํ๋ ์์น "๋น ์นธ ์ ์ง๊ฐ ์ถ์ธก ์ฑ์๋ณด๋ค ์์ ").
์ A/B/C๋ ๋ํ ๋ช
์นญ์ด๋ค. ์ค์ ๋ก ์ฑ์ ๋ฃ๋ ๋ฌธ๊ตฌ๋ ๊ทธ stack ํ
ํ๋ฆฟ์ ์ ํ์ง ํํ์ ๊ทธ๋๋ก ์ด๋ค โ ์: go/rust๋ A๊ฐ Clean/Hexagonal, rust์ B๋ ๊ณ์ธตํ(๋จ์ผ crate), android๋ A๊ฐ Clean ArchitectureยทB๊ฐ ๊ณ์ธตํ(๋จ์ Repository). ํ
ํ๋ฆฟ์ ์๋ ํํ์ ์๋ก ๋ง๋ค์ง ์๋๋ค.
์ ๋ฌป๋๊ฐ: ์ข
์ ํ
ํ๋ฆฟ์ stack๋ง ๋ณด๊ณ "DDD + Clean"์ ๊ฐ์ผ๋ก ๋ฐ์๋ค. ๊ทธ๋์ ๋๋ฉ์ธ ๊ท์น์ด ์์ CRUD ์ฑ๋ AGENTS.md์๋ DDD๋ผ๊ณ ์ ํ๊ณ , ์ค์ ์ฝ๋๋ ํธ๋์ญ์
์คํฌ๋ฆฝํธ์ธ๋ฐ ์ ์ธ๋ง DDD์ธ ์ํ๊ฐ ๋๋ค โ ๋ฆฌ๋ทฐ์ด๋ ์ฌ๋๋ "์ง์ผ์ง๊ณ ์๋ค"๊ณ ์ฐฉ๊ฐํ๋ค. ์๋ ๋ ์ด์ด๋ฅผ ๊ฐ์ํ๋ ๊ฒ์ ๊ทธ ์์ฒด๊ฐ ๊ณผํ ์ถ์ํ๋ค.
Case B โ ํ์ ์์ง๋ง template ์์
์: pubspec.yaml (Flutter), Package.swift (Swift), Gemfile (Ruby), mix.exs (Elixir), pom.xml (Java/Maven), Android ํ์ ์๋ build.gradle* (JVM/Gradle)
โ templates/generic.md๋ก ๋ณต์ฌ + ๋ค์ ์ ๋ณด๋ก ์ฑ์:
- Stack: <๊ฐ์ง๋ ๋ผ๋ฒจ>
- Build/Test: ์๋ ค์ง ์ถ์ธก์น (์์ผ๋ฉด, ์ฃผ์์ผ๋ก "์ถ์ธก"์ ํ์)
์ถ์ธก์น ๋งคํ (ํ์ ์์ ํ์):
pubspec.yaml โ "Flutter | flutter build / flutter test (์ถ์ธก)"
Package.swift โ "Swift | swift build / swift test (์ถ์ธก)"
Gemfile โ "Ruby | bundle install / bundle exec rspec (์ถ์ธก)"
mix.exs โ "Elixir | mix compile / mix test (์ถ์ธก)"
build.zig โ "Zig | zig build / zig build test (์ถ์ธก)"
pom.xml โ "Java (Maven) | mvn compile / mvn test (์ถ์ธก)"
build.gradle* (Android ์๋) โ "JVM Java/Kotlin (Gradle) | gradlew build / gradlew test (์ถ์ธก)"
Case C โ ํ์์กฐ์ฐจ ์์
generic.md ๋ณต์ฌ. ๋ชจ๋ ๊ฐ ๋น ์นธ. ์ฌ์ฉ์์๊ฒ 4๊ฐ์ง ์ง๋ฌธ:
ํ๋ก์ ํธ์ stack์ ์๋ ๊ฐ์งํ์ง ๋ชปํ์ต๋๋ค.
๋ฐ๊ฒฌ๋ ์ฃผ์ ํ์ผ:
- <Get-ChildItem ๊ฒฐ๊ณผ ์์ 10๊ฐ>
๋ค์ 4๊ฐ์ง๋ง ์๋ ค์ฃผ์ธ์:
1. ์ธ์ด/ํ๋ซํผ์? (์: Flutter, Swift, Ruby, Elixir, Zig, ...)
2. Build ๋ช
๋ น์? (์: zig build)
3. Test ๋ช
๋ น์? (์: zig build test)
4. ์ํคํ
์ฒ/๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ ๊ฐ๋จํ
๋ต๋ณ์ ๋ฐ์ generic.md์ ์ฑ์.
Case D โ ๋ค์ค stack ๋ฐ๊ฒฌ (๋ชจ๋
ธ๋ ํฌ)
์ด ํ๋ก์ ํธ์์ ์ฌ๋ฌ stack์ ๋ฐ๊ฒฌํ์ต๋๋ค:
- .NET (src/Backend/Backend.csproj)
- Node.js (frontend/package.json)
- Python (scripts/pyproject.toml)
์ด๋ค ์์
์ ์ฃผ๋ก ํ์ค ๊ฑด๊ฐ์?
A) .NET ์์ฃผ โ dotnet ๋ช
๋ น ๊ธฐ๋ณธ
B) Node.js ์์ฃผ โ npm ๋ช
๋ น ๊ธฐ๋ณธ
C) Python ์์ฃผ โ pytest ๋ฑ ๊ธฐ๋ณธ
D) ๋ชจ๋ โ AGENTS.md์ 3๊ฐ ์น์
(ํฐ ํ์ผ)
D ์ ํ ์ multi-stack-example.md๋ฅผ ์ฐธ๊ณ ํ์ฌ 3๊ฐ ์น์
๋ชจ๋ ์์ฑ.
Step 4. ์์ฑ๋ AGENTS.md ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๊ธฐ
๋ค์ AGENTS.md๋ฅผ ์์ฑํ์ต๋๋ค. ๊ฒํ ํ์ธ์:
---
<์์ฑ๋ ๋ด์ฉ ์ ์ฒด>
---
<Case A์์ ์ํคํ
์ฒ๊ฐ ๋ฏธํ์ ์ด๋ฉด ์ฌ๊ธฐ์ ์ "์ํคํ
์ฒ ํ์ธ" ์ง๋ฌธ(A/B/C)์ ํจ๊ป ์ ์>
์ด๋๋ก ์ ์ฅํ ๊น์?
[Y] ๊ทธ๋๋ก ์ ์ฅ (์ํคํ
์ฒ ์ง๋ฌธ์ ๋ตํ์ผ๋ฉด ๊ทธ ๊ฐ์ผ๋ก ์ฑ์ ์ ์ฅ)
[E] ํธ์ง ํ ์ ์ฅ (์ด๋๋ฅผ ์์ ํ ์ง ์๋ ค์ฃผ์ธ์)
[N] ์ทจ์
์ํคํ
์ฒ์ ๋ตํ์ง ์๊ณ [Y]๋ฅผ ํํ๋ฉด ๊ทธ ํญ๋ชฉ์ ๋น ์นธ์ผ๋ก ์ ์ฅํ๋ค(์ถ์ธก ์ฑ์ ๊ธ์ง).
Step 5. ์ ์ฅ + plan-feature๋ก ๋ณต๊ท
Y โ ./AGENTS.md์ ์ ์ฅ โ "AGENTS.md ์์ฑ ์๋ฃ" ๋ณด๊ณ โ plan-feature ๊ณ์.
E โ ์ฌ์ฉ์ ์์ ์ฌํญ ๋ฐ์ โ ๋ค์ ๋ณด์ฌ์ฃผ๊ธฐ.
N โ ์ข
๋ฃ. plan-feature๋ ์ถ์ธก ๋ชจ๋๋ก ์งํ (๋๋ ์ฌ์ฉ์๊ฐ plan-feature ์ฌํธ์ถ).
์ถ๋ ฅ ํ์
## ๐ง bootstrap-agents-md
**๊ฐ์ง ๊ฒฐ๊ณผ**: <stack>
**Template ์ฌ์ฉ**: <template ํ์ผ๋ช
>
**์๋ ์ฑ์**:
- Build ๋ช
๋ น: <๊ฐ>
- Test ๋ช
๋ น: <๊ฐ>
**ํ์ธ ํ์** (์๋ ์ถ๋ก ๊ธ์ง โ ์ฌ์ฉ์๊ฐ ๊ณ ๋ฆ):
- ์ํคํ
์ฒ: <A) DDD/Clean ยท B) ๊ณ์ธตํ ยท C) ๊ธฐํ โ ๊ฐ์ง๋ ๊ตฌ์กฐ๊ฐ ์์ผ๋ฉด ์ถ์ ๊ทผ๊ฑฐ 1์ค>
**๋น์๋ ํญ๋ชฉ** (์ฌ์ฉ์ ์
๋ ฅ ํ์):
- <ํญ๋ชฉ 1>
- <ํญ๋ชฉ 2>
<์์ฑ๋ AGENTS.md ์ ์ฒด ๋ฏธ๋ฆฌ๋ณด๊ธฐ>
์ ์ฅํ์๊ฒ ์ต๋๊น? [Y/E/N]
ํ๋ ์์น
- ์ถ์ธก์ ๋ช
์. ํ์ ์๋ ๊ฐ์ "(์ถ์ธก)" ๋๋ "" ํ์.
- ์ฌ์ฉ์ ์๊ฐ ์ ์ฝ. ์๋์ผ๋ก ์ฑ์ธ ์ ์๋ ๊ฑด ๋ชจ๋ ์ฑ์.
- ๋น ์นธ ์ ์ง๊ฐ ์ถ์ธก ์ฑ์๋ณด๋ค ์์ . ์ฌ์ฉ์๊ฐ ์ฑ์ฐ๊ฒ ํจ.
- ๊ฐ๊ฒฐ. ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ๋ฉ์์ง๋ ํต์ฌ๋ง.
Template ์์น
์ด ์คํฌ ๋ฒ๋ค์ templates/ ๋๋ ํฐ๋ฆฌ (${CLAUDE_PLUGIN_ROOT}/skills/bootstrap-agents-md/templates/):
winui3.md โ WinUI 3 (Windows App SDK). ํ๋ก์ ํธ ์์ฑ/์คํ ์คํจ ๋ฐฉ์ง ๊ท์น + Gallery ๋์์ธ + ๋ค๊ตญ์ด ๊ท์น ํฌํจ
wpf.md โ WPF + WPF-UI(Fluent). ํจํค์ง ์ค์นยทApp.xaml ๋ณํฉยทFluentWindowยทํ
๋ง ๊ท์น ํฌํจ
maui.md โ .NET MAUI (๋ฉํฐํ๋ซํผ). ContentPageยทShellยทCommunityToolkit.Mvvm/MauiยทMauiProgram DI ๊ท์น ํฌํจ
dotnet.md โ ์ผ๋ฐ .NET (WinUI/WPF/MAUI ์๋)
android.md
node-typescript.md
python.md
go.md
rust.md
generic.md โ ๋งค์นญ ์คํจ ๋๋ ์๋ ค์ง์ง ์์ stack์ฉ
multi-stack-example.md โ ๋ชจ๋
ธ๋ ํฌ ์ฐธ๊ณ ์ฉ