chore(signals): drop signals prefix from scout MCP tool names - #71019
Conversation
Scouts is the primary term for the feature, so the MCP tools move from `signals-scout-*` to `scout-*` (e.g. `signals-scout-runs-list` → `scout-runs-list`). Skill names (`signals-scout-*` fleet) and API routes/operation ids are unchanged; prose references in the harness prompt, serializers, skills, and docs are updated, and generated MCP/ frontend artifacts regenerated. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019qvqtaUVV8VSdWVEJ4j2Rs
🤖 CI report✅ Bundle size — no changeUncompressed size of every built Total: 64.80 MiB · no change No file changed by more than 1000 B. Posted automatically by build-bundle-size-report · uncompressed bytes from dist-report ✅ Eager graph — within budgetHow much code each root ships on the eager path — downloaded and parsed before the surface is interactive. Measured from the esbuild output chunks (post-tree-shake, static imports only); lazy
🟢 Largest files eagerly shipped from
|
| Size | File |
|---|---|
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 24.6 KiB | ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js |
| 6.3 KiB | ../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js |
| 4.5 KiB | ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js |
| 3.9 KiB | ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js |
| 1.4 KiB | ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js |
| 1.3 KiB | src/RootErrorBoundary.tsx |
| 912 B | ../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js |
| 789 B | src/scenes/ChunkLoadErrorBoundary.tsx |
| 762 B | src/index.tsx |
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
| Size | File |
|---|---|
| 281.1 KiB | ../node_modules/.pnpm/posthog-js@1.401.0/node_modules/posthog-js/dist/rrweb.js |
| 267.7 KiB | ../node_modules/.pnpm/@posthog+icons@0.38.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js |
| 235.5 KiB | src/taxonomy/core-filter-definitions-by-group.json |
| 222.7 KiB | ../node_modules/.pnpm/posthog-js@1.401.0/node_modules/posthog-js/dist/module.js |
| 164.0 KiB | src/queries/validators.js |
| 154.3 KiB | ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js |
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 106.1 KiB | src/lib/api.ts |
| 93.3 KiB | ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js |
| 92.7 KiB | ../packages/quill/packages/quill/dist/index.js |
Posted automatically by check-eager-graph · sizes are eager output bytes (shipped, post-tree-shake) from the esbuild metafile · part of #32479
✅ Dist folder size — 🟢 -32 B (-0.0%)
Total size of the built frontend/dist folder (all assets), compared against the base branch.
Total: 1308.72 MiB · 🟢 -32 B (-0.0%)
ℹ️ MCP UI apps size — 31 app(s), 16561.5 KB JS
Built size of each MCP UI app (main.js + styles.css).
| App | JS | CSS |
|---|---|---|
| debug | 598.2 KB | 179.2 KB |
| action | 456.5 KB | 179.2 KB |
| action-list | 563.0 KB | 179.2 KB |
| cohort | 455.4 KB | 179.2 KB |
| cohort-list | 562.0 KB | 179.2 KB |
| email-template | 455.3 KB | 179.2 KB |
| error-details | 471.1 KB | 179.2 KB |
| error-issue | 456.1 KB | 179.2 KB |
| error-issue-list | 562.9 KB | 179.2 KB |
| experiment | 560.1 KB | 179.2 KB |
| experiment-list | 563.8 KB | 179.2 KB |
| experiment-results | 561.8 KB | 179.2 KB |
| feature-flag | 565.8 KB | 179.2 KB |
| feature-flag-list | 569.5 KB | 179.2 KB |
| feature-flag-testing | 459.4 KB | 179.2 KB |
| insight-actors | 560.8 KB | 179.2 KB |
| invite-email-preview | 454.7 KB | 179.2 KB |
| llm-costs | 558.1 KB | 179.2 KB |
| session-recording | 457.2 KB | 179.2 KB |
| session-summary | 462.5 KB | 179.2 KB |
| survey | 457.0 KB | 179.2 KB |
| survey-global-stats | 560.9 KB | 179.2 KB |
| survey-list | 563.7 KB | 179.2 KB |
| survey-stats | 560.8 KB | 179.2 KB |
| trace-span | 455.8 KB | 179.2 KB |
| trace-span-list | 562.9 KB | 179.2 KB |
| workflow | 455.8 KB | 179.2 KB |
| workflow-list | 562.4 KB | 179.2 KB |
| query-results | 743.7 KB | 179.2 KB |
| render-ui | 824.0 KB | 179.2 KB |
| visual-review-snapshots | 460.3 KB | 179.2 KB |
⚠️ Playwright — 1 failed
🎭 Playwright report · View test results →
❌ 1 failed test:
- password-protected insight sharing (chromium)
These issues are not necessarily caused by your changes.
Annoyed by this section? Help fix flakies and failures and it will go green!
🦔 Hogbox preview · ✅ ready▶ Open the preview
commit |
|
Reviews (1): Last reviewed commit: "chore: update OpenAPI generated types" | Re-trigger Greptile |
…ut tools Persisted custom scout skills (and any external MCP caller) authored against the old signals-scout-* names would hit tool-not-found after the rename. Follow the llma-skill-* -> skill-* precedent: each old name forwards to the renamed handler and annotates the response with a deprecation notice, to be removed once callers have migrated. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019qvqtaUVV8VSdWVEJ4j2Rs
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019qvqtaUVV8VSdWVEJ4j2Rs
The Django/Temporal workers and the MCP service deploy as separate images, so a scout run can briefly see the new prompt while the old MCP catalog still serves signals-scout-* names. One prompt line tells the agent to search the catalog and use whichever name it returns, covering the window in both directions together with the deprecated aliases. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019qvqtaUVV8VSdWVEJ4j2Rs
…ctions The interrupt feature and the inline MakeLogicType migration crossed on master, leaving the checked-in inline type block missing isInterrupting / interruptRun / setIsInterrupting — kea typegen's git-diff check fails on any branch containing both. Regenerated with kea-typegen 3.8.2 + oxfmt, matching the CI job. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019qvqtaUVV8VSdWVEJ4j2Rs
The published skills.zip and the MCP image deploy independently, so the authoring-scouts / exploring-scouts skills can name scout-* tools before the MCP catalog serves them. Mirror the harness prompt's fallback guidance so a reader searches the catalog and uses whichever name it returns. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019qvqtaUVV8VSdWVEJ4j2Rs
…nitions The tasks permission broker resolves read-only auto-allow from services/mcp/schema/generated-tool-definitions.json only, so hand-rolled aliases (curated tool-definitions.json + a TOOL_MAP forwarder) were invisible to it and legacy read-only calls in task runs would fail closed. Define the aliases as yaml entries instead — same operations, deprecated titles/descriptions — so they flow through codegen into the artifact the broker reads, and drop the hand-rolled forwarders. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019qvqtaUVV8VSdWVEJ4j2Rs
|
👋 Visual changes detected for this PR. Review and approve in PostHog Visual Review If these changes are unexpected, they may be caused by a flaky test or a broken snapshot on master. Don't approve — rerun the job or wait for a fix. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 78202b5a21
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…scription The description pointed at a scout-scratchpad-list tool that never existed — the scratchpad read tool is scout-scratchpad-search. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019qvqtaUVV8VSdWVEJ4j2Rs
Problem
Scouts is the primary term for the feature, but the scout MCP tools were all named
signals-scout-*, which is redundant and eats into the 52-char tool name budget. Shorter names are also easier for agents to read and reference.Changes
Renames all 23 scout MCP tools from
signals-scout-*toscout-*, e.g.What changed:
products/signals/mcp/tools.yaml: tool keys renamed (the four disabledsignals-reports-*/signals-report-artefacts-diffentries are report tools outside the scouts surface, so they keep their names and were just re-sorted).scout_harness/prompt.py), serializer help texts/docstrings, viewset/route comments, thesignals-scout-*fleet skills, theauthoring-scouts/exploring-scoutsmeta skills, and the signals/review_hog architecture docs.services/mcpschema JSONs, and the signals frontend generated types. Tool schema snapshot files renamed via the snapshot test.Note
Only the MCP tool names change. The
signals-scout-*skill names (the scout fleet), API routes (/signals/scout/...), OpenAPI operation ids, scopes (signal_scout:*), and Temporal workflow ids are all untouched. There is no aliasing for the old tool names, but the scout harness prompt, skills, and tool list all come from the same deploy, so scheduled scout runs pick up the new names atomically. A team's hand-authored custom scout whose skill body mentions an old tool name in prose will still see the correct new names in its tool list.How did you test this code?
Automated, all run locally:
services/mcpvitest unit suite (2081 tests) including the tool schema snapshot test (snapshots renamed, stale ones removed) and the tool cross-reference lint, pluslint-tool-namesandtsgotypecheck.products/signals/backend/test/test_scout_harness.pyandtest_scout_harness_tools.py(134 passed) - covers the renamed tool names in the generated prompt.products/posthog_ai/scripts/test/test_build_skills.py(63 passed) and a fullbuild_skills.pyrun to validate skill/tool reference integrity.hogli ci:preflight --fixgreen after merging latest master.No new tests: this is a rename, existing tests assert the new names.
Automatic notifications
Docs update
No
docs/pages reference the old tool names (verified by repo-wide sweep).🤖 Agent context
Autonomy: Human-driven (agent-assisted)
/implementing-mcp-tools,/setup-web-tests.signals-scout-{config,runs,emit,edit,members,metadata,project-profile,run-now,scratchpad}...) so the identically-prefixedsignals-scout-*skill fleet names stay untouched.scout-*(the literal result of dropping thesignals-prefix) overscouts-*; happy to flip if the plural is preferred.🤖 Generated with Claude Code
https://claude.ai/code/session_019qvqtaUVV8VSdWVEJ4j2Rs
Generated by Claude Code