Skip to content

Update stale AI skills and add Emil Kowalski animation skill#2824

Merged
nick-inkeep merged 1 commit intomainfrom
feat/skills-installation-and-optimization
Mar 25, 2026
Merged

Update stale AI skills and add Emil Kowalski animation skill#2824
nick-inkeep merged 1 commit intomainfrom
feat/skills-installation-and-optimization

Conversation

@nick-inkeep
Copy link
Copy Markdown
Collaborator

Summary

Updates 4 stale third-party AI skills to their latest upstream versions and installs 1 new first-party skill. Removes an orphaned skill directory.

This is the result of a comprehensive skills ecosystem audit that evaluated 200+ skills across 20+ sources, security-audited 11 repos, and cross-referenced every rule against the codebase. Only changes that are (1) first-party/authoritative, (2) add knowledge not inferrable from docs/search, and (3) have no codebase conflicts were included. Full research and deferred items are documented in the spec.

What changed:

  1. vercel-react-best-practices (57 → 66 rules) — Added 7 new rules from upstream: rendering-resource-hints, rerender-no-inline-components, rerender-use-deferred-value, rerender-split-combined-hooks, server-hoist-static-io, rendering-script-defer-async, js-flatmap-filter. Updated SKILL.md and AGENTS.md index files.

  2. shadcn — Updated SKILL.md to add allowed-tools frontmatter (restricts Bash to shadcn CLI commands for security). Updated cli.md with preset/base flag handling.

  3. web-design-guidelines — Replaced SKILL.md with simplified upstream version (direct WebFetch workflow, removes stale CI-vs-local split path).

  4. next-cache-components — Updated from vercel-labs/next-skills to add unstable_cacheuse cache migration section with before/after code examples.

  5. Removed react/ orphan — Directory had no SKILL.md, contained only rules/no-dot-provider.md which is already covered by vercel-composition-patterns/rules/react19-no-forwardref.md.

  6. Installed emil-design-eng — Animation/motion design skill by Emil Kowalski (creator of Sonner, design engineer at Linear). 672 lines of craft knowledge covering animation decision frameworks, easing curves, duration tables, spring animations, CSS clip-path techniques, gesture interactions, accessibility (prefers-reduced-motion), and a review checklist. This fills the biggest design engineering gap — the app uses animations across 80+ files but had no animation guidance skill.

Key decisions

  • Only Emil Kowalski was added as a new skill — Better Auth, pnpm, turborepo, and Remotion skills were evaluated but deferred. Better Auth and pnpm/turborepo content is inferrable from their official docs/llms.txt endpoints. Remotion is not used in this repo (lives in team-skills plugin layer). Emil's skill uniquely encodes craft knowledge (specific easing curves, duration tables, "never scale(0)") not available in any docs.
  • No AGENTS.md changes in this PR — A skill dispatch table and pruning are planned (research shows +26pp improvement from Vercel evals) but deferred to a separate pass to keep this PR focused on skill file changes only.
  • Full spec with deferred items: specs/2026-03-24-skills-installation-and-optimization/SPEC.md — Section 8 (Future Work) documents all research findings, deferred skills, AGENTS.md optimization strategy, codebase issues surfaced, and llms.txt ecosystem analysis.

Manual QA

No manual QA performed — changes are limited to .agents/skills/ markdown files (no application code, no runtime behavior). pnpm check passes. All three skill symlinks (.claude/skills, .cursor/skills, .codex/skills) verified pointing to .agents/skills/.

🤖 Generated with Claude Code

@vercel
Copy link
Copy Markdown

vercel Bot commented Mar 25, 2026

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

Project Deployment Actions Updated (UTC)
agents-api Ready Ready Preview, Comment Mar 25, 2026 1:11am
agents-docs Ready Ready Preview, Comment Mar 25, 2026 1:11am
agents-manage-ui Ready Ready Preview, Comment Mar 25, 2026 1:11am

Request Review

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Mar 25, 2026

⚠️ No Changeset found

Latest commit: 91bd1dd

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

- Update vercel-react-best-practices: add 9 new rule files (flatmap-filter,
  resource-hints, script-defer-async, no-inline-components, split-combined-hooks,
  use-deferred-value, hoist-static-io, sections, template) + updated SKILL.md
  and AGENTS.md
- Update shadcn: sync SKILL.md and cli.md from latest upstream (shadcn-ui repo)
- Update web-design-guidelines: sync SKILL.md from agent-skills repo
- Update next-cache-components: sync SKILL.md from vercel-labs/next-skills
- Remove react/ orphan skill directory (superseded by vercel-react-best-practices)
- Install emil-design-eng: new skill for Emil Kowalski's design engineering patterns

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
@pullfrog
Copy link
Copy Markdown
Contributor

pullfrog Bot commented Mar 25, 2026

TL;DR — Adds a new Emil Kowalski design-engineering skill for animation and UI polish guidance, expands the vercel-react-best-practices skill from 57 to 64 rules with 7 new individual rule files, and freshens up several existing skills (next-cache-components, shadcn, web-design-guidelines) with updated instructions and migration guides.

Key changes

  • Add emil-design-eng skill — New 670-line skill encoding Emil Kowalski's philosophy on animation decisions, easing curves, Framer Motion patterns, and component polish.
  • Expand vercel-react-best-practices to 64 rules — Adds 7 new rules: server-hoist-static-io, rerender-no-inline-components, rerender-split-combined-hooks, rerender-use-deferred-value, rendering-resource-hints, rendering-script-defer-async, and js-flatmap-filter, each with its own rule file.
  • Add unstable_cacheuse cache migration to next-cache-components — Documents the Next.js 16 migration path with before/after code examples and key differences.
  • Update shadcn skill with allowed-tools and preset base handling — Adds explicit tool allowlist for CLI execution and documents --base behavior when switching presets in scratch directories.
  • Simplify web-design-guidelines source loading — Removes CI-specific references/guidelines.md fallback logic; always fetches fresh guidelines via WebFetch.
  • Remove stale no-dot-provider React rule — Deletes the React 19 <Context> vs <Context.Provider> rule file.
  • Add rule scaffolding for vercel-react-best-practices — New _sections.md (section index with impact levels) and _template.md (rule authoring template).

Summary | 17 files | 1 commit | base: mainfeat/skills-installation-and-optimization


Emil Kowalski design-engineering skill

Before: No agent guidance for animation decisions, easing curves, or UI micro-interactions.
After: A comprehensive skill covering the full animation decision framework — when to animate, duration/easing rules, Framer Motion layout animations, scroll-driven effects, and component-level polish (toasts, modals, buttons, tooltips).

The skill is structured around a frequency-based animation decision tree (never animate keyboard-initiated actions, standard animation for occasional elements, delight for rare/first-time flows) and encodes specific Framer Motion patterns like layoutId for shared-element transitions and layout="position" for smooth resizing.

.agents/skills/emil-design-eng/SKILL.md


Seven new vercel-react-best-practices rules

Before: 57 rules across 8 categories.
After: 64 rules — adds server-side I/O hoisting, inline component extraction, hook splitting, deferred values, resource hints, script loading, and flatMap guidance.

Each new rule follows the established format with rationale, bad/good code examples, and an appliesWhen / doesNotApplyWhen section. The AGENTS.md table of contents and SKILL.md rule index are updated to reflect the new entries and renumbered sections.

.agents/skills/vercel-react-best-practices/SKILL.md · .agents/skills/vercel-react-best-practices/AGENTS.md · rules/_sections.md


unstable_cacheuse cache migration guide

Before: next-cache-components skill covered use cache and cacheLife/cacheTag but had no migration path from unstable_cache.
After: Full before/after migration example with explanation of key differences (automatic cache keys, inline cacheTag() calls, cacheLife() replacement for revalidate).

.agents/skills/next-cache-components/SKILL.md


Updated shadcn and web-design-guidelines skills

Before: shadcn skill had no explicit tool allowlist and no guidance on --base with presets; web-design-guidelines had a two-step CI/local fallback for loading rules.
After: shadcn declares allowed-tools for CLI execution and documents base-preservation behavior; web-design-guidelines always fetches fresh guidelines via WebFetch.

.agents/skills/shadcn/SKILL.md · .agents/skills/web-design-guidelines/SKILL.md · .agents/skills/react/rules/no-dot-provider.md

Pullfrog  | View workflow run | Triggered by Pullfrogpullfrog.com𝕏

Copy link
Copy Markdown
Contributor

@pullfrog pullfrog Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Solid skill maintenance PR. One substantive issue: section 3.4 in AGENTS.md is missing all four code blocks that exist in the standalone rules/server-hoist-static-io.md file. The bold headers are present but without the code examples between them, the rule is not actionable when loaded via the main AGENTS.md document. Minor note: PR description says "57 → 66 rules" but the actual count is 64 (which the SKILL.md correctly states).

Pullfrog  | Fix all ➔Fix 👍s ➔View workflow runpullfrog.com𝕏

Comment on lines +797 to +799
**Incorrect: reads font file on every request**

**Correct: loads once at module initialization**
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code blocks are missing between these bold headers. The standalone rules/server-hoist-static-io.md has four code blocks (incorrect OG route example, correct module-level example, synchronous fs alternative, general Node.js config example) but they were not carried over into AGENTS.md. This makes the rule unusable when read from AGENTS.md — bold headers like "Incorrect: reads font file on every request" are immediately followed by the next bold header with no code in between.

Tying visual changes directly to mouse position feels artificial because it lacks motion. Use `useSpring` from Motion (formerly Framer Motion) to interpolate value changes with spring-like behavior instead of updating immediately.

```jsx
import { useSpring } from 'framer-motion';
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor: the framer-motion package was renamed to motion (re-exported as motion/react). The text on line 152 correctly says "Motion (formerly Framer Motion)" but the import still uses the old package name. Not blocking since framer-motion still works as a compatibility re-export, but worth aligning if you're touching this file.

@nick-inkeep nick-inkeep added this pull request to the merge queue Mar 25, 2026
Copy link
Copy Markdown
Contributor

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Review Summary

(0) Total Issues | Risk: Low

🔴❗ Critical (0) ❗🔴

No critical issues found.

🟠⚠️ Major (0) 🟠⚠️

No major issues found.

🟡 Minor (0) 🟡

No minor issues found.

💭 Consider (1) 💭

Inline Comments:

  • 💭 Consider: emil-design-eng/SKILL.md:4 Missing user-invocable frontmatter field

✅ APPROVE

Summary: Clean skill ecosystem update. All 17 changed files are markdown skill files in .agents/skills/ — no application code, no runtime behavior changes. The new emil-design-eng skill (671 lines) is well-structured with comprehensive animation/motion design guidance. The Vercel React best practices updates (7 new rules) maintain consistency with existing patterns. The allowed-tools addition to shadcn properly restricts Bash commands for security. The orphaned react/rules/ directory removal and web-design-guidelines simplification are both sensible cleanups. 🎉

Reviewers (2)
Reviewer Returned Main Findings Consider While You're Here Inline Comments Pending Recs Discarded
orchestrator (direct review) 1 0 0 0 1 0 0
Total 1 0 0 0 1 0 0

Note: Sub-agent dispatch encountered permission issues; conducted direct review instead.

---
name: emil-design-eng
description: This skill encodes Emil Kowalski's philosophy on UI polish, component design, animation decisions, and the invisible details that make software feel great.
---
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💭 Consider: Missing user-invocable frontmatter

Issue: Other skills in this repo use user-invocable: false to indicate they're system-triggered rather than user-invoked via slash commands.

Why: This maintains consistency with the skill frontmatter convention used in shadcn and other skills in the ecosystem.

Fix: Consider adding user-invocable: false or user-invocable: true (if intended to be slash-command invocable) to the frontmatter.

Refs:

@github-actions github-actions Bot deleted a comment from claude Bot Mar 25, 2026
@itoqa
Copy link
Copy Markdown

itoqa Bot commented Mar 25, 2026

Ito Test Report ✅

18 test cases ran. 18 passed.

The unified local docs verification passed 18/18 test cases with no failures, showing the Visual Builder and TypeScript SDK skills routes consistently rendered expected content and images, remained reachable through cross-page/deep-link/hash navigation, and recovered cleanly through back/forward, reload, and mid-load refresh flows without runtime errors or blank states. Key resilience and security findings were also positive: all seven new skills-step images were reliably served (including 350 parallel burst requests), missing assets failed safely with not-found behavior, layouts stayed stable under Slow 3G and rapid anchor/history interactions, mobile/tablet readability held without overlap or overflow, parallel tab behavior remained stable, and traversal/XSS/malformed-URL probes were safely handled with no code execution or data leakage.

✅ Passed (18)
Category Summary Screenshot
Adversarial Traversal payloads returned safe 404 responses with no README/package.json/.env leakage. ADV-1
Adversarial Injected query/hash payload did not execute; docs content rendered normally and XSS globals stayed undefined. ADV-2
Adversarial Malformed encoded hash/path variants loaded without crash and docs navigation stayed interactive. ADV-3
Adversarial 350 parallel asset requests all returned HTTP 200 and docs page remained stable after burst. ADV-4
Edge Mobile viewport 390x844 remained readable with no horizontal overflow or persistent clipping during full-page scroll. EDGE-1
Edge Tablet viewport 768x1024 kept figures and captions visible with no text/figure overlap or sticky obstruction. EDGE-2
Edge With Slow 3G and double refresh during load, the final page completed with content/images present and no uncaught client errors. EDGE-3
Edge 20 rapid alternating in-page hash jumps completed without freeze; final target section remained visible/interactable. EDGE-4
Edge Parallel tab loading across skills routes stayed stable, including close/reopen recovery. EDGE-5
Logic Hash #attach-skills-to-sub-agents persisted across reload and target heading remained reachable. LOGIC-1
Logic Under Slow 3G, first figure geometry stayed stable through image load with no severe overlap/collapse. LOGIC-2
Logic After 10 rapid back/forward cycles, the final skills page remained rendered and interactive without runtime error banners. LOGIC-3
Logic Direct image URL entry and back/forward transitions preserved stable rendering on the skills docs page. LOGIC-4
Happy-path Visual Builder skills page loaded with expected baseline text and images and no visible runtime error state. ROUTE-1
Happy-path Navigation to /typescript-sdk/skills succeeded with expected skills documentation content and no error overlay. ROUTE-2
Happy-path Cross-navigation and browser back restored Visual Builder skills content without blank-screen behavior. ROUTE-3
Happy-path All 7 expected skills-step image assets returned 200 PNG responses and decoded with non-zero dimensions. ROUTE-4
Happy-path Missing image path handling is safe: route resolves to a not-found response/UI without an application logic defect. ROUTE-5

Commit: bf4ab6a

View Full Run


Tell us how we did: Give Ito Feedback

Merged via the queue into main with commit 6b94986 Mar 25, 2026
27 checks passed
@nick-inkeep nick-inkeep deleted the feat/skills-installation-and-optimization branch March 25, 2026 01:29
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.

1 participant