技能 编程开发 规范代码风格与最佳实践

规范代码风格与最佳实践

v20260617
super-code
该技能旨在强制执行最高标准的编程规范,确保代码既正确又简洁,符合语言惯用模式。它不仅清理代码冗余(如过度的抽象和注释),还优化了AI的输出格式,要求使用精确的补丁和差异展示,避免生成过多不必要的文本描述,适用于所有代码开发和重构任务。
获取技能
82 次下载
概览

Super Code Skill

Overview

Produce code that is short, correct, idiomatic, and maintainable — in that priority order. This skill addresses two distinct inefficiency types that must be fixed independently:

  1. Code-token inefficiency — the artifact itself is bloated (unnecessary lines, boilerplate, over-abstraction)
  2. Generation-token inefficiency — how the agent operates during a session (full-file rewrites, unrequested files, prose padding before/after changes)

Both matter. Fixing only one is not enough.

When to Use This Skill

  • Apply this skill automatically on EVERY coding task in the IDE.
  • Use whenever the user asks to write, edit, refactor, generate, or review code in any language.
  • This is a standing house style, not an on-demand pass — always apply it.

Priority Order (never violate this ranking)

Correctness → Clarity → Necessary robustness → Conciseness → Micro-performance

Conciseness never wins over correctness or readability. If a compression would drop error handling for a case that can actually occur, or produce code a human couldn't read in six months, undo that specific compression. Short bad code is worse than long correct code.


Workflow — apply to every coding task

Step 1: Commit to minimal correct shape BEFORE writing

Before touching a file, decide:

  • What is the smallest surface area that correctly solves this problem?
  • What does the caller actually need from this function/class/module?
  • Is there a stdlib/framework primitive that already does this?

Write that down mentally (not in a prose block to the user). This is the target shape.

Step 2: Write using language-idiomatic patterns

Read the relevant reference file for the language in use:

  • Bash/Shell → bash/SKILL.md
  • C → c/SKILL.md
  • C++ → cpp/SKILL.md
  • C# → csharp/SKILL.md
  • Dart/Flutter → dart/SKILL.md
  • Elixir/Erlang → elixir/SKILL.md
  • Go → go/SKILL.md
  • Java → java/SKILL.md
  • Kotlin/Compose → kotlin/SKILL.md
  • PHP → php/SKILL.md
  • Python → python/SKILL.md
  • Ruby → ruby/SKILL.md
  • Rust → rust/SKILL.md
  • Scala → scala/SKILL.md
  • Swift → swift/SKILL.md
  • TypeScript/JavaScript → typescript/SKILL.md

Apply idiomatic patterns from that file. They replace verbose imperative code with correct, concise equivalents that are still readable.

Step 3: Compression pass on your own draft

Before presenting any code, scan it for:

Anti-pattern Fix
Comment restates what code does Delete comment, or rewrite to say why
Single-use helper function/class Inline it
Stdlib/framework already does this Replace with the primitive
Defensive handling for impossible case Remove
Verbose loop replaceable by idiomatic expression Replace
Logging/print nobody asked for Remove
Extra config/files/parameters not requested Remove
Unused import or variable Remove

Step 4: Guardrail check — run this before presenting

Ask yourself (silently):

  • Did I remove handling for a case that can actually happen?
  • Did I make this harder to read for a human six months from now?
  • Did I drop correctness or security to save lines?

If yes to any: undo that specific compression and keep the rest.

Step 5: Present output — generation-token rules

Always:

  • Edit files via targeted patches/diffs, not full rewrites, unless the file is new or the change touches >70% of lines
  • Present only what was asked for

Never:

  • Generate unrequested files (tests, READMEs, configs, types) unless the user asked
  • Add prose blocks before/after code explaining what you're about to do or just did — just do it
  • Re-explain the user's own requirement back to them before writing
  • Restate what changed in a paragraph after showing the diff — the diff is self-evident

Universal Anti-Pattern Checklist

These apply in every language. The language-specific files extend this list.

Comments

  • // Loop through the list and add each item → ❌ delete
  • // Order matters: process refunds before charges → ✅ keep (explains why)
  • Rule: if the comment could be generated mechanically from reading the code, it adds no value

Defensive coding

  • Only handle error cases that can actually occur given the call site
  • If the caller guarantees non-null, don't null-check inside the function
  • If a catch block can only log and rethrow, consider removing the try/catch

Abstractions

  • Don't extract a function for logic used exactly once in one place
  • Don't create a wrapper class around a primitive used only once
  • Threshold: abstraction earns its place when it's used 2+ times OR when it has a meaningful name that genuinely clarifies domain logic

Scaffolding

  • No placeholder TODOs unless the user asked for a scaffold
  • No // TODO: add error handling — either add it or don't
  • No empty catch blocks "just in case"
  • No parameters the current callers don't use

Generation-Token Rules (agentic IDE specific)

These govern how you operate inside the session, not just what you produce:

File edits

  • Prefer surgical patches: show only the changed lines + minimal context
  • Full file rewrite is acceptable only for: new files, files shorter than ~30 lines, or changes touching >70% of the file
  • Never repeat unchanged portions of a file to "show the full context"

Unrequested artifacts

  • Do not create test files, README updates, type definition files, config files, or CI scripts unless explicitly requested
  • If you believe a test file would be valuable, offer it in one sentence after the main output — don't generate it unasked

Prose overhead

  • No "Here's what I'm going to do:" preambles
  • No "I've made the following changes:" postambles (the diff shows this)
  • No "Let me know if you'd like me to..." closers
  • One-line clarification is acceptable if a requirement is genuinely ambiguous; otherwise, make a reasonable choice and note the assumption in a comment inside the code if it matters

Language Reference Files

Language / Stack File
Bash / Shell bash/SKILL.md
C c/SKILL.md
C++ cpp/SKILL.md
C# / .NET csharp/SKILL.md
Dart / Flutter dart/SKILL.md
Elixir / Erlang elixir/SKILL.md
Go go/SKILL.md
Java java/SKILL.md
Kotlin + Compose (Android) kotlin/SKILL.md
PHP php/SKILL.md
Python python/SKILL.md
Ruby ruby/SKILL.md
Rust rust/SKILL.md
Scala scala/SKILL.md
Swift (iOS/macOS) swift/SKILL.md
TypeScript / JavaScript typescript/SKILL.md

Read the relevant file at Step 2. If the language isn't listed, apply the universal checklist above and use the language's own idioms for loops, error handling, and data transformation.

Examples

Example 1: Refactoring a verbose loop

// Anti-pattern
List<String> names = new ArrayList<>();
for (User u : users) {
    if (u.isActive()) {
        names.add(u.getName());
    }
}
// Super-code idiomatic (Java)
List<String> names = users.stream().filter(User::isActive).map(User::getName).toList();

Troubleshooting

Problem: Code is too dense to read

Symptoms: Reviewer complains or logic is unreadable. Solution: Revert the overly compressed section. Clarity and correctness always win over conciseness.

Related Skills

  • @karpathy-guidelines - For behavioral guidelines on surgical changes and simplicity.

Limitations

  • Language Support: Language-specific idioms require reference files.
  • Readability Tradeoffs: Extreme compression can sometimes harm readability if not careful.
信息
Category 编程开发
Name super-code
版本 v20260617
大小 47.3KB
更新时间 2026-06-18
语言