AI & Agents AI & Tác Tử ·

Skills for Real Engineers: Matt Pocock's Antidote to 'Vibe Coding' in AI Agents Skills for Real Engineers: Vũ Khí Của Matt Pocock Chống Lại 'Vibe Coding' Trong Kỷ Nguyên AI

Explore Matt Pocock's 'Skills for Real Engineers'—a composable framework featuring Socratic grilling, automated ADR generation, ubiquitous language mapping, and issue state-machine triage. Khám phá bộ kỹ năng 'Skills for Real Engineers' của Matt Pocock—phương pháp phỏng vấn Socratic (Grilling), tự động sinh tài liệu ADR, đồng bộ ngôn ngữ nghiệp vụ và quy trình triage lỗi chuyên nghiệp.

Written by Nguyen Cong Ben Nguyen Cong Ben
Skills for Real Engineers: Matt Pocock's Antidote to 'Vibe Coding' in AI Agents

1. 🌟 The Crisis of “Vibe Coding” vs. Real Engineering

The developer community has recently been swept by the trend of “Vibe Coding”—prompting an AI agent with a casual, high-level idea, letting it churn out dozens of files, and hoping the application miraculously works.

While vibe coding feels exhilarating for prototypes, it quickly disintegrates in production systems. When coding agents (like Claude Code, Codex, or Cursor) operate without structured guidance, three fatal failure modes inevitably emerge:

  1. The Alignment Failure: The agent builds what it assumes you want, not what you actually need.
  2. Context Bloat & Jargon Confusion: The agent uses 30 verbose words where 2 domain terms would suffice because it lacks a shared project glossary.
  3. Architectural Amnesia: Critical, hard-to-reverse design decisions evaporate between conversation turns because they were never recorded in Architecture Decision Records (ADRs).

Matt Pocock—the creator of Total TypeScript and one of the most respected educators in modern software development—released mattpocock/skills as the definitive antidote: a lean, composable, model-agnostic collection of agent skills designed for real software engineering.

“My agent skills that I use every day to do real engineering — not vibe coding. Developing real applications is hard. Approaches that try to own the whole process take away your control and make bugs in the process hard to resolve. These skills are small, easy to adapt, and composable.”Matt Pocock


2. 🥊 The Alignment Problem & The Power of “Grilling”

“No-one knows exactly what they want.”David Thomas & Andrew Hunt, The Pragmatic Programmer

The most common point of failure in software engineering is communication breakdown. Developers often hold vague mental models, and AI agents amplify that vagueness by hallucinating confident but misaligned implementations.

Matt Pocock resolves this through a mandatory Grilling Session:

flowchart TD
    User(["👤 Developer has a raw idea"]) --> Grill["🔥 /grill-me (Relentless Socratic Interview)"]
    
    subgraph InterviewTree ["Walking the Design Tree (One Question at a Time)"]
        Q1["❓ Who is this feature for?"] --> Q2["❓ What are the failure modes & boundary cases?"]
        Q2 --> Q3["❓ Which architectural trade-offs are acceptable?"]
    end
    
    Grill --> InterviewTree
    InterviewTree --> Conf{"Confidence >= 95%?"}
    Conf -->|No| Grill
    Conf -->|Yes| Plan["📋 Concrete, Crystal-Clear Implementation Plan"]

The Two Grilling Flavors:

  • /grill-me: A general-purpose Socratic questioning skill. The agent refuses to write code until it has grilled you on edge cases, user personas, and constraints, asking exactly one focused question at a time.
  • /grill-with-docs: An advanced engineering variant that conducts the same rigorous interview while automatically producing permanent project documentation and ADRs.

3. 📑 Ubiquitous Language & Automated ADRs

“With a ubiquitous language, conversations among developers and expressions of the code are all derived from the same domain model.”Eric Evans, Domain-Driven Design

When an AI agent joins a project, it doesn’t know your domain terminology. It wastes thousands of tokens describing concepts clumsily:

Without Shared Language (Verbose Token Waste)With Ubiquitous Language (CONTEXT.md)
“There’s an issue when a lesson inside a section of an online course is made real on disk…""There’s a problem with the materialization cascade."
"When a token payload expires after sixty minutes and the proxy fails to request a new token…""Token refresh lease timeout.”

Through /grill-with-docs, the agent maintains a live CONTEXT.md glossary and generates lightweight ADRs (Architecture Decision Records):

📑 Sample Auto-Generated ADR (docs/adr/0004-video-queue.md):

Title: ADR 0004: Event-Driven Queue for Video Rendering

  • Context: Video rendering jobs frequently exceed API gateway timeouts (30s) during peak load.
  • Decision: Adopt BullMQ with Redis streams rather than synchronous HTTP invocation.
  • Consequences:
    • Requires Redis instance in production.
    • Decouples API response latency from transcoding duration.

Whenever future agent sessions touch that subsystem, they load the ADR and understand the rationale immediately without second-guessing or reverting decisions.


4. 🚦 The Issue Triage State Machine

Handling bug reports and feature tickets with AI is often chaotic. Matt Pocock’s /triage skill connects directly to your issue tracker (GitHub Issues, Linear, Jira, or local Markdown files) and routes items through an explicit state machine:

stateDiagram-v2
    [*] --> TriageRequested: New Ticket Filed
    TriageRequested --> Categorize: Apply Domain & Severity Labels
    Categorize --> VerifyRepro: Check Reproduction Steps
    VerifyRepro --> GrillDetails: Needs Clarification (/grill-me)
    GrillDetails --> InPlanning: Acceptance Criteria Locked
    InPlanning --> ReadyForCode: Spec & Test Plan Approved

Key Triage Capabilities:

  1. Tracker-Agnostic Setup: Configured via /setup-matt-pocock-skills to bind to GitHub labels, Linear teams, or local .tickets/ folders.
  2. Deterministic Labeling: Applies consistent severity and domain tags so backlogs remain organized.
  3. Automated Reproduction Checks: Verifies whether an issue contains a reproducible test case before any agent touches application code.

5. 📦 Distribution Philosophy: Composable vs. Monolithic

A major architectural insight of mattpocock/skills is its critique of “all-in-one” agent frameworks (like GSD or Spec-Kit). When a framework attempts to monopolize the entire development lifecycle, developers lose control, and diagnosing bugs in the prompt pipeline becomes impossible.

Matt Pocock adopts the Unix Philosophy of AI Skills:

Core PhilosophyArchitectural PrinciplePractical Developer Benefit
🧩 Small & ComposableUnix Philosophy: Each skill does one thing wellCombine and remix skills without vendor lock-in
🛠️ Hackable in RepoStandard Markdown committed in .skills/Fully editable, version-controlled by your team
🌐 Model-AgnosticPrompt-driven without hardcoded modelsRuns across Claude Code, Cursor, Codex & Gemini
⚖️ Opt-In FrictionIntroduce structure only where failure happensFast prototyping with optional rigorous checkpoints

Two Installation Models:

ApproachCommandBest Used When
Managed Claude Pluginclaude plugins install mattpocock-skillsYou want automatic upstream updates in Claude Code without managing local files.
Repo-Local (skills.sh)npx skills@latest add mattpocock/skillsYou want editable, version-controlled markdown skill files committed directly to your repository.

6. 🚀 Quickstart: Installing mattpocock/skills

Step 1: Install the Skills

For Claude Code:

claude plugins install mattpocock-skills

For Codex, Cursor, Antigravity, or other agents:

npx skills@latest add mattpocock/skills

Step 2: Initialize Your Repository

Run the interactive configuration command inside your agent:

/setup-matt-pocock-skills

The agent will configure:

  • Your issue tracker (GitHub, Linear, or local files).
  • Your triage label schema.
  • Your project documentation directory (e.g., docs/adr/).

7. 💡 4 Timeless Lessons for AI-Native Engineers

  1. Slow Down to Speed Up: 5 minutes of intensive Socratic grilling (/grill-me) eliminates 3 hours of debugging misaligned code.
  2. Capture Decision Rationale (ADRs): Code shows how a system works; ADRs explain why it was built that way. Agents need the why to avoid architectural drift.
  3. Build Ubiquitous Language: A shared 1-page glossary (CONTEXT.md) saves thousands of tokens per session and eliminates communication ambiguities.
  4. Choose Composable Tools Over Monoliths: Avoid rigid frameworks that force an entire lifecycle onto your workflow. Choose modular skills that you can inspect, adapt, and version in Git.

1. 🌟 Cuộc Khủng Hoảng Của ‘Vibe Coding’ & Nhu Cầu Kỹ Thuật Thực Thụ

Cộng đồng lập trình viên thời gian gần đây đang phát sốt với trào lưu “Vibe Coding”—chỉ cần đưa ra một ý tưởng mơ hồ cho AI agent, để nó tự sinh ra hàng chục file mã nguồn, và hy vọng ứng dụng sẽ chạy một cách thần kỳ.

Mặc dù vibe coding mang lại cảm giác phấn khích khi làm prototype nhanh, nó nhanh chóng sụp đổ trong các dự án thực tế. Khi các coding agent (như Claude Code, Codex hay Cursor) hoạt động mà không có kỷ luật quy trình, 3 vấn nạn nghiêm trọng sẽ xuất hiện:

  1. Lệch pha ý đồ (The Alignment Failure): Agent xây dựng những gì nó tự suy diễn, chứ không phải những gì bạn thực sự cần.
  2. Loãng ngữ cảnh & Rối loạn thuật ngữ: Agent phải dùng 30 từ dài dòng để giải thích một khái niệm mà đúng ra chỉ cần 2 từ chuyên ngành, do thiếu một bảng chú giải thuật ngữ chung.
  3. Mất trí nhớ kiến trúc (Architectural Amnesia): Các quyết định thiết kế quan trọng và khó đảo ngược bị biến mất sau mỗi phiên hội thoại vì không được ghi chép vào Hồ sơ Quyết định Kiến trúc (ADRs).

Matt Pocock—nhà sáng lập Total TypeScript và là một trong những chuyên gia đào tạo kỹ thuật uy tín nhất hiện nay—đã ra mắt kho mã nguồn mattpocock/skills như một vũ khí đặc trị: một bộ kỹ năng tinh gọn, có thể tùy biến, độc lập với mô hình và sinh ra cho kỹ thuật phần mềm thực thụ.

“Bộ kỹ năng agent mà tôi sử dụng mỗi ngày để làm kỹ thuật thực chiến — không phải vibe coding. Phát triển ứng dụng thực tế rất phức tạp. Các phương pháp cố gắng ôm đồm toàn bộ quy trình sẽ tước đi quyền kiểm soát của bạn và khiến việc sửa lỗi trở nên bế tắc. Những kỹ năng này nhỏ gọn, dễ thích ứng và có thể lắp ghép linh hoạt.”Matt Pocock


2. 🥊 Vấn Nạn Lệch Pha Ý Đồ & Sức Mạnh Của Phương Pháp “Grilling”

“Không ai biết chính xác mình thực sự muốn gì.”David Thomas & Andrew Hunt, cuốn sách The Pragmatic Programmer

Điểm gãy phổ biến nhất trong phát triển phần mềm là sự đứt gãy trong giao tiếp. Lập trình viên thường có những mô hình tư duy chưa hoàn chỉnh, và AI agent khuếch đại sự mơ hồ đó bằng cách tự ý sinh mã nguồn sai hướng.

Matt Pocock giải quyết triệt để vấn đề này bằng Phiên phỏng vấn “Grilling”:

flowchart TD
    User(["👤 Developer đưa ra ý tưởng sơ khai"]) --> Grill["🔥 /grill-me (Phỏng vấn Socratic liên tục)"]
    
    subgraph InterviewTree ["Khám Phá Cây Thiết Kế (Từng Câu Hỏi Một)"]
        Q1["❓ Tính năng này phục vụ cho đối tượng nào?"] --> Q2["❓ Các ca biên (edge cases) và lỗi có thể xảy ra là gì?"]
        Q2 --> Q3["❓ Đánh đổi kiến trúc nào là chấp nhận được?"]
    end
    
    Grill --> InterviewTree
    InterviewTree --> Conf{"Độ tự tin >= 95%?"}
    Conf -->|Chưa đạt| Grill
    Conf -->|Đã đạt| Plan["📋 Bản Kế Hoạch Triển Khai Rõ Ràng, Chặt Chẽ"]

2 Kỹ năng phỏng vấn cốt lõi:

  • /grill-me: Kỹ năng phỏng vấn Socratic đa mục đích. Agent từ chối viết code cho đến khi hỏi bạn cặn kẽ về các ca biên, ràng buộc và mục tiêu, với quy tắc vàng: chỉ hỏi duy nhất 1 câu hỏi trọng tâm tại một thời điểm.
  • /grill-with-docs: Phiên bản nâng cao chuyên sâu cho kỹ thuật phần mềm, vừa phỏng vấn làm rõ yêu cầu, vừa tự động cập nhật tài liệu dự án và sinh các bản ghi quyết định kiến trúc ADR.

3. 📑 Ngôn Ngữ Nghiệp Vụ Chung & Tự Động Hóa ADRs

“Với một ngôn ngữ nghiệp vụ chung (Ubiquitous Language), mọi cuộc hội thoại giữa các kỹ sư và cách biểu đạt trong mã nguồn đều bắt nguồn từ cùng một mô hình domain.”Eric Evans, cuốn sách Domain-Driven Design

Khi AI agent bước vào một dự án, nó hoàn toàn xa lạ với các thuật ngữ nội bộ. Nó sẽ tiêu tốn hàng nghìn token để diễn giải vòng vo:

Khi thiếu Ngôn ngữ chung (Lãng phí Token)Khi có Ngôn ngữ chung (CONTEXT.md)
“Có vấn đề khi một bài học bên trong một phần của khóa học được tạo thành file thực tế trên ổ cứng…""Có vấn đề với chuỗi materialization cascade."
"Khi token xác thực hết hạn sau 60 phút và proxy không xin được token mới…""Lỗi timeout cấp phát token (token refresh lease timeout).”

Thông qua /grill-with-docs, agent liên tục cập nhật file CONTEXT.md để đồng bộ từ điển thuật ngữ và tự động ghi chép các tài liệu ADR (Architecture Decision Record):

📑 Mẫu tài liệu ADR được tạo tự động (docs/adr/0004-hang-doi-video.md):

Tiêu đề: ADR 0004: Hàng Đợi Bất Đồng Bộ Cho Tác Vụ Render Video

  • Bối cảnh: Các tác vụ render video thường xuyên vượt quá thời gian timeout của API Gateway (30 giây) trong giờ cao điểm.
  • Quyết định: Sử dụng BullMQ kết hợp Redis Streams thay vì gọi HTTP đồng bộ.
  • Hệ quả:
    • Yêu cầu duy trì một instance Redis trên môi trường Production.
    • Tách rời độ trễ phản hồi của API khỏi thời gian xử lý video.

Ở các phiên làm việc sau, bất kỳ agent nào tiếp quản module này đều có thể đọc ADR và nắm bắt ngay lý do đằng sau kiến trúc mà không xóa nhầm hoặc đi ngược lại quyết định ban đầu.


4. 🚦 Cỗ Máy Trạng Thái Triage Lỗi Chuyên Nghiệp

Xử lý các báo cáo lỗi và yêu cầu tính năng bằng AI thường rất lộn xộn. Kỹ năng /triage của Matt Pocock kết nối trực tiếp với hệ thống quản lý công việc (GitHub Issues, Linear, Jira hoặc file Markdown) để điều phối ticket qua một máy trạng thái chặt chẽ:

stateDiagram-v2
    [*] --> TriageRequested: Ticket Mới Được Tạo
    TriageRequested --> Categorize: Gán Nhãn Domain & Mức Độ Nghiêm Trọng
    Categorize --> VerifyRepro: Kiểm Tra Các Bước Tái Hiện Lỗi
    VerifyRepro --> GrillDetails: Yêu Cầu Làm Rõ (/grill-me)
    GrillDetails --> InPlanning: Khóa Tiêu Chí Nghiệm Thu (Acceptance Criteria)
    InPlanning --> ReadyForCode: Duyệt Kế Hoạch & Bộ Test Trước Khi Code

Tính năng nổi bật của /triage:

  1. Độc lập với nền tảng: Cấu hình linh hoạt qua /setup-matt-pocock-skills để gắn kết với nhãn GitHub, nhóm Linear hoặc thư mục .tickets/.
  2. Quy chuẩn hóa nhãn: Tự động phân loại mức độ ưu tiên và phạm vi ảnh hưởng của lỗi.
  3. Kiểm tra tái hiện lỗi tự động: Đảm bảo lỗi có đầy đủ các bước tái hiện và test case kiểm chứng trước khi chuyển cho agent sửa mã nguồn.

5. 📦 Triết Lý Phân Phối: Kỹ Năng Tinh Gọn Thay Vì ‘Hộp Đen’

Một đóng góp quan trọng của mattpocock/skills là phản biện các bộ khung agent nguyên khối (như GSD hay Spec-Kit). Khi một framework cố gắng kiểm soát toàn bộ vòng đời phát triển, lập trình viên sẽ mất quyền kiểm soát và việc sửa lỗi trong prompt trở nên vô cùng khó khăn.

Matt Pocock áp dụng Triết lý Unix cho AI Skills:

Tiêu ChíPhương Pháp Nguyên Khối (Monolithic)Triết Lý Của Matt Pocock (skills.sh)
Quy môCồng kềnh, cố gắng bao quát mọi khâuTinh gọn, mỗi kỹ năng giải quyết đúng 1 việc
Khả năng chỉnh sửaKhó can thiệp, nằm sâu trong packageFile Markdown thuần ngay trong repo, tùy biến 100%
Tương thích mô hìnhThường gắn chặt với một số model cụ thểHoạt động tốt với mọi LLM (Claude, GPT, Gemini)
Kiểm soát quy trìnhBắt buộc tuân theo luồng cứng nhắcTùy chọn kích hoạt linh hoạt khi cần kỷ luật

6. 🚀 Hướng Dẫn Cài Đặt & Sử Dụng Nhanh

Bước 1: Cài đặt bộ kỹ năng

Dành cho Claude Code (Plugin tự động cập nhật):

claude plugins install mattpocock-skills

Dành cho Codex, Cursor, Antigravity hoặc các agent khác:

npx skills@latest add mattpocock/skills

Bước 2: Khởi tạo cấu hình dự án

Chạy lệnh thiết lập tương tác ngay trong agent của bạn:

/setup-matt-pocock-skills

Agent sẽ hỏi bạn 3 câu hỏi nhanh:

  • Hệ thống quản lý ticket bạn muốn dùng (GitHub, Linear hay file cục bộ).
  • Bộ quy tắc gán nhãn khi triage lỗi.
  • Thư mục bạn muốn lưu trữ tài liệu kiến trúc (ví dụ: docs/adr/).

7. 💡 4 Bài Học Kinh Điển Cho Kỹ Sư Thời Đại AI

  1. Chậm Lại Để Đi Nhanh Hơn: Dành 5 phút phỏng vấn làm rõ yêu cầu (/grill-me) sẽ giúp bạn tiết kiệm 3 tiếng debug mã nguồn bị lệch pha.
  2. Ghi Lại Lý Do Đằng Sau Quyết Định (ADRs): Mã nguồn thể hiện hệ thống đang chạy như thế nào, còn ADR giải thích tại sao nó được thiết kế như vậy. Agent rất cần cái “tại sao” để không phá vỡ kiến trúc.
  3. Xây Dựng Ngôn Ngữ Nghiệp Vụ Chung: Một trang thuật ngữ ngắn gọn (CONTEXT.md) giúp tiết kiệm hàng nghìn token mỗi phiên làm việc và xóa bỏ hoàn toàn sự hiểu nhầm.
  4. Ưu Tiên Công Cụ Lắp Ghép Thay Vì Hộp Đen: Tránh các framework nguyên khối gò bó. Hãy chọn những kỹ năng module hóa bằng Markdown mà bạn có thể trực tiếp đọc, sửa và quản lý phiên bản trong Git.