Agent skill

Clean Code

by FerroxLabs in FerroxLabs/wayland

Clean code principles covering naming conventions, function design, SOLID principles, DRY vs WET tradeoffs, code organization, complexity metrics, and code review through a clean code lens.

Apache-2.0Auto-check passedDevelopment

Install Clean Code

skills CLI
$ npx skills add FerroxLabs/wayland --skill clean-code -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install FerroxLabs/wayland clean-code --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/FerroxLabs/wayland.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/process/resources/skills-library/bodies/skills/software-engineering/clean-code .claude/skills/clean-code && rm -rf skills-src

Use ~/.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/

Facts

Skill name
clean-code
GitHub stars
608
Token cost
~4.1k tokens
SKILL.md length
1,099 words
Files
1
Skills in repo
1,194
Repo updated
First seen
Licence
Apache-2.0

At a glance

Clean code principles covering naming conventions, function design, SOLID principles, DRY vs WET tradeoffs, code organization, complexity metrics, and code review through a clean code lens.

  • Works in 5 steps: Names reveal intent. A reader should… → Names are pronounceable. If you cannot… → Names are searchable. Single-letter… → …
  • The user asks about clean code
  • SKILL.md covers Naming Conventions, Function Design, SOLID Principles and DRY vs WET Tradeoffs, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Clean Code is an agent skill from FerroxLabs/wayland. Clean code principles covering naming conventions, function design, SOLID principles, DRY vs WET tradeoffs, code organization, complexity metrics, and code review through a clean code lens. Use when the user asks about clean code, clean code best practices, or needs guidance on clean code implementation. Do NOT use when the user needs a different specialized skill or is asking about an unrelated technology domain.

Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Code quality and Design patterns. The repository describes itself as: Wayland - The AI Agent That Perceives. Reasons. Acts. Evolves. The licence is Apache-2.0.

When your agent uses it

  • The user asks about clean code
  • Clean code best practices
  • Needs guidance on clean code implementation
  • The user needs a different specialized skill

Example prompts

  • “/clean-code”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Names reveal intent. A reader should understand what a variable holds, what a function does, or what a class represents without reading…
  2. Names are pronounceable. If you cannot say it in conversation, rename it.
  3. Names are searchable. Single-letter names and magic numbers are invisible to search.
  4. Avoid abbreviations unless universally understood (HTTP, URL, ID, DB).
  5. Use consistent vocabulary. Pick one word per concept and stick with it. Do not use get, get, get, and load interchangeably in the same…

What it can do on your machine

Read from SKILL.md and the folder at commit 4c030c7. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python, java, typescript, javascript and markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Clean Code loads about 4.1k tokens when it runs. Until then it costs about 107 tokens; SKILL.md has 1,099 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~107
When it runs · the whole SKILL.md, loaded when a task matches
~4.1k

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.

Safety

Auto-check passed

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from FerroxLabs/wayland at commit 4c030c7, republished under its Apache-2.0 licence (© FerroxLabs). 1,099 words, ~4,133 tokens.

Download SKILL.mdSave it as .claude/skills/clean-code/SKILL.md (or your agent's skills folder).
name
clean-code
description
Clean code principles covering naming conventions, function design, SOLID principles, DRY vs WET tradeoffs, code organization, complexity metrics, and code review through a clean code lens. Use when the user asks about clean code, clean code best practices, or needs guidance on clean code implementation. Do NOT use when the user needs a different specialized skill or is asking about an unrelated technology domain.
license
Apache-2.0
metadata.author
foundry-skills
metadata.version
1.0.0
metadata.tags
best-practices clean-code guide
metadata.category
software-engineering
metadata.subcategory
languages-runtimes
metadata.disclaimer
none
metadata.difficulty
intermediate

Clean Code

You are an expert in clean code principles. Write code that is readable, maintainable, and intentional. Clean code reads like well-written prose. Every name, function, and module should reveal its purpose without requiring comments to explain it.

Naming Conventions

The Rules of Good Names
  1. Names reveal intent. A reader should understand what a variable holds, what a function does, or what a class represents without reading the implementation.
python
# Bad
d = 7         # elapsed time in days
lst = []      # list of flagged accounts
temp = get()  # temporary result

# Good
elapsed_days = 7
flagged_accounts = []
active_user = get_authenticated_user()
  1. Names are pronounceable. If you cannot say it in conversation, rename it.
java
// Bad
Date genymdhms;  // generation date, year-month-day-hour-minute-second
int pdcnt;       // past due count

// Good
Date generationTimestamp;
int pastDueCount;
  1. Names are searchable. Single-letter names and magic numbers are invisible to search.
javascript
// Bad: searching for "7" finds thousands of results
if (days > 7) { ... }

// Good: searching for "MAX_INACTIVE_DAYS" finds exactly what you need
const MAX_INACTIVE_DAYS = 7;
if (days > MAX_INACTIVE_DAYS) { ... }
  1. Avoid abbreviations unless universally understood (HTTP, URL, ID, DB).

  2. Use consistent vocabulary. Pick one word per concept and stick with it. Do not use get, get, get, and load interchangeably in the same codebase.

Naming by Type
TypeConventionExamples
BooleanPhrase as questionisActive, hasPermission, canEdit, shouldRetry
FunctionVerb + nouncalculateTotal, sendEmail, validateInput
Predicate functionis/has/canisExpired(), hasAccess(), canProceed()
CollectionPlural nounusers, orderItems, activeConnections
Count_count or num_retryCount, numAttempts
ClassNounUserRepository, PaymentProcessor, OrderValidator
InterfaceAdjective or nounSerializable, Repository, EventHandler
ConstantUPPER_SNAKE_CASEMAX_RETRIES, DEFAULT_TIMEOUT_MS
Naming Anti-Patterns
  • Meaningless prefixes: IUserService, AbstractBaseFactory. Let the language features speak.
  • Type in name: userList, nameString. The type system handles this.
  • Noise words: data, info, manager, handler, processor. These add length without meaning.
  • Negative booleans: isNotReady, disableFeature. Use positive names: isReady, featureEnabled.

Function Design

Functions Should Be Small

A function should do one thing, do it completely, and do it only. Target 5-15 lines. If a function has sections (separated by blank lines or comments), each section is a candidate for extraction.

Functions Should Have One Level of Abstraction
python
# Bad: mixed levels of abstraction
def process_order(order):
    # High-level
    validate_order(order)

    # Suddenly low-level
    conn = psycopg2.connect(host="db", port=5432, dbname="orders")
    cursor = conn.cursor()
    cursor.execute("INSERT INTO orders (id, total) VALUES (%s, %s)", (order.id, order.total))
    conn.commit()

    # Back to high-level
    send_confirmation(order)

# Good: consistent level of abstraction
def process_order(order):
    validate_order(order)
    save_order(order)
    send_confirmation(order)
Function Arguments
  • 0 arguments (niladic): Best.
  • 1 argument (monadic): Good. Common forms: transformation (parse(input)), query (isValid(email)), event (onUserCreated(user)).
  • 2 arguments (dyadic): Acceptable. Ensure the order is intuitive (assertEquals(expected, actual)).
  • 3 arguments (triadic): Should be rare. Consider introducing a parameter object.
  • 4+ arguments: Refactor. Use a configuration object or builder.
Pure Functions

Prefer pure functions: same input always produces same output, no side effects.

python
# Pure: predictable, testable, parallelizable
def calculate_discount(price: float, discount_percent: float) -> float:
    return price * (1 - discount_percent / 100)

# Impure: depends on external state, has side effects
def apply_discount(order):
    discount = get_global_discount()  # external dependency
    order.total -= order.total * discount  # mutation
    log(f"Applied discount to {order.id}")  # side effect
Command-Query Separation

Functions should either do something (command) or answer something (query), not both.

java
// Bad: does it check or set?
boolean set(String attribute, String value);
if (set("username", "john")) { ... }

// Good: separate command and query
boolean attributeExists(String attribute);
void setAttribute(String attribute, String value);

if (attributeExists("username")) {
    setAttribute("username", "john");
}

SOLID Principles

S - Single Responsibility Principle

A class should have one, and only one, reason to change.

typescript
// Bad: UserService handles auth, validation, persistence, and notifications
class UserService {
  authenticate(credentials) { ... }
  validateEmail(email) { ... }
  saveToDatabase(user) { ... }
  sendWelcomeEmail(user) { ... }
}

// Good: each class has one responsibility
class AuthenticationService { authenticate(credentials) { ... } }
class UserValidator { validateEmail(email) { ... } }
class UserRepository { save(user) { ... } }
class NotificationService { sendWelcomeEmail(user) { ... } }
O - Open/Closed Principle

Software entities should be open for extension, closed for modification.

python
# Bad: adding a new shape requires modifying AreaCalculator
class AreaCalculator:
    def calculate(self, shape):
        if isinstance(shape, Circle):
            return math.pi * shape.radius ** 2
        elif isinstance(shape, Rectangle):
            return shape.width * shape.height
        # Must modify this class for every new shape

# Good: extend without modifying
class Shape(Protocol):
    def area(self) -> float: ...

class Circle:
    def __init__(self, radius): self.radius = radius
    def area(self) -> float: return math.pi * self.radius ** 2

class Rectangle:
    def __init__(self, width, height): self.width, self.height = width, height
    def area(self) -> float: return self.width * self.height

# New shapes can be added without changing existing code
class Triangle:
    def __init__(self, base, height): self.base, self.height = base, height
    def area(self) -> float: return 0.5 * self.base * self.height
L - Liskov Substitution Principle

Objects of a superclass should be replaceable with objects of a subclass without altering program correctness.

python
# Violation: Square changes the behavior contract of Rectangle
class Rectangle:
    def set_width(self, w): self.width = w
    def set_height(self, h): self.height = h

class Square(Rectangle):
    def set_width(self, w): self.width = self.height = w   # Surprising!
    def set_height(self, h): self.width = self.height = h  # Surprising!

# Fix: use separate types or an immutable approach
class Shape(Protocol):
    def area(self) -> float: ...

class Rectangle:
    def __init__(self, width, height): ...
    def area(self): return self.width * self.height

class Square:
    def __init__(self, side): ...
    def area(self): return self.side ** 2
I - Interface Segregation Principle

Clients should not be forced to depend on interfaces they do not use.

typescript
// Bad: a printer-only device must implement fax and scan
interface Machine {
  print(doc: Document): void;
  fax(doc: Document): void;
  scan(doc: Document): Image;
}

// Good: segregated interfaces
interface Printer { print(doc: Document): void; }
interface Fax { fax(doc: Document): void; }
interface Scanner { scan(doc: Document): Image; }

class SimplePrinter implements Printer {
  print(doc: Document) { ... }
}

class MultiFunctionDevice implements Printer, Fax, Scanner {
  print(doc: Document) { ... }
  fax(doc: Document) { ... }
  scan(doc: Document) { ... }
}
D - Dependency Inversion Principle

High-level modules should not depend on low-level modules. Both should depend on abstractions.

python
# Bad: high-level OrderService depends on low-level MySQLDatabase
class OrderService:
    def __init__(self):
        self.db = MySQLDatabase()  # hard-coded dependency

# Good: depend on abstraction
class OrderService:
    def __init__(self, repository: OrderRepository):  # abstract dependency
        self.repository = repository

# Wire up at composition root
db = PostgresOrderRepository(connection_string)
service = OrderService(db)

DRY vs WET Tradeoffs

DRY (Don't Repeat Yourself)

Eliminate duplication of knowledge (not just code). If a business rule is expressed in two places, it will inevitably diverge.

When DRY Goes Wrong
python
# Over-DRY: shared utility for unrelated things
def format_thing(thing, type):
    if type == "user":
        return f"{thing.first_name} {thing.last_name}"
    elif type == "product":
        return f"{thing.name} - ${thing.price}"
    elif type == "order":
        return f"Order #{thing.id}"

This function couples three unrelated formatters. When user formatting changes, you risk breaking product formatting.

WET (Write Everything Twice) Rule

Allow duplication until you have 3+ instances. Then abstract. This prevents premature abstraction.

python
# Two similar functions: leave them separate
def validate_user_email(email): ...
def validate_contact_email(email): ...

# Third instance: now extract
def validate_email(email): ...
The Abstraction Test

Before extracting shared code, ask: If one caller needs a change, would ALL callers need the same change?

  • Yes: Extract the shared code (real duplication).
  • No: The similarity is coincidental. Keep separate (accidental duplication).

Code Organization

File Structure Principles
  1. Group by feature, not by type (prefer user/controller.ts, user/model.ts over controllers/user.ts, models/user.ts).
  2. Put related code close together. Functions that call each other should be in the same file or adjacent files.
  3. Newspaper metaphor: High-level functions at the top, low-level details at the bottom. Readers scan top-down.
  4. One concept per file. A file with 3 unrelated classes should be 3 files.
Vertical Formatting
  • Caller above callee. A function should be defined below the function that calls it.
  • Related concepts close together. Do not separate related functions with unrelated ones.
  • Blank lines between concepts. Group related statements. Separate logical sections.

Complexity Metrics

Show full SKILL.md (451 more words)Show less
Cyclomatic Complexity

Count the number of independent paths through a function.

python
def process(order):                           # +1 base
    if order.is_valid:                        # +1
        if order.total > 100:                 # +1
            apply_discount(order)
        elif order.is_member:                 # +1
            apply_member_discount(order)
        for item in order.items:              # +1
            if item.needs_shipping:           # +1
                schedule_shipping(item)
    else:
        raise InvalidOrderError()
# Cyclomatic complexity: 6

Targets:

  • 1-5: Simple, low risk.
  • 6-10: Moderate, consider refactoring.
  • 11-20: Complex, refactor.
  • 21+: Untestable. Refactor immediately.
Cognitive Complexity

Measures how hard code is to understand (Sonar metric). Penalizes nesting more heavily than branching.

Halstead Metrics
  • Program length: Total number of operators and operands.
  • Vocabulary: Number of distinct operators and operands.
  • Difficulty: How error-prone the code is.

Clean Code Checklist for Review

When reviewing code through a clean code lens:

  • Can I understand what each function does from its name alone?
  • Are functions small (under 20 lines)?
  • Does each function operate at one level of abstraction?
  • Are there no commented-out code blocks?
  • Are comments explaining "why", not "what"?
  • Are magic numbers replaced with named constants?
  • Is error handling clean (no empty catch blocks)?
  • Are there no TODO comments older than 1 sprint?
  • Does the code follow the project's naming conventions?
  • Could a new team member understand this code without asking questions?
  • Is the cyclomatic complexity of each function under 10?
  • Is the code free of feature envy (method using another class more than its own)?

Comments

Good Comments
python
# Compensate for browser's non-standard handling of leap seconds
adjusted_time = timestamp + LEAP_SECOND_OFFSET

# WARNING: Order of operations matters. Tax must be calculated before discount
# because discounts are pre-tax per IRS regulation 26 CFR 1.61-1.
tax = calculate_tax(subtotal)
discount = calculate_discount(subtotal)
Bad Comments (Replace with Better Code)
python
# Bad: restating the code
i += 1  # increment i

# Bad: journal comments (use git log)
# 2024-01-15 John: Added validation
# 2024-01-20 Jane: Fixed edge case

# Bad: closing brace comments
if (condition) {
    ...
    ...
    ...
} // end if condition

# Bad: commented-out code (delete it, git remembers)
# old_result = legacy_calculate(x)
# if old_result != new_result:
#     log_discrepancy(old_result, new_result)
The Best Comment is No Comment

If you feel the need to comment, first try to express the same information through:

  1. A better variable name.
  2. A better function name.
  3. Extracting a well-named function.
  4. Using a well-named constant.

If the code still needs a comment after trying all four, write the comment. Explain why, not what.

When to Use

Use this skill when:

  • Designing or implementing clean code solutions
  • Reviewing or improving existing clean code approaches
  • Making architectural or implementation decisions about clean code
  • Learning clean code patterns and best practices
  • Troubleshooting clean code-related issues

Do NOT use this skill when:

  • The question is about a fundamentally different technology domain
  • A more specific sibling skill covers the exact topic needed
  • The user needs a complete hands-on tutorial rather than expert guidance

Output Format

markdown
# Clean Code Analysis

## Context Assessment
[Situation summary and constraints]

## Recommended Approach
[Primary recommendation with rationale]

## Implementation Steps
1. [Step with specific details]
2. [Step with specific details]
3. [Step with specific details]

## Trade-offs and Considerations
- [Key trade-off 1]
- [Key trade-off 2]

## Next Steps
- [Immediate action item]
- [Follow-up action item]

Example

Input: "Help me implement clean code for a medium-scale production application"

Output: A structured analysis covering current state assessment, recommended clean code approach with specific patterns, implementation roadmap with milestones, and risk mitigation strategies tailored to the application scale and constraints.

Edge Cases

  • Legacy system integration: When clean code must coexist with legacy approaches, provide a gradual migration path rather than a complete rewrite
  • Scale mismatch: When the solution complexity exceeds the project scale, recommend a simpler approach and note when to revisit
  • Team skill gaps: When the team lacks experience with the recommended approach, include learning resources and simpler alternatives
  • Conflicting requirements: When constraints conflict (e.g., performance vs. maintainability), explicitly state the trade-off and recommend based on stated priorities

© FerroxLabs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in src/process/resources/skills-library/bodies/skills/software-engineering/clean-code of FerroxLabs/wayland.

Open the folder on GitHubat commit 4c030c7

Compare with similar skills

Clean Code 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.

Clean Code compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Clean Code this skillFerroxLabs/wayland608—~4.1kAutomated safety check: PassApache-2.0
Coding Best PracticesKartikLabhshetwar/better-shot2.4k2 repos~1.8kAutomated safety check: PassCustom licence
Solidramziddin/solid-skills606—~2.7kAutomated safety check: PassNone
Architectural Code ReviewDonchitos/Claude-Code-Game-Studios26k—~3.5kAutomated safety check: PassMIT
Omni DevGulajavaMinistudio/Mayukai-Theme139—~736Automated safety check: PassMIT
Brooks Reviewhyhmrright/brooks-lint1.5k1 repos~430Automated safety check: PassMIT

Similar skills

  • Coding Best Practices

    KartikLabhshetwar/better-shot

    Reviews macOS Swift 6+ code for modern idioms, SOLID principles, SwiftData patterns, and concurrency best practices.

    2.4k GitHub starsUsed in 2 repos~1.8k tokens
    DevelopmentAuto-check passed
  • Solid

    ramziddin/solid-skills

    A skill your agent uses when writing code, implementing features, refactoring, planning architecture, designing systems, reviewing code, or debugging.

    606 GitHub stars~2.7k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Architectural Code Review

    Donchitos/Claude-Code-Game-Studios

    Performs an architectural review of code against coding standards, SOLID, testability and performance, and reports no verdict when the inputs are missing.

    26k GitHub stars~3.5k tokensUpdated 8 days ago
    DevelopmentAuto-check passed
  • Omni Dev

    GulajavaMinistudio/Mayukai-Theme

    Omni-expert principal software architect. An agent skill from GulajavaMinistudio/Mayukai-Theme.

    139 GitHub stars~736 tokensUpdated 3 mo ago
    DevelopmentAuto-check passed
  • Brooks Review

    hyhmrright/brooks-lint

    PR code review that surfaces decay risks, design smells, and maintainability issues with concrete Symptom → Source → Consequence → Remedy findings, drawing on twelve classic engineering books.

    1.5k GitHub starsUsed in 1 repo~430 tokens
    DevelopmentAuto-check passed
  • Clean Code

    jd-solanki/slidev-theme-dracula

    Write readable, maintainable code through disciplined naming, small functions, and clean error handling.

    161 GitHub starsUsed in 1 repo~3.8k tokens
    DevelopmentAuto-check passed

More from FerroxLabs/wayland

All 1,194 skills in this repo
  • Star Office Helper

    FerroxLabs/wayland

    Install, start, connect, and troubleshoot visualization companion projects for Aion/OpenClaw, with Star-Office-UI as the default recommendation.

    608 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check: notes
  • Openclaw Setup

    FerroxLabs/wayland

    OpenClaw usage expert: Helps you install, deploy, configure, and use OpenClaw personal AI assistant.

    608 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • Tvcontrol Setup

    FerroxLabs/wayland

    Set up TVControl end to end: install the connector, start TradingView Desktop with its control port open, load a watchlist export, add the indicators they use, and leave a working chart.

    608 GitHub stars~5.7k tokensUpdated yesterday
    Auto-check passed
  • Ab Testing Specialist

    FerroxLabs/wayland

    End-to-end guide for designing, running, and analyzing A/B tests including experiment design, statistical significance, sample size calculation, common pitfalls, and advanced testing patterns.

    608 GitHub stars~3.7k tokensUpdated yesterday
    Auto-check passed
  • Academic Writer

    FerroxLabs/wayland

    Complete academic writing guide covering thesis and dissertation structure, journal article format using IMRaD, literature review methodology, citation management, the peer review process, and…

    608 GitHub stars~4.5k tokensUpdated yesterday
    Auto-check passed
  • Accessibility Auditor

    FerroxLabs/wayland

    Web accessibility expertise covering WCAG 2.2 conformance, audit methodology, ARIA patterns, keyboard navigation, screen reader testing, focus management, form accessibility, and automated vs manual…

    608 GitHub stars~4.1k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Clean Code

What does Clean Code do?

Clean code principles covering naming conventions, function design, SOLID principles, DRY vs WET tradeoffs, code organization, complexity metrics, and code review through a clean code lens. Clean Code is an agent skill from FerroxLabs/wayland. Clean code principles covering naming conventions, function design, SOLID principles, DRY vs WET tradeoffs, code organization, complexity metrics, and code review through a clean code lens.

When should I use Clean Code?

Clean Code fits situations like: the user asks about clean code; clean code best practices; needs guidance on clean code implementation; the user needs a different specialized skill.

How do I install Clean Code in Claude Code?

Run `npx skills add FerroxLabs/wayland --skill clean-code -a claude-code`. Or copy the skill folder (src/process/resources/skills-library/bodies/skills/software-engineering/clean-code in FerroxLabs/wayland) into .claude/skills/clean-code in your project. Claude Code loads it when a task matches its description.

How do I install Clean Code in Codex?

Run `npx skills add FerroxLabs/wayland --skill clean-code -a codex`. Or copy the skill folder (src/process/resources/skills-library/bodies/skills/software-engineering/clean-code in FerroxLabs/wayland) into .agents/skills/clean-code in your project. Codex loads it when a task matches its description.

Can I use Clean Code in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add FerroxLabs/wayland --skill clean-code -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/clean-code, .gemini/skills/clean-code, .github/skills/clean-code and .opencode/skills/clean-code in your project.

What does Clean Code need to run?

SKILL.md names no scripts, command-line tools or credentials: Clean Code is instructions for the agent only. Our summary lists: Python 3.

Does Clean Code access the network?

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.

Is Clean Code safe to install?

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. Review the folder before installing.

What licence does Clean Code use?

Clean Code is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Clean Code use?

About 4.1k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Clean Code?

Skills that share tags, products or a category with Clean Code: Coding Best Practices (KartikLabhshetwar/better-shot, 2.4k stars), Solid (ramziddin/solid-skills, 606 stars), Architectural Code Review (Donchitos/Claude-Code-Game-Studios, 26k stars) and Omni Dev (GulajavaMinistudio/Mayukai-Theme, 139 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Clean Code?

FerroxLabs (a GitHub user) maintains it in FerroxLabs/wayland, which has 608 GitHub stars. The repository holds 1,194 skills in this directory. The repository was last updated on October 6, 2026.

Source: FerroxLabs/wayland on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.