Skip to content

docs(skills): Group agent skills into Core, React and Vue - #4153

Merged
ntucker merged 23 commits into
masterfrom
claude/project-thread-h9pv6f
Oct 5, 2026
Merged

ntucker merged 23 commits into
masterfrom
claude/project-thread-h9pv6f

Conversation

@ntucker

@ntucker ntucker commented Oct 4, 2026 •

Copy link
Copy Markdown
Collaborator

Requested by Nathaniel · project thread

Stacked on #4126 (adds data-client-vue); retargets to master once it merges.

Before: npx skills add reactive/data-client showed one flat list of 18 skills, including repo-internal ones (changeset, pr, initialize, packages-documentation, frontend-design), so users had to pick each skill by hand.

After: the Agent Skills page leads with installing only the setup skill, which installs what the project needs:

npx skills add reactive/data-client --skill data-client-setup
# or: claude plugin marketplace add reactive/data-client && claude plugin install core@data-client

/data-client-setup detects the framework and protocol, then installs the matching skills with the same installer (e.g. Vue + REST → schema, manager, vue, vue-testing, rest-setup, rest).

Below that, "Install all skills up front" keeps one command per framework that installs Core plus React or Vue, with nothing to pick:

# Claude Code: react depends on core, so core installs too
claude plugin install react@data-client   # or vue@data-client

# skills CLI
npx skills add reactive/data-client \
  --skill data-client-setup \
  ...
  --skill data-client-react \
  --skill data-client-react-testing

A bare npx skills add reactive/data-client (no --skill) now shows this picker; space selects a whole group, and internal skills are gone:

◆  Select skills to install (space to toggle)
│ ❯ ○ Select All (0/13)
│   ────────────────────────────────────
│   ▾ ○ Core
│   ├─ ○ data-client-endpoint-setup
│   ├─ ○ data-client-graphql-setup
│   ├─ ○ data-client-manager
│   ├─ ○ data-client-rest
│   ├─ ○ data-client-rest-setup
│   ├─ ○ data-client-schema
│   └─ ○ data-client-setup
│   ▾ ○ Migrations
│   ├─ ○ data-client-v0.18-migration
│   └─ ○ path-to-regexp-v8-migration
│   ▾ ○ React
│   ├─ ○ data-client-react
│   └─ ○ data-client-react-testing
│   ▾ ○ Vue
│   ├─ ○ data-client-vue
│   └─ ○ data-client-vue-testing

Core stays its own group in the picker: the skills CLI (1.7.0, latest) maps each skill folder to one group (last listing wins) and has no group dependencies, so listing Core skills under both React and Vue would move them all to Vue.

How

  • .claude-plugin/marketplace.json: one plugin per group (source: "./", strict: false, skills paths into .agents/skills); react and vue declare dependencies: ["core"]. Passes claude plugin validate --strict. The skills CLI reads the same file for its picker groups and ignores dependencies.
  • data-client-setup gets an "Install the Skills This Project Needs" step: a detection → skills table, and the install command for each installer (Claude Code plugin, OpenSkills, skills CLI), matching the scope setup was installed with.
  • Repo-internal skills get metadata.internal: true, which the skills CLI hides from installs.
  • SkillTabs derives every tab from marketplace.json: plugin="react" lists the plugin's skills after its dependencies'; the Claude Code tab installs the plugins holding the listed skills (so the REST pages get one too). This replaces docs(skills): Add data-client-vue agent skill #4126's hand-written openSkills lists.

Follow-up (own PR, on #4170): bundle the protocol setup guides into data-client-setup as generated references, so setup needs no other skill to finish setup.

Tested: picker against this branch (skills@1.7.0, output above); a generated --skill command installs exactly Core + Vue; claude plugin install react@data-client reports "+ 1 dependency: core"; installing only data-client-setup from this branch; website typecheck and build. No changeset (no package changes).

🤖 Generated with Claude Code

https://claude.ai/code/session_01FeVX5keFmnSsjrzRZnnMHj


Note

Low Risk
Documentation and agent-skill tooling only; no runtime library or API changes.

Overview
Agent skills are grouped for install via new .claude-plugin/marketplace.json (Core, React, Vue, Migrations), with React/Vue plugins depending on Core. Repo-only skills (changeset, pr, initialize, etc.) are marked metadata.internal: true so the skills CLI picker no longer offers them.

/data-client-setup now includes a step that maps detected framework/protocol to the skills to install and documents commands for Claude Code plugins, OpenSkills, and the skills CLI.

The Agent Skills doc leads with installing only data-client-setup; a separate section uses <SkillTabs /> for a full framework bundle. SkillTabs reads the marketplace file, adds a Claude Code tab (marketplace add + plugin install), resolves skill lists from plugin (defaulting to the page framework), and drops hand-maintained openSkills lists.

Reviewed by Cursor Bugbot for commit ac96150. Bugbot is set up for automated code reviews on this repo. Configure here.

claude added 13 commits October 3, 2026 23:43
Vue readers were pointed at the React hooks skill. Adds a Vue skill
covering DataClientPlugin, composables, reactive arguments, Suspense and
onErrorCaptured boundaries, and lists it in the agent skills and
debugging docs.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WEpX2AVQj3Xmn2Q51om3J4
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WEpX2AVQj3Xmn2Q51om3J4
Link shared docs for setup and boundaries instead of inlining them, trim
duplicated examples, and merge overlapping eval assertions.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WEpX2AVQj3Xmn2Q51om3J4
useSuspense() now keeps previous data while args change (#4131).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WEpX2AVQj3Xmn2Q51om3J4
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WEpX2AVQj3Xmn2Q51om3J4
openskills has no --skill option (it errors 'unknown option'); install
each skill by its repo path instead.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WEpX2AVQj3Xmn2Q51om3J4
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WEpX2AVQj3Xmn2Q51om3J4
Per-framework selection moves to picker groups in a separate PR.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WEpX2AVQj3Xmn2Q51om3J4
openskills has no grouping, so install each framework's recommended
skills by path; the skills CLI keeps its picker.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WEpX2AVQj3Xmn2Q51om3J4
Add .claude-plugin/marketplace.json so `npx skills add reactive/data-client`
shows Core, React, Vue and Migrations groups, and the repo works as a Claude
Code plugin marketplace. Hide repo-internal skills from installers with
metadata.internal. Agent Skills page adds a Claude Code tab and says which
groups to pick.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FeVX5keFmnSsjrzRZnnMHj
@changeset-bot

changeset-bot Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ac96150

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercel Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
docs-site Ready Ready Preview Oct 5, 2026 3:48am UTC

Request Review

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FeVX5keFmnSsjrzRZnnMHj
@ntucker ntucker self-assigned this Oct 4, 2026
@ntucker
ntucker marked this pull request as ready for review October 4, 2026 18:04
@codecov

codecov Bot commented Oct 4, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (claude/project-thread-y4qugq@2fb94bf). Learn more about missing BASE report.

Additional details and impacted files
@@                       Coverage Diff                       @@
##             claude/project-thread-y4qugq    #4153   +/-   ##
===============================================================
  Coverage                                ?   98.06%           
===============================================================
  Files                                   ?      163           
  Lines                                   ?     3095           
  Branches                                ?      616           
===============================================================
  Hits                                    ?     3035           
  Misses                                  ?       18           
  Partials                                ?       42           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

claude added 4 commits October 4, 2026 21:24
React and Vue plugins depend on Core, so `claude plugin install react@data-client`
pulls in Core. SkillTabs derives each installer's skill list from
marketplace.json via `plugin`, so the skills and OpenSkills commands install
Core plus the framework's skills with no picking.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FeVX5keFmnSsjrzRZnnMHj
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FeVX5keFmnSsjrzRZnnMHj
/data-client-setup now installs the framework and protocol skills it
detects, using the installer that installed it. The Agent Skills page leads
with installing just setup, keeping per-framework installs as the manual
option. SkillTabs always shows a Claude Code tab, installing the plugins
that hold the listed skills.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FeVX5keFmnSsjrzRZnnMHj
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FeVX5keFmnSsjrzRZnnMHj

ntucker commented Oct 5, 2026 •

Copy link
Copy Markdown
Collaborator Author

Sol review bot (GPT-6.1 Sol, High):

Personal review of 375ecafeef765796b0d81e9a127800c012358971: no actionable correctness or regression findings in this PR's diff.

Validation: exercised the actual SkillTabs command-generation logic for every current call-site shape (setup-only, React, Vue, and REST subsets). React/Vue each include the seven Core skills plus only their two framework skills; Skills/OpenSkills commands match those lists, and Claude commands select/deduplicate the correct plugins. Every marketplace skill path exists and excludes the skills marked internal. Reviewed the setup installer step and dependency manifests. Current-head Cursor Bugbot is successful. Limits: did not install plugins/skills into a live agent profile or run a full website build.

claude added 2 commits October 5, 2026 03:22
Master now generates skill references with `yarn build:skills` and rejects
symlinks, so list data-client-vue's docs in references.json.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FeVX5keFmnSsjrzRZnnMHj

ntucker commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator Author

Staff engineer (Cursor agent): Reviewed 7a63378a (master merge plus generating data-client-vue references). The references.json for Vue matches the old symlink set and sets frameworks: [vue] correctly, and the PR's diff against master is still just #4126 plus this PR. No changes requested here. Two follow-ups, neither blocking:

  1. FOLLOW_UP: duplicate hand-written reference. data-client-vue/references/devtools-debugging.md used to be a symlink to React's copy. It's now a byte-identical 366-line hand-written copy (same blob a6551fc). Because it isn't in references.json, the skills drift check won't catch it when one copy changes and the other doesn't. A copy is the right call for now, since a cross-skill link would break when only the Vue skill is installed. Later fix: move the content into a doc (for example, a section of DevToolsManager or the debugging guide) and list it in both skills' references.json, so there's one source.

  2. FOLLOW_UP (from docs(skills): Add data-client-vue agent skill #4126, ships with this stack): stale Vue note in docs/core/getting-started/debugging.md. Vue readers are now told to install the data-client-vue skill, but the :::vue block right after it still says "The skill is named for React, but its devtools-debugging workflow only uses the Controller…". That's no longer true, because the Vue skill has its own devtools-debugging reference. It's a four-line delete that can go in docs(skills): Add data-client-vue agent skill #4126 or here before the stack lands.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FeVX5keFmnSsjrzRZnnMHj

ntucker commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator Author

Re the Staff review on 7a63378:

  1. Single-sourcing devtools-debugging.md: this is a follow-up in its own PR. I've queued it to move the content into a doc and list it in both skills' references.json, so yarn build:skills keeps them in sync.
  2. Stale :::vue note in debugging.md: removed in this PR in 347eff1. It now duplicates nothing, because Vue has its own skill reference.

Generated by Claude Code

Drops the per-framework blocks from agent-skills.md and the unused skillsDir prop.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FeVX5keFmnSsjrzRZnnMHj
Base automatically changed from claude/project-thread-y4qugq to master October 5, 2026 03:45
Keeps #4153's SkillTabs (framework plugin by default) over #4126's openSkills arrays, and takes master's data-client-vue skill.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FeVX5keFmnSsjrzRZnnMHj
@ntucker
ntucker merged commit 0bf4bc6 into master Oct 5, 2026
23 checks passed
@ntucker
ntucker deleted the claude/project-thread-h9pv6f branch October 5, 2026 03:53
ntucker pushed a commit that referenced this pull request Oct 5, 2026
Master already carries #4170 (squashed), so conflicting files take master's
version with this PR's bundling re-applied on top: `skills` in
references.json, bundleSkill in skillReferences.mjs, the push hook's
bundled-skill inputs, and the workflow/rule/README notes. The skill install
table from #4153 drops its `*-setup` rows now that those guides are bundled,
as the PR description planned. References regenerated.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RhxGsX5z7SGhQbUUNfsvsv

This branch was successfully deployed

1 active deployment
Preview — ac96150c Deployed Oct 5, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants