| name | infer-mvp-recommendation-from-code |
| description | Infer the MVP recommendation from scan-index.json during /codify by reverse-engineering what the shipped codebase ALREADY treats as v1 — primary use cases evidenced by release history, entry points, churn, and README — plus deferred capabilities evidenced by thin/scaffold-only code. Output is Markdown with YAML frontmatter. Used exclusively by product-keeper in the /codify play. |
| version | 0.1.0 |
| user-invocable | false |
| model | sonnet |
| allowed-tools | Read, Write, Grep, Glob |
| deprecated | true |
| deprecated_note | #434 ProductOS realignment — superseded by the command model; retained for Phase E reference, not installed |
infer-mvp-recommendation-from-code
Called by product-keeper during /codify. Produces scope/mvp-recommendation.md at {stm_base}/{issue}/evidence/codify/proposals/scope/mvp-recommendation.md.
Purpose
In greenfield /specify, recommend-mvp narrows a brief's use cases into a v1 plan — "what SHOULD the MVP be". In brownfield /codify, the MVP has already shipped. This skill inverts the semantics: it reconstructs "what IS the MVP" from the codebase itself.
The shipped MVP is evidenced by three reinforcing signals: (a) what has been released (git tags), (b) what is actively maintained (churn), and (c) what is exposed to users (entry points + README feature enumeration). Capabilities that appear in the tree but lack these signals — empty modules, commented-out routes, TODO-heavy files, v0-prefixed paths — are deferred capabilities: wired but not part of the shipped MVP.
This skill does NOT make product recommendations the user has not committed to. It observes what is in the codebase and surfaces it for review at the /codify checkpoint. Every primary use case traces to concrete evidence paths in scan-index.json; every deferred capability traces to a thin-code signature.
Input
Receive from product-keeper via JSON contract.
scan_index_path (path, required) — scan-index.json produced by scan-codebase.
stm_base (path, required) — STM root resolved from .garura/core/config.yaml stm.base-path.
issue (str, required) — issue number driving /codify.
output_path (path, required) — {stm_base}/{issue}/evidence/codify/proposals/scope/mvp-recommendation.md.
decision_manifest_path (path, required) — decision-manifest-infer-mvp-recommendation-from-code.yaml alongside the artifact.
ltm_context (block, required) — {product_base, core_base, query_domains, locked_artifacts}. Presence triggers the Resolution Protocol.
resolution_trace_path (path, required) — where resolution-trace.yaml is written.
Process
-
Validate inputs. Confirm scan_index_path exists and parses as JSON. Confirm stm_base exists. Create output_path and parent directories if missing. Missing/malformed scan-index → structured failure .