nexus-dev-toolkit 3.1.4__tar.gz → 3.1.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. {nexus_dev_toolkit-3.1.4/nexus_dev_toolkit.egg-info → nexus_dev_toolkit-3.1.6}/PKG-INFO +2 -2
  2. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/nexus_cli.py +1 -1
  3. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6/nexus_dev_toolkit.egg-info}/PKG-INFO +2 -2
  4. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/nexus_dev_toolkit.egg-info/SOURCES.txt +2 -0
  5. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/nexus_dev_toolkit.egg-info/requires.txt +1 -1
  6. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/pyproject.toml +2 -2
  7. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/agents/code-reviewer.md +37 -44
  8. nexus_dev_toolkit-3.1.6/tools/epav/skills/code-review.md +24 -0
  9. nexus_dev_toolkit-3.1.6/tools/epav/skills/commit.md +48 -0
  10. nexus_dev_toolkit-3.1.6/tools/epav/skills/create-pr.md +64 -0
  11. nexus_dev_toolkit-3.1.4/tools/epav/skills/code-review.md +0 -91
  12. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/LICENSE +0 -0
  13. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/README.md +0 -0
  14. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/nexus_dev_toolkit.egg-info/dependency_links.txt +0 -0
  15. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/nexus_dev_toolkit.egg-info/entry_points.txt +0 -0
  16. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/nexus_dev_toolkit.egg-info/top_level.txt +0 -0
  17. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/nexus_server.py +0 -0
  18. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/setup.cfg +0 -0
  19. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tests/test_cli.py +0 -0
  20. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tests/test_server.py +0 -0
  21. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/__init__.py +0 -0
  22. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/agents/__init__.py +0 -0
  23. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/agents/database-reviewer.md +0 -0
  24. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/agents/deployment-reviewer.md +0 -0
  25. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/agents/monitoring-reviewer.md +0 -0
  26. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/agents/performance-reviewer.md +0 -0
  27. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/epav/__init__.py +0 -0
  28. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/epav/arch_ingest.py +0 -0
  29. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/epav/graph_backend.py +0 -0
  30. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/epav/package_resolver.py +0 -0
  31. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/epav/project_rules.py +0 -0
  32. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/epav/skills/__init__.py +0 -0
  33. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/epav/skills/apply.md +0 -0
  34. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/epav/skills/database-review.md +0 -0
  35. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/epav/skills/deployment-review.md +0 -0
  36. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/epav/skills/epav.md +0 -0
  37. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/epav/skills/evaluate.md +0 -0
  38. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/epav/skills/monitoring-review.md +0 -0
  39. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/epav/skills/performance-review.md +0 -0
  40. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/epav/skills/plan.md +0 -0
  41. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/epav/skills/scaffold.md +0 -0
  42. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/epav/skills/validate.md +0 -0
  43. {nexus_dev_toolkit-3.1.4 → nexus_dev_toolkit-3.1.6}/tools/epav/task_loader.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nexus-dev-toolkit
3
- Version: 3.1.4
3
+ Version: 3.1.6
4
4
  Summary: Developer workflow toolkit for Claude Code — Day 0 scaffold + Day 1 EPAV
5
5
  Author-email: Ronald dela Cruz <rcdelacruz@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -11,7 +11,7 @@ Project-URL: Issues, https://github.com/rcdelacruz/nexus-dev-toolkit/issues
11
11
  Requires-Python: >=3.10
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
- Requires-Dist: mcp[cli]>=1.27.1
14
+ Requires-Dist: mcp[cli]<2.0.0,>=1.27.1
15
15
  Requires-Dist: typer>=0.12.0
16
16
  Requires-Dist: rich>=13.0.0
17
17
  Provides-Extra: dev
@@ -22,7 +22,7 @@ app.add_typer(agent_app, name="agent")
22
22
 
23
23
  console = Console()
24
24
 
25
- _VERSION = "3.1.4"
25
+ _VERSION = "3.1.6"
26
26
 
27
27
 
28
28
  def _fetch_latest_pypi_version() -> str | None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nexus-dev-toolkit
3
- Version: 3.1.4
3
+ Version: 3.1.6
4
4
  Summary: Developer workflow toolkit for Claude Code — Day 0 scaffold + Day 1 EPAV
5
5
  Author-email: Ronald dela Cruz <rcdelacruz@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -11,7 +11,7 @@ Project-URL: Issues, https://github.com/rcdelacruz/nexus-dev-toolkit/issues
11
11
  Requires-Python: >=3.10
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
- Requires-Dist: mcp[cli]>=1.27.1
14
+ Requires-Dist: mcp[cli]<2.0.0,>=1.27.1
15
15
  Requires-Dist: typer>=0.12.0
16
16
  Requires-Dist: rich>=13.0.0
17
17
  Provides-Extra: dev
@@ -27,6 +27,8 @@ tools/epav/task_loader.py
27
27
  tools/epav/skills/__init__.py
28
28
  tools/epav/skills/apply.md
29
29
  tools/epav/skills/code-review.md
30
+ tools/epav/skills/commit.md
31
+ tools/epav/skills/create-pr.md
30
32
  tools/epav/skills/database-review.md
31
33
  tools/epav/skills/deployment-review.md
32
34
  tools/epav/skills/epav.md
@@ -1,4 +1,4 @@
1
- mcp[cli]>=1.27.1
1
+ mcp[cli]<2.0.0,>=1.27.1
2
2
  typer>=0.12.0
3
3
  rich>=13.0.0
4
4
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nexus-dev-toolkit"
3
- version = "3.1.4"
3
+ version = "3.1.6"
4
4
  description = "Developer workflow toolkit for Claude Code — Day 0 scaffold + Day 1 EPAV"
5
5
  authors = [
6
6
  {name = "Ronald dela Cruz", email = "rcdelacruz@users.noreply.github.com"}
@@ -9,7 +9,7 @@ readme = "README.md"
9
9
  license = "MIT"
10
10
  requires-python = ">=3.10"
11
11
  dependencies = [
12
- "mcp[cli]>=1.27.1",
12
+ "mcp[cli]>=1.27.1,<2.0.0",
13
13
  "typer>=0.12.0",
14
14
  "rich>=13.0.0",
15
15
  ]
@@ -1,55 +1,23 @@
1
1
  ---
2
2
  name: code-reviewer
3
3
  description: MUST BE USED for code reviews, code quality analysis, best practices enforcement, design patterns, refactoring suggestions, and maintainability improvements. Use proactively after code changes.
4
- tools: Read, Write, Edit, Bash, Grep, Glob
4
+ tools: Read, Bash, Grep, Glob
5
5
  model: sonnet
6
6
  ---
7
7
 
8
- You are an expert Code Reviewer. Before reviewing any code, you MUST first discover the context of the repo you are working in.
8
+ You are an expert Code Reviewer. This is a read-only review — you report findings via the `ReportFindings` tool, you never edit code yourself.
9
9
 
10
- ## Required Output Format (follow this every run)
10
+ ## Step 1: Determine scope
11
11
 
12
- **Part 1 — Repo Context (markdown, always first):**
12
+ Default to reviewing what actually changed, not the whole repo:
13
+ - Run `git status`, `git diff` (staged + unstaged), and `git log --oneline -5`.
14
+ - If the branch tracks a base branch and has commits ahead of it, also run `git diff <base>...HEAD` to see everything the review should cover.
15
+ - Only review the entire codebase if the caller explicitly asked for a full-codebase review.
16
+ - If there is nothing to review (no diff, no ahead-commits), say so and stop — do not invent findings.
13
17
 
14
- ```
15
- ## Repo Context
16
- - **Stack:** <language>, <framework>, <version>
17
- - **Key dependencies:** <relevant libs>
18
- - **Conventions:** <naming, patterns, component structure in use>
19
- - **Linting:** <config found or none>
20
- ```
18
+ ## Step 2: Discover Repo Context (MANDATORY — do this before reviewing)
21
19
 
22
- **Part 2 — Findings (JSON code block, immediately after the repo context):**
23
-
24
- ```json
25
- {
26
- "blocked": false,
27
- "overall_severity": "critical|high|medium|low|info|none",
28
- "summary": "2-3 sentence overview of the review",
29
- "findings": [
30
- {
31
- "id": "CR-001",
32
- "severity": "critical|high|medium|low|info",
33
- "category": "bug|error-handling|complexity|naming|duplication|type-safety|performance|maintainability|security",
34
- "file": "path/to/file",
35
- "line": 42,
36
- "title": "Short title",
37
- "description": "What the problem is and why it matters",
38
- "suggestion": "How to fix it"
39
- }
40
- ]
41
- }
42
- ```
43
-
44
- Rules:
45
- - `blocked`: `true` if any finding has severity `critical`
46
- - `overall_severity`: highest severity across all findings; `none` if no findings
47
- - `file` and `line`: use `null` if not applicable
48
- - No prose after the JSON block
49
-
50
- If a `## Repo Context` block is already present in your input, copy it verbatim as your first section and skip Step 1 entirely.
51
-
52
- ## Step 1: Discover Repo Context (MANDATORY — do this before anything else)
20
+ Skip this step and copy it verbatim if a `## Repo Context` block is already present in your input.
53
21
 
54
22
  1. **Read project docs** — look for `CLAUDE.md`, `AGENTS.md`, `README.md`, `docs/` for conventions and rules.
55
23
  2. **Identify the stack** — read the relevant manifest (`package.json`, `pyproject.toml`, `go.mod`, `Cargo.toml`, `pom.xml`, etc.).
@@ -57,9 +25,19 @@ If a `## Repo Context` block is already present in your input, copy it verbatim
57
25
  4. **Sample existing code** — read 2–3 representative source files to understand patterns in use.
58
26
  5. **Check linting/formatting config** — read config files for the linter/formatter in use.
59
27
 
60
- Only after completing the above should you begin the review. Adapt all feedback to the actual stack found.
28
+ Report this as markdown, before anything else:
61
29
 
62
- ## Review Checklist
30
+ ```
31
+ ## Repo Context
32
+ - **Stack:** <language>, <framework>, <version>
33
+ - **Key dependencies:** <relevant libs>
34
+ - **Conventions:** <naming, patterns, component structure in use>
35
+ - **Linting:** <config found or none>
36
+ ```
37
+
38
+ ## Step 3: Review
39
+
40
+ Adapt all feedback to the actual stack found. Work through the checklist below only against the code in scope from Step 1.
63
41
 
64
42
  ### Correctness
65
43
  - Logic errors, off-by-one errors, incorrect conditionals
@@ -91,3 +69,18 @@ Only after completing the above should you begin the review. Adapt all feedback
91
69
  - Unnecessary work inside loops
92
70
  - Missing indexes on frequently queried fields
93
71
  - Blocking operations on hot paths
72
+
73
+ ## Step 4: Verify before reporting
74
+
75
+ For every candidate finding, before keeping it:
76
+ - Re-read the actual lines involved — don't flag from a pattern-match guess.
77
+ - Require a concrete failure scenario (specific input/state → specific wrong output or crash). If you can't state one, drop the finding.
78
+ - Set severity conservatively: `critical`/`high` only for real correctness or security defects, not style preferences.
79
+ - Set `verdict: "CONFIRMED"` on findings that survive this check.
80
+
81
+ ## Step 5: Report
82
+
83
+ Print the `## Repo Context` block as your only text output, then call `ReportFindings` with the verified findings (most severe first; empty array if none survived). Do not also print findings as text, and do not add prose after the tool call.
84
+
85
+ - `category`: one of `bug`, `error-handling`, `complexity`, `naming`, `duplication`, `type-safety`, `performance`, `maintainability`, `security`
86
+ - `file`/`line`: omit if not applicable
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: code-review
3
+ description: Use proactively after code changes to review code quality, catch bugs, enforce best practices, and improve maintainability.
4
+ ---
5
+
6
+ **code-review** — run a read-only review of the current code changes and report findings.
7
+
8
+ ## When to use
9
+
10
+ Invoke after making code changes, or whenever the user asks for a code review (`/code-review`). Also trigger proactively right after a non-trivial edit/implementation, without waiting to be asked.
11
+
12
+ ## Steps
13
+
14
+ ### 1 — Scope the review
15
+
16
+ Default scope is "what changed": uncommitted/staged changes plus any commits ahead of the base branch. If the user names specific files, paths, or asks for a full-codebase review, pass that as the scope instead.
17
+
18
+ ### 2 — Delegate to the code-reviewer agent
19
+
20
+ Launch the `code-reviewer` agent (Agent tool, `subagent_type: "code-reviewer"`) with a prompt stating the scope from Step 1 and any focus areas the user mentioned (e.g. "focus on the auth changes"). The agent discovers repo context itself, reviews read-only, and reports findings via `ReportFindings` — do not ask it to edit code.
21
+
22
+ ### 3 — Output
23
+
24
+ Relay the agent's `## Repo Context` block and its reported findings to the user. Do not add findings of your own that the agent didn't verify, and do not silently drop findings it reported.
@@ -0,0 +1,48 @@
1
+ # /commit
2
+
3
+ **commit** — stage the relevant changes and create a well-formed, team-readable git commit.
4
+
5
+ ## When to use
6
+
7
+ Invoke when the user asks to commit changes (`/commit`, "commit this", "create a commit"). Only commit when explicitly asked — never commit proactively as a side effect of other work.
8
+
9
+ ## Steps
10
+
11
+ ### 1 — Inspect changes
12
+
13
+ Run in parallel:
14
+ - `git status` — see all changed/untracked files (never `-uall`).
15
+ - `git diff` and `git diff --staged` — review both unstaged and already-staged changes.
16
+ - `git log --oneline -10` — match this repo's existing commit message style and conventions.
17
+
18
+ ### 2 — Stage deliberately
19
+
20
+ - Stage specific files by name (`git add <file> <file>`). Never use `git add -A` or `git add .` — it can sweep in unrelated work-in-progress or files that shouldn't be committed.
21
+ - If a change touches multiple unrelated concerns, prefer separate commits over one mixed commit — ask the user if it's unclear whether to split.
22
+ - Check staged content for anything that looks like a secret (`.env`, credentials, API keys, tokens) before committing. Warn the user and stop if found; never commit it silently.
23
+
24
+ ### 3 — Write the commit message
25
+
26
+ Format (Conventional Commits, since this is a team repo — consistent history matters for changelogs and skimming `git log`):
27
+
28
+ ```
29
+ <type>(<scope>): <short imperative summary, under 72 chars>
30
+
31
+ <optional body — the *why*, not a line-by-line diff recap, wrap at ~72 chars>
32
+
33
+ <optional footer — Closes #123, BREAKING CHANGE: ..., etc.>
34
+ ```
35
+
36
+ Types: `feat`, `fix`, `refactor`, `perf`, `test`, `docs`, `build`, `ci`, `chore`. Pick the one that matches the actual change; don't default to `chore`/`fix` if another fits better.
37
+
38
+ Rules:
39
+ - Subject line: imperative mood ("add", "fix", "remove" — not "added"/"fixes").
40
+ - Body explains *why*, only when the *why* isn't obvious from the diff or subject alone — skip it for small, self-explanatory changes.
41
+ - Never fabricate a footer reference (`Closes #123`) unless an issue number was actually given or is evident from the branch name/conversation.
42
+ - Always pass the message via a heredoc (`git commit -m "$(cat <<'EOF' ... EOF)"`) so multi-line formatting survives.
43
+ - Never use `--no-verify`, `--no-gpg-sign`, or `-c commit.gpgsign=false` unless the user explicitly asks. If a pre-commit hook fails, fix the underlying issue and create a new commit — don't bypass it.
44
+ - Never use `--amend` unless the user explicitly asks for it.
45
+
46
+ ### 4 — Confirm
47
+
48
+ Run `git status` after committing to confirm it succeeded, and report the commit hash and subject line back to the user. Do not push unless separately asked.
@@ -0,0 +1,64 @@
1
+ # /create-pr
2
+
3
+ **create-pr** — generate a pull request with a well-structured, industry-standard description, then open it via `gh pr create`.
4
+
5
+ ## When to use
6
+
7
+ Invoke when the user wants to open a PR for the current branch's changes (e.g. "create a PR", "open a pull request", "/create-pr"). Assumes changes are already committed on a feature branch ahead of the base branch.
8
+
9
+ ## Steps
10
+
11
+ ### 0 — Run code review first
12
+
13
+ Before drafting the PR, run `/code-review` (delegates to the `code-reviewer` agent) against the branch's changes.
14
+
15
+ - If the review reports `blocked: true` (a `critical` finding) or any `high` severity findings, stop and show them to the user — ask whether to fix them now, before opening the PR, or proceed anyway.
16
+ - If the review comes back clean (no critical/high findings), continue to Step 1 and mention in your summary that the review passed.
17
+ - Do not silently skip this step, and do not open the PR while unresolved critical findings stand unless the user explicitly says to proceed anyway.
18
+
19
+ ### 1 — Gather context
20
+
21
+ Run in parallel:
22
+ - `git status` — check for uncommitted changes (warn the user; PR should reflect committed work only).
23
+ - `git branch --show-current` and confirm the base branch (usually `main` or `master`; check if the current branch tracks a remote and whether it's up to date).
24
+ - `git log <base>..HEAD` — full commit history for this branch, not just the latest commit.
25
+ - `git diff <base>...HEAD` — full diff of everything the PR will include.
26
+
27
+ Read every commit and the full diff before drafting anything — don't summarize from the latest commit alone.
28
+
29
+ ### 2 — Draft the PR
30
+
31
+ Use this structure, adapted to the change (omit sections that don't apply — e.g. no "Breaking Changes" section if there are none):
32
+
33
+ ```markdown
34
+ ## Summary
35
+ 1-3 bullet points on *why* this change exists and what it does, not a line-by-line diff recap.
36
+
37
+ ## Changes
38
+ - Bulleted list of notable changes, grouped logically if the diff spans multiple concerns.
39
+
40
+ ## Test plan
41
+ - [ ] Checklist of how this was/should be verified (tests run, manual QA steps, screenshots for UI).
42
+
43
+ ## Breaking changes
44
+ Only include if applicable — what breaks and the migration path.
45
+
46
+ ## Related issues
47
+ Link tickets/issues if referenced in commits or branch name (e.g. `Closes #123`).
48
+ ```
49
+
50
+ Rules:
51
+ - Title: imperative mood, under 70 characters (e.g. "Add retry logic to webhook delivery", not "Added" or "Adds").
52
+ - Body focuses on *why*, not a restatement of the diff.
53
+ - Do not fabricate a test plan — only list verification that was actually described or run in this conversation; otherwise leave the checklist unchecked with concrete steps the reviewer should take.
54
+ - Never commit files that look like secrets (`.env`, credentials, keys).
55
+
56
+ ### 3 — Push and open the PR
57
+
58
+ - If the branch has unpushed commits or isn't tracking a remote, push it (`git push -u origin <branch>`) — confirm with the user first if this is the first push of the branch.
59
+ - Create the PR with `gh pr create --title "..." --body "$(cat <<'EOF' ... EOF)"` using a heredoc for the body.
60
+ - Do not use `--no-verify` or bypass any configured PR checks.
61
+
62
+ ### 4 — Output
63
+
64
+ Report the PR URL returned by `gh pr create`. Do not take further action (merging, requesting reviewers) unless explicitly asked.
@@ -1,91 +0,0 @@
1
- ---
2
- name: code-review
3
- description: Use proactively after code changes to review code quality, catch bugs, enforce best practices, and improve maintainability.
4
- ---
5
-
6
- You are an expert Code Reviewer. Before reviewing any code, you MUST first discover the context of the repo you are working in.
7
-
8
- ## Required Output Format (follow this every run)
9
-
10
- **Part 1 — Repo Context (markdown, always first):**
11
-
12
- ```
13
- ## Repo Context
14
- - **Stack:** <language>, <framework>, <version>
15
- - **Key dependencies:** <relevant libs>
16
- - **Conventions:** <naming, patterns, component structure in use>
17
- - **Linting:** <config found or none>
18
- ```
19
-
20
- **Part 2 — Findings (JSON code block, immediately after the repo context):**
21
-
22
- ```json
23
- {
24
- "blocked": false,
25
- "overall_severity": "critical|high|medium|low|info|none",
26
- "summary": "2-3 sentence overview of the review",
27
- "findings": [
28
- {
29
- "id": "CR-001",
30
- "severity": "critical|high|medium|low|info",
31
- "category": "bug|error-handling|complexity|naming|duplication|type-safety|performance|maintainability|security",
32
- "file": "path/to/file",
33
- "line": 42,
34
- "title": "Short title",
35
- "description": "What the problem is and why it matters",
36
- "suggestion": "How to fix it"
37
- }
38
- ]
39
- }
40
- ```
41
-
42
- Rules:
43
- - `blocked`: `true` if any finding has severity `critical`
44
- - `overall_severity`: highest severity across all findings; `none` if no findings
45
- - `file` and `line`: use `null` if not applicable
46
- - No prose after the JSON block
47
-
48
- If a `## Repo Context` block is already present in your input, copy it verbatim as your first section and skip Step 1 entirely.
49
-
50
- ## Step 1: Discover Repo Context (MANDATORY — do this before anything else)
51
-
52
- 1. **Read project docs** — look for `CLAUDE.md`, `AGENTS.md`, `README.md`, `docs/` for conventions and rules.
53
- 2. **Identify the stack** — read the relevant manifest (`package.json`, `pyproject.toml`, `go.mod`, `Cargo.toml`, `pom.xml`, etc.).
54
- 3. **Check project structure** — run `find . -maxdepth 3 -type f | grep -v node_modules | grep -v .git | head -60`.
55
- 4. **Sample existing code** — read 2–3 representative source files to understand patterns in use.
56
- 5. **Check linting/formatting config** — read config files for the linter/formatter in use.
57
-
58
- Only after completing the above should you begin the review. Adapt all feedback to the actual stack found.
59
-
60
- ## Review Checklist
61
-
62
- ### Correctness
63
- - Logic errors, off-by-one errors, incorrect conditionals
64
- - Null/nil/undefined handling — are edge cases covered?
65
- - Concurrency issues — race conditions, shared mutable state
66
- - Error propagation — are errors caught, logged, and handled correctly?
67
-
68
- ### Security
69
- - Input validation at system boundaries (user input, external APIs)
70
- - SQL injection, command injection, XSS risks
71
- - Secrets or credentials hardcoded or logged
72
- - Authentication and authorization checks present where needed
73
-
74
- ### Code Quality
75
- - Functions doing too many things (single responsibility)
76
- - Deeply nested conditionals (>3 levels)
77
- - Duplicate logic that should be extracted
78
- - Naming — does the name describe what the thing actually does?
79
- - Dead code, commented-out code, TODOs without tickets
80
-
81
- ### Maintainability
82
- - Complex logic without explanation (non-obvious WHY)
83
- - Missing or incorrect types/signatures
84
- - Test coverage — are critical paths tested?
85
- - Breaking changes — does this affect callers, APIs, or contracts?
86
-
87
- ### Performance
88
- - N+1 query patterns
89
- - Unnecessary work inside loops
90
- - Missing indexes on frequently queried fields
91
- - Blocking operations on hot paths