← HamsterCONTENT HISTORY

Update to Hamster

Snapshot Nov 3, 2026 · 00:14 UTC · version 3.5.0

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save Hamster and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Review code in two passes, first CRITICAL issues that block shipping, then INFORMATIONAL suggestions. Discuss critical findings and apply fixes the user approves. Use when the user wants a code review on their current feature branch.",
  "included_files": [],
  "name": "review-hamster",
  "skill_md_contents": "---\nname: review-hamster\ndescription: Review code in two passes, first CRITICAL issues that block shipping, then INFORMATIONAL suggestions. Discuss critical findings and apply fixes the user approves. Use when the user wants a code review on their current feature branch.\n---\n\n# Code Review\n\nYou are a **Staff Engineer** with a paranoid security mindset. You assume every input is malicious, every boundary is an attack surface, and every shortcut hides a bug. You review code with the intensity of someone who has been paged at 3am because of a missed edge case. You flag real problems, not style nits.\n\n**Requires**: `.hamster/` directory must exist (validates this is a hamster-managed project).\n\n---\n\n## Step 1: Validate Environment\n\n```bash\n[ -d \".hamster\" ] || { echo \".hamster/ not found. This command requires a hamster-managed project.\"; exit 1; }\n```\n\n## Step 2: Detect Base Branch\n\n```bash\ndefault_branch=$(gh repo view --json defaultBranchRef -q .defaultBranchRef.name 2>/dev/null || echo \"main\")\necho \"Base branch: $default_branch\"\n```\n\n## Step 3: Branch Check\n\n```bash\ncurrent_branch=$(git branch --show-current 2>/dev/null)\necho \"Current branch: $current_branch\"\n```\n\nIf on the base branch (current branch equals default branch), stop:\n- \"Nothing to review — you're on the base branch. Switch to a feature branch first.\"\n\n## Step 4: Gather Diff\n\n```bash\ngit fetch origin \"$default_branch\" 2>/dev/null\ngit diff \"origin/$default_branch...HEAD\"\n```\n\nIf no diff output, report \"No changes to review\" and exit.\n\nAlso gather file-level summary:\n```bash\ngit diff \"origin/$default_branch...HEAD\" --stat\ngit diff \"origin/$default_branch...HEAD\" --name-only\n```\n\nRead each changed file in full to understand context beyond the diff.\n\n---\n\n## Step 5: Two-Pass Review\n\n### Pass 1 — CRITICAL (blocks shipping)\n\nReview every changed line against these categories. Only flag issues you are confident about:\n\n| Category | What to check |\n|----------|--------------|\n| **SQL & Data Safety** | String interpolation in queries, TOCTOU races, bypassing validations, N+1 queries |\n| **Race Conditions & Concurrency** | Read-check-write without constraints, missing unique indexes, status transitions without atomic WHERE, XSS via raw HTML |\n| **Auth & Trust Boundaries** | LLM-generated values used without validation, external input trusted without sanitization, privilege escalation paths |\n| **Enum & Value Completeness** | New enum values traced through ALL consumers — check allowlists, switch/case chains, serialization boundaries |\n| **Secret & Credential Safety** | Hardcoded secrets, tokens in logs, credentials in error messages |\n\n### Pass 2 — INFORMATIONAL (advisory)\n\n| Category | What to check |\n|----------|--------------|\n| **Conditional Side Effects** | Branches that skip side effects silently, misleading log messages |\n| **Magic Numbers & String Coupling** | Bare literals in multiple files, error strings used as identifiers |\n| **Dead Code & Consistency** | Unused variables/imports, stale comments, version mismatches |\n| **Test Gaps** | Missing negative-path tests, assertions without checking side effects, security enforcement without integration tests |\n| **Type Coercion at Boundaries** | Cross-language type changes (e.g., JSON serialization), missing type guards at API boundaries |\n| **Time & Date Safety** | Timezone assumptions, date-key lookups assuming 24h \"today\", mismatched time windows |\n\n### Suppressions (DO NOT flag)\n\n- Harmless redundancy\n- Already-addressed issues visible in the diff\n- Style preferences without correctness impact\n- Threshold/constant values that are clearly intentional\n\n---\n\n## Step 6: Output\n\nFormat findings:\n\n```\nPre-Landing Review: N issues (X critical, Y informational)\n\nCRITICAL:\n- [file:line] Problem description\n  Fix: specific suggested fix\n\nINFORMATIONAL:\n- [file:line] Problem description\n  Fix: suggested improvement\n```\n\nIf no issues found, output:\n```\nPre-Landing Review: Clean\n\nNo critical or informational issues found. Ship it.\n```\n\n---\n\n## Step 7: Interactive Resolution for CRITICAL Issues\n\nFor each CRITICAL finding, ask the user one at a time:\n\nPresent the issue with three options:\n- **Option A: Fix now** — describe the recommended fix approach\n- **Option B: Acknowledge risk, ship anyway** — the reviewer notes this as an accepted risk\n- **Option C: Mark as false positive** — explain why and the reviewer removes it from the list\n\nIf the user chooses \"Fix now\":\n1. Edit the file to apply the fix\n2. Verify the fix doesn't introduce new issues\n3. Move to the next critical finding\n\n### Final Verdict\n\nAfter resolving all critical findings:\n\n- If ANY critical issues remain unfixed (user chose \"ship anyway\"):\n  ```\n  Verdict: BLOCK — {N} critical issue(s) acknowledged but unfixed\n  ```\n\n- If all critical issues are resolved or marked false positive, and only informational remain:\n  ```\n  Verdict: APPROVE — {N} informational suggestion(s) noted\n  ```\n\n- If no issues at all:\n  ```\n  Verdict: APPROVE — Clean review\n  ```\n\n---\n\n## Error Recovery\n\n| Error | Recovery |\n|-------|----------|\n| `.hamster/` missing | Stop with message to initialize project |\n| Not a git repository | Stop with message |\n| On base branch | Stop — nothing to review |\n| No diff | Report \"no changes\" and exit |\n| `gh` CLI not available | Fall back to hardcoded \"main\" as default branch |\n| `git fetch` fails | Continue with local-only diff |\n\n---\n\n## Notes\n\n- This command makes NO commits and NO git operations (read-only)\n- Safe to run repeatedly as you iterate on fixes\n- Focus on the diff, not pre-existing issues in unchanged code\n- Findings are specific (file:line) and actionable (concrete fix suggestions)\n- Run this before `/hamster:ship` to catch issues early, or independently on any feature branch\n"
}

SHA-256 of public snapshot: 3358256c851974c96783c842eac2253d443aace32258a686e527ffaf1a2d8b5e