@hassangameryt/freeflow 0.2.0 → 0.4.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/.agents/plugins/marketplace.json +1 -1
- package/.claude-plugin/marketplace.json +4 -4
- package/{plugins/freeflow/.claude-plugin → .claude-plugin}/plugin.json +5 -2
- package/{plugins/freeflow/.codex-plugin → .codex-plugin}/plugin.json +8 -9
- package/README.md +194 -127
- package/assets/feedback-loop.png +0 -0
- package/assets/freeflow-plugin-icon.png +0 -0
- package/assets/freeflow_workflow_map.png +0 -0
- package/assets/workflow.png +0 -0
- package/command-surface.json +129 -0
- package/hooks/freeflow-runtime-context.mjs +419 -0
- package/hooks/tests/check-runtime-context-hook.sh +223 -0
- package/package.json +41 -22
- package/pi-extension/dist/index.js +269 -0
- package/pi-extension/dist/integrations/mcp-config.js +29 -0
- package/pi-extension/dist/output-router/host-producer-identification.js +232 -0
- package/pi-extension/dist/output-router/native-safety-net.js +216 -0
- package/pi-extension/dist/output-router/observed-tool-routing.js +122 -0
- package/pi-extension/dist/output-router/renderers.js +1023 -0
- package/pi-extension/dist/output-router/router-tools.js +554 -0
- package/pi-extension/dist/output-router/schemas.js +383 -0
- package/pi-extension/dist/output-router/status.js +744 -0
- package/pi-extension/dist/output-router/utils.js +502 -0
- package/pi-extension/dist/runtime/runtime-context.js +798 -0
- package/pi-extension/dist/settings/settings-tui.js +314 -0
- package/pi-extension/dist/settings/settings-ui.js +1487 -0
- package/pi-extension/freeflow/index.js +1 -0
- package/pi-extension/src/index.ts +295 -0
- package/pi-extension/src/integrations/mcp-config.ts +32 -0
- package/pi-extension/src/output-router/host-producer-identification.ts +256 -0
- package/pi-extension/src/output-router/native-safety-net.ts +248 -0
- package/pi-extension/src/output-router/observed-tool-routing.ts +134 -0
- package/pi-extension/src/output-router/renderers.ts +1108 -0
- package/pi-extension/src/output-router/router-tools.ts +579 -0
- package/pi-extension/src/output-router/schemas.ts +387 -0
- package/pi-extension/src/output-router/status.ts +791 -0
- package/pi-extension/src/output-router/utils.ts +554 -0
- package/pi-extension/src/runtime/runtime-context.ts +895 -0
- package/pi-extension/src/settings/settings-tui.ts +408 -0
- package/pi-extension/src/settings/settings-ui.ts +1730 -0
- package/pi-extension/tests/integration/pi-extension.test.js +4018 -0
- package/pi-extension/tests/output-router/observed-producers.test.js +132 -0
- package/pi-extension/tests/output-router/search.test.js +722 -0
- package/pi-extension/tests/settings/settings-tui.test.js +243 -0
- package/pi-extension/tsconfig.json +16 -0
- package/{plugins/freeflow/router/dist → router/dist/benchmarks}/benchmark-harness.d.ts +16 -13
- package/router/dist/benchmarks/benchmark-harness.js +92 -0
- package/router/dist/benchmarks/benchmarks.d.ts +109 -0
- package/router/dist/benchmarks/benchmarks.js +979 -0
- package/router/dist/benchmarks/codex-qa-benchmarks.d.ts +95 -0
- package/router/dist/benchmarks/codex-qa-benchmarks.js +500 -0
- package/router/dist/benchmarks/command-benchmarks.d.ts +143 -0
- package/router/dist/benchmarks/command-benchmarks.js +698 -0
- package/router/dist/benchmarks/context-mode-normalized-benchmarks.d.ts +82 -0
- package/router/dist/benchmarks/context-mode-normalized-benchmarks.js +773 -0
- package/router/dist/benchmarks/context-mode-real-deep-benchmark.d.ts +132 -0
- package/router/dist/benchmarks/context-mode-real-deep-benchmark.js +1380 -0
- package/router/dist/benchmarks/context-saving-baseline.d.ts +60 -0
- package/router/dist/benchmarks/context-saving-baseline.js +470 -0
- package/router/dist/benchmarks/index-benchmarks.d.ts +103 -0
- package/router/dist/benchmarks/index-benchmarks.js +862 -0
- package/router/dist/benchmarks/storage-policy-benchmarks.d.ts +101 -0
- package/router/dist/benchmarks/storage-policy-benchmarks.js +618 -0
- package/router/dist/benchmarks/vault-index-benchmarks.d.ts +56 -0
- package/router/dist/benchmarks/vault-index-benchmarks.js +322 -0
- package/router/dist/config/config.d.ts +103 -0
- package/router/dist/config/config.js +632 -0
- package/{plugins/freeflow/router/dist → router/dist/config}/router-contract.d.ts +2 -2
- package/router/dist/config/router-contract.js +54 -0
- package/{plugins/freeflow/router/dist → router/dist/config}/schema.d.ts +19 -10
- package/router/dist/config/schema.js +648 -0
- package/router/dist/config/types.d.ts +573 -0
- package/router/dist/config/types.js +41 -0
- package/router/dist/evidence/bounded-evidence.d.ts +40 -0
- package/router/dist/evidence/bounded-evidence.js +323 -0
- package/router/dist/evidence/evidence-range-selector.d.ts +24 -0
- package/router/dist/evidence/evidence-range-selector.js +232 -0
- package/router/dist/evidence/evidence-search.d.ts +27 -0
- package/router/dist/evidence/evidence-search.js +490 -0
- package/{plugins/freeflow/router/dist → router/dist/evidence}/evidence.d.ts +18 -18
- package/router/dist/evidence/evidence.js +200 -0
- package/router/dist/evidence/failure-contracts.d.ts +37 -0
- package/router/dist/evidence/failure-contracts.js +166 -0
- package/router/dist/evidence/line-ranges.d.ts +24 -0
- package/router/dist/evidence/line-ranges.js +22 -0
- package/router/dist/experiments/local-index.d.ts +64 -0
- package/router/dist/experiments/local-index.js +581 -0
- package/router/dist/index.d.ts +30 -0
- package/router/dist/index.js +32 -0
- package/router/dist/local/local-traversal.d.ts +18 -0
- package/router/dist/local/local-traversal.js +334 -0
- package/router/dist/processing/engine.d.ts +132 -0
- package/router/dist/processing/engine.js +533 -0
- package/router/dist/processing/reducers.d.ts +280 -0
- package/router/dist/processing/reducers.js +1673 -0
- package/router/dist/processing/renderers.d.ts +31 -0
- package/router/dist/processing/renderers.js +195 -0
- package/router/dist/processing/scripts.d.ts +91 -0
- package/router/dist/processing/scripts.js +386 -0
- package/{plugins/freeflow/router/dist → router/dist/repo}/repo-traversal.d.ts +9 -9
- package/router/dist/repo/repo-traversal.js +245 -0
- package/router/dist/routing/observed-reducers.d.ts +41 -0
- package/router/dist/routing/observed-reducers.js +661 -0
- package/router/dist/routing/observed-routing.d.ts +26 -0
- package/router/dist/routing/observed-routing.js +378 -0
- package/router/dist/routing/parsers.d.ts +16 -0
- package/router/dist/routing/parsers.js +521 -0
- package/router/dist/routing/run-filters.d.ts +60 -0
- package/router/dist/routing/run-filters.js +238 -0
- package/router/dist/routing/run-reducers.d.ts +49 -0
- package/router/dist/routing/run-reducers.js +122 -0
- package/router/dist/sandbox/adapter-roots.d.ts +46 -0
- package/router/dist/sandbox/adapter-roots.js +66 -0
- package/router/dist/sandbox/eryx-python-adapter.d.ts +13 -0
- package/router/dist/sandbox/eryx-python-adapter.js +868 -0
- package/router/dist/sandbox/jq-wasm-adapter.d.ts +9 -0
- package/router/dist/sandbox/jq-wasm-adapter.js +429 -0
- package/router/dist/sandbox/quickjs-wasi-adapter.d.ts +13 -0
- package/router/dist/sandbox/quickjs-wasi-adapter.js +384 -0
- package/router/dist/sandbox/script-sandbox.d.ts +134 -0
- package/router/dist/sandbox/script-sandbox.js +337 -0
- package/router/dist/setup/script-transform-adapters.d.ts +32 -0
- package/router/dist/setup/script-transform-adapters.js +278 -0
- package/router/dist/tools/batch.d.ts +33 -0
- package/router/dist/tools/batch.js +586 -0
- package/router/dist/tools/run.d.ts +62 -0
- package/router/dist/tools/run.js +1304 -0
- package/router/dist/tools/search.d.ts +66 -0
- package/router/dist/tools/search.js +1364 -0
- package/router/dist/transform/engine.d.ts +168 -0
- package/router/dist/transform/engine.js +2072 -0
- package/router/dist/vault/vault-index.d.ts +125 -0
- package/router/dist/vault/vault-index.js +416 -0
- package/router/dist/vault/vault.d.ts +138 -0
- package/router/dist/vault/vault.js +630 -0
- package/runtime/interaction-contract.md +16 -0
- package/skills/bypass/SKILL.md +82 -0
- package/skills/commit-work/SKILL.md +106 -0
- package/skills/commit-work/references/staging-decisions.md +73 -0
- package/skills/decision-gate/SKILL.md +48 -0
- package/skills/design-for-depth/SKILL.md +106 -0
- package/skills/design-for-depth/references/design-pressure-signals.md +314 -0
- package/skills/design-for-depth/references/interface-design-loop.md +156 -0
- package/skills/design-for-depth/references/software-design-philosophy.md +248 -0
- package/skills/diagnose-failure/SKILL.md +105 -0
- package/skills/diagnose-failure/references/diagnostic-loop-catalog.md +36 -0
- package/skills/diagnose-failure/references/flaky-and-performance.md +43 -0
- package/skills/discuss/SKILL.md +121 -0
- package/skills/discuss/references/checkpoints.md +66 -0
- package/skills/evaluate-skill/SKILL.md +105 -0
- package/skills/evaluate-skill/references/definition-schema.md +345 -0
- package/skills/evaluate-skill/references/evaluation-design.md +86 -0
- package/skills/evaluate-skill/references/execution-and-evidence.md +85 -0
- package/skills/evaluate-skill/references/review-and-revision.md +51 -0
- package/skills/evaluate-skill/scripts/lib/definitions.mjs +296 -0
- package/skills/evaluate-skill/scripts/lib/evidence.mjs +46 -0
- package/skills/evaluate-skill/scripts/lib/grade-comparison.mjs +60 -0
- package/skills/evaluate-skill/scripts/lib/grade-interaction.mjs +148 -0
- package/skills/evaluate-skill/scripts/lib/grade-support.mjs +126 -0
- package/skills/evaluate-skill/scripts/lib/grade-workspace.mjs +192 -0
- package/skills/evaluate-skill/scripts/lib/grade.mjs +56 -0
- package/skills/evaluate-skill/scripts/lib/pi.mjs +489 -0
- package/skills/evaluate-skill/scripts/lib/process.mjs +79 -0
- package/skills/evaluate-skill/scripts/lib/rpc.mjs +444 -0
- package/skills/evaluate-skill/scripts/lib/runner.mjs +346 -0
- package/skills/evaluate-skill/scripts/lib/sandbox.mjs +409 -0
- package/skills/evaluate-skill/scripts/lib/view.mjs +337 -0
- package/skills/evaluate-skill/scripts/pi-guard.mjs +164 -0
- package/skills/evaluate-skill/scripts/skill-eval.mjs +101 -0
- package/skills/execute-work/SKILL.md +99 -0
- package/skills/execute-work/references/code-practices.md +78 -0
- package/skills/execute-work/references/execution-loop.md +77 -0
- package/skills/finish-branch/SKILL.md +117 -0
- package/skills/finish-branch/references/integration-options.md +80 -0
- package/skills/handoff/SKILL.md +92 -0
- package/skills/handoff/references/templates.md +141 -0
- package/skills/launch-work/SKILL.md +116 -0
- package/skills/launch-work/references/launch-readiness.md +85 -0
- package/skills/migration-work/SKILL.md +115 -0
- package/skills/migration-work/references/migration-lifecycle.md +82 -0
- package/skills/mode-contract/SKILL.md +82 -0
- package/skills/output-router/SKILL.md +206 -0
- package/skills/output-router/references/safety-policy.md +40 -0
- package/skills/release-work/SKILL.md +118 -0
- package/skills/release-work/references/release-evidence.md +78 -0
- package/skills/review-artifact/SKILL.md +126 -0
- package/skills/review-artifact/references/reviewer-prompt.md +148 -0
- package/skills/review-work/SKILL.md +126 -0
- package/skills/review-work/references/reviewer-prompt.md +134 -0
- package/skills/review-work/references/security-risk-lens.md +67 -0
- package/skills/setup-freeflow/SKILL.md +98 -0
- package/skills/setup-freeflow/references/activation-contract.md +120 -0
- package/skills/setup-freeflow/references/host-setup.md +72 -0
- package/skills/setup-freeflow/references/output-router-setup.md +110 -0
- package/skills/simplify-code/SKILL.md +80 -0
- package/skills/simplify-code/references/simplification-patterns.md +70 -0
- package/skills/tdd/SKILL.md +96 -0
- package/skills/tdd/references/test-design.md +96 -0
- package/skills/track-work/SKILL.md +84 -0
- package/skills/track-work/references/working-record-schema.md +378 -0
- package/skills/verify-work/SKILL.md +85 -0
- package/skills/verify-work/references/browser-runtime-evidence.md +55 -0
- package/skills/verify-work/references/integration-evidence.md +51 -0
- package/skills/verify-work/references/performance-evidence.md +57 -0
- package/skills/workflow/SKILL.md +91 -0
- package/skills/workflow/references/domain-skill-composition.md +57 -0
- package/skills/workflow/references/workflow-loop.md +92 -0
- package/skills/write-plan/SKILL.md +123 -0
- package/skills/write-plan/references/plan-shapes.md +156 -0
- package/skills/write-skill/SKILL.md +119 -0
- package/skills/write-skill/references/activation-boundaries.md +62 -0
- package/skills/write-skill/references/agent-first-instructions.md +87 -0
- package/skills/write-skill/references/progressive-disclosure.md +63 -0
- package/skills/write-skill/scripts/lib/skill-author.mjs +653 -0
- package/skills/write-skill/scripts/skill-author.mjs +104 -0
- package/skills/write-spec/SKILL.md +104 -0
- package/skills/write-spec/references/artifact-standards.md +86 -0
- package/skills/write-spec/references/decision-records.md +77 -0
- package/skills/write-spec/references/spec-shapes.md +128 -0
- package/plugins/freeflow/command-surface.json +0 -77
- package/plugins/freeflow/docs/README.md +0 -40
- package/plugins/freeflow/docs/adr/0001-three-modes.md +0 -27
- package/plugins/freeflow/docs/adr/0002-evals-before-hooks.md +0 -17
- package/plugins/freeflow/docs/adr/0003-release-boundary.md +0 -21
- package/plugins/freeflow/docs/adr/0004-research-replaces-shallow-discovery-skills.md +0 -26
- package/plugins/freeflow/docs/adr/README.md +0 -8
- package/plugins/freeflow/docs/architecture.md +0 -86
- package/plugins/freeflow/docs/output-router.md +0 -212
- package/plugins/freeflow/docs/release-evidence.md +0 -69
- package/plugins/freeflow/docs/skills.md +0 -43
- package/plugins/freeflow/docs/workflow.md +0 -57
- package/plugins/freeflow/hooks/freeflow-runtime-context.mjs +0 -257
- package/plugins/freeflow/pi-extension/index.js +0 -1176
- package/plugins/freeflow/router/dist/benchmark-harness.js +0 -92
- package/plugins/freeflow/router/dist/benchmarks.d.ts +0 -102
- package/plugins/freeflow/router/dist/benchmarks.js +0 -880
- package/plugins/freeflow/router/dist/bounded-evidence.d.ts +0 -40
- package/plugins/freeflow/router/dist/bounded-evidence.js +0 -310
- package/plugins/freeflow/router/dist/codex-qa-benchmarks.d.ts +0 -91
- package/plugins/freeflow/router/dist/codex-qa-benchmarks.js +0 -461
- package/plugins/freeflow/router/dist/command-benchmarks.d.ts +0 -128
- package/plugins/freeflow/router/dist/command-benchmarks.js +0 -652
- package/plugins/freeflow/router/dist/config.d.ts +0 -22
- package/plugins/freeflow/router/dist/config.js +0 -114
- package/plugins/freeflow/router/dist/evidence-range-selector.d.ts +0 -22
- package/plugins/freeflow/router/dist/evidence-range-selector.js +0 -180
- package/plugins/freeflow/router/dist/evidence-search.d.ts +0 -25
- package/plugins/freeflow/router/dist/evidence-search.js +0 -450
- package/plugins/freeflow/router/dist/evidence.js +0 -196
- package/plugins/freeflow/router/dist/experimental-local-index.d.ts +0 -1
- package/plugins/freeflow/router/dist/experimental-local-index.js +0 -1
- package/plugins/freeflow/router/dist/experiments/local-index.d.ts +0 -58
- package/plugins/freeflow/router/dist/experiments/local-index.js +0 -562
- package/plugins/freeflow/router/dist/index-benchmarks.d.ts +0 -84
- package/plugins/freeflow/router/dist/index-benchmarks.js +0 -458
- package/plugins/freeflow/router/dist/index.d.ts +0 -12
- package/plugins/freeflow/router/dist/index.js +0 -12
- package/plugins/freeflow/router/dist/line-ranges.d.ts +0 -22
- package/plugins/freeflow/router/dist/line-ranges.js +0 -22
- package/plugins/freeflow/router/dist/parsers.d.ts +0 -16
- package/plugins/freeflow/router/dist/parsers.js +0 -473
- package/plugins/freeflow/router/dist/repo-traversal.js +0 -242
- package/plugins/freeflow/router/dist/retrieve.d.ts +0 -33
- package/plugins/freeflow/router/dist/retrieve.js +0 -855
- package/plugins/freeflow/router/dist/router-contract.js +0 -54
- package/plugins/freeflow/router/dist/run.d.ts +0 -26
- package/plugins/freeflow/router/dist/run.js +0 -356
- package/plugins/freeflow/router/dist/schema.js +0 -354
- package/plugins/freeflow/router/dist/types.d.ts +0 -234
- package/plugins/freeflow/router/dist/types.js +0 -9
- package/plugins/freeflow/router/dist/vault.d.ts +0 -80
- package/plugins/freeflow/router/dist/vault.js +0 -484
- package/plugins/freeflow/skills/bypass/SKILL.md +0 -68
- package/plugins/freeflow/skills/commit-work/SKILL.md +0 -98
- package/plugins/freeflow/skills/commit-work/references/staging-decisions.md +0 -51
- package/plugins/freeflow/skills/diagnose-failure/SKILL.md +0 -95
- package/plugins/freeflow/skills/diagnose-failure/references/feedback-loop-catalog.md +0 -25
- package/plugins/freeflow/skills/diagnose-failure/references/flaky-and-performance.md +0 -31
- package/plugins/freeflow/skills/evaluate-skill/SKILL.md +0 -96
- package/plugins/freeflow/skills/evaluate-skill/references/eval-patterns.md +0 -41
- package/plugins/freeflow/skills/evaluate-skill/references/grading-priority.md +0 -33
- package/plugins/freeflow/skills/execute-plan/SKILL.md +0 -132
- package/plugins/freeflow/skills/execute-plan/references/execution-map.md +0 -122
- package/plugins/freeflow/skills/handoff/SKILL.md +0 -66
- package/plugins/freeflow/skills/handoff/references/templates.md +0 -64
- package/plugins/freeflow/skills/interview-gate/SKILL.md +0 -90
- package/plugins/freeflow/skills/mode-contract/SKILL.md +0 -79
- package/plugins/freeflow/skills/output-router/SKILL.md +0 -69
- package/plugins/freeflow/skills/output-router/references/safety-policy.md +0 -33
- package/plugins/freeflow/skills/research/ARTIFACT-DESTINATIONS.md +0 -58
- package/plugins/freeflow/skills/research/CHECKPOINTS.md +0 -74
- package/plugins/freeflow/skills/research/LANGUAGE.md +0 -61
- package/plugins/freeflow/skills/research/SKILL.md +0 -128
- package/plugins/freeflow/skills/review-artifact/SKILL.md +0 -115
- package/plugins/freeflow/skills/review-artifact/references/reviewer-prompt.md +0 -56
- package/plugins/freeflow/skills/review-work/SKILL.md +0 -96
- package/plugins/freeflow/skills/review-work/references/reviewer-prompt.md +0 -97
- package/plugins/freeflow/skills/setup-freeflow/SKILL.md +0 -94
- package/plugins/freeflow/skills/setup-freeflow/references/activation-contract.md +0 -99
- package/plugins/freeflow/skills/setup-freeflow/references/host-setup.md +0 -35
- package/plugins/freeflow/skills/setup-freeflow/references/output-router-setup.md +0 -52
- package/plugins/freeflow/skills/verify-work/SKILL.md +0 -62
- package/plugins/freeflow/skills/workflow/SKILL.md +0 -95
- package/plugins/freeflow/skills/workflow/references/workflow-map.md +0 -102
- package/plugins/freeflow/skills/write-plan/SKILL.md +0 -88
- package/plugins/freeflow/skills/write-plan/references/plan-shapes.md +0 -70
- package/plugins/freeflow/skills/write-skill/SKILL.md +0 -88
- package/plugins/freeflow/skills/write-spec/SKILL.md +0 -90
- package/plugins/freeflow/skills/write-spec/references/artifact-standards.md +0 -67
- package/plugins/freeflow/skills/write-spec/references/spec-shapes.md +0 -69
- /package/{plugins/freeflow/assets → assets}/freeflow-plugin-icon-transparent.png +0 -0
- /package/{plugins/freeflow/hooks → hooks}/hooks.json +0 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: evaluate-skill
|
|
3
|
+
description: Use when evaluating or comparing agent-skill behavior.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Evaluate Skill
|
|
7
|
+
|
|
8
|
+
Evaluate whether an exact skill changes agent behavior as intended under declared pressure. Evidence outranks confident prose.
|
|
9
|
+
|
|
10
|
+
A **group** asks one behavioral question through exactly two variants:
|
|
11
|
+
|
|
12
|
+
- `baseline`: no target skill or a previous snapshot;
|
|
13
|
+
- `candidate`: a new or updated snapshot.
|
|
14
|
+
|
|
15
|
+
The **subject** performs the declared task under one variant. A **suite** is an ordered batch of groups. The evaluator runs subjects, preserves canonical evidence, appends deterministic grades, and renders views. It does not decide whether a skill is good, ready, promotable, or suitable for production.
|
|
16
|
+
|
|
17
|
+
Inline examples teach the subject. They are candidate content, not evaluation evidence. Keep criteria and expected outcomes outside natural prompts.
|
|
18
|
+
|
|
19
|
+
## Route First
|
|
20
|
+
|
|
21
|
+
- Inspect adequate saved evidence before proposing a rerun or wording change.
|
|
22
|
+
- Reuse an existing group unchanged when it preserves the question, pressure, and fixed criteria.
|
|
23
|
+
- For a draft-only request, use [Write Skill](../write-skill/SKILL.md); do not fake a run.
|
|
24
|
+
- Preserve partial infrastructure evidence without treating unavailable behavior as pass or fail.
|
|
25
|
+
- Do not mutate canonical evidence or erase an unfavorable result.
|
|
26
|
+
|
|
27
|
+
Before a substantial rewrite, snapshot the complete current skill package and record an exact identity before editing; use that immutable state as the baseline. A small local wording correction needs no extra snapshot when its exact prior state is already recoverable and the change remains local.
|
|
28
|
+
|
|
29
|
+
## Name One Question
|
|
30
|
+
|
|
31
|
+
Separate the behavior being examined:
|
|
32
|
+
|
|
33
|
+
- **Description activation:** did a natural prompt cause an exact target read, and when?
|
|
34
|
+
- **First-read body behavior:** did explicit body delivery guide the subject with only guaranteed context?
|
|
35
|
+
- **Nearby behavior:** did a close case avoid activation or load without hijacking the task?
|
|
36
|
+
- **Dependency composition:** did exact ordered skills, resources, and context work together?
|
|
37
|
+
- **Retained use:** did guidance remain useful on later declared turns?
|
|
38
|
+
- **Artifact outcome:** did files, state, events, and responses match the fixed criterion?
|
|
39
|
+
- **Cross-host behavior:** did the same question hold on every named host?
|
|
40
|
+
|
|
41
|
+
One evidence class does not prove another. A successful read does not prove compliance. Direct body delivery cannot prove natural activation. One turn cannot prove retained use. Ambient installation cannot prove declared composition.
|
|
42
|
+
|
|
43
|
+
Read [evaluation design](references/evaluation-design.md) when choosing the question, evidence class, group shape, or variant boundary.
|
|
44
|
+
|
|
45
|
+
Keep description and body questions separate by default. `end-to-end` is reserved for an integrated activation-plus-behavior question, but the current runner rejects it before subject execution.
|
|
46
|
+
|
|
47
|
+
Two common boundary examples:
|
|
48
|
+
|
|
49
|
+
- If a complete saved result already answers the question, use `view` and raw artifact reads; do not rerun merely to demonstrate process.
|
|
50
|
+
- If explicit body delivery succeeds but a natural prompt never reads the skill, body behavior is supported while description activation still fails.
|
|
51
|
+
|
|
52
|
+
## Use The Smallest Valid Loop
|
|
53
|
+
|
|
54
|
+
1. Fix the group question, deterministic criteria, and review questions before subject output exists.
|
|
55
|
+
2. Preserve the earliest natural prompt or strongest pressure that should distinguish behavior.
|
|
56
|
+
3. For a new skill, use no target versus candidate. For a revision, use exact previous versus updated snapshots. For a description-only revision, keep body and resources byte-identical.
|
|
57
|
+
4. Keep prompts or turns, fixture, tools, model, thinking, other skills, context, and criteria fixed except for the target difference.
|
|
58
|
+
5. Run one group or an ordered suite serially.
|
|
59
|
+
6. Inspect deterministic facts and canonical evidence before judging meaning.
|
|
60
|
+
7. Let the active agent or user review unresolved behavior; never launch an automatic semantic grader.
|
|
61
|
+
8. Classify the failed boundary before editing and revise one measured pressure point.
|
|
62
|
+
9. Rerun the complete fixed group with both variants after a measured change.
|
|
63
|
+
|
|
64
|
+
If both variants pass, the pressure may be weak or the baseline sufficient. If both fail, distinguish the skill, fixture, environment, host, dependency, or criterion before editing.
|
|
65
|
+
|
|
66
|
+
## Declare The Definition
|
|
67
|
+
|
|
68
|
+
Use the exact [definition schema](references/definition-schema.md) for group, environment, expectation, suite, and selector shapes.
|
|
69
|
+
|
|
70
|
+
Declare the prompt or turns, fixture, exact ordered skills and target, working-tree or Git source, UTF-8 context, tools, model and thinking, deterministic expectations, comparison IDs, and review questions. Snapshot every declared subject resource. Ambient installation is not declared composition.
|
|
71
|
+
|
|
72
|
+
## Run And View
|
|
73
|
+
|
|
74
|
+
Use the canonical [skill evaluator](scripts/skill-eval.mjs):
|
|
75
|
+
|
|
76
|
+
```text
|
|
77
|
+
node <evaluate-skill-directory>/scripts/skill-eval.mjs run <suite-or-group-path> [--group <id-or-position>] [--variant baseline|candidate]
|
|
78
|
+
node <evaluate-skill-directory>/scripts/skill-eval.mjs view <result-id-or-directory> [--group <id-or-position>] [--variant baseline|candidate]
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Run from the definition root. Definition targets resolve from the current working directory; suite group references resolve from the suite file. Results are stored under `<cwd>/.skill-eval/runs/<result-id>`. `view` accepts a stored result ID or explicit result directory.
|
|
82
|
+
|
|
83
|
+
With no selectors, every suite group and both variants are selected. `--group` is invalid for a direct group. Run `--help` before relying on an operation.
|
|
84
|
+
|
|
85
|
+
Pi is the direct subject process. One-shot descriptions use fresh JSON-mode subjects. Ordered description turns and body groups use one isolated RPC process per variant. Body groups explicitly deliver one target on turn one. `bash`, definition-supplied command execution, and end-to-end execution are unsupported.
|
|
86
|
+
|
|
87
|
+
Read [execution and evidence](references/execution-and-evidence.md) when operating commands, resolving paths, interpreting states, or reasoning about Pi isolation, persistence, views, cancellation, cleanup, and safeguards.
|
|
88
|
+
|
|
89
|
+
## Grade And Inspect Facts
|
|
90
|
+
|
|
91
|
+
Append deterministic grades only after canonical run evidence exists. A grade is derived evidence and never mutates or invalidates a run.
|
|
92
|
+
|
|
93
|
+
Supported checks cover exact skill/resource reads, typed paths, changed paths, file/response text, explicit JSON states, valid turn scope, and factual baseline-to-candidate transitions. A failed check remains ordinary behavioral evidence. Missing evidence stays unavailable. Malformed checks or grading failures produce separate `grade-error` evidence. Transitions carry no quality or readiness meaning.
|
|
94
|
+
|
|
95
|
+
Prefer generated grade-first views for routine inspection. Use ordinary file tools for raw run, event, transcript, response, stderr, workspace, definition, grade, and group artifacts. A view may remove repeated transport structure; it must not hide evidence required by the question.
|
|
96
|
+
|
|
97
|
+
Read [review and revision](references/review-and-revision.md) after evidence exists, when surfaces conflict, meaning still needs judgment, or a revision/rerun boundary must be chosen.
|
|
98
|
+
|
|
99
|
+
## Report And Stop
|
|
100
|
+
|
|
101
|
+
Report what ran, exact variant identities, deterministic results, infrastructure failures, unavailable evidence, viewed scope, and canonical result paths. State what the evidence proves and does not prove.
|
|
102
|
+
|
|
103
|
+
Stop rather than overclaim when required activation, first-read, composition, isolation, multi-turn, artifact, or host evidence is unavailable. The active agent or user judges unresolved behavior. The user decides whether to revise, use, publish, or reject a skill.
|
|
104
|
+
|
|
105
|
+
Never invoke archived evaluators.
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
# Evaluation Definition Schema
|
|
2
|
+
|
|
3
|
+
Read this when authoring or checking schema-version-1 group and suite JSON.
|
|
4
|
+
|
|
5
|
+
This file owns user-authored definition shapes. Read [execution and evidence](execution-and-evidence.md) for commands, path resolution, run states, persistence, views, isolation, and safeguards.
|
|
6
|
+
|
|
7
|
+
## Definition Root
|
|
8
|
+
|
|
9
|
+
Run `skill-eval` from the repository or fixture root that owns the evaluation inputs.
|
|
10
|
+
|
|
11
|
+
| Input | Resolves from |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| `run <suite-or-group-path>` | current working directory |
|
|
14
|
+
| suite `groups` entries | directory containing the suite file |
|
|
15
|
+
| group `fixture` | definition root/current working directory |
|
|
16
|
+
| environment `skills` and `context` | definition root/current working directory, then the selected working tree or Git commit |
|
|
17
|
+
|
|
18
|
+
Definition files and declared paths are checked for lexical and canonical containment. Paths are slash-separated relative paths, not absolute paths.
|
|
19
|
+
|
|
20
|
+
## Common Group Shape
|
|
21
|
+
|
|
22
|
+
Every group contains exactly these fields, plus optional `model`:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"schema_version": 1,
|
|
27
|
+
"kind": "group",
|
|
28
|
+
"id": "one-behavioral-question",
|
|
29
|
+
"type": "description",
|
|
30
|
+
"input": { "prompt": "Natural task prompt." },
|
|
31
|
+
"fixture": null,
|
|
32
|
+
"tools": ["read"],
|
|
33
|
+
"variants": {
|
|
34
|
+
"baseline": {
|
|
35
|
+
"source": { "kind": "working-tree" },
|
|
36
|
+
"skills": [],
|
|
37
|
+
"target": null,
|
|
38
|
+
"context": []
|
|
39
|
+
},
|
|
40
|
+
"candidate": {
|
|
41
|
+
"source": { "kind": "working-tree" },
|
|
42
|
+
"skills": ["skills/target"],
|
|
43
|
+
"target": 0,
|
|
44
|
+
"context": []
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"expectations": [],
|
|
48
|
+
"review_questions": [],
|
|
49
|
+
"model": {
|
|
50
|
+
"model": "openai-codex/gpt-5.6-sol",
|
|
51
|
+
"thinking": "low"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Rules:
|
|
57
|
+
|
|
58
|
+
- `schema_version` is `1`.
|
|
59
|
+
- `kind` is `group`.
|
|
60
|
+
- `id` starts with a lowercase letter, contains lowercase letters, numbers, or single hyphens, and is at most 64 characters.
|
|
61
|
+
- `type` is `description`, `body`, or reserved `end-to-end`. The current runner rejects `end-to-end` before subject execution.
|
|
62
|
+
- `input` contains exactly one of:
|
|
63
|
+
- `prompt`: one non-empty string;
|
|
64
|
+
- `turns`: a non-empty ordered array of non-empty strings. Repeated natural turns are allowed.
|
|
65
|
+
- `fixture` is `null` or one contained relative directory/file path.
|
|
66
|
+
- `tools` is an ordered array with no duplicates.
|
|
67
|
+
- `variants` contains exactly `baseline` and `candidate`.
|
|
68
|
+
- `expectations` is an ordered array with unique expectation IDs.
|
|
69
|
+
- `review_questions` is an ordered string array. Questions are rendered for the reviewer and never sent to the subject.
|
|
70
|
+
- `model` is optional. `model.model` names the provider/model; optional `model.thinking` selects its thinking level. The CLI has no model override.
|
|
71
|
+
|
|
72
|
+
## Description Group Example
|
|
73
|
+
|
|
74
|
+
A description group uses natural prompts and asks whether the exact target was read and when:
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
{
|
|
78
|
+
"schema_version": 1,
|
|
79
|
+
"kind": "group",
|
|
80
|
+
"id": "natural-activation",
|
|
81
|
+
"type": "description",
|
|
82
|
+
"input": {
|
|
83
|
+
"turns": [
|
|
84
|
+
"Help me inspect this ordinary change.",
|
|
85
|
+
"Now prepare a deployment rollback."
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
"fixture": null,
|
|
89
|
+
"tools": ["read"],
|
|
90
|
+
"variants": {
|
|
91
|
+
"baseline": {
|
|
92
|
+
"source": { "kind": "git", "ref": "before-description-change" },
|
|
93
|
+
"skills": ["skills/target"],
|
|
94
|
+
"target": 0,
|
|
95
|
+
"context": []
|
|
96
|
+
},
|
|
97
|
+
"candidate": {
|
|
98
|
+
"source": { "kind": "working-tree" },
|
|
99
|
+
"skills": ["skills/target"],
|
|
100
|
+
"target": 0,
|
|
101
|
+
"context": []
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"expectations": [
|
|
105
|
+
{
|
|
106
|
+
"id": "baseline-read-by-two",
|
|
107
|
+
"kind": "skill-read",
|
|
108
|
+
"variant": "baseline",
|
|
109
|
+
"expect": "by-turn",
|
|
110
|
+
"turn": 2,
|
|
111
|
+
"comparison": "target-read-by-two"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"id": "candidate-read-by-two",
|
|
115
|
+
"kind": "skill-read",
|
|
116
|
+
"variant": "candidate",
|
|
117
|
+
"expect": "by-turn",
|
|
118
|
+
"turn": 2,
|
|
119
|
+
"comparison": "target-read-by-two"
|
|
120
|
+
}
|
|
121
|
+
],
|
|
122
|
+
"review_questions": []
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
For a description-only revision, the two target snapshots must keep body and resources byte-identical while changing only frontmatter description text.
|
|
127
|
+
|
|
128
|
+
Description groups allow no tools or only `read`. `skill-read` is their target-activation check.
|
|
129
|
+
|
|
130
|
+
## Body Group Example
|
|
131
|
+
|
|
132
|
+
A body group explicitly delivers each target on turn one and observes first-read or later-turn behavior:
|
|
133
|
+
|
|
134
|
+
```json
|
|
135
|
+
{
|
|
136
|
+
"schema_version": 1,
|
|
137
|
+
"kind": "group",
|
|
138
|
+
"id": "retained-artifact-behavior",
|
|
139
|
+
"type": "body",
|
|
140
|
+
"input": {
|
|
141
|
+
"turns": [
|
|
142
|
+
"Inspect the task and prepare the work.",
|
|
143
|
+
"Complete it and write result.json."
|
|
144
|
+
]
|
|
145
|
+
},
|
|
146
|
+
"fixture": "fixtures/task",
|
|
147
|
+
"tools": ["read", "write", "edit"],
|
|
148
|
+
"variants": {
|
|
149
|
+
"baseline": {
|
|
150
|
+
"source": { "kind": "git", "ref": "before-body-change" },
|
|
151
|
+
"skills": ["skills/support", "skills/target"],
|
|
152
|
+
"target": 1,
|
|
153
|
+
"context": ["context/contract.md"]
|
|
154
|
+
},
|
|
155
|
+
"candidate": {
|
|
156
|
+
"source": { "kind": "working-tree" },
|
|
157
|
+
"skills": ["skills/support", "skills/target"],
|
|
158
|
+
"target": 1,
|
|
159
|
+
"context": ["context/contract.md"]
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
"expectations": [
|
|
163
|
+
{
|
|
164
|
+
"id": "baseline-result",
|
|
165
|
+
"kind": "path",
|
|
166
|
+
"variant": "baseline",
|
|
167
|
+
"path": "result.json",
|
|
168
|
+
"turn": 2,
|
|
169
|
+
"expect": "exists",
|
|
170
|
+
"comparison": "result-exists"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"id": "candidate-result",
|
|
174
|
+
"kind": "path",
|
|
175
|
+
"variant": "candidate",
|
|
176
|
+
"path": "result.json",
|
|
177
|
+
"turn": 2,
|
|
178
|
+
"expect": "exists",
|
|
179
|
+
"comparison": "result-exists"
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"id": "candidate-status",
|
|
183
|
+
"kind": "json",
|
|
184
|
+
"variant": "candidate",
|
|
185
|
+
"path": "result.json",
|
|
186
|
+
"turn": 2,
|
|
187
|
+
"expect": "field-equals",
|
|
188
|
+
"pointer": "/status",
|
|
189
|
+
"value": "complete"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"id": "candidate-changes",
|
|
193
|
+
"kind": "changed-paths",
|
|
194
|
+
"variant": "candidate",
|
|
195
|
+
"turn": 2,
|
|
196
|
+
"expect": "equals",
|
|
197
|
+
"paths": ["result.json"]
|
|
198
|
+
}
|
|
199
|
+
],
|
|
200
|
+
"review_questions": [
|
|
201
|
+
"Did the second turn apply the first-turn guidance without redelivery?"
|
|
202
|
+
]
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Body groups allow no tools or path-guarded `read`, `write`, and `edit`. A no-target baseline uses `skills: []` and `target: null`; the candidate must always identify a target.
|
|
207
|
+
|
|
208
|
+
The examples are complete definition shapes. Replace fixture, resource, model, and Git-ref values with paths and identities that exist under your definition root.
|
|
209
|
+
|
|
210
|
+
## Variant Environment
|
|
211
|
+
|
|
212
|
+
Each environment has exactly:
|
|
213
|
+
|
|
214
|
+
```json
|
|
215
|
+
{
|
|
216
|
+
"source": { "kind": "git", "ref": "v1.2.3" },
|
|
217
|
+
"skills": ["skills/target", "skills/support"],
|
|
218
|
+
"target": 0,
|
|
219
|
+
"context": ["runtime/interaction-contract.md"]
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
`source` is either:
|
|
224
|
+
|
|
225
|
+
```json
|
|
226
|
+
{ "kind": "working-tree" }
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
or:
|
|
230
|
+
|
|
231
|
+
```json
|
|
232
|
+
{ "kind": "git", "ref": "<exact-ref>" }
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
A source applies only to declared skill and context paths in that variant. It never supplies the group fixture: `fixture` is snapshotted once from the definition-root working tree, then copied independently for selected variants. `skills` preserves registration order. `target` is `null` or a zero-based index into `skills`; the candidate target cannot be `null`. `context` preserves declaration order and may name UTF-8 files or directories.
|
|
236
|
+
|
|
237
|
+
## Expectations
|
|
238
|
+
|
|
239
|
+
Every expectation has:
|
|
240
|
+
|
|
241
|
+
- `id`: unique group-local ID using the group-ID syntax;
|
|
242
|
+
- `kind`: one supported deterministic kind;
|
|
243
|
+
- `variant`: `baseline` or `candidate`;
|
|
244
|
+
- optional `comparison`: shared by exactly one baseline and one candidate expectation describing the same expected check;
|
|
245
|
+
- optional body `turn`: one-based declared prompt/turn number.
|
|
246
|
+
|
|
247
|
+
Without `turn`, response checks use the final response and workspace checks use final state. Turn-scoped workspace checks cause an immutable workspace snapshot after each settled turn.
|
|
248
|
+
|
|
249
|
+
| `kind` | Kind-specific fields | `expect` |
|
|
250
|
+
| --- | --- | --- |
|
|
251
|
+
| `skill-read` | timing `turn` except for `never` | `never`, `on-turn`, `by-turn`, `not-before-turn` |
|
|
252
|
+
| `resource-read` | `resource`, optional `index`, `path`, optional body `turn` | `read`, `not-read` |
|
|
253
|
+
| `path` | workspace `path`, optional body `turn` | `exists`, `absent` |
|
|
254
|
+
| `changed-paths` | unique workspace `paths`, optional body `turn` | `equals`, `excludes` |
|
|
255
|
+
| `file-text` | workspace `path`, string `value`, optional body `turn` | `contains`, `not-contains`, `equals` |
|
|
256
|
+
| `json` | workspace `path`, optional body `turn`, conditional `pointer` and `value` | `available`, `missing`, `valid`, `malformed`, `field-present`, `field-absent`, `field-equals` |
|
|
257
|
+
| `response-text` | string `value`, optional body `turn` | `contains`, `not-contains`, `equals` |
|
|
258
|
+
|
|
259
|
+
### Resource paths
|
|
260
|
+
|
|
261
|
+
- `resource: "workspace"`: omit `index`; `path` is relative to the writable workspace.
|
|
262
|
+
- `resource: "skill"`: `index` selects the zero-based declared skill; `path` is relative to that skill directory.
|
|
263
|
+
- `resource: "context"`: `index` selects the zero-based declared context item; `path` is relative to that materialized item.
|
|
264
|
+
|
|
265
|
+
### Changed paths
|
|
266
|
+
|
|
267
|
+
- `equals`: the complete changed-file set must equal `paths`.
|
|
268
|
+
- `excludes`: none of `paths` may appear in the changed-file set.
|
|
269
|
+
|
|
270
|
+
Directory-only presence does not count as a changed file.
|
|
271
|
+
|
|
272
|
+
### JSON states
|
|
273
|
+
|
|
274
|
+
```json
|
|
275
|
+
[
|
|
276
|
+
{
|
|
277
|
+
"id": "file-missing",
|
|
278
|
+
"kind": "json",
|
|
279
|
+
"variant": "candidate",
|
|
280
|
+
"path": "missing.json",
|
|
281
|
+
"expect": "missing"
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"id": "file-malformed",
|
|
285
|
+
"kind": "json",
|
|
286
|
+
"variant": "candidate",
|
|
287
|
+
"path": "broken.json",
|
|
288
|
+
"expect": "malformed"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"id": "field-absent",
|
|
292
|
+
"kind": "json",
|
|
293
|
+
"variant": "candidate",
|
|
294
|
+
"path": "result.json",
|
|
295
|
+
"expect": "field-absent",
|
|
296
|
+
"pointer": "/optional"
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"id": "field-null",
|
|
300
|
+
"kind": "json",
|
|
301
|
+
"variant": "candidate",
|
|
302
|
+
"path": "result.json",
|
|
303
|
+
"expect": "field-equals",
|
|
304
|
+
"pointer": "/value",
|
|
305
|
+
"value": null
|
|
306
|
+
}
|
|
307
|
+
]
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
A JSON Pointer is `""` for the complete value or begins with `/`; `~0` escapes `~` and `~1` escapes `/`.
|
|
311
|
+
|
|
312
|
+
### Comparison pair
|
|
313
|
+
|
|
314
|
+
Two expectations may share one comparison ID only when they have opposite variants and the same kind and expected predicate. The report records a factual transition such as `fail-to-pass`, never a quality verdict.
|
|
315
|
+
|
|
316
|
+
Definition loading validates common structure and unique IDs. Kind-specific expectation validation occurs during deterministic grading after run persistence. A malformed expectation therefore becomes separate `grade-error` evidence rather than changing the subject run. Use the documented shapes to avoid spending a subject run on an invalid check.
|
|
317
|
+
|
|
318
|
+
Definition-supplied commands and tests are unsupported.
|
|
319
|
+
|
|
320
|
+
## Suite
|
|
321
|
+
|
|
322
|
+
```json
|
|
323
|
+
{
|
|
324
|
+
"schema_version": 1,
|
|
325
|
+
"kind": "suite",
|
|
326
|
+
"id": "workflow-core",
|
|
327
|
+
"groups": [
|
|
328
|
+
"groups/natural-activation.json",
|
|
329
|
+
"groups/body-behavior.json"
|
|
330
|
+
]
|
|
331
|
+
}
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
A suite has only `schema_version`, `kind`, `id`, and ordered unique `groups`. Group references resolve from the suite directory; their resolved definition paths must remain inside the definition root. Referenced group IDs must also be unique.
|
|
335
|
+
|
|
336
|
+
## Selection
|
|
337
|
+
|
|
338
|
+
- With no selectors, every suite group and both variants are selected.
|
|
339
|
+
- `--group <id>` selects one stable group ID.
|
|
340
|
+
- `--group <position>` selects one one-based suite position.
|
|
341
|
+
- `--variant baseline|candidate` applies across selected groups.
|
|
342
|
+
- Excluded variants are `not-selected`, never failed.
|
|
343
|
+
- `--group` is invalid for a direct group definition.
|
|
344
|
+
|
|
345
|
+
Selection changes execution scope only. It does not modify the saved definitions.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Evaluation Design
|
|
2
|
+
|
|
3
|
+
Read this when choosing the behavioral question, evidence class, group shape, or baseline/candidate boundary.
|
|
4
|
+
|
|
5
|
+
## Keep Roles Distinct
|
|
6
|
+
|
|
7
|
+
- **Subject:** performs the declared task under one variant.
|
|
8
|
+
- **Evaluator:** isolates subjects and preserves canonical evidence.
|
|
9
|
+
- **Deterministic grader:** derives fixed mechanical facts after run persistence.
|
|
10
|
+
- **Reviewer:** the active agent or user judges unresolved meaning.
|
|
11
|
+
- **Author:** revises one measured pressure point.
|
|
12
|
+
- **User:** decides whether to revise, use, publish, or reject the skill.
|
|
13
|
+
|
|
14
|
+
The evaluator does not launch an automatic semantic grader or own readiness, promotion, or production status.
|
|
15
|
+
|
|
16
|
+
## Map Claims To Evidence
|
|
17
|
+
|
|
18
|
+
| Claim | Required evidence |
|
|
19
|
+
| --- | --- |
|
|
20
|
+
| Description routes the earliest useful prompt | Natural activation |
|
|
21
|
+
| Body works with guaranteed context | Explicit body delivery |
|
|
22
|
+
| Nearby prompt is not hijacked | Natural activation plus behavioral output |
|
|
23
|
+
| Declared dependencies compose | Exact ordered composition |
|
|
24
|
+
| Guidance remains useful later | Multi-turn evidence |
|
|
25
|
+
| Files or structured state match | Artifact outcome |
|
|
26
|
+
| Behavior holds on several hosts | The same group semantics on every named host |
|
|
27
|
+
|
|
28
|
+
Record declaration, materialization, delivery, observed reads, behavior, artifacts, and derived grades separately. A read does not prove compliance, and correct behavior does not prove which skill caused it.
|
|
29
|
+
|
|
30
|
+
## Choose The Smallest Group Shape
|
|
31
|
+
|
|
32
|
+
- **Description prompt:** natural activation and exact read timing.
|
|
33
|
+
- **Explicit body task:** first-read instructions and behavior without activation ambiguity.
|
|
34
|
+
- **Fixture task:** files or repository state matter.
|
|
35
|
+
- **Stateful turns:** ordered conversation and later behavior matter.
|
|
36
|
+
- **Saved-result review:** stored runs already answer the question; inspect them instead of rerunning.
|
|
37
|
+
- **Suite:** independent questions need one ordered serial invocation.
|
|
38
|
+
|
|
39
|
+
Keep description and body questions separate unless the integrated path is itself the question.
|
|
40
|
+
|
|
41
|
+
## Fix The Variants
|
|
42
|
+
|
|
43
|
+
Every group has exactly:
|
|
44
|
+
|
|
45
|
+
- `baseline`: no target for a new skill, or the exact previous snapshot for a revision;
|
|
46
|
+
- `candidate`: the new or updated snapshot.
|
|
47
|
+
|
|
48
|
+
For a description-only revision, keep body and resources byte-identical. Freeze prompts or turns, fixture, tools, model, thinking, other skills, context, and criteria across variants.
|
|
49
|
+
|
|
50
|
+
## Design Common Questions
|
|
51
|
+
|
|
52
|
+
### Description routing
|
|
53
|
+
|
|
54
|
+
Use the earliest natural prompt where the skill should become useful. For a nearby prompt, predeclare whether success means non-trigger or safe behavior after activation.
|
|
55
|
+
|
|
56
|
+
### First-read body
|
|
57
|
+
|
|
58
|
+
Explicitly deliver the exact body with only guaranteed context. Ambient package context cannot repair a missing dependency.
|
|
59
|
+
|
|
60
|
+
### Composition
|
|
61
|
+
|
|
62
|
+
Materialize exact ordered skills and context. Vary only the target snapshot. Standalone behavior should not receive a hidden base stack.
|
|
63
|
+
|
|
64
|
+
### Retained use
|
|
65
|
+
|
|
66
|
+
Use declared turns in one persistent subject process. Repeated explicit delivery does not prove retained use.
|
|
67
|
+
|
|
68
|
+
### Artifact outcome
|
|
69
|
+
|
|
70
|
+
Grade filesystem state, changed paths, file content, or JSON before relying on the final response. Preserve turn-scoped workspace evidence when later turns may change earlier state.
|
|
71
|
+
|
|
72
|
+
## Boundary Examples
|
|
73
|
+
|
|
74
|
+
Saved complete evidence already contains the required run, grade, and artifacts:
|
|
75
|
+
|
|
76
|
+
> Use `view` and ordinary file reads. Do not rerun merely to demonstrate the process.
|
|
77
|
+
|
|
78
|
+
An explicitly delivered body produces the right answer, but the natural prompt never reads the target:
|
|
79
|
+
|
|
80
|
+
> The body group supports first-read behavior. The description group still fails activation; body success cannot repair it.
|
|
81
|
+
|
|
82
|
+
## Apply Real Pressure
|
|
83
|
+
|
|
84
|
+
A useful group creates a real temptation to violate the rule, keeps criteria outside the prompt, exposes deterministic evidence where possible, and distinguishes baseline behavior from the candidate.
|
|
85
|
+
|
|
86
|
+
If both variants pass, the pressure may be weak or the baseline sufficient. If both fail, classify the skill, fixture, host, dependency, or criterion before editing.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Execution And Evidence
|
|
2
|
+
|
|
3
|
+
Read this when operating `run|view`, resolving paths, interpreting states, or reasoning about Pi execution, isolation, persistence, cancellation, and safeguards.
|
|
4
|
+
|
|
5
|
+
## Command And Path Contract
|
|
6
|
+
|
|
7
|
+
Run commands from the repository or fixture root that owns the definitions:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
node <evaluate-skill-directory>/scripts/skill-eval.mjs run <suite-or-group-path> [--group <id-or-position>] [--variant baseline|candidate]
|
|
11
|
+
node <evaluate-skill-directory>/scripts/skill-eval.mjs view <result-id-or-directory> [--group <id-or-position>] [--variant baseline|candidate]
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
- The current working directory is the definition root and result root.
|
|
15
|
+
- The `run` target resolves from that directory.
|
|
16
|
+
- Suite group references resolve relative to the suite file.
|
|
17
|
+
- Fixture, skill, and context declarations resolve from the definition root.
|
|
18
|
+
- Results are stored under `<cwd>/.skill-eval/runs/<result-id>`.
|
|
19
|
+
- A bare `view` target is tried first as a stored result ID, then as a path from the working directory.
|
|
20
|
+
- An absolute or path-like `view` target resolves as a directory path.
|
|
21
|
+
|
|
22
|
+
Examples:
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
skill-eval run .skill-eval/my-skill/suite.json
|
|
26
|
+
skill-eval run .skill-eval/my-skill/suite.json --variant candidate
|
|
27
|
+
skill-eval view 20260720173209-a3649b8b
|
|
28
|
+
skill-eval view 20260720173209-a3649b8b --group 2 --variant candidate
|
|
29
|
+
skill-eval view /absolute/path/to/result
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
With no selectors, `run` or `view` selects every suite group and both variants. `--group` is invalid for a direct group definition/result.
|
|
33
|
+
|
|
34
|
+
## Current Execution Boundary
|
|
35
|
+
|
|
36
|
+
`run` executes description and body groups. `end-to-end` is a reserved definition type and is rejected before subject execution. Description groups allow no tools or `read`; body groups allow no tools or path-guarded `read`, `write`, and `edit`. `bash` and definition-supplied commands are unsupported.
|
|
37
|
+
|
|
38
|
+
Use fresh JSON-mode execution for one-shot descriptions. Use one persistent RPC process per selected variant for ordered description turns and all body groups. RPC correlates responses, waits for `agent_settled`, disables automatic retry and compaction, preserves directly observed partial-turn evidence, and cleans the process tree.
|
|
39
|
+
|
|
40
|
+
A body target is matched to the exact snapshotted `SKILL.md` and explicitly delivered on turn one. Later turns remain unchanged. Description groups use natural prompts and never explicit target delivery.
|
|
41
|
+
|
|
42
|
+
## Isolation And Resources
|
|
43
|
+
|
|
44
|
+
For each selected variant:
|
|
45
|
+
|
|
46
|
+
- snapshot exact declared skills and context;
|
|
47
|
+
- snapshot the group fixture once from the definition-root working tree—never from a variant Git source—then create an independent writable copy;
|
|
48
|
+
- preserve skill order and target index;
|
|
49
|
+
- replace ambient instructions with evaluator-owned declared context;
|
|
50
|
+
- keep criteria and review questions outside the subject prompt;
|
|
51
|
+
- allow reads only from workspace and declared immutable resources;
|
|
52
|
+
- allow writes and edits only inside the workspace;
|
|
53
|
+
- reject traversal, symlink escape, unsupported Git entries, and invalid UTF-8;
|
|
54
|
+
- verify immutable resource fingerprints after execution.
|
|
55
|
+
|
|
56
|
+
Working-tree sources snapshot current paths. Git sources resolve one exact commit and record both the declared ref and resolved identity.
|
|
57
|
+
|
|
58
|
+
## Persistence And States
|
|
59
|
+
|
|
60
|
+
Each selected run is persisted before its counterpart. Grade and group evidence are persisted before later groups.
|
|
61
|
+
|
|
62
|
+
Run states are `complete`, `invalid`, `infrastructure-failed`, `cancelled`, and `not-selected`. Group and batch states are `complete`, `partially-complete`, `invalid` where applicable, and `cancelled`.
|
|
63
|
+
|
|
64
|
+
- Failed deterministic checks are ordinary complete behavioral evidence and exit zero when no infrastructure/grade failure exists.
|
|
65
|
+
- Variant-local invalidity or infrastructure failure preserves evidence and does not stop safe queued work.
|
|
66
|
+
- Shared fixture failure invalidates the group.
|
|
67
|
+
- Thrown grading or recoverable grade/group publication failure becomes explicit `grade-error` fallback evidence.
|
|
68
|
+
- If a run or required fallback cannot be preserved, queued work stops and no completed summary is published.
|
|
69
|
+
- Cancellation starts no queued subject and preserves observed diagnostics.
|
|
70
|
+
|
|
71
|
+
Invalidity, infrastructure failure, cancellation, or `grade-error` makes the final command exit nonzero after safe queued work finishes.
|
|
72
|
+
|
|
73
|
+
## Views And Raw Evidence
|
|
74
|
+
|
|
75
|
+
Views can render a complete result, all baseline or candidate variants, one group, or one group/variant. Grade appears before selected run evidence. The displayed absolute result path anchors result-relative artifact and workspace paths.
|
|
76
|
+
|
|
77
|
+
Path cells escape literal backslashes before tab, carriage return, and newline. Variant views exclude expectation-owned errors from the other variant while retaining comparison, group, and system errors.
|
|
78
|
+
|
|
79
|
+
Use ordinary file tools for raw `run.json`, events, transcript, final response, stderr, workspace, definition, grade, and group artifacts. Views remove transport noise; they do not replace canonical evidence.
|
|
80
|
+
|
|
81
|
+
## Safeguards And Limits
|
|
82
|
+
|
|
83
|
+
Normal completion follows settlement. Path guards, no-progress detection, cancellation, process-tree cleanup, and very high emergency ceilings stop runaway or unsafe infrastructure. Do not impose ordinary guessed turn, token, spend, output, or short time caps.
|
|
84
|
+
|
|
85
|
+
When an unsupported operation changes the question, reject it or run a clearly separate direct comparison with explicit limits. Never invoke archived evaluators as a fallback.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Review And Revision
|
|
2
|
+
|
|
3
|
+
Read this after canonical evidence and deterministic grades exist, when evidence conflicts, meaning still needs judgment, or a revision/rerun boundary must be chosen.
|
|
4
|
+
|
|
5
|
+
## Use The Strongest Evidence
|
|
6
|
+
|
|
7
|
+
1. Filesystem state, typed workspace manifests, diffs, and changed paths.
|
|
8
|
+
2. Structured events, tool activity, usage, process results, logs, and saved reports.
|
|
9
|
+
3. Final response.
|
|
10
|
+
4. Full transcript when earlier surfaces cannot answer the question.
|
|
11
|
+
5. Subject self-assessment.
|
|
12
|
+
|
|
13
|
+
Lower-priority evidence cannot repair a contradiction above it. If the response claims success but a required file is absent, preserve both facts and grade the file observation.
|
|
14
|
+
|
|
15
|
+
## Keep Deterministic Facts Separate
|
|
16
|
+
|
|
17
|
+
Built-in checks cover exact reads, typed paths, changed paths, file or response text, JSON states, valid turn scope, and factual transitions. Missing evidence remains unavailable. A failed check remains behavioral evidence; it does not relabel a complete run as infrastructure failure.
|
|
18
|
+
|
|
19
|
+
The active agent or user may judge reasoning quality, authority preservation, architectural fitness, recommendation quality, or semantic completeness. Record cited evidence, uncertainty, and limits outside the canonical run and deterministic grade. Do not turn that judgment into evaluator-owned readiness state.
|
|
20
|
+
|
|
21
|
+
## Diagnose Before Editing
|
|
22
|
+
|
|
23
|
+
Classify the failed boundary:
|
|
24
|
+
|
|
25
|
+
- activation timing;
|
|
26
|
+
- description language unavailable before body read;
|
|
27
|
+
- first-read body comprehension;
|
|
28
|
+
- undeclared, undelivered, unread, or ambient-only dependency;
|
|
29
|
+
- normal guidance hidden behind an unclear resource boundary;
|
|
30
|
+
- nearby behavior that hijacks the task;
|
|
31
|
+
- retained-use or multi-turn failure;
|
|
32
|
+
- wording, placement, example, or stop-condition pressure;
|
|
33
|
+
- fixture, environment, isolation, host, or deterministic-check failure.
|
|
34
|
+
|
|
35
|
+
Do not add broad prose before identifying the failed boundary.
|
|
36
|
+
|
|
37
|
+
## Revise One Pressure Point
|
|
38
|
+
|
|
39
|
+
Change one measured point when possible: description cues, first-read wording, rule placement, dependency declaration, resource boundary, example, stop condition, or the group when evidence proves the evaluation is wrong.
|
|
40
|
+
|
|
41
|
+
Keep unrelated instructions and fixed criteria stable. If the criterion changes, the old result no longer answers the same question.
|
|
42
|
+
|
|
43
|
+
## Rerun The Complete Group
|
|
44
|
+
|
|
45
|
+
After a measured skill change or resolved infrastructure cause, run the complete fixed group with both variants. Do not rerun only the preferred variant, reuse a settled control as a new sample, adopt partial evidence as comparable, or rerun merely to erase a failure.
|
|
46
|
+
|
|
47
|
+
For variance, use independent complete invocations and keep every result visible.
|
|
48
|
+
|
|
49
|
+
## Report
|
|
50
|
+
|
|
51
|
+
Report the failed boundary and evidence, exact revision or evaluation correction, criteria that stayed fixed, old and new result paths, and remaining unsupported claims. The user decides the next authoring or use action.
|