Imported from pjy4617/pjy-claude-skill (
plugins/doc-atomize/skills/doc-atomize/SKILL.md). Install upstream withnpx skills add pjy4617/pjy-claude-skill --skill doc-atomize. Copyright stays with the author.
doc-atomize โ ๋งํฌ๋ค์ด ๋ฌด์์ค ์์ ๋ถํ
ํฐ ๋งํฌ๋ค์ด์ ํ ๋ฒ๋ง ์กฐ๊ฐ๋ด์ด, ์ดํ ๋ชจ๋ ์ง๋ฌธ์ ์ธ๋ฑ์ค 1๊ฐ + ์กฐ๊ฐ 1~3๊ฐ ์ฝ๊ธฐ๋ก ๋๋ด๋ ์ํฌํ๋ก.
manual-digest์ ๋ฌด์์ด ๋ค๋ฅธ๊ฐ
| manual-digest | doc-atomize | |
|---|---|---|
| ์ ๋ ฅ | PDF/CHM/HTML/EPUB/DOCX/์ฝ๋๋ฒ ์ด์ค | ์ด๋ฏธ ํ ์คํธ์ธ ๋์ฉ๋ .md |
| ์ฒ๋ฆฌ | ์์ฝ(์๋ณธ์ ~0.3%, ์ ๋ณด ์์ค ์์) | ๋ถํ (๋ฌด์์ค, ์ฌ์กฐ๋ฆฝ = ์๋ณธ) |
| ์ ๋ณธ | ์๋ณธ โ ๋ค์ด์ ์คํธ๋ ํฌ์ธํฐ | ์กฐ๊ฐ ์์ฒด๊ฐ ์ ๋ณธ โ ์๋ฌธ ๊ทธ๋๋ก ์ธ์ฉ ๊ฐ๋ฅ |
| ๋ชฉ์ | ์ฌ์ถ์ถ ๋น์ฉ ์ ๊ฑฐ | ์ปจํ ์คํธ ์ ์ฝ + ์ ํํ ์ธ์ฉ |
PDF ๋งค๋ด์ผ์ ๋ฑ๋กํ๋ ค๋ฉด manual-digest, ์์์ ํฐ .md๋ฅผ ์ชผ๊ฐ๋ ค๋ฉด ์ด ์คํฌ์ด๋ค.
์ฌ์ฉ ์๊ธฐ
๋ค์ ์ค ํ๋๋ฉด ์ ์ฉํ๋ค:
- ์๋ฐฑ~์์ฒ ์ค์ง๋ฆฌ
.md(PRDยท์ค๊ณ์ยท๊ท๊ฒฉ์ยทํ์๋ก ๋์ ๋ณธ)๋ฅผ ๋ฐ๋ณต ์ฐธ์กฐํด์ผ ํจ - "์ด ๋ฌธ์ ๋งค๋ฒ ํต์งธ๋ก ์ฝ๊ธฐ ๋ถ๋ด๋๋ค", "ํ์ํ ์ ๋ง ๋นจ๋ฆฌ ์ฐพ๊ณ ์ถ๋ค"
/doc-atomize <file.md>/--update/--list/--remove/--verify/--audit๋ช ๋ น- ๊ฐ์ ๋ํ
.md๋ฅผ ๋ ๋ฒ์งธ ์ด์ Read โ ๋ถํ ์ ์ ์ํ๋ค
๋ค์์ ์ฐ์ง ์๋๋ค:
- 300์ค ๋ฏธ๋ง ๋ฌธ์ (๊ทธ๋ฅ Read๊ฐ ์ธ๋ค โ ์ธ๋ฑ์ค ์ ์ง๋น๊ฐ ๋ ํฌ๋ค)
- ์์ฝ๋ณธ์ด ํ์ํ ๊ฒฝ์ฐ (๋ถํ ์ ์ด๋์ ์ค์ด์ง ์๋๋ค)
- ์๋ฌธ ๋ณด์กด์ด ๋ฌด์๋ฏธํ ์์ ๋ฉ๋ชจ
์ฌ์ ์กฐ๊ฑด
/doc-atomize-setup์ผ๋ก 1ํ ์ด๊ธฐํ(๋๋ ํ ๋ฆฌ + INDEX.md + CLAUDE.md ๋ง์ปค). ๋ฏธ์ด๊ธฐํ๋ฉด ๋๋ ํ ๋ฆฌ๋ ์๋ ์์ฑํ๊ณ ๋ง์ปค ์ฃผ์
๋ง ์๋ดํ๋ค.
python3 ํ์ โ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ์ฐ๋ฏ๋ก ์ถ๊ฐ ์ค์นยทMCP๋ ์๋ค. Windows์์ python3๊ฐ MS Store alias๋ก exit 49๋ฉด py -3 ๋๋ python์ผ๋ก ๋์ฒดํ๋ค.
์ฐ์ถ๋ฌผ ์์น์ ๋ช ๋ช ๊ท์น
<scope_root>/.claude/atomized/
โโโ INDEX.md โ ๋ง์คํฐ ์นดํ๋ก๊ทธ (์ ์ผํ ๋๋ฌธ์ INDEX)
โโโ <doc-id>/
โโโ <doc-id>.index.md โ ๊ฒ์ ์ง์
์
โโโ <doc-id>.metadata.json โ ์ ๋ณธ ๋ฉํ (์์ฝยทํค์๋ยท๋ผ์ฐํ
ํ๋ ์ด์
๋ณด๊ด)
โโโ parts/
โโโ 001-<slug>.md
โโโ 002-<slug>.md โฆ
๋ฌธ์๋ณ ์ธ๋ฑ์ค์ <doc-id>. ์ ๋๋ฅผ ๋ถ์ด๋ ๊ฒ์ ์๋๋ ์ค๊ณ๋ค. ์ด์ :
- ๋ฌธ์๊ฐ 10๊ฐ๋ฉด
index.md๋ 10๊ฐ โ ํ์ผ๋ช ๋ง์ผ๋ก ๊ตฌ๋ถ์ด ์ ๋๋ค INDEX.mdvsindex.md๋ ๋์๋ฌธ์ ํ ๊ธ์ ์ฐจ์ด๋ผ Windows/macOS ๊ธฐ๋ณธ ํ์ผ์์คํ ์์ ํผ๋๋๋คGlob **/*.index.mdํ ๋ฒ์ผ๋ก ๋ฑ๋ก๋ ๋ชจ๋ ๋ฌธ์ ์ธ๋ฑ์ค๋ฅผ ์ด๊ฑฐํ๊ณ ,Grep <ํค์๋> --glob "*.index.md"๋ก ์ ๋ฌธ์ ์ญ์์ธ์ ํ ๋ฒ์ ํ์ ์ ์๋ค
--scope project(๊ธฐ๋ณธ):<project>/.claude/atomized/--scope global:~/.claude/atomized/--in-place:<์๋ณธ๊ณผ ๊ฐ์ ๋๋ ํ ๋ฆฌ>/<doc-id>/โ repo ๋ฌธ์ ์์ฒด๋ฅผ ์ฌ๊ตฌ์ฑ (์๋ ๋ณ๋ ์ ์ฐจ)
์๋ธ์ปค๋งจ๋
| ํธ์ถ | ๋์ |
|---|---|
/doc-atomize <file.md> [--scope project|global] [--max-lines N] [--min-lines N] [--base-level 2|3] [--slug auto|ascii] [--doc-id ID] |
์ ๊ท ๋ถํ |
/doc-atomize <file.md> --in-place |
์๋ณธ ์๋ฆฌ์์ ๋ฌธ์ ์ฌ๊ตฌ์ฑ (git ํด๋ฆฐ ์ํ ํ์) |
/doc-atomize --update <id> |
์๋ณธ sha256 ๋น๊ต โ ๋ณ๊ฒฝ๋ถ๋ง ์ฌ๋ถํ , ํ๋ ์ด์ ์น๊ณ |
/doc-atomize --verify <id> |
์ฌ์กฐ๋ฆฝ sha256 ๋์กฐ + ๊ตฌ์กฐ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ |
/doc-atomize --list [--scope project|global|all] |
๋ฑ๋ก ๋ฌธ์ ๋์ด |
/doc-atomize --remove <id> |
๋๋ ํ ๋ฆฌ + INDEX.md ํญ๋ชฉ ์ ๊ฑฐ |
์ํฌํ๋ก (8๋จ๊ณ)
์คํฌ๋ฆฝํธ๋ ${CLAUDE_SKILL_DIR}/assets/split_md.py์ด๋ฉฐ, ๊ธฐ๊ณ์ ์์
(๊ฒฝ๊ณ ํ์งยท๋ถํ ยทํ๋ก ํธ๋งคํฐยท๋ผ์ธ ๋งคํยท์ญ์์ธยท๊ฒ์ฆ)์ ๊ฒฐ์ ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค. ์๋ฏธ ํ๋จ(์์ฝ ๋ค๋ฌ๊ธฐยทํค์๋ ์ ๋ณยท๋ผ์ฐํ
ํํธ)๋ง ๋ค๊ฐ ํ๋ค.
1. ์ ๋ ฅ ๊ฒ์ฆ
S="${CLAUDE_SKILL_DIR}/assets/split_md.py"
wc -l "<ํ์ผ๊ฒฝ๋ก>"; wc -c "<ํ์ผ๊ฒฝ๋ก>"
grep -cE "^#{1,6} " "<ํ์ผ๊ฒฝ๋ก>" # ํค๋ฉ ๊ฐ์ โ ๊ตฌ์กฐ ํ์
.md/.markdown์ด ์๋๋ฉด ์ค๋จํ๊ณ ์ ํฉํ ์คํฌ ์๋ด(PDFโmanual-digest, ๊ฑฐ๋ฒ/KiCadโpcb-design-digest)- 300์ค ๋ฏธ๋ง์ด๋ฉด "๋ถํ ์ด๋์ด ์ธ๋ฑ์ค ์ ์ง๋น๋ณด๋ค ์๋ค"๊ณ ์๋ฆฌ๊ณ ์ฌ์ฉ์ ํ์ธ ํ ์งํ
2. doc-id ๊ฒฐ์
ํ์ผ๋ช
โ ์๋ฌธ์ kebab-case (HW_PRD.md โ hw-prd). ์ด๋ฏธ ๊ฐ์ id๊ฐ ์์ผ๋ฉด sha256์ ๋น๊ตํด ๋์ผํ๋ฉด "์ด๋ฏธ ๋ฑ๋ก๋จ, --update ์๋ด" ํ ์ข
๋ฃ, ๋ค๋ฅด๋ฉด ์ ๋ฏธ์ฌ(hw-prd-v2) ๋๋ --update๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ฌป๋๋ค. ํ์ผ๋ช
์ด ๊ฐ์ ๋ค๋ฅธ ๊ฒฝ๋ก ๋ฌธ์๋ ์์ ๋๋ ํ ๋ฆฌ๋ช
์ ๋ถ์ฌ ๊ตฌ๋ถํ๋ค(references-eni-guide).
3. ๋ถํ ์ต์ ๊ฒฐ์
๊ธฐ๋ณธ๊ฐ(์ต์ 40์ค / ์ต๋ 250์ค / ํ๋ 400์ค / ๊ธฐ์ค ๋ ๋ฒจ ์๋)์ผ๋ก ์ถฉ๋ถํ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด๋ค. ๋ฌธ์ ์ ํ๋ณ ์กฐ์ ์ references/split-rules.md ์ฐธ์กฐ.
4. ๋ถํ ์คํ
python3 "$S" split "<ํ์ผ๊ฒฝ๋ก>" --out "<scope_root>/.claude/atomized/<doc-id>"
์ถ๋ ฅ์ ์กฐ๊ฐ ์ยทํฌ๊ธฐ ๋ถํฌยท์ธ๋ฑ์ค ํฌ๊ธฐยท๋ฌด์์ค ๊ฒ์ฆ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค. ์กฐ๊ฐ์ด 80๊ฐ๋ฅผ ๋์ผ๋ฉด ๊ฒฝ๊ณ ๊ฐ ๋ฌ๋ค โ ์ธ๋ฑ์ค๊ฐ ๋ฌด๊ฑฐ์์ง๋ฏ๋ก --max-lines๋ฅผ ํค์ ์ฌ๋ถํ ์ ๊ฒํ ํ๋ค.
5. ๋ฌด์์ค ๊ฒ์ฆ (๊ฒ์ดํธ)
python3 "$S" verify "<scope_root>/.claude/atomized/<doc-id>"
PASS๊ฐ ์๋๋ฉด ๋ค์ ๋จ๊ณ๋ก ๊ฐ์ง ์๋๋ค. ์กฐ๊ฐ์ ์ฌ์กฐ๋ฆฝํ sha256์ด ์๋ณธ(์ ๊ทํ๋ณธ)๊ณผ ์ผ์นํ๋์ง, ๋ผ์ธ ์ปค๋ฒ๋ฆฌ์ง๊ฐ ๋นํ์๋์ง, ๊ณ ์ ์กฐ๊ฐยท๊นจ์ง ๋งํฌ๊ฐ ์๋์ง๋ฅผ ๋ณธ๋ค. ์คํจ ์ ์กฐ๊ฐ์ ์ง์ฐ๊ณ ์์ธ์ ๋ณด๊ณ ํ๋ค โ ๋ฌด์์ค์ด ๊นจ์ง ๋ถํ ์ ์ธ๋ชจ๊ฐ ์๋ค.
6. ์๋ฏธ ํ๋ ์ด์ (์ฌ๊ธฐ๊ฐ ๋ค ๋ชซ โ ๊ฒ์ดํธ๋ค)
์กฐํ ๋น์ฉ์ ์ ํ๋ ๊ฒ์ ์กฐ๊ฐ ํฌ๊ธฐ๊ฐ ์๋๋ผ "์กฐํ๋น ์ฝ๋ ์กฐ๊ฐ ์"๋ค. ์กฐ๊ฐ 3๊ฐ๋ฅผ ์ฌ๋ ๋์ 1๊ฐ๋ก ๋๋ด๋ ๊ฒ์ด, ์กฐ๊ฐ ํฌ๊ธฐ๋ฅผ 250์ค์์ 100์ค๋ก ์ค์ด๋ ๊ฒ๋ณด๋ค ํฌ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์๋ฅผ ์ ํ๋ ๊ฒ์ ์์ฝ๊ณผ ๋ผ์ฐํ ํํธ์ ์ง์ด๋ค. ์์ฝ์ด "์ด ์ ์ ~๋ฅผ ์ค๋ช ํ๋ค"๋ฉด ์ด๋ ์กฐ๊ฐ์ธ์ง ๊ณ ๋ฅผ ์ ์์ด ์ฌ๋ฌ ๊ฐ๋ฅผ ์ด๊ฒ ๋๊ณ , ์๊ฒ ์ชผ๊ฐ ์ด๋์ด ๊ทธ ์๋ฆฌ์์ ์ฌ๋ผ์ง๋ค.
<doc-id>.metadata.json์ด ์์ฝยทํค์๋ยท๋ผ์ฐํ
์ ์ ๋ณธ์ด๋ค. ์ธ๋ฑ์ค๋ ์ฌ๊ธฐ์ ์์ฑ๋๋ ๋ทฐ์ด๋ฏ๋ก, ์ธ๋ฑ์ค ๋งํฌ๋ค์ด์ ์ง์ ๊ณ ์น์ง ๋ง๊ณ metadata๋ฅผ ๊ณ ์น ๋ค ์ฌ์์ฑํ๋ค(๊ทธ๋์ผ --update ๋ ํ๋ ์ด์
์ด ์ด์๋จ๋๋ค).
<doc-id>.index.md๋ฅผ ์ฝ์ด ์๋ ์์ฑ๋ ์์ฝ์ ํ๋๋ค- ๋ถ์คํ ์์ฝ(
(์์ฝ ํ์), ๋ฌธ๋งฅ ์๋ ์ฒซ ๋ฌธ์ฅ)์ ๊ฐ์ง ์กฐ๊ฐ๋ง ๊ณจ๋ผ ๋ณธ๋ฌธ์ ์ฝ๊ณ ๋ค์ ์ด๋ค - metadata.json์ ํด๋น
parts[].summary๋ฅผ ๊ณ ์น๊ณsummary_source๋ฅผ"curated"๋ก ๋ฐ๊พผ๋ค โ ์ด ํ์๊ฐ ์์ด์ผ--update๊ฐ ์์ฝ์ ๋ณด์กดํ๋ค routing_hints๋ฅผ ์ฑ์ด๋ค. ํ์:"routing_hints": [ {"question": "์ ์ ๋ ์ผ ๊ตฌ์ฑยท์ ๋ฅ ๋ฒ์ง", "parts": ["005-5-์ ์-์ค๊ณ"]}, {"question": "PHY ์คํธ๋ฉ ํ / RMII ๋ฐฐ์ ", "parts": ["006-6-DP83848-PHY-์ฃผ๋ณํ๋ก"]} ]- ์ฌ์์ฑ:
python3 "$S" reindex "<scope_root>/.claude/atomized/<doc-id>" - ํ๋ ์ด์
๊ฒ์ดํธ โ ํต๊ณผํ ๋๊น์ง 2~5๋ฅผ ๋ฐ๋ณตํ๋ค:
python3 "$S" audit "<scope_root>/.claude/atomized/<doc-id>" --strictBLOCK์ด ํ๋๋ผ๋ ์์ผ๋ฉด exit 1์ด๋ฉฐ, 7๋จ๊ณ๋ก ๊ฐ์ง ์๋๋ค. ๋ฌด์์ค ๊ฒ์ฆ์ด "๋ถํ ์ด ์ฑ๋ฆฝํ๋๊ฐ"์ ๊ฒ์ดํธ๋ผ๋ฉด, ์ด์ชฝ์ "๋ผ์ฐํ ์ด ๋์ํ๋๊ฐ"์ ๊ฒ์ดํธ๋ค. ์ง์ ์ฝ๋(S1S8 / R1R8)์ ์๋ฏธ๋references/index-format.md์ ๊ฐ์ฌ ๊ท์น ํ์ ์๋ค.
์์ฝ ์์ฑ ๊ท์น
ํ ์ค, 90์ ์ด๋ด, ๊ทธ ์กฐ๊ฐ์๋ง ์๋ ์ ๋ณด. ๊ณต์: [๋์] + [๊ฐยทํ์ ] + [์ฃผ์]. ๋ถํ๋ฒํธยทAPI๋ช
ยท์์น ๊ฐ์ ์๋ณ ํ ํฐ์ ์ต์ 1๊ฐ ๋ฃ๋๋ค โ ๊ทธ๊ฒ์ด ์กฐ๊ฐ์ ๊ตฌ๋ณํ๋ ์์ก์ด๋ค.
| ๋์ ์์ฝ | ์ ๋์๊ฐ | ์ด๋ ๊ฒ ์ด๋ค |
|---|---|---|
์ด ์ ์ ์ ์ ์ค๊ณ๋ฅผ ์ค๋ช
ํ๋ค |
์ ๋ชฉ์ ์ฌ์ง์ . ์ ๋ชฉ์ ์ด๋ฏธ ๋ชฉ์ฐจ์ ์๋ค (์ ๋ณด๋ 0) | 3.3V ์
๋ ฅ์์ 5๊ฐ ๋ ์ผ ํ์, VCCINT๋ 3A๊ธ Buck ํ์ |
์ ์๋ถ์ ๋ํด ๊ธฐ์ ํ๋ค |
์์ ๋์ฌ๋ง ์๊ณ ์๋ณ ํ ํฐ์ด ์๋ค | TPS62913 2์, ๋ฆฌํ 10mV ์ดํ ์๊ตฌ |
5.1 ์ ์ ์ํคํ
์ฒ / 5.2 ์ ๋ฅ ๋ฒ์ง |
์๋ ํด๋ฐฑ ๊ทธ๋๋ก. ๋ชฉ์ฐจ โณ ์ค๊ณผ ์์ ์ค๋ณต |
์ ์
์ด ํฉ์ณ ์ ํ๋ ๊ฒ์ ํ ์ค๋ก |
ํ: ํญ๋ชฉ ยท ๊ฐ ยท ๋น๊ณ |
ํ ํค๋ ๋คํ. ๋ฌด์จ ํ์ธ์ง ๋ชจ๋ฅธ๋ค | ์ถ๋ณ ์ํํธ๋ฆฌ๋ฐยท๊ธฐ์ด๋น ๊ธฐ๋ณธ๊ฐ ํ |
| 120์์ง๋ฆฌ ์ ํํ ์์ฝ | ์ธ๋ฑ์ค๋ ํต์งธ๋ก ์ฝํ๋ ํ์ผ์ด๋ค | 90์๋ก ์๋ฅด๊ณ ์ธ๋ถ๋ ์กฐ๊ฐ ๋ณธ๋ฌธ์ ๋งก๊ธด๋ค |
๋ผ์ฐํ ํํธ ์์ฑ ๊ท์น
- ์ง๋ฌธ ํํ๋ก ์ด๋ค. ๋ชฉ์ฐจ ์ ๋ชฉ์ ๋ณต์ฌํ์ง ์๋๋ค โ ๊ทธ๊ฑด ์ด๋ฏธ ๋ชฉ์ฐจ์ ์์ด ์ ์ง์ ๊ฒฝ๋ก๊ฐ ์๋๋ค.
- ํ๋๊ฐ ์กฐ๊ฐ 1๊ฐ๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ์ด๋ค. 3๊ฐ๋ฅผ ๋๊ฒ ๊ฐ๋ฆฌํค๋ ํํธ๋ ์ขํ์ง ๋ชปํ ๊ฒ์ด๊ณ , ๊ทธ๋๋ก ์กฐํ๋น ์กฐ๊ฐ ์๊ฐ ๋๋ค. ๋ชฉํ๋ ํํธ๋น ํ๊ท 1.5๊ฐ ์ดํ (
audit์ด ์ด ์์น๋ฅผ ์ถ๋ ฅํ๋ค). - ๊ฐ์: ์กฐ๊ฐ 15๊ฐ ์ดํ๋ฉด 5๊ฐ ์ด์, ๊ทธ๋ณด๋ค ํฌ๋ฉด
์กฐ๊ฐ์ รท 4๊ฐ(์ต๋ 12๊ฐ). - ํ๊ท ํฌ๊ธฐ ์ด์์ธ ์กฐ๊ฐ์ ์ต์ ํ๋์ ํํธ์ ๊ฑธ๋ฆฌ๊ฒ ํ๋ค. ์ด๋ค ํํธ์๋ ์๋ ํฐ ์กฐ๊ฐ์ Grep์ผ๋ก๋ง ๋๋ฌ ๊ฐ๋ฅํด์ง๋ค.
- ๋ฌธ์์ ์ฉ์ด๊ฐ ์๋๋ผ ์ง๋ฌธ์์ ์ดํ๋ก ์ด๋ค. ๋ฌธ์๊ฐ "์ ์ ์ํคํ ์ฒ"๋ผ ํด๋ ์ค์ ์ง๋ฌธ์ "๋ ์ผ ๋ช ๊ฐ๋"๋ก ์จ๋ค. ์ฝ์ดยท๊ตฌ์ด ํํ์ ๊ฐ์ด ๋ฃ๋๋ค.
7. ๋ง์คํฐ ์นดํ๋ก๊ทธ ๋ฑ๋ก
<scope_root>/.claude/atomized/INDEX.md์ ํ์ ํ์ ์ถ๊ฐํ๋ค:
| id | ์ ๋ชฉ | ์๋ณธ | ์ค์ | ์กฐ๊ฐ | scope |
|----|------|------|------|------|-------|
| hw-prd | M.2 Artix-7 EtherCAT ๋ง์คํฐ ์นด๋ PRD | temp/HW_PRD.md | 884 | 13 | project |
8. ๋ฆฌํฌํธ
๋ถํ ๊ฒฐ๊ณผ(์กฐ๊ฐ ์ยทํฌ๊ธฐ ๋ถํฌ), ๋ฌด์์ค ๊ฒ์ฆ ๊ฒฐ๊ณผ, ์ธ๋ฑ์ค ๊ฒฝ๋ก, ๊ทธ๋ฆฌ๊ณ ๋ค์๋ถํฐ์ ์กฐํ ๋ฐฉ๋ฒ์ ์๋ฆฐ๋ค:
์ด์ ์ด ๋ฌธ์ ์ง๋ฌธ์ ๋ค์ ์์๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค:
.claude/atomized/hw-prd/hw-prd.index.md โ ํ๋ณด ์กฐ๊ฐ โ parts/*.md ๋ง Read
๋ฆฌํฌํธ์ audit์ ์์น๋ฅผ ํจ๊ป ์ ๋๋ค โ ํํธ๋น ํ๊ท ์กฐ๊ฐ ์์ ํํธ ์ปค๋ฒ๋ฆฌ์ง๊ฐ ์ด ๋ถํ ์ด ์ค์ ๋ก ์๋ ํ ํฐ์ ์๊ณ ๊ฐ์ด๋ค.
--in-place ๋ชจ๋ (์๋ณธ ์๋ฆฌ ์ฌ๊ตฌ์ฑ)
repo ๋ฌธ์ ์์ฒด๋ฅผ ์ชผ๊ฐ ์ปค๋ฐํ๋ ๋ชจ๋. ํ๊ดด์ ์ด๋ฏ๋ก ์์๋ฅผ ์งํจ๋ค:
git status --shortโ ํด๋ฆฐ์ด ์๋๋ฉด ์ค๋จ(๋ณ๊ฒฝ๋ถ๊ณผ ์์ด๋ฉด ๋๋๋ฆฌ๊ธฐ ์ด๋ ต๋ค)- ์ฌ์ฉ์์๊ฒ ๋์ ๊ฒฝ๋กยท์์ฑ๋ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ๋ช ์์ ํ์ธ์ ๋ฐ๋๋ค
python3 "$S" split "<์๋ณธ>" --out "<์๋ณธ๋๋ ํ ๋ฆฌ>/<doc-id>" --mode in-placepython3 "$S" verify "<์๋ณธ๋๋ ํ ๋ฆฌ>/<doc-id>"โ PASS์ผ ๋๋ง ๋ค์์ผ๋ก- ์๋ณธ์
git rm(์ถ์ ์ค) ๋๋ ์ญ์ . ์ญ์ ์ <doc-id>/.original-<ํ์ผ๋ช >.bak์ผ๋ก ๋ณต์ฌํด ๋๋ค - ์๋ณธ์ ๊ฐ๋ฆฌํค๋ ๋งํฌ๊ฐ ์๋์ง ํ์ธ:
grep -rn "<์๋ณธํ์ผ๋ช >" --include="*.md" .โ ๋ฐ๊ฒฌ ์ ์ธ๋ฑ์ค ๊ฒฝ๋ก๋ก ๊ฐฑ์ ์ ์
verify๊ฐ ์คํจํ๋ฉด ์๋ณธ์ ์ ๋ ์ง์ฐ์ง ์๋๋ค.
์๋ ๊ฐฑ์ ํ (์ค์นํ๋ฉด ๋ฐ๋ก ๋์)
ํ๋ฌ๊ทธ์ธ์ hooks/hooks.json์ด ํฌํจ๋์ด ์์ด, ์๋ณธ์ Edit/Write ํ๋ฉด ๋ถํ ๋ณธ์ด ์๋์ผ๋ก ๊ฐฑ์ ๋๋ค. ๋ณ๋ ์ค์ ์ ์๋ค.
์ฌ์ฉ์๊ฐ docs/prd/PRD-x.md ์์
โ PostToolUse ํ
์ด ๊ทธ ํ์ผ์ด ๋ฑ๋ก๋ ์๋ณธ์ธ์ง ํ์ธ (metadata.json์ source ๋์กฐ)
โ ๋ง์ผ๋ฉด split_md.py update ์คํ โ ๋ณ๊ฒฝ๋ ์กฐ๊ฐ๋ง ์ฌ์์ฑ + ๋ฌด์์ค ์ฌ๊ฒ์ฆ
โ ๊ฒฐ๊ณผ๋ฅผ additionalContext๋ก ๋ฐํ (โ ๏ธ ์์ฝ ์ฌ๊ฒํ ํ์ ์กฐ๊ฐ ํฌํจ)
๋์ ๊ท์น:
| ์ํฉ | ํ ์ ๋ฐ์ |
|---|---|
๋ฑ๋ก๋์ง ์์ .md ์์ |
์๋ฌด ์ผ๋ ํ์ง ์๋๋ค (๋ถํ ์ ๋ฌธ์ยท๊ฒ์ ๋ฃจํ ์ค ๋ฌธ์ ํฌํจ) |
| ๋ด์ฉ์ด ์ค์ ๋ก ์ ๋ฐ๋ | ์กฐ์ฉํ ์ข ๋ฃ (sha256 ๋์ผ) |
| ๋ณ๊ฒฝ ์์ | ๋ณ๊ฒฝ ์กฐ๊ฐ๋ง ์ฌ์์ฑ, ํ๋ ์ด์ ์น๊ณ, ๊ฒฐ๊ณผ ๋ณด๊ณ |
split_md.py๋ฅผ ๋ชป ์ฐพ์ |
--update ์๋ ์คํ์ ์๋ด๋ง ํ๋ค |
| ๊ฐฑ์ ์คํจยทํ์์์(25์ด) | ์คํจ ์ฌ์ค๊ณผ --verify ๊ถ๊ณ ๋ฅผ ์๋ฆฐ๋ค |
| ์ด๋ค ์์ธ๋ | exit 0 โ ํ ์ด ์ฌ์ฉ์์ ํธ์ง์ ๋ง์ง ์๋๋ค |
ํ ์ ์์ฝ์ ๋ค์ ์จ์ฃผ์ง ์๋๋ค. ๋ณธ๋ฌธ์ด ๋ฐ๋ ์กฐ๊ฐ์๋
โ ๏ธ๊ฐ ๋ถ์ด ๋์์ค๋ฏ๋ก, ๊ทธ ์กฐ๊ฐ์ ์์ฝ์ ๋ค๋ฌ๊ณreindexํ๋ ๊ฒ์ ์ฌ์ ํ ์ฌ๋(๋ชจ๋ธ)์ ๋ชซ์ด๋ค. ์๋ํํ ๊ฒ์ ๊ธฐ๊ณ์ ์ฌ๋ถํ ๊ณผ ๋ฌด์์ค ๊ฒ์ฆ์ด์ง ์๋ฏธ ํ๋ ์ด์ ์ด ์๋๋ค.
๋๊ณ ์ถ์ผ๋ฉด /plugin ์์ doc-atomize๋ฅผ ๋นํ์ฑํํ๊ฑฐ๋, ํ
๋ช
๋ น์ ํ๋ก์ ํธ ์ค์ ์์ ๋ฎ์ด์ด๋ค.
DOC_ATOMIZE_SPLIT_MD ํ๊ฒฝ๋ณ์๋ก ์ฌ์ฉํ split_md.py ๊ฒฝ๋ก๋ฅผ ๊ณ ์ ํ ์๋ ์๋ค.
๊ฐฑ์ (--update)
python3 "$S" update "<scope_root>/.claude/atomized/<doc-id>"
- ์๋ณธ sha256์ด ๊ฐ์ผ๋ฉด ์๋ฌด๊ฒ๋ ํ์ง ์๋๋ค
- ์ฌ๋ฌ๊ทธ ๊ธฐ์ค์ผ๋ก ์ด์ ์กฐ๊ฐ๊ณผ ๋งค์นญํด
curated์์ฝยทํค์๋๋ฅผ ์น๊ณํ๋ค - ๋ณธ๋ฌธ์ด ๋ฐ๋ ์กฐ๊ฐ์ ์น๊ณ ์์ฝ์๋
summary_staleํ์๊ฐ ๋ถ๋๋ค โ ์ธ๋ฑ์ค์ โ ๏ธ๋ก ๋ํ๋๋ฉฐ, ํด๋น ์์ฝ์ ๋ค์ ๊ฒํ ํด์ผ ํ๋ค - ์ถ๊ฐ/๋ณ๊ฒฝ/์ ์ง/์ญ์ ์กฐ๊ฐ ์๋ฅผ ๋ณด๊ณ ํ๊ณ ๋ฌด์์ค ์ฌ๊ฒ์ฆ๊น์ง ์ํํ๋ค
๊ฐฑ์ ํ โ ๏ธ๊ฐ ๋ถ์ ์กฐ๊ฐ์ ์์ฝ์ ๋ค๋ฌ๊ณ summary_stale์ ์ง์ด ๋ค reindexํ๊ณ , audit --strict๋ก ๊ฒ์ดํธ๋ฅผ ๋ค์ ํต๊ณผ์ํจ๋ค โ ์ ์ด ๋๊ฑฐ๋ ์ชผ๊ฐ์ก์ผ๋ฉด ๊ทธ ์กฐ๊ฐ์ ๊ฐ๋ฆฌํค๋ ๋ผ์ฐํ
ํํธ๋ ์๋ก ํ์ํ๋ค.
๊ฐ์ฌ (--audit)
์ด๋ฏธ ๋ฑ๋ก๋ ๋ฌธ์์ ํ๋ ์ด์ ํ์ง๋ง ๋ค์ ๋ณด๊ณ ์ถ์ ๋. ์ฝ๊ธฐ ์ ์ฉ์ด๋ผ ํ์ผ์ ๊ณ ์น์ง ์๋๋ค.
python3 "$S" audit "<scope_root>/.claude/atomized/<doc-id>" # ๋ฆฌํฌํธ
python3 "$S" audit "<scope_root>/.claude/atomized/<doc-id>" --strict # ๊ฒ์ดํธ (BLOCK ์์ผ๋ฉด exit 1)
python3 "$S" audit "<scope_root>/.claude/atomized/<doc-id>" --json # ๊ธฐ๊ณ ํ๋
์ฉ
์ถ๋ ฅ์ ์ธ ์์น๊ฐ "์ด ๋ฌธ์๊ฐ ์กฐํ๋น ์กฐ๊ฐ ๋ช ๊ฐ๋ฅผ ์๊ตฌํ๋๊ฐ"๋ฅผ ๋งํด์ค๋ค:
| ์์น | ์๋ฏธ | ๋ชฉํ |
|---|---|---|
| ํํธ๋น ํ๊ท ์กฐ๊ฐ ์ | ํํธ ํ๋๊ฐ ๋ช ๊ฐ๋ฅผ ๊ฐ๋ฆฌํค๋๊ฐ | 1.5๊ฐ ์ดํ |
| ํํธ ์ปค๋ฒ๋ฆฌ์ง | ํํธ๋ก ๋๋ฌ ๊ฐ๋ฅํ ์กฐ๊ฐ ๋น์จ | ํฐ ์กฐ๊ฐ์ ์ ๋ถ ํฌํจ |
| BLOCK / WARN | ๋ผ์ฐํ ์ ๊นจ๋จ๋ฆฌ๋ / ๋์ด์ง๊ฒ ํ๋ ์ง์ | BLOCK 0 |
์ง์ ์ด ๋์ค๋ฉด metadata.json์ ๊ณ ์น๊ณ reindex โ ์ฌ๊ฐ์ฌ. ์กฐ๊ฐ ํ์ผ์ด๋ ์ธ๋ฑ์ค ๋งํฌ๋ค์ด์ ์ง์ ๊ณ ์น์ง ์๋๋ค.
๋ชฉ๋ก / ์ญ์
# ๋ชฉ๋ก
cat "<scope_root>/.claude/atomized/INDEX.md"
ls -d "<scope_root>"/.claude/atomized/*/ 2>/dev/null
# ์ญ์ (์ฌ์ฉ์ ํ์ธ ํ)
rm -rf "<scope_root>/.claude/atomized/<doc-id>"
์ญ์ ์ INDEX.md ํ๋ ํจ๊ป ์ ๊ฑฐํ๋ค. --in-place ์ฐ์ถ๋ฌผ์ repo ํ์ผ์ด๋ฏ๋ก git rm -r ์ฌ๋ถ๋ฅผ ์ฌ์ฉ์์๊ฒ ํ์ธํ๋ค.
์คํจ ๋์
| ์ฆ์ | ์์ธ | ์กฐ์น |
|---|---|---|
์ฌ์กฐ๋ฆฝ sha256 ๋ถ์ผ์น |
์กฐ๊ฐ ํ์ผ์ด ์ธ๋ถ์์ ํธ์ง๋จ | ์กฐ๊ฐ์ ์ง์ ๊ณ ์น์ง ๋ง ๊ฒ โ ์๋ณธ์ ๊ณ ์น๊ณ update |
๋ผ์ธ ์ปค๋ฒ๋ฆฌ์ง ๋ถ์ฐ์ |
์คํฌ๋ฆฝํธ ๋ฒ๊ทธ | ์กฐ๊ฐ ํ๊ธฐ + ์ฌํ ์ ๋ ฅ๊ณผ ํจ๊ป ๋ณด๊ณ |
๊ณ ์ ์กฐ๊ฐ |
์ด์ ๋ถํ ์ ์์ฌ | split --force๋ก ์ฌ๋ถํ |
| ์กฐ๊ฐ 80๊ฐ ์ด๊ณผ ๊ฒฝ๊ณ | ๋ถํ ์ด ๊ณผ๋ํ๊ฒ ์์ | --max-lines๋ฅผ ํค์ ์ฌ๋ถํ |
(์์ฝ ํ์) ๋ค์ |
ํยท์ฒดํฌ๋ฆฌ์คํธ ์์ฃผ ๋ฌธ์ | 6๋จ๊ณ ํ๋ ์ด์ ์์ ์ง์ ์์ฑ |
audit BLOCK ์์กด |
์์ฝ์ด ์ ๋ชฉ ์ฌ์ง์ ์ด๊ฑฐ๋ ํํธ ๋ถ์กฑ | ์ง์ ์ฝ๋๋ณ๋ก metadata ์์ โ reindex โ ์ฌ๊ฐ์ฌ |
| ํํธ๋น ํ๊ท ์กฐ๊ฐ ์ > 1.5 | ํํธ๊ฐ ๋๊ฒ ๊ฑธ์ณ ์ขํ์ง ๋ชปํจ | ํํธ๋ฅผ ์ง๋ฌธ ๋จ์๋ก ์ชผ๊ฐ ์กฐ๊ฐ 1๊ฐ์ฉ ์ง์ |
ํ๊ณ (๋ฌธ์ํ๋ ๊ฒ)
- ATX ํค๋ฉ(
#)๋ง ์ธ์ โ setext ํค๋ฉ(===/---๋ฐ์ค)์ ํยท์ํ์ ๊ณผ ๊ตฌ๋ณ์ด ๋ชจํธํด ์ง์ํ์ง ์๋๋ค - ์๋๊ฒฝ๋ก ์์ฐ์ ์ฌ์์ฑํ์ง ์๋๋ค โ ๋ณธ๋ฌธ์ ๊ทธ๋๋ก ๋๋ ๊ฒ์ด ๋ฌด์์ค์ ์กฐ๊ฑด์ด๋ค. ์ด๋ฏธ์ง/๋งํฌ๋ ์ธ๋ฑ์ค์ ๊ธฐ๋ก๋
source_dir๊ธฐ์ค์ผ๋ก ํด์ํ๋ค - ๋ฌด์์ค ๋ณด์ฆ์ ์ ๊ทํ(BOM ์ ๊ฑฐ, CRLFโLF) ๊ธฐ์ค์ด๋ค. ์๋ณธ ๋ฐ์ดํธ sha256์ ๋ณ๊ฒฝ ๊ฐ์ง์ฉ์ผ๋ก ๋ฐ๋ก ๋ณด๊ดํ๋ค
- ๋ถํ ์ ์ด๋์ ์ค์ด์ง ์๋๋ค โ ์ ์ฝ์ "ํ์ํ ์กฐ๊ฐ๋ง ์ฝ๋" ์กฐํ ๋จ๊ณ์์ ๋ฐ์ํ๋ค
์ฐธ์กฐ
| ํ์ผ | ๋ด์ฉ |
|---|---|
references/split-rules.md |
๋ถํ ๊ฒฝ๊ณยทํฌ๊ธฐ ์ ์ฑ ยท๋ณํฉ ๊ท์นยท์ฃ์ง์ผ์ด์คยท๋ฌธ์ ์ ํ๋ณ ์ต์ ํ๋ |
references/index-format.md |
์ธ๋ฑ์ค 5์น์ ์คํค๋ง, ์กฐ๊ฐ ํ๋ก ํธ๋งคํฐ ํ๋ ์ฌ์ , metadata.json ์คํค๋ง, ํ๋ ์ด์ ๊ฐ์ฌ ๊ท์น(S/R ์ฝ๋) |
references/retrieval-guide.md |
์กฐํ(์ฝ๋ ์ชฝ) ํ๋กํ ์ฝ, Grep ํจํด, ์๋ณธ์ผ๋ก ๋ด๋ ค๊ฐ๋ ๊ธฐ์ค |
assets/split_md.py |
๋ถํ ๊ธฐ โ split / verify / reindex / update / audit ์๋ธ์ปค๋งจ๋ |