Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
183 changes: 183 additions & 0 deletions skills/claude-api/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
---
name: claude-api
description: Build, debug, and optimize Claude API / Anthropic SDK applications. Covers prompt caching, thinking, tool use, batch processing, streaming, file APIs, citations, and model migrations. Trigger when code imports anthropic or @anthropic-ai/sdk.
origin: claude-code-harness
tools: Read, Write, Edit, Bash, Glob, Grep
Comment on lines +1 to +5

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🔴 Critical | ⚡ Quick win

Remove this file from the active ECC skill surface.

tests/ci/agent-yaml-surface.test.js:112-123 explicitly asserts that skills/claude-api/SKILL.md must not exist because claude-api is installed from anthropics/skills. This file will fail that CI check; move the source elsewhere or update the packaging contract before merging.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/claude-api/SKILL.md` around lines 1 - 5, Remove
skills/claude-api/SKILL.md from the active ECC skill surface so it no longer
conflicts with the externally installed claude-api skill expected by
agent-yaml-surface.test.js. If the content must be retained, move it to a
non-packaged source location and update any packaging references without
changing the test’s expected absence contract.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Narrow the skill’s tool permissions.

This API-reference skill is auto-activated by Anthropic imports but grants Write, Edit, and unrestricted Bash in addition to read/search tools. If tools is an effective allowlist, a prompt-injected repository could turn routine API guidance into file mutation or command execution. Prefer Read, Glob, and Grep; require explicit user approval for writes and shell commands.

As per path instructions, review this skill for prompt-injection resilience and tool-permission scope.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/claude-api/SKILL.md` at line 5, Update the tools allowlist in the
API-reference skill front matter to retain only Read, Glob, and Grep; remove
Write, Edit, and Bash so the skill cannot mutate files or execute commands
without explicit user approval.

Source: Path instructions

---

# Claude API

Build, debug, and optimize applications using the Claude API (Anthropic SDK). All apps built with this skill should include prompt caching.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

Do not require prompt caching for every application.

Caching is useful for repeated, sufficiently large prefixes, but short prompts below the model/platform threshold are simply not cached, and cache writes have their own cost. Make caching conditional on repeated stable system prompts, tools, or long context rather than an unconditional requirement. (platform.claude.com)

Also applies to: 37-40

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/claude-api/SKILL.md` at line 10, Update the skill guidance around
prompt caching so it is conditional rather than required for every application.
Recommend caching only when stable prompts, tools, or sufficiently long context
are repeated, while allowing applications with short or non-reused inputs to
omit it.


## When to Activate

**Trigger on:**
- Code that imports `anthropic` or `@anthropic-ai/sdk`
- User asks about the Claude API, Anthropic SDK, or Managed Agents
- User adds or modifies Claude features: caching, thinking, tool use, batch, files, citations, memory
- User asks about a specific model (Opus, Sonnet, Haiku)
- Questions about prompt caching or cache hit rates in an Anthropic SDK project
- Migrating between Claude model versions

**Skip when:**
- Code imports `openai` or another provider SDK
- Filename contains `-openai.py`, `-generic.py`, or similar
- Provider-neutral code with no Anthropic-specific patterns

## Current Models (as of 2025)

| Model | ID | Best For |
|-------|-----|----------|
| Claude Opus 4.7 | `claude-opus-4-7` | Most capable, complex reasoning |
| Claude Sonnet 4.6 | `claude-sonnet-4-6` | Balanced capability and speed |
| Claude Haiku 4.5 | `claude-haiku-4-5-20251001` | Fast, cost-efficient |

Default to the latest and most capable model for new applications.
Comment on lines +27 to +35

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== file exists and relevant content =="
if [ -f skills/claude-api/SKILL.md ]; then
  nl -ba skills/claude-api/SKILL.md | sed -n '1,80p'
else
  echo "skills/claude-api/SKILL.md not found"
fi

echo
echo "== repo files under skills/claude-api =="
git ls-files skills/claude-api

Repository: affaan-m/ECC

Length of output: 229


🌐 Web query:

Anthropic platform model deprecations July 2026 claude-opus-4-8 claude-sonnet-5 claude-opus-4-7 claude-sonnet-4-6 claude-haiku-4-5-20251001

💡 Result:

As of today, July 23, 2026, the status of the requested models is as follows: Active Models: - claude-opus-4-8: Active; tentative retirement not sooner than May 28, 2027 [1][2]. - claude-sonnet-5: Active; tentative retirement not sooner than June 30, 2027 [1][2]. - claude-opus-4-7: Active; tentative retirement not sooner than April 16, 2027 [1][2]. - claude-sonnet-4-6: Active; tentative retirement not sooner than February 17, 2027 [1][2]. - claude-haiku-4-5-20251001: Active; tentative retirement not sooner than October 15, 2026 [1][2]. Summary of Recent Deprecations: None of the specific models you listed are currently deprecated or retired [1][2]. Recent model deprecations occurred on June 15, 2026, for older versions, specifically claude-sonnet-4-20250514 and claude-opus-4-20250514, which were replaced by models like claude-sonnet-4-6 and claude-opus-4-8 respectively [1][3][4]. Additionally, claude-opus-4-1-20250805 was deprecated on June 5, 2026, with a retirement date of August 5, 2026 [1][2]. For the most accurate and up-to-date information, please refer to the official Anthropic Platform documentation on model deprecations [1].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== file exists and relevant content =="
if [ -f skills/claude-api/SKILL.md ]; then
  awk '{printf "%4d\t%s\n", NR, $0}' skills/claude-api/SKILL.md | sed -n '1,100p'
else
  echo "skills/claude-api/SKILL.md not found"
fi

echo
echo "== repo files under skills/claude-api =="
git ls-files skills/claude-api || true

echo
echo "== precise model mentions in skill =="
python3 - <<'PY'
from pathlib import Path
p=Path("skills/claude-api/SKILL.md")
if p.exists():
    text=p.read_text()
    for m in ["claude-opus-4-8","claude-sonnet-5","claude-opus-4-7","claude-sonnet-4-6","claude-haiku-4-5-20251001","current models","latest"]:
        print(f"{m!r}: {m in text}")
    print("line 27-35:")
    lines=text.splitlines()
    for i in range(26, min(36, len(lines))):
        print(f"{i+1}: {lines[i]}")
PY

Repository: affaan-m/ECC

Length of output: 4332


Refresh the Claude model catalog and default recommendation.

The catalog is still dated 2025 and omits current active models such as claude-opus-4-8 and claude-sonnet-5; update the table and choose the current latest model in the “Default to the latest…” line so new app guidance points at Anthropic’s current top model.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/claude-api/SKILL.md` around lines 27 - 35, Update the “Current Models”
table in the Claude skill documentation to include the active Claude Opus 4.8
(`claude-opus-4-8`) and Claude Sonnet 5 (`claude-sonnet-5`) models, revise the
date as appropriate, and change the default recommendation to the current latest
top model, Claude Opus 4.8.


## Prompt Caching (Required)

Every app built with this skill must include prompt caching. Caching reduces cost and latency for repeated system prompts, tool definitions, and long documents.

### Python

```python
import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
system=[
{
"type": "text",
"text": "Your long system prompt here...",
"cache_control": {"type": "ephemeral"}
}
],
messages=[{"role": "user", "content": "Hello"}]
)
```

### TypeScript

```typescript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();

const response = await client.messages.create({
model: "claude-opus-4-7",
max_tokens: 1024,
system: [
{
type: "text",
text: "Your long system prompt here...",
cache_control: { type: "ephemeral" },
},
],
messages: [{ role: "user", content: "Hello" }],
});
```

### Cache Hit Detection

```python
# Check cache performance
print(response.usage.cache_creation_input_tokens) # tokens written to cache
print(response.usage.cache_read_input_tokens) # tokens read from cache
```

## Tool Use

```python
tools = [
{
"name": "get_weather",
"description": "Get current weather for a location",
"input_schema": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "City name"}
},
"required": ["location"]
}
}
]

response = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "What's the weather in Paris?"}]
)
```

## Extended Thinking

```python
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=16000,
thinking={
"type": "enabled",
"budget_tokens": 10000
},
Comment on lines +119 to +125

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Relevant file snippet:\n'
sed -n '105,130p;165,182p' skills/claude-api/SKILL.md || true

printf '\nSearch for thinking/adaptive/opus in file:\n'
rg -n 'claude-opus-4-7|thinking|adaptive|budget_tokens|output_config|minimum|1000|1,024|1024' skills/claude-api/SKILL.md || true

printf '\nRepository files:\n'
git ls-files | rg '(^skills/|\.md$)' | head -80

Repository: affaan-m/ECC

Length of output: 5896


🌐 Web query:

Claude API adaptive thinking models claude-opus-4-7 thinking budget_tokens deprecated

💡 Result:

Adaptive thinking is the recommended approach for managing reasoning in modern Claude models [1][2]. The manual extended thinking parameter thinking: {type: "enabled", budget_tokens: N} has been deprecated on models like Claude Opus 4.6 and Claude Sonnet 4.6 and is fully unsupported on newer models, including Claude Opus 4.7, Claude Opus 4.8, Claude Sonnet 5, Claude Fable 5, and Claude Mythos 5 [3][4][5]. On models where manual extended thinking is deprecated (e.g., Opus 4.6), using budget_tokens will continue to function for now, but it is recommended to migrate to adaptive thinking to avoid future compatibility issues [4][5]. On newer models that do not support it, providing budget_tokens or the enabled type will result in a 400 error [3][6][5]. Key points for migration and usage: 1. Shift to Adaptive Thinking: Use thinking: {type: "adaptive"} in your API requests [1][3][5]. 2. Replace Budget with Effort: The budget_tokens parameter does not have a direct replacement because adaptive thinking allows the model to dynamically determine reasoning depth [7][6]. Instead, use the output_config: {effort: ...} parameter to steer the model's reasoning behavior [3][5]. Available effort levels include max, xhigh, high (default), medium, and low [8][9]. 3. Model-Specific Behavior: - Claude Opus 4.7 and 4.8: Adaptive thinking is the only supported mode. Thinking must be enabled explicitly by setting thinking: {type: "adaptive"} [1][4][5]. - Claude Sonnet 5: Adaptive thinking is enabled by default [1][10]. - Claude Fable 5 and Mythos 5: Adaptive thinking is always on and cannot be disabled [1][10]. 4. Older Models: Models released prior to these changes (e.g., Claude Opus 4.5, Sonnet 4.5, Haiku 4.5) do not support adaptive thinking and continue to require type: "enabled" with budget_tokens [3][5][2].

Citations:


🌐 Web query:

Claude API beta output_config effort xhigh high max adaptive thinking documentation

💡 Result:

In the Claude API, the output_config.effort parameter is used to control the depth and frequency of the model's reasoning when adaptive thinking is enabled [1][2]. It is a soft guidance parameter rather than a hard token limit [2][3]. The available effort levels are: max: Provides the absolute maximum capability with no constraints on thinking depth, intended for tasks requiring the deepest possible reasoning and thorough analysis [1][2]. xhigh: Offers extended capability for long-horizon work, such as complex agentic or coding tasks (typically over 30 minutes) [1][2]. This is recommended as the starting point for most coding and high-autonomy workloads [4][5]. high: The default level [5][6]. It provides a balance between intelligence and token usage, and is recommended as the minimum level for most intelligence-sensitive tasks [1][4]. medium: A lower effort level designed for cost-sensitive workloads, where the model may skip thinking for simpler queries [2][4]. low: Minimizes thinking, reserving it for latency-sensitive or short, scoped tasks [2][4]. Important implementation details: Configuration: Effort is set via the top-level output_config object in the API request body, not within the thinking object [2][7]. Example structure: { "model": "claude-opus-4-8", "max_tokens": 4096, "thinking": { "type": "adaptive" }, "output_config": { "effort": "high" }, "messages": [...] } Adaptive Thinking vs. Effort: You should not pass "adaptive" as an effort value, as it is a thinking mode, not an effort level [1]. Adaptive thinking must be explicitly enabled using {"thinking": {"type": "adaptive"}} [4][7]. Resource Management: Because thinking tokens count against your total max_tokens budget, you should ensure max_tokens is set high enough to accommodate both the reasoning process and the final response [2][3]. If you encounter stop_reason: "max_tokens", you can either increase your max_tokens limit or lower the effort level [2][3]. Optimization: Setting effort to the model's default (high) is functionally equivalent to omitting the parameter and does not invalidate prompt caching [3]. Conversely, changing the effort level between requests will invalidate cache breakpoints [3].

Citations:


Use adaptive thinking for the Opus 4.7 example.

claude-opus-4-7 uses adaptive thinking instead of manual extended-thinking; replace thinking: {"type": "enabled", "budget_tokens": 10000} with adaptive-thinking form and update the troubleshooting line from “minimum ~1000” to the documented 1,024-token minimum for legacy manual mode.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/claude-api/SKILL.md` around lines 119 - 125, Update the
claude-opus-4-7 example’s messages.create thinking configuration to use adaptive
thinking rather than the manual enabled/budget_tokens form. Also revise the
related troubleshooting guidance to state the documented 1,024-token minimum for
legacy manual thinking mode.

messages=[{"role": "user", "content": "Solve this complex problem..."}]
)
```

## Streaming

```python
with client.messages.stream(
model="claude-opus-4-7",
max_tokens=1024,
messages=[{"role": "user", "content": "Tell me a story"}]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
```

## Batch Processing

```python
# Create a batch
batch = client.messages.batches.create(
requests=[
{"custom_id": "req-1", "params": {"model": "claude-opus-4-7", "max_tokens": 100, "messages": [...]}},
{"custom_id": "req-2", "params": {"model": "claude-opus-4-7", "max_tokens": 100, "messages": [...]}},
]
)

# Poll for results
import time
while True:
batch = client.messages.batches.retrieve(batch.id)
if batch.processing_status == "ended":
break
time.sleep(60)
```

## Model Migration

When migrating between model versions:

1. Update the `model` string to the new ID
2. Check for deprecated parameters (some older params removed in newer models)
3. Test with the new model — behavior may differ even with the same prompt
4. Update any hardcoded model-specific limits (context window, max output tokens)

## Common Issues

| Issue | Cause | Fix |
|-------|-------|-----|
| Low cache hit rate | System prompt changes between calls | Make system prompt static; move dynamic content to user turn |
| `anthropic.APIStatusError: 529` | Overloaded | Implement exponential backoff |
| Tool call not executed | Model returned `tool_use` block | Handle `stop_reason: "tool_use"` and call the tool |
| Thinking not appearing | Budget too low | Increase `budget_tokens`; minimum ~1000 |

## Related Skills

- `agent-architecture-audit` — Audit multi-layer agent applications built on the Claude API
- `agent-harness-construction` — Build full agent harnesses using the Claude API
121 changes: 121 additions & 0 deletions skills/code-review/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
---
name: code-review
description: Review the current diff for correctness bugs and reuse/simplification/efficiency cleanups at a given effort level. Pass --comment to post findings as inline PR comments, or --fix to apply findings to the working tree. Supports low/medium/high/max/ultra effort levels.
origin: claude-code-harness
tools: Read, Bash, Glob, Grep
Comment on lines +3 to +5

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Make --fix executable with the declared tools.

The skill advertises applying edits, but its tool list has no Write or Edit capability. Add those tools or remove the --fix behavior; otherwise the documented workflow cannot perform its primary action.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/code-review/SKILL.md` around lines 3 - 5, Update the tools declaration
in the skill metadata to include the write-capable tool required by the --fix
workflow, such as Write or Edit, while preserving the existing review and
comment functionality.

---

# Code Review

Review the current branch diff for correctness bugs, reuse opportunities, simplification wins, and efficiency improvements. Produces ranked findings with optional inline PR comments or automatic fixes.

## When to Use
Comment on lines +8 to +12

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add the required skill-documentation sections.

Each skill has activation guidance and workflow content, but none presents the required explicit How It Works and Examples sections. Add those sections so the documentation follows the repository format.

  • skills/code-review/SKILL.md#L8-L12: add How It Works and Examples.
  • skills/review/SKILL.md#L8-L12: add How It Works and Examples.
  • skills/security-review/SKILL.md#L8-L12: add How It Works and Examples.
  • skills/simplify/SKILL.md#L8-L12: add How It Works and Examples.
  • skills/run/SKILL.md#L8-L12: add How It Works and Examples.
  • skills/verify/SKILL.md#L8-L12: add How It Works and Examples.
📍 Affects 6 files
  • skills/code-review/SKILL.md#L8-L12 (this comment)
  • skills/review/SKILL.md#L8-L12
  • skills/security-review/SKILL.md#L8-L12
  • skills/simplify/SKILL.md#L8-L12
  • skills/run/SKILL.md#L8-L12
  • skills/verify/SKILL.md#L8-L12
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/code-review/SKILL.md` around lines 8 - 12, Each affected skill
document lacks the required documentation sections. Add explicit “How It Works”
and “Examples” sections to skills/code-review/SKILL.md, skills/review/SKILL.md,
skills/security-review/SKILL.md, skills/simplify/SKILL.md, skills/run/SKILL.md,
and skills/verify/SKILL.md, with content appropriate to each skill and
consistent with the repository format.

Source: Coding guidelines


- User asks for a code review of the current branch or a specific PR
- User wants findings posted as inline PR comments (`--comment`)
- User wants findings automatically applied to the working tree (`--fix`)
- User specifies an effort level: low, medium, high, max, or ultra

**Invoke via:** `/code-review [effort] [--comment] [--fix] [PR#]`

**Ultra mode** (`/code-review ultra` or `/code-review ultra <PR#>`): launches a multi-agent cloud review. Billed and user-triggered only — do not invoke via Bash.

## Effort Levels

| Level | Coverage | Best For |
|-------|----------|----------|
| `low` | High-confidence, obvious bugs only | Quick sanity check before merge |
| `medium` | Moderate coverage, clear wins | Standard PR review |
| `high` | Broader coverage, may include uncertain findings | Important features or risky changes |
| `max` | Maximum breadth, includes speculative findings | Critical systems, security-sensitive changes |
| `ultra` | Deep multi-agent cloud review | Large PRs, pre-release audits |

Default effort: `medium`.

## Review Workflow

### 1. Identify the Diff

```bash
# Current branch vs main
git diff main...HEAD

# Specific PR (with gh CLI)
gh pr diff <PR#>

# Staged changes only
git diff --cached
```
Comment on lines +37 to +48

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Capture the complete pending change set.

These workflows use incomplete or inconsistent baselines: main...HEAD excludes working-tree edits, while HEAD~1 covers only the latest commit. That can cause review, security scans, simplification, or verification to miss changes.

  • skills/code-review/SKILL.md#L37-L48: include unstaged and staged diffs alongside the branch diff.
  • skills/security-review/SKILL.md#L16-L22: scan committed branch changes plus staged and unstaged changes.
  • skills/simplify/SKILL.md#L25-L31: include the working tree before applying edits.
  • skills/verify/SKILL.md#L27-L32: compare against the actual branch base, then include local staged and unstaged changes.
📍 Affects 4 files
  • skills/code-review/SKILL.md#L37-L48 (this comment)
  • skills/security-review/SKILL.md#L16-L22
  • skills/simplify/SKILL.md#L25-L31
  • skills/verify/SKILL.md#L27-L32
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/code-review/SKILL.md` around lines 37 - 48, Update the workflows to
capture the complete pending change set: in skills/code-review/SKILL.md (lines
37-48), skills/security-review/SKILL.md (lines 16-22), skills/simplify/SKILL.md
(lines 25-31), and skills/verify/SKILL.md (lines 27-32), include both staged and
unstaged working-tree diffs alongside the appropriate branch-base or
committed-branch diff. Ensure verify uses the actual branch base, while security
review includes committed branch changes plus local staged and unstaged changes.


### 2. Collect Context

Before reviewing, read:
- Files changed in the diff
- Adjacent files that depend on changed code
- Existing tests for changed functionality
- Any CLAUDE.md conventions that apply

### 3. Apply Effort-Appropriate Analysis

**Correctness bugs (all levels):**
- Logic errors, off-by-one errors, null/undefined dereferences
- Incorrect API usage, wrong argument order
- Race conditions, improper async/await
- Missing error handling at system boundaries

**Simplification/reuse (medium+):**
- Duplicated logic that could use an existing utility
- Overly complex implementations with simpler alternatives
- Dead code or unused imports

**Efficiency (high+):**
- N+1 queries, unnecessary re-renders, wasteful allocations
- Missing memoization or caching opportunities

**Speculative (max only):**
- Hypothetical future issues
- Style suggestions beyond project conventions

### 4. Rank Findings

Order findings by:
1. **Severity** — bugs that would break production first
2. **Confidence** — high-confidence findings before speculative ones
3. **Impact** — changes that affect many callsites before isolated issues

### 5. Output Findings

For each finding:
- **File and line reference** — `path/to/file.ts:42`
- **Issue description** — what is wrong and why
- **Suggested fix** — concrete code change, not vague advice

## Flags

### `--comment` — Post as Inline PR Comments

Posts each finding as an inline comment on the GitHub PR at the relevant line. Requires `gh` CLI authenticated. Does not modify the working tree.

```bash
gh pr review <PR#> --comment --body "..."
# or per-line:
gh api repos/:owner/:repo/pulls/:pr/comments ...
```

### `--fix` — Apply Findings

After generating findings, applies fixes directly to the working tree. Equivalent to running `/simplify` after the review. Use only when findings are high-confidence.

## What NOT to Review

- Formatting — let the linter handle it
- Naming preferences with no correctness impact
- Architectural changes outside the PR scope
- Hypothetical future requirements (at low/medium effort)

## Related Skills

- `simplify` — Apply fixes from the current diff review
- `verify` — Confirm a change works by running the app
- `security-review` — Security-focused review of pending changes
- `agent-architecture-audit` — Deep audit for agent/LLM applications
Loading