Pack Availability Guard
Before telling the user to run a skill from another project-local pack, check .agents/project.json.enabled_packs. If the target pack is not enabled, recommend $pack install <pack> instead of the target skill. Global skills are always valid. Skills from this same pack are valid because the current skill is already running from that pack.
MVP Gap — Startup Readiness Audit
Invoke as $mvp-gap.
Report-First Approval Gate
Default to report-only: present findings, evidence coverage, assumptions, recommended artifact path, and proposed file changes in a pre-approval alignment page plus a concise conversation summary for user approval before creating or updating canonical research, spec, or task files.
Do not write or overwrite synthesized deliverables until the user explicitly approves, unless the user invoked an explicit write/update/fix mode or clearly asked to write files upfront. Raw evidence capture may be persisted before analysis when reproducibility requires it; report those raw paths separately and still gate synthesized research/report writes.
When stopping for approval, build and attempt to open the alignment preview page first, then ask the user to review it and approve, question, or request adjustments. Do not include Recommended next skill, Recommended next command, or downstream routing language. The approval request itself is the next action. Only emit next-skill routing after the approved artifact has been written or updated.
Automated analysis that evaluates the codebase against research/icp.md. Identifies what's missing for winning first paying customers.
Prerequisites
research/icp.md (or research/{app}/icp.md) must exist. If not, tell the user to run $icp first.
Workflow
0. App Scope Resolution (Monorepo Support)
Before checking prerequisites, determine the app scope:
- If
$ARGUMENTS specifies an app name matching a subdirectory of research/, use it.
- If
research/ contains subdirectories (excluding files), list them and ask the user which app to target. If only one subdirectory exists, use it automatically.
- If no subdirectories exist, proceed with flat structure (single-product mode).
When app scope {app} is active:
- Read/write research from
research/{app}/ instead of research/
- Read existing specs from
specs/{app}/ instead of specs/
- Also read
research/icp.md (cross-app overview) for broader context
1. Load Context & Evaluate
- Read
research/icp.md (or research/{app}/icp.md), research/metrics.md (or research/{app}/metrics.md) (if it exists — check if defined metrics can actually be measured), codebase, README, existing specs (from specs/ or specs/{app}/), and any in-progress or advisory work from tasks/ (tasks/roadmap.md, tasks/todo.md, tasks/manual-todo.md, tasks/record-todo.md, tasks/recurring-todo.md if they exist).
- Evaluate the codebase against the ICP across these dimensions:
- User Journey Coverage — Can the product replace each step in the current-state journey? If
research/journey-map.md exists, map each gap to its journey stage.
- Customer Journey Coverage — Discovery, evaluation, trial, purchase, provisioning, onboarding
- Table-Stakes Gaps — Auth, error handling, data export, accessibility, docs, notifications
- Integration Gaps — Required integrations from the ICP's current workflow
- Competitive Differentiation — Does it deliver the stated value drivers?
- Spec Validation — For each gap, check
specs/ for existing coverage: "Spec exists — ready to build", "Spec exists — needs expansion", or no spec (suggest $ux-variations).
- Metrics Tie-In — If
research/metrics.md exists, identify which metric(s) indicate each gap is closed. Flag gaps with no closure metric as instrumentation gaps.
- Tag each gap:
blocks-first-sale, blocks-retention, or nice-to-have. Estimate effort (S/M/L).
- If
research/gtm.md exists, cross-reference build sequence against GTM launch gates. Flag conflicts and gaps deferrable to post-launch.
- Provide a prioritised build sequence.
Deliverables
research/mvp-gap.md (or research/{app}/mvp-gap.md) — Gap analysis with priority tags, evidence, effort estimates, journey stage, closure metric, and spec status for each gap
Each gap in the output should include:
- Journey stage: [stage from journey-map, or "N/A"]
- Closure metric: [metric from metrics.md, or "⚠ No metric defined"]
- Spec: [link to spec + status, or
$ux-variations [topic]]
The output file must include a ## Downstream Impact section (only if conflicts found) and end with a ## Next Steps section with a Recommended item and 2–4 other contextual options. Choose the recommendation by the first matching condition:
- IF downstream impact is Major:
$reconcile-research — audit and fix affected downstream research documents.
- IF a
blocks-first-sale gap lacks a full spec: $ux-variations [top gap] — explore solution directions for the highest-priority gap from research/mvp-gap.md.
- IF any other gap lacks a full spec:
$ux-variations [top gap] — explore solution directions for the highest-priority unspecced gap from research/mvp-gap.md.
- IF required context is missing: the corresponding research skill (
$journey-map, $competitive-analysis, $metrics, or $brainstorm when creative alternatives could reduce high-effort gaps).
- OTHERWISE:
$roadmap — sequence the existing specs into implementation phases.
Only recommend $roadmap as the primary next step when the MVP gap analysis found no unspecced priority gaps.
If downstream impact has not been classified yet, run the downstream impact check before finalizing ## Next Steps.
Downstream Impact Check
Before finalizing the output, scan existing downstream docs (research/journey-map.md, research/metrics.md, research/gtm.md, research/monetization.md, tasks/roadmap.md) for conflicts with what was just decided. Classify as None/Minor/Major. If Major (3+ conflicts or foundational gap changes build sequence), recommend $reconcile-research.
Task Classification
When this skill produces follow-up work, file it by execution semantics:
- Immediately actionable implementation or documentation work goes in
tasks/todo.md.
- Human-only external actions tied to automated steps go in
tasks/manual-todo.md with _(blocks: Step N.X)_ or _(after: Step N.X)_; repo edits, SDK wiring, generated assets, local commands, tests, audits, and authenticated CLI/API work stay in tasks/todo.md.
- One-time condition-gated records, baselines, or future measurements go in
tasks/record-todo.md with source, condition, non-blocking reason, evidence, and promotion rule.
- Cadence-based reviews, playtests, adoption checks, investor updates, retros, or docs-health checks go in
tasks/recurring-todo.md with cadence, owner/agent, next due, evidence path, and escalation conditions.
- Do not put non-blocking records or recurring obligations in
tasks/todo.md unless they have been explicitly promoted into current execution work.
Constraints
- Analysis only — do not make code changes.
- Every gap must cite specific evidence from the codebase.
- Prioritise by market impact, not technical interest.
- Include
$ux-variations <topic> prompts only for gaps lacking specs.
## Next Steps must be the final section in the output file, with a recommended next step and 2–4 other contextual options.
Alignment Page
When this skill produces durable deliverables (research, specs, plans, reports, prototypes, or any document output), build a full-depth HTML alignment page following ALIGNMENT-PAGE.md in this skill's directory. Output: alignment/mvp-gap-{topic}.html.
Default Shipping Contract
Follow the shared shipping contract convention in CLAUDE.md.
1---2name: mvp-gap-33description: Evaluate codebase against ICP to identify gaps blocking first sales and retention4---5
6## Pack Availability Guard
7
8Before telling the user to run a skill from another project-local pack, check `.agents/project.json.enabled_packs`. If the target pack is not enabled, recommend `$pack install <pack>` instead of the target skill. Global skills are always valid. Skills from this same pack are valid because the current skill is already running from that pack.
9
10# MVP Gap — Startup Readiness Audit
11
12Invoke as `$mvp-gap`.
13
14## Report-First Approval Gate
15
16Default to report-only: present findings, evidence coverage, assumptions, recommended artifact path, and proposed file changes in a pre-approval alignment page plus a concise conversation summary for user approval before creating or updating canonical research, spec, or task files.
17
18Do not write or overwrite synthesized deliverables until the user explicitly approves, unless the user invoked an explicit write/update/fix mode or clearly asked to write files upfront. Raw evidence capture may be persisted before analysis when reproducibility requires it; report those raw paths separately and still gate synthesized research/report writes.
19
20When stopping for approval, build and attempt to open the alignment preview page first, then ask the user to review it and approve, question, or request adjustments. Do not include `Recommended next skill`, `Recommended next command`, or downstream routing language. The approval request itself is the next action. Only emit next-skill routing after the approved artifact has been written or updated.
21
22Automated analysis that evaluates the codebase against `research/icp.md`. Identifies what's missing for winning first paying customers.
23
24## Prerequisites
25
26`research/icp.md` (or `research/{app}/icp.md`) must exist. If not, tell the user to run `$icp` first.
27
28## Workflow
29
30### 0. App Scope Resolution (Monorepo Support)
31
32Before checking prerequisites, determine the app scope:
33
341. If `$ARGUMENTS` specifies an app name matching a subdirectory of `research/`, use it.
352. If `research/` contains subdirectories (excluding files), list them and ask the user which app to target. If only one subdirectory exists, use it automatically.
363. If no subdirectories exist, proceed with flat structure (single-product mode).
37
38When app scope `{app}` is active:
39- Read/write research from `research/{app}/` instead of `research/`
40- Read existing specs from `specs/{app}/` instead of `specs/`
41- Also read `research/icp.md` (cross-app overview) for broader context
42
43### 1. Load Context & Evaluate
44
451. Read `research/icp.md` (or `research/{app}/icp.md`), `research/metrics.md` (or `research/{app}/metrics.md`) (if it exists — check if defined metrics can actually be measured), codebase, README, existing specs (from `specs/` or `specs/{app}/`), and any in-progress or advisory work from `tasks/` (`tasks/roadmap.md`, `tasks/todo.md`, `tasks/manual-todo.md`, `tasks/record-todo.md`, `tasks/recurring-todo.md` if they exist).
462. Evaluate the codebase against the ICP across these dimensions:
47 - **User Journey Coverage** — Can the product replace each step in the current-state journey? If `research/journey-map.md` exists, map each gap to its journey stage.
48 - **Customer Journey Coverage** — Discovery, evaluation, trial, purchase, provisioning, onboarding
49 - **Table-Stakes Gaps** — Auth, error handling, data export, accessibility, docs, notifications
50 - **Integration Gaps** — Required integrations from the ICP's current workflow
51 - **Competitive Differentiation** — Does it deliver the stated value drivers?
52 - **Spec Validation** — For each gap, check `specs/` for existing coverage: "Spec exists — ready to build", "Spec exists — needs expansion", or no spec (suggest `$ux-variations`).
53 - **Metrics Tie-In** — If `research/metrics.md` exists, identify which metric(s) indicate each gap is closed. Flag gaps with no closure metric as instrumentation gaps.
543. Tag each gap: `blocks-first-sale`, `blocks-retention`, or `nice-to-have`. Estimate effort (S/M/L).
554. If `research/gtm.md` exists, cross-reference build sequence against GTM launch gates. Flag conflicts and gaps deferrable to post-launch.
565. Provide a prioritised build sequence.
57
58## Deliverables
59
60- `research/mvp-gap.md` (or `research/{app}/mvp-gap.md`) — Gap analysis with priority tags, evidence, effort estimates, journey stage, closure metric, and spec status for each gap
61
62Each gap in the output should include:
63- _Journey stage:_ [stage from journey-map, or "N/A"]
64- _Closure metric:_ [metric from metrics.md, or "⚠ No metric defined"]
65- _Spec:_ [link to spec + status, or `$ux-variations [topic]`]
66
67The output file must include a `## Downstream Impact` section (only if conflicts found) and end with a `## Next Steps` section with a **Recommended** item and 2–4 other contextual options. Choose the recommendation by the first matching condition:
68
691. IF downstream impact is **Major**: `$reconcile-research` — audit and fix affected downstream research documents.
702. IF a `blocks-first-sale` gap lacks a full spec: `$ux-variations [top gap]` — explore solution directions for the highest-priority gap from `research/mvp-gap.md`.
713. IF any other gap lacks a full spec: `$ux-variations [top gap]` — explore solution directions for the highest-priority unspecced gap from `research/mvp-gap.md`.
724. IF required context is missing: the corresponding research skill (`$journey-map`, `$competitive-analysis`, `$metrics`, or `$brainstorm` when creative alternatives could reduce high-effort gaps).
735. OTHERWISE: `$roadmap` — sequence the existing specs into implementation phases.
74
75Only recommend `$roadmap` as the primary next step when the MVP gap analysis found no unspecced priority gaps.
76If downstream impact has not been classified yet, run the downstream impact check before finalizing `## Next Steps`.
77
78### Downstream Impact Check
79
80Before finalizing the output, scan existing downstream docs (`research/journey-map.md`, `research/metrics.md`, `research/gtm.md`, `research/monetization.md`, `tasks/roadmap.md`) for conflicts with what was just decided. Classify as None/Minor/Major. If Major (3+ conflicts or foundational gap changes build sequence), recommend `$reconcile-research`.
81
82## Task Classification
83
84When this skill produces follow-up work, file it by execution semantics:
85
86- Immediately actionable implementation or documentation work goes in `tasks/todo.md`.
87- Human-only external actions tied to automated steps go in `tasks/manual-todo.md` with `_(blocks: Step N.X)_` or `_(after: Step N.X)_`; repo edits, SDK wiring, generated assets, local commands, tests, audits, and authenticated CLI/API work stay in `tasks/todo.md`.
88- One-time condition-gated records, baselines, or future measurements go in `tasks/record-todo.md` with source, condition, non-blocking reason, evidence, and promotion rule.
89- Cadence-based reviews, playtests, adoption checks, investor updates, retros, or docs-health checks go in `tasks/recurring-todo.md` with cadence, owner/agent, next due, evidence path, and escalation conditions.
90- Do not put non-blocking records or recurring obligations in `tasks/todo.md` unless they have been explicitly promoted into current execution work.
91
92## Constraints
93
94- Analysis only — do not make code changes.
95- Every gap must cite specific evidence from the codebase.
96- Prioritise by market impact, not technical interest.
97- Include `$ux-variations <topic>` prompts only for gaps lacking specs.
98- `## Next Steps` must be the final section in the output file, with a recommended next step and 2–4 other contextual options.
99
100## Alignment Page
101
102When this skill produces durable deliverables (research, specs, plans, reports, prototypes, or any document output), build a full-depth HTML alignment page following `ALIGNMENT-PAGE.md` in this skill's directory. Output: `alignment/mvp-gap-{topic}.html`.
103
104## Default Shipping Contract
105
106Follow the shared shipping contract convention in CLAUDE.md.