agent-cowork/skills/draft-public-rules/SKILL.md
현재 프로젝트를 분석하고, 사용자가 지금 접근 가능한 전역/프로젝트 스킬 및 MCP 인벤토리를 함께 파악해서 **이 프로젝트에 실제로 필요한 것만** 큐레이트한 **팀 공개 지침(public rules) 초안**을 생성한다. 두 가지 트랙 지원: A) Multi-agent → 루트 `AGENTS.md` + Claude/Gemini 브릿지, B) Claude-only → 루트 `CLAUDE.md` 자체를 공개 지침으로 사용(브릿지 불필요). 트랙은 사용자가 명시 선택(자동 추측 금지). Draft-first: 분석 → 완성된 초안 한 번에 제시 → 사용자 비판으로 iterate. 신호가 빈약하면 "뭘 만들려고 하세요?" 한 가지만 묻는다. 생성된 파일은 "초안"이며, 후속 스킬 (Boundaries 누적, 스킬/MCP 정리 등)로 계속 다듬는 것을 전제로 한다. Triggers: "create AGENTS.md", "draft AGENTS.md", "generate AGENTS.md", "set up project rules", "initialize agent config", "agent onboarding", "AGENTS.md 만들어줘", "AGENTS.md 초안", "CLAUDE.md 만들어줘", "에이전트 규칙 생성", "프로젝트 규칙 설정", "공개 지침 만들어줘", "팀 규칙 초안", "팀 공유 규칙". 새 프로젝트를 시작하거나, AI 에이전트를 온보딩하거나, 팀 공개 지침을 표준화할 때 사용.
npx skillsauth add dev-goraebap/skills draft-public-rulesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
현재 프로젝트를 분석해 팀 공개 지침(public rules) 초안을 생성한다. 두 트랙 지원:
AGENTS.md가 source-of-truth. Claude Code와 Gemini CLI는 한 줄짜리 브릿지로 연결.CLAUDE.md 자체가 공개 지침. 브릿지 불필요.이름 그대로 초안이며, 생성 후에도 후속 스킬로 계속 다듬어나가는 것을 전제로 한다.
AGENTS.md는 60,000개 이상의 프로젝트가 채택한 도구 중립 표준. 한 번 쓰면 Cursor, GitHub Copilot, Codex CLI, Windsurf 등 30+ 에이전트가 자동으로 읽는다. 팀이 모두 Claude Code만 쓴다면 표준 우회 비용 없이 루트 CLAUDE.md로 단순화하는 것도 합리적이다 — 두 트랙은 우열이 아니라 팀 구성에 따른 선택.
package.json/README/git log에서 읽을 수 있는 내용은 쓰지 않는다.## External Tools는 설치된 모든 스킬/MCP의 덤프가 아니다. 이 프로젝트에서 실제로 필요하거나 다른 개발자가 알아야 할 것만 담는다.In scope:
AGENTS.md / 트랙 B: 루트 CLAUDE.md, 필요 시 최소 형태)CLAUDE.md 또는 .claude/CLAUDE.md) 생성Out of scope:
*.local.md 계열)| # | 확인 | 실패 시 |
|---|---|---|
| 1 | CWD가 사용자가 스캐폴딩하려는 디렉토리인가 | 진행 — git 여부 강제 X. 개인 scratch 프로젝트도 유효 |
| 2 | (트랙 A) 루트 AGENTS.md가 이미 존재하는가 | 사용자에게 문의: 덮어쓰기 / 병합 / 취소 |
| 3 | (트랙 B) 루트 CLAUDE.md가 이미 존재하는가 | 아래 "기존 CLAUDE.md 분류" 표에 따라 분기 |
| 내용 유형 | 판정 기준 | 처리 |
|---|---|---|
| import-only | @... 한 줄(혹은 매우 짧은 import 블록)만 있음 | 안전 덮어쓰기 (사용자 1회 확인) |
| 메모성 | 짧고(<50줄) 비구조적, 섹션 헤딩 거의 없음 | CLAUDE.md.bak로 백업 후 덮어쓰기 |
| 본격 규칙 | ## Boundaries 등 구조적 섹션 헤딩 다수 | "병합 / 취소"만 제시 (덮어쓰기 옵션 제거) |
생성되는 공개 지침 파일(트랙 A: AGENTS.md / 트랙 B: CLAUDE.md)에서 구조적 요소만 영어 고정, 나머지는 사용자 언어를 따른다. 사용자 언어는 현재 세션의 최근 메시지에서 감지. 두 트랙 동일 적용 — 트랙 B(CLAUDE.md)에서 헤딩을 한국어로 풀거나, 섹션을 더 짧게 쓰지 말 것.
| 요소 | 언어 |
|---|---|
| 모든 헤딩(#, ##, ###) | 영어 고정 — 에이전트/툴이 ## Boundaries 같은 정확한 문자열을 찾을 수 있어야 함 |
| 3-tier 서브헤딩(### Always do / ### Ask first / ### Never do) | 영어 고정 — 후속 스킬(Boundaries 누적 등)이 파싱하는 구조 |
| ## External Tools의 ### {name} ({type}) 헤딩 | 영어 고정 — (MCP), (Skill) 라벨 포함 |
| overview 본문 | 사용자 언어 |
| 각 섹션의 설명/규칙/예시 문장 | 사용자 언어 |
| HTML 주석(<!-- ... -->) | 사용자 언어 |
| 코드 블록 내 명령/식별자 | 원본 그대로 |
(트랙 A) 브릿지 파일(CLAUDE.md 또는 .claude/CLAUDE.md)은 @AGENTS.md 한 줄이라 언어 무관.
사용자 대면 대화 메시지(질문, diff 표시, 요약)도 모두 사용자 언어로.
사용자에게 한 가지 질문 (자동 추측 금지):
팀이 어떤 에이전트들을 쓰나요? a) 다양한 에이전트 (Claude/Codex/Gemini/Cursor 등) → 루트
AGENTS.md+ 브릿지 b) Claude Code만 → 루트CLAUDE.md자체를 공개 지침으로 사용이 선택은 audit/refine 동작도 함께 바꿉니다.
답변에 따라:
a → 트랙 A. 출력 파일 AGENTS.md. Step 7(브릿지) 실행.b → 트랙 B. 출력 파일 CLAUDE.md. Step 7 스킵.이후 Step 1~6의 분석·인벤토리·초안 작성 흐름은 두 트랙 동일. 섹션 규칙(헤딩 영어 고정, Boundaries 3-tier, External Tools 큐레이션 등)도 동일 — 트랙 B에서 더 짧게 쓰지 말 것.
선택을 받은 즉시 가드레일(섹션 위)을 트랙별로 적용한다 — 트랙 A면 AGENTS.md 존재 체크, 트랙 B면 CLAUDE.md 존재 + 내용 분류.
병렬로 신호 수집. 원본 분석을 AGENTS.md에 그대로 붙여넣지 말 것 — 출력은 에이전트가 추론해야 할 것이지, 발견한 것 전부가 아니다.
| 소스 | 수집할 신호 |
|---|---|
| package.json / pyproject.toml / pom.xml / Cargo.toml / go.mod / Gemfile | 프로젝트 이름, 프레임워크, 주요 의존성 |
| README.md (첫 ~40줄) | 프로젝트 목적 (복사 금지, 패러프레이즈) |
| .claude/skills/, .cursor/rules/ | 프로젝트 레벨 에이전트 스킬 |
| .mcp.json, .cursor/mcp.json | 프로젝트 레벨 MCP 설정 |
| git log --oneline -20 (git 저장소) | 커밋 메시지 패턴 |
| .github/workflows/, 브랜치 목록 | CI, 머지 정책 힌트 |
| 기존 .cursorrules, copilot-instructions.md, CLAUDE.md 본문 | 이관 가치 있는 기존 규칙 |
전역 + 프로젝트 레벨에서 사용자가 지금 접근 가능한 도구를 전부 수집한다. 두 가지 배포 경로를 모두 고려:
| 경로 | 스코프 | 배포 방식 |
|---|---|---|
| ~/.claude/skills/ | 전역 | skills.sh (npx skills add -g) + 수동 설치 |
| ~/.claude/plugins/*/skills/ | 전역 | Claude 마켓플레이스 플러그인 |
| .claude/skills/ | 프로젝트 | skills.sh + 수동 |
| .claude/plugins/*/skills/ | 프로젝트 | Claude 플러그인 |
| ~/.cursor/rules/, .cursor/rules/ | 전역/프로젝트 | Cursor MDC |
| ~/.windsurf/rules/, .windsurf/rules/ | 전역/프로젝트 | Windsurf |
각 SKILL.md에서 name과 description을 뽑아 인벤토리에 담는다.
| 배포 경로 | 슬래시 자동완성 |
|---|---|
| ~/.claude/plugins/*/skills/ (마켓플레이스) | /plugin:skill 노출 — 공식 |
| ~/.claude/skills/ (개인 드롭) | /skill 노출 — 공식 |
| Claude Code 내장 번들 (%AppData%/.../skills-plugin/...) | 노출 안 됨 — description 자동 활성화만. 비공식 |
인벤토리 발견 ≠ 슬래시 호출 가능. 모르면 안내 생략하고 description 매칭에 맡길 것.
| 에이전트 | 전역 | 프로젝트 |
|---|---|---|
| Claude Code | ~/.claude/settings.json, ~/.claude.json | .mcp.json, .claude/settings.json, .claude/settings.local.json |
| Cursor | ~/.cursor/mcp.json | .cursor/mcp.json |
| Gemini CLI | ~/.gemini/settings.json | .gemini/settings.json |
| Codex CLI | ~/.codex/config.toml | (프로젝트 레벨 없음) |
| Windsurf | ~/.windsurf/config.json | .windsurf/config.json |
각 config에서 MCP 서버의 이름 + 용도 힌트(command/args)를 뽑는다. 모든 에이전트를 다 스캔하되, 없는 경로는 조용히 넘어간다.
수집 결과를 다음 형태로 내부에 유지:
SKILLS:
Global (skills.sh): [skill-a, skill-b, ...]
Global (plugin): [plugin-skill-1, ...]
Project: [project-skill-1, ...]
MCPs:
Global (Claude Code): [pencil, gmail, ...]
Global (Cursor): [...]
Project (.mcp.json): [...]
Step 1의 프로젝트 분석을 자체 평가: "사용자가 추측하지 않아도 될 만큼 초안을 쓸 수 있는가?"
Yes → Mode A (detected). Step 4로.
No → Mode B (sparse). 정확히 한 가지만 질문:
이 프로젝트에서 뭘 만들려고 하세요? 한 줄로 알려주시면 초안을 만들어볼게요.
답변을 받아 Step 4의 분석 결과 대신 사용.
임계치(파일 수 등)를 하드코딩하지 말 것. 애매하면 Mode B 선호 — 짧은 질문 한 번이 잘못된 초안보다 싸다.
Step 2의 인벤토리는 Mode A/B 판단에 쓰지 않는다 (프로젝트의 성격과 무관).
인벤토리를 사전 필터링해서 초안의 ## External Tools에 담는다. 큐레이션 규칙은 두 트랙 동일:
| 감지 위치 | 기본 선택 |
|---|---|
| 프로젝트 레벨 config | ✅ 선택됨 (팀원이 알아야 할 가능성 높음) |
| 전역이지만 분석에서 관련성 확인 | ✅ 선택됨 (예: Java 프로젝트에 obsidian-md 스킬 → 무관, Next.js 프로젝트에 svelte MCP → 무관) |
| 전역이고 관련성 불명확 | ❌ 선택 안 됨 (개인 도구일 가능성) |
선택된 것만으로 섹션 규칙에 따라 공개 지침 파일(트랙 A: AGENTS.md / 트랙 B: CLAUDE.md) 전체를 생성한다. 섹션별로 쪼개지 말고 완성된 파일을 제시.
초안 + 인벤토리 큐레이션 결과를 함께 보여주고 비판을 받는다:
[초안 전체]
## External Tools 큐레이션
자동으로 아래 {N}개를 포함했습니다 (근거: 프로젝트 레벨 또는 분석 관련성):
✅ svelte (MCP) - .mcp.json에 선언됨
✅ audit-rules (Skill) - .claude/skills/에 있음
추가 후보 (선택 안 됨):
⏸ pencil (MCP, 전역) - 디자인 도구. 이 프로젝트에 필요?
⏸ gws-gmail (MCP, 전역) - Gmail. 이 프로젝트에 필요?
... (최대 10개까지, 나머지는 "(외 {M}개)")
어떻게 할까요?
1. 좋음 — 이대로 저장
2. 고칠 부분 있음 — 어디를 어떻게 (자유 기술)
3. 도구 선택 변경 — 추가할 이름 / 뺄 이름
4. 다시 — 이 관점을 강조해서 ({강조점})
5. 취소
2 → 지정된 부분만 수정, 업데이트된 전체 파일 다시 제시, Step 5로.3 → 사용자가 지정한 도구 추가/제거 반영, 전체 파일 다시 제시, Step 5로.4 → 새 강조점으로 재작성, Step 5로.1 → 디스크에 쓰기. 트랙 A → Step 7. 트랙 B → Step 8.5 → 조용히 중단.반복 시 Step 1 분석과 Step 2 인벤토리 재실행 금지. 이미 수집한 데이터로 초안만 재생성한다.
트랙 B는 이 단계를 스킵하고 Step 8로. CLAUDE.md가 source-of-truth라 브릿지가 필요 없다.
Claude Code는 AGENTS.md를 직접 읽지 않습니다. 브릿지를 어디에 둘까요?
a) .claude/CLAUDE.md (개인별, .gitignore에 추가)
b) CLAUDE.md (저장소 루트, 팀 공유)
a → .claude/CLAUDE.md에 @../AGENTS.md 한 줄. .gitignore에 .claude/ 없으면 추가.b → CLAUDE.md (루트)에 @AGENTS.md 한 줄.Gemini CLI 가이드는 출력만 한다 (외부 config 금지):
Gemini CLI 사용자는 ~/.gemini/settings.json에 다음을 추가하면 AGENTS.md를 자동으로 읽습니다:
"context": { "fileName": ["AGENTS.md", "GEMINI.md"] }
트랙 A:
완료:
- AGENTS.md ({N}줄) — External Tools에 {K}개 도구 선언됨
- {브릿지 경로}
다음에 할 수 있는 것:
- 에이전트가 실수할 때마다 Boundaries에 누적 → 같은 실수 반복 방지
- 공개 지침에 선언된 도구를 기준으로 전역 스킬/MCP 정리
(향후 별도 스킬이 생기면 여기서 안내)
트랙 B:
완료:
- CLAUDE.md ({N}줄) — External Tools에 {K}개 도구 선언됨
- 브릿지 없음 (CLAUDE.md가 source-of-truth)
다음에 할 수 있는 것:
- 에이전트가 실수할 때마다 Boundaries에 누적 → 같은 실수 반복 방지
- 팀 구성이 바뀌어 다른 에이전트도 쓰게 되면 audit-public-rules의
트랙 마이그레이션으로 AGENTS.md + 브릿지로 전환 가능
# {Project Name} + 1–3문장 overview. 무엇이고 누구를 위한 것인지 서술. 어떻게 빌드하는지는 쓰지 않는다.
## Boundaries — 빈 3-tier 스켈레톤. 헤딩은 영어 고정, 주석은 사용자 언어. 한국어 예:
## Boundaries
### Always do
### Ask first
### Never do
<!-- 에이전트가 실수할 때마다 여기에 규칙을 누적하세요.
Error-driven growth: 에이전트가 선을 넘었을 때 교정 내용을
기록해두면, 다음 에이전트가 같은 실수를 반복하기 전에
이 섹션을 읽고 참고합니다. -->
| 섹션 | 포함 조건 |
|---|---|
| ## External Tools | Step 4의 큐레이션 결과가 1개 이상. 각 항목은 ### {name} ({type}) 헤딩 + 1줄 설명 |
| ## Git Workflow | git log에서 명확한 커밋 패턴(Conventional Commits, 티켓 prefix) 감지 |
| ## References | 리뷰 루프에서 사용자가 spec/ADR/design doc 명시 |
| ## Project Structure | 다중 모듈 + 비자명한 컨벤션 (source of truth, 생성 디렉토리, 수정 금지 영역) |
| ## Code Style | linter/formatter가 강제하지 않는 스타일 규칙이 드러남 |
| ## Testing | 비자명한 테스트 컨벤션 (mock 정책, fixture 위치, 단일 실행 명령) |
조건부 섹션이 하나도 해당하지 않으면 AGENTS.md는 # Project Name + overview + ## Boundaries만으로 완성. 유효하고 완결된 결과 — 실패가 아니다.
## External Tools 포맷 예시## External Tools
### svelte (MCP)
Svelte 5 문서/진단/자동수정. `list-sections`로 목차 확인 후 `get-documentation`
으로 필요한 섹션을 가져오고, `svelte-autofixer`를 모든 Svelte 코드에 적용한다.
### audit-rules (Skill)
AGENTS.md 품질 진단 및 브릿지 연결성 체크. AGENTS.md나 브릿지 수정 후 실행한다.
각 항목은 도구 이름 + 타입 + 이 프로젝트에서의 사용 맥락 1–3줄. 일반적인 도구 설명은 쓰지 않는다.
package.json scripts — 에이전트는 원본을 직접 읽는다.README.md 내용을 overview에 그대로 복사하기 (1–3문장 패러프레이즈)## 경계 ❌, ## Boundaries ✅)## External Tools에 덤프하기 (Curate, don't enumerate)~/.gemini/settings.json 등 외부 에이전트 config 수정하기 (가이드 출력만)/xxx)을 검증 없이 추측해서 사용자에게 안내하기## External Tools 본문에 슬래시 호출 방식 명시 (환경마다 다름)testing
도메인 일반 패턴을 강의 모드로 가르치는 인지과학 기반 학습 스킬. AI가 가상 도메인 전문가(선생님) 역할을 하고 사용자가 학생으로 낯선 도메인을 차근차근 배운다. 메뉴로 시작해서 페이즈를 골라 잠수 → 능동 회상 Q&A → 자기 설명(Feynman) 순서로 진행. Dunlosky 메타분석 기반 인지과학 8원칙(Cognitive Load, Practice Testing, 정교화 질문, Self-Explanation, Schema 연결, Dual Coding, Desirable Difficulty, 분산 학습)을 본문에 명시 적용. 도메인의 법령·산업 표준·인증을 학습 본문에 정식 통합 (출처 인용이 아니라 학습 대상). AI가 판단해 보편적이고 자료 풍부한 도메인은 자료 요청 없이 진행, 좁고 깊은 도메인일 때만 사용자에게 자료 있는지 묻기. 산출물은 학습 노트 스타일 (진도 체크박스 + 페이즈별 일관 구조 + 출처 링크). 페르소나 강요 없이 보편 액터 표현("사원 A", "관리자 A"). bigpicture의 이전 단계로 작동하거나 단독 사용 가능. Triggers — "도메인 학습", "낯선 도메인 가르쳐줘", "이 산업 어떻게 굴러가요", "선생님 모드", "1:1 강의", "도메인 입문", "도메인 일반 패턴", "HR 플랫폼이 뭔지", "이커머스 흐름", "domain classroom", "/domain-classroom".
development
빅픽처 이벤트스토밍의 1:1 분석 도구. 학습 단계(domain-classroom)에서 머리에 박힌 도메인 일반 패턴을 클라이언트 시스템에 매핑해 빅픽처 산출물(시간순 도메인 이벤트·페이즈·액터·외부시스템·핫스팟·피벗)을 누적한다. domain-classroom의 학습 노트(docs/learning-notes/{도메인}- classroom.md)와 클라이언트 자료(RFP·요구사항정의서·기존 시스템 스키마)를 입력으로 받아 페이즈 단위로 진행. 페르소나·서사 없는 분석 톤. 도메인 이벤트 판별 4기준(도메인 전문가 관심·비즈니스 상태 변화·법적 의미·다른 흐름 트리거)을 명시 적용해 UI/Telemetry 이벤트 혼입 방지. 이벤트는 한국어 자연어 + Code Identifier 이중 표기. 핫스팟에 ID·답할 위치·확신도 태그 부여. 산출물은 docs/eventstorming.md 단일 파일로 시작, 후속 단계 스킬(process-modeling·software-design)이 추가될 때 폴더로 자연 분기. Initial/Update/Cycle 모드 지원 — 코드 작성 후에도 다시 사이클 가능. Triggers — "빅픽처", "빅픽처 만들어줘", "이벤트스토밍", "도메인 이벤트 정리", "Big Picture EventStorming", "페이즈 매핑", "도메인 산출물 정리", "/bigpicture".
data-ai
빅픽처 이벤트스토밍의 1:1 학습 친화 변형. 그룹 워크샵에서 도메인 전문가가 던지는 이벤트를 받아 적는 대신, AI가 가상 도메인 전문가 역할을 하고 사용자가 학습자로 1:1 인터뷰하며 빅픽처를 누적한다. 산출물(시간순 도메인 이벤트·액터· 외부시스템·핫스팟·피벗)은 빅픽처 이벤트스토밍과 거의 동일하지만, 한 보드에 한 번에 펼치는 방식이 아니라 **한 액터·한 챕터씩 시간순 서사로 누적**한다. 각 장면마다 "왜 이게 필요한가?" 설명을 곁들여 학습자가 따라올 수 있게 한다. RFP·요구사항정의서·기존 도메인 자료를 입력으로 받거나, 자료가 없으면 AI 사전 리서치(보편 사례·법령·산업 표준)로 보충해 진행. 페르소나 시점의 챕터 단위 (5~7개 장면) + 확신도 태그 [확실/일반론/추측]로 검증 지점 명시 + 사용자 인터랙션 + 액터 전환으로 빅픽처를 점진적으로 채운다. 산출물 저장은 옵셔널 — 이해 자체가 목적이다. Triggers — "낯선 도메인 이해", "도메인 차근차근 알려줘", "1:1 빅픽처", "솔로 이벤트스토밍", "RFP 분석", "비즈니스 흐름 이해", "액터 시나리오", "신규 프로젝트 도메인 파악", "빅픽처 스토리타임", "bigpicture storytime", "/bigpicture-storytime".
databases
PostgreSQL DB에 직접 접근하는 스킬. DB 조회, 테이블 구조 확인, 데이터 검증이 필요할 때 사용한다. Node.js 스크립트로 직접 연결하며 접속 정보는 환경변수 또는 credentials 파일에서 읽는다. "postgres 조회", "DB 확인", "테이블 구조", "pg-query", "쿼리 실행", "데이터 검증", "PostgreSQL 접속" 같은 요청에 트리거한다.