Skill Engineering, Part 1: Foundations
This is Part 1 of a six-part series on Skill Engineering — the discipline of writing, governing, and evolving skills for agentic AI systems.
This is Part 1 of a six-part series on Skill Engineering — the discipline of writing, governing, and evolving skills for agentic AI systems.
This is Part 2 of a six-part series on Skill Engineering. Part 1 — Foundations covers what skills are and how they are structured.
This is Part 3 of a six-part series on Skill Engineering. Part 1 — Foundations covers what skills are. Part 2 — Creation covers how to forge them.
This is Part 4 of a six-part series on Skill Engineering. Part 1 — Foundations, Part 2 — Creation, Part 3 — Governance.
This is Part 5 of a six-part series on Skill Engineering. This final part steps back from the mechanics and asks where the discipline goes next.
This is Part 6 of a six-part series on Skill Engineering. This final part contains the reference material: the manifest schema, eval assertion semantics, a worked end-to-end example, the migration playbook, and the glossary.
The Hypertext Transfer Protocol (HTTP) is the foundation of data communication on the web. Although HTTP/1.1 has been a standard since 1997, many web developers don’t fully utilize its advanced features for optimized performance. In this post, I’ll explain some key capabilities in HTTP 1.1 and how to leverage them.

When structuring Express apps, middleware play a crucial role in handling cross-cutting concerns like logging, security, and error handling. However, as our middleware chain grows, managing the installation order can quickly become messy. In this post, I’ll go over a few patterns for installing Express middleware - from simple to more advanced - and discuss the pros and cons of each approach. The goal is to provide some ideas and best practices to keep our middleware pipeline maintainable as our app grows.
As of the writing time, I have been working for over five years. In recent years, with the gradual accumulation of work experience, more and more colleagues and peers have approached me for help in solving challenging problems, such as Node.js memory leak detection, database connection pool leak detection (where connections are held for a long period), performance optimization, deadlock detection, among others. Today, I will use database connection pool leak detection as an example to summarize a set of approaches for troubleshooting complex issues for future reference - my best practices to troubleshooting.
Overall, my approach to analyzing complex issues can be broken down into eight steps.