Commit Graph

43 Commits

Author SHA1 Message Date
John Lindquist 3a8a8b2bea feat: fix on-demand skill install pipeline, add 7 new engine rules, sync registries
- Fix skill store cross-root slug lookup: installed skills under registrySlug
  names (e.g., next-best-practices) now resolve when queried by engine name
  (e.g., nextjs). Full-body injection rate went from 5% to 78% in evals.

- Fix on-demand install: remove dead hooks.json registrations (library module
  with no entry point), keep inline calls from pretooluse/user-prompt-submit.
  Non-registry skills now dedup normally instead of wastefully reinjectiing
  summary-only content that can never upgrade.

- Add suppressWhenProjectFacts to engine rules: next-upgrade and turbopack
  suppressed in greenfield mode (was 12 useless injections per session).

- Add deriveRegistryInstallSet to orchestrator-install-plan (was missing
  export that crashed on-demand-skill-install on every invocation).

- Sync all engine rule registries from skills.sh API via build-registry.ts.
  22 skills now have registry backing across 11 official Vercel repos.
  Exclude vercel-labs/vercel-plugin and vercel/vercel-plugin self-references.

- Add build:registry to the build pipeline (hooks → registry → manifest).

- Create 7 new engine rules: electron, vercel-composition-patterns,
  vercel-react-native-skills, web-design-guidelines, deploy-to-vercel,
  vercel-react-view-transitions, workflow-init.

- Add .claude/skills/ to .gitignore (installed skill caches).

- Add Verification Checklist to CLAUDE.md.
2026-04-08 22:54:49 -06:00
John Lindquist 990691c7c9 fix: align profiler and explain with engine rules
The orchestrator architecture now resolves skill metadata from the engine-derived manifest and the home cache, so these changes remove assumptions that a local skills/ tree still exists. This keeps the explain tooling, manifest compiler, and profiler behavior consistent with the zero-bundle runtime contract and prevents false failures during first-session detection and tests.

Ploop-Iter: 5
2026-04-04 00:30:55 -06:00
John Lindquist abd596d405 fix: complete orchestrator zero-bundle flow
Align the orchestrator with the engine-first architecture so registry-backed skills resolve from the project and home caches without depending on the removed pre-engine build path.

This keeps first-session skill detection and doctor validation stable while the runtime shifts to compiled engine metadata and registry installs, reducing drift between session-start behavior, manifest generation, and test fixtures.

Ploop-Iter: 4
2026-04-03 23:12:17 -06:00
John Lindquist a68e91cbf7 feat: engine-driven skill orchestration with tiered SessionStart
Complete overhaul of skill injection pipeline:

- Replace 50KB unconditional ecosystem graph with tiered SessionStart
  context (Tier 0: 0B non-Vercel, Tier 1-3: up to 6KB based on signals)
- Add coInject primitive for declarative skill co-injection rules
- Add greenfield skill bundle prompt (AI & Chat, Next.js & React,
  Platform & DevOps) with numbered selection interface
- PostToolUse detects npx skills add and auto-injects SKILL.md bodies
- Inline skill body injection via Loaded Skill(X) format
- Auto-generate registry mappings from skills.sh API (build:registry)
- Add greenfield: true engine rule field for manifest-driven detection
- Add hasRealBody and sessionStartEligible manifest fields
- Move vercel.md to on-demand Skill(vercel-ecosystem)
- Write real ai-gateway engine body (OIDC, gateway usage, model strings)
- Add direct provider import validation for @ai-sdk/*
- Fix stale lockfile, install CWD, session-file propagation
- Remove skill caps (3→10), raise budget (18KB→100KB)
- Add VERCEL_PLUGIN_NONINTERACTIVE env var
2026-04-03 18:07:12 -06:00
John Lindquist 93750c4e85 fix: finalize zero-bundle orchestrator cleanup
Align the zero-bundle orchestrator path with the engine-backed runtime so installs, cached skill resolution, and hook behavior stay consistent across fresh sessions and delegated actions.

Remove legacy build-time artifacts that no longer participate in the engine pipeline, and harden the smoke coverage around engine-backed caches and registry-driven installs so future cleanup work does not reintroduce stale skills/ assumptions.

Ploop-Iter: 3
2026-04-02 06:37:17 -06:00
John Lindquist c6e4beacf2 refactor: complete zero-bundle orchestrator
Align the orchestrator branch with the engine-first runtime so skill
resolution, registry metadata, and operator docs all describe the
same source of truth.

Make first-session registry installs resilient in restricted
environments by treating install-plan persistence as best-effort,
which prevents hook execution from failing when the home-state cache
cannot be written.

Ploop-Iter: 2
2026-04-02 05:27:10 -06:00
John Lindquist 8d4fda5a60 refactor: complete engine-native orchestrator flow
Align the shipped architecture around engine-native rules and the zero-bundle
runtime so orchestration, documentation, and maintenance all reflect the
same source of truth.

Remove the pre-engine build and template pipeline to eliminate dead paths
that were masking drift and making test failures harder to reason about.

Make session-start installation honor registry-backed skills accurately,
including per-registry grouping and alias slugs, so first-session cache
warming can produce a usable zero-bundle cache instead of leaving mapped
skills unresolved.

Update doctor coverage and supporting tests so the orchestrator branch
catches hook-registration regressions and cache-resolution mistakes before
release.

Ploop-Iter: 1
2026-04-02 04:32:53 -06:00
John Lindquist 66ea38ab23 refactor: replace bundled skills with engine/ rules + registry resolution
This is a fundamental architectural shift: the plugin no longer ships
skill content. Instead it ships a rules engine (engine/*.md) that
defines WHEN to load skills, and relies on the npx skills registry
(skills.sh/vercel, skills.sh/vercel-labs) to provide WHAT skills say.

## What changed

### New: engine/ directory (40 human-editable rule files)
Each file is a markdown document with YAML frontmatter containing:
- pathPatterns, bashPatterns, importPatterns (file/command matching)
- promptSignals (user prompt scoring: phrases, allOf, anyOf, noneOf)
- validate rules (PostToolUse file validation with severity levels)
- chainTo rules (conditional skill chaining with skipIfFileContains)
- retrieval metadata (aliases, intents, entities for discovery)
- priority, docs URLs, sitemap URLs
- registry source (e.g. "vercel/vercel-skills")

The markdown body serves as a summary fallback when the full skill
content isn't cached locally.

### New: scripts/build-manifest.ts (rewritten)
Now reads engine/*.md instead of skills/*/SKILL.md. Compiles
glob→regex at build time and outputs generated/skill-rules.json.
No dependency on VERCEL_PLUGIN_SKILLS_DIR or local skill sources.

### New: test infrastructure
- tests/helpers/mock-skill-cache.ts — generates a temp
  ~/.vercel-plugin/skills/ directory with stub SKILL.md files
  derived from skill-rules.json for test use
- tests/helpers/preload-mock-cache.ts — bun test preload that
  sets VERCEL_PLUGIN_HOME_DIR before any test runs
- bunfig.toml updated with preload

### Removed: skills/ directory (all 40 bundled skills)
The plugin no longer ships skill bodies. At runtime, hooks resolve
skill content from:
1. ~/.vercel-plugin/projects/<hash>/.skills/ (project cache)
2. ~/.vercel-plugin/skills/ (global cache, populated by npx skills)
3. generated/skill-rules.json (metadata-only fallback)

### Removed: 13 test files
Tests that validated build-time skills/ scanning, SKILL.md
frontmatter parsing, snapshot generation, and other behaviors
tied to bundled skills. The remaining 1383 tests pass.

## Architecture going forward

The decoupling is complete:
- engine/*.md = routing rules (owned by plugin, human-editable)
- npx skills = content delivery (owned by Vercel skills team)
- ~/.vercel-plugin/ = runtime cache (populated on first session)
- generated/skill-rules.json = compiled rules (build artifact)

Skills not yet published to the registry will match via the rules
engine but inject only their summary text and docs/sitemap URL
until the Vercel team publishes them.
2026-04-02 00:23:45 -06:00
John Lindquist 5513edfe83 refactor: switch skill resolution to zero-bundle cache
Keep user projects clean by moving orchestrator state and skill bodies into the shared ~/.vercel-plugin cache instead of relying on per-project bundled artifacts.

Make hook runtime and explain behavior consistent with the zero-bundle distribution model so the plugin can ship only metadata, resolve cached bodies when available, and degrade predictably to summary-only guidance when they are not.

Ploop-Iter: 6
2026-04-01 21:11:23 -06:00
John Lindquist 1c72083d8f refactor remove bundled skill install assumptions
Align install orchestration with hashed home-state roots so surfaced commands and first-session status point at the cache location that now owns project skill state.

Make manifest generation require an explicit skills source so build outputs stay tied to registry-derived metadata instead of implicit bundled inputs as the plugin moves toward zero-bundle distribution.

Ploop-Iter: 5
2026-04-01 20:18:16 -06:00
John Lindquist 114c6a918c refactor globalize skill cache orchestration
Move orchestration state and skill resolution out of user projects so the plugin can run in true zero-bundle mode without relying on bundled skill bodies or per-project artifacts.

Refresh cache state from the shared loaders after install attempts and make build-from-skills resolve source directories lazily so first-session installs, lockfile-only installs, and source-only builds all remain accurate when skills are cached outside the repo.

Ploop-Iter: 4
2026-04-01 19:23:59 -06:00
John Lindquist c062a765da refactor: externalize orchestrator skill state
Move orchestrator state and skill resolution out of user projects so the plugin can run cache-first without leaving bundled skill artifacts behind.

This keeps local repositories clean, makes first-session installation and fallback behavior consistent across hooks, and lets the shipped rules manifest drive summary-only guidance when full skill bodies are not cached yet.

The follow-up review fix removes a tracked project-local .skills artifact and updates smoke coverage to assert against the hashed home-state cache, which prevents the repository itself from masking path regressions during zero-bundle migration.

Ploop-Iter: 2
2026-04-01 17:32:57 -06:00
John Lindquist 5605bae706 Fix cache-only path resolution tests
Swarm-Agent: cache-fix-tests-a1
2026-04-01 13:07:58 -06:00
John Lindquist 312c25d0c0 refactor: cache skill store reads across hooks
Reuse a single cache-first skill store per hook execution so validation and\nchain injection see the same installed skill set without repeated root scans.\n\nThreading the profiled project root into subagent bootstrap keeps spawned\nagents aligned with the parent workspace's installed skills instead of falling\nback to the process cwd, which is required for the orchestrator model to stay\ncorrect as skills move out of the bundled repo and into per-project caches.\n\nAllowing manifest generation from an alternate source directory supports the\ntransition away from bundled skills while preserving the existing manifest and\nhook contracts during migration.\n\nPloop-Iter: 4
2026-03-31 04:32:07 -06:00
melkeydev 90b6504628 fixing our skills with a proper engine 2026-03-22 13:48:55 -07:00
melkeydev ef93bf49ca fixing template broken builds 2026-03-21 22:01:57 -07:00
melkeydev c649033060 removing vercel-lab references 2026-03-16 11:14:28 -07:00
John Lindquist b7e9b1b053 feat: merge upstream telemetry + Cursor compat, fix tests and dedup migration; bump to 0.17.0 2026-03-11 16:12:55 -06:00
John Lindquist 8e24d0694a feat: add chainTo skill chaining, prompt signals, validation upgrades, and dedup reset on context clear
Add a chainTo frontmatter field to skills that triggers follow-up skill injection
when PostToolUse file contents match regex patterns. Add upgradeToSkill/upgradeWhy
fields to validation rules so validate errors can recommend loading a specific skill.
Register posttooluse-bash-chain.mjs in hooks.json. Add ChainToRule interface to
patterns.mts and skill-map-frontmatter.mts, with parseChainToRules() parser. Add
duplicate-key detection to the YAML parser. Reset dedup claim dir and session file
on clear/compact events in session-start-seen-skills so skills re-inject into fresh
context windows.

Add chainTo rules to: agent-browser-verify, agent-browser, ai-elements, ai-gateway,
ai-generation-persistence, ai-sdk, auth, bootstrap, chat-sdk, cms, cron-jobs,
deployments-cicd, email, env-vars, geist, investigation-mode, json-render,
marketplace, micro, ncc, next-forge, nextjs, observability, payments,
react-best-practices, routing-middleware, runtime-cache, satori, shadcn,
sign-in-with-vercel, swr, turbopack, turborepo, v0-dev, vercel-agent, vercel-api,
vercel-cli, vercel-firewall, vercel-flags, vercel-functions, vercel-queues,
vercel-sandbox, vercel-storage, verification, workflow. Add upgradeToSkill to
ai-elements and ai-sdk validate rules. Expand ai-sdk validate messages with
Run Skill() hints. Update nextjs, vercel-storage, runtime-cache, workflow, turborepo
skill bodies.

Add new skills: geistdocs (Geist design system docs), zzz-test-meta-name-mask
(test fixture). Add skills/_chain-audit.md chain coverage audit doc.

Delete .claude-plugin/marketplace.json, .claude-plugin/plugin.json (deprecated),
skills/edge-runtime/SKILL.md (consolidated into vercel-functions).

Add tests: posttooluse-chain.test.ts (4699 lines, chain injection e2e),
ai-sdk-companion.test.ts (181 lines). Expand build-skill-map.test.ts (+335 lines),
validate-rules.test.ts (+936 lines), session-start-seen-skills.test.ts (+74 lines),
skill-map-frontmatter.test.ts (+50 lines), verification-skill.test.ts (+20 lines).

Update build-manifest.ts to emit chainTo rules and upgradeToSkill fields. Rebuild
generated/skill-manifest.json, generated/skill-catalog.md, generated/build-from-skills.manifest.json.
Rebuild all compiled hooks/*.mjs. Update CLAUDE.md lexical prompt default to on.
Update vercel.md ecosystem graph, docs, and cli-reference.
2026-03-11 15:18:35 -06:00
John Lindquist 17be9898ea Add sitemap field to SkillConfig and inject sitemap URLs alongside doc links in the docs warning block. For each skill, find the sitemap.xml URL for its primary documentation domain and add it as metadata.sitemap in SKILL.md frontmatter. Update buildDocsBlock() in patterns.mts to render sitemap URLs parenthetically after doc links. Parse and validate the new field in skill-map-frontmatter.mts, include it in the generated manifest via build-manifest.ts, and propagate the type through pretooluse and user-prompt-submit hooks. 35 of 46 skills now have sitemaps (8 skipped: domains without sitemaps). Rebuild hooks and manifest. 2026-03-10 14:29:36 -06:00
John Lindquist d5b5ef47f7 Replace skill body injection with Skill tool invocation instructions
Instead of injecting the full SKILL.md body as additionalContext, inject
"You must run the Skill(<name>) tool." — a more conventional way of
telling the agent to use the Skill tool for context loading.
2026-03-10 12:46:11 -06:00
John Lindquist 905ffba7fa feat: add lexical stemmer, prompt signal scoring, docs, and plugin metadata
- Add stemmer and shared contractions modules for lexical prompt matching
- Enhance lexical index and prompt patterns with stemming support
- Add promptSignals metadata to all 43 skill frontmatter files
- Add comprehensive documentation site (docs/)
- Add .claude-plugin marketplace and plugin metadata
- Add benchmark scenarios script
- Update skill manifest with prompt signal data
- Add lexical-index and stemmer tests, expand prompt-patterns tests
2026-03-10 03:24:38 -06:00
John Lindquist ff965cc377 fix(skills): remove styled-jsx, regenerate catalog, add investigation-mode skill, build-from-skills templates; bump to 0.9.10 2026-03-09 11:38:08 -06:00
John Lindquist 365a710e67 feat(hooks): add prompt analysis, enhance validate/frontmatter hooks, expand test coverage; bump to 0.5.2 2026-03-07 13:09:28 -07:00
John Lindquist ff251ab018 refactor(hooks): move audit log to ~/.claude/projects dir; add validate hooks, prompt patterns, benchmark suite; bump to 0.5.1 2026-03-07 12:31:10 -07:00
John Lindquist 86dcaa8600 fix(tests): align fuzz and validate tests with skill-map validate field; bump to 0.5.0 2026-03-07 11:18:54 -07:00
John Lindquist d92df12306 feat(benchmark): align analyzer and runner with agent slugs
Switch benchmark runner project definitions to the 12 benchmark-agent scenario slugs and refresh expected skill targets.

Analyzer now discovers benchmark-agent projects from ~/.claude/projects when results subdirectories are absent, and falls back to hook_progress parsing from session JSONL when skill-injections.jsonl is missing.

Report skill hint mappings were expanded for the new scenario skill set so recommendations stay specific.

Verified: bun test tests/benchmark-analyze.test.ts tests/benchmark-pipeline.test.ts (43 pass)
Verified: bun run scripts/benchmark-analyze.ts (discovers 12 benchmark-agent projects)
Swarm-Agent: codex-p0-analyzer-slugs
2026-03-07 10:56:35 -07:00
John Lindquist cd5f369dcb Add new skills, typecheck gate, remove arg/ms/serve skills, bump to 0.4.2
- Add 8 new skills: edge-runtime, geist, micro, ncc, satori, streamdown, styled-jsx, swr
- Remove arg, ms, serve skills (standalone utilities, not relevant to shipping apps on Vercel)
- Add typecheck script and wire into `bun run test` and pre-commit hook
- Fix StdioOptions type error in session-start-profiler
- Add hook-env module and posttooluse-shadcn-font-fix hook
- Refactor skill-map-frontmatter, patterns, pretooluse-skill-inject
- Update generated catalog and manifest (42 skills)
- Add .gitignore with .DS_Store
2026-03-06 19:04:25 -07:00
John Lindquist c082f8112e Add auth, cms, email, and payments skills. Update skill catalog and manifest with new entries. Expand observability and vercel-storage SKILL.md content. Update tests (snapshots, patterns, build-skill-map, vercel-config, subagent-fresh-env, redaction) and fixtures (consolidated-payloads, golden-edit/write-middleware, pattern-fixtures). Improve scripts/validate.ts and scripts/explain.ts with enhanced validation and CLI explain logic. Remove deprecated README.txt and remove Inngest skill references from marketplace SKILL.md, vercel.md, skill-catalog.md, and skill-manifest.json — Vercel now uses Workflow DevKit instead. 2026-03-06 13:49:46 -07:00
John Lindquist ac0e7c84e1 chore: bump plugin version to 0.3.5
Add explain CLI, snapshot tests, and consolidated test fixtures.
2026-03-06 11:57:04 -07:00
John Lindquist 50c2b61ad2 chore: bump plugin version to 0.3.4
- Add greenfield project detection to session-start profiler
- Add profiler boost (+5 priority) for likely skills in PreToolUse
- Remove zzz-test-redos-pattern test skill
- Update golden fixtures and snapshots
- Add agent-browser to ecosystem graph
- Add new golden fixture tests
2026-03-06 10:36:58 -07:00
John Lindquist a5b9f7320a chore: bump plugin version to 0.3.2 2026-03-06 09:48:04 -07:00
John Lindquist 1d5f084780 Add bodyPath to skill manifest entries, golden fixture tests, fuzz tests for glob and YAML parsers, and vercel-config key routing improvements. Bump version to 0.3.0.
Update build-manifest.ts to include bodyPath in each skill manifest entry pointing to the SKILL.md file. Update all SKILL.md frontmatter across all skills to ensure consistent formatting. Add vercel-config.mjs improvements for key-aware skill routing.

Add tests/build-skill-map.test.ts for skill map construction. Add golden fixture JSON files (golden-bash-cap-collision, golden-bash-next-dev, golden-edit-middleware, golden-read-env-local, golden-read-vercel-json, golden-vercel-json-crons, golden-vercel-json-rewrites) for deterministic match engine validation. Add tests/fuzz-glob.test.ts and tests/fuzz-yaml.test.ts for property-based testing of the glob-to-regex and YAML parsers.

Update snapshot files for injection output. Update validate.ts and validate.test.ts with command convention checks. Update HOOKS.md documentation. Update pretooluse-skill-inject.mjs, skill-map-frontmatter.mjs, and vercel-config.mjs hook modules. Bump plugin.json version from 0.2.0 to 0.3.0.
2026-03-06 08:29:02 -07:00
John Lindquist 242d69f686 Extract the match/rank engine from pretooluse-skill-inject.mjs into patterns.mjs so it can be shared between the PreToolUse hook and a new CLI explain command. Add compileSkillPatterns() and rankMatches() to patterns.mjs. Refactor pretooluse-skill-inject.mjs to import and use the shared engine instead of inline matching logic.
Create hooks/vercel-config.mjs that reads vercel.json and maps top-level keys (rewrites, redirects, headers, crons, functions) to skill slugs, so skills are injected when the project uses those Vercel features.

Create hooks/logger.mjs with structured logging at four levels (off, summary, debug, trace) controlled by VERCEL_PLUGIN_LOG_LEVEL env var. Support legacy VERCEL_PLUGIN_DEBUG=1 mapping to debug level.

Create src/cli/explain.ts that takes a tool name and input JSON, runs the match engine, and prints which skills would fire and why. Create src/cli/index.ts as the CLI entry point. Create src/commands/doctor.ts for diagnosing plugin setup issues.

Create src/shared/logger.ts and src/shared/match-engine.ts as TypeScript versions of the shared utilities.

Create scripts/build-manifest.ts that reads all SKILL.md files, parses frontmatter, and generates generated/skill-manifest.json.

Add CLAUDE.md documenting the architecture, dedup contract, YAML parser quirks, test conventions, and log levels.

Add tests: tests/cli-explain.test.ts, tests/logger.test.ts, tests/vercel-config.test.ts, tests/snapshot-runner.test.ts with snapshot files in tests/snapshots/. Add test fixtures in tests/fixtures/. Update existing tests to copy new hook modules (logger.mjs, vercel-config.mjs) into temp dirs.

Update package.json with new bin entry and dependencies.
2026-03-06 06:01:17 -07:00
John Lindquist f838270eac refactor(hooks): extract shared patterns module and add validation
Extract glob-to-regex and seen-skills file utilities into hooks/patterns.mjs
for reuse across the PreToolUse hook and validation script. Add
validateSkillMap to skill-map-frontmatter.mjs. Expand plugin tags for
chat-sdk/bot variants. Comprehensive tests for all new modules.
2026-03-05 20:45:14 -07:00
John Lindquist 138090762e Migrate skill triggers from skill-map.json to SKILL.md frontmatter
Replace centralized skill-map.json with frontmatter-based triggers in
each SKILL.md. Add hooks/skill-map-frontmatter.mjs to parse triggers
at runtime. Update validation, tests, and hook logic accordingly.
2026-03-05 15:35:05 -07:00
John Lindquist dab39f5bb6 Add three new skills (ai-elements, shadcn, json-render) and make OIDC the documented default auth for AI Gateway across the plugin.
Create skills/ai-elements/SKILL.md covering the AI Elements component library — 40+ React components for AI chat UIs (Message, Conversation, Tool, Reasoning, CodeBlock, PromptInput) built as a custom shadcn/ui registry. Document installation via `npx ai-elements`, integration with AI SDK v6 useChat/UIMessage parts, server-side patterns (convertToModelMessages async + toUIMessageStreamResponse), and the DefaultChatTransport client pattern.

Create skills/shadcn/SKILL.md covering shadcn/ui — CLI commands (init, add, build, search, migrate), components.json configuration, namespaced custom registries (@v0, @acme), CSS variable theming with oklch, dark mode setup, the cn() utility, TooltipProvider requirement, RTL support, and framework compatibility (Next.js, Vite, Remix, Astro, Laravel).

Create skills/json-render/SKILL.md covering AI chat response rendering — the UIMessage parts format (text, tool-*, reasoning, step-start), manual rendering patterns for custom chat UIs without AI Elements, ToolResultCard patterns for structured tool output display instead of raw JSON, and the 5 most common v6 rendering mistakes (raw JSON from message.content, tool JSON blobs, convertToModelMessages not awaited, toDataStreamResponse vs toUIMessageStreamResponse, v5 useChat API pattern).

In skills/ai-gateway/SKILL.md, add a full "Authentication (OIDC — Default)" section documenting: VERCEL_OIDC_TOKEN provisioned by `vercel env pull`, @vercel/oidc reading the token automatically, ~24h expiry with re-pull for local dev, auto-refresh on Vercel deployments, AI_GATEWAY_API_KEY as manual alternative, and the auth priority order (API key first, then OIDC fallback).

In skills/ai-sdk/SKILL.md, update the setup section to document OIDC as default auth flow (vercel link → enable gateway → vercel env pull → OIDC token auto-provisioned), rewrite the UI Hooks section with both AI Elements (recommended) and manual rendering patterns showing v6 API changes (DefaultChatTransport, sendMessage, status, message.parts), update Key Patterns to include OIDC, AI Elements, and server-side v6 patterns, and expand the migration section with useChat transport, sendMessage, toUIMessageStreamResponse, and message.parts entries.

In vercel.md ecosystem graph: add AI Elements product entry under AI SDK UI Layer with component list and shadcn dependency, add shadcn/ui product entry under Frameworks with CLI commands and registry system, add OIDC Authentication subsection under AI Gateway with token flow, add AI Elements and custom rendering rows to AI Features decision matrix, update "Build an AI Chatbot" workflow with OIDC steps and AI Elements, add 6 new migration table entries (useChat transport, sendMessage, toUIMessageStreamResponse, message.parts, manual API keys → OIDC), and update AI SDK v6 conventions with OIDC-first auth, AI Elements recommendation, and server/client v6 patterns.

In hooks/skill-map.json, add trigger entries for all 3 new skills: ai-elements (components/ai-elements/**, npx ai-elements, shadcn registry URL patterns), shadcn (components.json, components/ui/**, npx shadcn patterns), json-render (components/chat**, components/message*, chat sidebar patterns).

Run the validator (bun run scripts/validate.ts --coverage skip) to confirm all 8 checks pass with 24 skills, 0 orphans, and all skill-map entries valid.
2026-03-04 13:30:50 -07:00
John Lindquist cc18742dbd chore: remove assets/ dir, point validator and tests at vercel.md
The ecosystem graph now lives at vercel.md (root). Remove the redundant
assets/ directory and update all references in the validator, tests, and
README.
2026-03-04 11:10:33 -07:00
John Lindquist 4c9cc93665 fix: update generateObject/streamObject to AI SDK v6 Output.object() API
generateObject and streamObject are deprecated in AI SDK v6. Replace all
usage and documentation with generateText/streamText + Output.object().

Also:
- Expand migration tables with CoreMessage, Experimental_Agent deprecations
- Simplify validator to check metadata only (components discovered from dirs)
- Add date to vercel.md header
2026-03-04 11:07:22 -07:00
John Lindquist dbb17d4eeb refactor: move ecosystem graph + conventions to CLAUDE.md, remove rules/
Rules (.mdc files) aren't supported by Claude Code's plugin system — they
were silently ignored. Move the ecosystem knowledge graph and all three
convention sets (Next.js 16, AI SDK v6, Vercel platform) into CLAUDE.md
so they're always loaded into context.

Also updates repo references from anthropics/open-plugin to
vercel-labs/vercel-plugin.
2026-03-04 10:22:29 -07:00
John Lindquist 211611ade6 docs(skills,commands): expand command guides, skill docs, and validation logic
Add detailed command conventions, enrich deploy/env/marketplace/status
command docs, strengthen validation script with CLI reference tooling,
and expand skill documentation for marketplace, observability, API,
CLI, and storage skills. Update ecosystem graph and verification checklist.
2026-03-04 08:58:53 -07:00
John Lindquist 7316796d68 test(validation): add test harness, coverage baseline, and orphan detection
Add bun test suite with validate.test.ts, coverage-baseline.ts for
llms.txt gap analysis, orphan-skill detection in validate.ts, structured
JSON output with --format json, and per-check timing metrics.
2026-03-03 20:18:21 -07:00
John Lindquist 2a56636bbe Initial commit: vercel-plugin project setup 2026-03-03 15:13:06 -07:00