Token导航 LogoToken导航

Agent Skill · 研究检索

pragmatic-programmer(务实的程序员)

pragmatic-programmer 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

pragmatic-programmer 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证信息还不明确,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 4,504。

总安装 31,824周安装 1,324GitHub Stars 779下载 10,192核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:pragmatic-programmer(务实的程序员)
来源仓库:https://github.com/wondelai/skills
仓库路径:skills/pragmatic-programmer
安装命令:
npx skills add https://github.com/wondelai/skills --skill pragmatic-programmer
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/wondelai/skills --skill pragmatic-programmer

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

用于查找、检索和筛选务实编程相关的经验或资源。适合在 Codex、Claude、Cursor、Gemini CLI 中辅助开发决策。通过 npx skills add 命令从 GitHub 安装并使用。需确认权限范围和维护状态,避免触发联网或文件操作。建议结合原始 README 核验具体检索范围和输出形式。

来源仓库内路径:skills/pragmatic-programmer

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/wondelai/skills --skill pragmatic-programmer;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

pragmatic-programmer 怎么安装?

在终端执行 npx skills add https://github.com/wondelai/skills --skill pragmatic-programmer。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

pragmatic-programmer 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

pragmatic-programmer 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

pragmatic-programmer 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

pragmatic-programmer 用的人多吗?

公开数据是累计安装 31,824 次,近一周安装 1,324 次,下载 10,192 次,GitHub 779 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

pragmatic-programmer 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
pragmatic-programmer

务实的程序员 · 本页

31,824779需要联网未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

The Pragmatic Programmer Framework

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

Core Principle

Care about your craft. Software development is a craft that demands continuous learning, disciplined practice, and personal responsibility. Pragmatic programmers think beyond the immediate problem -- they consider context, trade-offs, and long-term consequences of every technical decision.

The foundation: Great software comes from great habits. A pragmatic programmer maintains a broad knowledge portfolio, communicates clearly, avoids duplication ruthlessly, keeps components orthogonal, and treats every line of code as a living asset that must earn its place. The goal is not perfection -- it is building systems that are easy to change, easy to understand, and easy to trust.

Scoring

Goal: 10/10. When reviewing or creating software designs, architecture, or code, rate it 0-10 based on adherence to the principles below. A 10/10 means full alignment with all guidelines; lower scores indicate gaps to address. Always provide the current score and specific improvements needed to reach 10/10.

The Pragmatic Programmer Framework

Seven meta-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: When knowledge is duplicated, changes must be made 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)
  • Code comments that restate the code violate DRY -- comments should explain *why*, not *what*
  • Database schemas, API specs, and documentation are all sources of duplication if not 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 truthDefine DB connection in one env file, reference everywhere
Validation rulesShared schemaUse JSON Schema or Zod schema for both client and server validation
API contractsGenerate from specOpenAPI spec generates types, docs, and client code
Business logicDomain moduleTax calculation in one module, not scattered across controllers
Database schemaMigration-drivenSchema defined in migrations, ORM models generated from DB

See: references/dry-orthogonality.md

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: Orthogonal systems are easier to test, easier to change, and produce fewer side effects. When you change the database layer, the UI should not break. When you change the auth provider, the business logic should not care.

Key insights:

  • Ask: "If I dramatically change the requirements behind a particular 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
  • Toolkits and libraries that force you to inherit from framework 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
ConfigurationEnvironment-drivenFeature flags in config, not if branches in business logic
DeploymentIndependent servicesDeploy auth service without redeploying payment service

See: references/dry-orthogonality.md

3. Tracer Bullets and Prototypes

Core concept: Tracer bullets are end-to-end implementations that connect 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 feedback. You see what the system looks like end-to-end before investing in filling out every feature. Users can 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
  • Tracer bullets work when you're "shooting in the dark" -- requirements are vague, architecture is unproven
  • If a tracer misses, adjust and fire again -- the cost of iteration is low
  • Prototypes should be clearly labeled as throwaway -- never let a prototype become production code

Code applications:

ContextPatternExample
New projectVertical sliceBuild one feature end-to-end: button -> API -> DB -> response
Uncertain techSpike prototypeTest if WebSocket performance is sufficient before committing
Framework evalTracer through stackBuild login flow through the full framework before choosing it
MicroserviceWalking skeletonDeploy a hello-world service through the full CI/CD pipeline
Data pipelineEnd-to-end flowOne record from ingestion through transformation to output

See: references/tracer-bullets.md

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 class 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 -- making bugs visible and traceable. 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; use 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
Function exitPostcondition checkVerify returned list is sorted before returning
Class stateInvariant validationvalidate! method called after every state mutation
API boundarySchema validationValidate request body against schema before processing
Data pipelineStage assertionsAssert row count after ETL transform matches expectation

See: references/contracts-assertions.md

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 and well-maintained, 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: add a TODO with a ticket, disable the feature, replace with 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 that add // TODO: fix later without a ticket
Tech debtDebt budgetAllocate 20% of each sprint to fixing broken windows
New team memberClean onboarding pathFirst task: fix a broken window to learn the codebase
MonitoringEntropy metricsTrack linting violations, test coverage trends over time

See: references/broken-windows.md

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 has hard-coded 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
  • Use 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 about predicting the future; it's about 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
ArchitectureEvent-driven decouplingServices communicate via events, not direct HTTP calls
DeploymentContainer abstractionDockerized app runs on AWS, GCP, or bare metal unchanged

See: references/reversibility.md

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: Estimation builds trust with stakeholders when done honestly ("1-3 weeks" is better than "2 weeks exactly"). A knowledge portfolio ensures you stay 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, divided by 6
  • Break estimates into components and estimate each; the total is more accurate than a single guess
  • Keep an estimation log: compare estimates to actuals and calibrate
  • Knowledge portfolio rules: invest regularly (learn something every week), diversify (don't only learn your stack), manage risk (mix safe and speculative bets), buy low/sell high (learn emerging tech early)

Code applications:

ContextPatternExample
Sprint planningRange estimates"3-5 days" with confidence level, not a single number
New technologyTime-boxed spike"I'll spend 2 days evaluating; then I can estimate properly"
Large projectBottom-up decompositionBreak into tasks < 1 day, sum with buffer for integration
LearningWeekly investment1 hour/week on a new language, tool, or domain
Career growthPortfolio diversificationMix of depth (expertise) and breadth (adjacent skills)

See: references/estimation-portfolio.md

Common Mistakes

MistakeWhy It FailsFix
DRY-ing similar-looking code that serves different purposesCreates coupling between unrelated concepts; changes to one break the otherOnly DRY knowledge, not coincidental code similarity
Skipping tracer bullets and building layer-by-layerIntegration issues surface late; no end-to-end feedback until the endBuild one thin vertical slice first
Ignoring broken windows "because we'll refactor later"Entropy accelerates; later never comes; team morale dropsFix immediately or board up with a tracked ticket
Estimates as single-point commitmentsCreates false precision; erodes trust when missedAlways give ranges with confidence levels
Making everything "flexible" upfrontOver-engineering; YAGNI; abstraction without evidence of needAdd flexibility when you have concrete evidence you'll need it
Assertions in production removed "for performance"Bugs that assertions would catch now silently corrupt dataKeep critical assertions; benchmark before removing any
Global state "for convenience"Destroys orthogonality; every module 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 and 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

Reference Files

Further Reading

About the Authors

Andrew Hunt is a programmer, author, and publisher. He co-founded the Pragmatic Bookshelf and was one of the 17 original authors of the Agile Manifesto. His work focuses on the human side of software development -- how teams learn, communicate, and maintain quality over time.

David Thomas is a programmer and author who co-founded the Pragmatic Bookshelf. He coined the term "DRY" (Don't Repeat Yourself) and "Code Kata." A pioneer in Ruby adoption outside Japan, he co-authored "Programming Ruby" (the Pickaxe book) and has spent decades advocating for developer pragmatism over dogma.

适合场景

01

研究助手

02

事实核查

03

知识库问答

04

带来源的搜索总结

能力概览

能力 1

组合搜索和大模型调用

能力 2

支持多来源检索和总结

能力 3

强调引用来源和事实核查

能力 4

适合研究型 Agent 流程

平台分布

Codex

34.17%
按下载量换算3,483

Claude

29.45%
按下载量换算3,002

Cursor

19.44%
按下载量换算1,981

Gemini CLI

9.11%
按下载量换算928

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills