Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

10 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

assay

CI License: MIT The English edition โ€” README.en.md

์ฑ„์ ํ•˜๋Š” ์ชฝ๊ณผ ์ฑ„์ ๋ฐ›๋Š” ์ชฝ์ด ๊ฐ™์œผ๋ฉด, ๊ทธ๊ฑด ์ ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.

assay๋Š” ๊ทธ ๋ฌธ์ œ ํ•˜๋‚˜๋ฅผ ๋ถ™์žก๊ณ  ๋งŒ๋“  Claude Code ์Šคํ‚ฌ์ด๋‹ค. ์›น์—์„œ ์›๋ฌธ์„ ์ง์ ‘ ๋Œ์–ด์™€ ์ €์žฅํ•˜๊ณ , ์ €์žฅ๋œ ์›๋ฌธ์— ํ•œ ๊ธ€์ž๋„ ๋‹ค๋ฅด์ง€ ์•Š๊ฒŒ ๋‚จ์•„ ์žˆ๋Š” ์ธ์šฉ๋งŒ ์ฑ„์  ๊ธฐ์ค€์œผ๋กœ ์˜ฌ๋ฆฌ๊ณ , ๊ทธ ๊ธฐ์ค€์ด ํ†ต๊ณผ์‹œํ‚ฌ ๋•Œ๊นŒ์ง€๋งŒ ๊ฒฐ๊ณผ๋ฌผ์„ ๊ณ ์นœ๋‹ค. ํ†ต๊ณผ๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์—์ด์ „ํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ์Šคํฌ๋ฆฝํŠธ๋‹ค.

์ด ๋ฌธ์„œ์—์„œ ๊ณ„์† ์“ฐ๋Š” ๋ง ์…‹. Reach๋Š” ์›น์—์„œ ์›๋ฌธ์„ ๋Œ์–ด์™€ ์Šค๋ƒ…์ƒท์œผ๋กœ ์ €์žฅํ•˜๋Š” ์ถ•์ด๋‹ค. Bench๋Š” ๊ทธ ์›๋ฌธ ์ธ์šฉ๋งŒ์œผ๋กœ ํ•ฉ๊ฒฉ์„ ์„ ๋งŒ๋“ค์–ด ์ฑ„์ ํ•˜๋Š” ์ถ•์ด๋‹ค. ์•ต์ปค๋Š” ์Šค๋ƒ…์ƒท์— ํ•œ ๊ธ€์ž๋„ ๋‹ค๋ฅด์ง€ ์•Š๊ฒŒ ๋‚จ์•„ ์žˆ๋Š” ์ธ์šฉ ํ•œ ๊ฑด์ด๋‹ค.

๊ฒŒ์ดํŠธ๊ฐ€ ๊ฑฐ๋ถ€ํ•˜๋Š” ์žฅ๋ฉด

assay โ€” ๊ฒŒ์ดํŠธ๊ฐ€ ์ž‘์—…์„ ๊ฑฐ๋ถ€ํ•œ๋‹ค

55์ดˆ ์‡ผ์ผ€์ด์Šค ์ค‘ ์•ž 11์ดˆ. ์ „์ฒด ์˜์ƒ์€ assets/assay-showcase.mp4 โ€” ํ™”๋ฉด์— ๋‚˜์˜ค๋Š” ๋ชจ๋“  ๋ฌธ์ž์—ด์€ ์ด ๋ ˆํฌ์—์„œ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ด๊ณ  ์—ฐ์ถœํ•œ ์ถœ๋ ฅ์€ ์—†๋‹ค.

์„ค๋ช…๋ณด๋‹ค ๊ฑฐ๋ถ€๋‹นํ•˜๋Š” ์žฅ๋ฉด์ด ๋น ๋ฅด๋‹ค. ์•„๋ž˜ ๋„ค ๋ธ”๋ก์€ ์†Œ์Šค 3๊ฑด์งœ๋ฆฌ ๋Ÿฐ์—์„œ skill/scripts/๊ฐ€ ์‹ค์ œ๋กœ ๋ฑ‰์€ ์ถœ๋ ฅ์ด๋‹ค.

$ reach-gate.sh .assay/run1
Reach ๊ฒŒ์ดํŠธ ํ†ต๊ณผ: usable=3, primary=2, active-confirmed-anchor=3
โ†’ exit 0 โ€” ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์†Œ์Šค 3๊ฑด, ๊ทธ์ค‘ 1์ฐจ ์ถœ์ฒ˜ 2๊ฑด, ํ™•์ • ์•ต์ปค 3๊ฑด
โ†’ ์•ต์ปค ํ•˜๋‚˜์˜ excerpt๋ฅผ ์š”์•ฝํˆฌ๋กœ ๊ณ ์น˜๊ณ  ๊ฐ™์€ ๋ช…๋ น์„ ๋‹ค์‹œ ์‹คํ–‰ํ•œ๋‹ค.
  "Write terminal GIFs as code for integration testing and demoing your CLI tools."
  โ†’ "Write terminal GIFs as code โ€” for testing and demos."

$ reach-gate.sh .assay/run1
!! Reach ๊ณ„์•ฝ ์œ„๋ฐ˜: anchors.jsonl:1: excerpt๊ฐ€ ์Šค๋ƒ…์ƒท ์›๋ฌธ์— ์—†์Œ
โ†’ exit 2 โ€” ์Šค๋ƒ…์ƒท์— ์—†๋Š” ๋ฌธ์ž์—ด์ด๋‹ค. ์š”์•ฝ์€ ์•ต์ปค๊ฐ€ ์•„๋‹ˆ๋‹ค.

$ bench-log.sh .assay/run1 R1 A1 4,2,3 "A1๋งŒ ๊ฒจ๋ƒฅ"
[R1] min=2 sum=9/12 gate=FAIL verdict=REVERT (ํ•˜๋ฝ: A2 โ€” ํŒŒ๋ ˆํ†  ์œ„๋ฐ˜)
โ†’ exit 1 โ€” ์ด์ ์€ 9๋กœ ์œ ์ง€๋์œผ๋‚˜(A1 3โ†’4, A3 ๋ถˆ๋ณ€) A2๊ฐ€ 3์—์„œ 2๋กœ ๋‚ด๋ ค๊ฐ”๋‹ค. ํŒŒ๋ ˆํ†  ์œ„๋ฐ˜์ด๋‹ค.

$ bench-log.sh .assay/run1 R2 A2 4,3,3 "๋‹ค์Œ ๋ผ์šด๋“œ"
!! ๋˜๋Œ๋ฆฌ์ง€ ์•Š์€ R1 REVERT ๋’ค์—๋Š” bench-revert.sh๋ฅผ ๋จผ์ € ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
โ†’ exit 2 โ€” R1์„ ์‹ค์ œ๋กœ ๋˜๋Œ๋ฆฌ์ง€ ์•Š์•˜๋‹ค. ๋‹ค์Œ ๋ผ์šด๋“œ๋Š” ๊ธฐ๋ก๋˜์ง€ ์•Š๋Š”๋‹ค.

๋‘ ๋ฒˆ์งธ ๋ธ”๋ก์—์„œ ํ•œ ์ผ์€ ์ธ์šฉ ํ•œ ๊ฑด์„ ์š”์•ฝํˆฌ๋กœ ๋‹ค๋“ฌ์€ ๊ฒƒ๋ฟ์ธ๋ฐ ๊ฒŒ์ดํŠธ๋Š” ๊ทธ๊ฑธ ์•ต์ปค๋กœ ์ธ์ •ํ•˜์ง€ ์•Š์•˜๋‹ค. ์„ธ ๋ฒˆ์งธ๋Š” ์ด์ ์ด ๊ทธ๋Œ€๋กœ์ธ๋ฐ ์ถ• ํ•˜๋‚˜๊ฐ€ ๋‚ด๋ ค๊ฐ„ ๋ผ์šด๋“œ์ด๊ณ , ๋„ค ๋ฒˆ์งธ๋Š” ๊ทธ ๋˜๋Œ๋ฆผ์„ ๊ฑด๋„ˆ๋›ด ์ฑ„ ๋‹ค์Œ ๋ผ์šด๋“œ๋ฅผ ๊ธฐ๋กํ•˜๋ ค ํ•œ ์‹œ๋„๋‹ค. ๋„ท ๋‹ค ์‚ฌ๋žŒ์ด ํŒ๋‹จํ•œ ๊ฒŒ ์•„๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ข…๋ฃŒ์ฝ”๋“œ๋กœ ๊ฑฐ๋ถ€ํ–ˆ๊ณ , ๊ทธ๊ฑธ ํ†ต๊ณผ๋กœ ๋ฐ”๊พธ๋Š” ํ”Œ๋ž˜๊ทธ๋‚˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” ์ด ํŠธ๋ฆฌ ์–ด๋””์—๋„ ์—†๋‹ค.

์–ธ์ œ ์“ฐ๊ณ , ์–ธ์ œ ์“ฐ์ง€ ์•Š๋Š”๊ฐ€

๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๊ฐ์ƒํ•˜์ง€ ๋ง๊ณ  ์ฑ„์  ๊ธฐ์ค€์œผ๋กœ ์Šน๊ฒฉ์‹œ์ผœ๋ผ. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ธฐ์ค€์ด ํ†ต๊ณผ์‹œํ‚ฌ ๋•Œ๊นŒ์ง€๋งŒ ๊ณ ์ณ๋ผ.

์ผœ๋Š” ์ƒํ™ฉ. ์›น ์†Œ์Šค ์—ฌ๋Ÿฌ ๊ฑด์„ ๋ชจ์•„์•ผ ํ•˜๊ณ  ๋‚˜์ค‘์— ๊ทธ ์›๋ฌธ์„ ๋‹ค์‹œ ์—ด์–ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•  ๋•Œ. ๊ฒฐ๊ณผ๋ฌผ์„ "์„ค๋ช…"์ด ์•„๋‹ˆ๋ผ ๋‚จ์ด ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋Š” ๋ ˆํผ๋Ÿฐ์Šค ๋Œ€๋น„๋กœ ๊ฐœ์„ ํ•ด์•ผ ํ•  ๋•Œ. ํ•ฉ๊ฒฉ์„ ์ด ํ•„์š”ํ•œ๋ฐ ์‹คํŒจํ•œ ๋’ค์— ๊ทธ ์„ ์„ ๋‚ฎ์ถ”์ง€ ์•Š์„ ์ž์‹ ์ด ์Šค์Šค๋กœ๋„ ์—†์„ ๋•Œ. ํŠธ๋ฆฌ๊ฑฐ ์˜ˆ์‹œ๋Š” "๋ ˆํผ๋Ÿฐ์Šค ๋Œ€๋น„ ์ฑ„์ ", "๊ทผ๊ฑฐ๋ฅผ ๋ชจ์•„ ํ‰๊ฐ€ํ‘œ๋กœ", "๋ฒค์น˜๋งˆํ‚นํ•ด์„œ ํ•ฉ๊ฒฉ์„ ๊นŒ์ง€ ๊ฐœ์„ ", "ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ"๋‹ค.

์ผœ๋ฉด ์•ˆ ๋˜๋Š” ์ƒํ™ฉ์€ ์ด๋ ‡๋‹ค.

  • ์‚ฌ์‹ค ํ•˜๋‚˜ ํ™•์ธํ•˜๋ฉด ๋๋‚˜๋Š” ์งˆ๋ฌธ. WebSearch ํ•œ ๋ฒˆ์ด ๋‹ต์ด๋ฉด ๊ทธ๊ฑธ ์“ด๋‹ค.
  • ์ด๋ฏธ ๋ฐ›์€ ์ž๋ฃŒ๋กœ ๋ณด๊ณ ์„œยท๋ฒˆ์—ญยท์š”์•ฝ์„ ์“ฐ๋Š” ์ผ. ์š”์•ฝ์€ ์ด ์Šคํ‚ฌ์ด ๊ทผ๊ฑฐ๋กœ ์ธ์ •ํ•˜์ง€ ์•Š๋Š” ํ˜•์‹์ด๋‹ค.
  • ๋ฐœํ–‰, ๋กœ๊ทธ์ธ, ์ฟ ํ‚ค, API ํ‚ค๊ฐ€ ๊ฑธ๋ฆฐ ์ž‘์—…. ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๊ทธ ํ”Œ๋žซํผ ์ „์šฉ ์Šคํ‚ฌ์ด ์ด๋ฏธ ๊น”๋ ค ์žˆ๋Š” ๊ฒฝ์šฐ. ๊ทธ ์Šคํ‚ฌ์„ ๋จผ์ € ์“ด๋‹ค.

๋น ๋ฅธ ์‹œ์ž‘

๋ช…๋ น ๋„ท, ๋ฒฝ์‹œ๊ณ„๋กœ 10์ดˆ ๋‚จ์ง“์ด๊ณ  ๊ฐ€์ž…ํ•  ์„œ๋น„์Šค๋Š” ์—†๋‹ค.

ํ•„์š” ์‚ฌํ•ญ: bash 3.2 ์ด์ƒ, coreutils, python3 3.8 ์ด์ƒ(ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ์“ฐ๋ฉฐ jqยทyq๋ฅผ ์š”๊ตฌํ•˜์ง€ ์•Š๋Š”๋‹ค), git. ์„ ํƒ์€ gh, codex CLI, insane-search ์Šคํ‚ฌ์ด๊ณ , ์—†์œผ๋ฉด ์ ‘๊ทผ ์‚ฌ๋‹ค๋ฆฌ์˜ ๊ทธ ๋‹จ๋งŒ ๊ฑด๋„ˆ๋›ด๋‹ค.

git clone https://github.com/gongnyang/assay.git
cp -r assay/skill ~/.claude/skills/assay
bash ~/.claude/skills/assay/scripts/install-gate.sh ~/.claude/skills/assay
์„ค์น˜ ๊ฒŒ์ดํŠธ ํ†ต๊ณผ: /home/you/.claude/skills/assay (ํšŒ๊ท€ 18์ผ€์ด์Šค)

์„ธ ๋ฒˆ์งธ ์ค„์ด ๋ฐฐํฌ ์œ„์ƒ ๊ฒŒ์ดํŠธ๋‹ค. macOS ์••์ถ• ์ž”์žฌ, ์‹คํ–‰ ๊ถŒํ•œยทshebang ๊ฒฐ์—ฌ, SKILL.md๊ฐ€ ์„ ์–ธํ–ˆ๋Š”๋ฐ ์‹ค๋ฌผ์ด ์—†๋Š” ํŒŒ์ผ, 130ํ–‰ ์ƒํ•œ ์ดˆ๊ณผ, ๊ทธ๋ฆฌ๊ณ  ์ข…๋ฃŒ์ฝ”๋“œ์™€ README ๊ตฌ์กฐ ์ผ์น˜๋ฅผ ํ•จ๊ป˜ ๊ฒ€์‚ฌํ•˜๋Š” ํšŒ๊ท€ 18์ผ€์ด์Šค๋ฅผ ๋ณธ๋‹ค. exit 2๊ฐ€ ๋‚˜์˜จ ํŠธ๋ฆฌ๋Š” ์„ค์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.

bash ~/.claude/skills/assay/scripts/reach-doctor.sh
[ok] github: gh-api โ€” probe ์„ฑ๊ณต
  L0 gh-api: ok โ€” probe ์„ฑ๊ณต
  L1 insane-search: missing โ€” insane-search ์—†์Œ
  L2 webfetch: ok โ€” probe ์„ฑ๊ณต
  L3 jina-reader: ok โ€” ์ฝ๊ธฐ probe ์„ฑ๊ณต
  L4 manual: warn โ€” ์‚ฌ๋žŒ ์ˆ˜๋™ ์ž…๋ ฅ ์ „์šฉ

contracts/channels.yml์— ์„ ์–ธ๋œ ์ฑ„๋„๋งˆ๋‹ค ํ•œ ๋ธ”๋ก์”ฉ ๋‚˜์˜จ๋‹ค. ์ฝ๊ธฐ ์ „์šฉ probe์ด๋ฉฐ ์ง„๋‹จ ๊ฒฝ๋กœ๋Š” ์•„๋ฌด๊ฒƒ๋„ ์“ฐ์ง€ ์•Š๋Š”๋‹ค. missing์€ ์‹คํŒจ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ทธ ๋‹จ์„ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋‹ค์Œ ๋‹จ์„ ์“ด๋‹ค๋Š” ๋œป์ด๋‹ค.

cd /๊ฐœ์„ ํ• /ํ”„๋กœ์ ํŠธ/๊ฒฝ๋กœ
cat > q.md <<'EOF'
์งˆ๋ฌธ: ์ด ๋ ˆํฌ๋Š” ์›ฐ๋ฉ”์ด๋“œ GitHub ๋ ˆํฌ ๋ฃจ๋ธŒ๋ฆญ์„ ํ†ต๊ณผํ•˜๋Š”๊ฐ€?
์†Œ๋น„์ฒ˜: ๊ณต๊ฐœ ๋ฐœํ–‰ ์—ฌ๋ถ€ ๊ฒฐ์ •
EOF
bash ~/.claude/skills/assay/scripts/reach-init.sh .assay/run1 q.md 3 30
R0 ๋ด‰์ธ ์™„๋ฃŒ: .assay/run1
  ์งˆ๋ฌธ ํ•ด์‹œ์™€ ์ˆ˜์ง‘ ํ•˜ํ•œ์„ .assay/run1/reach.conf์— ๊ธฐ๋กํ–ˆ๋‹ค.
๋‹ค์Œ: reach-fanout.sh .assay/run1 <axes.tsv>

๋Ÿฐ ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ์—์ด์ „ํŠธ ์ž‘์—…๊ณต๊ฐ„์ด ์•„๋‹ˆ๋ผ ๊ฐœ์„  ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ ์•ˆ์— ์ƒ๊ธด๋‹ค. ๊ฐ™์€ ๋ช…๋ น์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด exit 1๋กœ ๊ฑฐ๋ถ€๋œ๋‹ค. ์ˆ˜์ง‘์ด ์‹œ์ž‘๋œ ๋’ค์— ์งˆ๋ฌธ์„ ๋‹ค์‹œ ์“ธ ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ด ์Šคํฌ๋ฆฝํŠธ์˜ ์œ ์ผํ•œ ์กด์žฌ ์ด์œ ๋‹ค.

์—ฌ๊ธฐ๋ถ€ํ„ฐ๋Š” ์—์ด์ „ํŠธ๊ฐ€ ๋ชฌ๋‹ค. ๋‹จ๊ณ„๋ณ„ ํ–‰์œ„ ์ฃผ์ฒด์™€ ์ „์ฒด ํŠธ๋ ˆ์ด์Šค๋Š” docs/how-it-works.md์— ์žˆ๋‹ค.

๋Ÿฐ์ด ๋‚จ๊ธฐ๋Š” ๊ฒƒ

examples/์— ์‹ค์ œ ๋Ÿฐ ํ•˜๋‚˜๊ฐ€ ์†๋Œ€์ง€ ์•Š์€ ์ฑ„๋กœ ๋“ค์–ด ์žˆ๋‹ค. 2026-07-29, ์‚ด์•„ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ์™€ ์‚ด์•„ ์žˆ๋Š” Codex ์›Œ์ปค๋กœ ๋Œ๋ฆฐ ๊ฒƒ์ด๋‹ค.

๋‹จ๊ณ„ ์Šคํฌ๋ฆฝํŠธ .assay/run1/์— ๋‚จ์€ ๊ฒƒ
R0 reach-init.sh reach.conf + reach.conf.seal โ€” ๋ด‰์ธ๋œ ์ˆ˜์ง‘ ํ•˜ํ•œ
R1 reach-fanout.sh axes.tsv, briefs/AX-{1,2,3}.md โ€” ์ถ•๋‹น ์ˆ˜์ง‘ ๋ธŒ๋ฆฌํ”„ ํ•˜๋‚˜
R2 reach-fetch.sh ร—3 sources/R-{A,B,C}.md ์Šค๋ƒ…์ƒท, sources.jsonl, fetch-log.jsonl
R3 reach-gate.sh anchors.jsonl, reach-gate.receipt โ€” Bench๋กœ ๋“ค์–ด๊ฐ€๋Š” ์œ ์ผํ•œ ๋ฌธ
S0 bench-init.sh gate.conf + gate.conf.seal โ€” ์ฑ„์ ์ด ์‹œ์ž‘๋˜๊ธฐ ์ „์— ๋ด‰์ธ๋œ ํ•ฉ๊ฒฉ์„ 
S2 rubric-lint.sh ๊ฒ€์ฆ์„ ํ†ต๊ณผํ•œ rubric.md
G2 g2-spawn.sh g2/worker-1.csv, g2/receipt.json โ€” ์ถœ์ฒ˜๊ฐ€ ๋ถ™์€ ๋…๋ฆฝ ์ฑ„์ 
S3 bench-log.sh scores.tsv, ํ•ด์‹œ ์ฒด์ธ์ด ๊ฑธ๋ฆฐ rounds.jsonl, rounds/R0/ ์Šค๋ƒ…์ƒท
G verdict-gate.sh ์ตœ์ข… ํŒ์ •

sources.jsonl์€ ์–ด๋””์— ์–ธ์ œ ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ–ˆ๊ณ  ๋ฌด์—‡์„ ์ €์žฅํ–ˆ๋Š”์ง€์˜ ์ „๋Ÿ‰ ๊ธฐ๋ก์ด๋‹ค. ์„ฑ๊ณตํ•œ ๋ณธ๋ฌธ์€ sources/<sid>.md ์Šค๋ƒ…์ƒท๊ณผ SHA-256 ์—†์ด๋Š” ์†Œ์Šค๋กœ ์ธ์ •๋˜์ง€ ์•Š๋Š”๋‹ค. anchors.jsonl์€ ๊ทธ์ค‘ ์Šค๋ƒ…์ƒท ๋Œ€์กฐ๋ฅผ ํ†ต๊ณผํ•œ ์ธ์šฉ๋งŒ ๋‹ด๋Š”๋‹ค. Bench๋Š” ์ด ๋‘ ํŒŒ์ผ ๋ฐ–์˜ ๊ฒƒ์„ ์ฑ„์  ์žฌ๋ฃŒ๋กœ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.

๊ทธ ๋Ÿฐ์˜ ๊ฒฐ๊ณผ๋Š” ์ด๋ ‡๊ฒŒ ๋‚จ์•˜๋‹ค.

round  axis  A1  A2  A3  min  sum  gate  verdict     note
R0     -      4   1   1    1    6  PASS  BASE        ๋ฒ ์ด์Šค๋ผ์ธ
G2     G2     3   0   0    0    3  PASS  G2-ADOPTED  ๋…๋ฆฝ ์ฑ„์ ์˜ ๋‚ฎ์€ ์ ์ˆ˜ ์ฑ„ํƒ

๋‘ ๋ฒˆ์งธ ์ค„์ด ์ด ์„ค๊ณ„์˜ ์ „๋ถ€๋‹ค. ์ž๊ธฐ์ฑ„์ ์€ 4,1,1์ด์—ˆ๋‹ค. ๋…๋ฆฝ Codex ์›Œ์ปค๋Š” 3,0,0์„ ๋Œ๋ ค์คฌ๋‹ค. ๋‚ฎ์€ ์ชฝ์ด ์ด์˜ ์—†์ด ์ฑ„ํƒ๋๊ณ , ๋ถˆ์ผ์น˜๋Š” ์ €์ž์—๊ฒŒ ์œ ๋ฆฌํ•˜๊ฒŒ ํ•ด์†Œ๋˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ๊ธฐ๋ก๋๋‹ค. ๋‹จ๊ณ„๋ณ„ ํ•ด์„ค์€ examples/README.md์— ์žˆ๋‹ค.

์–ด๋””๊นŒ์ง€ ๋ฏฟ์„ ์ˆ˜ ์žˆ๋Š”๊ฐ€

๊ธฐ๊ณ„๊ฐ€ ๊ฐ•์ œํ•˜๋Š” ๊ฒƒ

  • ์•ต์ปค์˜ excerpt๋Š” ์ €์žฅ๋œ ์Šค๋ƒ…์ƒท์˜ ๋ฆฌํ„ฐ๋Ÿด ๋ถ€๋ถ„๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•œ๋‹ค. reach-gate.sh๊ฐ€ ์Šค๋ƒ…์ƒท์„ ๋‹ค์‹œ ์ฝ์–ด ๋Œ€์กฐํ•˜๊ณ , ์œ ๋‹ˆ์ฝ”๋“œ ์ •๊ทœํ™”๋กœ๋งŒ ์ผ์น˜ํ•˜๋Š” excerpt๋Š” ๊ฒฝ๊ณ ๋ฅผ ์ฐ์€ ๋’ค ๊ทธ๋Œ€๋กœ ์‹คํŒจํ•œ๋‹ค. ์ •๊ทœํ™”๋Š” ํŒจ๋Ÿฌํ”„๋ ˆ์ด์ฆˆ์˜ ์ฒซ ๋‹จ๊ณ„๋‹ค.
  • ๋ด‰์ธ๋œ gate.conf๋Š” .seal ์‚ฌ์ด๋“œ์นด์˜ ํ•ด์‹œ์™€ ์–ด๊ธ‹๋‚˜๋Š” ์ˆœ๊ฐ„ ๋ชจ๋“  ์†Œ๋น„์ž๊ฐ€ exit 2๋กœ ๊ฑฐ๋ถ€ํ•œ๋‹ค. ์‹คํŒจํ•œ ๋’ค ํ•ฉ๊ฒฉ์„ ์„ ๋‚ด๋ฆฌ๋Š” ๊ฒฝ๋กœ๊ฐ€ ์—†๋‹ค.
  • ์ถ• ํ•˜๋‚˜๋ผ๋„ ๋‚ด๋ ค๊ฐ„ ๋ผ์šด๋“œ๋Š” REVERT์ด๊ณ , bench-revert.sh๊ฐ€ ํŒŒ์ผ์„ ์‹ค์ œ๋กœ ๋ณต์›ํ•˜๊ณ  ๋ณต์›๋œ ํŠธ๋ฆฌ์˜ ํ•ด์‹œ๋ฅผ ๋‚จ๊ธฐ๊ธฐ ์ „๊นŒ์ง€ ๋‹ค์Œ ๋ผ์šด๋“œ๋Š” ๊ธฐ๋ก๋˜์ง€ ์•Š๋Š”๋‹ค. "๋‹ค์Œ ๋ผ์šด๋“œ์—์„œ ๊ณ ๋ คํ•˜๊ฒ ๋‹ค"๋Š” ๋˜๋Œ๋ฆผ์ด ์•„๋‹ˆ๋‹ค.

๊ธฐ๊ณ„๊ฐ€ ๊ฐ•์ œํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ

  • sealยทreceiptยทํ•ด์‹œ ์ฒด์ธ์€ ์ „๋ถ€ ๋ฌดํ‚ค SHA-256์ด๋‹ค. ๋ณ€์กฐ๋ฅผ ๋“œ๋Ÿฌ๋‚ด์ง€ ๋ง‰์ง€๋Š” ๋ชปํ•œ๋‹ค โ€” gate.conf์™€ gate.conf.seal์„ ํ•จ๊ป˜ ๊ณ ์น˜๋Š” ์ƒ๋Œ€๋Š” ํ†ต๊ณผํ•œ๋‹ค.
  • G2 ๋…๋ฆฝ์„ฑ์€ ํŽธํ–ฅ ์ถ•์†Œ์ด์ง€ ์™„์ „ ๋…๋ฆฝ์ด ์•„๋‹ˆ๋‹ค. ์ฑ„์ ์ž๋Š” ๊ฐœ์„  ์ด๋ ฅ์ด ์ œ์™ธ๋œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ฐ›์•„ ๋ณ„๋„ codex ํ”„๋กœ์„ธ์Šค๋กœ ๋Œ์ง€๋งŒ, ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ๋Š” ๊ฐ™๋‹ค.
  • ๊ณ„์ธก์ด ๋Œ์•˜์Œ์„ ์žฌ๋Š” ๊ฒƒ์€ ๊ทธ ๊ณ„์ธก์ด ์‹คํŒจ๋กœ ๋’ค์ง‘ํž์ง€๋ฅผ ์žฌ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. tests/smoke.sh์˜ ๋งˆ์ง€๋ง‰ ์‹คํ–‰์€ pass=20 fail=0 SKIPPED=4 skipped_ratio=0.166667์ด๋ฉฐ, ๊ฑด๋„ˆ๋›ด 4๊ฑด์€ ๋„คํŠธ์›Œํฌ์™€ Codex ์›Œ์ปค๋ฅผ ์š”๊ตฌํ•˜๋Š” ๋ผ์ด๋ธŒ ์ผ€์ด์Šค๋‹ค.
์ฝ”๋“œ ๋œป ๋ฌด์—‡์„ ๊ณ ์น˜๋‚˜
0 ๊ณ„์•ฝ์ด ์ง€์ผœ์กŒ๋‹ค ๊ณ„์†ํ•œ๋‹ค
1 ํŒ์ • ์‹คํŒจ โ€” ๊ฒฐ๊ณผ๋ฌผยท์•ต์ปคยท์ถ•์ด ์•„์ง ๋ถ€์กฑํ•˜๋‹ค ์‚ฐ์ถœ๋ฌผ์„ ๊ณ ์น˜๊ณ  ๋‹ค์‹œ ๋Œ๋ฆฐ๋‹ค. ํ•ฉ๊ฒฉ์„ ์€ ๋‚ด๋ฆฌ์ง€ ์•Š๋Š”๋‹ค
2 ๊ณ„์•ฝ ์œ„๋ฐ˜ โ€” ๊ธฐ๋ก์ด๋‚˜ ์ฆ๊ฑฐ ์ž์ฒด๊ฐ€ ๋ฌดํšจ์ด๊ณ  ์•„๋ฌด๊ฒƒ๋„ ์ฑ„ํƒ๋˜์ง€ ์•Š์•˜๋‹ค ์ž…๋ ฅ์„ ๊ณ ์น˜๊ณ  ๊ฒŒ์ดํŠธ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋Œ๋ฆฐ๋‹ค
3 ํ™˜๊ฒฝ ๋ฏธ๋น„ โ€” ํ•„์š”ํ•œ ๋„๊ตฌ๊ฐ€ ์—†๋‹ค reach-doctor.sh๋กœ ์ง„๋‹จํ•œ๋‹ค. ํ†ต๊ณผ๊ฐ€ ์•„๋‹ˆ๋‹ค
64 ์‚ฌ์šฉ๋ฒ• ์˜ค๋ฅ˜ ๋ช…๋ น์ค„์„ ๊ณ ์นœ๋‹ค

15๊ฐœ ์ง„์ž…์  ์ „๋ถ€ ๊ฐ™์€ ๊ฐ’์„ ์“ฐ๊ณ , ์–ด๋А ๊ฐ’์—๋„ ์ง€์—ญ์  ์˜๋ฏธ๋ฅผ ๋ง์”Œ์šฐ์ง€ ์•Š๋Š”๋‹ค. 1๊ณผ 2์˜ ์ฐจ์ด๊ฐ€ ์ด ์„ค๊ณ„์˜ ๋Œ€๋ถ€๋ถ„์ด๋‹ค. ํ•˜๋‚˜๋Š” "๋„ค ๊ฒฐ๊ณผ๊ฐ€ ์•„์ง ๊ฑฐ๊ธฐ๊นŒ์ง€ ์•ˆ ์™”๋‹ค"์ด๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” "๋ฐฉ๊ธˆ ์ค€ ๊ฒƒ์€ ๊ธฐ๋ก์œผ๋กœ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋‹ค"๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋ณ„ ์ „์ฒด ํ‘œ๋Š” docs/gates.md์— ์žˆ๋‹ค.

๋‚˜๋จธ์ง€ ์ง€๋„

๋ ˆํฌ ๋ฌธ์„œ

๋ฌธ์„œ ์–ธ์ œ ์—ฌ๋Š”๊ฐ€
examples/README.md ์ฝ๊ธฐ๋ณด๋‹ค ๋Œ์•„๊ฐ€๋Š” ๊ฑธ ๋ณด๊ณ  ์‹ถ์„ ๋•Œ. ๊ธฐ๋ก๋œ ๋Ÿฐ์˜ ๋‹จ๊ณ„๋ณ„ ํ•ด์„ค
docs/how-it-works.md ์ค‘์š”ํ•œ ๋Œ€์ƒ์— ์ด ์Šคํ‚ฌ์„ ๊ฑธ๊ธฐ ์ „์—. 1๋Ÿฐ ์ „์ฒด ํŠธ๋ ˆ์ด์Šค์™€ ํ–‰์œ„ ์ฃผ์ฒด ๊ตฌ๋ถ„ (์˜์–ด)
docs/gates.md ๊ฑฐ๋ถ€๋‹นํ–ˆ์„ ๋•Œ. ์Šคํฌ๋ฆฝํŠธ 15๋ณธ์ด ๊ฐ๊ฐ ๋ฌด์—‡์„ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ฑฐ๋ถ€ํ•˜๋Š”์ง€์˜ ํ‘œ (์˜์–ด)
docs/design-decisions.md ์ง‘ํ–‰ ๊ธฐ์ „์„ ์†๋Œ€๊ธฐ ์ „์—. ๋ด‰์ธยท์˜์ˆ˜์ฆยทํ•ด์‹œ ์ฒด์ธ์„ ๊ฐ•์ œํ•œ ์ ๋Œ€๊ฐ์‚ฌ ๊ฒฐํ•จ (์˜์–ด)
docs/genealogy.md ์ด ๋ ˆํฌ๊ฐ€ ์–ด๋–ค ์ฃผ์žฅ์„ ์Šค์Šค๋กœ ๊ทผ๊ฑฐ๋กœ ์“ฐ์ง€ ์•Š๋Š”์ง€ ๋ณผ ๋•Œ (์˜์–ด)

๋ฃจํ”„ ๊ทœ์œจ์€ karpathy/autoresearch์—์„œ ์ƒ์†ํ–ˆ๋‹ค. ์ธก์ •ํ•˜๊ณ , ๋‚˜๋น ์ง€๋ฉด ๋˜๋Œ๋ฆฌ๊ณ , ์ „๋Ÿ‰ ๋กœ๊น…ํ•˜๊ณ , ๋™์ ์ด๋ฉด ๋‹จ์ˆœํ•œ ์ชฝ์ด ์ด๊ธด๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ถ€๋ชจ๋กœ ์ง€๋ชฉ๋˜๋˜ ์Šคํ‚ฌ์€ ๊ฒ€์ฆ์„ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•ด ์ธ์šฉ์„ ์ „๋Ÿ‰ ์‚ญ์ œํ–ˆ๊ณ , install-gate.sh๊ฐ€ ๊ทธ ๋ฌธ์ž์—ด์˜ ์žฌ์œ ์ž…์„ exit 2๋กœ ๋ง‰๋Š”๋‹ค.

๋ ˆํฌ ๊ตฌ์กฐ

assay/
โ”œโ”€โ”€ skill/                  ์„ค์น˜๋˜๋Š” ์Šคํ‚ฌ ๋ณธ์ฒด
โ”‚   โ”œโ”€โ”€ SKILL.md            ์„ ์–ธ์ธต. ํŠธ๋ฆฌ๊ฑฐ ๋•Œ๋งˆ๋‹ค ์ƒ์ฃผ ๋กœ๋“œ(130ํ–‰ ์ƒํ•œ)
โ”‚   โ”œโ”€โ”€ references/         ์˜จ๋””๋งจ๋“œ ๋ฌธ์„œ 6๋ณธ(ํ•œ๊ตญ์–ด ์šด์šฉ ๋งค๋‰ด์–ผ)
โ”‚   โ”œโ”€โ”€ scripts/            ์ง‘ํ–‰์ธต 15๋ณธ + _common.sh
โ”‚   โ””โ”€โ”€ contracts/          channels.yml, JSON ์Šคํ‚ค๋งˆ 2๋ณธ, ํ˜•ํŒ 2๋ณธ
โ”œโ”€โ”€ docs/                   ์ด ๋ ˆํฌ ์ž์ฒด์˜ ๋ฌธ์„œ(์˜๋ฌธ)
โ”œโ”€โ”€ examples/               ๊ธฐ๋ก๋œ ๋Ÿฐ ํ•˜๋‚˜
โ”œโ”€โ”€ tests/                  smoke.sh โ€” ์ข…๋ฃŒ์ฝ”๋“œ ํšŒ๊ท€ ์Šค์œ„ํŠธ
โ””โ”€โ”€ README.md  README.en.md

๋Ÿฐ์€ ์Šคํ‚ฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์—๋„ ์—์ด์ „ํŠธ ์ž‘์—…๊ณต๊ฐ„์—๋„ ์“ฐ์ง€ ์•Š๋Š”๋‹ค. ๊ฐœ์„  ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ ์•ˆ์˜ .assay/<run>/์— ๋ด‰์ธ ํŒŒ์ผ, sources/ ์Šค๋ƒ…์ƒท, ๊ณ„์•ฝ JSONL 2์ข…, rubric.md, scores.tsv, rounds.jsonl, metrics/, g2/, counterexample.md๋ฅผ ๋‚จ๊ธด๋‹ค.

์Šคํ‚ฌ ์•ˆ์ชฝ

์ƒ์ฃผ ๋กœ๋“œ๋˜๋Š” ๊ฒƒ์€ skill/SKILL.md ํ•˜๋‚˜(110ํ–‰)๋ฟ์ด๊ณ , ๋ฌด๊ฑฐ์šด ์„œ์ˆ ์€ ์ „๋ถ€ ์˜จ๋””๋งจ๋“œ๋‹ค.

  • reach-protocol.md โ€” ์งˆ๋ฌธ ๊ณ ์ •ยท์ถ• ๋ถ„ํ• ยท์ˆ˜์ง‘ยท์žฌ๊ฒ€์ฆ
  • access-ladder.md โ€” ์ ‘๊ทผ์ด ๋ง‰ํ˜”๊ฑฐ๋‚˜ ์ธ์ฆ์ด ์š”๊ตฌ๋˜๊ฑฐ๋‚˜ ํ™˜๊ฒฝ์„ ์ง„๋‹จํ•  ๋•Œ
  • rubric-design.md โ€” ์ถ• ์œ ๋„ยท0~4 ์•ต์ปค ์ž‘์„ฑยทํŒ์ •์‹ ๊ฒฐ์ •
  • loop-protocol.md โ€” ๋ผ์šด๋“œ ์šด์˜ยทํŒŒ๋ ˆํ†  ๋น„๊ตยท๋˜๋Œ๋ฆผยท์ •์ฒด ์ง„๋‹จ
  • contracts.md โ€” JSONLยทTSV ์ž‘์„ฑ๊ณผ ๊ฒ€ํ† , exit code ๊ณ„์•ฝ ํ™•์ธ
  • instruments.md โ€” ์ƒˆ ๋Œ€์ƒ ์œ ํ˜•์˜ ๊ณ„์ธก๊ธฐ๋ฅผ ์ƒˆ๋กœ ์“ธ ๋•Œ

๊ณ„์•ฝ ๋ฐ์ดํ„ฐ ์ค‘ ๋‘˜์€ ํŒŒ์‹ฑ ๋Œ€์ƒ์ด๋ฉด์„œ ์‚ฌ๋žŒ์ด ์ง์ ‘ ์ฝ๋Š” ๋ฌธ์„œ๋‹ค. rubric.template.md๋Š” rubric-lint.sh๊ฐ€ ๋Œ€์กฐํ•˜๋Š” ๋ฃจ๋ธŒ๋ฆญ ํ˜•ํŒ์ด๊ณ , g2-prompt.md๋Š” ๋…๋ฆฝ ์ฑ„์ ์ž๊ฐ€ ๋ฐ›๋Š” ํ”„๋กฌํ”„ํŠธ ์ •๋ณธ์ด๋‹ค. skill/ ์•„๋ž˜๋Š” ์ „๋ถ€ ํ•œ๊ตญ์–ด๋‹ค. ์Šคํ‚ฌ์ด ํ•œ๊ตญ์–ด๋กœ ์šด์šฉ๋˜๊ณ  ๊ทธ๊ฒƒ์ด ๋‹ค๋ฃจ๋Š” excerpt๋Š” ๋ฒˆ์—ญ๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋ฏ€๋กœ, ์ด์ค‘์–ธ์–ด ์œ ์ง€๋น„๋Š” ์ด ๋ ˆํฌ์˜ ๊ณต๊ฐœ ๋ฌธ์„œ ํ•œ ๊ณ„์ธต์—์„œ๋งŒ ์ง€๋ถˆํ•œ๋‹ค.

ํ•˜์ง€ ์•Š๋Š” ์ผ

  • CLI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์•„๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ๊ฐ€ ๋ชจ๋Š” Claude Code ์Šคํ‚ฌ์ด๊ณ  ๊ตฌ์„ฑ์€ bash ์Šคํฌ๋ฆฝํŠธยท๋ฌธ์„œยท๊ณ„์•ฝ ๋ฐ์ดํ„ฐ๋‹ค. ๋ฐ๋ชฌ๋„ ๋ฐ”์ด๋„ˆ๋ฆฌ๋„ ํŒจํ‚ค์ง€ ๋ฐฐํฌ๋„ ์—†๋‹ค.
  • ์ฑ„๋„๋ณ„ ์Šคํฌ๋ ˆ์ดํผ๋ฅผ ๋™๋ด‰ํ•˜์ง€ ์•Š๋Š”๋‹ค. channels.yml์€ ๋ผ์šฐํŒ… ์„ ์–ธ ๋ฐ์ดํ„ฐ์ผ ๋ฟ ์‹คํ–‰ ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ฉฐ, ์‚ฌ์ดํŠธ ์ƒ์ˆ˜๊ฐ€ scripts/๋กœ ์ƒˆ๋ฉด install-gate.sh๊ฐ€ ํŠธ๋ฆฌ๋ฅผ ๊ฑฐ๋ถ€ํ•œ๋‹ค. ์‹ค์ œ๋กœ ๋šซ๋Š” ์ผ์€ ์œ„์ž„ํ•œ๋‹ค.
  • ์ž๊ฒฉ์ฆ๋ช…์„ ์ทจ๋“ํ•˜๊ฑฐ๋‚˜ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. auth_required์™€ not_found๋Š” ์žฌ์‹œ๋„ ๋Œ€์ƒ์ด ์•„๋‹ˆ๋ผ terminal ์ƒํƒœ์ด๋ฉฐ, L4๋กœ ๋‚ด๋ ค๊ฐ€ ์‚ฌ๋žŒ์ด ์›๋ฌธ์„ ๋ถ™์—ฌ๋„ฃ๊ณ  ์ถœ์ฒ˜๋ฅผ ๋ช…๊ธฐํ•œ๋‹ค.
  • ๋ณด๊ณ ์„œ๋ฅผ ๋Œ€์‹  ์“ฐ์ง€ ์•Š๋Š”๋‹ค. ์‚ฐ์ถœ๋ฌผ์€ ๊ทผ๊ฑฐ๊ฐ€ ๋ถ™์€ ํŒ์ •๊ณผ ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ๊ณ„์•ฝ ํŒŒ์ผ์ด๋‹ค. ์Šคํ‚ฌ ๋ฌธ์„œ์˜ ์ด์ค‘์–ธ์–ดํ™”๋„ ๋ช…์‹œ์  ๋น„๋ชฉํ‘œ๋‹ค.
  • ๋ฃจ๋ธŒ๋ฆญ์€ ์‚ฐ์ถœ๋ฌผ์„ ์žฌ์ง€ ์ฐฉ์ƒ์„ ์žฌ์ง€ ์•Š๋Š”๋‹ค. ์ „ ์ถ• 4์ ์„ ๋ฐ›๊ณ ๋„ ์•„๋ฌด๋„ ์“ฐ์ง€ ์•Š์„ ์†Œํ”„ํŠธ์›จ์–ด์ผ ์ˆ˜ ์žˆ๋‹ค. ์œ ์šฉ์„ฑ์€ ๋ฃจํ”„๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฃจํ”„ ์ด์ „์— ๊ฒฐ์ •๋œ๋‹ค.

๋‚˜๋จธ์ง€๋ฅผ ๋„˜๊ธธ ๊ณณ

ํ•„์š”ํ•œ ๊ฒƒ ๊ฐˆ ๊ณณ
ํŠธ์œ„ํ„ฐยท๋ ˆ๋”งยท์œ ํŠœ๋ธŒยท๋นŒ๋ฆฌ๋นŒ๋ฆฌยท์ƒค์˜คํ™์Šˆ ๋“ฑ ์ฐจ๋‹จ๋œ ํ”Œ๋žซํผ์—์„œ ์‹ค์ œ๋กœ ๋ณธ๋ฌธ์„ ๊ฐ€์ ธ์˜ค๊ธฐ Panniantong/Agent-Reach โ€” API ๋น„์šฉ ์—†์ด ์ฑ„๋„ ์ ‘๊ทผ์„ ๋‹ด๋‹นํ•˜๋Š” CLI
์™„๊ฐ•ํ•œ URL ํ•œ ๊ฑด์— ๋Œ€ํ•œ WAF ์šฐํšŒยทTLS ์ž„ํผ์†Œ๋„ค์ด์…˜ยท์‹ค์ œ ํฌ๋กฌ ํด๋ฐฑ fivetaku/gptaku_plugins์˜ insane-search ์Šคํ‚ฌ โ€” assay๊ฐ€ L1 ๋‹จ์—์„œ ์œ„์ž„ํ•˜๋Š” ๋Œ€์ƒ
~/.claude/skills/์™€ SKILL.md front matter์˜ ๊ณต์‹ ๊ทœ๊ฒฉ Claude Code skills ๋ฌธ์„œ

๊ธฐ์—ฌ ยท ๋ผ์ด์„ ์Šค

๋ฒ„๊ทธ ๋ณด๊ณ ์™€ ์žฌํ˜„ ์ ˆ์ฐจ๋Š” ํ™˜์˜ํ•œ๋‹ค. ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋Š” ์ข๊ฒŒ ๋ฐ›๋Š”๋‹ค. ์ด ๋ ˆํฌ์˜ ์ƒํ’ˆ์€ ๊ฒŒ์ดํŠธ์ด๋ฏ€๋กœ ์šฐํšŒ ํ”Œ๋ž˜๊ทธยทํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋’ท๋ฌธยท๊ฒ€์ฆ ์ƒ๋žต ๋ชจ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” PR์€ ๊ทธ๊ฒƒ์ด ์•„๋ฌด๋ฆฌ ํŽธ๋ฆฌํ•ด๋„ ๋‹ซ๋Š”๋‹ค. ์ง‘ํ–‰์„ ๋ฐ”๊พธ๋Š” ๋ณ€๊ฒฝ์—๋Š” ๋ณ€๊ฒฝ ์ „์— ์‹คํŒจํ•˜๊ณ  ๋ณ€๊ฒฝ ํ›„์— ํ†ต๊ณผํ•˜๋Š” ํšŒ๊ท€ ํ”ฝ์Šค์ฒ˜๊ฐ€ ํ•จ๊ป˜ ์™€์•ผ ํ•œ๋‹ค. ์ „๋ฌธ์€ CONTRIBUTING.md, ์šฐํšŒ ๊ฒฝ๋กœ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์„ ๋•Œ ์ด์Šˆ ๋Œ€์‹  ์ทจํ•  ์ ˆ์ฐจ๋Š” SECURITY.md, ๋ฆด๋ฆฌ์Šค ์ด๋ ฅ์€ CHANGELOG.md์— ์žˆ๋‹ค.

MIT โ€” LICENSE.

About

Pull primary-source evidence off the web, refuse any quotation that is not a literal substring of a stored snapshot, promote the survivors into a sealed rubric, and improve only until that rubric passes. Enforced by exit codes, not self-reports.

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages