{
  "markdown": "# 🪦 The Cursed Tomb\n\n> **A Pyramid Solitaire card game with an ancient tomb aesthetic.**\n\n**The Cursed Tomb** is a browser-based implementation of Pyramid Solitaire — the classic card game where your goal is to clear all 28 cards from the pyramid by pairing cards that sum to 13. Face the curse, conquer the pyramid, and escape the tomb.\n\n🎮 **[Play Now](https://hypercubed.github.io/The-Cursed-Tomb/)** _(deployed via GitHub Pages)_\n\n---\n\n## ✨ Features\n\n- **Pyramid Solitaire gameplay** — pair cards that sum to 13 to clear the pyramid\n- **Multiple solver strategies** — built-in autoplay with configurable heuristics and a perfect graph-search solver\n- **Autoplay & simulation** — automated play at configurable speeds, including instant-speed batch runs\n- **Win/loss statistics** — persistent tracking of game outcomes across sessions\n- **Matched cards tracking** — view previously matched cards during a game\n- **Game persistence** — settings and game state stored in `localStorage`\n- **Visual animations** — match feedback and win/loss animations\n- **Campaign mode** — play an expedition across multiple rounds with deck evolution\n- **Ancient tomb theme** — dark aesthetic with the Cinzel typeface and Egyptian-inspired design\n- **Python simulation** (`sim/cursed_tomb_sim.py`) — offline batch simulator for analyzing strategy win rates\n\n---\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- [Node.js](https://nodejs.org/) v18 or later\n- npm (bundled with Node.js)\n- [Python](https://www.python.org/) 3.10+ (for PDF rulebook & simulations)\n- [uv](https://docs.astral.sh/uv/getting-started/installation/) (recommended Python runner; fallback `python -m pip` works)\n\n### Install & Run\n\n```bash\n# Install dependencies\nnpm install\n\n# Start the development server\nnpm run dev\n```\n\nOpen [http://localhost:5173](http://localhost:5173) in your browser.\n\n### Build for Production\n\n```bash\nnpm run build\n```\n\nThe production bundle is output to `./dist/`.\n\n### Run Tests\n\n```bash\nnpm test\n```\n\n### Build the PDF Rulebook\n\n```bash\n# one-time: install Python deps (uv recommended)\nuv sync\n\n# build PDF\nuv run python docs/scripts/make_rules_pdf.py\n# — or —\nnpm run pdf\n# standalone (no install needed if uv is present):\nuv run --script docs/scripts/make_rules_pdf.py\n\n# fallback without uv:\npython -m pip install fpdf2 Pillow\npython docs/scripts/make_rules_pdf.py\n```\n\n### Run Simulations\n\n```bash\nuv sync\nuv run python sim/run_simulations.py --quick --workers 4\n# — or —\nnpm run sim:quick\n\n# per-script examples\nuv run python sim/cursed_tomb_sim.py --campaigns 20 --workers 4\nuv run python sim/base_game_sim.py --games 100 --workers 4\n\n# fallback without uv:\npython sim/run_simulations.py --quick --workers 4\n```\n\n---\n\n## 🛠️ Tech Stack\n\n| Layer | Technology |\n|---|---|\n| Framework | [React 18](https://react.dev/) + [TypeScript](https://www.typescriptlang.org/) |\n| Build tool | [Vite](https://vitejs.dev/) |\n| Styling | [Tailwind CSS v3](https://tailwindcss.com/) |\n| Testing | [Vitest](https://vitest.dev/) |\n| Deployment | [GitHub Pages](https://pages.github.com/) via GitHub Actions |\n| Simulation | Python 3 (`sim/cursed_tomb_sim.py`) |\n\n---\n\n## 📁 Project Structure\n\n```\nthe-cursed-tomb/\n├── src/\n│   ├── components/         # React UI components\n│   ├── hooks/              # Custom React hooks (game state, autoplay, etc.)\n│   ├── storage/            # localStorage persistence layer\n│   ├── game.ts             # Core game logic and state machine\n│   ├── solver.ts           # Autoplay solver strategies\n│   ├── App.tsx             # Root application component\n│   └── index.css           # Global styles and design tokens\n├── sim/\n│   └── cursed_tomb_sim.py  # Offline Python simulator\n├── openspec/               # Design specs and change management\n│   ├── specs/              # Canonical capability specs\n│   └── changes/            # In-progress change proposals & tasks\n├── .github/workflows/\n│   └── deploy.yml          # GitHub Actions CI/CD pipeline\n├── index.html\n├── vite.config.ts\n└── package.json\n```\n\n---\n\n## 🤖 AI Disclaimer\n\n> **This project is AI-generated and AI-maintained.**\n>\n> The source code, documentation, design specifications, and related artifacts in this repository are primarily authored and maintained by AI coding assistants (including Google Gemini / Antigravity). Human oversight is applied to review, direct, and approve changes, but the majority of implementation work is performed by AI agents.\n>\n> As a result:\n> - Code may reflect AI reasoning patterns and may not follow all conventional human-authored style guidelines.\n> - Bugs, design decisions, and architectural choices originate from AI generation and may require human judgment to evaluate.\n> - This project is experimental in nature and is provided as-is.\n\n---\n\n## 📜 License\n\n**Code** — All source code, scripts, simulations, configuration, and other\nfiles outside `docs/` (including `src/`, `sim/`, `public/`) and `docs/scripts/` are\nlicensed under the **MIT License** — see [`LICENSE`](LICENSE).\nCopyright (c) 2026 Jayson Harshbarger.\n\n**Rules & rulebook text** — Original game rules in `docs/` (`rules.md`,\n`example-of-play.md`, and Parts II & III of any PDF generated from them)\nare licensed under\n**Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)** —\nsee [`docs/LICENSE`](docs/LICENSE).\nCopyright (c) 2026 Jayson Harshbarger. `standard-pyramid-rules.md` (Part I —\nclassic Pyramid Solitaire summary) is **public domain / CC0 1.0**: no copyright\nclaimed over the underlying game, explanatory text waived via CC0 — see that\nfile's header and `docs/LICENSE`.\nHuman-readable deed: <https://creativecommons.org/licenses/by-sa/4.0/> ·\nLegal code: <https://creativecommons.org/licenses/by-sa/4.0/legalcode>\n\n> As the copyright holder, Jayson Harshbarger retains the right to distribute\n> the same material under additional or different terms (for example, in a\n> commercial digital release such as Google Play). The CC BY-SA license governs\n> what *others* may do with the rulebook; it does not restrict the author.\n",
  "bytes": 6036,
  "sha": "d8d637be1cd6b87cd08951421cfe505306f0f4ebe2020ae819ed5a40020d354b",
  "repo_slug": "hypercubed/the-cursed-tomb",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/okf_hypercubed_the_cursed_tomb_openwiki_inde_15174cec/readme"
}