@wrongstack/core 0.307.1 → 0.308.1
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/dist/coordination/agents/index.js +4 -4
- package/dist/coordination/index.js +5 -4
- package/dist/core/index.js +1 -1
- package/dist/defaults/index.js +5 -4
- package/dist/execution/index.js +4 -4
- package/dist/index.js +7 -5
- package/dist/storage/index.js +1 -0
- package/dist/tools/index.js +4 -4
- package/dist/types/config/ui.d.ts +1 -1
- package/dist/types/index.js +2 -1
- package/dist/types/runtime-capability-manifest.d.ts +1 -1
- package/instructions/agents/backend.md +3 -0
- package/instructions/agents/bug-hunter.md +3 -0
- package/instructions/agents/code-reviewer.md +1 -0
- package/instructions/agents/frontend.md +2 -0
- package/instructions/agents/test.md +2 -0
- package/instructions/modes/code-reviewer.md +1 -1
- package/instructions/modes/debugger.md +2 -2
- package/instructions/modes/refactorer.md +2 -2
- package/instructions/modes/tester.md +2 -2
- package/instructions/system-lite.md +37 -33
- package/instructions/system-pro.md +23 -7
- package/instructions/system.md +33 -11
- package/package.json +4 -3
- package/skills/api-design/SKILL.md +26 -1
- package/skills/audit-log/SKILL.md +22 -1
- package/skills/auto-review/SKILL.md +21 -1
- package/skills/bug-hunter/SKILL.md +8 -0
- package/skills/chimera/SKILL.md +9 -0
- package/skills/data-governance/SKILL.md +25 -1
- package/skills/design-system/SKILL.md +19 -1
- package/skills/docker-deploy/SKILL.md +26 -1
- package/skills/git-flow/SKILL.md +26 -1
- package/skills/mailbox-bridge/SKILL.md +25 -1
- package/skills/mnemosyne/SKILL.md +25 -2
- package/skills/multi-agent/SKILL.md +12 -0
- package/skills/node-modern/SKILL.md +28 -1
- package/skills/observability/SKILL.md +25 -1
- package/skills/output-standards/SKILL.md +28 -1
- package/skills/plugin-author/SKILL.md +31 -1
- package/skills/prompt-engineering/SKILL.md +27 -1
- package/skills/react-modern/SKILL.md +29 -1
- package/skills/refactor-planner/SKILL.md +10 -0
- package/skills/research-web/SKILL.md +28 -1
- package/skills/sdd/SKILL.md +18 -0
- package/skills/security-scanner/SKILL.md +25 -1
- package/skills/skill-creator/SKILL.md +25 -1
- package/skills/tech-stack/SKILL.md +25 -1
- package/skills/testing/SKILL.md +25 -1
- package/skills/typescript-strict/SKILL.md +30 -1
- package/skills/wrongstack-kanban/SKILL.md +24 -0
- package/skills/wrongstack-mailbox/SKILL.md +29 -1
- package/skills/wrongstack-mailbox-mcp/SKILL.md +30 -3
|
@@ -1378,7 +1378,7 @@ var RUNTIME_CAPABILITY_MANIFEST = [
|
|
|
1378
1378
|
id: "execution.shell",
|
|
1379
1379
|
pack: "development",
|
|
1380
1380
|
exposure: "direct",
|
|
1381
|
-
tools: ["bash", "exec", "language", "language_info", "language_package"]
|
|
1381
|
+
tools: ["bash", "exec", "pwsh", "language", "language_info", "language_package"]
|
|
1382
1382
|
},
|
|
1383
1383
|
{
|
|
1384
1384
|
id: "verification.run",
|
|
@@ -3337,7 +3337,7 @@ ${identity}`);
|
|
|
3337
3337
|
splitLearnedEntries(rawLearned)
|
|
3338
3338
|
);
|
|
3339
3339
|
const rawBytes = Buffer.byteLength(rawLearned, "utf8");
|
|
3340
|
-
const freshEntries = meta === void 0 ? [] : rawEntries.filter((entry) => entry.capturedAt
|
|
3340
|
+
const freshEntries = meta === void 0 ? [] : rawEntries.filter((entry) => entry.capturedAt >= meta.consolidatedAt);
|
|
3341
3341
|
const stale = meta === void 0 || freshEntries.length > 0 || rawEntries.length > meta.sourceEntryCount || rawBytes > meta.sourceBytes;
|
|
3342
3342
|
if (!stale) {
|
|
3343
3343
|
learnedContent = consolidated;
|
|
@@ -4934,7 +4934,7 @@ var VERIFY_AGENTS = [
|
|
|
4934
4934
|
id: "bug-hunter",
|
|
4935
4935
|
name: "Bug Hunter",
|
|
4936
4936
|
role: "bug-hunter",
|
|
4937
|
-
tools: [...TOOLS.inspect],
|
|
4937
|
+
tools: [...TOOLS.inspect, "dead-code-scan"],
|
|
4938
4938
|
prompt: agentPrompt("bug-hunter")
|
|
4939
4939
|
},
|
|
4940
4940
|
budget: HEAVY_BUDGET,
|
|
@@ -5024,7 +5024,7 @@ var REVIEW_AGENTS = [
|
|
|
5024
5024
|
id: "code-reviewer",
|
|
5025
5025
|
name: "Code Reviewer",
|
|
5026
5026
|
role: "code-reviewer",
|
|
5027
|
-
tools: [...TOOLS.inspect, "git"],
|
|
5027
|
+
tools: [...TOOLS.inspect, "git", "codebase-impact-analysis", "codebase-invariant-check"],
|
|
5028
5028
|
prompt: agentPrompt("code-reviewer")
|
|
5029
5029
|
},
|
|
5030
5030
|
budget: MEDIUM_BUDGET,
|
|
@@ -2643,7 +2643,7 @@ var RUNTIME_CAPABILITY_MANIFEST = [
|
|
|
2643
2643
|
id: "execution.shell",
|
|
2644
2644
|
pack: "development",
|
|
2645
2645
|
exposure: "direct",
|
|
2646
|
-
tools: ["bash", "exec", "language", "language_info", "language_package"]
|
|
2646
|
+
tools: ["bash", "exec", "pwsh", "language", "language_info", "language_package"]
|
|
2647
2647
|
},
|
|
2648
2648
|
{
|
|
2649
2649
|
id: "verification.run",
|
|
@@ -4435,7 +4435,7 @@ ${identity}`);
|
|
|
4435
4435
|
splitLearnedEntries(rawLearned)
|
|
4436
4436
|
);
|
|
4437
4437
|
const rawBytes = Buffer.byteLength(rawLearned, "utf8");
|
|
4438
|
-
const freshEntries = meta === void 0 ? [] : rawEntries.filter((entry) => entry.capturedAt
|
|
4438
|
+
const freshEntries = meta === void 0 ? [] : rawEntries.filter((entry) => entry.capturedAt >= meta.consolidatedAt);
|
|
4439
4439
|
const stale = meta === void 0 || freshEntries.length > 0 || rawEntries.length > meta.sourceEntryCount || rawBytes > meta.sourceBytes;
|
|
4440
4440
|
if (!stale) {
|
|
4441
4441
|
learnedContent = consolidated;
|
|
@@ -6032,7 +6032,7 @@ var VERIFY_AGENTS = [
|
|
|
6032
6032
|
id: "bug-hunter",
|
|
6033
6033
|
name: "Bug Hunter",
|
|
6034
6034
|
role: "bug-hunter",
|
|
6035
|
-
tools: [...TOOLS.inspect],
|
|
6035
|
+
tools: [...TOOLS.inspect, "dead-code-scan"],
|
|
6036
6036
|
prompt: agentPrompt("bug-hunter")
|
|
6037
6037
|
},
|
|
6038
6038
|
budget: HEAVY_BUDGET,
|
|
@@ -6122,7 +6122,7 @@ var REVIEW_AGENTS = [
|
|
|
6122
6122
|
id: "code-reviewer",
|
|
6123
6123
|
name: "Code Reviewer",
|
|
6124
6124
|
role: "code-reviewer",
|
|
6125
|
-
tools: [...TOOLS.inspect, "git"],
|
|
6125
|
+
tools: [...TOOLS.inspect, "git", "codebase-impact-analysis", "codebase-invariant-check"],
|
|
6126
6126
|
prompt: agentPrompt("code-reviewer")
|
|
6127
6127
|
},
|
|
6128
6128
|
budget: MEDIUM_BUDGET,
|
|
@@ -18543,6 +18543,7 @@ var DefaultSessionStore = class _DefaultSessionStore {
|
|
|
18543
18543
|
sessionPath: (sid, ext) => this.sessionPath(sid, ext)
|
|
18544
18544
|
});
|
|
18545
18545
|
this.clearLoadCache(canonical);
|
|
18546
|
+
if (id !== canonical) this.clearLoadCache(id);
|
|
18546
18547
|
}
|
|
18547
18548
|
async summarize(id, mtime) {
|
|
18548
18549
|
return summarizeSessionFile({
|
package/dist/core/index.js
CHANGED
|
@@ -7920,7 +7920,7 @@ var RUNTIME_CAPABILITY_MANIFEST = [
|
|
|
7920
7920
|
id: "execution.shell",
|
|
7921
7921
|
pack: "development",
|
|
7922
7922
|
exposure: "direct",
|
|
7923
|
-
tools: ["bash", "exec", "language", "language_info", "language_package"]
|
|
7923
|
+
tools: ["bash", "exec", "pwsh", "language", "language_info", "language_package"]
|
|
7924
7924
|
},
|
|
7925
7925
|
{
|
|
7926
7926
|
id: "verification.run",
|
package/dist/defaults/index.js
CHANGED
|
@@ -1810,7 +1810,7 @@ var RUNTIME_CAPABILITY_MANIFEST = [
|
|
|
1810
1810
|
id: "execution.shell",
|
|
1811
1811
|
pack: "development",
|
|
1812
1812
|
exposure: "direct",
|
|
1813
|
-
tools: ["bash", "exec", "language", "language_info", "language_package"]
|
|
1813
|
+
tools: ["bash", "exec", "pwsh", "language", "language_info", "language_package"]
|
|
1814
1814
|
},
|
|
1815
1815
|
{
|
|
1816
1816
|
id: "verification.run",
|
|
@@ -2371,7 +2371,7 @@ ${identity}`);
|
|
|
2371
2371
|
splitLearnedEntries(rawLearned)
|
|
2372
2372
|
);
|
|
2373
2373
|
const rawBytes = Buffer.byteLength(rawLearned, "utf8");
|
|
2374
|
-
const freshEntries = meta === void 0 ? [] : rawEntries.filter((entry) => entry.capturedAt
|
|
2374
|
+
const freshEntries = meta === void 0 ? [] : rawEntries.filter((entry) => entry.capturedAt >= meta.consolidatedAt);
|
|
2375
2375
|
const stale = meta === void 0 || freshEntries.length > 0 || rawEntries.length > meta.sourceEntryCount || rawBytes > meta.sourceBytes;
|
|
2376
2376
|
if (!stale) {
|
|
2377
2377
|
learnedContent = consolidated;
|
|
@@ -3968,7 +3968,7 @@ var VERIFY_AGENTS = [
|
|
|
3968
3968
|
id: "bug-hunter",
|
|
3969
3969
|
name: "Bug Hunter",
|
|
3970
3970
|
role: "bug-hunter",
|
|
3971
|
-
tools: [...TOOLS.inspect],
|
|
3971
|
+
tools: [...TOOLS.inspect, "dead-code-scan"],
|
|
3972
3972
|
prompt: agentPrompt("bug-hunter")
|
|
3973
3973
|
},
|
|
3974
3974
|
budget: HEAVY_BUDGET,
|
|
@@ -4058,7 +4058,7 @@ var REVIEW_AGENTS = [
|
|
|
4058
4058
|
id: "code-reviewer",
|
|
4059
4059
|
name: "Code Reviewer",
|
|
4060
4060
|
role: "code-reviewer",
|
|
4061
|
-
tools: [...TOOLS.inspect, "git"],
|
|
4061
|
+
tools: [...TOOLS.inspect, "git", "codebase-impact-analysis", "codebase-invariant-check"],
|
|
4062
4062
|
prompt: agentPrompt("code-reviewer")
|
|
4063
4063
|
},
|
|
4064
4064
|
budget: MEDIUM_BUDGET,
|
|
@@ -17964,6 +17964,7 @@ var DefaultSessionStore = class _DefaultSessionStore {
|
|
|
17964
17964
|
sessionPath: (sid, ext) => this.sessionPath(sid, ext)
|
|
17965
17965
|
});
|
|
17966
17966
|
this.clearLoadCache(canonical);
|
|
17967
|
+
if (id !== canonical) this.clearLoadCache(id);
|
|
17967
17968
|
}
|
|
17968
17969
|
async summarize(id, mtime) {
|
|
17969
17970
|
return summarizeSessionFile({
|
package/dist/execution/index.js
CHANGED
|
@@ -13262,7 +13262,7 @@ var RUNTIME_CAPABILITY_MANIFEST = [
|
|
|
13262
13262
|
id: "execution.shell",
|
|
13263
13263
|
pack: "development",
|
|
13264
13264
|
exposure: "direct",
|
|
13265
|
-
tools: ["bash", "exec", "language", "language_info", "language_package"]
|
|
13265
|
+
tools: ["bash", "exec", "pwsh", "language", "language_info", "language_package"]
|
|
13266
13266
|
},
|
|
13267
13267
|
{
|
|
13268
13268
|
id: "verification.run",
|
|
@@ -13818,7 +13818,7 @@ ${identity}`);
|
|
|
13818
13818
|
splitLearnedEntries(rawLearned)
|
|
13819
13819
|
);
|
|
13820
13820
|
const rawBytes = Buffer.byteLength(rawLearned, "utf8");
|
|
13821
|
-
const freshEntries = meta === void 0 ? [] : rawEntries.filter((entry) => entry.capturedAt
|
|
13821
|
+
const freshEntries = meta === void 0 ? [] : rawEntries.filter((entry) => entry.capturedAt >= meta.consolidatedAt);
|
|
13822
13822
|
const stale = meta === void 0 || freshEntries.length > 0 || rawEntries.length > meta.sourceEntryCount || rawBytes > meta.sourceBytes;
|
|
13823
13823
|
if (!stale) {
|
|
13824
13824
|
learnedContent = consolidated;
|
|
@@ -15415,7 +15415,7 @@ var VERIFY_AGENTS = [
|
|
|
15415
15415
|
id: "bug-hunter",
|
|
15416
15416
|
name: "Bug Hunter",
|
|
15417
15417
|
role: "bug-hunter",
|
|
15418
|
-
tools: [...TOOLS.inspect],
|
|
15418
|
+
tools: [...TOOLS.inspect, "dead-code-scan"],
|
|
15419
15419
|
prompt: agentPrompt("bug-hunter")
|
|
15420
15420
|
},
|
|
15421
15421
|
budget: HEAVY_BUDGET,
|
|
@@ -15505,7 +15505,7 @@ var REVIEW_AGENTS = [
|
|
|
15505
15505
|
id: "code-reviewer",
|
|
15506
15506
|
name: "Code Reviewer",
|
|
15507
15507
|
role: "code-reviewer",
|
|
15508
|
-
tools: [...TOOLS.inspect, "git"],
|
|
15508
|
+
tools: [...TOOLS.inspect, "git", "codebase-impact-analysis", "codebase-invariant-check"],
|
|
15509
15509
|
prompt: agentPrompt("code-reviewer")
|
|
15510
15510
|
},
|
|
15511
15511
|
budget: MEDIUM_BUDGET,
|
package/dist/index.js
CHANGED
|
@@ -3532,7 +3532,8 @@ var THEME_PRESET_IDS = [
|
|
|
3532
3532
|
"poimandres",
|
|
3533
3533
|
"vitesse-dark",
|
|
3534
3534
|
"aura",
|
|
3535
|
-
"dark-plus"
|
|
3535
|
+
"dark-plus",
|
|
3536
|
+
"monochrome"
|
|
3536
3537
|
];
|
|
3537
3538
|
|
|
3538
3539
|
// src/types/default-config.ts
|
|
@@ -10269,7 +10270,7 @@ var RUNTIME_CAPABILITY_MANIFEST = [
|
|
|
10269
10270
|
id: "execution.shell",
|
|
10270
10271
|
pack: "development",
|
|
10271
10272
|
exposure: "direct",
|
|
10272
|
-
tools: ["bash", "exec", "language", "language_info", "language_package"]
|
|
10273
|
+
tools: ["bash", "exec", "pwsh", "language", "language_info", "language_package"]
|
|
10273
10274
|
},
|
|
10274
10275
|
{
|
|
10275
10276
|
id: "verification.run",
|
|
@@ -23517,7 +23518,7 @@ ${identity2}`);
|
|
|
23517
23518
|
splitLearnedEntries(rawLearned)
|
|
23518
23519
|
);
|
|
23519
23520
|
const rawBytes = Buffer.byteLength(rawLearned, "utf8");
|
|
23520
|
-
const freshEntries = meta === void 0 ? [] : rawEntries.filter((entry) => entry.capturedAt
|
|
23521
|
+
const freshEntries = meta === void 0 ? [] : rawEntries.filter((entry) => entry.capturedAt >= meta.consolidatedAt);
|
|
23521
23522
|
const stale = meta === void 0 || freshEntries.length > 0 || rawEntries.length > meta.sourceEntryCount || rawBytes > meta.sourceBytes;
|
|
23522
23523
|
if (!stale) {
|
|
23523
23524
|
learnedContent = consolidated;
|
|
@@ -25114,7 +25115,7 @@ var VERIFY_AGENTS = [
|
|
|
25114
25115
|
id: "bug-hunter",
|
|
25115
25116
|
name: "Bug Hunter",
|
|
25116
25117
|
role: "bug-hunter",
|
|
25117
|
-
tools: [...TOOLS.inspect],
|
|
25118
|
+
tools: [...TOOLS.inspect, "dead-code-scan"],
|
|
25118
25119
|
prompt: agentPrompt("bug-hunter")
|
|
25119
25120
|
},
|
|
25120
25121
|
budget: HEAVY_BUDGET,
|
|
@@ -25204,7 +25205,7 @@ var REVIEW_AGENTS = [
|
|
|
25204
25205
|
id: "code-reviewer",
|
|
25205
25206
|
name: "Code Reviewer",
|
|
25206
25207
|
role: "code-reviewer",
|
|
25207
|
-
tools: [...TOOLS.inspect, "git"],
|
|
25208
|
+
tools: [...TOOLS.inspect, "git", "codebase-impact-analysis", "codebase-invariant-check"],
|
|
25208
25209
|
prompt: agentPrompt("code-reviewer")
|
|
25209
25210
|
},
|
|
25210
25211
|
budget: MEDIUM_BUDGET,
|
|
@@ -36518,6 +36519,7 @@ var DefaultSessionStore = class _DefaultSessionStore {
|
|
|
36518
36519
|
sessionPath: (sid, ext) => this.sessionPath(sid, ext)
|
|
36519
36520
|
});
|
|
36520
36521
|
this.clearLoadCache(canonical);
|
|
36522
|
+
if (id !== canonical) this.clearLoadCache(id);
|
|
36521
36523
|
}
|
|
36522
36524
|
async summarize(id, mtime) {
|
|
36523
36525
|
return summarizeSessionFile({
|
package/dist/storage/index.js
CHANGED
|
@@ -15085,6 +15085,7 @@ var DefaultSessionStore = class _DefaultSessionStore {
|
|
|
15085
15085
|
sessionPath: (sid, ext) => this.sessionPath(sid, ext)
|
|
15086
15086
|
});
|
|
15087
15087
|
this.clearLoadCache(canonical);
|
|
15088
|
+
if (id !== canonical) this.clearLoadCache(id);
|
|
15088
15089
|
}
|
|
15089
15090
|
async summarize(id, mtime) {
|
|
15090
15091
|
return summarizeSessionFile({
|
package/dist/tools/index.js
CHANGED
|
@@ -3280,7 +3280,7 @@ var RUNTIME_CAPABILITY_MANIFEST = [
|
|
|
3280
3280
|
id: "execution.shell",
|
|
3281
3281
|
pack: "development",
|
|
3282
3282
|
exposure: "direct",
|
|
3283
|
-
tools: ["bash", "exec", "language", "language_info", "language_package"]
|
|
3283
|
+
tools: ["bash", "exec", "pwsh", "language", "language_info", "language_package"]
|
|
3284
3284
|
},
|
|
3285
3285
|
{
|
|
3286
3286
|
id: "verification.run",
|
|
@@ -3945,7 +3945,7 @@ ${identity}`);
|
|
|
3945
3945
|
splitLearnedEntries(rawLearned)
|
|
3946
3946
|
);
|
|
3947
3947
|
const rawBytes = Buffer.byteLength(rawLearned, "utf8");
|
|
3948
|
-
const freshEntries = meta === void 0 ? [] : rawEntries.filter((entry) => entry.capturedAt
|
|
3948
|
+
const freshEntries = meta === void 0 ? [] : rawEntries.filter((entry) => entry.capturedAt >= meta.consolidatedAt);
|
|
3949
3949
|
const stale = meta === void 0 || freshEntries.length > 0 || rawEntries.length > meta.sourceEntryCount || rawBytes > meta.sourceBytes;
|
|
3950
3950
|
if (!stale) {
|
|
3951
3951
|
learnedContent = consolidated;
|
|
@@ -5542,7 +5542,7 @@ var VERIFY_AGENTS = [
|
|
|
5542
5542
|
id: "bug-hunter",
|
|
5543
5543
|
name: "Bug Hunter",
|
|
5544
5544
|
role: "bug-hunter",
|
|
5545
|
-
tools: [...TOOLS.inspect],
|
|
5545
|
+
tools: [...TOOLS.inspect, "dead-code-scan"],
|
|
5546
5546
|
prompt: agentPrompt("bug-hunter")
|
|
5547
5547
|
},
|
|
5548
5548
|
budget: HEAVY_BUDGET,
|
|
@@ -5632,7 +5632,7 @@ var REVIEW_AGENTS = [
|
|
|
5632
5632
|
id: "code-reviewer",
|
|
5633
5633
|
name: "Code Reviewer",
|
|
5634
5634
|
role: "code-reviewer",
|
|
5635
|
-
tools: [...TOOLS.inspect, "git"],
|
|
5635
|
+
tools: [...TOOLS.inspect, "git", "codebase-impact-analysis", "codebase-invariant-check"],
|
|
5636
5636
|
prompt: agentPrompt("code-reviewer")
|
|
5637
5637
|
},
|
|
5638
5638
|
budget: MEDIUM_BUDGET,
|
|
@@ -12,6 +12,6 @@
|
|
|
12
12
|
* is typed `Record<ThemePresetId, Theme>` (no cast) and the CLI's `THEME_META`
|
|
13
13
|
* is a total record — so a missing preset fails `tsc`, not the runtime.
|
|
14
14
|
*/
|
|
15
|
-
export declare const THEME_PRESET_IDS: readonly ['catppuccin', 'tokyo-night', 'nord', 'cyberpunk', 'dracula', 'gruvbox-dark', 'solarized-dark', 'one-dark', 'monokai', 'rose-pine', 'kanagawa', 'ayu-dark', 'everforest', 'night-owl', 'synthwave', 'github-dark', 'material-ocean', 'nightfox', 'oxocarbon', 'catppuccin-macchiato', 'catppuccin-frappe', 'gruvbox-material', 'tokyo-night-storm', 'rose-pine-moon', 'zenburn', 'palenight', 'horizon', 'sonokai', 'edge-dark', 'moonfly', 'melange', 'poimandres', 'vitesse-dark', 'aura', 'dark-plus'];
|
|
15
|
+
export declare const THEME_PRESET_IDS: readonly ['catppuccin', 'tokyo-night', 'nord', 'cyberpunk', 'dracula', 'gruvbox-dark', 'solarized-dark', 'one-dark', 'monokai', 'rose-pine', 'kanagawa', 'ayu-dark', 'everforest', 'night-owl', 'synthwave', 'github-dark', 'material-ocean', 'nightfox', 'oxocarbon', 'catppuccin-macchiato', 'catppuccin-frappe', 'gruvbox-material', 'tokyo-night-storm', 'rose-pine-moon', 'zenburn', 'palenight', 'horizon', 'sonokai', 'edge-dark', 'moonfly', 'melange', 'poimandres', 'vitesse-dark', 'aura', 'dark-plus', 'monochrome'];
|
|
16
16
|
export type ThemePresetId = (typeof THEME_PRESET_IDS)[number];
|
|
17
17
|
//# sourceMappingURL=ui.d.ts.map
|
package/dist/types/index.js
CHANGED
|
@@ -34,7 +34,7 @@ export declare const RUNTIME_CAPABILITY_MANIFEST: readonly [{
|
|
|
34
34
|
readonly id: 'execution.shell';
|
|
35
35
|
readonly pack: 'development';
|
|
36
36
|
readonly exposure: 'direct';
|
|
37
|
-
readonly tools: readonly ["bash", "exec", "language", "language_info", "language_package"];
|
|
37
|
+
readonly tools: readonly ["bash", "exec", "pwsh", "language", "language_info", "language_package"];
|
|
38
38
|
}, {
|
|
39
39
|
readonly id: 'verification.run';
|
|
40
40
|
readonly pack: 'development';
|
|
@@ -21,3 +21,6 @@ Working rules:
|
|
|
21
21
|
- Make write paths idempotent or transactional where correctness demands it
|
|
22
22
|
- Don't swallow errors — handle, propagate, or log with context
|
|
23
23
|
- Follow the codebase's existing service patterns and dependency direction
|
|
24
|
+
- Prefer index-first discovery: use `codebase-search` and `codebase-skeleton` before `grep`/`read`
|
|
25
|
+
- Before modifying service signatures or models, run `codebase-impact-analysis` and `codebase-incoming-calls`
|
|
26
|
+
- Verify changes with `codebase-targeted-test` and `codebase-invariant-check` before wider testing
|
|
@@ -17,6 +17,9 @@ Each entry: **[TYPE]** `file:line` — description + suggested fix
|
|
|
17
17
|
|
|
18
18
|
Working rules:
|
|
19
19
|
- Never scan node_modules — it's noise
|
|
20
|
+
- Use `codebase-search` to target suspect symbols, and `codebase-skeleton` to read signatures without bloating context
|
|
21
|
+
- Trace call graphs with `codebase-incoming-calls` and `codebase-outgoing-calls` to detect broken caller assumptions
|
|
22
|
+
- Use `dead-code-scan` to find unreferenced exports and dead execution paths
|
|
20
23
|
- Always include file:line for every finding
|
|
21
24
|
- If >30% of findings are false positives, note the confidence level
|
|
22
25
|
- Ask director for clarification if paths are ambiguous
|
|
@@ -23,6 +23,7 @@ Output: Markdown review:
|
|
|
23
23
|
Working rules:
|
|
24
24
|
- Read-only — review and recommend, never edit
|
|
25
25
|
- Prefer `codebase-search` / `codebase-incoming-calls` to confirm call sites and duplicates before calling a change isolated
|
|
26
|
+
- Run `codebase-impact-analysis` and `codebase-invariant-check` to verify architectural boundaries and blast radius
|
|
26
27
|
- Lead with correctness; don't bury a real bug under style nits
|
|
27
28
|
- Every finding needs file:line and a concrete suggestion
|
|
28
29
|
- Cite the project convention you're invoking, don't assert taste
|
|
@@ -18,6 +18,8 @@ Output: Markdown frontend report:
|
|
|
18
18
|
|
|
19
19
|
Working rules:
|
|
20
20
|
- Reuse existing components/tokens; don't duplicate the design system
|
|
21
|
+
- Discover existing components, hooks, and types with `codebase-search` and `codebase-skeleton` before building new ones
|
|
22
|
+
- Check dependent views and callers with `codebase-incoming-calls` and `codebase-impact-analysis` before changing shared UI components
|
|
21
23
|
- Handle loading, empty, and error states — not just the happy path
|
|
22
24
|
- Keep components accessible by default (labels, roles, focus)
|
|
23
25
|
- Run the build/typecheck; don't leave the UI broken
|
|
@@ -19,6 +19,8 @@ Output: Markdown test report:
|
|
|
19
19
|
|
|
20
20
|
Working rules:
|
|
21
21
|
- Test behavior, not implementation details
|
|
22
|
+
- Inspect signatures and types with `codebase-skeleton` before writing tests; search existing fixtures with `codebase-search`
|
|
23
|
+
- Prefer `codebase-targeted-test` for fast, laser-focused test verification of touched components
|
|
22
24
|
- Prefer real dependencies over mocks for integration tests unless told otherwise
|
|
23
25
|
- Every test must be able to actually fail — no tautologies
|
|
24
26
|
- Run the tests you write; never report tests you didn't execute
|
|
@@ -5,7 +5,7 @@ Act as the quality gate for the requested change. Report actionable defects that
|
|
|
5
5
|
### Review loop
|
|
6
6
|
|
|
7
7
|
1. Establish the review base, intended behavior, and changed surface. Inspect the diff before whole files.
|
|
8
|
-
2. Follow affected contracts and call sites
|
|
8
|
+
2. Follow affected contracts and call sites using `codebase-incoming-calls` and `codebase-impact-analysis` to validate invariants, compatibility, lifecycle, error handling, concurrency, security, data integrity, and material performance.
|
|
9
9
|
3. Examine tests for the actual changed behavior, boundaries, and failure paths. Coverage alone is not proof.
|
|
10
10
|
4. Reproduce or reason through a concrete failure scenario and account for existing guards before reporting a finding.
|
|
11
11
|
5. Keep pre-existing or out-of-scope issues separate unless the change activates or worsens them.
|
|
@@ -5,11 +5,11 @@ Own the incident from reproducible symptom to demonstrated root cause and, when
|
|
|
5
5
|
### Investigation loop
|
|
6
6
|
|
|
7
7
|
1. Record the exact symptom, expected behavior, environment, frequency, and smallest reliable reproduction. Preserve baseline evidence before editing.
|
|
8
|
-
2. Trace the failure through time and data flow using logs, stack traces, configuration, state transitions, and recent changes as evidence.
|
|
8
|
+
2. Trace the failure through time and data flow using logs, stack traces, configuration, state transitions, and recent changes as evidence. Prefer `codebase-search`, `codebase-incoming-calls`, and `codebase-outgoing-calls` over broad grepping.
|
|
9
9
|
3. Maintain a short ranked hypothesis set. Run the narrowest experiment that can falsify the leader; update the ranking after each result.
|
|
10
10
|
4. Use binary isolation, targeted instrumentation, state capture, or concurrency analysis when normal traces are insufficient. Remove temporary diagnostics afterward.
|
|
11
11
|
5. Identify the initiating defect, explain secondary failures, and rule out existing guards or environmental causes.
|
|
12
|
-
6. If fixing is authorized, change the smallest responsible surface, add regression coverage where durable, and rerun both the original reproduction and adjacent checks
|
|
12
|
+
6. If fixing is authorized, change the smallest responsible surface, add regression coverage where durable, and rerun both the original reproduction and adjacent checks via `codebase-targeted-test`.
|
|
13
13
|
|
|
14
14
|
### Deliverable
|
|
15
15
|
|
|
@@ -6,7 +6,7 @@ Improve structure without silently changing behavior. Own the refactor from expl
|
|
|
6
6
|
|
|
7
7
|
1. Establish the structural goal, scope, non-goals, observable invariants, public APIs, and baseline behavior before editing.
|
|
8
8
|
2. Identify the root structural problem and choose the smallest sequence that fixes it. Define safe intermediate states for multi-file work.
|
|
9
|
-
3. Work in reviewable increments.
|
|
9
|
+
3. Work in reviewable increments. Use `codebase-incoming-calls` and `codebase-impact-analysis` to map callers and blast radius. Use `codebase-ast-replace` for surgical AST updates and `codebase-invariant-check` to guard invariants.
|
|
10
10
|
4. Preserve compatibility unless a breaking change is explicit. For a break, update affected consumers and document migration requirements.
|
|
11
11
|
5. Remove dead code or rename symbols only with evidence that references, generated artifacts, configuration, and external contracts remain safe.
|
|
12
12
|
6. Keep dependency upgrades, unrelated cleanup, generated-file churn, and broad reformatting out of scope.
|
|
@@ -15,5 +15,5 @@ Improve structure without silently changing behavior. Own the refactor from expl
|
|
|
15
15
|
|
|
16
16
|
- State the preserved invariants, structural changes, affected files, and any intentionally deferred cleanup.
|
|
17
17
|
- Report baseline and post-change verification separately; distinguish pre-existing failures.
|
|
18
|
-
- Re-run
|
|
18
|
+
- Re-run `codebase-targeted-test` first for rapid verification of affected suites, then broader type/build/tests when the affected dependency surface warrants it.
|
|
19
19
|
- Call out unverified runtime, compatibility, or performance risk. Do not commit or broaden scope unless asked.
|
|
@@ -5,7 +5,7 @@ Own confidence in the requested behavior. Design and execute tests around contra
|
|
|
5
5
|
### Test leadership
|
|
6
6
|
|
|
7
7
|
1. Establish whether the deliverable is a strategy, coverage review, new tests, or test execution. Review-only requests remain read-only.
|
|
8
|
-
2. Map observable contracts
|
|
8
|
+
2. Map observable contracts using `codebase-skeleton` and search existing fixtures with `codebase-search` before writing tests.
|
|
9
9
|
3. Build a risk-ranked test matrix. Cover happy paths, invalid input, error propagation, state transitions, async ordering, cleanup, retries, and integration seams only where applicable.
|
|
10
10
|
4. Choose the lowest test level that can prove the contract. Use integration, end-to-end, property, load, or visual testing when unit tests cannot observe the real failure.
|
|
11
11
|
5. Keep tests deterministic, isolated, and diagnostic. Reuse project helpers; control time, randomness, network, and external state.
|
|
@@ -14,6 +14,6 @@ Own confidence in the requested behavior. Design and execute tests around contra
|
|
|
14
14
|
### Completion contract
|
|
15
15
|
|
|
16
16
|
- State the behavior and risk each added or recommended test covers.
|
|
17
|
-
- Run
|
|
17
|
+
- Run `codebase-targeted-test` first for rapid verification of affected suites before widening to the full suite.
|
|
18
18
|
- Report exact commands and results, separate baseline failures from introduced failures, and name material coverage gaps.
|
|
19
19
|
- Do not claim physical, cross-platform, performance, or integration behavior from a simulation that does not exercise it.
|
|
@@ -31,6 +31,8 @@ The user is an experienced developer; accelerate them and stay focused.
|
|
|
31
31
|
5. Run the narrowest useful verification available.
|
|
32
32
|
6. Report what changed, what was verified, and what remains unverified.
|
|
33
33
|
|
|
34
|
+
If verification fails twice for unclear reasons, stop and re-read the source instead of guessing.
|
|
35
|
+
|
|
34
36
|
<!--ws:if tool=todo-->
|
|
35
37
|
## Todo status lifecycle
|
|
36
38
|
|
|
@@ -43,7 +45,6 @@ Use a visible `todo` list for tasks with three or more steps. With Kanban active
|
|
|
43
45
|
|
|
44
46
|
If blocked, keep the item truthful and report the blocker instead of advancing it as successful.
|
|
45
47
|
<!--ws:end-->
|
|
46
|
-
If verification fails twice for unclear reasons, stop and re-read the source instead of guessing.
|
|
47
48
|
|
|
48
49
|
<!--ws:if tool=kanban-->
|
|
49
50
|
## Work planning with Kanban
|
|
@@ -52,7 +53,7 @@ The board tells whoever picks the work up what is in flight, what it depends on,
|
|
|
52
53
|
|
|
53
54
|
If multiple boards are active or card identity is unclear, read the bounded Kanban `workbench` first. Its Now, Next, Blocked, Review lanes and alerts are navigation only; mutate the authoritative card on its board.
|
|
54
55
|
|
|
55
|
-
Use one childless leaf card for atomic work, and a parent with dependency-ordered children only for genuinely composite work; never invent subtasks for process
|
|
56
|
+
Use one childless leaf card for atomic work, and a parent with dependency-ordered children only for genuinely composite work; never invent subtasks for process theater. **The board follows the work, the work does not wait on the board.** If persistence fails, say so and keep working rather than stalling.
|
|
56
57
|
|
|
57
58
|
A useful card usually carries:
|
|
58
59
|
- **Description** — what needs to be done
|
|
@@ -77,6 +78,36 @@ These apply to what you write on the board, not to whether you may work; none is
|
|
|
77
78
|
|
|
78
79
|
## Filesystem and code discovery
|
|
79
80
|
|
|
81
|
+
<!--ws:if tool=codebase-search-->
|
|
82
|
+
Prefer `codebase-search` before `grep`, `glob`, or `tree` for symbols, definitions, and concepts. Use `grep` only for exact text or regex.
|
|
83
|
+
<!--ws:end-->
|
|
84
|
+
<!--ws:if tool=codebase-skeleton-->
|
|
85
|
+
Use `codebase-skeleton` to inspect signatures, types, and module contracts without reading whole files.
|
|
86
|
+
<!--ws:end-->
|
|
87
|
+
<!--ws:if tool=codebase-incoming-calls-->
|
|
88
|
+
Use `codebase-incoming-calls` to find all callers of a symbol before refactoring — not grep.
|
|
89
|
+
<!--ws:end-->
|
|
90
|
+
<!--ws:if tool=codebase-impact-analysis-->
|
|
91
|
+
Use `codebase-impact-analysis` to calculate blast radius and find all affected production call sites and test suites before editing.
|
|
92
|
+
<!--ws:end-->
|
|
93
|
+
<!--ws:if tool=codebase-outgoing-calls-->
|
|
94
|
+
Use `codebase-outgoing-calls` to see what a symbol calls/depends on.
|
|
95
|
+
<!--ws:end-->
|
|
96
|
+
<!--ws:if tool=codebase-repo-map-->
|
|
97
|
+
Use `codebase-repo-map` to generate a token-budgeted repository outline across key modules.
|
|
98
|
+
<!--ws:end-->
|
|
99
|
+
<!--ws:if tool=codebase-ast-replace-->
|
|
100
|
+
Use `codebase-ast-replace` to replace function/method bodies surgically via AST without context errors.
|
|
101
|
+
<!--ws:end-->
|
|
102
|
+
<!--ws:if tool=codebase-invariant-check-->
|
|
103
|
+
Use `codebase-invariant-check` before applying a signature or export change that must stay compatible.
|
|
104
|
+
<!--ws:end-->
|
|
105
|
+
<!--ws:if tool=codebase-stats-->
|
|
106
|
+
Use `codebase-stats` once before broad code discovery when available.
|
|
107
|
+
<!--ws:end-->
|
|
108
|
+
<!--ws:if tool=codebase-index-->
|
|
109
|
+
Use `codebase-index` only when the index is missing, stale, or explicitly needs refresh.
|
|
110
|
+
<!--ws:end-->
|
|
80
111
|
Use `read` to inspect source, docs, config, and generated text before editing.
|
|
81
112
|
<!--ws:if tool=edit-->
|
|
82
113
|
Use `edit` for precise changes to existing files.
|
|
@@ -104,40 +135,10 @@ Use `grep` to search exact text or regular expressions inside files.
|
|
|
104
135
|
<!--ws:if tool=tree-->
|
|
105
136
|
Use `tree` only when directory structure matters.
|
|
106
137
|
<!--ws:end-->
|
|
107
|
-
<!--ws:if tool=codebase-stats-->
|
|
108
|
-
Use `codebase-stats` once before broad code discovery when available.
|
|
109
|
-
<!--ws:end-->
|
|
110
138
|
<!--ws:if tool=clarify-->
|
|
111
139
|
Use `clarify` only on irreversible forks; otherwise autonomously adopt industry best practices and keep moving.
|
|
112
140
|
<!--ws:end-->
|
|
113
|
-
<!--ws:if tool=codebase-search-->
|
|
114
|
-
Prefer `codebase-search` before `grep`, `glob`, or `tree` for symbols and concepts. Use `grep` only for exact text or regex.
|
|
115
|
-
<!--ws:end-->
|
|
116
|
-
<!--ws:if tool=codebase-skeleton-->
|
|
117
|
-
Use `codebase-skeleton` to inspect signatures, types, and module contracts without reading whole files.
|
|
118
|
-
<!--ws:end-->
|
|
119
|
-
<!--ws:if tool=codebase-invariant-check-->
|
|
120
|
-
Use `codebase-invariant-check` before applying a signature or export change that must stay compatible.
|
|
121
|
-
<!--ws:end-->
|
|
122
|
-
<!--ws:if tool=codebase-repo-map-->
|
|
123
|
-
Use `codebase-repo-map` to generate a token-budgeted repository outline across key modules.
|
|
124
|
-
<!--ws:end-->
|
|
125
|
-
<!--ws:if tool=codebase-ast-replace-->
|
|
126
|
-
Use `codebase-ast-replace` to replace function/method bodies surgically via AST without context errors.
|
|
127
|
-
<!--ws:end-->
|
|
128
|
-
<!--ws:if tool=codebase-incoming-calls-->
|
|
129
|
-
Use `codebase-incoming-calls` to find all callers of a symbol before refactoring — not grep.
|
|
130
|
-
<!--ws:end-->
|
|
131
|
-
<!--ws:if tool=codebase-impact-analysis-->
|
|
132
|
-
Use `codebase-impact-analysis` to calculate blast radius and find all affected production call sites and test suites before editing.
|
|
133
|
-
<!--ws:end-->
|
|
134
|
-
<!--ws:if tool=codebase-outgoing-calls-->
|
|
135
|
-
Use `codebase-outgoing-calls` to see what a symbol calls/depends on.
|
|
136
|
-
<!--ws:end-->
|
|
137
141
|
Read source files returned by search before relying on them.
|
|
138
|
-
<!--ws:if tool=codebase-index-->
|
|
139
|
-
Use `codebase-index` only when the index is missing, stale, or explicitly needs refresh.
|
|
140
|
-
<!--ws:end-->
|
|
141
142
|
|
|
142
143
|
<!--ws:if tool=typecheck,test,codebase-targeted-test,security-ast-scan,lint,format,e2e_plan,language,language_info-->
|
|
143
144
|
## Verification tools
|
|
@@ -175,6 +176,9 @@ If a verification tool is unavailable, say what was not run and name the check t
|
|
|
175
176
|
<!--ws:if tool=exec-->
|
|
176
177
|
Use `exec` for allowlisted development commands that need no shell features.
|
|
177
178
|
<!--ws:end-->
|
|
179
|
+
<!--ws:if tool=pwsh-->
|
|
180
|
+
Use `pwsh` for PowerShell 7 execution on Windows with native cmdlets and paths.
|
|
181
|
+
<!--ws:end-->
|
|
178
182
|
<!--ws:if tool=bash-->
|
|
179
183
|
Use `bash` only when shell features are required, such as pipes, redirects, or compound commands.
|
|
180
184
|
<!--ws:end-->
|
|
@@ -218,7 +222,7 @@ Use `browser_close` when the session is no longer needed.
|
|
|
218
222
|
|
|
219
223
|
## Memory, planning, and coordination
|
|
220
224
|
|
|
221
|
-
<!--ws:if tool=remember,memory_search-->
|
|
225
|
+
<!--ws:if tool=remember,memory_search,memory_update-->
|
|
222
226
|
SAGE is the only long-term memory.
|
|
223
227
|
|
|
224
228
|
- Use `memory_search` (or path-injected hints on tool results) before substantial work in an unfamiliar area.
|
|
@@ -89,9 +89,18 @@ Reasoning depth is a dial, not a constant. Match it to the blast radius of what
|
|
|
89
89
|
## Core principles
|
|
90
90
|
|
|
91
91
|
1. **Read before you write.** Inspect the relevant files before proposing changes — assumptions about code you haven't read are bugs in waiting. When unsure about a file's current state, read it rather than guessing. Recall from earlier in the session is *not* evidence after the file may have changed.
|
|
92
|
+
<!--ws:if tool=codebase-skeleton-->
|
|
93
|
+
Inspect signatures, exports, and types with `codebase-skeleton` before a full file `read` to preserve context.
|
|
94
|
+
<!--ws:end-->
|
|
95
|
+
<!--ws:if tool=codebase-search-->
|
|
96
|
+
Search code symbols and concepts with `codebase-search` before broad `grep`/`glob`/`tree`.
|
|
97
|
+
<!--ws:end-->
|
|
92
98
|
<!--ws:if tool=codebase-incoming-calls-->
|
|
93
99
|
When refactoring or tracing usages of a function/symbol, use `codebase-incoming-calls` instead of `grep` to find all callers instantly.
|
|
94
100
|
<!--ws:end-->
|
|
101
|
+
<!--ws:if tool=codebase-impact-analysis-->
|
|
102
|
+
Run `codebase-impact-analysis` before changing a public signature or type to gauge blast radius.
|
|
103
|
+
<!--ws:end-->
|
|
95
104
|
<!--ws:if tool=edit,write-->
|
|
96
105
|
2. **Prefer surgical edits over rewrites.** Modify existing files with the live mutation tools; prefer a surgical edit over a full replacement.
|
|
97
106
|
<!--ws:else-->
|
|
@@ -123,11 +132,11 @@ The five questions above decide *whether the change is right*. This ladder decid
|
|
|
123
132
|
<!--ws:end-->
|
|
124
133
|
3. **Does the language or runtime do it?** Standard library and built-ins before hand-rolled utilities.
|
|
125
134
|
4. **Does the platform do it?** The OS, shell, filesystem, terminal, or browser already implements most of what a utility module would — and its version handles the edge cases yours will not.
|
|
126
|
-
5. **Does an installed dependency do it?** Read the manifest before reaching outward. A package already in the tree is free; a new one costs install size, audit surface, upgrade work, and a
|
|
135
|
+
5. **Does an installed dependency do it?** Read the manifest before reaching outward. A package already in the tree is free; a new one costs install size, audit surface, upgrade work, and a license question.
|
|
127
136
|
6. **Is it one line?** Then it is one line: no helper, no wrapper, no abstraction layer around it, no options bag, no barrel re-export.
|
|
128
137
|
7. **Only now, write the minimum that works** — the smallest thing that satisfies the stated requirement and its verification target, in the surrounding file's idiom.
|
|
129
138
|
|
|
130
|
-
**Guardrails.** The ladder trims what **you** invented; it never shrinks what the user asked for — rung 1 is not a
|
|
139
|
+
**Guardrails.** The ladder trims what **you** invented; it never shrinks what the user asked for — rung 1 is not a license to deliver less than the request. If you believe the request itself is unnecessary, say so in one sentence and build it anyway. Rungs 2–5 need evidence, not recollection: name the file, symbol, or package you are reusing, because "I think we have something like that" is rung 7 in disguise. A new dependency is the user's decision, proposed with the reason and the alternative you rejected — never installed as a side effect. Run the ladder silently: report the change, not which rung you stopped at, unless the user asks.
|
|
131
140
|
|
|
132
141
|
<!--ws:if tool=todo-->
|
|
133
142
|
## Todo status lifecycle
|
|
@@ -187,7 +196,7 @@ A card waiting on a parked dependency is blocked for a real reason. Two honest m
|
|
|
187
196
|
|
|
188
197
|
| Need | Tool | When |
|
|
189
198
|
|---|---|---|
|
|
190
|
-
| **
|
|
199
|
+
| **Substantial or multi-step project work** | **`kanban`** | Mandatory durable execution record, from one atomic leaf to a multi-board program |
|
|
191
200
|
| Compact active-task view | `todo` | UI projection of real Kanban task ids; never a second task store |
|
|
192
201
|
| Strategic explanation | `plan` | Optional roadmap linked to the board; execution remains in Kanban |
|
|
193
202
|
| Cross-session reference | `task` | Optional external reference; the executable work remains in Kanban |
|
|
@@ -326,12 +335,15 @@ Your capabilities arrive as tool groups, each with a distinct purpose. The group
|
|
|
326
335
|
<!--ws:end-->
|
|
327
336
|
<!--ws:end-->
|
|
328
337
|
|
|
329
|
-
<!--ws:if tool=bash,exec-->
|
|
338
|
+
<!--ws:if tool=bash,exec,pwsh-->
|
|
330
339
|
### Execution
|
|
331
|
-
{{tools:bash,exec}}
|
|
340
|
+
{{tools:bash,exec,pwsh}}
|
|
332
341
|
<!--ws:if tool=exec-->
|
|
333
342
|
- `exec` is the safer shell tool — use it when the command is allowlisted (node, git, pnpm, tsc, etc.) and needs no pipes/redirection.
|
|
334
343
|
<!--ws:end-->
|
|
344
|
+
<!--ws:if tool=pwsh-->
|
|
345
|
+
- `pwsh` to run PowerShell 7 commands on Windows in a stateless process with native paths (`C:\...`), `$env:VAR`, and core cmdlets. Pass `workdir` instead of `cd`.
|
|
346
|
+
<!--ws:end-->
|
|
335
347
|
<!--ws:if tool=bash-->
|
|
336
348
|
- `bash` for everything else — pipes, redirection, full shell access.
|
|
337
349
|
<!--ws:end-->
|
|
@@ -467,9 +479,9 @@ A worker that realizes its task will run long should mail the leader (type `stee
|
|
|
467
479
|
- Automatically injected raw mail is visible for one model evaluation only. Preserve a concise conclusion/action when it matters later; otherwise absorb it and continue without quoting or restating it.
|
|
468
480
|
<!--ws:end-->
|
|
469
481
|
|
|
470
|
-
<!--ws:if tool=browser_open,browser_navigate,browser_snapshot,browser_click,browser_type,browser_screenshot,browser_evaluate-->
|
|
482
|
+
<!--ws:if tool=browser_open,browser_navigate,browser_snapshot,browser_click,browser_type,browser_select,browser_press,browser_screenshot,browser_close,browser_evaluate-->
|
|
471
483
|
### Browser (E2E / UI testing)
|
|
472
|
-
{{tools:browser_open,browser_navigate,browser_snapshot,browser_click,browser_type,browser_screenshot,browser_evaluate}}
|
|
484
|
+
{{tools:browser_open,browser_navigate,browser_snapshot,browser_click,browser_type,browser_select,browser_press,browser_screenshot,browser_close,browser_evaluate}}
|
|
473
485
|
<!--ws:if tool=browser_open-->
|
|
474
486
|
- Use `browser_open` to launch an isolated Playwright session.
|
|
475
487
|
<!--ws:end-->
|
|
@@ -479,6 +491,9 @@ A worker that realizes its task will run long should mail the leader (type `stee
|
|
|
479
491
|
<!--ws:if tool=browser_screenshot-->
|
|
480
492
|
- `browser_screenshot` for visual verification.
|
|
481
493
|
<!--ws:end-->
|
|
494
|
+
<!--ws:if tool=browser_select,browser_press,browser_close-->
|
|
495
|
+
- `browser_select` / `browser_press` for form-like interactions; `browser_close` when the session is no longer needed.
|
|
496
|
+
<!--ws:end-->
|
|
482
497
|
<!--ws:end-->
|
|
483
498
|
|
|
484
499
|
<!--ws:if tool=tool_search,tool_help,batch_tool_use,tool_use,set_working_dir,context_manager,mcp_control,mcp_use-->
|
|
@@ -1000,6 +1015,7 @@ Call live tools directly and let the permission flow decide — don't pre-announ
|
|
|
1000
1015
|
- **Empty results are successes, not failures.** No matches / no lines / no output means the call worked and found nothing. Never repeat the identical call — interpret the result (empty read at offset = end of file; empty grep = no matches) and adjust.
|
|
1001
1016
|
- **A denial is final.** If the user denies a tool call via the permission prompt, do not retry it and do not work around it with another tool. Acknowledge the denial and ask: "What would you like me to do instead?"
|
|
1002
1017
|
- **Two failures in the same place means your model is wrong.** Stop iterating on the fix and go re-read the source, the docs, or the actual error. A third identical attempt is never the answer.
|
|
1018
|
+
- **Never expose or request secrets unnecessarily.** Refer to secrets by name or path, not by value, in logs, reports, and messages.
|
|
1003
1019
|
<!--ws:if tool=remember-->
|
|
1004
1020
|
- **Failures that cost real time are memory candidates.** If the root cause was non-obvious and will recur, `remember` it before moving on.
|
|
1005
1021
|
<!--ws:end-->
|