Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -2369,18 +2369,6 @@
},
"category": "Coding"
},
{
"name": "vercel-plugin",
"source": {
"source": "local",
"path": "./plugins/vercel-plugin"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Coding"
},
{
"name": "viator",
"source": {
Expand Down
53 changes: 0 additions & 53 deletions plugins/vercel-plugin/.codex-plugin/plugin.json

This file was deleted.

52 changes: 39 additions & 13 deletions plugins/vercel/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,29 +1,55 @@
{
"name": "vercel",
"version": "1.0.0",
"description": "Search docs and deploy apps",
"version": "1.1.0",
"description": "Comprehensive Vercel plugin with connector app, Codex-compatible skills, hooks, and MCP.",
"author": {
"url": "https://vercel.com/"
"name": "Vercel Labs",
"url": "https://github.com/vercel-labs"
},
"homepage": "https://vercel.com/",
"repository": "https://github.com/openai/plugins",
"license": "MIT",
"keywords": [],
"license": "Apache-2.0",
"keywords": [
"vercel",
"nextjs",
"ai-sdk",
"turborepo",
"turbopack",
"workflow",
"deployment",
"edge-functions",
"serverless",
"ai-gateway",
"chat-sdk",
"chat-bot",
"slack-bot",
"discord-bot"
],
"apps": "./.app.json",
"skills": "./skills/",
"hooks": "./hooks/hooks.json",
"mcpServers": "./.mcp.json",
"interface": {
"displayName": "Vercel",
"shortDescription": "Search docs and deploy apps",
"longDescription": "Search docs and deploy apps",
"category": "Productivity",
"capabilities": [],
"shortDescription": "Vercel ecosystem guidance, MCP, docs, and deploy tools",
"longDescription": "Bring the full Vercel ecosystem into Codex with the Vercel connector app, curated skills, project-profiling hooks, and the official Vercel MCP server. This canonical `vercel` plugin now subsumes the previous `vercel-plugin` bundle.",
"developerName": "Vercel Labs",
"category": "Coding",
"capabilities": [
"Interactive",
"Read",
"Write"
],
"websiteURL": "https://vercel.com/",
"privacyPolicyURL": "https://vercel.com/legal/privacy-policy",
"termsOfServiceURL": "https://vercel.com/legal/terms",
"defaultPrompt": [
"Why is build failing"
"Why is build failing",
"Audit this repo for Vercel deployment risks",
"Which Vercel tools fit this app best"
],
"screenshots": [],
"composerIcon": "./assets/app-icon.png",
"logo": "./assets/app-icon.png"
"composerIcon": "./assets/vercel.svg",
"logo": "./assets/vercel.svg",
"screenshots": []
}
}
File renamed without changes.
24 changes: 12 additions & 12 deletions plugins/vercel-plugin/README.md → plugins/vercel/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# vercel-plugin
# vercel

This directory packages the upstream [vercel/vercel-plugin](https://github.com/vercel/vercel-plugin) runtime content for the `openai/plugins` marketplace, with the Codex-specific manifest and hook changes needed for local loading.

Expand All @@ -21,7 +21,7 @@ This directory packages the upstream [vercel/vercel-plugin](https://github.com/v

- Repo: [vercel/vercel-plugin](https://github.com/vercel/vercel-plugin)
- Imported version: `0.21.0`
- Local plugin id: `vercel-plugin`
- Local plugin id: `vercel`

## Components

Expand Down Expand Up @@ -84,11 +84,11 @@ A text-form relational graph covering:

| Command | Purpose |
|---------|---------|
| `/vercel-plugin:bootstrap` | Bootstrap project — linking, env provisioning, db setup |
| `/vercel-plugin:deploy` | Deploy to Vercel (preview or production) |
| `/vercel-plugin:env` | Manage environment variables |
| `/vercel-plugin:status` | Project status overview |
| `/vercel-plugin:marketplace` | Discover and install marketplace integrations |
| `/vercel:bootstrap` | Bootstrap project — linking, env provisioning, db setup |
| `/vercel:deploy` | Deploy to Vercel (preview or production) |
| `/vercel:env` | Manage environment variables |
| `/vercel:status` | Project status overview |
| `/vercel:marketplace` | Discover and install marketplace integrations |

### Hooks

Expand All @@ -104,16 +104,16 @@ Lifecycle hooks that run automatically during your session:
After installing, skills and context are injected automatically. You can also invoke skills directly via slash commands:

```
/vercel-plugin:nextjs
/vercel-plugin:ai-sdk
/vercel-plugin:deploy prod
/vercel:nextjs
/vercel:ai-sdk
/vercel:deploy prod
```

## Architecture

```
vercel-plugin/
├── .plugin/plugin.json # Plugin manifest
vercel/
├── .codex-plugin/plugin.json # Plugin manifest
├── vercel.md # Ecosystem graph + conventions (injected via SessionStart hook)
├── skills/ # 34 deep-dive skills
│ ├── agent-browser/
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ function resolveLogLevel() {
}
if (explicit) {
console.error(
`[vercel-plugin] Unknown VERCEL_PLUGIN_LOG_LEVEL="${explicit}". Valid levels: ${LEVELS.join(", ")}. Falling back to "off".`
`[vercel] Unknown VERCEL_PLUGIN_LOG_LEVEL="${explicit}". Valid levels: ${LEVELS.join(", ")}. Falling back to "off".`
);
}
if (process.env.VERCEL_PLUGIN_DEBUG === "1" || process.env.VERCEL_PLUGIN_HOOK_DEBUG === "1") {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -698,7 +698,7 @@ function formatPlatformOutput(platform, additionalContext, env) {
return Object.keys(output).length > 0 ? JSON.stringify(output) : "{}";
}
function buildBanner(injectedSkills, toolName, toolTarget, matchReasons) {
const lines = ["[vercel-plugin] Best practices auto-suggested based on detected patterns:"];
const lines = ["[vercel] Best practices auto-suggested based on detected patterns:"];
for (const skill of injectedSkills) {
const reason = matchReasons?.[skill];
if (reason) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ function parseSessionIdFromStdin() {
}
function main() {
try {
const prefPath = join(homedir(), ".claude", "vercel-plugin-telemetry-preference");
const prefPath = join(homedir(), ".claude", "vercel-telemetry-preference");
const pref = readFileSync(prefPath, "utf-8").trim();
if (pref === "asked") {
writeFileSync(prefPath, "disabled");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -472,7 +472,7 @@ async function main() {
envVarCount: Object.keys(envVars).length
});
}
const telemetryPrefPath = join(homedir(), ".claude", "vercel-plugin-telemetry-preference");
const telemetryPrefPath = join(homedir(), ".claude", "vercel-telemetry-preference");
let telemetryPref = null;
try {
telemetryPref = readFileSync(telemetryPrefPath, "utf-8").trim();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import { readFileSync } from "fs";
import { homedir } from "os";
import { join } from "path";
var PREF_PATH = join(homedir(), ".claude", "vercel-plugin-telemetry-preference");
var PREF_PATH = join(homedir(), ".claude", "vercel-telemetry-preference");
function main() {
let existing = null;
try {
Expand All @@ -13,15 +13,15 @@ function main() {
}
if (existing === "enabled" || existing === "disabled" || existing === "asked") {
process.stdout.write(
`Telemetry is currently ${existing}. To change, edit ~/.claude/vercel-plugin-telemetry-preference.
`Telemetry is currently ${existing}. To change, edit ~/.claude/vercel-telemetry-preference.
`
);
process.exit(0);
}
process.stdout.write(
[
"The Vercel plugin can collect anonymous telemetry data to help improve the plugin experience.",
"Ask the user if they would like to enable anonymous telemetry. If they agree, run `echo 'enabled' > ~/.claude/vercel-plugin-telemetry-preference`. If they decline, run `echo 'disabled' > ~/.claude/vercel-plugin-telemetry-preference`.",
"Ask the user if they would like to enable anonymous telemetry. If they agree, run `echo 'enabled' > ~/.claude/vercel-telemetry-preference`. If they decline, run `echo 'disabled' > ~/.claude/vercel-telemetry-preference`.",
""
].join("\n")
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ async function send(sessionId, events) {
function isTelemetryEnabled() {
if (process.env.VERCEL_PLUGIN_TELEMETRY === "on") return true;
try {
const prefPath = join(homedir(), ".claude", "vercel-plugin-telemetry-preference");
const prefPath = join(homedir(), ".claude", "vercel-telemetry-preference");
const pref = readFileSync(prefPath, "utf-8").trim();
return pref === "enabled";
} catch {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -510,7 +510,7 @@ function formatOutput(parts, matchedSkills, injectedSkills, summaryOnly, dropped
droppedByBudget
};
const metaComment = `<!-- skillInjection: ${JSON.stringify(skillInjection)} -->`;
const bannerLines = ["[vercel-plugin] Best practices auto-suggested based on prompt analysis:"];
const bannerLines = ["[vercel] Best practices auto-suggested based on prompt analysis:"];
for (const skill of injectedSkills) {
const reason = promptMatchReasons?.[skill];
if (reason) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
import { homedir, tmpdir } from "os";
import { join, dirname } from "path";
var PREF_PATH = join(homedir(), ".claude", "vercel-plugin-telemetry-preference");
var PREF_PATH = join(homedir(), ".claude", "vercel-telemetry-preference");
function parseStdin() {
try {
const raw = readFileSync(0, "utf-8").trim();
Expand Down Expand Up @@ -60,8 +60,8 @@ async function main() {
"- multiSelect: false",
"",
"After the user responds:",
"- If they chose \"Enable telemetry\", run: `echo 'enabled' > ~/.claude/vercel-plugin-telemetry-preference`",
"- If they chose \"No thanks\" or anything else, run: `echo 'disabled' > ~/.claude/vercel-plugin-telemetry-preference`"
"- If they chose \"Enable telemetry\", run: `echo 'enabled' > ~/.claude/vercel-telemetry-preference`",
"- If they chose \"No thanks\" or anything else, run: `echo 'disabled' > ~/.claude/vercel-telemetry-preference`"
].join("\n");
const output = {
hookSpecificOutput: {
Expand Down
File renamed without changes.