persona-harness 0.9.0 → 0.9.2
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/CHANGELOG.md +20 -0
- package/README.md +50 -20
- package/dist/cli/host-skill-materializer.js +6 -4
- package/dist/cli/host-skill-materializer.js.map +1 -1
- package/docs/START-HERE.md +26 -8
- package/docs/current/README.md +2 -2
- package/docs/current/canonical-docs-index.md +2 -1
- package/docs/current/docs-inventory.md +1 -0
- package/docs/current/java-backend-mvp-install-guide.md +5 -0
- package/docs/current/persona-harness-detailed-usage.md +9 -3
- package/docs/current/persona-shared-skills-core.md +9 -5
- package/docs/current/portable-host-adapters.md +137 -0
- package/docs/current/release/consumer-authority-current-acceptance.json +1 -1
- package/docs/current/release/v0.9.1-release-notes.md +32 -0
- package/docs/current/release/v0.9.2-release-notes.md +27 -0
- package/package.json +2 -1
- package/packages/shared-skills/README.md +20 -0
- package/packages/shared-skills/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,12 +8,32 @@ preparation alone does not establish stable support or channel state.
|
|
|
8
8
|
|
|
9
9
|
## Unreleased
|
|
10
10
|
|
|
11
|
+
## [0.9.2] - 2026-08-31
|
|
12
|
+
|
|
13
|
+
- Make portable host skills immediately recognizable as Persona Harness: their
|
|
14
|
+
host-facing names are now `ph-<skill-id>`, and their visible descriptions and
|
|
15
|
+
headings start with `(PH)`. Existing generated adapter paths and ownership
|
|
16
|
+
protections remain unchanged.
|
|
11
17
|
- Add `ph update repair --yes` for a narrowly recognized legacy attach
|
|
12
18
|
manifest that still points at a disposable staging directory. It rebinds only
|
|
13
19
|
the OpenCode Persona Harness plugin entry and ownership manifest so an
|
|
14
20
|
explicit subsequent `ph update enable --yes` can opt in; malformed, foreign,
|
|
15
21
|
symlinked, or user-diverged state remains fail-closed and unchanged.
|
|
16
22
|
|
|
23
|
+
## [0.9.1] - 2026-08-31
|
|
24
|
+
|
|
25
|
+
- Publish the canonical portable-host guide for the static adapters generated
|
|
26
|
+
by `ph init` in Codex, Claude Code, OpenCode, and Antigravity projects.
|
|
27
|
+
It distinguishes package-created discovery files from a live host session's
|
|
28
|
+
selection or delivery of a skill.
|
|
29
|
+
- Document safe adapter ownership and update behavior: a later `ph init` may
|
|
30
|
+
refresh only unchanged Persona-owned files, while modified, user-owned, or
|
|
31
|
+
symlinked targets remain fail-closed. `ph update enable` remains the separate
|
|
32
|
+
optional OpenCode plugin-pin path.
|
|
33
|
+
- Keep Context and legacy runtime injection default-off, and state that current
|
|
34
|
+
Context delivery is an optional OpenCode-specific runtime boundary rather
|
|
35
|
+
than a portable-host claim.
|
|
36
|
+
|
|
17
37
|
## [0.8.31] - 2026-08-25
|
|
18
38
|
|
|
19
39
|
- Clarify `ph workflow finish implement` source-read runtime failures with a
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
# Persona Harness
|
|
8
8
|
|
|
9
|
-
**Evidence-first
|
|
9
|
+
**Evidence-first workflow gates and portable skill adapters for AI coding agents building Java/Spring backends.**
|
|
10
10
|
|
|
11
11
|
[](https://www.npmjs.com/package/persona-harness)
|
|
12
12
|
[](https://www.npmjs.com/package/persona-harness)
|
|
@@ -45,9 +45,10 @@ completion in 5/5 measured runs. Runtime injection did not improve the paired
|
|
|
45
45
|
OpenCode measurements and added cost, so it remains default-off.
|
|
46
46
|
|
|
47
47
|
**Built for:** Java/Spring/Gradle projects with explicit workflow gates and
|
|
48
|
-
evidence checks. `ph init`
|
|
49
|
-
Claude Code, OpenCode, and Antigravity
|
|
50
|
-
|
|
48
|
+
evidence checks. `ph init` materializes portable, project-local skill adapters
|
|
49
|
+
for Codex, Claude Code, OpenCode, and Antigravity. Static adapter installation
|
|
50
|
+
is package behavior; a host's live skill selection and delivery are separate
|
|
51
|
+
observation boundaries.
|
|
51
52
|
|
|
52
53
|
**Not a promise of:** automatic implementation, generated-app quality,
|
|
53
54
|
production readiness, token savings, or broad security guarantees.
|
|
@@ -105,8 +106,9 @@ Persona Harness exposes two deliberately separate tracks:
|
|
|
105
106
|
verification authority.
|
|
106
107
|
- **Isolation:** Context-only paths do not execute project commands or contact
|
|
107
108
|
GitHub/network.
|
|
108
|
-
- **Host:**
|
|
109
|
-
delivery
|
|
109
|
+
- **Host:** `ph init` installs static skill adapters for Codex, Claude Code,
|
|
110
|
+
OpenCode, and Antigravity. Context delivery is currently implemented only by
|
|
111
|
+
the optional OpenCode adapter and remains a separate, unobserved boundary.
|
|
110
112
|
- **Evidence:** Context usefulness remains `INCONCLUSIVE` until independent
|
|
111
113
|
external evidence exists.
|
|
112
114
|
- **Product focus:** the productized workflow focus is Java/Spring. The
|
|
@@ -214,18 +216,22 @@ earned by measurement first — see [MEASURED-CLAIMS](docs/MEASURED-CLAIMS.md).
|
|
|
214
216
|
|
|
215
217
|
## Install
|
|
216
218
|
|
|
217
|
-
Requires Node.js ^20.17.0 || >=22.9.0 (Node 21 is unsupported)
|
|
219
|
+
Requires Node.js ^20.17.0 || >=22.9.0 (Node 21 is unsupported). Java 21+ /
|
|
220
|
+
Gradle are required for the Java/Spring workflow rail. Install the coding-agent
|
|
221
|
+
host you already use separately; OpenCode is optional unless you want its
|
|
222
|
+
plugin-only Context delivery.
|
|
218
223
|
|
|
219
224
|
```bash
|
|
220
|
-
#
|
|
221
|
-
curl -fsSL https://opencode.ai/install | bash # or: npm install -g opencode-ai
|
|
222
|
-
opencode auth login
|
|
223
|
-
|
|
224
|
-
# Persona Harness
|
|
225
|
+
# Any supported host project
|
|
225
226
|
npm install -D persona-harness
|
|
226
|
-
npx ph
|
|
227
|
+
npx ph init
|
|
228
|
+
npx ph doctor
|
|
227
229
|
```
|
|
228
230
|
|
|
231
|
+
`ph init` installs host-native discovery files without requiring a
|
|
232
|
+
Persona-specific launch command. See the [portable host adapter guide](docs/current/portable-host-adapters.md)
|
|
233
|
+
for the generated paths, host-specific limits, and safe update procedure.
|
|
234
|
+
|
|
229
235
|
## Quick Start
|
|
230
236
|
|
|
231
237
|
For a clean project directory (not the Persona Harness repo itself):
|
|
@@ -241,7 +247,9 @@ npx ph go "Add a task creation endpoint."
|
|
|
241
247
|
|
|
242
248
|
`ph init` writes manifest-owned shared-skill adapters beneath `.agents/skills`,
|
|
243
249
|
`.claude/skills`, and `.opencode/skills`. It refuses a modified, user-owned, or
|
|
244
|
-
symlinked generated target instead of overwriting it.
|
|
250
|
+
symlinked generated target instead of overwriting it. The generated files make
|
|
251
|
+
the catalog discoverable to the host; they do not prove that a running session
|
|
252
|
+
selected a skill or grant a workflow command any authority.
|
|
245
253
|
|
|
246
254
|
For an existing Java/Spring/Gradle project, inspect the inferred draft first,
|
|
247
255
|
then accept it explicitly:
|
|
@@ -308,6 +316,11 @@ OpenCode configuration and never overwrites changed rules, profiles, workflow
|
|
|
308
316
|
state, or `.gitignore`; malformed, symlinked, foreign, or ordinary projects are
|
|
309
317
|
left unchanged.
|
|
310
318
|
|
|
319
|
+
This automatic update path is OpenCode-plugin-specific. It does not rewrite the
|
|
320
|
+
portable host adapter trees. After upgrading the npm package, run `npx ph init`
|
|
321
|
+
to refresh only unchanged Persona-owned adapters; modified, user-owned, or
|
|
322
|
+
symlinked adapter files stay blocked rather than being overwritten.
|
|
323
|
+
|
|
311
324
|
> [!NOTE]
|
|
312
325
|
> If `workflow finish` fails, the agent must fix the reported blocker before claiming completion. **That failure is the product working, not a bug.**
|
|
313
326
|
|
|
@@ -396,6 +409,23 @@ do not change the P0-3 root CLI discovery contract.
|
|
|
396
409
|
|
|
397
410
|
## Platform And Host Support
|
|
398
411
|
|
|
412
|
+
### Portable host adapters
|
|
413
|
+
|
|
414
|
+
`ph init` materializes the same catalog into each host's project-local discovery
|
|
415
|
+
layout. This proves the installed package produced safe static files, not that a
|
|
416
|
+
specific live session loaded or followed one.
|
|
417
|
+
|
|
418
|
+
| Host | Project-local adapter path | What the package establishes |
|
|
419
|
+
| --- | --- | --- |
|
|
420
|
+
| Codex and Antigravity | `.agents/skills/persona-harness-<skill-id>/SKILL.md` | Manifest-owned, host-neutral skill discovery metadata. |
|
|
421
|
+
| Claude Code | `.claude/skills/persona-harness-claude-<skill-id>/SKILL.md` | Manifest-owned, host-neutral skill discovery metadata. |
|
|
422
|
+
| OpenCode | `.opencode/skills/persona-harness-opencode-<skill-id>/SKILL.md` | Manifest-owned discovery metadata; the optional plugin remains a separate runtime boundary. |
|
|
423
|
+
|
|
424
|
+
The `.agents` and `.claude` adapters explicitly opt out of OpenCode automatic
|
|
425
|
+
discovery so an OpenCode project receives one native candidate rather than
|
|
426
|
+
duplicates. For the full ownership, upgrade, and non-claim boundary, read the
|
|
427
|
+
[portable host adapter guide](docs/current/portable-host-adapters.md).
|
|
428
|
+
|
|
399
429
|
### Node runtime floor
|
|
400
430
|
|
|
401
431
|
The packaged CLI and its product-owned Sigstore authority verifiers require
|
|
@@ -424,12 +454,11 @@ or provide a credential fallback. When more than one repository is enrolled,
|
|
|
424
454
|
pass the selected enrolled `owner/repository` to `fetch github`. Neither
|
|
425
455
|
command publishes a package, moves a channel, or consumes Finish authority.
|
|
426
456
|
|
|
427
|
-
|
|
|
457
|
+
| CLI/runtime surface | Status | Evidence boundary |
|
|
428
458
|
| --- | --- | --- |
|
|
429
|
-
| Linux
|
|
430
|
-
| macOS
|
|
459
|
+
| Linux CLI/package | Product: Node ^20.17.0 || >=22.9.0; source checks: Node 20.19.0 | Required Verify repository aggregates PR fast feedback and main package integration. Pull requests run policy, typecheck, build, and the two Vitest projects; main pushes additionally run Linux Node 20.19.0 source-built, packed-tarball, and fresh local-tarball installed checks. The dispatch-only support matrix retains exact product-floor Linux Node 20.17.0 and 22.9.0 imports plus latest Linux Node 20, 22, and 24 on demand. |
|
|
460
|
+
| macOS CLI/package | Manual limited smoke | The dispatch-only support matrix retains macOS Node 22 smoke only; this is not a promise of macOS Node 20/24 coverage. |
|
|
431
461
|
| Windows | Unverified / nonblocking | No Windows matrix job or support claim. Lock identity device/inode behavior and stale-lock/concurrency conclusions are not measured or verified. |
|
|
432
|
-
| Codex adapter | Planned | No current Codex adapter or Codex product evidence; this is a planned adapter only. |
|
|
433
462
|
|
|
434
463
|
Automatic CI boundary: Verify repository is the required PR/main aggregate. Pull requests require only the fast feedback lanes; main pushes also require Linux Node 20.19.0 package integration. The dispatch-only support matrix is deferred multi-runtime evidence, not a required PR/main gate. It is distinct from the canonical clean-CI builder's main-push signed evidence and the ordinary path-filtered diagnostic selftest.
|
|
435
464
|
|
|
@@ -439,8 +468,8 @@ Evidence answers one bounded question — *"What did this PH workflow observe fo
|
|
|
439
468
|
this defined gate?"* — and nothing more. PH does **not** promise app-quality
|
|
440
469
|
certification, token savings, Clean Code guarantees, broad AST/linter
|
|
441
470
|
enforcement, a full TDD framework, closure guarantees, strong anti-forgery
|
|
442
|
-
integrity before P3, or a
|
|
443
|
-
is in [MEASURED-CLAIMS](docs/MEASURED-CLAIMS.md).
|
|
471
|
+
integrity before P3, or a proven live workflow route on every host. The
|
|
472
|
+
canonical list is in [MEASURED-CLAIMS](docs/MEASURED-CLAIMS.md).
|
|
444
473
|
|
|
445
474
|
> [!WARNING]
|
|
446
475
|
> `ph bearshell` is **not a sandbox**. It limits runtime and output size, but commands still run on your machine with your permissions. See [SECURITY](SECURITY.md).
|
|
@@ -448,6 +477,7 @@ is in [MEASURED-CLAIMS](docs/MEASURED-CLAIMS.md).
|
|
|
448
477
|
## Docs
|
|
449
478
|
|
|
450
479
|
- **New users** → [Start Here](docs/START-HERE.md) · [Quick Demo](docs/QUICK-DEMO.md) · [Measured Claims](docs/MEASURED-CLAIMS.md)
|
|
480
|
+
- **Codex, Claude Code, OpenCode, or Antigravity** → [portable host adapter guide](docs/current/portable-host-adapters.md)
|
|
451
481
|
- **Agent not following the rail?** → [Troubleshooting](docs/troubleshooting/README.md)
|
|
452
482
|
- **Install & backend shape** → [MVP install guide](docs/current/java-backend-mvp-install-guide.md)
|
|
453
483
|
- **Contributors** → [CONTRIBUTING](CONTRIBUTING.md) · [ROADMAP](ROADMAP.md) · [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md)
|
|
@@ -96,21 +96,23 @@ function readCanonicalSkillSource(packageRoot, skill) {
|
|
|
96
96
|
return { body, description };
|
|
97
97
|
}
|
|
98
98
|
function renderHostSkillAdapter(layout, skill, source, packageVersion) {
|
|
99
|
-
const
|
|
99
|
+
const hostSkillName = `ph-${skill.id}`;
|
|
100
|
+
const displayName = `(PH) ${skill.title}`;
|
|
100
101
|
return Buffer.from([
|
|
101
102
|
"---",
|
|
102
|
-
`name: ${
|
|
103
|
-
`description: ${JSON.stringify(source.description)}`,
|
|
103
|
+
`name: ${hostSkillName}`,
|
|
104
|
+
`description: ${JSON.stringify(`(PH) ${source.description}`)}`,
|
|
104
105
|
'license: "Apache-2.0"',
|
|
105
106
|
`compatibility: ${JSON.stringify(layout.id === "agents" ? "Codex and Antigravity" : layout.id === "claude" ? "Claude Code" : "OpenCode")}`,
|
|
106
107
|
"metadata:",
|
|
107
108
|
` persona-harness/canonical-skill: ${skill.id}`,
|
|
109
|
+
` persona-harness/display-name: ${JSON.stringify(displayName)}`,
|
|
108
110
|
` persona-harness/adapter-layout: ${layout.id}`,
|
|
109
111
|
` persona-harness/adapter-version: ${packageVersion}`,
|
|
110
112
|
` opencode/autoinvoke: \"${layout.openCodeAutoinvoke ? "true" : "false"}\"`,
|
|
111
113
|
"---",
|
|
112
114
|
"",
|
|
113
|
-
`#
|
|
115
|
+
`# ${displayName}`,
|
|
114
116
|
"",
|
|
115
117
|
"This adapter exposes the canonical Persona Harness skill to this host only. Discovery alone does not authorize workflow, shell, network, GitHub, authority, evidence, or external actions.",
|
|
116
118
|
"",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-skill-materializer.js","sourceRoot":"","sources":["../../src/cli/host-skill-materializer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"host-skill-materializer.js","sourceRoot":"","sources":["../../src/cli/host-skill-materializer.ts"],"names":[],"mappings":"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"}
|
package/docs/START-HERE.md
CHANGED
|
@@ -12,14 +12,15 @@ A reading map for people seeing Persona Harness (PH) for the first time.
|
|
|
12
12
|
## I want to try it
|
|
13
13
|
|
|
14
14
|
1. [QUICK-DEMO](QUICK-DEMO.md) — the fastest hands-on path.
|
|
15
|
-
2. [README → Quick Start](../README.md#quick-start
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
2. [README → Quick Start](../README.md#quick-start) — the full workflow.
|
|
16
|
+
3. [Portable host adapters](current/portable-host-adapters.md) — install the
|
|
17
|
+
shared-skill catalog for Codex, Claude Code, OpenCode, or Antigravity.
|
|
18
|
+
4. For an existing Java/Spring/Gradle project, run `npx ph attach` to inspect
|
|
18
19
|
the inferred draft, then `npx ph attach --yes` to accept it. Use
|
|
19
20
|
`npx ph attach --repair --yes` only for a recognized weak Persona Harness
|
|
20
21
|
installation, never a ready attachment; unrecognized or corrupt files are
|
|
21
22
|
not overwritten.
|
|
22
|
-
|
|
23
|
+
5. [Troubleshooting](troubleshooting/README.md) — if the agent implements
|
|
23
24
|
directly, ignores the rail, or skips tickets on an existing project.
|
|
24
25
|
|
|
25
26
|
## I want to contribute
|
|
@@ -38,6 +39,24 @@ A reading map for people seeing Persona Harness (PH) for the first time.
|
|
|
38
39
|
|
|
39
40
|
## Platform and host support
|
|
40
41
|
|
|
42
|
+
### Portable host adapters
|
|
43
|
+
|
|
44
|
+
`ph init` installs the canonical shared-skill catalog as manifest-owned regular
|
|
45
|
+
files in every supported project layout. This makes the catalog discoverable; it
|
|
46
|
+
does not establish that a running host session selected, loaded, or followed a
|
|
47
|
+
skill.
|
|
48
|
+
|
|
49
|
+
| Host | Generated path |
|
|
50
|
+
| --- | --- |
|
|
51
|
+
| Codex and Antigravity | `.agents/skills/persona-harness-<skill-id>/SKILL.md` |
|
|
52
|
+
| Claude Code | `.claude/skills/persona-harness-claude-<skill-id>/SKILL.md` |
|
|
53
|
+
| OpenCode | `.opencode/skills/persona-harness-opencode-<skill-id>/SKILL.md` |
|
|
54
|
+
|
|
55
|
+
Read [Portable host adapters](current/portable-host-adapters.md) before
|
|
56
|
+
customizing an adapter or expecting a package update to replace it. Context and
|
|
57
|
+
legacy runtime injection remain default-off; Context delivery is still an
|
|
58
|
+
OpenCode-specific optional boundary.
|
|
59
|
+
|
|
41
60
|
### Node runtime floor
|
|
42
61
|
|
|
43
62
|
Sigstore-backed package verification requires Node.js ^20.17.0 || >=22.9.0;
|
|
@@ -52,12 +71,11 @@ diagnostics, not Finish authority. External assurance readiness is displayed
|
|
|
52
71
|
through a separate read-only, non-consuming inspection; neither surface moves
|
|
53
72
|
registry or trust state.
|
|
54
73
|
|
|
55
|
-
|
|
|
74
|
+
| CLI/runtime surface | Status | Evidence boundary |
|
|
56
75
|
| --- | --- | --- |
|
|
57
|
-
| Linux
|
|
58
|
-
| macOS
|
|
76
|
+
| Linux CLI/package | Product: Node ^20.17.0 || >=22.9.0; source checks: Node 20.19.0 | Required Verify repository aggregates PR fast feedback and main package integration. Pull requests run policy, typecheck, build, and the two Vitest projects; main pushes additionally run Linux Node 20.19.0 source-built, packed-tarball, and fresh local-tarball installed checks. The dispatch-only support matrix retains exact product-floor Linux Node 20.17.0 and 22.9.0 imports plus latest Linux Node 20, 22, and 24 on demand. |
|
|
77
|
+
| macOS CLI/package | Manual limited smoke | The dispatch-only support matrix retains macOS Node 22 smoke only; this is not a promise of macOS Node 20/24 coverage. |
|
|
59
78
|
| Windows | Unverified / nonblocking | No Windows matrix job or support claim. Lock identity device/inode behavior and stale-lock/concurrency conclusions are not measured or verified. |
|
|
60
|
-
| Codex adapter | Planned | No current Codex adapter or Codex product evidence; this is a planned adapter only. |
|
|
61
79
|
|
|
62
80
|
Automatic CI boundary: Verify repository is the required PR/main aggregate. Pull requests require only the fast feedback lanes; main pushes also require Linux Node 20.19.0 package integration. The dispatch-only support matrix is deferred multi-runtime evidence, not a required PR/main gate. It is distinct from the canonical clean-CI builder's main-push signed evidence and the ordinary path-filtered diagnostic selftest.
|
|
63
81
|
|
package/docs/current/README.md
CHANGED
|
@@ -19,8 +19,8 @@ history but do not become a current product or release claim.
|
|
|
19
19
|
|
|
20
20
|
| I need to... | Start here |
|
|
21
21
|
| --- | --- |
|
|
22
|
-
| Install or understand the product | [
|
|
23
|
-
| Use the portable shared-skill or product-discovery guidance | [Persona Shared Skills Core](persona-shared-skills-core.md) |
|
|
22
|
+
| Install or understand the product | [Portable host adapters](portable-host-adapters.md) and [workflow lifecycle](workflow-closure-state-machine-design.md) |
|
|
23
|
+
| Use the portable shared-skill or product-discovery guidance | [Persona Shared Skills Core](persona-shared-skills-core.md); use the portable-host guide above for host layouts. |
|
|
24
24
|
| Maintain a local personalization profile | [Personalization Profile V1](personalization-profile-v1.md) |
|
|
25
25
|
| Follow the Context Personalization program | [Context Personalization Program Status](context-program-status.md) |
|
|
26
26
|
| Contribute to Context Personalization safely | [Context contributor map](context-contributor-map.json) |
|
|
@@ -12,7 +12,8 @@ Start with [Current Docs](README.md) unless you need a specific decision.
|
|
|
12
12
|
| Workflow lifecycle projection | `docs/current/workflow-closure-state-machine-design.md` | The current fail-closed `workflow-lifecycle.1` state model. |
|
|
13
13
|
| Workflow state concurrency | `docs/current/workflow-state-concurrency.md` | Writer ownership and safe state handling. |
|
|
14
14
|
| Public product boundary | `docs/MEASURED-CLAIMS.md` | What Persona Harness may and may not claim. |
|
|
15
|
-
| Install and usage | `docs/
|
|
15
|
+
| Install and usage | `docs/START-HERE.md` | Current first-run path for the workflow rail and host-neutral installation. |
|
|
16
|
+
| Portable host adapters | `docs/current/portable-host-adapters.md` | Static adapter layouts, init ownership, update boundary, and host-evidence limits. |
|
|
16
17
|
| Portable shared-skill and product-discovery contract | `docs/current/persona-shared-skills-core.md` | Catalog ownership, interview approval, capability-derived host assurance, explicit handoffs, and packaged surface. |
|
|
17
18
|
| Personalization profile store | `docs/current/personalization-profile-v1.md` | Versioned local profile records, append-only lifecycle, privacy, and fail-closed storage. |
|
|
18
19
|
| Context Personalization program | `docs/current/context-program-status.md` | Canonical P0 audit, isolated OpenCode delivery boundary, separation invariants, and claim status. |
|
|
@@ -115,6 +115,7 @@ Total indexed files: 342
|
|
|
115
115
|
| `docs/current/npm-beta-publish-preparation.md` | current compatibility doc | - | Compatibility/current-era doc retained in place; migrate by summary and pointer before moving. |
|
|
116
116
|
| `docs/current/omo-steal-measurement-report.md` | current or historical decision/status | - | Decision/status document; active only if named by docs/current/README.md, otherwise historical reference. |
|
|
117
117
|
| `docs/current/persona-harness-detailed-usage.md` | operational stable | - | Stable non-versioned guide or index. |
|
|
118
|
+
| `docs/current/portable-host-adapters.md` | current active pointer/status | - | Current portable static-adapter layouts, ownership, update, and host-evidence boundary. |
|
|
118
119
|
| `docs/current/persona-harness-state-and-version.md` | current compatibility doc | - | Compatibility/current-era doc retained in place; migrate by summary and pointer before moving. |
|
|
119
120
|
| `docs/current/persona-workflow-roles-v0.3.md` | current compatibility doc | - | Compatibility/current-era doc retained in place; migrate by summary and pointer before moving. |
|
|
120
121
|
| `docs/current/p0-finish-next-action-acceptance-record.md` | current active pointer/status | - | P0-2 exact-main finish follow-up, report-transition, package evidence, and claim boundary record. |
|
|
@@ -4,6 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
Persona Harness의 현재 productized MVP는 Java/Spring backend Clean Code injection이다.
|
|
6
6
|
|
|
7
|
+
이 문서는 선택적 OpenCode plugin 경로를 위한 Java/Spring guide다. `ph init`이
|
|
8
|
+
Codex, Claude Code, OpenCode, Antigravity에 만드는 static shared-skill adapter의
|
|
9
|
+
설치·소유권·갱신 경계는 [Portable Host Adapters](portable-host-adapters.md)를 먼저
|
|
10
|
+
보세요. 이 문서의 OpenCode 예시는 다른 host가 지원되지 않는다는 뜻이 아니다.
|
|
11
|
+
|
|
7
12
|
목표는 같은 요구사항에서 Gradle 기반, 계층 분리, DTO boundary, Repository boundary, Service orchestration-only backend product code shape가 더 균일하게 나오도록 Java target file에 rule context를 주입하는 것이다.
|
|
8
13
|
|
|
9
14
|
frontend, infra, multi-domain shared skill은 후속 확장 후보이며 현재 release-facing MVP 범위가 아니다.
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
# Persona Harness Detailed Usage Notes
|
|
2
2
|
|
|
3
|
-
This document preserves
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
This document preserves previous root README details after the public-facing
|
|
4
|
+
README was simplified. It includes historical OpenCode-only experiments and
|
|
5
|
+
alpha-era setup instructions; do not use it as the current first-run or
|
|
6
|
+
host-support guide.
|
|
7
|
+
|
|
8
|
+
Start with the root [README.md](../../README.md),
|
|
9
|
+
[Start Here](../START-HERE.md), and [Portable Host
|
|
10
|
+
Adapters](portable-host-adapters.md). Use the retained notes below only when an
|
|
11
|
+
older maintenance or experiment record is specifically relevant.
|
|
6
12
|
|
|
7
13
|
---
|
|
8
14
|
|
|
@@ -201,11 +201,15 @@ assumes every capability by default.
|
|
|
201
201
|
|
|
202
202
|
The current OpenCode compact route uses one explicit bounded manifest and
|
|
203
203
|
remains portable because its notice/session behavior is emulated and its
|
|
204
|
-
generic pre-tool/completion enforcement capabilities are unavailable.
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
204
|
+
generic pre-tool/completion enforcement capabilities are unavailable. The 0.9.0
|
|
205
|
+
package materializes static adapters for Claude Code, Codex, and Antigravity as
|
|
206
|
+
well as OpenCode; that package fact is not evidence that any host adapter is
|
|
207
|
+
installed in a particular project or live in a particular session. Host-native
|
|
208
|
+
selection and delivery remain separate observation boundaries. See [Portable
|
|
209
|
+
Host Adapters](portable-host-adapters.md) for the generated layouts, ownership,
|
|
210
|
+
and upgrade boundary. The contract does not change selection, workflow
|
|
211
|
+
authority, Context's explicit default-off boundary, or the legacy
|
|
212
|
+
`runtimeInjection` default of `false`.
|
|
209
213
|
|
|
210
214
|
## Package Boundary
|
|
211
215
|
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# Portable Host Adapters
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Starting with Persona Harness 0.9.0, the canonical shared-skill catalog is
|
|
6
|
+
discoverable in four agent hosts without a Persona-specific launch command:
|
|
7
|
+
|
|
8
|
+
- Codex
|
|
9
|
+
- Claude Code
|
|
10
|
+
- OpenCode
|
|
11
|
+
- Antigravity
|
|
12
|
+
|
|
13
|
+
This is a **static adapter installation** boundary. It gives each host regular
|
|
14
|
+
project-local `SKILL.md` files with the same catalog metadata and skill body. It
|
|
15
|
+
does not prove that a running host session selected a skill, loaded it, or
|
|
16
|
+
followed its guidance.
|
|
17
|
+
|
|
18
|
+
## Install In Any Supported Host Project
|
|
19
|
+
|
|
20
|
+
From the project root:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install -D persona-harness
|
|
24
|
+
npx ph init
|
|
25
|
+
npx ph doctor
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
`ph init` materializes the current canonical catalog in all of the following
|
|
29
|
+
host discovery layouts:
|
|
30
|
+
|
|
31
|
+
| Host | Generated adapter path |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| Codex and Antigravity | `.agents/skills/persona-harness-<skill-id>/SKILL.md` |
|
|
34
|
+
| Claude Code | `.claude/skills/persona-harness-claude-<skill-id>/SKILL.md` |
|
|
35
|
+
| OpenCode | `.opencode/skills/persona-harness-opencode-<skill-id>/SKILL.md` |
|
|
36
|
+
|
|
37
|
+
Use your host's normal project-skill discovery mechanism after initialization.
|
|
38
|
+
Persona Harness does not add a host-specific launch command or turn static
|
|
39
|
+
discovery into a claim that the host selected a skill in the current session.
|
|
40
|
+
|
|
41
|
+
## What Is Shared
|
|
42
|
+
|
|
43
|
+
Every generated adapter points to the same Persona-owned catalog. Its
|
|
44
|
+
host-facing machine name is `ph-<skill-id>`, while the description and visible
|
|
45
|
+
heading begin with `(PH)`. This makes Persona-owned skills recognizable without
|
|
46
|
+
using punctuation that can violate a host's skill-name rules. Each adapter also
|
|
47
|
+
carries catalog identity, adapter layout, and package version. The catalog can
|
|
48
|
+
advise one compact reference, such as `deep-interview`, `grill-me`,
|
|
49
|
+
`programming`, `debug`, or `review`; discovery does not load every skill body.
|
|
50
|
+
|
|
51
|
+
The adapter does not, merely by being discovered:
|
|
52
|
+
|
|
53
|
+
- run shell commands;
|
|
54
|
+
- create or advance workflow state;
|
|
55
|
+
- use network, GitHub, evidence, or authority surfaces;
|
|
56
|
+
- grant verification or Finish authority; or
|
|
57
|
+
- enable Context or legacy runtime injection.
|
|
58
|
+
|
|
59
|
+
The shared-skill routing and handoff contract is defined in
|
|
60
|
+
[Persona Shared Skills Core](persona-shared-skills-core.md).
|
|
61
|
+
|
|
62
|
+
## Ownership And Safe Re-runs
|
|
63
|
+
|
|
64
|
+
The init manifest records every generated adapter path and digest. `ph init`
|
|
65
|
+
may retain or refresh an unchanged Persona-owned adapter on a later run. It
|
|
66
|
+
does not adopt neighboring user skills.
|
|
67
|
+
|
|
68
|
+
Before any write, `ph init` checks each generated path as a no-follow regular
|
|
69
|
+
file. It fails closed without a partial write when it encounters a user-owned,
|
|
70
|
+
modified, missing-ownership, ambiguous, or symlinked target. In a clean
|
|
71
|
+
checkout without an init manifest, only a byte-identical adapter can be
|
|
72
|
+
re-owned.
|
|
73
|
+
|
|
74
|
+
If an adapter is intentionally customized, preserve it as user-owned and do
|
|
75
|
+
not expect `ph init` to replace it. Resolve the ownership collision deliberately
|
|
76
|
+
instead of deleting or forcing files just to make initialization pass.
|
|
77
|
+
|
|
78
|
+
## OpenCode Duplicate Prevention
|
|
79
|
+
|
|
80
|
+
OpenCode can discover all three conventional project skill directories. The
|
|
81
|
+
generated `.agents` and `.claude` adapters therefore declare
|
|
82
|
+
`opencode/autoinvoke: "false"`; only the `.opencode` adapter declares
|
|
83
|
+
`opencode/autoinvoke: "true"`. This leaves one native OpenCode candidate per
|
|
84
|
+
canonical skill while preserving Codex, Antigravity, and Claude Code discovery.
|
|
85
|
+
|
|
86
|
+
The existing optional OpenCode plugin registration remains separate from static
|
|
87
|
+
adapter materialization. It may expose OpenCode-specific advisory behavior, but
|
|
88
|
+
it does not change other hosts' semantics.
|
|
89
|
+
|
|
90
|
+
## Context And Runtime Boundary
|
|
91
|
+
|
|
92
|
+
`context.enabled` is explicit and default-off. Static portable adapters do not
|
|
93
|
+
enable it. Context delivery is currently implemented only by the optional
|
|
94
|
+
OpenCode adapter, and even there a local configuration or package check cannot
|
|
95
|
+
prove a live session received a Context block.
|
|
96
|
+
|
|
97
|
+
The legacy `runtimeInjection` setting also remains default-off. Portable
|
|
98
|
+
adapters make skills discoverable; they do not silently enable runtime hooks,
|
|
99
|
+
pre-tool enforcement, completion enforcement, session persistence, or automatic
|
|
100
|
+
adapter updates on a host that lacks those controls.
|
|
101
|
+
|
|
102
|
+
## Updating A Project
|
|
103
|
+
|
|
104
|
+
Upgrade the package through your normal npm workflow, then re-run init from the
|
|
105
|
+
same project root:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
npm install -D persona-harness@latest
|
|
109
|
+
npx ph init
|
|
110
|
+
npx ph doctor
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
The later init can refresh only unchanged Persona-owned adapters. It will not
|
|
114
|
+
overwrite custom files or follow symlinks. The optional `ph update enable`
|
|
115
|
+
feature is an OpenCode plugin-pin update path; it does not automatically refresh
|
|
116
|
+
the portable adapter layouts. A new host session is still required for a host to
|
|
117
|
+
pick up any updated project-local skill files.
|
|
118
|
+
|
|
119
|
+
## What `ph doctor` Can Verify
|
|
120
|
+
|
|
121
|
+
`ph doctor` can report installed-package metadata, local integration files,
|
|
122
|
+
ownership diagnostics, and configured Persona routes. It cannot inspect a live
|
|
123
|
+
Codex, Claude Code, OpenCode, or Antigravity session. Treat host-native skill
|
|
124
|
+
selection, activation notices, and delivery as host evidence, not as something
|
|
125
|
+
proved by package installation alone.
|
|
126
|
+
|
|
127
|
+
## Capability And Claim Boundary
|
|
128
|
+
|
|
129
|
+
The versioned portable contract records per-host capability states as
|
|
130
|
+
`supported`, `emulated`, or `unavailable`. It derives portable versus enforced
|
|
131
|
+
assurance from that validated manifest rather than from a host name. A project
|
|
132
|
+
that requires enforced assurance blocks if the host cannot supply the required
|
|
133
|
+
control.
|
|
134
|
+
|
|
135
|
+
This does not claim uniform runtime hooks or enforcement across hosts. It is a
|
|
136
|
+
safe, host-neutral starting point for the same Persona skill catalog, while live
|
|
137
|
+
host behavior remains a separately observable boundary.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# v0.9.1 Release Notes
|
|
2
|
+
|
|
3
|
+
## Portable Host Documentation
|
|
4
|
+
|
|
5
|
+
This patch publishes the supported-host documentation for the portable skill
|
|
6
|
+
adapters introduced in 0.9.0. The root README, Start Here guide, current
|
|
7
|
+
documentation index, shared-skill package README, and Korean, Japanese, and
|
|
8
|
+
Simplified Chinese entry pages now describe the same project-local adapter
|
|
9
|
+
layouts for Codex, Claude Code, OpenCode, and Antigravity.
|
|
10
|
+
|
|
11
|
+
The package also includes the canonical [Portable Host Adapters](../portable-host-adapters.md)
|
|
12
|
+
guide so an installed consumer can inspect the generated paths and ownership
|
|
13
|
+
rules without relying on repository-only documentation.
|
|
14
|
+
|
|
15
|
+
## Boundaries Preserved
|
|
16
|
+
|
|
17
|
+
- `ph init` materializes static, manifest-owned adapter files; installation does
|
|
18
|
+
not claim that a live host session selected or followed a skill.
|
|
19
|
+
- Context and legacy runtime injection remain explicit and default-off. Current
|
|
20
|
+
Context delivery is still an optional OpenCode-specific runtime boundary.
|
|
21
|
+
- `ph update enable` remains the optional OpenCode plugin-pin path. Updating
|
|
22
|
+
portable adapters requires a later `ph init` and only refreshes unchanged
|
|
23
|
+
Persona-owned files.
|
|
24
|
+
- User-owned, modified, ambiguous, or symlinked adapter targets remain
|
|
25
|
+
fail-closed rather than being overwritten.
|
|
26
|
+
|
|
27
|
+
## Verification
|
|
28
|
+
|
|
29
|
+
The release path verifies documentation taxonomy and links, the public support
|
|
30
|
+
matrix, package-file policy, TypeScript type safety, a canonical packed package,
|
|
31
|
+
an isolated installed package with `sourceFallback=false`, protected CI, and
|
|
32
|
+
registry provenance.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# v0.9.2 Release Notes
|
|
2
|
+
|
|
3
|
+
## Recognizable Portable Skills
|
|
4
|
+
|
|
5
|
+
Persona Harness adapters generated by `ph init` now use the portable
|
|
6
|
+
host-facing name `ph-<skill-id>`. Their description and visible heading begin
|
|
7
|
+
with `(PH)`, so users can identify Persona Harness guidance in Codex, Claude
|
|
8
|
+
Code, OpenCode, and Antigravity without putting punctuation into the machine
|
|
9
|
+
identifier.
|
|
10
|
+
|
|
11
|
+
The generated adapter paths remain unchanged. A later `ph init` can refresh an
|
|
12
|
+
unchanged Persona-owned adapter through the existing manifest ownership check;
|
|
13
|
+
customized, ambiguous, or symlinked adapters remain fail-closed and untouched.
|
|
14
|
+
|
|
15
|
+
## Boundaries Preserved
|
|
16
|
+
|
|
17
|
+
- This is a static skill-discovery change only. It does not claim that a live
|
|
18
|
+
host session selected or followed a skill.
|
|
19
|
+
- It does not enable runtime injection, hooks, workflow state, network,
|
|
20
|
+
evidence, authority, or automatic updates.
|
|
21
|
+
- Context delivery remains explicit and default-off.
|
|
22
|
+
|
|
23
|
+
## Verification
|
|
24
|
+
|
|
25
|
+
The release path verifies all three generated adapter layouts, their stable
|
|
26
|
+
paths and OpenCode duplicate-prevention metadata, TypeScript type safety, the
|
|
27
|
+
canonical packed package, protected CI, and registry provenance.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "persona-harness",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@10.8.2",
|
|
@@ -62,6 +62,7 @@
|
|
|
62
62
|
"docs/current/v0.3.1-external-tester-feedback-template.md",
|
|
63
63
|
"docs/current/v0.3.0-alpha-publish-readiness.md",
|
|
64
64
|
"docs/current/persona-harness-detailed-usage.md",
|
|
65
|
+
"docs/current/portable-host-adapters.md",
|
|
65
66
|
"docs/current/context-program-status.md",
|
|
66
67
|
"docs/current/context-contributor-map.json",
|
|
67
68
|
"docs/current/context-external-validation.md",
|
|
@@ -37,6 +37,26 @@ metadata and Persona's optional automatic advisory-route configuration
|
|
|
37
37
|
separately, and leaves adapter reachability, current host-native selection, and
|
|
38
38
|
host route delivery as `UNOBSERVED` unless the host itself provides evidence.
|
|
39
39
|
|
|
40
|
+
## Project-local host layouts
|
|
41
|
+
|
|
42
|
+
`npx ph init` materializes this catalog as regular, manifest-owned adapters in
|
|
43
|
+
each supported host layout:
|
|
44
|
+
|
|
45
|
+
| Host | Adapter path |
|
|
46
|
+
| --- | --- |
|
|
47
|
+
| Codex and Antigravity | `.agents/skills/persona-harness-<skill-id>/SKILL.md` |
|
|
48
|
+
| Claude Code | `.claude/skills/persona-harness-claude-<skill-id>/SKILL.md` |
|
|
49
|
+
| OpenCode | `.opencode/skills/persona-harness-opencode-<skill-id>/SKILL.md` |
|
|
50
|
+
|
|
51
|
+
Init may refresh only an unchanged Persona-owned adapter. User-owned, modified,
|
|
52
|
+
or symlinked targets fail closed rather than being overwritten. The adapters
|
|
53
|
+
make the catalog discoverable but do not enable Context, legacy runtime
|
|
54
|
+
injection, workflow commands, shell, network, authority, or completion state.
|
|
55
|
+
The generated OpenCode-native path is the only one eligible for OpenCode
|
|
56
|
+
automatic discovery, preventing duplicate candidates from the other compatible
|
|
57
|
+
layouts. See [Portable Host Adapters](../../docs/current/portable-host-adapters.md)
|
|
58
|
+
for the full upgrade and host-evidence boundary.
|
|
59
|
+
|
|
40
60
|
## Portable Contract
|
|
41
61
|
|
|
42
62
|
The root package exposes `persona-portable-skill-contract.1` through its
|