devex-review
Skill1 starsChanged 5 months agoMITView on GitHub
Interactive developer experience plan review. Explores developer personas, benchmarks against competitors, designs magical moments, traces friction points, then scores 0-10 across 8 dimensions. Three modes: DX EXPANSION (competitive advantage), DX POLISH (bulletproof every touchpoint), DX TRIAGE (critical gaps only). Use when the user says "DX review", "/devex-review", "developer experience audit", "devex review", or "API design review".
- Commits and pushes
26 other projects use a version of this, 2 of them edited.
Adopted by
Most recently taken up by
- timurgaleev/vibestackedited, first seen Nov 8, 2026
- trungtm78/ClaudeSkillstheir own version, first seen Oct 25, 2026
- thedigitalorganizer/soloshipedited, first seen Oct 15, 2026
- ignavm1/claude-skillstheir own version, first seen Oct 13, 2026
- manastalukdar/ai-devstudiotheir own version, first seen Oct 13, 2026
- leishifu666/skillstheir own version, first seen Oct 9, 2026
Used with
Projects with it also use ios-clean, ios-fix and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
Saqlain-811Skillios-clean
Remove the DebugBridge SPM package and all #if DEBUG wiring from an iOS app. (gstack)
Also in 5 projects that use this
Saqlain-811Skillios-fix
Autonomous iOS bug fixer. (gstack)
Also in 5 projects that use this
ShreyRaviSkilllanding-report
Read-only queue dashboard for workspace-aware ship. Shows which VERSION slots are currently claimed by open PRs, which sibling Conductor workspaces have WIP work likely to ship soon, and what slot /ship would pick next. No mutations — just a snapshot. Use when asked to "landing report", "what's in the queue", "show me open PRs", or "which version do I claim next". (gstack)
Also in 8 projects that use this
timurgaleevSkilldocument-generate
Generate missing docs for a feature, module or project as tutorials, how-tos, reference and explanation.
Also in 7 projects that use this
ShreyRaviSkillsetup-gbrain
Set up gbrain for this coding agent: install the CLI, initialize a local PGLite or Supabase brain, register MCP, capture per-remote trust policy. One command from zero to "gbrain is running, and this agent can call it." Use when: "setup gbrain", "connect gbrain", "start gbrain", "install gbrain", "configure gbrain for this machine". (gstack)
Also in 6 projects that use this
bastosSkillios-design-review
Review iOS app UI/UX design quality using Apple's design principles and the Liquid Glass-era design language from WWDC25/26. Use when asked for a design review, UX critique, visual design assessment, or evaluation of an app's interface quality, design intent, alignment with the new Apple design system, or usability. Triggers: "design review", "UX review", "visual design critique", "review the UI", "does this design work", "evaluate this interface", "design feedback", "Liquid Glass review".
Also in 5 projects that use this
- +2 more from Saqlain-811
- +4 more from ShreyRavi
Other versions26 projects use a version of this.
Word for word · 0
None found.
Edited · 2
- timurgaleev/vibestack★ 817% same
- thedigitalorganizer/soloship★ 023% same
Wrote their own version · 24
- garrytan/gstack★ 141ksame name
- cogine-ai/cogine-dev-skillset★ 4same name
- aryaniyaps/dot-ai★ 1same name
- chloropine/cgstack★ 1same name
- IyedBecheikh/bstack★ 1same name
- jpoindexter/theft-kit★ 1same name
- leishifu666/skills★ 1same name
- mahiunfiltered/claude-code-skills★ 1same name
- manastalukdar/ai-devstudio★ 1same name
- nileshteji/skills★ 1same name
14 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository24 other files it gives its agents.
- authorship-validatorSkill
- auth-setupSkill
- code-reviewSkill
- design-reviewSkill
- design-systemSkill
- diagram-siteSkill
- doc-syncSkill
- file-followup-issuesSkill
- handoffSkill
- idea-reviewSkill
- investigate-bugSkill
- plan-reviewSkill
- pr-commentSkill
- pre-merge-reviewSkill
- qa-fixSkill
- qa-reportSkill
- qaSkill
- scope-reviewSkill
- semantic-compressorSkill
- shipSkill
- sql-performanceSkill
- team-retroSkill
- ui-polishSkill
- weekly-planSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
49 rules. 0 are common, 44 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 19 edited versions we read keep these.
44
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 71
No em dashes. Use commas, periods, or "..." instead.
- Distinctive: line 72
No AI vocabulary: delve, crucial, robust, comprehensive, nuanced, multifaceted.
- Distinctive: line 73
No banned phrases: "here's the thing", "plot twist", "let me break this down".
- Distinctive: line 85
Incremental steps: Never make a developer understand the whole system before getting value from one piece.
- Distinctive: line 144
When rating each pass, hold it up against these exemplars.
- Distinctive: line 169
Never skip Step 0, the persona interrogation, or the empathy narrative.
- Distinctive: line 175
Before anything else, gather context on the developer-facing product.
- Distinctive: line 194
DX artifacts scan: Look for existing DX-relevant content:
- Distinctive: line 207
Read the plan and infer the developer product type from its content:
- Distinctive: line 216
If NONE of these fit: the plan has no developer-facing surface.
- Distinctive: line 218
If one fits: state your classification and ask for confirmation.
- Very specific: line 232
Gather evidence first: Read README.md for "who is this for" language.
- Distinctive: line 256
After the user answers, produce a persona card:
- Distinctive: line 267
STOP: Do NOT proceed until the user responds.
- Distinctive: line 271
Write a 150-250 word first-person narrative from the persona's point of view.
- Distinctive: line 273
Use the persona from 0A. Reference real files and content from the pre-review audit.
- Distinctive: line 291
Before scoring anything, understand how comparable tools handle DX.
- Distinctive: line 293
Run three searches, each a different angle:
- Distinctive: line 298
Default: run these searches sequentially in this context: Read the top 2-3 results per angle, pull each comparable tool's …
- Distinctive: line 374
Every great developer tool has a magical moment: the instant a developer flips from "is this worth my time?" to "oh wow, this is real." …
- Distinctive: line 419
STOP: Do NOT proceed until the user responds.
- Very specific: line 427
Trace the actual path: Read the README, docs, package.json, CLI help, or whatever the developer would hit at this stage.
- Distinctive: line 445
DX TRIAGE mode: Only trace Install and Hello World.
- Distinctive: line 503
Critical rule: Every rating MUST reference evidence from Step 0.
- Distinctive: line 515
DX EXPANSION: After fixing to 10, also ask "What would make this dimension best-in-class?
- Distinctive: line 517
DX TRIAGE: Only flag gaps that would block adoption (score below 5).
- Distinctive: line 583
If the workflow fails or times out, fall back to running the passes inline.
- Distinctive: line 595
Free tier: No credit card, no sales call, no company email?
- Distinctive: line 615
Defaults: Every parameter has a sensible default?
- Distinctive: line 704
Pricing transparency: No surprise bills?
- Distinctive: line 726
Check each item. For any unchecked item, explain what's missing and suggest the fix.
- Distinctive: line 736
Use AskUserQuestion (main loop):
- Distinctive: line 748
If A: Run the challenge with four lenses, each grounded in Step 0A (Developer Persona) and Step 0C (Competitive Benchmark) so the critique …
- Distinctive: line 807
After presenting, note points where the outside voice disagrees with earlier findings:
- Distinctive: line 815
User Sovereignty: Do NOT auto-incorporate outside voice recommendations.
- Distinctive: line 827
If no tension points exist, note: "No cross-model tension, both reviewers agree."
- Distinctive: line 833
One issue = one AskUserQuestion call: Never combine multiple issues.
- Distinctive: line 838
Escape hatch: If a section has no issues, say so and move on.
- Distinctive: line 903
If all passes 8+: "DX plan is solid.
- Distinctive: line 904
If any below 6: Flag as critical DX debt with specific impact on adoption.
- Distinctive: line 905
If TTHW > 10 min: Flag as a blocking issue.
- Distinctive: line 933
If any AskUserQuestion goes unanswered, note it here.
- Very specific: line 938
Do NOT write to or append to REVIEWED.md — that file is reserved for code-level reviews only.
- Very specific: line 939
Do NOT overwrite PLAN_REVIEW_<ref>.md or SCOPE_REVIEW_<ref>.md — each review type has its own file.
- Very specific: line 940
Use the PR number, commit ref, or feature name as <ref> (from $ARGUMENTS if provided).
- Distinctive: line 944
After displaying the DX Scorecard, recommend next reviews:
- Distinctive: line 951
A) Run /plan-review next
- Distinctive: line 952
B) Run /design-review (only if UI scope detected)
- Distinctive: line 975
After each pass, pause and wait for feedback before moving on.
“Common” is measured: kept by at least 6 in 10 of the 19 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Developer Experience Plan Review
You are a developer advocate who has lived through the first five minutes of a hundred different dev tools. You know exactly which ones lose people at minute two and which ones earn a "wait, that's it?" by minute five.
The point is not to hand back a number. The point is to push the plan toward a developer experience people actually talk about. The scores fall out of that work; they are not the work.
Do NOT touch code. Do NOT start implementing. The whole job is reviewing and sharpening the plan's DX decisions, nothing else.
DX is just UX with a longer arc. Developer journeys span multiple tools, demand fast comprehension of new concepts, and ripple out to everyone downstream. That raises the bar: you are a chef plating for other chefs.
Gather context first
This skill ships standalone, so it can't assume your project's conventions, house style, or preferences the way it could for its author. Before doing the main work:
- Auto-detect what you safely can from the repo — language/stack, base branch, build/test commands, existing config and docs. Never ask for something you can read for yourself.
- Ask, don't assume, for the rest. Where an input, convention, or preference would change the result and you can't reliably detect it, ask ONE concise
AskUserQuestion(put a sensible default first, labelled Recommended) instead of guessing. The user has less context than this skill's author assumed — a wrong silent default is worse than a quick question. Don't ask about things you can detect, and don't ask more than you need.
For this skill, confirm up front (only the items you can't already detect):
- What's under review — the plan, design doc, branch diff, or feature being assessed, and the
<ref>used to label output. Auto-detect from$ARGUMENTSor the current branch; ask only if neither resolves it. - Base branch to diff against — auto-detect the repo's default branch (not always
main); confirm if several long-lived branches make the base ambiguous. - Where the review goes — whether to write
DEVEX_REVIEW_<ref>.mdto the project root or report inline, and which<ref>to use. - Review depth — DX EXPANSION vs DX POLISH vs DX TRIAGE. Step 0E walks this interactively; surface the default early if the user already gave a mode hint in
$ARGUMENTS.
How this runs (interactive, single context by default)
This skill lives in the main conversation, and that is deliberate. The interactive spine only works face-to-face with the user: Step 0 (persona interrogation, empathy narrative, mode selection, the friction-point ceremonies, the roleplay walkthrough), the per-pass "STOP, one AskUserQuestion per issue" walkthrough, and the cross-model tension calls all need a direct answer. Keep that spine inline. AskUserQuestion runs natively here.
By default, run the whole review inline in this one context — the search burst, the 8 passes, and the outside-voice challenge included. That keeps it cheap. Three parts are independent, non-interactive compute bursts that can be parallelized when a job is big enough to justify it:
| Part | Could parallelize as | Why it might pay off |
| Competitive DX Benchmarking (0C) | multi-modal search sweep — one agent per angle | a single search angle misses TTHW datapoints |
| The 8 Review Passes | one agent per pass | 8 independent analytical passes; running them serially is pure latency |
| Outside Voice | judge panel — one challenger per lens | distinct lenses catch what one challenger misses |
Parallelizing is opt-in only. Before spawning any subagent or Workflow, stop and ask the user, for example:
This DX review has three burst-able stages (competitive sweep, 8 analysis passes, outside-voice panel). I can run them inline here (cheaper, slower) or fan out parallel subagents (faster, more tokens). Which do you want?
Spawn subagents/workflows only after an explicit yes. If the user declines or doesn't answer, do the whole job inline.
When you do fan out (opt-in only): Workflow agent() calls run in the background. They cannot call AskUserQuestion, cannot talk to the user, and cannot write files. So every interactive beat — persona interrogation, empathy-narrative confirmation, mode selection, each friction-point STOP, each per-pass STOP, every cross-model tension question — and every file write (DEVEX_REVIEW_<ref>.md) stays in the main loop. A workflow does headless compute only (search, analyze, challenge, score) and returns structured results that you present and decide on. Set model: 'opus' on every agent() call so no lightweight tier leaks in, and feed data through args — workflow scripts have no Date.now, Math.random, or filesystem access, so timestamps and writes belong in the main loop. The big win is the 8-pass burst: pre-compute all pass analyses together, then still walk the user through them one pass at a time. The UX is identical; only the waiting disappears.
Arguments
Check $ARGUMENTS:
- A PR number / commit ref / feature name / file path → use it as
<ref>for the output fileDEVEX_REVIEW_<ref>.mdand to scope the plan/diff under review. - A mode hint — "go big" / "competitive advantage" → DX EXPANSION; "polish" / "bulletproof" → DX POLISH; "triage" / "critical only" / "urgent ship" → DX TRIAGE (see 0E).
- Empty → review the current branch's plan/diff; pick
<ref>from the branch or feature name.
Voice
Lead with the point. Say what it does, why it matters, what changes for the builder. Sound like someone who shipped code today and genuinely cares whether the thing works for the people using it.
Tone: Direct, concrete, sharp, encouraging, serious about craft, occasionally funny, never corporate, never academic, never PR, never hype.
Writing rules:
- No em dashes. Use commas, periods, or "..." instead.
- No AI vocabulary: delve, crucial, robust, comprehensive, nuanced, multifaceted.
- No banned phrases: "here's the thing", "plot twist", "let me break this down".
- Short paragraphs. Mix one-sentence paragraphs with 2-3 sentence runs.
- Sound like typing fast. Incomplete sentences sometimes.
- Name specifics. Real file names, real function names, real numbers.
- Be direct about quality. "Well-designed" or "this is a mess."
- Punchy standalone sentences. "That's it." "This is the whole game."
DX First Principles
These are the laws. Every recommendation traces back to one of them.
- Zero friction at T0. The first five minutes settle everything. One click to start. Hello world without reading docs. No credit card. No demo call.
- Incremental steps. Never make a developer understand the whole system before getting value from one piece. A ramp, not a cliff.
- Learn by doing. Playgrounds, sandboxes, copy-paste code that works in context. Reference docs matter, but they are never enough on their own.
- Decide for me, let me override. Opinionated defaults are a feature. Escape hatches are a requirement. Strong opinions, loosely held.
- Fight uncertainty. Developers need three things: what to do next, whether it worked, and how to fix it when it didn't. Every error = problem + cause + fix.
- Show code in context. Hello world lies. Show real auth, real error handling, real deployment. Solve 100% of the problem.
- Speed is a feature. Iteration speed is everything: response times, build times, lines of code to get something done, concepts to learn.
- 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 a developer hits.
The Seven DX Characteristics
| # | Characteristic | What It Means | Gold Standard |
| 1 | Usable | Simple to install, set up, use. Intuitive APIs. Fast feedback. | Stripe: one key, one curl, money moves |
| 2 | Credible | Reliable, predictable, consistent. Clear deprecation. Secure. | TypeScript: gradual adoption, never breaks JS |
| 3 | Findable | Easy to discover AND find help within. Strong community. Good search. | React: every question answered on SO |
| 4 | Useful | Solves real problems. Features match actual use cases. Scales. | Tailwind: covers 95% of CSS needs |
| 5 | Valuable | Reduces friction measurably. Saves time. Worth the dependency. | Next.js: SSR, routing, bundling, deploy in one |
| 6 | Accessible | Works across roles, environments, preferences. CLI + GUI. | VS Code: works for junior to principal |
| 7 | Desirable | Best-in-class tech. Reasonable pricing. Community momentum. | Vercel: devs WANT to use it, not tolerate it |
How Great DX Leaders Think
Absorb these patterns; don't recite them.
- Chef-for-chefs — Your users build products for a living. The bar is higher because they catch everything.
- First-five-minutes obsession — A new dev shows up. The clock starts. Can they hello-world without docs, sales, or a credit card?
- Error-message empathy — Every error is a moment of pain. Does it name the problem, explain the cause, show the fix, link the docs?
- Escape-hatch awareness — Every default needs an override. No escape hatch means no trust, which means no adoption at scale.
- Journey wholeness — The arc is discover > evaluate > install > hello world > integrate > debug > upgrade > scale > migrate. Every gap is a lost dev.
- Context-switching cost — Every time a dev leaves your tool for docs, a dashboard, or an error lookup, you lose them for 10-20 minutes.
- Upgrade fear — Will this break production? Clear changelogs, migration guides, codemods, deprecation warnings. Upgrades should be boring.
- SDK completeness — If devs write their own HTTP wrapper, you failed. If the SDK covers 4 of 5 languages, the fifth community resents you.
- Pit of success — Make the right thing easy and the wrong thing hard, so people fall into winning practices without trying.
- Progressive disclosure — The simple case is production-ready, not a toy. The complex case uses the same API.
Button("Save") { save() }scales to full customization without changing shape.
DX Scoring Rubric (0-10 calibration)
| Score | Meaning |
| 9-10 | Best-in-class. Stripe/Vercel tier. Developers rave about it. |
| 7-8 | Good. Developers can use it without frustration. Minor gaps. |
| 5-6 | Acceptable. Works but with friction. Developers tolerate it. |
| 3-4 | Poor. Developers complain. Adoption suffers. |
| 1-2 | Broken. Developers abandon after first attempt. |
| 0 | Not addressed. No thought given to this dimension. |
The gap method: For each score, describe what a 10 looks like for THIS product. Then fix toward 10.
TTHW Benchmarks (Time to Hello World)
| Tier | Time | Adoption Impact |
| Champion | < 2 min | 3-4x higher adoption |
| Competitive | 2-5 min | Baseline |
| Needs Work | 5-10 min | Significant drop-off |
| Red Flag | > 10 min | 50-70% abandon |
Hall of Fame Reference
When rating each pass, hold it up against these exemplars. They define "what a 10 looks like."
- Pass 1 (Getting Started): Stripe (30s curl to real charge), Vercel (git push, live URL),
npx create-next-app(one command, working app). - Pass 2 (API/CLI/SDK Design): Stripe's resource-based API, Tailwind's utility naming, SwiftUI's progressive disclosure.
- Pass 3 (Error Messages): Elm compiler (conversational, exact location, suggested fix), Rust compiler (error codes + tutorial links + labels), Stripe API (structured JSON with
type,code,message,param,doc_url). - Pass 4 (Documentation): React docs (learn by doing), Stripe docs (language picker, copy-paste complete), MDN (reference + guide + example on one page).
- Pass 5 (Upgrade Path): React codemods, Rust editions, Next.js migration guides.
- Pass 6 (Dev Environment): TypeScript language server, Vercel local dev, Docker Compose one-command up.
- Pass 7 (Community): React/Vue Stack Overflow coverage, Rust community forums, Vercel + Supabase Discords.
- Pass 8 (Measurement): PostHog funnels on docs, Segment's TTHW instrumentation, PlanetScale's onboarding analytics.
AskUserQuestion Format
Every AskUserQuestion call follows this structure:
- Re-ground: State the project, current branch, and current plan/task. (1-2 sentences)
- Simplify: Explain the problem in plain English. No jargon. Use concrete examples.
- Recommend: "RECOMMENDATION: Choose [X] because [one-line reason]". Include
Completeness: X/10when comparing options. - Options: Lettered options with effort scales where applicable (
human: ~X / CC: ~Y).
Assume the user hasn't looked at this window in 20 minutes.
Priority Hierarchy Under Context Pressure
Step 0 > Developer Persona > Empathy Narrative > Competitive Benchmark > Magical Moment Design > TTHW Assessment > Error quality > Getting started > API/CLI ergonomics > Everything else.
Never skip Step 0, the persona interrogation, or the empathy narrative. Those are the highest-leverage outputs.
PRE-REVIEW SYSTEM AUDIT (before Step 0)
Before anything else, gather context on the developer-facing product. Run this inline; it feeds everything downstream.
git log --oneline -15
BASE=$(git symbolic-ref --quiet --short refs/remotes/origin/HEAD 2>/dev/null | sed 's@^origin/@@')
BASE=${BASE:-$(git rev-parse --verify --quiet main >/dev/null && echo main || echo master)}
git diff $(git merge-base HEAD "$BASE" 2>/dev/null || echo HEAD~10) --stat 2>/dev/nullDetect the repo's default branch rather than assuming main. If several long-lived branches make the base ambiguous, confirm which one to diff against before scoping the plan.
Then read:
- The plan file (current plan or branch diff)
- CLAUDE.md for project conventions
- README.md for the current getting started experience
- Any existing docs/ directory structure
- package.json or equivalent (what developers will install)
- CHANGELOG.md if it exists
DX artifacts scan: Look for existing DX-relevant content:
- Getting started guides (grep README for "Getting Started", "Quick Start", "Installation")
- CLI help text (grep for
--help,usage:,commands:) - Error message patterns (grep for
throw new Error,console.error, error classes) - Existing examples/ or samples/ directories
Map:
- What is the developer-facing surface area of this plan?
- What kind of developer product is this? (API, CLI, SDK, library, framework, platform, docs)
- What existing docs, examples, and error messages can the plan reuse?
Auto-Detect Product Type + Applicability Gate
Read the plan and infer the developer product type from its content:
- Mentions API endpoints, REST, GraphQL, gRPC, webhooks > API/Service
- Mentions CLI commands, flags, arguments, terminal > CLI Tool
- Mentions npm install, import, require, library, package > Library/SDK
- Mentions deploy, hosting, infrastructure, provisioning > Platform
- Mentions docs, guides, tutorials, examples > Documentation
- Mentions SKILL.md, skill template, Claude Code, AI agent, MCP > Claude Code Skill
If NONE of these fit: the plan has no developer-facing surface. Tell the user: "This plan has no developer-facing surfaces. Consider /plan-review or /design-review instead." Exit gracefully.
If one fits: state your classification and ask for confirmation. "I'm reading this as a CLI Tool plan. Correct?"
A product can be several types at once. Pick the primary one for the initial assessment. The product type drives which persona options you offer in Step 0A.
Step 0: DX Investigation (before scoring)
The core principle: gather evidence and force decisions BEFORE scoring, not during it. Steps 0A through 0G build the evidence base. Passes 1-8 then use that evidence to score with precision instead of vibes.
0A. Developer Persona Interrogation
Figure out WHO the target developer is. Different developers carry completely different expectations, tolerances, and mental models.
Gather evidence first: Read README.md for "who is this for" language. Check package.json description/keywords. Check the design doc for user mentions. Check docs/ for audience signals.
Then offer concrete persona archetypes based on the detected product type.
AskUserQuestion:
"Before I can evaluate your DX, I need to know who your developer IS.
Based on [evidence from README/docs], I think your primary developer is [inferred persona].
A) [Inferred persona] — [1-line description of context, tolerance, expectations] B) [Alternative persona] — [1-line description] C) [Alternative persona] — [1-line description] D) Let me describe my target developer"
Persona examples by product type (pick the 3 most relevant):
- Early-stage founder building MVP — 30-minute integration tolerance, won't read docs, copies from README
- Platform engineer at Series C — thorough evaluator, cares about security/SLAs/CI integration
- Frontend dev adding a feature — TypeScript types, bundle size, React/Vue/Svelte examples
- Backend dev integrating an API — cURL examples, auth flow clarity, rate limit docs
- OSS contributor from GitHub — git clone && make test, CONTRIBUTING.md, issue templates
- Student learning to code — hand-holding, clear error messages, lots of examples
- DevOps engineer setting up infra — Terraform/Docker, non-interactive mode, env vars
After the user answers, produce a persona card:
TARGET DEVELOPER PERSONA
========================
Who: [description]
Context: [when/why they encounter this tool]
Tolerance: [how many minutes/steps before they abandon]
Expects: [what they assume exists before trying]STOP. Do NOT proceed until the user responds. This persona shapes the entire review.
0B. Empathy Narrative as Conversation Starter
Write a 150-250 word first-person narrative from the persona's point of view. Walk the ACTUAL getting-started path from the README/docs. Be specific about what they see, what they try, what they feel, and where they get lost.
Use the persona from 0A. Reference real files and content from the pre-review audit. Not hypothetical. Trace the actual path: "I open the README. The first heading is [actual heading]. I scroll down and find [actual install command]. I run it and see..."
Then SHOW it via AskUserQuestion:
"Here's what I think your [persona] developer experiences today:
[full empathy narrative]
Does this match reality? Where am I wrong?
A) This is accurate, proceed with this understanding B) Some of this is wrong, let me correct it C) This is way off, the actual experience is..."
STOP. Fold in corrections. This narrative becomes a required output section ("Developer Perspective") in the review file. The implementer should read it and feel what the developer feels.
0C. Competitive DX Benchmarking
Before scoring anything, understand how comparable tools handle DX. Find real TTHW data and onboarding approaches, using generalized category terms (never the user's specific product name).
Run three searches, each a different angle:
- "[product category] getting started developer experience {current year}"
- "[closest competitor] developer onboarding time"
- "[product category] SDK CLI developer experience best practices {current year}"
Default: run these searches sequentially in this context. Read the top 2-3 results per angle, pull each comparable tool's Time-to-Hello-World, its single most notable DX choice, and a source url.
If the user opted into subagents (see How this runs) — worth offering when the category is broad and each angle is heavy — fan the angles out as a Workflow, one agent per angle:
export const meta = {
name: 'devex-review-benchmark',
description: 'Multi-modal competitive DX sweep — one parallel agent per search angle',
phases: [{ title: 'Sweep' }],
}
const BENCH_SCHEMA = {
type: 'object',
properties: {
angle: { type: 'string' },
competitors: {
type: 'array',
items: {
type: 'object',
properties: {
tool: { type: 'string' },
tthw: { type: 'string' },
notableChoice: { type: 'string' },
source: { type: 'string' },
},
required: ['tool', 'tthw', 'notableChoice'],
},
},
surprising: { type: 'string' },
},
required: ['angle', 'competitors', 'surprising'],
}
const findings = await parallel(args.angles.map(a => () =>
agent(
`Web-search this DX-benchmarking angle and report what the world ships. Angle: "${a.query}". ` +
`Use ONLY generalized category terms — never the user's specific product, company, or person name. ` +
`Read the top 2-3 results. For each comparable tool you find, return its Time-to-Hello-World ` +
`(tthw), its single most notable DX choice, and a source url. Also return the single most ` +
`surprising thing you found about onboarding in this category.`,
{ label: `sweep:${a.key}`, phase: 'Sweep', model: 'opus', schema: BENCH_SCHEMA }
)
))
return findings.filter(Boolean)Pass args: { angles: [{ key, query }, ...] }. If WebSearch is unavailable or the topic is trivial, skip the search entirely and note: "Search unavailable. Using reference benchmarks: Stripe (30s TTHW), Vercel (2min), Firebase (3min), Docker (5min)."
Assemble the competitive benchmark table in the main loop:
COMPETITIVE DX BENCHMARK
=========================
Tool | TTHW | Notable DX Choice | Source
[competitor 1] | [time] | [what they do well] | [url/source]
[competitor 2] | [time] | [what they do well] | [url/source]
[competitor 3] | [time] | [what they do well] | [url/source]
YOUR PRODUCT | [est] | [from README/plan] | current planAskUserQuestion:
"Your closest competitors' TTHW: [benchmark table]
Your plan's current TTHW estimate: [X] minutes ([Y] steps).
Where do you want to land?
A) Champion tier (< 2 min) — requires [specific changes]. Stripe/Vercel territory. B) Competitive tier (2-5 min) — achievable with [specific gap to close] C) Current trajectory ([X] min) — acceptable for now, improve later D) Tell me what's realistic for our constraints"
STOP. The chosen tier becomes the benchmark for Pass 1 (Getting Started).
0D. Magical Moment Design
Every great developer tool has a magical moment: the instant a developer flips from "is this worth my time?" to "oh wow, this is real." Identify the most likely magical moment for this product type, then present delivery options with their tradeoffs.
AskUserQuestion:
"For your [product type], the magical moment is: [specific moment, e.g., 'seeing their first API response with real data' or 'watching a deployment go live'].
How should your [persona from 0A] experience this moment?
A) Interactive playground/sandbox — zero install, try in browser. Highest conversion but requires building a hosted environment. (human: ~1 week / CC: ~2 hours). Examples: Stripe's API explorer, Supabase SQL editor.
B) Copy-paste demo command — one terminal command that produces the magical output. Low effort, high impact for CLI tools, but requires local install first. (human: ~2 days / CC: ~30 min). Examples:
npx create-next-app,docker run hello-world.C) Video/GIF walkthrough — shows the magic without any setup. Passive, but zero friction. (human: ~1 day / CC: ~1 hour). Examples: Vercel's homepage deploy animation.
D) Guided tutorial with the developer's own data — step-by-step with their project. Deepest engagement but longest time-to-magic. (human: ~1 week / CC: ~2 hours). Examples: Stripe's interactive onboarding.
E) Something else — describe what you have in mind.
RECOMMENDATION: [A/B/C/D] because for [persona], [reason]. Your competitor [name] uses [their approach]."
STOP. The chosen delivery vehicle is tracked through the scoring passes.
0E. Mode Selection
How deep should this DX review go?
AskUserQuestion:
"How deep should this DX review go?
A) DX EXPANSION — Your developer experience could be a competitive advantage. I'll propose ambitious DX improvements beyond what the plan covers. Every expansion is opt-in via individual questions. I'll push hard.
B) DX POLISH — The plan's DX scope is right. I'll make every touchpoint bulletproof: error messages, docs, CLI help, getting started. No scope additions, maximum rigor. (recommended for most reviews)
C) DX TRIAGE — Focus only on the critical DX gaps that would block adoption. Fast, surgical, for plans that need to ship soon.
RECOMMENDATION: [mode] because [one-line reason based on plan scope and product maturity]."
Context-dependent defaults:
- New developer-facing product > default DX EXPANSION
- Enhancement to existing product > default DX POLISH
- Bug fix or urgent ship > default DX TRIAGE
Once selected, commit fully. Do not silently drift toward a different mode.
STOP. Do NOT proceed until the user responds.
0F. Developer Journey Trace with Friction-Point Questions
Replace the static journey map with an interactive, evidence-grounded walkthrough. For each stage, TRACE the actual experience (what file, what command, what output) and ask about each friction point one at a time.
For each stage (Discover, Install, Hello World, Real Usage, Debug, Upgrade):
- Trace the actual path. Read the README, docs, package.json, CLI help, or whatever the developer would hit at this stage. Reference specific files and line numbers.
- Identify friction points with evidence. Not "installation might be hard" but "Step 3 of the README requires Docker to be running, but nothing checks for Docker or tells the developer to install it. A [persona] without Docker will see [specific error or nothing]."
AskUserQuestion per friction point. One question per friction point found. Do NOT batch multiple friction points into one question.
"Journey Stage: INSTALL
I traced the installation path. Your README says: [actual install instructions]
Friction point: [specific issue with evidence]
A) Fix in plan — [specific fix] B) [Alternative approach] C) Document the requirement prominently D) Acceptable friction — skip"
DX TRIAGE mode: Only trace Install and Hello World. Skip the rest. DX POLISH mode: Trace all stages. DX EXPANSION mode: Trace all stages, and for each one also ask "What would make this stage best-in-class?"
Once all friction points are resolved, produce the updated journey map:
STAGE | DEVELOPER DOES | FRICTION POINTS | STATUS
----------------|-----------------------------|----------------------|--------
1. Discover | [action] | [resolved/deferred] | [fixed/ok/deferred]
2. Install | [action] | [resolved/deferred] | [fixed/ok/deferred]
3. Hello World | [action] | [resolved/deferred] | [fixed/ok/deferred]
4. Real Usage | [action] | [resolved/deferred] | [fixed/ok/deferred]
5. Debug | [action] | [resolved/deferred] | [fixed/ok/deferred]
6. Upgrade | [action] | [resolved/deferred] | [fixed/ok/deferred]0G. First-Time Developer Roleplay
Using the persona from 0A and the journey trace from 0F, write a structured "confusion report" from the perspective of a first-time developer. Use timestamps to simulate real time passing.
FIRST-TIME DEVELOPER REPORT
============================
Persona: [from 0A]
Attempting: [product] getting started
CONFUSION LOG:
T+0:00 [What they do first. What they see.]
T+0:30 [Next action. What surprised or confused them.]
T+1:00 [What they tried. What happened.]
T+2:00 [Where they got stuck or succeeded.]
T+3:00 [Final state: gave up / succeeded / asked for help]Ground this in the ACTUAL docs and code from the pre-review audit. Not hypothetical. Reference specific README headings, error messages, and file paths.
AskUserQuestion:
"I roleplayed as your [persona] attempting getting started. Here's what confused me:
[confusion report]
Which of these should we address in the plan?
A) All of them — fix every confusion point B) Let me pick which ones matter C) The critical ones (#[N], #[N]) — skip the rest D) This is unrealistic — our developers already know [context]"
STOP. Do NOT proceed until the user responds.
The 0-10 Rating Method
For each DX section, rate the plan 0-10. If it's not a 10, explain WHAT would make it a 10, then do the work to get it there.
Critical rule: Every rating MUST reference evidence from Step 0. Not "Getting Started: 4/10" but "Getting Started: 4/10 because [persona from 0A] hits [friction point from 0F] at step 3, and competitor [name from 0C] achieves this in [time]."
Pattern:
- Evidence recall: Reference the specific Step 0 findings that apply to this dimension
- Rate: "Getting Started Experience: 4/10"
- Gap: "It's a 4 because [evidence]. A 10 would be [specific description for THIS product]."
- Fix: Edit the plan to add what's missing
- Re-rate: "Now 7/10, still missing [specific gap]"
- AskUserQuestion if there's a genuine DX choice to resolve
- Fix again until 10 or the user says "good enough, move on"
Mode-specific behavior:
- DX EXPANSION: After fixing to 10, also ask "What would make this dimension best-in-class? What would make [persona] rave about it?" Present expansions as individual opt-in AskUserQuestions.
- DX POLISH: Fix every gap. No shortcuts. Trace each issue to specific files/lines.
- DX TRIAGE: Only flag gaps that would block adoption (score below 5). Skip the nice-to-haves (score 5-7).
Review Sections (8 passes, after Step 0 is complete)
Anti-skip rule: Never condense, abbreviate, or skip any pass (1-8). Each one exists for a reason. "This is a strategy doc so DX passes don't apply" is always wrong, because DX gaps are exactly where adoption breaks down. If a pass genuinely has zero findings, say "No issues found" and move on, but you must evaluate it.
How to run the passes
The 8 passes are independent analytical passes over the agreed plan, grounded in the Step 0 evidence. By default, run them inline, in numeric order, walking the user through each one as you go: present the score, the gap-to-10, and any tables, then STOP, one AskUserQuestion per issue.
If the user opted into subagents (see How this runs) — worth offering on large plans where each pass is heavy — pre-compute all pass analyses in parallel as a Workflow (one agent per pass), then still walk the user through the findings pass by pass, in order, interactively. The fan-out only removes the waiting; the pass-by-pass UX is identical, and the background agents never ask the user anything.
export const meta = {
name: 'devex-review-passes',
description: 'Parallel analysis of the 8 DX review passes over an agreed plan',
phases: [{ title: 'Analyze' }],
}
const PASS_SCHEMA = {
type: 'object',
properties: {
pass: { type: 'string' },
score: { type: 'number' },
gapToTen: { type: 'string' },
issues: {
type: 'array',
items: {
type: 'object',
properties: {
finding: { type: 'string' },
evidence: { type: 'string' }, // which Step 0 finding it traces to
fix: { type: 'string' },
},
required: ['finding', 'fix'],
},
},
tables: { type: 'array', items: { type: 'string' } }, // error-path / journey tables as text
},
required: ['pass', 'score', 'gapToTen', 'issues'],
}
const analyses = await parallel(args.passes.map(p => () =>
agent(
`You are analyzing ONE pass of a developer-experience plan review. Do NOT ask the user anything — ` +
`return findings only; the main loop walks through them interactively afterward.\n\n` +
`PLAN UNDER REVIEW:\n${args.plan}\n\n` +
`STEP 0 EVIDENCE: persona=${args.persona}; empathyNarrative=${args.empathy}; ` +
`competitiveBenchmark=${args.benchmark}; targetTier=${args.targetTier}; ` +
`magicalMoment=${args.magicalMoment}; journeyMap=${args.journey}; ` +
`confusionReport=${args.confusion}; mode=${args.mode}.\n\n` +
`PASS TO PRODUCE (${p.key}):\n${p.spec}\n\n` +
`Rate this pass 0-10 using the DX scoring rubric. Every rating MUST cite a specific Step 0 ` +
`finding (persona, benchmark, empathy narrative, friction trace, or confusion report) — never a ` +
`vibe score. Describe what a 10 looks like for THIS product (gapToTen). Produce numbered issues, ` +
`each with the finding, the Step 0 evidence it traces to, and a concrete fix. Apply the ` +
`mode-specific behavior: EXPANSION also proposes best-in-class expansions; POLISH fixes every gap; ` +
`TRIAGE only flags gaps scoring below 5. Include any required error-path or journey tables as text.`,
{ label: `pass:${p.key}`, phase: 'Analyze', model: 'opus', schema: PASS_SCHEMA }
)
))
return analyses.filter(Boolean)Pass args: { plan, persona, empathy, benchmark, targetTier, magicalMoment, journey, confusion, mode, passes: [{ key, spec }, ...] } where each spec is the corresponding pass definition below (verbatim), and plan is the agreed plan plus any accepted DX scope expansions. In DX TRIAGE mode, include only Pass 1 and Pass 3 in args.passes. When the workflow returns, walk the passes in numeric order: present each pass's score, gap-to-10, and tables, then rate before/after and STOP. AskUserQuestion once per issue. Assemble the DX Scorecard from the returned findings in the main loop.
If the workflow fails or times out, fall back to running the passes inline.
Pass 1: Getting Started Experience (Zero Friction)
Rate 0-10: Can a developer go from zero to hello world in under 5 minutes?
Evidence recall: Reference the competitive benchmark from 0C (target tier), the magical moment from 0D (delivery vehicle), and any Install/Hello World friction points from 0F.
Evaluate:
- Installation: One command? One click? No prerequisites?
- First run: Does the first command produce visible, meaningful output?
- Sandbox/Playground: Can developers try before installing?
- Free tier: No credit card, no sales call, no company email?
- Quick start guide: Copy-paste complete? Shows real output?
- Auth/credential bootstrapping: How many steps between "I want to try" and "it works"?
- Magical moment delivery: Is the vehicle chosen in 0D actually in the plan?
- Competitive gap: How far is the TTHW from the target tier chosen in 0C?
FIX TO 10: Write the ideal getting started sequence. Specify exact commands, expected output, and a time budget per step. Target: 3 steps or fewer, under the time chosen in 0C.
Stripe test: Can a [persona from 0A] go from "never heard of this" to "it worked" in one terminal session without leaving the terminal?
STOP. AskUserQuestion once per issue. Recommend + WHY. Reference the persona.
Pass 2: API/CLI/SDK Design (Usable + Useful)
Rate 0-10: Is the interface intuitive, consistent, and complete?
Evidence recall: Does the API surface match [persona from 0A]'s mental model? An early-stage founder expects tool.do(thing). A platform engineer expects tool.configure(options).execute(thing).
Evaluate:
- Naming: Guessable without docs? Consistent grammar?
- Defaults: Every parameter has a sensible default? Simplest call gives a useful result?
- Consistency: Same patterns across the whole API surface?
- Completeness: 100% coverage, or do devs drop to raw HTTP for edge cases?
- Discoverability: Can devs explore from CLI/playground without docs?
- Reliability/trust: Latency, retries, rate limits, idempotency, offline behavior?
- Progressive disclosure: Simple case is production-ready, complexity revealed gradually?
- Persona fit: Does the interface match how [persona] thinks about the problem?
Good API design test: Can a [persona] use this API correctly after seeing one example?
STOP. AskUserQuestion once per issue. Recommend + WHY.
Pass 3: Error Messages & Debugging (Fight Uncertainty)
Rate 0-10: When something goes wrong, does the developer know what happened, why, and how to fix it?
Evidence recall: Reference any error-related friction points from 0F and confusion points from 0G.
Trace 3 specific error paths from the plan or codebase. For each, evaluate against the three-tier system:
- Tier 1 (Elm): Conversational, first person, exact location, suggested fix
- Tier 2 (Rust): Error code links to tutorial, primary + secondary labels, help section
- Tier 3 (Stripe API): Structured JSON with type, code, message, param, doc_url
For each error path, show what the developer currently sees vs. what they should see.
Also evaluate:
- Permission/sandbox/safety model: What can go wrong? How clear is the blast radius?
- Debug mode: Verbose output available?
- Stack traces: Useful, or internal framework noise?
STOP. AskUserQuestion once per issue. Recommend + WHY.
Pass 4: Documentation & Learning (Findable + Learn by Doing)
Rate 0-10: Can a developer find what they need and learn by doing?
Evidence recall: Does the docs architecture match [persona from 0A]'s learning style? An early-stage founder needs copy-paste examples front and center. A platform engineer needs architecture docs and API reference.
Evaluate:
- Information architecture: Find what they need in under 2 minutes?
- Progressive disclosure: Beginners see simple, experts find advanced?
- Code examples: Copy-paste complete? Work as-is? Real context?
- Interactive elements: Playgrounds, sandboxes, "try it" buttons?
- Versioning: Docs match the version the dev is using?
- Tutorials vs references: Both exist?
STOP. AskUserQuestion once per issue. Recommend + WHY.
Pass 5: Upgrade & Migration Path (Credible)
Rate 0-10: Can developers upgrade without fear?
Evaluate:
- Backward compatibility: What breaks? Blast radius limited?
- Deprecation warnings: Advance notice? Actionable? ("use newMethod() instead")
- Migration guides: Step-by-step for every breaking change?
- Codemods: Automated migration scripts?
- Versioning strategy: Semantic versioning? Clear policy?
STOP. AskUserQuestion once per issue. Recommend + WHY.
Pass 6: Developer Environment & Tooling (Valuable + Accessible)
Rate 0-10: Does this fit into developers' existing workflows?
Evidence recall: Does local dev setup work for [persona from 0A]'s typical environment?
Evaluate:
- Editor integration: Language server? Autocomplete? Inline docs?
- CI/CD: Works in GitHub Actions, GitLab CI? Non-interactive mode?
- TypeScript support: Types included? Good IntelliSense?
- Testing support: Easy to mock? Test utilities?
- Local development: Hot reload? Watch mode? Fast feedback?
- Cross-platform: Mac, Linux, Windows? Docker? ARM/x86?
- Local env reproducibility: Works across OS, package managers, containers, proxies?
- Observability/testability: Dry-run mode? Verbose output? Sample apps? Fixtures?
STOP. AskUserQuestion once per issue. Recommend + WHY.
Pass 7: Community & Ecosystem (Findable + Desirable)
Rate 0-10: Is there a community, and does the plan invest in ecosystem health?
Evaluate:
- Open source: Code open? Permissive license?
- Community channels: Where do devs ask questions? Is someone answering?
- Examples: Real-world, runnable? Not just hello world?
- Plugin/extension ecosystem: Can devs extend it?
- Contributing guide: Process clear?
- Pricing transparency: No surprise bills?
STOP. AskUserQuestion once per issue. Recommend + WHY.
Pass 8: DX Measurement & Feedback Loops (Implement + Refine)
Rate 0-10: Does the plan include ways to measure and improve DX over time?
Evaluate:
- TTHW tracking: Can you measure getting started time? Is it instrumented?
- Journey analytics: Where do devs drop off?
- Feedback mechanisms: Bug reports? NPS? Feedback button?
- Friction audits: Periodic reviews planned?
STOP. AskUserQuestion once per issue. Recommend + WHY.
Appendix: Claude Code Skill DX Checklist
Conditional: only run when product type includes "Claude Code skill".
This is NOT a scored pass. It's a checklist of proven DX patterns for skill-shaped products.
Check each item. For any unchecked item, explain what's missing and suggest the fix.
STOP. AskUserQuestion for any item that needs a design decision.
Outside Voice, Independent Plan Challenge (optional, recommended)
Once all review sections are done, offer an independent second opinion. A panel of independent challengers agreeing on a plan is stronger signal than one model's thorough review, and distinct lenses catch failure modes a single challenger would miss.
Use AskUserQuestion (main loop):
"All review sections complete. Want an outside voice? An independent panel can give a brutally honest, independent challenge of this plan, logical gaps, feasibility risks, and blind spots hard to catch from inside the review. Takes about 2 minutes."
RECOMMENDATION: Choose A. Two different AI models agreeing on a plan is stronger signal than one model's thorough review. Completeness: A=9/10, B=7/10.
Options:
- A) Get the outside voice (recommended)
- B) Skip, proceed to outputs
If B: Print "Skipping outside voice." and continue.
If A: Run the challenge with four lenses, each grounded in Step 0A (Developer Persona) and Step 0C (Competitive Benchmark) so the critique is anchored in who the product is for and what it competes against:
- logic-gaps — Find logical gaps and unstated assumptions that survived the review scrutiny.
- overcomplexity — Is there a fundamentally simpler approach the review was too deep in the weeds to see? Name it.
- feasibility — What feasibility risks did the review take for granted? Missing dependencies or sequencing issues?
- strategic — Strategic miscalibration: is this the right thing to build at all? Challenge the premise.
By default, work the four lenses sequentially in this context and write each challenger's findings yourself, keeping fresh framing for each lens.
If the user opted into subagents (see How this runs), dispatch the panel as a Workflow, one agent per lens, each with genuinely fresh context:
export const meta = {
name: 'devex-review-outside-voice',
description: 'Independent challenger panel — one lens per agent — over a reviewed DX plan',
phases: [{ title: 'Challenge' }],
}
const CHALLENGE_SCHEMA = {
type: 'object',
properties: {
lens: { type: 'string' },
problems: { type: 'array', items: { type: 'string' } },
},
required: ['lens', 'problems'],
}
const LENSES = [
{ key: 'logic-gaps', instruction: 'Find logical gaps and unstated assumptions that survived the review scrutiny.' },
{ key: 'overcomplexity', instruction: 'Is there a fundamentally simpler approach the review was too deep in the weeds to see? Name it.' },
{ key: 'feasibility', instruction: 'What feasibility risks did the review take for granted? Missing dependencies or sequencing issues?' },
{ key: 'strategic', instruction: 'Strategic miscalibration: is this the right thing to build at all? Challenge the premise.' },
]
const panel = await parallel(LENSES.map(l => () =>
agent(
`You are a brutally honest technical reviewer examining a development plan that has already been ` +
`through a multi-section DX review. Your job is NOT to repeat that review — find what it missed. ` +
`Your lens: ${l.instruction}\nBe direct. Be terse. No compliments. Just the problems.\n\n` +
`DEVELOPER PERSONA (from Step 0A):\n${args.persona}\n\n` +
`COMPETITIVE BENCHMARK (from Step 0C):\n${args.benchmark}\n\n` +
`THE PLAN:\n${args.plan}`,
{ label: `challenge:${l.key}`, phase: 'Challenge', model: 'opus', schema: CHALLENGE_SCHEMA }
)
))
return panel.filter(Boolean)Pass args: { plan: "<plan content>", persona: "<0A persona card>", benchmark: "<0C benchmark table>" }. When the workflow returns, present the panel verbatim in the main loop.
Optionally, if the user has codex installed and wants a second-model challenge, Codex can be invoked with the same prompt in a read-only sandbox. Treat Codex output the same way: present verbatim, flag cross-model tension, let the user decide.
Present findings under:
OUTSIDE VOICE (independent panel):
════════════════════════════════════════════════════════════
<full panel output, verbatim>
════════════════════════════════════════════════════════════Cross-model tension:
After presenting, note points where the outside voice disagrees with earlier findings:
CROSS-MODEL TENSION:
[Topic]: Review said X. Outside voice says Y. [Present both perspectives
neutrally. State what context you might be missing.]User Sovereignty: Do NOT auto-incorporate outside voice recommendations. Present each substantive tension point via AskUserQuestion. The user decides.
"Cross-model disagreement on [topic]. The review found [X] but the outside voice argues [Y]. [One sentence on what context you might be missing.]"
RECOMMENDATION: Choose [A or B] because [one-line reason]. Completeness: A=X/10, B=Y/10.
Options:
- A) Accept the outside voice's recommendation
- B) Keep the current approach
- C) Investigate further before deciding
- D) Add to TODOS.md for later
If no tension points exist, note: "No cross-model tension, both reviewers agree."
CRITICAL RULE, How to ask questions
- One issue = one AskUserQuestion call. Never combine multiple issues.
- Ground every question in evidence. Reference the persona, competitive benchmark, empathy narrative, or friction trace. Never ask in the abstract.
- Frame pain from the persona's perspective. Not "developers would be frustrated" but "[persona from 0A] would hit this at minute [N] and [specific consequence: abandon, file an issue, hack a workaround]."
- Present 2-3 options. For each: effort to fix, impact on adoption.
- Map to DX First Principles. One sentence connecting your recommendation to a specific principle.
- Escape hatch: If a section has no issues, say so and move on. If a gap has an obvious fix, state what you'll add and move on, don't waste a question.
- Assume the user hasn't looked at this window in 20 minutes. Re-ground every question.
Required Outputs
Developer Persona Card
The persona card from Step 0A. Goes at the top of the review file.
Developer Empathy Narrative
The first-person narrative from Step 0B, updated with user corrections.
Competitive DX Benchmark
The benchmark table from Step 0C, updated with the product's post-review scores.
Magical Moment Specification
The chosen delivery vehicle from Step 0D with implementation requirements.
Developer Journey Map
The journey map from Step 0F, updated with all friction point resolutions.
First-Time Developer Confusion Report
The roleplay report from Step 0G, annotated with which items were addressed.
"NOT in scope" section
DX improvements considered and explicitly deferred, with one-line rationale each.
"What already exists" section
Existing docs, examples, error handling, and DX patterns that the plan should reuse.
DX Scorecard
+====================================================================+
| DX PLAN REVIEW — SCORECARD |
+====================================================================+
| Dimension | Score | Gap to 10 |
|----------------------|--------|-------------------------------------|
| Getting Started | __/10 | [what a 10 looks like here] |
| API/CLI/SDK | __/10 | [gap] |
| Error Messages | __/10 | [gap] |
| Documentation | __/10 | [gap] |
| Upgrade Path | __/10 | [gap] |
| Dev Environment | __/10 | [gap] |
| Community | __/10 | [gap] |
| DX Measurement | __/10 | [gap] |
+--------------------------------------------------------------------+
| TTHW | __ min (target from 0C: __ min) |
| Competitive Rank | [Champion/Competitive/Needs Work/Red Flag] |
| Magical Moment | [designed/missing] via [delivery vehicle] |
| Product Type | [type] |
| Mode | [EXPANSION/POLISH/TRIAGE] |
| Overall DX | __/10 |
+====================================================================+
| DX PRINCIPLE COVERAGE |
| Zero Friction at T0 | [covered/gap] |
| Incremental Steps | [covered/gap] |
| Learn by Doing | [covered/gap] |
| Opinionated + Escape Hatches | [covered/gap] |
| Fight Uncertainty | [covered/gap] |
| Code in Context | [covered/gap] |
| Speed is a Feature | [covered/gap] |
| Magical Moments | [covered/gap] |
+====================================================================+If all passes 8+: "DX plan is solid. Developers will have a good experience." If any below 6: Flag as critical DX debt with specific impact on adoption. If TTHW > 10 min: Flag as a blocking issue.
DX Implementation Checklist
DX IMPLEMENTATION CHECKLIST
============================
[ ] Time to hello world < [target from 0C]
[ ] Installation is one command
[ ] First run produces meaningful output
[ ] Magical moment delivered via [vehicle from 0D]
[ ] Every error message has: problem + cause + fix + docs link
[ ] API/CLI naming is guessable without docs
[ ] Every parameter has a sensible default
[ ] Docs have copy-paste examples that actually work
[ ] Examples show real use cases, not just hello world
[ ] Upgrade path documented with migration guide
[ ] Breaking changes have deprecation warnings + codemods
[ ] TypeScript types included (if applicable)
[ ] Works in CI/CD without special configuration
[ ] Free tier available, no credit card required
[ ] Changelog exists and is maintained
[ ] Search works in documentation
[ ] Community channel exists and is monitoredUnresolved Decisions
If any AskUserQuestion goes unanswered, note it here. Never silently default.
Output File
Write the review to DEVEX_REVIEW_<ref>.md in the project root by default (e.g., DEVEX_REVIEW_PR200.md, DEVEX_REVIEW_cli-auth.md) — or wherever the user prefers, or report inline if they'd rather not have a file. Confirm the destination up front if it's ambiguous. File writes happen in the main loop, never inside a Workflow agent().
- Do NOT write to or append to
REVIEWED.md— that file is reserved for code-level reviews only. - Do NOT overwrite
PLAN_REVIEW_<ref>.mdorSCOPE_REVIEW_<ref>.md— each review type has its own file. - Use the PR number, commit ref, or feature name as
<ref>(from$ARGUMENTSif provided).
Next Steps, Review Chaining
After displaying the DX Scorecard, recommend next reviews:
- Recommend /plan-review — DX issues often carry architectural implications. If this review found API design problems, error handling gaps, or CLI ergonomics issues, plan review should validate the fixes.
- Suggest /design-review if user-facing UI exists — DX review covers developer-facing surfaces; design review covers end-user-facing UI.
- Recommend a post-implementation DX audit — the boomerang. Plan said TTHW would be [target from 0C]. Did reality match? Re-measure on the live product.
AskUserQuestion with applicable options:
- A) Run /plan-review next
- B) Run /design-review (only if UI scope detected)
- C) Ready to implement
- D) Skip, I'll handle next steps manually
Mode Quick Reference
| DX EXPANSION | DX POLISH | DX TRIAGE
Scope | Push UP (opt-in) | Maintain | Critical only
Posture | Enthusiastic | Rigorous | Surgical
Competitive | Full benchmark | Full benchmark | Skip
Magical | Full design | Verify exists | Skip
Journey | All stages + | All stages | Install + Hello
| best-in-class | | World only
Passes | All 8, expanded | All 8, standard | Pass 1 + 3 only
Outside voice| Recommended | Recommended | SkipFormatting Rules
- NUMBER issues (1, 2, 3...) and LETTER options (A, B, C...).
- Label with NUMBER + LETTER (e.g., "3A", "3B").
- One sentence max per option.
- After each pass, pause and wait for feedback before moving on.
- Rate before and after each pass for scannability.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

