You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add Pi (pi.dev / @earendil-works/pi-coding-agent) as an
analysis-capable source-local host, following the host contribution
guide and the Qwen Code / GitHub Copilot host template. Native
contracts were verified against @earendil-works/pi-coding-agent; a
dated spec lives at docs/specs/2026-07-30-pi-host-support.md
(pi-host-support) with stable PHS-AC acceptance ids.
- Distribution shell: `pi` manifest in package.json plus a
/better-harness prompt template, so `pi install <repo>` discovers
the canonical skills/ root and registers the slash command. Pi
reuses the existing package.json, so the package still ships six
host metadata roots and the Qoder runtime bundle stays Qoder-only.
- Configured assets: scripts/agent-customize/providers/pi.mjs
inventories settings-declared pi packages, extensions, skills,
prompt templates, and AGENTS.md context. It honors Pi's effective
state -- autoload:false fails closed, and per-resource allowlists,
`!` exclusions, and `+`/`-` overrides narrow reported resources --
and models piHome and the real user home independently so
~/.agents/skills is found under a relocated PI_CODING_AGENT_DIR.
- Session evidence: scripts/session-analysis/platforms/pi.mjs reads
workspace-matching JSONL v3 transcripts, resolves the session
directory as CLI > env > settings > default, treats a custom
session directory as the exact flat JSONL directory qualified by
the session-header cwd, gates default-tree root existence on a
workspace-keyed directory, and keeps partial/malformed usage
explicit instead of zero-filling.
- Register `pi` across the supported-platform set and --pi-home
threading; the A-06 consistency test now covers seven hosts.
- Sync the host adapter matrix, site docs (en/zh), references,
READMEs, and CHANGELOG; add provider, session, autoload/filter,
relocated-home, custom-dir, precedence, usage, and prompt-template
expansion tests.
Validated with npm run check (896 tests, pack verification) and
against real local Pi data.
Co-authored-by: QoderAI (Pi) <qoder_ai@qoder.com>
Copy file name to clipboardExpand all lines: README.md
+31-2Lines changed: 31 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -153,6 +153,7 @@ Pick your coding agent — you can be looking at your first report in minutes:
153
153
|**Qoder Desktop / CLI**| Nothing to install when Qoder Desktop is installed — Better Harness is built in and available to both. Open your repository and use the report prompt below. |
154
154
|**GitHub Copilot CLI**| Add the repository marketplace, install `better-harness@better-harness`, start a new session, then use the report prompt below. |
155
155
|**Cursor**| Load the plugin from source — see [Installation](#installation). |
156
+
|**Pi**| Install the repository as a pi package: `pi install https://github.com/QoderAI/better-harness`, start a new session, then use `/better-harness` or `/skill:better-harness`. |
156
157
157
158
Once installed, ask Better Harness to generate the host's durable report:
158
159
@@ -162,8 +163,8 @@ Once installed, ask Better Harness to generate the host's durable report:
162
163
163
164
Better Harness scopes behavior claims to relevant Task Episodes and the
164
165
surrounding project mechanisms. Qoder produces a Canvas report; Claude Code,
165
-
Codex, Cursor, Qwen Code, and GitHub Copilotproduce self-contained HTML with
166
-
paired Markdown. Missing or partial evidence remains explicit. See the
166
+
Codex, Cursor, Qwen Code, GitHub Copilot, and Pi produce self-contained HTML
167
+
with paired Markdown. Missing or partial evidence remains explicit. See the
167
168
[Host Adapter Matrix](docs/adapters/README.md) for current coverage and output
168
169
differences.
169
170
@@ -336,6 +337,34 @@ transcripts under `~/.copilot/session-state/`. Copilot records no per-response
336
337
token usage, and VS Code Copilot Chat has no supported durable transcript; both
337
338
remain explicit evidence boundaries.
338
339
340
+
### Pi
341
+
342
+
Install the repository as a [pi package](https://pi.dev/docs/latest/packages):
343
+
344
+
```bash
345
+
pi install https://github.com/QoderAI/better-harness
346
+
```
347
+
348
+
Or try it for a single run without changing settings:
349
+
350
+
```bash
351
+
pi -e git:github.com/QoderAI/better-harness
352
+
```
353
+
354
+
Pi discovers the `better-harness` skill and the `/better-harness` prompt
355
+
template through the `pi` manifest in `package.json`. Start a new Pi session
356
+
in the repository you want to review and run the report prompt:
357
+
358
+
```text
359
+
/better-harness review this project's AI coding workflow and generate a report
360
+
```
361
+
362
+
Pi defaults to a self-contained `report.html` with paired `report.md` and
363
+
`findings.json` under the repository's `.pi/better-harness` report root. Pi
364
+
session evidence is read from workspace-matching JSONL transcripts under
365
+
`~/.pi/agent/sessions/`; missing evidence stays explicit rather than being
366
+
inferred.
367
+
339
368
## Develop and package from source
340
369
341
370
Development requires Node.js `>=22.20.0 <25.0.0` and npm
Copy file name to clipboardExpand all lines: docs/community.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -37,7 +37,7 @@ This is the complete reference. For the common cases, see Start Here above.
37
37
| Style grammar | Yes |`templates/style/`| Directive-only visual language; no runnable skeletons | Selected by report/style routing | Style-template tests and no copied runtime skeletons |
38
38
| Structured knowledge | Candidate only |`knowledge-base/{official,community}/...`|`knowledge.md`, interim `schema.json`, fixtures, namespace uniqueness | Docs-only until registry spec, compiler, and binding tests exist | Namespace check, schema/fixture review, migration note |
39
39
| Examples and operating models | Yes |`case-studies/`| Named example, scope, evidence boundary, non-runtime status | Reference material only unless separately bound | Link/path check; no runtime-policy claims |
40
-
| Host shell and packaging | Thin, or generated only after a split trigger |`.claude-plugin/`, `.qoder-plugin/`, `.cursor-plugin/`, `.codex-plugin/`, `.github/plugin/`, `qwen-extension.json`, future lifecycle shells | Install/discovery metadata and pointers to canonical owners | Public npm package includes all six current metadata roots; the Qoder runtime bundle includes only `.qoder-plugin/`, and generated host artifacts stay source-local |`scripts/npm-package/` verification, or split adapter note plus target builder |
40
+
| Host shell and packaging | Thin, or generated only after a split trigger |`.claude-plugin/`, `.qoder-plugin/`, `.cursor-plugin/`, `.codex-plugin/`, `.github/plugin/`, `qwen-extension.json`, the `pi` manifest in `package.json`, future lifecycle shells | Install/discovery metadata and pointers to canonical owners | Public npm package includes all six current metadata roots; the Qoder runtime bundle includes only `.qoder-plugin/`, and generated host artifacts stay source-local |`scripts/npm-package/` verification, or split adapter note plus target builder |
Copy file name to clipboardExpand all lines: docs/docs/hosts/adapter-matrix.md
+5-2Lines changed: 5 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,16 +19,19 @@ host-neutral.
19
19
| Claude Code | Analysis-capable source-local host |`.claude-plugin/`| Workspace-matching local Claude transcripts when present | Self-contained HTML + Markdown |
| Qwen Code | Analysis-capable source-local host |`qwen-extension.json`| Workspace-matching JSONL transcripts under `~/.qwen/projects/<slug>/chats/`| Self-contained HTML + Markdown |
23
+
| GitHub Copilot | Analysis-capable source-local host |`.github/plugin/`| Workspace-matching transcripts under `~/.copilot/session-state/<id>/events.jsonl`| Self-contained HTML + Markdown |
24
+
| Pi | Analysis-capable source-local host |`pi` manifest in `package.json`| Workspace-matching JSONL transcripts under `~/.pi/agent/sessions/`| Self-contained HTML + Markdown |
22
25
23
-
The `@qoderai/better-harness` npm package includes all four plugin metadata
26
+
The `@qoderai/better-harness` npm package includes all six plugin metadata
24
27
roots. The generated Qoder runtime bundle includes only the Qoder shell;
Copy file name to clipboardExpand all lines: docs/glossary.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -60,7 +60,7 @@ for extension surfaces, read [community.md](community.md).
60
60
|`core-change-watch`| Project, history, core-path, and current-diff evidence collection. |[scripts/core-change-watch](../scripts/core-change-watch)|
61
61
| Blast radius | The symbol-graph reach of a change, computed with tree-sitter (JS/TS, Go, Python) as a git hook. |[hooks/git-scripts/blast-radius](../hooks/git-scripts/blast-radius)|
62
62
|`dependency-governance`| Update-automation, audit, and stale-dependency signals. |[scripts/dependency-governance](../scripts/dependency-governance)|
63
-
|`session-analysis`| Normalizes Qoder, Codex, Claude, Cursor, Qwen, or Copilot agent session behavior into evidence. |[scripts/session-analysis](../scripts/session-analysis)|
63
+
|`session-analysis`| Normalizes Qoder, Codex, Claude, Cursor, Qwen, Copilot, or Pi agent session behavior into evidence. |[scripts/session-analysis](../scripts/session-analysis)|
@@ -79,7 +79,7 @@ for extension surfaces, read [community.md](community.md).
79
79
|---|---|---|
80
80
| Skill | A repeatable agent workflow defined by `SKILL.md` frontmatter plus a concise workflow. |[community.md](community.md); report use: [report contract](../skills/better-harness/SKILL.md#report-output)|
81
81
| Host adapter | Per-host discovery and evidence-shape glue (e.g. Qoder, Codex); keeps the engine host-neutral. |[adapters/README.md](adapters/README.md)|
82
-
| Host shell | Thin host metadata (`.claude-plugin/`, `.qoder-plugin/`, `.cursor-plugin/`, `.codex-plugin/`, `.github/plugin/`, `qwen-extension.json`, or a future lifecycle shell) that exposes canonical behavior without owning product logic; the public npm package ships all six current metadata roots, while the Qoder runtime bundle includes only `.qoder-plugin/`. |[ARCHITECTURE.md](ARCHITECTURE.md)|
82
+
| Host shell | Thin host metadata (`.claude-plugin/`, `.qoder-plugin/`, `.cursor-plugin/`, `.codex-plugin/`, `.github/plugin/`, `qwen-extension.json`, the `pi` manifest in `package.json`, or a future lifecycle shell) that exposes canonical behavior without owning product logic; the public npm package ships all six current metadata roots, while the Qoder runtime bundle includes only `.qoder-plugin/`. |[ARCHITECTURE.md](ARCHITECTURE.md)|
83
83
| Canonical owner | The single directory that owns a behavior's product judgment; host shells and mirrors point back to it. |[ARCHITECTURE.md](ARCHITECTURE.md)|
0 commit comments