{"id":"8b94b0ff-4c7e-4b00-b7ff-320ab4db46c7","shortId":"n8Ecrn","kind":"skill","title":"plan-devex-review","tagline":"Interactive developer experience plan review. Explores developer personas,\nbenchmarks against competitors, designs magical moments, and traces friction\npoints before scoring. Three modes: DX EXPANSION (competitive advantage),\nDX POLISH (bulletproof every touchpoint), DX TRIAGE (c","description":"## Preamble\n\n```bash\neval \"$(~/.vibestack/bin/vibe-slug 2>/dev/null)\" 2>/dev/null || SLUG=\"unknown\"\n_LEARN_FILE=\"${VIBESTACK_HOME:-$HOME/.vibestack}/projects/${SLUG:-unknown}/learnings.jsonl\"\nif [ -f \"$_LEARN_FILE\" ]; then\n  _LEARN_COUNT=$(wc -l < \"$_LEARN_FILE\" 2>/dev/null | tr -d ' ')\n  echo \"LEARNINGS: $_LEARN_COUNT entries loaded\"\n  if [ \"$_LEARN_COUNT\" -gt 5 ] 2>/dev/null; then\n    ~/.vibestack/bin/vibe-learnings-search --limit 5 2>/dev/null || true\n  fi\nelse\n  echo \"LEARNINGS: none yet\"\nfi\n```\n\n## Step 0: Detect platform and base branch\n\nFirst, detect the git hosting platform from the remote URL:\n\n```bash\ngit remote get-url origin 2>/dev/null\n```\n\n- If the URL contains \"github.com\" → platform is **GitHub**\n- If the URL contains \"gitlab\" → platform is **GitLab**\n- Otherwise, check CLI availability:\n  - `gh auth status 2>/dev/null` succeeds → platform is **GitHub** (covers GitHub Enterprise)\n  - `glab auth status 2>/dev/null` succeeds → platform is **GitLab** (covers self-hosted)\n  - Neither → **unknown** (use git-native commands only)\n\nDetermine which branch this PR/MR targets, or the repo's default branch if no\nPR/MR exists. Use the result as \"the base branch\" in all subsequent steps.\n\n**If GitHub:**\n1. `gh pr view --json baseRefName -q .baseRefName` — if succeeds, use it\n2. `gh repo view --json defaultBranchRef -q .defaultBranchRef.name` — if succeeds, use it\n\n**If GitLab:**\n1. `glab mr view -F json 2>/dev/null` and extract the `target_branch` field — if succeeds, use it\n2. `glab repo view -F json 2>/dev/null` and extract the `default_branch` field — if succeeds, use it\n\n**Git-native fallback (if unknown platform, or CLI commands fail):**\n1. `git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's|refs/remotes/origin/||'`\n2. If that fails: `git rev-parse --verify origin/main 2>/dev/null` → use `main`\n3. If that fails: `git rev-parse --verify origin/master 2>/dev/null` → use `master`\n\nIf all fail, fall back to `main`.\n\nPrint the detected base branch name. In every subsequent `git diff`, `git log`,\n`git fetch`, `git merge`, and PR/MR creation command, substitute the detected\nbranch name wherever the instructions say \"the base branch\" or `<default>`.\n\n---\n\n# /plan-devex-review: Developer Experience Plan Review\n\nYou are a developer advocate who has onboarded onto 100 developer tools. You have\nopinions about what makes developers abandon a tool in minute 2 versus fall in love\nin minute 5. You have shipped SDKs, written getting-started guides, designed CLI\nhelp text, and watched developers struggle through onboarding in usability sessions.\n\nYour job is not to score a plan. Your job is to make the plan produce a developer\nexperience worth talking about. Scores are the output, not the process. The process\nis investigation, empathy, forcing decisions, and evidence gathering.\n\nThe output of this skill is a better plan, not a document about the plan.\n\nDo NOT make any code changes. Do NOT start implementation. Your only job right now\nis to review and improve the plan's DX decisions with maximum rigor.\n\nDX is UX for developers. But developer journeys are longer, involve multiple tools,\nrequire understanding new concepts quickly, and affect more people downstream. The bar\nis higher because you are a chef cooking for chefs.\n\nThis skill IS a developer tool. Apply its own DX principles to itself.\n\n## DX First Principles\n\nThese are the laws. Every recommendation traces back to one of these.\n\n1. **Zero friction at T0.** First five minutes decide everything. One click to start. Hello world without reading docs. No credit card. No demo call.\n2. **Incremental steps.** Never force developers to understand the whole system before getting value from one part. Gentle ramp, not cliff.\n3. **Learn by doing.** Playgrounds, sandboxes, copy-paste code that works in context. Reference docs are necessary but never sufficient.\n4. **Decide for me, let me override.** Opinionated defaults are features. Escape hatches are requirements. Strong opinions, loosely held.\n5. **Fight uncertainty.** Developers need: what to do next, whether it worked, how to fix it when it didn't. Every error = problem + cause + fix.\n6. **Show code in context.** Hello world is a lie. Show real auth, real error handling, real deployment. Solve 100% of the problem.\n7. **Speed is a feature.** Iteration speed is everything. Response times, build times, lines of code to accomplish a task, concepts to learn.\n8. **Create magical moments.** What would feel like magic? Stripe's instant API response. Vercel's push-to-deploy. Find yours and make it the first thing developers experience.\n\n## The Seven DX Characteristics\n\n| # | Characteristic | What It Means | Gold Standard |\n|---|---------------|---------------|---------------|\n| 1 | **Usable** | Simple to install, set up, use. Intuitive APIs. Fast feedback. | Stripe: one key, one curl, money moves |\n| 2 | **Credible** | Reliable, predictable, consistent. Clear deprecation. Secure. | TypeScript: gradual adoption, never breaks JS |\n| 3 | **Findable** | Easy to discover AND find help within. Strong community. Good search. | React: every question answered on SO |\n| 4 | **Useful** | Solves real problems. Features match actual use cases. Scales. | Tailwind: covers 95% of CSS needs |\n| 5 | **Valuable** | Reduces friction measurably. Saves time. Worth the dependency. | Next.js: SSR, routing, bundling, deploy in one |\n| 6 | **Accessible** | Works across roles, environments, preferences. CLI + GUI. | VS Code: works for junior to principal |\n| 7 | **Desirable** | Best-in-class tech. Reasonable pricing. Community momentum. | Vercel: devs WANT to use it, not tolerate it |\n\n## Cognitive Patterns — How Great DX Leaders Think\n\nInternalize these; don't enumerate them.\n\n1. **Chef-for-chefs** — Your users build products for a living. The bar is higher because they notice everything.\n2. **First five minutes obsession** — New dev arrives. Clock starts. Can they hello-world without docs, sales, or credit card?\n3. **Error message empathy** — Every error is pain. Does it identify the problem, explain the cause, show the fix, link to docs?\n4. **Escape hatch awareness** — Every default needs an override. No escape hatch = no trust = no adoption at scale.\n5. **Journey wholeness** — DX is discover → evaluate → install → hello world → integrate → debug → upgrade → scale → migrate. Every gap = a lost dev.\n6. **Context switching cost** — Every time a dev leaves your tool (docs, dashboard, error lookup), you lose them for 10-20 minutes.\n7. **Upgrade fear** — Will this break my production app? Clear changelogs, migration guides, codemods, deprecation warnings. Upgrades should be boring.\n8. **SDK completeness** — If devs write their own HTTP wrapper, you failed. If the SDK works in 4 of 5 languages, the fifth community hates you.\n9. **Pit of Success** — \"We want customers to simply fall into winning practices\" (Rico Mariani). Make the right thing easy, the wrong thing hard.\n10. **Progressive disclosure** — Simple case is production-ready, not a toy. Complex case uses the same API. SwiftUI: \\`Button(\"Save\") { save() }\\` → full customization, same API.\n\n## DX Scoring Rubric (0-10 calibration)\n\n| Score | Meaning |\n|-------|---------|\n| 9-10 | Best-in-class. Stripe/Vercel tier. Developers rave about it. |\n| 7-8 | Good. Developers can use it without frustration. Minor gaps. |\n| 5-6 | Acceptable. Works but with friction. Developers tolerate it. |\n| 3-4 | Poor. Developers complain. Adoption suffers. |\n| 1-2 | Broken. Developers abandon after first attempt. |\n| 0 | Not addressed. No thought given to this dimension. |\n\n**The gap method:** For each score, explain what a 10 looks like for THIS product. Then fix toward 10.\n\n## TTHW Benchmarks (Time to Hello World)\n\n| Tier | Time | Adoption Impact |\n|------|------|-----------------|\n| Champion | < 2 min | 3-4x higher adoption |\n| Competitive | 2-5 min | Baseline |\n| Needs Work | 5-10 min | Significant drop-off |\n| Red Flag | > 10 min | 50-70% abandon |\n\n## Hall of Fame Reference\n\nDuring each review pass, load the relevant section from:\n\\`~/.claude/skills/plan-devex-review/dx-hall-of-fame.md\\`\n\nRead ONLY the section for the current pass (e.g., \"## Pass 1\" for Getting Started).\nDo NOT read the entire file at once. This keeps context focused.\n\n## Priority Hierarchy Under Context Pressure\n\nStep 0 > Developer Persona > Empathy Narrative > Competitive Benchmark >\nMagical Moment Design > TTHW Assessment > Error quality > Getting started >\nAPI/CLI ergonomics > Everything else.\n\nNever skip Step 0, the persona interrogation, or the empathy narrative. These are\nthe highest-leverage outputs.\n\n## PRE-REVIEW SYSTEM AUDIT (before Step 0)\n\nBefore doing anything else, gather context about the developer-facing product.\n\n```bash\ngit log --oneline -15\ngit diff $(git merge-base HEAD main 2>/dev/null || echo HEAD~10) --stat 2>/dev/null\n```\n\nThen read:\n- The plan file (current plan or branch diff)\n- CLAUDE.md for project conventions\n- README.md for current getting started experience\n- Any existing docs/ directory structure\n- package.json or equivalent (what developers will install)\n- CHANGELOG.md if it exists\n\n**DX artifacts scan:** Also search for existing DX-relevant content:\n- Getting started guides (grep README for \"Getting Started\", \"Quick Start\", \"Installation\")\n- CLI help text (grep for `--help`, `usage:`, `commands:`)\n- Error message patterns (grep for `throw new Error`, `console.error`, error classes)\n- Existing examples/ or samples/ directories\n\n**Design doc check:**\n```bash\nsetopt +o nomatch 2>/dev/null || true\nSLUG=$(~/.claude/skills/browse/bin/remote-slug 2>/dev/null || basename \"$(git rev-parse --show-toplevel 2>/dev/null || pwd)\")\nBRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null | tr '/' '-' || echo 'no-branch')\nDESIGN=$(ls -t ~/.vibestack/projects/$SLUG/*-$BRANCH-design-*.md 2>/dev/null | head -1)\n[ -z \"$DESIGN\" ] && DESIGN=$(ls -t ~/.vibestack/projects/$SLUG/*-design-*.md 2>/dev/null | head -1)\n[ -n \"$DESIGN\" ] && echo \"Design doc found: $DESIGN\" || echo \"No design doc found\"\n```\nIf a design doc exists, read it.\n\nMap:\n* What is the developer-facing surface area of this plan?\n* What type of developer product is this? (API, CLI, SDK, library, framework, platform, docs)\n* What are the existing docs, examples, and error messages?\n\n## Prerequisite Skill Offer\n\nWhen the design doc check above prints \"No design doc found,\" offer the prerequisite\nskill before proceeding.\n\nSay to the user via AskUserQuestion:\n\n> \"No design doc found for this branch. `/office-hours` produces a structured problem\n> statement, premise challenge, and explored alternatives — it gives this review much\n> sharper input to work with. Takes about 10 minutes. The design doc is per-feature,\n> not per-product — it captures the thinking behind this specific change.\"\n\nOptions:\n- A) Run /office-hours now (we'll pick up the review right after)\n- B) Skip — proceed with standard review\n\nIf they skip: \"No worries — standard review. If you ever want sharper input, try\n/office-hours first next time.\" Then proceed normally. Do not re-offer later in the session.\n\nIf they choose A:\n\nSay: \"Running /office-hours inline. Once the design doc is ready, I'll pick up\nthe review right where we left off.\"\n\nRead the `/office-hours` skill file at `~/.claude/skills/office-hours/SKILL.md` using the Read tool.\n\n**If unreadable:** Skip with \"Could not load /office-hours — skipping.\" and continue.\n\nFollow its instructions from top to bottom, **skipping these sections** (already handled by the parent skill):\n- Preamble (run first)\n- AskUserQuestion Format\n- Completeness Principle — Boil the Lake\n- Search Before Building\n- Contributor Mode\n- Completion Status Protocol\n- Telemetry (run last)\n- Step 0: Detect platform and base branch\n- Review Readiness Dashboard\n- Plan File Review Report\n- Prerequisite Skill Offer\n- Plan Status Footer\n\nExecute every other section at full depth. When the loaded skill's instructions are complete, continue with the next step below.\n\nAfter /office-hours completes, re-run the design doc check:\n```bash\nsetopt +o nomatch 2>/dev/null || true  # zsh compat\nSLUG=$(~/.claude/skills/browse/bin/remote-slug 2>/dev/null || basename \"$(git rev-parse --show-toplevel 2>/dev/null || pwd)\")\nBRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null | tr '/' '-' || echo 'no-branch')\nDESIGN=$(ls -t ~/.vibestack/projects/$SLUG/*-$BRANCH-design-*.md 2>/dev/null | head -1)\n[ -z \"$DESIGN\" ] && DESIGN=$(ls -t ~/.vibestack/projects/$SLUG/*-design-*.md 2>/dev/null | head -1)\n[ -n \"$DESIGN\" ] && echo \"Design doc found: $DESIGN\" || echo \"No design doc found\"\n```\n\nIf a design doc is now found, read it and continue the review.\nIf none was produced (user may have cancelled), proceed with standard review.\n\n## Auto-Detect Product Type + Applicability Gate\n\nBefore proceeding, read the plan and infer the developer product type from content:\n\n- Mentions API endpoints, REST, GraphQL, gRPC, webhooks → **API/Service**\n- Mentions CLI commands, flags, arguments, terminal → **CLI Tool**\n- Mentions npm install, import, require, library, package → **Library/SDK**\n- Mentions deploy, hosting, infrastructure, provisioning → **Platform**\n- Mentions docs, guides, tutorials, examples → **Documentation**\n- Mentions SKILL.md, skill template, Claude Code, AI agent, MCP → **Claude Code Skill**\n\nIf NONE of the above: the plan has no developer-facing surface. Tell the user:\n\"This plan doesn't appear to have developer-facing surfaces. /plan-devex-review\nreviews plans for APIs, CLIs, SDKs, libraries, platforms, and docs. Consider\n/plan-eng-review or /plan-design-review instead.\" Exit gracefully.\n\nIf detected: State your classification and ask for confirmation. Do not ask from\nscratch. \"I'm reading this as a CLI Tool plan. Correct?\"\n\nA product can be multiple types. Identify the primary type for the initial assessment.\nNote the product type; it influences which persona options are offered in Step 0A.\n\n---\n\n## Step 0: DX Investigation (before scoring)\n\nThe core principle: **gather evidence and force decisions BEFORE scoring, not during\nscoring.** Steps 0A through 0G build the evidence base. Review passes 1-8 use that\nevidence to score with precision instead of vibes.\n\n### 0A. Developer Persona Interrogation\n\nBefore anything else, identify WHO the target developer is. Different developers have\ncompletely different expectations, tolerance levels, and mental models.\n\n**Gather evidence first:** Read README.md for \"who is this for\" language. Check\npackage.json description/keywords. Check design doc for user mentions. Check docs/\nfor audience signals.\n\nThen present concrete persona archetypes based on the detected product type.\n\nAskUserQuestion:\n\n> \"Before I can evaluate your developer experience, I need to know who your developer\n> IS. Different developers have different DX needs:\n>\n> Based on [evidence from README/docs], I think your primary developer is [inferred persona].\n>\n> A) **[Inferred persona]** -- [1-line description of their context, tolerance, and expectations]\n> B) **[Alternative persona]** -- [1-line description]\n> C) **[Alternative persona]** -- [1-line description]\n> D) Let me describe my target developer\"\n\nPersona examples by product type (pick the 3 most relevant):\n- **Solo founder building MVP** -- 30-minute integration tolerance, won't read docs, copies from README\n- **Platform engineer at Series C** -- thorough evaluator, cares about security/SLAs/CI integration\n- **Frontend dev adding a feature** -- TypeScript types, bundle size, React/Vue/Svelte examples\n- **Backend dev integrating an API** -- cURL examples, auth flow clarity, rate limit docs\n- **OSS contributor from GitHub** -- git clone && make test, CONTRIBUTING.md, issue templates\n- **Student learning to code** -- needs hand-holding, clear error messages, lots of examples\n- **DevOps engineer setting up infra** -- Terraform/Docker, non-interactive mode, env vars\n\nAfter the user responds, produce a persona card:\n\n```\nTARGET DEVELOPER PERSONA\n========================\nWho:       [description]\nContext:   [when/why they encounter this tool]\nTolerance: [how many minutes/steps before they abandon]\nExpects:   [what they assume exists before trying]\n```\n\n**STOP.** Do NOT proceed until user responds. This persona shapes the entire review.\n\n### 0B. Empathy Narrative as Conversation Starter\n\nWrite a 150-250 word first-person narrative from the persona's perspective. Walk\nthrough the ACTUAL getting-started path from the README/docs. Be specific about\nwhat they see, what they try, what they feel, and where they get confused.\n\nUse the persona from 0A. Reference real files and content from the pre-review audit.\nNot hypothetical. Trace the actual path: \"I open the README. The first heading is\n[actual heading]. I scroll down and find [actual install command]. I run it and see...\"\n\nThen SHOW it to the user via AskUserQuestion:\n\n> \"Here's what I think your [persona] developer experiences today:\n>\n> [full empathy narrative]\n>\n> Does this match reality? Where am I wrong?\n>\n> A) This is accurate, proceed with this understanding\n> B) Some of this is wrong, let me correct it\n> C) This is way off, the actual experience is...\"\n\n**STOP.** Incorporate corrections into the narrative. This narrative becomes a required\noutput section (\"Developer Perspective\") in the plan file. The implementer should read\nit and feel what the developer feels.\n\n### 0C. Competitive DX Benchmarking\n\nBefore scoring anything, understand how comparable tools handle DX. Use WebSearch to\nfind real TTHW data and onboarding approaches.\n\nRun three searches:\n1. \"[product category] getting started developer experience {current year}\"\n2. \"[closest competitor] developer onboarding time\"\n3. \"[product category] SDK CLI developer experience best practices {current year}\"\n\nIf WebSearch is unavailable: \"Search unavailable. Using reference benchmarks: Stripe\n(30s TTHW), Vercel (2min), Firebase (3min), Docker (5min).\"\n\nProduce a competitive benchmark table:\n\n```\nCOMPETITIVE DX BENCHMARK\n=========================\nTool              | TTHW      | Notable DX Choice          | Source\n[competitor 1]    | [time]    | [what they do well]        | [url/source]\n[competitor 2]    | [time]    | [what they do well]        | [url/source]\n[competitor 3]    | [time]    | [what they do well]        | [url/source]\nYOUR PRODUCT      | [est]     | [from README/plan]         | current plan\n```\n\nAskUserQuestion:\n\n> \"Your closest competitors' TTHW:\n> [benchmark table]\n>\n> Your plan's current TTHW estimate: [X] minutes ([Y] steps).\n>\n> Where do you want to land?\n>\n> A) Champion tier (< 2 min) -- requires [specific changes]. Stripe/Vercel territory.\n> B) Competitive tier (2-5 min) -- achievable with [specific gap to close]\n> C) Current trajectory ([X] min) -- acceptable for now, improve later\n> D) Tell me what's realistic for our constraints\"\n\n**STOP.** The chosen tier becomes the benchmark for Pass 1 (Getting Started).\n\n### 0D. Magical Moment Design\n\nEvery great developer tool has a magical moment: the instant a developer goes from\n\"is this worth my time?\" to \"oh wow, this is real.\"\n\nLoad the \"## Pass 1\" section from `~/.claude/skills/plan-devex-review/dx-hall-of-fame.md`\nfor gold standard examples.\n\nIdentify the most likely magical moment for this product type, then present delivery\nvehicle options with tradeoffs.\n\nAskUserQuestion:\n\n> \"For your [product type], the magical moment is: [specific moment, e.g., 'seeing\n> their first API response with real data' or 'watching a deployment go live'].\n>\n> How should your [persona from 0A] experience this moment?\n>\n> A) **Interactive playground/sandbox** -- zero install, try in browser. Highest\n>    conversion but requires building a hosted environment.\n>    (human: ~1 week / CC: ~2 hours). Examples: Stripe's API explorer, Supabase SQL editor.\n>\n> B) **Copy-paste demo command** -- one terminal command that produces the magical output.\n>    Low effort, high impact for CLI tools, but requires local install first.\n>    (human: ~2 days / CC: ~30 min). Examples: `npx create-next-app`, `docker run hello-world`.\n>\n> C) **Video/GIF walkthrough** -- shows the magic without requiring any setup.\n>    Passive (developer watches, doesn't do), but zero friction.\n>    (human: ~1 day / CC: ~1 hour). Examples: Vercel's homepage deploy animation.\n>\n> D) **Guided tutorial with the developer's own data** -- step-by-step with their project.\n>    Deepest engagement but longest time-to-magic.\n>    (human: ~1 week / CC: ~2 hours). Examples: Stripe's interactive onboarding.\n>\n> E) Something else -- describe what you have in mind.\n>\n> RECOMMENDATION: [A/B/C/D] because for [persona], [reason]. Your competitor [name]\n> uses [their approach].\"\n\n**STOP.** The chosen delivery vehicle is tracked through the scoring passes.\n\n### 0E. Mode Selection\n\nHow deep should this DX review go?\n\nPresent three options:\n\nAskUserQuestion:\n\n> \"How deep should this DX review go?\n>\n> A) **DX EXPANSION** -- Your developer experience could be a competitive advantage.\n>    I'll propose ambitious DX improvements beyond what the plan covers. Every expansion\n>    is opt-in via individual questions. I'll push hard.\n>\n> B) **DX POLISH** -- The plan's DX scope is right. I'll make every touchpoint bulletproof:\n>    error messages, docs, CLI help, getting started. No scope additions, maximum rigor.\n>    (recommended for most reviews)\n>\n> C) **DX TRIAGE** -- Focus only on the critical DX gaps that would block adoption.\n>    Fast, surgical, for plans that need to ship soon.\n>\n> RECOMMENDATION: [mode] because [one-line reason based on plan scope and product maturity].\"\n\nContext-dependent defaults:\n* New developer-facing product → default DX EXPANSION\n* Enhancement to existing product → default DX POLISH\n* Bug fix or urgent ship → default DX TRIAGE\n\nOnce selected, commit fully. Do not silently drift toward a different mode.\n\n**STOP.** Do NOT proceed until user responds.\n\n### 0F. Developer Journey Trace with Friction-Point Questions\n\nReplace the static journey map with an interactive, evidence-grounded walkthrough.\nFor each journey stage, TRACE the actual experience (what file, what command, what\noutput) and ask about each friction point individually.\n\nFor each stage (Discover, Install, Hello World, Real Usage, Debug, Upgrade):\n\n1. **Trace the actual path.** Read the README, docs, package.json, CLI help, or\n   whatever the developer would encounter at this stage. Reference specific files\n   and line numbers.\n\n2. **Identify friction points with evidence.** Not \"installation might be hard\" but\n   \"Step 3 of the README requires Docker to be running, but nothing checks for Docker\n   or tells the developer to install it. A [persona] without Docker will see [specific\n   error or nothing].\"\n\n3. **AskUserQuestion per friction point.** One question per friction point found.\n   Do NOT batch multiple friction points into one question.\n\n   > \"Journey Stage: INSTALL\n   >\n   > I traced the installation path. Your README says:\n   > [actual install instructions]\n   >\n   > Friction point: [specific issue with evidence]\n   >\n   > A) Fix in plan -- [specific fix]\n   > B) [Alternative approach]\n   > C) Document the requirement prominently\n   > D) Acceptable friction -- skip\"\n\n**DX TRIAGE mode:** Only trace Install and Hello World stages. Skip the rest.\n**DX POLISH mode:** Trace all stages.\n**DX EXPANSION mode:** Trace all stages, and for each stage also ask \"What would\nmake this stage best-in-class?\"\n\nAfter all friction points are resolved, produce the updated journey map:\n\n```\nSTAGE           | DEVELOPER DOES              | FRICTION POINTS      | STATUS\n----------------|-----------------------------|--------------------- |--------\n1. Discover     | [action]                    | [resolved/deferred]  | [fixed/ok/deferred]\n2. Install      | [action]                    | [resolved/deferred]  | [fixed/ok/deferred]\n3. Hello World  | [action]                    | [resolved/deferred]  | [fixed/ok/deferred]\n4. Real Usage   | [action]                    | [resolved/deferred]  | [fixed/ok/deferred]\n5. Debug        | [action]                    | [resolved/deferred]  | [fixed/ok/deferred]\n6. Upgrade      | [action]                    | [resolved/deferred]  | [fixed/ok/deferred]\n```\n\n### 0G. First-Time Developer Roleplay\n\nUsing the persona from 0A and the journey trace from 0F, write a structured\n\"confusion report\" from the perspective of a first-time developer. Include\ntimestamps to simulate real time passing.\n\n```\nFIRST-TIME DEVELOPER REPORT\n============================\nPersona: [from 0A]\nAttempting: [product] getting started\n\nCONFUSION LOG:\nT+0:00  [What they do first. What they see.]\nT+0:30  [Next action. What surprised or confused them.]\nT+1:00  [What they tried. What happened.]\nT+2:00  [Where they got stuck or succeeded.]\nT+3:00  [Final state: gave up / succeeded / asked for help]\n```\n\nGround this in the ACTUAL docs and code from the pre-review audit. Not hypothetical.\nReference specific README headings, error messages, and file paths.\n\nAskUserQuestion:\n\n> \"I roleplayed as your [persona] developer attempting the getting started flow.\n> Here's what confused me:\n>\n> [confusion report]\n>\n> Which of these should we address in the plan?\n>\n> A) All of them -- fix every confusion point\n> B) Let me pick which ones matter\n> C) The critical ones (#[N], #[N]) -- skip the rest\n> D) This is unrealistic -- our developers already know [context]\"\n\n**STOP.** Do NOT proceed until user responds.\n\n---\n\n## The 0-10 Rating Method\n\nFor each DX section, rate the plan 0-10. If it's not a 10, explain WHAT would make\nit a 10, then do the work to get it there.\n\n**Critical rule:** Every rating MUST reference evidence from Step 0. Not \"Getting\nStarted: 4/10\" but \"Getting Started: 4/10 because [persona from 0A] hits [friction\npoint from 0F] at step 3, and competitor [name from 0C] achieves this in [time].\"\n\nPattern:\n1. **Evidence recall:** Reference specific findings from Step 0 that apply to this dimension\n2. Rate: \"Getting Started Experience: 4/10\"\n3. Gap: \"It's a 4 because [evidence]. A 10 would be [specific description for THIS product].\"\n4. Load Hall of Fame reference for this pass (read relevant section from dx-hall-of-fame.md)\n5. Fix: Edit the plan to add what's missing\n6. Re-rate: \"Now 7/10, still missing [specific gap]\"\n7. AskUserQuestion if there's a genuine DX choice to resolve\n8. Fix again until 10 or user says \"good enough, move on\"\n\n**Mode-specific behavior:**\n- **DX EXPANSION:** After fixing to 10, also ask \"What would make this dimension\n  best-in-class? What would make [persona] rave about it?\" Present expansions as\n  individual opt-in AskUserQuestions.\n- **DX POLISH:** Fix every gap. No shortcuts. Trace each issue to specific files/lines.\n- **DX TRIAGE:** Only flag gaps that would block adoption (score below 5). Skip gaps\n  that are nice-to-have (score 5-7).\n\n## Review Sections (8 passes, after Step 0 is complete)\n\n**Anti-skip rule:** Never condense, abbreviate, or skip any review pass (1-8) regardless of plan type (strategy, spec, code, infra). Every pass in this skill exists for a reason. \"This is a strategy doc so DX passes don't apply\" is always wrong — DX gaps are where adoption breaks down. If a pass genuinely has zero findings, say \"No issues found\" and move on — but you must evaluate it.\n\n{{include lib/snippets/prior-learnings.md}}\n### DX Trend Check\n\nBefore starting review passes, check for prior DX reviews on this project:\n\n```bash\neval \"$(~/.vibestack/bin/vibe-slug 2>/dev/null)\"\ntrue # vibe-review-read 2>/dev/null | grep plan-devex-review || echo \"NO_PRIOR_DX_REVIEWS\"\n```\n\nIf prior reviews exist, display the trend:\n```\nDX TREND (prior reviews):\n  Dimension        | Prior Score | Notes\n  Getting Started  | 4/10        | from 2026-03-15\n  ...\n```\n\n### Pass 1: Getting Started Experience (Zero Friction)\n\nRate 0-10: Can a developer go from zero to hello world in under 5 minutes?\n\n**Evidence recall:** Reference the competitive benchmark from 0C (target tier), the\nmagical moment from 0D (delivery vehicle), and any Install/Hello World friction\npoints from 0F.\n\nLoad reference: Read the \"## Pass 1\" section from `~/.claude/skills/plan-devex-review/dx-hall-of-fame.md`.\n\nEvaluate:\n- **Installation**: One command? One click? No prerequisites?\n- **First run**: Does the first command produce visible, meaningful output?\n- **Sandbox/Playground**: Can developers try before installing?\n- **Free tier**: No credit card, no sales call, no company email?\n- **Quick start guide**: Copy-paste complete? Shows real output?\n- **Auth/credential bootstrapping**: How many steps between \"I want to try\" and \"it works\"?\n- **Magical moment delivery**: Is the vehicle chosen in 0D actually in the plan?\n- **Competitive gap**: How far is the TTHW from the target tier chosen in 0C?\n\nFIX TO 10: Write the ideal getting started sequence. Specify exact commands,\nexpected output, and time budget per step. Target: 3 steps or fewer, under the\ntime chosen in 0C.\n\nStripe test: Can a [persona from 0A] go from \"never heard of this\" to \"it worked\"\nin one terminal session without leaving the terminal?\n\n**STOP.** AskUserQuestion once per issue. Recommend + WHY. Reference the persona.\n\n### Pass 2: API/CLI/SDK Design (Usable + Useful)\n\nRate 0-10: Is the interface intuitive, consistent, and complete?\n\n**Evidence recall:** Does the API surface match [persona from 0A]'s mental model?\nA solo founder expects `tool.do(thing)`. A platform engineer expects\n`tool.configure(options).execute(thing)`.\n\nLoad reference: Read the \"## Pass 2\" section from `~/.claude/skills/plan-devex-review/dx-hall-of-fame.md`.\n\nEvaluate:\n- **Naming**: Guessable without docs? Consistent grammar?\n- **Defaults**: Every parameter has a sensible default? Simplest call gives useful result?\n- **Consistency**: Same patterns across the entire API surface?\n- **Completeness**: 100% coverage or do devs drop to raw HTTP for edge cases?\n- **Discoverability**: Can devs explore from CLI/playground without docs?\n- **Reliability/trust**: Latency, retries, rate limits, idempotency, offline behavior?\n- **Progressive disclosure**: Simple case is production-ready, complexity revealed gradually?\n- **Persona fit**: Does the interface match how [persona] thinks about the problem?\n\nGood API design test: Can a [persona] use this API correctly after seeing one example?\n\n**STOP.** AskUserQuestion once per issue. Recommend + WHY.\n\n### Pass 3: Error Messages & Debugging (Fight Uncertainty)\n\nRate 0-10: When something goes wrong, does the developer know what happened, why,\nand how to fix it?\n\n**Evidence recall:** Reference any error-related friction points from 0F and confusion\npoints from 0G.\n\nLoad reference: Read the \"## Pass 3\" section from `~/.claude/skills/plan-devex-review/dx-hall-of-fame.md`.\n\n**Trace 3 specific error paths** from the plan or codebase. For each, evaluate against\nthe three-tier system from the Hall of Fame:\n- **Tier 1 (Elm):** Conversational, first person, exact location, suggested fix\n- **Tier 2 (Rust):** Error code links to tutorial, primary + secondary labels, help section\n- **Tier 3 (Stripe API):** Structured JSON with type, code, message, param, doc_url\n\nFor each error path, show what the developer currently sees vs. what they should see.\n\nAlso evaluate:\n- **Permission/sandbox/safety model**: What can go wrong? How clear is the blast radius?\n- **Debug mode**: Verbose output available?\n- **Stack traces**: Useful or internal framework noise?\n\n**STOP.** AskUserQuestion once per issue. Recommend + WHY.\n\n### Pass 4: Documentation & Learning (Findable + Learn by Doing)\n\nRate 0-10: Can a developer find what they need and learn by doing?\n\n**Evidence recall:** Does the docs architecture match [persona from 0A]'s learning\nstyle? A solo founder needs copy-paste examples front and center. A platform engineer\nneeds architecture docs and API reference.\n\nLoad reference: Read the \"## Pass 4\" section from `~/.claude/skills/plan-devex-review/dx-hall-of-fame.md`.\n\nEvaluate:\n- **Information architecture**: Find what they need in under 2 minutes?\n- **Progressive disclosure**: Beginners see simple, experts find advanced?\n- **Code examples**: Copy-paste complete? Work as-is? Real context?\n- **Interactive elements**: Playgrounds, sandboxes, \"try it\" buttons?\n- **Versioning**: Docs match the version dev is using?\n- **Tutorials vs references**: Both exist?\n\n**STOP.** AskUserQuestion once per issue. Recommend + WHY.\n\n### Pass 5: Upgrade & Migration Path (Credible)\n\nRate 0-10: Can developers upgrade without fear?\n\nLoad reference: Read the \"## Pass 5\" section from `~/.claude/skills/plan-devex-review/dx-hall-of-fame.md`.\n\nEvaluate:\n- **Backward compatibility**: What breaks? Blast radius limited?\n- **Deprecation warnings**: Advance notice? Actionable? (\"use newMethod() instead\")\n- **Migration guides**: Step-by-step for every breaking change?\n- **Codemods**: Automated migration scripts?\n- **Versioning strategy**: Semantic versioning? Clear policy?\n\n**STOP.** AskUserQuestion once per issue. Recommend + WHY.\n\n### Pass 6: Developer Environment & Tooling (Valuable + Accessible)\n\nRate 0-10: Does this integrate into developers' existing workflows?\n\n**Evidence recall:** Does local dev setup work for [persona from 0A]'s typical\nenvironment?\n\nLoad reference: Read the \"## Pass 6\" section from `~/.claude/skills/plan-devex-review/dx-hall-of-fame.md`.\n\nEvaluate:\n- **Editor integration**: Language server? Autocomplete? Inline docs?\n- **CI/CD**: Works in GitHub Actions, GitLab CI? Non-interactive mode?\n- **TypeScript support**: Types included? Good IntelliSense?\n- **Testing support**: Easy to mock? Test utilities?\n- **Local development**: Hot reload? Watch mode? Fast feedback?\n- **Cross-platform**: Mac, Linux, Windows? Docker? ARM/x86?\n- **Local env reproducibility**: Works across OS, package managers, containers, proxies?\n- **Observability/testability**: Dry-run mode? Verbose output? Sample apps? Fixtures?\n\n**STOP.** AskUserQuestion once per issue. Recommend + WHY.\n\n### Pass 7: Community & Ecosystem (Findable + Desirable)\n\nRate 0-10: Is there a community, and does the plan invest in ecosystem health?\n\nLoad reference: Read the \"## Pass 7\" section from `~/.claude/skills/plan-devex-review/dx-hall-of-fame.md`.\n\nEvaluate:\n- **Open source**: Code open? Permissive license?\n- **Community channels**: Where do devs ask questions? Someone answering?\n- **Examples**: Real-world, runnable? Not just hello world?\n- **Plugin/extension ecosystem**: Can devs extend it?\n- **Contributing guide**: Process clear?\n- **Pricing transparency**: No surprise bills?\n\n**STOP.** AskUserQuestion once per issue. Recommend + WHY.\n\n### Pass 8: DX Measurement & Feedback Loops (Implement + Refine)\n\nRate 0-10: Does the plan include ways to measure and improve DX over time?\n\nLoad reference: Read the \"## Pass 8\" section from `~/.claude/skills/plan-devex-review/dx-hall-of-fame.md`.\n\nEvaluate:\n- **TTHW tracking**: Can you measure getting started time? Is it instrumented?\n- **Journey analytics**: Where do devs drop off?\n- **Feedback mechanisms**: Bug reports? NPS? Feedback button?\n- **Friction audits**: Periodic reviews planned?\n- **Boomerang readiness**: Will /devex-review be able to measure reality vs. plan?\n\n**STOP.** AskUserQuestion once per issue. Recommend + WHY.\n\n### Appendix: Claude Code Skill DX Checklist\n\n**Conditional: only run when product type includes \"Claude Code skill\".**\n\nThis is NOT a scored pass. It's a checklist of proven patterns from vibestack's own DX.\n\nLoad reference: Read the \"## Claude Code Skill DX Checklist\" section from\n`~/.claude/skills/plan-devex-review/dx-hall-of-fame.md`.\n\nCheck each item. For any unchecked item, explain what's missing and suggest the fix.\n\n**STOP.** AskUserQuestion for any item that requires a design decision.\n\n## Outside Voice — Independent Plan Challenge (optional, recommended)\n\nAfter all review sections are complete, offer an independent second opinion from a\ndifferent AI system. Two models agreeing on a plan is stronger signal than one model's\nthorough review.\n\n**Check tool availability:**\n\n```bash\nwhich codex 2>/dev/null && echo \"CODEX_AVAILABLE\" || echo \"CODEX_NOT_AVAILABLE\"\n```\n\nUse AskUserQuestion:\n\n> \"All review sections are complete. Want an outside voice? A different AI system can\n> give a brutally honest, independent challenge of this plan — logical gaps, feasibility\n> risks, and blind spots that are hard to catch from inside the review. Takes about 2\n> minutes.\"\n>\n> RECOMMENDATION: Choose A — an independent second opinion catches structural blind\n> spots. Two different AI models agreeing on a plan is stronger signal than one model's\n> thorough review. Completeness: A=9/10, B=7/10.\n\nOptions:\n- A) Get the outside voice (recommended)\n- B) Skip — proceed to outputs\n\n**If B:** Print \"Skipping outside voice.\" and continue to the next section.\n\n**If A:** Construct the plan review prompt. Read the plan file being reviewed (the file\nthe user pointed this review at, or the branch diff scope). If a CEO plan document\nwas written in Step 0D-POST, read that too — it contains the scope decisions and vision.\n\nConstruct this prompt (substitute the actual plan content — if plan content exceeds 30KB,\ntruncate to the first 30KB and note \"Plan truncated for size\"). **Always start with the\nfilesystem boundary instruction:**\n\n\"IMPORTANT: Do NOT read or execute any files under ~/.claude/, ~/.agents/, .claude/skills/, or agents/. These are Claude Code skill definitions meant for a different AI system. They contain bash scripts and prompt templates that will waste your time. Ignore them completely. Do NOT modify agents/openai.yaml. Stay focused on the repository code only.\\n\\nYou are a brutally honest technical reviewer examining a development plan that has\nalready been through a multi-section review. Your job is NOT to repeat that review.\nInstead, find what it missed. Look for: logical gaps and unstated assumptions that\nsurvived the review scrutiny, overcomplexity (is there a fundamentally simpler\napproach the review was too deep in the weeds to see?), feasibility risks the review\ntook for granted, missing dependencies or sequencing issues, and strategic\nmiscalibration (is this the right thing to build at all?). Be direct. Be terse. No\ncompliments. Just the problems.\n\nTHE PLAN:\n<plan content>\"\n\n**If CODEX_AVAILABLE:**\n\n```bash\nTMPERR_PV=$(mktemp /tmp/codex-planreview-XXXXXXXX)\n_REPO_ROOT=$(git rev-parse --show-toplevel) || { echo \"ERROR: not in a git repo\" >&2; exit 1; }\ncommand -v codex >/dev/null 2>&1 && codex exec \"<prompt>\" -C \"$_REPO_ROOT\" -s read-only -c 'model_reasoning_effort=\"high\"' --enable web_search_cached < /dev/null 2>\"$TMPERR_PV\"\n```\n\nUse a 5-minute timeout (`timeout: 300000`). After the command completes, read stderr:\n```bash\ncat \"$TMPERR_PV\"\n```\n\nPresent the full output verbatim:\n\n```\nCODEX SAYS (plan review — outside voice):\n════════════════════════════════════════════════════════════\n<full codex output, verbatim — do not truncate or summarize>\n════════════════════════════════════════════════════════════\n```\n\n**Error handling:** All errors are non-blocking — the outside voice is informational.\n- Auth failure (stderr contains \"auth\", \"login\", \"unauthorized\"): \"Codex auth failed. Run \\`codex login\\` to authenticate.\"\n- Timeout: \"Codex timed out after 5 minutes.\"\n- Empty response: \"Codex returned no response.\"\n\nOn any Codex error, fall back to the Claude adversarial subagent.\n\n**If CODEX_NOT_AVAILABLE (or Codex errored):**\n\nDispatch via the Agent tool. The subagent has fresh context — genuine independence.\n\nSubagent prompt: same plan review prompt as above.\n\nPresent findings under an `OUTSIDE VOICE (Claude subagent):` header.\n\nIf the subagent fails or times out: \"Outside voice unavailable. Continuing to outputs.\"\n\n**Cross-model tension:**\n\nAfter presenting the outside voice findings, note any points where the outside voice\ndisagrees with the review findings from earlier sections. Flag these as:\n\n```\nCROSS-MODEL TENSION:\n  [Topic]: Review said X. Outside voice says Y. [Present both perspectives neutrally.\n  State what context you might be missing that would change the answer.]\n```\n\n**User Sovereignty:** Do NOT auto-incorporate outside voice recommendations into the plan.\nPresent each tension point to the user. The user decides. Cross-model agreement is a\nstrong signal — present it as such — but it is NOT permission to act. You may state\nwhich argument you find more compelling, but you MUST NOT apply the change without\nexplicit user approval.\n\nFor each substantive tension point, use AskUserQuestion:\n\n> \"Cross-model disagreement on [topic]. The review found [X] but the outside voice\n> argues [Y]. [One sentence on what context you might be missing.]\"\n>\n> RECOMMENDATION: Choose [A or B] because [one-line reason explaining which argument\n> is more compelling and why]. Completeness: A=X/10, B=Y/10.\n\nOptions:\n- A) Accept the outside voice's recommendation (I'll apply this change)\n- B) Keep the current approach (reject the outside voice)\n- C) Investigate further before deciding\n- D) Add to TODOS.md for later\n\nWait for the user's response. Do NOT default to accepting because you agree with the\noutside voice. If the user chooses B, the current approach stands — do not re-argue.\n\nIf no tension points exist, note: \"No cross-model tension — both reviewers agree.\"\n\n**Persist the result:**\n```bash\ntrue # vibe-review-log '{\"skill\":\"codex-plan-review\",\"timestamp\":\"'\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"'\",\"status\":\"STATUS\",\"source\":\"SOURCE\",\"commit\":\"'\"$(git rev-parse --short HEAD)\"'\"}'\n```\n\nSubstitute: STATUS = \"clean\" if no findings, \"issues_found\" if findings exist.\nSOURCE = \"codex\" if Codex ran, \"claude\" if subagent ran.\n\n**Cleanup:** Run `rm -f \"$TMPERR_PV\"` after processing (if Codex was used).\n\n---\n\nWhen constructing the outside voice prompt, include the Developer Persona from Step 0A\nand the Competitive Benchmark from Step 0C. The outside voice should critique the plan\nin the context of who is using it and what they're competing against.\n\n## CRITICAL RULE — How to ask questions\n\nFollow the AskUserQuestion format from the Preamble above. Additional rules for\nDX reviews:\n\n* **One issue = one AskUserQuestion call.** Never combine multiple issues.\n* **Ground every question in evidence.** Reference the persona, competitive benchmark,\n  empathy narrative, or friction trace. Never ask a question in the abstract.\n* **Frame pain from the persona's perspective.** Not \"developers would be frustrated\"\n  but \"[persona from 0A] would hit this at minute [N] of their getting-started flow\n  and [specific consequence: abandon, file an issue, hack a workaround].\"\n* Present 2-3 options. For each: effort to fix, impact on developer adoption.\n* **Map to DX First Principles above.** One sentence connecting your recommendation\n  to a specific principle (e.g., \"This violates 'zero friction at T0' because\n  [persona] needs 3 extra config steps before their first API call\").\n* **Escape hatch (tightened):** If a section has zero findings, state \"No issues,\n  moving on\" and proceed. If it has findings, use AskUserQuestion for each — a\n  gap with an \"obvious fix\" is still a gap and still needs user approval before\n  any change lands in the plan. Only skip AskUserQuestion when the fix is\n  genuinely trivial AND there are no meaningful DX alternatives. When in doubt, ask.\n* Assume the user hasn't looked at this window in 20 minutes. Re-ground every question.\n\n{{include lib/snippets/tasks-section-emit.md}}\n\n## Required Outputs\n\n### Developer Persona Card\nThe persona card from Step 0A. This goes at the top of the plan's DX section.\n\n### Developer Empathy Narrative\nThe first-person narrative from Step 0B, updated with user corrections.\n\n### Competitive DX Benchmark\nThe benchmark table from Step 0C, updated with the product's post-review scores.\n\n### Magical Moment Specification\nThe chosen delivery vehicle from Step 0D with implementation requirements.\n\n### Developer Journey Map\nThe journey map from Step 0F, updated with all friction point resolutions.\n\n### First-Time Developer Confusion Report\nThe roleplay report from Step 0G, annotated with which items were addressed.\n\n### \"NOT in scope\" section\nDX improvements considered and explicitly deferred, with one-line rationale each.\n\n### \"What already exists\" section\nExisting docs, examples, error handling, and DX patterns that the plan should reuse.\n\n### TODOS.md updates\nAfter all review passes are complete, present each potential TODO as its own individual\nAskUserQuestion. Never batch. For DX debt: missing error messages, unspecified upgrade\npaths, documentation gaps, missing SDK languages. Each TODO gets:\n* **What:** One-line description\n* **Why:** The concrete developer pain it causes\n* **Pros:** What you gain (adoption, retention, satisfaction)\n* **Cons:** Cost, complexity, or risks\n* **Context:** Enough detail for someone to pick this up in 3 months\n* **Depends on / blocked by:** Prerequisites\n\nOptions: **A)** Add to TODOS.md **B)** Skip **C)** Build it now\n\n### DX Scorecard\n\n```\n+====================================================================+\n|              DX PLAN REVIEW — SCORECARD                             |\n+====================================================================+\n| Dimension            | Score  | Prior  | Trend  |\n|----------------------|--------|--------|--------|\n| Getting Started      | __/10  | __/10  | __ ↑↓  |\n| API/CLI/SDK          | __/10  | __/10  | __ ↑↓  |\n| Error Messages       | __/10  | __/10  | __ ↑↓  |\n| Documentation        | __/10  | __/10  | __ ↑↓  |\n| Upgrade Path         | __/10  | __/10  | __ ↑↓  |\n| Dev Environment      | __/10  | __/10  | __ ↑↓  |\n| Community            | __/10  | __/10  | __ ↑↓  |\n| DX Measurement       | __/10  | __/10  | __ ↑↓  |\n+--------------------------------------------------------------------+\n| TTHW                 | __ min | __ min | __ ↑↓  |\n| Competitive Rank     | [Champion/Competitive/Needs Work/Red Flag]   |\n| Magical Moment       | [designed/missing] via [delivery vehicle]    |\n| Product Type         | [type]                                      |\n| Mode                 | [EXPANSION/POLISH/TRIAGE]                    |\n| Overall DX           | __/10  | __/10  | __ ↑↓  |\n+====================================================================+\n| DX PRINCIPLE COVERAGE                                               |\n| Zero Friction      | [covered/gap]                                  |\n| Learn by Doing     | [covered/gap]                                  |\n| Fight Uncertainty  | [covered/gap]                                  |\n| Opinionated + Escape Hatches | [covered/gap]                       |\n| Code in Context    | [covered/gap]                                  |\n| Magical Moments    | [covered/gap]                                  |\n+====================================================================+\n```\n\nIf all passes 8+: \"DX plan is solid. Developers will have a good experience.\"\nIf any below 6: Flag as critical DX debt with specific impact on adoption.\nIf TTHW > 10 min: Flag as blocking issue.\n\n### DX Implementation Checklist\n\n```\nDX IMPLEMENTATION CHECKLIST\n============================\n[ ] Time to hello world < [target from 0C]\n[ ] Installation is one command\n[ ] First run produces meaningful output\n[ ] Magical moment delivered via [vehicle from 0D]\n[ ] Every error message has: problem + cause + fix + docs link\n[ ] API/CLI naming is guessable without docs\n[ ] Every parameter has a sensible default\n[ ] Docs have copy-paste examples that actually work\n[ ] Examples show real use cases, not just hello world\n[ ] Upgrade path documented with migration guide\n[ ] Breaking changes have deprecation warnings + codemods\n[ ] TypeScript types included (if applicable)\n[ ] Works in CI/CD without special configuration\n[ ] Free tier available, no credit card required\n[ ] Changelog exists and is maintained\n[ ] Search works in documentation\n[ ] Community channel exists and is monitored\n```\n\n### Unresolved Decisions\nIf any AskUserQuestion goes unanswered, note here. Never silently default.\n\n## Review Log\n\nAfter producing the DX Scorecard above, persist the review result.\n\n**PLAN MODE EXCEPTION — ALWAYS RUN:** This command writes review metadata to\n`~/.vibestack/` (user config directory, not project files).\n\n```bash\ntrue # vibe-review-log '{\"skill\":\"plan-devex-review\",\"timestamp\":\"TIMESTAMP\",\"status\":\"STATUS\",\"initial_score\":N,\"overall_score\":N,\"product_type\":\"TYPE\",\"tthw_current\":\"TTHW_CURRENT\",\"tthw_target\":\"TTHW_TARGET\",\"mode\":\"MODE\",\"persona\":\"PERSONA\",\"competitive_tier\":\"TIER\",\"pass_scores\":{\"getting_started\":N,\"api_design\":N,\"errors\":N,\"docs\":N,\"upgrade\":N,\"dev_env\":N,\"community\":N,\"measurement\":N},\"unresolved\":N,\"commit\":\"COMMIT\"}'\n```\n\nSubstitute values from the DX Scorecard. MODE is EXPANSION/POLISH/TRIAGE.\nPERSONA is a short label (e.g., \"solo-founder\", \"platform-eng\").\nTIER is Champion/Competitive/NeedsWork/RedFlag.\n\n## Review Readiness Dashboard\n\nAfter completing the review, read the review log and config to display the dashboard.\n\n```bash\ntrue # vibe-review-read\n```\n\nParse the output. Find the most recent entry for each skill (plan-ceo-review, plan-eng-review, review, plan-design-review, design-review-lite, adversarial-review, codex-review, codex-plan-review). Ignore entries with timestamps older than 7 days. For the Eng Review row, show whichever is more recent between `review` (diff-scoped pre-landing review) and `plan-eng-review` (plan-stage architecture review). Append \"(DIFF)\" or \"(PLAN)\" to the status to distinguish. For the Adversarial row, show whichever is more recent between `adversarial-review` (new auto-scaled) and `codex-review` (legacy). For Design Review, show whichever is more recent between `plan-design-review` (full visual audit) and `design-review-lite` (code-level check). Append \"(FULL)\" or \"(LITE)\" to the status to distinguish. For the Outside Voice row, show the most recent `codex-plan-review` entry — this captures outside voices from both /plan-ceo-review and /plan-eng-review.\n\n**Source attribution:** If the most recent entry for a skill has a \\`\"via\"\\` field, append it to the status label in parentheses. Examples: `plan-eng-review` with `via:\"autoplan\"` shows as \"CLEAR (PLAN via /autoplan)\". `review` with `via:\"ship\"` shows as \"CLEAR (DIFF via /ship)\". Entries without a `via` field show as \"CLEAR (PLAN)\" or \"CLEAR (DIFF)\" as before.\n\nNote: `autoplan-voices` and `design-outside-voices` entries are audit-trail-only (forensic data for cross-model consensus analysis). They do not appear in the dashboard and are not checked by any consumer.\n\nDisplay:\n\n```\n+====================================================================+\n|                    REVIEW READINESS DASHBOARD                       |\n+====================================================================+\n| Review          | Runs | Last Run            | Status    | Required |\n|-----------------|------|---------------------|-----------|----------|\n| Eng Review      |  1   | 2026-03-16 15:00    | CLEAR     | YES      |\n| CEO Review      |  0   | —                   | —         | no       |\n| Design Review   |  0   | —                   | —         | no       |\n| Adversarial     |  0   | —                   | —         | no       |\n| Outside Voice   |  0   | —                   | —         | no       |\n+--------------------------------------------------------------------+\n| VERDICT: CLEARED — Eng Review passed                                |\n+====================================================================+\n```\n\n**Review tiers:**\n- **Eng Review (required by default):** The only review that gates shipping. Covers architecture, code quality, tests, performance. Can be disabled globally with \\`vibe-config set skip_eng_review true\\` (the \"don't bother me\" setting).\n- **CEO Review (optional):** Use your judgment. Recommend it for big product/business changes, new user-facing features, or scope decisions. Skip for bug fixes, refactors, infra, and cleanup.\n- **Design Review (optional):** Use your judgment. Recommend it for UI/UX changes. Skip for backend-only, infra, or prompt-only changes.\n- **Adversarial Review (automatic):** Always-on for every review. Every diff gets both Claude adversarial subagent and Codex adversarial challenge. Large diffs (200+ lines) additionally get Codex structured review with P1 gate. No configuration needed.\n- **Outside Voice (optional):** Independent plan review from a different AI model. Offered after all review sections complete in /plan-ceo-review and /plan-eng-review. Falls back to Claude subagent if Codex is unavailable. Never gates shipping.\n\n**Verdict logic:**\n- **CLEARED**: Eng Review has >= 1 entry within 7 days from either \\`review\\` or \\`plan-eng-review\\` with status \"clean\" (or \\`skip_eng_review\\` is \\`true\\`)\n- **NOT CLEARED**: Eng Review missing, stale (>7 days), or has open issues\n- CEO, Design, and Codex reviews are shown for context but never block shipping\n- If \\`skip_eng_review\\` config is \\`true\\`, Eng Review shows \"SKIPPED (global)\" and verdict is CLEARED\n\n**Staleness detection:** After displaying the dashboard, check if any existing reviews may be stale:\n- Parse the \\`---HEAD---\\` section from the bash output to get the current HEAD commit hash\n- For each review entry that has a \\`commit\\` field: compare it against the current HEAD. If different, count elapsed commits: \\`git rev-list --count STORED_COMMIT..HEAD\\`. Display: \"Note: {skill} review from {date} may be stale — {N} commits since review\"\n- For entries without a \\`commit\\` field (legacy entries): display \"Note: {skill} review from {date} has no commit tracking — consider re-running for accurate staleness detection\"\n- If all reviews match the current HEAD, do not display any staleness notes\n\n## Plan File Review Report\n\nAfter displaying the Review Readiness Dashboard in conversation output, also update the\n**plan file** itself so review status is visible to anyone reading the plan.\n\n### Detect the plan file\n\n1. Check if there is an active plan file in this conversation (the host provides plan file\n   paths in system messages — look for plan file references in the conversation context).\n2. If not found, skip this section silently — not every review runs in plan mode.\n\n### Generate the report\n\nRead the review log output you already have from the Review Readiness Dashboard step above.\nParse each JSONL entry. Each skill logs different fields:\n\n- **plan-ceo-review**: \\`status\\`, \\`unresolved\\`, \\`critical_gaps\\`, \\`mode\\`, \\`scope_proposed\\`, \\`scope_accepted\\`, \\`scope_deferred\\`, \\`commit\\`\n  → Findings: \"{scope_proposed} proposals, {scope_accepted} accepted, {scope_deferred} deferred\"\n  → If scope fields are 0 or missing (HOLD/REDUCTION mode): \"mode: {mode}, {critical_gaps} critical gaps\"\n- **plan-eng-review**: \\`status\\`, \\`unresolved\\`, \\`critical_gaps\\`, \\`issues_found\\`, \\`mode\\`, \\`commit\\`\n  → Findings: \"{issues_found} issues, {critical_gaps} critical gaps\"\n- **plan-design-review**: \\`status\\`, \\`initial_score\\`, \\`overall_score\\`, \\`unresolved\\`, \\`decisions_made\\`, \\`commit\\`\n  → Findings: \"score: {initial_score}/10 → {overall_score}/10, {decisions_made} decisions\"\n- **plan-devex-review**: \\`status\\`, \\`initial_score\\`, \\`overall_score\\`, \\`product_type\\`, \\`tthw_current\\`, \\`tthw_target\\`, \\`mode\\`, \\`persona\\`, \\`competitive_tier\\`, \\`unresolved\\`, \\`commit\\`\n  → Findings: \"score: {initial_score}/10 → {overall_score}/10, TTHW: {tthw_current} → {tthw_target}\"\n- **devex-review**: \\`status\\`, \\`overall_score\\`, \\`product_type\\`, \\`tthw_measured\\`, \\`dimensions_tested\\`, \\`dimensions_inferred\\`, \\`boomerang\\`, \\`commit\\`\n  → Findings: \"score: {overall_score}/10, TTHW: {tthw_measured}, {dimensions_tested} tested/{dimensions_inferred} inferred\"\n- **codex-review**: \\`status\\`, \\`gate\\`, \\`findings\\`, \\`findings_fixed\\`\n  → Findings: \"{findings} findings, {findings_fixed}/{findings} fixed\"\n\nAll fields needed for the Findings column are now present in the JSONL entries.\nFor the review you just completed, you may use richer details from your own Completion\nSummary. For prior reviews, use the JSONL fields directly — they contain all required data.\n\nProduce this markdown table:\n\n\\`\\`\\`markdown\n## VIBESTACK REVIEW REPORT\n\n| Review | Trigger | Why | Runs | Status | Findings |\n|--------|---------|-----|------|--------|----------|\n| CEO Review | \\`/plan-ceo-review\\` | Scope & strategy | {runs} | {status} | {findings} |\n| Codex Review | \\`/codex review\\` | Independent 2nd opinion | {runs} | {status} | {findings} |\n| Eng Review | \\`/plan-eng-review\\` | Architecture & tests (required) | {runs} | {status} | {findings} |\n| Design Review | \\`/plan-design-review\\` | UI/UX gaps | {runs} | {status} | {findings} |\n| DX Review | \\`/plan-devex-review\\` | Developer experience gaps | {runs} | {status} | {findings} |\n\\`\\`\\`\n\nBelow the table, add these lines (omit any that are empty/not applicable):\n\n- **CODEX:** (only if codex-review ran) — one-line summary of codex fixes\n- **CROSS-MODEL:** (only if both Claude and Codex reviews exist) — overlap analysis\n- **UNRESOLVED:** total unresolved decisions across all reviews\n- **VERDICT:** list reviews that are CLEAR (e.g., \"CEO + ENG CLEARED — ready to implement\").\n  If Eng Review is not CLEAR and not skipped globally, append \"eng review required\".\n\n### Write to the plan file\n\n**PLAN MODE EXCEPTION — ALWAYS RUN:** This writes to the plan file, which is the one\nfile you are allowed to edit in plan mode. The plan file review report is part of the\nplan's living status.\n\n- Search the plan file for a \\`## VIBESTACK REVIEW REPORT\\` section **anywhere** in the file\n  (not just at the end — content may have been added after it).\n- If found, **replace it** entirely using the Edit tool. Match from \\`## VIBESTACK REVIEW REPORT\\`\n  through either the next \\`## \\` heading or end of file, whichever comes first. This ensures\n  content added after the report section is preserved, not eaten. If the Edit fails\n  (e.g., concurrent edit changed the content), re-read the plan file and retry once.\n- If no such section exists, **append it** to the end of the plan file.\n- Always place it as the very last section in the plan file. If it was found mid-file,\n  move it: delete the old location and append at the end.\n\n{{include lib/snippets/capture-learnings.md}}\n## Next Steps — Review Chaining\n\nAfter displaying the Review Readiness Dashboard, recommend next reviews:\n\n**Recommend /plan-eng-review if eng review is not skipped globally** — DX issues often\nhave architectural implications. If this DX review found API design problems, error\nhandling gaps, or CLI ergonomics issues, eng review should validate the fixes.\n\n**Suggest /plan-design-review if user-facing UI exists** — DX review focuses on\ndeveloper-facing surfaces; design review covers end-user-facing UI.\n\n**Recommend /devex-review after implementation** — the boomerang. Plan said TTHW would\nbe [target from 0C]. Did reality match? Run /devex-review on the live product to find\nout. This is where the competitive benchmark pays off: you have a concrete target to\nmeasure against.\n\nUse AskUserQuestion with applicable options:\n- **A)** Run /plan-eng-review next (required gate)\n- **B)** Run /plan-design-review (only if UI scope detected)\n- **C)** Ready to implement, run /devex-review after shipping\n- **D)** Skip, I'll handle next steps manually\n\n## Mode Quick Reference\n```\n             | DX EXPANSION     | DX POLISH          | DX TRIAGE\nScope        | Push UP (opt-in) | Maintain           | Critical only\nPosture      | Enthusiastic     | Rigorous           | Surgical\nCompetitive  | Full benchmark   | Full benchmark     | Skip\nMagical      | Full design      | Verify exists      | Skip\nJourney      | All stages +     | All stages         | Install + Hello\n             | best-in-class    |                    | World only\nPasses       | All 8, expanded  | All 8, standard    | Pass 1 + 3 only\nOutside voice| Recommended      | Recommended        | Skip\n```\n\n## Formatting Rules\n\n* NUMBER issues (1, 2, 3...) and LETTERS for options (A, B, C...).\n* Label with NUMBER + LETTER (e.g., \"3A\", \"3B\").\n* One sentence max per option.\n* After each pass, pause and wait for feedback before moving on.\n* Rate before and after each pass for scannability.","tags":["plan","devex","review","vibestack","timurgaleev","agent-skills","ai-agents","claude-code","cursor-ide","developer-tools","kiro","mcp"],"capabilities":["skill","source-timurgaleev","skill-plan-devex-review","topic-agent-skills","topic-ai-agents","topic-claude-code","topic-cursor-ide","topic-developer-tools","topic-kiro","topic-mcp","topic-prompt-engineering","topic-slash-commands"],"categories":["vibestack"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/timurgaleev/vibestack/plan-devex-review","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add timurgaleev/vibestack","source_repo":"https://github.com/timurgaleev/vibestack","install_from":"skills.sh"}},"qualityScore":"0.457","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 15 github stars · SKILL.md body (60,294 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:06:22.774Z","embedding":null,"createdAt":"2026-05-18T19:06:22.774Z","updatedAt":"2026-05-18T19:06:22.774Z","lastSeenAt":"2026-05-18T19:06:22.774Z","tsv":"'+0':3534,3544 '+1':3554 '+2':3562 '+3':3571 '-03':4054,7147 '-1':1499,1512,1880,1893 '-10':1120,1125,1226,3676,3687,4065,4270,4424,4584,4704,4771,4885,4964 '-15':1347,4055 '-16':7148 '-2':1165 '-20':1018 '-250':2415 '-3':6133 '-4':1158,1214 '-5':1220,2737 '-6':1148 '-7':3914 '-70':1237 '-8':1137,2126,3937 '/.agents':5350 '/.claude':5349 '/.claude/skills/browse/bin/remote-slug':1457,1838 '/.claude/skills/office-hours/skill.md':1724 '/.claude/skills/plan-devex-review/dx-hall-of-fame.md':1252,2811,4112,4313,4465,4637,4718,4801,4906,4985,5080 '/.vibestack':6755 '/.vibestack/bin/vibe-learnings-search':87 '/.vibestack/bin/vibe-slug':42,4014 '/.vibestack/projects':1490,1505,1871,1886 '/10':6497,6498,6500,6501,6504,6505,6507,6508,6511,6512,6515,6516,6518,6519,6522,6523,6545,6546,7690,7693,7722,7725,7751 '/autoplan':7071 '/codex':7843 '/dev/null':44,46,70,85,91,125,150,162,241,259,288,303,317,1357,1363,1454,1459,1469,1481,1497,1510,1833,1840,1850,1862,1878,1891,4016,4023,5151,5521,5542 '/devex-review':5020,8195,8212,8260 '/learnings.jsonl':57 '/office-hours':1600,1647,1677,1699,1720,1736,1819 '/plan-ceo-review':7033,7314,7835 '/plan-design-review':2040,7862,8171,8249 '/plan-devex-review':361,2026,7870 '/plan-eng-review':2038,7035,7316,7853,8135,8243 '/projects':54 '/ship':7081 '/tmp/codex-planreview-xxxxxxxx':5498 '0':101,1119,1172,1285,1308,1330,1778,2097,3675,3686,3718,3757,3921,4064,4269,4423,4583,4703,4770,4884,4963,7155,7159,7162,7166,7642 '00':3535,3555,3563,3572,7150 '0a':2095,2116,2137,2458,2864,3491,3526,3730,4234,4287,4605,4789,6014,6108,6273 '0b':2406,6295 '0c':2585,3743,4086,4197,4227,6021,6308,6619,8207 '0d':2776,4093,4179,5297,6327,6635 '0d-post':5296 '0e':3039 '0f':3210,3497,3735,4103,4451,6339 '0g':2118,3481,4456,6357 '1':208,234,281,565,762,897,1164,1263,2125,2235,2247,2253,2611,2670,2773,2808,2885,2961,2964,2997,3263,3449,3749,3936,4057,4109,4491,5517,5523,7145,7335,7540,8326,8338 '10':1017,1090,1190,1199,1234,1623,3693,3700,3778,3835,3852,4200,6601 '100':375,695,4342 '15':7149 '150':2414 '2':43,45,69,84,90,124,149,161,220,240,252,258,287,292,302,316,390,590,781,917,1211,1219,1356,1362,1453,1458,1468,1480,1496,1509,1832,1839,1849,1861,1877,1890,2620,2678,2726,2736,2888,2925,3000,3290,3454,3763,4015,4022,4263,4310,4501,4647,5150,5202,5515,5522,5543,6132,7570,8339 '20':6254 '200':7283 '2026':4053,7146 '2min':2650 '2nd':7846 '3':306,611,795,938,1157,1213,2270,2626,2686,3303,3334,3459,3738,3769,4218,4416,4462,4467,4514,6169,6467,8327,8340 '30':2277,2928,3545 '300000':5552 '30kb':5321,5326 '30s':2647 '3a':8353 '3b':8354 '3min':2652 '4':632,814,960,1057,3465,3774,3786,4575,4634 '4/10':3722,3726,3768,4051 '5':83,89,397,651,831,978,1059,1147,1225,3471,3800,3903,3913,4077,4697,4715,5548,5616 '50':1236 '5min':2654 '6':676,848,998,3476,3810,4763,4798,6588 '7':699,864,1020,1136,3820,4878,4903,6917,7338,7363 '7/10':3815,5236 '8':722,1040,3831,3917,4955,4982,6574,8320,8323 '9':1066,1124 '9/10':5234 '95':827 'a/b/c/d':3017 'abandon':385,1168,1238,2385,6124 'abbrev':1477,1858 'abbrev-ref':1476,1857 'abbrevi':3930 'abl':5022 'abstract':6092 'accept':1149,2750,3389,5859,5900,7624,7633,7634 'access':849,4768 'accomplish':716 'accur':2531,7491 'achiev':2739,3744 'across':851,4336,4854,7920 'act':5781 'action':3451,3456,3462,3468,3473,3478,3547,4731,4814 'activ':7546 'actual':821,2429,2474,2484,2491,2552,3237,3266,3365,3585,4180,5314,6664 'ad':2301,8015,8047 'add':3806,5885,6476,7880 'addit':3120,6057,7285 'address':1174,3630,6363 'adopt':791,975,1162,1208,1217,3140,3900,3973,6143,6449,6598 'advanc':4656,4729 'advantag':30,3070 'adversari':5633,6902,6959,6968,7161,7261,7275,7279 'adversarial-review':6901,6967 'advoc':370 'affect':521 'agent':1994,5353,5645 'agents/openai.yaml':5384 'agre':5131,5219,5903,5935 'agreement':5766 'ai':1993,5127,5172,5217,5364,7305 'allow':7973 'alreadi':1750,3664,5406,6381,7594 'also':1403,3421,3853,4541,7520 'altern':1610,2245,2251,3381,6239 'alway':3967,5333,6747,7265,7958,8089 'always-on':7264 'ambiti':3074 'analysi':7118,7915 'analyt':4999 'anim':2971 'annot':6358 'answer':811,4922,5739 'anti':3925 'anti-skip':3924 'anyon':7532 'anyth':1333,2142,2591 'anywher':8002 'api':734,771,1107,1115,1551,1952,2030,2314,2848,2893,4282,4339,4394,4402,4516,4627,6176,6806,8154 'api/cli':1301,6645 'api/cli/sdk':4264,6499 'api/service':1958 'app':1028,2935,4868 'appear':2019,7122 'append':6948,7004,7050,7946,8080,8115 'appendix':5035 'appli':543,3759,3965,5795,5867 'applic':1936,6691,7888,8239 'approach':2607,3027,3382,5445,5874,5915 'approv':5801,6216 'archetyp':2190 'architectur':4601,4624,4640,6946,7187,7854,8147 'area':1540 'argu':5823,5921 'argument':1963,5786,5846 'arm/x86':4849 'arriv':924 'artifact':1401 'as-i':4664 'ask':2050,2055,3246,3422,3578,3854,4919,6047,6087,6243 'askuserquest':1592,1759,2197,2506,2700,2833,3052,3335,3606,3821,3878,4253,4409,4568,4690,4756,4871,4948,5029,5097,5160,5808,6051,6065,6199,6226,6413,6724,8237 'assess':1296,2081 'assum':2389,6244 'assumpt':5433 'attempt':1171,3527,3613 'attribut':7037 'audienc':2184 'audit':1327,2469,3594,5013,6994,7108 'audit-trail-on':7107 'auth':147,159,688,2317,5596,5600,5604 'auth/credential':4158 'authent':5610 'auto':1932,5745,6972 'auto-detect':1931 'auto-incorpor':5744 'auto-sc':6971 'autocomplet':4807 'autom':4746 'automat':7263 'autoplan':7065,7098 'autoplan-voic':7097 'avail':145,4559,5146,5154,5158,5493,5638,6700 'awar':963 'b':1657,2244,2536,2733,2898,3095,3380,3642,5235,5244,5250,5838,5855,5870,5912,6479,8247,8346 'back':324,560,5629,7318 'backend':2310,7253 'backend-on':7252 'backward':4720 'bar':526,910 'base':105,200,330,358,1353,1782,2122,2191,2219,3157 'baselin':1222 'basenam':1460,1841 'baserefnam':213,215 'bash':40,117,1343,1449,1828,4012,5147,5368,5494,5559,5939,6762,6867,7418 'batch':3347,6415 'becom':2563,2768 'beginn':4651 'behavior':3846,4369 'behind':1640 'benchmark':13,1201,1291,2588,2645,2658,2662,2705,2770,4084,6018,6080,6302,6304,8225,8295,8297 'best':867,1127,2633,3429,3861,8313 'best-in-class':866,1126,3428,3860,8312 'better':466 'beyond':3077 'big':7220 'bill':4946 'blast':4553,4724 'blind':5189,5213 'block':3139,3899,5590,6471,6605,7380 'boil':1763 'boomerang':5017,7745,8199 'bootstrap':4159 'bore':1039 'bother':7208 'bottom':1746 'boundari':5338 'branch':106,181,190,201,246,264,331,351,359,1372,1471,1486,1493,1599,1783,1852,1867,1874,5284 'branch-design':1492,1873 'break':793,1025,3974,4723,4743,6681 'broken':1166 'browser':2875 'brutal':5177,5396 'budget':4214 'bug':3183,5007,7233 'build':710,904,1768,2119,2275,2880,5477,6482 'bulletproof':33,3110 'bundl':844,2306 'button':1109,4675,5011 'c':38,2250,2292,2546,2745,2941,3127,3383,3649,5526,5533,5879,6481,8255,8347 'cach':5541 'calibr':1121 'call':589,4144,4329,6066,6177 'cancel':1926 'captur':1637,7028 'card':586,937,2367,4141,6267,6270,6703 'care':2295 'case':823,1094,1103,4353,4373,6670 'cat':5560 'catch':5195,5211 'categori':2613,2628 'caus':674,953,6444,6641 'cc':2887,2927,2963,2999 'center':4619 'ceo':5289,6886,7153,7211,7369,7614,7833,7930 'chain':8124 'challeng':1607,5110,5180,7280 'champion':1210,2724 'champion/competitive/needs':6529 'champion/competitive/needswork/redflag':6849 'chang':479,1643,2730,4744,5737,5797,5869,6219,6682,7222,7249,7260,8063 'changelog':1030,6705 'changelog.md':1396 'channel':4915,6715 'characterist':755,756 'check':143,1448,1574,1827,2172,2175,2181,3314,3999,4004,5081,5144,7003,7129,7404,7541 'checklist':5040,5060,5077,6609,6612 'chef':533,536,899,901 'chef-for-chef':898 'choic':2667,3828 'choos':1695,5205,5835,5911 'chosen':2766,3030,4177,4195,4225,6322 'ci':4816 'ci/cd':4810,6694 'clariti':2319 'class':869,1129,1440,3431,3863,8315 'classif':2048 'claud':1991,1996,5036,5048,5073,5356,5632,5668,5986,7274,7320,7909 'claude.md':1374 'claude/skills':5351 'clean':5972,7350 'cleanup':5990,7238 'clear':786,1029,2342,4550,4753,4941,7068,7078,7089,7092,7151,7169,7331,7358,7397,7928,7932,7941 'cli':144,278,408,855,1422,1552,1960,1965,2064,2630,2917,3114,3273,8161 'cli/playground':4359 'click':576,4118 'cliff':610 'clis':2031 'clock':925 'clone':2328 'close':2744 'closest':2621,2702 'code':478,620,678,714,858,1992,1997,2337,3588,3944,4504,4521,4657,4910,5037,5049,5074,5357,5390,6564,7001,7188 'code-level':7000 'codebas':4475 'codemod':1033,4745,6686 'codex':5149,5153,5156,5492,5520,5524,5568,5575,5603,5607,5612,5620,5626,5636,5640,5947,5982,5984,5999,6905,6908,6976,7023,7278,7287,7323,7372,7762,7841,7889,7893,7901,7911 'codex-plan-review':5946,6907,7022 'codex-review':6904,6975,7761,7892 'cognit':884 'column':7782 'combin':6068 'come':8042 'command':177,279,347,1429,1961,2493,2903,2906,3242,4116,4126,4209,5518,5555,6623,6750 'commit':3193,5963,6824,6825,7425,7434,7446,7453,7465,7472,7484,7627,7664,7685,7717,7746 'communiti':805,873,1063,4879,4889,4914,6517,6714,6818 'compani':4146 'compar':2594,7436 'compat':1836,4721 'compel':5790,5849 'compet':6041 'competit':29,1218,1290,2586,2657,2660,2734,3069,4083,4184,6017,6079,6300,6527,6798,7714,8224,8293 'competitor':15,2622,2669,2677,2685,2703,3023,3740 'complain':1161 'complet':1042,1761,1771,1811,1820,2153,3923,4154,4277,4341,4662,5118,5165,5232,5380,5556,5852,6404,6854,7312,7795,7804 'complex':1102,4378,6454 'compliment':5485 'con':6452 'concept':518,719 'concret':2188,6440,8231 'concurr':8061 'condens':3929 'condit':5041 'config':6171,6757,6862,7199,7386 'configur':6697,7294 'confirm':2052 'confus':2453,3501,3531,3551,3621,3623,3640,4453,6350 'connect':6152 'consensus':7117 'consequ':6123 'consid':2037,6370,7486 'consist':785,4275,4319,4333 'console.error':1438 'constraint':2763 'construct':5263,5309,6003 'consum':7132 'contain':129,137,4858,5303,5367,5599,7815 'content':1410,1950,2463,5316,5319,8011,8046,8065 'context':624,680,999,1277,1282,1336,2240,2373,3165,3666,4668,5651,5730,5829,6031,6457,6566,7377,7569 'context-depend':3164 'continu':1739,1812,1916,5256,5681 'contribut':4938 'contributing.md':2331 'contributor':1769,2324 'convent':1377 'convers':2410,2877,4493,7518,7551,7568 'cook':534 'copi':618,2285,2900,4152,4614,4660,6660 'copy-past':617,2899,4151,4613,4659,6659 'core':2103 'correct':2067,2544,2557,4403,6299 'cost':1001,6453 'could':1733,3066 'count':64,76,81,7444,7451 'cover':155,167,826,3081,7186,8188 'coverag':4343,6549 'covered/gap':6552,6556,6559,6563,6567,6570 'creat':723,2933 'create-next-app':2932 'creation':346 'credibl':782,4701 'credit':585,936,4140,6702 'critic':3134,3651,3709,6043,6591,7618,7649,7651,7659,7669,7671,8287 'critiqu':6026 'cross':4843,5685,5713,5764,5810,5930,7115,7904 'cross-model':5684,5712,5763,5809,5929,7114,7903 'cross-platform':4842 'css':829 'curl':778,2315 'current':1259,1369,1380,2618,2635,2698,2710,2746,4534,5873,5914,6787,6789,7423,7440,7499,7709,7728 'custom':1072,1113 'd':72,2256,2755,2972,3388,3658,5884,8263 'dashboard':1010,1786,6852,6866,7125,7136,7403,7516,7600,8130 'data':2604,2852,2980,7112,7818 'date':5951,7460,7481 'day':2926,2962,6918,7339,7364 'debt':6418,6593 'debug':989,3261,3472,4419,4555 'decid':573,633,5762,5883 'decis':455,498,2109,5105,5306,6721,7230,7683,7694,7696,7919 'deep':3043,3054,5450 'deepest':2988 'default':189,263,640,965,3167,3173,3180,3188,4321,4327,5898,6656,6731,7179 'defaultbranchref':225 'defaultbranchref.name':227 'defer':6373,7626,7636,7637 'definit':5359 'delet':8110 'deliv':6631 'deliveri':2828,3031,4094,4173,6323,6536 'demo':588,2902 'depend':840,3166,5464,6469 'deploy':693,741,845,1976,2856,2970 'deprec':787,1034,4727,6684 'depth':1803 'describ':2259,3010 'descript':2237,2249,2255,2372,3782,6437 'description/keywords':2174 'design':16,407,1294,1446,1487,1494,1501,1502,1507,1514,1516,1519,1522,1527,1572,1578,1594,1626,1703,1825,1868,1875,1882,1883,1888,1895,1897,1900,1903,1908,2176,2779,4265,4395,5104,6807,6895,6898,6980,6990,6997,7102,7157,7239,7370,7675,7860,8155,8186,8301 'design-outside-voic':7101 'design-review-lit':6897,6996 'designed/missing':6534 'desir':865,4882 'detail':6459,7800 'detect':102,108,329,350,1779,1933,2045,2194,7399,7493,7536,8254 'determin':179 'dev':876,923,997,1005,1044,2300,2311,4346,4356,4681,4783,4918,4935,5002,6513,6815 'develop':6,11,362,369,376,384,413,437,506,508,541,595,654,750,1132,1139,1154,1160,1167,1286,1340,1393,1537,1547,1946,2009,2023,2138,2148,2151,2203,2211,2214,2228,2262,2369,2514,2568,2583,2616,2623,2631,2782,2791,2952,2977,3064,3170,3211,3278,3320,3444,3485,3511,3522,3612,3663,4068,4133,4431,4533,4587,4706,4764,4776,4835,5402,6010,6101,6142,6265,6285,6331,6349,6441,6579,7871,8183 'developer-fac':1339,1536,2008,2022,3169,8182 'devex':3,4027,6771,7699,7732 'devex-review':7731 'devop':2348 'didn':669 'diff':337,1349,1373,5285,6932,6949,7079,7093,7271,7282 'diff-scop':6931 'differ':2150,2154,2213,2216,3201,5126,5171,5216,5363,7304,7443,7610 'dimens':1180,3762,3859,4045,6491,7741,7743,7755,7758 'direct':5481,7813 'directori':1387,1445,6758 'disabl':7194 'disagr':5812 'disagre':5701 'disclosur':1092,4371,4650 'discov':799,983,3255,3450 'discover':4354 'dispatch':5642 'display':4038,6864,7133,7401,7455,7476,7503,7512,8126 'distinguish':6956,7012 'doc':583,626,933,959,1009,1386,1447,1517,1523,1528,1557,1562,1573,1579,1595,1627,1704,1826,1898,1904,1909,1982,2036,2177,2182,2284,2322,3113,3271,3586,3959,4318,4361,4524,4600,4625,4677,4809,6385,6643,6650,6657,6811 'docker':2653,2936,3308,3316,3327,4848 'document':470,1986,3384,4576,5291,6425,6506,6677,6713 'doesn':2017,2954 'doubt':6242 'downstream':524 'dri':4862 'drift':3198 'drop':1230,4347,5003 'drop-off':1229 'dry-run':4861 'dt':5955 'dx':27,31,36,497,502,546,550,754,888,981,1116,1400,1408,2098,2217,2587,2597,2661,2666,3046,3057,3061,3075,3096,3101,3128,3135,3174,3181,3189,3392,3405,3411,3681,3827,3847,3879,3892,3961,3969,3997,4007,4032,4041,4956,4974,5039,5068,5076,6060,6146,6238,6283,6301,6368,6390,6417,6485,6487,6520,6544,6547,6575,6592,6607,6610,6737,6830,7868,8143,8151,8178,8274,8276,8278 'dx-hall-of-fame.md':3799 'dx-relev':1407 'e':3007 'e.g':1261,2844,6159,6840,7929,8060,8352 'earlier':5707 'easi':797,1085,4829 'eaten':8055 'echo':73,95,1358,1483,1515,1520,1864,1896,1901,4029,5152,5155,5508 'ecosystem':4880,4896,4933 'edg':4352 'edit':3802,7975,8025,8058,8062 'editor':2897,4803 'effort':2913,5536,6137 'either':7341,8033 'elaps':7445 'element':4670 'elm':4492 'els':94,1304,1334,2143,3009 'email':4147 'empathi':453,941,1288,1314,2407,2518,6081,6286 'empti':5618 'empty/not':7887 'enabl':5538 'encount':2376,3280 'end':8010,8038,8084,8118,8190 'end-user-fac':8189 'endpoint':1953 'eng':6846,6890,6921,6941,7061,7143,7170,7175,7202,7332,7346,7353,7359,7384,7389,7655,7851,7931,7937,7947,8137,8164 'engag':2989 'engin':2289,2349,4299,4622 'enhanc':3176 'enough':3840,6458 'ensur':8045 'enterpris':157 'enthusiast':8290 'entir':1271,2404,4338,8022 'entri':77,6880,6912,7026,7042,7082,7105,7336,7430,7469,7475,7606,7789 'enumer':895 'env':2358,4851,6816 'environ':853,2883,4765,4792,6514 'equival':1391 'ergonom':1302,8162 'error':672,690,939,943,1011,1297,1430,1437,1439,1565,2343,3111,3331,3601,4417,4446,4469,4503,4528,5509,5583,5586,5627,5641,6387,6420,6502,6637,6809,8157 'error-rel':4445 'escap':643,961,970,6178,6561 'est':2695 'estim':2712 'eval':41,4013 'evalu':984,2201,2294,3993,4113,4314,4478,4542,4638,4719,4802,4907,4986 'ever':1672 'everi':34,334,557,671,809,942,964,993,1002,1798,2780,3082,3108,3639,3711,3882,3946,4322,4742,6072,6259,6636,6651,7268,7270,7579 'everyth':574,707,916,1303 'evid':457,2106,2121,2129,2162,2221,3228,3295,3373,3715,3750,3776,4079,4278,4441,4596,4779,6075 'evidence-ground':3227 'exact':4208,4496 'examin':5400 'exampl':1442,1563,1985,2264,2309,2316,2347,2815,2890,2930,2966,3002,4407,4616,4658,4923,6386,6662,6666,7058 'exceed':5320 'except':6746,7957 'exec':5525 'execut':1797,4303,5345 'exist':194,1385,1399,1406,1441,1529,1561,2390,3178,3951,4037,4688,4777,5926,5980,6382,6384,6706,6716,7407,7913,8079,8177,8303 'exit':2042,5516 'expand':8321 'expans':28,3062,3083,3175,3412,3848,3872,8275 'expansion/polish/triage':6542,6834 'expect':2155,2243,2386,4210,4294,4300 'experi':7,363,438,751,1383,2204,2515,2553,2617,2632,2865,3065,3238,3767,4060,6584,7872 'expert':4654 'explain':951,1187,3694,5088,5844 'explicit':5799,6372 'explor':10,1609,2894,4357 'extend':4936 'extra':6170 'extract':243,261 'f':59,238,256,5993 'face':1341,1538,2010,2024,3171,7226,8175,8184,8192 'fail':280,295,309,322,1051,5605,5674,8059 'failur':5597 'fall':323,392,1075,5628,7317 'fallback':273 'fame':1241,3790,4489 'far':4187 'fast':772,3141,4840 'fear':1022,4709 'feasibl':5186,5456 'featur':642,703,819,1631,2303,7227 'feedback':773,4841,4958,5005,5010,8367 'feel':728,2448,2580,2584 'fetch':341 'fewer':4221 'fi':93,99 'field':247,265,7049,7086,7435,7473,7611,7640,7777,7812 'fifth':1062 'fight':652,4420,6557 'file':50,61,68,1272,1368,1722,1788,2461,2573,3240,3286,3604,5271,5275,5347,6125,6761,7508,7524,7539,7548,7556,7564,7954,7965,7970,7981,7995,8005,8040,8071,8088,8100,8107 'files/lines':3891 'filesystem':5337 'final':3573 'find':742,801,2490,2601,3754,3982,4588,4641,4655,5423,5663,5693,5705,5788,5975,5979,6186,6197,6876,7628,7665,7686,7718,7747,7766,7767,7769,7770,7771,7772,7774,7781,7832,7840,7850,7859,7867,7876,8218 'findabl':796,4578,4881 'firebas':2651 'first':107,551,570,748,918,1170,1678,1758,2163,2418,2481,2847,2923,3483,3509,3520,3539,4121,4125,4494,5325,6147,6175,6290,6347,6624,8043 'first-person':2417,6289 'first-tim':3482,3508,3519,6346 'fit':4382 'five':571,919 'fix':665,675,956,1197,3184,3375,3379,3638,3801,3832,3850,3881,4198,4439,4499,5095,6139,6207,6229,6642,7234,7768,7773,7775,7902,8169 'fixed/ok/deferred':3453,3458,3464,3470,3475,3480 'fixtur':4869 'flag':1233,1962,3895,5709,6531,6589,6603 'flow':2318,3617,6120 'focus':1278,3130,5386,8180 'follow':1740,6049 'footer':1796 'forc':454,594,2108 'forens':7111 'format':1760,6052,8334 'found':1518,1524,1580,1596,1899,1905,1912,3344,3986,5817,5977,7573,7662,7667,8019,8104,8153 'founder':2274,4293,4611,6843 'frame':6093 'framework':1555,4565 'free':4137,6698 'fresh':5650 'friction':21,567,834,1153,2959,3216,3249,3292,3337,3342,3349,3368,3390,3434,3446,3732,4062,4100,4448,5012,6084,6163,6343,6551 'friction-point':3215 'front':4617 'frontend':2299 'frustrat':1144,6104 'full':1112,1802,2517,5565,5574,6992,7005,8294,8296,8300 'fulli':3194 'fundament':5443 'gain':6448 'gap':994,1146,1182,2742,3136,3770,3819,3883,3896,3905,3970,4185,5185,5430,6203,6211,6426,7619,7650,7652,7660,7670,7672,7864,7873,8159 'gate':1937,7184,7292,7327,7765,8246 'gather':458,1335,2105,2161 'gave':3575 'generat':7585 'gentl':607 'genuin':3826,3979,5652,6231 'get':121,404,602,1265,1299,1381,1411,1417,2431,2452,2614,2774,3116,3529,3615,3706,3720,3724,3765,4049,4058,4204,4992,5239,6118,6432,6495,6803,7272,7286,7421 'get-url':120 'getting-start':403,2430,6117 'gh':146,209,221 'git':110,118,175,271,282,296,310,336,338,340,342,1344,1348,1350,1461,1472,1842,1853,2327,5501,5513,5964,7447 'git-nat':174,270 'github':133,154,156,207,2326,4813 'github.com':130 'gitlab':138,141,166,233,4815 'give':1612,4330,5175 'given':1177 'glab':158,235,253 'global':7195,7393,7945,8142 'go':2857,3048,3059,4069,4235,4547 'goe':2792,4427,6275,6725 'gold':760,2813 'good':806,1138,3839,4393,4825,6583 'got':3566 'grace':2043 'gradual':790,4380 'grammar':4320 'grant':5462 'graphql':1955 'great':887,2781 'grep':1414,1425,1433,4024 'ground':3229,3581,6071,6258 'grpc':1956 'gt':82 'guessabl':4316,6648 'gui':856 'guid':406,1032,1413,1983,2973,4150,4736,4939,6680 'h':5956 'hack':6128 'hall':1239,3788,4487 'hand':2340 'hand-hold':2339 'handl':691,1751,2596,5584,6388,8158,8267 'happen':3560,4434 'hard':1089,3094,3300,5193 'hash':7426 'hasn':6247 'hatch':644,962,971,6179,6562 'hate':1064 'head':1354,1359,1479,1498,1511,1860,1879,1892,2482,2485,3600,5969,7414,7424,7441,7454,7500,8036 'header':5670 'health':4897 'heard':4238 'held':650 'hello':579,681,930,986,1204,2939,3257,3399,3460,4073,4930,6615,6673,8311 'hello-world':929,2938 'help':409,802,1423,1427,3115,3274,3580,4511 'hierarchi':1280 'high':2914,5537 'higher':528,912,1216 'highest':1320,2876 'highest-leverag':1319 'hit':3731,6110 'hold':2341 'hold/reduction':7645 'home':52 'home/.vibestack':53 'homepag':2969 'honest':5178,5397 'host':111,170,1977,2882,7553 'hot':4836 'hour':2889,2965,3001 'http':1048,4350 'human':2884,2924,2960,2996 'hypothet':2471,3596 'ideal':4203 'idempot':4367 'identifi':948,2074,2144,2816,3291 'ignor':5378,6911 'impact':1209,2915,6140,6596 'implement':483,2575,4960,6329,6608,6611,7935,8197,8258 'implic':8148 'import':1970,5340 'improv':493,2753,3076,4973,6369 'includ':3512,3995,4824,4968,5047,6008,6261,6689,8119 'incorpor':2556,5746 'increment':591 'independ':5108,5121,5179,5208,5653,7299,7845 'individu':3089,3251,3874,6412 'infer':1944,2230,2233,7744,7759,7760 'influenc':2087 'inform':4639,5595 'infra':2352,3945,7236,7255 'infrastructur':1978 'initi':2080,6777,7678,7688,7702,7720 'inlin':1700,4808 'input':1617,1675 'insid':5197 'instal':766,985,1395,1421,1969,2492,2872,2922,3256,3297,3322,3356,3360,3366,3397,3455,4114,4136,6620,8310 'install/hello':4098 'instant':733,2789 'instead':2041,2134,4734,5422 'instruct':355,1742,1809,3367,5339 'instrument':4997 'integr':988,2279,2298,2312,4774,4804 'intellisens':4826 'interact':5,2356,2869,3005,3226,4669,4819 'interfac':4273,4385 'intern':891,4564 'interrog':1311,2140 'intuit':770,4274 'invest':4894 'investig':452,2099,5880 'involv':512 'issu':2332,3371,3888,3985,4256,4412,4571,4693,4759,4874,4951,5032,5467,5976,6063,6070,6127,6189,6606,7368,7661,7666,7668,8144,8163,8337 'item':5083,5087,5100,6361 'iter':704 'job':421,429,486,5415 'journey':509,979,3212,3222,3233,3354,3441,3494,4998,6332,6335,8305 'js':794 'json':212,224,239,257,4518 'jsonl':7605,7788,7811 'judgment':7216,7244 'junior':861 'keep':1276,5871 'key':776 'know':2208,3665,4432 'l':66 'label':4510,6839,7055,8348 'lake':1765 'land':2722,6220,6936 'languag':1060,2171,4805,6429 'larg':7281 'last':1776,7139,8095 'latenc':4363 'later':1689,2754,5889 'law':556 'leader':889 'learn':49,60,63,67,74,75,80,96,612,721,2335,4577,4579,4593,4607,6553 'leav':1006,4249 'left':1716 'legaci':6978,7474 'let':636,2257,2542,3643 'letter':8342,8351 'level':2157,7002 'leverag':1321 'lib/snippets/capture-learnings.md':8120 'lib/snippets/prior-learnings.md':3996 'lib/snippets/tasks-section-emit.md':6262 'librari':1554,1972,2033 'library/sdk':1974 'licens':4913 'lie':685 'like':729,1192,2819 'limit':88,2321,4366,4726 'line':712,2236,2248,2254,3155,3288,5842,6377,6436,7284,7882,7898 'link':957,4505,6644 'linux':4846 'list':7450,7924 'lite':6900,6999,7007 'live':908,2858,7990,8215 'll':1650,1708,3072,3092,3106,5866,8266 'load':78,1247,1735,1806,2805,3787,4104,4305,4457,4629,4710,4793,4898,4977,5069 'local':2921,4782,4834,4850 'locat':4497,8113 'log':339,1345,3532,5944,6733,6767,6860,7591,7609 'logic':5184,5429,7330 'login':5601,5608 'longer':511 'longest':2991 'look':1191,5427,6249,7561 'lookup':1012 'loop':4959 'loos':649 'lose':1014 'lost':996 'lot':2345 'love':394 'low':2912 'ls':1488,1503,1869,1884 'm':2059,5954,5957 'mac':4845 'made':7684,7695 'magic':17,724,730,1292,2777,2786,2820,2839,2910,2946,2995,4090,4171,6318,6532,6568,6629,8299 'main':305,326,1355 'maintain':6709,8286 'make':383,432,476,745,1081,2329,3107,3425,3697,3857,3866 'manag':4857 'mani':2381,4161 'manual':8270 'map':1532,3223,3442,6144,6333,6336 'mariani':1080 'markdown':7821,7823 'master':319 'match':820,2522,4284,4386,4602,4678,7497,8027,8210 'matter':3648 'matur':3163 'max':8357 'maximum':500,3121 'may':1924,5783,7409,7461,7797,8012 'mcp':1995 'md':1495,1508,1876,1889 'mean':759,1123 'meaning':4129,6237,6627 'meant':5360 'measur':835,4957,4971,4991,5024,6521,6820,7740,7754,8234 'mechan':5006 'mental':2159,4289 'mention':1951,1959,1967,1975,1981,1987,2180 'merg':343,1352 'merge-bas':1351 'messag':940,1431,1566,2344,3112,3602,4418,4522,6421,6503,6638,7560 'metadata':6753 'method':1183,3678 'mid':8106 'mid-fil':8105 'might':3298,5732,5831 'migrat':992,1031,4699,4735,4747,6679 'min':1212,1221,1227,1235,2727,2738,2749,2929,6525,6526,6602 'mind':3015 'minor':1145 'minut':389,396,572,920,1019,1624,2278,2714,4078,4648,5203,5549,5617,6113,6255 'minutes/steps':2382 'miscalibr':5470 'miss':3809,3817,5091,5426,5463,5734,5833,6419,6427,7361,7644 'mktemp':5497 'mock':4831 'mode':26,1770,2357,3040,3151,3202,3394,3407,3413,3844,4556,4820,4839,4864,6541,6745,6794,6795,6832,7584,7620,7646,7647,7648,7663,7712,7956,7978,8271 'mode-specif':3843 'model':2160,4290,4544,5130,5140,5218,5228,5534,5686,5714,5765,5811,5931,7116,7306,7905 'modifi':5383 'moment':18,725,1293,2778,2787,2821,2840,2843,2867,4091,4172,6319,6533,6569,6630 'momentum':874 'money':779 'monitor':6719 'month':6468 'move':780,3841,3988,6190,8108,8369 'mr':236 'much':1615 'multi':5411 'multi-sect':5410 'multipl':513,2072,3348,6069 'must':3713,3992,5793 'mvp':2276 'n':1513,1894,3653,3654,5392,6114,6779,6782,6805,6808,6810,6812,6814,6817,6819,6821,6823,7464 'name':332,352,3024,3741,4315,6646 'narrat':1289,1315,2408,2420,2519,2560,2562,6082,6287,6292 'nativ':176,272 'necessari':628 'need':655,830,966,1223,2206,2218,2338,3146,4591,4612,4623,4644,6168,6214,7295,7778 'neither':171 'neutral':5727 'never':593,630,792,1305,3928,4237,6067,6086,6414,6729,7326,7379 'new':517,922,1436,3168,6970,7223 'newmethod':4733 'next':659,1679,1815,2934,3546,5259,8035,8121,8132,8244,8268 'next.js':841 'nice':3909 'nice-to-hav':3908 'no-branch':1484,1865 'nois':4566 'nomatch':1452,1831 'non':2355,4818,5589 'non-block':5588 'non-interact':2354,4817 'none':97,1920,2000 'normal':1683 'notabl':2665 'note':2082,4048,5328,5694,5927,6727,7096,7456,7477,7506 'noth':3313,3333 'notic':915,4730 'npm':1968 'nps':5009 'npx':2931 'number':3289,8336,8350 'nyou':5393 'o':1451,1830 'observability/testability':4860 'obsess':921 'obvious':6206 'offer':1569,1581,1688,1793,2092,5119,7307 'offlin':4368 'often':8145 'oh':2800 'old':8112 'older':6915 'omit':7883 'onboard':373,416,2606,2624,3006 'one':562,575,605,775,777,847,2904,3154,3339,3352,3647,3652,4115,4117,4245,4406,5139,5227,5825,5841,6062,6064,6150,6376,6435,6622,7897,7969,8355 'one-lin':3153,5840,6375,6434,7896 'onelin':1346 'onto':374 'open':2477,4908,4911,7367 'opinion':380,639,648,5123,5210,6560,7847 'opt':3086,3876,8284 'opt-in':3085,3875,8283 'option':1644,2090,2830,3051,4302,5111,5237,5857,6134,6474,7213,7241,7298,8240,8344,8359 'origin':123 'origin/main':301 'origin/master':315 'os':4855 'oss':2323 'otherwis':142 'output':445,460,1322,2566,2911,3244,4130,4157,4211,4558,4866,5248,5566,5576,5683,6264,6628,6875,7419,7519,7592 'outsid':5106,5168,5241,5253,5572,5592,5666,5678,5691,5699,5720,5747,5821,5861,5877,5906,6005,6023,7015,7029,7103,7164,7296,8329 'overal':6543,6780,7680,7691,7704,7723,7735,7749 'overcomplex':5439 'overlap':7914 'overrid':638,968 'p1':7291 'packag':1973,4856 'package.json':1389,2173,3272 'pain':945,6094,6442 'param':4523 'paramet':4323,6652 'parent':1754 'parenthes':7057 'pars':299,313,1464,1475,1845,1856,5504,5967,6873,7412,7603 'part':606,7985 'pass':1246,1260,1262,2124,2772,2807,3038,3518,3794,3918,3935,3947,3962,3978,4003,4056,4108,4262,4309,4415,4461,4574,4633,4696,4714,4762,4797,4877,4902,4954,4981,5056,6402,6573,6801,7172,8318,8325,8362,8376 'passiv':2951 'past':619,2901,4153,4615,4661,6661 'path':2433,2475,3267,3361,3605,4470,4529,4700,6424,6510,6676,7557 'pattern':885,1432,3748,4335,5063,6391 'paus':8363 'pay':8226 'peopl':523 'per':1630,1634,3336,3341,4215,4255,4411,4570,4692,4758,4873,4950,5031,8358 'per-featur':1629 'per-product':1633 'perform':7191 'period':5014 'permiss':4912,5779 'permission/sandbox/safety':4543 'persist':5936,6740 'person':2419,4495,6291 'persona':12,1287,1310,2089,2139,2189,2231,2234,2246,2252,2263,2366,2370,2401,2423,2456,2513,2862,3020,3325,3489,3524,3611,3728,3867,4232,4261,4285,4381,4388,4399,4603,4787,6011,6078,6097,6106,6167,6266,6269,6796,6797,6835,7713 'perspect':2425,2569,3505,5726,6099 'pick':1651,1709,2268,3645,6463 'pit':1067 'place':8090 'plan':2,8,364,427,434,467,473,495,1367,1370,1543,1787,1794,1942,2005,2016,2028,2066,2572,2699,2708,3080,3099,3144,3159,3377,3633,3685,3804,3940,4026,4183,4473,4893,4967,5016,5027,5109,5134,5183,5222,5265,5270,5290,5315,5318,5329,5403,5490,5570,5657,5752,5948,6028,6223,6281,6394,6488,6576,6744,6770,6885,6889,6894,6909,6940,6944,6951,6989,7024,7060,7069,7090,7300,7345,7507,7523,7535,7538,7547,7555,7563,7583,7613,7654,7674,7698,7953,7955,7964,7977,7980,7988,7994,8070,8087,8099,8200 'plan-ceo-review':6884,7612 'plan-design-review':6893,6988,7673 'plan-devex-review':1,4025,6769,7697 'plan-eng-review':6888,6939,7059,7344,7653 'plan-stag':6943 'platform':103,112,131,139,152,164,276,1556,1780,1980,2034,2288,4298,4621,4844,6845 'platform-eng':6844 'playground':615,4671 'playground/sandbox':2870 'plugin/extension':4932 'point':22,3217,3250,3293,3338,3343,3350,3369,3435,3447,3641,3733,4101,4449,4454,5278,5696,5756,5806,5925,6344 'polici':4754 'polish':32,3097,3182,3406,3880,8277 'poor':1159 'post':5298,6315 'post-review':6314 'postur':8289 'potenti':6407 'pr':210 'pr/mr':183,193,345 'practic':1078,2634 'pre':1324,2467,3592,6935 'pre-land':6934 'pre-review':1323,2466,3591 'preambl':39,1756,6055 'precis':2133 'predict':784 'prefer':854 'premis':1606 'prerequisit':1567,1583,1791,4120,6473 'present':2187,2827,3049,3871,5563,5662,5689,5724,5753,5771,6131,6405,7785 'preserv':8053 'pressur':1283 'price':872,4942 'primari':2076,2227,4508 'princip':863 'principl':547,552,1762,2104,6148,6158,6548 'print':327,1576,5251 'prior':4006,4031,4035,4043,4046,6493,7807 'prioriti':1279 'problem':673,698,818,950,1604,4392,5488,6640,8156 'proceed':1586,1659,1682,1927,1939,2396,2532,3206,3670,5246,6193 'process':448,450,4940,5997 'produc':435,1601,1922,2364,2655,2908,3438,4127,6626,6735,7819 'product':905,1027,1097,1195,1342,1548,1635,1934,1947,2069,2084,2195,2266,2612,2627,2694,2824,2836,3162,3172,3179,3528,3785,4376,5045,6312,6538,6783,7706,7737,8216 'product/business':7221 'production-readi':1096,4375 'progress':1091,4370,4649 'project':1376,2987,4011,6760 'promin':3387 'prompt':5267,5311,5371,5655,5659,6007,7258 'prompt-on':7257 'propos':3073,7622,7630,7631 'pros':6445 'protocol':1773 'proven':5062 'provid':7554 'provis':1979 'proxi':4859 'push':739,3093,8281 'push-to-deploy':738 'pv':5496,5545,5562,5995 'pwd':1470,1851 'q':214,226 'qualiti':1298,7189 'question':810,3090,3218,3340,3353,4920,6048,6073,6089,6260 'quick':519,1419,4148,8272 'radius':4554,4725 'ramp':608 'ran':5985,5989,7895 'rank':6528 'rate':2320,3677,3683,3712,3764,3813,4063,4268,4365,4422,4582,4702,4769,4883,4962,8371 'rational':6378 'rave':1133,3868 'raw':4349 're':1687,1822,3812,5920,6040,6257,7488,8067 're-argu':5919 're-ground':6256 're-off':1686 're-rat':3811 're-read':8066 're-run':1821,7487 'react':808 'react/vue/svelte':2308 'read':582,1253,1269,1365,1530,1718,1727,1913,1940,2060,2164,2283,2577,3268,3795,4021,4106,4307,4459,4631,4712,4795,4900,4979,5071,5268,5299,5343,5531,5557,6857,6872,7533,7588,8068 'read-on':5530 'readi':1098,1706,1785,4377,5018,6851,7135,7515,7599,7933,8129,8256 'readm':1415,2287,2479,3270,3306,3363,3599 'readme.md':1378,2165 'readme/docs':2223,2436 'readme/plan':2697 'real':687,689,692,817,2460,2602,2804,2851,3259,3466,3516,4156,4667,4925,6668 'real-world':4924 'realist':2760 'realiti':2523,5025,8209 'reason':871,3021,3156,3954,5535,5843 'recal':3751,4080,4279,4442,4597,4780 'recent':6879,6928,6965,6986,7021,7041 'recommend':558,3016,3123,3150,4257,4413,4572,4694,4760,4875,4952,5033,5112,5204,5243,5749,5834,5864,6154,7217,7245,8131,8134,8194,8331,8332 'red':1232 'reduc':833 'ref':285,1478,1859 'refactor':7235 'refer':625,1242,2459,2644,3284,3597,3714,3752,3791,4081,4105,4259,4306,4443,4458,4628,4630,4686,4711,4794,4899,4978,5070,6076,7565,8273 'refin':4961 'refs/remotes/origin':291 'refs/remotes/origin/head':286 'regardless':3938 'reject':5875 'relat':4447 'relev':1249,1409,2272,3796 'reliability/trust':4362 'reliabl':783 'reload':4837 'remot':115,119 'repeat':5419 'replac':3219,8020 'repo':187,222,254,5499,5514,5527 'report':1790,3502,3523,3624,5008,6351,6354,7510,7587,7826,7983,8000,8031,8050 'repositori':5389 'reproduc':4852 'requir':515,646,1971,2565,2728,2879,2920,2948,3307,3386,5102,6263,6330,6704,7142,7177,7817,7856,7949,8245 'resolut':6345 'resolv':3437,3830 'resolved/deferred':3452,3457,3463,3469,3474,3479 'respond':2363,2399,3209,3673 'respons':708,735,2849,5619,5623,5895 'rest':1954,3404,3657 'result':197,4332,5938,6743 'retent':6450 'retri':4364,8073 'return':5621 'reus':6396 'rev':298,312,1463,1474,1844,1855,5503,5966,7449 'rev-list':7448 'rev-pars':297,311,1462,1473,1843,1854,5502,5965 'reveal':4379 'review':4,9,365,491,1245,1325,1614,1654,1662,1669,1712,1784,1789,1918,1930,2027,2123,2405,2468,3047,3058,3126,3593,3915,3934,4002,4008,4020,4028,4033,4036,4044,5015,5115,5143,5162,5199,5231,5266,5273,5280,5399,5413,5421,5437,5447,5459,5571,5658,5704,5717,5816,5934,5943,5949,6061,6316,6401,6489,6732,6742,6752,6766,6772,6850,6856,6859,6871,6887,6891,6892,6896,6899,6903,6906,6910,6922,6930,6937,6942,6947,6969,6977,6981,6991,6998,7025,7062,7072,7134,7137,7144,7154,7158,7171,7173,7176,7182,7203,7212,7240,7262,7269,7289,7301,7310,7333,7342,7347,7354,7360,7373,7385,7390,7408,7429,7458,7467,7479,7496,7509,7514,7527,7580,7590,7598,7615,7656,7676,7700,7733,7763,7792,7808,7825,7827,7834,7842,7844,7852,7861,7869,7894,7912,7922,7925,7938,7948,7982,7999,8030,8123,8128,8133,8138,8152,8165,8179,8187 'richer':7799 'rico':1079 'right':487,1083,1655,1713,3104,5474 'rigor':501,3122,8291 'risk':5187,5457,6456 'rm':5992 'role':852 'roleplay':3486,3608,6353 'root':5500,5528 'rout':843 'row':6923,6960,7017 'rubric':1118 'rule':3710,3927,6044,6058,8335 'run':1646,1698,1757,1775,1823,2495,2608,2937,3311,4122,4863,5043,5606,5991,6625,6748,7138,7140,7489,7581,7830,7838,7848,7857,7865,7874,7959,8211,8242,8248,8259 'runnabl':4927 'rust':4502 'said':5718,8201 'sale':934,4143 'sampl':1444,4867 'sandbox':616,4672 'sandbox/playground':4131 'satisfact':6451 'save':836,1110,1111 'say':356,1587,1697,3364,3838,3983,5569,5722 'scale':824,977,991,6973 'scan':1402 'scannabl':8378 'scope':3102,3119,3160,5286,5305,6366,6933,7229,7621,7623,7625,7629,7632,7635,7639,7836,8253,8280 'score':24,425,442,1117,1122,1186,2101,2111,2114,2131,2590,3037,3901,3912,4047,5055,6317,6492,6778,6781,6802,7679,7681,7687,7689,7692,7703,7705,7719,7721,7724,7736,7748,7750 'scorecard':6486,6490,6738,6831 'scratch':2057 'script':4748,5369 'scroll':2487 'scrutini':5438 'sdk':1041,1054,1553,2629,6428 'sdks':401,2032 'search':807,1404,1766,2610,2641,5540,6710,7992 'second':5122,5209 'secondari':4509 'section':1250,1256,1749,1800,2567,2809,3682,3797,3916,4110,4311,4463,4512,4635,4716,4799,4904,4983,5078,5116,5163,5260,5412,5708,6183,6284,6367,6383,7311,7415,7576,8001,8051,8078,8096 'secur':788 'security/slas/ci':2297 'sed':289 'see':2442,2498,2845,3329,3542,4405,4535,4540,4652,5455 'select':3041,3192 'self':169 'self-host':168 'semant':4751 'sensibl':4326,6655 'sentenc':5826,6151,8356 'sequenc':4206,5466 'seri':2291 'server':4806 'session':419,1692,4247 'set':767,2350,7200,7210 'setopt':1450,1829 'setup':2950,4784 'seven':753 'shape':2402 'sharper':1616,1674 'ship':400,3148,3187,7075,7185,7328,7381,8262 'short':5968,6838 'shortcut':3885 'show':677,686,954,1466,1847,2500,2944,4155,4530,5506,6667,6924,6961,6982,7018,7066,7076,7087,7391 'show-toplevel':1465,1846,5505 'shown':7375 'signal':2185,5137,5225,5770 'signific':1228 'silent':3197,6730,7577 'simpl':764,1093,4372,4653 'simpler':5444 'simplest':4328 'simpli':1074 'simul':3515 'sinc':7466 'size':2307,5332 'skill':463,538,1568,1584,1721,1755,1792,1807,1989,1998,3950,5038,5050,5075,5358,5945,6768,6883,7045,7457,7478,7608 'skill-plan-devex-review' 'skill.md':1988 'skip':1306,1658,1665,1731,1737,1747,3391,3402,3655,3904,3926,3932,5245,5252,6225,6480,7201,7231,7250,7352,7383,7392,7574,7944,8141,8264,8298,8304,8333 'slug':47,55,1456,1491,1506,1837,1872,1887 'solid':6578 'solo':2273,4292,4610,6842 'solo-found':6841 'solv':694,816 'someon':4921,6461 'someth':3008,4426 'soon':3149 'sourc':2668,4909,5961,5962,5981,7036 'source-timurgaleev' 'sovereignti':5741 'spec':3943 'special':6696 'specif':1642,2438,2729,2741,2842,3285,3330,3370,3378,3598,3753,3781,3818,3845,3890,4468,6122,6157,6320,6595 'specifi':4207 'speed':700,705 'spot':5190,5214 'sql':2896 'ssr':842 'stack':4560 'stage':3234,3254,3283,3355,3401,3410,3416,3420,3427,3443,6945,8307,8309 'stale':7362,7398,7411,7463,7492,7505 'stand':5916 'standard':761,1661,1668,1929,2814,8324 'start':405,482,578,926,1266,1300,1382,1412,1418,1420,2432,2615,2775,3117,3530,3616,3721,3725,3766,4001,4050,4059,4149,4205,4993,5334,6119,6496,6804 'starter':2411 'stat':1361 'state':2046,3574,5728,5784,6187 'statement':1605 'static':3221 'status':148,160,1772,1795,3448,5959,5960,5971,6775,6776,6954,7010,7054,7141,7349,7528,7616,7657,7677,7701,7734,7764,7831,7839,7849,7858,7866,7875,7991 'stay':5385 'stderr':5558,5598 'step':100,205,592,1284,1307,1329,1777,1816,2094,2096,2115,2716,2982,2984,3302,3717,3737,3756,3920,4162,4216,4219,4738,4740,5295,6013,6020,6172,6272,6294,6307,6326,6338,6356,7601,8122,8269 'step-by-step':2981,4737 'still':3816,6209,6213 'stop':2393,2555,2764,3028,3203,3667,4252,4408,4567,4689,4755,4870,4947,5028,5096 'store':7452 'strateg':5469 'strategi':3942,3958,4750,7837 'stripe':731,774,2646,2891,3003,4228,4515 'stripe/vercel':1130,2731 'strong':647,804,5769 'stronger':5136,5224 'structur':1388,1603,3500,4517,5212,7288 'struggl':414 'stuck':3567 'student':2334 'style':4608 'subag':5634,5648,5654,5669,5673,5988,7276,7321 'subsequ':204,335 'substant':5804 'substitut':348,5312,5970,6826 'succeed':151,163,217,229,249,267,3569,3577 'success':1069 'suffer':1163 'suffici':631 'suggest':4498,5093,8170 'summar':5582 'summari':7805,7899 'supabas':2895 'support':4822,4828 'surfac':1539,2011,2025,4283,4340,8185 'surgic':3142,8292 'surpris':3549,4945 'surviv':5435 'swiftui':1108 'switch':1000 'symbol':284 'symbolic-ref':283 'system':600,1326,4484,5128,5173,5365,7559 'sz':5958 't0':569,6165 'tabl':2659,2706,6305,7822,7879 'tailwind':825 'take':1621,5200 'talk':440 'target':184,245,2147,2261,2368,4087,4193,4217,6617,6791,6793,7711,7730,8205,8232 'task':718 'tech':870 'technic':5398 'telemetri':1774 'tell':2012,2756,3318 'templat':1990,2333,5372 'tension':5687,5715,5755,5805,5924,5932 'termin':1964,2905,4246,4251 'terraform/docker':2353 'territori':2732 'ters':5483 'test':2330,4229,4396,4827,4832,7190,7742,7756,7757,7855 'text':410,1424 'thing':749,1084,1088,4296,4304,5475 'think':890,1639,2225,2511,4389 'thorough':2293,5142,5230 'thought':1176 'three':25,2609,3050,4482 'three-tier':4481 'throw':1435 'tier':1131,1206,2725,2735,2767,4088,4138,4194,4483,4490,4500,4513,6699,6799,6800,6847,7174,7715 'tighten':6180 'time':709,711,837,1003,1202,1207,1680,2625,2671,2679,2687,2798,2993,3484,3510,3517,3521,3747,4213,4224,4976,4994,5377,5613,5676,6348,6613 'time-to-mag':2992 'timeout':5550,5551,5611 'timestamp':3513,5950,6773,6774,6914 'tmperr':5495,5544,5561,5994 'today':2516 'todo':6408,6431 'todos.md':5887,6397,6478 'toler':882,1155,2156,2241,2280,2379 'took':5460 'tool':377,387,514,542,1008,1728,1966,2065,2378,2595,2663,2783,2918,4766,5145,5646,8026 'tool.configure':4301 'tool.do':4295 'top':1744,6278 'topic':5716,5814 'topic-agent-skills' 'topic-ai-agents' 'topic-claude-code' 'topic-cursor-ide' 'topic-developer-tools' 'topic-kiro' 'topic-mcp' 'topic-prompt-engineering' 'topic-slash-commands' 'toplevel':1467,1848,5507 'total':7917 'touchpoint':35,3109 'toward':1198,3199 'toy':1101 'tr':71,1482,1863 'trace':20,559,2472,3213,3235,3264,3358,3396,3408,3414,3495,3886,4466,4561,6085 'track':3034,4988,7485 'tradeoff':2832 'trail':7109 'trajectori':2747 'transpar':4943 'trend':3998,4040,4042,6494 'tri':1676,2392,2445,2873,3558,4134,4167,4673 'triag':37,3129,3190,3393,3893,8279 'trigger':7828 'trivial':6232 'true':92,1455,1834,4017,5940,6763,6868,7204,7356,7388 'truncat':5322,5330,5580 'trust':973 'tthw':1200,1295,2603,2648,2664,2704,2711,4190,4987,6524,6600,6786,6788,6790,6792,7708,7710,7726,7727,7729,7739,7752,7753,8202 'tutori':1984,2974,4507,4684 'two':5129,5215 'type':1545,1935,1948,2073,2077,2085,2196,2267,2305,2825,2837,3941,4520,4823,5046,6539,6540,6688,6784,6785,7707,7738 'typescript':789,2304,4821,6687 'typic':4791 'u':5952 'ui':8176,8193,8252 'ui/ux':7248,7863 'unansw':6726 'unauthor':5602 'unavail':2640,2642,5680,7325 'uncertainti':653,4421,6558 'uncheck':5086 'understand':516,597,2535,2592 'unknown':48,56,172,275 'unread':1730 'unrealist':3661 'unresolv':6720,6822,7617,7658,7682,7716,7916,7918 'unspecifi':6422 'unstat':5432 'updat':3440,6296,6309,6340,6398,7521 'upgrad':990,1021,1036,3262,3477,4698,4707,6423,6509,6675,6813 'urgent':3186 'url':116,122,128,136,4525 'url/source':2676,2684,2692 'usabl':418,763,4266 'usag':1428,3260,3467 'use':173,195,218,230,250,268,304,318,769,815,822,879,1104,1141,1725,2127,2454,2598,2643,3025,3487,4267,4331,4400,4562,4683,4732,5159,5546,5807,6001,6035,6198,6669,7214,7242,7798,7809,8023,8236 'user':903,1590,1923,2014,2179,2362,2398,2504,3208,3672,3837,5277,5740,5759,5761,5800,5893,5910,6215,6246,6298,6756,7225,8174,8191 'user-fac':7224,8173 'util':4833 'ux':504 'v':5519 'valid':8167 'valu':603,6827 'valuabl':832,4767 'var':2359 'vehicl':2829,3032,4095,4176,6324,6537,6633 'verbatim':5567,5577 'verbos':4557,4865 'vercel':736,875,2649,2967 'verdict':7168,7329,7395,7923 'verifi':300,314,8302 'version':4676,4680,4749,4752 'versus':391 'via':1591,2505,3088,5643,6535,6632,7048,7064,7070,7074,7080,7085 'vibe':2136,4019,5942,6765,6870,7198 'vibe-config':7197 'vibe-review-log':5941,6764 'vibe-review-read':4018,6869 'vibestack':51,5065,7824,7998,8029 'video/gif':2942 'view':211,223,237,255 'violat':6161 'visibl':4128,7530 'vision':5308 'visual':6993 'voic':5107,5169,5242,5254,5573,5593,5667,5679,5692,5700,5721,5748,5822,5862,5878,5907,6006,6024,7016,7030,7099,7104,7165,7297,8330 'vs':857,4536,4685,5026 'wait':5890,8365 'walk':2426 'walkthrough':2943,3230 'want':877,1071,1673,2720,4165,5166 'warn':1035,4728,6685 'wast':5375 'watch':412,2854,2953,4838 'way':2549,4969 'wc':65 'web':5539 'webhook':1957 'websearch':2599,2638 'weed':5453 'week':2886,2998 'well':2675,2683,2691 'whatev':3276 'when/why':2374 'wherev':353 'whether':660 'whichev':6925,6962,6983,8041 'whole':599,980 'win':1077 'window':4847,6252 'within':803,7337 'without':581,932,1143,2947,3326,4248,4317,4360,4708,5798,6649,6695,7083,7470 'won':2281 'word':2416 'work':622,662,850,859,1055,1150,1224,1619,3704,4170,4243,4663,4785,4811,4853,6665,6692,6711 'work/red':6530 'workaround':6130 'workflow':4778 'world':580,682,931,987,1205,2940,3258,3400,3461,4074,4099,4926,4931,6616,6674,8316 'worri':1667 'worth':439,838,2796 'would':727,3138,3279,3424,3696,3779,3856,3865,3898,5736,6102,6109,8203 'wow':2801 'wrapper':1049 'write':1045,2412,3498,4201,6751,7950,7961 'written':402,5293 'wrong':1087,2527,2541,3968,4428,4548 'x':1215,2713,2748,5719,5818 'x/10':5854 'y':2715,5723,5824,5953 'y/10':5856 'year':2619,2636 'yes':7152 'yet':98 'z':1500,1881 'zero':566,2871,2958,3981,4061,4071,6162,6185,6550 'zsh':1835 '~10':1360","prices":[{"id":"58e5a909-d0a5-4ed4-9b74-a9e16dd89b69","listingId":"8b94b0ff-4c7e-4b00-b7ff-320ab4db46c7","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"timurgaleev","category":"vibestack","install_from":"skills.sh"},"createdAt":"2026-05-18T19:06:22.774Z"}],"sources":[{"listingId":"8b94b0ff-4c7e-4b00-b7ff-320ab4db46c7","source":"github","sourceId":"timurgaleev/vibestack/plan-devex-review","sourceUrl":"https://github.com/timurgaleev/vibestack/tree/main/skills/plan-devex-review","isPrimary":false,"firstSeenAt":"2026-05-18T19:06:22.774Z","lastSeenAt":"2026-05-18T19:06:22.774Z"}],"details":{"listingId":"8b94b0ff-4c7e-4b00-b7ff-320ab4db46c7","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"timurgaleev","slug":"plan-devex-review","github":{"repo":"timurgaleev/vibestack","stars":15,"topics":["agent-skills","ai-agents","claude-code","cursor-ide","developer-tools","kiro","mcp","prompt-engineering","slash-commands"],"license":"mit","html_url":"https://github.com/timurgaleev/vibestack","pushed_at":"2026-05-18T18:19:05Z","description":"vibestack is a portable skill pack for AI coding agents. Slash commands like /office-hours, /ship, /investigate, /tdd, /review install once and work across every agent that supports the Agent Skills open standard — Claude Code, Cursor, Kiro, and a growing list of others. ","skill_md_sha":"68c86bdd364eb1f3cd0cb1da2822f2eaa6d4252a","skill_md_path":"skills/plan-devex-review/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/timurgaleev/vibestack/tree/main/skills/plan-devex-review"},"layout":"multi","source":"github","category":"vibestack","frontmatter":{"name":"plan-devex-review","description":"Interactive developer experience plan review. Explores developer personas,\nbenchmarks against competitors, designs magical moments, and traces friction\npoints before scoring. Three modes: DX EXPANSION (competitive advantage),\nDX POLISH (bulletproof every touchpoint), DX TRIAGE (critical gaps only).\nUse when asked to \"DX review\", \"developer experience audit\", \"devex review\",\nor \"API design review\".\nProactively suggest when the user has a plan for developer-facing products\n(APIs, CLIs, SDKs, libraries, platforms, docs).\nVoice triggers (speech-to-text aliases): \"dx review\", \"developer experience review\", \"devex review\", \"devex audit\", \"API design review\", \"onboarding review\"."},"skills_sh_url":"https://skills.sh/timurgaleev/vibestack/plan-devex-review"},"updatedAt":"2026-05-18T19:06:22.774Z"}}