بنقرة واحدة
critique-code
Critique changed code — find bugs, check conventions, raise design questions
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Critique changed code — find bugs, check conventions, raise design questions
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Start work in an ISOLATED git worktree (the exception path — use only when two envs must be live at once, the work is multi-day and main must stay shippable meanwhile, or it's a throwaway spike). Creates the branch + worktree + venv + frontend build + smoke test + BRANCHES.md entry. For ordinary work, use /new-feature (trunk) instead. Any Kind — captured in Step 3.5. The `--from-cloud` flag instead ADOPTS an existing `origin/claude/*` cloud branch (built on phone/cloud, never compiled): fetch → build the Mac env → run the tests the cloud couldn't → preview the merge against main.
End-of-session ritual — verify, document for humans and robots, commit, close out
Ship a release — bump version, finalise changelog/readme, tag, push, and verify PyPI. The ONLY workflow command that touches public distribution (PyPI, Homebrew, the public changelog, the tag). Evening window on weekdays. Supports --dry-run.
Finish a piece of trunk work on main — runs tests + lint, surfaces human-QA checks, trues docs, adds a changelog line, marks the 100days item done, and commits. No merge (you're already on main). If you're on a branch, it offers to close the branch properly instead.
Archive a merged feature branch — stale marker, detach worktree, update BRANCHES.md (preserves local directory)
Start a piece of work on main (trunk — the DEFAULT path). Loads the plan / 100days item, checks recent history, agrees a plan, and records the task. No branch, no worktree, no env setup. For work that needs an isolated live environment, use /new-branch instead.
| name | critique-code |
| description | Critique changed code — find bugs, check conventions, raise design questions |
| disable-model-invocation | true |
| user-invocable | true |
| allowed-tools | Bash, Read, Glob, Grep, AskUserQuestion |
Critique recent code changes. Find real bugs, check project conventions, and — most importantly — raise thoughtful design questions that surface competing viewpoints and tradeoffs.
This is a thinking partner, not a gatekeeper. The Questions section is always present, even for perfect code. Present alternatives honestly, steelman both sides, and let the developer decide.
If $0 is a git range (e.g. main..HEAD, HEAD~3..HEAD), use it directly and skip the prompt.
Otherwise, ask the user what to critique:
git diff --cached)git diff)git diff HEAD~1..HEAD)Run git diff --stat <range> to get the file list. If the diff exceeds 500 lines, warn the user and suggest breaking the change into smaller commits — but proceed.
Based on file extensions in the diff, activate conditional lenses:
.py files present → activate Python lens.ts or .tsx files present → activate TypeScript/React lens.css files in bristlenose/theme/ present → activate CSS/Theme lensRead the root CLAUDE.md (always). Then read only the CLAUDE.md files relevant to changed paths:
| Changed path prefix | Read |
|---|---|
bristlenose/stages/ | bristlenose/stages/CLAUDE.md |
bristlenose/llm/ | bristlenose/llm/CLAUDE.md |
bristlenose/server/ | bristlenose/server/CLAUDE.md |
bristlenose/theme/ | bristlenose/theme/CLAUDE.md |
frontend/ | frontend/CLAUDE.md |
Do not read all CLAUDE.md files every time — only the relevant ones.
Run git diff <range> to get the full diff content. If you need surrounding context to understand a function signature, type, or import — read that source file.
Output this structure:
# Critique
**Scope:** <summary, e.g. "3 staged files (2 Python, 1 TypeScript)">
## Bugs & Issues
<numbered list, or "None found." if clean>
## Convention Notes
<numbered list, or "All conventions followed." if clean>
## Questions
<numbered list — always present>
file:line — [HIGH/MEDIUM] description. Why it matters. 2–4 sentences max.file:line — what deviates. Ref: which CLAUDE.md, which rule.Python lens (when .py files are in the diff):
analysis/ which uses plain dataclasses)asyncio.Semaphore + asyncio.gather for concurrencyTypeScript/React lens (when .ts/.tsx files are in the diff):
useSyncExternalStore, not Context for shared statestopPropagation on keydown handlers (known bug class in this codebase)<a> or <Link> for clickable navigation, not <div onClick>resetStore() in beforeEach, vi.mock hoisting awarenessCSS/Theme lens (when .css files in bristlenose/theme/ are in the diff):
--bn-* custom properties, never hardcoded valueslight-dark() function, no JS--bn-weight-* tokens, never hardcode@media query commentsBe brief. Each finding or question: 2–4 sentences. The developer is smart and knows the codebase — provide the signal, not an explanation of what the code does. If the change is trivial (typo, version bump) with nothing interesting to say, say "Nothing to flag — trivial change." and stop.