/ Directory / Playground / mattpocock/skills
● Community mattpocock ⚡ Instant

mattpocock/skills

by mattpocock · mattpocock/skills

Matt Pocock's personal .claude directory — opinionated TypeScript, testing, and workflow skills straight from a TS OG.

Matt Pocock (TypeScript educator, creator of Total TypeScript) published his personal Claude Code skills directory. Includes TS-specific patterns, testing philosophy, refactoring patterns, and workflow opinions. Not a generic bundle — it's one engineer's actual setup.

Why use it

Key features

Live Demo

What it looks like in practice

ready

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mattpocock-skills-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/mattpocock/skills",
        "~/.claude/skills/skills"
      ],
      "_inferred": true
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "mattpocock-skills-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/mattpocock/skills",
        "~/.claude/skills/skills"
      ],
      "_inferred": true
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "mattpocock-skills-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/mattpocock/skills",
        "~/.claude/skills/skills"
      ],
      "_inferred": true
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mattpocock-skills-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/mattpocock/skills",
        "~/.claude/skills/skills"
      ],
      "_inferred": true
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "mattpocock-skills-skill",
      "command": "git",
      "args": [
        "clone",
        "https://github.com/mattpocock/skills",
        "~/.claude/skills/skills"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "mattpocock-skills-skill": {
      "command": {
        "path": "git",
        "args": [
          "clone",
          "https://github.com/mattpocock/skills",
          "~/.claude/skills/skills"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add mattpocock-skills-skill -- git clone https://github.com/mattpocock/skills ~/.claude/skills/skills

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use mattpocock/skills

Apply Matt's TS patterns to an existing project

👤 TypeScript devs upgrading code quality ⏱ ~90 min intermediate

When to use: Your project has anys and shrug-worthy types and you want a principled cleanup.

Prerequisites
  • Skills installed — git clone https://github.com/mattpocock/skills ~/.claude/skills/mattpocock
Flow
  1. Scan
    Use mattpocock/ts-review. Scan /src and list every any, every unsafe cast, every type hole. Group by file.✓ Copied
    → Itemized findings, not a summary
  2. Fix with principles
    Fix the top 20, narrowest fix per case. Respect Matt's "prefer inference" rule — don't explicit-annotate what TS can infer.✓ Copied
    → Minimal diffs, type-safety gained
  3. Check
    Run tsc --noEmit. Any regressions?✓ Copied
    → Clean compile or precisely-scoped remaining items

Outcome: A measurably more type-safe codebase following a principled methodology.

Pitfalls
  • Skill applies Matt's opinions where your team disagrees (e.g. interface vs type) — Override with "skip the interface-vs-type conversion, keep existing style"
Combine with: filesystem

Build a feature test-first, Matt's way

👤 Devs adopting a more test-forward workflow ⏱ ~60 min intermediate

When to use: You have a new feature to build and want to try test-first with modern TS tooling.

Flow
  1. Write the test
    Use mattpocock/test-first. I want to add a parseInvoice function. Write the test (vitest, integration-over-unit bias) before any impl.✓ Copied
    → Failing test with realistic fixtures
  2. Implement
    Now the minimal implementation. Type-safe, no any.✓ Copied
    → Green test with clean types
  3. Refactor
    Apply refactor patterns from the skill — extract helpers if they earn it, no premature abstraction.✓ Copied
    → Refactor only where the skill's criteria are met

Outcome: A test suite that tests behavior, an impl that satisfies it, and restraint on the refactor.

Pitfalls
  • Opinions collide with team's existing Jest setup — Ask the skill to adapt — it's opinionated but can be reoriented
Combine with: filesystem

Combinations

Pair with other MCPs for X10 leverage

mattpocock-skills-skill + filesystem

Apply to a full repo

Run ts_review over the whole /src tree and report.✓ Copied
mattpocock-skills-skill + github

Open a PR per review

For the top 3 cleanups, create one PR each with a clear description.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
ts_review path TS-specific audit 0
test_first feature_spec Starting a new feature 0
refactor_with_types path, goal Type-preserving refactor 0

Cost & Limits

What this costs to run

API quota
N/A
Tokens per call
Review-heavy — budget for big reads on large codebases
Monetary
Free
Tip
Scope by directory first; don't scan everything

Security

Permissions, secrets, blast radius

Minimum scopes: filesystem-read
Credential storage: None
Data egress: None

Troubleshooting

Common errors and fixes

Skill feels too opinionated

That's the point — override specific opinions in your prompt, or fork and edit

Recommendations conflict with team style

Share the output with the team; use it as a discussion starter, not a mandate

Doesn't know my niche library

Skills are TS-general — prepend your library's docs to the context

Alternatives

mattpocock/skills vs others

AlternativeWhen to use it insteadTradeoff
Your team's linter configYou need CI-level enforcement, not interactive reviewNo LLM reasoning, no refactor help
Biome / ESLint with typescript-eslintWant rules-based, deterministicDoesn't explain its reasoning the way Matt's skills do

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills