← workbench

Ranked, opinionated, per stack

The PR-review skills are distilled from a real ~120-comment corpus, then carried onto the other stacks. Everything else encodes a specific working method. Each is a self-contained SKILL.md.

Workflows4 skills

Planning9 skills

evaluate-dependencySKILL.md ↗

Decide whether to add a library before adding it — API surface via Context7, architecture via DeepWiki, maintenance and CVE check, transitive cost, alternatives

grilladapted · Matt Pocock

A relentless interview that sharpens a plan, design, or decision before any code is written — map the open decisions as a tree, ask the whole frontier one round at a time with a recommended answer for each, look up facts yourself, stop only when nothing is left silently assumed

handoffadapted · Matt Pocock

Compact the current session into a portable handoff document so a fresh agent (new tool, new machine, a colleague) can pick the work up

orientSKILL.md ↗

Get up to speed in an unfamiliar codebase fast — find the entry points, trace the main data flow, learn the local conventions and the landmines, then write it down as the project's CONTEXT.md

phased-deliverySKILL.md ↗

Break a multi-session plan into phases that each fit one context window — vertical tracer-bullet slices, a non-goals list per phase, a checkable definition of done, and a real rollback point (git tag or merged PR) at every boundary

spikeadapted · Matt Pocock

A timeboxed throwaway experiment to answer one specific question — build the smallest thing that resolves the unknown, then delete the spike and write up the answer

to-questionnaireadapted · Matt Pocock

Turn a decision you can't settle yourself into a Markdown questionnaire for the one person who holds the missing knowledge — a client, a domain expert, the exec who owns the business rules

write-adrSKILL.md ↗

Draft an Architecture Decision Record using Tejas's template — numbered, immutable once accepted, table header, `---` dividers, emoji H2s

write-prdSKILL.md ↗

Draft a PRD using Tejas's template and house conventions — table header, `---` divider between every section, emoji H2s, outlines for prose and tables for structured data

Design6 skills

design-endpointSKILL.md ↗

Design a REST (or RPC) endpoint before implementing — resource and verb, request/response shape, status codes, pagination, filtering, idempotency, versioning under a v1/ folder, and auth

design-eventSKILL.md ↗

Design the schema and semantics of a domain event before publishing it — event vs command, name, payload (thin vs fat), key, versioning, delivery guarantee, and how consumers classify failures

design-schemaSKILL.md ↗

Design a table or collection before the migration — model the entities and relationships, pick keys and indexes for the real access patterns, decide normalization vs denormalization, name columns to match the domain and the wire layer

evolve-contractSKILL.md ↗

Change a live API, response shape, error code, or event schema without breaking consumers — classify the change as compatible or breaking, make compatible changes additively, version breaking ones, and never alter a legacy contract

scaffold-nestjs-moduleSKILL.md ↗

Add a new feature module to an existing NestJS service following Tejas's layout — versioned `v1/` folders for controllers/services/dto, module-local `constants.ts`, `.controller.options.ts` for route metadata, entity or schema folder, snake_case at the wire/DB layer

scaffold-projectSKILL.md ↗

Bootstrap a new repo or service the way Tejas's existing repos are set up — pick the closest existing template, then apply the standard baseline (house-style README, MIT LICENSE.md, commitlint conventional config, husky commit-msg/pre-commit/pre-push hooks, security-audit workflow, issue/PR templates, .nvmrc / .python-version / go.mod)

PR review5 skills

Quality11 skills

bisectSKILL.md ↗

Find the commit that introduced a regression with git bisect — pin a known-good and known-bad commit, automate the test where possible, land on the culprit, then understand why

break-couplingSKILL.md ↗

Break a circular dependency or an over-tight coupling — a forwardRef triad, two modules that import each other, a service reaching across a boundary it shouldn't

dead-code-sweepSKILL.md ↗

Repo-wide removal of code nothing calls — unused exports, unreachable branches, registered-but-never-invoked handlers, scaffolding for tech the stack doesn't run, commented-out blocks

deslopifySKILL.md ↗

Strip AI slop from code an agent just wrote — comments that restate the code, defensive branches for cases that can't happen, abstractions with one implementation, commented-out code, verbose docstrings on obvious functions

extract-moduleSKILL.md ↗

Split a file or module that's grown too big — find the real seams, pull out a cohesive piece with a narrow interface, move the tests with it, keep every commit green

rebase-cleanSKILL.md ↗

Tidy a feature branch before it merges — squash fixup commits into their targets, drop "wip" noise, reorder so prefactors come first, rebase onto the base branch, keep history linear

resolve-merge-conflictsadapted · Matt Pocock

Resolve merge or rebase conflicts by understanding both sides' intent, not by picking one blindly — reconstruct what each change was for, combine them, verify the result builds and both features still work

split-commitSKILL.md ↗

Turn a messy working tree or a fat WIP commit into a clean series of conventional commits — one logical change each, each one building and passing tests, subjects in the right type

tddadapted · Matt Pocock

Test-driven development — the red → green loop done so it produces tests worth keeping

wait-whatadapted · Matt Pocock

The user types this when a message didn't land — re-pitch what you just said, shorter AND with the context they were missing, in plain English, using the vocabulary from the project's CONTEXT.md. "Wait" names the listener's state, not the output, so the fix is both fewer words and the missing premise, not a terse rewrite

wide-renameSKILL.md ↗

Rename or retype something whose blast radius fans across the whole codebase — a shared column, a widely-imported symbol, an enum value — using expand → migrate in batches → contract, so CI stays green the whole way

Data9 skills

bigquery-analyticsSKILL.md ↗

Model and query BigQuery for analytics without burning slots or money — partitioning and clustering, always filter the partition column, avoid SELECT * (columnar billing), nested/repeated fields, streaming vs batch load, approximate aggregates, scheduled queries and materialized views, and never treat it as an OLTP store

cache-invalidationSKILL.md ↗

Choose a caching strategy and keep the cache correct — cache-aside vs read/write-through, invalidation on write, negative caching done safely, stampede protection, and TTL as the backstop

mongo-aggregationSKILL.md ↗

Write and review MongoDB aggregation pipelines — stage order for index use ($match/$sort first), $group, $lookup and $unwind cost, $facet, memory limits and allowDiskUse, and when to use a materialized rollup instead

mongo-modelingSKILL.md ↗

Model MongoDB documents for the access patterns — embed vs reference, the schema design patterns (subset, computed, bucket, outlier, extended reference), array pitfalls, index for the query shape, and the $lookup cost

postgres-aggregationSKILL.md ↗

Write and review Postgres aggregation queries — GROUP BY, window functions, CTEs and the materialization gotcha, FILTER, ROLLUP/GROUPING SETS, lateral joins, keyset pagination, and materialized views for expensive rollups

postgres-indexingSKILL.md ↗

Choose and verify Postgres indexes for real query shapes — index type (btree / GIN / GiST / BRIN), composite column order, partial / covering / expression indexes, reading EXPLAIN ANALYZE, adding them CONCURRENTLY, and knowing when NOT to index

redis-coordinationSKILL.md ↗

Use Redis for distributed locks and rate limiting correctly — single-instance SETNX+TTL with a fencing token, lock renewal, Redlock caveats, and atomic rate limiters (fixed window, sliding window, token bucket) via Lua

redis-patternsSKILL.md ↗

Use Redis correctly — client choice and connection handling, namespaced key design, TTL on everything, the right data structure per use, SCAN not KEYS, pipelines vs MULTI, and maxmemory-policy

review-querySKILL.md ↗

Review a database or cache access path for correctness and cost — N+1, missing index, unbounded result set, transaction scope, and the Redis/cache-key issues from the review corpus (read key ≠ write key, KEYS on a shared instance, negative tombstones, replica lag on read-your-writes)

Queues3 skills

Observability3 skills

Deployment6 skills

Incident4 skills

Security2 skills

Meta3 skills

Matt Pocock's skills

A few of Matt Pocock's skills are adapted into this repo — trimmed, self-contained, attributed. The rest install from upstream.

  • grill-with-docs
  • domain-modeling
  • wayfinder
  • to-tickets
  • research
  • wait-what
  • code-reviewpr-review/* — built from a real ~120-comment corpus
  • diagnosing-bugsdebugging/investigate-bug

mattpocock/skills · claude plugins install mattpocock-skills