an agent skill · the front door to fourteen specialist skills

/digital-product

digital-product is the skill you ask when you don't yet know which skill to ask. Tell it what you want in ordinary words — "add checkout to my app", "take my idea to launch" — and it either names the one specialist that owns it and gets out of the way, or lays out the shortest run of lifecycle stages that actually gets there. Most products don't need all fourteen skills, so it says which ones it is skipping and why. Everything a run produces lands in one digital-product/ folder with a thin LEDGER.md, so the next session picks up from disk instead of memory. It owns the seams and the sequence — none of the domains. Its first duty is telling you when you don't need it.

# ordinary words — no flags, no fixed pipeline /digital-product I want to build a scheduling app — which skills do I need, and in what order?

runs onClaude CodeCodexCursorAntigravityopencodeGrok BuildHermes

Two behaviours, one skill. The animation traces both — a single request landing on one node, then a bigger one drawing a path and ticking off what it skipped. The sections below are the map it routes across.

The eight stages

These are numbered because the order is real: each stage consumes what earlier stages produce. That is a default dependency order, not a mandate to run all eight — and work enters wherever your situation already is. A running product asking "why is churn up" enters at Improve and skips nothing that matters.

01DefineThe problem, the user, the business model, the spec.product
02DesignThe experience, ending in a frontend handoff.design
03ShapeBoundaries, contracts, budgets — between Define and Build.architecture
04BuildFive peers, chosen by what the product actually is. They can run in parallel once Shape has drawn the contracts.frontendbackenddataaiautomation
05AssureIndependent verification and the ship decision. Writes no tests.quality
06RunDeploy, observe, respond, pay for, eventually decommission.operate
07ImproveExperiments and diagnosis; keeping the customers you have.growthsuccess
08DistributeCreate and capture demand; convert it.marketingsales
The last two are not "after" Run in calendar time. A live product cycles through Improve and Distribute continuously. The dependency claim binds Improve only — there must be something running before there is something to improve. Distribute can, and often should, precede launch entirely: marketing ships an overlay written for exactly the pre-launch, no-list, no-following reader, and plans launch as an event rather than an afterthought.

Where you enter is set by what exists, not by the numbers. Idea and nothing built → Define. A spec but no design or system → Design and Shape, concurrently. An inherited codebase with no docs → Shape first, which reads the current state as the state to evolve and says plainly what is undocumented. A diagnosis question does not restart the lifecycle.

The fourteen skills

Each one is an independently installable agent skill with its own router, its own references, and its own guide — built and released on its own before this composer existed. The shape of this map is the family's real shape: Build carries five peers, Assure and Run carry one each. Follow any card to that skill's site.

colour, throughout this page routed available, not routed skipped, with a reason

Install only what you need. Each one installs on its own with npx skills add gabros20/<pack>-skill -g -y, and works with no composer present. The composer detects what is installed and names the exact command for anything missing, then continues with what exists. There is a one-command family installer with lifecycle-shaped sets — --set core, --set build, --set all — but all fourteen is a real cost, not a free default: roughly 2.4k tokens of always-on skill descriptions in every session, whether or not a stage ever reaches them.

What it leaves out

The composer's job is subtraction. A fourteen-skill plan for a landing page is the composer failing, not being thorough. Four honest minimal paths, with every stage it does not run named and reasoned — because a stage nobody mentions reads as coverage that never happened.

A marketing site

productdesign frontendquality operatemarketing
  • backend · data · aino server, no analytical plane, nothing model-powered — unless the site grows those needs.
  • sales · successthere is nothing to sell against and no account to keep.

A solo-founder SaaS MVP

productdesign architecturefrontend + backend qualityoperate
  • growthno users to measure yet — growth's own feasibility gate would correctly decline tests that can't be answered.
  • salesits existence gate typically returns self-serve-only at MVP price points; it gates on deal value and purchasing friction, not on scale.

architecture runs thin here — one decision record may be enough — and marketing's pre-launch work runs alongside Build rather than waiting for it.

Adding an AI feature

productarchitecture ai + backendquality operate
  • designonly if the feature adds no new surface; a new one puts Design back in.
  • the restDefine is scoped to the feature, and Shape covers the contract and threat model for the new surface only.

Internal automation

automation
  • everything elseone skill, alone. Where a business rule already exists in writing, automation cites the pack that owns it rather than recapturing it — its own process-capture skip rule.

This is the shape most requests actually have. Route and stop.

The failure this guards against. Work entering at Build on an unvalidated idea is the most expensive way to discover the problem was wrong. The composer names the risk, offers Define scoped to a day, and — if you decline — records that choice in the ledger rather than quietly proceeding.

What the composer itself does

It produces routing decisions, stage plans, ledger entries, and handoff glue. Never a PRD, a design, a line of production code, a test verdict, or a forecast. The moment work becomes domain work, the named specialist does it — in that pack's own voice, loaded at that moment and not before.

Route, and stop

If a request maps to exactly one skill, the composer names it, says why in one line, and proceeds with that skill. No stage plan is built around a one-skill job.

Specialist packs are loaded one at a time, on entering their stage — never preloaded as a family. If a needed pack isn't installed, the composer says so, names the exact install command, and continues with what exists.

The ledger is the memory

All family output lands in a visible, committed digital-product/ folder at the repository root — one subfolder per pack, created on first use, source code never in it. State lives in LEDGER.md: one line per entry, pointers not narrative.

Stage: Assure
Entry: Define — an idea, nothing built
Skipped: Improve — no users yet
Decisions: one line, owner pack
Artifacts: path — draft | agreed |
          superseded by <path>
Next: one concrete action

A ledger you have to scroll to answer "where are we?" has failed. Supersede, never delete — what was believed and when is part of the record.

Contested stays contested

Boundary questions are answered from a dated registry, not re-litigated. Some seams the family deliberately left open — flattening one to give a tidier answer breaks a shipped pack that checks the disagreement as an invariant.

  • dunning → product 2026-08-03 — ruled, cited to the pack that claims the mechanism in its own voice.
  • retention: growth reads the trend, success owns the figure 2026-08-03 — ruled, split down the middle.
  • renewal workflow ↔ expansion-sale close opensuccess and sales hold incompatible positions; both are relayed intact, and neither the composer nor either pack adjudicates.

The registry also carries vocabulary law — "discovery call" is sales's, bare "discovery" is product's; deploy, release and launch are three events operate refuses to merge — and one graceful mis-route left unfixed on purpose, because tightening it would misroute the adjacent request instead.

Coordination, at the lowest cost that fits

Escalate only on demonstrated need, never on ceremony. The chosen mode and its one-line justification go in the ledger.

mode 1 in-contextdefault Read the pack, do the stage's work in its voice, land the artifacts, append the ledger, move on. Nothing else. For sequential lifecycle work this beats agents outright: full shared context, no handoff loss, no dispatch overhead. cost — zero
mode 2 native subagents Only when two or more stages are genuinely independent — no shared files, no ordering — and the host can spawn them. One brief out, one report back, ledger appended as each lands. If two stages share a file, they were never independent. cost — one brief + one report per stage
mode 3 hand off to orchestrate Opt-in by you, never inferred from task size. The composer writes a plan file and gets out of the way. Sophisticated orchestration is its own layer — the separate orchestrate skill, with nine strategy presets, review gates, model routing, isolation and monitoring. The composer never re-implements any of it. cost — budgeted in that separate skill

After any mode, the ledger is reconciled from the disk — not from the report. Updating state from a summary records artifacts that may not exist. Two dispatch rules travel with mode 2: pin a model on every dispatch, and never spawn a duplicate of a running stage-agent — check its disk output first, then nudge once.

Start here

Install the composer, then the specialists you actually need. It's a plain SKILL.md router — no flags, no config, no fixed pipeline — so it activates on ordinary phrasing rather than a fixed command.

# the composer npx skills add gabros20/digital-product-skill -g -y # the specialists you need — same shape, one at a time npx skills add gabros20/product-skill -g -y npx skills add gabros20/backend-skill -g -y # or the whole family in one command — sets follow the lifecycle curl -fsSL https://raw.githubusercontent.com/gabros20/digital-product-skill/main/scripts/install-family | bash -s -- --set all # --set all | core | define | design | shape | build | assure | run | improve | distribute # …or an explicit list: --set product,design # update only the packs that moved npx skills update quality operate -g -y # or from a clone — installs into any of 8 client targets git clone https://github.com/gabros20/digital-product-skill cd digital-product-skill && ./install.sh claude # targets: claude | codex | agents | cursor | antigravity | opencode | grok | hermes | all # use — ordinary words, any host /digital-product which skill owns "our onboarding emails aren't converting"? /digital-product plan my idea end to end, and tell me what you're skipping /digital-product who owns the renewal — success or sales?

The same install runs on any Agent Skills host. Codex triggers with $digital-product; a manual copy into any client's skills directory also works.

what's in the repo
skills/digital-product/ the skill: SKILL.md (router) + 4 references/ lifecycle-map · artifact-convention · coordination · seam-rulings evals/ 4 suites, 31 cases — activation (14), traversal (8), output (6), compression-ablation (3); repository-only, never installed scripts/ install-family (the composer + any subset, each pack from its own repo) · check-sync · lint-skill skills-lock.json project-scoped install of all 15 via experimental_install docs/ the family's architecture decisions and lifecycle research (each pack's own corpus lives in that pack's repo) site/ this page README.md · SOURCES.md · AGENTS.md · LICENSE

The eval prompts deliberately voice the confusions this skill exists to handle — asking it to settle a contested seam, or to parallelize everything — and the assertions define the disciplined response. More detail: SKILL.md · SOURCES.md, which records the unusual thing about this pack: its research corpus is the family itself, read in released form.