@toolu/opencode 6.8.0
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/generated/GENERATED-NOTES.md +16 -0
- package/generated/agents/toolu--architect.md +52 -0
- package/generated/agents/toolu--deep-explore.md +65 -0
- package/generated/agents/toolu--implementer.md +50 -0
- package/generated/agents/toolu--quick-task.md +54 -0
- package/generated/agents/toolu--research-agent.md +101 -0
- package/generated/commands/toolu--commit.md +8 -0
- package/generated/commands/toolu--review-and-commit.md +8 -0
- package/generated/opencode.toolu.json +116 -0
- package/generated/skills/toolu--brainstorm/SKILL.md +57 -0
- package/generated/skills/toolu--brainstorm/references/design-questions.md +36 -0
- package/generated/skills/toolu--commit--skill/SKILL.md +11 -0
- package/generated/skills/toolu--debug/SKILL.md +54 -0
- package/generated/skills/toolu--deep-research/SKILL.md +51 -0
- package/generated/skills/toolu--execution/SKILL.md +77 -0
- package/generated/skills/toolu--orchestrator/SKILL.md +145 -0
- package/generated/skills/toolu--orchestrator/references/delegation-cost.md +104 -0
- package/generated/skills/toolu--orchestrator/references/model-routing.md +112 -0
- package/generated/skills/toolu--plan/SKILL.md +56 -0
- package/generated/skills/toolu--plan/references/ledger.md +18 -0
- package/generated/skills/toolu--plan-review/SKILL.md +48 -0
- package/generated/skills/toolu--review-and-commit--skill/SKILL.md +10 -0
- package/generated/skills/toolu--setup/SKILL.md +24 -0
- package/generated/skills/toolu--setup/scripts/setup.sh +206 -0
- package/generated/skills/toolu--spec/SKILL.md +67 -0
- package/generated/skills/toolu--spec-review/SKILL.md +50 -0
- package/generated/skills/toolu--test/SKILL.md +49 -0
- package/package.json +51 -0
- package/plugins/agent-browser/.claude-plugin/plugin.json +18 -0
- package/plugins/agent-browser/.codex-plugin/plugin.json +7 -0
- package/plugins/agent-browser/README.md +18 -0
- package/plugins/agent-browser/hooks/hooks.json +15 -0
- package/plugins/agent-browser/hooks/session-start.sh +42 -0
- package/plugins/agent-browser/skills/agent-browser/SKILL.md +77 -0
- package/plugins/agent-browser/skills/agent-browser/scripts/agent-browser.sh +80 -0
- package/plugins/ast-grep/.claude-plugin/plugin.json +18 -0
- package/plugins/ast-grep/.codex-plugin/plugin.json +7 -0
- package/plugins/ast-grep/README.md +21 -0
- package/plugins/ast-grep/hooks/hooks.json +15 -0
- package/plugins/ast-grep/hooks/post-tools.d/byte-savings.sh +67 -0
- package/plugins/ast-grep/hooks/pre-tools.d/search-nudge.sh +170 -0
- package/plugins/ast-grep/hooks/register.sh +68 -0
- package/plugins/ast-grep/scripts/byte-savings-report.sh +28 -0
- package/plugins/ast-grep/skills/ast-grep/SKILL.md +127 -0
- package/plugins/ast-grep/skills/ast-grep/references/ast-grep-advanced.md +44 -0
- package/plugins/ast-grep/skills/ast-grep/scripts/ast-grep.sh +103 -0
- package/plugins/context7/.claude-plugin/plugin.json +18 -0
- package/plugins/context7/.codex-plugin/plugin.json +7 -0
- package/plugins/context7/README.md +19 -0
- package/plugins/context7/hooks/hooks.json +15 -0
- package/plugins/context7/hooks/session-start.sh +42 -0
- package/plugins/context7/skills/context7/SKILL.md +64 -0
- package/plugins/context7/skills/context7/scripts/search.sh +151 -0
- package/plugins/exa-search/.claude-plugin/plugin.json +18 -0
- package/plugins/exa-search/.codex-plugin/plugin.json +7 -0
- package/plugins/exa-search/README.md +19 -0
- package/plugins/exa-search/hooks/hooks.json +15 -0
- package/plugins/exa-search/hooks/session-start.sh +34 -0
- package/plugins/exa-search/skills/exa-search/SKILL.md +91 -0
- package/plugins/exa-search/skills/exa-search/scripts/search.sh +221 -0
- package/plugins/jev/.claude-plugin/plugin.json +19 -0
- package/plugins/jev/.codex-plugin/plugin.json +7 -0
- package/plugins/jev/README.md +61 -0
- package/plugins/jev/hooks/hooks.json +25 -0
- package/plugins/jev/hooks/lib/common.sh +49 -0
- package/plugins/jev/hooks/session-start.sh +45 -0
- package/plugins/jev/hooks/user-prompt-submit.sh +41 -0
- package/plugins/jev/skills/jev/SKILL.md +81 -0
- package/plugins/jev/skills/jev/evals/README.md +98 -0
- package/plugins/jev/skills/jev/references/problem-solving.md +198 -0
- package/plugins/jev/skills/jev/scripts/jev.sh +405 -0
- package/plugins/jira/.claude-plugin/plugin.json +18 -0
- package/plugins/jira/.codex-plugin/plugin.json +7 -0
- package/plugins/jira/README.md +42 -0
- package/plugins/jira/hooks/hooks.json +15 -0
- package/plugins/jira/hooks/session-start.sh +34 -0
- package/plugins/jira/skills/jira/SKILL.md +123 -0
- package/plugins/jira/skills/jira/scripts/jira.sh +70 -0
- package/plugins/jira/skills/jira/scripts/lib/adf.sh +17 -0
- package/plugins/jira/skills/jira/scripts/lib/attachment.sh +94 -0
- package/plugins/jira/skills/jira/scripts/lib/board.sh +58 -0
- package/plugins/jira/skills/jira/scripts/lib/http.sh +184 -0
- package/plugins/jira/skills/jira/scripts/lib/issue.sh +159 -0
- package/plugins/jira/skills/jira/scripts/lib/paginate.sh +45 -0
- package/plugins/jira/skills/jira/scripts/lib/plan-parse.sh +70 -0
- package/plugins/jira/skills/jira/scripts/lib/plan-run.sh +115 -0
- package/plugins/jira/skills/jira/scripts/lib/plan-store.sh +168 -0
- package/plugins/jira/skills/jira/scripts/lib/plan.sh +108 -0
- package/plugins/jira/skills/jira/scripts/lib/project.sh +42 -0
- package/plugins/jira/skills/jira/scripts/lib/raw.sh +15 -0
- package/plugins/jira/skills/jira/scripts/lib/search.sh +41 -0
- package/plugins/jira/skills/jira/scripts/lib/sprint.sh +88 -0
- package/plugins/jira/skills/jira/scripts/lib/user.sh +45 -0
- package/plugins/jira/skills/jira/scripts/lib/worklog.sh +56 -0
- package/plugins/pr-babysit/.claude-plugin/plugin.json +25 -0
- package/plugins/pr-babysit/.codex-plugin/plugin.json +7 -0
- package/plugins/pr-babysit/README.md +38 -0
- package/plugins/pr-babysit/commands/babysit.md +13 -0
- package/plugins/pr-babysit/hooks/check-toolu.sh +20 -0
- package/plugins/pr-babysit/hooks/hooks.json +15 -0
- package/plugins/pr-babysit/scripts/babysit-tick.sh +133 -0
- package/plugins/pr-babysit/scripts/collect-pr.sh +224 -0
- package/plugins/pr-babysit/scripts/lib/common.sh +146 -0
- package/plugins/pr-babysit/scripts/lib/gh.sh +150 -0
- package/plugins/pr-babysit/scripts/lib/lock.sh +84 -0
- package/plugins/pr-babysit/scripts/lib/normalize.sh +98 -0
- package/plugins/pr-babysit/scripts/lib/state.sh +37 -0
- package/plugins/pr-babysit/scripts/parse-verdict.sh +171 -0
- package/plugins/pr-babysit/scripts/record.sh +69 -0
- package/plugins/pr-babysit/scripts/reduce-state.sh +245 -0
- package/plugins/pr-babysit/scripts/reply-thread.sh +90 -0
- package/plugins/pr-babysit/scripts/resolve-thread.sh +71 -0
- package/plugins/pr-babysit/skills/babysit/SKILL.md +31 -0
- package/plugins/pr-babysit/skills/babysit/references/helper.md +209 -0
- package/plugins/pr-babysit/workflows/babysit.md +722 -0
- package/plugins/python-quality/.claude-plugin/plugin.json +24 -0
- package/plugins/python-quality/.codex-plugin/plugin.json +6 -0
- package/plugins/python-quality/README.md +23 -0
- package/plugins/python-quality/hooks/check-toolu.sh +20 -0
- package/plugins/python-quality/hooks/concerns/00-preamble.sh +85 -0
- package/plugins/python-quality/hooks/concerns/10-size-file.sh +6 -0
- package/plugins/python-quality/hooks/concerns/20-tests.sh +37 -0
- package/plugins/python-quality/hooks/concerns/30-suppression.sh +33 -0
- package/plugins/python-quality/hooks/concerns/50-size-fn.sh +49 -0
- package/plugins/python-quality/hooks/concerns/70-no-mocks.sh +76 -0
- package/plugins/python-quality/hooks/concerns/90-docs.sh +52 -0
- package/plugins/python-quality/hooks/concerns/99-finalize.sh +36 -0
- package/plugins/python-quality/hooks/hooks.json +19 -0
- package/plugins/python-quality/hooks/register.sh +65 -0
- package/plugins/rust-quality/.claude-plugin/plugin.json +24 -0
- package/plugins/rust-quality/.codex-plugin/plugin.json +6 -0
- package/plugins/rust-quality/README.md +24 -0
- package/plugins/rust-quality/hooks/check-toolu.sh +20 -0
- package/plugins/rust-quality/hooks/concerns/00-preamble.sh +93 -0
- package/plugins/rust-quality/hooks/concerns/10-size-file.sh +10 -0
- package/plugins/rust-quality/hooks/concerns/20-tests.sh +84 -0
- package/plugins/rust-quality/hooks/concerns/30-suppression.sh +26 -0
- package/plugins/rust-quality/hooks/concerns/40-unsafe.sh +39 -0
- package/plugins/rust-quality/hooks/concerns/50-size-fn.sh +38 -0
- package/plugins/rust-quality/hooks/concerns/55-size-impl.sh +28 -0
- package/plugins/rust-quality/hooks/concerns/60-error-handling.sh +149 -0
- package/plugins/rust-quality/hooks/concerns/70-no-mocks.sh +139 -0
- package/plugins/rust-quality/hooks/concerns/90-docs.sh +32 -0
- package/plugins/rust-quality/hooks/concerns/99-finalize.sh +36 -0
- package/plugins/rust-quality/hooks/hooks.json +19 -0
- package/plugins/rust-quality/hooks/register.sh +65 -0
- package/plugins/statusline/.claude-plugin/plugin.json +19 -0
- package/plugins/statusline/.codex-plugin/plugin.json +7 -0
- package/plugins/statusline/README.md +108 -0
- package/plugins/statusline/commands/setup.md +30 -0
- package/plugins/statusline/hooks/hooks.json +15 -0
- package/plugins/statusline/hooks/session-start.sh +45 -0
- package/plugins/statusline/scripts/collect-status.sh +147 -0
- package/plugins/statusline/scripts/setup.sh +93 -0
- package/plugins/statusline/scripts/status.sh +55 -0
- package/plugins/statusline/skills/status/SKILL.md +13 -0
- package/plugins/statusline/statusline.sh +177 -0
- package/plugins/toolu/.claude-plugin/plugin.json +19 -0
- package/plugins/toolu/.codex-plugin/plugin.json +7 -0
- package/plugins/toolu/README.md +35 -0
- package/plugins/toolu/agents/.gitkeep +0 -0
- package/plugins/toolu/agents/architect.md +52 -0
- package/plugins/toolu/agents/deep-explore.md +65 -0
- package/plugins/toolu/agents/implementer.md +50 -0
- package/plugins/toolu/agents/quick-task.md +54 -0
- package/plugins/toolu/agents/research-agent.md +107 -0
- package/plugins/toolu/assets/agents/architect.toml +9 -0
- package/plugins/toolu/assets/agents/deep-explore.toml +9 -0
- package/plugins/toolu/assets/agents/implementer.toml +9 -0
- package/plugins/toolu/assets/agents/quick-task.toml +9 -0
- package/plugins/toolu/assets/agents/research-agent.toml +9 -0
- package/plugins/toolu/commands/.gitkeep +0 -0
- package/plugins/toolu/commands/commit.md +5 -0
- package/plugins/toolu/commands/review-and-commit.md +5 -0
- package/plugins/toolu/hooks/docs/gates.md +157 -0
- package/plugins/toolu/hooks/docs/model-routing.md +14 -0
- package/plugins/toolu/hooks/docs/post-compaction.md +3 -0
- package/plugins/toolu/hooks/docs/push-review.md +123 -0
- package/plugins/toolu/hooks/docs/session-start-python.md +3 -0
- package/plugins/toolu/hooks/docs/session-start-rust.md +4 -0
- package/plugins/toolu/hooks/docs/session-start-ts.md +3 -0
- package/plugins/toolu/hooks/docs/session-start.md +16 -0
- package/plugins/toolu/hooks/hooks.json +76 -0
- package/plugins/toolu/hooks/lib/config.sh +355 -0
- package/plugins/toolu/hooks/lib/detect.sh +929 -0
- package/plugins/toolu/hooks/lib/diff-sha.sh +32 -0
- package/plugins/toolu/hooks/lib/dispatch.sh +365 -0
- package/plugins/toolu/hooks/lib/docs-sync-config.sh +81 -0
- package/plugins/toolu/hooks/lib/edit-records.sh +157 -0
- package/plugins/toolu/hooks/lib/gate-file.sh +201 -0
- package/plugins/toolu/hooks/lib/gate-mode.sh +244 -0
- package/plugins/toolu/hooks/lib/host.sh +205 -0
- package/plugins/toolu/hooks/lib/permissions.sh +125 -0
- package/plugins/toolu/hooks/lib/plan-ledger-parse.sh +219 -0
- package/plugins/toolu/hooks/lib/plan-ledger-preflight.sh +137 -0
- package/plugins/toolu/hooks/lib/plan-ledger.sh +749 -0
- package/plugins/toolu/hooks/lib/push-waiver.sh +116 -0
- package/plugins/toolu/hooks/lib/quality-config.sh +184 -0
- package/plugins/toolu/hooks/lib/registry.sh +72 -0
- package/plugins/toolu/hooks/lib/state-sweeper.sh +194 -0
- package/plugins/toolu/hooks/lib/telemetry.sh +94 -0
- package/plugins/toolu/hooks/lib/verdict.sh +477 -0
- package/plugins/toolu/hooks/post-tools/mod.sh +42 -0
- package/plugins/toolu/hooks/post-tools/modules/gate-status.sh +140 -0
- package/plugins/toolu/hooks/post-tools/modules/push-waiver.sh +97 -0
- package/plugins/toolu/hooks/pre-compact.sh +18 -0
- package/plugins/toolu/hooks/pre-tools/agent-tier.sh +111 -0
- package/plugins/toolu/hooks/pre-tools/mod.sh +37 -0
- package/plugins/toolu/hooks/pre-tools/modules/bash-commands.sh +187 -0
- package/plugins/toolu/hooks/pre-tools/modules/code-edit-rules.sh +78 -0
- package/plugins/toolu/hooks/pre-tools/modules/commit-gate.sh +70 -0
- package/plugins/toolu/hooks/pre-tools/modules/docs-sync.sh +137 -0
- package/plugins/toolu/hooks/pre-tools/modules/mcp-blocker.sh +151 -0
- package/plugins/toolu/hooks/pre-tools/modules/plan-ledger.sh +201 -0
- package/plugins/toolu/hooks/pre-tools/modules/protected-files.sh +177 -0
- package/plugins/toolu/hooks/pre-tools/modules/push-review.sh +273 -0
- package/plugins/toolu/hooks/pre-tools/modules/quality-gate.sh +87 -0
- package/plugins/toolu/hooks/session-start.sh +379 -0
- package/plugins/toolu/hooks/user-prompt-submit.sh +197 -0
- package/plugins/toolu/scripts/context-budget.sh +111 -0
- package/plugins/toolu/scripts/debug-log.sh +98 -0
- package/plugins/toolu/scripts/debug-stack.sh +108 -0
- package/plugins/toolu/scripts/debug-testfail.sh +97 -0
- package/plugins/toolu/settings/.gitkeep +0 -0
- package/plugins/toolu/settings/README.md +127 -0
- package/plugins/toolu/settings/bash-allowlist.txt +12 -0
- package/plugins/toolu/settings/bash-denylist.txt +25 -0
- package/plugins/toolu/settings/code-edit-rules.json +67 -0
- package/plugins/toolu/settings/commit-prefixes.txt +12 -0
- package/plugins/toolu/settings/mcp-blocklist.txt +8 -0
- package/plugins/toolu/settings/permissions.fragment.json +36 -0
- package/plugins/toolu/settings/protected-files.txt +30 -0
- package/plugins/toolu/settings/rust-unsafe-exemptions.txt +5 -0
- package/plugins/toolu/settings/toolu.config.example.json +130 -0
- package/plugins/toolu/skills/.gitkeep +0 -0
- package/plugins/toolu/skills/brainstorm/SKILL.md +57 -0
- package/plugins/toolu/skills/brainstorm/references/design-questions.md +36 -0
- package/plugins/toolu/skills/commit/SKILL.md +11 -0
- package/plugins/toolu/skills/debug/SKILL.md +54 -0
- package/plugins/toolu/skills/debug/evals/README.md +17 -0
- package/plugins/toolu/skills/debug/evals/cases.json +24 -0
- package/plugins/toolu/skills/debug/evals/results.json +34 -0
- package/plugins/toolu/skills/deep-research/SKILL.md +51 -0
- package/plugins/toolu/skills/execution/SKILL.md +77 -0
- package/plugins/toolu/skills/orchestrator/SKILL.md +145 -0
- package/plugins/toolu/skills/orchestrator/references/delegation-cost.md +104 -0
- package/plugins/toolu/skills/orchestrator/references/model-routing.md +112 -0
- package/plugins/toolu/skills/plan/SKILL.md +56 -0
- package/plugins/toolu/skills/plan/references/ledger.md +18 -0
- package/plugins/toolu/skills/plan-review/SKILL.md +48 -0
- package/plugins/toolu/skills/review-and-commit/SKILL.md +10 -0
- package/plugins/toolu/skills/setup/SKILL.md +24 -0
- package/plugins/toolu/skills/setup/scripts/setup.sh +206 -0
- package/plugins/toolu/skills/spec/SKILL.md +67 -0
- package/plugins/toolu/skills/spec-review/SKILL.md +50 -0
- package/plugins/toolu/skills/test/SKILL.md +49 -0
- package/plugins/toolu/workflows/commit.md +21 -0
- package/plugins/toolu/workflows/host-mapping.md +22 -0
- package/plugins/toolu/workflows/review-and-commit.md +54 -0
- package/plugins/toolu/workflows/semantic-judgments.md +35 -0
- package/plugins/toolu-review/.claude-plugin/plugin.json +18 -0
- package/plugins/toolu-review/.codex-plugin/plugin.json +7 -0
- package/plugins/toolu-review/README.md +17 -0
- package/plugins/toolu-review/hooks/hooks.json +15 -0
- package/plugins/toolu-review/hooks/session-start.sh +34 -0
- package/plugins/toolu-review/skills/review/SKILL.md +90 -0
- package/plugins/toolu-review/skills/review/scripts/write-state.sh +189 -0
- package/plugins/ts-quality/.claude-plugin/plugin.json +24 -0
- package/plugins/ts-quality/.codex-plugin/plugin.json +6 -0
- package/plugins/ts-quality/README.md +24 -0
- package/plugins/ts-quality/hooks/check-toolu.sh +20 -0
- package/plugins/ts-quality/hooks/concerns/00-preamble.sh +123 -0
- package/plugins/ts-quality/hooks/concerns/10-imports.sh +33 -0
- package/plugins/ts-quality/hooks/concerns/15-type-as.sh +9 -0
- package/plugins/ts-quality/hooks/concerns/20-tests.sh +26 -0
- package/plugins/ts-quality/hooks/concerns/25-size-file.sh +40 -0
- package/plugins/ts-quality/hooks/concerns/30-size-fn.sh +53 -0
- package/plugins/ts-quality/hooks/concerns/35-react-hooks.sh +7 -0
- package/plugins/ts-quality/hooks/concerns/40-factory.sh +5 -0
- package/plugins/ts-quality/hooks/concerns/45-typeguard.sh +6 -0
- package/plugins/ts-quality/hooks/concerns/50-type-dup.sh +16 -0
- package/plugins/ts-quality/hooks/concerns/55-naming.sh +11 -0
- package/plugins/ts-quality/hooks/concerns/60-console.sh +6 -0
- package/plugins/ts-quality/hooks/concerns/65-suppression.sh +12 -0
- package/plugins/ts-quality/hooks/concerns/70-ui-confirm.sh +8 -0
- package/plugins/ts-quality/hooks/concerns/72-ui-radix.sh +12 -0
- package/plugins/ts-quality/hooks/concerns/74-react-props.sh +6 -0
- package/plugins/ts-quality/hooks/concerns/76-toast.sh +10 -0
- package/plugins/ts-quality/hooks/concerns/78-error-ast.sh +242 -0
- package/plugins/ts-quality/hooks/concerns/80-throw-literal.sh +23 -0
- package/plugins/ts-quality/hooks/concerns/85-no-mocks.sh +109 -0
- package/plugins/ts-quality/hooks/concerns/90-duplication.sh +30 -0
- package/plugins/ts-quality/hooks/concerns/92-docs.sh +36 -0
- package/plugins/ts-quality/hooks/concerns/94-handler.sh +15 -0
- package/plugins/ts-quality/hooks/concerns/99-finalize.sh +46 -0
- package/plugins/ts-quality/hooks/hooks.json +19 -0
- package/plugins/ts-quality/hooks/register.sh +65 -0
- package/src/adapter/__tests__/evaluate.test.ts +82 -0
- package/src/adapter/__tests__/permission-map.test.ts +91 -0
- package/src/adapter/evaluate.ts +54 -0
- package/src/adapter/permission-map.ts +177 -0
- package/src/bootstrap/__tests__/bootstrap.test.ts +148 -0
- package/src/bootstrap/entrypoint.ts +18 -0
- package/src/bootstrap/index.ts +5 -0
- package/src/bootstrap/readiness.ts +59 -0
- package/src/bootstrap/result.ts +21 -0
- package/src/bootstrap/runtime.ts +99 -0
- package/src/bootstrap/test-helpers.ts +25 -0
- package/src/host/__tests__/host.test.ts +37 -0
- package/src/host/detect.ts +46 -0
- package/src/host/index.ts +10 -0
- package/src/host/roots.ts +59 -0
- package/src/host/types.ts +14 -0
- package/src/inventory/__tests__/inventory.test.ts +69 -0
- package/src/inventory/index.ts +9 -0
- package/src/inventory/manifest.ts +46 -0
- package/src/inventory/scan.ts +66 -0
- package/src/inventory/selection.ts +92 -0
- package/src/inventory/types.ts +22 -0
- package/src/lifecycle/__tests__/lifecycle.test.ts +7 -0
- package/src/lifecycle/index.ts +2 -0
- package/src/lifecycle/table.ts +42 -0
- package/src/plugin/__tests__/plugin-stub.test.ts +6 -0
- package/src/plugin/plugin-stub.ts +7 -0
- package/src/plugin/toolu.ts +142 -0
- package/src/preflight/__tests__/preflight.test.ts +20 -0
- package/src/preflight/check.ts +75 -0
- package/src/preflight/index.ts +2 -0
- package/src/select/__tests__/select.test.ts +52 -0
- package/src/select/index.ts +2 -0
- package/src/select/resolve.ts +87 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# MCP server name prefixes to block (one per line; '#' starts a comment).
|
|
2
|
+
# Match is against the leading mcp__<server>__ segment of the tool name.
|
|
3
|
+
#
|
|
4
|
+
# Entries are matched as PREFIXES of the server segment. So `claude_ai_`
|
|
5
|
+
# blocks `mcp__claude_ai_Canva__*` and `mcp__claude_ai_Figma__*`. An exact
|
|
6
|
+
# server name is the special case of a prefix with no extra characters.
|
|
7
|
+
#
|
|
8
|
+
# Empty by default — add one server-name prefix per line to block it.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(*)",
|
|
5
|
+
"Bash(plugins/ast-grep/skills/ast-grep/scripts/ast-grep.sh:*)",
|
|
6
|
+
"Bash(.claude/worktrees/*/plugins/ast-grep/skills/ast-grep/scripts/ast-grep.sh:*)",
|
|
7
|
+
"Bash(ast-grep:*)",
|
|
8
|
+
"Bash(bun install:*)",
|
|
9
|
+
"Bash(bun run:*)",
|
|
10
|
+
"Bash(bun test:*)",
|
|
11
|
+
"Bash(bun x:*)",
|
|
12
|
+
"Bash(git add:*)",
|
|
13
|
+
"Bash(git branch:*)",
|
|
14
|
+
"Bash(git checkout --:*)",
|
|
15
|
+
"Bash(git checkout -b:*)",
|
|
16
|
+
"Bash(git commit:*)",
|
|
17
|
+
"Bash(git diff:*)",
|
|
18
|
+
"Bash(git log:*)",
|
|
19
|
+
"Bash(git push:*)",
|
|
20
|
+
"Bash(git status)",
|
|
21
|
+
"Bash(ls:*)",
|
|
22
|
+
"Bash(mkdir:*)",
|
|
23
|
+
"Bash(node ./*:*)",
|
|
24
|
+
"Bash(pwd)",
|
|
25
|
+
"Bash(sg:*)",
|
|
26
|
+
"Bash(which:*)"
|
|
27
|
+
],
|
|
28
|
+
"deny": [
|
|
29
|
+
"Bash(chmod 777:*)",
|
|
30
|
+
"Bash(dd if=/dev/zero:*)",
|
|
31
|
+
"Bash(mkfs:*)",
|
|
32
|
+
"Bash(rm -rf /)",
|
|
33
|
+
"Bash(sudo rm:*)"
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Protected file globs (one per line; '#' starts a comment).
|
|
2
|
+
# bash extended-glob patterns matched against the edited file path.
|
|
3
|
+
#
|
|
4
|
+
# Paths are normalized to repo-relative before matching (the Edit/Write tool
|
|
5
|
+
# sends absolute paths). Patterns are tried two ways: as written, and with an
|
|
6
|
+
# implicit "**/" prefix so e.g. `hooks/lib/**` also matches `subtree/hooks/lib/x.sh`.
|
|
7
|
+
# Bare-basename patterns (no `/`) additionally match against the file basename.
|
|
8
|
+
#
|
|
9
|
+
# This list gates Edit/Write/MultiEdit AND Bash/Shell (a command's candidate
|
|
10
|
+
# write targets, extracted by bash_write_targets in hooks/lib/detect.sh).
|
|
11
|
+
#
|
|
12
|
+
# ⚠️ A match now PROMPTS YOU rather than denying outright: you approve or
|
|
13
|
+
# refuse per call, and approving lets the write happen. Set
|
|
14
|
+
# gates.protectedFiles.mode to "block" to restore the old hard deny.
|
|
15
|
+
# See hooks/docs/gates.md and github.com/Falconiere/toolu/issues/176.
|
|
16
|
+
#
|
|
17
|
+
# Lint/format configs from the original hook.
|
|
18
|
+
*.oxfmtrc.json
|
|
19
|
+
*.oxlintrc.json
|
|
20
|
+
# Always-protected: secrets and git internals.
|
|
21
|
+
.env
|
|
22
|
+
.env.*
|
|
23
|
+
**/secrets/**
|
|
24
|
+
.git/**
|
|
25
|
+
# Trusted scripts — the hook framework itself and the ast-grep/comemory wrappers.
|
|
26
|
+
# Protecting these prevents bypass-by-edit (security review concern).
|
|
27
|
+
hooks/lib/**
|
|
28
|
+
hooks/**/*.sh
|
|
29
|
+
skills/ast-grep/scripts/**
|
|
30
|
+
skills/agent-memory/scripts/**
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Rust crates allowed to use `unsafe` blocks/functions.
|
|
2
|
+
# rust-quality.sh skips the unsafe check for files whose path contains
|
|
3
|
+
# one of these crate names. Add one crate name per line; '#' starts a comment.
|
|
4
|
+
#
|
|
5
|
+
# Default: empty — projects opt in by editing this file.
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"gates": {
|
|
4
|
+
"preset": "balanced",
|
|
5
|
+
"pushReview": {
|
|
6
|
+
"mode": "advise"
|
|
7
|
+
},
|
|
8
|
+
"qualityGate": {
|
|
9
|
+
"mode": "block"
|
|
10
|
+
},
|
|
11
|
+
"commitGate": {
|
|
12
|
+
"mode": "advise"
|
|
13
|
+
},
|
|
14
|
+
"bashCommands": {
|
|
15
|
+
"mode": "advise"
|
|
16
|
+
},
|
|
17
|
+
"planLedger": {
|
|
18
|
+
"mode": "advise"
|
|
19
|
+
},
|
|
20
|
+
"docsSync": {
|
|
21
|
+
"mode": "advise"
|
|
22
|
+
},
|
|
23
|
+
"agentTier": {
|
|
24
|
+
"mode": "advise"
|
|
25
|
+
},
|
|
26
|
+
"sweep": true,
|
|
27
|
+
"stateTtlHours": 24,
|
|
28
|
+
"telemetryRetentionDays": 7
|
|
29
|
+
},
|
|
30
|
+
"permissions": {
|
|
31
|
+
"autoAllow": true,
|
|
32
|
+
"allow": [
|
|
33
|
+
"Bash(*)",
|
|
34
|
+
"Edit",
|
|
35
|
+
"Write"
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
"skills": {
|
|
39
|
+
"ast-grep": true
|
|
40
|
+
},
|
|
41
|
+
"agents": {
|
|
42
|
+
"research-agent": true
|
|
43
|
+
},
|
|
44
|
+
"hooks": {
|
|
45
|
+
"session-start": true,
|
|
46
|
+
"user-prompt-submit": true,
|
|
47
|
+
"pre-tools": true,
|
|
48
|
+
"post-tools": true,
|
|
49
|
+
"pre-compact": true
|
|
50
|
+
},
|
|
51
|
+
"mcp": {},
|
|
52
|
+
"models": {
|
|
53
|
+
"enabled": true,
|
|
54
|
+
"mechanical": "haiku",
|
|
55
|
+
"exploration": "sonnet",
|
|
56
|
+
"implementation": "sonnet",
|
|
57
|
+
"review": "sonnet",
|
|
58
|
+
"synthesis": "opus",
|
|
59
|
+
"architecture": "opus",
|
|
60
|
+
"codex": {
|
|
61
|
+
"mechanical": {
|
|
62
|
+
"model": "gpt-5.6-luna",
|
|
63
|
+
"reasoningEffort": "medium"
|
|
64
|
+
},
|
|
65
|
+
"exploration": {
|
|
66
|
+
"model": "gpt-5.6-terra",
|
|
67
|
+
"reasoningEffort": "medium"
|
|
68
|
+
},
|
|
69
|
+
"implementation": {
|
|
70
|
+
"model": "gpt-5.6-terra",
|
|
71
|
+
"reasoningEffort": "medium"
|
|
72
|
+
},
|
|
73
|
+
"review": {
|
|
74
|
+
"model": "gpt-5.6-terra",
|
|
75
|
+
"reasoningEffort": "high"
|
|
76
|
+
},
|
|
77
|
+
"synthesis": {
|
|
78
|
+
"model": "gpt-5.6-sol",
|
|
79
|
+
"reasoningEffort": "high"
|
|
80
|
+
},
|
|
81
|
+
"architecture": {
|
|
82
|
+
"model": "gpt-5.6-sol",
|
|
83
|
+
"reasoningEffort": "high"
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
"telemetry": {
|
|
88
|
+
"enabled": true
|
|
89
|
+
},
|
|
90
|
+
"agentTier": {
|
|
91
|
+
"mode": "advise"
|
|
92
|
+
},
|
|
93
|
+
"planLedger": {
|
|
94
|
+
"blockOnUncoveredAcs": false
|
|
95
|
+
},
|
|
96
|
+
"docsSync": {
|
|
97
|
+
"mode": "advise",
|
|
98
|
+
"surfaces": [
|
|
99
|
+
"README.md",
|
|
100
|
+
"*/README.md",
|
|
101
|
+
"docs/*.md",
|
|
102
|
+
"*/SKILL.md"
|
|
103
|
+
],
|
|
104
|
+
"surfaceExcludes": [
|
|
105
|
+
"docs/releases/*",
|
|
106
|
+
"*/docs/releases/*"
|
|
107
|
+
],
|
|
108
|
+
"codeSurfaces": [
|
|
109
|
+
"*.ts",
|
|
110
|
+
"*.rs",
|
|
111
|
+
"*.sh",
|
|
112
|
+
"*/commands/*",
|
|
113
|
+
"*plugin.json",
|
|
114
|
+
"*.config.json"
|
|
115
|
+
]
|
|
116
|
+
},
|
|
117
|
+
"lang": {
|
|
118
|
+
"ts": {
|
|
119
|
+
"maxFileLines": 300,
|
|
120
|
+
"maxFnLines": 60,
|
|
121
|
+
"noMocks": true
|
|
122
|
+
},
|
|
123
|
+
"rust": {
|
|
124
|
+
"maxFileLines": 500,
|
|
125
|
+
"maxFnLines": 50,
|
|
126
|
+
"maxImplLines": 200,
|
|
127
|
+
"noMocks": true
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brainstorm
|
|
3
|
+
description: "Use BEFORE writing code or planning a build, feature, refactor, or behavior change whose shape is unsettled. Tells: \"where do I even start\", \"this feels big\", \"help me scope it\", \"think through the approach and tradeoffs\", \"before I start coding\". Skip mechanical work with no design decision and already-scoped features."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Brainstorm
|
|
7
|
+
|
|
8
|
+
Choose the smallest amount of design work that removes material uncertainty.
|
|
9
|
+
Default-and-proceed is the baseline: do not turn routine work into an interview.
|
|
10
|
+
|
|
11
|
+
## Triage
|
|
12
|
+
|
|
13
|
+
- **Skip** — mechanical work with no design decision: make the requested rename,
|
|
14
|
+
formatting change, dependency bump, or one-line correction directly.
|
|
15
|
+
- **Compact** — bounded work with a material default or a small compatibility
|
|
16
|
+
risk. Produce a concise capsule, then continue.
|
|
17
|
+
- **Full** — use only for cross-cutting work, a public interface,
|
|
18
|
+
persistence-or-migration, security-privacy, external-cost, or an unclear goal.
|
|
19
|
+
Evaluate only relevant axes and compare only genuinely distinct alternatives.
|
|
20
|
+
|
|
21
|
+
## Evidence and decisions
|
|
22
|
+
|
|
23
|
+
Start with memory recall, one targeted structural or exact-text search, then
|
|
24
|
+
inspect the best hits. Reuse demonstrated repository conventions when they
|
|
25
|
+
settle the choice. Delegate only when the search needs a broad map; keep the
|
|
26
|
+
final trade-off decision in the main architecture tier. Use the tier rubric in
|
|
27
|
+
[model-routing.md](../orchestrator/references/model-routing.md).
|
|
28
|
+
|
|
29
|
+
Use the mandatory [Jev workflow](../../workflows/semantic-judgments.md) to compare
|
|
30
|
+
alternatives per user preference. Keep architectural synthesis in the main thread.
|
|
31
|
+
|
|
32
|
+
Set material defaults and proceed. Ask one structured question (2–3 options)
|
|
33
|
+
only when prompt and repository evidence cannot settle a goal-defining or hard-to-reverse fork. If several forks qualify, ask about the
|
|
34
|
+
highest-blast-radius decision and record defaults and risks for the rest.
|
|
35
|
+
Use the structured-choice mapping in [host-mapping.md](../../workflows/host-mapping.md).
|
|
36
|
+
|
|
37
|
+
## Compact capsule
|
|
38
|
+
|
|
39
|
+
- **Outcome:** the intended, observable result.
|
|
40
|
+
- **Material defaults/non-goal:** the chosen boundary and what stays out.
|
|
41
|
+
- **Repository evidence:** the recalled decision or best matching hit.
|
|
42
|
+
- **Risk:** the remaining compatibility, behavior, or delivery risk.
|
|
43
|
+
- **Handoff:** straight to `plan` for bounded implementation; handoff to `spec`
|
|
44
|
+
when the contract is cross-cutting or must outlive this session.
|
|
45
|
+
|
|
46
|
+
## Full path
|
|
47
|
+
|
|
48
|
+
For each relevant material axis, state the default, evidence, and risk. Compare
|
|
49
|
+
only alternatives that would change the outcome, interface, persistence,
|
|
50
|
+
security, cost, or reversibility. Use the single-question exception above, then
|
|
51
|
+
record the chosen approach, rejected alternatives, defaults, and open risks.
|
|
52
|
+
|
|
53
|
+
## Handoff
|
|
54
|
+
|
|
55
|
+
Skip goes to the requested mechanical work. Compact goes straight to `plan`.
|
|
56
|
+
Full work hands off to `spec`, then `plan`. Carry forward real-data tests,
|
|
57
|
+
concise docs, and any user-facing documentation updates.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Design question bank
|
|
2
|
+
|
|
3
|
+
Referenced by `brainstorm` when triage selects the Full path. This is a menu of
|
|
4
|
+
material axes, not a universal checklist: ignore axes that cannot change the
|
|
5
|
+
design, state a supported default for the rest, and proceed.
|
|
6
|
+
|
|
7
|
+
## Default-and-proceed
|
|
8
|
+
|
|
9
|
+
Use repository evidence and the request to choose a default. Ask one structured
|
|
10
|
+
question (2–3 options) only when neither can resolve a goal-defining or
|
|
11
|
+
hard-to-reverse fork. When several forks qualify, ask the highest-blast-radius
|
|
12
|
+
one and record defaults and risks for the rest.
|
|
13
|
+
|
|
14
|
+
## Material axes
|
|
15
|
+
|
|
16
|
+
Consider only the axes that fit the work:
|
|
17
|
+
|
|
18
|
+
- **Intent and boundary:** observable outcome, non-goal, and first slice.
|
|
19
|
+
- **Data and state:** source of truth, persistence, migration, and recovery.
|
|
20
|
+
- **Interface:** public callers, names, UX, compatibility, and rollout.
|
|
21
|
+
- **Failure behavior:** errors, partial results, retries, and safe fallback.
|
|
22
|
+
- **Integration:** existing mechanisms, changed callers, and blast radius.
|
|
23
|
+
- **Constraints:** security, privacy, external cost, performance, dependencies,
|
|
24
|
+
and supported platforms.
|
|
25
|
+
- **Horizon:** smallest durable implementation versus a later extension.
|
|
26
|
+
|
|
27
|
+
## Evidence order
|
|
28
|
+
|
|
29
|
+
Recall prior decisions, run one targeted structural or exact-text search, and
|
|
30
|
+
inspect the best hits before inventing alternatives. Delegate only for a broad
|
|
31
|
+
map; the main architecture tier keeps the final trade-off decision.
|
|
32
|
+
|
|
33
|
+
## Compact work
|
|
34
|
+
|
|
35
|
+
For bounded work, record Outcome, Material defaults/non-goal, Repository
|
|
36
|
+
evidence, Risk, and Handoff rather than sweeping these axes.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: commit
|
|
3
|
+
description: Use when the user asks to commit all current changes after running the repository's required quality gates.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Commit
|
|
7
|
+
|
|
8
|
+
Read [the canonical commit workflow](../../workflows/commit.md) and
|
|
9
|
+
[the host mapping](../../workflows/host-mapping.md) completely, then execute
|
|
10
|
+
them. Treat user arguments as commit-message context, not as permission to skip
|
|
11
|
+
gates or hooks.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: debug
|
|
3
|
+
description: "Use when something is broken and you need the root cause — a failing or flaky test, a crash, a stack trace, wrong output, a regression, a Sentry issue. Drives a scientific-debug loop: reproduce → observe evidence → falsifiable hypothesis → instrument/bisect → isolate the ROOT cause (not the symptom) → fix → regression test → record. Tells: \"why does X fail\", \"it crashes\", \"this is broken\", \"flaky test\", \"debug this\", \"root cause\", \"it worked before\", \"track down this bug\", \"stack trace\". A non-chain break-glass loop in the toolu workflow — any phase can drop into it and return."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Debug
|
|
7
|
+
|
|
8
|
+
The break-glass loop of the toolu workflow. The six-stage delivery chain builds; this is what you reach for when something *broke*. It is not a chain step — any phase (most often `execution`, using the reusable `test` method) drops into it and returns. Its discipline is the session protocol made concrete: **evidence before claims; the same approach failed twice → stop and change the hypothesis, don't retry harder.**
|
|
9
|
+
|
|
10
|
+
**Trigger phrases:** why does X fail, it crashes, this is broken, flaky test, debug this, find the root cause, it worked before, track down this bug, what's wrong with, stack trace.
|
|
11
|
+
|
|
12
|
+
Use the mandatory [Jev workflow](../../workflows/semantic-judgments.md) after
|
|
13
|
+
observations to compare hypotheses and prioritize experiments; allow insufficient evidence.
|
|
14
|
+
Reproduction/tests establish causes.
|
|
15
|
+
|
|
16
|
+
## The one rule that matters
|
|
17
|
+
|
|
18
|
+
**Find the root cause, then fix the root cause.** Patching the symptom — silencing the error, adding a retry, special-casing the failing input — is the single most expensive mistake in debugging, because the bug survives and the next occurrence is harder to see. Every step below exists to push you toward the cause and away from the symptom.
|
|
19
|
+
|
|
20
|
+
## The loop
|
|
21
|
+
|
|
22
|
+
1. **Reproduce reliably.** Get a deterministic failing case before changing anything. If you cannot reproduce it, that *is* the first problem — narrow conditions (input, env, timing, order) until it fails on demand. A bug you can't reproduce, you can't prove you fixed.
|
|
23
|
+
2. **Observe — gather evidence, do not guess.** Read the actual failure: test output, stack trace, logs, runtime state. Pipe raw signal through the evidence helpers (below) so it lands compact, not as a wall of text. Let the evidence narrow the search; never start from a hunch about the cause.
|
|
24
|
+
3. **Hypothesize — one falsifiable claim.** State a single hypothesis precise enough to be *wrong*: "the token-expiry check uses `<` where it needs `<=`, so tokens expiring this exact second pass." Vague hypotheses ("something with auth") can't be tested.
|
|
25
|
+
4. **Instrument & test the hypothesis.** Prove or kill it: add a targeted log/assert, bisect (`git bisect`, or halve the input/code path), or inspect the exact value. One change at a time — change two things and you learn nothing from the result.
|
|
26
|
+
5. **Isolate the root cause.** Trace from symptom to the actual defect. Confirm it explains *all* the observed evidence, not just the loudest symptom. If your fix wouldn't explain every data point from step 2, you haven't found the cause yet.
|
|
27
|
+
6. **Fix at the root, verify red → green.** Apply the minimal fix at the cause. Re-run the step-1 reproduction: it must go from failing to passing. No green reproduction, no fix.
|
|
28
|
+
7. **Regression test (real data, no mocks).** Add a test that fails before the fix and passes after, in the toolu layout — see the `test` skill (TS `__tests__/`, Rust `tests/`). This is what stops the bug coming back.
|
|
29
|
+
8. **Record.** Save the bug to comemory so the next encounter is a hit, not a re-investigation:
|
|
30
|
+
`comemory.sh save "<symptom>" "Root cause: <cause>. Fix: <what changed + path>." --kind bug`
|
|
31
|
+
|
|
32
|
+
**Failed twice? Stop.** If two distinct attempts on the same hypothesis both failed, the hypothesis is wrong — return to step 2, gather more evidence, form a new one. Retrying a third time is how you burn a session.
|
|
33
|
+
|
|
34
|
+
## Evidence helpers (the Observe step)
|
|
35
|
+
|
|
36
|
+
Three language-agnostic collectors turn raw failure output into a compact, capped summary so Observe doesn't flood context. Each reads stdin or `--file <path>`, takes `--json`, and degrades to a capped raw passthrough on input it doesn't recognize. Caps are env-overridable (`DEBUG_MAX_*`).
|
|
37
|
+
|
|
38
|
+
- `plugins/toolu/scripts/debug-testfail.sh` — failing-test transcript → failed test names, error/assertion lines, code `file:line` locations. `bun test out.txt | debug-testfail.sh` or `cargo test 2>&1 | debug-testfail.sh`.
|
|
39
|
+
- `plugins/toolu/scripts/debug-stack.sh` — stack trace / backtrace → app frames first, framework/runtime frames collapsed.
|
|
40
|
+
- `plugins/toolu/scripts/debug-log.sh` — large log → deduped error/warn lines + a tail, hard-capped in lines and bytes.
|
|
41
|
+
|
|
42
|
+
Use them to *seed* the investigation; they observe, they don't diagnose.
|
|
43
|
+
|
|
44
|
+
## Sentry adapter (opt-in, best-effort)
|
|
45
|
+
|
|
46
|
+
When the bug originates from a Sentry issue and the Sentry MCP is authenticated, you can pull the event to seed Reproduce + Observe:
|
|
47
|
+
|
|
48
|
+
1. The Sentry MCP's fetch tools only appear **after** OAuth — discover them at runtime with `ToolSearch` (e.g. query `+Sentry issue event`); do not assume tool names. If only `mcp__claude_ai_Sentry__authenticate` is present, the user hasn't connected it.
|
|
49
|
+
2. Fetch the issue/event the user names (URL or short-id), extract the exception + stack + breadcrumbs, pipe the stack through `debug-stack.sh`, then proceed from Observe.
|
|
50
|
+
3. **If Sentry is unavailable, unauthed, or exposes no fetch tool:** say so in one line ("Sentry unavailable, proceeding manually") and continue — ask the user to paste the stack/error. The loop never depends on Sentry.
|
|
51
|
+
|
|
52
|
+
## Return to the chain
|
|
53
|
+
|
|
54
|
+
A debug session ends by handing back: the fix re-enters `execution`, uses `test` to write and confirm the regression evidence, then completes execution's local readiness checks and authorized PR handoff. Don't call the work done from inside the loop — a fix without a regression test and a green gate isn't done.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# debug — trigger eval
|
|
2
|
+
|
|
3
|
+
A held-out eval of whether the `debug` skill's `description` reliably routes the right prompts to it (spec acceptance criterion 1: 100% positive recall, 0 false-positives).
|
|
4
|
+
|
|
5
|
+
## Method
|
|
6
|
+
|
|
7
|
+
1. `cases.json` — 18 labeled prompts (12 positives that should fire `debug`, 6 negatives that belong to other skills: feature build, design review, writing new tests, mechanical refactor, research, explanation).
|
|
8
|
+
2. A **router judge** is given ONLY the skill's frontmatter `description` (the real selection signal — not the body) plus each prompt, with no gold labels, and predicts fire/no-fire.
|
|
9
|
+
3. Predictions are scored against the gold labels → precision, recall, F1 (`results.json`).
|
|
10
|
+
|
|
11
|
+
This is an **LLM-judged** gate: `results.json` is a snapshot, and re-runs may vary slightly. To regenerate, re-run the router judge over `cases.json` prompts (judge sees the description only) and re-score.
|
|
12
|
+
|
|
13
|
+
## Latest result
|
|
14
|
+
|
|
15
|
+
precision 1.0, recall 1.0, F1 1.0 (tp 12, fp 0, fn 0, tn 6) — see `results.json`.
|
|
16
|
+
|
|
17
|
+
Negatives confirm the boundary holds: feature work ("add a dark mode toggle"), design review, writing tests for new code (vs. fixing a break), refactors, version lookups, and "summarize this module" all correctly route away from `debug`. The split is deliberately clean; the value is the negative boundary against the adjacent `test` and `design-review` skills.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "debug",
|
|
3
|
+
"method": "Held-out trigger eval. A judge sees ONLY the skill's frontmatter `description` (the real selection signal) plus the prompt, and predicts whether the debug skill should fire. Predictions are scored against the `expected` gold labels below → precision/recall. Bar: 100% positive recall, 0 false-positives. LLM-judged, so a results snapshot may vary slightly between runs.",
|
|
4
|
+
"cases": [
|
|
5
|
+
{"id": "p1", "prompt": "why does this test keep failing?", "expected": true},
|
|
6
|
+
{"id": "p2", "prompt": "the app crashes on startup, help me figure out why", "expected": true},
|
|
7
|
+
{"id": "p3", "prompt": "this test is flaky — sometimes passes, sometimes fails", "expected": true},
|
|
8
|
+
{"id": "p4", "prompt": "debug this stack trace for me", "expected": true},
|
|
9
|
+
{"id": "p5", "prompt": "find the root cause of this null pointer exception", "expected": true},
|
|
10
|
+
{"id": "p6", "prompt": "it worked before my last commit, now it's broken", "expected": true},
|
|
11
|
+
{"id": "p7", "prompt": "the API returns a 500, track down why", "expected": true},
|
|
12
|
+
{"id": "p8", "prompt": "wrong output: expected 5 but got -1, what's going on?", "expected": true},
|
|
13
|
+
{"id": "p9", "prompt": "there's a memory leak somewhere, help me find it", "expected": true},
|
|
14
|
+
{"id": "p10", "prompt": "this function returns undefined and I can't tell why", "expected": true},
|
|
15
|
+
{"id": "p11", "prompt": "production threw this error overnight, what's the root cause?", "expected": true},
|
|
16
|
+
{"id": "p12", "prompt": "my cargo test panics with index out of bounds", "expected": true},
|
|
17
|
+
{"id": "n1", "prompt": "add a dark mode toggle to the settings page", "expected": false},
|
|
18
|
+
{"id": "n2", "prompt": "review this login screen for design quality", "expected": false},
|
|
19
|
+
{"id": "n3", "prompt": "write tests for the new payment module", "expected": false},
|
|
20
|
+
{"id": "n4", "prompt": "rename the getUser function to fetchUser across the repo", "expected": false},
|
|
21
|
+
{"id": "n5", "prompt": "what's the latest version of the Anthropic SDK?", "expected": false},
|
|
22
|
+
{"id": "n6", "prompt": "summarize what this module does", "expected": false}
|
|
23
|
+
]
|
|
24
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "debug",
|
|
3
|
+
"generated_at": "2026-06-18",
|
|
4
|
+
"judge": "LLM router judge given the skill description only (no gold labels). Snapshot — LLM-judged, re-runs may vary slightly.",
|
|
5
|
+
"n": 18,
|
|
6
|
+
"positives": 12,
|
|
7
|
+
"negatives": 6,
|
|
8
|
+
"confusion": { "tp": 12, "fp": 0, "fn": 0, "tn": 6 },
|
|
9
|
+
"precision": 1,
|
|
10
|
+
"recall": 1,
|
|
11
|
+
"f1": 1,
|
|
12
|
+
"threshold": 0.9,
|
|
13
|
+
"pass": true,
|
|
14
|
+
"predictions": [
|
|
15
|
+
{ "id": "p1", "expected": true, "fire": true, "correct": true },
|
|
16
|
+
{ "id": "p2", "expected": true, "fire": true, "correct": true },
|
|
17
|
+
{ "id": "p3", "expected": true, "fire": true, "correct": true },
|
|
18
|
+
{ "id": "p4", "expected": true, "fire": true, "correct": true },
|
|
19
|
+
{ "id": "p5", "expected": true, "fire": true, "correct": true },
|
|
20
|
+
{ "id": "p6", "expected": true, "fire": true, "correct": true },
|
|
21
|
+
{ "id": "p7", "expected": true, "fire": true, "correct": true },
|
|
22
|
+
{ "id": "p8", "expected": true, "fire": true, "correct": true },
|
|
23
|
+
{ "id": "p9", "expected": true, "fire": true, "correct": true },
|
|
24
|
+
{ "id": "p10", "expected": true, "fire": true, "correct": true },
|
|
25
|
+
{ "id": "p11", "expected": true, "fire": true, "correct": true },
|
|
26
|
+
{ "id": "p12", "expected": true, "fire": true, "correct": true },
|
|
27
|
+
{ "id": "n1", "expected": false, "fire": false, "correct": true },
|
|
28
|
+
{ "id": "n2", "expected": false, "fire": false, "correct": true },
|
|
29
|
+
{ "id": "n3", "expected": false, "fire": false, "correct": true },
|
|
30
|
+
{ "id": "n4", "expected": false, "fire": false, "correct": true },
|
|
31
|
+
{ "id": "n5", "expected": false, "fire": false, "correct": true },
|
|
32
|
+
{ "id": "n6", "expected": false, "fire": false, "correct": true }
|
|
33
|
+
]
|
|
34
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deep-research
|
|
3
|
+
description: "Use when the ask is deep research that must end in a multi-source cited report — tells: \"deep research\", \"research report\", \"cited report\", \"survey the state of the art\", \"investigate thoroughly\". Picks guiding questions, then fans out per-question researchers combining exa-search and context7. NOT for quick single-fact or API lookups — the research-agent subagent handles those internally — and NOT for local codebase questions (the deep-explore subagent). Standalone knowledge workflow — not part of the build chain."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Deep Research
|
|
7
|
+
|
|
8
|
+
A standalone knowledge workflow — outside the build chain; its reports can feed `brainstorm` or `spec`. It exists because the expensive failure in research is not weak sources — it is aiming a whole fan-out at a misunderstood question. So the target is written down first, then the pipeline spends tokens. Do not wait for approval.
|
|
9
|
+
|
|
10
|
+
Use the mandatory [Jev workflow](../../workflows/semantic-judgments.md) to rank
|
|
11
|
+
retrieved excerpts, detect no answer, and judge claim/source support. Verify quotes and provenance with tools.
|
|
12
|
+
|
|
13
|
+
## When this fires
|
|
14
|
+
|
|
15
|
+
The user wants a real research deliverable: multi-source, verified, cited. Not a quick fact or API lookup — that stays with `research-agent` — and not a question about this codebase — that is `deep-explore`'s job. Every run is multi-agent by design; if the fan-out isn't warranted, the ask wasn't deep research.
|
|
16
|
+
|
|
17
|
+
## How to run it
|
|
18
|
+
|
|
19
|
+
Four phases, driven from the main thread. Workers run on sonnet, synthesis stays on the frontier tier — rubric: `plugins/toolu/skills/orchestrator/references/model-routing.md`.
|
|
20
|
+
|
|
21
|
+
1. **Target (main thread).** Restate the topic in one sentence. Decompose it into guiding questions with sub-questions — 5 is the typical fan-out, 7 the hard cap (the orchestrator skill's parallel-agent guardrail is the reason). Name the assumptions and what is out of scope. Print the numbered question set, then run it immediately without waiting for approval. Do not open the host mapping's user-choice interface ([host-mapping.md](../../workflows/host-mapping.md)).
|
|
22
|
+
2. **Research fan-out.** One `research-agent` (sonnet) per question, launched in parallel. Each researcher combines both engines per its routing table — `context7` for library/API/docs-shaped questions, `exa-search` for general web, topics, and URL crawls — with native fallback inherited. Override the agent's default depth per call: ask for a 10–15 sentence synthesis, up to 8 sources, and `Claim → source URL` pairs for the 2–3 load-bearing claims.
|
|
23
|
+
3. **Verification wave.** One `research-agent` (sonnet) per finding set, prompted as an adversarial verifier: re-crawl up to 2 cited URLs per load-bearing claim (exa-search, native fallback) and return a per-claim verdict — confirmed / unsupported / source-unreachable. Unsupported claims are dropped or flagged in the report — never silently kept. If every researcher answered from training knowledge only (`Tools used: none`), skip the wave — nothing is crawlable — and banner the report "unverified — no live sources".
|
|
24
|
+
4. **Synthesis + delivery (main thread).** Merge the verified findings into the report format below, write it under `docs/research/`, and give the user a TLDR in chat.
|
|
25
|
+
|
|
26
|
+
**Failure semantics** — nothing fails silently: a researcher or verifier that returns nothing, errors, or is killed renders its section as `⚠ no findings returned` and is named as degraded in Reliability notes — never silently dropped, no automatic retry. Worst-case fan-out: 7 researchers + 7 verifiers = 14 subagents; typical ~10.
|
|
27
|
+
|
|
28
|
+
## Report format
|
|
29
|
+
|
|
30
|
+
Destination `docs/research/<slug>.md` — kebab-case slug from the topic. Create the directory if absent. On collision append a numeric suffix (`<slug>-2.md`); never overwrite an existing report unless the user explicitly asks.
|
|
31
|
+
|
|
32
|
+
```markdown
|
|
33
|
+
# <Topic>: Research Report
|
|
34
|
+
|
|
35
|
+
> Date: <YYYY-MM-DD> · Questions: <n> · Scope: <one line>
|
|
36
|
+
|
|
37
|
+
## TL;DR
|
|
38
|
+
<the answer in ≤5 bullets>
|
|
39
|
+
|
|
40
|
+
## <Guiding question 1>
|
|
41
|
+
<verified synthesis; flagged claims marked ⚠ unverified>
|
|
42
|
+
|
|
43
|
+
## Sources
|
|
44
|
+
- <title> — <url>
|
|
45
|
+
|
|
46
|
+
> Reliability notes: <per-claim verdicts; degraded workers; the unverified banner if no live sources were reachable>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## What "done" looks like
|
|
50
|
+
|
|
51
|
+
A report at `docs/research/<slug>.md` with a TL;DR, one section per guiding question, real source URLs, and Reliability notes carrying the verification verdicts — plus the TLDR in chat. If targeting produced zero questions, "done" is: nothing ran and nothing was written.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: execution
|
|
3
|
+
description: Use when you have a reviewed plan to implement and, when delivery is authorized, carry verified changes through a PR handoff. Drives the plan step by step with evidence checkpoints and respects the quality gate. Native toolu workflow: spec → spec-review → plan → plan-review → execution → pr-babysit.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Execution
|
|
7
|
+
|
|
8
|
+
The execution phase comes after `plan-review`. It carries out a reviewed plan with discipline: small steps, evidence before claims, and no skipped gate. `brainstorm` is optional upstream triage when the shape is not settled; `test` is the execution-time method for producing high-signal evidence, not a final workflow phase.
|
|
9
|
+
|
|
10
|
+
**Trigger phrases:** execute the plan, implement this, start building, work through the plan.
|
|
11
|
+
|
|
12
|
+
## Precondition
|
|
13
|
+
|
|
14
|
+
A reviewed plan exists (`plan` + `plan-review` ran for non-trivial work). If there's no plan, write one first; if the plan hasn't been pressure-tested, run `plan-review` before sinking time into code built on a shaky plan.
|
|
15
|
+
|
|
16
|
+
## Loop (per step)
|
|
17
|
+
|
|
18
|
+
Use the mandatory [Jev workflow](../../workflows/semantic-judgments.md) to triage
|
|
19
|
+
evidence, including local review. Correctness requires the checks below.
|
|
20
|
+
|
|
21
|
+
For ledger-tracked work, **before the first step** run `bash plugins/toolu/hooks/lib/plan-ledger.sh preflight` — it refuses to start unless the plan is `Approved` and its declared spec (if any) is `Approved`. Then read progress with `bash plugins/toolu/hooks/lib/plan-ledger.sh status` to find the next non-fresh-green step, do the loop below for it, then record it with `bash plugins/toolu/hooks/lib/plan-ledger.sh run <plan_doc> --step <id>` — the engine requires the plan-doc positional arg, and stamps green from mechanical truth, you cannot claim it. On plan deviation, edit the steps block and note it under `## Deviations`, then re-run. Re-run any stale step (a `green` step whose diff has since changed) before calling the plan done. `status` also prints an AC-coverage report (report-only): read it to confirm every spec `AC-<n>` is covered by a fresh-green step — an uncovered AC is surfaced, not yet a push blocker, but it means the goal isn't proven done.
|
|
22
|
+
|
|
23
|
+
1. **Take one step** from the plan — the smallest shippable unit.
|
|
24
|
+
2. **Produce per-step real-data evidence** (use `test`) — map the relevant AC or risk to a representative real input/fixture, observable result, applicable boundary/failure case, and runner command. For a bugfix, reproduce first; record the passing output before the ledger step is stamped green.
|
|
25
|
+
3. **Handle errors in code, never suppress them.** Every fallible call gets a real handler — propagate (`?`, rethrow), match, or convert; never swallow, never silence with a disable comment (`@ts-ignore`, `eslint-disable`, `#[allow]`). The gate enforces this on every edit; write it right the first time.
|
|
26
|
+
4. **Land it clean.** A PostToolUse quality gate runs on every TS/Rust edit. If it reports a violation the gate goes **failing** and blocks further edits until fixed — fix immediately; do not pile on more changes.
|
|
27
|
+
5. **Verify, don't assume.** Run the command, read the output. "Done" requires evidence (test pass, log, runtime check), never a guess.
|
|
28
|
+
6. **Checkpoint** with the user at meaningful boundaries, or after each independent workstream.
|
|
29
|
+
|
|
30
|
+
## Rules
|
|
31
|
+
|
|
32
|
+
- **Global gate** — do NOT move to the next step while any error/warning/test failure stands, even in unrelated files.
|
|
33
|
+
- **Delegate to stay compact** — push exploration, large reads, and parallelizable work to subagents; keep the main context lean.
|
|
34
|
+
- **Delegate at the step's tier** — `status` prints `model=<alias>` for the next step when the plan declared one; hand that step to a subagent on that model (`toolu:quick-task` / `toolu:implementer` / `toolu:architect`, or an explicit `model:`). No declared tier, or a step that turns out harder than planned? Fall back to the rubric and escalate one tier rather than retrying the same tier: `plugins/toolu/skills/orchestrator/references/model-routing.md`.
|
|
35
|
+
- **No scope creep** — do only what the plan calls for. New needs go back to `plan` (and `plan-review`), not into this step.
|
|
36
|
+
- **Honor the layout** — files named after their export, one responsibility each, under the line limit, docs present and concise.
|
|
37
|
+
- **Docs in sync** — when a step changes a user-facing surface (behavior, interfaces, CLI flags, commands, config), update the prose docs that describe it (README, `docs/` guides, `SKILL.md` triggers, release notes) in the same step; it's part of "done", not a follow-up.
|
|
38
|
+
- **Same approach failed twice? Stop.** Change the hypothesis (`systematic-debugging`), don't retry harder.
|
|
39
|
+
|
|
40
|
+
## What "done" looks like
|
|
41
|
+
|
|
42
|
+
Working, verified increments that match the plan, with real error handling and per-step real-data evidence, landed under a green gate. Execution owns the final local review; do not hand work to a separate review or terminal-test phase.
|
|
43
|
+
|
|
44
|
+
## Authorized delivery preflight
|
|
45
|
+
|
|
46
|
+
Only perform delivery when the user's request includes delivery authorization.
|
|
47
|
+
Before committing, pushing, creating a PR, or starting a durable babysitting
|
|
48
|
+
goal, check every prerequisite and stop before delivery with the exact unmet
|
|
49
|
+
prerequisite if any applies:
|
|
50
|
+
|
|
51
|
+
- delivery authorization is absent;
|
|
52
|
+
- GitHub auth is unavailable (`gh auth status` fails);
|
|
53
|
+
- the current branch is the repository default branch, detached, or otherwise not a non-default branch;
|
|
54
|
+
- the optional `pr-babysit` plugin is not installed and its `$pr-babysit:babysit` skill is unavailable.
|
|
55
|
+
|
|
56
|
+
When the per-step direct checks, documentation work, and prerequisites pass,
|
|
57
|
+
commit the scoped changes using the repository's conventions. Do not include
|
|
58
|
+
unrelated work.
|
|
59
|
+
|
|
60
|
+
## Local release-readiness audit
|
|
61
|
+
|
|
62
|
+
After that scoped commit and before pushing, establish all of the following
|
|
63
|
+
against the committed branch diff with command output, not assertion:
|
|
64
|
+
|
|
65
|
+
1. Re-run each affected step's real-data runner and ensure its AC/risk evidence is current. Read `plan-ledger.sh status` and resolve every missing or stale AC coverage entry.
|
|
66
|
+
2. Run `bash plugins/toolu/hooks/lib/plan-ledger.sh run <plan_doc> --verify`. This is the supported branch-wide verification command: it validates every step against the final diff and stamps the ledger only when all steps are fresh-green.
|
|
67
|
+
3. Confirm user-facing documentation is synchronized for every changed behavior, interface, CLI, command, or configuration surface. Treat a missing applicable doc update as a blocker.
|
|
68
|
+
4. Run `$toolu-review:review` (or the host's installed `toolu-review:review` invocation) against the committed branch diff. Its resulting push-review state must be v2 (`version: 2`) and cover every changed file; open findings or stale/incomplete coverage are blockers.
|
|
69
|
+
5. Run `bash plugins/toolu/hooks/lib/verdict.sh status`. Advance only when it reports `overall: green`; quality, plan, review, and docs must each be green.
|
|
70
|
+
|
|
71
|
+
## PR delivery
|
|
72
|
+
|
|
73
|
+
When the committed-diff audit and every prerequisite pass:
|
|
74
|
+
|
|
75
|
+
1. Push the non-default feature branch to its configured remote.
|
|
76
|
+
2. Discover the repository default branch, then locate or create a pull request for the current branch targeting that repository default branch. Verify that PR's number and head/base branches.
|
|
77
|
+
3. Invoke `$pr-babysit:babysit` with no arguments. The verified execution handoff plus this delivery authorization is sufficient authorization for its durable PR-clearing goal; do not add a handoff argument or weaken its isolated-worktree, strict-clearance, or durable-goal rules.
|