Skill57 repo starsupdated 2mo ago
simulacra
Simulacra stress-tests code snippets by simulating how ghost personas representing real-world users, systems, and edge cases would interact with and break the logic before deployment. Use this skill when submitting code in any language to identify production vulnerabilities that static analysis misses, such as race conditions, state mutations, idempotency failures, and business logic gaps through narrative-based chaos simulation.
Install in Claude Code
Copygit clone --depth 1 https://github.com/mturac/simulacra /tmp/simulacra && cp -r /tmp/simulacra/skills/simulacra ~/.claude/skills/simulacraThen start a new Claude Code session; the skill loads automatically.
Definition
SKILL.md
# Simulacra — Ghost Personas Review Your Code Before It Ships Every snippet gets stress-tested by ghost personas who represent the users, systems, and edge cases that will break your code in production. Not a linter. Not static analysis. A simulation of what happens when real chaos meets your logic. --- ## Dependencies None. Standalone. Works with any programming language. --- ## CRITICAL: Auto-start Code in the user's message → skip to Step 2. No preamble. No explanation of what Simulacra is. Start analyzing. --- ## Step 1. Get the code No code in message? One line: > Paste your code. Simulacra handles the rest. Any language: TypeScript, Python, Go, C#, Rust, Java, SQL, Bash, Solidity. --- ## Step 2. Complexity Gate Before spawning ghosts, assess the code's complexity: **Trivial code** (single expression, simple assignment, no branching, no I/O, no state mutation, no external calls): → Output a single line: `✅ Low risk — no significant butterfly effects. [one-line note if applicable]` → Stop here. Don't force ghosts on a one-liner. **Non-trivial code** (any branching, mutation, I/O, external calls, state management, business logic, async operations, database access): → Proceed to Step 3. The threshold is deliberately low. When in doubt, proceed — false negatives (missing a real bug) are worse than false positives (analyzing simple code). --- ## Step 3. Butterfly Effect Scan Read the code. Answer these 6 questions internally (don't display them — inject findings into ghost narratives): 1. **Idempotency:** Same call twice → same result? 2. **Mutation:** Inputs modified in place? Side effects? 3. **Transaction integrity:** Partial failure → rollback path? 4. **Race conditions:** Concurrent access → what breaks? 5. **Cache / State:** Stale data risk? 6. **Business logic gaps:** Implicit assumptions? Unwritten rules? Count findings → `N Butterfly Effects Detected`. If scan finds 0 issues on non-trivial code, still spawn ghosts — they may find things the scan missed. The scan guides ghost focus, not ghost existence. --- ## Step 4. Summon Ghost Personas Spawn 3 ghosts by default. User can request more (up to 7) or specify custom personas. Names must be memorable, slightly irreverent, and unique per session. ### Ghost #1: The Adversary - **Perspective:** The user who breaks things (intentionally or accidentally) - **Hunts for:** Race conditions, double-submit, back-button abuse, replay attacks, concurrent tab usage, retry storms - **Voice:** "I'm just a normal user but my internet was slow so I clicked 3 times" ### Ghost #2: The Enterprise Edge - **Perspective:** The enterprise customer who hits every business rule gap - **Hunts for:** Tax exemptions, multi-currency, B2B invoicing, locale/timezone, permission edge cases, regulatory compliance - **Voice:** "My account is corporate, VAT-exempt, billing to 3 addresses in 2 currencies" ### Ghost #3: Chaos Monkey - **Perspective:** Infrastructure having a bad day - **Hunts for:** Timeouts, partial failures, network partitions, connection pool exhaustion, disk full, OOM, clock skew, DNS failure - **Voice:** "DB connection dropped mid-transaction. Now what?" ### Extended Ghosts (on request) | Ghost | Perspective | Hunts for | |-------|-------------|-----------| | #4 The Junior Dev | Future maintainer | Readability, implicit knowledge, magic numbers, missing docs | | #5 The Scaler | 1000x traffic | N+1 queries, unbounded loops, missing pagination, memory growth | | #6 The Auditor | Security & compliance | Injection, auth bypass, data exposure, logging sensitive data | | #7 The Time Traveler | 6 months from now | Dependency rot, API deprecation, schema migration, tech debt | ### Ghost Profile Card Format ``` ### 👤 GHOST #N: "[Name]" **Perspective:** [one line] **Hunting for:** [specific to THIS code] **Edge case:** [concrete scenario] > Want to interrogate [Name]? ``` --- ## Step 5. Simulation (Structured Testimony) For each ghost, produce testimony in this exact structure. The casual tone stays but the slots are mandatory: ### 5a. Chaos Timeline ``` ⏱️ T+0ms: [Operation starts] ⏱️ T+100ms: [First call / check] ⏱️ T+Xms: ⚠️ [Problem surfaces] ⏱️ T+Xms: 💀 [System breaks] ``` Timestamps realistic to the operation (DB calls ~5-50ms, HTTP ~100-500ms, user actions ~200-2000ms). Don't overdramatize but don't be boring. ### 5b. Ghost Testimony (mandatory slots) ``` **🔴 SIMULATION: [Ghost Name]** **What I did:** [concrete user/system action] **What broke:** [specific line/function + why] (line X) **Evidence:** [trace the execution path that proves the bug] **Result:** [concrete consequence — data loss, financial loss, UX break, security hole] **Bonus:** [unexpected secondary consequence, if any] **🔥 BUG:** [CATEGORY] — [Bug name] **Severity:** [🔴 Critical | 🟠 High | 🟡 Medium | 🟢 Low] ``` Every slot must reference the actual code. No abstract hand-waving. If a ghost can't find a real issue for their perspective, say so: `"I walked through this from [perspective] and this code handles it correctly. No issue found."` This is better than fabricating a bug. ### 5c. Bug Categories - `MUTATION` — In-place state modification without guards - `IDEMPOTENCY` — Repeat-call vulnerability - `RACE` — Concurrency / timing - `PARTIAL-FAILURE` — No rollback on multi-step operations - `BUSINESS-LOGIC` — Missing business rule - `CACHE` — Stale data / invalidation - `VALIDATION` — Missing input checks - `SECURITY` — Auth/authz/injection - `TYPE-SAFETY` — Type coercion / null reference - `RESOURCE-LEAK` — Unclosed connections, handles, memory - `OBSERVABILITY` — Missing logging, metrics, or error context --- ## Step 6. Resolution Tiers Three tiers, always: ### Tier 1: Quick Fix - Minimum patch to existing code - Working code (not pseudo-code) - Comment explaining what it guards against ### Tier 2: Robust Architecture - The right pattern (idempotency keys, saga, optimistic lock, immutable data, etc.) -
More from this repository