397 Commits

Author SHA1 Message Date
Jerilyn Zheng b0b3b3261c Clarify AI Gateway coding agent guidance (#179) 2026-09-13 15:40:39 -07:00
Malte Ubl fbd90503b9 [vercel-functions] Add long-duration, large functions, and Docker; make anti-Edge guidance prescriptive (#177)
* [vercel-functions] Add long-duration, large functions, and Docker; harden anti-Edge guidance

The skill had no coverage of several shipped Functions features, and carried
stale numbers that produced actively wrong advice.

New sections:
- Duration and Long-Duration Functions — per-plan table, extended max duration
  beta (1800s) with its real constraints: per-function config only, supported
  runtime versions, no Secure Compute/Static IPs, HTTP/1.1 idle-connection
  caveat and the heartbeat workaround, getDeadline(), and when to use Workflow.
- Large Functions — 250 MB / 500 MB Python standard limits, the 5 GB beta and
  VERCEL_SUPPORT_LARGE_FUNCTIONS opt-in, bundle trimming, and the separate
  4.5 MB payload cap that gets confused with it.
- Docker and Container Images — Dockerfile.vercel, PORT, scale-to-zero, the
  30s SIGTERM grace period, per-instance log broadcast, Services with
  runtime: "container", VCR limits/pricing, and when not to containerize.
- Plan Limits at a Glance, with a "What changed for Hobby" note: duration went
  60s -> 300s for both default and max, and Basic CPU was replaced by Standard.

Anti-Edge guidance is now prescriptive rather than advisory. "Rule #1: Node.js,
never Edge" leads the skill with a directive to remove runtime = 'edge' on
sight, a table answering each reason people reach for Edge, what Edge actually
costs, and a migration recipe. A new validate rule flags runtime = 'edge' /
"runtime": "edge" as an error, and the runtime-selection table and diagnostics
trees no longer recommend Edge anywhere.

Corrections to existing content:
- Hobby max duration was listed as 10s; it is 300s.
- waitUntil was shown taking a callback. It takes a Promise — the documented
  form silently did nothing.
- memory was shown in vercel.json and in the OOM diagnostic; it cannot be set
  there (build warning) and is dashboard-only, Pro/Enterprise only.
- Request bodies were listed as 100 MB; the documented cap is 4.5 MB.
- 5 GB bundles were stated unconditionally; they require the opt-in beta.
- Edge was described as a 25s hard limit; it is 25s to first byte, then up to
  300s of streaming.
- now.json removal was written in the future tense with a date now past.

Also adds a summary field so the skill degrades to a short summary instead of
being dropped entirely when it exceeds the injection budget, plus path/bash/
prompt signals for Dockerfile.vercel, vercel.ts, vercel vcr, and duration and
bundle-size phrasing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

Co-Authored-By: Malte Ubl <89679+cramforce@users.noreply.github.com>

* Correct the vercel.json memory claim

Two problems with the previous wording, both flagged in review:

"and is ignored" was not documented anywhere. The memory docs say only that
setting it produces a build-time warning; whether the value is then discarded
is not stated. Removed the invented consequence.

"NOT settable in vercel.json" dropped a real qualifier. The vercel.json
reference scopes it: "Memory cannot be set in vercel.json with Fluid compute
enabled." The memory key remains valid for legacy non-Fluid deployments, which
is why /docs/functions/configuring-functions/advanced-configuration still shows
"memory": 3009 examples. Restored the Fluid qualifier in all four places and
noted why older examples exist, so the skill doesn't read as contradicting
Vercel's own docs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

Co-Authored-By: Malte Ubl <89679+cramforce@users.noreply.github.com>

* Soften anti-Edge guidance to a strong recommendation; drop AWS mention

The Edge guidance was written as a prohibition. Reframed as a strong default
while keeping the one genuinely hard constraint — Next.js 16.3+ doesn't support
runtime = 'edge', so migration is required there and only there.

- Heading: "Rule #1: Node.js, never Edge" -> "Prefer Node.js over the Edge
  runtime" (all three internal anchors updated).
- "Do not write it, do not suggest it, remove it on sight" -> prefer Node.js in
  new code, recommend migrating when found; a tested reason to stay on Edge is
  a legitimate call to make deliberately.
- validate rule severity: error -> recommended. Existing Edge functions still
  work, so this is a nudge rather than a blocker. Message reworded to match.
- Migration section now says it's worth doing when already touching the file,
  and required on Next.js 16.3+ — not an emergency otherwise.
- vercel.json's runtime: "edge" moved out of the "cannot put here" list, since
  it is accepted; it's now a preference note.
- Diagnostics: "Correct fix: delete" -> "Recommended fix: drop"; "Do NOT fix
  this by moving to Edge" -> "Moving to the Edge runtime is not the fix".
- "Edge (legacy — do not choose this)" -> "(legacy — not recommended)".

Also removes the infrastructure-provider attribution from the 250 MB bundle
limit, and drops a redundant sentence from the long-function cost note.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

Co-Authored-By: Malte Ubl <89679+cramforce@users.noreply.github.com>

---------

Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com>
Co-authored-by: Malte Ubl <89679+cramforce@users.noreply.github.com>
2026-09-13 15:22:09 -07:00
Elisabeth Rulke 95c744e7de [vercel-sandbox] rewrite skill as a comprehensive general Sandbox guide (#180)
* [vercel-sandbox] rewrite skill as a comprehensive general Sandbox guide

The published skill was a stale browser-automation recipe: it installed
packages with dnf on Amazon Linux (the default image is Ubuntu/apt) and
omitted persistence, regions, images, drives, network policy, credential
brokering, multi-agent, the CLI, and limits. Agents loading it were steered
wrong on the basics.

Rewrite skills/vercel-sandbox/upstream/SKILL.md into a full general Sandbox
skill covering the create/run/stop loop, auth, all create options, commands
(no shell, exit-code semantics), files, apt packages, ports and preview URLs,
persistence/sessions/hooks, snapshots, images, drives, network policy and
credential brokering, running AI agents via the AI Gateway, multi-agent
isolation, the CLI, limits, and a best-practice checklist. Add a summary
field to overlay.yaml as the injection-budget fallback.

Every claim is mapped to a vercel.com/docs/sandbox source or a live probe;
key runtime behaviors (non-zero exit does not throw, timeout rejects in
flight, default user is ubuntu) are BEHAVIOR_CONFIRMED against @vercel/sandbox
3.1.0. Regenerated skill build output and manifest.

* [vercel-sandbox] bump plugin version to 0.49.2

Skill content ships to users via a version bump (per #171). Bump the source
version in package.json and .claude-plugin/plugin.json, sync the per-harness
manifests (.cursor-plugin, .kimi-plugin, .plugin) and the telemetry hook
fallback, and regenerate build outputs. Addresses review feedback.
2026-09-13 13:44:56 -07:00
Vincent Derks df0f55213f Sync flags skill updates; bump to 0.49.1 (#171)
* Sync flags skill updates; bump to 0.49.1 (EXP-3444)

* Sync flags entities CLI guidance
2026-09-10 09:18:43 -04:00
Jerilyn Zheng dca8da784e Fix AI Gateway skill YAML parsing (#174) 2026-09-08 06:44:26 -04:00
MelkeyDev 358400ace0 adding skill invocation for plugin (#166)
* adding skill invocation for plugin

* Address review: namespace allowlist, skill:injected, harness tagging

- Only accept skills under the plugin's own namespaces (vercel, vercel-plugin);
  other-plugin:deploy, netlify:deploy, and bare slugs are dropped
- Emit skill:injected from the opt-in inject hooks via the same detached sender
- Persist the detected harness per session and attach plugin:agent_harness to
  every skill event batch
- Fix normalizeDetectedAgentHarness for AI_AGENT-style names
  (claude-code_<version>_agent was reporting as "other")
- Accept Cursor-shaped payloads (conversation_id) through compat normalizeInput
- Disable telemetry for the whole test suite via bunfig preload so hook tests
  never phone home

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-05 11:23:35 -07:00
Jerilyn Zheng 7b0a6f61b2 [skills] Refresh the AI Gateway skill (#162)
* [skills] Refresh the AI Gateway skill

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [skills] Add AI Gateway CLI inventory, fixtures, and coding-agent validation

- Add a Vercel CLI inventory table to the ai-gateway skill covering
  api-keys, budgets, budget defaults, models, routing rules,
  coding-agents setup, and leaderboard
- Add a validate rule for the Claude Code footgun: ANTHROPIC_BASE_URL
  pointed at AI Gateway requires ANTHROPIC_API_KEY empty with the
  gateway key in ANTHROPIC_AUTH_TOKEN
- Add pattern fixtures for vercel ai-gateway commands and
  @ai-sdk/gateway installs
- Bump plugin version to 0.48.2

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [skills] Cover AI Gateway dashboard and API surfaces added since refresh

- Model discovery documents the live /v1/models fields (type,
  modalities, tags, pricing, zdr/no_training) and the per-endpoint
  response (has_zdr, has_no_training, full and regional pricing,
  live uptime/latency/throughput), with a tested jq filter example
- Add service tiers, fast mode, model filtering (has), safety
  identifiers, and virtual model configs to the routing reference
- Add Usage & Billing endpoints (GET /v1/credits, GET /v1/generation)
  and generation ID capture to the spend reference
- Correct the pricing claim: some models price below provider list
  for every team, and volume discounts exist
- Correct spend alert recipients (owners and Billing role for team
  and project budgets) and document spend attribution plus the
  AI Gateway Budget Manager permission
- Note project-scoped Logs and CSV/JSON export, per-agent setup
  pages for coding agents, and the rules REST endpoints

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [skills] Document reasoning across providers and API formats

- Add a reasoning section to the routing reference: discovery through
  the model's reasoning_options field, per-format parameters (AI SDK
  top-level reasoning, Chat Completions/Responses reasoning object,
  Anthropic thinking), cross-format effort and budget mapping, and
  per-provider usage reporting differences
- Call out the precedence footgun: providerOptions reasoning entries
  fully override the top-level reasoning option and are never merged
- Add the invariant to SKILL.md plus retrieval intent and prompt
  signal coverage

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [skills] Document tool calling across API formats

- Add a tools section to the routing reference: discovery through the
  tool-use tag and supported_parameters, cross-format translation of
  tool schemas to the serving provider, per-format entry points, and
  web search as a built-in tool
- Add retrieval intent and prompt signal coverage

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [skills] Document structured outputs and file attachments

- Structured outputs: json_schema response_format across formats,
  legacy json form, streaming accumulation, per-format pages
- File attachments: content-part arrays, image_url and file parts,
  discovery through modalities.input and vision/file-input tags
- Retrieval intents and prompt signals for both

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [skills] Link the AI Gateway rate limits page from the 429 row

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [skills] Link the AI Gateway FAQ page

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [skills] Drop transcript capture from the observability reference

Content capture is not public yet.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [skills] Address R-Taneja's review nits

- Single-quote the chainTo pattern scalar so spec-strict YAML parsers
  accept it
- Make the BYOK skip case-insensitive and let other keys precede
  gateway in providerOptions
- Use exact-match index() instead of array contains() in the jq
  example; verified it returns the same 76 models against the live
  catalog
- Separate CLI-configured agents from first-party-provider agents in
  the coding-agents reference so OpenCode and Pi no longer appear on
  both sides

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* [hooks] Unpin the telemetry test's plugin version and rebuild

The test asserted the literal 0.48.1 while the built hook inlines the
version from package.json at build time, so any version bump fails CI
with a green local run (the local build goes stale silently). The test
now reads .plugin/plugin.json, and hooks/telemetry.mjs is rebuilt for
0.48.2.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 10:58:42 -07:00
Vincent Derks 93a4de9d97 Add flags-sdk skill synced from vercel/flags (#154)
* Add flags-sdk skill synced from vercel/flags

Co-authored-by: Vincent Derks <vincent-derks@users.noreply.github.com>

* Use vercel flags create instead of the add alias

Co-authored-by: Vincent Derks <vincent-derks@users.noreply.github.com>

* Revert "Use vercel flags create instead of the add alias"

This reverts commit 274dcbc4d9.

* Fix dead docs sitemap URL (vercel.com/sitemap/docs.xml soft-404s)

Co-authored-by: Vincent Derks <vincent-derks@users.noreply.github.com>

* Rename Edge Config to Global Config (product renamed July 2026)

Co-authored-by: Vincent Derks <vincent-derks@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Vincent Derks <vincent-derks@users.noreply.github.com>
2026-08-27 15:52:10 -07:00
Ricardo Gonzalez c4a1c4e2e1 Add inline links to backend skill (#148) 2026-08-20 16:44:30 -07:00
Ricardo Gonzalez 7f60d3237d [create-a-backend-skill] creating a skill for backends on vercel (#147)
* Add create-a-backend skill

* Refine create-a-backend metadata

* feedback

* db and ws

* Update skills/create-a-backend/SKILL.md

Co-authored-by: Yury Selivanov <yury@vercel.com>

* fixes

* front + back pair

* minor uptick

* docker and queues

* Sync telemetry with plugin version

* combinations

* combinations v2

* + flask

---------

Co-authored-by: Yury Selivanov <yury@vercel.com>
2026-08-20 12:47:45 -07:00
MelkeyDev 11c3258878 [Plugin] adding harness detection and install session ID (#136)
* adding plugin telemetry

* adding kimi and grok detection logic

* upticking version

* fixing headers

* adding harness calls

* fixing installing-id

* fixing detect agent logic to include more

* fixing await to not block other calls
2026-08-12 14:43:51 -07:00
Mitul Shah 9d3018171b [workflow] Adopt Workflow SDK branding (#133)
* [workflow] Adopt Workflow SDK branding

Retire user-facing DevKit and WDK terminology while retaining legacy matcher aliases and syncing the current upstream workflow skill.

Co-authored-by: Cursor <cursoragent@cursor.com>

* [workflow] Add Analytics API import

Expose getWorld in the quick reference so users can access workflow analytics through the runtime World.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix: narrow build-agents prompt suppression

Co-authored-by: mitul-s <19615826+mitul-s@users.noreply.github.com>

* Revert "fix: narrow build-agents prompt suppression"

Restore the dedicated Vercel Agent routing exclusion because the matcher change was unrelated to PR #133.

This reverts commit 248f11c044.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: mitul-s <19615826+mitul-s@users.noreply.github.com>
2026-08-12 13:10:12 -07:00
Shar 49da55357d Remove build-agents description exclusion (#142) 2026-08-12 09:00:43 -07:00
Shar 844ff08edc Add eve-first build-agents skill (#138)
* Add eve-first build-agents skill

* Fix build-agents validation coverage

* Refine build-agents guidance
2026-08-11 20:30:15 -07:00
Ricardo Gonzalez 12d077072a [services] Add Vercel Services skill (#134)
* Add Vercel Services skill

* Prepare Services skill release; bump to 0.47.0

* Reframe Services skill around coupled-components use case

Lead with when Services is the right call (tightly coupled frontend +
backend in one project) and its concrete benefits: skew protection,
synced previews, atomic deploys and rollbacks, private bindings. The
separate-projects escape hatch is now about independent deploy cadence.

Drop framework pinning from examples, add /api namespace-split guidance
(SPA vs frameworks with their own API routes), prefix stripping via
service-scoped rewrite, SPA catch-all to /index.html, and a subdomain
section with the preview-environment caveat.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Make :path prefix capture optional so bare /api matches

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Warn against destination.path instead of teaching it

The proxy only reads destination.service when dispatching into a
service; the path field is compiled and validated but never consumed
at request time.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Spell out the private-by-default rule for services

No top-level rewrite means a service is unreachable from the public
internet and only accessible through bindings; adding a rewrite makes
it public regardless of bindings.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Drop frontend from the backend+vercel prompt signal group

Review feedback: the frontend term made the group miss backend-led
phrasings. The wider [backend, vercel] group can reach the threshold
with anyOf hits, which we accept for now.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Rework retrieval intents and examples

Intents: one line per job the skill teaches, anchored by domain
vocabulary (services, binding, rewrites, vercel.json) rather than
product-name prefixes, and covering the private-by-default, subdomain,
and prefix-stripping content added in this PR.

Examples: verbatim-style prompts carrying stack names (FastAPI, Vite,
Express, Go) and symptom phrasings, which is what the lowest-weight
retrieval field is for.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Remove 'frontend' option from skill manifest

Removed 'frontend' from the 'anyOf' array in skill manifest.

* Drop frontend from anyOf in skill source, not just the manifest

The manifest is generated from SKILL.md, so removing the term only
from generated/skill-manifest.json left the two out of sync and
failed the manifest check.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 11:19:15 -07:00
Shina Patel 3878c45e78 [cdn-caching] Describe PPR state by category, not raw proxy values (#132)
Remove the internal ppr_state proxy values (page/shell/blocking) from the
PPR state table and present the three states by their user-facing category:
Static, Partial, and Dynamic.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-04 17:02:21 -07:00
MelkeyDev 1e821f3087 [Plugin] Adds a new skill for deployment protection (#130)
* Adding new deployment protection skill

* bumping plugin versoin

* fixing token access preview

* fixing skill to have header and request header
2026-07-31 15:18:55 -07:00
Shina Patel b61a2c5f4b [cdn-caching] Add PPR state (ppr_state) to the skill (#128)
Mirrors the cacheReason treatment: ppr_state in the description, prompt
signals (ppr state / ppr_state / x-vercel-ppr-state), retrieval alias +
entity, and a PPR state concept table (page/shell/blocking -> Static/
Partial/Dynamic) next to the cache-reason section. Regenerated manifests.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-27 08:44:21 -07:00
MelkeyDev 19606ac163 [chore] Adding license to Vercel Plugin (#124)
* updating the readme

* adding license for vercel plugin
2026-07-20 08:36:29 -07:00
Dima Voytenko 4f867228f6 Connect: remove invalid scope example (#120)
* Connect: remove invalid scope example

* update version

* update version
2026-07-15 15:39:52 -07:00
Mark Knichel de37d3199c [skills] cdn-caching: add write utilization metric (#116) 2026-07-10 12:07:18 -07:00
Shina Patel d71c61cedb [skills] Extend cdn-caching with per-request cache reason guidance (#110)
* [skills] Add cache-reason skill for per-request cache reason debugging

Adds a `cache-reason` skill that explains the per-request `cacheReason`
field (cold, collapsed, error, draft_mode, prerender_bypass, crawler,
stale_time, stale_tag, stale_error) — why a single request was a MISS,
STALE, or BYPASS. Complements `cdn-caching`, which covers aggregate hit
rate and ISR cost via `vercel metrics`.

Written for the public audience: all observation paths route through the
dashboard Logs "Reason" row and `vercel logs --json`. The internal-only
`x-vercel-cache-reason` response header (gated behind is_timing_header_visible)
is explicitly flagged as not user-visible, and the skill avoids the
not-yet-published /docs/caching/cache-status anchors.

- New: skills/cache-reason/SKILL.md (with promptSignals + retrieval block)
- vercel.md: graph reference in the caching section
- README.md: skills table row + count
- cdn-caching: mutual cross-link
- Regenerated skill-manifest.json, skill-catalog.md, build-from-skills.manifest.json

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* [skills] Merge cache-reason guidance into cdn-caching instead of a new skill

Fold the per-request cacheReason content into the existing cdn-caching
skill (from #108) rather than shipping a separate cache-reason skill:

- cdn-caching: add the 9-value cacheReason table (cold, collapsed, error,
  draft_mode, prerender_bypass, crawler, stale_time, stale_tag, stale_error)
  refining the x-vercel-cache status, the MISS→BYPASS displayed-status rule,
  and how to read cacheReason via `vercel logs --json` / the Logs "Reason"
  row (with the internal-only x-vercel-cache-reason header caveat).
- Absorb cache-reason prompt signals + add a retrieval block so questions
  like "why is my page stale" / "what does stale_tag mean" route here.
- Remove skills/cache-reason/ and revert its README/vercel.md wiring
  (back to 30 skills).
- Regenerate manifest, catalog, build-from-skills manifest.

Verified: 899 tests pass; the real UserPromptSubmit hook injects cdn-caching
for the three cache-reason prompts and correctly ignores unrelated prompts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* [skills] Tighten cdn-caching cacheReason merge (287→133 lines)

Condense the skill while keeping all 6 cache statuses and all 9 cache
reasons (3 MISS: cold/collapsed/error, 3 BYPASS: draft_mode/
prerender_bypass/crawler, 3 STALE: stale_time/stale_tag/stale_error).
Cut verbose prose, repeated metrics examples, and the FAQ; keep the two
reference tables, the core metrics/logs investigation commands, and the
cacheReason observation guidance. Add [cache, miss] prompt signal so
MISS questions trigger.

Verified: 899 tests pass; the real UserPromptSubmit hook injects
cdn-caching for MISS/STALE/BYPASS/hit-rate prompts and ignores unrelated
and generic-error prompts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* [skills] Complete cacheReason retrieval entities (add error, collapsed, stale_time)

The retrieval.entities list included some cache reasons but omitted
`error` (and `collapsed`, `stale_time`), making it inconsistent with the
canonical 9-reason table. List all nine reason slugs, ordered to mirror
the table.

Low-risk: the "error" token was already in the lexical index via
stale_error, and injection is gated on exact score — verified generic
error prompts ("fix this null pointer error", etc.) still inject nothing,
while MISS/STALE/BYPASS/hit-rate prompts still route to cdn-caching.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* [skills] Restore docs/caching/cdn-cache link dropped during trim

The cdn-cache docs URL was inadvertently removed while tightening the
docs list; it's the canonical CDN-cache reference for this skill. Restore
it alongside the caching overview, ISR, metrics, and logs links.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* [skills] Redo cacheReason as a small additive change to cdn-caching

Prior commits had rewritten (gutted) the existing cdn-caching skill.
Restore the original #108 skill verbatim and add only what's needed:

- A 9-row cacheReason table under Key concepts (3 MISS: cold/collapsed/
  error, 3 BYPASS: draft_mode/prerender_bypass/crawler, 3 STALE:
  stale_time/stale_tag/stale_error), the MISS→BYPASS displayed-status
  rule, and how to read cacheReason (vercel logs / Logs panel; the
  x-vercel-cache-reason header is internal-only).
- Additive promptSignals + a retrieval block so cache-reason questions
  route here.

Net diff vs the original: +47 / -2 lines. All existing metrics/ISR/BYPASS
runbook content preserved. 899 tests pass; routing verified via the real
UserPromptSubmit hook.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* [skills] Make cacheReason prompt signals consistent across reasons

Previously only stale_tag was a phrase. Add the other distinctive reason
slugs so pasting any of them from a log triggers the skill:
stale_time, stale_error, draft_mode, prerender_bypass (+ existing
stale_tag). Add 'cold cache' and 'request collapsed' to anyOf for MISS
coverage.

Bare cold/collapsed/error are intentionally NOT phrases — as ordinary
English words they would false-match unrelated prose. Verified:
"cacheReason: stale_error" and "prerender_bypass" fire cdn-caching, while
"fix this null pointer error" / "handle the error case" inject nothing.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* [skills] Route the cacheReason field name to cdn-caching

* [skills] Drop generic single-word cache-reason entities (cold, error, crawler) per review

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 10:41:26 -07:00
MelkeyDev 18dd7fdeed Updating Readme for all the agents we support (#115)
* updating the readme

* updating the link
2026-07-07 10:33:27 -07:00
MelkeyDev e16bbc5a52 quick uptick (#114) 2026-07-07 10:17:17 -07:00
qer bdfdb87717 feat: add Kimi Code plugin manifest (#109)
* feat: add Kimi Code plugin manifest

* chore: bump version to 0.45.1
2026-07-07 10:03:20 -07:00
Allen Zhou e70fcd7407 Update eve skill with Agent Runs guidance (#112) 2026-07-06 11:30:52 -07:00
Jathin Pranav Singaraju c9b1d8ff93 [marketplace] fix skill shadowed by command + discover-first routing (#107)
* feat(marketplace): discover-first commerce routing + provisioning guidance

Make the model reliably reach for the Marketplace when an app needs an
external service, instead of hardcoding a provider from memory.

- knowledge-update (always-injected at session start): add a discover-first
  directive — load the `marketplace` skill, then discover + provision a real
  integration BEFORE planning/writing code/asking.
- marketplace SKILL.md: broaden the description (commerce/payments/etc. as the
  catch-all for capabilities without a dedicated skill); restructure into
  discover -> install -> build with an anti-mock/anti-punt rule; add a
  Recommendations section keyed on the product-catalog test (commerce vs
  payments), with no hardcoded providers (discover names them).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(marketplace): remove command that shadowed the skill; tighten routing

The `marketplace` skill and `/marketplace` command shared a name, so the
command shadowed the skill — Skill(vercel:marketplace) loaded the command's
runbook instead, and the skill's routing guidance never reached the model.

Remove the command (marketplace is skill-only, like the other capabilities)
so the skill loads, and tighten routing: discover-first flow, a preferred-
provider table (commerce -> Shopify, payments -> Stripe), and a slimmer
knowledge-update that points at the skill.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* chore(release): patch-bump plugin manifests to 0.45.1

Backwards-compatible fix (marketplace skill routing); bump the version in
all three shipped manifests (.claude-plugin, .cursor-plugin, .plugin).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 12:18:42 -07:00
Mark Knichel 5325c6567f [skills] Add skill to analyze and debug Vercel CDN + ISR caching (#108) 2026-07-01 11:09:37 -07:00
MelkeyDev a0eb37746f Updating Knowledge graph for new ship features (#106)
* knowledge-update: add 5GB package size + 100MB request body Functions limits

Add two new platform corrections to the knowledge-update skill:
- Functions now support up to 5 GB package size on Fluid Compute (was 250 MB)
- Functions now accept request bodies up to 100 MB (was 4.5 MB)

Also fix the now-stale bundle-size troubleshooting line in vercel-functions
and bump the knowledge-update header date.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* adding knowledge update for functions

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 05:26:57 -07:00
MelkeyDev 375ea4c515 Adding Eve Skill (#104)
* adding eve skill

* fixing generated skills
2026-06-29 09:53:03 -07:00
Joe Haddad e566f76c2b feat(vercel-functions): WebSocket guidance + SSE/streaming docs (#102)
Vercel Functions now serve WebSocket connections natively. Document this
across the skill set, steer users away from the polling workarounds people
reach for, and correct the common belief that streaming/SSE requires the
Edge runtime.

- vercel-functions: new "## WebSockets" section (request lifecycle, Fluid
  Compute requirement, Active CPU pricing) with ws, Socket.IO (server +
  client transport gotcha), Next.js experimental_upgradeWebSocket, and
  reconnect/persistent-state examples. Wire discovery via importPatterns
  (ws, socket.io, socket.io-client), retrieval, docs, and promptSignals.
- promptSignals trigger on the long-polling workaround technique, but
  deliberately NOT on named third-party services (Pusher, PubNub, Ably) —
  those are intentional choices, not a signal someone is working around a
  missing feature, so we don't nag.
- vercel-functions Streaming: call out that SSE/streaming works on the
  default Node.js runtime — no runtime='edge' needed.
- knowledge-update: correct the stale "Functions can't hold WebSocket
  connections" belief, add that streaming/SSE is not Edge-exclusive, and
  reinforce that Edge is inferior in nearly every case.
- lexical-index: add polling/long-polling to the realtime synonym group so
  the lexical fallback maps the workaround technique to websocket/realtime.
- vercel.md: add WebSockets to the compute list and Functions matrix.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 22:20:16 -04:00
Joe Haddad 3b6cbeb8a9 ci: add manifest-drift gate + correct stale generated artifacts (#103)
* ci: add manifest-drift gate and correct stale generated artifacts

The committed skill-manifest.json had drifted from its source: the
`workflow` skill carried 11 path patterns (**/chain-engine*, **/orchestrat*,
**/escalation*, etc.) that were deliberately removed from skills/workflow/
SKILL.md in 498c263 ("fixing strict workflow skill detection"). They were
silently reintroduced into the manifest in 5641bff (#94), which regenerated
the manifest on a branch predating that removal. The skill-catalog.md had
the same workflow drift plus a stale vercel-connect entry.

Root cause: CI runs `bun run build` (which regenerates the manifest into the
working tree) and then tests against that fresh copy — it never verifies the
*committed* manifest matches source, so a stale committed manifest passes.

Fix:
- Add `--check` to scripts/build-manifest.ts: rebuilds in-memory and compares
  to the committed file (normalizing the volatile generatedAt timestamp),
  exiting non-zero on drift. Exposed as `bun run build:manifest:check`.
- Wire build:manifest:check (and the existing build:from-skills:check) into
  CI *before* the build step, so they validate the committed artifacts on the
  pristine tree rather than after build clobbers them.
- Regenerate skill-manifest.json and skill-catalog.md to heal the drift.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix: sort skill directory scan for deterministic manifest across platforms

scanSkillsDir() iterated readdirSync() output directly, whose order is
filesystem-dependent — roughly alphabetical on macOS/APFS but arbitrary on
Linux/ext4. The committed manifest was therefore generated in macOS order,
and build:manifest:check failed on the Linux CI runner because a fresh build
produced the same skills in a different key order (CI run on #103).

Sort the entries so manifest/catalog generation is byte-identical on every
platform. Regenerates skill-manifest.json and skill-catalog.md into sorted
order (one-time reordering churn; no semantic change).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 12:32:02 -07:00
Matt Van Horn 5f3f0ad793 vercel-functions: skip default-export rule for App Router pages (#73)
The rule

    pattern: export\s+default\s+function
    message: 'Use named exports (GET, POST, ...) instead of default
             export for route handlers'

fires on every page.tsx, layout.tsx, loading.tsx, error.tsx, not-found.tsx,
sitemap.ts, and template.tsx in a Next.js App Router project, where a default
export is *required*. Reported in anthropics/claude-code#54989 with concrete
reproduction (a 44-page App Router project firing the error on every page
write/edit).

Add a skipIfFileContains regex that matches the strongest signals of an
App Router file (and not a route handler):

- 'use client' directive
- App Router config exports (metadata / dynamic / revalidate / fetchCache /
  runtime)
- export default function whose name ends in Page / Layout / Loading /
  Error / NotFound / Sitemap / Template / Default (also lowercase
  sitemap / robots / opengraph / manifest for the convention files)
- JSX with a capitalised component tag
- a destructured `{ children }` parameter (layouts / templates)
- a `MetadataRoute` reference (sitemap, robots, manifest helpers)
- imports from next/font, next/image, next/link, next/navigation,
  next/headers, next/cookies

Each of these is overwhelmingly common in App Router pages and overwhelmingly
absent from route.ts handlers. A bug `export default function handler` in
a route.ts still fires the rule because none of the patterns match.

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
2026-06-21 22:02:59 -07:00
Jathin Pranav Singaraju b2f2bc09dd feat(vercel-connect): add Eve adapter guidance + correct BetterAuth/Auth.js examples (#100)
* feat(vercel-connect): add Eve adapter guidance

Adds Eve (@vercel/connect/eve) guidance to the vercel-connect skill,
renamed from the earlier Ash adapter per vercel/vercel#16541, covering
Slack/GitHub/Linear channels and BetterAuth/AuthJS providers.

Frontmatter: description mentions Eve agent connections + webhook
forwarding; adds the @vercel/connect/eve import pattern, agent/connections/**
and agent/channels/** path patterns, Eve retrieval metadata, and chainTo
rules for the eve import and hand-managed Slack/GitHub/Linear secrets.

Body: new "Eve agents" section (connect() helper), connectSlackCredentials
/ connectGitHubCredentials / connectLinearCredentials subsections, and a
BetterAuth/AuthJS support section.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(vercel-connect): correct BetterAuth/Auth.js connect() examples

BetterAuth's genericOAuth requires providerId and Auth.js requires id
alongside the connector UID. Connector UIDs can contain a / (e.g.
linear/myagent); reflect that in both examples.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-15 12:20:43 -07:00
Jathin Pranav Singaraju 4a6d0bef8b docs(marketplace): simplify skill, emphasize discovery-first workflow (#99)
* docs(marketplace): simplify skill, emphasize discovery-first workflow

Trim marketplace SKILL.md from 491 lines to 212. Remove partner-facing
content (building integrations, Observability deep-dive, per-integration
code samples) and the hardcoded category list — those duplicate the live
\`vercel integration categories\` output and go stale.

Lead with a prominent "Discover BEFORE you scaffold" section so agents
treat \`vercel integration discover\` as the first action on casual
"build me X" prompts rather than scaffolding from memory.

Document the multi-\`--category\` flag pattern alongside the new
\`vercel integration categories\` subcommand.

Regenerate skill-manifest.json (intents updated: drop "build integration",
add "discover integrations").

* fix(commands): inline drain verification in marketplace template

The marketplace command template pulled the entire "Observability Integration Path" section from the marketplace skill, which was 50+ lines of vendor data-type tables and a 4-step setup flow — most of which the template's Step 7 didn't need.

The simplified marketplace skill (this PR) removed that section, breaking the include resolver. Inline only what Step 7 actually uses: the drain verification curl command and the logs/traces vs Speed-Insights/Web-Analytics distinction.

Regenerate commands/marketplace.md and build-from-skills manifest.

* test(build-from-skills): regenerate snapshots after marketplace skill changes

* docs(marketplace): apply PR #99 review feedback

Address inline review comments from @bhrigu123 on the marketplace simplification PR:
- Clarify "repo" → "local directory linked to a Vercel project" (preflight)
- Drop "(rare — usually narrow with --category)" qualifier
- Use "query" instead of "name" for discover substring search
- Restore concrete `vercel integration guide` examples and clarify `<name>`
- Drop ".env.local" filename from `vercel env pull` (CLI default)
- Remove inaccurate 1–3 minute provisioning-delay note
- Clarify Connectable accounts require browser/Dashboard setup, not CLI
- Restore data-type split table + Speed Insights drain example in /marketplace

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(marketplace): correct category slugs + categories --json → --format=json

Three correctness bugs caught in review:

- `--category auth` → `--category authentication` (live /v2/integrations/categories returns "authentication"; "auth" returns 0 results). Two occurrences: skills/marketplace/SKILL.md and commands/marketplace.md.tmpl.
- `--category databases` → `--category storage` (same root cause; "databases" is not a valid slug).
- `vercel integration categories --json` → `--format=json` (the categories subcommand uses validateJsonOutput per vercel/vercel#16576; --json was explicitly deprecated in that PR).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-12 14:50:59 -07:00
Jathin Pranav Singaraju 5641bff307 feat(skills): add vercel-connect skill (#94)
* feat(skills): add vercel-connect skill

Adds a Claude skill for Vercel Connect — guides agents through the
CLI workflow (`vercel connect create/list/token`), the @vercel/connect
SDK (getToken, /ash subpath, connectSlackCredentials), and the HTTP
API for non-JS callers.

Source: ported from vercel/connect's skills/vercel-connect/SKILL.md,
with frontmatter enriched to match vercel-plugin's pattern
(metadata.priority, docs, importPatterns, bashPatterns, promptSignals,
retrieval, chainTo).

The @vercel/connect package itself is being moved to vercel/vercel
in a companion PR: https://github.com/vercel/vercel/pull/16462

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(ecosystem): add vercel-connect to ecosystem graph

The validate script requires every skills/ directory to have a
matching ⤳ skill: reference in vercel.md's ecosystem graph.
Adds a VERCEL CONNECT block under Security alongside
AUTHENTICATION INTEGRATIONS, listing the CLI / SDK / HTTP API
integration paths and OIDC + Ash dependencies.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore: regenerate skill-catalog with vercel-connect

Run scripts/generate-catalog.ts to include the new vercel-connect
skill in generated/skill-catalog.md. The validate script requires
the catalog to list every skill in skills/.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore: regenerate skill-manifest with vercel-connect

Companion to the catalog regen — generate-catalog also refreshed
the manifest with 142 lines of vercel-connect entries (trigger
patterns, retrieval metadata, chainTo).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(skills): address vercel-connect review feedback from dvoytenko

- Rename `<provider>` placeholder to `<service>` in CLI examples
- Expand Available Services table: add MCP servers, Snowflake,
  Salesforce, and generic OAuth alongside Slack and GitHub
- Update Ash example: use `/mcp` endpoint (not `/sse`) and the
  correct URL-style connector ID (`mcp.linear.app/myagent` rather
  than `linear`)
- Update Workflow URL example to `/mcp`
- Expand frontmatter retrieval + promptSignals with MCP, Snowflake,
  and Salesforce terms so prompts like "connect to mcp server"
  trigger the skill
- Regenerate skill-manifest.json + skill-catalog.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(skills): strip Ash, fix HTTP auth + Python field + subject types

Strip Ash from the vercel-connect skill (the @vercel/connect package
renamed Ash -> Eve in vercel/vercel#16541 and is moving away from
adapter-specific guidance in this skill).

Frontmatter:
- Remove importPatterns `@vercel/connect/ash`
- Remove pathPatterns `agent/connections/**` and `agent/channels/**`
- Remove retrieval.entities `Ash`, retrieval.examples / intents
  referencing Ash agents
- Remove the two chainTo rules tied to Ash imports and
  SLACK_BOT_TOKEN / SLACK_SIGNING_SECRET (the latter pointed at the
  Ash-only `connectSlackCredentials` helper)
- Drop "building Ash agent connections" from description

Body:
- Delete `#### Ash agents — @vercel/connect/ash` section
- Delete `##### Slack channel — connectSlackCredentials` subsection

Factual fixes against vercel/vercel:packages/connect/ (current `main`):

1. HTTP API Python example: response field is `token`, not
   `accessToken` (src/token.ts:51-69).
2. HTTP API examples now include the required
   `Authorization: Bearer <VERCEL_OIDC_TOKEN>` header — without it the
   request 401s (src/token.ts:148-158).
3. "Modes of tokens" now lists all three subject types: `user`, `app`,
   and `jwt-bearer`. The third was added in vercel/vercel#16520
   (src/token.ts:4-29) and was missing from the skill.
4. Workflow step 2: "register-token" terminology replaced with the
   actual CLI command name `vercel connect create`.

No restructure, no new API surface added (revokeToken, /ai-sdk, /mcp,
/betterauth, /authjs, startAuthorization, typed errors are
intentionally out of scope for this update). Net: -69 / +19 lines.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(skills): remove Salesforce from vercel-connect skill

Per @dvoytenko review on #94 — Salesforce isn't a supported Connect
service yet, drop it for now.

Removed:
- Services table row
- description copy
- retrieval.entities, retrieval.intents, promptSignals.phrases

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-09 12:41:08 -07:00
Tim White b73bc95636 feat: add microfrontends skill (#97)
* feat: add microfrontends skill

Adds the `microfrontends` skill (SKILL.md + 6 reference docs covering
configuration, path-routing, local development, management, security,
and troubleshooting) for building, configuring, and deploying
microfrontends on Vercel.

Triggering covers the common entry points:
- pathPatterns: microfrontends.json / apps/*/microfrontends.json
- bashPatterns: `vercel microfrontends` / `vercel mf`, and
  npm/pnpm/bun/yarn install of @vercel/microfrontends
- importPatterns: @vercel/microfrontends

Regenerates generated/skill-manifest.json and generated/skill-catalog.md
(now 27 skills) and updates the vercel.md ecosystem graph.

Rebased onto current main as a single signed commit (supersedes #35).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(microfrontends): trim reference boilerplate

Lowest-risk size reduction with no loss of factual content:
- Remove Table-of-Contents blocks from local-development, managing-
  microfrontends, and troubleshooting references. No other skill's
  reference files use a ToC (0 of 51 repo-wide) — these were the only
  outliers; removal aligns with house convention. Section anchors are
  unaffected, so in-doc links still resolve.
- Tighten security.md: dedupe repeated "verified only by…" prose and
  collapse repeated full URLs. All 13 original links preserved.

Net: -64 lines across 4 reference files. References are loaded on demand
(grep), not part of the injected SKILL.md budget, so this is a read-cost
and maintainability win, not an injection-size change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* chore: bump version for all providers; bump to 0.44.0

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* test: update telemetry version assertions to 0.44.0

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 08:21:42 +01:00
MelkeyDev 6e51924cb2 [FIX] Removing old tests (#90)
* removing skills from removed skills

* removing old tests

* fixing plugin version mishandling

* tests working

* fixing broken test CI fixture
2026-05-19 09:50:25 -07:00
Mark Knichel ff9c091c05 [skills][vercel-firewall] Update knowledge about charges for WAF custom rules (#88) 2026-05-18 14:40:17 -07:00
MelkeyDev 1edb125d13 Adding new active session telemetry (#83) 2026-05-15 20:51:00 -07:00
Mark Knichel 61f1903bed Merge pull request #75 from vercel/mknichel/vercel-firewall-skill
[skills] Add a skill for the Vercel Firewall
2026-05-07 14:00:01 -07:00
Mark Knichel 6d893c00ca Update matching conditions 2026-05-07 13:58:30 -07:00
Mark Knichel d3945b35b3 rename to attack mode 2026-05-07 08:21:32 -07:00
Mark Knichel 38e3690bf1 Update firewall skill 2026-05-06 17:18:46 -07:00
Julia Shi 78de7b549d Merge pull request #76 from vercel/add-vc-metrics-usage
Add Vercel metrics CLI guidance
2026-05-07 00:22:13 +01:00
Julia Shi e6cbaf4d1d Add Vercel metrics CLI guidance 2026-05-07 00:19:10 +01:00
MelkeyDev ec4414d872 Merge pull request #70 from vercel/telemetry/adding-only-dau
Adding back telemetry for vercel plugin
2026-05-06 13:56:12 -07:00
Mark Knichel a232efb23f Revert spurious file changes 2026-05-05 15:54:49 -07:00
Mark Knichel d7edf03391 [skills] Add a skill for the Vercel Firewall 2026-05-05 15:52:33 -07:00
melkeydev 16aaf2d68d upticking version number 2026-04-30 11:14:18 -07:00