garden
.local.claude/ 문서 정원 관리: 만료 문서 식별, 미반영 지식 수확, 아카이브, INDEX 갱신을 단일 명령으로 수행합니다. 문서가 쌓이거나 정리가 필요할 때 사용하세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
.local.claude/ 문서 정원 관리: 만료 문서 식별, 미반영 지식 수확, 아카이브, INDEX 갱신을 단일 명령으로 수행합니다. 문서가 쌓이거나 정리가 필요할 때 사용하세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
지정 디렉터리의 문서를 심층 분석하여 지식을 추출하고, 기존 문서 갱신 + 신규 문서 생성으로 프로젝트 지식 베이스에 반영합니다.
기술 의사결정 기록 (Architecture Decision Record). 중요한 기술적 결정의 맥락, 대안, 근거를 구조화하여 기록합니다.
현재 디렉터리의 내용을 분석하여 어떤 목적의 폴더인지 파악
슬랙/메일/메신저로 받은 업무 요청 메시지를 분석하여 의도, 핵심 내용, 판단, 액션 플랜, 대응 가이드를 정리합니다.
비즈니스 규칙, 도메인 규칙, 상태 전이 규칙을 하나의 문서로 관리합니다. 변경 이력이 누적됩니다.
열린 질문, 문제 해결, 기술 의사결정, 아이디어 발산을 구조화합니다. 회의록이나 메모 파일 경로를 인자로 전달하거나 직접 질문하세요.
| name | garden |
| description | .local.claude/ 문서 정원 관리: 만료 문서 식별, 미반영 지식 수확, 아카이브, INDEX 갱신을 단일 명령으로 수행합니다. 문서가 쌓이거나 정리가 필요할 때 사용하세요. |
| when_to_use | 문서 정원 관리, 만료 문서 정리, 아카이브와 INDEX 갱신. 메모리 정리는 memory-garden. |
| allowed-tools | Read, Write, Edit, Glob, Grep, Bash, Agent |
| effort | high |
| disable-model-invocation | true |
.local.claude/ 하위 문서의 수명을 관리합니다.
만료된 문서에서 미반영 지식을 수확(harvest)하여 영구 문서에 반영하고, 원본을 아카이브로 이동합니다.
| 데이터 | 경로 | 필수/선택 | 부재 시 동작 |
|---|---|---|---|
| 프로젝트 컨텍스트 | CLAUDE.md | 선택 | 일반 SW 가정으로 진행, [프로젝트 규칙 미확인] 태그 |
| 봇 인덱스 | bot/INDEX.md 또는 .local.claude/ONBOARDING.md | 선택 | 디렉터리 Glob 으로 fallback |
| 비즈니스 규칙 | .local.claude/biz-rules.md | 선택 | Tier 1(도메인 무관) 점검만 수행 |
| 모듈 상세 | .local.claude/modules/{name}.md | 선택 | 코드 Grep 직접 fallback |
| 대상 디렉터리 | .local.claude/ 전체 | 필수 | "정원 관리 대상 없음" |
| frontmatter | 각 파일 상단 | 선택 | 경로 기반 추론 fallback |
| absorb-log | .local.claude/docs/absorb-log.md | 선택 | 미흡수 감지 생략 |
Phase 1 스캔에서 시작해 Phase 2 만료 식별, Phase 3 수확 점검, Phase 4 보고 + 승인, Phase 5 실행 + INDEX 갱신 순으로 진행한다.
[1M 활용] 다음을 단일 메시지에서 병렬로 호출하여 컨텍스트 효율화:
- Glob 병렬:
.local.claude/**/*.md(archive 제외), 카테고리별 경로 패턴(daily/*.md,meetings/*.md,customers/*.md,modules/*.md,projects/**/STATUS.md등) 동시 수집- Bash: mtime 수집(
find ... -printf "%T@ %p\n"또는stat), 파일 수와 줄 수 집계(wc -l) 를 카테고리별로 동시 실행- Read:
CLAUDE.md,.local.claude/INDEX.md,.local.claude/docs/absorb-log.md, 자동 로드 후보(biz-rules.md, customers/.md, modules/.md) 분량 임계 검사용 병렬 로드순차 호출 대신 병렬 호출로 네트워크 왕복 감소 + 전체 정원 상태가 동시에 컨텍스트에 로드되어 Phase 2 만료 식별 + Phase 3 수확 매핑이 한 번에 계산 가능.
.local.claude/ 전체 .md 파일을 수집한다. archive/ 하위는 제외.
find .local.claude/ -name "*.md" -not -path "*/archive/*" -printf "%T@ %Td/%Tm/%TY %p\n" 2>/dev/null | sort -rn
Windows 환경에서는:
find .local.claude/ -name "*.md" -not -path "*/archive/*" | while read f; do echo "$(stat -c '%Y %n' "$f" 2>/dev/null || stat -f '%m %N' "$f" 2>/dev/null)"; done | sort -rn
또는 Glob + Bash stat 조합으로 수집.
| 경로 패턴 | 카테고리 | 유형 |
|---|---|---|
modules/*.md (TEMPLATE/TODO/PLAN 제외) | modules | 영구 |
fe-guide/*.md | fe-guide | 영구 |
be-guide/*.md | be-guide | 영구 |
customers/*.md | customers | 영구 |
ddl/*.md | ddl | 영구 |
pmd/* | pmd | 영구 |
biz-rules*.md, ONBOARDING*.md, INFRASTRUCTURE*.md | core-ref | 영구 |
SKILLS-GUIDE.md, team.md | reference | 영구 |
people/*.md | people | 영구 |
adr/*.md | adr | 영구 |
daily/*.md | daily | 시간 한정 |
daily-todos/*.md | daily-todos | 시간 한정 |
briefing/*.md | briefing | 시간 한정 |
meetings/*.md | meetings | 시간 한정 |
memo/*.md | memo | 시간 한정 |
draft/*.md | draft | 시간 한정 |
learn/*.md | learn | 시간 한정 |
leadership/*.md (config.md 제외) | leadership | 시간 한정 |
reports/*.md | reports | 시간 한정 |
coaching/*.md | coaching | 시간 한정 |
cs/*.md | cs | 시간 한정 |
issues/*.md | issues | 시간 한정 |
prs/*.md | prs | 시간 한정 |
deploys/*.md | deploys | 시간 한정 |
convention-audit/*.md | convention-audit | 시간 한정 |
review/*.md | review | 시간 한정 |
brainstorm/*.md | brainstorm | 시간 한정 |
projects/*/STATUS.md | project-status | 프로젝트 |
projects/**/*.md (STATUS 외) | project-docs | 프로젝트 |
docs/parsed/** | docs-parsed | 즉시 아카이브 |
docs/original/** | docs-original | 즉시 아카이브 |
frontmatter에 category, retention이 있으면 그것을 우선 사용한다.
각 카테고리별 파일 수와 줄 수를 집계한다.
오늘 날짜 기준으로 카테고리별 보존 기간을 적용한다.
| 카테고리 | 보존 기간 | 만료 조건 |
|---|---|---|
| daily | 14일 | 수정일 < 오늘 - 14일 |
| daily-todos | 14일 | 수정일 < 오늘 - 14일 |
| memo | 14일 | 수정일 < 오늘 - 14일 |
| draft | 14일 | 수정일 < 오늘 - 14일 |
| briefing | 30일 | 수정일 < 오늘 - 30일 |
| meetings | 30일 | 수정일 < 오늘 - 30일 |
| learn | 30일 | 수정일 < 오늘 - 30일 |
| leadership | 30일 | 수정일 < 오늘 - 30일 (config.md 제외) |
| reports | 30일 | 수정일 < 오늘 - 30일 |
| coaching | 30일 | 수정일 < 오늘 - 30일 |
| cs | 30일 | 수정일 < 오늘 - 30일 |
| issues | 30일 | 수정일 < 오늘 - 30일 |
| prs | 30일 | 수정일 < 오늘 - 30일 |
| deploys | 30일 | 수정일 < 오늘 - 30일 |
| convention-audit | 30일 | 수정일 < 오늘 - 30일 (changelog.md 제외) |
| review | 30일 | 수정일 < 오늘 - 30일 |
| brainstorm | 30일 | 수정일 < 오늘 - 30일 |
| project-docs | 프로젝트 종료 시 | STATUS.md에 "종료"/"completed" 표기 + 7일 |
| project-status | 프로젝트 종료 시 | 동일 |
| docs-parsed | 흡수 확인 후 | absorb-log.md에서 흡수 완료 확인 시 만료. 미흡수면 /absorb 먼저? 안내 |
| docs-original | 즉시 | 항상 만료 후보 |
| 영구 (modules, guides 등) | 없음 | 아카이브 대상 아님 |
| adr | 없음 | 아카이브 대상 아님 (아키텍처 결정 영구 보존) |
| people | 없음 | 아카이브 대상 아님 (팀원 프로필 영구 보존) |
frontmatter에 retention이 있으면 그것을 우선 사용한다.
예: retention: permanent는 만료 없음, retention: 7d는 7일.
만료 파일 목록을 생성한다.
만료 파일에서 영구 문서에 아직 반영되지 않은 지식을 추출한다.
| 소스 카테고리 | 추출할 정보 | 반영처 | 수확 방법 |
|---|---|---|---|
| daily | 버그/상태전이 발견 | biz-rules.md | "버그", "발견", "상태 코드", "상태 전이" 탐색 |
| daily | 모듈 동작 발견 | modules/*.md | "알게 됨", "확인됨", 모듈명 |
| daily | 교훈/인사이트 | auto memory | "앞으로는", "다음부터", "교훈" |
| meetings | 결정 사항 | biz-rules.md | "결정", "합의", "확정" |
| meetings | 고객 요구 | customers/*.md | 고객사명 + "요구", "요청", "Pain" |
| meetings | 조직 변경 | auto memory (team.md) | "담당", "프로세스", "조직" |
| briefing | 미반영 biz-rules | biz-rules.md | briefing 스킬이 이미 부분 반영, 누락 확인 |
| briefing | 미반영 모듈 변경 | modules/*.md | briefing 스킬 갱신 기록 확인 |
| learn | 학습 결과 | 반영 대상 문서 | "반영 완료" 표기 확인 |
| coaching | 성장 기록 | people/*.md | 피드백 패턴, 성장 영역 |
| cs | 고객 이슈 패턴 | customers/*.md | 고객사명 + 이슈 유형 |
| reports | 분석 결과 | biz-rules.md, modules/*.md | 인사이트/제안 섹션 |
| project STATUS | 프로젝트 교훈 | modules/*.md, auto memory | "교훈", "회고", "결론" 섹션 |
| daily-todos | (수확 불필요) | 없음 | 작업 목록뿐, 스킵 |
| memo | 미승격 메모 | 사용자에게 질문 | /learn, /customer-profile 등으로 승격 여부 |
| draft | (수확 불필요) | 없음 | 발신 콘텐츠, 스킵 |
| issues, prs | (수확 불필요) | 없음 | GitHub에 원본, 스킵 |
| docs-parsed | /absorb 스킬로 처리 | 없음 | absorb-log.md 확인: 흡수 완료면 아카이브, 미흡수면 /absorb {path} 안내 |
| docs-original | (수확 불필요) | 없음 | 바이너리, 스킵 |
[1M 활용] 서브에이전트 분할 대신(또는 병행하여) 메인에서 직접 다중 파일 동시 Read 후 교차 분석:
- 로드: 만료 소스 파일(daily/, meetings/, learn/, reports/, cs/, memo/) 과 반영처 sink 문서(biz-rules.md, modules/.md, customers/.md, team.md, people/*.md, INFRASTRUCTURE.md) 를 동시에 로드
- 교차 분석: {소스의 추출 후보} vs {sink 의 기존 내용}. 이미 반영된 것(SKIP) / 미반영 신규(NEW) / 기존 보강(ENRICH) / 모순(CONFLICT) 한 번에 분류
- 서브에이전트 병렬 위임은 만료 파일 20개+ 또는 총 로드 추정 토큰 ~600K(1M 컨텍스트의 60%; 줄 수로 대략 가늠) 근접 시로 보류. 1M context 내면 메인에서 한꺼번에 처리가 더 정확(소스-싱크 교차 정확도 증가).
만료 파일이 10개 이상이면 서브에이전트에 병렬 위임한다:
Agent A: daily/*.md + daily-todos/*.md 수확 점검
Agent B: meetings/*.md + briefing/*.md + coaching/*.md 수확 점검
Agent C: learn/*.md + reports/*.md + cs/*.md + memo/*.md 수확 점검
각 서브에이전트는:
만료 파일이 10개 미만이면 메인에서 직접 처리한다.
docs/ (parsed+original) 은 수확 없이 즉시 아카이브 대상으로 분류. 파일 수만 집계.
수확 점검과 별도로, 자동 로드 후보 문서가 임계를 초과했는지 검사한다.
| 대상 파일 | 임계 (줄 수) | 초과 시 안내 스킬 |
|---|---|---|
CLAUDE.md (자동 로드) | 200 | /optimize-claude-md |
.local.claude/biz-rules.md (자동 로드 후보) | 200/400 | /biz-rules (분리 가이드) |
human/SETUP.md | 300/500 | /setup-guide (분리 가이드) |
.local.claude/customers/*.md | 300/500 | /customer-profile (분리 가이드) |
.local.claude/modules/*.md | 300 | 사용자 결정 (큰 모듈은 sub-doc 분리 권장) |
bot/*.md | 150 | /dualize-docs 또는 /on-boarding --refresh |
검사 결과는 Phase 4 보고서 "분량 초과 알림" 섹션에 표시. 강제 분리하지 않고 사용자에게 안내만.
사용자에게 다음 형식으로 보고한다:
## /garden 보고서: YYYY-MM-DD
### 현황
| 구분 | 파일 수 | 줄 수 |
|------|--------|------|
| 전체 (.local.claude/) | N | N |
| 영구 참조 | N | N |
| 시간 한정 (활성) | N | N |
| 만료 대상 | N | N |
| 아카이브 기존 | N | N |
### 수확 결과 (반영 필요 N건)
| # | 소스 | 내용 요약 | 반영 대상 | 반영 위치 |
|---|------|----------|----------|----------|
| 1 | daily/YYYY-MM-DD | (예시: 도메인 상태 전이 발견) | biz-rules.md | "해당 상태" 절 |
### 이미 반영된 것 (확인 완료 N건)
| # | 소스 | 내용 | 반영된 곳 |
|---|------|------|----------|
### 승격 질문 (memo N건)
| # | 메모 | 제안 승격 대상 |
|---|------|--------------|
### 미흡수 문서 (docs-parsed)
(absorb-log.md 확인 결과)
- 흡수 완료 N건: 아카이브 가능
- **미흡수 N건**: `/absorb {path}` 먼저 실행 권장
### 분량 초과 알림 (자동 로드 부담 / 비대 위험)
| 파일 | 현재 | 임계 | 권장 조치 |
|------|:----:|:----:|----------|
| (해당 시만 채움) | | | |
임계 초과 0건이면 섹션 통째 생략.
### 아카이브 대상 (N건)
| 카테고리 | 파일 수 | 예시 |
|---------|--------|------|
| daily (14일 초과) | N | 2026-04-02.md |
| docs/parsed (흡수 완료분) | N | weekly/*.md |
### 영구 참조 (변경 없음)
modules/, fe-guide/, be-guide/, customers/, ddl/, people/, adr/ (아카이브 제외)
---
진행하시겠습니까?
- 전체 진행
- 특정 항목 제외 (번호 지정)
- 수확만 (아카이브 안 함)
- 아카이브만 (수확 안 함)
사용자 승인 후 실행한다.
미반영 항목을 영구 문서에 반영한다:
| YYYY-MM-DD | garden 수확: {내용} | {소스} | 추가반영 시 반드시 Read 후 Edit 순서로 최신 상태 확인 후 수정.
만료 파일을 archive/ 하위로 이동한다.
아카이브 디렉터리 구조:
.local.claude/archive/
YYYY-MM/ ← 시간 한정 문서 (월별 그룹)
daily/
daily-todos/
briefing/
meetings/
memo/
draft/
learn/
leadership/
reports/
coaching/
cs/
issues/
prs/
projects/ ← 종료된 프로젝트 (이름으로 그룹)
{project-name}/
docs/ ← 외부 문서 (유형별)
parsed/
original/
이동 절차:
mkdir -p .local.claude/archive/{path}---
archived: YYYY-MM-DD
harvested_to:
- biz-rules.md {반영 섹션} 섹션
- modules/{name}.md {반영 섹션} 섹션
original_path: {원래 상대 경로}
---
rm으로 삭제수확 불필요 카테고리(daily-todos, draft, issues, prs, docs)는 frontmatter의 harvested_to를 비워둔다.
.local.claude/INDEX.md를 현재 상태로 갱신한다.
INDEX.md 구조와 갱신 방법은 아래 "INDEX.md 관리" 섹션 참조.
## /garden 완료: YYYY-MM-DD
### 수확 반영
- biz-rules.md: N건 추가
- modules/{name}.md: N건 추가
- customers/{name}.md: N건 추가
### 아카이브
- 이동: N건, archive/YYYY-MM/ 으로
- docs: N건, archive/docs/ 으로
### 현재 활성 문서: N개 (아카이브 전 N개에서 N개로 감소)
### 다음 만료 예정
| 파일 | 만료일 | 카테고리 |
|------|-------|---------|
/garden 실행 시마다 .local.claude/INDEX.md를 갱신한다.
INDEX.md는 CLAUDE.md에서 @.local.claude/INDEX.md로 자동 로드된다.
60줄 이내를 유지한다. 파일명을 개별 나열하지 않고 카테고리별 요약만.
# .local.claude 문서 인덱스
> 자동 갱신: /garden. 수동 편집 금지.
> 마지막 갱신: YYYY-MM-DD
> archive/는 수확 완료된 문서 보관소. 이력 확인이 필요하면 archive/ 하위를 직접 탐색.
## 영구 참조
| 경로 | 파일 수 | 용도 |
|------|--------|------|
| modules/ | N | 모듈별 서비스, 테이블, 이벤트 분석 |
| be-guide/ | N | BE 코드 컨벤션 (코드 작성 시 필수) |
| fe-guide/ | N | FE 코드 컨벤션 (코드 작성 시 필수) |
| customers/ | N | 고객사별 특성과 요구사항 |
| people/ | N | 팀원 프로필 |
| adr/ | N | 아키텍처 결정 기록 |
| ddl/ | N | 테이블 컬럼 정의 |
## 활성 프로젝트
| 프로젝트 | 경로 | 최종 갱신 |
|---------|------|----------|
(projects/ 하위에서 STATUS.md에 "종료" 없는 것만)
## 시간 한정 (활성)
| 카테고리 | 경로 | 파일 수 | 보존 | 최신부터 최고령 |
|---------|------|--------|------|-------------|
(만료 안 된 시간 한정 파일만)
## 다음 만료 예정 (최대 5건)
| 파일 | 만료일 | 카테고리 |
|------|-------|---------|
## 아카이브 현황
| 구간 | 파일 수 | 주요 내용 |
|------|--------|----------|
(archive/ 하위 월별 요약)
archive/는 접근 가능하되 평소에는 활성 문서를 우선 참조한다.
harvested_to frontmatter로 "이 정보가 어디에 반영됐는지" 역추적 가능공통 3블록(빈 / 부분 / 풀 데이터)은 CONTRACT 6-1절 참조.
[환경/규모] 전체 문서 10,000줄 이상
[데이터 결함] 만료 정책 충돌(frontmatter vs 경로 추론)
expires와 경로 관례(예: temp/, draft/)가 상충[경로 힌트 무시됨] 주석으로만 남김