@webpresso/claude-plugin 3.1.3
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/.claude-plugin/marketplace.json +30 -0
- package/.claude-plugin/plugin.json +22 -0
- package/LICENSE +104 -0
- package/README.md +25 -0
- package/bin/wp +89 -0
- package/commands/audit.md +29 -0
- package/commands/blueprint.md +27 -0
- package/commands/qa.md +5 -0
- package/commands/test.md +5 -0
- package/package.json +33 -0
- package/skills/best-practice-research/SKILL.md +89 -0
- package/skills/browse/SKILL.md +25 -0
- package/skills/claude/SKILL.md +202 -0
- package/skills/codex/SKILL.md +53 -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/hooks-doctor/SKILL.md +78 -0
- package/skills/lore-protocol/SKILL.md +84 -0
- package/skills/opencode-go/SKILL.md +97 -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 +646 -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,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "webpresso",
|
|
3
|
+
"owner": {
|
|
4
|
+
"name": "Webpresso",
|
|
5
|
+
"url": "https://github.com/webpresso"
|
|
6
|
+
},
|
|
7
|
+
"metadata": {
|
|
8
|
+
"description": "Webpresso agent-kit Claude Code plugin: blueprints, skills, hooks, MCP server",
|
|
9
|
+
"version": "3.1.3"
|
|
10
|
+
},
|
|
11
|
+
"plugins": [
|
|
12
|
+
{
|
|
13
|
+
"name": "agent-kit",
|
|
14
|
+
"source": "./",
|
|
15
|
+
"description": "Webpresso agent-kit: blueprints, skills, lore commit protocol, tech-debt lifecycle",
|
|
16
|
+
"category": "development",
|
|
17
|
+
"keywords": ["agent", "blueprint", "claude-code", "skills", "mcp"],
|
|
18
|
+
"mcpServers": {
|
|
19
|
+
"webpresso": {
|
|
20
|
+
"command": "${CLAUDE_PLUGIN_ROOT}/bin/wp",
|
|
21
|
+
"args": ["mcp"],
|
|
22
|
+
"env": {
|
|
23
|
+
"WP_SKIP_UPDATE_CHECK": "1"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"version": "3.1.3"
|
|
30
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "agent-kit",
|
|
3
|
+
"version": "3.1.3",
|
|
4
|
+
"description": "Webpresso agent-kit: blueprints, skills, lore commit protocol, tech-debt lifecycle",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Webpresso",
|
|
7
|
+
"url": "https://github.com/webpresso"
|
|
8
|
+
},
|
|
9
|
+
"skills": "./skills",
|
|
10
|
+
"commands": "./commands",
|
|
11
|
+
"mcpServers": {
|
|
12
|
+
"webpresso": {
|
|
13
|
+
"command": "${CLAUDE_PLUGIN_ROOT}/bin/wp",
|
|
14
|
+
"args": [
|
|
15
|
+
"mcp"
|
|
16
|
+
],
|
|
17
|
+
"env": {
|
|
18
|
+
"WP_SKIP_UPDATE_CHECK": "1"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
Elastic License 2.0
|
|
2
|
+
===================
|
|
3
|
+
|
|
4
|
+
Copyright (c) 2026 Webpresso, Inc.
|
|
5
|
+
|
|
6
|
+
Acceptance
|
|
7
|
+
----------
|
|
8
|
+
|
|
9
|
+
By using the software, you agree to all of the terms and conditions below.
|
|
10
|
+
|
|
11
|
+
Copyright License
|
|
12
|
+
-----------------
|
|
13
|
+
|
|
14
|
+
The licensor grants you a non-exclusive, royalty-free, worldwide,
|
|
15
|
+
non-sublicensable, non-transferable license to use, copy, distribute, make
|
|
16
|
+
available, and prepare derivative works of the software, in each case subject
|
|
17
|
+
to the limitations and conditions below.
|
|
18
|
+
|
|
19
|
+
Limitations
|
|
20
|
+
-----------
|
|
21
|
+
|
|
22
|
+
You may not provide the software to third parties as a hosted or managed
|
|
23
|
+
service, where the service provides users with access to any substantial set of
|
|
24
|
+
the features or functionality of the software.
|
|
25
|
+
|
|
26
|
+
You may not move, change, disable, or circumvent the license key
|
|
27
|
+
functionality in the software, and you may not remove or obscure any
|
|
28
|
+
functionality in the software that is protected by the license key.
|
|
29
|
+
|
|
30
|
+
You may not alter, remove, or obscure any licensing, copyright, or other
|
|
31
|
+
notices of the licensor in the software. Any use of the licensor's trademarks
|
|
32
|
+
is subject to applicable law.
|
|
33
|
+
|
|
34
|
+
Patents
|
|
35
|
+
-------
|
|
36
|
+
|
|
37
|
+
The licensor grants you a license, under any patent claims the licensor can
|
|
38
|
+
license, or becomes able to license, to make, have made, use, sell, offer for
|
|
39
|
+
sale, import and have imported the software, in each case subject to the
|
|
40
|
+
limitations and conditions in this license. This license does not cover any
|
|
41
|
+
patent claims that you cause to be infringed by modifications or additions to
|
|
42
|
+
the software.
|
|
43
|
+
|
|
44
|
+
If you or your company make any written claim that the software infringes or
|
|
45
|
+
contributes to infringement of any patent, your patent license for the software
|
|
46
|
+
granted under these terms ends immediately. If your company makes such a claim,
|
|
47
|
+
your patent license ends immediately for work on behalf of your company.
|
|
48
|
+
|
|
49
|
+
Notices
|
|
50
|
+
-------
|
|
51
|
+
|
|
52
|
+
You must ensure that anyone who gets a copy of any part of the software from
|
|
53
|
+
you also gets a copy of these terms.
|
|
54
|
+
|
|
55
|
+
If you modify the software, you must include in any modified copies of the
|
|
56
|
+
software prominent notices stating that you have modified the software.
|
|
57
|
+
|
|
58
|
+
No Other Rights
|
|
59
|
+
---------------
|
|
60
|
+
|
|
61
|
+
These terms do not imply any licenses other than those expressly granted in
|
|
62
|
+
these terms.
|
|
63
|
+
|
|
64
|
+
Termination
|
|
65
|
+
-----------
|
|
66
|
+
|
|
67
|
+
If you use the software in violation of these terms, such use is not licensed,
|
|
68
|
+
and your licenses will automatically terminate. If the licensor provides you
|
|
69
|
+
with a notice of your violation, and you cease all violation of this license no
|
|
70
|
+
later than 30 days after you receive that notice, your licenses will be
|
|
71
|
+
reinstated retroactively. However, if you violate these terms after such
|
|
72
|
+
reinstatement, any additional violation of these terms will cause your licenses
|
|
73
|
+
to terminate automatically and permanently.
|
|
74
|
+
|
|
75
|
+
No Liability
|
|
76
|
+
------------
|
|
77
|
+
|
|
78
|
+
As far as the law allows, the software comes as is, without any warranty or
|
|
79
|
+
condition, and the licensor will not be liable to you for any damages arising
|
|
80
|
+
out of these terms or the use or nature of the software, under any kind of
|
|
81
|
+
legal claim.
|
|
82
|
+
|
|
83
|
+
Definitions
|
|
84
|
+
-----------
|
|
85
|
+
|
|
86
|
+
The licensor is the entity offering these terms, and the software is the
|
|
87
|
+
software the licensor makes available under these terms, including any portion
|
|
88
|
+
of it.
|
|
89
|
+
|
|
90
|
+
you refers to the individual or entity agreeing to these terms.
|
|
91
|
+
|
|
92
|
+
your company is any legal entity, sole proprietorship, or other kind of
|
|
93
|
+
organization that you work for, plus all organizations that have control over,
|
|
94
|
+
are under the control of, or are under common control with that organization.
|
|
95
|
+
control means ownership of substantially all the assets of an entity, or the
|
|
96
|
+
power to direct its management and policies by vote, contract, or otherwise.
|
|
97
|
+
Control can be direct or indirect.
|
|
98
|
+
|
|
99
|
+
your licenses are all the licenses granted to you for the software under these
|
|
100
|
+
terms.
|
|
101
|
+
|
|
102
|
+
use means anything you do with the software requiring one of your licenses.
|
|
103
|
+
|
|
104
|
+
trademark means trademarks, service marks, and similar rights.
|
package/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# @webpresso/claude-plugin
|
|
2
|
+
|
|
3
|
+
`@webpresso/claude-plugin` is the Claude Code host adapter package for Agent
|
|
4
|
+
Kit. It ships the Claude plugin manifest, marketplace metadata, packaged
|
|
5
|
+
skills, command docs, and a package-local `bin/wp` shim that forwards to an
|
|
6
|
+
Agent Kit `wp` CLI resolved at runtime.
|
|
7
|
+
|
|
8
|
+
This adapter does not declare `@webpresso/agent-kit` as a package dependency.
|
|
9
|
+
Its package-local `bin/wp` shim resolves the CLI in this order:
|
|
10
|
+
|
|
11
|
+
1. `WEBPRESSO_WP_BIN`, when set to an executable file.
|
|
12
|
+
2. The source-checkout root `../../bin/wp`, for local adapter development.
|
|
13
|
+
3. `@webpresso/agent-kit/bin/wp`, when an integrator installed the root package
|
|
14
|
+
alongside this adapter.
|
|
15
|
+
4. `wp` on `PATH`.
|
|
16
|
+
|
|
17
|
+
If none of those candidates is available, install or update the root package
|
|
18
|
+
through `wp setup`, `wp update`, or your package manager, or set
|
|
19
|
+
`WEBPRESSO_WP_BIN` to the desired executable. The shim preserves
|
|
20
|
+
`WP_SKIP_UPDATE_CHECK=1` by default for host MCP invocations.
|
|
21
|
+
|
|
22
|
+
The root `@webpresso/agent-kit` package is CLI/core only: it ships `wp`, MCP
|
|
23
|
+
tools, audits, blueprints, session memory, docs, and catalog sources, but it
|
|
24
|
+
does not ship this Claude payload from the root package. Use this adapter when
|
|
25
|
+
you need the Claude-native plugin delivery surface.
|
package/bin/wp
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { spawnSync } from "node:child_process";
|
|
4
|
+
import { accessSync, constants, realpathSync, statSync } from "node:fs";
|
|
5
|
+
import { createRequire } from "node:module";
|
|
6
|
+
import { dirname, delimiter, join } from "node:path";
|
|
7
|
+
import { fileURLToPath } from "node:url";
|
|
8
|
+
|
|
9
|
+
const require = createRequire(import.meta.url);
|
|
10
|
+
const shimPath = fileURLToPath(import.meta.url);
|
|
11
|
+
const shimDir = dirname(shimPath);
|
|
12
|
+
const adapterRoot = dirname(shimDir);
|
|
13
|
+
|
|
14
|
+
function isExecutableFile(candidate) {
|
|
15
|
+
try {
|
|
16
|
+
const stat = statSync(candidate);
|
|
17
|
+
if (!stat.isFile()) return false;
|
|
18
|
+
accessSync(candidate, constants.X_OK);
|
|
19
|
+
return true;
|
|
20
|
+
} catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function sameFile(a, b) {
|
|
26
|
+
try {
|
|
27
|
+
return realpathSync(a) === realpathSync(b);
|
|
28
|
+
} catch {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function pathWpCandidates() {
|
|
34
|
+
return (process.env.PATH ?? "")
|
|
35
|
+
.split(delimiter)
|
|
36
|
+
.filter(Boolean)
|
|
37
|
+
.map((entry) => join(entry, process.platform === "win32" ? "wp.cmd" : "wp"));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function resolveAgentKitPackageWp() {
|
|
41
|
+
try {
|
|
42
|
+
const packageJsonPath = require.resolve("@webpresso/agent-kit/package.json");
|
|
43
|
+
return join(dirname(packageJsonPath), "bin", "wp");
|
|
44
|
+
} catch {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function resolveAgentKitWp() {
|
|
50
|
+
const explicitPath = process.env.WEBPRESSO_WP_BIN;
|
|
51
|
+
if (explicitPath) {
|
|
52
|
+
if (isExecutableFile(explicitPath)) return explicitPath;
|
|
53
|
+
throw new Error(
|
|
54
|
+
`WEBPRESSO_WP_BIN points to ${explicitPath}, but that file is not executable. ` +
|
|
55
|
+
"Set WEBPRESSO_WP_BIN to a valid wp executable, install/update @webpresso/agent-kit, or run wp setup.",
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const candidates = [
|
|
60
|
+
join(adapterRoot, "..", "..", "bin", "wp"),
|
|
61
|
+
resolveAgentKitPackageWp(),
|
|
62
|
+
...pathWpCandidates(),
|
|
63
|
+
].filter(Boolean);
|
|
64
|
+
|
|
65
|
+
for (const candidate of candidates) {
|
|
66
|
+
if (isExecutableFile(candidate) && !sameFile(candidate, shimPath)) {
|
|
67
|
+
return candidate;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
throw new Error(
|
|
72
|
+
"Unable to locate the Webpresso wp CLI. Install or update @webpresso/agent-kit, run wp setup, " +
|
|
73
|
+
"set WEBPRESSO_WP_BIN to the wp executable, or ensure wp is available on PATH.",
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const result = spawnSync(resolveAgentKitWp(), process.argv.slice(2), {
|
|
78
|
+
stdio: "inherit",
|
|
79
|
+
env: {
|
|
80
|
+
...process.env,
|
|
81
|
+
WP_SKIP_UPDATE_CHECK: process.env.WP_SKIP_UPDATE_CHECK ?? "1",
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
if (result.error) {
|
|
86
|
+
throw result.error;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
process.exit(result.status ?? (result.signal ? 1 : 0));
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run a webpresso audit
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Use the `mcp__webpresso__wp_audit` tool when the requested audit is available
|
|
6
|
+
through MCP, or `./bin/wp audit <kind>` from this source repo for the full CLI
|
|
7
|
+
registry. Common `kind` values include `guardrails`, `quality`,
|
|
8
|
+
`catalog-drift`, `package-surface`, `docs-frontmatter`, `blueprint-lifecycle`,
|
|
9
|
+
`blueprint-readme-drift`, `cloudflare-deploy-contract`, `harness-surfaces`,
|
|
10
|
+
`weakness-mining`, `harness-overlay-evidence`, `bundle-budget`,
|
|
11
|
+
`commit-message`, `tech-debt`, and `architecture-drift`.
|
|
12
|
+
|
|
13
|
+
`architecture-drift` verifies a repo-local `docs/architecture.contract.json`
|
|
14
|
+
contract against:
|
|
15
|
+
|
|
16
|
+
- required architecture docs
|
|
17
|
+
- required architecture text/rules
|
|
18
|
+
- active blueprint links to architecture docs/contracts
|
|
19
|
+
- required `Architecture before` / `Architecture after` sections for
|
|
20
|
+
architecture-changing blueprints
|
|
21
|
+
|
|
22
|
+
Harness-specific audits:
|
|
23
|
+
|
|
24
|
+
- `harness-surfaces` validates `catalog/agent/harness-surfaces.yaml` against
|
|
25
|
+
the repo layout.
|
|
26
|
+
- `weakness-mining` clusters available hook evidence and can draft tech-debt
|
|
27
|
+
when invoked with the matching CLI option.
|
|
28
|
+
- `harness-overlay-evidence` validates `agent-overlays/<cli>/manifest.yaml`
|
|
29
|
+
evidence and target-safety rules; an empty overlay set is valid.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Manage blueprints via focused MCP tools
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Use the focused blueprint MCP tools.
|
|
6
|
+
|
|
7
|
+
- `wp_blueprint_projects` — discover visible projects and worktrees
|
|
8
|
+
- `wp_blueprint_list` — list blueprints
|
|
9
|
+
- `wp_blueprint_get` — fetch one blueprint with freshness metadata
|
|
10
|
+
- `wp_blueprint_context` — assemble bounded task context
|
|
11
|
+
- `wp_blueprint_create` — create a draft blueprint; requires `project_id` and accepts optional `request_id` and `head_at_ingest` for retry-safe, stale-write-safe creation
|
|
12
|
+
- `wp_blueprint_put` — whole-document structured authoring; writes the canonical blueprint markdown from typed input and returns revision metadata
|
|
13
|
+
- `wp_blueprint_transition` — optimistic-concurrency lifecycle transition; requires `expected_version` and returns updated revision metadata
|
|
14
|
+
- `wp_blueprint_task_next` — return the next ready task; accepts optional `project_id` when the current cwd is a multi-repo workspace container
|
|
15
|
+
- `wp_blueprint_task_advance` — change task status (non-`done`); requires `project_id` and accepts optional `request_id` and `head_at_ingest` for retry-safe mutation
|
|
16
|
+
- `wp_blueprint_task_verify` — mark a task `done` with evidence; accepts optional `request_id` and `head_at_ingest` for retry-safe verification
|
|
17
|
+
- `wp_blueprint_promote` / `wp_blueprint_finalize` — accept optional `project_id` for nested-workspace disambiguation
|
|
18
|
+
|
|
19
|
+
Guidance:
|
|
20
|
+
|
|
21
|
+
- Prefer `project_id` from `wp_blueprint_projects` when multiple repos are visible.
|
|
22
|
+
- Use `request_id` for retry-safe mutations and reuse it only with the same payload.
|
|
23
|
+
- Carry `head_at_ingest` from read/context tools into stale-write-sensitive mutations.
|
|
24
|
+
- Author documents through `wp_blueprint_put`, then lifecycle with `wp_blueprint_transition`.
|
|
25
|
+
- Deferred `wp_blueprint_patch` semantic ops (`add_task`, `update_task`, `set_summary`, `replace_decision`) are future layers; patch is **not** part of the v1 canonical surface.
|
|
26
|
+
- MCP Apps editor support is a follow-on enhancement over `wp_blueprint_put` / `wp_blueprint_transition`.
|
|
27
|
+
- Hosts without MCP Apps support keep using the structured tools above.
|
package/commands/qa.md
ADDED
package/commands/test.md
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@webpresso/claude-plugin",
|
|
3
|
+
"version": "3.1.3",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "Claude Code plugin adapter for Webpresso agent-kit skills, commands, and MCP runtime.",
|
|
6
|
+
"homepage": "https://github.com/webpresso/agent-kit#readme",
|
|
7
|
+
"bugs": {
|
|
8
|
+
"url": "https://github.com/webpresso/agent-kit/issues"
|
|
9
|
+
},
|
|
10
|
+
"license": "Elastic-2.0",
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "git+https://github.com/webpresso/agent-kit.git",
|
|
14
|
+
"directory": "packages/claude-plugin"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
".claude-plugin",
|
|
18
|
+
"skills",
|
|
19
|
+
"commands",
|
|
20
|
+
"bin/wp",
|
|
21
|
+
"LICENSE",
|
|
22
|
+
"README.md"
|
|
23
|
+
],
|
|
24
|
+
"type": "module",
|
|
25
|
+
"sideEffects": false,
|
|
26
|
+
"publishConfig": {
|
|
27
|
+
"access": "public",
|
|
28
|
+
"registry": "https://registry.npmjs.org/"
|
|
29
|
+
},
|
|
30
|
+
"engines": {
|
|
31
|
+
"node": ">=24"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: best-practice-research
|
|
3
|
+
description: "Official/upstream best-practice research wrapper with bounded evidence and dated citations."
|
|
4
|
+
argument-hint: "<technology|decision|practice question>"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Best-Practice Research
|
|
8
|
+
|
|
9
|
+
Use this skill when a task depends on current external best practices, version-aware guidance, standards, official recommendations, or upstream behavior. This is a workflow wrapper: it routes evidence gathering and synthesis; it is not a new research authority and it does not replace `researcher`.
|
|
10
|
+
|
|
11
|
+
## Purpose
|
|
12
|
+
|
|
13
|
+
Produce a cited, reusable best-practice answer or handoff that separates current external evidence from repo-local facts and dependency-selection decisions.
|
|
14
|
+
|
|
15
|
+
## Activate When
|
|
16
|
+
|
|
17
|
+
- The user asks for best practices, recommended approach, current guidance, official recommendations, standards, or version-aware external behavior.
|
|
18
|
+
- `$ralplan`, `$deep-interview`, `$team`, or another workflow needs current external evidence before planning or execution can be correct.
|
|
19
|
+
- The task involves an already chosen technology and needs authoritative usage guidance, migration notes, API behavior, lifecycle rules, or current safety guidance.
|
|
20
|
+
|
|
21
|
+
## Do Not Activate When
|
|
22
|
+
|
|
23
|
+
- The answer is fully repo-local; use `explore` for codebase facts.
|
|
24
|
+
- The main question is whether to adopt, replace, upgrade, or compare dependencies; use `dependency-expert`.
|
|
25
|
+
- The user only needs implementation against already-grounded requirements; use `executor`, `$ralph`, or `$team` as appropriate.
|
|
26
|
+
- The task can be answered from stable local project conventions without current external lookup.
|
|
27
|
+
|
|
28
|
+
## Specialist Routing
|
|
29
|
+
|
|
30
|
+
1. Use `explore` first for brownfield facts: current code usage, local constraints, versions, config, and integration points.
|
|
31
|
+
2. Use `researcher` for official/upstream docs, release notes, standards, migration guides, source-backed examples, and current best-practice evidence for an already chosen technology.
|
|
32
|
+
3. Use `dependency-expert` only for adoption/upgrade/replacement/comparison decisions.
|
|
33
|
+
4. Return to the caller with explicit evidence, uncertainty, and any implementation handoff constraints.
|
|
34
|
+
|
|
35
|
+
## Source-Quality Rules
|
|
36
|
+
|
|
37
|
+
- Prefer official documentation, upstream source, release notes, changelogs, standards, and maintainer guidance.
|
|
38
|
+
- Include source URLs for material claims.
|
|
39
|
+
- State date/version context for current best-practice claims.
|
|
40
|
+
- Label third-party summaries as supplemental; do not use them before official/upstream sources.
|
|
41
|
+
- Flag stale, conflicting, undocumented, or version-mismatched evidence.
|
|
42
|
+
- Do not over-fetch: gather the smallest evidence set that can support the decision.
|
|
43
|
+
|
|
44
|
+
## Workflow
|
|
45
|
+
|
|
46
|
+
1. Classify the question: conceptual best practice, implementation guidance, migration/version guidance, standards/compliance guidance, or mixed local + external guidance.
|
|
47
|
+
2. Gather repo-local facts with `explore` when local usage or constraints affect the answer.
|
|
48
|
+
3. Gather external evidence with `researcher` when current or version-aware practice affects correctness.
|
|
49
|
+
4. Synthesize a concise answer with source quality, version/date context, caveats, and an implementation or planning handoff.
|
|
50
|
+
5. Stop when the answer is grounded enough for the caller; otherwise report the exact blocker or specialist handoff needed.
|
|
51
|
+
|
|
52
|
+
## Output Contract
|
|
53
|
+
|
|
54
|
+
```md
|
|
55
|
+
## Best-Practice Research: <question>
|
|
56
|
+
|
|
57
|
+
### Direct Recommendation
|
|
58
|
+
|
|
59
|
+
<actionable guidance or decision support>
|
|
60
|
+
|
|
61
|
+
### Evidence Used
|
|
62
|
+
|
|
63
|
+
- Official/upstream: <source URL> — <what it establishes>
|
|
64
|
+
- Supplemental, if any: <source URL> — <why it is secondary>
|
|
65
|
+
|
|
66
|
+
### Version / Date Context
|
|
67
|
+
|
|
68
|
+
<versions, dates, release channels, or unknowns>
|
|
69
|
+
|
|
70
|
+
### Repo-Local Context
|
|
71
|
+
|
|
72
|
+
<facts from explore, or "not needed">
|
|
73
|
+
|
|
74
|
+
### Boundaries / Non-goals
|
|
75
|
+
|
|
76
|
+
<what this research does not decide>
|
|
77
|
+
|
|
78
|
+
### Handoff
|
|
79
|
+
|
|
80
|
+
<planning/execution/test implications>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Stop Rules
|
|
84
|
+
|
|
85
|
+
- Stop after a source-backed recommendation is reusable by the caller.
|
|
86
|
+
- Stop and route upward if the task becomes dependency comparison, broad architecture, or implementation.
|
|
87
|
+
- Do not continue researching when remaining work would only polish wording rather than change the recommendation.
|
|
88
|
+
|
|
89
|
+
Task: {{ARGUMENTS}}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: browse
|
|
3
|
+
description: "Browser/page inspection via Webpresso Playwright: inspect DOM, console, network basics, screenshots, and findings."
|
|
4
|
+
license: MIT
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Glob
|
|
8
|
+
- Grep
|
|
9
|
+
- Bash
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Browse
|
|
13
|
+
|
|
14
|
+
Use `wp browser doctor` first if browser availability is unknown; if it reports a missing browser, run `wp browser ensure chromium`. Prefer repo-local preview or dev-server URLs; if none are discoverable, ask for a URL.
|
|
15
|
+
|
|
16
|
+
## Read-only inspection
|
|
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
|
+
|
|
22
|
+
1. Identify the URL and whether headed or headless mode is needed.
|
|
23
|
+
2. Use `wp browser open <url> --json` for a lightweight smoke snapshot, or a project Playwright test for deeper flows.
|
|
24
|
+
3. Report URL, title, status evidence, console/page errors when available, and any screenshots/artifacts.
|
|
25
|
+
4. Do not mutate app data unless the user explicitly asks for a mutating browser flow.
|