Senior Engineering Principles
Engineering principles for building software like a senior engineer.
How to use it
Claude Code
- Run the line below. It pulls the whole folder into
~/.claude/skills/senior-engineering. - Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit jdrhyne/agent-skills/prompts/senior-engineering#main ~/.claude/skills/senior-engineeringFor one project only, change the path to .claude/skills/senior-engineering.
Claude (web or desktop app)
- On this page open ⋯ → Download .md.
- Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
- Pick the file and Save. Claude shows the name and description and runs a security scan.
- Check the skill is switched on.
- Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
- ChatGPT: make a Project and paste it into Instructions.
- Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
- Check which app you pasted it into — the steps above name the right one.
- Some skills need the paid tier of Claude or ChatGPT.
Paste into Claude, ChatGPT or Cursor.
Source of Senior Engineering Principles
Show the full text148 lines
| name | description |
|---|---|
| senior-engineering | Engineering principles for building software like a senior engineer. Load when tackling non-trivial development work, architecting systems, reviewing code, or orchestrating multi-agent builds. Covers planning, delivery, quality gates, and LLM-specific patterns. |
Senior Engineering Principles
Guidelines for building software with the judgment and discipline of a senior engineer.
Safety Boundaries
- Do not treat these principles as permission to skip user approval for destructive or high-risk changes.
- Do not expand scope beyond the user's request just because a broader rewrite seems cleaner.
- Do not invent validation results; report what was actually checked and what remains unverified.
Before Writing Code
Define Done First
- What does success look like? Write it down.
- What are the acceptance criteria?
- How will you verify it works?
Identify Load-Bearing Decisions
- Which choices are hard to reverse? → More scrutiny
- Which are easily changed? → Decide fast, move on
- Reversible decisions don't need consensus
Decompose Before Building
- Break work into clear, testable units
- Each unit should be independently verifiable
- If you can't explain the pieces, you don't understand the whole
Surface Risks Upfront
- What could go wrong?
- What are the dependencies?
- What's the rollback plan?
- Time-box exploration — analysis paralysis is real
Interface First, Implementation Second
- Define the contract (types, API shape, error cases) before internals
- Forces clarity on what you're actually building
- Implementation becomes "fill in the blanks"
Ask: What's the Simplest Thing That Could Work?
- Start there. Add complexity only when the simple version fails.
- Most features need 20% of what we imagine.
During Build
Always Have a Runnable State
- Never be more than 30 mins from something that compiles/runs
- Commit working checkpoints frequently
- Big-bang integration is where projects die
Prefer Incremental Over Big-Bang
- Ship small, verify, iterate
- Each step should be independently deployable if possible
- Reduce blast radius of mistakes
Instrument As You Build
- Add logging/metrics while coding, not when debugging prod
- "I wish I had visibility into X" = you waited too long
- Observability is a feature, not an afterthought
Read Errors Carefully
- 80% of debugging is actually reading what the system tells you
- Read the error, then read it again
- Stack traces have answers — follow them
Boring > Clever
- If someone has to pause to understand it, it's too clever
- Save big-brain moves for genuinely hard problems
- Maintainability beats elegance
Optimize for Delete
- Write code that's easy to remove
- Tight coupling makes features immortal
- Good abstractions have clear boundaries
Quality Gates
Before Declaring Done
- Linter passes
- Type checker passes
- Tests pass (unit + integration where applicable)
- Manual smoke test completed
- Edge cases considered and handled
Tests Are Documentation
- A good test suite tells you what code is supposed to do
- Treat tests as first-class citizens
- If it's not tested, it's not done
Code Review Mindset
- Review like you'll maintain it at 3am
- Check: correctness, clarity, edge cases, security
- "It works" is necessary but not sufficient
LLM Orchestration Principles
Context Management
- Context window is your RAM — manage it deliberately
- Bloated context = degraded reasoning
- Give each agent minimum viable context, no more
Agent Delegation
- Single responsibility per agent
- Clear handoff contracts: inputs, outputs, success criteria
- Parallel when independent, sequential when dependent
Verify, Don't Trust
- First output is a draft, always
- Review agent output like a code review
- Agents are junior engineers, not oracles
Checkpoints Over Marathons
- Long-running agents should checkpoint progress
- If it crashes at 90%, don't lose everything
- Log state to files, not just memory
Fail Fast, Surface Early
- If something's going wrong, stop and reassess
- Don't compound errors hoping they'll resolve
- Human in the loop for high-stakes decisions
Ownership & Accountability
Own Failures, Credit Others
- Own failures publicly
- Credit others for wins
- No ego-driven attachment to being right
Strong Opinions, Weakly Held
- Have a position, defend it with evidence
- Update beliefs when evidence demands it
- "I was wrong" is a sign of growth
Leave It Better
- Codebases, teams, processes — improve what you touch
- Fix the small things while you're there
- Documentation is a gift to future-you
The Meta-Principle
"Make the change easy, then make the easy change." — Kent Beck
Most senior engineering is about preparation — setting up the codebase so the actual feature is trivial. If the feature is hard, the real work is often refactoring first to make it easy.
| 1 | |
| 2 | name senior-engineering |
| 3 | description Engineering principles for building software like a senior engineer. Load when tackling non-trivial development work, architecting systems, reviewing code, or orchestrating multi-agent builds. Covers planning, delivery, quality gates, and LLM-specific patterns. |
| 4 | |
| 5 | |
| 6 | # Senior Engineering Principles |
| 7 | |
| 8 | Guidelines for building software with the judgment and discipline of a senior engineer. |
| 9 | |
| 10 | ## Safety Boundaries |
| 11 | |
| 12 | Do not treat these principles as permission to skip user approval for destructive or high-risk changes. |
| 13 | Do not expand scope beyond the user's request just because a broader rewrite seems cleaner. |
| 14 | Do not invent validation results; report what was actually checked and what remains unverified. |
| 15 | |
| 16 | ## Before Writing Code |
| 17 | |
| 18 | ### Define Done First |
| 19 | What does success look like? Write it down. |
| 20 | What are the acceptance criteria? |
| 21 | How will you verify it works? |
| 22 | |
| 23 | ### Identify Load-Bearing Decisions |
| 24 | Which choices are hard to reverse? → More scrutiny |
| 25 | Which are easily changed? → Decide fast, move on |
| 26 | Reversible decisions don't need consensus |
| 27 | |
| 28 | ### Decompose Before Building |
| 29 | Break work into clear, testable units |
| 30 | Each unit should be independently verifiable |
| 31 | If you can't explain the pieces, you don't understand the whole |
| 32 | |
| 33 | ### Surface Risks Upfront |
| 34 | What could go wrong? |
| 35 | What are the dependencies? |
| 36 | What's the rollback plan? |
| 37 | Time-box exploration — analysis paralysis is real |
| 38 | |
| 39 | ### Interface First, Implementation Second |
| 40 | Define the contract (types, API shape, error cases) before internals |
| 41 | Forces clarity on what you're actually building |
| 42 | Implementation becomes "fill in the blanks" |
| 43 | |
| 44 | ### Ask: What's the Simplest Thing That Could Work? |
| 45 | Start there. Add complexity only when the simple version fails. |
| 46 | Most features need 20% of what we imagine. |
| 47 | |
| 48 | ## During Build |
| 49 | |
| 50 | ### Always Have a Runnable State |
| 51 | Never be more than 30 mins from something that compiles/runs |
| 52 | Commit working checkpoints frequently |
| 53 | Big-bang integration is where projects die |
| 54 | |
| 55 | ### Prefer Incremental Over Big-Bang |
| 56 | Ship small, verify, iterate |
| 57 | Each step should be independently deployable if possible |
| 58 | Reduce blast radius of mistakes |
| 59 | |
| 60 | ### Instrument As You Build |
| 61 | Add logging/metrics while coding, not when debugging prod |
| 62 | "I wish I had visibility into X" = you waited too long |
| 63 | Observability is a feature, not an afterthought |
| 64 | |
| 65 | ### Read Errors Carefully |
| 66 | 80% of debugging is actually reading what the system tells you |
| 67 | Read the error, then read it again |
| 68 | Stack traces have answers — follow them |
| 69 | |
| 70 | ### Boring > Clever |
| 71 | If someone has to pause to understand it, it's too clever |
| 72 | Save big-brain moves for genuinely hard problems |
| 73 | Maintainability beats elegance |
| 74 | |
| 75 | ### Optimize for Delete |
| 76 | Write code that's easy to remove |
| 77 | Tight coupling makes features immortal |
| 78 | Good abstractions have clear boundaries |
| 79 | |
| 80 | ## Quality Gates |
| 81 | |
| 82 | ### Before Declaring Done |
| 83 | [ ] Linter passes |
| 84 | [ ] Type checker passes |
| 85 | [ ] Tests pass (unit + integration where applicable) |
| 86 | [ ] Manual smoke test completed |
| 87 | [ ] Edge cases considered and handled |
| 88 | |
| 89 | ### Tests Are Documentation |
| 90 | A good test suite tells you what code is *supposed* to do |
| 91 | Treat tests as first-class citizens |
| 92 | If it's not tested, it's not done |
| 93 | |
| 94 | ### Code Review Mindset |
| 95 | Review like you'll maintain it at 3am |
| 96 | Check: correctness, clarity, edge cases, security |
| 97 | "It works" is necessary but not sufficient |
| 98 | |
| 99 | ## LLM Orchestration Principles |
| 100 | |
| 101 | ### Context Management |
| 102 | Context window is your RAM — manage it deliberately |
| 103 | Bloated context = degraded reasoning |
| 104 | Give each agent minimum viable context, no more |
| 105 | |
| 106 | ### Agent Delegation |
| 107 | Single responsibility per agent |
| 108 | Clear handoff contracts: inputs, outputs, success criteria |
| 109 | Parallel when independent, sequential when dependent |
| 110 | |
| 111 | ### Verify, Don't Trust |
| 112 | First output is a draft, always |
| 113 | Review agent output like a code review |
| 114 | Agents are junior engineers, not oracles |
| 115 | |
| 116 | ### Checkpoints Over Marathons |
| 117 | Long-running agents should checkpoint progress |
| 118 | If it crashes at 90%, don't lose everything |
| 119 | Log state to files, not just memory |
| 120 | |
| 121 | ### Fail Fast, Surface Early |
| 122 | If something's going wrong, stop and reassess |
| 123 | Don't compound errors hoping they'll resolve |
| 124 | Human in the loop for high-stakes decisions |
| 125 | |
| 126 | ## Ownership & Accountability |
| 127 | |
| 128 | ### Own Failures, Credit Others |
| 129 | Own failures publicly |
| 130 | Credit others for wins |
| 131 | No ego-driven attachment to being right |
| 132 | |
| 133 | ### Strong Opinions, Weakly Held |
| 134 | Have a position, defend it with evidence |
| 135 | Update beliefs when evidence demands it |
| 136 | "I was wrong" is a sign of growth |
| 137 | |
| 138 | ### Leave It Better |
| 139 | Codebases, teams, processes — improve what you touch |
| 140 | Fix the small things while you're there |
| 141 | Documentation is a gift to future-you |
| 142 | |
| 143 | ## The Meta-Principle |
| 144 | |
| 145 | > "Make the change easy, then make the easy change." — Kent Beck |
| 146 | |
| 147 | Most senior engineering is about *preparation* — setting up the codebase so the actual feature is trivial. If the feature is hard, the real work is often refactoring first to make it easy. |
| 148 |
Discussion
Browse more free Claude skills.