Repository navigation
Skills M4 (9/9): document the finished toolset contract and refresh the lockfile - #35736
valentinpalkovic wants to merge 1 commit into
Conversation
|
WalkthroughThe changes update Open services guidance for toolset contracts and document ChangesOpen service toolsets
Possibly related issues
Possibly related PRs
Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
code/core/src/shared/open-service/README.md (1)
142-148: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winClarify registration scope.
registerToolsetuses a realm-global registry, and duplicate IDs are rejected. The phrase “registered wherever a consumer resolves it” can imply that each adapter should register the same toolset. State that each realm registers the toolset once from the paired service-registration path, including metadata-only consumers, and that adapters only resolve registered toolsets.Proposed wording
- A toolset must be registered wherever a consumer resolves it, including consumers that only read its descriptions and schemas: `getToolset(id)` throws on an unregistered id rather than silently dropping a tool. + Register each toolset once per realm from the paired service-registration path before any consumer resolves it. This path must also run for consumers that only read descriptions or schemas. Adapters resolve registered toolsets with `getToolset(id)` or `getRegisteredToolsets()`; they do not register them. `getToolset(id)` throws on an unregistered id rather than silently dropping a tool.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@code/core/src/shared/open-service/README.md` around lines 142 - 148, Update the README section describing registerToolset and getToolset to clarify that each realm registers a toolset exactly once from its paired service-registration path, including for metadata-only consumers. State that the registry is realm-global with duplicate IDs rejected, and that adapters only resolve already-registered toolsets rather than registering them.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@code/core/src/shared/open-service/README.md`:
- Around line 142-148: Update the README section describing registerToolset and
getToolset to clarify that each realm registers a toolset exactly once from its
paired service-registration path, including for metadata-only consumers. State
that the registry is realm-global with duplicate IDs rejected, and that adapters
only resolve already-registered toolsets rather than registering them.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 74613d6e-2a47-4ed4-87e7-21e800ab804c
⛔ Files ignored due to path filters (1)
test-storybooks/mcp/yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (2)
AGENTS.mdcode/core/src/shared/open-service/README.md
Package BenchmarksCommit: The following packages have significant changes to their size or dependencies:
|
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 2 | 🚨 +2 🚨 |
| Self size | 0 B | 188 KB | 🚨 +188 KB 🚨 |
| Dependency size | 0 B | 3.03 MB | 🚨 +3.03 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/addon-docs
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 18 | 🚨 +18 🚨 |
| Self size | 0 B | 1.29 MB | 🚨 +1.29 MB 🚨 |
| Dependency size | 0 B | 9.28 MB | 🚨 +9.28 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/addon-links
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 1 | 🚨 +1 🚨 |
| Self size | 0 B | 14 KB | 🚨 +14 KB 🚨 |
| Dependency size | 0 B | 5 KB | 🚨 +5 KB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/addon-mcp
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 11 | 🚨 +11 🚨 |
| Self size | 0 B | 129 KB | 🚨 +129 KB 🚨 |
| Dependency size | 0 B | 2.64 MB | 🚨 +2.64 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/addon-onboarding
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 0 | 0 |
| Self size | 0 B | 332 KB | 🚨 +332 KB 🚨 |
| Dependency size | 0 B | 670 B | 🚨 +670 B 🚨 |
| Bundle Size Analyzer | Link | Link |
storybook-addon-pseudo-states
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 0 | 0 |
| Self size | 0 B | 21 KB | 🚨 +21 KB 🚨 |
| Dependency size | 0 B | 689 B | 🚨 +689 B 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/addon-themes
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 1 | 🚨 +1 🚨 |
| Self size | 0 B | 18 KB | 🚨 +18 KB 🚨 |
| Dependency size | 0 B | 28 KB | 🚨 +28 KB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/addon-vitest
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 2 | 🚨 +2 🚨 |
| Self size | 0 B | 430 KB | 🚨 +430 KB 🚨 |
| Dependency size | 0 B | 350 KB | 🚨 +350 KB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/builder-vite
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 11 | 🚨 +11 🚨 |
| Self size | 0 B | 136 KB | 🚨 +136 KB 🚨 |
| Dependency size | 0 B | 1.32 MB | 🚨 +1.32 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/builder-webpack5
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 186 | 🚨 +186 🚨 |
| Self size | 0 B | 79 KB | 🚨 +79 KB 🚨 |
| Dependency size | 0 B | 35.74 MB | 🚨 +35.74 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
storybook
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 73 | 🚨 +73 🚨 |
| Self size | 0 B | 21.71 MB | 🚨 +21.71 MB 🚨 |
| Dependency size | 0 B | 31.21 MB | 🚨 +31.21 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/angular
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 185 | 🚨 +185 🚨 |
| Self size | 0 B | 160 KB | 🚨 +160 KB 🚨 |
| Dependency size | 0 B | 30.14 MB | 🚨 +30.14 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/angular-vite
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 29 | 🚨 +29 🚨 |
| Self size | 0 B | 22.82 MB | 🚨 +22.82 MB 🚨 |
| Dependency size | 0 B | 12.68 MB | 🚨 +12.68 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/ember
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 185 | 🚨 +185 🚨 |
| Self size | 0 B | 13 KB | 🚨 +13 KB 🚨 |
| Dependency size | 0 B | 31.09 MB | 🚨 +31.09 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/html-vite
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 14 | 🚨 +14 🚨 |
| Self size | 0 B | 22 KB | 🚨 +22 KB 🚨 |
| Dependency size | 0 B | 1.49 MB | 🚨 +1.49 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/nextjs
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 531 | 🚨 +531 🚨 |
| Self size | 0 B | 641 KB | 🚨 +641 KB 🚨 |
| Dependency size | 0 B | 62.40 MB | 🚨 +62.40 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/nextjs-vite
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 94 | 🚨 +94 🚨 |
| Self size | 0 B | 1.42 MB | 🚨 +1.42 MB 🚨 |
| Dependency size | 0 B | 23.90 MB | 🚨 +23.90 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/preact-vite
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 14 | 🚨 +14 🚨 |
| Self size | 0 B | 12 KB | 🚨 +12 KB 🚨 |
| Dependency size | 0 B | 1.51 MB | 🚨 +1.51 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/react-native-web-vite
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 125 | 🚨 +125 🚨 |
| Self size | 0 B | 29 KB | 🚨 +29 KB 🚨 |
| Dependency size | 0 B | 25.89 MB | 🚨 +25.89 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/react-vite
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 83 | 🚨 +83 🚨 |
| Self size | 0 B | 32 KB | 🚨 +32 KB 🚨 |
| Dependency size | 0 B | 21.21 MB | 🚨 +21.21 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/react-webpack5
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 272 | 🚨 +272 🚨 |
| Self size | 0 B | 23 KB | 🚨 +23 KB 🚨 |
| Dependency size | 0 B | 48.18 MB | 🚨 +48.18 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/server-webpack5
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 198 | 🚨 +198 🚨 |
| Self size | 0 B | 15 KB | 🚨 +15 KB 🚨 |
| Dependency size | 0 B | 37.01 MB | 🚨 +37.01 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/svelte-vite
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 20 | 🚨 +20 🚨 |
| Self size | 0 B | 54 KB | 🚨 +54 KB 🚨 |
| Dependency size | 0 B | 26.65 MB | 🚨 +26.65 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/sveltekit
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 21 | 🚨 +21 🚨 |
| Self size | 0 B | 56 KB | 🚨 +56 KB 🚨 |
| Dependency size | 0 B | 26.71 MB | 🚨 +26.71 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/tanstack-react
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 84 | 🚨 +84 🚨 |
| Self size | 0 B | 114 KB | 🚨 +114 KB 🚨 |
| Dependency size | 0 B | 21.24 MB | 🚨 +21.24 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/vue3-vite
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 103 | 🚨 +103 🚨 |
| Self size | 0 B | 34 KB | 🚨 +34 KB 🚨 |
| Dependency size | 0 B | 43.12 MB | 🚨 +43.12 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/web-components-vite
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 15 | 🚨 +15 🚨 |
| Self size | 0 B | 19 KB | 🚨 +19 KB 🚨 |
| Dependency size | 0 B | 1.55 MB | 🚨 +1.55 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/cli
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 205 | 🚨 +205 🚨 |
| Self size | 0 B | 829 KB | 🚨 +829 KB 🚨 |
| Dependency size | 0 B | 86.39 MB | 🚨 +86.39 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/codemod
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 198 | 🚨 +198 🚨 |
| Self size | 0 B | 32 KB | 🚨 +32 KB 🚨 |
| Dependency size | 0 B | 84.87 MB | 🚨 +84.87 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/core-webpack
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 1 | 🚨 +1 🚨 |
| Self size | 0 B | 11 KB | 🚨 +11 KB 🚨 |
| Dependency size | 0 B | 28 KB | 🚨 +28 KB 🚨 |
| Bundle Size Analyzer | Link | Link |
create-storybook
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 74 | 🚨 +74 🚨 |
| Self size | 0 B | 1.09 MB | 🚨 +1.09 MB 🚨 |
| Dependency size | 0 B | 52.92 MB | 🚨 +52.92 MB 🚨 |
| Bundle Size Analyzer | node | node |
@storybook/csf-plugin
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 9 | 🚨 +9 🚨 |
| Self size | 0 B | 7 KB | 🚨 +7 KB 🚨 |
| Dependency size | 0 B | 1.28 MB | 🚨 +1.28 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
eslint-plugin-storybook
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 20 | 🚨 +20 🚨 |
| Self size | 0 B | 137 KB | 🚨 +137 KB 🚨 |
| Dependency size | 0 B | 3.04 MB | 🚨 +3.04 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/mcp
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 11 | 🚨 +11 🚨 |
| Self size | 0 B | 144 KB | 🚨 +144 KB 🚨 |
| Dependency size | 0 B | 2.64 MB | 🚨 +2.64 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/react-dom-shim
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 0 | 0 |
| Self size | 0 B | 19 KB | 🚨 +19 KB 🚨 |
| Dependency size | 0 B | 1 KB | 🚨 +1 KB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/preset-create-react-app
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 68 | 🚨 +68 🚨 |
| Self size | 0 B | 32 KB | 🚨 +32 KB 🚨 |
| Dependency size | 0 B | 6.04 MB | 🚨 +6.04 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/preset-react-webpack
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 161 | 🚨 +161 🚨 |
| Self size | 0 B | 19 KB | 🚨 +19 KB 🚨 |
| Dependency size | 0 B | 32.71 MB | 🚨 +32.71 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/preset-server-webpack
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 10 | 🚨 +10 🚨 |
| Self size | 0 B | 7 KB | 🚨 +7 KB 🚨 |
| Dependency size | 0 B | 1.20 MB | 🚨 +1.20 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/html
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 2 | 🚨 +2 🚨 |
| Self size | 0 B | 29 KB | 🚨 +29 KB 🚨 |
| Dependency size | 0 B | 33 KB | 🚨 +33 KB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/preact
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 2 | 🚨 +2 🚨 |
| Self size | 0 B | 47 KB | 🚨 +47 KB 🚨 |
| Dependency size | 0 B | 33 KB | 🚨 +33 KB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/react
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 59 | 🚨 +59 🚨 |
| Self size | 0 B | 1.46 MB | 🚨 +1.46 MB 🚨 |
| Dependency size | 0 B | 12.30 MB | 🚨 +12.30 MB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/server
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 3 | 🚨 +3 🚨 |
| Self size | 0 B | 9 KB | 🚨 +9 KB 🚨 |
| Dependency size | 0 B | 719 KB | 🚨 +719 KB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/svelte
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 3 | 🚨 +3 🚨 |
| Self size | 0 B | 49 KB | 🚨 +49 KB 🚨 |
| Dependency size | 0 B | 601 KB | 🚨 +601 KB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/vue3
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 4 | 🚨 +4 🚨 |
| Self size | 0 B | 68 KB | 🚨 +68 KB 🚨 |
| Dependency size | 0 B | 584 KB | 🚨 +584 KB 🚨 |
| Bundle Size Analyzer | Link | Link |
@storybook/web-components
| Before | After | Difference | |
|---|---|---|---|
| Dependency count | 0 | 3 | 🚨 +3 🚨 |
| Self size | 0 B | 80 KB | 🚨 +80 KB 🚨 |
| Dependency size | 0 B | 48 KB | 🚨 +48 KB 🚨 |
| Bundle Size Analyzer | Link | Link |
Closes #35673
Part 9 of 9 of the Skills M4 migration. Stacked on #35735, replaces #35677.
What I did
Last part of the stack, and it is prose and hygiene only. It documents the toolset contract the previous eight PRs built, so that contributors adding a tool have something to read: how a tool declares its telemetry group, what shape a result takes, when a method should throw versus return a failure the agent can act on, which errors are safe to show an agent, and how documentation access is injected rather than looked up.
It also refreshes the lockfile of the MCP test Storybook once, here, instead of per slice. Regenerating it in every slice produces conflicting hashes on every rebase.
No product code changes. With this merged the tree is identical to #35677, which can be closed, and so can the issue.
Checklist for Contributors
Testing
The changes in this PR are covered in the following automated tests:
Manual testing
Caution
This section is mandatory for all contributions. If you believe no manual test is necessary, please state so explicitly. Thanks!
There is no behavior to exercise in this PR, but the lockfile change is worth confirming rather than trusting:
test-storybooks/mcp, runyarn installand confirm it completes without rewriting the lockfile again.yarn storybookthere and confirm the dev server starts and its MCP endpoint answers athttp://localhost:6006/mcp.Documentation
MIGRATION.MD
Checklist for Maintainers
When this PR is ready for testing, make sure to add
ci:normal,ci:mergedorci:dailyGH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found incode/lib/cli-storybook/src/sandbox-templates.tsDeclare whether manual QA will be needed for this PR during the next release, through
qa:neededorqa:skipMake sure this PR contains one of the labels below:
Available labels
bug: Internal changes that fixes incorrect behavior.maintenance: User-facing maintenance tasks.dependencies: Upgrading (sometimes downgrading) dependencies.build: Internal-facing build tooling & test updates. Will not show up in release changelog.cleanup: Minor cleanup style change. Will not show up in release changelog.documentation: Documentation only changes. Will not show up in release changelog.feature request: Introducing a new feature.BREAKING CHANGE: Changes that break compatibility in some way with current major version.other: Changes that don't fit in the above categories.🦋 Canary release
This PR does not have a canary release associated. You can request a canary release of this pull request by mentioning the
@storybookjs/coreteam here.core team members can create a canary release here or locally with
gh workflow run --repo storybookjs/storybook publish.yml --field pr=<PR_NUMBER>