Skip to content

Instantly share code, notes, and snippets.

@jleechan2015
Created February 26, 2026 02:52
Show Gist options
  • Select an option

  • Save jleechan2015/298e53461704e9ee73f71a61c9325071 to your computer and use it in GitHub Desktop.

Select an option

Save jleechan2015/298e53461704e9ee73f71a61c9325071 to your computer and use it in GitHub Desktop.
Claude Code Workshop Demo
{"version":3,"term":{"cols":80,"rows":24},"timestamp":1772073972,"command":"bash scripts/demo-video.sh","env":{"SHELL":"/bin/bash"}}
[0.012, "o", "╔════════════════════════════════════════════════════════════╗\r\n║ CLAUDE CODE WORKSHOP - PROOF OF COMPLETION DEMO ║\r\n╚════════════════════════════════════════════════════════════╝\r\n\r\n"]
[0.004, "o", "📦 Project: dev-agent-workshop-starter\r\n"]
[0.000, "o", "📍 Location: /Users/jleechan/projects/dev-agent-workshop-starter\r\n"]
[0.000, "o", "\r\n"]
[0.000, "o", "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\nPHASE 1: PROJECT STRUCTURE\r\n"]
[0.000, "o", "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n\r\n📁 Project Structure:\r\n"]
[0.004, "o", "./frontend\r\n./frontend/src\r\n./tests\r\n./.claude\r\n./scripts\r\n./src\r\n"]
[0.000, "o", "\r\n📜 CLAUDE.md:\r\n"]
[0.002, "o", "# Product Inventory Tracker\r\n\r\n## Build & Run\r\n\r\n```bash\r\n# Backend\r\nuv sync --all-extras # Install all dependencies\r\nuv run uvicorn src.main:app --reload --port 8000\r\n\r\n# Frontend\r\ncd frontend && pnpm install\r\npnpm dev # Starts on :5173, proxies /api to :8000\r\n\r\n# Both at once\r\n./scripts/run-dev.sh\r\n\r\n# Tests\r\nuv run pytest # Run all tests\r\nuv run pytest -v # Verbose output\r\nuv run pytest tests/test_products.py # Run specific file\r\n\r\n# Lint\r\nuv run ruff check src/ # Check for issues\r\nuv run ruff format src/ # Auto-format\r\n```\r\n\r\n## Architecture\r\n\r\n- **Backend**: FastAPI (Python) — `src/` directory\r\n"]
[0.000, "o", " - `src/models.py` — Pydantic models (Product, ProductCreate, ProductUpdate, StatsResponse)\r\n"]
[0.000, "o", "\r\n... (truncated)\r\n\r\n"]
[0.000, "o", "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\nPHASE 2: AGENTS & SKILLS\r\n"]
[0.000, "o", "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n\r\n🤖 Custom Agents:\r\n"]
[0.003, "o", "code-reviewer.md\r\ndoc-writer.md\r\npr-reviewer.md\r\ntest-writer.md\r\n"]
[0.000, "o", "\r\n⚡ Skills:\r\n"]
[0.002, "o", "api-conventions\r\ncheck-ui\r\nship-it\r\ntest-and-commit\r\n"]
[0.000, "o", "\r\n"]
[0.000, "o", "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\nPHASE 3: RUN TESTS\r\n"]
[0.000, "o", "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n\r\n"]
[0.696, "o", "tests/test_products.py::test_get_product_not_found PASSED [ 55%]\r\ntests/test_products.py::test_create_product PASSED [ 57%]\r\ntests/test_products.py::test_create_product_validation_error PASSED [ 60%]\r\ntests/test_products.py::test_create_product_invalid_category PASSED [ 63%]\r\ntests/test_products.py::test_update_product PASSED [ 65%]\r\ntests/test_products.py::test_update_product_stock_changes_status PASSED [ 68%]\r\ntests/test_products.py::test_update_product_not_found PASSED [ 71%]\r\ntests/test_products.py::test_delete_product PASSED [ 73%]\r\ntests/test_products.py::test_delete_product_not_found PASSED [ 76%]\r\ntests/test_restock.py::test_restock_product PASSED [ 78%]\r\ntests/test_restock.py::test_restock_out_of_stock_product PASSED [ 81%]\r\ntests/test_restock.py::test_restock_product_not_found PASSED [ 84%]\r\ntests/test_restock.py::test_restock_zero_quantity_re"]
[0.000, "o", "jected PASSED [ 86%]\r\ntests/test_restock.py::test_restock_negative_quantity_rejected PASSED [ 89%]\r\ntests/test_restock.py::test_restock_updates_stats PASSED [ 92%]\r\ntests/test_stats.py::test_stats PASSED [ 94%]\r\ntests/test_stats.py::test_stats_after_delete PASSED [ 97%]\r\ntests/test_stats.py::test_stats_after_stock_change PASSED [100%]\r\n\r\n============================== 38 passed in 0.10s ==============================\r\n"]
[0.000, "o", "\r\n"]
[0.000, "o", "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n"]
[0.000, "o", "PHASE 4: PROJECT HEALTH CHECK\r\n"]
[0.000, "o", "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n\r\n"]
[0.244, "o", "╔══════════════════════════════════════╗\r\n║ PROJECT HEALTH REPORT ║\r\n╚══════════════════════════════════════╝\r\n\r\n🧪 Tests\r\n"]
[0.000, "o", "────────────────────────────────────────\r\n"]
[0.436, "o", " ✅ 38 passed\r\n"]
[0.000, "o", "\r\n🔍 Lint (ruff)\r\n"]
[0.000, "o", "────────────────────────────────────────\r\n"]
[0.082, "o", " ✅ No issues\r\n\r\n📏 Code Size\r\n"]
[0.000, "o", "────────────────────────────────────────\r\n"]
[0.007, "o", " Python: 977 lines (src/ + tests/)\r\n\r\n📋 TODO/FIXME\r\n"]
[0.000, "o", "────────────────────────────────────────\r\n"]
[0.006, "o", " ✅ None found\r\n\r\n"]
[0.000, "o", "════════════════════════════════════════\r\n"]
[0.001, "o", " 🟢 HEALTHY — safe to commit\r\n"]
[0.000, "o", "\r\n"]
[0.000, "o", "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\nPHASE 5: API ENDPOINTS TEST\r\n"]
[0.000, "o", "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n"]
[0.000, "o", "\r\n"]
[0.218, "o", "\u001b[32mINFO\u001b[0m: Started server process [\u001b[36m77114\u001b[0m]\r\n"]
[0.000, "o", "\u001b[32mINFO\u001b[0m: Waiting for application startup.\r\n"]
[0.000, "o", "\u001b[32mINFO\u001b[0m: Application startup complete.\r\n"]
[0.000, "o", "\u001b[32mINFO\u001b[0m: Uvicorn running on \u001b[1mhttp://127.0.0.1:8000\u001b[0m (Press CTRL+C to quit)\r\n"]
[1.811, "o", "📡 Testing API Endpoints...\r\n\r\n1. GET /api/stats\r\n"]
[0.031, "o", "\u001b[32mINFO\u001b[0m: 127.0.0.1:64228 - \"\u001b[1mGET /api/stats HTTP/1.1\u001b[0m\" \u001b[32m200 OK\u001b[0m\r\n"]
[0.013, "o", "{\r\n \"total\": 28,\r\n \"in_stock\": 17,\r\n \"low_stock\": 7,\r\n \"out_of_stock\": 4\r\n}\r\n"]
[0.003, "o", "\r\n2. GET /api/products/low-stock (count)\r\n"]
[0.008, "o", "\u001b[32mINFO\u001b[0m: 127.0.0.1:64230 - \"\u001b[1mGET /api/products/low-stock HTTP/1.1\u001b[0m\" \u001b[32m200 OK\u001b[0m\r\n"]
[0.009, "o", " Found 7 products\r\n"]
[0.003, "o", "\r\n"]
[0.000, "o", "3. GET /api/products/expensive (count)\r\n"]
[0.008, "o", "\u001b[32mINFO\u001b[0m: 127.0.0.1:64232 - \"\u001b[1mGET /api/products/expensive HTTP/1.1\u001b[0m\" \u001b[32m200 OK\u001b[0m\r\n"]
[0.009, "o", " Found 12 products\r\n"]
[0.002, "o", "\r\n4. POST /api/products/bulk\r\n"]
[0.008, "o", "\u001b[32mINFO\u001b[0m: 127.0.0.1:64234 - \"\u001b[1mPOST /api/products/bulk HTTP/1.1\u001b[0m\" \u001b[32m201 Created\u001b[0m\r\n"]
[0.008, "o", " Created 2 products\r\n"]
[0.002, "o", "\r\n"]
[0.000, "o", "5. PATCH /api/products/{id}/restock\r\n"]
[0.008, "o", "\u001b[32mINFO\u001b[0m: 127.0.0.1:64236 - \"\u001b[1mGET /api/products?status=Out+of+Stock HTTP/1.1\u001b[0m\" \u001b[32m200 OK\u001b[0m\r\n"]
[0.020, "o", "\u001b[32mINFO\u001b[0m: 127.0.0.1:64238 - \"\u001b[1mPATCH /api/products/cbbe079f-c0d2-4720-8a80-335dc2486297/restock HTTP/1.1\u001b[0m\" \u001b[32m200 OK\u001b[0m\r\n"]
[0.011, "o", " Restocked: Thunderbolt 4 Dock, new stock=25\r\n"]
[0.064, "o", "\u001b[32mINFO\u001b[0m: Shutting down\r\n"]
[0.101, "o", "\u001b[32mINFO\u001b[0m: Waiting for application shutdown.\r\n"]
[0.000, "o", "\u001b[32mINFO\u001b[0m: Application shutdown complete.\r\n"]
[0.000, "o", "\u001b[32mINFO\u001b[0m: Finished server process [\u001b[36m77114\u001b[0m]\r\n"]
[0.007, "o", "\r\n"]
[0.000, "o", "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n"]
[0.000, "o", "✅ WORKSHOP COMPLETE - ALL TESTS PASSED\r\n"]
[0.000, "o", "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n\r\n"]
[0.000, "o", "Summary:\r\n"]
[0.000, "o", " • 38 tests passed\r\n • 4 custom agents created\r\n"]
[0.000, "o", " • 4 skills implemented\r\n • 4 new API endpoints working\r\n"]
[0.001, "o", " • Project health: HEALTHY\r\n\r\n"]
[0.000, "o", "🎉 Workshop materials ready for Claude Code LA Meetup!\r\n"]
[0.001, "x", "0"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment