Skip to content

docs(skills): Add data-client-vue agent skill - #4126

Merged
ntucker merged 20 commits into
masterfrom
claude/project-thread-y4qugq
Oct 5, 2026
Merged

ntucker merged 20 commits into
masterfrom
claude/project-thread-y4qugq

Conversation

@ntucker

@ntucker ntucker commented Oct 3, 2026 •

Copy link
Copy Markdown
Collaborator

Requested by Nathaniel · project thread

Motivation

Vue users were pointed at the data-client-react skill, and the setup/rest/endpoint/graphql skills already say "apply skill data-client-react or data-client-vue", but data-client-vue didn't exist. The Vue Agent Skills page also listed the React-only skills, and the OpenSkills install tab failed whenever specific skills were listed (openskills has no --skill option).

Solution

Adds .agents/skills/data-client-vue, mirroring the React skill's structure (pairs with the existing data-client-vue-testing):

  • DataClientPlugin setup, every composable, mutations via useController()/$dataClient, useLoading, useDebounce, Query, managers, best practices.
  • Vue-specific guidance: results are refs (.value in script, unwrapped in templates); pass getter args so data follows props (links the shared _vueArgs docs); <Suspense> + onErrorCaptured instead of AsyncBoundary.
<script setup lang="ts">
const props = defineProps<{ id: number }>();
// refetches when props.id changes
const todo = await useSuspense(TodoResource.get, () => ({ id: props.id }));
</script>

data-client-vue-testing fixes:

  • Adds a vue-test-utilities reference (a copy of packages/vue/src/test/README.md, since generated references only read docs/), the Vue guide for renderDataCompose()/mountDataClient().
  • The skill and that README said async setup can't follow prop changes; with getter args it does, so both now show getters:
// before: read once, never refetches when props.id changes
const article = await useSuspense(MyResource.get, { id: props.id });
// after
const article = await useSuspense(MyResource.get, () => ({ id: props.id }));

Docs:

  • agent-skills.md: React pages list /data-client-react and /data-client-react-testing; Vue pages list /data-client-vue and /data-client-vue-testing. The OpenSkills tab installs that framework's recommended skills (shared + framework), since OpenSkills has no picker groups.
  • SkillTabs: the OpenSkills tab installs each listed skill by path instead of the unsupported --skill flag. This also fixes the REST pages:
# before (fails: unknown option '--skill')
npx openskills install reactive/data-client --skill data-client-rest
# after
npx openskills install reactive/data-client/.agents/skills/data-client-rest

No changeset (skills and docs only).

Open questions

Follow-ups: grouping skills (Core/React/Vue) in the npx skills add picker ships in #4153; once #4143 merges, link the DataClientPlugin reference.

🤖 Generated with Claude Code

https://claude.ai/code/session_01WEpX2AVQj3Xmn2Q51om3J4


Note

Low Risk
Documentation and agent-skill content only; no runtime or application code changes.

Overview
Introduces the data-client-vue agent skill so Vue projects get first-class guidance for @data-client/vue (DataClientPlugin, composables, Suspense/onErrorCaptured, getter-based reactive args, batch ctrl.set([Entity], rows)), with generated reference docs, references.json, and evals for CSV import and reactive prop fetching.

data-client-vue-testing is aligned with that model: it documents mountDataClient / renderDataCompose in a new vue-test-utilities reference, and replaces the old “async setup can’t follow props” note with getter arguments for useSuspense (same fix in packages/vue/src/test/README.md).

Docs/site: agent-skills.md splits React vs Vue skill lists; SkillTabs OpenSkills tab installs each skill by path (npx openskills install …/.agents/skills/<name>) instead of unsupported --skill; debugging.md points Vue readers at the Vue skill.

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

claude added 2 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
@changeset-bot

changeset-bot Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 0e3e008

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 3, 2026 •

Copy link
Copy Markdown

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

1 Skipped Deployment
Project Deployment Actions Updated
docs-site Ignored Ignored Preview Oct 5, 2026 3:39am UTC

Request Review

@ntucker ntucker self-assigned this Oct 3, 2026
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
claude added 9 commits October 4, 2026 16:05
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
claude added 4 commits October 4, 2026 18:13
Link the shared Vue argument docs (#4144) now that getters resolve
(#4115), and drop the stale React-skill note from the debugging page
(#4116).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WEpX2AVQj3Xmn2Q51om3J4
Import renderDataCompose/mountDataClient from @data-client/vue/test, and
point the composable testing reference at the Vue test utilities guide
instead of the React-only unit-testing-hooks guide.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WEpX2AVQj3Xmn2Q51om3J4
The test utilities guide and testing skill said async setup can't follow
prop changes; getter args (#4115) do, so show those instead.

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

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

Size Change: 0 B

Total Size: 103 kB

ℹ️ View Unchanged
Filename Size
examples/test-bundlesize/dist/App.js 1.46 kB
examples/test-bundlesize/dist/polyfill.js 307 B
examples/test-bundlesize/dist/rdcClient.js 10.9 kB
examples/test-bundlesize/dist/rdcEndpoint.js 8.07 kB
examples/test-bundlesize/dist/rdcNextjs.js 12.3 kB
examples/test-bundlesize/dist/rdcPipeableStream.js 9.64 kB
examples/test-bundlesize/dist/react.js 59.7 kB
examples/test-bundlesize/dist/webpack-runtime.js 784 B

compressed-size-action

@codecov

codecov Bot commented Oct 4, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.06%. Comparing base (b5db637) to head (6989fc2).
⚠️ Report is 8 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #4126   +/-   ##
=======================================
  Coverage   98.06%   98.06%           
=======================================
  Files         163      163           
  Lines        3095     3095           
  Branches      616      616           
=======================================
  Hits         3035     3035           
  Misses         18       18           
  Partials       42       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 3 commits October 5, 2026 03:25
…ad-y4qugq

# Conflicts:
#	.agents/skills/data-client-vue-testing/SKILL.md
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
Symlinked references are rejected now, so data-client-vue lists _vueArgs in
references.json, and data-client-vue-testing keeps the Vue test utilities
guide as a hand-written reference (the generator only reads docs/).

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

ntucker commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator Author

Staff engineer (Cursor agent): Follow-up after merge, no change needed on this PR.

At 826baf6b, the Vue references now come from references.json the same way as the other skills, and _vueArgs.md is generated too. That's the right direction.

The exception is data-client-vue-testing/references/vue-test-utilities.md. It's a byte-for-byte copy of packages/vue/src/test/README.md (307 lines) with no generated header. The skills check (yarn build:skills --check) only covers files generated from docs/, so when the README or the @data-client/vue/test API changes, nothing catches this copy going stale. The only safeguard is the "update hand-written references" line in .cursor/rules/skills-sync.mdc.

Later: move the Vue testing guide into docs/ (Vue has no testing page there yet, since the unit-testing-* guides are React-only) and list it in data-client-vue-testing/references.json, so the generator owns it and the README can link to the doc. This is the same follow-up as the copied DevTools guide in #4153, and both could go in one pass.

Its references are generated for Vue only, so they have no framework sections.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WEpX2AVQj3Xmn2Q51om3J4
@ntucker
ntucker merged commit 48c9967 into master Oct 5, 2026
26 checks passed
@ntucker
ntucker deleted the claude/project-thread-y4qugq branch October 5, 2026 03:45
ntucker pushed a commit that referenced this pull request Oct 5, 2026
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
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