← VercelCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
changed
Update to Vercel
Snapshot Sep 30, 2026 · 23:18 UTC · version 0.21.4
Collection source: not recorded for this historical snapshot. These snapshots do not have a confirmed matching collection source. Differences in file lists alone do not establish changes to the package.
Supporting file metadata differs
Newly listed paths: agents/openai.yaml. This compares saved file lists, not package contents; a different collection source can change the list.
Observed in package metadata. These changes alone do not establish a new customer-facing feature.
Supporting files
Before
[]
After
[{"relative_path":"agents/openai.yaml","size_in_bytes":106}]
Compare saved observations
Download comparison JSONFull technical diff · 1 changed fields
changed /included_files
BEFORE
[]
AFTER
[
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 106
}
]Full snapshot data
{
"description": "Orchestrated debugging coordinator. Triggers on frustration signals (stuck, hung, broken, waiting) and systematically triages: runtime logs → workflow status → browser verify → deploy/env. Reports findings at every step.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 106
}
],
"name": "investigation-mode",
"skill_md_contents": "---\nname: investigation-mode\ndescription: \"Orchestrated debugging coordinator. Triggers on frustration signals (stuck, hung, broken, waiting) and systematically triages: runtime logs → workflow status → browser verify → deploy/env. Reports findings at every step.\"\nmetadata:\n priority: 8\n docs:\n - \"https://openai.com/index/introducing-codex/\"\n pathPatterns:\n - \"**/middleware.{ts,js,mjs}\"\n - \"**/lib/logger.{ts,js}\"\n - \"**/utils/logger.{ts,js}\"\n - \"**/instrumentation.{ts,js}\"\n - \"**/*.log\"\n - \"**/error.{tsx,ts,js,jsx}\"\n - \"**/global-error.{tsx,ts,js,jsx}\"\n - \"**/not-found.{tsx,ts,js,jsx}\"\n bashPatterns:\n - '\\bvercel\\s+logs?\\b'\n - '\\bvercel\\s+inspect\\b'\n - '\\btail\\s+-f\\b.*\\.log'\n - '\\bworkflow\\s+runs?\\b'\n - '\\bvercel\\s+ls\\b'\n - '\\bcurl\\s+-[vI]'\n importPatterns: []\n promptSignals:\n phrases:\n - \"nothing happened\"\n - \"still waiting\"\n - \"it's stuck\"\n - \"it's hung\"\n - \"nothing is happening\"\n - \"not responding\"\n - \"just sitting there\"\n - \"just sits there\"\n - \"seems frozen\"\n - \"is it frozen\"\n - \"frozen\"\n - \"why is it hanging\"\n - \"check the logs\"\n - \"check logs\"\n - \"where are the logs\"\n - \"how do I debug\"\n - \"how to debug\"\n - \"white screen\"\n - \"blank page\"\n - \"spinning forever\"\n - \"timed out\"\n - \"keeps timing out\"\n - \"no response\"\n - \"no output\"\n - \"not loading\"\n - \"debug this\"\n - \"investigate why\"\n - \"what went wrong\"\n - \"why did it fail\"\n - \"why is it failing\"\n - \"something is broken\"\n - \"something broke\"\n - \"seems broken\"\n - \"check what happened\"\n - \"check the status\"\n - \"where is the error\"\n - \"where did it fail\"\n - \"find the error\"\n - \"show me the error\"\n - \"why is it slow\"\n - \"taking forever\"\n - \"still loading\"\n - \"not finishing\"\n - \"seems dead\"\n - \"been waiting\"\n - \"waiting forever\"\n - \"stuck on\"\n - \"hung up\"\n - \"not progressing\"\n - \"stalled out\"\n - \"is it running\"\n - \"did it crash\"\n - \"keeps failing\"\n - \"why no response\"\n - \"where did it go\"\n - \"lost connection\"\n - \"never finishes\"\n - \"pending forever\"\n - \"queue stuck\"\n - \"job stuck\"\n - \"build stuck\"\n - \"request hanging\"\n - \"api not responding\"\n allOf:\n - [stuck, workflow]\n - [stuck, deploy]\n - [stuck, loading]\n - [stuck, build]\n - [stuck, queue]\n - [stuck, job]\n - [hung, request]\n - [hung, api]\n - [frozen, page]\n - [frozen, app]\n - [check, why]\n - [check, broken]\n - [check, error]\n - [check, status]\n - [check, logs]\n - [debug, workflow]\n - [debug, deploy]\n - [debug, api]\n - [debug, issue]\n - [investigate, error]\n - [logs, error]\n - [logs, check]\n - [slow, response]\n - [slow, loading]\n - [timeout, api]\n - [timeout, request]\n - [waiting, response]\n - [waiting, forever]\n - [waiting, deploy]\n - [not working, why]\n - [not, responding]\n - [hanging, for]\n - [been, hanging]\n - [been, stuck]\n - [been, waiting]\n - [why, slow]\n - [why, failing]\n - [why, stuck]\n - [why, hanging]\n - [job, failing]\n - [queue, processing]\n anyOf:\n - \"stuck\"\n - \"hung\"\n - \"frozen\"\n - \"broken\"\n - \"failing\"\n - \"timeout\"\n - \"slow\"\n - \"debug\"\n - \"investigate\"\n - \"check\"\n - \"logs\"\n - \"error\"\n - \"hanging\"\n - \"waiting\"\n - \"stalled\"\n - \"pending\"\n - \"processing\"\n - \"loading\"\n - \"unresponsive\"\n noneOf:\n - \"css stuck\"\n - \"sticky position\"\n - \"position: sticky\"\n - \"z-index\"\n - \"sticky nav\"\n - \"sticky header\"\n - \"sticky footer\"\n - \"overflow: hidden\"\n - \"add a button\"\n - \"create a button\"\n - \"style the button\"\n minScore: 4\n---\n\n# Investigation Mode — Orchestrated Debugging\n\nWhen a user reports something stuck, hung, broken, or not responding, you are the **diagnostic coordinator**. Do not guess. Follow the triage order, report what you find at every step, and stop when you have a high-confidence root cause.\n\n## Reporting Contract\n\nEvery investigation step MUST follow this pattern:\n\n1. **Tell the user what you are checking** — \"I'm checking the runtime logs for errors…\"\n2. **Share the evidence you found** — paste the relevant log line, status, error, or screenshot\n3. **Explain the next step** — \"The logs show a timeout on the DB call. I'll check the connection pool next.\"\n\nNever silently move between steps. The user is already frustrated — silence makes it worse.\n\n## Triage Order\n\nWork through these in order. Stop as soon as you find the root cause.\n\n### 1. Runtime Logs (check first — most issues leave traces here)\n\n- **Dev server**: Check terminal output for errors, warnings, unhandled rejections\n- **Vercel logs**: `vercel logs --follow` (production) or `vercel logs <deployment-url>`\n- **Browser console**: Open DevTools → Console tab for client-side errors\n- **If no logs exist**: This is the problem. Add logging before continuing (see \"Add Logging\" below)\n\nTell the user: \"Checking runtime logs…\" → share what you found → explain next step.\n\n### 2. Workflow / Background Job Status\n\nIf the app uses workflows, queues, or cron jobs:\n\n- Run `vercel workflow runs list` to check recent run statuses\n- Look for runs stuck in `running` state — likely a missing `await` or unresolved promise\n- Check individual run details: `vercel workflow runs get <run-id>`\n- Look for failed steps, retry exhaustion, or timeout errors\n\nTell the user: \"Checking workflow run status…\" → share the run state → explain next step.\n\n### 3. Browser Verification\n\nUse agent-browser to visually verify what the user sees:\n\n- Take a screenshot of the current page state\n- Check the browser console for JavaScript errors\n- Check the Network tab for failed requests (4xx/5xx, CORS errors, hanging requests)\n- Look for hydration mismatches or React error boundaries\n\nTell the user: \"Taking a browser screenshot to see the current state…\" → share the screenshot → explain what you see.\n\n### 4. Deploy / Environment Status\n\n- `vercel inspect <deployment-url>` — check build output, function regions, environment\n- `vercel ls` — verify the latest deployment succeeded\n- Check for environment variable mismatches between local and production\n- Verify the correct branch/commit is deployed\n\nTell the user: \"Checking deployment status…\" → share the deployment state → explain findings.\n\n## Stop Condition\n\n**Stop investigating when:**\n- You find a high-confidence root cause (specific error, missing env var, failed step, etc.)\n- Two consecutive triage steps produce no signal — report what you checked and that you found no evidence, then ask the user for more context\n\n**Do not** keep cycling through steps hoping something appears. If logs are empty and workflows look fine, say so and ask the user what they expected to happen.\n\n## Common Hang Causes\n\nWhen logs point to code issues, check for these frequent culprits:\n\n- **Missing `await`**: Async functions called without await cause silent failures\n- **Infinite loops**: `while(true)` without break conditions, recursive calls without base cases\n- **Unresolved promises**: `new Promise()` that never calls `resolve()` or `reject()`\n- **Missing env vars**: `process.env.X` returning `undefined` causing silent auth/DB failures\n- **Connection pool exhaustion**: Database connections not being released\n- **Middleware chains**: A middleware that never calls `next()` or returns a response\n- **Timeout misconfigs**: Function timeout too short for the operation (check `vercel.json` maxDuration)\n\n## Add Logging (If Missing)\n\nIf the investigation reveals insufficient observability, **add structured logging immediately** — you cannot debug what you cannot see.\n\n```typescript\n// API routes — wrap handlers with try/catch + logging\nexport async function POST(request: Request) {\n console.log('[api/route] incoming request', { method: 'POST', url: request.url });\n try {\n const result = await doWork();\n console.log('[api/route] success', { resultId: result.id });\n return Response.json(result);\n } catch (error) {\n console.error('[api/route] failed', { error: String(error), stack: (error as Error).stack });\n return Response.json({ error: 'Internal error' }, { status: 500 });\n }\n}\n```\n\n```typescript\n// Workflow steps — log entry/exit of every step\nconst result = await step.run('process-data', async () => {\n console.log('[workflow:process-data] step started');\n const data = await fetchData();\n console.log('[workflow:process-data] step completed', { count: data.length });\n return data;\n});\n```\n\n**Key principle**: Every async boundary, every external call, every step entry/exit should have a log line. When something hangs, the last log line tells you exactly where it stopped.\n\n> **Cross-reference**: For comprehensive logging setup (OpenTelemetry, log drains, Sentry, Vercel Analytics), see the **observability** skill. For workflow-specific debugging, see the **workflow** skill.\n"
}SHA-256 of public snapshot: 5673d67964e31476b1fd563820ae9d6f38b01257210bd8ea3c728b83df517bbf