{"id":49924765,"url":"https://github.com/hinanohart/harsh-critic-agent","last_synced_at":"2026-05-16T22:39:16.291Z","repository":{"id":352158891,"uuid":"1213758213","full_name":"hinanohart/harsh-critic-agent","owner":"hinanohart","description":"Harsh-critic subagent definition for Claude Code. Opus-tuned prompt that interrogates its own output for gaps and hand-waving.","archived":false,"fork":false,"pushed_at":"2026-05-09T17:43:35.000Z","size":77,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-09T19:32:02.401Z","etag":null,"topics":["ai-tools","claude-code","code-review","subagent"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hinanohart.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-17T18:21:41.000Z","updated_at":"2026-05-09T17:43:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hinanohart/harsh-critic-agent","commit_stats":null,"previous_names":["hinanohart/harsh-critic-agent"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/hinanohart/harsh-critic-agent","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hinanohart%2Fharsh-critic-agent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hinanohart%2Fharsh-critic-agent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hinanohart%2Fharsh-critic-agent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hinanohart%2Fharsh-critic-agent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hinanohart","download_url":"https://codeload.github.com/hinanohart/harsh-critic-agent/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hinanohart%2Fharsh-critic-agent/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33121486,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T18:38:32.183Z","status":"ssl_error","status_checked_at":"2026-05-16T18:38:29.903Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-tools","claude-code","code-review","subagent"],"created_at":"2026-05-16T22:39:15.336Z","updated_at":"2026-05-16T22:39:16.283Z","avatar_url":"https://github.com/hinanohart.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# harsh-critic-agent\n\n\u003e A battle-hardened final-quality-gate subagent for Claude Code. Blocks false\n\u003e approvals with statistical sanity checks, a post-publication adversarial\n\u003e pass, and anti-pattern detection.\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n[![Claude Code Agent](https://img.shields.io/badge/Claude%20Code-subagent-8A2BE2.svg)](https://docs.claude.com/en/docs/claude-code/sub-agents)\n[![Attribution: Yeachan Heo](https://img.shields.io/badge/attribution-Yeachan%20Heo-informational)](./NOTICE)\n\n---\n\n## What this is\n\nA single-file [Claude Code subagent](https://docs.claude.com/en/docs/claude-code/sub-agents)\nthat acts as the **final quality gate** for plans, code, and public-facing\nreleases. Drop it into `~/.claude/agents/` and invoke with\n`@harsh-critic` (or via `Agent(subagent_type=\"harsh-critic\", …)`).\n\nIt rejects false approvals cold by combining four passes most single-prompt\nreviewers skip:\n\n1. **Statistical Sanity** — sample size, confidence intervals, control\n   validity, multi-seed reproducibility, hardcoded thresholds.\n2. **Post-Publication Adversarial Review** — README commands run cleanly,\n   figures regenerable from data, no dangling references, honest competitor\n   comparison.\n3. **Anti-Pattern Detection** — frame-hopping, n=3 illusion, manufactured\n   certainty, sunk-cost protection, narrative-fit bias.\n4. **Case-Study Anchors** — 6 real-world failures from published research\n   and OSS releases that the agent cites when current work matches the\n   pattern.\n\n---\n\n## What makes this different\n\n`harsh-critic-agent` is a **derivative work** (MIT) of the excellent\n[`critic.md`](https://github.com/Yeachan-Heo/oh-my-claudecode) in\nYeachan Heo's *oh-my-claudecode*. The upstream agent is already very good at:\n\n- Pre-commitment predictions\n- Multi-perspective review (security / new-hire / ops)\n- Gap analysis\n- Self-audit + realist check\n\nThis fork adds the missing half — **what hits you after publication**:\n\n| Pass | Upstream `critic.md` | `harsh-critic-agent` |\n|------|----------------------|----------------------|\n| Role framing | ✅ | ✅ (retained) |\n| Pre-commitment | ✅ | ✅ (retained) |\n| Multi-perspective | ✅ | ✅ extended: reviewer / 48-hour-hindsight / downstream user |\n| Gap analysis | ✅ | ✅ extended: \"what is the author NOT talking about?\" |\n| Statistical sanity (n, CI, control, seeds) | — | ✅ Phase 6 (7 sub-checks) |\n| Post-publication adversarial | — | ✅ Phase 7 (6 sub-checks) |\n| Anti-pattern detection | — | ✅ Phase 8 (8 patterns) |\n| Case-study anchors | — | ✅ 6 annotated real failures |\n| Japanese translation | — | ✅ `agents/harsh-critic.ja.md` |\n\nIf your work is research, benchmarks, or a public OSS release, the four added\npasses are where the reviewer will find your weak spots in the first 30\nminutes. The agent pre-emptively simulates that hostile 30-minute read.\n\n---\n\n## Install\n\n### Option 1 — user-level (global)\n\n```bash\nmkdir -p ~/.claude/agents\ncurl -L -o ~/.claude/agents/harsh-critic.md \\\n  https://raw.githubusercontent.com/hinanohart/harsh-critic-agent/main/agents/harsh-critic.md\n```\n\n### Option 2 — project-level\n\n```bash\nmkdir -p .claude/agents\ncurl -L -o .claude/agents/harsh-critic.md \\\n  https://raw.githubusercontent.com/hinanohart/harsh-critic-agent/main/agents/harsh-critic.md\n```\n\n### Option 3 — Japanese version\n\n```bash\ncurl -L -o ~/.claude/agents/harsh-critic.md \\\n  https://raw.githubusercontent.com/hinanohart/harsh-critic-agent/main/agents/harsh-critic.ja.md\n```\n\nClaude Code auto-discovers agents in these directories on the next start.\n\n---\n\n## Usage\n\n### From a conversation\n\n```text\n@harsh-critic please audit PLAN.md before I execute it\n```\n\n### From another agent / code\n\n```python\nAgent(\n    description=\"Final gate on release plan\",\n    subagent_type=\"harsh-critic\",\n    prompt=\"Review RELEASE-v1.0.md. Public-facing — apply Phase 7.\"\n)\n```\n\n### Recommended invocation points\n\n- Before merging a PR that changes a migration, security code, or API\n  contract.\n- Before tagging a public release (triggers Phase 7).\n- Before submitting a paper, preprint, or benchmark to the public\n  (triggers Phase 6 + 7).\n- When you notice yourself opening \"just one more angle\" on a decided\n  plan (triggers Phase 8 / frame-hopping check).\n\n---\n\n## Example output\n\n```text\nVERDICT: REVISE\n\nOverall Assessment: Core approach is sound; two claims rest on insufficient\nstatistical evidence, one figure disagrees with its underlying JSON, and an\nauto-tautology control inflates one headline number.\n\nPre-Commitment Predictions vs Actual Findings:\n  - Predicted: n-size issue in Table 2, stale README command, missing\n    ablation for depth parameter.\n  - Found: n-size issue confirmed (Table 2, n=3). README command works.\n    New surprise: layer-20 control is patched at layer 20 (auto-tautology,\n    CS-2 pattern).\n\nCritical Findings:\n1. Table 2 \"70% accuracy\" (paper.md:214) rests on n=3 trials.\n   - Confidence: HIGH\n   - Phase: Phase 6/S1 — coin-flip p=0.125 under null.\n   - Fix: re-run at n≥30 OR re-label claim as \"preliminary\".\n\n2. Figure 3 delta -0.92 (main.tex:287) contradicts fig3.json:147 (-2.11).\n   - Confidence: HIGH\n   - Phase: Phase 7/P2 — figures must regenerate from raw data.\n   - Fix: replace prose number with symbolic reference to JSON.\n\n…\n```\n\nSee [`examples/example-review-output.md`](./examples/example-review-output.md)\nfor a full review.\n\n---\n\n## Design philosophy\n\n- **False approvals cost 10-100× false rejections.** A courteous reviewer is\n  a liability.\n- **Every finding needs evidence.** `file:line`, quoted text, or data path.\n  Opinions are not findings.\n- **Statistical handwaving is a CRITICAL finding.** Not a stylistic preference.\n- **Anti-patterns are the author's blind spots.** Name them explicitly; the\n  author cannot see them alone.\n\nThe full philosophy is embedded in the prompt itself — see\n[`agents/harsh-critic.md`](./agents/harsh-critic.md).\n\n---\n\n## Documentation\n\n- [`docs/CASE_STUDIES.md`](./docs/CASE_STUDIES.md) — six annotated real-world\n  failures referenced by the agent.\n- [`docs/STATISTICAL_THINKING.md`](./docs/STATISTICAL_THINKING.md) — the\n  Phase-6 reasoning in plain language, with code snippets for Wilson CI,\n  bootstrap, permutation test, Fisher's exact.\n- [`CHANGELOG.md`](./CHANGELOG.md)\n- [`NOTICE`](./NOTICE) — upstream attribution\n\n---\n\n## Credit\n\nThis agent would not exist without the upstream\n[`oh-my-claudecode`](https://github.com/Yeachan-Heo/oh-my-claudecode) by\n**Yeachan Heo**. The role framing, investigation protocol skeleton, and\noutput-format structure are his. See [`NOTICE`](./NOTICE) for the exact\nheritage and the list of substantive additions.\n\nIf you like this, star the upstream project too.\n\n---\n\n## Contributing\n\nSee [`CONTRIBUTING.md`](./CONTRIBUTING.md). Pull requests that add case-study\nanchors from real failures (with public post-mortems) are especially welcome.\n\n## Security\n\nSee [`SECURITY.md`](./SECURITY.md). The agent is a Markdown prompt file; it\nhas no network access and no code execution surface of its own.\n\nNote that the `disallowedTools: Write, Edit` line in the frontmatter is\n**prompt-enforced, not harness-enforced** — the LLM chooses to comply.\nFor destructive-command protection at the harness level, install\n[`claude-safety-guard`](https://pypi.org/project/claude-safety-guard/) as\na PreToolUse hook alongside this agent.\n\n## License\n\nMIT — see [`LICENSE`](./LICENSE) and [`NOTICE`](./NOTICE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhinanohart%2Fharsh-critic-agent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhinanohart%2Fharsh-critic-agent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhinanohart%2Fharsh-critic-agent/lists"}