@webpresso/opencode-plugin 3.1.11 → 3.1.13
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/README.md +4 -1
- package/index.js +13 -1
- package/package.json +3 -1
- package/plugin-skill-ownership.json +84 -0
- package/skills/autopilot/SKILL.md +39 -0
- package/skills/autoresearch/SKILL.md +49 -0
- package/skills/best-practice-research/SKILL.md +89 -0
- package/skills/browse/SKILL.md +25 -0
- package/skills/claude/SKILL.md +154 -0
- package/skills/codex/SKILL.md +79 -0
- package/skills/deep-research/SKILL.md +258 -0
- package/skills/design-review/SKILL.md +26 -0
- package/skills/devex-review/SKILL.md +28 -0
- package/skills/fix/SKILL.md +129 -0
- package/skills/goal/SKILL.md +27 -0
- package/skills/hooks-doctor/SKILL.md +78 -0
- package/skills/lore-protocol/SKILL.md +84 -0
- package/skills/opencode-go/SKILL.md +106 -0
- package/skills/plan-ceo-review/SKILL.md +27 -0
- package/skills/plan-design-review/SKILL.md +27 -0
- package/skills/plan-devex-review/SKILL.md +19 -0
- package/skills/plan-eng-review/SKILL.md +24 -0
- package/skills/plan-refine/SKILL.md +49 -0
- package/skills/plan-refine/references/full-methodology.md +645 -0
- package/skills/ralplan/SKILL.md +50 -0
- package/skills/team/SKILL.md +60 -0
- package/skills/tech-debt/SKILL.md +79 -0
- package/skills/testing-philosophy/SKILL.md +53 -0
- package/skills/testing-philosophy/references/full-testing-philosophy.md +523 -0
- package/skills/tph/SKILL.md +35 -0
- package/skills/verify/SKILL.md +209 -0
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: skill
|
|
3
|
+
slug: deep-research
|
|
4
|
+
title: Deep Research
|
|
5
|
+
status: active
|
|
6
|
+
scope: repo
|
|
7
|
+
applies_to: [agents]
|
|
8
|
+
related: []
|
|
9
|
+
created: "2026-05-07"
|
|
10
|
+
last_reviewed: "2026-05-07"
|
|
11
|
+
name: deep-research
|
|
12
|
+
description: "Deep web research with dated credible sources, pro/con synthesis, and project-alignment notes."
|
|
13
|
+
argument-hint: "<subject or question to research>"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
<Purpose>
|
|
17
|
+
Deep Research is a multi-phase web research workflow that produces a balanced, citation-backed analysis of a subject. It collects both positive and negative sentiments from credible sources, evaluates alignment with the project's vision and tech stack, identifies 2026 state-of-the-art best practices, and logs the result to `docs/research/` with a date-prefixed filename.
|
|
18
|
+
</Purpose>
|
|
19
|
+
|
|
20
|
+
<Use_When>
|
|
21
|
+
|
|
22
|
+
- Evaluating a technology, library, pattern, or product direction
|
|
23
|
+
- Comparing alternatives before making an architectural or product decision
|
|
24
|
+
- The user says "research", "deep research", "investigate", or "what does the community think about"
|
|
25
|
+
- You need a balanced view of trade-offs before recommending something
|
|
26
|
+
</Use_When>
|
|
27
|
+
|
|
28
|
+
<Do_Not_Use_When>
|
|
29
|
+
|
|
30
|
+
- The user wants a quick factual lookup (use WebSearch directly)
|
|
31
|
+
- The user wants codebase exploration (use explore)
|
|
32
|
+
- The user wants a requirements interview (use deep-interview)
|
|
33
|
+
- The answer is already well-established and non-controversial
|
|
34
|
+
</Do_Not_Use_When>
|
|
35
|
+
|
|
36
|
+
<Output_Contract>
|
|
37
|
+
A single markdown file written to:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
docs/research/{YYYY-MM-DD}-{slug}.md
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Where `{YYYY-MM-DD}` is today's date and `{slug}` is a kebab-case summary of the subject.
|
|
44
|
+
|
|
45
|
+
The file MUST have this frontmatter and structure (see Phase 5 for full template).
|
|
46
|
+
</Output_Contract>
|
|
47
|
+
|
|
48
|
+
<Steps>
|
|
49
|
+
|
|
50
|
+
## Phase 0: Scope and Context Load
|
|
51
|
+
|
|
52
|
+
1. Parse `{{ARGUMENTS}}` into a research subject and any qualifiers (e.g., "for our use case", "vs X").
|
|
53
|
+
2. Derive a short kebab-case slug for the filename.
|
|
54
|
+
3. Read `docs/research/product/VISION.md` (or the project's equivalent — check `docs/` for a vision doc) to load the current vision context. Skip if not present.
|
|
55
|
+
4. Identify the relevant tech stack context by reading project config files (e.g., `package.json` workspaces, `tsconfig.json`, key dependencies) — keep this lightweight, just enough to judge alignment.
|
|
56
|
+
5. Announce the research plan to the user:
|
|
57
|
+
- Subject
|
|
58
|
+
- Key questions to investigate
|
|
59
|
+
- Output path
|
|
60
|
+
|
|
61
|
+
## Phase 1: Broad Discovery (parallel)
|
|
62
|
+
|
|
63
|
+
Run **5-8 parallel WebSearch queries** covering different angles:
|
|
64
|
+
|
|
65
|
+
1. **Overview**: `"{subject} 2026 overview best practices"`
|
|
66
|
+
2. **Positive sentiment**: `"{subject} benefits advantages why use 2026"`
|
|
67
|
+
3. **Negative sentiment / criticism**: `"{subject} problems criticism drawbacks 2026"`
|
|
68
|
+
4. **Community opinion**: `"{subject} reddit hacker news experience production 2026"`
|
|
69
|
+
5. **Comparison / alternatives**: `"{subject} vs alternatives comparison 2026"`
|
|
70
|
+
6. **State of the art**: `"{subject} state of the art latest 2026"`
|
|
71
|
+
7. **(If applicable)** Stack-specific: `"{subject} TypeScript Cloudflare Workers React 2026"`
|
|
72
|
+
8. **(If applicable)** Domain-specific query based on the project's problem space
|
|
73
|
+
|
|
74
|
+
For each search, record:
|
|
75
|
+
|
|
76
|
+
- Source URL
|
|
77
|
+
- Source type (docs, blog, forum, official, academic)
|
|
78
|
+
- Key claims or data points
|
|
79
|
+
- Sentiment direction (positive / negative / neutral)
|
|
80
|
+
|
|
81
|
+
## Phase 2: Deep Dive (sequential, selective)
|
|
82
|
+
|
|
83
|
+
From Phase 1 results, identify the **5-10 most credible and information-dense sources**.
|
|
84
|
+
|
|
85
|
+
Use `WebFetch` on each to extract deeper detail. Prioritize:
|
|
86
|
+
|
|
87
|
+
- Official documentation or announcements
|
|
88
|
+
- Production experience reports (postmortems, migration stories)
|
|
89
|
+
- Benchmark data or technical comparisons
|
|
90
|
+
- Strong critical takes with specific evidence
|
|
91
|
+
|
|
92
|
+
For each fetched source, extract:
|
|
93
|
+
|
|
94
|
+
- Specific claims with evidence
|
|
95
|
+
- Sentiment and strength (strong positive, mild positive, neutral, mild negative, strong negative)
|
|
96
|
+
- Credibility assessment (official docs > production experience > blog opinion > forum anecdote)
|
|
97
|
+
|
|
98
|
+
## Phase 3: Triangulate and Score
|
|
99
|
+
|
|
100
|
+
1. **Cluster findings** into themes (e.g., "developer experience", "performance", "ecosystem maturity", "production readiness").
|
|
101
|
+
2. **Cross-reference claims**: if only one source makes a claim, flag it as unverified. Claims supported by 2+ independent sources get higher weight.
|
|
102
|
+
3. **Score source credibility** using:
|
|
103
|
+
- Official docs / specs: high
|
|
104
|
+
- Production postmortems with data: high
|
|
105
|
+
- Respected engineering blogs: medium-high
|
|
106
|
+
- Community forums (HN, Reddit) with detail: medium
|
|
107
|
+
- Marketing material / vendor blogs: low (note bias)
|
|
108
|
+
- Undated or anonymous content: very low
|
|
109
|
+
4. **Identify gaps**: what questions remain unanswered? If critical gaps exist, run 1-2 additional targeted searches.
|
|
110
|
+
|
|
111
|
+
## Phase 4: Vision and Stack Alignment Analysis
|
|
112
|
+
|
|
113
|
+
Using the project's vision from Phase 0 and the research findings:
|
|
114
|
+
|
|
115
|
+
1. **Vision alignment**: How does this subject relate to the project's stated mission? Does it help or hinder current priorities?
|
|
116
|
+
2. **Tech stack fit**: How well does this integrate with the existing stack (read `package.json`, key deps, framework choices)? What's the integration cost?
|
|
117
|
+
3. **Trade-off assessment**: Given the project's current stage, what are the most relevant trade-offs?
|
|
118
|
+
4. **Recommendation**: Based on the evidence, what's the suggested path? Be explicit about confidence level.
|
|
119
|
+
|
|
120
|
+
## Phase 5: Write Report
|
|
121
|
+
|
|
122
|
+
Write the report to `docs/research/{YYYY-MM-DD}-{slug}.md` using this template:
|
|
123
|
+
|
|
124
|
+
```markdown
|
|
125
|
+
---
|
|
126
|
+
type: research
|
|
127
|
+
title: "{Title}"
|
|
128
|
+
subject: "{subject}"
|
|
129
|
+
date: { YYYY-MM-DD }
|
|
130
|
+
confidence: { high|medium|low }
|
|
131
|
+
verdict: { adopt|trial|assess|hold|reject }
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
# {Title}
|
|
135
|
+
|
|
136
|
+
> One-line summary of the finding.
|
|
137
|
+
|
|
138
|
+
## TL;DR
|
|
139
|
+
|
|
140
|
+
3-5 bullet executive summary covering: what it is, key finding, recommendation.
|
|
141
|
+
|
|
142
|
+
## What This Is
|
|
143
|
+
|
|
144
|
+
Brief neutral description of the subject being researched.
|
|
145
|
+
|
|
146
|
+
## State of the Art (2026)
|
|
147
|
+
|
|
148
|
+
Current best practices, latest developments, where the ecosystem stands today.
|
|
149
|
+
Cite sources inline as [Source Name](url).
|
|
150
|
+
|
|
151
|
+
## Positive Signals
|
|
152
|
+
|
|
153
|
+
Evidence-backed reasons in favor. Group by theme.
|
|
154
|
+
Each point should cite its source and note credibility level.
|
|
155
|
+
|
|
156
|
+
### {Theme 1}
|
|
157
|
+
|
|
158
|
+
- ...
|
|
159
|
+
|
|
160
|
+
### {Theme 2}
|
|
161
|
+
|
|
162
|
+
- ...
|
|
163
|
+
|
|
164
|
+
## Negative Signals
|
|
165
|
+
|
|
166
|
+
Evidence-backed criticism and risks. Group by theme.
|
|
167
|
+
Each point should cite its source and note credibility level.
|
|
168
|
+
|
|
169
|
+
### {Theme 1}
|
|
170
|
+
|
|
171
|
+
- ...
|
|
172
|
+
|
|
173
|
+
### {Theme 2}
|
|
174
|
+
|
|
175
|
+
- ...
|
|
176
|
+
|
|
177
|
+
## Community Sentiment
|
|
178
|
+
|
|
179
|
+
What practitioners actually say. Include direct quotes where available.
|
|
180
|
+
Note the balance: if sentiment skews one way, say so explicitly.
|
|
181
|
+
|
|
182
|
+
## Project Alignment
|
|
183
|
+
|
|
184
|
+
### Vision Fit
|
|
185
|
+
|
|
186
|
+
How this relates to the project's current goals.
|
|
187
|
+
|
|
188
|
+
### Tech Stack Fit
|
|
189
|
+
|
|
190
|
+
Integration with the project's stack (from `package.json`, framework configs).
|
|
191
|
+
|
|
192
|
+
### Trade-offs for Current Stage
|
|
193
|
+
|
|
194
|
+
What matters most given where the project is now.
|
|
195
|
+
|
|
196
|
+
## Recommendation
|
|
197
|
+
|
|
198
|
+
Clear recommendation with confidence level and reasoning.
|
|
199
|
+
Include conditions under which the recommendation would change.
|
|
200
|
+
|
|
201
|
+
## Sources
|
|
202
|
+
|
|
203
|
+
Numbered list of all sources used, with:
|
|
204
|
+
|
|
205
|
+
- [N] [Title](url) — type, credibility, sentiment direction
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Phase 6: Present Summary
|
|
209
|
+
|
|
210
|
+
After writing the file, present to the user:
|
|
211
|
+
|
|
212
|
+
1. The output file path
|
|
213
|
+
2. The verdict and confidence
|
|
214
|
+
3. A 3-line summary of the key finding
|
|
215
|
+
4. Any critical gaps or caveats
|
|
216
|
+
|
|
217
|
+
</Steps>
|
|
218
|
+
|
|
219
|
+
<Quality_Gates>
|
|
220
|
+
|
|
221
|
+
- Minimum 8 distinct sources cited
|
|
222
|
+
- At least 2 sources per major claim
|
|
223
|
+
- Both positive AND negative signals sections must be substantive (not token)
|
|
224
|
+
- Sources section must include credibility and sentiment annotations
|
|
225
|
+
- Vision alignment section must reference specific project goals (not generic)
|
|
226
|
+
- All inline citations must be clickable links
|
|
227
|
+
- Frontmatter must include confidence and verdict fields
|
|
228
|
+
</Quality_Gates>
|
|
229
|
+
|
|
230
|
+
<Verdict_Scale>
|
|
231
|
+
|
|
232
|
+
- **adopt**: Strong evidence, clear fit, community consensus positive. Use it.
|
|
233
|
+
- **trial**: Promising evidence, worth a bounded experiment. Try it in a limited scope.
|
|
234
|
+
- **assess**: Mixed signals or insufficient evidence. Research more before committing.
|
|
235
|
+
- **hold**: Significant concerns or poor fit. Don't invest now, revisit later.
|
|
236
|
+
- **reject**: Clear evidence against. Don't use this.
|
|
237
|
+
</Verdict_Scale>
|
|
238
|
+
|
|
239
|
+
<Tool_Usage>
|
|
240
|
+
|
|
241
|
+
- `WebSearch` for broad discovery (Phase 1) and gap-filling (Phase 3)
|
|
242
|
+
- `WebFetch` for deep source extraction (Phase 2)
|
|
243
|
+
- `Read` for loading vision and tech stack context (Phase 0)
|
|
244
|
+
- `Write` for the final report (Phase 5)
|
|
245
|
+
- `Agent` with `subagent_type=Explore` if codebase context is needed for alignment analysis
|
|
246
|
+
- Use parallel tool calls wherever searches are independent
|
|
247
|
+
</Tool_Usage>
|
|
248
|
+
|
|
249
|
+
<Common_Mistakes>
|
|
250
|
+
|
|
251
|
+
- Writing a report that's all positive or all negative — always find both sides
|
|
252
|
+
- Citing marketing material as if it were neutral evidence — flag vendor bias
|
|
253
|
+
- Making alignment claims without reading the actual vision doc
|
|
254
|
+
- Using stale search results — always include "2026" in queries
|
|
255
|
+
- Writing the report before triangulating — don't just concatenate search results
|
|
256
|
+
</Common_Mistakes>
|
|
257
|
+
|
|
258
|
+
Task: {{ARGUMENTS}}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-review
|
|
3
|
+
description: "Report-first visual/browser design audit for hierarchy, spacing, consistency, responsive, a11y, and interactions."
|
|
4
|
+
license: MIT
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Glob
|
|
8
|
+
- Grep
|
|
9
|
+
- Bash
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Design review
|
|
13
|
+
|
|
14
|
+
Use for live visual QA or design polish requests. For pre-implementation plan critique, use `/plan-design-review`.
|
|
15
|
+
|
|
16
|
+
## Default behavior
|
|
17
|
+
|
|
18
|
+
- The `allowed-tools` frontmatter is an audited disclosure for supported hosts;
|
|
19
|
+
pretool-guard remains the enforced mutation backstop when a host does not prove
|
|
20
|
+
skill-frontmatter enforcement.
|
|
21
|
+
- Report first; do not edit source unless the user explicitly asks for fixes.
|
|
22
|
+
- Inspect key viewports and states.
|
|
23
|
+
- Capture evidence with browser screenshots or precise observations.
|
|
24
|
+
- Rank findings by user impact and implementation effort.
|
|
25
|
+
|
|
26
|
+
If fixes are authorized, make small visual changes and verify before/after.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: devex-review
|
|
3
|
+
description: "Report-first developer-experience audit for onboarding, docs, examples, CLI help, and time-to-hello-world."
|
|
4
|
+
license: MIT
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Glob
|
|
8
|
+
- Grep
|
|
9
|
+
- Bash
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Live DX review
|
|
13
|
+
|
|
14
|
+
Use after or during developer-facing work to test the real user journey.
|
|
15
|
+
|
|
16
|
+
This is report-only by default. The `allowed-tools` frontmatter is an audited
|
|
17
|
+
disclosure for supported hosts; pretool-guard remains the enforced mutation
|
|
18
|
+
backstop when a host does not prove skill-frontmatter enforcement.
|
|
19
|
+
|
|
20
|
+
## Evidence to gather
|
|
21
|
+
|
|
22
|
+
- Docs route or README entrypoint.
|
|
23
|
+
- Install/setup command path.
|
|
24
|
+
- CLI help and error messages.
|
|
25
|
+
- Time-to-hello-world estimate.
|
|
26
|
+
- Browser evidence for docs or local app flows when relevant.
|
|
27
|
+
|
|
28
|
+
Return a scorecard with blockers, papercuts, screenshots/artifacts when available, and concrete next fixes.
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: skill
|
|
3
|
+
slug: fix
|
|
4
|
+
title: Fix
|
|
5
|
+
status: active
|
|
6
|
+
scope: repo
|
|
7
|
+
applies_to: [agents]
|
|
8
|
+
related: [verify, testing-philosophy]
|
|
9
|
+
created: "2026-05-13"
|
|
10
|
+
last_reviewed: "2026-05-22"
|
|
11
|
+
name: fix
|
|
12
|
+
description: "Root-cause fix workflow for bugs, failures, regressions, and errors; reproduce, repair owner, test, verify."
|
|
13
|
+
argument-hint: '<target> where target is: file|symptom|error|test|"free-text description"'
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Fix Command
|
|
17
|
+
|
|
18
|
+
Fix the issue at its root, future-proof, aligned with repo philosophy.
|
|
19
|
+
|
|
20
|
+
**Arguments**: $ARGUMENTS
|
|
21
|
+
|
|
22
|
+
This command turns "please fix it well" into an enforceable workflow: reproduce, identify the broken invariant, repair it at the owner, prove the repair, and escalate to `/verify` when the blast radius is broader than a local fix.
|
|
23
|
+
|
|
24
|
+
## Merged debugging discipline
|
|
25
|
+
|
|
26
|
+
`/investigate` and `systematic-debugging` are folded into this workflow. Keep the
|
|
27
|
+
old iron law: no fixes before evidence. Reproduce or capture the failure, read
|
|
28
|
+
the complete error/stack, trace the bad value or broken invariant to its owner,
|
|
29
|
+
compare with a working local pattern, and disconfirm cheap hypotheses before
|
|
30
|
+
editing. If the issue crosses component boundaries, add temporary diagnostics at
|
|
31
|
+
each boundary, run once, then remove or convert them to durable tests.
|
|
32
|
+
|
|
33
|
+
## Non-negotiable invariants
|
|
34
|
+
|
|
35
|
+
1. **Root cause, not symptom.** Trace the failure to the invariant that actually broke. Do not patch callers when the owner is fixable.
|
|
36
|
+
2. **Loud failures, no silent fallbacks.** No default shims, sentinel returns, or catch-and-continue behavior that hides missing config, bad state, or broken boundaries.
|
|
37
|
+
3. **Use the repo's real execution surface.** Prefer repo-owned wrappers and injected routing guidance over host-specific tool assumptions. If the repo exposes quality wrappers, use them. Use bounded inspection paths for large-output investigation.
|
|
38
|
+
4. **Regression proof is mandatory.** Add or strengthen a test or other reliable proof that would fail against the old behavior.
|
|
39
|
+
5. **Raising timeouts is not a fix.** If a timeout fires, investigate the bottleneck. Only raise a bound when the repo already documents that workload and you can cite measurement.
|
|
40
|
+
6. **Zero suppressions, zero papering over.** No lint disables, ts-ignore, compat aliases, or "temporary" branches to sneak the fix through.
|
|
41
|
+
7. **Minimal correct diff.** Update every consumer of a changed contract in the same change, but do not bundle unrelated cleanup.
|
|
42
|
+
|
|
43
|
+
## Protocol
|
|
44
|
+
|
|
45
|
+
### Step 1 — Reproduce and name the broken invariant
|
|
46
|
+
|
|
47
|
+
- Run the exact command, test, or user flow that surfaces the failure.
|
|
48
|
+
- Capture the evidence that matters: error text, file:line, exit code, failing assertion, or log path.
|
|
49
|
+
- Read enough surrounding code to say the broken invariant in one sentence.
|
|
50
|
+
- If the issue is nondeterministic, gather evidence until you can describe the slow/flaky/failing case without guessing.
|
|
51
|
+
|
|
52
|
+
If the "issue" is actually several unrelated failures, stop and ask which one to fix first.
|
|
53
|
+
|
|
54
|
+
### Step 2 — Decide where the fix belongs
|
|
55
|
+
|
|
56
|
+
State briefly:
|
|
57
|
+
|
|
58
|
+
- the broken invariant
|
|
59
|
+
- the owner that should enforce it
|
|
60
|
+
- whether the fix changes a public contract
|
|
61
|
+
- which direct consumers must change in the same diff
|
|
62
|
+
|
|
63
|
+
If the blast radius is broader than the owner + direct consumers, keep going with `/fix` only if the change is still one coherent repair. If the work becomes a broader hardening pass, plan a `/verify` handoff before claiming done.
|
|
64
|
+
|
|
65
|
+
### Step 3 — Write failing proof first when feasible
|
|
66
|
+
|
|
67
|
+
- For a reproducible bug, write or strengthen the smallest regression test that fails on the old behavior.
|
|
68
|
+
- Verify that it fails for the right reason before changing production code.
|
|
69
|
+
- If test-first is genuinely infeasible at that boundary, record why and create the nearest reliable proof instead (for example a deterministic integration reproduction, fixture, or logged command).
|
|
70
|
+
|
|
71
|
+
Do not keep production code written before the test as "reference". If you wrote code first, throw it away and restart from the failing proof.
|
|
72
|
+
|
|
73
|
+
### Step 4 — Implement the minimal correct fix
|
|
74
|
+
|
|
75
|
+
- Edit the file or module that owns the invariant.
|
|
76
|
+
- Update every changed consumer in the same diff. No half-migrations.
|
|
77
|
+
- Delete compat shims, dead aliases, and TODO branches made obsolete by the repair.
|
|
78
|
+
- Keep complexity down by extracting helpers instead of nesting conditionals.
|
|
79
|
+
|
|
80
|
+
### Step 5 — Run scoped verification
|
|
81
|
+
|
|
82
|
+
Run the narrowest checks that prove the repaired behavior on the real repo surface:
|
|
83
|
+
|
|
84
|
+
- targeted test(s) for the repaired path
|
|
85
|
+
- targeted lint/typecheck/build checks for changed files or packages
|
|
86
|
+
- any boundary-specific verification the repo requires for the touched surface
|
|
87
|
+
|
|
88
|
+
Rules:
|
|
89
|
+
|
|
90
|
+
- Prefer repo-owned wrappers or routed quality tools over raw host-specific commands.
|
|
91
|
+
- Reuse fresh logs if the repo auto-saves them; do not re-run long commands just to re-read output.
|
|
92
|
+
- Read the exit code and summary before making a claim.
|
|
93
|
+
|
|
94
|
+
Escalate to `/verify <target>` when any of these are true:
|
|
95
|
+
|
|
96
|
+
- the fix crosses packages
|
|
97
|
+
- the fix changes a public or shared contract
|
|
98
|
+
- the fix touched docs, plans, blueprints, or repo SSOT
|
|
99
|
+
- the fix needs dead-code / compat / broad regression review before claiming done
|
|
100
|
+
|
|
101
|
+
### Step 6 — Report with evidence
|
|
102
|
+
|
|
103
|
+
Keep it short:
|
|
104
|
+
|
|
105
|
+
- what invariant broke
|
|
106
|
+
- how the change restores it
|
|
107
|
+
- what proof ran (tests, commands, log paths, exit codes)
|
|
108
|
+
- adjacent issues noticed but intentionally not fixed
|
|
109
|
+
|
|
110
|
+
## Done looks like
|
|
111
|
+
|
|
112
|
+
- [ ] Root cause named in one sentence
|
|
113
|
+
- [ ] Fix applied at the owning boundary
|
|
114
|
+
- [ ] Regression proof fails against the old behavior
|
|
115
|
+
- [ ] Minimal code change restores the invariant
|
|
116
|
+
- [ ] Scoped verification passed on the changed surface
|
|
117
|
+
- [ ] `/verify` handoff used when blast radius exceeded a local fix
|
|
118
|
+
- [ ] Report cites evidence, not intent
|
|
119
|
+
|
|
120
|
+
## Anti-patterns this command refuses
|
|
121
|
+
|
|
122
|
+
- Fixing the nearest symptom while leaving the real invariant broken
|
|
123
|
+
- Catching an error and returning a sentinel to "keep things moving"
|
|
124
|
+
- Raising a timeout, retry count, or polling interval instead of finding the bottleneck
|
|
125
|
+
- Adding a deprecated alias instead of updating consumers
|
|
126
|
+
- Introducing `any`, suppressions, or lint disables to unblock the fix
|
|
127
|
+
- Bundling unrelated refactors with the repair
|
|
128
|
+
- Claiming done from intuition, partial output, or another agent's success message
|
|
129
|
+
- Writing a planning/doc artifact when the user asked for a fix
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: skill
|
|
3
|
+
slug: goal
|
|
4
|
+
title: Goal
|
|
5
|
+
status: active
|
|
6
|
+
scope: repo
|
|
7
|
+
applies_to: [agents]
|
|
8
|
+
related: [autopilot, plan-refine, verify]
|
|
9
|
+
created: "2026-07-10"
|
|
10
|
+
last_reviewed: "2026-07-10"
|
|
11
|
+
name: goal
|
|
12
|
+
description: "Run durable multi-blueprint goals through evidence-gated handoffs."
|
|
13
|
+
argument-hint: "<new|status|handoff|run|cancel> [brief]"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Goal
|
|
17
|
+
|
|
18
|
+
Use `wp goal` as the durable controller for work spanning one or more blueprints.
|
|
19
|
+
|
|
20
|
+
## Protocol
|
|
21
|
+
|
|
22
|
+
1. Create or resume the goal in a managed blueprint owner worktree.
|
|
23
|
+
2. Read `wp goal status`, execute only the current phase handoff, then call `wp goal run` again.
|
|
24
|
+
3. Complete blueprint tasks only through `wp_blueprint_task_verify` with passing evidence.
|
|
25
|
+
4. Stop when the controller reports `complete`, `cancelled`, blocked guard exhaustion, or `WP_GOAL_DISABLE=1`.
|
|
26
|
+
|
|
27
|
+
The blueprint engine owns task status and approval gates. The goal 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.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: skill
|
|
3
|
+
slug: hooks-doctor
|
|
4
|
+
title: Hooks Doctor
|
|
5
|
+
status: active
|
|
6
|
+
scope: repo
|
|
7
|
+
applies_to: [agents]
|
|
8
|
+
related: []
|
|
9
|
+
created: "2026-05-07"
|
|
10
|
+
last_reviewed: "2026-05-07"
|
|
11
|
+
name: hooks-doctor
|
|
12
|
+
description: "Webpresso hook/plugin doctor: verify install health and debug broken hooks or plugin integration."
|
|
13
|
+
argument-hint: "[--skip-mcp]"
|
|
14
|
+
allowed-tools:
|
|
15
|
+
- Bash
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Hooks Doctor
|
|
19
|
+
|
|
20
|
+
Verify the webpresso plugin hooks installation is healthy. Run this first when:
|
|
21
|
+
|
|
22
|
+
- A hook seems not to be firing
|
|
23
|
+
- The plugin was just installed or updated
|
|
24
|
+
- Claude Code can't find expected tools
|
|
25
|
+
- Any plugin integration issue arises
|
|
26
|
+
|
|
27
|
+
## Running the Check
|
|
28
|
+
|
|
29
|
+
Run the doctor command directly:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
wp hooks doctor
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Or skip the MCP server check (for CI environments):
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
wp hooks doctor --skip-mcp
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Interpreting Results
|
|
42
|
+
|
|
43
|
+
Each check prints `[x]` (pass) or `[ ]` (fail) with a detail line:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
[x] pretool-guard
|
|
47
|
+
[x] post-tool (lint-after-edit)
|
|
48
|
+
[x] stop (qa-changed-files)
|
|
49
|
+
[x] guard-switch
|
|
50
|
+
[x] sessionstart
|
|
51
|
+
[x] test-quality-check
|
|
52
|
+
[x] plugin.json integrity
|
|
53
|
+
[x] MCP server liveness: MCP server already running (sentinel found)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Failure Remediation
|
|
57
|
+
|
|
58
|
+
| Check | Likely Cause | Fix |
|
|
59
|
+
| ------------------------------------------------ | -------------------------------------------------------------- | -------------------------------------------------------------- |
|
|
60
|
+
| `pretool-guard` / `post-tool` / etc. — not found | `pnpm build` not run after install | `pnpm build` |
|
|
61
|
+
| `pretool-guard` / etc. — not executable | `chmod +x` not persisted | Re-run `pnpm prepare` or `pnpm 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 `pnpm build` in the webpresso repo |
|
|
65
|
+
|
|
66
|
+
After fixing, re-run `wp hooks doctor` to confirm.
|
|
67
|
+
|
|
68
|
+
## How It Works
|
|
69
|
+
|
|
70
|
+
The doctor runs five categories of checks:
|
|
71
|
+
|
|
72
|
+
1. **Bin existence** — each hook binary exists at the expected `dist/esm/hooks/...` path
|
|
73
|
+
2. **Executable bit** — bins have execute permission (skipped on Windows)
|
|
74
|
+
3. **stdin response** — interactive hooks (`pretool-guard`, `guard-switch`, `sessionstart`) respond to `{}` input with valid JSON and exit 0; fire-and-forget hooks (`lint-after-edit`, `qa-changed-files`) exit 0
|
|
75
|
+
4. **plugin.json integrity** — adapter manifest exists, has required fields, and all referenced bins exist on disk
|
|
76
|
+
5. **MCP server liveness** — spawns the MCP server and sends a `tools/list` JSON-RPC request; times out at 5s (soft-fail — warning only, does not fail the overall check)
|
|
77
|
+
|
|
78
|
+
If `isMcpReady()` detects a live MCP sentinel, the MCP check fast-passes without spawning.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: skill
|
|
3
|
+
slug: lore-protocol
|
|
4
|
+
title: lore-protocol
|
|
5
|
+
status: active
|
|
6
|
+
scope: repo
|
|
7
|
+
applies_to: [agents]
|
|
8
|
+
related: []
|
|
9
|
+
created: "2026-05-07"
|
|
10
|
+
last_reviewed: "2026-05-07"
|
|
11
|
+
name: lore-protocol
|
|
12
|
+
description: "Manual Lore commit-message trailers with wp audit commit-message; no hook enforcement because PRs squash."
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# lore-protocol
|
|
16
|
+
|
|
17
|
+
Use Lore commit-message trailers manually with `wp audit commit-message`. Hook enforcement is intentionally not installed because this repo uses squash commits.
|
|
18
|
+
|
|
19
|
+
Lore is a lightweight protocol for embedding decision context directly into
|
|
20
|
+
commit messages — constraints, rejected alternatives, confidence, and
|
|
21
|
+
forward-looking directives — so future engineers understand _why_ a change
|
|
22
|
+
was made, not just _what_ changed.
|
|
23
|
+
|
|
24
|
+
## Quick start
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Validate a commit message file (hard-fail mode — exits non-zero on violations)
|
|
28
|
+
wp audit commit-message --message-file .git/COMMIT_EDITMSG --require-lore
|
|
29
|
+
|
|
30
|
+
# Soft-warn mode — emits warnings but always exits 0 (adoption ramp)
|
|
31
|
+
wp audit commit-message --message-file .git/COMMIT_EDITMSG --lore-warn
|
|
32
|
+
|
|
33
|
+
# Opt in per-commit by adding [lore] to the subject line:
|
|
34
|
+
# feat(auth): prevent silent session drops [lore]
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Hook policy
|
|
38
|
+
|
|
39
|
+
Lore trailers are advisory/manual. Do not install commit-msg or pre-push hooks for Lore enforcement; squash commits are the durable review boundary.
|
|
40
|
+
|
|
41
|
+
## Trailer format
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
<intent line: why the change was made, not what changed>
|
|
45
|
+
|
|
46
|
+
<body: narrative context — constraints, approach rationale>
|
|
47
|
+
|
|
48
|
+
Constraint: <external constraint that shaped the decision>
|
|
49
|
+
Rejected: <alternative considered> | <reason for rejection>
|
|
50
|
+
Confidence: <low|medium|high>
|
|
51
|
+
Scope-risk: <narrow|moderate|broad>
|
|
52
|
+
Directive: <forward-looking warning for future modifiers>
|
|
53
|
+
Tested: <what was verified>
|
|
54
|
+
Not-tested: <known gaps in verification>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Required trailers (for `--require-lore` or `[lore]` subject tag)
|
|
58
|
+
|
|
59
|
+
| Trailer | Required | Allowed values |
|
|
60
|
+
| -------------------------------------------- | ------------ | -------------------------------- |
|
|
61
|
+
| `Confidence:` | yes | `low`, `medium`, `high` |
|
|
62
|
+
| `Constraint:` or `Rejected:` or `Directive:` | at least one | free text |
|
|
63
|
+
| `Scope-risk:` | optional | `narrow`, `moderate`, `broad` |
|
|
64
|
+
| `Reversibility:` | optional | `clean`, `messy`, `irreversible` |
|
|
65
|
+
| `Tested:` | optional | free text |
|
|
66
|
+
| `Not-tested:` | optional | free text |
|
|
67
|
+
| `Related:` | optional | free text |
|
|
68
|
+
|
|
69
|
+
## Example commit
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
Prevent silent session drops during long-running operations
|
|
73
|
+
|
|
74
|
+
The auth service returns inconsistent status codes on token
|
|
75
|
+
expiry, so the interceptor catches all 4xx responses.
|
|
76
|
+
|
|
77
|
+
Constraint: Auth service does not support token introspection
|
|
78
|
+
Rejected: Extend token TTL to 24h | security policy violation
|
|
79
|
+
Confidence: high
|
|
80
|
+
Scope-risk: narrow
|
|
81
|
+
Directive: Error handling is broad — do not narrow without verifying upstream behavior
|
|
82
|
+
Tested: Single expired token refresh (unit)
|
|
83
|
+
Not-tested: Auth service cold-start > 500ms behavior
|
|
84
|
+
```
|