|
| 1 | +--- |
| 2 | +name: reflect |
| 3 | +description: Use when a VibeYoga participant wants to critically evaluate their hackathon project or harness idea — surveys prior art and context first, then walks through novelty, acknowledgment, uniqueness, human benefit, MVP scope, validation tests, and the skill-vs-program choice in brainstorming style. Trigger phrases include "reflect on my project", "is my idea worth building", "what should my MVP cover", "help me validate this", "should this be a skill or a program". |
| 4 | +--- |
| 5 | + |
| 6 | +# Reflect |
| 7 | + |
| 8 | +A guided reflection for a VibeYoga hackathon project. The builder leaves with: a prior-art map, an acknowledgment block, a defensible uniqueness claim, a concrete user + value story, a trimmed MVP, a validation test set, and a justified skill-vs-program decision. |
| 9 | + |
| 10 | +One project per session. Re-invoke for a new project. |
| 11 | + |
| 12 | +## Operating rules |
| 13 | + |
| 14 | +**Survey before asking.** Before each phase's questions, do a cheap survey of what's already knowable — read the repo, check commits, web search for prior art, look at related skills. Come back with findings, then ask questions that build on them. Never ask the builder something the survey already answered. |
| 15 | + |
| 16 | +**Brainstorming style — one question at a time.** |
| 17 | +- Prefer multiple-choice (`AskUserQuestion`) over open-ended where options exist. |
| 18 | +- One question per message. If a topic needs more, break it into separate questions. |
| 19 | +- Where helpful, propose 2-3 options with trade-offs and your recommendation, then ask which fits. |
| 20 | +- Wait for the answer before moving on. |
| 21 | + |
| 22 | +**Skip what doesn't fit.** If the survey or an earlier answer makes a phase irrelevant (e.g., the project is a pure research artifact with no "user," or prior-art search returns nothing and the builder can confirm it's a genuinely new niche), say so and skip. Note the skip in the final summary. |
| 23 | + |
| 24 | +**Push back on vagueness.** "It helps researchers" is not an answer. "It saves my lab 2 hours per paper submission because X" is. Ask again. |
| 25 | + |
| 26 | +**Don't implement.** No code, no scaffolding, no file edits for the project under reflection. The output is clarity, not artifacts. |
| 27 | + |
| 28 | +## Phase 0 — Context survey (always) |
| 29 | + |
| 30 | +Before anything else, silently gather: |
| 31 | + |
| 32 | +1. **Repo state** — if the builder is in a project directory: `git log --oneline -20`, top-level `ls`, any `README.md`, `CLAUDE.md`, `docs/`, recent issues/PRs (`gh issue list`, `gh pr list`). |
| 33 | +2. **The project's own description** — look for a one-liner in the README, a pitch in an issue, or a draft in the conversation history. |
| 34 | +3. **Nothing found?** Ask the builder once: "Give me a one-sentence pitch and a link/path to anywhere you've written about this." Then proceed. |
| 35 | + |
| 36 | +Present a 2-4 line summary of what you found before moving on. This tells the builder you're grounded, and catches misunderstandings before they propagate. |
| 37 | + |
| 38 | +## Phase 1 — Novelty & prior art |
| 39 | + |
| 40 | +**Survey first.** Do 2-3 web searches for obvious keyword combinations around the project's core claim. Also search for relevant skills in the plugin ecosystem and obvious GitHub/PyPI/Julia/npm packages. Spend ~2 minutes, not 20. |
| 41 | + |
| 42 | +Present findings as a short table: name, one-line description, link, how close it is (exact overlap / adjacent / loosely related). |
| 43 | + |
| 44 | +Then ask **one** question: |
| 45 | +- If overlap found → `AskUserQuestion`: "For [closest match], are you (a) building on it, (b) competing with it, (c) replacing it, or (d) unaware of it until now?" |
| 46 | +- If nothing found → `AskUserQuestion`: "Search turned up nothing close. Is this because (a) the niche is genuinely new, (b) the search keywords are wrong — give me better ones, or (c) the problem might not be one people have?" |
| 47 | + |
| 48 | +**Output:** a prior-art table and the builder's stance on it. If (b) or (c) happens, loop once with better keywords or a sharper problem statement. |
| 49 | + |
| 50 | +## Phase 2 — References & acknowledgment |
| 51 | + |
| 52 | +**Skip if Phase 1 found no prior art AND the builder confirmed the niche is genuinely new** — note the skip in the summary. |
| 53 | + |
| 54 | +Otherwise, for each prior-art item the builder is building on or competing with, ask **one** `AskUserQuestion`: |
| 55 | +- "How will you acknowledge [X]? (a) README credit line, (b) formal citation, (c) inspired-by note, (d) fork lineage, (e) don't plan to — change my mind." |
| 56 | + |
| 57 | +**Output:** a draft `## Acknowledgments` block the builder can paste into their README. Generate it yourself from the answers; don't make the builder write it. |
| 58 | + |
| 59 | +## Phase 3 — Why new & what's unique |
| 60 | + |
| 61 | +**Survey first.** From Phase 1, identify the 1-2 closest prior-art items. Read their README/docs briefly so the uniqueness question isn't hypothetical. |
| 62 | + |
| 63 | +Ask **one** question at a time, in order: |
| 64 | + |
| 65 | +1. `AskUserQuestion`: "Given [closest prior art], the strongest reason to build a new one is usually: (a) different target user, (b) different workflow assumption, (c) different deployment/licensing constraint, (d) the existing one is abandoned or broken, (e) fundamentally different approach. Which fits yours?" |
| 66 | +2. Open-ended: "In one sentence, what is unique about yours that no existing tool has?" |
| 67 | +3. Stress-test (only if the uniqueness claim sounds cosmetic): "If the maintainer of [X] added [your unique feature] tomorrow, would your project still be worth building? Why?" |
| 68 | + |
| 69 | +If the stress test fails, flag it: "Your differentiator is cosmetic — [X] could absorb it in a week. Can we find a deeper one, or is the honest answer that this is a learning project?" A learning project is a fine answer; pretending it's not isn't. |
| 70 | + |
| 71 | +## Phase 4 — Human benefit & value |
| 72 | + |
| 73 | +**Survey first.** Look at the project description for who it's aimed at. If the repo has issues or discussions, skim for user personas. |
| 74 | + |
| 75 | +Ask, one at a time: |
| 76 | + |
| 77 | +1. Open-ended: "Who specifically does this help? Name one person (a real labmate, a participant, yourself last month) and the exact task they do." |
| 78 | +2. Open-ended: "What do they do today without your tool? How long does it take? What goes wrong?" |
| 79 | +3. `AskUserQuestion`: "Is this (a) creating new value — something that wasn't possible before, (b) reducing friction — something that worked but was painful, or (c) both?" |
| 80 | + |
| 81 | +**Skip if the project is explicitly a learning/playground project** with no target user — note the skip. |
| 82 | + |
| 83 | +**Red flag to surface:** if the answer is "AI can now do X 10x faster," ask whether the speedup actually changes the user's workflow, or is just a novelty. Speed without a workflow change is often not valuable. |
| 84 | + |
| 85 | +## Phase 5 — MVP feature set |
| 86 | + |
| 87 | +**Survey first.** Look at the repo's README, open issues, TODOs in code, any `docs/` folder — extract the feature list the builder already has in mind. Don't ask them to re-enumerate. |
| 88 | + |
| 89 | +Present the extracted feature list back to the builder: |
| 90 | +> "From your repo I see features A, B, C, D, E. Did I miss any?" |
| 91 | +
|
| 92 | +Then, for each feature, use `AskUserQuestion`: |
| 93 | +- "Feature A: (a) Core — without this, the MVP doesn't prove the unique value, (b) Nice-to-have — improves UX but not load-bearing, (c) Cut — defer or drop, (d) Let's discuss." |
| 94 | + |
| 95 | +Or batch the easy ones and only ask individually for the ambiguous ones. |
| 96 | + |
| 97 | +**Rule of thumb:** a hackathon MVP usually has 2-4 core features. If the builder tags 6+ as Core, push back: "That's likely too wide for the hackathon window. Which two are the ones a demo can't survive without?" |
| 98 | + |
| 99 | +**Output:** a bulleted MVP feature list tagged Core / Nice-to-have / Cut. |
| 100 | + |
| 101 | +## Phase 6 — Validation test set |
| 102 | + |
| 103 | +**Survey first.** Check whether the repo has any tests, fixtures, or example inputs. If so, reuse them as seed cases. |
| 104 | + |
| 105 | +Propose 4-6 validation tests, drawing from these shapes — present them as a concrete list and ask the builder to confirm/adjust one at a time or as a batch: |
| 106 | + |
| 107 | +- **Golden-path scenario**: a realistic task end-to-end. Specific input, specific expected artifact. |
| 108 | +- **Edge case**: an input the builder already knows is hard (empty, huge, ambiguous, missing dependency). |
| 109 | +- **Comparison baseline**: the same task without the harness, to see whether the harness actually helped. |
| 110 | +- **Regression case**: once something works, freeze the input/output pair as a test. |
| 111 | +- **User smoke test**: a real human (labmate, other participant) tries it cold. Does the skill trigger from the description alone? Do they understand the output? |
| 112 | + |
| 113 | +Each test must be: |
| 114 | +- **Concrete** — specific input, not vague "it should work." |
| 115 | +- **Falsifiable** — a clear outcome that counts as failure. |
| 116 | +- **Cheap** — runnable within the hackathon window; no user study. |
| 117 | + |
| 118 | +**Output:** a numbered test list. For each: input, expected outcome, what counts as failure. |
| 119 | + |
| 120 | +## Phase 7 — Skill or program? |
| 121 | + |
| 122 | +**Survey first.** Look at what the builder has already started. If there's a `SKILL.md`, they've committed to skill. If there's a Python package structure, they've committed to program. Note which and ask whether that choice was intentional. |
| 123 | + |
| 124 | +Then present the signal table and ask the builder to mark the row that matches their project most: |
| 125 | + |
| 126 | +| Signal | Points toward skill | Points toward program | |
| 127 | +|---|---|---| |
| 128 | +| Task requires judgment on each input | ✓ | | |
| 129 | +| Inputs are unstructured text / user intent | ✓ | | |
| 130 | +| Steps are deterministic and well-defined | | ✓ | |
| 131 | +| Output must be reproducible bit-for-bit | | ✓ | |
| 132 | +| Needs to run unattended / in CI | | ✓ | |
| 133 | +| The "hard part" is orchestration across tools | ✓ | | |
| 134 | +| The "hard part" is a specific algorithm | | ✓ | |
| 135 | +| Users will invoke it from a conversation | ✓ | | |
| 136 | +| Users will invoke it from a script | | ✓ | |
| 137 | + |
| 138 | +`AskUserQuestion`: "Based on the signals, your project leans [skill/program/mixed]. Does that match your intent? (a) Yes — keep as [current form], (b) No — I should switch form, (c) It's mixed — some parts should be code the skill calls, (d) Let's talk it through." |
| 139 | + |
| 140 | +If signals point to *program* but the builder is building a skill, name it: the LLM is overhead, not value, and a plain script would be faster, cheaper, and more reliable. Vice versa for the other direction. |
| 141 | + |
| 142 | +If the answer is "mixed" (usually correct for non-trivial harnesses), help them split: what's deterministic goes in code the skill calls; what needs judgment stays in the skill. |
| 143 | + |
| 144 | +**Output:** a one-line justification the builder can defend. Example: "This is a skill because the core work is classifying unstructured issue descriptions into topic groups, which needs judgment. The GitHub API calls and output formatting are a plain script the skill invokes." |
| 145 | + |
| 146 | +## Wrap-up: reflection summary |
| 147 | + |
| 148 | +Produce a compact summary in the conversation (not a file, unless the builder asks) with: |
| 149 | + |
| 150 | +1. **What it is** — one sentence. |
| 151 | +2. **Prior art & acknowledgment** — table + draft README block. Or "(skipped: genuinely new niche)". |
| 152 | +3. **What's unique** — one defensible sentence. |
| 153 | +4. **Who it helps & how** — specific person + task + value type. Or "(skipped: learning project)". |
| 154 | +5. **MVP features** — Core list only. |
| 155 | +6. **Validation tests** — numbered list. |
| 156 | +7. **Skill or program, and why** — the one-line justification. |
| 157 | +8. **Skipped phases** — which ones and why. |
| 158 | + |
| 159 | +Close with one honest question: |
| 160 | +> "Looking at this summary — if you had to cut the project in half, what would you cut?" |
| 161 | +
|
| 162 | +The answer often reveals what the builder actually cares about. |
| 163 | + |
| 164 | +## Notes |
| 165 | + |
| 166 | +- If the builder resists a phase ("I already know this"), ask them to state the answer out loud anyway. Reflection only works if it's spoken. |
| 167 | +- Do not start implementing during the reflection. The goal is clarity before code. |
| 168 | +- If answers to later phases change earlier phases (common in Phase 5 or 7), go back and update — don't pretend the earlier answers still hold. |
| 169 | +- Keep your own survey work silent unless it found something. Dumping raw search output wastes the builder's attention. |
0 commit comments