Context Hub๋Š” ์—์ด์ „ํŠธ๊ฐ€ API ๋ฌธ์„œ๋ฅผ ์›น์—์„œ ๋ฌด์ž‘์ • ๊ธ์–ด์˜ค์ง€ ์•Š๊ณ , ๋ฒ„์ „ ๊ด€๋ฆฌ๋œ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๊ฐ€์ ธ์˜ค๊ณ  ์ฃผ์„๊นŒ์ง€ ๋‚จ๊ธฐ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฌธ์„œ ํ—ˆ๋ธŒ๋‹ค. ํ•ต์‹ฌ์€ โ€œ๋‹ค์Œ ์„ธ์…˜์—๋„ ๊ฐ™์€ ์‹ค์ˆ˜๋ฅผ ๋œ ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒโ€์ด๋‹ค.

์ด ๋ ˆํฌ๋Š” 8์œ„ ยท โญ +5.2K๋กœ ํšŒ์ž๋œ ํ”„๋กœ์ ํŠธ๋‹ค. ๋ณ„ ์ˆซ์ž๋งŒ ๋ณด๋ฉด ์œ ํ–‰์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ์ง€๊ธˆ ์–ด๋””์— ์‹œ๊ฐ„์„ ์“ฐ๊ณ  ์žˆ๋Š”์ง€๋ฅผ ๊ฝค ์†”์งํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋‚ธ๋‹ค. ์ฝ”๋”ฉ ์—์ด์ „ํŠธ๊ฐ€ ๊ฐ€์žฅ ์ž์ฃผ ํ‹€๋ฆฌ๋Š” ๊ฒƒ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์˜ค๋ž˜๋œ ๋ฌธ์„œ๋‚˜ ํ™˜๊ฐ API๋‹ค. Context Hub๋Š” search โ†’ get โ†’ annotate โ†’ feedback ๋ฃจํ”„๋ฅผ CLI๋กœ ๋‹จ์ˆœํ•˜๊ฒŒ ์ œ๊ณตํ•ด์„œ, ์—์ด์ „ํŠธ๊ฐ€ ์ตœ์‹  ๋ฌธ์„œ๋ฅผ ๋” ์•ˆ์ •์ ์œผ๋กœ ์ฐธ์กฐํ•˜๊ฒŒ ๋งŒ๋“ค๋ ค ํ•œ๋‹ค. Andrew Ng ์ด๋ฆ„๊ฐ’๋„ ํฌ์ง€๋งŒ, ๋ฌธ์ œ ์ •์˜ ์ž์ฒด๊ฐ€ ๋งค์šฐ ์‹ค๋ฌด์ ์ด๋‹ค.

flowchart LR
A[๋ฌธ์ œ] --> B[context-hub]
B --> C[์„ค์น˜]
C --> D[์ตœ์†Œ ์‹คํ—˜]
D --> E[์—…๋ฌด ์ ์šฉ ํŒ๋‹จ]

์น ํŒ ํŒ์„œํ˜• ์น˜ํŠธ์‹œํŠธ

  • ์ด ๋ ˆํฌ์˜ ํ•œ ์ค„ ํ‚ค์›Œ๋“œ๋Š” context-hub๋‹ค.
  • ์ด๋ฒˆ ๋ณด๊ฐ•์—์„œ๋Š” ์„ค์น˜์™€ ์‚ฌ์šฉ ์ˆœ์„œ๋ฅผ ๊ณต์‹ README ๊ธฐ์ค€์œผ๋กœ ๋” ์ด˜์ด˜ํ•˜๊ฒŒ ์ •๋ฆฌํ–ˆ๋‹ค.
  • ์ฝ์„ ๋•Œ๋Š” ์ „์ œ ์กฐ๊ฑด โ†’ ์„ค์น˜ โ†’ ์ฒซ ์‹คํ–‰ โ†’ ๊ฒ€์ฆ ์ˆœ์„œ๋กœ ๋ณด๋ฉด ๋œ๋‹ค.
  • โ€œ๋Œ€๋‹จํ•ด ๋ณด์ธ๋‹คโ€๋ณด๋‹ค โ€œ๋‚ด ์—…๋ฌด์—์„œ ๋ฐ˜๋ณต ๋น„์šฉ์„ ์ค„์ด๋Š”๊ฐ€โ€๋ฅผ ๋จผ์ € ๋ณธ๋‹ค.

์ด ๋ ˆํฌ๋ฅผ ํ•œ ์ค„๋กœ ๋ณด๋ฉด

Context Hub๋Š” ์—์ด์ „ํŠธ๊ฐ€ API ๋ฌธ์„œ๋ฅผ ์›น์—์„œ ๋ฌด์ž‘์ • ๊ธ์–ด์˜ค์ง€ ์•Š๊ณ , ๋ฒ„์ „ ๊ด€๋ฆฌ๋œ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๊ฐ€์ ธ์˜ค๊ณ  ์ฃผ์„๊นŒ์ง€ ๋‚จ๊ธฐ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฌธ์„œ ํ—ˆ๋ธŒ๋‹ค. ํ•ต์‹ฌ์€ โ€œ๋‹ค์Œ ์„ธ์…˜์—๋„ ๊ฐ™์€ ์‹ค์ˆ˜๋ฅผ ๋œ ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒโ€์ด๋‹ค.

์™œ ์ง€๊ธˆ ์ด ๋ ˆํฌ๊ฐ€ ๋œจ๋Š”๊ฐ€

์ฝ”๋”ฉ ์—์ด์ „ํŠธ๊ฐ€ ๊ฐ€์žฅ ์ž์ฃผ ํ‹€๋ฆฌ๋Š” ๊ฒƒ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์˜ค๋ž˜๋œ ๋ฌธ์„œ๋‚˜ ํ™˜๊ฐ API๋‹ค. Context Hub๋Š” search โ†’ get โ†’ annotate โ†’ feedback ๋ฃจํ”„๋ฅผ CLI๋กœ ๋‹จ์ˆœํ•˜๊ฒŒ ์ œ๊ณตํ•ด์„œ, ์—์ด์ „ํŠธ๊ฐ€ ์ตœ์‹  ๋ฌธ์„œ๋ฅผ ๋” ์•ˆ์ •์ ์œผ๋กœ ์ฐธ์กฐํ•˜๊ฒŒ ๋งŒ๋“ค๋ ค ํ•œ๋‹ค. Andrew Ng ์ด๋ฆ„๊ฐ’๋„ ํฌ์ง€๋งŒ, ๋ฌธ์ œ ์ •์˜ ์ž์ฒด๊ฐ€ ๋งค์šฐ ์‹ค๋ฌด์ ์ด๋‹ค.

๋ ˆํฌ ์•ˆ์—์„œ ๋จผ์ € ๋ณผ ๊ฒƒ

  • chub search, chub get, chub annotate, chub feedback ์ค‘์‹ฌ์˜ ๋‹จ์ˆœ CLI
  • ์–ธ์–ด๋ณ„ยท๋ฒ„์ „๋ณ„ ๋ฌธ์„œ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ๋กœ์ปฌ ์ฃผ์„์„ ์„ธ์…˜ ๊ฐ„ ์œ ์ง€ํ•˜๋Š” ๊ตฌ์กฐ
  • ๋ฌธ์„œ ํ’ˆ์งˆ ํ”ผ๋“œ๋ฐฑ์ด ์ž‘์„ฑ์ž ์ชฝ์œผ๋กœ ๋Œ์•„๊ฐ€ ์ „์ฒด ์ƒํƒœ๊ณ„๊ฐ€ ๊ฐœ์„ ๋˜๋Š” ๋ชจ๋ธ

์„ค์น˜ ์ „์— ํ™•์ธํ•  ๊ฒƒ

  • Node.js 18 ์ด์ƒ
  • npm ์ „์—ญ ์„ค์น˜๊ฐ€ ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ
  • ๋ฌธ์„œ ์ฐธ์กฐ ์ •ํ™•๋„๋ฅผ ๋†’์ด๊ณ  ์‹ถ์€ ์ฝ”๋”ฉ ์—์ด์ „ํŠธ ํ•˜๋‚˜

์„ค์น˜ ๋ฐฉ๋ฒ•

๊ณต์‹ ํ™•์ธ ๋งํฌ

CLI ์„ค์น˜

npm install -g @aisuite/chub

์„ค์น˜๊ฐ€ ๋๋‚˜๋ฉด ๋ฐ”๋กœ ์•„๋ž˜์ฒ˜๋Ÿผ ๊ธฐ๋ณธ ๋™์ž‘์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

chub search openai
chub get openai/chat --lang py

์—์ด์ „ํŠธ์— ์—ฐ๊ฒฐํ•˜๊ธฐ

README๋Š” ์ด ๋„๊ตฌ๋ฅผ ์‚ฌ๋žŒ์ด ์ง์ ‘ ์“ฐ๊ธฐ๋ณด๋‹ค ์ฝ”๋”ฉ ์—์ด์ „ํŠธ๊ฐ€ ์“ฐ๋„๋ก ์„ค๊ณ„ํ–ˆ๋‹ค๊ณ  ๋ถ„๋ช…ํžˆ ๋งํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์‹ค์ „์—์„œ๋Š” ์—์ด์ „ํŠธ์—๊ฒŒ ์•„๋ž˜์ฒ˜๋Ÿผ ์ง€์‹œํ•˜๋Š” ๋ฐฉ์‹์ด ์ž์—ฐ์Šค๋Ÿฝ๋‹ค.

Use the CLI command chub to get the latest API documentation for calling OpenAI. Run 'chub help' to understand how it works.

Claude Code๋ผ๋ฉด ~/.claude/skills/get-api-docs ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ , ๋ ˆํฌ์˜ cli/skills/get-api-docs/SKILL.md๋ฅผ ๋„ฃ์–ด ์ž๋™ํ™”ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์„ค์น˜ ํ™•์ธ

  • chub search๊ฐ€ ๊ฒฐ๊ณผ๋ฅผ ๋Œ๋ ค์ฃผ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • chub get ... --lang py ๋˜๋Š” --lang js๊ฐ€ ์ œ๋Œ€๋กœ ๋ฌธ์„œ๋ฅผ ๋ฐ›์•„์˜ค๋Š”์ง€ ๋ณธ๋‹ค.

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  1. ๋จผ์ € search๋กœ ๋ฌธ์„œ ID๋ฅผ ์ฐพ๋Š”๋‹ค.
  2. ๊ทธ๋‹ค์Œ get์œผ๋กœ ํ•„์š”ํ•œ ์–ธ์–ด ๋ฒ„์ „ ๋ฌธ์„œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
  3. ์ž‘์—… ์ค‘ ๋น ์ง„ ์ •๋ณด๋‚˜ ํ•จ์ •์ด ๋ณด์ด๋ฉด annotate๋กœ ๋กœ์ปฌ ์ฃผ์„์„ ๋‚จ๊ธด๋‹ค.
  4. ๋‹ค์Œ ์„ธ์…˜์—์„œ ๊ฐ™์€ ๋ฌธ์„œ๋ฅผ ๋‹ค์‹œ getํ–ˆ์„ ๋•Œ ๊ทธ ์ฃผ์„์ด ์ž๋™์œผ๋กœ ๋ถ™๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

๋Œ€ํ‘œ ํ๋ฆ„์€ ์•„๋ž˜ ๋„ค ์ค„์ด๋ฉด ์ถฉ๋ถ„ํ•˜๋‹ค.

chub search "stripe payments"
chub get stripe/api --lang js
chub annotate stripe/api "Needs raw body for webhook verification"
chub feedback stripe/api up

์ด ๋ฃจํ”„๊ฐ€ ํ•ต์‹ฌ์ด๋‹ค. ๊ฒ€์ƒ‰ํ•˜๊ณ , ์ฝ๊ณ , ํ•จ์ •์„ ๊ธฐ๋กํ•˜๊ณ , ํ’ˆ์งˆ ํ”ผ๋“œ๋ฐฑ์„ ๋‚จ๊ธด๋‹ค.

์–ด๋””์— ๋ฐ”๋กœ ์จ๋จน์„ ์ˆ˜ ์žˆ๋‚˜

์‚ฌ๋ก€ A. SDK ์—…๋ฐ์ดํŠธ ๋Œ€์‘

OpenAI๋‚˜ Stripe์ฒ˜๋Ÿผ ์ž์ฃผ ๋ฐ”๋€Œ๋Š” API๋ฅผ ๋‹ค๋ฃจ๋Š” ํŒ€์ด๋ผ๋ฉด ์—์ด์ „ํŠธ๊ฐ€ ๊ฒ€์ƒ‰ ์—”์ง„ ๋Œ€์‹  ํ๋ ˆ์ด์…˜๋œ ๋ฌธ์„œ๋ฅผ ๋จผ์ € ์ฝ๊ฒŒ ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์˜ค๋ฅ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ Python๊ณผ JavaScript ๋ฒ„์ „์ด ์„ž์ด๋Š” ํŒ€์— ์œ ๋ฆฌํ•˜๋‹ค.

์‚ฌ๋ก€ B. ๋ฐ˜๋ณต ์‹ค์ˆ˜ ๋ˆ„์  ๋ฐฉ์ง€

์›นํ›… ๊ฒ€์ฆ์ฒ˜๋Ÿผ ๋งค๋ฒˆ ๊ฐ™์€ ํ•จ์ •์ด ์žˆ๋Š” ์ž‘์—…์€ ๋กœ์ปฌ ์ฃผ์„์ด ์•„์ฃผ ์œ ์šฉํ•˜๋‹ค. ํ•œ ๋ฒˆ ์ ์–ด๋‘” ์ฃผ์„์ด ๋‹ค์Œ ์„ธ์…˜์— ์ž๋™์œผ๋กœ ๋ถ™์œผ๋ฉด, ๊ฐ™์€ ์‚ฝ์งˆ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

์ฒ˜์Œ ํ•ด๋ณผ ์ตœ์†Œ ์‹คํ—˜

  1. npm install -g @aisuite/chub๋กœ ์„ค์น˜ํ•œ๋‹ค.
  2. chub search openai๋กœ ๋ฌธ์„œ๋ฅผ ์ฐพ๋Š”๋‹ค.
  3. chub get openai/chat --lang py๋กœ ์‹ค์ œ ๋ฌธ์„œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
  4. ์ž‘์€ ์ฃผ์„ ํ•˜๋‚˜๋ฅผ ๋‚จ๊ธด ๋’ค ๋‹ค์Œ ์„ธ์…˜์— ๋‹ค์‹œ ๊ฐ™์€ ๋ฌธ์„œ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ๋ฐ˜์˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค.

๊ฒ€์ฆ ํฌ์ธํŠธ๋Š” ๊ฐ„๋‹จํ•˜๋‹ค. ์œ ์šฉ์„ฑ์„ ํŒ๋‹จํ•  ๋•Œ๋Š” ๋ฌธ์„œ๊ฐ€ ๋งŽ์•„์กŒ๋Š”์ง€๋ณด๋‹ค, ์ž˜๋ชป๋œ API ํ˜ธ์ถœ์ด๋‚˜ ์ž˜๋ชป๋œ ํŒŒ๋ผ๋ฏธํ„ฐ ์˜ˆ์‹œ๊ฐ€ ์ค„์—ˆ๋Š”์ง€ ๋ณด๋Š” ๊ฒŒ ๋งž๋‹ค.

๋ณผ ๋•Œ ์ฃผ์˜ํ•  ์ 

  • ๋ฌธ์„œ ํ—ˆ๋ธŒ๊ฐ€ ์ข‹์•„๋„ ๋‚ด์šฉ์ด ์•„์ง ์—†๋Š” ๋ถ„์•ผ๋Š” ์ง์ ‘ ๋ณด๊ฐ•ํ•ด์•ผ ํ•œ๋‹ค.
  • ์—์ด์ „ํŠธ๊ฐ€ chub๋ฅผ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ์Šคํ‚ฌ์ด๋‚˜ ๊ทœ์น™์œผ๋กœ ์—ฐ๊ฒฐํ•ด์ค˜์•ผ ํšจ๊ณผ๊ฐ€ ๋‚œ๋‹ค.
  • ๋กœ์ปฌ ์ฃผ์„์ด ์Œ“์ผ์ˆ˜๋ก ์ •๋ฆฌ ๊ธฐ์ค€์„ ์•ˆ ์„ธ์šฐ๋ฉด ์žก์Œ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค์Œ ์ฝ๊ธฐ

์ด ๊ธ€์€ AI๋ฅผ ํ™œ์šฉํ•ด ์ดˆ์•ˆ์„ ์ •๋ฆฌํ–ˆ๊ณ , GitHub README์™€ ๊ณต์‹ ๋งํฌ๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•ด ์‹ค๋ฌด ์ ์šฉ ๊ด€์ ์œผ๋กœ ํ’€์–ด์ผ๋‹ค.