Matt Pocock Skills:AI 时代的真实工程技能库

0 阅读18分钟

项目仓库mattpocock/skills
Star 数:51,400+ ⭐
排名:GitHub 全球第 466 位
开源协议:MIT License
主要语言:Shell


目录

  1. 引言:为什么需要真实工程技能?
  2. 项目概述与核心哲学
  3. 四大核心问题及解决方案
  4. 项目架构与目录结构
  5. 核心技能详解
  6. 安装与快速开始
  7. 技能设计模式
  8. 实战案例:使用 TDD 技能
  9. 设计理念深度剖析
  10. 总结与延伸阅读

1. 引言:为什么需要真实工程技能?

1.1 AI 编码时代的挑战

随着 Claude Code、Copilot、Cursor 等 AI 编码工具的普及,软件开发的门槛大幅降低。然而,这种便利也带来了新的问题:

😰 问题现象:
├── "AI 生成的代码根本不是我想要的"
├── "代码能用,但架构一团糟"
├── "调试了三天三夜,问题还是没找到"
└── "每次问 AI 都说需要更多上下文"

🤔 深层原因:
├── 人类与 AI 之间存在沟通鸿沟
├── 缺乏系统化的开发流程和反馈机制
├── 过度依赖 AI,忽视了软件工程基本功
└── 没有建立团队/项目的共享语言

1.2 Matt Pocock 的回答

Matt Pocock 是谁?

  • Total TypeScript 创始人
  • 前 Vercel 工程师
  • TypeScript 教育者和布道者
  • 拥有 60,000+ 订阅者的 newsletter

他的答案是:

"真实工程技能"(Skills for Real Engineers)—— 基于数十年工程经验设计的 AI 代理技能集合

这些技能不是替代工程基本功,而是将它们系统化、可重复化,帮助工程师在 AI 时代依然保持高质量产出。


2. 项目概述与核心哲学

2.1 项目定位

┌─────────────────────────────────────────────────────────────┐
│                    mattpocock/skills                        │
├─────────────────────────────────────────────────────────────┤
│  🎯 使命:让 AI 代理做真实工程,而非"氛围编码"              │
│                                                             │
│  📚 特点:                                                  │
│  ├── 小型化:每个技能专注单一职责,易于理解和修改           │
│  ├── 可组合:技能可以单独使用,也可以组合形成工作流         │
│  ├── 模型无关:适用于任何 AI 模型(Claude/GPT/其他)        │
│  └── 可定制:鼓励用户修改以适应自己的需求                   │
└─────────────────────────────────────────────────────────────┘

2.2 核心哲学

来自项目 README 的原话:

"Developing real applications is hard. Approaches like GSD, BMAD, and Spec-Kit try to help by owning the process. But while doing so, they take away your control and make bugs in the process hard to resolve."

翻译:开发真实应用程序很难。GSD、BMAD、Spec-Kit 等方法试图通过掌控流程来提供帮助,但这样做会剥夺你的控制权,使流程中的错误难以解决。

Matt 的解决思路:

传统方法Matt 的方法
流程优先技能优先
自动化一切保留人的控制权
固定流程可组合、灵活
通用模板领域特定

2.3 项目数据

指标数值
GitHub Stars51,400+
GitHub Forks4,300+
排名全球第 466 位
创建时间2026 年 2 月
提交次数63 次
贡献者2 人
技能总数16 个
Newsletter 订阅~60,000 人

3. 四大核心问题及解决方案

3.1 问题总览

┌────────────────────────────────────────────────────────────────────┐
│                    AI 编码代理的四大失败模式                          │
├──────────────┬─────────────────────────────────────────────────────┤
│  问题 #1     │  代理没有按照我的意愿执行                             │
│  问题 #2     │  代理过于冗长                                        │
│  问题 #3     │  代码无法工作                                        │
│  问题 #4     │  构建了泥球架构                                      │
└──────────────┴─────────────────────────────────────────────────────┘

3.2 问题 #1:代理没有按照我的意愿执行

引用经典:

"No-one knows exactly what they want."

— David Thomas & Andrew Hunt,《The Pragmatic Programmer》

问题分析:

用户脑海中的想法 ──────→ [沟通鸿沟] ──────→ AI 理解的实现
     vs
                        结果:AI 构建的东西完全不是用户想要的

解决方案:Grilling Session(深度访谈)

技能用途
/grill-me非代码用途的通用访谈
/grill-with-docs代码用途的高级访谈(带文档更新)

工作原理:

用户:"我想添加一个用户认证功能"

AI 追问:
1. "用户指的是登录用户还是管理员用户?"
   → 用户:"登录用户"

2. "使用什么认证方式?OAuth、邮箱密码、还是第三方登录?"
   → 用户:"邮箱密码"

3. "密码需要加密存储吗?使用什么加密算法?"
   → 用户:"bcrypt"

4. "需要支持忘记密码功能吗?通过邮件重置?"
   → 用户:"是的"

...

直到决策树的每个分支都被解决!

3.3 问题 #2:代理过于冗长

问题分析:

😰 AI 生成代码:
"Here is the function that handles the user authentication process
by first checking if the provided credentials match our stored hash..."

✅ 理想情况:
"authenticateUser(credentials)"

根本原因:

  • AI 不理解项目中的专业术语
  • 缺乏领域模型和共享语言
  • 每次都需要重新解释相同的概念

解决方案:CONTEXT.md + 共享语言

示例对比:

❌ 之前(模糊描述)✅ 之后(共享语言)
"There's a problem when a lesson inside a section of a course is made 'real'""There's a problem with the materialization cascade"

共享语言的额外好处:

  • ✅ 变量、函数、文件名命名一致
  • ✅ 代码库更易于 AI 导航
  • ✅ AI "思考" 消耗的 token 更少

3.4 问题 #3:代码无法工作

问题分析:

没有反馈循环的 AI 编码 = 盲目飞行

解决方案:测试驱动开发 + 结构化调试

技能用途
/tdd红-绿-重构循环,测试先行
/diagnose硬 Bug 的规范化诊断循环

/tdd 核心流程:

┌─────────────────────────────────────────────────────────────┐
│                    TDD 红-绿-重构循环                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│    RED 阶段              GREEN 阶段            REFACTOR     │
│    ┌─────────┐           ┌─────────┐          ┌─────────┐  │
│    │ 写失败   │    →     │ 最简代码 │    →     │ 重构代码 │  │
│    │ 的测试   │           │ 使测试   │           │ 提高质量 │  │
│    │         │           │ 通过     │           │         │  │
│    └─────────┘           └─────────┘           └─────────┘  │
│                                                             │
│    关键词:垂直切片(一次只做一个行为)                        │
└─────────────────────────────────────────────────────────────┘

/diagnose 核心流程:

复现 → 最小化 → 假设 → 工具化 → 修复 → 回归测试

3.5 问题 #4:构建了泥球架构

引用经典:

"Invest in the design of the system every day."

— Kent Beck,《Extreme Programming Explained》

问题分析:

AI 的超能力 = 加速编码
AI 的副作用 = 加速软件熵增

结果:代码库以前所未有的速度变得复杂难懂

解决方案:关注代码设计

技能用途
/to-prd创建 PRD 前先询问模块设计
/zoom-out放大视角,理解代码在系统中的位置
/improve-codebase-architecture拯救泥球代码库

4. 项目架构与目录结构

4.1 整体目录结构

mattpocock/skills/
│
├── .claude-plugin/              # Claude 插件配置
│
├── .out-of-scope/               # 范围外内容
│
├── docs/                        # 文档
│   └── adr/                     # 架构决策记录 (Architecture Decision Records)
│
├── scripts/                     # 实用脚本
│
├── skills/                      # 核心技能目录
│   │
│   ├── engineering/             # 🏗️ 工程类技能(9个)
│   │   ├── diagnose/            # 调试诊断
│   │   ├── grill-with-docs/     # 深度访谈(带文档)
│   │   ├── triage/              # 问题分类
│   │   ├── improve-codebase-architecture/  # 架构改进
│   │   ├── setup-matt-pocock-skills/      # 初始化配置
│   │   ├── tdd/                # 测试驱动开发
│   │   ├── to-issues/           # 拆解为 Issues
│   │   ├── to-prd/              # 创建 PRD
│   │   └── zoom-out/            # 宏观视角
│   │
│   ├── productivity/            # ⚡ 生产力类技能(3个)
│   │   ├── caveman/             # 极简沟通模式
│   │   ├── grill-me/            # 通用访谈
│   │   └── write-a-skill/       # 创建新技能
│   │
│   └── misc/                    # 🔧 杂项工具(4个)
│       ├── git-guardrails-claude-code/
│       ├── migrate-to-shoehorn/
│       ├── scaffold-exercises/
│       └── setup-pre-commit/
│
├── CLAUDE.md                    # Claude 代理配置
├── CONTEXT.md                   # 项目共享语言文档
├── LICENSE                      # MIT 许可证
└── README.md                    # 项目说明

4.2 技能分类详解

┌─────────────────────────────────────────────────────────────┐
│                      技能分类图                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   engineering/ (9个)          productivity/ (3个)           │
│   ┌─────────────────┐        ┌─────────────────┐           │
│   │ 日常代码工作     │        │ 通用工作流工具   │           │
│   │                 │        │                 │           │
│   │ • TDD           │        │ • caveman       │           │
│   │ • diagnose      │        │ • grill-me      │           │
│   │ • zoom-out      │        │ • write-a-skill │           │
│   │ • ...           │        │                 │           │
│   └─────────────────┘        └─────────────────┘           │
│                                                             │
│   misc/ (4个)                                              │
│   ┌─────────────────┐                                     │
│   │ 备用工具         │                                     │
│   │                 │                                     │
│   │ • git-guardrails│                                     │
│   │ • pre-commit    │                                     │
│   │ • ...           │                                     │
│   └─────────────────┘                                     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4.3 每个技能的文件结构

skill-name/
├── SKILL.md           # 📝 主指令文件(必需)
├── REFERENCE.md        # 📚 详细参考文档(可选)
├── EXAMPLES.md         # 💡 使用示例(可选)
└── scripts/            # 🔧 实用脚本(可选)
    └── helper.sh

SKILL.md 标准格式:

---
name: skill-name
description: 技能描述. Use when [触发条件].
---

# Skill Name

## Quick start
[最小可用示例]

## Workflows
[带检查清单的分步流程]

## Advanced features
[链接到其他文件:See REFERENCE.md]

5. 核心技能详解

5.1 Engineering 技能详解

/tdd — 测试驱动开发

文件位置skills/engineering/tdd/SKILL.md

核心原则:

"测试应通过公共接口验证行为,而非实现细节。代码可以完全改变,但测试不应该。"

好测试 vs 坏测试:

好测试坏测试
集成风格:通过公共 API 测试耦合到实现:模拟内部组件
描述系统做什么描述系统如何做
能承受重构重构时测试就失败

垂直切片 vs 水平切片:

❌ 水平切片(错误):
RED:   test1, test2, test3, test4, test5
GREEN: impl1, impl2, impl3, impl4, impl5

✅ 垂直切片(正确):
RED→GREEN: test1→impl1
RED→GREEN: test2→impl2
RED→GREEN: test3→impl3

完整 TDD 流程:

┌─────────────────────────────────────────────────────────────┐
                        TDD 工作流                            
├─────────────────────────────────────────────────────────────┤
                                                             
  阶段 1: 规划                                                
  ├── [ ] 与用户确认接口变更                                   
  ├── [ ] 识别深度模块机会                                     
  └── [ ] 列出要测试的行为(按优先级)                         
                                                             
  阶段 2: 追踪弹                                              
  ├── RED:  写一个测试  测试失败                              
  └── GREEN: 写最简代码  测试通过                             
                                                             
  阶段 3: 增量循环                                            
  对每个剩余行为:                                             
  ├── RED:  写下一个测试  失败                                
  └── GREEN: 最简代码通过                                      
                                                             
  阶段 4: 重构                                                
  ├── [ ] 提取重复代码                                        
  ├── [ ] 加深模块                                            
  └── [ ] 每次重构后运行测试 ⚠️ 先到 GREEN!                   
                                                             
└─────────────────────────────────────────────────────────────┘

/diagnose — 结构化调试

文件位置skills/engineering/diagnose/SKILL.md

核心洞察:

"如果有一个快速、确定性、可代理运行的 pass/fail 信号来检测 Bug,你会找到原因——二分搜索、假设测试和工具化都只是消耗那个信号。"

诊断循环:

┌─────────────────────────────────────────────────────────────┐
                    6 阶段诊断循环                            
├─────────────────────────────────────────────────────────────┤
                                                             
    Phase 1: 构建反馈循环                                     
    ├── 优先级 1: 失败的测试                                   
    ├── 优先级 2: Curl/HTTP 脚本                              
    ├── 优先级 3: CLI 调用                                     
    └── ... 直到找到可验证的信号                               
                                                             
    Phase 2: 复现 (Reproduce)                                
    └── 运行循环,观察 Bug 出现                               
                                                             
    Phase 3: 假设 (Hypothesise)                              
    ├── 生成 3-5 个排名假设                                    
    └── 每个假设必须是可证伪的                                 
                                                             
    Phase 4: 工具化 (Instrument)                              
    ├── 每个探测映射到特定预测                                 
    ├── 调试器 > 定向日志 > "记录一切"                         
    └── 使用 [DEBUG-xxx] 前缀标记日志                         
                                                             
    Phase 5: 修复 + 回归测试                                  
    ├── 修复前写回归测试                                       
    └── 验证正确边界                                          
                                                             
    Phase 6: 清理 + 复盘                                      
    ├── 移除所有 [DEBUG-xxx]                                  
    └── 记录 "什么能防止这个 Bug?"                            
                                                             
└─────────────────────────────────────────────────────────────┘

反馈循环质量金字塔:

优先级 1: 失败的测试
         
优先级 2: Curl / HTTP 脚本
         
优先级 3: CLI 调用(带快照对比)
         
优先级 4: 无头浏览器脚本(Playwright)
         
...
优先级 9: HITL bash 脚本(最后手段)

/grill-with-docs — 深度访谈与文档同步

文件位置skills/engineering/grill-with-docs/SKILL.md

核心功能:

  1. 不断追问计划的每个方面
  2. 与 CONTEXT.md 中的术语对照
  3. 实时更新 CONTEXT.md 和 ADR

文档结构规范:

# 标准仓库结构

/
├── CONTEXT.md              # 领域术语和共享语言
├── docs/
│   └── adr/
│       ├── 0001-event-sourced-orders.md
│       └── 0002-postgres-for-write-model.md
└── src/
    └── ...

# 多上下文仓库结构(monorepo)

/
├── CONTEXT-MAP.md          # 指向各上下文位置
├── docs/
│   └── adr/                # 系统级决策
└── src/
    ├── ordering/
    │   ├── CONTEXT.md
    │   └── docs/adr/
    └── billing/
        ├── CONTEXT.md
        └── docs/adr/

ADR 创建条件(仅当全部满足):

条件说明
1难以逆转,后期改变成本高
2缺乏上下文会让人困惑"为什么这么做?"
3存在真正的权衡,选择了其中一个

/zoom-out — 宏观视角

文件位置skills/engineering/zoom-out/SKILL.md

核心指令:

I don't know this area of code well.
Go up a layer of abstraction.
Give me a map of all the relevant modules and callers,
using the project's domain glossary vocabulary.

用途场景:

  • 接手不熟悉的代码区域
  • 理解某个功能在整体架构中的位置
  • 快速建立全局认知

/improve-codebase-architecture — 架构改进

文件位置skills/engineering/improve-codebase-architecture/SKILL.md

核心概念:

术语定义
Module任何有接口和实现的东西(函数、类、包、切片)
Interface调用者必须知道的一切:类型、不变量、错误模式、顺序、配置
Depth杠杆效应:大量功能隐藏在简单接口后
Seam接口所在位置;可以在不修改原代码的情况下改变行为
Adapter在 seam 处满足接口的具体实现

Deletion Test:

想象删除这个模块。如果复杂性消失了,它是通道模块。如果复杂性分散到 N 个调用者中,它是在创造价值的模块。

发现深化机会:

寻找以下摩擦点:
├── 理解一个概念需要在多个小模块间跳跃
├── 模块是浅层的(接口几乎和实现一样复杂)
├── 纯函数被提取出来只是为了可测试性
├── 紧耦合模块跨 seam 泄漏
└── 代码库难以测试

5.2 Productivity 技能详解

/grill-me — 通用访谈

文件位置skills/productivity/grill-me/SKILL.md

核心指令:

Interview me relentlessly about every aspect of this plan
until we reach a shared understanding.
Walk down each branch of the design tree,
resolving dependencies between decisions one-by-one.
For each question, provide your recommended answer.

Ask the questions one at a time.
If a question can be answered by exploring the codebase,
explore the codebase instead.

使用场景:

  • 用户说 "grill me"
  • 想压力测试一个计划
  • 想被质询设计方案

/caveman — 极简沟通

核心概念:

通过删除填充词同时保持完整技术准确性,减少约 75% 的 token 使用

示例:

❌ 冗长版本✅ Caveman 版本
"I think we should probably consider using...""Use X"
"It might be a good idea to refactor...""Refactor X to use Y"
"This could potentially improve performance...""X improves perf"

/write-a-skill — 创建新技能

文件位置skills/productivity/write-a-skill/SKILL.md

创建流程:

1. 收集需求
   ├── 技能覆盖什么任务/领域?
   ├── 需要处理哪些具体用例?
   ├── 需要可执行脚本还是只需要指令?
   └── 有哪些参考资料?

2. 起草技能
   ├── SKILL.md:简洁指令
   ├── 参考文件:内容超过 500 行时添加
   └── 实用脚本:确定性操作时添加

3. 与用户审核
   ├── 覆盖所有用例?
   ├── 有缺失或不清晰?
   └── 详细程度合适?

SKILL.md 模板:

---
name: skill-name
description: Brief description. Use when [触发条件].
---

# Skill Name

## Quick start
[最小可用示例]

## Workflows
[带检查清单的分步流程]

## Advanced features
[链接到其他文件]

5.3 Misc 技能详解

技能用途
git-guardrails-claude-code阻止危险的 git 命令(push, reset --hard, clean)
migrate-to-shoehornas 类型断言迁移到 @total-typescript/shoehorn
scaffold-exercises创建带章节、问题、解决方案的练习目录结构
setup-pre-commit设置 Husky pre-commit hooks(lint-staged, Prettier, 类型检查)

6. 安装与快速开始

6.1 30 秒快速开始

Step 1:运行安装脚本

npx skills@latest add mattpocock/skills

Step 2:选择技能和编码代理

确保选择 /setup-matt-pocock-skills

Step 3:运行设置命令

在代理中运行:

/setup-matt-pocock-skills

设置命令会询问:

  • 使用的问题跟踪器(GitHub / Linear / 本地文件)
  • triage 时使用的标签
  • 保存文档的位置

Step 4:完成!

6.2 每个仓库的配置流程

对于新仓库,需要运行 /setup-matt-pocock-skills

该技能会创建以下配置:

docs/agents/
├── issue-tracker.md      # 问题跟踪器配置
├── triage-labels.md      # 标签词汇
└── domain.md             # 领域文档布局

标签系统(5 个标准角色):

标签用途
needs-triage需要维护者评估
needs-info等待报告者提供信息
ready-for-agent完全指定,AI 可接手(无人类上下文)
ready-for-human需要人类实现
wontfix不会处理

7. 技能设计模式

7.1 技能命名规范

skill-name/
├── SKILL.md           # 主文件
├── REFERENCE.md       # 详细参考
├── EXAMPLES.md        # 示例
├── tests/             # 测试(如有)
└── scripts/           # 脚本(如有)

7.2 SKILL.md 格式标准

---
name: skill-name
description: 描述. Use when [触发条件].
---

# Skill Name

## Quick Start
[一句话用法]

## Workflows
[详细流程 + 检查清单]

## Advanced
[链接到 REFERENCE.md]

7.3 渐进式披露原则

SKILL.md (简短)
    ↓
    链接
    ↓
REFERENCE.md (详细)
    ↓
    链接
    ↓
EXAMPLES.md (示例)

规则:

  • SKILL.md < 100 行
  • 超过 500 行内容 → 拆分到参考文件
  • 只深入一层引用

7.4 触发条件写法

好的示例:

description: Extract text from PDFs, fill forms, merge documents. Use when working with PDF files or when user mentions PDFs, forms, or document extraction.

坏的示例:

description: Helps with documents.

8. 实战案例:使用 TDD 技能

8.1 场景描述

用户想要为一个电商系统添加"购物车"功能。

8.2 步骤 1:规划阶段

AI 提问:

"购物车需要支持哪些操作?"

用户回答:

"添加商品、移除商品、更新数量、清空购物车、计算总价"

AI 继续提问:

"添加商品时,如果商品已经在购物车中怎么办?"

用户回答:

"增加数量,而不是创建新条目"

"用户指的是 Customer 还是 User?它们是不同的概念。"

... 继续直到决策树清晰

8.3 步骤 2:识别模块

AI 提出的模块设计:

shopping-cart/
├── domain/
│   ├── Cart.ts           # 核心领域模型
│   ├── CartItem.ts       # 购物车条目
│   └── events.ts         # 购物车事件
├── services/
│   └── CartService.ts     # 购物车服务
└── ports/
    └── CartRepository.ts  # 仓库接口(用于持久化)

8.4 步骤 3:TDD 循环

RED 阶段 - 写失败的测试:

// cart.test.ts

describe('ShoppingCart', () => {
  it('should add an item to the cart', () => {
    const cart = new ShoppingCart();
    cart.addItem({ productId: 'PROD-001', quantity: 2, price: 29.99 });

    expect(cart.items).toHaveLength(1);
    expect(cart.items[0].productId).toBe('PROD-001');
  });

  it('should increase quantity when adding existing item', () => {
    const cart = new ShoppingCart();
    cart.addItem({ productId: 'PROD-001', quantity: 2, price: 29.99 });
    cart.addItem({ productId: 'PROD-001', quantity: 3, price: 29.99 });

    expect(cart.items).toHaveLength(1);
    expect(cart.items[0].quantity).toBe(5);
  });

  // ... 更多测试
});

GREEN 阶段 - 最简实现:

// cart.ts

export class ShoppingCart {
  items: CartItem[] = [];

  addItem(item: CartItemInput): void {
    const existing = this.items.find(i => i.productId === item.productId);
    if (existing) {
      existing.quantity += item.quantity;
    } else {
      this.items.push({ ...item });
    }
  }
}

REFACTOR 阶段:

  • 提取 CartItem 类型
  • 添加价格验证
  • 保持接口干净

8.5 步骤 4:运行诊断

如果测试失败,使用 /diagnose 技能:

/diagnose

AI: 请描述你观察到的失败。
用户: "添加商品时数量统计错误"

AI: 让我运行反馈循环...

Phase 1: 构建反馈循环
 已有失败的测试,跳过

Phase 2: 复现
 运行测试,观察失败

Phase 3: 假设
生成 3 个假设:
1. 如果是数组引用问题  使用深拷贝
2. 如果是数量计算逻辑  检查 += 操作
3. 如果是类型问题  检查类型定义

...

9. 设计理念深度剖析

9.1 核心设计原则

原则 1:小型化 (Small)

❌ 一个技能做所有事
✅ 一个技能只做一件事,但做到极致

原因:

  • 易于理解和修改
  • 可以自由组合
  • 更容易测试和调试

原则 2:可组合 (Composable)

skills/
    ├── grill-me + tdd          = 规划良好的 TDD
    ├── zoom-out + grill-me     = 有全局视野的访谈
    └── diagnose + tdd         = 测试驱动的调试

原则 3:模型无关 (Model-Agnostic)

不依赖特定 AI 模型的能力:

  • 通用指令 → 适用于 Claude/GPT/其他
  • 不使用特定模型的专有功能
  • 鼓励用户修改以适应自己的模型

原则 4:保留人类控制权

❌ 完全自动化,用户失去控制
✅ 技能辅助人类,人类保持最终决策权

9.2 与传统开发方法的对比

维度GSD/BMAD/Spec-Kitmattpocock/skills
流程固定流程优先技能组合优先
控制流程自动化人保持控制
灵活性
适用场景通用项目管理专业工程实践
学习曲线陡峭平缓
可定制性

9.3 共享语言的力量

为什么共享语言如此重要?

没有共享语言:

用户: "When the materialization cascade fires but the lesson hasn't
       been made real yet..."
AI: "I don't understand. Could you explain what 'made real' means?"

有共享语言 (CONTEXT.md):

CONTEXT.md:
## materialization cascade
The process of giving a CourseEntity (lesson, section, etc.)
a spot in the file system, making it accessible to students.

用户: "There's a problem with the materialization cascade"
AI: "Got it. What aspect of the cascade isn't working correctly?"

9.4 深度模块 vs 浅层模块

深度模块(理想):

// 深度模块示例
interface Logger {
  debug(msg: string): void;
  info(msg: string): void;
  warn(msg: string): void;
  error(msg: string): void;
}

// 用户只需要知道这 4 个方法
// 内部实现可以很复杂:日志级别、格式化、持久化、轮转...

浅层模块(要避免):

// 浅层模块示例 - 接口和实现一样复杂
class ComplexLogger {
  private level: LogLevel;
  private format: Formatter;
  private transport: Transport[];
  private buffer: Buffer;
  private flushInterval: number;
  // ... 50 more fields

  // 用户必须了解所有内部细节才能使用
}

10. 总结与延伸阅读

10.1 项目亮点总结

┌─────────────────────────────────────────────────────────────┐
│               mattpocock/skills 核心亮点                     │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  🎯 定位:AI 时代的真实工程技能库                             │
│                                                             │
│  📊 数据:                                                   │
│  ├── 51,400+ Stars                                          │
│  ├── GitHub 全球排名第 466                                   │
│  └── 16 个精心设计的技能                                      │
│                                                             │
│  🏆 四大核心问题解决方案:                                    │
│  ├── 问题 1 → /grill-me, /grill-with-docs                  │
│  ├── 问题 2 → CONTEXT.md + 共享语言                          │
│  ├── 问题 3 → /tdd, /diagnose                               │
│  └── 问题 4 → /to-prd, /zoom-out, /improve-codebase-...     │
│                                                             │
│  💡 核心价值:                                                │
│  ├── 小型化、可组合、模型无关                                 │
│  ├── 保留人类控制权                                          │
│  ├── 基于数十年工程经验                                       │
│  └── 真正帮助做真实工程,而非氛围编码                         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

10.2 适用人群

人群如何使用
个人开发者使用基础技能提升代码质量
团队建立共享语言和工程规范
AI 爱好者学习如何与 AI 有效协作
TypeScript 开发者配合 Total TypeScript 学习

10.3 快速开始清单

[ ] 运行安装命令:`npx skills@latest add mattpocock/skills`
[ ] 选择 `/setup-matt-pocock-skills` 进行初始化
[ ] 在新项目上运行 `/setup-matt-pocock-skills`
[ ] 下次想构建功能时,尝试 `/grill-me`
[ ] 下次写代码时,尝试 `/tdd`
[ ] 下次遇到 bug 时,尝试 `/diagnose`
[ ] 创建 CONTEXT.md 建立项目共享语言

10.4 相关资源

资源链接
GitHub 仓库github.com/mattpocock/…
Matt Pocock Twitter@mattpocock
Newsletterwww.aihero.dev/s/skills-ne…
Total TypeScriptwww.totaltypescript.com/

10.5 延伸阅读

推荐书籍:

书名作者与项目相关章节
The Pragmatic ProgrammerDavid Thomas & Andrew HuntGrilling philosophy
Domain-Driven DesignEric Evans共享语言、ADR
Test-Driven DevelopmentKent Beck/tdd 技能
A Philosophy of Software DesignJohn Ousterhout深度模块概念
Extreme Programming ExplainedKent Beck代码设计理念

10.6 最后的思考

"Software engineering fundamentals matter more than ever."

— Matt Pocock

在 AI 时代,工程基本功不是过时了,而是更重要了。技能只是工具,真正重要的是理解为什么这些技能有效,以及如何在你的工作流中灵活运用它们。

Matt 的技能库是一个起点,而不是终点。Hack around with them. Make them your own. Enjoy.


版权声明:
本文为技术分析博客,详细解读了 mattpocock/skills 项目的设计理念和使用方法。项目版权归 Matt Pocock 所有,遵循 MIT 许可证。

参考引用: