Guides the generation and review of code based on core engineering principles for maintainability and quality.

Install

mkdir -p .claude/skills/engineering && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16607" && unzip -o skill.zip -d .claude/skills/engineering && rm skill.zip

Installs to .claude/skills/engineering

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Skill for applying engineering principles when writing or reviewing code, inspired by Russ Cox's worknotes. Apply this skill anytime you're writing, editing, or reviewing any code.
180 chars✓ has a “when” trigger
Intermediate

Key capabilities

  • Make the smallest valuable change that moves the work forward
  • Prefer small, reviewable diffs over broad rewrites
  • Begin larger work with goals, risks, and iteration plans
  • Favor simple, maintainable solutions over clever ones
  • Optimize for long-term efficiency, clarity, and ease of change
  • Cut scope before cutting quality

How it works

This skill applies engineering principles to code writing and review by emphasizing small, valuable changes, simple and maintainable solutions, and long-term efficiency. It guides iteration, style consistency, and reliability, ensuring production-ready code.

Inputs & outputs

You give it
Code to write, edit, or review
You get back
Production-ready code that adheres to engineering principles, is easy to review, and maintainable

When to use engineering

  • Review a PR for maintainability
  • Draft a plan for a new feature
  • Refactor code for better readability
  • Decompose a large task into smaller commits

About this skill

Engineering Principles

Use these instructions whenever generating or reviewing code.

Core principles

  • Make the smallest valuable change that moves the work forward.
  • Prefer small, reviewable diffs over broad rewrites.
  • For larger work, begin with the goal, key risks, and an iteration plan before implementing.
  • Favor simple, maintainable solutions over clever, overly flexible, or short-term easy ones.
  • Optimize for long-term efficiency, clarity, and ease of change.
  • Treat reliability, security, correctness, and performance as core requirements.
  • Maintain velocity by reducing unnecessary process, not by lowering quality.
  • Cut scope before cutting quality.
  • Ship production-ready code only.

Style and consistency

  • Match the existing file and repository style exactly before applying personal preferences.
  • Use idiomatic constructs for the language and codebase.
  • Prefer conventional naming and the most natural expression of common patterns.
  • When unsure, copy the conventions already used nearby.

Iteration

  • Implement the minimal valuable change on the direct path to the goal.
  • Break large features into safe, useful increments that can be reviewed and validated independently.
  • For complex work, identify core design problems and risks early, then reduce uncertainty before scaling implementation.
  • Use prototypes or proof-of-concepts only when they help de-risk the design or validate an approach.
  • Avoid speculative abstraction and future-proofing that is not justified by current needs.

Efficiency and simplicity

  • Prefer simple, direct solutions over clever ones.
  • Choose the simplest solution that solves the problem well.
  • Prefer maintainable, boring, well-understood patterns over clever or highly customized designs.
  • Keep code readable enough that it needs few comments; rewrite confusing code instead of explaining it with comments.
  • Refactor toward clarity, easier modification, and lower cognitive load.
  • Build useful abstractions only when they reduce duplication or improve changeability.
  • Optimize only when there is clear evidence the code is measurably slow.
  • When performance matters, improve data structures and overall design before chasing minor tweaks.
  • Automate repetitive work when it meaningfully improves developer efficiency or reduces error-prone manual steps.
  • Prefer productized, reusable solutions over one-off hacks, local patches, or throwaway side tools.
  • Aim for engineering excellence, not engineering perfection.

Reliability and predictability

  • Prioritize availability, security, and data safety over feature speed.
  • Do not introduce avoidable operational risk for the sake of faster delivery.
  • Make failure modes, edge cases, and rollback paths explicit in the implementation.
  • Favor designs that are observable, testable, and easy to reason about in production.
  • Use established project patterns, conventions, and safeguards when they reduce risk and improve consistency.
  • When changing behavior that could impact production, prefer controlled rollout strategies such as feature flags, isolation, or incremental adoption.

Velocity

  • Keep momentum by delivering small changes continuously.
  • Reduce review latency: write code that is easy to review, and avoid unnecessary complexity in a single change.
  • Avoid unnecessary process, ceremony, or coordination overhead when it does not improve outcomes.
  • Be pragmatic: choose the lightest process that still preserves safety and quality.
  • Balance feature delivery with maintenance, cleanup, and refactoring.
  • Be proactive about removing or improving processes that slow delivery without adding enough value.

Quality

  • Everything committed should be production-ready.
  • Do not leave behind partially integrated, fragile, or knowingly low-quality implementations.
  • Validate behavior with appropriate tests for the level of change.
  • Preserve code quality and consistency with existing project conventions and development guides.
  • Prefer code that is easy to understand and easy to change over code optimized for hypothetical future reuse.
  • Release when the work is ready; do not rush implementation only to fit an arbitrary date.

Application guidance

  • Keep classes and methods focused, with one clear responsibility.
  • Prefer explicit, intention-revealing code over metaprogramming or indirection unless there is strong justification.
  • Keep controllers thin and move business logic into models, services, or query objects as appropriate.
  • Keep background jobs small and deterministic; delegate non-trivial logic to reusable application code.
  • Prefer plain objects for domain logic that does not need to live in controllers or models.
  • Use framework conventions when they improve consistency, readability, and maintainability.
  • Reuse existing application patterns, shared components, and established abstractions before introducing new ones.
  • When changing existing code, leave it clearer, safer, or easier to extend than you found it.

Comments and communication

  • Add short comments above functions when the intent is not obvious.
  • Put comments on their own lines before the code they explain.
  • Use comments to explain why something is surprising, constrained, or hard to understand.
  • Keep change summaries brief and factual.

Review expectations

  • Generate code that is easy to review in small increments.
  • Highlight notable risks, tradeoffs, and assumptions when they affect implementation choices.
  • When a change is large or architectural, structure the code so the migration path is clear.
  • Avoid unrelated cleanup in the same change unless it directly supports the work.
  • Prefer follow-up iterations over bundling multiple concerns into one large change.
  • Treat review feedback as refinement: many suggested changes usually mean the code is worth improving.

When not to use it

  • When applying personal preferences that do not match existing file and repository style
  • When introducing speculative abstraction or future-proofing not justified by current needs
  • When bundling multiple concerns into one large change during review

Limitations

  • The skill prioritizes small, reviewable diffs
  • The skill advises against speculative abstraction
  • The skill requires everything committed to be production-ready

How it compares

This skill provides a complete set of engineering principles and application guidance for code development and review, promoting a consistent and high-quality approach that differs from ad-hoc coding practices.

Compared to similar skills

engineering side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
engineering (this skill)03moNo flagsIntermediate
effective-go3239moNo flagsBeginner
solid-principles579moNo flagsIntermediate
typescript-review392moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

effective-go

openshift

Apply Go best practices, idioms, and conventions from golang.org/doc/effective_go. Use when writing, reviewing, or refactoring Go code to ensure idiomatic, clean, and efficient implementations.

323536

solid-principles

SmidigStorm

Enforce SOLID principles (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion) in object-oriented design. Use when writing or reviewing classes and modules.

57236

typescript-review

metabase

Review TypeScript and JavaScript code changes for compliance with Metabase coding standards, style violations, and code quality issues. Use when reviewing pull requests or diffs containing TypeScript/JavaScript code.

39178

ast-grep

ast-grep

Guide for writing ast-grep rules to perform structural code search and analysis. Use when users need to search codebases using Abstract Syntax Tree (AST) patterns, find specific code structures, or perform complex code queries that go beyond simple text search. This skill should be used when users ask to search for code patterns, find specific language constructs, or locate code with particular structural characteristics.

17135

serena

massgen

This skill provides symbol-level code understanding and navigation using Language Server Protocol (LSP). Enables IDE-like capabilities for finding symbols, tracking references, and making precise code edits at the symbol level.

1597

typescript

lobehub

TypeScript code style and optimization guidelines. Use when writing TypeScript code (.ts, .tsx, .mts files), reviewing code quality, or implementing type-safe patterns. Triggers on TypeScript development, type safety questions, or code style discussions.

2877

Search skills

Search the agent skills registry