[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-continue-setup-checks":3,"mdc-vi0iv2-key":34,"related-repo-continue-setup-checks":2868,"related-org-continue-setup-checks":2876},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"setup-checks","create automated code quality checks","Analyze this repo and create tailored AI check files in .checks\u002F that run as agents on every PR to enforce code quality standards.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"continue","Continue","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fcontinue.png","continuedev",[13,17,20],{"name":14,"slug":15,"type":16},"QA","qa","tag",{"name":18,"slug":19,"type":16},"Code Analysis","code-analysis",{"name":21,"slug":22,"type":16},"Testing","testing",10,"https:\u002F\u002Fgithub.com\u002Fcontinuedev\u002Fchecks","2026-07-12T08:47:35.019831",null,5,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"Code quality standards that run as full AI agents on PRs","https:\u002F\u002Fgithub.com\u002Fcontinuedev\u002Fchecks\u002Ftree\u002FHEAD\u002Fskills\u002Fsetup-checks","---\nname: setup-checks\ndescription: Analyze this repo and create tailored AI check files in .checks\u002F that run as agents on every PR to enforce code quality standards.\n---\n\n# Set Up AI Checks\n\nYou are helping a developer set up **AI Checks** — markdown files that define code quality standards. Each check runs as a full AI agent on every PR — not just reading the diff, but able to read files, run commands, and use a browser. If it finds something, it fails the PR with a suggested fix. Otherwise, it passes silently.\n\n**Complete all steps below in order.**\n\n---\n\n## Step 1: Orient\n\nWelcome the user. Keep it brief — one or two sentences:\n\n> We're going to set up AI checks for your repo. I'll explore your codebase, write checks tailored to your project, and get you set up to run them.\n\nThen create a todo list for the session:\n\n1. Explore codebase & write checks\n2. Try a check\n3. Set up CI (optional)\n4. Commit & PR\n\nMark task 1 in progress.\n\n## Step 2: Git Setup\n\n1. Verify this is a git repo: `git rev-parse --git-dir 2>\u002Fdev\u002Fnull` — stop if not.\n2. Check for uncommitted changes: `git status --porcelain`\n\nIf dirty, ask:\n\n> You have uncommitted changes. I'd like to stash them and create a new branch. OK?\n\nIf approved:\n\n```bash\ngit rev-parse --abbrev-ref HEAD # save original branch\ngit stash push -m \"Stashing before checks setup\"\ngit checkout -b add-checks\n```\n\nRemember the original branch and whether you stashed — you'll restore later.\n\n## Step 3: Explore & Write Checks\n\n**Speed target: under 60 seconds. Stay shallow — surface patterns, don't read entire files.**\n\nRun these in parallel where possible:\n\n### Codebase scan\n\n- Project structure, languages, frameworks, build system\n- Linters, formatters, type checkers already in use\n- Testing framework & patterns\n- CI\u002FCD workflows\n- Contributing guidelines (CONTRIBUTING.md, CLAUDE.md, AGENTS.md)\n\n### PR review history (via `gh` CLI, skip if `gh` is not available)\n\n```bash\ngh pr list --state merged --limit 30 --json number,title\n# For 3-5 recent PRs with review comments:\ngh api repos\u002F{owner}\u002F{repo}\u002Fpulls\u002F{number}\u002Fcomments --jq '.[] | {body: .body, path: .path}'\n```\n\nLook for: what reviewers commonly flag, what linters don't catch, what areas get the most review attention.\n\n### Propose checks\n\nShare 3-5 bullet findings, then propose exactly **3 checks** via a multiselect question (all selected by default). **Cardinal rule: never create a check for something already enforced by a deterministic tool** (linter, type checker, CI step). Checks are for things that require judgment — slop, drifting conventions, security anti-patterns, poor taste. Each proposed check must be specific to this project and clearly valuable.\n\n### Write check files\n\nCreate `.checks\u002F` and write one `.md` file per check:\n\n```markdown\n---\nname: Human-Readable Check Name\ndescription: One-sentence description.\n---\n\n# Check Name\n\n## Context\n\nWHY this check exists. Reference specific project patterns, configs, or review comments you found.\n\n## What to Check\n\n### 1. Category\n\nConcrete instructions with specific file paths\u002Fpatterns and GOOD\u002FBAD code examples from this codebase.\n\n### 2. Category\n\n...\n\n## Key Files\n\nList the files most relevant to this check.\n\n## Exclusions\n\nCases where this check does NOT apply.\n```\n\nKeep file names lowercase with hyphens (e.g., `error-handling.md`, `api-conventions.md`).\n\n### Update agent config\n\nAdd a section to the project's agent configuration file so checks become part of the workflow. Choose the right file based on what exists or what tool the user is using:\n\n- **CLAUDE.md** — if using Claude Code\n- **AGENTS.md** — if using a generic agent setup\n- **COPILOT.md** — if using GitHub Copilot\n- If none of these exist, create the most appropriate one.\n\nAppend a section like this:\n\n```markdown\n## Checks\n\nBefore opening a pull request, run all checks in `.checks\u002F` against your current diff and fix any failures before requesting review.\n```\n\nMark task 1 complete.\n\n## Step 4: Try a Check\n\nMark task 2 in progress. Let the user see a check in action. Ask them which check they'd like to try:\n\n> Which check would you like to try? I'll run it against the codebase right now.\n\nPresent the list of checks as options. Once they pick one:\n\n1. Read the selected check file from `.checks\u002F`\n2. Scan the codebase against the check's criteria — read the relevant source files, not just a diff\n3. Evaluate what you find:\n   - For each finding: state severity (Error \u002F Warning \u002F Info), reference the specific file and line, explain what's wrong and how to fix it\n   - If everything looks good, report PASS\n   - If there are findings, report FAIL and list them\n4. Present the result — if it fails, offer to fix the issues\n\nMark task 2 complete.\n\n## Step 5: CI Setup (Optional)\n\nMark task 3 in progress. Ask the user:\n\n> Would you like to also run these checks automatically on every PR via GitHub Actions? I'll add the workflow file to the PR — you just need to add an API key as a repository secret.\n\nIf they say yes, create `.github\u002Fworkflows\u002Fchecks.yml`:\n\n```yaml\nname: AI Checks\n\non:\n  pull_request:\n    types: [opened, synchronize, reopened]\n\nconcurrency:\n  group: ai-checks-${{ github.event.pull_request.number }}\n  cancel-in-progress: true\n\njobs:\n  checks:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n      pull-requests: write\n      checks: write\n    steps:\n      - uses: actions\u002Fcheckout@v4\n        with:\n          fetch-depth: 0\n\n      - uses: actions\u002Fcache@v4\n        with:\n          path: ~\u002F.npm\n          key: claude-code-${{ runner.os }}\n\n      - name: Install agent CLI\n        run: npm install -g @anthropic-ai\u002Fclaude-code\n\n      - name: Get PR diff\n        run: |\n          gh pr diff ${{ github.event.pull_request.number }} > \u002Ftmp\u002Fpr.diff\n          head -c 100000 \u002Ftmp\u002Fpr.diff > \u002Ftmp\u002Fpr-truncated.diff\n        env:\n          GH_TOKEN: ${{ github.token }}\n\n      - name: Run all checks\n        env:\n          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}\n          GH_TOKEN: ${{ github.token }}\n        run: |\n          REPORT_FILE=$(mktemp)\n          echo \"## AI Check Results\" >> \"$REPORT_FILE\"\n          echo \"\" >> \"$REPORT_FILE\"\n          echo \"| Check | Result |\" >> \"$REPORT_FILE\"\n          echo \"|---|---|\" >> \"$REPORT_FILE\"\n\n          for check_file in .checks\u002F*.md; do\n            [ -f \"$check_file\" ] || continue\n            name=$(basename \"$check_file\" .md)\n\n            # Create check run in progress\n            CHECK_RUN_ID=$(gh api repos\u002F${{ github.repository }}\u002Fcheck-runs \\\n              -f name=\"check\u002F$name\" \\\n              -f head_sha=${{ github.event.pull_request.head.sha }} \\\n              -f status=in_progress \\\n              --jq '.id')\n\n            # Run agent with the check prompt and PR diff\n            OUTPUT=$(claude -p \"$(cat \u003C\u003CPROMPT\n          You are running a quality check on a pull request.\n\n          ## Check\n          $(cat \"$check_file\")\n\n          ## PR Diff\n          $(cat \u002Ftmp\u002Fpr-truncated.diff)\n\n          ## Instructions\n          Evaluate the changed files against this check.\n          Only review changed lines. Do not flag pre-existing issues in unchanged code.\n          Output valid JSON: {\"verdict\":\"PASS\" or \"FAIL\",\"reason\":\"...\",\"suggestions\":[{\"file\":\"...\",\"line\":0,\"fix\":\"...\"}]}\n          PROMPT\n            )\" --output-format json 2>&1) || true\n\n            # Parse verdict — claude --output-format json wraps the response in an envelope\n            # with the actual content in .result as a string (possibly markdown-fenced)\n            INNER=$(echo \"$OUTPUT\" | jq -r '.result \u002F\u002F empty' 2>\u002Fdev\u002Fnull | sed 's\u002F^```json\u002F\u002F;s\u002F^```\u002F\u002F;s\u002F```$\u002F\u002F' | jq -r '.' 2>\u002Fdev\u002Fnull || echo \"$OUTPUT\")\n            VERDICT=$(echo \"$INNER\" | jq -r '.verdict \u002F\u002F \"ERROR\"' 2>\u002Fdev\u002Fnull || echo \"ERROR\")\n            REASON=$(echo \"$INNER\" | jq -r '.reason \u002F\u002F \"No reason given\"' 2>\u002Fdev\u002Fnull || echo \"Parse failure\")\n\n            # Extract suggestions for detail text\n            SUGGESTIONS=$(echo \"$INNER\" | jq -r '.suggestions \u002F\u002F [] | .[] | \"- **\\(.file):\\(.line)** — \\(.fix)\"' 2>\u002Fdev\u002Fnull || echo \"\")\n\n            # Build detail markdown\n            DETAIL=\"## $name\\n\\n**Verdict:** $VERDICT\\n\\n### Reason\\n\\n$REASON\"\n            if [ -n \"$SUGGESTIONS\" ]; then\n              DETAIL=\"$DETAIL\\n\\n### Suggestions\\n\\n$SUGGESTIONS\"\n            fi\n\n            # Complete the check run\n            CONCLUSION=$([ \"$VERDICT\" = \"PASS\" ] && echo \"success\" || echo \"failure\")\n            gh api repos\u002F${{ github.repository }}\u002Fcheck-runs\u002F$CHECK_RUN_ID \\\n              -X PATCH \\\n              -f status=completed \\\n              -f conclusion=\"$CONCLUSION\" \\\n              -f \"output[title]=$(echo \"$REASON\" | head -c 140)\" \\\n              -f \"output[summary]=$REASON\" \\\n              -f \"output[text]=$(printf \"$DETAIL\")\" > \u002Fdev\u002Fnull\n\n            # Append to report\n            ICON=$([ \"$VERDICT\" = \"PASS\" ] && echo \"✅\" || echo \"❌\")\n            echo \"| $ICON $name | $REASON |\" >> \"$REPORT_FILE\"\n\n            # Save full output for debugging\n            echo \"$OUTPUT\" > \"\u002Ftmp\u002Fcheck-$name.json\"\n          done\n\n          # Post single consolidated comment\n          gh pr comment ${{ github.event.pull_request.number }} --body \"$(cat \"$REPORT_FILE\")\"\n\n      - name: Upload check outputs\n        if: always()\n        uses: actions\u002Fupload-artifact@v4\n        with:\n          name: check-results\n          path: \u002Ftmp\u002Fcheck-*.json\n          retention-days: 7\n```\n\nTell the user they can add their API key as a repository secret by running this command in their terminal (do NOT run it yourself — it prompts for the secret value securely):\n\n> To activate the workflow after merging, run this in your terminal:\n>\n> ```\n> echo \"YOUR_API_KEY\" | gh secret set ANTHROPIC_API_KEY --repo \u003Cowner>\u002F\u003Crepo>\n> ```\n>\n> Replace `YOUR_API_KEY` with your actual Anthropic API key.\n\nFill in the actual `\u003Cowner>\u002F\u003Crepo>` for them.\n\nMark task 3 complete.\n\n## Step 6: Commit & PR\n\nMark task 4 in progress. Commit everything and open a PR:\n\n```bash\ngit add .checks\u002F\ngit add .github\u002Fworkflows\u002Fchecks.yml 2>\u002Fdev\u002Fnull # if CI was set up\ngit add CLAUDE.md AGENTS.md COPILOT.md 2>\u002Fdev\u002Fnull # whichever was modified\ngit commit -m \"Add checks for automated PR review\n\nChecks:\n- [list each check name]\"\ngit push origin HEAD\ngh pr create --title \"Add checks for automated PR review\" --body \"Adds AI-powered code review checks that run on every PR.\n\n## Checks added\n\n[list each check with one-line description]\n\n## How it works\n\nEach check is a markdown file in \\`.checks\u002F\\`. They run as full agents on every PR — reading files, running commands, and providing suggested fixes when they find issues.\"\n```\n\nIf you stashed changes earlier, restore them:\n\n```bash\ngit checkout \u003Coriginal-branch>\ngit stash pop\n```\n\nMark task 4 complete. Share the PR URL.\n",{"data":35,"body":36},{"name":4,"description":6},{"type":37,"children":38},"root",[39,48,62,70,74,81,86,95,100,125,130,136,164,169,177,182,289,294,300,308,313,320,349,370,470,475,481,500,506,527,824,845,851,856,894,899,951,956,962,967,975,980,1026,1031,1037,1042,1050,1062,2435,2440,2471,2484,2489,2495,2500,2798,2803,2857,2862],{"type":40,"tag":41,"props":42,"children":44},"element","h1",{"id":43},"set-up-ai-checks",[45],{"type":46,"value":47},"text","Set Up AI Checks",{"type":40,"tag":49,"props":50,"children":51},"p",{},[52,54,60],{"type":46,"value":53},"You are helping a developer set up ",{"type":40,"tag":55,"props":56,"children":57},"strong",{},[58],{"type":46,"value":59},"AI Checks",{"type":46,"value":61}," — markdown files that define code quality standards. Each check runs as a full AI agent on every PR — not just reading the diff, but able to read files, run commands, and use a browser. If it finds something, it fails the PR with a suggested fix. Otherwise, it passes silently.",{"type":40,"tag":49,"props":63,"children":64},{},[65],{"type":40,"tag":55,"props":66,"children":67},{},[68],{"type":46,"value":69},"Complete all steps below in order.",{"type":40,"tag":71,"props":72,"children":73},"hr",{},[],{"type":40,"tag":75,"props":76,"children":78},"h2",{"id":77},"step-1-orient",[79],{"type":46,"value":80},"Step 1: Orient",{"type":40,"tag":49,"props":82,"children":83},{},[84],{"type":46,"value":85},"Welcome the user. Keep it brief — one or two sentences:",{"type":40,"tag":87,"props":88,"children":89},"blockquote",{},[90],{"type":40,"tag":49,"props":91,"children":92},{},[93],{"type":46,"value":94},"We're going to set up AI checks for your repo. I'll explore your codebase, write checks tailored to your project, and get you set up to run them.",{"type":40,"tag":49,"props":96,"children":97},{},[98],{"type":46,"value":99},"Then create a todo list for the session:",{"type":40,"tag":101,"props":102,"children":103},"ol",{},[104,110,115,120],{"type":40,"tag":105,"props":106,"children":107},"li",{},[108],{"type":46,"value":109},"Explore codebase & write checks",{"type":40,"tag":105,"props":111,"children":112},{},[113],{"type":46,"value":114},"Try a check",{"type":40,"tag":105,"props":116,"children":117},{},[118],{"type":46,"value":119},"Set up CI (optional)",{"type":40,"tag":105,"props":121,"children":122},{},[123],{"type":46,"value":124},"Commit & PR",{"type":40,"tag":49,"props":126,"children":127},{},[128],{"type":46,"value":129},"Mark task 1 in progress.",{"type":40,"tag":75,"props":131,"children":133},{"id":132},"step-2-git-setup",[134],{"type":46,"value":135},"Step 2: Git Setup",{"type":40,"tag":101,"props":137,"children":138},{},[139,153],{"type":40,"tag":105,"props":140,"children":141},{},[142,144,151],{"type":46,"value":143},"Verify this is a git repo: ",{"type":40,"tag":145,"props":146,"children":148},"code",{"className":147},[],[149],{"type":46,"value":150},"git rev-parse --git-dir 2>\u002Fdev\u002Fnull",{"type":46,"value":152}," — stop if not.",{"type":40,"tag":105,"props":154,"children":155},{},[156,158],{"type":46,"value":157},"Check for uncommitted changes: ",{"type":40,"tag":145,"props":159,"children":161},{"className":160},[],[162],{"type":46,"value":163},"git status --porcelain",{"type":40,"tag":49,"props":165,"children":166},{},[167],{"type":46,"value":168},"If dirty, ask:",{"type":40,"tag":87,"props":170,"children":171},{},[172],{"type":40,"tag":49,"props":173,"children":174},{},[175],{"type":46,"value":176},"You have uncommitted changes. I'd like to stash them and create a new branch. OK?",{"type":40,"tag":49,"props":178,"children":179},{},[180],{"type":46,"value":181},"If approved:",{"type":40,"tag":183,"props":184,"children":189},"pre",{"className":185,"code":186,"language":187,"meta":188,"style":188},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git rev-parse --abbrev-ref HEAD # save original branch\ngit stash push -m \"Stashing before checks setup\"\ngit checkout -b add-checks\n","bash","",[190],{"type":40,"tag":145,"props":191,"children":192},{"__ignoreMap":188},[193,227,266],{"type":40,"tag":194,"props":195,"children":198},"span",{"class":196,"line":197},"line",1,[199,205,211,216,221],{"type":40,"tag":194,"props":200,"children":202},{"style":201},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[203],{"type":46,"value":204},"git",{"type":40,"tag":194,"props":206,"children":208},{"style":207},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[209],{"type":46,"value":210}," rev-parse",{"type":40,"tag":194,"props":212,"children":213},{"style":207},[214],{"type":46,"value":215}," --abbrev-ref",{"type":40,"tag":194,"props":217,"children":218},{"style":207},[219],{"type":46,"value":220}," HEAD",{"type":40,"tag":194,"props":222,"children":224},{"style":223},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[225],{"type":46,"value":226}," # save original branch\n",{"type":40,"tag":194,"props":228,"children":230},{"class":196,"line":229},2,[231,235,240,245,250,256,261],{"type":40,"tag":194,"props":232,"children":233},{"style":201},[234],{"type":46,"value":204},{"type":40,"tag":194,"props":236,"children":237},{"style":207},[238],{"type":46,"value":239}," stash",{"type":40,"tag":194,"props":241,"children":242},{"style":207},[243],{"type":46,"value":244}," push",{"type":40,"tag":194,"props":246,"children":247},{"style":207},[248],{"type":46,"value":249}," -m",{"type":40,"tag":194,"props":251,"children":253},{"style":252},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[254],{"type":46,"value":255}," \"",{"type":40,"tag":194,"props":257,"children":258},{"style":207},[259],{"type":46,"value":260},"Stashing before checks setup",{"type":40,"tag":194,"props":262,"children":263},{"style":252},[264],{"type":46,"value":265},"\"\n",{"type":40,"tag":194,"props":267,"children":269},{"class":196,"line":268},3,[270,274,279,284],{"type":40,"tag":194,"props":271,"children":272},{"style":201},[273],{"type":46,"value":204},{"type":40,"tag":194,"props":275,"children":276},{"style":207},[277],{"type":46,"value":278}," checkout",{"type":40,"tag":194,"props":280,"children":281},{"style":207},[282],{"type":46,"value":283}," -b",{"type":40,"tag":194,"props":285,"children":286},{"style":207},[287],{"type":46,"value":288}," add-checks\n",{"type":40,"tag":49,"props":290,"children":291},{},[292],{"type":46,"value":293},"Remember the original branch and whether you stashed — you'll restore later.",{"type":40,"tag":75,"props":295,"children":297},{"id":296},"step-3-explore-write-checks",[298],{"type":46,"value":299},"Step 3: Explore & Write Checks",{"type":40,"tag":49,"props":301,"children":302},{},[303],{"type":40,"tag":55,"props":304,"children":305},{},[306],{"type":46,"value":307},"Speed target: under 60 seconds. Stay shallow — surface patterns, don't read entire files.",{"type":40,"tag":49,"props":309,"children":310},{},[311],{"type":46,"value":312},"Run these in parallel where possible:",{"type":40,"tag":314,"props":315,"children":317},"h3",{"id":316},"codebase-scan",[318],{"type":46,"value":319},"Codebase scan",{"type":40,"tag":321,"props":322,"children":323},"ul",{},[324,329,334,339,344],{"type":40,"tag":105,"props":325,"children":326},{},[327],{"type":46,"value":328},"Project structure, languages, frameworks, build system",{"type":40,"tag":105,"props":330,"children":331},{},[332],{"type":46,"value":333},"Linters, formatters, type checkers already in use",{"type":40,"tag":105,"props":335,"children":336},{},[337],{"type":46,"value":338},"Testing framework & patterns",{"type":40,"tag":105,"props":340,"children":341},{},[342],{"type":46,"value":343},"CI\u002FCD workflows",{"type":40,"tag":105,"props":345,"children":346},{},[347],{"type":46,"value":348},"Contributing guidelines (CONTRIBUTING.md, CLAUDE.md, AGENTS.md)",{"type":40,"tag":314,"props":350,"children":352},{"id":351},"pr-review-history-via-gh-cli-skip-if-gh-is-not-available",[353,355,361,363,368],{"type":46,"value":354},"PR review history (via ",{"type":40,"tag":145,"props":356,"children":358},{"className":357},[],[359],{"type":46,"value":360},"gh",{"type":46,"value":362}," CLI, skip if ",{"type":40,"tag":145,"props":364,"children":366},{"className":365},[],[367],{"type":46,"value":360},{"type":46,"value":369}," is not available)",{"type":40,"tag":183,"props":371,"children":373},{"className":185,"code":372,"language":187,"meta":188,"style":188},"gh pr list --state merged --limit 30 --json number,title\n# For 3-5 recent PRs with review comments:\ngh api repos\u002F{owner}\u002F{repo}\u002Fpulls\u002F{number}\u002Fcomments --jq '.[] | {body: .body, path: .path}'\n",[374],{"type":40,"tag":145,"props":375,"children":376},{"__ignoreMap":188},[377,425,433],{"type":40,"tag":194,"props":378,"children":379},{"class":196,"line":197},[380,384,389,394,399,404,409,415,420],{"type":40,"tag":194,"props":381,"children":382},{"style":201},[383],{"type":46,"value":360},{"type":40,"tag":194,"props":385,"children":386},{"style":207},[387],{"type":46,"value":388}," pr",{"type":40,"tag":194,"props":390,"children":391},{"style":207},[392],{"type":46,"value":393}," list",{"type":40,"tag":194,"props":395,"children":396},{"style":207},[397],{"type":46,"value":398}," --state",{"type":40,"tag":194,"props":400,"children":401},{"style":207},[402],{"type":46,"value":403}," merged",{"type":40,"tag":194,"props":405,"children":406},{"style":207},[407],{"type":46,"value":408}," --limit",{"type":40,"tag":194,"props":410,"children":412},{"style":411},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[413],{"type":46,"value":414}," 30",{"type":40,"tag":194,"props":416,"children":417},{"style":207},[418],{"type":46,"value":419}," --json",{"type":40,"tag":194,"props":421,"children":422},{"style":207},[423],{"type":46,"value":424}," number,title\n",{"type":40,"tag":194,"props":426,"children":427},{"class":196,"line":229},[428],{"type":40,"tag":194,"props":429,"children":430},{"style":223},[431],{"type":46,"value":432},"# For 3-5 recent PRs with review comments:\n",{"type":40,"tag":194,"props":434,"children":435},{"class":196,"line":268},[436,440,445,450,455,460,465],{"type":40,"tag":194,"props":437,"children":438},{"style":201},[439],{"type":46,"value":360},{"type":40,"tag":194,"props":441,"children":442},{"style":207},[443],{"type":46,"value":444}," api",{"type":40,"tag":194,"props":446,"children":447},{"style":207},[448],{"type":46,"value":449}," repos\u002F{owner}\u002F{repo}\u002Fpulls\u002F{number}\u002Fcomments",{"type":40,"tag":194,"props":451,"children":452},{"style":207},[453],{"type":46,"value":454}," --jq",{"type":40,"tag":194,"props":456,"children":457},{"style":252},[458],{"type":46,"value":459}," '",{"type":40,"tag":194,"props":461,"children":462},{"style":207},[463],{"type":46,"value":464},".[] | {body: .body, path: .path}",{"type":40,"tag":194,"props":466,"children":467},{"style":252},[468],{"type":46,"value":469},"'\n",{"type":40,"tag":49,"props":471,"children":472},{},[473],{"type":46,"value":474},"Look for: what reviewers commonly flag, what linters don't catch, what areas get the most review attention.",{"type":40,"tag":314,"props":476,"children":478},{"id":477},"propose-checks",[479],{"type":46,"value":480},"Propose checks",{"type":40,"tag":49,"props":482,"children":483},{},[484,486,491,493,498],{"type":46,"value":485},"Share 3-5 bullet findings, then propose exactly ",{"type":40,"tag":55,"props":487,"children":488},{},[489],{"type":46,"value":490},"3 checks",{"type":46,"value":492}," via a multiselect question (all selected by default). ",{"type":40,"tag":55,"props":494,"children":495},{},[496],{"type":46,"value":497},"Cardinal rule: never create a check for something already enforced by a deterministic tool",{"type":46,"value":499}," (linter, type checker, CI step). Checks are for things that require judgment — slop, drifting conventions, security anti-patterns, poor taste. Each proposed check must be specific to this project and clearly valuable.",{"type":40,"tag":314,"props":501,"children":503},{"id":502},"write-check-files",[504],{"type":46,"value":505},"Write check files",{"type":40,"tag":49,"props":507,"children":508},{},[509,511,517,519,525],{"type":46,"value":510},"Create ",{"type":40,"tag":145,"props":512,"children":514},{"className":513},[],[515],{"type":46,"value":516},".checks\u002F",{"type":46,"value":518}," and write one ",{"type":40,"tag":145,"props":520,"children":522},{"className":521},[],[523],{"type":46,"value":524},".md",{"type":46,"value":526}," file per check:",{"type":40,"tag":183,"props":528,"children":532},{"className":529,"code":530,"language":531,"meta":188,"style":188},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\nname: Human-Readable Check Name\ndescription: One-sentence description.\n---\n\n# Check Name\n\n## Context\n\nWHY this check exists. Reference specific project patterns, configs, or review comments you found.\n\n## What to Check\n\n### 1. Category\n\nConcrete instructions with specific file paths\u002Fpatterns and GOOD\u002FBAD code examples from this codebase.\n\n### 2. Category\n\n...\n\n## Key Files\n\nList the files most relevant to this check.\n\n## Exclusions\n\nCases where this check does NOT apply.\n","markdown",[533],{"type":40,"tag":145,"props":534,"children":535},{"__ignoreMap":188},[536,544,563,580,588,597,611,619,633,641,650,658,671,679,693,701,710,718,731,739,748,756,769,777,786,794,807,815],{"type":40,"tag":194,"props":537,"children":538},{"class":196,"line":197},[539],{"type":40,"tag":194,"props":540,"children":541},{"style":252},[542],{"type":46,"value":543},"---\n",{"type":40,"tag":194,"props":545,"children":546},{"class":196,"line":229},[547,553,558],{"type":40,"tag":194,"props":548,"children":550},{"style":549},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[551],{"type":46,"value":552},"name",{"type":40,"tag":194,"props":554,"children":555},{"style":252},[556],{"type":46,"value":557},":",{"type":40,"tag":194,"props":559,"children":560},{"style":207},[561],{"type":46,"value":562}," Human-Readable Check Name\n",{"type":40,"tag":194,"props":564,"children":565},{"class":196,"line":268},[566,571,575],{"type":40,"tag":194,"props":567,"children":568},{"style":549},[569],{"type":46,"value":570},"description",{"type":40,"tag":194,"props":572,"children":573},{"style":252},[574],{"type":46,"value":557},{"type":40,"tag":194,"props":576,"children":577},{"style":207},[578],{"type":46,"value":579}," One-sentence description.\n",{"type":40,"tag":194,"props":581,"children":583},{"class":196,"line":582},4,[584],{"type":40,"tag":194,"props":585,"children":586},{"style":252},[587],{"type":46,"value":543},{"type":40,"tag":194,"props":589,"children":590},{"class":196,"line":27},[591],{"type":40,"tag":194,"props":592,"children":594},{"emptyLinePlaceholder":593},true,[595],{"type":46,"value":596},"\n",{"type":40,"tag":194,"props":598,"children":600},{"class":196,"line":599},6,[601,606],{"type":40,"tag":194,"props":602,"children":603},{"style":252},[604],{"type":46,"value":605},"# ",{"type":40,"tag":194,"props":607,"children":608},{"style":201},[609],{"type":46,"value":610},"Check Name\n",{"type":40,"tag":194,"props":612,"children":614},{"class":196,"line":613},7,[615],{"type":40,"tag":194,"props":616,"children":617},{"emptyLinePlaceholder":593},[618],{"type":46,"value":596},{"type":40,"tag":194,"props":620,"children":622},{"class":196,"line":621},8,[623,628],{"type":40,"tag":194,"props":624,"children":625},{"style":252},[626],{"type":46,"value":627},"## ",{"type":40,"tag":194,"props":629,"children":630},{"style":201},[631],{"type":46,"value":632},"Context\n",{"type":40,"tag":194,"props":634,"children":636},{"class":196,"line":635},9,[637],{"type":40,"tag":194,"props":638,"children":639},{"emptyLinePlaceholder":593},[640],{"type":46,"value":596},{"type":40,"tag":194,"props":642,"children":643},{"class":196,"line":23},[644],{"type":40,"tag":194,"props":645,"children":647},{"style":646},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[648],{"type":46,"value":649},"WHY this check exists. Reference specific project patterns, configs, or review comments you found.\n",{"type":40,"tag":194,"props":651,"children":653},{"class":196,"line":652},11,[654],{"type":40,"tag":194,"props":655,"children":656},{"emptyLinePlaceholder":593},[657],{"type":46,"value":596},{"type":40,"tag":194,"props":659,"children":661},{"class":196,"line":660},12,[662,666],{"type":40,"tag":194,"props":663,"children":664},{"style":252},[665],{"type":46,"value":627},{"type":40,"tag":194,"props":667,"children":668},{"style":201},[669],{"type":46,"value":670},"What to Check\n",{"type":40,"tag":194,"props":672,"children":674},{"class":196,"line":673},13,[675],{"type":40,"tag":194,"props":676,"children":677},{"emptyLinePlaceholder":593},[678],{"type":46,"value":596},{"type":40,"tag":194,"props":680,"children":682},{"class":196,"line":681},14,[683,688],{"type":40,"tag":194,"props":684,"children":685},{"style":252},[686],{"type":46,"value":687},"### ",{"type":40,"tag":194,"props":689,"children":690},{"style":201},[691],{"type":46,"value":692},"1. Category\n",{"type":40,"tag":194,"props":694,"children":696},{"class":196,"line":695},15,[697],{"type":40,"tag":194,"props":698,"children":699},{"emptyLinePlaceholder":593},[700],{"type":46,"value":596},{"type":40,"tag":194,"props":702,"children":704},{"class":196,"line":703},16,[705],{"type":40,"tag":194,"props":706,"children":707},{"style":646},[708],{"type":46,"value":709},"Concrete instructions with specific file paths\u002Fpatterns and GOOD\u002FBAD code examples from this codebase.\n",{"type":40,"tag":194,"props":711,"children":713},{"class":196,"line":712},17,[714],{"type":40,"tag":194,"props":715,"children":716},{"emptyLinePlaceholder":593},[717],{"type":46,"value":596},{"type":40,"tag":194,"props":719,"children":721},{"class":196,"line":720},18,[722,726],{"type":40,"tag":194,"props":723,"children":724},{"style":252},[725],{"type":46,"value":687},{"type":40,"tag":194,"props":727,"children":728},{"style":201},[729],{"type":46,"value":730},"2. Category\n",{"type":40,"tag":194,"props":732,"children":734},{"class":196,"line":733},19,[735],{"type":40,"tag":194,"props":736,"children":737},{"emptyLinePlaceholder":593},[738],{"type":46,"value":596},{"type":40,"tag":194,"props":740,"children":742},{"class":196,"line":741},20,[743],{"type":40,"tag":194,"props":744,"children":745},{"style":646},[746],{"type":46,"value":747},"...\n",{"type":40,"tag":194,"props":749,"children":751},{"class":196,"line":750},21,[752],{"type":40,"tag":194,"props":753,"children":754},{"emptyLinePlaceholder":593},[755],{"type":46,"value":596},{"type":40,"tag":194,"props":757,"children":759},{"class":196,"line":758},22,[760,764],{"type":40,"tag":194,"props":761,"children":762},{"style":252},[763],{"type":46,"value":627},{"type":40,"tag":194,"props":765,"children":766},{"style":201},[767],{"type":46,"value":768},"Key Files\n",{"type":40,"tag":194,"props":770,"children":772},{"class":196,"line":771},23,[773],{"type":40,"tag":194,"props":774,"children":775},{"emptyLinePlaceholder":593},[776],{"type":46,"value":596},{"type":40,"tag":194,"props":778,"children":780},{"class":196,"line":779},24,[781],{"type":40,"tag":194,"props":782,"children":783},{"style":646},[784],{"type":46,"value":785},"List the files most relevant to this check.\n",{"type":40,"tag":194,"props":787,"children":789},{"class":196,"line":788},25,[790],{"type":40,"tag":194,"props":791,"children":792},{"emptyLinePlaceholder":593},[793],{"type":46,"value":596},{"type":40,"tag":194,"props":795,"children":797},{"class":196,"line":796},26,[798,802],{"type":40,"tag":194,"props":799,"children":800},{"style":252},[801],{"type":46,"value":627},{"type":40,"tag":194,"props":803,"children":804},{"style":201},[805],{"type":46,"value":806},"Exclusions\n",{"type":40,"tag":194,"props":808,"children":810},{"class":196,"line":809},27,[811],{"type":40,"tag":194,"props":812,"children":813},{"emptyLinePlaceholder":593},[814],{"type":46,"value":596},{"type":40,"tag":194,"props":816,"children":818},{"class":196,"line":817},28,[819],{"type":40,"tag":194,"props":820,"children":821},{"style":646},[822],{"type":46,"value":823},"Cases where this check does NOT apply.\n",{"type":40,"tag":49,"props":825,"children":826},{},[827,829,835,837,843],{"type":46,"value":828},"Keep file names lowercase with hyphens (e.g., ",{"type":40,"tag":145,"props":830,"children":832},{"className":831},[],[833],{"type":46,"value":834},"error-handling.md",{"type":46,"value":836},", ",{"type":40,"tag":145,"props":838,"children":840},{"className":839},[],[841],{"type":46,"value":842},"api-conventions.md",{"type":46,"value":844},").",{"type":40,"tag":314,"props":846,"children":848},{"id":847},"update-agent-config",[849],{"type":46,"value":850},"Update agent config",{"type":40,"tag":49,"props":852,"children":853},{},[854],{"type":46,"value":855},"Add a section to the project's agent configuration file so checks become part of the workflow. Choose the right file based on what exists or what tool the user is using:",{"type":40,"tag":321,"props":857,"children":858},{},[859,869,879,889],{"type":40,"tag":105,"props":860,"children":861},{},[862,867],{"type":40,"tag":55,"props":863,"children":864},{},[865],{"type":46,"value":866},"CLAUDE.md",{"type":46,"value":868}," — if using Claude Code",{"type":40,"tag":105,"props":870,"children":871},{},[872,877],{"type":40,"tag":55,"props":873,"children":874},{},[875],{"type":46,"value":876},"AGENTS.md",{"type":46,"value":878}," — if using a generic agent setup",{"type":40,"tag":105,"props":880,"children":881},{},[882,887],{"type":40,"tag":55,"props":883,"children":884},{},[885],{"type":46,"value":886},"COPILOT.md",{"type":46,"value":888}," — if using GitHub Copilot",{"type":40,"tag":105,"props":890,"children":891},{},[892],{"type":46,"value":893},"If none of these exist, create the most appropriate one.",{"type":40,"tag":49,"props":895,"children":896},{},[897],{"type":46,"value":898},"Append a section like this:",{"type":40,"tag":183,"props":900,"children":902},{"className":529,"code":901,"language":531,"meta":188,"style":188},"## Checks\n\nBefore opening a pull request, run all checks in `.checks\u002F` against your current diff and fix any failures before requesting review.\n",[903],{"type":40,"tag":145,"props":904,"children":905},{"__ignoreMap":188},[906,918,925],{"type":40,"tag":194,"props":907,"children":908},{"class":196,"line":197},[909,913],{"type":40,"tag":194,"props":910,"children":911},{"style":252},[912],{"type":46,"value":627},{"type":40,"tag":194,"props":914,"children":915},{"style":201},[916],{"type":46,"value":917},"Checks\n",{"type":40,"tag":194,"props":919,"children":920},{"class":196,"line":229},[921],{"type":40,"tag":194,"props":922,"children":923},{"emptyLinePlaceholder":593},[924],{"type":46,"value":596},{"type":40,"tag":194,"props":926,"children":927},{"class":196,"line":268},[928,933,938,942,946],{"type":40,"tag":194,"props":929,"children":930},{"style":646},[931],{"type":46,"value":932},"Before opening a pull request, run all checks in ",{"type":40,"tag":194,"props":934,"children":935},{"style":252},[936],{"type":46,"value":937},"`",{"type":40,"tag":194,"props":939,"children":940},{"style":207},[941],{"type":46,"value":516},{"type":40,"tag":194,"props":943,"children":944},{"style":252},[945],{"type":46,"value":937},{"type":40,"tag":194,"props":947,"children":948},{"style":646},[949],{"type":46,"value":950}," against your current diff and fix any failures before requesting review.\n",{"type":40,"tag":49,"props":952,"children":953},{},[954],{"type":46,"value":955},"Mark task 1 complete.",{"type":40,"tag":75,"props":957,"children":959},{"id":958},"step-4-try-a-check",[960],{"type":46,"value":961},"Step 4: Try a Check",{"type":40,"tag":49,"props":963,"children":964},{},[965],{"type":46,"value":966},"Mark task 2 in progress. Let the user see a check in action. Ask them which check they'd like to try:",{"type":40,"tag":87,"props":968,"children":969},{},[970],{"type":40,"tag":49,"props":971,"children":972},{},[973],{"type":46,"value":974},"Which check would you like to try? I'll run it against the codebase right now.",{"type":40,"tag":49,"props":976,"children":977},{},[978],{"type":46,"value":979},"Present the list of checks as options. Once they pick one:",{"type":40,"tag":101,"props":981,"children":982},{},[983,993,998,1021],{"type":40,"tag":105,"props":984,"children":985},{},[986,988],{"type":46,"value":987},"Read the selected check file from ",{"type":40,"tag":145,"props":989,"children":991},{"className":990},[],[992],{"type":46,"value":516},{"type":40,"tag":105,"props":994,"children":995},{},[996],{"type":46,"value":997},"Scan the codebase against the check's criteria — read the relevant source files, not just a diff",{"type":40,"tag":105,"props":999,"children":1000},{},[1001,1003],{"type":46,"value":1002},"Evaluate what you find:\n",{"type":40,"tag":321,"props":1004,"children":1005},{},[1006,1011,1016],{"type":40,"tag":105,"props":1007,"children":1008},{},[1009],{"type":46,"value":1010},"For each finding: state severity (Error \u002F Warning \u002F Info), reference the specific file and line, explain what's wrong and how to fix it",{"type":40,"tag":105,"props":1012,"children":1013},{},[1014],{"type":46,"value":1015},"If everything looks good, report PASS",{"type":40,"tag":105,"props":1017,"children":1018},{},[1019],{"type":46,"value":1020},"If there are findings, report FAIL and list them",{"type":40,"tag":105,"props":1022,"children":1023},{},[1024],{"type":46,"value":1025},"Present the result — if it fails, offer to fix the issues",{"type":40,"tag":49,"props":1027,"children":1028},{},[1029],{"type":46,"value":1030},"Mark task 2 complete.",{"type":40,"tag":75,"props":1032,"children":1034},{"id":1033},"step-5-ci-setup-optional",[1035],{"type":46,"value":1036},"Step 5: CI Setup (Optional)",{"type":40,"tag":49,"props":1038,"children":1039},{},[1040],{"type":46,"value":1041},"Mark task 3 in progress. Ask the user:",{"type":40,"tag":87,"props":1043,"children":1044},{},[1045],{"type":40,"tag":49,"props":1046,"children":1047},{},[1048],{"type":46,"value":1049},"Would you like to also run these checks automatically on every PR via GitHub Actions? I'll add the workflow file to the PR — you just need to add an API key as a repository secret.",{"type":40,"tag":49,"props":1051,"children":1052},{},[1053,1055,1061],{"type":46,"value":1054},"If they say yes, create ",{"type":40,"tag":145,"props":1056,"children":1058},{"className":1057},[],[1059],{"type":46,"value":1060},".github\u002Fworkflows\u002Fchecks.yml",{"type":46,"value":557},{"type":40,"tag":183,"props":1063,"children":1067},{"className":1064,"code":1065,"language":1066,"meta":188,"style":188},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","name: AI Checks\n\non:\n  pull_request:\n    types: [opened, synchronize, reopened]\n\nconcurrency:\n  group: ai-checks-${{ github.event.pull_request.number }}\n  cancel-in-progress: true\n\njobs:\n  checks:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n      pull-requests: write\n      checks: write\n    steps:\n      - uses: actions\u002Fcheckout@v4\n        with:\n          fetch-depth: 0\n\n      - uses: actions\u002Fcache@v4\n        with:\n          path: ~\u002F.npm\n          key: claude-code-${{ runner.os }}\n\n      - name: Install agent CLI\n        run: npm install -g @anthropic-ai\u002Fclaude-code\n\n      - name: Get PR diff\n        run: |\n          gh pr diff ${{ github.event.pull_request.number }} > \u002Ftmp\u002Fpr.diff\n          head -c 100000 \u002Ftmp\u002Fpr.diff > \u002Ftmp\u002Fpr-truncated.diff\n        env:\n          GH_TOKEN: ${{ github.token }}\n\n      - name: Run all checks\n        env:\n          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}\n          GH_TOKEN: ${{ github.token }}\n        run: |\n          REPORT_FILE=$(mktemp)\n          echo \"## AI Check Results\" >> \"$REPORT_FILE\"\n          echo \"\" >> \"$REPORT_FILE\"\n          echo \"| Check | Result |\" >> \"$REPORT_FILE\"\n          echo \"|---|---|\" >> \"$REPORT_FILE\"\n\n          for check_file in .checks\u002F*.md; do\n            [ -f \"$check_file\" ] || continue\n            name=$(basename \"$check_file\" .md)\n\n            # Create check run in progress\n            CHECK_RUN_ID=$(gh api repos\u002F${{ github.repository }}\u002Fcheck-runs \\\n              -f name=\"check\u002F$name\" \\\n              -f head_sha=${{ github.event.pull_request.head.sha }} \\\n              -f status=in_progress \\\n              --jq '.id')\n\n            # Run agent with the check prompt and PR diff\n            OUTPUT=$(claude -p \"$(cat \u003C\u003CPROMPT\n          You are running a quality check on a pull request.\n\n          ## Check\n          $(cat \"$check_file\")\n\n          ## PR Diff\n          $(cat \u002Ftmp\u002Fpr-truncated.diff)\n\n          ## Instructions\n          Evaluate the changed files against this check.\n          Only review changed lines. Do not flag pre-existing issues in unchanged code.\n          Output valid JSON: {\"verdict\":\"PASS\" or \"FAIL\",\"reason\":\"...\",\"suggestions\":[{\"file\":\"...\",\"line\":0,\"fix\":\"...\"}]}\n          PROMPT\n            )\" --output-format json 2>&1) || true\n\n            # Parse verdict — claude --output-format json wraps the response in an envelope\n            # with the actual content in .result as a string (possibly markdown-fenced)\n            INNER=$(echo \"$OUTPUT\" | jq -r '.result \u002F\u002F empty' 2>\u002Fdev\u002Fnull | sed 's\u002F^```json\u002F\u002F;s\u002F^```\u002F\u002F;s\u002F```$\u002F\u002F' | jq -r '.' 2>\u002Fdev\u002Fnull || echo \"$OUTPUT\")\n            VERDICT=$(echo \"$INNER\" | jq -r '.verdict \u002F\u002F \"ERROR\"' 2>\u002Fdev\u002Fnull || echo \"ERROR\")\n            REASON=$(echo \"$INNER\" | jq -r '.reason \u002F\u002F \"No reason given\"' 2>\u002Fdev\u002Fnull || echo \"Parse failure\")\n\n            # Extract suggestions for detail text\n            SUGGESTIONS=$(echo \"$INNER\" | jq -r '.suggestions \u002F\u002F [] | .[] | \"- **\\(.file):\\(.line)** — \\(.fix)\"' 2>\u002Fdev\u002Fnull || echo \"\")\n\n            # Build detail markdown\n            DETAIL=\"## $name\\n\\n**Verdict:** $VERDICT\\n\\n### Reason\\n\\n$REASON\"\n            if [ -n \"$SUGGESTIONS\" ]; then\n              DETAIL=\"$DETAIL\\n\\n### Suggestions\\n\\n$SUGGESTIONS\"\n            fi\n\n            # Complete the check run\n            CONCLUSION=$([ \"$VERDICT\" = \"PASS\" ] && echo \"success\" || echo \"failure\")\n            gh api repos\u002F${{ github.repository }}\u002Fcheck-runs\u002F$CHECK_RUN_ID \\\n              -X PATCH \\\n              -f status=completed \\\n              -f conclusion=\"$CONCLUSION\" \\\n              -f \"output[title]=$(echo \"$REASON\" | head -c 140)\" \\\n              -f \"output[summary]=$REASON\" \\\n              -f \"output[text]=$(printf \"$DETAIL\")\" > \u002Fdev\u002Fnull\n\n            # Append to report\n            ICON=$([ \"$VERDICT\" = \"PASS\" ] && echo \"✅\" || echo \"❌\")\n            echo \"| $ICON $name | $REASON |\" >> \"$REPORT_FILE\"\n\n            # Save full output for debugging\n            echo \"$OUTPUT\" > \"\u002Ftmp\u002Fcheck-$name.json\"\n          done\n\n          # Post single consolidated comment\n          gh pr comment ${{ github.event.pull_request.number }} --body \"$(cat \"$REPORT_FILE\")\"\n\n      - name: Upload check outputs\n        if: always()\n        uses: actions\u002Fupload-artifact@v4\n        with:\n          name: check-results\n          path: \u002Ftmp\u002Fcheck-*.json\n          retention-days: 7\n","yaml",[1068],{"type":40,"tag":145,"props":1069,"children":1070},{"__ignoreMap":188},[1071,1087,1094,1108,1120,1166,1173,1185,1202,1219,1226,1238,1250,1267,1279,1296,1313,1329,1341,1363,1375,1392,1399,1419,1430,1447,1464,1471,1492,1510,1518,1539,1557,1566,1575,1588,1606,1614,1635,1647,1665,1681,1697,1706,1715,1724,1733,1742,1750,1759,1768,1777,1785,1794,1803,1812,1821,1830,1839,1847,1856,1865,1874,1882,1891,1900,1908,1917,1926,1934,1943,1952,1961,1970,1979,1988,1996,2005,2014,2023,2032,2041,2049,2058,2067,2075,2084,2093,2102,2111,2120,2128,2137,2146,2155,2164,2173,2182,2191,2200,2209,2217,2226,2235,2244,2252,2261,2270,2279,2287,2296,2305,2313,2334,2352,2370,2382,2400,2417],{"type":40,"tag":194,"props":1072,"children":1073},{"class":196,"line":197},[1074,1078,1082],{"type":40,"tag":194,"props":1075,"children":1076},{"style":549},[1077],{"type":46,"value":552},{"type":40,"tag":194,"props":1079,"children":1080},{"style":252},[1081],{"type":46,"value":557},{"type":40,"tag":194,"props":1083,"children":1084},{"style":207},[1085],{"type":46,"value":1086}," AI Checks\n",{"type":40,"tag":194,"props":1088,"children":1089},{"class":196,"line":229},[1090],{"type":40,"tag":194,"props":1091,"children":1092},{"emptyLinePlaceholder":593},[1093],{"type":46,"value":596},{"type":40,"tag":194,"props":1095,"children":1096},{"class":196,"line":268},[1097,1103],{"type":40,"tag":194,"props":1098,"children":1100},{"style":1099},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[1101],{"type":46,"value":1102},"on",{"type":40,"tag":194,"props":1104,"children":1105},{"style":252},[1106],{"type":46,"value":1107},":\n",{"type":40,"tag":194,"props":1109,"children":1110},{"class":196,"line":582},[1111,1116],{"type":40,"tag":194,"props":1112,"children":1113},{"style":549},[1114],{"type":46,"value":1115},"  pull_request",{"type":40,"tag":194,"props":1117,"children":1118},{"style":252},[1119],{"type":46,"value":1107},{"type":40,"tag":194,"props":1121,"children":1122},{"class":196,"line":27},[1123,1128,1132,1137,1142,1147,1152,1156,1161],{"type":40,"tag":194,"props":1124,"children":1125},{"style":549},[1126],{"type":46,"value":1127},"    types",{"type":40,"tag":194,"props":1129,"children":1130},{"style":252},[1131],{"type":46,"value":557},{"type":40,"tag":194,"props":1133,"children":1134},{"style":252},[1135],{"type":46,"value":1136}," [",{"type":40,"tag":194,"props":1138,"children":1139},{"style":207},[1140],{"type":46,"value":1141},"opened",{"type":40,"tag":194,"props":1143,"children":1144},{"style":252},[1145],{"type":46,"value":1146},",",{"type":40,"tag":194,"props":1148,"children":1149},{"style":207},[1150],{"type":46,"value":1151}," synchronize",{"type":40,"tag":194,"props":1153,"children":1154},{"style":252},[1155],{"type":46,"value":1146},{"type":40,"tag":194,"props":1157,"children":1158},{"style":207},[1159],{"type":46,"value":1160}," reopened",{"type":40,"tag":194,"props":1162,"children":1163},{"style":252},[1164],{"type":46,"value":1165},"]\n",{"type":40,"tag":194,"props":1167,"children":1168},{"class":196,"line":599},[1169],{"type":40,"tag":194,"props":1170,"children":1171},{"emptyLinePlaceholder":593},[1172],{"type":46,"value":596},{"type":40,"tag":194,"props":1174,"children":1175},{"class":196,"line":613},[1176,1181],{"type":40,"tag":194,"props":1177,"children":1178},{"style":549},[1179],{"type":46,"value":1180},"concurrency",{"type":40,"tag":194,"props":1182,"children":1183},{"style":252},[1184],{"type":46,"value":1107},{"type":40,"tag":194,"props":1186,"children":1187},{"class":196,"line":621},[1188,1193,1197],{"type":40,"tag":194,"props":1189,"children":1190},{"style":549},[1191],{"type":46,"value":1192},"  group",{"type":40,"tag":194,"props":1194,"children":1195},{"style":252},[1196],{"type":46,"value":557},{"type":40,"tag":194,"props":1198,"children":1199},{"style":207},[1200],{"type":46,"value":1201}," ai-checks-${{ github.event.pull_request.number }}\n",{"type":40,"tag":194,"props":1203,"children":1204},{"class":196,"line":635},[1205,1210,1214],{"type":40,"tag":194,"props":1206,"children":1207},{"style":549},[1208],{"type":46,"value":1209},"  cancel-in-progress",{"type":40,"tag":194,"props":1211,"children":1212},{"style":252},[1213],{"type":46,"value":557},{"type":40,"tag":194,"props":1215,"children":1216},{"style":1099},[1217],{"type":46,"value":1218}," true\n",{"type":40,"tag":194,"props":1220,"children":1221},{"class":196,"line":23},[1222],{"type":40,"tag":194,"props":1223,"children":1224},{"emptyLinePlaceholder":593},[1225],{"type":46,"value":596},{"type":40,"tag":194,"props":1227,"children":1228},{"class":196,"line":652},[1229,1234],{"type":40,"tag":194,"props":1230,"children":1231},{"style":549},[1232],{"type":46,"value":1233},"jobs",{"type":40,"tag":194,"props":1235,"children":1236},{"style":252},[1237],{"type":46,"value":1107},{"type":40,"tag":194,"props":1239,"children":1240},{"class":196,"line":660},[1241,1246],{"type":40,"tag":194,"props":1242,"children":1243},{"style":549},[1244],{"type":46,"value":1245},"  checks",{"type":40,"tag":194,"props":1247,"children":1248},{"style":252},[1249],{"type":46,"value":1107},{"type":40,"tag":194,"props":1251,"children":1252},{"class":196,"line":673},[1253,1258,1262],{"type":40,"tag":194,"props":1254,"children":1255},{"style":549},[1256],{"type":46,"value":1257},"    runs-on",{"type":40,"tag":194,"props":1259,"children":1260},{"style":252},[1261],{"type":46,"value":557},{"type":40,"tag":194,"props":1263,"children":1264},{"style":207},[1265],{"type":46,"value":1266}," ubuntu-latest\n",{"type":40,"tag":194,"props":1268,"children":1269},{"class":196,"line":681},[1270,1275],{"type":40,"tag":194,"props":1271,"children":1272},{"style":549},[1273],{"type":46,"value":1274},"    permissions",{"type":40,"tag":194,"props":1276,"children":1277},{"style":252},[1278],{"type":46,"value":1107},{"type":40,"tag":194,"props":1280,"children":1281},{"class":196,"line":695},[1282,1287,1291],{"type":40,"tag":194,"props":1283,"children":1284},{"style":549},[1285],{"type":46,"value":1286},"      contents",{"type":40,"tag":194,"props":1288,"children":1289},{"style":252},[1290],{"type":46,"value":557},{"type":40,"tag":194,"props":1292,"children":1293},{"style":207},[1294],{"type":46,"value":1295}," read\n",{"type":40,"tag":194,"props":1297,"children":1298},{"class":196,"line":703},[1299,1304,1308],{"type":40,"tag":194,"props":1300,"children":1301},{"style":549},[1302],{"type":46,"value":1303},"      pull-requests",{"type":40,"tag":194,"props":1305,"children":1306},{"style":252},[1307],{"type":46,"value":557},{"type":40,"tag":194,"props":1309,"children":1310},{"style":207},[1311],{"type":46,"value":1312}," write\n",{"type":40,"tag":194,"props":1314,"children":1315},{"class":196,"line":712},[1316,1321,1325],{"type":40,"tag":194,"props":1317,"children":1318},{"style":549},[1319],{"type":46,"value":1320},"      checks",{"type":40,"tag":194,"props":1322,"children":1323},{"style":252},[1324],{"type":46,"value":557},{"type":40,"tag":194,"props":1326,"children":1327},{"style":207},[1328],{"type":46,"value":1312},{"type":40,"tag":194,"props":1330,"children":1331},{"class":196,"line":720},[1332,1337],{"type":40,"tag":194,"props":1333,"children":1334},{"style":549},[1335],{"type":46,"value":1336},"    steps",{"type":40,"tag":194,"props":1338,"children":1339},{"style":252},[1340],{"type":46,"value":1107},{"type":40,"tag":194,"props":1342,"children":1343},{"class":196,"line":733},[1344,1349,1354,1358],{"type":40,"tag":194,"props":1345,"children":1346},{"style":252},[1347],{"type":46,"value":1348},"      -",{"type":40,"tag":194,"props":1350,"children":1351},{"style":549},[1352],{"type":46,"value":1353}," uses",{"type":40,"tag":194,"props":1355,"children":1356},{"style":252},[1357],{"type":46,"value":557},{"type":40,"tag":194,"props":1359,"children":1360},{"style":207},[1361],{"type":46,"value":1362}," actions\u002Fcheckout@v4\n",{"type":40,"tag":194,"props":1364,"children":1365},{"class":196,"line":741},[1366,1371],{"type":40,"tag":194,"props":1367,"children":1368},{"style":549},[1369],{"type":46,"value":1370},"        with",{"type":40,"tag":194,"props":1372,"children":1373},{"style":252},[1374],{"type":46,"value":1107},{"type":40,"tag":194,"props":1376,"children":1377},{"class":196,"line":750},[1378,1383,1387],{"type":40,"tag":194,"props":1379,"children":1380},{"style":549},[1381],{"type":46,"value":1382},"          fetch-depth",{"type":40,"tag":194,"props":1384,"children":1385},{"style":252},[1386],{"type":46,"value":557},{"type":40,"tag":194,"props":1388,"children":1389},{"style":411},[1390],{"type":46,"value":1391}," 0\n",{"type":40,"tag":194,"props":1393,"children":1394},{"class":196,"line":758},[1395],{"type":40,"tag":194,"props":1396,"children":1397},{"emptyLinePlaceholder":593},[1398],{"type":46,"value":596},{"type":40,"tag":194,"props":1400,"children":1401},{"class":196,"line":771},[1402,1406,1410,1414],{"type":40,"tag":194,"props":1403,"children":1404},{"style":252},[1405],{"type":46,"value":1348},{"type":40,"tag":194,"props":1407,"children":1408},{"style":549},[1409],{"type":46,"value":1353},{"type":40,"tag":194,"props":1411,"children":1412},{"style":252},[1413],{"type":46,"value":557},{"type":40,"tag":194,"props":1415,"children":1416},{"style":207},[1417],{"type":46,"value":1418}," actions\u002Fcache@v4\n",{"type":40,"tag":194,"props":1420,"children":1421},{"class":196,"line":779},[1422,1426],{"type":40,"tag":194,"props":1423,"children":1424},{"style":549},[1425],{"type":46,"value":1370},{"type":40,"tag":194,"props":1427,"children":1428},{"style":252},[1429],{"type":46,"value":1107},{"type":40,"tag":194,"props":1431,"children":1432},{"class":196,"line":788},[1433,1438,1442],{"type":40,"tag":194,"props":1434,"children":1435},{"style":549},[1436],{"type":46,"value":1437},"          path",{"type":40,"tag":194,"props":1439,"children":1440},{"style":252},[1441],{"type":46,"value":557},{"type":40,"tag":194,"props":1443,"children":1444},{"style":207},[1445],{"type":46,"value":1446}," ~\u002F.npm\n",{"type":40,"tag":194,"props":1448,"children":1449},{"class":196,"line":796},[1450,1455,1459],{"type":40,"tag":194,"props":1451,"children":1452},{"style":549},[1453],{"type":46,"value":1454},"          key",{"type":40,"tag":194,"props":1456,"children":1457},{"style":252},[1458],{"type":46,"value":557},{"type":40,"tag":194,"props":1460,"children":1461},{"style":207},[1462],{"type":46,"value":1463}," claude-code-${{ runner.os }}\n",{"type":40,"tag":194,"props":1465,"children":1466},{"class":196,"line":809},[1467],{"type":40,"tag":194,"props":1468,"children":1469},{"emptyLinePlaceholder":593},[1470],{"type":46,"value":596},{"type":40,"tag":194,"props":1472,"children":1473},{"class":196,"line":817},[1474,1478,1483,1487],{"type":40,"tag":194,"props":1475,"children":1476},{"style":252},[1477],{"type":46,"value":1348},{"type":40,"tag":194,"props":1479,"children":1480},{"style":549},[1481],{"type":46,"value":1482}," name",{"type":40,"tag":194,"props":1484,"children":1485},{"style":252},[1486],{"type":46,"value":557},{"type":40,"tag":194,"props":1488,"children":1489},{"style":207},[1490],{"type":46,"value":1491}," Install agent CLI\n",{"type":40,"tag":194,"props":1493,"children":1495},{"class":196,"line":1494},29,[1496,1501,1505],{"type":40,"tag":194,"props":1497,"children":1498},{"style":549},[1499],{"type":46,"value":1500},"        run",{"type":40,"tag":194,"props":1502,"children":1503},{"style":252},[1504],{"type":46,"value":557},{"type":40,"tag":194,"props":1506,"children":1507},{"style":207},[1508],{"type":46,"value":1509}," npm install -g @anthropic-ai\u002Fclaude-code\n",{"type":40,"tag":194,"props":1511,"children":1513},{"class":196,"line":1512},30,[1514],{"type":40,"tag":194,"props":1515,"children":1516},{"emptyLinePlaceholder":593},[1517],{"type":46,"value":596},{"type":40,"tag":194,"props":1519,"children":1521},{"class":196,"line":1520},31,[1522,1526,1530,1534],{"type":40,"tag":194,"props":1523,"children":1524},{"style":252},[1525],{"type":46,"value":1348},{"type":40,"tag":194,"props":1527,"children":1528},{"style":549},[1529],{"type":46,"value":1482},{"type":40,"tag":194,"props":1531,"children":1532},{"style":252},[1533],{"type":46,"value":557},{"type":40,"tag":194,"props":1535,"children":1536},{"style":207},[1537],{"type":46,"value":1538}," Get PR diff\n",{"type":40,"tag":194,"props":1540,"children":1542},{"class":196,"line":1541},32,[1543,1547,1551],{"type":40,"tag":194,"props":1544,"children":1545},{"style":549},[1546],{"type":46,"value":1500},{"type":40,"tag":194,"props":1548,"children":1549},{"style":252},[1550],{"type":46,"value":557},{"type":40,"tag":194,"props":1552,"children":1554},{"style":1553},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[1555],{"type":46,"value":1556}," |\n",{"type":40,"tag":194,"props":1558,"children":1560},{"class":196,"line":1559},33,[1561],{"type":40,"tag":194,"props":1562,"children":1563},{"style":207},[1564],{"type":46,"value":1565},"          gh pr diff ${{ github.event.pull_request.number }} > \u002Ftmp\u002Fpr.diff\n",{"type":40,"tag":194,"props":1567,"children":1569},{"class":196,"line":1568},34,[1570],{"type":40,"tag":194,"props":1571,"children":1572},{"style":207},[1573],{"type":46,"value":1574},"          head -c 100000 \u002Ftmp\u002Fpr.diff > \u002Ftmp\u002Fpr-truncated.diff\n",{"type":40,"tag":194,"props":1576,"children":1578},{"class":196,"line":1577},35,[1579,1584],{"type":40,"tag":194,"props":1580,"children":1581},{"style":549},[1582],{"type":46,"value":1583},"        env",{"type":40,"tag":194,"props":1585,"children":1586},{"style":252},[1587],{"type":46,"value":1107},{"type":40,"tag":194,"props":1589,"children":1591},{"class":196,"line":1590},36,[1592,1597,1601],{"type":40,"tag":194,"props":1593,"children":1594},{"style":549},[1595],{"type":46,"value":1596},"          GH_TOKEN",{"type":40,"tag":194,"props":1598,"children":1599},{"style":252},[1600],{"type":46,"value":557},{"type":40,"tag":194,"props":1602,"children":1603},{"style":207},[1604],{"type":46,"value":1605}," ${{ github.token }}\n",{"type":40,"tag":194,"props":1607,"children":1609},{"class":196,"line":1608},37,[1610],{"type":40,"tag":194,"props":1611,"children":1612},{"emptyLinePlaceholder":593},[1613],{"type":46,"value":596},{"type":40,"tag":194,"props":1615,"children":1617},{"class":196,"line":1616},38,[1618,1622,1626,1630],{"type":40,"tag":194,"props":1619,"children":1620},{"style":252},[1621],{"type":46,"value":1348},{"type":40,"tag":194,"props":1623,"children":1624},{"style":549},[1625],{"type":46,"value":1482},{"type":40,"tag":194,"props":1627,"children":1628},{"style":252},[1629],{"type":46,"value":557},{"type":40,"tag":194,"props":1631,"children":1632},{"style":207},[1633],{"type":46,"value":1634}," Run all checks\n",{"type":40,"tag":194,"props":1636,"children":1638},{"class":196,"line":1637},39,[1639,1643],{"type":40,"tag":194,"props":1640,"children":1641},{"style":549},[1642],{"type":46,"value":1583},{"type":40,"tag":194,"props":1644,"children":1645},{"style":252},[1646],{"type":46,"value":1107},{"type":40,"tag":194,"props":1648,"children":1650},{"class":196,"line":1649},40,[1651,1656,1660],{"type":40,"tag":194,"props":1652,"children":1653},{"style":549},[1654],{"type":46,"value":1655},"          ANTHROPIC_API_KEY",{"type":40,"tag":194,"props":1657,"children":1658},{"style":252},[1659],{"type":46,"value":557},{"type":40,"tag":194,"props":1661,"children":1662},{"style":207},[1663],{"type":46,"value":1664}," ${{ secrets.ANTHROPIC_API_KEY }}\n",{"type":40,"tag":194,"props":1666,"children":1668},{"class":196,"line":1667},41,[1669,1673,1677],{"type":40,"tag":194,"props":1670,"children":1671},{"style":549},[1672],{"type":46,"value":1596},{"type":40,"tag":194,"props":1674,"children":1675},{"style":252},[1676],{"type":46,"value":557},{"type":40,"tag":194,"props":1678,"children":1679},{"style":207},[1680],{"type":46,"value":1605},{"type":40,"tag":194,"props":1682,"children":1684},{"class":196,"line":1683},42,[1685,1689,1693],{"type":40,"tag":194,"props":1686,"children":1687},{"style":549},[1688],{"type":46,"value":1500},{"type":40,"tag":194,"props":1690,"children":1691},{"style":252},[1692],{"type":46,"value":557},{"type":40,"tag":194,"props":1694,"children":1695},{"style":1553},[1696],{"type":46,"value":1556},{"type":40,"tag":194,"props":1698,"children":1700},{"class":196,"line":1699},43,[1701],{"type":40,"tag":194,"props":1702,"children":1703},{"style":207},[1704],{"type":46,"value":1705},"          REPORT_FILE=$(mktemp)\n",{"type":40,"tag":194,"props":1707,"children":1709},{"class":196,"line":1708},44,[1710],{"type":40,"tag":194,"props":1711,"children":1712},{"style":207},[1713],{"type":46,"value":1714},"          echo \"## AI Check Results\" >> \"$REPORT_FILE\"\n",{"type":40,"tag":194,"props":1716,"children":1718},{"class":196,"line":1717},45,[1719],{"type":40,"tag":194,"props":1720,"children":1721},{"style":207},[1722],{"type":46,"value":1723},"          echo \"\" >> \"$REPORT_FILE\"\n",{"type":40,"tag":194,"props":1725,"children":1727},{"class":196,"line":1726},46,[1728],{"type":40,"tag":194,"props":1729,"children":1730},{"style":207},[1731],{"type":46,"value":1732},"          echo \"| Check | Result |\" >> \"$REPORT_FILE\"\n",{"type":40,"tag":194,"props":1734,"children":1736},{"class":196,"line":1735},47,[1737],{"type":40,"tag":194,"props":1738,"children":1739},{"style":207},[1740],{"type":46,"value":1741},"          echo \"|---|---|\" >> \"$REPORT_FILE\"\n",{"type":40,"tag":194,"props":1743,"children":1745},{"class":196,"line":1744},48,[1746],{"type":40,"tag":194,"props":1747,"children":1748},{"emptyLinePlaceholder":593},[1749],{"type":46,"value":596},{"type":40,"tag":194,"props":1751,"children":1753},{"class":196,"line":1752},49,[1754],{"type":40,"tag":194,"props":1755,"children":1756},{"style":207},[1757],{"type":46,"value":1758},"          for check_file in .checks\u002F*.md; do\n",{"type":40,"tag":194,"props":1760,"children":1762},{"class":196,"line":1761},50,[1763],{"type":40,"tag":194,"props":1764,"children":1765},{"style":207},[1766],{"type":46,"value":1767},"            [ -f \"$check_file\" ] || continue\n",{"type":40,"tag":194,"props":1769,"children":1771},{"class":196,"line":1770},51,[1772],{"type":40,"tag":194,"props":1773,"children":1774},{"style":207},[1775],{"type":46,"value":1776},"            name=$(basename \"$check_file\" .md)\n",{"type":40,"tag":194,"props":1778,"children":1780},{"class":196,"line":1779},52,[1781],{"type":40,"tag":194,"props":1782,"children":1783},{"emptyLinePlaceholder":593},[1784],{"type":46,"value":596},{"type":40,"tag":194,"props":1786,"children":1788},{"class":196,"line":1787},53,[1789],{"type":40,"tag":194,"props":1790,"children":1791},{"style":207},[1792],{"type":46,"value":1793},"            # Create check run in progress\n",{"type":40,"tag":194,"props":1795,"children":1797},{"class":196,"line":1796},54,[1798],{"type":40,"tag":194,"props":1799,"children":1800},{"style":207},[1801],{"type":46,"value":1802},"            CHECK_RUN_ID=$(gh api repos\u002F${{ github.repository }}\u002Fcheck-runs \\\n",{"type":40,"tag":194,"props":1804,"children":1806},{"class":196,"line":1805},55,[1807],{"type":40,"tag":194,"props":1808,"children":1809},{"style":207},[1810],{"type":46,"value":1811},"              -f name=\"check\u002F$name\" \\\n",{"type":40,"tag":194,"props":1813,"children":1815},{"class":196,"line":1814},56,[1816],{"type":40,"tag":194,"props":1817,"children":1818},{"style":207},[1819],{"type":46,"value":1820},"              -f head_sha=${{ github.event.pull_request.head.sha }} \\\n",{"type":40,"tag":194,"props":1822,"children":1824},{"class":196,"line":1823},57,[1825],{"type":40,"tag":194,"props":1826,"children":1827},{"style":207},[1828],{"type":46,"value":1829},"              -f status=in_progress \\\n",{"type":40,"tag":194,"props":1831,"children":1833},{"class":196,"line":1832},58,[1834],{"type":40,"tag":194,"props":1835,"children":1836},{"style":207},[1837],{"type":46,"value":1838},"              --jq '.id')\n",{"type":40,"tag":194,"props":1840,"children":1842},{"class":196,"line":1841},59,[1843],{"type":40,"tag":194,"props":1844,"children":1845},{"emptyLinePlaceholder":593},[1846],{"type":46,"value":596},{"type":40,"tag":194,"props":1848,"children":1850},{"class":196,"line":1849},60,[1851],{"type":40,"tag":194,"props":1852,"children":1853},{"style":207},[1854],{"type":46,"value":1855},"            # Run agent with the check prompt and PR diff\n",{"type":40,"tag":194,"props":1857,"children":1859},{"class":196,"line":1858},61,[1860],{"type":40,"tag":194,"props":1861,"children":1862},{"style":207},[1863],{"type":46,"value":1864},"            OUTPUT=$(claude -p \"$(cat \u003C\u003CPROMPT\n",{"type":40,"tag":194,"props":1866,"children":1868},{"class":196,"line":1867},62,[1869],{"type":40,"tag":194,"props":1870,"children":1871},{"style":207},[1872],{"type":46,"value":1873},"          You are running a quality check on a pull request.\n",{"type":40,"tag":194,"props":1875,"children":1877},{"class":196,"line":1876},63,[1878],{"type":40,"tag":194,"props":1879,"children":1880},{"emptyLinePlaceholder":593},[1881],{"type":46,"value":596},{"type":40,"tag":194,"props":1883,"children":1885},{"class":196,"line":1884},64,[1886],{"type":40,"tag":194,"props":1887,"children":1888},{"style":207},[1889],{"type":46,"value":1890},"          ## Check\n",{"type":40,"tag":194,"props":1892,"children":1894},{"class":196,"line":1893},65,[1895],{"type":40,"tag":194,"props":1896,"children":1897},{"style":207},[1898],{"type":46,"value":1899},"          $(cat \"$check_file\")\n",{"type":40,"tag":194,"props":1901,"children":1903},{"class":196,"line":1902},66,[1904],{"type":40,"tag":194,"props":1905,"children":1906},{"emptyLinePlaceholder":593},[1907],{"type":46,"value":596},{"type":40,"tag":194,"props":1909,"children":1911},{"class":196,"line":1910},67,[1912],{"type":40,"tag":194,"props":1913,"children":1914},{"style":207},[1915],{"type":46,"value":1916},"          ## PR Diff\n",{"type":40,"tag":194,"props":1918,"children":1920},{"class":196,"line":1919},68,[1921],{"type":40,"tag":194,"props":1922,"children":1923},{"style":207},[1924],{"type":46,"value":1925},"          $(cat \u002Ftmp\u002Fpr-truncated.diff)\n",{"type":40,"tag":194,"props":1927,"children":1929},{"class":196,"line":1928},69,[1930],{"type":40,"tag":194,"props":1931,"children":1932},{"emptyLinePlaceholder":593},[1933],{"type":46,"value":596},{"type":40,"tag":194,"props":1935,"children":1937},{"class":196,"line":1936},70,[1938],{"type":40,"tag":194,"props":1939,"children":1940},{"style":207},[1941],{"type":46,"value":1942},"          ## Instructions\n",{"type":40,"tag":194,"props":1944,"children":1946},{"class":196,"line":1945},71,[1947],{"type":40,"tag":194,"props":1948,"children":1949},{"style":207},[1950],{"type":46,"value":1951},"          Evaluate the changed files against this check.\n",{"type":40,"tag":194,"props":1953,"children":1955},{"class":196,"line":1954},72,[1956],{"type":40,"tag":194,"props":1957,"children":1958},{"style":207},[1959],{"type":46,"value":1960},"          Only review changed lines. Do not flag pre-existing issues in unchanged code.\n",{"type":40,"tag":194,"props":1962,"children":1964},{"class":196,"line":1963},73,[1965],{"type":40,"tag":194,"props":1966,"children":1967},{"style":207},[1968],{"type":46,"value":1969},"          Output valid JSON: {\"verdict\":\"PASS\" or \"FAIL\",\"reason\":\"...\",\"suggestions\":[{\"file\":\"...\",\"line\":0,\"fix\":\"...\"}]}\n",{"type":40,"tag":194,"props":1971,"children":1973},{"class":196,"line":1972},74,[1974],{"type":40,"tag":194,"props":1975,"children":1976},{"style":207},[1977],{"type":46,"value":1978},"          PROMPT\n",{"type":40,"tag":194,"props":1980,"children":1982},{"class":196,"line":1981},75,[1983],{"type":40,"tag":194,"props":1984,"children":1985},{"style":207},[1986],{"type":46,"value":1987},"            )\" --output-format json 2>&1) || true\n",{"type":40,"tag":194,"props":1989,"children":1991},{"class":196,"line":1990},76,[1992],{"type":40,"tag":194,"props":1993,"children":1994},{"emptyLinePlaceholder":593},[1995],{"type":46,"value":596},{"type":40,"tag":194,"props":1997,"children":1999},{"class":196,"line":1998},77,[2000],{"type":40,"tag":194,"props":2001,"children":2002},{"style":207},[2003],{"type":46,"value":2004},"            # Parse verdict — claude --output-format json wraps the response in an envelope\n",{"type":40,"tag":194,"props":2006,"children":2008},{"class":196,"line":2007},78,[2009],{"type":40,"tag":194,"props":2010,"children":2011},{"style":207},[2012],{"type":46,"value":2013},"            # with the actual content in .result as a string (possibly markdown-fenced)\n",{"type":40,"tag":194,"props":2015,"children":2017},{"class":196,"line":2016},79,[2018],{"type":40,"tag":194,"props":2019,"children":2020},{"style":207},[2021],{"type":46,"value":2022},"            INNER=$(echo \"$OUTPUT\" | jq -r '.result \u002F\u002F empty' 2>\u002Fdev\u002Fnull | sed 's\u002F^```json\u002F\u002F;s\u002F^```\u002F\u002F;s\u002F```$\u002F\u002F' | jq -r '.' 2>\u002Fdev\u002Fnull || echo \"$OUTPUT\")\n",{"type":40,"tag":194,"props":2024,"children":2026},{"class":196,"line":2025},80,[2027],{"type":40,"tag":194,"props":2028,"children":2029},{"style":207},[2030],{"type":46,"value":2031},"            VERDICT=$(echo \"$INNER\" | jq -r '.verdict \u002F\u002F \"ERROR\"' 2>\u002Fdev\u002Fnull || echo \"ERROR\")\n",{"type":40,"tag":194,"props":2033,"children":2035},{"class":196,"line":2034},81,[2036],{"type":40,"tag":194,"props":2037,"children":2038},{"style":207},[2039],{"type":46,"value":2040},"            REASON=$(echo \"$INNER\" | jq -r '.reason \u002F\u002F \"No reason given\"' 2>\u002Fdev\u002Fnull || echo \"Parse failure\")\n",{"type":40,"tag":194,"props":2042,"children":2044},{"class":196,"line":2043},82,[2045],{"type":40,"tag":194,"props":2046,"children":2047},{"emptyLinePlaceholder":593},[2048],{"type":46,"value":596},{"type":40,"tag":194,"props":2050,"children":2052},{"class":196,"line":2051},83,[2053],{"type":40,"tag":194,"props":2054,"children":2055},{"style":207},[2056],{"type":46,"value":2057},"            # Extract suggestions for detail text\n",{"type":40,"tag":194,"props":2059,"children":2061},{"class":196,"line":2060},84,[2062],{"type":40,"tag":194,"props":2063,"children":2064},{"style":207},[2065],{"type":46,"value":2066},"            SUGGESTIONS=$(echo \"$INNER\" | jq -r '.suggestions \u002F\u002F [] | .[] | \"- **\\(.file):\\(.line)** — \\(.fix)\"' 2>\u002Fdev\u002Fnull || echo \"\")\n",{"type":40,"tag":194,"props":2068,"children":2070},{"class":196,"line":2069},85,[2071],{"type":40,"tag":194,"props":2072,"children":2073},{"emptyLinePlaceholder":593},[2074],{"type":46,"value":596},{"type":40,"tag":194,"props":2076,"children":2078},{"class":196,"line":2077},86,[2079],{"type":40,"tag":194,"props":2080,"children":2081},{"style":207},[2082],{"type":46,"value":2083},"            # Build detail markdown\n",{"type":40,"tag":194,"props":2085,"children":2087},{"class":196,"line":2086},87,[2088],{"type":40,"tag":194,"props":2089,"children":2090},{"style":207},[2091],{"type":46,"value":2092},"            DETAIL=\"## $name\\n\\n**Verdict:** $VERDICT\\n\\n### Reason\\n\\n$REASON\"\n",{"type":40,"tag":194,"props":2094,"children":2096},{"class":196,"line":2095},88,[2097],{"type":40,"tag":194,"props":2098,"children":2099},{"style":207},[2100],{"type":46,"value":2101},"            if [ -n \"$SUGGESTIONS\" ]; then\n",{"type":40,"tag":194,"props":2103,"children":2105},{"class":196,"line":2104},89,[2106],{"type":40,"tag":194,"props":2107,"children":2108},{"style":207},[2109],{"type":46,"value":2110},"              DETAIL=\"$DETAIL\\n\\n### Suggestions\\n\\n$SUGGESTIONS\"\n",{"type":40,"tag":194,"props":2112,"children":2114},{"class":196,"line":2113},90,[2115],{"type":40,"tag":194,"props":2116,"children":2117},{"style":207},[2118],{"type":46,"value":2119},"            fi\n",{"type":40,"tag":194,"props":2121,"children":2123},{"class":196,"line":2122},91,[2124],{"type":40,"tag":194,"props":2125,"children":2126},{"emptyLinePlaceholder":593},[2127],{"type":46,"value":596},{"type":40,"tag":194,"props":2129,"children":2131},{"class":196,"line":2130},92,[2132],{"type":40,"tag":194,"props":2133,"children":2134},{"style":207},[2135],{"type":46,"value":2136},"            # Complete the check run\n",{"type":40,"tag":194,"props":2138,"children":2140},{"class":196,"line":2139},93,[2141],{"type":40,"tag":194,"props":2142,"children":2143},{"style":207},[2144],{"type":46,"value":2145},"            CONCLUSION=$([ \"$VERDICT\" = \"PASS\" ] && echo \"success\" || echo \"failure\")\n",{"type":40,"tag":194,"props":2147,"children":2149},{"class":196,"line":2148},94,[2150],{"type":40,"tag":194,"props":2151,"children":2152},{"style":207},[2153],{"type":46,"value":2154},"            gh api repos\u002F${{ github.repository }}\u002Fcheck-runs\u002F$CHECK_RUN_ID \\\n",{"type":40,"tag":194,"props":2156,"children":2158},{"class":196,"line":2157},95,[2159],{"type":40,"tag":194,"props":2160,"children":2161},{"style":207},[2162],{"type":46,"value":2163},"              -X PATCH \\\n",{"type":40,"tag":194,"props":2165,"children":2167},{"class":196,"line":2166},96,[2168],{"type":40,"tag":194,"props":2169,"children":2170},{"style":207},[2171],{"type":46,"value":2172},"              -f status=completed \\\n",{"type":40,"tag":194,"props":2174,"children":2176},{"class":196,"line":2175},97,[2177],{"type":40,"tag":194,"props":2178,"children":2179},{"style":207},[2180],{"type":46,"value":2181},"              -f conclusion=\"$CONCLUSION\" \\\n",{"type":40,"tag":194,"props":2183,"children":2185},{"class":196,"line":2184},98,[2186],{"type":40,"tag":194,"props":2187,"children":2188},{"style":207},[2189],{"type":46,"value":2190},"              -f \"output[title]=$(echo \"$REASON\" | head -c 140)\" \\\n",{"type":40,"tag":194,"props":2192,"children":2194},{"class":196,"line":2193},99,[2195],{"type":40,"tag":194,"props":2196,"children":2197},{"style":207},[2198],{"type":46,"value":2199},"              -f \"output[summary]=$REASON\" \\\n",{"type":40,"tag":194,"props":2201,"children":2203},{"class":196,"line":2202},100,[2204],{"type":40,"tag":194,"props":2205,"children":2206},{"style":207},[2207],{"type":46,"value":2208},"              -f \"output[text]=$(printf \"$DETAIL\")\" > \u002Fdev\u002Fnull\n",{"type":40,"tag":194,"props":2210,"children":2212},{"class":196,"line":2211},101,[2213],{"type":40,"tag":194,"props":2214,"children":2215},{"emptyLinePlaceholder":593},[2216],{"type":46,"value":596},{"type":40,"tag":194,"props":2218,"children":2220},{"class":196,"line":2219},102,[2221],{"type":40,"tag":194,"props":2222,"children":2223},{"style":207},[2224],{"type":46,"value":2225},"            # Append to report\n",{"type":40,"tag":194,"props":2227,"children":2229},{"class":196,"line":2228},103,[2230],{"type":40,"tag":194,"props":2231,"children":2232},{"style":207},[2233],{"type":46,"value":2234},"            ICON=$([ \"$VERDICT\" = \"PASS\" ] && echo \"✅\" || echo \"❌\")\n",{"type":40,"tag":194,"props":2236,"children":2238},{"class":196,"line":2237},104,[2239],{"type":40,"tag":194,"props":2240,"children":2241},{"style":207},[2242],{"type":46,"value":2243},"            echo \"| $ICON $name | $REASON |\" >> \"$REPORT_FILE\"\n",{"type":40,"tag":194,"props":2245,"children":2247},{"class":196,"line":2246},105,[2248],{"type":40,"tag":194,"props":2249,"children":2250},{"emptyLinePlaceholder":593},[2251],{"type":46,"value":596},{"type":40,"tag":194,"props":2253,"children":2255},{"class":196,"line":2254},106,[2256],{"type":40,"tag":194,"props":2257,"children":2258},{"style":207},[2259],{"type":46,"value":2260},"            # Save full output for debugging\n",{"type":40,"tag":194,"props":2262,"children":2264},{"class":196,"line":2263},107,[2265],{"type":40,"tag":194,"props":2266,"children":2267},{"style":207},[2268],{"type":46,"value":2269},"            echo \"$OUTPUT\" > \"\u002Ftmp\u002Fcheck-$name.json\"\n",{"type":40,"tag":194,"props":2271,"children":2273},{"class":196,"line":2272},108,[2274],{"type":40,"tag":194,"props":2275,"children":2276},{"style":207},[2277],{"type":46,"value":2278},"          done\n",{"type":40,"tag":194,"props":2280,"children":2282},{"class":196,"line":2281},109,[2283],{"type":40,"tag":194,"props":2284,"children":2285},{"emptyLinePlaceholder":593},[2286],{"type":46,"value":596},{"type":40,"tag":194,"props":2288,"children":2290},{"class":196,"line":2289},110,[2291],{"type":40,"tag":194,"props":2292,"children":2293},{"style":207},[2294],{"type":46,"value":2295},"          # Post single consolidated comment\n",{"type":40,"tag":194,"props":2297,"children":2299},{"class":196,"line":2298},111,[2300],{"type":40,"tag":194,"props":2301,"children":2302},{"style":207},[2303],{"type":46,"value":2304},"          gh pr comment ${{ github.event.pull_request.number }} --body \"$(cat \"$REPORT_FILE\")\"\n",{"type":40,"tag":194,"props":2306,"children":2308},{"class":196,"line":2307},112,[2309],{"type":40,"tag":194,"props":2310,"children":2311},{"emptyLinePlaceholder":593},[2312],{"type":46,"value":596},{"type":40,"tag":194,"props":2314,"children":2316},{"class":196,"line":2315},113,[2317,2321,2325,2329],{"type":40,"tag":194,"props":2318,"children":2319},{"style":252},[2320],{"type":46,"value":1348},{"type":40,"tag":194,"props":2322,"children":2323},{"style":549},[2324],{"type":46,"value":1482},{"type":40,"tag":194,"props":2326,"children":2327},{"style":252},[2328],{"type":46,"value":557},{"type":40,"tag":194,"props":2330,"children":2331},{"style":207},[2332],{"type":46,"value":2333}," Upload check outputs\n",{"type":40,"tag":194,"props":2335,"children":2337},{"class":196,"line":2336},114,[2338,2343,2347],{"type":40,"tag":194,"props":2339,"children":2340},{"style":549},[2341],{"type":46,"value":2342},"        if",{"type":40,"tag":194,"props":2344,"children":2345},{"style":252},[2346],{"type":46,"value":557},{"type":40,"tag":194,"props":2348,"children":2349},{"style":207},[2350],{"type":46,"value":2351}," always()\n",{"type":40,"tag":194,"props":2353,"children":2355},{"class":196,"line":2354},115,[2356,2361,2365],{"type":40,"tag":194,"props":2357,"children":2358},{"style":549},[2359],{"type":46,"value":2360},"        uses",{"type":40,"tag":194,"props":2362,"children":2363},{"style":252},[2364],{"type":46,"value":557},{"type":40,"tag":194,"props":2366,"children":2367},{"style":207},[2368],{"type":46,"value":2369}," actions\u002Fupload-artifact@v4\n",{"type":40,"tag":194,"props":2371,"children":2373},{"class":196,"line":2372},116,[2374,2378],{"type":40,"tag":194,"props":2375,"children":2376},{"style":549},[2377],{"type":46,"value":1370},{"type":40,"tag":194,"props":2379,"children":2380},{"style":252},[2381],{"type":46,"value":1107},{"type":40,"tag":194,"props":2383,"children":2385},{"class":196,"line":2384},117,[2386,2391,2395],{"type":40,"tag":194,"props":2387,"children":2388},{"style":549},[2389],{"type":46,"value":2390},"          name",{"type":40,"tag":194,"props":2392,"children":2393},{"style":252},[2394],{"type":46,"value":557},{"type":40,"tag":194,"props":2396,"children":2397},{"style":207},[2398],{"type":46,"value":2399}," check-results\n",{"type":40,"tag":194,"props":2401,"children":2403},{"class":196,"line":2402},118,[2404,2408,2412],{"type":40,"tag":194,"props":2405,"children":2406},{"style":549},[2407],{"type":46,"value":1437},{"type":40,"tag":194,"props":2409,"children":2410},{"style":252},[2411],{"type":46,"value":557},{"type":40,"tag":194,"props":2413,"children":2414},{"style":207},[2415],{"type":46,"value":2416}," \u002Ftmp\u002Fcheck-*.json\n",{"type":40,"tag":194,"props":2418,"children":2420},{"class":196,"line":2419},119,[2421,2426,2430],{"type":40,"tag":194,"props":2422,"children":2423},{"style":549},[2424],{"type":46,"value":2425},"          retention-days",{"type":40,"tag":194,"props":2427,"children":2428},{"style":252},[2429],{"type":46,"value":557},{"type":40,"tag":194,"props":2431,"children":2432},{"style":411},[2433],{"type":46,"value":2434}," 7\n",{"type":40,"tag":49,"props":2436,"children":2437},{},[2438],{"type":46,"value":2439},"Tell the user they can add their API key as a repository secret by running this command in their terminal (do NOT run it yourself — it prompts for the secret value securely):",{"type":40,"tag":87,"props":2441,"children":2442},{},[2443,2448,2458],{"type":40,"tag":49,"props":2444,"children":2445},{},[2446],{"type":46,"value":2447},"To activate the workflow after merging, run this in your terminal:",{"type":40,"tag":183,"props":2449,"children":2453},{"className":2450,"code":2452,"language":46},[2451],"language-text","echo \"YOUR_API_KEY\" | gh secret set ANTHROPIC_API_KEY --repo \u003Cowner>\u002F\u003Crepo>\n",[2454],{"type":40,"tag":145,"props":2455,"children":2456},{"__ignoreMap":188},[2457],{"type":46,"value":2452},{"type":40,"tag":49,"props":2459,"children":2460},{},[2461,2463,2469],{"type":46,"value":2462},"Replace ",{"type":40,"tag":145,"props":2464,"children":2466},{"className":2465},[],[2467],{"type":46,"value":2468},"YOUR_API_KEY",{"type":46,"value":2470}," with your actual Anthropic API key.",{"type":40,"tag":49,"props":2472,"children":2473},{},[2474,2476,2482],{"type":46,"value":2475},"Fill in the actual ",{"type":40,"tag":145,"props":2477,"children":2479},{"className":2478},[],[2480],{"type":46,"value":2481},"\u003Cowner>\u002F\u003Crepo>",{"type":46,"value":2483}," for them.",{"type":40,"tag":49,"props":2485,"children":2486},{},[2487],{"type":46,"value":2488},"Mark task 3 complete.",{"type":40,"tag":75,"props":2490,"children":2492},{"id":2491},"step-6-commit-pr",[2493],{"type":46,"value":2494},"Step 6: Commit & PR",{"type":40,"tag":49,"props":2496,"children":2497},{},[2498],{"type":46,"value":2499},"Mark task 4 in progress. Commit everything and open a PR:",{"type":40,"tag":183,"props":2501,"children":2503},{"className":185,"code":2502,"language":187,"meta":188,"style":188},"git add .checks\u002F\ngit add .github\u002Fworkflows\u002Fchecks.yml 2>\u002Fdev\u002Fnull # if CI was set up\ngit add CLAUDE.md AGENTS.md COPILOT.md 2>\u002Fdev\u002Fnull # whichever was modified\ngit commit -m \"Add checks for automated PR review\n\nChecks:\n- [list each check name]\"\ngit push origin HEAD\ngh pr create --title \"Add checks for automated PR review\" --body \"Adds AI-powered code review checks that run on every PR.\n\n## Checks added\n\n[list each check with one-line description]\n\n## How it works\n\nEach check is a markdown file in \\`.checks\u002F\\`. They run as full agents on every PR — reading files, running commands, and providing suggested fixes when they find issues.\"\n",[2504],{"type":40,"tag":145,"props":2505,"children":2506},{"__ignoreMap":188},[2507,2524,2555,2594,2619,2626,2634,2646,2667,2716,2723,2731,2738,2746,2753,2761,2768],{"type":40,"tag":194,"props":2508,"children":2509},{"class":196,"line":197},[2510,2514,2519],{"type":40,"tag":194,"props":2511,"children":2512},{"style":201},[2513],{"type":46,"value":204},{"type":40,"tag":194,"props":2515,"children":2516},{"style":207},[2517],{"type":46,"value":2518}," add",{"type":40,"tag":194,"props":2520,"children":2521},{"style":207},[2522],{"type":46,"value":2523}," .checks\u002F\n",{"type":40,"tag":194,"props":2525,"children":2526},{"class":196,"line":229},[2527,2531,2535,2540,2545,2550],{"type":40,"tag":194,"props":2528,"children":2529},{"style":201},[2530],{"type":46,"value":204},{"type":40,"tag":194,"props":2532,"children":2533},{"style":207},[2534],{"type":46,"value":2518},{"type":40,"tag":194,"props":2536,"children":2537},{"style":207},[2538],{"type":46,"value":2539}," .github\u002Fworkflows\u002Fchecks.yml",{"type":40,"tag":194,"props":2541,"children":2542},{"style":252},[2543],{"type":46,"value":2544}," 2>",{"type":40,"tag":194,"props":2546,"children":2547},{"style":207},[2548],{"type":46,"value":2549},"\u002Fdev\u002Fnull",{"type":40,"tag":194,"props":2551,"children":2552},{"style":223},[2553],{"type":46,"value":2554}," # if CI was set up\n",{"type":40,"tag":194,"props":2556,"children":2557},{"class":196,"line":268},[2558,2562,2566,2571,2576,2581,2585,2589],{"type":40,"tag":194,"props":2559,"children":2560},{"style":201},[2561],{"type":46,"value":204},{"type":40,"tag":194,"props":2563,"children":2564},{"style":207},[2565],{"type":46,"value":2518},{"type":40,"tag":194,"props":2567,"children":2568},{"style":207},[2569],{"type":46,"value":2570}," CLAUDE.md",{"type":40,"tag":194,"props":2572,"children":2573},{"style":207},[2574],{"type":46,"value":2575}," AGENTS.md",{"type":40,"tag":194,"props":2577,"children":2578},{"style":207},[2579],{"type":46,"value":2580}," COPILOT.md",{"type":40,"tag":194,"props":2582,"children":2583},{"style":252},[2584],{"type":46,"value":2544},{"type":40,"tag":194,"props":2586,"children":2587},{"style":207},[2588],{"type":46,"value":2549},{"type":40,"tag":194,"props":2590,"children":2591},{"style":223},[2592],{"type":46,"value":2593}," # whichever was modified\n",{"type":40,"tag":194,"props":2595,"children":2596},{"class":196,"line":582},[2597,2601,2606,2610,2614],{"type":40,"tag":194,"props":2598,"children":2599},{"style":201},[2600],{"type":46,"value":204},{"type":40,"tag":194,"props":2602,"children":2603},{"style":207},[2604],{"type":46,"value":2605}," commit",{"type":40,"tag":194,"props":2607,"children":2608},{"style":207},[2609],{"type":46,"value":249},{"type":40,"tag":194,"props":2611,"children":2612},{"style":252},[2613],{"type":46,"value":255},{"type":40,"tag":194,"props":2615,"children":2616},{"style":207},[2617],{"type":46,"value":2618},"Add checks for automated PR review\n",{"type":40,"tag":194,"props":2620,"children":2621},{"class":196,"line":27},[2622],{"type":40,"tag":194,"props":2623,"children":2624},{"emptyLinePlaceholder":593},[2625],{"type":46,"value":596},{"type":40,"tag":194,"props":2627,"children":2628},{"class":196,"line":599},[2629],{"type":40,"tag":194,"props":2630,"children":2631},{"style":207},[2632],{"type":46,"value":2633},"Checks:\n",{"type":40,"tag":194,"props":2635,"children":2636},{"class":196,"line":613},[2637,2642],{"type":40,"tag":194,"props":2638,"children":2639},{"style":207},[2640],{"type":46,"value":2641},"- [list each check name]",{"type":40,"tag":194,"props":2643,"children":2644},{"style":252},[2645],{"type":46,"value":265},{"type":40,"tag":194,"props":2647,"children":2648},{"class":196,"line":621},[2649,2653,2657,2662],{"type":40,"tag":194,"props":2650,"children":2651},{"style":201},[2652],{"type":46,"value":204},{"type":40,"tag":194,"props":2654,"children":2655},{"style":207},[2656],{"type":46,"value":244},{"type":40,"tag":194,"props":2658,"children":2659},{"style":207},[2660],{"type":46,"value":2661}," origin",{"type":40,"tag":194,"props":2663,"children":2664},{"style":207},[2665],{"type":46,"value":2666}," HEAD\n",{"type":40,"tag":194,"props":2668,"children":2669},{"class":196,"line":635},[2670,2674,2678,2683,2688,2692,2697,2702,2707,2711],{"type":40,"tag":194,"props":2671,"children":2672},{"style":201},[2673],{"type":46,"value":360},{"type":40,"tag":194,"props":2675,"children":2676},{"style":207},[2677],{"type":46,"value":388},{"type":40,"tag":194,"props":2679,"children":2680},{"style":207},[2681],{"type":46,"value":2682}," create",{"type":40,"tag":194,"props":2684,"children":2685},{"style":207},[2686],{"type":46,"value":2687}," --title",{"type":40,"tag":194,"props":2689,"children":2690},{"style":252},[2691],{"type":46,"value":255},{"type":40,"tag":194,"props":2693,"children":2694},{"style":207},[2695],{"type":46,"value":2696},"Add checks for automated PR review",{"type":40,"tag":194,"props":2698,"children":2699},{"style":252},[2700],{"type":46,"value":2701},"\"",{"type":40,"tag":194,"props":2703,"children":2704},{"style":207},[2705],{"type":46,"value":2706}," --body",{"type":40,"tag":194,"props":2708,"children":2709},{"style":252},[2710],{"type":46,"value":255},{"type":40,"tag":194,"props":2712,"children":2713},{"style":207},[2714],{"type":46,"value":2715},"Adds AI-powered code review checks that run on every PR.\n",{"type":40,"tag":194,"props":2717,"children":2718},{"class":196,"line":23},[2719],{"type":40,"tag":194,"props":2720,"children":2721},{"emptyLinePlaceholder":593},[2722],{"type":46,"value":596},{"type":40,"tag":194,"props":2724,"children":2725},{"class":196,"line":652},[2726],{"type":40,"tag":194,"props":2727,"children":2728},{"style":207},[2729],{"type":46,"value":2730},"## Checks added\n",{"type":40,"tag":194,"props":2732,"children":2733},{"class":196,"line":660},[2734],{"type":40,"tag":194,"props":2735,"children":2736},{"emptyLinePlaceholder":593},[2737],{"type":46,"value":596},{"type":40,"tag":194,"props":2739,"children":2740},{"class":196,"line":673},[2741],{"type":40,"tag":194,"props":2742,"children":2743},{"style":207},[2744],{"type":46,"value":2745},"[list each check with one-line description]\n",{"type":40,"tag":194,"props":2747,"children":2748},{"class":196,"line":681},[2749],{"type":40,"tag":194,"props":2750,"children":2751},{"emptyLinePlaceholder":593},[2752],{"type":46,"value":596},{"type":40,"tag":194,"props":2754,"children":2755},{"class":196,"line":695},[2756],{"type":40,"tag":194,"props":2757,"children":2758},{"style":207},[2759],{"type":46,"value":2760},"## How it works\n",{"type":40,"tag":194,"props":2762,"children":2763},{"class":196,"line":703},[2764],{"type":40,"tag":194,"props":2765,"children":2766},{"emptyLinePlaceholder":593},[2767],{"type":46,"value":596},{"type":40,"tag":194,"props":2769,"children":2770},{"class":196,"line":712},[2771,2776,2781,2785,2789,2794],{"type":40,"tag":194,"props":2772,"children":2773},{"style":207},[2774],{"type":46,"value":2775},"Each check is a markdown file in ",{"type":40,"tag":194,"props":2777,"children":2778},{"style":646},[2779],{"type":46,"value":2780},"\\`",{"type":40,"tag":194,"props":2782,"children":2783},{"style":207},[2784],{"type":46,"value":516},{"type":40,"tag":194,"props":2786,"children":2787},{"style":646},[2788],{"type":46,"value":2780},{"type":40,"tag":194,"props":2790,"children":2791},{"style":207},[2792],{"type":46,"value":2793},". They run as full agents on every PR — reading files, running commands, and providing suggested fixes when they find issues.",{"type":40,"tag":194,"props":2795,"children":2796},{"style":252},[2797],{"type":46,"value":265},{"type":40,"tag":49,"props":2799,"children":2800},{},[2801],{"type":46,"value":2802},"If you stashed changes earlier, restore them:",{"type":40,"tag":183,"props":2804,"children":2806},{"className":185,"code":2805,"language":187,"meta":188,"style":188},"git checkout \u003Coriginal-branch>\ngit stash pop\n",[2807],{"type":40,"tag":145,"props":2808,"children":2809},{"__ignoreMap":188},[2810,2841],{"type":40,"tag":194,"props":2811,"children":2812},{"class":196,"line":197},[2813,2817,2821,2826,2831,2836],{"type":40,"tag":194,"props":2814,"children":2815},{"style":201},[2816],{"type":46,"value":204},{"type":40,"tag":194,"props":2818,"children":2819},{"style":207},[2820],{"type":46,"value":278},{"type":40,"tag":194,"props":2822,"children":2823},{"style":252},[2824],{"type":46,"value":2825}," \u003C",{"type":40,"tag":194,"props":2827,"children":2828},{"style":207},[2829],{"type":46,"value":2830},"original-branc",{"type":40,"tag":194,"props":2832,"children":2833},{"style":646},[2834],{"type":46,"value":2835},"h",{"type":40,"tag":194,"props":2837,"children":2838},{"style":252},[2839],{"type":46,"value":2840},">\n",{"type":40,"tag":194,"props":2842,"children":2843},{"class":196,"line":229},[2844,2848,2852],{"type":40,"tag":194,"props":2845,"children":2846},{"style":201},[2847],{"type":46,"value":204},{"type":40,"tag":194,"props":2849,"children":2850},{"style":207},[2851],{"type":46,"value":239},{"type":40,"tag":194,"props":2853,"children":2854},{"style":207},[2855],{"type":46,"value":2856}," pop\n",{"type":40,"tag":49,"props":2858,"children":2859},{},[2860],{"type":46,"value":2861},"Mark task 4 complete. Share the PR URL.",{"type":40,"tag":2863,"props":2864,"children":2865},"style",{},[2866],{"type":46,"value":2867},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2869,"total":197},[2870],{"slug":4,"name":4,"fn":5,"description":6,"org":2871,"tags":2872,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2873,2874,2875],{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":21,"slug":22,"type":16},{"items":2877,"total":229},[2878,2895],{"slug":2879,"name":2879,"fn":2880,"description":2881,"org":2882,"tags":2883,"stars":2892,"repoUrl":2893,"updatedAt":2894},"cn-check","execute AI agent checks with Continue","Install and run the Continue CLI (`cn`) to execute AI agent checks on local code changes. Use when asked to \"run checks\", \"lint with AI\", \"review my changes with cn\", or set up Continue CI locally.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2884,2887,2890,2891],{"name":2885,"slug":2886,"type":16},"Automation","automation",{"name":2888,"slug":2889,"type":16},"CLI","cli",{"name":18,"slug":19,"type":16},{"name":21,"slug":22,"type":16},34825,"https:\u002F\u002Fgithub.com\u002Fcontinuedev\u002Fcontinue","2026-07-12T08:47:33.246461",{"slug":4,"name":4,"fn":5,"description":6,"org":2896,"tags":2897,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2898,2899,2900],{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":21,"slug":22,"type":16}]