Install
$ agentstack add skill-sorawit-w-agent-skills-validation-canvas ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Validation Canvas
Produce a rigorous Lean Canvas + Value Proposition Canvas combined artifact from founder inputs. Each block is a stress-tested belief, not a template field. The canvas is the primary deliverable; the interview that produces it is where most of the value lives. The job here is declarative — what do we believe? — and is the upstream half of validation. The downstream half (what have we proven?) is owned by the riskiest-assumption-test skill that runs after this one.
What this skill produces
Always produced under the resolved canvas root (see Phase 0.0 for path resolution; default is docs/canvas/ for solo runs, docs/startup-kit/canvas/ when invoked via orchestrator):
validation-canvas.md— canonical, editable Markdown with two top-level
sections: ## Lean Canvas (nine blocks per Maurya) and ## Value Proposition Canvas (six blocks per Osterwalder), plus a ## Stress Tests section listing the assumptions most likely to fail. Headings are load-bearing — pitch-deck, riskiest-assumption-test, and startup-grill grep them by name.
validation-canvas.html— single self-contained HTML file rendering the
Lean Canvas grid (top) and the VPC fit diagram (bottom) visually. Opens in any browser, prints cleanly to PDF, zero network dependencies.
Both files carry the same content — the HTML is the visual primary; the Markdown is the source of truth founders edit as the business evolves.
What this skill is NOT
- Not a 9-block Osterwalder Business Model Canvas. That's a Series-A operating
plan tool. This skill ships the Lean Canvas (Maurya) — Problem, Customer Segments, UVP, Solution, Channels, Revenue Streams, Cost Structure, Key Metrics, Unfair Advantage — because that's the right altitude for an idea-stage founder. If a board or grant explicitly requires the Osterwalder grid (Key Resources, Key Activities, Key Partners, Customer Relationships), use team-composer with @startup_strategist for a discussion-grade fill.
- Not an assumption-testing skill. Naming what you believe is half the job.
Naming what you've proven is riskiest-assumption-test's job — a separate step that runs after this one. Do not bundle the two.
- Not a pitch deck builder. Pitch construction belongs to
pitch-deck. - Not a financial model. Revenue Streams and Cost Structure are structural
(how money flows), not quantitative (how much and when).
- Not market research. The canvas records the founder's current thinking. It
does not go validate it. Validation is the next step.
- Not a competitive-analysis skill. SWOT, Porter's Five Forces, and Wardley
mapping are explicitly out of scope — wrong altitude / wrong stage / overlap with startup-grill.
- Not a substitute for domain expertise. In regulated domains (fintech, health,
education with minors), the canvas surfaces the right questions but does not answer regulatory ones — escalate to team-composer with @legal_compliance_advisor.
Skill Boundaries
This skill intentionally overlaps with team-composer (@startup_strategist is active there too) but differs in deliverable:
- Use
validation-canvaswhen: the founder wants a persistent artifact they
can return to, edit, and share. The Lean Canvas + VPC structure is the load-bearing feature.
- Use
team-composerwith@startup_strategistwhen: the founder wants a
discussion on one narrow question (pricing model, channel strategy, partner selection) without committing to a full canvas. Discussion-grade, not artifact-grade.
> Companion plugin: brand-workshop. If a brand artifact exists at > /DESIGN.md per the conventions doc, the HTML canvas adopts > the brand's color tokens from it. If not, falls back to neutral defaults. > > Design token spec: DESIGN.md follows the Google Labs spec (version: alpha, current as of 2026-05). Read colors.primary from the YAML front matter at the top of the file to extract the brand's primary color for --canvas-accent.
> Pipeline placement. This skill is step 2 of 5 in the startup pipeline: > brand-workshop → validation-canvas → riskiest-assumption-test → > pitch-deck → startup-grill. See [references/folder-contract.md](references/folder-contract.md) > for the inter-step contract, gate weights, and loop-back protocol.
The Two Canvases
Claude must internalize the structure of both canvases before interviewing.
Lean Canvas (Maurya) — nine blocks
The right altitude for an idea-stage founder. Replaces BMC's Key Activities / Key Resources / Key Partners / Customer Relationships with Problem, Solution, Key Metrics, and Unfair Advantage — the things that actually decide whether the idea survives contact with reality.
┌───────────────────┬──────────────────┬──────────────────┬──────────────────┬───────────────────┐
│ Problem │ Solution │ Unique Value │ Unfair Advantage │ Customer │
│ │ │ Proposition │ │ Segments │
│ (top 3 problems) │ (top 3 features) │ (single, clear, │ (can't be easily │ (target users │
│ │ │ compelling) │ copied/bought) │ + early adopters)│
│ ├──────────────────┤ ├──────────────────┤ │
│ │ Key Metrics │ │ Channels │ │
│ │ (key activities │ │ (path to │ │
│ │ measured) │ │ customers) │ │
├───────────────────┴──────────────────┴──────────────────┴──────────────────┴───────────────────┤
│ Cost Structure │ Revenue Streams │
└─────────────────────────────────────────────────┴──────────────────────────────────────────────┘
Value Proposition Canvas (Osterwalder) — six blocks, two sides
Forces alignment between what the customer needs (Customer Profile) and what you offer (Value Map). Run as a second pass after the Lean Canvas.
Customer Profile (right circle) Value Map (left square)
┌──────────────────────────────┐ ┌──────────────────────────────┐
│ Customer Jobs │ │ Products & Services │
│ (functional, social, │ ◄───► │ (the offering) │
│ emotional jobs) │ │ │
├──────────────────────────────┤ ├──────────────────────────────┤
│ Pains │ ◄───► │ Pain Relievers │
│ (frustrations, obstacles, │ │ (how the offering reduces │
│ risks) │ │ each pain) │
├──────────────────────────────┤ ├──────────────────────────────┤
│ Gains │ ◄───► │ Gain Creators │
│ (outcomes, benefits │ │ (how the offering produces │
│ sought) │ │ each gain) │
└──────────────────────────────┘ └──────────────────────────────┘
Fit Check
Fit check: for each Pain, name the Pain Reliever. For each Gain, name the Gain Creator. Pains without relievers and Gains without creators are red flags — they belong in Stress Tests.
See references/canvas-blocks.md for the deep definition of each block, canonical examples, and the stress tests that surface shaky assumptions.
Phase 0: Experience-Adaptive Intake (RUN FIRST, BEFORE ANY CANVAS WORK)
Goal: calibrate the rigor and tone of the interview to the founder's actual experience level. A first-time founder needs definitions and examples; a repeat founder needs push-back, not teaching.
Step 0.0 — Path resolution + manifest awareness (v2.2.0+)
Resolve the canvas root once at invocation, in this precedence order (canonical chain):
- Explicit
output_dirarg (passed bystartup-launch-kit) → use as-is. STARTUP_KIT_DOCS_ROOTenv var set →${STARTUP_KIT_DOCS_ROOT}/canvas/.- Smart default —
docs/startup-kit/exists →docs/startup-kit/canvas/.
Surface the smart-default notice: "Writing to docs/startup-kit/canvas/ (smart default — docs/startup-kit/ exists). Set STARTUP_KIT_DOCS_ROOT=./docs to write standalone instead."
- Solo fallback →
docs/canvas/.
Manifest awareness. Look for kit-manifest.json at /kit-manifest.json first (e.g., docs/startup-kit/kit-manifest.json); fall back to the working-directory root for backward compat. If found at the legacy path, surface a one-line migration suggestion. Use it as a hint, never as a bypass:
- Intake-cache (special case for this skill): if the manifest's
intake_answers cache is populated (the orchestrator already asked the 3-question intake), present the cached answers and ask the founder to confirm or update them — do NOT silently skip Step 0.1. Single code path through Phase 0; manifest is a hint that lets you start with defaults. Example prompt: "Manifest says: repeat founder, no domain experience, has segment experience → focused mode. Confirm, or update any of these?"
- If the manifest lists
validation-canvasascompletedwith a recent
mtime, surface that fact: "Manifest says you ran validation-canvas on [date]. Update mode (revise specific blocks per loop-back protocol), fresh run, or skip to the next step?"
- Existing-canvas branch. If a
validation-canvas.mdalready exists,
inspect its top for the machine-inferred seed marker — the HTML comment ` that startup-audit writes at the head of a seed (defined in startup-audit/references/inference-mapping.md`). Present → route to Confirm-inferred-seed mode; absent (founder-authored) → route to Update mode. See "Which mode?" below.
- Manifest read failures (corrupt JSON, missing fields) are non-fatal — log
the issue inline and proceed as if no manifest exists.
After this skill ships its artifacts (Phase 3 — render & ship), if a manifest exists, append/update this skill's entry. Use atomic write (write .tmp, then rename). Increment the iterations counter on update-mode runs. If the manifest doesn't exist, do NOT create it — that's the startup-launch-kit orchestrator's job. See [startup-launch-kit/references/manifest-schema.md](../startup-launch-kit/references/manifest-schema.md) for the schema.
Step 0.1 — Scan context for experience signals
Before asking any calibration questions, scan the conversation context, working directory, and any provided materials for signals on three dimensions:
- Founding history. Has the founder run a startup that reached paying
customers? Look for: prior validation-canvas.md files, memory entries, explicit statements ("at my last startup…"), LinkedIn-style language ("3rd time founder", "ex-Stripe").
- Domain experience. Has the founder worked professionally in this idea's
domain? Look for: stated work history, technical depth in the idea description, industry-specific vocabulary used naturally.
- Customer-segment experience. Does the founder have direct experience with
the customer they're targeting? Look for: "I am the customer" framings, anecdotes from the segment, prior roles inside the segment.
Step 0.2 — Ask only the delta
For each of the three dimensions:
- Clear signal → use it silently. Do not ask the question.
- Ambiguous or missing signal → ask the question.
The three calibration questions, asked verbatim when needed:
- *"Have you founded or co-founded a startup that reached paying customers
before?"*
- "Is this idea in a domain you've worked in professionally?"
- "Do you have direct experience with this customer segment?"
Hard rule — ask immediately at invocation, BEFORE canvas work begins. Never ask mid-canvas. Never ask post-canvas. Calibration is a Phase 0 gate; commit to the inferred mode and adjust through behavior.
Step 0.3 — Map answers to mode
The three answers form a 2×2×2 matrix. Map to one of three modes:
| Founding history | Domain | Customer | Mode | |---|---|---|---| | No | No | Either | Guided (full walkthrough, definitions, ~60–90 min) | | No | Yes | Either | Focused (lighter scaffolding, emphasize underweighted boxes) | | Yes | Yes | Either | Compressed-with-Challenge (rapid-fill ~15–20 min, push back hard) | | Yes | No | Either | Focused (founder knows process, needs domain scaffolding) | | No | No | Yes | Focused (founder knows the customer, needs structural scaffolding) | | Yes | Yes | Yes | Compressed-with-Challenge (push back hardest — risk of pattern-matching from prior) |
Mode descriptions:
- Guided — full walkthrough. Define each block before asking. Offer 2–3
examples per block from references/canvas-blocks.md. Ask 2–3 questions per block. Pace: ~60–90 minutes for a first pass.
- Focused — lighter scaffolding. Skip definitions for blocks the founder
clearly understands. Emphasize commonly underweighted boxes: channels and cost structure for ex-engineers; key metrics and customer segments for ex-designers; unfair advantage and problem for ex-PMs. Pace: ~30–45 minutes.
- Compressed-with-Challenge — rapid-fill. The skill's job shifts from
teaching to challenging. Accept short answers but push back on glib ones. Pace: ~15–20 minutes.
Step 0.4 — Confirm mode in one line
Before proceeding to canvas work, confirm the inferred mode in one line so the founder can correct you. Examples:
- "Treating this as a repeat-founder session — say so if I should slow down."
- *"You haven't worked in this segment before, so I'll spend more time on the
Customer Profile — say so if you want me to skip ahead."*
- "First-pass guided mode. I'll define each block as we go. Stop me anytime."
Then proceed to Phase 1.
Hard rules for Phase 0
- Never delegate intake to
grill-with-docs. That skill is for stress-testing
plans against project docs — wrong job, wrong tone, wrong target for founder calibration.
- Mode sets default rigor; observed answer quality overrides it. A
self-declared "repeat founder" giving glib answers gets push-back regardless of declared mode. The 3-question intake calibrates the opening posture, not a permanent contract.
- One sharp exception — a repeat founder doing a near-identical startup to
a prior one (same segment, same UVP, just a different brand) can skim the canvas. Flag this as the exception, not the norm: "You've shipped this canvas before for a similar idea — I'll move fast and only stop on real deltas."
Phase 1: Discovery (Founder Interview)
Goal: Extract enough raw material to fill each block substantively. A canvas filled with "freelancers and small businesses" in Customer Segments is worthless — the job is to force specificity.
Role setup
Run the interview in first-person voice with these roles active. If the user invokes team-composer separately, skip duplicates.
| Role | Lens | |------|------| | @startup_strategist | Workshop lead. Asks block-by-block. Pushes for specificity and internal consistency. | | @vc_partner | Read-test. "Could a Series A partner understand this in 90 seconds?" Flags handwaving on Revenue / Traction adjacency. | | @finance_manager | Stress-tests Revenue Streams and Cost Structure. Flags missing unit economics or undefined payment triggers. | | @senior_product_manager | UVP ↔ Customer Segment alignment. Flags "value props" that are really feature lists. |
Le
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: sorawit-w
- Source: sorawit-w/agent-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.