Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/harness-bindings/claude-code.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ the concrete Claude Code tool or model tier that realizes it.
| the worktree helper | EnterWorktree |
| exploratory | Explore |
| a working scratch location | the session scratchpad directory |
| a browser automation driver | a browser MCP (claude-in-chrome or Playwright) |
| direct UI control | computer use |

Every left-hand phrase is the exact string as it appears in the skills;
binding is a literal substitution of that phrase by its right-hand value.
Expand Down
11 changes: 6 additions & 5 deletions docs/harness-bindings/pi.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ agent's concrete tool or, for tiers, the open-weight model that realizes it.
| the worktree helper | `git worktree add` |
| exploratory | a read-only subagent (the `subagent` tool from `pi-subagents`, forked context) |
| a working scratch location | a `harness/` directory inside the worktree, git-excluded (per the building skill's `.git/info/exclude` step) |
| a browser automation driver | Playwright, driven via Bash |
| direct UI control | unavailable; Pi has no computer-use surface, so the native surface is skipped |

Read each neutral phrase in the prose as the Pi tool, model, or behaviour its
right-hand value describes, and realise that behaviour: this is a semantic
Expand Down Expand Up @@ -48,12 +50,11 @@ self-review, the exact failure the design exists to prevent, and no amount of
prose fixes that. Do not simulate a subagent by continuing in the same context;
if the package is absent, stop and say so rather than faking the separation.

## Evaluation surfaces (not yet neutralized)
## Evaluation surfaces

The `web` / `native` / browser-MCP lines in `skills/building/SKILL.md` were not
neutralized (that was out of scope for the neutralization), so they
still name tools that may not exist on Pi. Read them as follows until that
follow-up lands:
The building skill's surface table uses neutral terms (`a browser automation
driver`, `direct UI control`) bound in the table above. On Pi they resolve as
follows:

- `native` (computer-use) surface: **unavailable**. Skip any step whose only
observation path is native, tell the user, and continue.
Expand Down
15 changes: 7 additions & 8 deletions skills/building/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ disable-model-invocation: true

# /forge:building

> **Harness binding.** This command is written in harness-neutral terms: role
> **Harness binding.** This skill is written in harness-neutral terms: role
> tiers (e.g. `judgment-tier`, `labor-tier`) and generic verbs, instead of one
> agent's tool and model names. Before acting, load the binding for your
> environment from [`docs/harness-bindings/`](../../docs/harness-bindings/README.md)
Expand Down Expand Up @@ -99,7 +99,7 @@ contract negotiations and a full build, is not.
| `library` | installing the package into a clean environment | calling the public API from throwaway scripts |
| `cli` | building or installing the executable | running it as a subprocess: argv, stdin, stdout, stderr, exit codes |
| `service` | booting the server | issuing real requests against its endpoints |
| `native` | launching the app or simulator | computer use |
| `native` | launching the app or simulator | direct UI control |

Infer the likely surface from the repo (entry points, manifests, how the
README says to run it) and confirm with an interactive question, your inference
Expand All @@ -108,10 +108,9 @@ contract negotiations and a full build, is not.
user knows which one the contract is about. `--surface` skips the question.

3. **Surface dependencies.** `web` is the only surface with an external
dependency: a browser automation MCP server (claude-in-chrome or
Playwright). Verify one is connected. If it is not, stop and offer three
choices: install one, fall back to `native` and drive the browser with
computer use, or abort. Never continue into Phase 1 with no way to run
dependency: a browser automation driver. Verify one is available. If it is
not, stop and offer three choices: install one, fall back to `native` (only
if your harness provides direct UI control), or abort. Never continue into Phase 1 with no way to run
Phase 6.
Comment on lines 110 to 114

The resolved surface becomes `surface` in `harness/contract.json` and
Expand Down Expand Up @@ -276,8 +275,8 @@ Loop, max `--max-rounds` (default 5) rounds:
server, install the package into a clean environment, build the
executable, boot the service, or launch the simulator.
2. Spawn the **evaluator** (judgment-tier) with the tools its surface needs: a browser
MCP for `web`, computer use for `native`, Bash for `library`, `cli`, and
`service`. It receives ONLY: the agreed contract, how to reach the running
automation driver for `web`, direct UI control for `native`, Bash for
`library`, `cli`, and `service`. It receives ONLY: the agreed contract, how to reach the running
artifact, and the issue body.

Its role prompt, keeping the bracketed clause that matches the surface:
Expand Down
2 changes: 1 addition & 1 deletion skills/interview/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ disable-model-invocation: true

# /forge:interview

> **Harness binding.** This command is written in harness-neutral terms: role
> **Harness binding.** This skill is written in harness-neutral terms: role
> tiers (e.g. `judgment-tier`, `labor-tier`) and generic verbs, instead of one
> agent's tool and model names. Before acting, load the binding for your
> environment from [`docs/harness-bindings/`](../../docs/harness-bindings/README.md)
Expand Down
2 changes: 1 addition & 1 deletion skills/planning/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ disable-model-invocation: true

# /forge:planning

> **Harness binding.** This command is written in harness-neutral terms: role
> **Harness binding.** This skill is written in harness-neutral terms: role
> tiers (e.g. `judgment-tier`, `labor-tier`) and generic verbs, instead of one
> agent's tool and model names. Before acting, load the binding for your
> environment from [`docs/harness-bindings/`](../../docs/harness-bindings/README.md)
Expand Down