eval-forge

A tool for turning a known coding-agent mistake into an automated evaluation scenario. An evaluation scenario is a test that checks whether an agent's output meets defined pass and fail conditions.

In plain words
What is it for?
Use it after recording an agent defect, when a review agent misses something, or before modifying an uncovered agent definition. It prepares fixtures and checks such as required output text, file contents, or passing tests.
Why use it?
It creates a repeatable safety check so the same defect can be detected again. It is also used before changing an agent that has no existing evaluation coverage.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/this-hw/claude-code-kit/eval-forge
Any agent
npx skills add This-HW/claude-code-kit --skill eval-forge
Clone the repo
git clone --depth 1 https://github.com/This-HW/claude-code-kit

Made for: Claude Code, Codex.

Per session 55 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,730 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 2 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00055 $0.01730
Opus 5 $0.00028 $0.00865
Sonnet 5 $0.00011 $0.00346
Haiku 4.5 $0.00006 $0.00173

Measured yesterday against content hash 977dae3bcad3, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

eval-forge scanned grade A with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

- **허용**: `os.path.join`, `shutil.which`, `urllib.parse.urlparse`, `open`, `json.loads`

Runs shell commandslowCapability

Expected in a hook, worth knowing in a rule or an instructions file.

- 차단: `os.system`·`os.popen`·`os.remove` 류, `subprocess.*`, `socket.*`, `requests.*`,
plugins/common/skills/eval-forge/SKILL.md · 104 lines

How it starts

The opening of the file, as written. The whole thing — 104 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Eval Forge — 결함을 회귀 게이트로 굳히기

/self-improve의 HARD-GATE는 eval 커버리지가 있는 대상에서만 이중 게이트다. 실제 커버리지는 33개 에이전트 중 소수뿐이라, 대부분의 정의 파일 수정은 "사용자 승인 단일 게이트"로 퇴화한다. 스킬이 그 한계를 정직하게 고지하고는 있지만, 고지는 해결이 아니다. 이 스킬은 커버리지를 늘리는 비용을 낮춰 그 구멍을 메운다.

적용 범위: 이 스킬은 evals/ 하네스(evals/run.py)가 있는 프로젝트 — 즉 kit 레포 자체의 개발에서 동작한다. 그 하네스가 없는 소비자 프로젝트에서는 스크립트가 exit 2(SKIPPED)로 정직하게 멈춘다. /self-improve·/native-watch와 같은 kit-개발용 스킬 계열이다.

사용 시점

상황
ledger에 에이전트 행동 결함이 올라왔다 같은 결함이 다시 나면 기계가 잡게 만든다
eval 커버리지 없는 에이전트의 정의를 고치려 한다 고치기 전에 안전망을 깐다 (없으면 self-improve가 게이트 없이 돈다)
리뷰형 에이전트가 결함을 놓치는 걸 목격했다 거짓 음성은 eval의 1순위 표적이다

절차

1. 대상과 실패 형태를 확정한다 [건너뛰기 금지]

"무엇을 놓쳤는가"가 아니라 **"통과/실패를 무엇으로 판정할 것인가"**를 먼저 정한다. 판정 기준 없이 시나리오를 만들면 채점 불가능한 자산이 트리에 남는다.

  • 리뷰/스캔형 → 출력에 반드시 등장할 표현(OR 묶음)과 등장하면 실패인 표현
  • 수정/구현형 → pytest_green + 필요하면 file_contains

2. 픽스처를 준비한다

결함을 심은 최소 코드. 아래는 강제 규칙이다 (러너가 거부한다):

  • conftest.py 금지 — 채점 시 임의 코드 실행 통로 (있으면 생성기가 제거한다)
  • 모듈 스코프(=import 시 실행되는 위치)에서 위험 호출 금지. 러너가 AST로 판정하며, 대상은 최상위 문장뿐 아니라 클래스 본문·데코레이터 표현식·함수 기본 인자 값까지다 (전부 import 시 실행된다). 함수/메서드 본문은 실행되지 않으므로 자유롭다 — 결함 코드는 함수 안에 두면 된다.
    • 차단: os.system·os.popen·os.remove 류, subprocess.*, socket.*, requests.*, shutil.rmtree, eval/exec/__import__/getattr/setattr, importlib.*
    • 차단: 별칭·재바인딩·from X import * 우회 (import os as x, f = os.system, getattr(os,"system") 모두 잡힌다)
    • 허용: os.path.join, shutil.which, urllib.parse.urlparse, open, json.loads — 모듈 스코프에서 데이터를 읽는 정상 fixture를 막지 않는다
    • 파싱 불가(구문 오류·NUL 바이트)도 거부한다 — 검사 불가를 통과로 삼지 않는다
  • 시나리오 루트에 .py 금지 — 코드는 fixture/ 안에만

그리고 커밋되는 자산임을 잊지 마라: 보안 시나리오의 가짜 자격증명은 저엔트로피로 쓴다. 고엔트로피 가짜 시크릿은 gitleaks를 트립시켜 CI가 그 eval 자산 자체를 막는다. 점검 대상은 "소스에 자격증명을 상수로 박았다"는 사실이지 값의 엔트로피가 아니다.

3. 생성 (즉시 자기검증된다)

python3 scripts/eval-forge.py --agent <name> --id <kebab-id> \
  --task-file <과제.md> --fixture <파일 또는 디렉토리> \
  --must-mention "표현a,표현b" \
  --must-mention "다른 발견의 표현c,표현d" \
  --rubric "무엇을 판정하는가 (opt-in judge용)"

Read the full file on GitHub · 104 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday First seen · 104 lines · 55 tokens per session scan A 977dae3bcad3

Subscribe to this mod's changes

eval-forge is a skill published in the GitHub repository This-HW/claude-code-kit (4 stars, last pushed 4d ago), licensed MIT. It adds 55 tokens to every session and 1,730 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 2 findings (makes network calls, runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

watch

File sentinel that monitors the working directory for changes and marker comments, then auto-triggers appropriate skills. Poll-based via git diff against the last scan commit. Writes intake items for batch processing and routes marker actions through /do. Use for automatic reactions to file changes; do NOT use for…

SethGammon/Citadel · 70 tokens

pr-watch

Local PR watcher. Monitors CI status, automatically fixes failing checks by reading failure logs and applying targeted fixes, then optionally merges when all checks pass. Local CLI analog to Claude Code's cloud auto-fix feature.

SethGammon/Citadel · 46 tokens

qa

Browser-based QA verification. Launches a real browser, navigates the app, clicks buttons, fills forms, and tests user flows. Works as a standalone skill or as a phase end condition in campaigns. Requires Playwright (optional dependency, graceful skip if not installed).

SethGammon/Citadel · 56 tokens

review

5-pass structured code review — correctness, security, performance, readability, consistency.

SethGammon/Citadel · 17 tokens

live-preview

Mid-build visual verification loop. Takes screenshots of components during construction, not just after. Catches visual regressions and invisible features before they compound. Requires Playwright or similar screenshot tool.

SethGammon/Citadel · 40 tokens

wiki

Markdown-first knowledge base where the LLM acts as librarian. Ingests raw sources, compiles and interlinks topic files, self-maintains an index. No vector DB or embeddings required -- uses LLM-native navigation over structured markdown up to 400K words.

SethGammon/Citadel · 56 tokens