@webpresso/opencode-plugin 3.1.21 → 3.1.23
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/package.json +8 -3
- package/plugin-skill-ownership.json +9 -6
- package/skills/claude/SKILL.md +14 -4
- package/skills/codex/SKILL.md +11 -6
- package/skills/grok/SKILL.md +45 -0
- package/skills/hooks-doctor/SKILL.md +7 -7
- package/skills/ultragoal/SKILL.md +19 -2
- package/skills/verify/SKILL.md +4 -4
- package/README.md +0 -14
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webpresso/opencode-plugin",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.23",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "OpenCode plugin adapter package for Webpresso agent-kit.",
|
|
6
6
|
"homepage": "https://github.com/webpresso/agent-kit#readme",
|
|
@@ -16,9 +16,14 @@
|
|
|
16
16
|
"files": [
|
|
17
17
|
"index.js",
|
|
18
18
|
"plugin-skill-ownership.json",
|
|
19
|
-
"skills",
|
|
19
|
+
"skills/**/SKILL.md",
|
|
20
|
+
"skills/**/references/**",
|
|
21
|
+
"skills/**/LICENSE*",
|
|
20
22
|
"LICENSE",
|
|
21
|
-
"README.md"
|
|
23
|
+
"!README.md",
|
|
24
|
+
"!CHANGELOG.md",
|
|
25
|
+
"!**/*.test.js",
|
|
26
|
+
"!**/*.test.ts"
|
|
22
27
|
],
|
|
23
28
|
"type": "module",
|
|
24
29
|
"sideEffects": false,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"host": "opencode",
|
|
4
4
|
"packageName": "@webpresso/opencode-plugin",
|
|
5
|
-
"packageVersion": "3.1.
|
|
5
|
+
"packageVersion": "3.1.23",
|
|
6
6
|
"runtimeDirs": [],
|
|
7
7
|
"skills": {
|
|
8
8
|
"ai-deslop": {
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
"digest": "sha256:21fd24862e7f7c8a1feadea6bc376492b136b99fc381cf1b8927c9db80615431"
|
|
22
22
|
},
|
|
23
23
|
"claude": {
|
|
24
|
-
"digest": "sha256:
|
|
24
|
+
"digest": "sha256:bca8cc1311bb5a21aa7367ba5c71c3ef8269f29fcb82ec70df24e4c3f7ea50ac"
|
|
25
25
|
},
|
|
26
26
|
"codex": {
|
|
27
|
-
"digest": "sha256:
|
|
27
|
+
"digest": "sha256:acc5817fa9186891cdf9a17a5217fc89a98d7ac04620c363a715b312158bbcad"
|
|
28
28
|
},
|
|
29
29
|
"deep-interview": {
|
|
30
30
|
"digest": "sha256:e80d7e12e486397103108bb473e98e8e8656519770fa20701f8b3e9e66991939"
|
|
@@ -41,8 +41,11 @@
|
|
|
41
41
|
"fix": {
|
|
42
42
|
"digest": "sha256:647aa94890e06b38b08e6cc12cd219343e963b4d3b469c349610b3a33f559dd5"
|
|
43
43
|
},
|
|
44
|
+
"grok": {
|
|
45
|
+
"digest": "sha256:663b47c6abac5be939480e28a32029156f2b1ffa75bfe42c6b1edbbb52573a55"
|
|
46
|
+
},
|
|
44
47
|
"hooks-doctor": {
|
|
45
|
-
"digest": "sha256:
|
|
48
|
+
"digest": "sha256:d3e000980b9de7834233b98321c78000a37d38e303321186a0fc3268f6f51e69"
|
|
46
49
|
},
|
|
47
50
|
"investigate": {
|
|
48
51
|
"digest": "sha256:2051bccb2daf97ee91a8c15c7ef5bc7cc705d49beb4cbc7c8f6c63f4acda88a2"
|
|
@@ -84,10 +87,10 @@
|
|
|
84
87
|
"digest": "sha256:bed3684a850651534f315d355cdeae50d951c429817df0f105cccdb7f4e1561b"
|
|
85
88
|
},
|
|
86
89
|
"ultragoal": {
|
|
87
|
-
"digest": "sha256:
|
|
90
|
+
"digest": "sha256:12bec22b2125593376f0899ad3bd7fac9e47362cc384fab15c2f43daa3a842f9"
|
|
88
91
|
},
|
|
89
92
|
"verify": {
|
|
90
|
-
"digest": "sha256:
|
|
93
|
+
"digest": "sha256:9d9faa184b310d46d5a266ebe46bbf0819df526035dc10a6c13475097e3a284b"
|
|
91
94
|
}
|
|
92
95
|
}
|
|
93
96
|
}
|
package/skills/claude/SKILL.md
CHANGED
|
@@ -57,7 +57,13 @@ Claude's managed native subagent lifecycle does not provide a reliable parent-li
|
|
|
57
57
|
|
|
58
58
|
Use single-file / single-question first for any non-trivial diff. Do not send a whole PR unless it already fits within the bounded payload below.
|
|
59
59
|
|
|
60
|
-
**Model policy:**
|
|
60
|
+
**Model policy:** leave `CLAUDE_REVIEW_MODEL` unset unless the user requested a
|
|
61
|
+
specific Claude model (for example `fable` for a lighter advisory pass). When it
|
|
62
|
+
is unset, `wp review run` lets the Claude CLI choose its own default by omitting
|
|
63
|
+
`--model`. The blueprint promotion/completion approval gate
|
|
64
|
+
(`catalog/agent/rules/pre-implementation.md`) validates reviewer identity
|
|
65
|
+
(`claude`/`codex`/`grok`/an OpenCode-Go model), not the reviewed model string, so do not
|
|
66
|
+
claim the gate rejects a different Claude model.
|
|
61
67
|
|
|
62
68
|
#### Bounded prompt payload
|
|
63
69
|
|
|
@@ -100,7 +106,11 @@ advisory. Only `wp review gate` may publish a bounded, target-bound artifact and
|
|
|
100
106
|
ledger event for blueprint promotion or completion.
|
|
101
107
|
|
|
102
108
|
```bash
|
|
103
|
-
CLAUDE_REVIEW_MODEL=${CLAUDE_REVIEW_MODEL:-
|
|
109
|
+
CLAUDE_REVIEW_MODEL=${CLAUDE_REVIEW_MODEL:-}
|
|
110
|
+
CLAUDE_MODEL_ARGS=()
|
|
111
|
+
if [ -n "$CLAUDE_REVIEW_MODEL" ]; then
|
|
112
|
+
CLAUDE_MODEL_ARGS=(--model "$CLAUDE_REVIEW_MODEL")
|
|
113
|
+
fi
|
|
104
114
|
CLAUDE_REVIEW_EFFORT=${CLAUDE_REVIEW_EFFORT:-medium}
|
|
105
115
|
CLAUDE_REVIEW_PROBE_IDLE_SECONDS=${CLAUDE_REVIEW_PROBE_IDLE_SECONDS:-180}
|
|
106
116
|
CLAUDE_REVIEW_IDLE_SECONDS=${CLAUDE_REVIEW_IDLE_SECONDS:-180}
|
|
@@ -113,7 +123,7 @@ CLAUDE_REVIEW_CODE=0
|
|
|
113
123
|
if wp review run \
|
|
114
124
|
--provider claude \
|
|
115
125
|
--prompt-file "$PROBE_FILE" \
|
|
116
|
-
|
|
126
|
+
"${CLAUDE_MODEL_ARGS[@]}" \
|
|
117
127
|
--effort "$CLAUDE_REVIEW_EFFORT" \
|
|
118
128
|
--stage probe \
|
|
119
129
|
--expected-marker CLAUDE_OK \
|
|
@@ -122,7 +132,7 @@ if wp review run \
|
|
|
122
132
|
wp review run \
|
|
123
133
|
--provider claude \
|
|
124
134
|
--prompt-file "$PROMPT_FILE" \
|
|
125
|
-
|
|
135
|
+
"${CLAUDE_MODEL_ARGS[@]}" \
|
|
126
136
|
--effort "$CLAUDE_REVIEW_EFFORT" \
|
|
127
137
|
--stage review \
|
|
128
138
|
--artifact-root "$CLAUDE_REVIEW_ARTIFACT_ROOT" \
|
package/skills/codex/SKILL.md
CHANGED
|
@@ -53,12 +53,13 @@ Codex native subagent events are not currently parent-linked in the managed life
|
|
|
53
53
|
## Options
|
|
54
54
|
|
|
55
55
|
Every mode runs through the `wp review run` runtime and honors these environment
|
|
56
|
-
overrides
|
|
56
|
+
overrides. Set them inline, e.g.
|
|
57
57
|
`CODEX_REVIEW_MODEL=gpt-5.6-sol CODEX_REVIEW_EFFORT=high /codex`.
|
|
58
58
|
|
|
59
59
|
- `CODEX_REVIEW_MODEL` — the Codex model. Defaults to the `model = "..."` in the
|
|
60
|
-
active Codex config (`${CODEX_HOME:-~/.codex}/config.toml`)
|
|
61
|
-
|
|
60
|
+
active Codex config (`${CODEX_HOME:-~/.codex}/config.toml`); if neither the
|
|
61
|
+
environment nor config names a model, `wp review run` lets the Codex CLI choose
|
|
62
|
+
its own default. It MUST be a model the current login is provisioned for: ChatGPT-account
|
|
62
63
|
logins use the config's codenamed ids (e.g. `gpt-5.6-sol`) and reject a bare
|
|
63
64
|
`gpt-5.6`. When the user names a model ("review with 5.6-sol"), pass it here.
|
|
64
65
|
- `CODEX_REVIEW_EFFORT` — reasoning effort, default `medium`. The probe and
|
|
@@ -84,7 +85,11 @@ or completion.
|
|
|
84
85
|
```bash
|
|
85
86
|
# CODEX_REVIEW_MODEL / CODEX_REVIEW_EFFORT are overridable — see ## Options for
|
|
86
87
|
# the full option list, valid values, and how to pick a login-supported model.
|
|
87
|
-
CODEX_REVIEW_MODEL=${CODEX_REVIEW_MODEL:-
|
|
88
|
+
CODEX_REVIEW_MODEL=${CODEX_REVIEW_MODEL:-}
|
|
89
|
+
CODEX_MODEL_ARGS=()
|
|
90
|
+
if [ -n "$CODEX_REVIEW_MODEL" ]; then
|
|
91
|
+
CODEX_MODEL_ARGS=(--model "$CODEX_REVIEW_MODEL")
|
|
92
|
+
fi
|
|
88
93
|
CODEX_REVIEW_EFFORT=${CODEX_REVIEW_EFFORT:-medium}
|
|
89
94
|
case "$CODEX_REVIEW_EFFORT" in
|
|
90
95
|
medium|high) ;;
|
|
@@ -101,7 +106,7 @@ CODEX_REVIEW_CODE=0
|
|
|
101
106
|
if wp review run \
|
|
102
107
|
--provider codex \
|
|
103
108
|
--prompt-file "$PROBE_FILE" \
|
|
104
|
-
|
|
109
|
+
"${CODEX_MODEL_ARGS[@]}" \
|
|
105
110
|
--effort "$CODEX_REVIEW_EFFORT" \
|
|
106
111
|
--stage probe \
|
|
107
112
|
--expected-marker CODEX_OK \
|
|
@@ -110,7 +115,7 @@ if wp review run \
|
|
|
110
115
|
wp review run \
|
|
111
116
|
--provider codex \
|
|
112
117
|
--prompt-file "$PROMPT_FILE" \
|
|
113
|
-
|
|
118
|
+
"${CODEX_MODEL_ARGS[@]}" \
|
|
114
119
|
--effort "$CODEX_REVIEW_EFFORT" \
|
|
115
120
|
--stage review \
|
|
116
121
|
--artifact-root "$CODEX_REVIEW_ARTIFACT_ROOT" \
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: grok
|
|
3
|
+
description: "Grok Build outside-voice review/consult for non-Grok hosts."
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Grok outside voice
|
|
8
|
+
|
|
9
|
+
Use when a non-Grok host needs Grok Build to review a diff, challenge a plan, or answer a focused repo question. Keep it read-only by default. A provenance-backed Grok approval is first-class and satisfies the blueprint strong-reviewer gate alone, with the same rejection authority as Claude or Codex.
|
|
10
|
+
|
|
11
|
+
## Auth / binary
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
if ! command -v grok >/dev/null 2>&1; then
|
|
15
|
+
echo "GROK_AUTH=missing: install Grok Build CLI (grok) and authenticate"
|
|
16
|
+
exit 1
|
|
17
|
+
fi
|
|
18
|
+
echo "GROK_AUTH=cli-present"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Review via typed runtime
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
PROMPT_FILE=$(mktemp -t wp-grok-review.XXXXXX)
|
|
25
|
+
trap 'rm -f "$PROMPT_FILE"' EXIT
|
|
26
|
+
# write review prompt into PROMPT_FILE
|
|
27
|
+
|
|
28
|
+
GROK_REVIEW_MODEL=${GROK_REVIEW_MODEL:-}
|
|
29
|
+
GROK_MODEL_ARGS=()
|
|
30
|
+
if [ -n "$GROK_REVIEW_MODEL" ]; then
|
|
31
|
+
GROK_MODEL_ARGS=(--model "$GROK_REVIEW_MODEL")
|
|
32
|
+
fi
|
|
33
|
+
GROK_REVIEW_EFFORT=${GROK_REVIEW_EFFORT:-medium}
|
|
34
|
+
GROK_REVIEW_ARTIFACT_ROOT=${GROK_REVIEW_ARTIFACT_ROOT:-"$(pwd)/.webpresso/reviews"}
|
|
35
|
+
|
|
36
|
+
wp review run \
|
|
37
|
+
--provider grok \
|
|
38
|
+
--prompt-file "$PROMPT_FILE" \
|
|
39
|
+
"${GROK_MODEL_ARGS[@]}" \
|
|
40
|
+
--effort "$GROK_REVIEW_EFFORT" \
|
|
41
|
+
--stage review \
|
|
42
|
+
--artifact-root "$GROK_REVIEW_ARTIFACT_ROOT"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Treat output as external advice until independently verified. For lifecycle authority, run it through `wp review gate --provider grok` so the verdict is bound to the reviewed subject and recorded in the v2 ledger.
|
|
@@ -55,13 +55,13 @@ Each check prints `[x]` (pass) or `[ ]` (fail) with a detail line:
|
|
|
55
55
|
|
|
56
56
|
## Failure Remediation
|
|
57
57
|
|
|
58
|
-
| Check | Likely Cause | Fix
|
|
59
|
-
| ------------------------------------------------ | -------------------------------------------------------------- |
|
|
60
|
-
| `pretool-guard` / `post-tool` / etc. — not found | `
|
|
61
|
-
| `pretool-guard` / etc. — not executable | `chmod +x` not persisted | Re-run `
|
|
62
|
-
| `plugin.json integrity` — missing | Claude adapter manifest absent from `@webpresso/claude-plugin` | Re-run `wp setup --host claude` or reinstall the Claude plugin
|
|
63
|
-
| `MCP server liveness` — timeout | MCP server cold-start too slow | Wait and retry, or run `wp hooks doctor --skip-mcp`
|
|
64
|
-
| Any check — not found at `dist/esm/...` | Build artifacts missing | Run `
|
|
58
|
+
| Check | Likely Cause | Fix |
|
|
59
|
+
| ------------------------------------------------ | -------------------------------------------------------------- | ----------------------------------------------------------------- |
|
|
60
|
+
| `pretool-guard` / `post-tool` / etc. — not found | `wp run build` not run after install | `wp run build` |
|
|
61
|
+
| `pretool-guard` / etc. — not executable | `chmod +x` not persisted | Re-run `wp run prepare` or `wp run build` which runs `chmod-bins` |
|
|
62
|
+
| `plugin.json integrity` — missing | Claude adapter manifest absent from `@webpresso/claude-plugin` | Re-run `wp setup --host claude` or reinstall the Claude plugin |
|
|
63
|
+
| `MCP server liveness` — timeout | MCP server cold-start too slow | Wait and retry, or run `wp hooks doctor --skip-mcp` |
|
|
64
|
+
| Any check — not found at `dist/esm/...` | Build artifacts missing | Run `wp run build` in the webpresso repo |
|
|
65
65
|
|
|
66
66
|
After fixing, re-run `wp hooks doctor` to confirm.
|
|
67
67
|
|
|
@@ -7,7 +7,7 @@ scope: repo
|
|
|
7
7
|
applies_to: [agents]
|
|
8
8
|
related: [autopilot, plan-refine, verify]
|
|
9
9
|
created: "2026-07-10"
|
|
10
|
-
last_reviewed: "2026-07-
|
|
10
|
+
last_reviewed: "2026-07-20"
|
|
11
11
|
name: ultragoal
|
|
12
12
|
description: "Run durable multi-blueprint ultragoals through evidence-gated handoffs."
|
|
13
13
|
argument-hint: "<new|status|handoff|run|cancel> [brief]"
|
|
@@ -19,9 +19,26 @@ Use `wp ultragoal` as the durable controller for work spanning one or more bluep
|
|
|
19
19
|
|
|
20
20
|
## Protocol
|
|
21
21
|
|
|
22
|
-
1. Create or resume the ultragoal in a managed blueprint owner worktree.
|
|
22
|
+
1. Create or resume the ultragoal in a managed blueprint owner worktree (never main as controller).
|
|
23
23
|
2. Read `wp ultragoal status`, execute only the current phase handoff, then call `wp ultragoal run` again.
|
|
24
24
|
3. Complete blueprint tasks only through `wp_blueprint_task_verify` with passing evidence.
|
|
25
25
|
4. Stop when the controller reports `complete`, `cancelled`, blocked guard exhaustion, or `WP_ULTRAGOAL_DISABLE=1`.
|
|
26
26
|
|
|
27
27
|
The blueprint engine owns task status and approval gates. The ultragoal controller must never self-approve, directly mark a task done, bypass review provenance, or mutate the primary checkout. Keep every loop bounded and never increase timeouts.
|
|
28
|
+
|
|
29
|
+
## Tooling-aligned evidence (QA / land)
|
|
30
|
+
|
|
31
|
+
- **QA phase** prefers **GitHub required checks** for the worktree PR (`gh pr view` + `gh pr checks --required`) when:
|
|
32
|
+
- PR is `OPEN` or `MERGED`
|
|
33
|
+
- required checks are green (same evaluator as land)
|
|
34
|
+
- PR head source snapshot matches the clean worktree HEAD snapshot
|
|
35
|
+
- If no PR-bound green CI is available, ultragoal falls back to local **`wp qa`** (`vp run qa`).
|
|
36
|
+
- Do **not** raise timeouts to paper over incomplete worktrees; open a PR early so CI can satisfy QA.
|
|
37
|
+
- Prefer `wp pr wait` / `gh run watch` while babysitting; do not invent multi-sleep poll loops.
|
|
38
|
+
- **Land** still requires a **MERGED** PR with green required checks bound to the projected source snapshot.
|
|
39
|
+
|
|
40
|
+
## Snapshot / dirty worktree
|
|
41
|
+
|
|
42
|
+
- Ultragoal ledger appends to blueprint `reviews.md` / `review-events.jsonl` / `review-artifacts/**`.
|
|
43
|
+
- These paths under both `blueprints/**` and monorepo `webpresso/blueprints/**` are **evidence-only dirt** and must not fail `createCleanSourceSnapshot`.
|
|
44
|
+
- Dirty **source** paths (including `_overview.md` task status edits) still fail closed until committed.
|
package/skills/verify/SKILL.md
CHANGED
|
@@ -176,12 +176,12 @@ Default policy:
|
|
|
176
176
|
|
|
177
177
|
Reviewer preference:
|
|
178
178
|
|
|
179
|
-
- When running from Codex, prefer **Claude** (fall back to one OpenCode Go reviewer if
|
|
180
|
-
- When running from Claude, prefer **Codex** (fall back to one OpenCode Go reviewer if
|
|
181
|
-
- When Codex/Claude outside voice is unavailable, use **one OpenCode Go
|
|
179
|
+
- When running from Codex, prefer **Claude or Grok** (fall back to one OpenCode Go reviewer if both are unavailable).
|
|
180
|
+
- When running from Claude, prefer **Codex or Grok** (fall back to one OpenCode Go reviewer if both are unavailable).
|
|
181
|
+
- When Codex/Claude/Grok outside voice is unavailable, use **one OpenCode Go
|
|
182
182
|
reviewer** if OpenCode is logged in.
|
|
183
183
|
- Prefer the repo's outside-voice skills instead of hand-rolled commands:
|
|
184
|
-
`$agent-kit:claude`, `$agent-kit:codex`, and one OpenCode Go reviewer
|
|
184
|
+
`$agent-kit:claude`, `$agent-kit:codex`, `$agent-kit:grok`, and one OpenCode Go reviewer
|
|
185
185
|
skills such as `$agent-kit:opencode-go`, `$agent-kit:qwen`,
|
|
186
186
|
`$agent-kit:deepseek`, `$agent-kit:glm`, `$agent-kit:kimi`,
|
|
187
187
|
`$agent-kit:minimax`, or `$agent-kit:mimo`.
|
package/README.md
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# @webpresso/opencode-plugin
|
|
2
|
-
|
|
3
|
-
`@webpresso/opencode-plugin` is the OpenCode host adapter package for Agent
|
|
4
|
-
Kit. It provides the native OpenCode npm plugin surface, registered through
|
|
5
|
-
`opencode.json`, with the package module exports and metadata OpenCode expects.
|
|
6
|
-
It also ships the same catalog-owned default `skills/` payload as the Claude
|
|
7
|
-
and Codex adapter packages for host/package parity.
|
|
8
|
-
|
|
9
|
-
The root `@webpresso/agent-kit` package is CLI/core only: it ships `wp`, MCP
|
|
10
|
-
tools, audits, blueprints, session memory, docs, and catalog sources, but it
|
|
11
|
-
does not ship this OpenCode payload from the root package. OpenCode delivery is
|
|
12
|
-
native npm plugin registration only; there is no generated bridge, MCP bridge,
|
|
13
|
-
or MCP injection payload in this package, and no `.opencode/skills` fallback is
|
|
14
|
-
projected.
|