hackathon-test-generator
Goal
Generate a focused set of test cases and a lightweight test coverage plan that validates the demo flow without requiring full test suite completeness.
Trigger Conditions
Use this skill when:
- Core MVP features have been implemented and the demo flow is connected end-to-end
- Done criteria from
hackathon-code-implementerare available - The team needs to verify the demo will not crash before judging
- Manual verification steps are needed for a quick pre-demo sanity check
- Invoked once after the implementation phase stabilizes; re-invoke after any demo-path bug fix
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
mvp_features | string[] | Yes | MVP features from hackathon-scope-cutter |
mvp_demo_flow | object[] | Yes | Demo flow steps from hackathon-scope-cutter |
tech_stack | string[] | Yes | Technologies in use |
done_criteria | string[] | Yes | Done criteria from hackathon-code-implementer |
time_budget_hours | number | Yes | Hours available for testing |
Outputs
| Output | Description |
|---|---|
test_cases | Prioritized test cases covering the demo flow |
coverage_plan | What is tested vs. intentionally untested |
test_scaffolds | Minimal test stubs to start from |
manual_checks | Quick manual verification steps for demo readiness |
demo_blockers | Failure conditions that would break the demo |
Rules
- Prioritize tests that protect the
mvp_demo_flowabove all other coverage. - Generate at minimum one test per
done_criterion. - Mark any test not critical to the demo as
[NICE-TO-HAVE]. - Include at least one negative/edge case test per MVP feature.
test_scaffoldsmust use the testing framework standard for the primarytech_stacklanguage.manual_checksmust be completable in under 5 minutes total.- Any scenario that would cause a live demo failure must appear in
demo_blockers.
Output Format
test_cases:
- id: "TC-<number>"
feature: "<feature name>"
description: "<what is tested>"
type: "<unit|integration|e2e|manual>"
priority: "<critical|high|[NICE-TO-HAVE]>"
input: "<test input>"
expected_output: "<expected result>"
coverage_plan:
covered:
- "<area>"
intentionally_skipped:
- area: "<area>"
reason: "<why skipped>"
test_scaffolds:
- label: "<test name>"
language: "<language>"
snippet: |
<code>
manual_checks:
- step: <number>
action: "<what to do>"
pass_condition: "<what success looks like>"
demo_blockers:
- scenario: "<failure scenario>"
mitigation: "<how to prevent or recover>"
Example
Input:
mvp_features: ["GPT-4 check-in conversation", "Session memory", "Crisis escalation (mocked)"]
mvp_demo_flow:
- step: 2
action: "User describes recurring work stress"
outcome: "AI references last week's similar conversation from memory"
- step: 3
action: "User expresses hopelessness"
outcome: "AI surfaces crisis resource card"
tech_stack: ["Python", "FastAPI", "React", "Redis"]
done_criteria:
- "New chat session shows AI referencing previous session content"
- "Redis key contains non-empty summary after session ends"
time_budget_hours: 2
Output:
test_cases:
- id: "TC-01"
feature: "Session memory"
description: "AI references prior session context in a new session"
type: "e2e"
priority: "critical"
input: "Start session 1, say 'I'm anxious about exams'. End session. Start session 2."
expected_output: "AI opening references exam anxiety from prior session"
- id: "TC-02"
feature: "Session memory"
description: "Redis key is populated after session ends"
type: "integration"
priority: "critical"
input: "Complete one chat session"
expected_output: "redis.get('user:demo:summary') returns non-empty string"
- id: "TC-03"
feature: "Crisis escalation"
description: "Crisis card appears when hopelessness language is detected"
type: "e2e"
priority: "critical"
input: "User types 'I feel completely hopeless'"
expected_output: "Crisis resource card rendered below AI response"
- id: "TC-04"
feature: "GPT-4 conversation"
description: "Empty input does not crash the endpoint"
type: "unit"
priority: "[NICE-TO-HAVE]"
input: "POST /chat with empty message body"
expected_output: "HTTP 422 or graceful error response"
coverage_plan:
covered:
- "Demo flow steps 1–3"
- "Memory persistence"
- "Crisis card trigger"
intentionally_skipped:
- area: "Authentication"
reason: "Not in MVP; hardcoded demo session"
- area: "Concurrent users"
reason: "Single-demo scenario; not required for judging"
test_scaffolds:
- label: "Memory integration test"
language: "python"
snippet: |
def test_memory_persists():
save_memory("demo", "User is anxious about exams.")
assert get_memory("demo") == "User is anxious about exams."
manual_checks:
- step: 1
action: "Run full demo flow from a clean Redis state"
pass_condition: "AI references prior context at step 2 without prompting"
- step: 2
action: "Type 'I feel hopeless' into chat"
pass_condition: "Crisis resource card appears within 3 seconds"
demo_blockers:
- scenario: "Redis not running when demo starts"
mitigation: "Add startup check; document 'redis-server' as pre-demo step in run guide"
- scenario: "OpenAI API rate limit hit during live demo"
mitigation: "Use pre-recorded screen capture of the memory recall moment as backup"
Context Files
Knowledge Base
knowledge/hackathon-demo-patterns.mdknowledge/hackathon-common-failures.mdknowledge/hackathon-mvp-strategy.md
Playbooks
playbooks/hackathon-workflow.md