Claude Code Plugins

Community-maintained marketplace

Feedback

Use when writing or modifying any code. Enforces naming conventions, function design, and code clarity principles.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name code-style
description Use when writing or modifying any code. Enforces naming conventions, function design, and code clarity principles.

Code Style

Core Philosophy

Code should be self-explanatory. Comments explain WHY, not WHAT.

Function Design

Small and Focused

Each function should do one thing well. Split larger functions into smaller, independent methods.

Either Call Or Pass

A function should either:

  • Call other methods (high-level orchestration), OR
  • Pass data / perform low-level operations

Never mix abstraction levels in one function body. This is the Single Level of Abstraction (SLA) principle.

// BAD - mixed abstraction levels
function processOrder(order: Order) {
  validateOrder(order);                    // high-level call
  const tax = order.total * 0.1;           // low-level calculation
  await sendConfirmation(order);           // high-level call
  db.insert('orders', { ...order, tax });  // low-level operation
}

// GOOD - consistent abstraction
function processOrder(order: Order) {
  validateOrder(order);
  const enrichedOrder = calculateTaxes(order);
  await persistOrder(enrichedOrder);
  await sendConfirmation(enrichedOrder);
}

Never Use If With Else

Prefer guard clauses or polymorphism over if-else blocks.

// BAD
function getDiscount(user: User) {
  if (user.isPremium) {
    return 0.2;
  } else {
    return 0;
  }
}

// GOOD - guard clause
function getDiscount(user: User) {
  if (!user.isPremium) return 0;
  return 0.2;
}

Avoid Flag Arguments

Flag arguments indicate a function is doing more than one thing.

// BAD
function createUser(data: UserData, sendEmail: boolean) { ... }

// GOOD
function createUser(data: UserData) { ... }
function createUserAndNotify(data: UserData) { ... }

Naming

Expressive Over Comments

// BAD
const d = 7; // days in recovery period

// GOOD
const daysInRecoveryPeriod = 7;

No Abbreviations

// BAD
getUserCmt(), calcRecReq()

// GOOD
getUserComment(), calculateRecoveryRequirement()

Booleans Read Like Questions

// BAD
eligible, recovery

// GOOD
isEligible, isRecovering, hasPassedDeadline

Collections Use Plurals

// BAD
const post = getPosts();

// GOOD
const posts = getPosts();

Use Intermediate Variables

const hasRequiredPostCount = posts.length >= 2;
const isWithinRecoveryWindow = new Date() <= recoveryDeadline;
const canStartRecovery = hasRequiredPostCount && isWithinRecoveryWindow;

Constants

No Magic Numbers

// BAD
if (streak >= 21) { ... }

// GOOD
const GOLD_BADGE_STREAK_THRESHOLD = 21;
if (streak >= GOLD_BADGE_STREAK_THRESHOLD) { ... }

Comments

Sparingly and Meaningful

  • Code tells HOW, comments tell WHY
  • If you need a comment, first try better naming
  • Use TODO: for known limitations
  • Delete obsolete comments