← fstackCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to fstack
Snapshot Sep 30, 2026 · 23:16 UTC · version 1.1.2
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "End-to-end founder customer support loop. Ingests a customer bug report or inquiry, investigates the codebase, reproduces the issue, triggers engineer-mode bug-fix if valid, or prepares a workaround, and drafts an empathetic, contextual customer reply. Use for /support-loop, \"handle support ticket\", or customer bug triage.",
"included_files": [],
"name": "support-loop",
"skill_md_contents": "---\nname: support-loop\ndescription: End-to-end founder customer support loop. Ingests a customer bug report or inquiry, investigates the codebase, reproduces the issue, triggers engineer-mode bug-fix if valid, or prepares a workaround, and drafts an empathetic, contextual customer reply. Use for /support-loop, \"handle support ticket\", or customer bug triage.\nmenu-description: triage customer issue, fix bug in codebase, and draft reply\n---\n\n# Support Loop (Ticket-to-Fix-to-Reply)\n\nThe ultimate superpower of a technical founder is closing the loop between user pain, code fix, and customer communication in minutes instead of weeks of tiered customer service bureaucracy.\n\n`support-loop` automates this entire lifecycle:\n1. Parse the customer's inquiry.\n2. Investigate the codebase and telemetry.\n3. If it's a bug: trigger `engineer-mode`'s **Bug-fix playbook** (repro test, root cause fix, verify).\n4. If it's intended behavior or user error: formulate the exact step-by-step workaround.\n5. Draft an empathetic, clear, human customer response.\n\n---\n\n## When to Invoke\n\n- A user reports a bug in your product via email, Discord, Slack, or GitHub issue.\n- A paying customer hits an unexpected error (*\"500 Internal Server Error when uploading file > 10MB\"*).\n- You want to verify whether a customer complaint is an actual bug or user misunderstanding before replying.\n\n---\n\n## The 4-Phase Protocol\n\n```mermaid\ngraph TD\n Ticket([Customer Ticket / Message]) --> Phase1[Phase 1: Ingest & Triage]\n Phase1 --> Phase2[Phase 2: Codebase Investigation]\n \n Phase2 --> Check{Is it a bug?}\n \n Check -->|\"Yes: Confirmed Defect\"| Phase3A[\"Phase 3A: engineer-mode (Bug-Fix)<br>1. Write failing test<br>2. Fix root cause<br>3. Verify green test\"]\n Check -->|\"No: Intended / User Error\"| Phase3B[\"Phase 3B: Document Workaround<br>Step-by-step guide for user\"]\n \n Phase3A --> Phase4[Phase 4: Draft Empathetic Customer Reply]\n Phase3B --> Phase4\n```\n\n---\n\n### Phase 1: Ingest & Triage\nExtract key facts:\n- Who is the user? (Free tier, self-hosted, enterprise customer)\n- What were they trying to accomplish?\n- What was the observed symptom? (UI freeze, error code, unexpected value)\n- What environment/browser/input data did they use?\n\n### Phase 2: Codebase Investigation\nNavigate the repository:\n1. Search for matching error strings, endpoint routes, or UI components.\n2. Trace the data flow: user input → validation → business logic → database/external API → response.\n3. Identify if the edge case is handled or unhandled.\n\n### Phase 3A: If Confirmed Bug → Trigger `engineer-mode`\nSwitch to `engineer-mode` with the **Bug-fix playbook** (`skills/engineer-mode/playbooks/bug-fix.md`):\n1. **Reproduce First**: Write an isolated unit test or runtime script that reliably triggers the failure.\n2. **Root Cause**: Trace the exact variable, null pointer, race condition, or schema mismatch.\n3. **Fix**: Apply the minimal, cleanest fix per **principle-fix-root-causes** and **principle-laziness-protocol**.\n4. **Verify**: Ensure the test passes, run existing regression tests, verify no blast radius.\n\n### Phase 3B: If Not a Bug (Intended Behavior / Workaround)\n- Pinpoint why the customer got confused (UX affordance, missing tooltip, documentation gap).\n- Formulate the exact solution or workaround.\n- Note any small UI/copy improvement to prevent future users from hitting the same issue.\n\n### Phase 4: Draft the Customer Reply\nThe reply must follow strict human founder guidelines:\n- **Validate Their Experience**: Never make the user feel dumb or blamed (*\"Thanks for flagging this, you caught a real edge case\"*).\n- **Transparency**: Explain what happened in 1 plain English sentence without technical jargon overload.\n- **Resolution**: Tell them what was done (fix deployed / how to resolve).\n- **Next Step**: Ask them to verify or let you know if anything else looks off.\n\n---\n\n## Example Outputs\n\n### Scenario A: Real Bug Fixed\n```markdown\nHey David,\n\nThanks so much for writing in—you caught a genuine bug in our CSV parser. When column headers contained trailing spaces or parentheses, our schema validator was silently dropping the row instead of trimming it.\n\nWe just patched this and deployed the fix to production (commit `7f4a21`).\n\nCould you refresh your dashboard and try exporting the file again? Everything should go through smoothly now.\n\nReally appreciate you taking the time to report this!\n\nBest,\nFabio\n```\n\n### Scenario B: User Configuration / Workaround\n```markdown\nHey David,\n\nThanks for reaching out!\n\nThe reason the export stopped at 10,000 rows is that our real-time browser export is capped at 10k to prevent Chrome from running out of memory on large datasets.\n\nTo export your full 85,000 rows, you can use our background export feature:\n1. Go to Reports → Export.\n2. Select \"Send full dataset to email (CSV/Parquet)\".\n3. You'll receive a secure download link in your inbox in about 30 seconds.\n\nI realize that distinction wasn't clear on the dashboard button—we're updating the UI tooltip today so it's obvious to everyone.\n\nLet me know if the email export gets you what you need!\n\nBest,\nFabio\n```\n"
}SHA-256 of public snapshot: f6a44282910df4a8e9989fffbe8e96b709b44fd217ba8d3ba8f629ffaab5d3bb