agentleFS
cenconq25cenconq25/claude-code-app-studio/.claude/skills/prototype/SKILL.md

prototype

Skill40 starsChanged 7 months agoMITView on GitHub

Rapid prototyping workflow that deliberately skips standards to validate a risky concept fast. Produces throwaway code and a structured prototype report. Use to retire the riskiest assumption from /brainstorm before committing to architecture, or to validate a novel mechanic before adding to the sprint.

194 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use playtest-report, team-audio and 2 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • CoralGameSkill

    playtest-report

    Generates a structured playtest report template or analyzes existing playtest notes into a structured format. Use this to standardize playtest feedback collection and analysis.

    Also in 12 projects that use this

  • CoralGameSkill

    team-audio

    Orchestrate audio team: audio-director + sound-designer + technical-artist + gameplay-programmer for full audio pipeline from direction to implementation.

    Also in 12 projects that use this

  • +2 more from CoralGame

The file

We split this skill into the rules it gives an agent

8 rules. 0 are common, 7 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 179 edited versions we read keep these.

  • 7

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Do not run for:

    line 28
  2. Distinctive:

    If no argument was passed, ask:

    line 47
  3. Distinctive:

    Time budget: ask the user (1-3 days typical).

    line 80
  4. Distinctive:

    Write inline comments noting why each shortcut is acceptable for a prototype.

    line 117
  5. Distinctive:

    Run the prototype on the target device(s).

    line 123
  6. Distinctive:

    If user testing is involved, run with at least 3 testers.

    line 130
  7. Very specific:

    Ask: "Approve the report and write to prototypes/<name>/REPORT.md?"

    line 204
  8. Distinctive:

    If any of these, surface in the report's Notes section as a process learning.

    line 233

“Common” is measured: kept by at least 6 in 10 of the 179 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Prototype

A prototype is a question the codebase poses to reality. It is explicitly not production code: no tests, no review, no PRD, no ADR, no manifest pinning. The output is a one-page report that tells the team whether the assumption holds — and whatever was learned along the way.

Outputs:

  • prototypes/<name>/ — the prototype's code (intentionally walled off from src/)
  • prototypes/<name>/REPORT.md — what was built, what was learned, what to do with the learning

Purpose / When to Run

Run when:

  • The concept doc's "Riskiest Assumption" needs validation before architecture commitment
  • A novel mechanic or framework feature needs to be tried before adding to a PRD
  • A perf concern needs a quick measurement before locking budgets
  • A library / SDK needs vetting before an ADR commits to it

Do not run for:

  • Features that already have PRDs and ADRs (use /dev-story in the second skill set)
  • Bug investigations (use the bug-fix workflow in the second skill set)
  • Refactors of existing code (those are real stories)

Inputs

  • Assumption to test (required, free text)
  • Optional: design/concept.md Section 8 (Riskiest Assumption) for context

Outputs

  • prototypes/<name>/ — code
  • prototypes/<name>/REPORT.md

Phase 1: Frame the Question

If no argument was passed, ask:

  • Prompt: "What assumption are you testing?"
  • Free text — capture as kebab-case for the prototype name.

The framing matters. Use AskUserQuestion:

  • Prompt: "Re-frame the assumption as a yes/no question. Pick or write:"
  • Options: derived from the input — e.g., for "people will tap during a session":
    • Q: Can users complete the core action in <3 seconds while doing something else?
    • Q: Does the gesture work mid-activity without misfires?
    • Custom (free text)

The question becomes the prototype's success criterion.


Phase 2: Define Success / Fail Criteria

Use AskUserQuestion:

  • "What evidence would prove yes?" — free text
  • "What evidence would prove no?" — free text

Pin both. The prototype is done when one or the other is observed — not when "the code runs."

Example:

  • YES: "User completes the action in <3s in 80% of test runs across 5 testers."
  • NO: "Median completion >5s, or misfire rate >20%."

Phase 3: Constrain the Prototype

The point is to retire the question, not to build a feature. Constrain explicitly:

  • Time budget: ask the user (1-3 days typical). Anything over 3 days is no longer a prototype — it is a feature in disguise.
  • Code quality bar: "throwaway" — explicit non-goals: tests, accessibility, error handling, dark mode, localization, performance optimization.
  • Scope: the smallest demo that shows yes/no.
  • Hardware target: which device(s) this needs to run on. Often a single primary device.

Phase 4: Pick an Approach

If the prototype lives in this repo's framework, use the existing framework setup. If the prototype needs a different stack (e.g., a quick HTML/JS sketch to validate a UX gesture before reimplementing in RN), allow it — call out the cross-stack mismatch in the report.

For mobile-specific prototypes, common patterns:

  • Static UX prototype — Figma click-through with no code (the skill can produce a Figma-style spec instead of code)
  • Throwaway native — quick SwiftUI / Compose / RN screen wired only to demonstrate the interaction
  • Library spike — install the SDK, run the canonical demo, measure
  • Performance spike — write the smallest possible reproduction; measure cold start / TTI / frame rate
  • Backend stub — mock the API; validate the front-end behavior under known responses

Pick one with the user and document the choice.


Phase 5: Build

Set up prototypes/<name>/. Inside it:

  • README.md (one paragraph: question + how to run)
  • A subdirectory or files for the actual prototype code
  • A .gitignore at this level if needed

Build the smallest demo that answers the question. Skip:

  • Tests (this code dies)
  • Accessibility (intentional non-goal)
  • Error handling (happy path only)
  • Localization
  • Dark mode
  • Performance tuning beyond what is measured

Write inline comments noting why each shortcut is acceptable for a prototype.


Phase 6: Run the Test

Run the prototype on the target device(s). Capture observations:

  • Did the success criterion hold?
  • What was measured (time, accuracy, perceived feel)?
  • What surprised the testers?
  • What edge cases surfaced that the PRD will need to address?
  • What technical realities surfaced (a library limitation, an OS quirk)?

If user testing is involved, run with at least 3 testers. Capture each tester's session quickly — verbatim quote, time-to-action, any misfires.


Phase 7: Write the Report

prototypes/<name>/REPORT.md:

# Prototype Report: <name>

> **Question**: <the framed question from Phase 1>
> **Run on**: <date>
> **Time spent**: <hours / days>
> **Verdict**: <YES / NO / INCONCLUSIVE>

## Setup
- Stack: <RN / Flutter / native / web / Figma>
- Device(s): <list>
- Testers: <count, optional names>

## Method
<one paragraph — what was built, how it was tested>

## Success / Fail criteria (pre-defined)
- YES if: <criterion>
- NO if: <criterion>

## Findings
- <observation 1, with measurement if applicable>
- <observation 2>
- <observation 3>

### Quotes (if user-tested)
> "<verbatim>" — Tester A
> "<verbatim>" — Tester B

### Measurements
| Metric | Result | Target |
|--------|--------|--------|
| Time to action | 2.4s median | <3s |
| Misfire rate | 12% | <20% |

## Verdict
<YES / NO / INCONCLUSIVE>: <one paragraph explaining why the data leads to this verdict>

## What this means

For YES:
- Proceed with: <PRD section, ADR, sprint commitment>
- Update concept.md Section 8 to mark the assumption retired
- Capture lessons in the relevant PRD's "Implementation Hooks" section

For NO:
- Do not pursue this approach. Alternatives that emerged: <list>
- Update concept.md Section 8 with the new riskiest assumption
- Re-run `/brainstorm` if the core JTBD is at risk

For INCONCLUSIVE:
- More data needed. Specifically: <what would resolve it>
- Run a second prototype focused on <narrower question>

## Lessons (mobile-specific)
- iOS: <anything platform-specific>
- Android: <anything>
- Framework: <any version-specific gotchas to record in `breaking-changes.md`>
- Performance: <any numbers to feed into the architecture's performance budgets>

## What lives on after this prototype
- This code is throwaway. Do **not** copy it into `src/`.
- The findings live on in <PRD path / ADR / concept doc update>.
- The questions answered are recorded above.

Ask: "Approve the report and write to prototypes/<name>/REPORT.md?"


Phase 8: Hand Off

Print:

"Prototype complete. Verdict: <X>. <Recommended action — write a PRD, write an ADR, update concept doc, abandon, run another prototype>."

Update production/session-state/active.md:

  • Note the prototype's verdict
  • Pointer to next-action skill

Use AskUserQuestion:

  • For YES: Update concept.md to retire the assumption, Author the PRD via /design-system, Author an ADR if a technical choice was validated
  • For NO: Update concept.md with the new riskiest assumption, Run /brainstorm to find an alternative
  • For INCONCLUSIVE: Run a follow-up prototype with a narrower question

Phase 9: Anti-Patterns

The prototype is failing its purpose if:

  • The code is being copy-pasted into src/
  • The "prototype" took 2+ weeks
  • The success criterion was not defined before building
  • The team is treating the prototype as a feature
  • The report is missing the verdict

If any of these, surface in the report's Notes section as a process learning.


Quality Gates

  • The Question is a yes/no
  • Pre-defined YES and NO criteria are written before the build
  • Verdict is YES, NO, or INCONCLUSIVE — never "the code works"
  • Code lives in prototypes/, not in src/ or lib/
  • Time spent is recorded honestly

Examples

/prototype gesture-during-session

  • Question: Can users tap to log mid-activity without breaking flow?
  • Stack: throwaway SwiftUI app
  • 5 testers, 3-second target
  • Median 2.4s, misfire 12%
  • Verdict: YES
  • Recommendation: write the PRD section confidently; the assumption is retired

/prototype ar-anchor-stability

  • Question: Does ARKit hold the anchor through a 10-minute session?
  • Stack: throwaway iOS app
  • 1 device, 5 sessions
  • Anchor drift average 0.8m at 10 min
  • Verdict: NO
  • Recommendation: drop AR anchor approach; explore alternatives. Update concept doc.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.