Dignified Python Standards
docling-project/docling
Applies opinionated production Python conventions chosen by the project's Python version: modern type syntax, pathlib, explicit checks and interface guidance.
Perform a comprehensive DRY (Don't Repeat Yourself) code review on a codebase.
$ npx skills add espennilsen/pi --skill dry-code-review -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install espennilsen/pi dry-code-review --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/espennilsen/pi.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/dry-code-review/dry-code-review .claude/skills/dry-code-review && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "dry-code-review" agent skill from https://github.com/espennilsen/pi/tree/main/skills/dry-code-review/dry-code-review into .claude/skills/dry-code-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dry-code-review", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/espennilsen/pi/tree/main/skills/dry-code-review/dry-code-reviewType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add espennilsen/pi --skill dry-code-review -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install espennilsen/pi dry-code-review --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/espennilsen/pi.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/dry-code-review/dry-code-review .agents/skills/dry-code-review && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dry-code-review" agent skill from https://github.com/espennilsen/pi/tree/main/skills/dry-code-review/dry-code-review into .agents/skills/dry-code-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dry-code-review", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add espennilsen/pi --skill dry-code-review -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install espennilsen/pi dry-code-review --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/espennilsen/pi.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/dry-code-review/dry-code-review .cursor/skills/dry-code-review && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "dry-code-review" agent skill from https://github.com/espennilsen/pi/tree/main/skills/dry-code-review/dry-code-review into .cursor/skills/dry-code-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dry-code-review", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/espennilsen/pi.git --path skills/dry-code-review/dry-code-review--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add espennilsen/pi --skill dry-code-review -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install espennilsen/pi dry-code-review --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/espennilsen/pi.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/dry-code-review/dry-code-review .gemini/skills/dry-code-review && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "dry-code-review" agent skill from https://github.com/espennilsen/pi/tree/main/skills/dry-code-review/dry-code-review into .gemini/skills/dry-code-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dry-code-review", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install espennilsen/pi dry-code-reviewInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add espennilsen/pi --skill dry-code-review -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/espennilsen/pi.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/dry-code-review/dry-code-review .github/skills/dry-code-review && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "dry-code-review" agent skill from https://github.com/espennilsen/pi/tree/main/skills/dry-code-review/dry-code-review into .github/skills/dry-code-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dry-code-review", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add espennilsen/pi --skill dry-code-review -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install espennilsen/pi dry-code-review --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/espennilsen/pi.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/dry-code-review/dry-code-review .opencode/skills/dry-code-review && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "dry-code-review" agent skill from https://github.com/espennilsen/pi/tree/main/skills/dry-code-review/dry-code-review into .opencode/skills/dry-code-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dry-code-review", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
dry-code-reviewPerform a comprehensive DRY (Don't Repeat Yourself) code review on a codebase.
Dry Code Review is an agent skill from espennilsen/pi. Perform a comprehensive DRY (Don't Repeat Yourself) code review on a codebase. Identifies duplicated code, repeated logic, redundant patterns, and opportunities for abstraction. Use this skill whenever the user asks to review code for duplication, reduce repetition, apply DRY principles, refactor for reusability, find copy-pasted code, deduplicate logic, or audit code quality with a focus on redundancy. Also trigger when users say things like "clean up my code", "find repeated patterns", "too much boilerplate"…
Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/find_duplicates.sh`).
It sits in Development, covering Code review, Project scaffolding and Code quality. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 79d019b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
bashFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Dry Code Review loads about 1.7k tokens when it runs. Until then it costs about 158 tokens; SKILL.md has 554 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from espennilsen/pi at commit 79d019b, republished under its MIT licence (© espennilsen). 554 words, ~1,728 tokens.
.claude/skills/dry-code-review/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Perform a structured, thorough code review focused on the DRY (Don't Repeat Yourself) principle. The review is planned and tracked via a markdown file in plans/.
The DRY principle states: "Every piece of knowledge must have a single, unambiguous, authoritative representation within a system." This skill systematically finds violations and recommends fixes.
plans/dry-review-<project-name>.md using the template belownode_modules, vendor, generated files, test fixtures)Run the scanning script to find likely duplication:
bash /path/to/dry-code-review/scripts/find_duplicates.sh <target_directory> [extensions]The script detects:
Import/dependency lines are intentionally excluded from the duplicate-lines scan so they don't dominate the output.
After automated scanning, perform deeper analysis by reading the codebase. Look for these DRY violation categories:
For each finding, document:
Update the plan file with:
The plan file MUST be created at plans/dry-review-<project-name>.md using this structure:
# DRY Code Review: <Project Name>
## Review Metadata
- **Date**: YYYY-MM-DD
- **Reviewer**: Claude (AI-assisted)
- **Scope**: <directories/files reviewed>
- **Languages**: <languages found>
- **Total Files Scanned**: <count>
- **Total Lines of Code**: <count>
## Status
- [ ] Phase 1: Setup & Discovery
- [ ] Phase 2: Automated Scanning
- [ ] Phase 3: Manual Analysis
- [ ] Phase 4: Findings & Recommendations
- [ ] Phase 5: Summary & Prioritization
## Scope Definition
### Included
- <list of included paths>
### Excluded
- <list of excluded paths and reasons>
## Findings
### Summary
| Category | 🔴 High | 🟡 Medium | 🟢 Low | Total |
|------------------------|---------|----------|--------|-------|
| Literal Duplication | | | | |
| Structural Duplication | | | | |
| Logical Duplication | | | | |
| Cross-Cutting | | | | |
| **Total** | | | | |
### Detailed Findings
#### DRY-001: <Title>
- **Category**: <category>
- **Severity**: 🔴/🟡/🟢
- **Locations**:
- `path/to/file1.ts:L10-L25`
- `path/to/file2.ts:L30-L45`
- **Description**: <what is duplicated>
- **Recommendation**: <how to fix>
- **Effort**: S/M/L
<!-- Repeat for each finding -->
## Prioritized Action Plan
### Quick Wins (Small effort, immediate value)
1. <action item>
### High-Impact Refactors (Medium/Large effort)
1. <action item>
### Nice-to-Have (Low priority)
1. <action item>
## Risk Notes
- <things to watch out for when refactoring>
## Review Log
- YYYY-MM-DD: Review initiated
- YYYY-MM-DD: <phase completed>© espennilsen, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (scripts) in skills/dry-code-review/dry-code-review of espennilsen/pi.
Open the folder on GitHubat commit 79d019b
Dry Code Review next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Dry Code Review this skillespennilsen/pi | 122 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Dignified Python Standardsdocling-project/docling | 69k | — | ~1.5k | Automated safety check: Pass | Apache-2.0 | |
| Clean Code GuardamElnagdy/guard-skills | 1.3k | 2 repos | ~4.3k | Automated safety check: Pass | MIT | |
| Maintainable Code for iPolloWorkDevin-AXIS/iPolloWork | 6.8k | — | ~2.7k | Automated safety check: Pass | Custom licence | |
| Cyclomatic Complexitysaurabhkumar8112/cyclomatic-complexity-skill | 405 | — | ~761 | Automated safety check: Pass | Apache-2.0 | |
| Code ReviewerYikai-Liao/symusic | 189 | 1 repos | ~1.3k | Automated safety check: Pass | MIT |
docling-project/docling
Applies opinionated production Python conventions chosen by the project's Python version: modern type syntax, pathlib, explicit checks and interface guidance.
amElnagdy/guard-skills
Reviews generated or changed production code against Clean Code, SOLID, DRY, KISS, YAGNI and LLM-specific failure modes before it ships, in any language.
Devin-AXIS/iPolloWork
A code-change gate for the iPolloWork repository: search and reuse first, keep one source of truth, justify every new file or dependency, and audit the change.
saurabhkumar8112/cyclomatic-complexity-skill
Refactor code to reduce cyclomatic complexity so it stays readable, maintainable, and aligned with the long-term vision of the codebase, not just optimized for AI comprehension.
Yikai-Liao/symusic
Analyzes code diffs and files to identify bugs, security vulnerabilities (SQL injection, XSS, insecure deserialization), code smells, N+1 queries, naming issues, and architectural concerns, then…
x-tools-author/x-tools
Applies QML best practices when writing, reviewing, refactoring or debugging QML code, with Qt 5 and Qt 6 import rules and concise, rule-silent output.
espennilsen/pi
Interact with GitHub repos, PRs, issues, CI, and notifications via the pi-github extension commands and gh CLI.
espennilsen/pi
Create, review, and improve skills for Pi agents. An agent skill from espennilsen/pi.
espennilsen/pi
Reverse-engineer a design system from a live website (public URL or localhost).
espennilsen/pi
Read and extract content from PDF files — text, tables, metadata, and images.
espennilsen/pi
Manage Google Workspace via the gws CLI — Drive, Gmail, Sheets, Docs, Slides, People, Chat, Meet, Forms, and cross-service workflows.
espennilsen/pi
A skill your agent uses when inspecting or operating Herdr sessions, workspaces, tabs, panes, agents, terminal output, agent messaging, or waits.
Categories
Perform a comprehensive DRY (Don't Repeat Yourself) code review on a codebase. Dry Code Review is an agent skill from espennilsen/pi. Perform a comprehensive DRY (Don't Repeat Yourself) code review on a codebase.
Dry Code Review fits situations like: the user asks to review code for duplication; reduce repetition; apply DRY principles; refactor for reusability.
Run `npx skills add espennilsen/pi --skill dry-code-review -a claude-code`. Or copy the skill folder (skills/dry-code-review/dry-code-review in espennilsen/pi) into .claude/skills/dry-code-review in your project. Claude Code loads it when a task matches its description.
Run `npx skills add espennilsen/pi --skill dry-code-review -a codex`. Or copy the skill folder (skills/dry-code-review/dry-code-review in espennilsen/pi) into .agents/skills/dry-code-review in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add espennilsen/pi --skill dry-code-review -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dry-code-review, .gemini/skills/dry-code-review, .github/skills/dry-code-review and .opencode/skills/dry-code-review in your project.
Going by SKILL.md and its folder, Dry Code Review needs a shell for the scripts in its folder and the command-line tools its instructions call (bash). Our summary lists: A Bash shell.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Dry Code Review is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.7k tokens (SKILL.md is roughly 6.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Dry Code Review: Dignified Python Standards (docling-project/docling, 69k stars), Clean Code Guard (amElnagdy/guard-skills, 1.3k stars), Maintainable Code for iPolloWork (Devin-AXIS/iPolloWork, 6.8k stars) and Cyclomatic Complexity (saurabhkumar8112/cyclomatic-complexity-skill, 405 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
espennilsen (a GitHub user) maintains it in espennilsen/pi, which has 122 GitHub stars. The repository holds 36 skills in this directory. The repository was last updated on September 21, 2026.
Source: espennilsen/pi on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.