본문으둜 κ±΄λ„ˆλ›°κΈ°

πŸ—οΈ ν•˜λ„€μŠ€ + μ˜¨ν†¨λ‘œμ§€ 기반 AI Agent 운영

이 ν”„λ‘œμ νŠΈμ˜ .agents λ””λ ‰ν„°λ¦¬λŠ” λ‹¨μˆœν•œ ν”„λ‘¬ν”„νŠΈ λͺ¨μŒμ΄ μ•„λ‹™λ‹ˆλ‹€. ν•˜λ„€μŠ€(Harness) 와 μ˜¨ν†¨λ‘œμ§€(Ontology) 두 κ°œλ…μ΄ κ²°ν•©λœ 운영 μ²΄κ³„μž…λ‹ˆλ‹€.


ν•˜λ„€μŠ€λž€β€‹

ν•˜λ„€μŠ€λŠ” AIκ°€ 맀번 자유둭게 νŒλ‹¨ν•˜μ§€ μ•Šλ„λ‘ μ‹€ν–‰ μˆœμ„œ, μ—­ν• , 좜λ ₯ ν˜•μ‹μ„ 사전에 κ³ μ •ν•˜λŠ” 운영 μž₯μΉ˜μž…λ‹ˆλ‹€.

κ³ μ • ν•­λͺ©λ‚΄μš©
μ—­ν• implementer, reviewer, worklog
μ ˆμ°¨κ΅¬ν˜„ β†’ 검증 β†’ 기둝 μˆœμ„œ μ€€μˆ˜
νŒμ •MERGE: PASS λ˜λŠ” MERGE: HOLD λ‘˜ 쀑 ν•˜λ‚˜λ§Œ ν—ˆμš©
좜λ ₯리뷰 κ²°κ³Ό ν˜•μ‹, λ³€κ²½ μš”μ•½ ν˜•μ‹, Notion 기둝 ν˜•μ‹ κ³ μ •

ν•˜λ„€μŠ€κ°€ μ—†μœΌλ©΄ AIλŠ” μš”μ²­λ§ˆλ‹€ λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ λ™μž‘ν•©λ‹ˆλ‹€. 같은 μž‘μ—…μ΄λΌλ„ 검증 기쀀이 달라지고, 좜λ ₯ ν˜•μ‹μ΄ 제각각이 λ©λ‹ˆλ‹€. ν•˜λ„€μŠ€λŠ” 이 변동성을 μ€„μ΄λŠ” λͺ…μ‹œμ  운영 κ·œμΉ™μž…λ‹ˆλ‹€.

λ…ΈνŠΈ

ν•˜λ„€μŠ€λŠ” AIκ°€ μ™„μ „ μžλ™μœΌλ‘œ μ‹€ν–‰ν•˜λŠ” νŒŒμ΄ν”„λΌμΈμ΄ μ•„λ‹™λ‹ˆλ‹€. λͺ…μ‹œμ  운영 κ·œμΉ™κ³Ό μ—μ΄μ „νŠΈ 지침에 따라 μž‘λ™ν•˜λŠ” κ΅¬μ‘°μž…λ‹ˆλ‹€.


μ˜¨ν†¨λ‘œμ§€λž€β€‹

μ˜¨ν†¨λ‘œμ§€λŠ” μž‘μ—… 도메인과 ν•„μš”ν•œ 지식을 λΆ„λ₯˜ν•˜λŠ” μ²΄κ³„μž…λ‹ˆλ‹€. μ–΄λ–€ μš”μ²­μ΄ 듀어왔을 λ•Œ μ–΄λ–€ μŠ€ν‚¬μ„ μ“°κ³ , μ–΄λ–€ μ°Έμ‘° λ¬Έμ„œλ₯Ό 읽어야 ν•˜λŠ”μ§€ κ²°μ •ν•˜λŠ” κ΅¬μ‘°μž…λ‹ˆλ‹€.

도메인 λΆ„λ₯˜β€‹

μŠ€ν‚¬λ‹΄λ‹Ή 도메인
saju-frontendμ„œλΉ„μŠ€ μ•± 전체 (라우트, API 연동, React Query, BFF)
saju-docsλ¬Έμ„œ μ‚¬μ΄νŠΈ 운영
design-system-hybridλ””μžμΈ μ‹œμŠ€ν…œ / 토큰 / μ»΄ν¬λ„ŒνŠΈ
codex-review-workflow검증 절차 및 게이트 맀트릭슀
code-review-guard병합 μ „ μ½”λ“œ 리뷰
notion-weekly-worklogμž‘μ—… 기둝

지식 κ·Έλž˜ν”„ ꡬ쑰​

각 μŠ€ν‚¬μ€ 도메인 μ§„μž…μ (SKILL.md) κ³Ό μ„ΈλΆ€ 지식 κ·Έλž˜ν”„(references/) 둜 κ΅¬μ„±λ©λ‹ˆλ‹€.

.agents/skills/saju-frontend/
β”œβ”€β”€ SKILL.md ← 도메인 μ§„μž…μ  + 읽기 κ·œμΉ™
└── references/
β”œβ”€β”€ architecture.md ← 전체 ꡬ쑰/λ ˆμ΄μ–΄ 경계
β”œβ”€β”€ api.md ← API 연동/BFF 경계
β”œβ”€β”€ auth.md ← 인증/둜그인 흐름
β”œβ”€β”€ saju.md ← /saju μž…λ ₯ 흐름
β”œβ”€β”€ saju-result.md ← /saju/result κ²°κ³Ό 쑰회
β”œβ”€β”€ infrastructure.md ← 배포/Cloudflare Workers
└── ...

SKILL.md μ•ˆμ— "이 μž‘μ—…μ΄λ©΄ 이 referenceλ₯Ό 읽어라"λŠ” λΆ„κΈ° κ·œμΉ™μ΄ μžˆμ–΄μ„œ, μž‘μ—…μ— ν•„μš”ν•œ 파일만 μ„ νƒμ μœΌλ‘œ μ½μŠ΅λ‹ˆλ‹€.

트리거 λ¬Έμž₯ β€” μŠ€ν‚¬ λΌμš°νŒ…μ˜ 기쀀​

각 μŠ€ν‚¬ SKILL.md의 frontmatter description은 λ‹¨μˆœν•œ μ„€λͺ…이 μ•„λ‹™λ‹ˆλ‹€. μ‚¬μš©μž μš”μ²­μ„ μ–΄λ–€ λ„λ©”μΈμœΌλ‘œ λΆ„λ₯˜ν• μ§€ κ²°μ •ν•˜λŠ” 트리거 λ¬Έμž₯μž…λ‹ˆλ‹€.

---
name: saju-frontend
description: >-
이 μ €μž₯μ†Œμ˜ 사주 ν”„λ‘ νŠΈμ—”λ“œ κ΅¬ν˜„ λ˜λŠ” λ³€κ²½ μš”μ²­μ— μ‚¬μš©ν•œλ‹€.
Next.js App Router νŽ˜μ΄μ§€μ™€ 흐름(/saju, /saju/result, /home, ...),
React Query μ‚¬μš©/캐싱, BFF route λ³€κ²½ μž‘μ—…μ΄ ν•΄λ‹Ήλœλ‹€.
λ°±μ—”λ“œ μ „μš© λ³€κ²½, λ°±μ—”λ“œ 인프라 μ „μš© μž‘μ—…μ—λŠ” μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€.
---

이 λ¬Έμž₯의 ν’ˆμ§ˆμ΄ μŠ€ν‚¬ λΌμš°νŒ… 정확도λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€.


ν•˜λ„€μŠ€μ™€ μ˜¨ν†¨λ‘œμ§€κ°€ 같이 μž‘λ™ν•˜λŠ” 흐름​

μ‚¬μš©μž μš”μ²­
β”‚
β–Ό
[μ˜¨ν†¨λ‘œμ§€] skill description λ§€μΉ­
β”‚ β†’ μ–΄λ–€ μŠ€ν‚¬μΈκ°€? (saju-frontend / design-system-hybrid / ...)
β”‚
β–Ό
[μ˜¨ν†¨λ‘œμ§€] SKILL.md 읽기 κ·œμΉ™μœΌλ‘œ ν•„μš”ν•œ reference 선택
β”‚ β†’ μ–΄λ–€ 지식이 ν•„μš”ν•œκ°€? (api.md / auth.md / saju-result.md / ...)
β”‚
β–Ό
[ν•˜λ„€μŠ€] implementer μ—­ν•  μˆ˜ν–‰
β”‚ β†’ κ΅¬ν˜„ μ „ ν•„μˆ˜ 좜λ ₯ (읽은 λ¬Έμ„œ, λ ˆμ΄μ–΄ κ³„νš)
β”‚ β†’ μ½”λ“œ μž‘μ„±
β”‚
β–Ό
[μ˜¨ν†¨λ‘œμ§€] gate-matrix둜 μž‘μ—… μœ ν˜• λΆ„λ₯˜
β”‚ β†’ μ–΄λ–€ 검증 쑰합인가?
β”‚
β–Ό
[ν•˜λ„€μŠ€] reviewer μ—­ν•  μˆ˜ν–‰
β”‚ β†’ code-review-guard + 선택 μŠ€ν‚¬ 적용
β”‚ β†’ MERGE: PASS / MERGE: HOLD νŒμ •
β”‚
β–Ό
[ν•˜λ„€μŠ€] worklog μ—­ν•  μˆ˜ν–‰
β†’ λ³€κ²½ μš”μ•½ + Notion 기둝

μ‹€μ œ 적용 μ˜ˆμ‹œβ€‹

/saju/result κ²°κ³Ό 쑰회 였λ₯˜ λŒ€μ‘β€‹

  • μ„ νƒλ˜λŠ” μŠ€ν‚¬: saju-frontend
  • μ„ νƒλ˜λŠ” reference: references/saju-result.md
  • 게이트: /saju/result κ²°κ³Ό 쑰회 μœ ν˜• β†’ saju-frontend, code-review-guard ν•„μˆ˜ / vercel-react-best-practices 선택
  • 검증 포컀슀: G1(λΉ„μ¦ˆλ‹ˆμŠ€ 둜직), G2(API 계약), G4(μƒνƒœκ΄€λ¦¬/μΊμ‹œ), G5(νšŒκ·€)
  • 검증 λͺ…λ Ή: result route/client query unit + typecheck

React Query μΊμ‹œ/λ¬΄νš¨ν™” 변경​

  • μ„ νƒλ˜λŠ” μŠ€ν‚¬: saju-frontend
  • μ„ νƒλ˜λŠ” reference: references/saju-result.md λ˜λŠ” κ΄€λ ¨ 도메인 reference
  • 게이트: React Query μΊμ‹œ/λ¬΄νš¨ν™” μœ ν˜• β†’ saju-frontend, code-review-guard ν•„μˆ˜ / vercel-react-best-practices 선택
  • 검증 포컀슀: G1, G2, G4, G5
  • 검증 λͺ…λ Ή: query key/invalidation unit + typecheck

CI/CD YAML 변경​

  • μ„ νƒλ˜λŠ” μŠ€ν‚¬: saju-frontend
  • μ„ νƒλ˜λŠ” reference: references/infrastructure.md
  • 게이트: CI/CD μ›Œν¬ν”Œλ‘œμš° μœ ν˜• β†’ saju-frontend, code-review-guard ν•„μˆ˜
  • 검증 포컀슀: G1(둜직), G3(λ³΄μ•ˆ), G4(μƒνƒœ), G5(νšŒκ·€)
  • 검증 λͺ…λ Ή: YAML diff, 트리거/secret/branch 쑰건 확인

λ””μžμΈ μ‹œμŠ€ν…œ/토큰 변경​

  • μ„ νƒλ˜λŠ” μŠ€ν‚¬: design-system-hybrid, code-review-guard
  • μ„ νƒλ˜λŠ” reference: λ””μžμΈ μ‹œμŠ€ν…œ κ΄€λ ¨ λ¬Έμ„œ
  • 게이트: λ””μžμΈ μ‹œμŠ€ν…œ/토큰 μœ ν˜• β†’ design-system-hybrid, code-review-guard ν•„μˆ˜ / web-design-guidelines 선택
  • 검증 포컀슀: G1, G2, G4, G5 + μ ‘κ·Όμ„±
  • 검증 λͺ…λ Ή: Storybook build + typecheck

트리거 ν’ˆμ§ˆ 검증 β€” prompt-trigger-eval​

μ™œ ν•„μš”ν•œκ°€β€‹

μŠ€ν‚¬ λΌμš°νŒ…μ€ description λ¬Έμž₯의 ν’ˆμ§ˆμ— 달렀 μžˆμŠ΅λ‹ˆλ‹€.

  • 트리거 λ¬Έμž₯이 λ„ˆλ¬΄ λ„“μœΌλ©΄ β†’ κ΄€λ ¨ μ—†λŠ” μš”μ²­μ—μ„œ 잘λͺ» λ°œλ™(μ˜€νƒ, FP)
  • 트리거 λ¬Έμž₯이 λ„ˆλ¬΄ 쒁으면 β†’ λ°œλ™ν•΄μ•Ό ν•  μš”μ²­μ—μ„œ λ°œλ™ μ‹€νŒ¨(미탐, FN)

prompt-trigger-eval은 should_trigger / should_not_trigger μƒ˜ν”Œ μ„ΈνŠΈλ‘œ μŠ€ν‚¬ λ°œλ™ 정확도λ₯Ό κ²€μ¦ν•˜λŠ” ν‰κ°€μš© μŠ€ν‚¬μž…λ‹ˆλ‹€.

평가 μ§€ν‘œβ€‹

평가 ν•­λͺ©μ˜λ―Έ
TP (정탐)λ°œλ™ν•΄μ•Ό ν•˜λŠ” μš”μ²­μ—μ„œ 정상 λ°œλ™
TN (μ •κ±°λΆ€)λ°œλ™ν•˜μ§€ 말아야 ν•˜λŠ” μš”μ²­μ—μ„œ 정상 λ―Έλ°œλ™
FP (μ˜€νƒ)λ°œλ™ν•˜μ§€ 말아야 ν•˜λŠ” μš”μ²­μ—μ„œ 잘λͺ» λ°œλ™
FN (미탐)λ°œλ™ν•΄μ•Ό ν•˜λŠ” μš”μ²­μ—μ„œ λ°œλ™ μ‹€νŒ¨

운영 방식​

β‘  평가 λŒ€μƒ μŠ€ν‚¬ μ§€μ •
β‘‘ should_trigger / should_not_trigger μƒ˜ν”Œ μ„ΈνŠΈ μ€€λΉ„
β‘’ λΆ„λ₯˜ 정확도 점검 (TP / TN / FP / FN 집계)
β‘£ μ˜€νƒ/미탐이 있으면 description λ¬Έμž₯ μ‘°μ •
β‘€ 같은 μ„ΈνŠΈλ‘œ μž¬κ²€μ¦ β†’ κ°œμ„  μ—¬λΆ€ 확인
β‘₯ κ²°κ³Όλ₯Ό references/test-results.md에 λˆ„μ 

κ²°κ³ΌλŠ” test-results.md에 μŒ“μ΄λ©΄μ„œ μ–΄λ–€ μŠ€ν‚¬μ΄ μ–΄λ–€ κ²½κ³„μ—μ„œ μ˜€νƒ/미탐을 λƒˆλŠ”μ§€ κ΄€λ¦¬λ©λ‹ˆλ‹€. 이 과정을 λ°˜λ³΅ν•΄ μ˜¨ν†¨λ‘œμ§€μ˜ 도메인 경계λ₯Ό μ§€μ†μ μœΌλ‘œ μ‘°μ •ν•©λ‹ˆλ‹€.

:::tip μ‚¬μš© μ‹œμ  prompt-trigger-eval은 일반 κ΅¬ν˜„ μž‘μ—… 쀑 μƒμ‹œ μ‹€ν–‰ν•˜λŠ” μŠ€ν‚¬μ΄ μ•„λ‹™λ‹ˆλ‹€. "ν”„λ‘¬ν”„νŠΈ ν…ŒμŠ€νŠΈ ν•˜μž", "트리거 κ²€μ¦ν•΄μ€˜", "μ˜€νƒ/미탐 점검"처럼 μŠ€ν‚¬ 경계λ₯Ό 점검할 λ•Œλ§Œ μ‚¬μš©ν•©λ‹ˆλ‹€. :::


μž₯점과 ν•œκ³„β€‹

μž₯점​

ν•­λͺ©μ„€λͺ…
토큰 μ ˆμ•½ν•„μš”ν•œ reference만 μ„ νƒμ μœΌλ‘œ 읽어 μ»¨ν…μŠ€νŠΈ λ‚­λΉ„ μ—†μŒ
κ·œμΉ™ μΌκ΄€μ„±ν•˜λ„€μŠ€κ°€ μ ˆμ°¨μ™€ 좜λ ₯ ν˜•μ‹μ„ κ³ μ •ν•΄ 맀번 같은 κΈ°μ€€ 적용
리뷰 λ…λ¦½μ„±κ΅¬ν˜„ AI와 검증 AIλ₯Ό 뢄리해 맹점 μ—†λŠ” 리뷰 κ°€λŠ₯
νšŒκ·€ μœ„ν—˜ κ°μ†Œgate-matrixκ°€ μž‘μ—… μœ ν˜•λ³„ ν•„μˆ˜ 검증을 κ°•μ œ
μ‚°μΆœλ¬Ό ν’ˆμ§ˆ μ•ˆμ •ν™”λ°˜λ³΅ μž‘μ—…μ—μ„œ 좜λ ₯ 포맷과 νŒμ • 기쀀이 흔듀리지 μ•ŠμŒ

ν•œκ³„β€‹

  • description ν’ˆμ§ˆ 의쑴: 트리거 λ¬Έμž₯이 λΆ€μ •ν™•ν•˜λ©΄ μ˜€νƒ/미탐이 생긴닀. 주기적으둜 prompt-trigger-eval둜 점검해야 ν•œλ‹€.
  • λ¬Έμ„œ μ΅œμ‹ ν™” ν•„μš”: μ½”λ“œκ°€ λ°”λ€Œλ©΄ references/ λ¬Έμ„œλ„ ν•¨κ»˜ κ°±μ‹ ν•΄μ•Ό ν•œλ‹€. λ¬Έμ„œκ°€ λ‚‘μœΌλ©΄ 잘λͺ»λœ νŒλ‹¨μ΄ λ‚˜μ˜¨λ‹€.
  • μ™„μ „ μžλ™ 싀행이 μ•„λ‹˜: λͺ…μ‹œμ  운영 κ·œμΉ™κ³Ό μ—μ΄μ „νŠΈ 지침이 ν•„μš”ν•˜λ‹€. μ ˆμ°¨λŠ” μ‚¬λžŒμ΄ μ˜μ‹μ μœΌλ‘œ 따라야 μž‘λ™ν•œλ‹€.
  • μŠ€ν‚¬ 경계 관리 λΆ€λ‹΄: ν”„λ‘œμ νŠΈκ°€ 컀질수둝 μŠ€ν‚¬ 경계λ₯Ό 잘 λ‚˜λˆ μ•Ό μ˜€νƒ/미탐이 쀄어든닀.