Bootcamp / Agent · 프로젝트

CMDS BOOTCAMP 1기 · AI AGENT WORKFLOW · 2·3차시

내 프로젝트를
끝까지 한 번.

1차시에 만든 기획 문서를 실습 볼트에 프로젝트로 등록합니다. 기획은 볼트에, 실행은 DEV 폴더에 두고, 첫 결과를 만든 뒤 검사하고 고쳐서 웹 한 장으로 냅니다. 볼트에는 강사가 쓰는 시스템 파일과 메타데이터 규격, 그 규격을 지키게 하는 스킬이 들어 있습니다.

2차시 2026.11.06 금 19:30–21:30 · 3차시 11.07 토 10:00–12:00 · 사례발표 11.07 토 13:30 KST

파일 46개 · 합성 예시 프로젝트 1개 · 스킬 cmds-standard 와 스크립트 3개(check_note.py · new_project.py · build_concept.py, 표준 라이브러리만). SHA-256 d7f6d2dc2df6…

THE FLOW

기획은 볼트에,
실행은 DEV에.

1차시 숙제(니즈 · 진행 상황 · 대체할 일 · 기대 성과 · 도식)가 그대로 기획서의 다섯 칸이 됩니다. 프로젝트 하나 = 볼트 폴더 하나 + DEV 폴더 하나. 둘은 서로를 가리키고, 그 사이를 상태 파일이 잇습니다.

기획은 볼트에, 실행은 DEV에. 둘 사이를 상태 파일이 잇는다.
단계어디에남는 파일차시
기획볼트 10. Projects/<날짜-슬러그>/<이름> 기획서.md · 작업 노트 3~5개2
연결DEV ~/DEV/<슬러그>/DEV README.md(볼트로 돌아가는 링크) · 기획서 localDev2
산출DEV첫 작업 산출 파일 · <이름> 상태.md 새 구역2
검증·스킬볼트 + DEV<이름> 재발방지 규칙.md · .claude/skills/<내 스킬>/SKILL.md3
발행DEV concept-site/ → 웹기획서 published · publishedUrl · <이름> 마무리.md3

BEFORE YOU START

메인 볼트 밖에 풀고,
새 보관함으로 엽니다.

  1. ZIP 을 메인 볼트 밖 새 폴더에 풉니다(예: ~/Documents/CMDS-Project-Vault/).
  2. Obsidian → 보관함 열기 → 폴더를 보관함으로 열기. 커뮤니티 플러그인은 없습니다. 보드가 안 보이면 설정 → 코어 플러그인 → Bases.
  3. 터미널에서 그 폴더로 가서 에이전트를 엽니다: cd ~/Documents/CMDS-Project-Vault → claude (Codex 는 codex). 폴더 신뢰를 물으면 허용합니다. 스킬이 자동으로 잡힙니다.
  4. 나.md 를 5분 채웁니다. 에이전트가 내 말투와 범위를 여기서 배웁니다.
  5. 아래 P00 부터 복사합니다.

고객 원본 · 실명 · 연락처 · 계정은 넣지 않습니다. 로컬 파일이라도 에이전트가 읽으면 내용이 모델 서버로 갈 수 있습니다. AI 구독 · 호스팅 요금은 수강료와 별도이고, 발행은 내가 승인한 한 번만 합니다. Windows 에서는 python3 대신 python 또는 py.

WHAT'S INSIDE

볼트의 하네스는
시스템 파일과 규격입니다.

에이전트는 볼트를 열면 CLAUDE.md 를 먼저 읽고, 거기서 규격 세 파일을 불러옵니다. 노트를 만들 때는 스킬 cmds-standard 가 그 규격을 적용하고, 끝났다고 말하기 전에 검사기를 돌립니다. 규칙은 rules 에, 순서는 스킬에, 판정은 검사기에 있습니다.

시스템 파일이 규격을 부르고, 스킬이 규격대로 쓰고, 검사기가 끝을 판정한다.
자리무엇
CLAUDE.md · AGENTS.md시스템 파일. 볼트 목적 · 폴더 지도 · 하지 말 일 · 멈출 조건 (Claude / Codex · Cursor)
.claude/rules/메타데이터 규격 · 쓰기 규칙 · 프로젝트 규칙
.claude/skills/cmds-standard/규격 적용 스킬. 노트 쓰기 · 새 프로젝트와 DEV 연결 · 컨셉 페이지
.claude/skills/obsidian-markdown · obsidian-bases · json-canvasObsidian 문법 스킬 3종(kepano/obsidian-skills 원본 그대로, MIT). 문법은 이 셋, 속성 이름과 값은 규격이 이긴다
나.md · 홈.md에이전트가 나를 아는 한 장 · 프로젝트 보드
10. Projects/2026-11-06-회의록-실행항목-정리/합성 예시 프로젝트. 기획서 · 상태 · 작업 3 · 지도 캔버스. 검사 통과 견본
20. Knowledge/기준 문서 · 참고 자료 (비식별 사본만)
90. Settings/템플릿 4종(기획서 · 작업 · 상태 · 노트) · Base 2개
프롬프트.md이 페이지의 P00~P09 와 같은 원본

규격 한눈에

  • 프론트매터는 1번 줄부터. 필수 7속성: type · aliases · description · author · date created · date modified · tags
  • description 은 영어 1~2문장, 큰따옴표. 무엇이 들었고 언제 참고하는지
  • YAML 은 2칸 스페이스, 본문 목록은 탭. YAML 안 위키링크는 큰따옴표
  • 날짜는 YYYY-MM-DD. status 는 unread · reading · inProgress · completed · archived
  • 표 앞 빈 줄, 이어지는 콜아웃 사이 빈 줄. 도식 라벨은 큰따옴표, 색은 %% @key: 로

검사 한 줄

python3 .claude/skills/cmds-standard/scripts/check_note.py

맨 끝 summary: FILES=… FAIL=0 WARN=… 이 통과입니다. 검사기는 값이 있는지를 보고, 값이 맞는지는 사람이 봅니다. 아무 파일도 고치지 않습니다. 본 파일이 0개면 통과가 아니라 멈춥니다. .canvas 도 봅니다(깨진 카드 · 끊긴 화살표).

TWO SESSIONS

2차시는 손으로 한 번,
3차시는 검사하고 굳혀서 냅니다.

차시블록할 일프롬프트
2차시기획서 발표 (15분)한 사람 2분: 니즈 한 줄 · 대체할 일 · 도식 한 장없으면 P01
2차시실습 5 (25분)볼트 열기 · 내 기획서를 프로젝트로 등록 · 검사 FAIL 0P00 · P02
2차시실습 6 (30분)작업 쪼개기 · DEV 연결 · 첫 작업 산출(시작 전 승인 한 곳)P03 · P04 · P05
2차시결과 확인 (8분)볼트↔DEV 왕복 링크, 상태 파일만 보고 새 세션 재개P06
3차시검증·복구 (20분)검사기 전체 → git diff → 고른 변경만 고침 → 재발방지 규칙 한 줄P07
3차시내 스킬 (14분)손으로 한 번 한 일을 SKILL.md 로 → 두 번째 입력 재실행P08
3차시발행 (25분)컨셉 페이지 → 공개 점검 → 사람 승인 → 발행 → published 기록P09
3차시내 시스템 한 장 (18분)완성 · 한계 · 다음 개선 · 증거 파일 경로 · 30일 운영 = 오후 발표 재료마무리

입력 자료가 없거나 민감하면 예시 프로젝트를 복제해 이름만 바꾸거나, 1차시 키트의 사례 1·2 자료를 20. Knowledge/ 에 넣어 같은 흐름으로 합니다.

COPY, ADAPT, VERIFY

복사한 다음,
결과 파일을 직접 엽니다.

대괄호 [ ] 만 내 것으로 바꿉니다. 슬래시 명령에 기대지 않는 일반 요청문이라 Claude Code · Codex · Cursor 어디서나 됩니다.

2차시 · 11.06 금

P00

볼트 열기와 시작 기록

이 폴더는 내 프로젝트 실습 볼트야. CLAUDE.md 를 읽고, 이 볼트에서 네가 지켜야 할 규칙을 다섯 줄로 요약해 줘.
그다음 이 폴더를 git 저장소로 시작하고 지금 상태를 첫 커밋으로 남겨 줘(메시지: "실습 볼트 시작"). git 이 없으면 하지 말고 그렇다고만 말해 줘.
마지막으로 cmds-standard 스킬의 검사기를 볼트 전체에 돌려서 summary 줄을 보여 줘.

끝난 기준 규칙 다섯 줄, 첫 커밋(또는 "git 없음"), summary: … FAIL=0

P01

기획 인터뷰 (기획 문서가 아직 없을 때만)

내가 자동화하고 싶은 일을 기획 문서로 만들고 싶어. 질문을 한 번에 하나씩 해 줘.
순서: 니즈(왜 필요한가) → 현재 상태(지금 어떻게 하고 시간이 얼마나 드나) → 대체할 일(AI에게 넘길 것, 사람이 남길 것, 하지 말 일, 멈출 조건) → 기대 성과(성공을 무엇으로 재나) → 흐름(입력에서 결과까지 단계).
내 답에 없는 내용은 채우지 말고, 다섯 가지를 다 들으면 요약해서 보여 줘. 파일은 아직 만들지 마.

끝난 기준 다섯 칸 요약이 화면에 있다(파일 없음)

P02

내 기획 문서를 프로젝트로 등록

cmds-standard 스킬로 새 프로젝트를 등록해 줘. 이름: [프로젝트 이름], 코드: [ESG 같은 영문 대문자], 슬러그: [esg-review 같은 영문], 마감: [2026-11-07].
DEV 폴더는 아직 만들지 마(--no-dev). 먼저 --dry-run 으로 만들 파일을 보여 주고, 내가 좋다고 하면 만들어.
그다음 내 기획 문서 [파일 경로 또는 아래 붙여넣기]의 내용을 기획서의 니즈 · 현재 상태 · 대체할 일 · 기대 성과 · 워크플로 도식 칸에 옮겨 줘.
내 문서에 없는 내용은 지어내지 말고 "빈칸: 무엇이 필요한지" 로 남겨. description 은 영어 1~2문장으로.
끝나면 그 프로젝트 폴더에 검사기를 돌려 FAIL 0 이 될 때까지 고치고, summary 줄과 남은 WARN 을 보여 줘.

끝난 기준 10. Projects/<날짜-슬러그>/<이름> 기획서.md 에 내 문서 내용, 도식 1개 이상, 검사 FAIL=0

P03

작업 쪼개기와 상태 기록

[프로젝트 이름] 기획서를 읽고 작업을 3~5개로 나눠 작업 노트를 만들어 줘(작업/ 폴더, 이름은 [코드]-02 처럼 이어서).
작업마다 doneWhen 에는 파일을 열어 확인할 수 있는 끝 기준 한 줄, dueDate 를 넣어. 첫 번째로 할 작업 하나만 inProgress, 나머지는 unread.
기획서에 없는 작업은 만들지 마. 상태 파일 맨 아래에 "작업 나누기" 구역을 붙이고, 검사기를 돌려 FAIL 0 을 보여 줘.

끝난 기준 작업 노트 3~5개가 기획서 작업 보드에 보인다, 상태 파일 새 구역, FAIL=0

P04

DEV 폴더 연결

[프로젝트 이름] 프로젝트에 DEV 폴더를 연결해 줘. cmds-standard 의 new_project.py 를 --link-dev 로 실행해(이름·코드·슬러그는 등록 때와 같게). 먼저 --dry-run 으로 보여 줘.
연결 뒤 기획서 localDev 가 DEV 폴더를 가리키는지, DEV 의 README.md 에 볼트 기획서로 돌아가는 링크가 있는지 열어서 확인해 줘.
코드 · 데이터 · 산출 파일은 DEV 에만, 기획 · 결정 · 상태는 볼트에만 둔다는 규칙을 지켜. 상태 파일에 "DEV 연결" 구역을 붙여.

끝난 기준 ~/DEV/<슬러그>/README.md 가 있고 기획서 localDev 와 서로를 가리킨다

P05

첫 작업 산출 (승인 한 곳)

작업 [코드-NN 제목] 을 DEV 폴더에서 해 줘. 시작하기 전에 무엇을 만들지, 어떤 파일을 읽을지, 결과 파일이 어디에 생길지 세 줄로 말하고 내 승인을 기다려.
승인하면 만들고, 끝나면 결과 파일을 다시 열어 확인한 뒤 작업 노트의 result 와 status 를 고치고 상태 파일에 구역을 붙여.
기획서의 하지 말 일이나 멈출 조건에 닿으면 만들지 말고 멈춰서 이유를 말해. 실행하지 않은 것을 완료로 적지 마.

끝난 기준 DEV 에 산출 파일, 작업 노트 result·status, 상태 파일 구역(승인 기록 포함)

P06

새 세션에서 재개

[프로젝트 이름] 상태 파일만 먼저 읽고, 지금 어디까지 왔는지와 다음에 할 일 하나를 말해 줘.
완료로 표시된 단계는 다시 하지 마. 마지막 구역의 사람 승인이 "승인됨"이 아니면 다음 단계로 가지 말고 나에게 물어.

끝난 기준 상태 파일 맨 아래 구역과 같은 말을 한다, 완료 단계를 반복하지 않는다

OPT

선택 · 프로젝트 지도 캔버스

[프로젝트 이름] 프로젝트 지도를 캔버스로 만들어 줘(json-canvas 스킬): 같은 폴더에 "[프로젝트 이름] 지도.canvas".
기획서 · 상태 파일 · 작업 노트 · 기준 문서는 파일 카드로, DEV 폴더는 글 카드 하나로 놓고, 작업 순서와 "실행 → 기록" 흐름을 화살표로 이어.
없는 파일을 카드로 만들지 마. 만든 뒤 검사기를 돌려 캔버스 FAIL 이 0 인지 보여 주고, 기획서 7. 연결에 지도 링크를 넣어.

끝난 기준 Obsidian 에서 캔버스가 열리고 카드가 모두 실제 노트를 보여 준다, 검사 FAIL=0

3차시 · 11.07 토

P07

검증과 복구

검사기를 볼트 전체에 돌려서 FAIL 과 WARN 을 보여 줘. 고치기 전에 git diff 로 어제 첫 커밋 이후 바뀐 파일 목록을 보여 줘.
내가 고른 변경만 고치거나 되돌려 줘(고르지 않은 파일은 건드리지 마). 고친 뒤 검사기를 다시 돌려.
같은 실수가 다시 안 나게 [프로젝트 이름] 재발방지 규칙 노트에 날짜를 붙인 규칙 한 줄을 써 줘(없으면 노트 템플릿으로 만들어).

끝난 기준 FAIL=0, 고른 변경만 바뀐 diff, 날짜 붙은 규칙 한 줄

P08

손으로 한 번 한 일을 내 스킬로

어제 P05 에서 한 일을 다시 시킬 수 있게 스킬로 만들어 줘: .claude/skills/[영문-스킬-이름]/SKILL.md.
cmds-standard 의 SKILL.md 와 같은 칸으로 써: 시작 조건, 사용하지 않을 조건, 단계(사람 승인 위치 포함), 출력 형식, 실패 처리, 변경 이유 표.
description 에는 언제 쓰는지와 NOT for 를 같이 쓰고, 결과를 볼트에 기록할 때는 cmds-standard 규격을 따르게 해.
만든 다음 내 두 번째 입력 [파일 경로]으로 새로 실행하고, 첫 실행과 무엇이 달랐는지 상태 파일에 적어.

끝난 기준 내 스킬 SKILL.md, 두 번째 입력의 산출 파일, 차이 기록

P09

컨셉 페이지 만들고 발행하기

[프로젝트 이름] 기획서로 컨셉 페이지를 만들어 줘(cmds-standard 의 build_concept.py). 공개 점검 결과를 보여 주고, PRIVACY_FAIL 이 있으면 기획서에서 고친 뒤 다시 만들어.
페이지를 브라우저로 열어 줘. 내가 문장을 고쳐 달라고 하면 DEV 의 index.html 에서 고쳐.
내가 "발행해"라고 하면 그때 concept-site 폴더에서 Vercel 로 발행하고 주소를 알려 줘(로그인이 필요하면 내가 직접 할 명령을 알려 줘).
발행 뒤 기획서 published 와 publishedUrl 을 고치고 상태 파일에 구역을 붙인 다음 검사기를 돌려.

끝난 기준 공개 점검 0, 사람 승인, 발행 주소, 기획서 published: true·publishedUrl, FAIL=0

END

마무리 한 장 (3차시 F)

[프로젝트 이름] 마무리 노트를 만들어 줘(같은 프로젝트 폴더, 노트 템플릿).
칸: 완성한 것 / 아직 안 되는 것(한계) / 다음 개선 하나 / 증거 파일 경로(기획서·상태·산출·스킬·발행 주소) / 30일 동안 어떻게 굴릴지.
내 파일에 없는 성과는 쓰지 마. 끝나면 검사기를 돌려.

끝난 기준 <이름> 마무리.md 가 검사 FAIL=0, 모든 성과에 증거 파일 경로

PUBLISH ONCE

페이지는 기획서의 사본이고,
발행은 내가 승인한 한 번입니다.

만들기

  1. build_concept.py 가 기획서 다섯 칸으로 concept-site/index.html 을 만듭니다. 기획서 검사가 FAIL 이면 만들지 않습니다.
  2. 공개 점검이 같이 돕니다: 이메일 · 전화번호 · 로컬 경로 · 내부 링크 · 키 모양 문자열. PRIVACY_FAIL=0 이 아니면 기획서(원본)를 고칩니다.
  3. 문장 · 디자인은 DEV 의 index.html 에서 다듬습니다. 다시 만들면 index.generated.html 로 따로 써서 내 수정을 덮지 않습니다.

내보내기

  1. Vercel 계정(무료)이 있으면: 처음 한 번 에이전트 창에서 ! npx vercel login 을 내가 직접 입력합니다.
  2. 그다음 에이전트에게 "발행해"라고 하면 concept-site/ 에서 npx vercel deploy --prod --yes 를 실행하고 주소를 알려 줍니다.
  3. 회사 정책이나 계정 때문에 어렵다면 concept-site 폴더를 ZIP 으로 묶어 수업 제출처에 냅니다.
  4. 발행 뒤 기획서 published: true · publishedUrl 을 고치고 검사합니다.

SETTINGS FROM SESSION 1

1차시에 보여 드린
세팅 값

cmux 계층과 단축키 (강사 환경 기준)

하는 일단축키
워크스페이스 만들기Ctrl + Cmd + N
탭 만들기Cmd + T
워크스페이스 그룹 만들기Cmd + Shift + G
워크스페이스 이름 바꾸기Cmd + Shift + R
화면 좌우로 나누기Cmd + D
자주 쓰는 탭 · 워크스페이스 고정오른쪽 클릭 → 핀

계층은 윈도우 → 워크스페이스 그룹 → 워크스페이스 → 탭 네 단계입니다. 용도별로 색과 이름을 붙이면(강의 · 개발 · 개인) 세션이 많아져도 찾습니다. 앱 버전에 따라 단축키가 다를 수 있습니다.

자주 가는 폴더로 한 번에

  1. Finder 에서 폴더를 고르고 Cmd + Option + C → 경로가 복사됩니다.
  2. 터미널에서 open ~/.zshrc 로 열어 맨 아래에 한 줄을 붙입니다.
alias pv='cd "$HOME/Documents/CMDS-Project-Vault"'
  1. 저장 뒤 source ~/.zshrc. 이제 pv 만 치면 실습 볼트로 갑니다. cd 자체를 덮어쓰는 alias 는 만들지 않습니다.
  2. Raycast(무료)에서도 같은 일을 단축어로 걸 수 있습니다.

TAKE IT WITH YOU

내려받을 것

발표 슬라이드

1차시 슬라이드 ↗2차시 슬라이드 ↗3차시 슬라이드 · 수업 당일 공개

볼트에 함께 든 Obsidian 문법 스킬 3종(obsidian-markdown · obsidian-bases · json-canvas)은 kepano/obsidian-skills(MIT, Steph Ango) 원본을 고치지 않고 넣었습니다. 각 폴더에 LICENSE 가 있습니다.

함께 볼 공식 자료: Skills · Memory (CLAUDE.md) · Permissions · Obsidian Bases · 질문 ask.cmdspace.work