chore: add Claude personas, skills, memory, and project docs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
74
.claude/skills/review-pr/SKILL.md
Normal file
74
.claude/skills/review-pr/SKILL.md
Normal file
@@ -0,0 +1,74 @@
|
||||
---
|
||||
name: review-pr
|
||||
description: Multi-persona PR review. Each persona from .claude/personas/ reviews the PR and posts their findings as a separate Gitea comment.
|
||||
---
|
||||
|
||||
# Multi-Persona PR Review
|
||||
|
||||
You will perform a thorough multi-persona code review of the given PR URL and post each persona's findings as a **separate comment** on the PR.
|
||||
|
||||
## Argument
|
||||
|
||||
The user provides a Gitea PR URL, e.g.:
|
||||
`http://heim-nas:3005/marcel/familienarchiv/pulls/160`
|
||||
|
||||
Parse it to extract:
|
||||
- `owner` — e.g. `marcel`
|
||||
- `repo` — e.g. `familienarchiv`
|
||||
- `pull_number` — e.g. `160`
|
||||
|
||||
## Step 1 — Gather PR Context
|
||||
|
||||
Use the Gitea MCP tools to collect:
|
||||
1. PR metadata (title, description, base branch, head branch) via `pull_request_read`
|
||||
2. The list of changed files via `get_dir_contents` or the PR files endpoint
|
||||
3. The full diff / file contents of every changed file — read each file at the head commit using `get_file_contents`
|
||||
|
||||
Read ALL changed files completely before starting any review. Do not skip files.
|
||||
|
||||
## Step 2 — Read Every Persona
|
||||
|
||||
Read all six persona files from `.claude/personas/`:
|
||||
- `developer.md` → Felix Brandt
|
||||
- `architect.md` → architect persona
|
||||
- `tester.md` → tester persona
|
||||
- `security_expert.md` → security persona
|
||||
- `ui_expert.md` → UI/UX persona
|
||||
- `devops.md` → DevOps persona
|
||||
|
||||
## Step 3 — Write Each Review
|
||||
|
||||
For each persona, fully adopt their identity, priorities, and review lens as described in their persona file. Write a review that:
|
||||
|
||||
- Opens with a one-line verdict: **✅ Approved**, **⚠️ Approved with concerns**, or **🚫 Changes requested**
|
||||
- Lists concrete findings with file paths and line references where relevant
|
||||
- Distinguishes blockers (must fix) from suggestions (nice to have)
|
||||
- Uses the persona's voice and priorities (e.g. Felix cares about TDD and clean code; the security expert checks for injection, auth, and data exposure; the architect checks layer boundaries and coupling)
|
||||
- Stays focused — only comment on what the persona would actually care about
|
||||
|
||||
Format each comment in Markdown with a persona header, e.g.:
|
||||
|
||||
```
|
||||
## 👨💻 Felix Brandt — Senior Fullstack Developer
|
||||
|
||||
**Verdict: ⚠️ Approved with concerns**
|
||||
|
||||
### Blockers
|
||||
...
|
||||
|
||||
### Suggestions
|
||||
...
|
||||
```
|
||||
|
||||
## Step 4 — Post Comments
|
||||
|
||||
Post each persona's review as a **separate comment** on the PR using the Gitea MCP `issue_write` tool (issues and PRs share the comment API in Gitea).
|
||||
|
||||
Post all six comments. Do not skip any persona even if their domain has nothing to flag — in that case write a brief "LGTM" with a short explanation of what they checked.
|
||||
|
||||
## Step 5 — Report Back
|
||||
|
||||
After all comments are posted, summarize to the user:
|
||||
- Which personas posted comments
|
||||
- The overall verdict across all personas (worst-case wins: if any said "Changes requested", the overall is "Changes requested")
|
||||
- A bullet list of the top blockers found (if any)
|
||||
Reference in New Issue
Block a user