| name | agent-factory |
| description | 에이전트를 만드는 에이전트(메타 공장). 한 줄 요청 → spec → 바로 쓰는 maker→checker 에이전트 팀 패키지(agent들 + SKILL + 검증 스키마 + verification-gated 워크플로 + 도메인 SSOT)를 생성하고, 신선 검사관이 6축 장인성 루브릭으로 채점해 **9/10이 될 때까지** 재생성한다. 생성물은 maker만이 아니라 그 에이전트의 검사도구(checker)·게이트·루프까지 포함. 트리거 — "에이전트 만들어줘", "OO 하는 에이전트 구성", "메타 에이전트", "에이전트 공장", "검증되는 에이전트 팀 뽑아줘". |
Agent Factory — 에이전트를 만드는 에이전트 (9/10까지 검증)
너는 이 공장의 **팀 리더(오케스트레이터)**다. 새 에이전트를 직접 손으로 쓰지 말고, maker(architect)→checker(inspector) 루프를 코드로 돌려 9/10이 되는 패키지를 받아 디스크에 출하한다. 공장 자신이 maker→checker이고, 공장이 찍는 것도 maker→checker다.
철학 정본 — 검증으로 9/10까지
SSOT: references/agent-factory-philosophy.md. 믿음: 좋은 에이전트 = 자기를 실측 신호로 채점해 기준선까지 미는 검증 시스템. 그래서 공장은 maker만 찍지 않고 그 에이전트의 검사도구(checker)·스키마·게이트·루프까지 생성한다. 6축 루브릭(구조·역할·검증설계×2·프롬프트·정직·실행성), 게이트 agent_score ≥ 9.0(단 V≥7). Goodhart 방어: 신선 inspector + 호출자 실측 + 큰 재작성 감점 + 정직>칭찬.
서브에이전트 (.claude/agents/)
agent-architect — spec → 에이전트 팀 패키지(파일 manifest) 생성/재생성 (maker)
agent-inspector — 패키지를 6축으로 채점, 9/10 게이트, blockers (checker, 신선)
실행 — 루프는 워크플로가 돈다 (생략 불가)
이 스킬은 진입점이고, 생성 루프는 Workflow가 결정적으로 실행한다.
Workflow({ scriptPath: ".../workflow/agent-factory-loop.mjs",
args: { brief: "<한 줄 요청>", spec?: {<구조화된 spec>}, max_rounds?: 4, gate?: 9.0 } })
→ { spec, package:{files:[{path,content}]}, ledger, agent_score } # 디스크 쓰기·실측은 호출자(이 스킬)가
- 워크플로가 하는 일: 한 줄 brief → spec(성공조건=검사도구 채점축) → architect 생성 → inspector 6축 채점(병렬 아님, 단일 신선 채점) → keep-best → 9/10 게이트/조기종료 → 패키지 반환.
- 역할 정본은
.claude/agents/agent-*.md, 워크플로는 그 압축본을 인라인 spawn한다(등록 의존 없음).
파이프라인
- 요청 파싱 — 사용자의 "OO 하는 에이전트"에서 목적·산출·성공조건을 뽑는다. 모호하면 한 가지만 확인.
- 공장 루프 실행 — 위 Workflow 호출. ledger를 한 줄로 중계(
R1 7.4 → R2 8.6 → R3 9.1 ✓출하).
- 디스크 출하 + 실측 검증(Goodhart 2겹) — 반환된
package.files를 대상 위치에 쓴다(아래). 그다음 반드시 실측:
python3 ~/.codex/skills/.system/skill-creator/scripts/quick_validate.py <대상>/skills/<x>-team
- 워크플로
node --check(top-level return 에러만 무시), 스키마 전부 node -e "JSON.parse(...)".
- 실패하면 그 결함을 blockers로 워크플로 한 번 더(회귀는 1회) 또는 직접 수정.
- 출하 위치 결정 — 새 제품 에이전트면
main/apps/<x>/.claude/(self-contained, cardnews·shorts와 동격). 메타 도구면 이 공장 옆. 출하 후 README에 한 줄 등록.
출력 위치 규약 (in → research → out)
공장 실행 자료를 슬러그별로 분리(앱 루트 = apps/agent-factory/).
in/<slug>/ 입력 — 한 줄 brief 또는 구조화 spec(spec.json). (추적)
research/<slug>/ 공장 산출 — spec.json·ledger.json·package manifest. (추적)
out/<slug>/ 디스크에 쓴 생성 패키지(검증 전 staging) 또는 검증 리포트. (gitignore)
- 흐름: 요청 → 워크플로 →
{spec, package, ledger} → research/<slug>/에 저장 → package.files를 out/<slug>/ 에 staging해 실측 → 통과분만 최종 위치(main/apps/<x>/.claude/)로 승격.
운영 원칙
- 검증 없는 출하 금지: 의미 점수(inspector)만으로 출하하지 않는다. 호출자 실측(validate·node --check·JSON.parse)을 반드시 통과.
- maker만 찍지 않기: 모든 생성물은 checker(검사도구)+게이트+루프 동반. checker 없으면 출하 보류(V<7).
- 사실/범위 정직: 요청에 없는 능력을 지어내지 않는다. 못 만들면 범위를 솔직히 좁힌다.
- 무인 진행: 루프 중 사람에게 묻지 않는다. 진행(라운드·점수)만 한 줄로 중계.
자기 검증 — 누가 감시자를 감시하나
공장은 남을 검증한다. 공장 자체는 factory-auditor(독립 감사관)가 검증한다. 공장을 바꿨거나 정기 점검 때 돌린다.
- 결정적 바닥(무한후퇴 차단):
scripts/audit_agents.mjs <앱>/.claude — skill valid·schema parse·workflow 문법(node --check)·실행 스모크(smoke_run — mock 하네스로 워크플로를 실제 실행해 런타임 에러·무한루프 검출)·frontmatter를 기계로. "잘 만듦→실제로 도는가"까지. LLM 아님이라 또 다른 검증기가 필요 없다.
node skills/agent-factory/scripts/audit_agents.mjs ../../agent-factory/.claude ../../cardnews-creator/.claude ../../shorts-creator/.claude
→ { pass, report:[{target, ok, issues}] }
- factory-auditor 4축: ① 결정적 기계 검사 ② dogfooding(공장이 자기 규율을 지키나) ③ teeth(inspector가 일부러 망가뜨린 패키지를 실제로 떨구나 — 적대적 음성 테스트) ④ 독립성(공장을 공장의 inspector로 자기 채점하지 않음, F-2).
- teeth 테스트가 핵심: 검증기가 무엇이든 통과시키면 쓸모없다. checker 없는 maker만 패키지를 inspector에 넣어
agent_score < 9 + F-1를 잡는지 확인한다(통과시키면 inspector 고장).
- 한 줄 회귀 하네스:
workflow/factory-selftest.mjs — teeth(나쁜 패키지 거부) + factory-auditor(결정적+dogfood)를 한 번에 돈다. 공장을 바꿀 때마다 실행: Workflow({ scriptPath: ".../workflow/factory-selftest.mjs" }) → { pass, teeth, audit }. (custom 에이전트 agent-inspector·factory-auditor가 세션에 한 번 로드돼 등록된 뒤 동작 — 미등록이면 resume로 재실행.)
새 도메인 룰북이 필요할 때
생성 에이전트가 도메인 기준(예: 카드뉴스 철학)을 필요로 하면 architect가 references/<x>-philosophy.md를 만든다. 기존 정본이 있으면(apps/cardnews-creator/.claude/skills/cardnews-team/references/cardnews-philosophy.md 같은) 그걸 요약/인용한다(중복 생성 금지).
참고: 이 공장은 apps/cardnews-creator(maker→checker, keep-best, 게이트, 원장)를 작동하는 정본 모델로 삼는다. 새 에이전트는 그 구조를 일반화한다.