diff --git a/.changepacks/changepack_log_skill_refresh.json b/.changepacks/changepack_log_skill_refresh.json new file mode 100644 index 00000000..5d00763d --- /dev/null +++ b/.changepacks/changepack_log_skill_refresh.json @@ -0,0 +1,7 @@ +{ + "changes": { + "crates/devup-mcp/Cargo.toml": "Patch" + }, + "note": "Re-vendored the embedded agent skill documents that moved in their source repositories: devup-ui. The copies in this binary are what `devup_skills install` writes on a machine with no network, so a copy that has fallen behind installs rules the upstream project no longer states. Opened automatically by the scheduled skill-drift job; the bytes here are exactly what scripts/refresh-skills.mjs produced.", + "date": "2026-10-26T06:19:13+00:00" +} diff --git a/crates/devup-mcp/src/server/skills/devup-ui/SKILL.md b/crates/devup-mcp/src/server/skills/devup-ui/SKILL.md index 9f76b004..31a78b3b 100644 --- a/crates/devup-mcp/src/server/skills/devup-ui/SKILL.md +++ b/crates/devup-mcp/src/server/skills/devup-ui/SKILL.md @@ -543,16 +543,6 @@ Do not add `include`, `optimizeDeps.exclude` or `ssr.noExternal` entries for it. They are redundant, and writing them suggests to the next reader that a devup-ui package needs wiring when none does. -This reset-css rule is not a blanket ban on diagnosing a different package's -RSC optimizer warning. If `rsc:use-client` names `@devup-ui/react` hooks as -"inconsistently optimized", record the exact versions and test that package's -exclusion separately. An exclusion does not fix the dev-only race where CSS -extraction writes `df/devup-ui/*.css` and triggers an SSR `program reload` -during a request. Capture server logs with the runtime audit's `--server-log` -option, stabilize the dev server and rerun affected screens before changing -responsive page code. Do not disable generated CSS watching as a permanent -fix; doing so also disables CSS hot updates. - **It is a normalize, not a preflight.** It sets `box-sizing: border-box` globally and zeroes a few margins, but for form controls it does exactly two things: diff --git a/crates/devup-mcp/src/server/skills/manifest.json b/crates/devup-mcp/src/server/skills/manifest.json index 657cf625..1afd0d10 100644 --- a/crates/devup-mcp/src/server/skills/manifest.json +++ b/crates/devup-mcp/src/server/skills/manifest.json @@ -1,188 +1,188 @@ -{ - "note": "The skills an agent needs for the code devup-mcp emits. Three origins. 'embedded' skills are DevFive's own but live in another repository: the canonical SKILL.md is vendored here so a machine with only devup-mcp installed can install them with no network, and commit/sha256 say which revision. 'own' skills are authored in this repository - there is nothing upstream to vendor from, so they carry no commit pin and refresh-skills.mjs skips them; this repository's history is their provenance. 'external' skills belong to someone else and are NOT vendored - devup-mcp reports where they come from and the command that installs them, and never runs that command itself.", - "documentNote": "Each entry's documents[] lists every file the skill installs, by path relative to the skill directory. The same relative path is used under crates/devup-mcp/src/server/skills// in this tree, so a document's source and its install location never disagree. A skill is single-file when that list has one SKILL.md in it.", - "skills": [ - { - "name": "devup-ui", - "origin": "embedded", - "title": "devup-ui conventions", - "description": "Zero-runtime CSS-in-JS for React: Box/Flex/Text primitives, css()/globalCss()/keyframes(), devup.json theme tokens, responsive arrays and pseudo-selectors.", - "usedFor": "The TSX devup_figma_export returns is devup-ui code. Without this the agent does not know its components are compile-time placeholders, that $token means devup.json, or that a style prop takes a responsive array.", - "repo": "dev-five-git/devup-ui", - "path": "SKILL.md", - "commit": "cebcfb2a3f94649f297315e702dd468026474ff6", - "committedAt": "2026-09-30T02:49:17Z", - "documents": [ - { - "path": "SKILL.md", - "bytes": 30182, - "sha256": "a71578fa186ff6aec43d0a85cb6163aa9018ac60ed64f9894e21b7da1033d4c0" - } - ], - "sourceUrl": "https://github.com/dev-five-git/devup-ui/blob/cebcfb2a3f94649f297315e702dd468026474ff6/SKILL.md", - "latestUrl": "https://github.com/dev-five-git/devup-ui/blob/HEAD/SKILL.md" - }, - { - "name": "devfive-frontend", - "origin": "own", - "title": "DevFive frontend conventions", - "description": "Where the generated code goes in a Next App Router project: app/ holds only layout.tsx and page.tsx, components live under components/pages//, Server Components are the default, and all styling is devup-ui props rather than an authored CSS file. Multi-file: SKILL.md plus four reference documents.", - "usedFor": "devup_figma_export returns one screen's TSX; a project is a tree of routes. This is the skill that says which file that TSX becomes and which rules it is then judged by. Without it an agent that can already write devup-ui still puts the screen in the wrong place - most visibly by switching screens with local state instead of file routing, and by authoring a .css file next to code that has globalCss().", - "repo": "dev-five-git/devup-mcp", - "path": "crates/devup-mcp/src/server/skills/devfive-frontend", - "documents": [ - { - "path": "SKILL.md", - "bytes": 25023, +{ + "note": "The skills an agent needs for the code devup-mcp emits. Three origins. 'embedded' skills are DevFive's own but live in another repository: the canonical SKILL.md is vendored here so a machine with only devup-mcp installed can install them with no network, and commit/sha256 say which revision. 'own' skills are authored in this repository - there is nothing upstream to vendor from, so they carry no commit pin and refresh-skills.mjs skips them; this repository's history is their provenance. 'external' skills belong to someone else and are NOT vendored - devup-mcp reports where they come from and the command that installs them, and never runs that command itself.", + "documentNote": "Each entry's documents[] lists every file the skill installs, by path relative to the skill directory. The same relative path is used under crates/devup-mcp/src/server/skills// in this tree, so a document's source and its install location never disagree. A skill is single-file when that list has one SKILL.md in it.", + "skills": [ + { + "name": "devup-ui", + "origin": "embedded", + "title": "devup-ui conventions", + "description": "Zero-runtime CSS-in-JS for React: Box/Flex/Text primitives, css()/globalCss()/keyframes(), devup.json theme tokens, responsive arrays and pseudo-selectors.", + "usedFor": "The TSX devup_figma_export returns is devup-ui code. Without this the agent does not know its components are compile-time placeholders, that $token means devup.json, or that a style prop takes a responsive array.", + "repo": "dev-five-git/devup-ui", + "path": "SKILL.md", + "commit": "cebcfb2a3f94649f297315e702dd468026474ff6", + "committedAt": "2026-09-30T02:49:17Z", + "documents": [ + { + "path": "SKILL.md", + "bytes": 29525, + "sha256": "cd750ecb6b49340a2cf4c386ef7c69eeff4d495d115f58223b963430da9f87a2" + } + ], + "sourceUrl": "https://github.com/dev-five-git/devup-ui/blob/cebcfb2a3f94649f297315e702dd468026474ff6/SKILL.md", + "latestUrl": "https://github.com/dev-five-git/devup-ui/blob/HEAD/SKILL.md" + }, + { + "name": "devfive-frontend", + "origin": "own", + "title": "DevFive frontend conventions", + "description": "Where the generated code goes in a Next App Router project: app/ holds only layout.tsx and page.tsx, components live under components/pages//, Server Components are the default, and all styling is devup-ui props rather than an authored CSS file. Multi-file: SKILL.md plus four reference documents.", + "usedFor": "devup_figma_export returns one screen's TSX; a project is a tree of routes. This is the skill that says which file that TSX becomes and which rules it is then judged by. Without it an agent that can already write devup-ui still puts the screen in the wrong place - most visibly by switching screens with local state instead of file routing, and by authoring a .css file next to code that has globalCss().", + "repo": "dev-five-git/devup-mcp", + "path": "crates/devup-mcp/src/server/skills/devfive-frontend", + "documents": [ + { + "path": "SKILL.md", + "bytes": 25023, "sha256": "8e2c9aa66c0929788c31a28c28cdae948829df10dacb592391d022fe01dd330f" - }, - { - "path": "references/critical-rules.md", - "bytes": 57175, - "sha256": "3b7694f5db108407e0b4e3736cc3018b4c72951596eb1e4feab3123a3a4d3549" - }, - { - "path": "references/anti-patterns.md", - "bytes": 12017, - "sha256": "d25adca53b74a5119b5f6e3d4d66f78c02c0771e76b2361a441c1d3a0ec5865a" - }, - { - "path": "references/common-patterns.md", - "bytes": 12110, - "sha256": "fe1d165394824ae0777a3f11dda5a47e0cf27e17872c1e83b70b18de8e29828c" - }, - { - "path": "references/theme-colors.md", - "bytes": 4610, - "sha256": "1d9bb1d7bff8e3b1c0b01433fc9a1ca521d2513d2823048dde9a4fb241399cef" - } - ], - "sourceUrl": "https://github.com/dev-five-git/devup-mcp/blob/HEAD/crates/devup-mcp/src/server/skills/devfive-frontend", - "latestUrl": "https://github.com/dev-five-git/devup-mcp/blob/HEAD/crates/devup-mcp/src/server/skills/devfive-frontend" - }, - { - "name": "devup-implementation-plan", - "origin": "own", - "title": "Screen plan first, confirm once, then implement", - "description": "DevFive project intake, ERD models and supervisor work units, with the full Figma screen-plan and implementation workflow.", - "usedFor": "Without it an agent handed a Figma Section picks URLs itself and writes pages straight away, so nobody can tell afterwards which screen became which URL or whether each one works at every width. It also keeps the questions in structured rounds asked up front, instead of a trickle of prose confirmations - or a question hours into the work while nobody is at the keyboard.", - "repo": "dev-five-git/devup-mcp", - "path": "crates/devup-mcp/src/server/skills/devup-implementation-plan", - "documents": [ - { - "path": "SKILL.md", - "bytes": 36984, + }, + { + "path": "references/critical-rules.md", + "bytes": 57175, + "sha256": "3b7694f5db108407e0b4e3736cc3018b4c72951596eb1e4feab3123a3a4d3549" + }, + { + "path": "references/anti-patterns.md", + "bytes": 12017, + "sha256": "d25adca53b74a5119b5f6e3d4d66f78c02c0771e76b2361a441c1d3a0ec5865a" + }, + { + "path": "references/common-patterns.md", + "bytes": 12110, + "sha256": "fe1d165394824ae0777a3f11dda5a47e0cf27e17872c1e83b70b18de8e29828c" + }, + { + "path": "references/theme-colors.md", + "bytes": 4610, + "sha256": "1d9bb1d7bff8e3b1c0b01433fc9a1ca521d2513d2823048dde9a4fb241399cef" + } + ], + "sourceUrl": "https://github.com/dev-five-git/devup-mcp/blob/HEAD/crates/devup-mcp/src/server/skills/devfive-frontend", + "latestUrl": "https://github.com/dev-five-git/devup-mcp/blob/HEAD/crates/devup-mcp/src/server/skills/devfive-frontend" + }, + { + "name": "devup-implementation-plan", + "origin": "own", + "title": "Screen plan first, confirm once, then implement", + "description": "DevFive project intake, ERD models and supervisor work units, with the full Figma screen-plan and implementation workflow.", + "usedFor": "Without it an agent handed a Figma Section picks URLs itself and writes pages straight away, so nobody can tell afterwards which screen became which URL or whether each one works at every width. It also keeps the questions in structured rounds asked up front, instead of a trickle of prose confirmations - or a question hours into the work while nobody is at the keyboard.", + "repo": "dev-five-git/devup-mcp", + "path": "crates/devup-mcp/src/server/skills/devup-implementation-plan", + "documents": [ + { + "path": "SKILL.md", + "bytes": 36984, "sha256": "bb05424c9dff409905418b6826a2eb6452b927d850b88c4d60710f88311b6825" - } - ], - "sourceUrl": "https://github.com/dev-five-git/devup-mcp/blob/HEAD/crates/devup-mcp/src/server/skills/devup-implementation-plan", - "latestUrl": "https://github.com/dev-five-git/devup-mcp/blob/HEAD/crates/devup-mcp/src/server/skills/devup-implementation-plan" - }, - { - "name": "devup", - "origin": "own", - "title": "/devup: build pages or a site from Figma", - "description": "DevFive project intake, ERD models and supervisor work units, with the full Figma screen-plan and implementation workflow.", - "usedFor": "An MCP server cannot start a skill or a slash command itself. Claude Code offers this skill as /devup, and devup_skills install writes an OpenCode command beside it, so the user has one word to type that starts everything in the right order.", - "repo": "dev-five-git/devup-mcp", - "path": "crates/devup-mcp/src/server/skills/devup", - "documents": [ - { - "path": "SKILL.md", - "bytes": 14857, - "sha256": "e618c1f3af44f7815ffdfd2e2f9e72c2a358eb1e15d4fd6a660b6d45398f7a12" - } - ], - "sourceUrl": "https://github.com/dev-five-git/devup-mcp/blob/HEAD/crates/devup-mcp/src/server/skills/devup", - "latestUrl": "https://github.com/dev-five-git/devup-mcp/blob/HEAD/crates/devup-mcp/src/server/skills/devup" - }, - { - "name": "changepacks", - "origin": "embedded", - "title": "changepacks conventions", - "description": "Version and changelog management for multi-language monorepos: when a pull request needs a changepack log, how to create one without an interactive prompt, and how .changepacks/config.json decides which paths are tracked.", - "usedFor": "Every repository devup-mcp writes into manages its versions this way. A pull request that changes a tracked path without a changepack log never moves the version, so the change reaches the base branch and is never released - and the invocation the project documents is interactive, which hangs in the shells an agent runs in. That combination is why the step gets skipped.", - "repo": "changepacks/changepacks", - "path": "SKILL.md", - "commit": "ec1f4b025ed781856eb8650e880ece9935be3351", - "committedAt": "2026-09-15T07:25:28Z", - "documents": [ - { - "path": "SKILL.md", - "bytes": 4700, - "sha256": "5477d13f7ebaf79fdf701b7e8d5b3071e09300b9ec2e55ecd51ccd223981b071" - } - ], - "sourceUrl": "https://github.com/changepacks/changepacks/blob/ec1f4b025ed781856eb8650e880ece9935be3351/SKILL.md", - "latestUrl": "https://github.com/changepacks/changepacks/blob/HEAD/SKILL.md" - }, - { - "name": "vespera", - "origin": "embedded", - "title": "vespera conventions", - "description": "FastAPI-like DX for Rust/Axum: route handlers, Schema derivation and OpenAPI generation.", - "usedFor": "The openapi.json devup_project_context reads under scope api is generated by vespera routes.", - "repo": "dev-five-git/vespera", - "path": "SKILL.md", - "commit": "4030b6c053896fce34477b73616216c86d4b7f85", - "committedAt": "2026-06-24T08:21:03Z", - "documents": [ - { - "path": "SKILL.md", - "bytes": 23635, - "sha256": "44db39f98cbb2520ca9a610a59753f39be2e226da7ee11a940234800cf98b27f" - } - ], - "sourceUrl": "https://github.com/dev-five-git/vespera/blob/4030b6c053896fce34477b73616216c86d4b7f85/SKILL.md", - "latestUrl": "https://github.com/dev-five-git/vespera/blob/HEAD/SKILL.md" - }, - { - "name": "vespertide", - "origin": "embedded", - "title": "vespertide conventions", - "description": "JSON database schema definitions and migration plans: tables, columns, constraints and ENUM types.", - "usedFor": "The models/*.json devup_project_context reads under scope db are vespertide schemas.", - "repo": "dev-five-git/vespertide", - "path": "SKILL.md", - "commit": "586426bcfc388557fe9b916c941adb43ab04317e", - "committedAt": "2026-03-06T06:11:16Z", - "documents": [ - { - "path": "SKILL.md", - "bytes": 18057, - "sha256": "7d79f9814819d107038181628a370a11e095a7314a63a0a6c5b5a9bcab6fbfdf" - } - ], - "sourceUrl": "https://github.com/dev-five-git/vespertide/blob/586426bcfc388557fe9b916c941adb43ab04317e/SKILL.md", - "latestUrl": "https://github.com/dev-five-git/vespertide/blob/HEAD/SKILL.md" - }, - { - "name": "vercel-react-best-practices", - "origin": "external", - "title": "React/Next.js performance (Vercel Engineering)", - "description": "40+ rules across 8 categories: eliminating waterfalls, bundle size, re-render cost, server fetching. Multi-file: SKILL.md plus an AGENTS.md and ~70 rule files.", - "usedFor": "The TSX devup_figma_export returns becomes React components; these are the performance rules they are then judged by.", - "repo": "vercel-labs/agent-skills", - "path": "skills/react-best-practices", - "installCommand": "npx skills add vercel-labs/agent-skills", - "license": "none-declared", - "licenseNote": "vercel-labs/agent-skills publishes no LICENSE file, so devup-mcp does not vendor or redistribute its content. It is installed from source by the agent.", - "sourceUrl": "https://github.com/vercel-labs/agent-skills/tree/HEAD/skills/react-best-practices", - "latestUrl": "https://github.com/vercel-labs/agent-skills/tree/HEAD/skills/react-best-practices" - }, - { - "name": "vercel-react-view-transitions", - "origin": "external", - "title": "React View Transitions (Vercel Engineering)", - "description": "React's View Transition API: , addTransitionType, CSS pseudo-elements, shared element transitions, Next.js integration. Multi-file: SKILL.md plus AGENTS.md and reference files.", - "usedFor": "Figma prototype reactions become animations; this is how to implement them with the View Transition API rather than by hand.", - "repo": "vercel-labs/agent-skills", - "path": "skills/react-view-transitions", - "installCommand": "npx skills add vercel-labs/agent-skills", - "license": "none-declared", - "licenseNote": "vercel-labs/agent-skills publishes no LICENSE file, so devup-mcp does not vendor or redistribute its content. It is installed from source by the agent.", - "sourceUrl": "https://github.com/vercel-labs/agent-skills/tree/HEAD/skills/react-view-transitions", - "latestUrl": "https://github.com/vercel-labs/agent-skills/tree/HEAD/skills/react-view-transitions" - } - ] -} + } + ], + "sourceUrl": "https://github.com/dev-five-git/devup-mcp/blob/HEAD/crates/devup-mcp/src/server/skills/devup-implementation-plan", + "latestUrl": "https://github.com/dev-five-git/devup-mcp/blob/HEAD/crates/devup-mcp/src/server/skills/devup-implementation-plan" + }, + { + "name": "devup", + "origin": "own", + "title": "/devup: build pages or a site from Figma", + "description": "DevFive project intake, ERD models and supervisor work units, with the full Figma screen-plan and implementation workflow.", + "usedFor": "An MCP server cannot start a skill or a slash command itself. Claude Code offers this skill as /devup, and devup_skills install writes an OpenCode command beside it, so the user has one word to type that starts everything in the right order.", + "repo": "dev-five-git/devup-mcp", + "path": "crates/devup-mcp/src/server/skills/devup", + "documents": [ + { + "path": "SKILL.md", + "bytes": 14857, + "sha256": "e618c1f3af44f7815ffdfd2e2f9e72c2a358eb1e15d4fd6a660b6d45398f7a12" + } + ], + "sourceUrl": "https://github.com/dev-five-git/devup-mcp/blob/HEAD/crates/devup-mcp/src/server/skills/devup", + "latestUrl": "https://github.com/dev-five-git/devup-mcp/blob/HEAD/crates/devup-mcp/src/server/skills/devup" + }, + { + "name": "changepacks", + "origin": "embedded", + "title": "changepacks conventions", + "description": "Version and changelog management for multi-language monorepos: when a pull request needs a changepack log, how to create one without an interactive prompt, and how .changepacks/config.json decides which paths are tracked.", + "usedFor": "Every repository devup-mcp writes into manages its versions this way. A pull request that changes a tracked path without a changepack log never moves the version, so the change reaches the base branch and is never released - and the invocation the project documents is interactive, which hangs in the shells an agent runs in. That combination is why the step gets skipped.", + "repo": "changepacks/changepacks", + "path": "SKILL.md", + "commit": "ec1f4b025ed781856eb8650e880ece9935be3351", + "committedAt": "2026-09-15T07:25:28Z", + "documents": [ + { + "path": "SKILL.md", + "bytes": 4700, + "sha256": "5477d13f7ebaf79fdf701b7e8d5b3071e09300b9ec2e55ecd51ccd223981b071" + } + ], + "sourceUrl": "https://github.com/changepacks/changepacks/blob/ec1f4b025ed781856eb8650e880ece9935be3351/SKILL.md", + "latestUrl": "https://github.com/changepacks/changepacks/blob/HEAD/SKILL.md" + }, + { + "name": "vespera", + "origin": "embedded", + "title": "vespera conventions", + "description": "FastAPI-like DX for Rust/Axum: route handlers, Schema derivation and OpenAPI generation.", + "usedFor": "The openapi.json devup_project_context reads under scope api is generated by vespera routes.", + "repo": "dev-five-git/vespera", + "path": "SKILL.md", + "commit": "4030b6c053896fce34477b73616216c86d4b7f85", + "committedAt": "2026-06-24T08:21:03Z", + "documents": [ + { + "path": "SKILL.md", + "bytes": 23635, + "sha256": "44db39f98cbb2520ca9a610a59753f39be2e226da7ee11a940234800cf98b27f" + } + ], + "sourceUrl": "https://github.com/dev-five-git/vespera/blob/4030b6c053896fce34477b73616216c86d4b7f85/SKILL.md", + "latestUrl": "https://github.com/dev-five-git/vespera/blob/HEAD/SKILL.md" + }, + { + "name": "vespertide", + "origin": "embedded", + "title": "vespertide conventions", + "description": "JSON database schema definitions and migration plans: tables, columns, constraints and ENUM types.", + "usedFor": "The models/*.json devup_project_context reads under scope db are vespertide schemas.", + "repo": "dev-five-git/vespertide", + "path": "SKILL.md", + "commit": "586426bcfc388557fe9b916c941adb43ab04317e", + "committedAt": "2026-03-06T06:11:16Z", + "documents": [ + { + "path": "SKILL.md", + "bytes": 18057, + "sha256": "7d79f9814819d107038181628a370a11e095a7314a63a0a6c5b5a9bcab6fbfdf" + } + ], + "sourceUrl": "https://github.com/dev-five-git/vespertide/blob/586426bcfc388557fe9b916c941adb43ab04317e/SKILL.md", + "latestUrl": "https://github.com/dev-five-git/vespertide/blob/HEAD/SKILL.md" + }, + { + "name": "vercel-react-best-practices", + "origin": "external", + "title": "React/Next.js performance (Vercel Engineering)", + "description": "40+ rules across 8 categories: eliminating waterfalls, bundle size, re-render cost, server fetching. Multi-file: SKILL.md plus an AGENTS.md and ~70 rule files.", + "usedFor": "The TSX devup_figma_export returns becomes React components; these are the performance rules they are then judged by.", + "repo": "vercel-labs/agent-skills", + "path": "skills/react-best-practices", + "installCommand": "npx skills add vercel-labs/agent-skills", + "license": "none-declared", + "licenseNote": "vercel-labs/agent-skills publishes no LICENSE file, so devup-mcp does not vendor or redistribute its content. It is installed from source by the agent.", + "sourceUrl": "https://github.com/vercel-labs/agent-skills/tree/HEAD/skills/react-best-practices", + "latestUrl": "https://github.com/vercel-labs/agent-skills/tree/HEAD/skills/react-best-practices" + }, + { + "name": "vercel-react-view-transitions", + "origin": "external", + "title": "React View Transitions (Vercel Engineering)", + "description": "React's View Transition API: , addTransitionType, CSS pseudo-elements, shared element transitions, Next.js integration. Multi-file: SKILL.md plus AGENTS.md and reference files.", + "usedFor": "Figma prototype reactions become animations; this is how to implement them with the View Transition API rather than by hand.", + "repo": "vercel-labs/agent-skills", + "path": "skills/react-view-transitions", + "installCommand": "npx skills add vercel-labs/agent-skills", + "license": "none-declared", + "licenseNote": "vercel-labs/agent-skills publishes no LICENSE file, so devup-mcp does not vendor or redistribute its content. It is installed from source by the agent.", + "sourceUrl": "https://github.com/vercel-labs/agent-skills/tree/HEAD/skills/react-view-transitions", + "latestUrl": "https://github.com/vercel-labs/agent-skills/tree/HEAD/skills/react-view-transitions" + } + ] +}