{
  "markdown": "# critique\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Claude Code](https://img.shields.io/badge/Claude%20Code-Plugin-d03b2f?logo=anthropic&logoColor=white)](https://claude.ai/code)\n[![GitHub stars](https://img.shields.io/github/stars/Alfafis/critique?style=flat&color=yellow)](https://github.com/Alfafis/critique/stargazers)\n[![Last Commit](https://img.shields.io/github/last-commit/Alfafis/critique?style=flat)](https://github.com/Alfafis/critique/commits/main)\n\nPermanent critical mindset for Claude Code. Every response surfaces real bugs, questionable decisions, and unhandled edge cases — ordered by impact. No sugarcoating.\n\n<p align=\"center\">\n  <a href=\"#before--after\">Before/After</a> •\n  <a href=\"#install\">Install</a> •\n  <a href=\"#skills\">Skills</a> •\n  <a href=\"#toggle\">Toggle</a>\n</p>\n\n---\n\n## Before / After\n\n**Without critique:**\n> \"This looks good overall! A few minor things to consider...\"\n\n**With critique:**\n> 🔴 **Security:** `userId` comes from request body without validation — attacker controls it. Read from session token instead.\n>\n> 🟡 **Design:** `processOrder` does DB write + email in the same function — partial failure leaves inconsistent state. Wrap in transaction or split into two operations.\n\n---\n\n## What it does\n\nInjects a permanent critical mindset into every session via a `SessionStart` hook. Active on every response, every task:\n\n| What | How |\n|---|---|\n| **Real problems** | Bugs, security flaws, unexpected behaviors, unhandled edge cases. Only what actually breaks. |\n| **Questionable decisions** | Architecture/implementation choices that will cause pain later — with explanation and alternative. |\n| **What's good** | Only if non-obvious and worth reinforcing. No praising the obvious. |\n| **Priority** | Ordered by real impact, not ease of fix. |\n\nApplies to: code, review, brainstorm, plan, architecture, decisions.\n\n### What it costs\n\nThe hook adds about **125 tokens to every prompt**, for as long as the mode is on. That is the\nmechanism — the instructions have to be in the model's attention on each turn, or the behavior\ndecays after a few messages. It is a standing cost, not a one-off.\n\nTurn it off with `critique off` when you don't want it; the hook then writes nothing and injects\nnothing until you turn it back on. Nothing is read from your prompts beyond the on/off phrases,\nnothing is stored, and the plugin makes no network requests. See [SECURITY.md](SECURITY.md).\n\n---\n\n## Skills\n\n### `/critique`\nActivate the critical mindset explicitly for the current session.\n\n### `/rigorous`\nDeep analysis mode before coding, reviewing, or planning. Five-phase protocol:\npre-flight → security audit → implementation audit → structured output → STOP protocol.\n\nSupports focused modes: `/rigorous plan <task>` · `/rigorous sec` · `/rigorous impl` · `/rigorous code`\n\n### `/scan`\nOne-shot scan of what was just shown. Critical blockers only, no persistence, no style commentary.\n\n### `/badge`\nInstall, remove, or check the `[CRITIQUE]` statusline badge. See [Statusline badge](#statusline-badge-opt-in).\n\n---\n\n## Install\n\nInside Claude Code:\n\n```\n/plugin marketplace add Alfafis/critique\n/plugin install critique@critique\n```\n\nThat is the whole thing. It works on any machine, with no other marketplace registered.\n\n### From the community marketplace\n\ncritique is also in Anthropic's community catalog. That catalog is **not registered by default** —\nonly `claude-plugins-official` is, and critique is not in it. So `/plugin` → Discover will not\nfind critique until you add the community marketplace yourself:\n\n```\n/plugin marketplace add anthropics/claude-plugins-community\n/plugin install critique@claude-community\n```\n\nEither route installs the same plugin. The direct one is a version ahead more often, because the\ncommunity catalog pins a commit and syncs nightly.\n\n### From your terminal\n\nOutside Claude Code, or with the `!` prefix inside it:\n\n```shell\nclaude plugin marketplace add Alfafis/critique && claude plugin install critique@critique\n```\n\n### Direct from GitHub (manual)\n\nAdd to `~/.claude/settings.json`:\n\n```json\n{\n  \"extraKnownMarketplaces\": {\n    \"critique\": {\n      \"source\": {\n        \"source\": \"github\",\n        \"repo\": \"Alfafis/critique\"\n      }\n    }\n  }\n}\n```\n\nThen install:\n\n```shell\n/plugin install critique@critique\n```\n\n### Statusline badge (opt-in)\n\n```\n/critique:badge\n```\n\nRenders `[CRITIQUE]` in red in the statusline while the mode is active, and disappears when it is off.\n\nIt is **not** installed automatically. Installing it changes configuration outside the plugin's own directory — it sets `statusLine` in `~/.claude/settings.json`, or, if you already have one, splices a call into your existing statusline script between these markers:\n\n```shell\n# >>> critique badge >>>\n[ -f '…/critica-statusline.sh' ] && bash '…/critica-statusline.sh'\n# <<< critique badge <<<\n```\n\n`/critique:badge off` reverses exactly that: it removes the marked block, or the `statusLine` entry if the plugin was the one that set it, then deletes the copied script. Content outside the markers is never touched. `/critique:badge status` reports the current state.\n\nInstalling never overwrites an existing `statusLine`, and never writes over a `settings.json` it cannot parse.\n\n---\n\n## Toggle\n\n**On:** automatic — hooks activate every session.\n\n**Off:** `critique off` · `disable critique` · `stop critique` · `desativa critica` · `sem critica` · `desactiva critica` · `désactive critique`\n\n**Back on:** `critique on` · `enable critique` · `ativa critica` · `activa la critica` · `réactive critique`\n\nOff persists for the rest of the session and keeps your detected language. A new session starts active again — that is the plugin's default. The phrase has to name critique directly (`stop critique`, not `stop` somewhere in a sentence that happens to mention critique), so ordinary prompts never toggle it by accident.\n\n---\n\n## Contributing\n\nTests, signing setup and the release process: [CONTRIBUTING.md](CONTRIBUTING.md).\nReporting a vulnerability: [SECURITY.md](SECURITY.md).\n\n## License\n\nMIT\n",
  "bytes": 6133,
  "sha": "06776e97d65a114c045da62eef0e826fb6affef5354529efb74037d278abf3f7",
  "repo_slug": "alfafis/critique",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_alfafis_critique_critique_bb654838/readme"
}