Agent skill

Pragmatic Programmer

by wondelai in wondelai/skills

Apply meta-principles of software craftsmanship: DRY, orthogonality, tracer bullets, and design by contract.

MITAuto-check passedDevelopment

Install Pragmatic Programmer

skills CLI
$ npx skills add wondelai/skills --skill pragmatic-programmer -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install wondelai/skills pragmatic-programmer --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/wondelai/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/pragmatic-programmer .claude/skills/pragmatic-programmer && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
pragmatic-programmer
GitHub stars
2.4k
Token cost
~4.1k tokens
SKILL.md length
2,041 words
Files
7 (incl. references)
Skills in repo
61
Repo updated
First seen
Licence
MIT

At a glance

Apply meta-principles of software craftsmanship: DRY, orthogonality, tracer bullets, and design by contract.

  • Works in 7 steps: DRY (Don't Repeat Yourself) → Orthogonality → Tracer Bullets and Prototypes → …
  • The user mentions best practices
  • SKILL.md covers Core Principle, Scoring, The Seven Meta-Principles and Common Mistakes, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Pragmatic Programmer is an agent skill from wondelai/skills. Apply meta-principles of software craftsmanship: DRY, orthogonality, tracer bullets, and design by contract. Use when the user mentions "best practices", "pragmatic approach", "broken windows", "tracer bullet", "software craftsmanship", "avoid technical debt", "code ownership", or "how do I become a better developer". Also trigger when evaluating build-vs-buy decisions, designing estimation approaches, or choosing between reversible and irreversible architectural decisions. Covers estimation, domain languages…

Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including reference files (for example `references/broken-windows.md`, `references/contracts-assertions.md` and `references/dry-orthogonality.md`).

It sits in Development, covering Code quality, Technical debt and Refactoring. The repository describes itself as: Wondel.ai Agent Skills — Business, Marketing, UX & Coding Frameworks from Bestselling Books. 50 skills + 12 guided journeys for Claude Code, Codex, Cursor & other agentskills.io… The licence is MIT.

When your agent uses it

  • The user mentions best practices
  • Pragmatic approach
  • Software craftsmanship
  • Avoid technical debt

Example prompts

  • “best practices”
  • “pragmatic approach”
  • “broken windows”
  • “/pragmatic-programmer”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. DRY (Don't Repeat Yourself)
  2. Orthogonality
  3. Tracer Bullets and Prototypes
  4. Design by Contract and Assertive Programming
  5. The Broken Window Theory
  6. Reversibility and Flexibility
  7. Estimation and Knowledge Portfolio

What it can do on your machine

Read from SKILL.md and the folder at commit c172996. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • amazon.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Pragmatic Programmer loads about 4.1k tokens when it runs, and up to ~23k if it reads all its reference files. Until then it costs about 162 tokens; SKILL.md has 2,041 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~162
When it runs · the whole SKILL.md, loaded when a task matches
~4.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~23k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from wondelai/skills at commit c172996, republished under its MIT licence (© wondelai). 2,041 words, ~4,140 tokens.

Download SKILL.mdSave it as .claude/skills/pragmatic-programmer/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
pragmatic-programmer
description
Apply meta-principles of software craftsmanship: DRY, orthogonality, tracer bullets, and design by contract. Use when the user mentions "best practices", "pragmatic approach", "broken windows", "tracer bullet", "software craftsmanship", "avoid technical debt", "code ownership", or "how do I become a better developer". Also trigger when evaluating build-vs-buy decisions, designing estimation approaches, or choosing between reversible and irreversible architectural decisions. Covers estimation, domain languages, and reversibility. For code-level quality, see clean-code. For refactoring techniques, see refactoring-patterns.
license
MIT
metadata.author
wondelai
metadata.version
1.4.0

The Pragmatic Programmer Framework

A systems-level approach to software craftsmanship from Hunt & Thomas' "The Pragmatic Programmer" (20th Anniversary Edition). Apply these meta-principles when designing systems, reviewing architecture, writing code, or advising on engineering culture -- how to think about software, not just how to write it.

Core Principle

Care about your craft. Software development demands continuous learning, disciplined practice, and personal responsibility -- pragmatic programmers think beyond the immediate problem to context, trade-offs, and long-term consequences. Great software comes from great habits: avoid duplication ruthlessly, keep components orthogonal, and treat every line of code as a living asset that must earn its place. The goal is not perfection -- it is systems that are easy to change, easy to understand, and easy to trust.

Scoring

Goal: 10/10. Score against the seven Quick Diagnostic rows: award ~1.4 points per row answered "yes" (7 yes = 10). Then band the result:

  • 9-10: every principle holds -- DRY knowledge, orthogonal layers, a working tracer slice, contracts at boundaries, no broken windows, reversible vendor/DB choices, ranged estimates.
  • 5-6: 1-2 violations that cost real change-effort (e.g. business logic coupled to the DB, single-point estimates).
  • <=3: pervasive duplication, global state, or accumulated broken windows -- entropy is winning.

Always state the score, name the failing diagnostic rows, and give the specific fix from the Action column to reach 10/10.

The Seven Meta-Principles

Seven principles for building software that lasts:

1. DRY (Don't Repeat Yourself)

Core concept: Every piece of knowledge must have a single, unambiguous, authoritative representation within a system. DRY is about knowledge, not code -- duplicated logic, business rules, or configuration are far more dangerous than duplicated syntax.

Why it works: Duplicated knowledge must be changed in multiple places; eventually one gets missed, introducing inconsistency. DRY reduces the surface area for bugs and makes systems easier to change.

Key insights:

  • DRY applies to knowledge and intent, not textual similarity -- two identical code blocks serving different business rules are NOT duplication
  • Four types of duplication: imposed (environment forces it), inadvertent (developers don't realize), impatient (too lazy to abstract), inter-developer (multiple people duplicate)
  • Comments that restate the code violate DRY -- explain why, not what
  • Database schemas, API specs, and documentation duplicate knowledge unless generated from a single source
  • The opposite of DRY is WET: "Write Everything Twice" or "We Enjoy Typing"

Code applications:

ContextPatternExample
Config valuesSingle source of truthDB connection in one env file, referenced everywhere
Validation rulesShared schemaOne JSON Schema or Zod schema for client and server
API contractsGenerate from specOpenAPI spec generates types, docs, and client code

See: references/dry-orthogonality.md when classifying a specific duplication or deciding whether two code blocks are truly the same knowledge -- per-type examples and mitigations for the four duplication types.

2. Orthogonality

Core concept: Two components are orthogonal if changes in one do not affect the other. Design systems where components are self-contained, independent, and have a single, well-defined purpose.

Why it works: Decoupling localizes change -- a fix in one module can't ripple into unrelated ones, so blast radius stays bounded. Change the database layer and the UI should not break; change the auth provider and business logic should not care.

Key insights:

  • Ask: "If I dramatically change the requirements behind a function, how many modules are affected?" The answer should be one
  • Eliminate effects between unrelated things -- a logging change should never break billing
  • Layered architectures promote orthogonality: presentation, domain logic, data access
  • Avoid global data -- every consumer of global state is coupled to it
  • Frameworks that force you to inherit from their classes reduce orthogonality

Code applications:

ContextPatternExample
ArchitectureLayered separationController -> Service -> Repository, each replaceable
DependenciesDependency injectionPass a Notifier interface, not a SlackClient concrete class
TestingIsolated unit testsTest business logic without database, network, or filesystem

See: references/dry-orthogonality.md when measuring coupling or refactoring toward decoupled layers -- the change-impact and stranger tests, layered-architecture diagram, and the helicopter analogy.

3. Tracer Bullets and Prototypes

Core concept: Tracer bullets are end-to-end implementations connecting all layers of the system with minimal functionality. Unlike prototypes (which are throwaway), tracer bullet code is production code -- thin but real.

Why it works: Tracer bullets give immediate end-to-end feedback before you invest in filling out every feature. Users see something real, developers have a framework to build on, and integration issues surface early.

Key insights:

  • Tracer bullet: thin but complete path through the system (UI -> API -> DB) -- you keep it
  • Prototype: focused exploration of a single risky aspect -- you throw it away
  • Use tracer bullets when "shooting in the dark" -- vague requirements, unproven architecture
  • If a tracer misses, adjust and fire again -- the cost of iteration is low
  • Label prototypes clearly as throwaway -- never let one become production code

Code applications:

ContextPatternExample
New projectVertical sliceOne feature end-to-end: button -> API -> DB -> response
Uncertain techSpike prototypeTest WebSocket performance before committing
MicroserviceWalking skeletonHello-world service through the full CI/CD pipeline

See: references/tracer-bullets.md when deciding tracer vs. prototype on a new project or building a walking skeleton -- the shooting-in-the-dark decision, iteration loop, and common pitfalls.

4. Design by Contract and Assertive Programming

Core concept: Define and enforce the rights and responsibilities of software modules through preconditions (what must be true before), postconditions (what is guaranteed after), and invariants (what is always true). When a contract is violated, fail immediately and loudly.

Why it works: Contracts make assumptions explicit. Instead of silently corrupting data or limping along in an invalid state, the system crashes at the point of the problem -- dead programs tell no lies.

Key insights:

  • Preconditions: caller's responsibility -- "I accept only positive integers"
  • Postconditions: routine's guarantee -- "I will return a sorted list"
  • Invariants: always true -- "Account balance never goes negative"
  • Crash early: a dead program does far less damage than a crippled one
  • Use assertions for things that should never happen; error handling for things that might
  • In dynamic languages, implement contracts through runtime checks and guard clauses

Code applications:

ContextPatternExample
Function entryPrecondition guardassert age >= 0, "Age cannot be negative" at function start
Class stateInvariant validationvalidate! called after every state mutation
API boundarySchema validationValidate request body against schema before processing

See: references/contracts-assertions.md when adding contracts to a routine or deciding assertion vs. error handling -- worked pre/post/invariant patterns, dynamic-language guard clauses, and the assertions-vs-error-handling boundary.

5. The Broken Window Theory

Core concept: One broken window -- a badly designed piece of code, a poor management decision, a hack that "we'll fix later" -- starts the rot. Once a system shows neglect, entropy accelerates and discipline collapses.

Why it works: Psychology. When code is clean, developers feel social pressure to keep it that way; when code is already messy, the threshold for adding more mess drops to zero. Quality is a team habit, not an individual heroic effort.

Key insights:

  • Don't leave broken windows (bad designs, wrong decisions, poor code) unrepaired
  • If you can't fix it now, board it up: a TODO with a ticket, a disabled feature, a stub
  • Be a catalyst for change: show people a working glimpse of the future (stone soup)
  • Watch for slow degradation (boiled frog) -- monitor tech debt metrics over time
  • The first hack is the most expensive because it gives permission for all subsequent hacks

Code applications:

ContextPatternExample
Legacy codeBoard up windowsWrap bad code in a clean interface before adding features
Code reviewZero-tolerance for new debtReject PRs adding // TODO: fix later without a ticket
Tech debtDebt budgetAllocate 20% of each sprint to fixing broken windows

See: references/broken-windows.md when a team is normalizing neglect or you need to drive a turnaround -- repair strategies, the stone-soup catalyst play, and building a culture of quality.

Show full SKILL.md (765 more words)Show less
6. Reversibility and Flexibility

Core concept: There are no final decisions. Build systems that make it easy to change your mind about databases, frameworks, vendors, architecture, and deployment targets -- the cost of change should be proportional to the scope of change.

Why it works: Requirements change, vendors get acquired, technologies fall out of favor. If your architecture hard-codes assumptions about any of these, every change becomes a rewrite; flexible architecture treats decisions as configuration, not structure.

Key insights:

  • Abstract third-party dependencies behind your own interfaces -- never let vendor APIs leak into business logic
  • The "forking road" test: could you switch from Postgres to DynamoDB in a week? If not, you're coupled
  • Metadata-driven systems (config files, feature flags) are more flexible than hard-coded logic
  • YAGNI applies to premature abstraction too -- don't build flexibility you don't need yet
  • Reversibility is not predicting the future; it's not painting yourself into a corner

Code applications:

ContextPatternExample
DatabaseRepository patternBusiness logic calls repo.save(user), not pg.query(...)
External APIAdapter/wrapperPaymentGateway interface wraps Stripe; swap to Braintree later
Feature flagsRuntime togglesNew checkout flow behind a flag, rollback in seconds

See: references/reversibility.md when committing to a vendor or framework, or weighing how reversible a decision must be -- per-layer reversibility patterns, the forking-road test, and when NOT to optimize for reversibility.

7. Estimation and Knowledge Portfolio

Core concept: Learn to estimate reliably by understanding scope, building models, decomposing into components, and assigning ranges. Manage your learning like a financial portfolio: invest regularly, diversify, and rebalance.

Why it works: Honest estimation builds trust with stakeholders ("1-3 weeks" beats a confidently wrong "2 weeks"). A knowledge portfolio keeps you relevant as technologies shift -- the programmer who stops learning stops being effective.

Key insights:

  • Ask "what is this estimate for?" -- context determines precision (budget planning vs. sprint planning)
  • Use PERT: (Optimistic + 4x Most Likely + Pessimistic) / 6
  • Decompose into components and estimate each; the sum is more accurate than a single guess
  • Keep an estimation log: compare estimates to actuals and calibrate
  • Portfolio rules: invest regularly (learn weekly), diversify beyond your stack, mix safe and speculative bets, learn emerging tech early (buy low)

Code applications:

ContextPatternExample
Sprint planningRange estimates"3-5 days" with confidence level, not a single number
New technologyTime-boxed spike"2 days evaluating; then I can estimate properly"
LearningWeekly investment1 hour/week on a new language, tool, or domain

See: references/estimation-portfolio.md when producing an estimate you'll be held to or calibrating past misses -- the PERT and decomposition procedures, an estimation-log calibration loop, and portfolio rebalancing.

Common Mistakes

MistakeWhy It FailsFix
DRY-ing similar-looking code that serves different purposesCouples unrelated concepts; changes to one break the otherOnly DRY knowledge, not coincidental code similarity
Skipping tracer bullets, building layer-by-layerIntegration issues surface late; no end-to-end feedbackBuild one thin vertical slice first
Ignoring broken windows "because we'll refactor later"Entropy accelerates; later never comes; morale dropsFix immediately or board up with a tracked ticket
Estimates as single-point commitmentsFalse precision erodes trust when missedAlways give ranges with confidence levels
Making everything "flexible" upfrontOver-engineering; abstraction without evidence of needAdd flexibility when you have concrete evidence you'll need it
Removing production assertions "for performance"Bugs assertions would catch now silently corrupt dataKeep critical assertions; benchmark before removing any
Global state "for convenience"Destroys orthogonality; everything coupled to everythingUse dependency injection and explicit parameters

Quick Diagnostic

QuestionIf NoAction
Can I change the database without touching business logic?Orthogonality violationIntroduce repository/adapter pattern
Do I have an end-to-end slice working?Missing tracer bulletBuild one vertical slice before expanding
Is every business rule defined in exactly one place?DRY violationIdentify the authoritative source; remove duplicates
Would a new developer call this codebase "clean"?Broken windows presentSchedule a dedicated cleanup sprint
Do my estimates include ranges and confidence levels?Estimation problemSwitch to PERT or range-based estimates
Can I roll back this deployment in under 5 minutes?Reversibility gapAdd feature flags and blue-green deploys
Am I learning something new every week?Knowledge portfolio stagnantSchedule weekly learning time and track it

Further Reading

About the Authors

Andrew Hunt and David Thomas co-founded the Pragmatic Bookshelf and were among the 17 original authors of the Agile Manifesto. Thomas coined "DRY" and "Code Kata" and co-authored Programming Ruby (the Pickaxe book); Hunt focuses on how teams learn, communicate, and maintain quality. Together they wrote The Pragmatic Programmer, one of the most influential software books ever published.

© wondelai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 6 other files (references) in pragmatic-programmer of wondelai/skills.

  • SKILL.md
  • references/broken-windows.md
  • references/contracts-assertions.md
  • references/dry-orthogonality.md
  • references/estimation-portfolio.md
  • references/reversibility.md
  • references/tracer-bullets.md

Open the folder on GitHubat commit c172996

Compare with similar skills

Pragmatic Programmer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Pragmatic Programmer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pragmatic Programmer this skillwondelai/skills2.4k—~4.1kAutomated safety check: PassMIT
Systematic Code Refactoringluongnv89/claude-howto42k—~3kAutomated safety check: PassMIT
Code Refactoring Workflowluongnv89/claude-howto42k—~3.1kAutomated safety check: PassMIT
Tech Debt Analyzerailabs-393/ai-labs-claude-skills4542 repos~3.9kAutomated safety check: PassMIT
FIXME Resolvertailcallhq/forgecode7.6k—~1.1kAutomated safety check: PassApache-2.0
DesloppifyGit-on-my-level/codex-autorunner875—~3.4kAutomated safety check: PassMIT

Similar skills

  • Systematic Code Refactoring

    luongnv89/claude-howto

    Guides refactoring in phases based on Martin Fowler's method: research, test coverage check, planning and small tested steps, with your approval at each phase.

    42k GitHub stars~3k tokensUpdated 8 days ago
    DevelopmentAuto-check passed
  • Code Refactoring Workflow

    luongnv89/claude-howto

    Guides systematic, test-backed refactoring in the style of Martin Fowler, moving through research, planning and small incremental changes with your approval at each phase.

    42k GitHub stars~3.1k tokensUpdated 8 days ago
    DevelopmentAuto-check passed
  • Tech Debt Analyzer

    ailabs-393/ai-labs-claude-skills

    This skill should be used when analyzing technical debt in a codebase, documenting code quality issues, creating technical debt registers, or assessing code maintainability.

    454 GitHub starsUsed in 2 repos~3.9k tokens
    DevelopmentAuto-check passed
  • FIXME Resolver

    tailcallhq/forgecode

    Finds every FIXME comment in a codebase, groups related ones across files into one task, implements the work they describe and removes the comments once it is done.

    7.6k GitHub stars~1.1k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Desloppify

    Git-on-my-level/codex-autorunner

    Codebase health scanner and technical debt tracker. An agent skill from Git-on-my-level/codex-autorunner.

    875 GitHub stars~3.4k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Code Quality Gate

    fengshao1227/ccg-workflow

    Scans code for complexity, long functions, duplicated blocks, naming problems and code smells with a Node script, then reports and suggests refactors.

    5.9k GitHub stars~593 tokensUpdated 23 days ago
    DevelopmentAuto-check: notes

More from wondelai/skills

All 61 skills in this repo
  • Crossing The Chasm

    wondelai/skills

    Navigate the technology adoption lifecycle from early adopters to mainstream market.

    2.4k GitHub stars~3.6k tokensUpdated 28 days ago
    Auto-check passed
  • Design Everyday Things

    wondelai/skills

    Apply foundational design principles: affordances, signifiers, constraints, feedback, and conceptual models.

    2.4k GitHub stars~4k tokensUpdated 28 days ago
    Auto-check passed
  • Design Sprint

    wondelai/skills

    Run a structured 5-day process to prototype, test, and validate product ideas with real users.

    2.4k GitHub stars~3.8k tokensUpdated 28 days ago
    Auto-check passed
  • Hooked UX

    wondelai/skills

    Design habit-forming product loops using the Hook Model (Trigger, Action, Variable Reward, Investment).

    2.4k GitHub stars~3.5k tokensUpdated 28 days ago
    Auto-check passed
  • Improve Retention

    wondelai/skills

    Diagnose and fix retention problems using behavior design (B=MAP).

    2.4k GitHub stars~3.8k tokensUpdated 28 days ago
    Auto-check passed
  • Monetizing Innovation

    wondelai/skills

    Design products and pricing around validated willingness to pay, from Ramanujam & Tacke's "Monetizing Innovation".

    2.4k GitHub stars~5.2k tokensUpdated 28 days ago
    Auto-check passed

Categories

Questions about Pragmatic Programmer

What does Pragmatic Programmer do?

Apply meta-principles of software craftsmanship: DRY, orthogonality, tracer bullets, and design by contract. Pragmatic Programmer is an agent skill from wondelai/skills. Apply meta-principles of software craftsmanship: DRY, orthogonality, tracer bullets, and design by contract.

When should I use Pragmatic Programmer?

Pragmatic Programmer fits situations like: the user mentions best practices; pragmatic approach; software craftsmanship; avoid technical debt.

How do I install Pragmatic Programmer in Claude Code?

Run `npx skills add wondelai/skills --skill pragmatic-programmer -a claude-code`. Or copy the skill folder (pragmatic-programmer in wondelai/skills) into .claude/skills/pragmatic-programmer in your project. Claude Code loads it when a task matches its description.

How do I install Pragmatic Programmer in Codex?

Run `npx skills add wondelai/skills --skill pragmatic-programmer -a codex`. Or copy the skill folder (pragmatic-programmer in wondelai/skills) into .agents/skills/pragmatic-programmer in your project. Codex loads it when a task matches its description.

Can I use Pragmatic Programmer in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add wondelai/skills --skill pragmatic-programmer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pragmatic-programmer, .gemini/skills/pragmatic-programmer, .github/skills/pragmatic-programmer and .opencode/skills/pragmatic-programmer in your project.

What does Pragmatic Programmer need to run?

SKILL.md names no scripts, command-line tools or credentials: Pragmatic Programmer is instructions for the agent only.

Does Pragmatic Programmer access the network?

SKILL.md names 1 domain. As links in the text: amazon.com. This is read from the text; nothing was executed.

Is Pragmatic Programmer safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Pragmatic Programmer use?

Pragmatic Programmer is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Pragmatic Programmer use?

About 4.1k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 19k tokens, read only when the agent opens those files.

What are the alternatives to Pragmatic Programmer?

Skills that share tags, products or a category with Pragmatic Programmer: Systematic Code Refactoring (luongnv89/claude-howto, 42k stars), Code Refactoring Workflow (luongnv89/claude-howto, 42k stars), Tech Debt Analyzer (ailabs-393/ai-labs-claude-skills, 454 stars) and FIXME Resolver (tailcallhq/forgecode, 7.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Pragmatic Programmer?

wondelai (a GitHub organization) maintains it in wondelai/skills, which has 2,356 GitHub stars. The repository holds 61 skills in this directory. The repository was last updated on September 10, 2026.

Source: wondelai/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.