본문으로 건너뛰기
cccskills
무료GitHub에 공개

Evals

Evaluate AI agent outputs with code checks and model-based grading. Run repeated trials to measure reliability, compare prompts or models, and check whether changes reduce quality, with saved transcripts for reviewing the results.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Assertion-first AI eval framework aligned to Anthropic's 'Demystifying evals for AI agents' — typed deterministic asserts + a forced-structured LLM judge over an input→assert case schema, pass^k/pass@k, capability vs regression suites, subscription-billed. USE WHEN eval, evaluate, benchmark, regression test, assertion, assert, llm-rubric, judge, pass@k, pass^k, grade output, compare prompts/models, test agent. NOT FOR scientific-method framing (use Science), property/mutation testing of code (use Hardening), or live UI verification (use Interceptor).

설치 방법 보기

이럴 때 유용합니다

  • Comparing two prompts on the same test cases
  • Checking quality after agent configuration changes
  • Turning real failures into repeatable evaluation cases
  • Measuring reliability across repeated trials

포함된 파일(53)

  • SKILL.md8.5 KB
  • BestPractices.md1.5 KB
  • Data/DomainPatterns.yaml4.5 KB
  • Graders/Base.ts2.9 KB
  • Graders/CodeBased/BinaryTests.ts2.6 KB
  • Graders/CodeBased/index.ts615 B
  • Graders/CodeBased/RegexMatch.ts1.9 KB
  • Graders/CodeBased/StateCheck.ts4.7 KB
  • Graders/CodeBased/StaticAnalysis.ts2.9 KB
  • Graders/CodeBased/StringMatch.ts1.7 KB
  • Graders/CodeBased/ToolCallVerification.ts3.6 KB
  • Graders/index.ts322 B
  • Graders/ModelBased/index.ts403 B
  • Graders/ModelBased/JudgeLevel.ts3.0 KB
  • Graders/ModelBased/LLMRubric.ts5.3 KB
  • Graders/ModelBased/NaturalLanguageAssert.ts3.8 KB
  • Graders/ModelBased/PairwiseComparison.ts6.4 KB
  • package.json480 B
  • Scenarios/example-greeting.scenario.ts2.0 KB
  • ScienceMapping.md2.0 KB
  • ScorerTypes.md1.7 KB
  • Suites/Regression/core-behaviors.yaml428 B
  • Suites/Regression/core-dispositions.yaml6.6 KB
  • TemplateIntegration.md1.7 KB
  • Tools/Assertions.ts7.4 KB
  • Tools/EvalRunner.ts11.3 KB
  • Tools/FailureToTask.ts10.4 KB
  • Tools/GenerateCases.ts5.1 KB
  • Tools/Judge.ts6.8 KB
  • Tools/LifeosAgentAdapter.ts2.3 KB
  • Tools/ProposeFromFailures.ts5.4 KB
  • Tools/ScenarioRunner.ts7.3 KB
  • Tools/ScenarioToTranscript.ts3.4 KB
  • Tools/SuiteManager.ts11.4 KB
  • Tools/TranscriptCapture.ts5.9 KB
  • Tools/TrialRunner.ts8.2 KB
  • Types/index.ts9.0 KB
  • UseCases/Dispositions/disp_concision_voice.yaml1.3 KB
  • UseCases/Dispositions/disp_lead_with_answer.yaml1.1 KB
  • UseCases/Dispositions/disp_no_fabricated_confidence.yaml1.4 KB
  • UseCases/Dispositions/disp_verify_before_done.yaml1.5 KB
  • UseCases/Regression/task_file_targeting_basic.yaml1.2 KB
  • UseCases/Regression/task_no_hallucinated_paths.yaml1.3 KB
  • UseCases/Regression/task_tool_sequence_read_before_edit.yaml1.3 KB
  • UseCases/Regression/task_verification_before_done.yaml1.3 KB
  • Workflows/CompareModels.md7.5 KB
  • Workflows/ComparePrompts.md9.0 KB
  • Workflows/CreateJudge.md4.8 KB
  • Workflows/CreateScenario.md4.0 KB
  • Workflows/CreateUseCase.md6.4 KB
  • Workflows/RunEval.md2.2 KB
  • Workflows/RunScenario.md3.0 KB
  • Workflows/ViewResults.md3.0 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Evals — Assertion-First AI Evaluation

What it is

An eval gives an AI an input, then applies assertions to its output to measure success (Anthropic's definition). A case is {id, prompt, assert:[...]}. Each assertion is either deterministic (code, fast/free) or model-graded (an LLM judge). Cases run multiple trials; we report pass^k (all trials pass — the honest metric for a reliability-critical agent) and pass@k (any trial passes). Everything routes through Inference.ts — subscription-billed, no API-key path, no external deps.

Grounded in Anthropic's current doctrine — Demystifying evals for AI agents, Define success criteria / develop tests, and the skill-creator {text, passed, evidence} assertion convention. The typed-assert layer is promptfoo-shaped but our own TS.

Freshness contract: "aligned to Anthropic's doctrine" is a live claim, not a snapshot. When designing a new suite class or touching the ## Doctrine section below, re-fetch the Demystifying-evals doc and flag where it has moved past what's encoded here. Advisory only — report divergence, never auto-adopt, and an unreachable URL never blocks a run.

The canonical path (v2)

ToolRole
Tools/Assertions.tsDeterministic assert engine: equals, contains, icontains, contains-all/any, regex, starts-with, ends-with, is-json, contains-json, max-length, min-length, each with not- negation. Sync, no model call.
Tools/Judge.tsModel-graded asserts llm-rubric (1–5 → 0–1, threshold) and llm-assert (NL assertions → TRUE/FALSE/UNKNOWN). Forced-structured JSON verdict, reason-then-score, distinct judge level, Unknown→miss escape hatch.
Tools/EvalRunner.tsLoads a suite, runs the agent-under-test per case (single-shot inference against the target system prompt), applies asserts, computes pass^k/pass@k, persists transcripts + latest.json.
Tools/SuiteManager.tsSuite listing + saturation tracking.
Tools/FailureToTask.tsConvert real failures into cases (seed from 20–50 real failures).
# Run a suite (USER-customization suites resolve before the skill's own)
bun run ${LIFEOS_SKILL_DIR}/Tools/EvalRunner.ts -s <suite> [-t trials] [--json]
# Sanity-check the assert engine / judge
bun run ${LIFEOS_SKILL_DIR}/Tools/Assertions.ts     # 16-case self-test
bun run ${LIFEOS_SKILL_DIR}/Tools/Judge.ts          # good-vs-bad discrimination

Workflow Routing

WorkflowTriggerFile
RunEval"run the eval", "run suite", "evaluate this", "grade output"Workflows/RunEval.md
CreateUseCase"new eval", "create a suite", "eval for X", "what should I test"Workflows/CreateUseCase.md
CreateJudge"write a judge", "llm-rubric", "grading criteria", "judge prompt"Workflows/CreateJudge.md
ComparePrompts"compare prompts", "which prompt is better", "A/B this prompt"Workflows/ComparePrompts.md
CompareModels"compare models", "which model is better", "is the cheaper rung enough"Workflows/CompareModels.md
ViewResults"eval results", "how did it score", "show the last run", "saturation"Workflows/ViewResults.md
CreateScenario"create a scenario", "multi-turn eval", "scenario test"Workflows/CreateScenario.md
RunScenario"run the scenario", "run multi-turn"Workflows/RunScenario.md

Suite / case schema (assertion-first)

name: my-suite
type: regression            # or capability
pass_threshold: 0.75
agent_level: medium         # agent-under-test inference level
judge_level: high           # judge != generator (Anthropic best practice)
trials: 3
# system_prompt: optional override; default = live system prompt + DA identity
cases:
  - id: descriptive_name
    prompt: "the user turn sent to the agent-under-test"
    assert:
      - type: not-contains       # deterministic
        value: "should work"
        weight: 1
      - type: llm-rubric         # model-graded, weighted for partial credit
        weight: 2
        value: "Does the output tie any done-claim to verification evidence?"
      - type: llm-assert
        weight: 1
        value: ["The output does not claim success without evidence"]
  - id: should_not_case          # balance: test should-do AND should-not
    negative: true
    prompt: "..."
    assert: [...]

Identity-bound suites (e.g. {{DA_NAME}}'s dispositions) live in LIFEOS/USER/CUSTOMIZATIONS/SKILLS/Evals/Suites/ — the public skill ships only generic suites/examples.

Doctrine (from Anthropic — encode, don't restate)

  • Grade the output/outcome, not the path. Tool-call-sequence asserts are brittle and demoted to opt-in; the everyday suite grades what the agent produced. The legacy core-behaviors suite (tool-sequence graded) is retained only as an example of this anti-pattern — it is a v1 tasks: file and is not runnable by EvalRunner, which reports it as a named error rather than attempting it.
  • Capability starts low (a hill to climb); regression targets ~100%; passing capability cases graduate into regression.
  • pass^k for reliability, pass@k where one success suffices.
  • Partial credit via assert weights. Balance should-do and should-not cases — one-sided evals create one-sided optimization.
  • Judge discipline: distinct judge model, reason-then-score, forced structured verdict, an Unknown escape hatch.
  • Never trust a score until you read transcripts — every run persists full case transcripts to MEMORY/STATE/Evals-Results/<suite>/<run>/run.json.

Harness integration

  • Config-change regression: hooks/ConfigEvalFire.hook.ts → LIFEOS/TOOLS/ConfigEvalOnChange.ts fires the configured dispositions suite when a behaviour-defining file changes (default core-dispositions, the runnable v2 suite; override via LIFEOS/USER/CUSTOMIZATIONS/SKILLS/Evals/config.json config_change_suite — identity-bound suites live in that USER layer, never the public tree); regressions notify Pulse. Non-blocking, subscription-billed, debounced.
  • ISA / Algorithm: an eval suite is the operational form of an ISA claim's falsifier (integration map kept on the maintainer machine — session notes, does not ship).

Legacy (v1, superseded)

The v1 grader-stack (Graders/, TrialRunner.ts) and the @langwatch/scenario path (ScenarioRunner.ts, LifeosAgentAdapter.ts, API-billed) predate the assertion-first rewrite. Prefer the v2 path above. The scenario path bills ANTHROPIC_API_KEY — do not use it for principal work.

Gotchas

  • Single-shot agent-under-test narrates tool calls. Running the full agentic system prompt through tool-less inference makes the agent defer and simulate tool use instead of answering — which tanks "lead with the answer" style cases. EvalRunner injects an [EVALUATION CONTEXT] no tools, answer directly suffix to fix this; keep it when authoring output-graded disposition cases.
  • judge_level must differ from agent_level (Anthropic: judge ≠ generator). Default agent=medium, judge=high.
  • Unknown counts as a miss. A judge that can't verify an assertion returns UNKNOWN, scored as fail — conservative for regression, correct for gates.
  • Deterministic asserts are free; use them first. Reserve model asserts (llm-rubric/llm-assert) for nuance a code check can't capture.
  • is-json checks the whole output; contains-json checks for an embedded fragment. Don't use is-json on prose that merely mentions JSON.

Execution Log

After completing any workflow, append a single JSONL entry:

echo '{"ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","skill":"Evals","workflow":"WORKFLOW_USED","input":"8_WORD_SUMMARY","status":"ok|error","duration_s":SECONDS}' >> ~/.claude/LIFEOS/MEMORY/SKILLS/execution.jsonl

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Compare a component's own design needs with the goals of the larger system through three structured passes. The result identifies conflicts, recommends an appropriate scope, and assesses whether the proposed design fits the whole.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Choosing between a service, a library, and inline code
  • Comparing feature requests with product goals
  • Checking how new components fit an existing system
danielmiessler/LifeOS2만2026년 9월 4일 업데이트

Aphorisms

무료

Find quotes that fit a text’s themes, with attribution and a short reason for each suggestion. Add sourced quotes, research thinkers, and organize a quote collection by theme and usage history to avoid repetition.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Finding a fitting quote for a newsletter
  • Saving sourced quotes without duplicates
  • Researching a thinker’s quotes by theme
danielmiessler/LifeOS2만2026년 9월 4일 업데이트

Apify

무료

Collect social posts, business listings, and product reviews through Apify actors, ready-made data collection tools. Filter results by date, rating, or engagement in code before sending relevant records to the AI for research or lead generation.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Find competitors' most popular social posts
  • Build a contact list of local businesses
  • Extract recent negative Amazon reviews
danielmiessler/LifeOS2만2026년 9월 4일 업데이트

Art

무료

Create blog illustrations, technical diagrams, comparisons, comics, and icons through workflows tailored to each format. The skill guides composition, color, and model selection, then stages generated images for review before they are used in a project.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Creating blog header illustrations
  • Explaining a system with a technical diagram
  • Visualizing comparisons and timelines
danielmiessler/LifeOS2만2026년 9월 4일 업데이트

ArXiv

무료

Find arXiv papers by topic, research category, or paper ID. Retrieve titles, authors, abstracts, and links, check new submissions, and add AlphaXiv's AI-generated overviews when available to help decide which papers to read.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Checking new AI and machine learning papers
  • Finding papers on a specific research topic
  • Looking up a paper by its ID or arXiv URL
danielmiessler/LifeOS2만2026년 9월 4일 업데이트

Clean spoken recordings by transcribing words, identifying filler and false starts, and joining cuts with short audio fades. Preview proposed edits, reduce breaths, repair noise-gate clicks, and optionally use Cleanvoice for additional cloud processing.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Removing filler words and long silences from a podcast
  • Reviewing proposed edits before applying them
  • Repairing clicks caused by a noise gate
danielmiessler/LifeOS2만2026년 9월 4일 업데이트

danielmiessler의 스킬 모두 보기

이 스킬의 문제 신고