@uzysjung/agent-harness 26.151.0 → 26.153.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ko.md +2 -2
- package/README.md +2 -2
- package/dist/{chunk-3QBHZUVB.js → chunk-OYNSK6QF.js} +49 -33
- package/dist/chunk-OYNSK6QF.js.map +1 -0
- package/dist/index.js +157 -243
- package/dist/index.js.map +1 -1
- package/dist/trust-tier-drift.js +1 -1
- package/package.json +1 -1
- package/templates/CLAUDE.md +93 -145
- package/templates/codex/README.md +6 -7
- package/templates/codex/config.toml.template +1 -9
- package/templates/rules/change-management.md +2 -3
- package/templates/rules/cli-development.md +2 -4
- package/templates/rules/doc-governance.md +1 -1
- package/templates/skills/audit-harness-fit/README.md +76 -43
- package/templates/skills/audit-harness-fit/SKILL.md +62 -47
- package/templates/skills/audit-harness-fit/evals/scenarios.yaml +179 -22
- package/templates/skills/audit-harness-fit/references/apply.md +74 -45
- package/templates/skills/audit-harness-fit/references/audit.md +142 -118
- package/templates/skills/audit-harness-fit/references/populate.md +53 -49
- package/templates/skills/audit-harness-fit/references/verification.md +131 -100
- package/templates/skills/audit-service-gaps/SKILL.md +0 -2
- package/templates/skills/clear-korean-communication/SKILL.md +76 -209
- package/templates/skills/external-model-consult/scripts/codex-ask.sh +9 -4
- package/templates/skills/external-model-consult/scripts/gemini-ask.sh +9 -4
- package/templates/skills/model-orchestration/SKILL.md +123 -285
- package/templates/skills/objective-brief/SKILL.md +3 -3
- package/templates/track-mcp-map.tsv +1 -1
- package/dist/chunk-3QBHZUVB.js.map +0 -1
- package/templates/agents/build-error-resolver.md +0 -111
- package/templates/agents/plan-checker.md +0 -116
- package/templates/agents/silent-failure-hunter.md +0 -50
- package/templates/codex/hooks/README.md +0 -37
- package/templates/codex/hooks/session-start.sh +0 -7
- package/templates/codex/hooks/uncommitted-check.sh +0 -7
- package/templates/skills/agent-introspection-debugging/SKILL.md +0 -153
- package/templates/skills/clear-korean-communication/references/pre-send-checklist.md +0 -37
- package/templates/skills/clear-korean-communication/references/why-it-works.md +0 -24
- package/templates/skills/clear-korean-communication/references/worked-examples.md +0 -89
- package/templates/skills/deep-research/SKILL.md +0 -179
- package/templates/skills/deep-research/agents/openai.yaml +0 -7
- package/templates/skills/eval-harness/SKILL.md +0 -306
- package/templates/skills/eval-harness/agents/openai.yaml +0 -7
- package/templates/skills/verification-loop/SKILL.md +0 -250
- package/templates/skills/verification-loop/agents/openai.yaml +0 -7
- package/templates/skills/verification-loop/references/tracks.md +0 -49
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: deep-research
|
|
3
|
-
description: Multi-source deep research using firecrawl and exa MCPs. Searches the web, synthesizes findings, and delivers cited reports with source attribution. Use when the user wants thorough research on any topic with evidence and citations.
|
|
4
|
-
origin: ECC
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Deep Research
|
|
8
|
-
|
|
9
|
-
Produce thorough, cited research reports from multiple web sources using firecrawl and exa MCP tools.
|
|
10
|
-
|
|
11
|
-
## When to Activate
|
|
12
|
-
|
|
13
|
-
- User asks to research any topic in depth
|
|
14
|
-
- Competitive analysis, technology evaluation, or market sizing
|
|
15
|
-
- Due diligence on companies, investors, or technologies
|
|
16
|
-
- Any question requiring synthesis from multiple sources
|
|
17
|
-
- User says "research", "deep dive", "investigate", or "what's the current state of"
|
|
18
|
-
|
|
19
|
-
## Web access
|
|
20
|
-
|
|
21
|
-
Use the firecrawl / exa MCP tools when they are configured — they give the best recall. **The
|
|
22
|
-
harness does not install either**, so check what you actually have first: without them, run the same
|
|
23
|
-
workflow on your CLI's built-in web search and fetch tools (in Claude Code, `WebSearch` /
|
|
24
|
-
`WebFetch`). With no web access at all, say so instead of writing a report from memory — an uncited
|
|
25
|
-
report is the failure mode this skill exists to prevent.
|
|
26
|
-
|
|
27
|
-
## Workflow
|
|
28
|
-
|
|
29
|
-
### Step 1: Understand the Goal
|
|
30
|
-
|
|
31
|
-
Ask 1-2 quick clarifying questions:
|
|
32
|
-
- "What's your goal — learning, making a decision, or writing something?"
|
|
33
|
-
- "Any specific angle or depth you want?"
|
|
34
|
-
|
|
35
|
-
If the user says "just research it" — skip ahead with reasonable defaults.
|
|
36
|
-
|
|
37
|
-
### Step 2: Plan the Research
|
|
38
|
-
|
|
39
|
-
Break the topic into 3-5 research sub-questions. Example:
|
|
40
|
-
- Topic: "Impact of AI on healthcare"
|
|
41
|
-
- What are the main AI applications in healthcare today?
|
|
42
|
-
- What clinical outcomes have been measured?
|
|
43
|
-
- What are the regulatory challenges?
|
|
44
|
-
- What companies are leading this space?
|
|
45
|
-
- What's the market size and growth trajectory?
|
|
46
|
-
|
|
47
|
-
### Step 3: Execute Multi-Source Search
|
|
48
|
-
|
|
49
|
-
For EACH sub-question, search using available MCP tools:
|
|
50
|
-
|
|
51
|
-
**With firecrawl:**
|
|
52
|
-
```
|
|
53
|
-
firecrawl_search(query: "<sub-question keywords>", limit: 8)
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**With exa:**
|
|
57
|
-
```
|
|
58
|
-
web_search_exa(query: "<sub-question keywords>", numResults: 8)
|
|
59
|
-
web_search_advanced_exa(query: "<keywords>", numResults: 5, startPublishedDate: "2025-01-01")
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
**Search strategy:**
|
|
63
|
-
- Use 2-3 different keyword variations per sub-question
|
|
64
|
-
- Mix general and news-focused queries
|
|
65
|
-
- Aim for 15-30 unique sources total
|
|
66
|
-
- Prioritize: academic, official, reputable news > blogs > forums
|
|
67
|
-
|
|
68
|
-
### Step 4: Deep-Read Key Sources
|
|
69
|
-
|
|
70
|
-
For the most promising URLs, fetch full content:
|
|
71
|
-
|
|
72
|
-
**With firecrawl:**
|
|
73
|
-
```
|
|
74
|
-
firecrawl_scrape(url: "<url>")
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
**With exa:**
|
|
78
|
-
```
|
|
79
|
-
crawling_exa(url: "<url>", tokensNum: 5000)
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
Read 3-5 key sources in full for depth. Do not rely only on search snippets.
|
|
83
|
-
|
|
84
|
-
### Step 5: Synthesize and Write Report
|
|
85
|
-
|
|
86
|
-
Structure the report:
|
|
87
|
-
|
|
88
|
-
```markdown
|
|
89
|
-
# [Topic]: Research Report
|
|
90
|
-
*Generated: [date] | Sources: [N] | Confidence: [High/Medium/Low]*
|
|
91
|
-
|
|
92
|
-
## Executive Summary
|
|
93
|
-
[3-5 sentence overview of key findings]
|
|
94
|
-
|
|
95
|
-
## 1. [First Major Theme]
|
|
96
|
-
[Findings with inline citations]
|
|
97
|
-
- Key point ([Source Name](url))
|
|
98
|
-
- Supporting data ([Source Name](url))
|
|
99
|
-
|
|
100
|
-
## 2. [Second Major Theme]
|
|
101
|
-
...
|
|
102
|
-
|
|
103
|
-
## 3. [Third Major Theme]
|
|
104
|
-
...
|
|
105
|
-
|
|
106
|
-
## Key Takeaways
|
|
107
|
-
- [Actionable insight 1]
|
|
108
|
-
- [Actionable insight 2]
|
|
109
|
-
- [Actionable insight 3]
|
|
110
|
-
|
|
111
|
-
## Sources
|
|
112
|
-
1. [Title](url) — [one-line summary]
|
|
113
|
-
2. ...
|
|
114
|
-
|
|
115
|
-
## Research Ledger — [N] confirmed · [M] killed
|
|
116
|
-
|
|
117
|
-
| Killed claim/direction | Why rejected | Source that killed it |
|
|
118
|
-
|---|---|---|
|
|
119
|
-
| [what you looked into] | [contradicting evidence / legal or licensing block / vendor-only claim] | [url] |
|
|
120
|
-
|
|
121
|
-
> **Caveats**: [which numbers are vendor-promotional or self-reported, which sources are
|
|
122
|
-
> preprints, which claims you could not verify verbatim and are therefore follow-up work]
|
|
123
|
-
|
|
124
|
-
## Methodology
|
|
125
|
-
Searched [N] queries across web and news. Analyzed [M] sources.
|
|
126
|
-
Sub-questions investigated: [list]
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### The ledger is not optional
|
|
130
|
-
|
|
131
|
-
A report that lists only what survived hides the most reusable part of the work. Record it as
|
|
132
|
-
`N confirmed · M killed`, and for each killed item write **why** — contradicting evidence, a
|
|
133
|
-
legal block, or a claim that turned out to be vendor-promotional. Two things follow:
|
|
134
|
-
|
|
135
|
-
- **Nobody re-researches a dead end.** Next quarter the same idea resurfaces; the ledger answers
|
|
136
|
-
it in one line instead of another research cycle.
|
|
137
|
-
- **A kill count is evidence of rigor.** `22 confirmed · 0 killed` means you were collecting
|
|
138
|
-
support, not testing claims. Zero kills is a signal to re-examine, not a clean result.
|
|
139
|
-
|
|
140
|
-
The caveat block does the same job for what survived but is *weakly* sourced: vendor numbers with
|
|
141
|
-
no independent verification, preprints whose self-reported performance you cite architecture from
|
|
142
|
-
but not results, beta APIs. Naming them keeps a soft source from hardening into a fact downstream.
|
|
143
|
-
|
|
144
|
-
### Step 6: Deliver
|
|
145
|
-
|
|
146
|
-
- **Short topics**: Post the full report in chat
|
|
147
|
-
- **Long reports**: Post the executive summary + key takeaways, save full report to a file
|
|
148
|
-
|
|
149
|
-
## Parallel Research with Subagents
|
|
150
|
-
|
|
151
|
-
For broad topics, use Claude Code's Task tool to parallelize:
|
|
152
|
-
|
|
153
|
-
```
|
|
154
|
-
Launch 3 research agents in parallel:
|
|
155
|
-
1. Agent 1: Research sub-questions 1-2
|
|
156
|
-
2. Agent 2: Research sub-questions 3-4
|
|
157
|
-
3. Agent 3: Research sub-question 5 + cross-cutting themes
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
Each agent searches, reads sources, and returns findings. The main session synthesizes into the final report.
|
|
161
|
-
|
|
162
|
-
## Quality Rules
|
|
163
|
-
|
|
164
|
-
1. **Every claim needs a source.** No unsourced assertions.
|
|
165
|
-
2. **Cross-reference.** If only one source says it, flag it as unverified.
|
|
166
|
-
3. **Recency matters.** Prefer sources from the last 12 months.
|
|
167
|
-
4. **Acknowledge gaps.** If you couldn't find good info on a sub-question, say so.
|
|
168
|
-
5. **No hallucination.** If you don't know, say "insufficient data found."
|
|
169
|
-
6. **Separate fact from inference.** Label estimates, projections, and opinions clearly.
|
|
170
|
-
|
|
171
|
-
## Examples
|
|
172
|
-
|
|
173
|
-
```
|
|
174
|
-
"Research the current state of nuclear fusion energy"
|
|
175
|
-
"Deep dive into Rust vs Go for backend services in 2026"
|
|
176
|
-
"Research the best strategies for bootstrapping a SaaS business"
|
|
177
|
-
"What's happening with the US housing market right now?"
|
|
178
|
-
"Investigate the competitive landscape for AI code editors"
|
|
179
|
-
```
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "Deep Research"
|
|
3
|
-
short_description: "Multi-source deep research with firecrawl and exa MCPs"
|
|
4
|
-
brand_color: "#6366F1"
|
|
5
|
-
default_prompt: "Research the given topic using firecrawl and exa, produce a cited report"
|
|
6
|
-
policy:
|
|
7
|
-
allow_implicit_invocation: true
|
|
@@ -1,306 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: eval-harness
|
|
3
|
-
description: Formal evaluation framework for Claude Code sessions implementing eval-driven development (EDD) principles
|
|
4
|
-
origin: ECC
|
|
5
|
-
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Eval Harness Skill
|
|
9
|
-
|
|
10
|
-
A formal evaluation framework for Claude Code sessions, implementing eval-driven development (EDD) principles.
|
|
11
|
-
|
|
12
|
-
## When to Activate
|
|
13
|
-
|
|
14
|
-
- Setting up eval-driven development (EDD) for AI-assisted workflows
|
|
15
|
-
- Defining pass/fail criteria for Claude Code task completion
|
|
16
|
-
- Measuring agent reliability with pass@k metrics
|
|
17
|
-
- Creating regression test suites for prompt or agent changes
|
|
18
|
-
- Benchmarking agent performance across model versions
|
|
19
|
-
|
|
20
|
-
## Philosophy
|
|
21
|
-
|
|
22
|
-
Eval-Driven Development treats evals as the "unit tests of AI development":
|
|
23
|
-
- Define expected behavior BEFORE implementation
|
|
24
|
-
- Run evals continuously during development
|
|
25
|
-
- Track regressions with each change
|
|
26
|
-
- Use pass@k metrics for reliability measurement
|
|
27
|
-
|
|
28
|
-
## Eval Types
|
|
29
|
-
|
|
30
|
-
### Capability Evals
|
|
31
|
-
Test if Claude can do something it couldn't before:
|
|
32
|
-
```markdown
|
|
33
|
-
[CAPABILITY EVAL: feature-name]
|
|
34
|
-
Task: Description of what Claude should accomplish
|
|
35
|
-
Success Criteria:
|
|
36
|
-
- [ ] Criterion 1
|
|
37
|
-
- [ ] Criterion 2
|
|
38
|
-
- [ ] Criterion 3
|
|
39
|
-
Expected Output: Description of expected result
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### Regression Evals
|
|
43
|
-
Ensure changes don't break existing functionality:
|
|
44
|
-
```markdown
|
|
45
|
-
[REGRESSION EVAL: feature-name]
|
|
46
|
-
Baseline: SHA or checkpoint name
|
|
47
|
-
Tests:
|
|
48
|
-
- existing-test-1: PASS/FAIL
|
|
49
|
-
- existing-test-2: PASS/FAIL
|
|
50
|
-
- existing-test-3: PASS/FAIL
|
|
51
|
-
Result: X/Y passed (previously Y/Y)
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## Grader Types
|
|
55
|
-
|
|
56
|
-
### 1. Code-Based Grader
|
|
57
|
-
Deterministic checks using code:
|
|
58
|
-
```bash
|
|
59
|
-
# Check if file contains expected pattern
|
|
60
|
-
grep -q "export function handleAuth" src/auth.ts && echo "PASS" || echo "FAIL"
|
|
61
|
-
|
|
62
|
-
# Check if tests pass
|
|
63
|
-
npm test -- --testPathPattern="auth" && echo "PASS" || echo "FAIL"
|
|
64
|
-
|
|
65
|
-
# Check if build succeeds
|
|
66
|
-
npm run build && echo "PASS" || echo "FAIL"
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### 2. Model-Based Grader
|
|
70
|
-
Use Claude to evaluate open-ended outputs:
|
|
71
|
-
```markdown
|
|
72
|
-
[MODEL GRADER PROMPT]
|
|
73
|
-
Evaluate the following code change:
|
|
74
|
-
1. Does it solve the stated problem?
|
|
75
|
-
2. Is it well-structured?
|
|
76
|
-
3. Are edge cases handled?
|
|
77
|
-
4. Is error handling appropriate?
|
|
78
|
-
|
|
79
|
-
Score: 1-5 (1=poor, 5=excellent)
|
|
80
|
-
Reasoning: [explanation]
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### 3. Human Grader
|
|
84
|
-
Flag for manual review:
|
|
85
|
-
```markdown
|
|
86
|
-
[HUMAN REVIEW REQUIRED]
|
|
87
|
-
Change: Description of what changed
|
|
88
|
-
Reason: Why human review is needed
|
|
89
|
-
Risk Level: LOW/MEDIUM/HIGH
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Metrics
|
|
93
|
-
|
|
94
|
-
### pass@k
|
|
95
|
-
"At least one success in k attempts"
|
|
96
|
-
- pass@1: First attempt success rate
|
|
97
|
-
- pass@3: Success within 3 attempts
|
|
98
|
-
- Typical target: pass@3 > 90%
|
|
99
|
-
|
|
100
|
-
### pass^k
|
|
101
|
-
"All k trials succeed"
|
|
102
|
-
- Higher bar for reliability
|
|
103
|
-
- pass^3: 3 consecutive successes
|
|
104
|
-
- Use for critical paths
|
|
105
|
-
|
|
106
|
-
## Eval Workflow
|
|
107
|
-
|
|
108
|
-
### 1. Define (Before Coding)
|
|
109
|
-
|
|
110
|
-
Write the spec to a file (`.claude/evals/<feature>.md`) before implementing. Give every eval a
|
|
111
|
-
stable ID — `C1..Cn` for capability, `R1..Rn` for regression — so the same identifier carries
|
|
112
|
-
from definition to the post-implementation status line, and a reviewer can check them off one by
|
|
113
|
-
one. Prose-only lists ("Can create new user account") can't be referenced or scored.
|
|
114
|
-
|
|
115
|
-
````markdown
|
|
116
|
-
# EVAL: <feature name> (<phase/PR>)
|
|
117
|
-
|
|
118
|
-
**Feature**: <one line>
|
|
119
|
-
**Baseline**: commit <sha> # what "regression" is measured against
|
|
120
|
-
**Target**: pass@1 = 100% for capability evals
|
|
121
|
-
|
|
122
|
-
## Capability Evals
|
|
123
|
-
|
|
124
|
-
### C1: <name>
|
|
125
|
-
- <concrete, checkable expectation — inputs → expected output>
|
|
126
|
-
|
|
127
|
-
### C2: <name>
|
|
128
|
-
- <expectation>
|
|
129
|
-
|
|
130
|
-
## Regression Evals
|
|
131
|
-
|
|
132
|
-
### R1: <existing behavior that must not move>
|
|
133
|
-
- <expectation>
|
|
134
|
-
|
|
135
|
-
## Test Command
|
|
136
|
-
```bash
|
|
137
|
-
pytest tests/test_<area>.py -v -k "<selector>"
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
## Status (after implementation)
|
|
141
|
-
- C1-Cn: PASS via <tests (N개) / route check / manual>
|
|
142
|
-
- R1-Rn: PASS
|
|
143
|
-
|
|
144
|
-
**Overall: pass@1 = <x>%**
|
|
145
|
-
````
|
|
146
|
-
|
|
147
|
-
Two fields carry most of the weight. **Baseline commit** makes "regression" falsifiable — without
|
|
148
|
-
it, R-evals are opinions about the past. **Test Command** makes the spec re-runnable by someone
|
|
149
|
-
who didn't write it; an eval nobody can re-run is documentation, not a gate.
|
|
150
|
-
|
|
151
|
-
Fill the Status section *after* implementing, in the same file. A spec whose status is still empty
|
|
152
|
-
at merge time means the evals were written and never used.
|
|
153
|
-
|
|
154
|
-
### 2. Implement
|
|
155
|
-
Write code to pass the defined evals.
|
|
156
|
-
|
|
157
|
-
### 3. Evaluate
|
|
158
|
-
```bash
|
|
159
|
-
# Run capability evals
|
|
160
|
-
[Run each capability eval, record PASS/FAIL]
|
|
161
|
-
|
|
162
|
-
# Run regression evals
|
|
163
|
-
npm test -- --testPathPattern="existing"
|
|
164
|
-
|
|
165
|
-
# Generate report
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
### 4. Report
|
|
169
|
-
```markdown
|
|
170
|
-
EVAL REPORT: feature-xyz
|
|
171
|
-
========================
|
|
172
|
-
|
|
173
|
-
Capability Evals:
|
|
174
|
-
create-user: PASS (pass@1)
|
|
175
|
-
validate-email: PASS (pass@2)
|
|
176
|
-
hash-password: PASS (pass@1)
|
|
177
|
-
Overall: 3/3 passed
|
|
178
|
-
|
|
179
|
-
Regression Evals:
|
|
180
|
-
login-flow: PASS
|
|
181
|
-
session-mgmt: PASS
|
|
182
|
-
logout-flow: PASS
|
|
183
|
-
Overall: 3/3 passed
|
|
184
|
-
|
|
185
|
-
Metrics:
|
|
186
|
-
pass@1: 67% (2/3)
|
|
187
|
-
pass@3: 100% (3/3)
|
|
188
|
-
|
|
189
|
-
Status: READY FOR REVIEW
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
## Integration Patterns
|
|
193
|
-
|
|
194
|
-
### Pre-Implementation
|
|
195
|
-
```
|
|
196
|
-
/eval define feature-name
|
|
197
|
-
```
|
|
198
|
-
Creates eval definition file at `.claude/evals/feature-name.md`
|
|
199
|
-
|
|
200
|
-
### During Implementation
|
|
201
|
-
```
|
|
202
|
-
/eval check feature-name
|
|
203
|
-
```
|
|
204
|
-
Runs current evals and reports status
|
|
205
|
-
|
|
206
|
-
### Post-Implementation
|
|
207
|
-
```
|
|
208
|
-
/eval report feature-name
|
|
209
|
-
```
|
|
210
|
-
Generates full eval report
|
|
211
|
-
|
|
212
|
-
## Eval Storage (.md + .log Pair Format)
|
|
213
|
-
|
|
214
|
-
각 평가 항목은 **`<topic>.md` (설계) + `<topic>.log` (실행 결과)** 쌍으로 저장. 강제. 단독 .md만 있으면 재현 불가.
|
|
215
|
-
|
|
216
|
-
```
|
|
217
|
-
.claude/
|
|
218
|
-
evals/
|
|
219
|
-
feature-xyz.md # Eval definition (Capability/Regression/Test 3섹션 필수)
|
|
220
|
-
feature-xyz.log # Eval run history (실행 시각, grader, pass/fail)
|
|
221
|
-
session-YYYYMMDD.md # 세션 단위 회고 + 차기 backlog
|
|
222
|
-
session-YYYYMMDD.log # 동일 세션의 grader 출력
|
|
223
|
-
baseline.json # Regression baselines (선택)
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
> eval 산출물은 `docs/evals/*.{md,log}` 로 모은다 — 실행 로그와 판정을 같은 자리에 둔다.
|
|
227
|
-
|
|
228
|
-
### .md 파일 의무 섹션 (3개)
|
|
229
|
-
|
|
230
|
-
```markdown
|
|
231
|
-
# Eval: <topic>
|
|
232
|
-
|
|
233
|
-
## Capability
|
|
234
|
-
[새 능력 — Claude/agent가 무엇을 할 수 있는지]
|
|
235
|
-
- AC: [측정 가능 기준]
|
|
236
|
-
- Grader: code-based / model-based / human
|
|
237
|
-
|
|
238
|
-
## Regression
|
|
239
|
-
[기존 기능 보호 — 변경으로 깨지면 안 되는 baseline]
|
|
240
|
-
- Baseline: <SHA or checkpoint>
|
|
241
|
-
- Tests: [목록]
|
|
242
|
-
|
|
243
|
-
## Test
|
|
244
|
-
[실행 절차 — 누가 다시 돌려도 동일 결과 나와야 함]
|
|
245
|
-
- Setup: [사전 조건]
|
|
246
|
-
- Run: `bash run-eval.sh <topic>` 또는 명시적 명령
|
|
247
|
-
- Expected: [기대 출력]
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
### .log 파일 형식
|
|
251
|
-
|
|
252
|
-
각 실행마다 append. 시간순 누적.
|
|
253
|
-
|
|
254
|
-
```
|
|
255
|
-
=== 2026-04-19 14:32 (run #1) ===
|
|
256
|
-
Capability: 3/3 PASS (pass@1)
|
|
257
|
-
Regression: 5/5 PASS (pass^3)
|
|
258
|
-
Status: SHIP READY
|
|
259
|
-
|
|
260
|
-
=== 2026-04-20 09:15 (run #2 — after refactor) ===
|
|
261
|
-
Capability: 3/3 PASS
|
|
262
|
-
Regression: 4/5 PASS (login-flow regressed at SHA abc123)
|
|
263
|
-
Status: BLOCKED — fix login-flow first
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
## Best Practices
|
|
267
|
-
|
|
268
|
-
1. **Define evals BEFORE coding** - Forces clear thinking about success criteria
|
|
269
|
-
2. **Run evals frequently** - Catch regressions early
|
|
270
|
-
3. **Track pass@k over time** - Monitor reliability trends
|
|
271
|
-
4. **Use code graders when possible** - Deterministic > probabilistic
|
|
272
|
-
5. **Human review for security** - Never fully automate security checks
|
|
273
|
-
6. **Keep evals fast** - Slow evals don't get run
|
|
274
|
-
7. **Version evals with code** - Evals are first-class artifacts
|
|
275
|
-
|
|
276
|
-
## Example: Adding Authentication
|
|
277
|
-
|
|
278
|
-
```markdown
|
|
279
|
-
## EVAL: add-authentication
|
|
280
|
-
|
|
281
|
-
### Phase 1: Define (10 min)
|
|
282
|
-
Capability Evals:
|
|
283
|
-
- [ ] User can register with email/password
|
|
284
|
-
- [ ] User can login with valid credentials
|
|
285
|
-
- [ ] Invalid credentials rejected with proper error
|
|
286
|
-
- [ ] Sessions persist across page reloads
|
|
287
|
-
- [ ] Logout clears session
|
|
288
|
-
|
|
289
|
-
Regression Evals:
|
|
290
|
-
- [ ] Public routes still accessible
|
|
291
|
-
- [ ] API responses unchanged
|
|
292
|
-
- [ ] Database schema compatible
|
|
293
|
-
|
|
294
|
-
### Phase 2: Implement (varies)
|
|
295
|
-
[Write code]
|
|
296
|
-
|
|
297
|
-
### Phase 3: Evaluate
|
|
298
|
-
Run: /eval check add-authentication
|
|
299
|
-
|
|
300
|
-
### Phase 4: Report
|
|
301
|
-
EVAL REPORT: add-authentication
|
|
302
|
-
==============================
|
|
303
|
-
Capability: 5/5 passed (pass@3: 100%)
|
|
304
|
-
Regression: 3/3 passed (pass^3: 100%)
|
|
305
|
-
Status: SHIP IT
|
|
306
|
-
```
|