agent-cowork/skills/shared-docs/SKILL.md
멀티 레포 환경의 공유 문서(공통 PRD, 도메인 규칙, ADR 등)를 **git submodule**로 관리. 한 스킬 안에서 다음 4동작을 처리: init(공유 문서 레포 신규 생성 + submodule 연결), sync(원격 갱신 받기), write(문서 작성 → push → PR, GitHub Flow 기반), doctor(흔한 함정 검증). 경로/브랜치/원격 URL은 **`.gitmodules`를 source of truth로** 읽고, 복수 submodule 환경의 식별 힌트만 `AGENTS.md`/`CLAUDE.md`의 `## External Tools` 섹션에 자기 엔트리로 남긴다 — 별도 config 파일은 만들지 않는다. GitHub Flow 기본: main + short-lived 브랜치 + PR. 작은 수정은 main 직접 push 허용. Triggers: "shared docs", "공유 문서 셋업", "submodule 추가", "submodule 갱신", "공유 문서 수정", "공유 문서 PR", "공유 문서 진단", "공유 PRD 업데이트", "shared-docs init", "shared-docs sync", "shared-docs write", "shared-docs doctor", "/agent-cowork:shared-docs". 모노레포 대신 멀티 레포로 쪼개되 PRD나 도메인 규칙 같이 여러 레포에서 동시에 참조해야 하는 문서를 한 곳에서 관리하면서 각 레포에 연결할 때 사용.
npx skillsauth add dev-goraebap/skills shared-docsInstall 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.
여러 레포로 쪼개진 프로젝트(프론트/백/모바일/...)에서 공유되어야 하는 문서(공통 PRD, 도메인 규칙, 공통 ADR 등)를 하나의 git 레포로 분리하고, 각 프로젝트 레포에 submodule로 연결해서 운영한다. 모노레포로 통합하지 않으면서 source-of-truth를 한 곳에 두는 패턴 — 새 협업자는 git clone --recurse-submodules 한 줄로 모든 컨텍스트를 받는다.
이 스킬은 다른 트랙 분기 없이 동작 분기만 있다 — init / sync / write / doctor.
| 사용자 발화·상황 | 호출할 동작 |
|---|---|
| "공유 문서 레포 새로 만들자", "submodule로 hr-docs 연결해줘", 새 프로젝트 셋업 중 | init (또는 init --create) |
| "공유 문서 최신으로 받아줘", "shared docs pull", 작업 시작 전 | sync |
| "공유 PRD 수정해서 올려줘", "도메인 규칙에 X 추가하고 PR 만들어줘", 공유 문서 편집 요청 | write |
| "공유 문서 상태 점검", "submodule 뭔가 이상해", 협업자가 clone 후 비어있다고 함 | doctor |
호출 방식:
/agent-cowork:shared-docs <동작> [옵션] (예: /agent-cowork:shared-docs sync)각 동작의 상세 워크플로우는 references/ 분리 — 사용자가 요청한 동작에 해당하는 references만 로드해 토큰 효율 유지.
이 스킬은 경로·브랜치·원격 URL을 하드코딩하지 않지만, 별도 config 파일도 만들지 않는다. 이미 있는 곳(.gitmodules, remote_url 자체)에서 읽거나 추론하고, 복수 submodule 환경에서 어느 게 shared-docs인지 구분이 필요할 때만 AGENTS.md/CLAUDE.md의 ## External Tools 섹션에 자기 엔트리를 한 줄 추가한다 — 이 섹션은 agent-cowork:draft-public-rules가 외부 도구·스킬·MCP 인벤토리로 쓰는 자리와 같으며, shared-docs도 submodule 기반 외부 도구이므로 톤이 맞다. shared-docs는 자기 엔트리만 건드리고 다른 도구의 엔트리는 수정하지 않아 역할 겹침이 없다.
자세한 해결 순서·환경변수·CLI 인자는 references/values.md 참조.
각 동작의 워크플로우·명령·트러블슈팅은 references에 분리되어 있다. 사용자가 어떤 동작을 요청했는지 식별 후 해당 references만 로드한다.
| 동작 | 무엇을 하나 | 상세 |
|---|---|---|
| init | 새 공유 문서 레포 생성(선택) + 현재 레포에 submodule 추가 | references/init.md |
| sync | 원격에서 공유 문서 최신 커밋 받아오기 (git submodule update --remote) | references/sync.md |
| write | 공유 문서 작성·수정 → push (작은 수정) 또는 브랜치+PR (큰 수정), GitHub Flow 기반 | references/write.md |
| doctor | 빈 submodule, 브랜치 불일치, .gitmodules 동기화 등 흔한 함정 검증 | references/doctor.md |
GitHub Flow — 단일 long-lived 브랜치 main + short-lived feature 브랜치 + PR. 문서 레포에 가장 흔한 단순 모델이라 채택.
| 변경 규모 | 권장 흐름 |
|---|---|
| 작은 수정 (오타, 한 단락 수정) | main 직접 push 허용 |
| 큰 변경 (여러 페이지 추가, 구조 변경) | feature 브랜치 + PR |
판단 기준과 명령은 references/write.md에 정리.
모든 동작 시작 전 공통:
| # | 확인 | 실패 시 |
|---|---|---|
| 1 | 현재 디렉토리가 git 저장소 (git rev-parse --git-dir) | "git 저장소 안에서 호출하세요." 후 중단 |
| 2 | 값 해결 통과 (values.md) — init은 입력값 검증, 그 외 동작은 대상 submodule 식별 | 누락 시 친절한 메시지 + 해결 방법 안내 후 중단. doctor는 D8로 잡음 |
동작별 추가 가드레일:
| 동작 | # | 확인 | 실패 시 |
|---|---|---|---|
| init | 1 | 마운트 경로(입력받은 path)가 비어있거나 미존재 | 사용자 확인: 덮어쓰기 / 다른 path / 취소 |
| init | 2 | 원격 인증 ping 통과 (ssh -T <host> 또는 git ls-remote <url>) | init.md 인증 섹션 안내 후 중단 |
| sync | 1 | submodule 디렉토리가 clean (git -C <path> status --porcelain 빈 결과) | dirty면 stash 또는 write 동작 안내, sync 중단 |
| sync | 2 | 부모 레포 working tree가 clean | 경고만 — 사용자가 진행 결정 |
| write | 1 | submodule이 브랜치 위에 있음 (detached HEAD 아님) | git checkout <branch> 자동 실행 (사용자 확인 후) |
| write | 2 | 변경 분석 후 작은/큰 수정 분류를 사용자에게 한 번 확인 | 사용자가 분류를 뒤집을 수 있음 |
| doctor | — | 가드레일 없음 (read-only, 자동 수정은 별도 동의) | — |
.claude/shared-docs.json 등)을 만들거나 읽기 — 같은 정보를 두 곳에 두면 drift가 생긴다. .gitmodules가 이미 source of truth다 (0.6.0 이상)cd <path>로 들어가고 끝나면 cd -로 복귀main 브랜치 force-push — 문서 레포여도 협업자 영향이 큼. 일반 push가 거부되면 큰 수정 흐름(브랜치+PR)으로 전환을 제안할 뿐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 접속" 같은 요청에 트리거한다.