riekelt/principal-engineer

principal-engineering

Use when doing any non-trivial engineering work - implementing, debugging, refactoring, configuring, operating, or investigating why a system misbehaves - or any change where being wrong has a cost.

查看源码

使用方法

  1. 复制安装命令,在自己的智能体环境安装前先检查源码包。
  2. 从原始文档核对所需工具、凭据和支持的宿主。
  3. 说明输入材料与期望交付物,并对照来源检查输出。
npx skills add https://github.com/riekelt/principal-engineer --skill principal-engineering

开始前需了解

  • 安装不包含模型订阅、API 额度或访问文件的权限。
  • 仓库星数和安装量反映活跃情况,不等于独立质量或安全测试。
仓库原始内容

按源仓库内容呈现,保留标题、案例、代码、表格、链接以及原文引用的演示图片。

Principal engineering

Overview

Check what the system actually does rather than recalling a pattern for it. Ground every decision in the real code and data, fail loud, keep one home per fact, and never claim done without the verification that proves it.

Sibling skills carry the depth: grounding-before-coding, handling-failures, keeping-one-source-of-truth, verifying-before-done, operating-safely, scoping-changes, testing-changes, writing-unit-tests, guarding-architecture, adding-dependencies. Load the matching one on top of this.

When to invoke

The task isAlso load
Starting a change, a debug, or work in unfamiliar codegrounding-before-coding
Writing or touching any error path, fallback, or defaulthandling-failures
Adding data, config, state, or a second copy of anythingkeeping-one-source-of-truth
Claiming "done", "fixed", or "passing"verifying-before-done
Deleting, overwriting, restarting, or touching secrets or live systemsoperating-safely
Deciding how big a fix should be, or noticing scope move mid-taskscoping-changes
Deciding what tests a change owes, or facing an empty test difftesting-changes
Writing or fixing a unit test, or taming a flaky or unreadable onewriting-unit-tests
Crossing module boundaries or touching stated principlesguarding-architecture
Adding, updating, vetting, or removing a package, library, or base imageadding-dependencies

The documents around the work (specs, decisions, changelogs, runbooks, postmortems, issues) are the technical-writer plugin's job where installed; these skills govern the engineering itself and defer to it for the prose.

Scope limits

  • Not a style guide: formatting, naming taste, and framework choice belong to the repository's own conventions, which win.
  • Not a replacement for project instructions: CLAUDE.md and repository rules outrank everything here.
  • Not a source of product decisions: what to build comes from the owner; this governs how built things stay true and safe.

Mandatory checkpoint before a non-trivial change

Before writing the first line, state in working notes:

Grounded: <what you read or ran to know the current behavior> | Blast radius: <what this change touches> | Invariants: <what must not break> | Verify: <the command that will prove it worked>

Fill it from the code and data, not from memory or plausibility. A field you cannot fill is the work you do first.

Hard rules

Non-negotiable, in every repository:

  • No silent error swallows. Every catch and failure path logs and rethrows, returns a typed failure the caller must handle, or enters an explicitly documented degraded mode. A new silent swallow is an automatic review BLOCKER. See handling-failures.
  • An applied migration is immutable history. Schema corrections are new additive migrations, never edits to an applied one.
  • Never claim verified without naming what was checked. A "done" claim names the command and its result, quotes the output of every failing test, and names every skipped step. See verifying-before-done.
  • Secret values are never read, printed, or decrypted to disk. Names and structural checks only; an auth failure means pause, never bypass.
  • Destructive operations need eyes first. Look at the target before deleting or overwriting; ask before restarting or killing live services; prefer targeted operations over bulk ones.
  • Evidence beats theory. Profile, query, and read before concluding; a signal that pattern-matches a known failure may have a different cause, so check that the evidence supports the specific action, not the familiar one.

Risk tiers set the rigor

The rules hold at every tier; the tier sets how much proof they demand. What sits in the top tier is the project's to declare: money paths in one system, the sales pipeline in another, stored user data, a medical record, a safety gate, an irreversible migration. The project's rules or CLAUDE.md name its top-tier paths; when they do not, ask what the system must never get wrong and treat the answer as the declaration.

Top-tier work gets maximum rigor: invariant tests, independent verification, and the full checkpoint taken literally. Ordinary paths get standard rigor. Tooling and throwaway work still obey the hard rules (a silent swallow in a script still hides failures) but earn no gold-plating. State the tier when it is not obvious; running top-tier work at tooling rigor is the expensive mistake, the reverse is the wasteful one.

The rule lifecycle

Something that bites twice becomes a written rule with its provenance (what happened, when, how to avoid it); once is learning. A rule that keeps triggering gets sharpened; a rule whose underlying cause is fixed gets retired. The recorded incident behind each rule is what stops it from being cargo-culted or wrongly deleted later.

Common mistakes

  • Acting on a document's claim about the system instead of the system; doc status goes stale fast, the code and the history are the record.
  • Fixing the symptom that pattern-matched instead of the cause the evidence shows.
  • Treating "the tests are green" as "the change works"; a green suite over code that cannot work means the suite does not run or does not test.
  • Leaving a duplicate untouched in code you are changing: a duplicate in code you touch gets absorbed as part of the work; one merely noticed elsewhere gets surfaced and tracked, not silently fixed and not silently left. See keeping-one-source-of-truth.
  • Growing a fix past its trigger because improvements were adjacent. See scoping-changes.

按任务相关推荐

来自同一仓库

更多 Skills

全部 Skills
riekelt
社区

adding-dependencies

Use when about to add, update, vet, or remove a dependency - a package, library, SDK, GitHub action, base image, or vendored code - or when a project's dependency posture needs declaring. Encodes the exhaust-what-you-have ladder, the vetting questions, and pin-and-prove updating. Use even for a tiny utility package: that is exactly how the tree grows.

安装量
9
GitHub Stars
6
最近更新
9月11日
riekelt
社区

grounding-before-coding

Use when starting any non-trivial change, investigating a bug, or working in unfamiliar code - before the first line is written. Also use for pure investigation with no change planned yet - \"dig into this\", \"figure out why\", \"sometimes the export is empty\", intermittent errors after a deploy. Encodes the ground-first discipline: map the real code and data, quote evidence, never guess conventions. Use whenever a change or a conclusion is about to be built from belief instead of from the tre

安装量
9
GitHub Stars
6
最近更新
9月11日
riekelt
社区

guarding-architecture

Use when a change crosses module boundaries, adds a dependency direction between modules, touches a critical path, or conflicts with a stated principle - and when writing or updating architecture principles themselves. Encodes structural invariants as named, enforced contracts: statement, rationale, guard. Use whenever \"we'll just import it from there for now\" appears, which is how boundaries die.

安装量
9
GitHub Stars
6
最近更新
9月11日
riekelt
社区

handling-failures

Use when writing or touching any error path, catch block, fallback, default value, retry, or degraded mode - in any language, any repo. Encodes the no-silent-swallows contract and the fail-loud discipline. Use whenever an exception is about to be caught, a null is about to get a default, or a failure could pass unnoticed, even if the goal is "just make it not crash".

安装量
9
GitHub Stars
6
最近更新
9月11日