A Claude skill that audits a codebase end-to-end and produces a focused, file-grounded improvement plan across seven dimensions.
elevate is an Anthropic Claude skill that turns "how do I make this app better?" into a concrete, prioritized plan you can ship from. It walks your codebase across seven quality lenses — Performance, Functionality, Stability, Reliability, Security, Usability, and Attractiveness/Sexiness — and produces exactly five grounded recommendations per dimension. Every item names a specific file or flow, declares an effort/impact estimate, and the whole report ends with one recommended first move.
It works on web, macOS, and iOS codebases (auto-detected from your manifests).
Most "audit my codebase" prompts return one of three flavors of unhelpful: a wall of generic advice, a security-only review (because that's the easy quadrant to spot), or a list so long no one knows where to start. elevate exists because the most useful version of this output is a strictly bounded one — top 5 per dimension, every item grounded in a real file path, one explicit "ship this first" recommendation.
The seven-dimension contract is the value. It forces coverage of axes (like Attractiveness, Reliability vs Stability) that get skipped by default, while the 5-item cap forces honest prioritization.
Ask Claude something like:
Run elevate on this codebase. It's a SwiftUI iOS app. I want it to feel like Things 3.
You'll get a report shaped like this (abbreviated):
# Elevate Plan: Inkling
> Platform: iOS (inferred — Package.swift platforms = [.iOS(.v17)], SwiftUI views, no AppKit)
> Surveyed: 2026-05-06
> Coverage: full — entry points, all feature modules, models, sync layer
> Attractiveness anchor: Things 3 (user-supplied)
## Performance
### 1. Decode entry images off the main actor
- **Location:** Inkling/Features/Feed/EntryRow.swift:38
- **Do:** EntryRow calls UIImage(data:) synchronously inside body. Move decoding
into a Task.detached and cache the resulting Image in an actor ImageCache
keyed by entry ID.
- **Why:** Scrolling jank on the feed today is caused by main-thread image
decoding. Profiles show 60-120 ms hitches per row on iPhone 12.
- **Effort:** M · **Impact:** L
### 2. Replace List with LazyVStack in a ScrollView for the timeline
...
## Functionality, Stability, Reliability, Security, Usability, Attractiveness/Sexiness
(5 items each)
---
## First move
**Decode entry images off the main actor** (Performance)
Of the 35 items, this is the single change that materially shifts the
product's perceived quality the moment it ships. The current jank shows
up on the very first screen most users open...Full examples in examples/:
sample-report.md— iOS journaling app (Performance, Functionality)sample-report-macos.md— macOS menu-bar app (Usability, Attractiveness)sample-report-web.md— Next.js SaaS (Reliability, Security)
The three examples deliberately spotlight different dimensions across platforms — read all three for the full vocabulary.
elevate is a Claude skill. Skills are loaded by Claude when their description matches user intent. Anthropic's full skills overview: https://docs.claude.com/en/docs/agents-and-tools/agent-skills.
# 1. Clone into your Claude Code skills directory
git clone https://github.com/welshofer/elevate.git ~/.claude/skills/elevate
# 2. Verify it's discoverable
ls ~/.claude/skills/elevate/SKILL.mdClaude Code will auto-discover the skill on next session start. Invoke by asking naturally ("elevate the codebase", "do a thorough review", "build me an improvement plan") or by typing /elevate if your client supports slash invocation.
Upload the elevate folder via your skills/agent configuration. Only SKILL.md, references/, and examples/ are required — the OSS metadata files (README.md, LICENSE, CONTRIBUTING.md, CHANGELOG.md) are inert at runtime and can be omitted from the upload to save context.
Pass the skill folder via the skills array in your agent configuration. See Anthropic's skills documentation for the exact wiring.
Exactly one report per invocation. Structure:
| Section | What it contains |
|---|---|
| Header | Platform, survey date, coverage scope, Attractiveness anchor |
| 7 dimension sections | Exactly 5 items each — title, file location, what to do, why it matters, effort (S/M/L), impact (S/M/L) |
| First move | One specific item picked from the 35, with a one-paragraph justification |
| Deferred (optional) | Items considered but cut from the top 35, with reasoning |
| Dimension | One-line definition |
|---|---|
| Performance | Speed, smoothness, resource cost — does it feel fast under realistic load? |
| Functionality | Feature completeness — does it do what users came to do? |
| Stability | Doesn't crash or break under normal conditions. |
| Reliability | Behaves correctly under adverse conditions (offline, retries, conflicts, recovery). |
| Security | Attack surface, secrets handling, auth/authz, dependency posture. |
| Usability | Easy and pleasant to operate — accessibility, navigation, native conventions. |
| Attractiveness / Sexiness | Visual polish, motion, materials, micro-interactions, onboarding delight. |
The Stability/Reliability split is deliberate — see references/dimensions.md for the tie-breaker rule when an issue could fit both.
The Attractiveness dimension uses an anchor pattern: if you name a peer product the codebase should feel like ("Linear", "Things 3", "Raycast", "Arc", "Bear"), elevate frames each item as "close the gap to the anchor in this specific way." Without an anchor, the dimension drifts into "make it nicer" — which is the failure mode the anchor avoids.
You can supply the anchor explicitly:
Elevate this codebase. Anchor it against Linear.
Or let elevate infer one from your product's category and observed direction; it will name the inferred anchor in the report header so you can correct it.
- Will not edit code. This skill produces a plan, not commits. Implementation is a follow-up step.
- Will not iterate. One survey pass, one analysis pass, one synthesis pass. No self-critique loops.
- Will not pad. If a dimension has fewer than 5 genuinely grounded findings, gap-fillers are explicitly tagged
speculativerather than disguised as concrete items. - Will not double-count. Issues that touch multiple dimensions are assigned to one primary lens.
- Will not invent files. Every recommendation must cite at least one specific file path,
file:line, or named flow.
These are non-negotiable; they're what makes the report scannable and trustworthy.
The seven dimensions are fixed by design. Adding, removing, merging, or renaming them is not supported — the report's contract depends on them.
What you can usefully customize:
- The Attractiveness anchor — supply your own peer product reference.
- Output destination — by default the report is printed inline; ask for it to be saved to a file and
elevatewill write toelevate-plan-{YYYYMMDD}.mdin the project root. - Coverage — for very large codebases,
elevatewill survey entry points + recently-modified files + manifests, and explicitly flag unscanned areas in aCoverage:line. You can direct it to focus on specific subsystems.
For per-dimension lens detail (what elevate looks for in each lens), see references/dimensions.md. For report-shape, tagging conventions, and what good output looks like, see references/output-format.md.
| Platform | Status |
|---|---|
| Claude Code | ✅ Tested |
| Claude Desktop | ✅ Frontmatter is portable (only name + description) |
| claude.ai (web) | ✅ Frontmatter is portable |
| Claude API / Agent SDK | ✅ Standard skill loader |
elevate/
├── LICENSE MIT
├── README.md you are here
├── CONTRIBUTING.md how to contribute
├── CHANGELOG.md release history
├── SKILL.md the skill itself (frontmatter + workflow)
├── references/
│ ├── dimensions.md per-dimension lenses + platform cues
│ └── output-format.md report shape, tagging conventions
└── examples/
├── sample-report.md iOS example (abbreviated)
├── sample-report-macos.md macOS example (abbreviated)
└── sample-report-web.md web example (abbreviated)
Contributions welcome — see CONTRIBUTING.md. The skill is intentionally bounded, so most contributions will land in references/ (new platform cues, dimension lenses) or examples/ (additional sample reports) rather than reshaping the core contract.
MIT © 2026 welshofer
Built for use with Anthropic Claude. The skill format follows Anthropic's skill-building guidance and design principles from Building Effective Agents.