Loading...
Loading...
Compare original and translation side by side
wezterm cli spawn/releaseclaude --printBun.spawn(["claude", ...])--printsession_idwezterm cli spawn/releaseclaude --printBun.spawn(["claude", ...])--printsession_idclaude --print-p--dangerously-skip-permissions/tmp/~/dev/vercel-plugin-testing/settings.local.jsonnpx add-pluginCLAUDE_PLUGIN_ROOTbash -cbash -lc/bin/zsh -icxdebug.log~/.claude/debug/git initpackage.jsonnpx add-pluginTcreate-next-appclaude --print-p--dangerously-skip-permissions/tmp/~/dev/vercel-plugin-testing/settings.local.jsonnpx add-pluginCLAUDE_PLUGIN_ROOTbash -cbash -lc/bin/zsh -icxdebug.log~/.claude/debug/git initpackage.jsonnpx add-pluginTcreate-next-app<slug>-<yyyymmdd>-<hhmm>tarot-card-deck-20260309-1227interior-designer-20260309-1227date +%Y%m%d-%H%M<slug>-<yyyymmdd>-<hhmm>tarot-card-deck-20260309-1227interior-designer-20260309-1227date +%Y%m%d-%H%MTS=$(date +%Y%m%d-%H%M)
SLUG="my-app-$TS"
mkdir -p ~/dev/vercel-plugin-testing/$SLUG
cd ~/dev/vercel-plugin-testing/$SLUG
npx add-plugin https://github.com/vercel/vercel-plugin -s project -yTS=$(date +%Y%m%d-%H%M)
SLUG="my-app-$TS"
mkdir -p ~/dev/vercel-plugin-testing/$SLUG
cd ~/dev/vercel-plugin-testing/$SLUG
npx add-plugin https://github.com/vercel/vercel-plugin -s project -ywezterm cli spawn --cwd /Users/johnlindquist/dev/vercel-plugin-testing/$SLUG -- /bin/zsh -ic \
"unset CLAUDECODE; VERCEL_PLUGIN_LOG_LEVEL=debug x '<PROMPT>' --settings .claude/settings.json; exec zsh"unset CLAUDECODEVERCEL_PLUGIN_LOG_LEVEL=debug~/.claude/debug/xclaude--settings .claude/settings.jsonwezterm cli spawn --cwd /Users/johnlindquist/dev/vercel-plugin-testing/$SLUG -- /bin/zsh -ic \
"unset CLAUDECODE; VERCEL_PLUGIN_LOG_LEVEL=debug x '<PROMPT>' --settings .claude/settings.json; exec zsh"unset CLAUDECODEVERCEL_PLUGIN_LOG_LEVEL=debug~/.claude/debug/xclaude--settings .claude/settings.jsonfind ~/.claude/debug -name "*.txt" -mmin -2 -exec grep -l "$SLUG" {} +find ~/.claude/debug -name "*.txt" -mmin -2 -exec grep -l "$SLUG" {} +TS=$(date +%Y%m%d-%H%M)
cd ~/dev/vercel-plugin-testing
for name in tarot-deck interior-designer superhero-origin; do
d="${name}-${TS}"
mkdir -p "$d" && (cd "$d" && npx add-plugin https://github.com/vercel/vercel-plugin -s project -y)
doneTS=$(date +%Y%m%d-%H%M)
cd ~/dev/vercel-plugin-testing
for name in tarot-deck interior-designer superhero-origin; do
d="${name}-${TS}"
mkdir -p "$d" && (cd "$d" && npx add-plugin https://github.com/vercel/vercel-plugin -s project -y)
doneundefinedundefinedTMPDIR=$(node -e "import {tmpdir} from 'os'; console.log(tmpdir())" --input-type=module)
CLAIMDIR="$TMPDIR/vercel-plugin-<session-id>-seen-skills.d"TMPDIR=$(node -e "import {tmpdir} from 'os'; console.log(tmpdir())" --input-type=module)
CLAIMDIR="$TMPDIR/vercel-plugin-<session-id>-seen-skills.d"undefinedundefinedLOG=~/.claude/debug/<session-id>.txtLOG=~/.claude/debug/<session-id>.txtundefinedundefinedTMPDIR=$(node -e "import {tmpdir} from 'os'; console.log(tmpdir())" --input-type=module 2>/dev/null)
for label_id in "slug1:SESSION_ID_1" "slug2:SESSION_ID_2" "slug3:SESSION_ID_3"; do
label="${label_id%%:*}"
id="${label_id##*:}"
claimdir="$TMPDIR/vercel-plugin-$id-seen-skills.d"
echo "=== $label ==="
count=$(ls "$claimdir" 2>/dev/null | wc -l | tr -d ' ')
claims=$(ls "$claimdir" 2>/dev/null | sort | tr '\n' ', ')
echo "Skills ($count): $claims"
doneTMPDIR=$(node -e "import {tmpdir} from 'os'; console.log(tmpdir())" --input-type=module 2>/dev/null)
for label_id in "slug1:SESSION_ID_1" "slug2:SESSION_ID_2" "slug3:SESSION_ID_3"; do
label="${label_id%%:*}"
id="${label_id##*:}"
claimdir="$TMPDIR/vercel-plugin-$id-seen-skills.d"
echo "=== $label ==="
count=$(ls "$claimdir" 2>/dev/null | wc -l | tr -d ' ')
claims=$(ls "$claimdir" 2>/dev/null | sort | tr '\n' ', ')
echo "Skills ($count): $claims"
doneecho -n "src/: "; test -d "$base/src" && echo YES || echo NO # Should be NO for WDK projects
echo -n "workflows/: "; test -d "$base/workflows" && echo YES || echo NO
echo -n "withWorkflow: "; grep -q "withWorkflow" "$base"/next.config.* && echo YES || echo NO
echo -n "components.json: "; test -f "$base/components.json" && echo YES || echo NOecho -n "src/: "; test -d "$base/src" && echo YES || echo NO # WDK项目应该为NO
echo -n "workflows/: "; test -d "$base/workflows" && echo YES || echo NO
echo -n "withWorkflow: "; grep -q "withWorkflow" "$base"/next.config.* && echo YES || echo NO
echo -n "components.json: "; test -f "$base/components.json" && echo YES || echo NOundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedfind "$base" -path "*/ai-elements/*.tsx" 2>/dev/null | grep -v node_modules | wc -lfind "$base" -path "*/ai-elements/*.tsx" 2>/dev/null | grep -v node_modules | wc -lwf=$(find "$base" -name "*.ts" -path "*/workflow*" 2>/dev/null | grep -v node_modules | head -1)
head -5 "$wf" # Should show: import { getWritable } from "workflow"wf=$(find "$base" -name "*.ts" -path "*/workflow*" 2>/dev/null | grep -v node_modules | head -1)
head -5 "$wf" # 应该显示:import { getWritable } from "workflow"create-next-appcreate-next-app| Issue | Cause | Plugin Fix (version) |
|---|---|---|
| Workflow not triggered from natural language | promptSignals too narrow | Broadened phrases, lowered minScore 6→4 (v0.9.5) |
Agent uses | Agent's training data defaults to openai | PostToolUse validate warns "your knowledge is outdated" (v0.9.9) |
Agent uses | Agent doesn't know about gemini image gen | PostToolUse validate warns, capabilities table in ai-sdk (v0.9.7) |
Agent uses | Old API | PostToolUse validate warns, recommend |
Raw markdown rendering ( | Agent skips AI Elements | |
| Workflows outside | Canonical structure docs: no |
| Agent skipped setup step | Marked as "Required" in workflow skill (v0.8.1) |
| Agent didn't wire the 3-piece pattern | Documented as 3 required pieces (v0.9.3) |
| Agent's training data | PostToolUse validate catches as error (v0.9.3) |
| Sandbox violation | Strengthened warning in skill (v0.8.1) |
Missing | No OIDC credentials | Added as "Required" setup step (v0.9.1) |
| WDK quirk | Documented: guard with |
| shadcn not installed | No trigger for scaffolding | Added |
| Skill cap too low (3) | Only 3 skills injected per tool call | Raised to 5 with 18KB budget (v0.8.0) |
| 问题 | 原因 | 插件修复(版本) |
|---|---|---|
| 自然语言无法触发Workflow | promptSignals范围过窄 | 扩大匹配短语范围,最低匹配分从6下调到4(v0.9.5) |
Agent使用 | Agent训练数据默认使用openai | PostToolUse校验提示“你的知识已过时”(v0.9.9) |
Agent使用 | Agent不了解gemini图像生成能力 | PostToolUse校验提示,在ai-sdk中添加能力对照表(v0.9.7) |
Agent使用 | 旧API | PostToolUse校验提示,推荐使用 |
原始Markdown渲染( | Agent跳过AI Elements | 将 |
| Workflows不在 | 规范结构文档:WDK项目不使用 |
next.config中缺失 | Agent跳过了设置步骤 | 在workflow技能中标注为“必填”(v0.8.1) |
定义了 | Agent没有配置三段式模式 | 文档说明为3个必填组件(v0.9.3) |
使用了已在v6中移除的 | Agent训练数据过时 | PostToolUse校验捕获为错误(v0.9.3) |
在workflow作用域中使用 | Sandbox违规 | 增强技能中的警告提示(v0.8.1) |
缺失 | 没有OIDC凭证 | 添加为“必填”设置步骤(v0.9.1) |
首次运行时 | WDK特性 | 文档说明:使用 |
| shadcn未安装 | 没有脚手架触发条件 | 为shadcn添加 |
| 技能上限过低(3个) | 每次工具调用仅注入3个技能 | 上限提升到5个,预算为18KB(v0.8.0) |
agent-browser open http://localhost:<port>
agent-browser wait --load networkidle
agent-browser screenshot
agent-browser snapshot -iagent-browser open http://localhost:<port>
agent-browser wait --load networkidle
agent-browser screenshot
agent-browser snapshot -i.notes/COVERAGE.md.notes/COVERAGE.mdbun run typecheck && bun test && bun run validatebun run buildbun run typecheck && bun test && bun run validatebun run build| # | Slug | Prompt Summary | Expected Skills |
|---|---|---|---|
| 01 | doc-qa-agent | PDF Q&A with embeddings, citations, multi-step reasoning | ai-sdk, nextjs, vercel-storage, ai-elements |
| 02 | customer-support-agent | Durable support agent, escalation, confidence tracking | ai-sdk, workflow, nextjs, ai-elements |
| 03 | deploy-monitor | Uptime monitoring, AI incident responder, durable investigation | workflow, cron-jobs, observability, ai-sdk |
| 04 | multi-model-router | Side-by-side model comparison, parallel streaming, cost tracking | ai-gateway, ai-sdk, nextjs, ai-elements |
| 05 | slack-pr-reviewer | Multi-platform chat bot, PR review, threaded conversations | chat-sdk, ai-sdk, nextjs |
| 06 | content-pipeline | Durable multi-step content production with image generation | workflow, ai-sdk, satori, nextjs |
| 07 | feature-rollout | Feature flags, A/B testing, AI experiment analysis | vercel-flags, ai-sdk, nextjs |
| 08 | event-driven-crm | Event-driven CRM, churn prediction, re-engagement emails | vercel-queues, workflow, ai-sdk, email |
| 09 | code-sandbox-tutor | AI coding tutor with sandbox execution, auto-fix | vercel-sandbox, ai-sdk, nextjs, ai-elements |
| 10 | multi-agent-research | Parallel sub-agents, durable orchestration, streaming synthesis | workflow, ai-sdk, ai-elements, nextjs |
| 11 | discord-game-master | RPG bot, persistent game state, scene illustration generation | chat-sdk, ai-sdk, vercel-storage, nextjs |
| 12 | compliance-auditor | Scheduled AI audits, durable approval workflow, deploy blocking | workflow, cron-jobs, ai-sdk, vercel-firewall |
| # | Slug | Prompt摘要 | 预期技能 |
|---|---|---|---|
| 01 | doc-qa-agent | 带嵌入、引用、多步骤推理的PDF问答 | ai-sdk, nextjs, vercel-storage, ai-elements |
| 02 | customer-support-agent | 持久化客服Agent、升级流转、置信度跟踪 | ai-sdk, workflow, nextjs, ai-elements |
| 03 | deploy-monitor | 可用性监控、AI事件响应、持久化排查 | workflow, cron-jobs, observability, ai-sdk |
| 04 | multi-model-router | 多模型横向对比、并行流式输出、成本跟踪 | ai-gateway, ai-sdk, nextjs, ai-elements |
| 05 | slack-pr-reviewer | 多平台聊天机器人、PR评审、线程对话 | chat-sdk, ai-sdk, nextjs |
| 06 | content-pipeline | 带图像生成的持久化多步骤内容生产 | workflow, ai-sdk, satori, nextjs |
| 07 | feature-rollout | 功能标志、A/B测试、AI实验分析 | vercel-flags, ai-sdk, nextjs |
| 08 | event-driven-crm | 事件驱动CRM、流失预测、召回邮件 | vercel-queues, workflow, ai-sdk, email |
| 09 | code-sandbox-tutor | 带Sandbox执行、自动修复的AI编程导师 | vercel-sandbox, ai-sdk, nextjs, ai-elements |
| 10 | multi-agent-research | 并行子Agent、持久化编排、流式合成 | workflow, ai-sdk, ai-elements, nextjs |
| 11 | discord-game-master | RPG机器人、持久化游戏状态、场景插图生成 | chat-sdk, ai-sdk, vercel-storage, nextjs |
| 12 | compliance-auditor | 定时AI审计、持久化审批工作流、部署阻断 | workflow, cron-jobs, ai-sdk, vercel-firewall |
--quick--quickrm -rf ~/dev/vercel-plugin-testingrm -rf ~/dev/vercel-plugin-testing