Repository navigation
docs(skills): Bundle protocol setup guides into data-client-setup - #4175
Conversation
Skill references were symlinks to docs MDX, so agents saw raw :::react/:::vue blocks, never saw imported partials (e.g. the install code in _installation.mdx), and Vue skills shipped React-only pages. Each skill now lists its docs in references.json; `yarn build:skills` renders them per framework into plain markdown (website/framework-docs/ docsToMarkdown.mjs, reusing remarkFramework.js and Docusaurus' MDX preprocessing), writing <name>.vue.md where the Vue page differs. A `skills` workflow fails on drift, and Cursor/Claude Code edit hooks regenerate automatically. Also fixes docs this surfaced: :::react blocks whose nested admonition had more colons rendered a stray ":::" on React pages, and several relative links in rest docs pointed at missing pages. The Vue testing skill now imports from @data-client/vue/test and no longer ships the React-only hooks testing guide. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018tec5Fuv98wJacsP97Sg2H
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018tec5Fuv98wJacsP97Sg2H
…ny framework Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018tec5Fuv98wJacsP97Sg2H
…nmentioned variants Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018tec5Fuv98wJacsP97Sg2H
references.json can now list `skills` to bundle. `yarn build:skills` copies each bundled skill's SKILL.md body to references/<skill>.md and its references and scripts under references/<skill>/, so data-client-setup works without the REST, GraphQL or endpoint setup skills installed. The --check drift check covers the copies. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SfViJqNPeWjfhvq9wLhPZ3
Reuse the front matter regex, memoize skill generation, rewrite every relative link in a bundled SKILL.md, and only rerun the edit hook for skills another skill bundles. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SfViJqNPeWjfhvq9wLhPZ3
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
|
Staff engineer (Cursor agent): LGTM at This extends the existing generated-references model (manifest, Follow-ups after merge (not blocking):
|
Setup skills describe themselves as guides used after provider setup, since data-client-setup now carries them. The bundler keeps a script's shebang first and leaves links in fenced code alone. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SfViJqNPeWjfhvq9wLhPZ3
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SfViJqNPeWjfhvq9wLhPZ3
|
Thanks. Here's what happened to each follow-up:
Generated by Claude Code |
Codecov Report✅ All modified and coverable lines are covered by tests. Please upload reports for the commit 7120ec6 to get more accurate results. Additional details and impacted files@@ Coverage Diff @@
## master #4175 +/- ##
==========================================
- Coverage 98.10% 98.06% -0.05%
==========================================
Files 166 163 -3
Lines 3166 3095 -71
Branches 626 616 -10
==========================================
- Hits 3106 3035 -71
Misses 18 18
Partials 42 42 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit ce6e2f5. Configure here.
data-client-rest-setup symlinks its codemod from website/static/codemods, so the skills check and edit hook now watch that folder too. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SfViJqNPeWjfhvq9wLhPZ3
…f per edit Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018tec5Fuv98wJacsP97Sg2H
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018tec5Fuv98wJacsP97Sg2H
… survive stale stamps Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018tec5Fuv98wJacsP97Sg2H
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SfViJqNPeWjfhvq9wLhPZ3
…to claude/project-thread-rr5bpr # Conflicts: # .cursor/hooks/build-skills.js
…f every turn Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018tec5Fuv98wJacsP97Sg2H
…to claude/project-thread-rr5bpr # Conflicts: # .cursor/hooks/build-skills.js # .cursor/rules/skills-sync.mdc
|
Sol review bot (GPT-6.1 Sol, High): Personal review of [P2] The bundled REST setup still requires an uninstalled skill. The new Validation: reproduced the prerequisite/manifest mismatch. Focused generation checks passed for stripped frontmatter, rewritten local links, exact codemod copying after its header, ignoring stale generated references, and propagating handwritten/codemod edits in one generation. Current-head Cursor Bugbot is successful. Limits: scratch renderer dependencies and Linux path/symlink behavior emulated on Windows; no full website build. |
data-client-setup bundles the REST setup guide but not data-client-rest, so the guide now points at its own RestEndpoint and resource references and treats data-client-rest as optional. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SfViJqNPeWjfhvq9wLhPZ3
|
[P2] REST setup required an uninstalled skill: confirmed, and fixed in 04b926d. The source REST setup guide no longer opens with "First, apply the skill data-client-rest". It now points at its own Generated by Claude Code |
Ported from #4176 (already on master via #4174) so unit_tests-latest isn't blocked by the Codecov uploader outage; it no-ops once this branch reaches master. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SfViJqNPeWjfhvq9wLhPZ3
|
Generated by Claude Code |
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
|
[P2] Resolve the codemod target when Git symlinks are disabled Location: In a checkout with Resolve the tracked target independently of OS symlink support, or use a regular source file, so these checkouts can regenerate the same working bundle. |
…pport With core.symlinks=false, git writes the axios codemod symlink as a file holding its target path, so bundling copied the path instead of the codemod. Resolve paths git tracks as symlinks either way. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SfViJqNPeWjfhvq9wLhPZ3
|
[P2] Codemod target with Generated by Claude Code |
Keep bundled setup skills working with master's generator refactor (readManifest, linguist-generated check) and now-generated axios-migration; link the axios codemod so bundled copies resolve it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SfViJqNPeWjfhvq9wLhPZ3
Master folded build-skills.js into pre-push.js; the merge had kept the old file, which no hook runs. Bundled skills' files and the codemods they symlink now trigger regeneration from pre-push.js. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SfViJqNPeWjfhvq9wLhPZ3
…iles before reading Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SfViJqNPeWjfhvq9wLhPZ3
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SfViJqNPeWjfhvq9wLhPZ3
…it helper Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SfViJqNPeWjfhvq9wLhPZ3

Requested by Nathaniel · project thread
Stacked on #4170.
Motivation
/data-client-setuphanded off to three other skills (data-client-rest-setup,data-client-graphql-setup,data-client-endpoint-setup). Installing only the setup skill left an agent with nothing to follow after the provider was in place.Solution
data-client-setupis now one entry point that carries the protocol setup guides itself. The standalone protocol skills stay, andyarn build:skillskeeps the bundled copies in sync.references.jsontakes askillslist. Each bundled skill'sSKILL.mdbody (front matter stripped) becomesreferences/<skill>.md. Its references and scripts are copied underreferences/<skill>/, keeping their layout, and its relative links are rewritten to point there. The REST guide's axios codemod (scripts/axios-to-rest.js) comes along, so<skill-root>/scripts/...still resolves.<!-- -->for markdown,//for scripts).yarn build:skills --checknow also fails when a bundled copy differs from its skill.Open questions
#4153 adds an "Install the Skills This Project Needs" table to
data-client-setup/SKILL.md. Whichever of the two PRs merges second should drop the*-setuprows and keep the usage skills.🤖 Generated with Claude Code
https://claude.ai/code/session_01SfViJqNPeWjfhvq9wLhPZ3
Generated by Claude Code
Note
Low Risk
Changes are limited to agent skill docs and generated reference copies; no application runtime or library API behavior is modified.
Overview
data-client-setupis now a single entry point for provider install plus REST, GraphQL, and custom async setup, without requiring separate*-setupskills to be installed first.After the provider step, the setup skill follows bundled reference guides (
references/data-client-*-setup.md) instead of telling agents to apply other skills.references.jsongains askillslist soyarn build:skillscopies each protocol skill’s body, references, and scripts (including the axios codemod) intodata-client-setup/references/, with drift enforced byyarn build:skills --check.The standalone protocol setup skills remain; their intros are reworded as guides used after the provider is ready.
data-client-setup’s install table no longer lists the GraphQL/endpoint setup skills (REST still getsdata-client-restfor ongoing patterns). The skills CI workflow also watcheswebsite/static/codemods/**because bundled REST setup symlinks the codemod there.Reviewed by Cursor Bugbot for commit 7120ec6. Bugbot is set up for automated code reviews on this repo. Configure here.