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?
Named, not silently dropped. "no analytical data plane at this scale",
"nothing model-powered in the product", "no users to measure yet", "the existence gate would
decline an assisted sales motion at this price point". A silent skip reads as coverage that
never happened. marketing's pre-launch work runs alongside the build rather than
waiting for it.
Stage: Build · Updated: 2026-08-04
Entry: Define — an idea, nothing built.
Path: Define → Design → Shape → Build → Assure → Run
Skipped: Improve — no users to measure yet.
Next: draw the API contract before frontend and backend split (architecture)
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
product→design→frontend→quality→operate→marketing
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.
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
product→architecture→ai + backend→quality→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, automationcites 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 yetDecisions:one line, owner packArtifacts: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 → product2026-08-03 — ruled, cited to the pack that claims the mechanism in its own voice.
retention: growth reads the trend, success owns the figure2026-08-03 — ruled, split down the middle.
renewal workflow ↔ expansion-sale closeopen — success 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.
Route to one skill when one sufficesComposition is overhead. The composer's first duty is knowing when it is not needed.
The ledger is the memoryAppended before moving on. On resume, trust the ledger and the disk over recollection.
Seams come from the registryA ruled seam is cited with its date; a contested seam is presented as contested.
Artifacts on disk are the interfaceA stage hands the next stage file paths, never a summary that replaces the artifact.
Never absorb a specialist's knowledgeIf an answer needs a pack's content, load that pack — don't paraphrase it from a routing table.
State what was skippedA plan names the stages deliberately not run, and why. A silent skip reads as coverage that never happened.
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 1in-contextdefaultRead 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 2native subagentsOnly 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 3hand off to orchestrateOpt-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-rulingsevals/4 suites, 31 cases — activation (14), traversal (8), output (6),compression-ablation (3); repository-only, never installedscripts/install-family (the composer + any subset, each pack fromits own repo) · check-sync · lint-skillskills-lock.jsonproject-scoped install of all 15 via experimental_installdocs/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.