| name | apple-review |
| description | apple-craft review-only skill โ inspects Swift/SwiftUI/UIKit/AppKit code, files, directories, or PRs for problems, risks, and improvements. Triggers on "๋ฆฌ๋ทฐ", "์ฝ๋ ๋ฆฌ๋ทฐ", "๊ฒํ ", "์ ๊ฒ", "PR ๋ฆฌ๋ทฐ", "์ฝ๋ ๋ด์ค", "๋ฌธ์ ์๋์ง ํ์ธํด์ค", "blocking issue ์ฐพ์์ค", "์ฝ๋ ์ ๊ฒ", "ํ์ธํด", "์ฒดํฌ", "์ดํด", "review", "check", "inspect", "analyze", "audit". For actual implementation/modification/writing use apple-craft; for from-scratch/full implementation use apple-harness. |
| argument-hint | [file, directory, or PR number] |
user: "์ด ์ฝ๋ ๋ฆฌ๋ทฐํด์ค"
assistant: "review ๋ชจ๋๋ก Apple ์์ฝ์์คํ
์ฐธ์กฐ ๋ฌธ์ ๊ธฐ๋ฐ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ํํฉ๋๋ค. ๋ฆฌ๋ทฐ ๋ฒ์๋ฅผ ํ์ธํ๊ฒ ์ต๋๋ค."
user: "PR #42์์ blocking issue๋ง ๊ณจ๋ผ์ค"
assistant: "review ๋ชจ๋๋ก PR #42์ ๋ณ๊ฒฝ ํ์ผ์ ๋ถ์ํ๊ณ , blocking issue ์ค์ฌ์ผ๋ก ์ฐ์ ์์๋ฅผ ์ ๋ฆฌํ๊ฒ ์ต๋๋ค."
user: "SettingsView.swift ๋ฌธ์ ์๋์ง ํ๋ฒ ๋ด์ค"
assistant: "review ๋ชจ๋๋ก ํด๋น ํ์ผ์ ๋ถ์ํฉ๋๋ค. ์ฌ์ฉ ์ค์ธ Apple ํ๋ ์์ํฌ์ common-mistakes.md๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์ ์ ์ ์ ๊ฒํ๊ฒ ์ต๋๋ค."
user: "์ด SwiftUI ํ๋ฉด ์ฑ๋ฅ/๋์์ฑ ๊ด์ ์์ ์ ๊ฒํด์ค"
assistant: "review ๋ชจ๋๋ก ํด๋น ํ๋ฉด์ ๋ถ์ํ๊ณ , ์ฑ๋ฅ ๋ฐ Swift Concurrency ๊ด์ ์ ์ํ ์์๋ฅผ ์ ๋ฆฌํ๊ฒ ์ต๋๋ค."
apple-review
Perform a deep code review grounded in Apple ecosystem reference docs.
Unlike a generic code review, this finds and triages Apple-platform-specific issues using 20 Apple API reference docs + the Swift 6.3 supplement + common-mistakes.md.
This is a review-only skill that identifies and prioritizes problems, not one that performs implementation/fixes directly.
For actual implementation/fixes use apple-craft; for from-scratch/full implementation use apple-harness.
Respond to the user in Korean.
Knowledge Authority
Reference docs live in ${CLAUDE_PLUGIN_ROOT}/skills/apple-craft/references/.
They are the same reference docs shared with the apple-craft skill.
references/common-mistakes.md โ always load (antipattern checklist)
references/code-style.md โ always load (Apple coding conventions)
- The remaining 19 reference docs โ load selectively based on the target code's framework
Phase R0: Decide review scope
- Confirm the review target with AskUserQuestion:
- "ํ์ฌ ๋ธ๋์น์ ๋ณ๊ฒฝ์ฌํญ (git diff)"
- "ํน์ ํ์ผ/๋๋ ํ ๋ฆฌ"
- "PR #N"
- Optional: confirm the review focus (์ ์ฒด / Apple ์์ฝ์์คํ
/ ๋ณด์ / ์ฑ๋ฅ / ์คํ์ผ)
- Collect the target file list:
- git diff:
git diff --name-only <base>..HEAD -- '*.swift'
- PR:
gh pr diff <N> --name-only
- directory:
Glob: pattern="**/*.swift" path=<๊ฒฝ๋ก>
Phase R0.5: Codex Cross-Review (optional)
If the Codex skill is available, run /codex:review in the background in parallel with harness-reviewer for cross-model verification.
- Run
/codex:review --background โ concurrent with Phase R1
- Merge the Codex review results in Phase R1.5 (after R1 completes)
- Check progress with
/codex:status
Guardrail: /codex:review is read-only. harness-reviewer owns the authority over severity judgments and auto-fix decisions.
If the Codex skill is not installed, skip this phase and proceed with the existing workflow unchanged.
Phase R1: Scan + classify + fix
Dispatch the harness-reviewer agent:
Agent: harness-reviewer
- ๋ฆฌ๋ทฐ ๋์ ํ์ผ ๋ชฉ๋ก
- ๋ฆฌ๋ทฐ ์ด์
What the agent does:
- Static analysis based on common-mistakes.md + code-style.md + matched reference docs
- Classify by severity(critical/major/minor/suggestion) ร complexity(simple-fix/needs-investigation/complex)
- Auto-fix critical/major + simple-fix items + git commit
- Deep analysis of needs-investigation items
- Output
.claude/review/review-findings.json + .claude/review/review-report.md
Phase R1.5: Review the agent's verification summary + cross-check against Codex
The orchestrator reviews the harness-reviewer results with a skeptical lens. If in doubt, flag it rather than assuming the fix is sound.
R1.5-A: Merge Codex findings (when R0.5 ran)
If /codex:review ran in the background during Phase R0.5:
- Collect the Codex review results with
/codex:result
- Cross-check against the harness-reviewer findings, blocking-level only:
- critical/major items Codex found but harness-reviewer missed โ add
source: "codex-cross-review"
- items both found โ reinforce confidence (note separately)
- Codex-only minor/suggestion โ ignore (harness-reviewer takes priority on Apple ecosystem expertise)
- Reflect the merged result in review-findings.json
Principle: harness-reviewer is the source of truth for severity/complexity classification. Codex only fills in blind spots.
- Read
.claude/review/review-findings.json
- Verify fix completeness:
- Check the
revalidated field of action="fixed" items
- If any fix has
revalidated: false, surface a warning
- A fixed item missing the
revalidated field entirely โ warn that revalidation was not run
- Verify classification consistency:
- severity=critical but action=report-only โ possible agent misjudgment, re-confirm
- severity=suggestion but action=issue โ possible over-issuing, re-confirm
- Check for possible omissions:
- Loaded reference doc list vs actually detected categories: if a major reference doc yields 0 findings, warn
- Add the review summary to the top of review-report.md:
## ์์ด์ ํธ ๊ฒ์ฆ ์์ฝ
- ์ด ๋ฐ๊ฒฌ: {N}๊ฑด
- ์๋ ์์ : {N}๊ฑด (์ฌ๊ฒ์ฆ ํต๊ณผ: {N}๊ฑด, ๋ฏธํต๊ณผ: {N}๊ฑด)
- ์ฌ๊ฒ์ฆ์์ ์ถ๊ฐ ๋ฐ๊ฒฌ: {N}๊ฑด
- ๋ถ๋ฅ ์ผ๊ด์ฑ ๊ฒฝ๊ณ : {N}๊ฑด
If the review surfaces serious problems (many revalidated:false, many classification mismatches):
- Consider re-dispatching harness-reviewer for those items
- Or notify the user "์ฌ๊ฒ์ฆ ์คํจ ํญ๋ชฉ์ด ์์ต๋๋ค" and then proceed to Phase R2
Phase R2: Triage
Read review-findings.json and handle by action:
- action=fixed: already fixed โ report only (include commit hash)
- action=issue: confirm GitHub Issue creation with AskUserQuestion
- On approval, use
mcp__plugin_github_github__issue_write
- Title:
[apple-craft review] {description}
- Body: findings, reference doc source, suggested fix direction
- Labels:
apple-craft-review + severity label
- action=user-decision: request the user's judgment with AskUserQuestion
- Present minor + simple-fix items in a batch: "๋ค์ N๊ฑด์ ์๋ ์์ ํ ๊น์?"
- On approval, fix with Edit + git commit
- action=report-only: report only (suggestions)
Phase R3: Final report
Based on review-report.md, output a summary to the user:
- counts per severity + action status (์์ ๋จ/์ด์ ์์ฑ๋จ/๋ณด๊ณ ๋ง)
- list of auto-fixed commits
- list of created GitHub Issue links
- summary of remaining suggestions
Rules
- Respond in Korean, but keep code and API names in their original form
- When citing a reference doc, state the source filename + section name so the basis is traceable
- If project conventions exist (CLAUDE.md, .swiftlint.yml, etc.), respect those conventions
- Even when Xcode MCP is not connected, perform the code-analysis-based review fully
- When GitHub MCP is not connected, record complex items only in review-report.md (skip issue creation)