code-style

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

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "code-style" with this command: npx skills add bumgeunsong/daily-writing-friends/bumgeunsong-daily-writing-friends-code-style

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

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

firebase-functions

No summary provided by upstream source.

Repository SourceNeeds Review
General

pr-stacking

No summary provided by upstream source.

Repository SourceNeeds Review
General

api-layer

No summary provided by upstream source.

Repository SourceNeeds Review
General

commit

No summary provided by upstream source.

Repository SourceNeeds Review