firegoat 0.0.2 → 0.2.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.md +46 -0
- package/dist/cli.js +8224 -0
- package/package.json +40 -25
- package/skills/firegoat-onboarding/SKILL.md +105 -0
- package/skills/firegoat-onboarding/references/examples.md +114 -0
- package/bin/firegoat.js +0 -13
package/README.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# firegoat
|
|
2
|
+
|
|
3
|
+
Local-first AX evals: how well coding agents use your SDK, CLI, API and docs.
|
|
4
|
+
|
|
5
|
+
Status: early (v0.2). See `plan.md`.
|
|
6
|
+
|
|
7
|
+
## Use
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx firegoat init # writes firegoat.yaml with starter evals; --skills adds the onboarding skill
|
|
11
|
+
npx firegoat login # once per machine: signs claude in to ~/.firegoat/claude
|
|
12
|
+
npx firegoat eval # runs each test with your local `claude`, sandboxed, in a fresh empty folder
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Isolation
|
|
16
|
+
|
|
17
|
+
On macOS, `eval` runs `claude` inside a Seatbelt (`sandbox-exec`) profile:
|
|
18
|
+
|
|
19
|
+
- it signs in with `~/.firegoat/claude` (from `firegoat login`), never your `~/.claude`;
|
|
20
|
+
- it cannot read your home dir or the repo, except toolchains (node, bun, cargo, ...) it needs to run;
|
|
21
|
+
- it can write only in its run dir (`work/`, its own `TMPDIR` and package caches) and system temp;
|
|
22
|
+
- `ANTHROPIC_API_KEY` is removed, so runs bill your subscription, not the API.
|
|
23
|
+
|
|
24
|
+
A probe checks the sandbox before every run; if it does not hold, the run is not graded. Network is open.
|
|
25
|
+
|
|
26
|
+
Off macOS there is no sandbox yet: run inside a throwaway container and pass `--host`.
|
|
27
|
+
|
|
28
|
+
`eval` saves each run's transcript to `.firegoat/runs/<runId>/<test>/<n>/session.jsonl` and a `summary.json`, then runs the test's `checks` in the agent's folder. Nothing is uploaded. `firegoat.yaml` is looked up in the current directory, then parents up to the git root.
|
|
29
|
+
|
|
30
|
+
Exit codes:
|
|
31
|
+
|
|
32
|
+
| code | meaning |
|
|
33
|
+
|---|---|
|
|
34
|
+
| 0 | every run passed |
|
|
35
|
+
| 1 | a goal or check failed |
|
|
36
|
+
| 2 | at least one run was not graded (claude missing, auth, crash, timeout); wins over 1 |
|
|
37
|
+
| 3 | usage or config error (bad flag, unknown test, invalid or missing `firegoat.yaml`) |
|
|
38
|
+
|
|
39
|
+
## Develop
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
bun install
|
|
43
|
+
bun run format
|
|
44
|
+
bun test # e2e: packs the package and drives the installed bin
|
|
45
|
+
FIREGOAT_E2E_REAL=1 bun test # also runs one eval against your real claude
|
|
46
|
+
```
|