Skip to content

Repository files navigation

Claude Code Tools

CILicense: MITGitHub last commitGitHub stars

Custom agents, skills, hooks, and statusline for Claude Code.

Quick Install

Option 1: As a Plugin (Recommended)

# Add the marketplace
/plugin marketplace add ADWilkinson/claude-code-tools
# Install the plugin
/plugin install cct@cct

Skills will be namespaced as /cct:deslop, /cct:lighthouse, etc. Hooks auto-configure when installed as a plugin.

For local development:

claude --plugin-dir ./claude-code-tools

Option 2: Via Install Script (Short Skill Names)

git clone https://github.com/ADWilkinson/claude-code-tools.git
cd claude-code-tools
./install.sh

This copies files to ~/.claude/ for short skill names like /deslop, /lighthouse.

Default install includes agents, skills, hooks, and statusline. The Linear skill will install its dependencies using your available package manager (bun, pnpm, yarn, or npm); hooks still need settings.json configuration when using the install script.

What's Included

Agents (14)

Specialized subagents invoked automatically by Claude Code's Task tool. Framework-agnostic - they detect your stack and adapt.

AgentDescription
frontend-developerReact, Vue, Angular, Svelte, SolidJS - any modern framework
backend-developerNode, Python, Go, Rust, Ruby - REST/GraphQL APIs
database-managerSQL & NoSQL, Prisma, Drizzle, SQLAlchemy, GORM
mobile-developerReact Native, Flutter, Swift, Kotlin, cross-platform
blockchain-specialistSolidity, Wagmi, multi-chain, gas optimization
indexer-developerEnvio, The Graph, GraphQL, event handlers
devops-engineerCI/CD, Docker, GitHub Actions, cloud deployment
firebase-specialistFirestore, Cloud Functions, FCM, security rules
extension-developerChrome Manifest V3, service workers, messaging
mcp-developerMCP servers, tool definitions, LLM integrations
testing-specialistJest, Vitest, Playwright, pytest - any test framework
performance-engineerProfiling, caching, load testing, optimization
debuggerRoot cause analysis, error tracing, systematic debugging
refactoring-specialistCode smells, simplification, safe transformations

All agents include:

  • Confidence scoring (0-100 scale) - Only make changes with confidence ≥75
  • Anti-patterns section - Domain-specific "never do" lists to prevent common mistakes
  • Handoff protocols - Clear guidance on when to delegate to other specialists

All agents use opus model for maximum capability.

Skills (11)

Skills are the unified way to extend Claude Code. They can be:

  • User-invoked with /skill-name (like the former "slash commands")
  • Model-invoked automatically when relevant (based on description matching)
SkillInvocationDescription
deslop/deslopRemove AI-generated slop from diffs. Confidence scoring, false positive lists.
design-audit/design-auditAudit UI for accessibility (WCAG) and visual consistency. Supports --thorough.
repo-polish/repo-polishFire-and-forget repository cleanup. Creates branch, fixes issues, opens PR.
update-claudes/update-claudesGenerate CLAUDE.md files throughout your project for AI context.
minimize-ui/minimize-uiSystematic UI minimalization through ruthless reduction. 7-phase workflow.
lighthouse/lighthouseRun Lighthouse audits and iteratively fix until target scores (default 95).
generate-precommit-hooks/generate-precommit-hooksDetect project type and set up appropriate pre-commit hooks.
xml/xmlConvert prompts to XML format for structured Claude interactions.
linearAuto or /linearFull Linear task management - view, search, create, update issues.
verify-changesAutoRun tests, builds, checks to verify code works after changes.
clarify-before-implementingAutoAsk targeted clarifying questions before coding to avoid wrong work.

User-invoked skills (marked with /skill-name) require manual invocation with the slash command.

Auto-invoked skills are triggered automatically by Claude when your request matches their description.

Linear Skill Features:

  • my-tasks / backlog / in-progress / team-tasks - View issues by state
  • search "query" - Search title and description
  • --label NAME - Filter any list by label
  • create / start / done / show / comment - Issue actions

Setup:

cd skills/linear && ./install.sh
export LINEAR_API_KEY="lin_api_..."# Add to ~/.zshrc

Then just talk naturally: "show my tasks", "search rebrand issues", "mark ENG-123 done"

verify-changes: Auto-detects project type and runs appropriate verification (typecheck, lint, test, build). Provides the feedback loop that 2-3x code quality.

Statusline

Custom statusline showing:

  • Current directory and git branch
  • Activity icons for active tools
  • Cumulative cost tracking
  • Code diff stats (+/- lines)

The statusline reads Claude Code's JSON payload with jq. Without it the line says so instead of rendering empty fields, so install jq (brew install jq, apt install jq) to use it.

Hooks (2)

Shell scripts that run at specific points in Claude Code's lifecycle:

  • auto-format.sh - PostToolUse hook that runs formatters after Claude writes code. Supports Prettier, Ruff, gofmt, rustfmt, forge fmt.
  • constraint-persistence.sh - UserPromptSubmit hook that detects when you set rules ("from now on", "always do X") and prompts Claude to save them to CLAUDE.md.

Install copies hooks to ~/.claude/hooks, but you still need to add them to settings.json. See hooks/README.md for setup instructions.

Both hooks read Claude Code's JSON payload with jq. Without it they exit quietly and do nothing, so install jq (brew install jq, apt install jq) to use them.

Rules (1)

Reusable rule files for ~/.claude/rules/:

  • code-quality.md - Standards for reading before writing, keeping it simple, measurement over estimation.

Installation Options

# Install everything
./install.sh
# Preview without installing
./install.sh --dry-run
# Install only agents
./install.sh --agents-only
# Install only skills
./install.sh --skills-only
# Install only hooks
./install.sh --hooks-only
# Skip skills
./install.sh --no-skills
# Skip hooks
./install.sh --no-hooks
# Skip statusline
./install.sh --no-statusline
# Verbose output
./install.sh -v
# Custom Claude directory
./install.sh --claude-dir /path/to/.claude

Update

Pull the latest versions without re-cloning:

./update.sh
# Preview what would be updated
./update.sh --dry-run
# Custom Claude directory
./update.sh --claude-dir /path/to/.claude

Agents, skills, hooks, and statusline are each refreshed only where they are already installed. update.sh never adds a component you skipped at install time, and never restores one you deliberately deleted.

Uninstall

Remove all installed tools:

./uninstall.sh
# Preview what would be removed
./uninstall.sh --dry-run
# Skip confirmation
./uninstall.sh --force
# Custom Claude directory
./uninstall.sh --claude-dir /path/to/.claude

Uninstall also clears the statusLine and hooks entries from settings.json whenever they address the scripts this repo installs, so Claude Code is not left invoking files that are no longer on disk. That cleanup does not depend on the scripts still being present, so it also repairs a settings.json left wired up by an older install whose files are already gone. Entries you pointed at your own scripts are left alone.

Manual Installation

Agents

mkdir -p ~/.claude/agents
cp agents/*.md ~/.claude/agents/

Skills

# Linear (includes dependencies)cd skills/linear && ./install.sh
# Other skills (just copy the skill directory)
mkdir -p ~/.claude/skills/verify-changes
cp -R skills/verify-changes/*~/.claude/skills/verify-changes/
# Or copy all skillsforskill_dirin skills/*;do
skill_name=$(basename "$skill_dir")
mkdir -p ~/.claude/skills/$skill_name
cp -R "$skill_dir"/*~/.claude/skills/$skill_name/
done

Statusline

cp statusline/flying-dutchman-statusline.sh ~/.claude/
chmod +x ~/.claude/flying-dutchman-statusline.sh
# Add to ~/.claude/settings.json:# "statusLine": { "type": "command", "command": "~/.claude/flying-dutchman-statusline.sh" }

Hooks

mkdir -p ~/.claude/hooks
cp hooks/*.sh ~/.claude/hooks/
chmod +x ~/.claude/hooks/*.sh
# Add to ~/.claude/settings.json under "hooks" - see hooks/README.md

Rules

mkdir -p ~/.claude/rules
cp rules/*.md ~/.claude/rules/
# Reference in ~/.claude/CLAUDE.md: @~/.claude/rules/code-quality.md

Agent Structure

Each agent follows a consistent structure:

---
name: agent-nameauthor: Andrew Wilkinson (github.com/ADWilkinson)description: Brief description for when to use this agentmodel: sonnet | opustools: Read, Edit, MultiEdit, Write, Bash, Grep, Glob, LS, WebFetch
---
You are an expert...## When Invoked1. Step 12. Step 2
...
## Core Expertise
- Skill 1
- Skill 2## Code Patterns```code examples```## Quality/Security Checklist
- [ ] Item 1
- [ ] Item 2## Confidence Scoring| Score | Meaning | Action ||-------|---------|--------|| 0-25 | Might be intentional | Ask before changing || 50 | Likely improvement | Suggest with explanation || 75-100 | Definitely should change | Implement directly |## Anti-Patterns (Never Do)
- Never do X
- Never do Y## Handoff Protocol- **Related task**: HANDOFF:other-agent

Skill Structure

Each skill lives in its own directory under skills/ with a SKILL.md file:

---
name: skill-nameauthor: Andrew Wilkinson (github.com/ADWilkinson)description: When this skill should be useddisable-model-invocation: true # Optional: prevents auto-invocationallowed-tools: Read, Edit, Bash # Optional: restrict available tools
---
# Skill Title> **Quick Reference**: Brief summary of the workflowDetailed instructions for executing the skill...

Creating Your Own

Templates are included if you want to fork and create your own tools:

# Create a new agent
cp templates/agent-template.md agents/your-agent-name.md
# Create a new skill
mkdir -p skills/your-skill
cp templates/skill-template.md skills/your-skill/SKILL.md

Follow existing naming conventions (kebab-case) and include clear descriptions for when Claude should invoke your tool.

Testing

The shipped scripts are covered by shell suites. Every one of them is hermetic: they run against a temporary directory, stub out the network and any package manager, and never touch your real ~/.claude.

# Installer destination handling
bash tests/install-test.sh
# Update and uninstall dry-run behaviour
bash tests/update-uninstall-test.sh
# Plugin hook manifest wiring
bash tests/plugin-manifest-test.sh
# Hook behaviour, with and without jq
bash tests/hooks-test.sh
# Statusline rendering
bash tests/statusline-test.sh
# Per-skill installers, including what they write into ~/.claude
bash tests/skill-installer-test.sh
# Syntax-check every tracked shell scriptforfin$(git ls-files '*.sh');do bash -n "$f"||exit 1;done

CI runs all of them on ubuntu-latest and macos-latest for every pull request and every push to main.

Author

Andrew Wilkinson (@andrewwilkinson)

License

MIT

About

14 agents, 11 skills, 2 hooks for Claude Code. Confidence scoring, anti-patterns, framework-agnostic.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - ADWilkinson/claude-code-tools: 14 agents, 11 skills, 2 hooks for Claude Code. Confidence scoring, anti-patterns, framework-agnostic. · GitHub
Skip to content

Repository files navigation

Claude Code Tools

CILicense: MITGitHub last commitGitHub stars

Custom agents, skills, hooks, and statusline for Claude Code.

Quick Install

Option 1: As a Plugin (Recommended)

# Add the marketplace
/plugin marketplace add ADWilkinson/claude-code-tools
# Install the plugin
/plugin install cct@cct

Skills will be namespaced as /cct:deslop, /cct:lighthouse, etc. Hooks auto-configure when installed as a plugin.

For local development:

claude --plugin-dir ./claude-code-tools

Option 2: Via Install Script (Short Skill Names)

git clone https://github.com/ADWilkinson/claude-code-tools.git
cd claude-code-tools
./install.sh

This copies files to ~/.claude/ for short skill names like /deslop, /lighthouse.

Default install includes agents, skills, hooks, and statusline. The Linear skill will install its dependencies using your available package manager (bun, pnpm, yarn, or npm); hooks still need settings.json configuration when using the install script.

What's Included

Agents (14)

Specialized subagents invoked automatically by Claude Code's Task tool. Framework-agnostic - they detect your stack and adapt.

AgentDescription
frontend-developerReact, Vue, Angular, Svelte, SolidJS - any modern framework
backend-developerNode, Python, Go, Rust, Ruby - REST/GraphQL APIs
database-managerSQL & NoSQL, Prisma, Drizzle, SQLAlchemy, GORM
mobile-developerReact Native, Flutter, Swift, Kotlin, cross-platform
blockchain-specialistSolidity, Wagmi, multi-chain, gas optimization
indexer-developerEnvio, The Graph, GraphQL, event handlers
devops-engineerCI/CD, Docker, GitHub Actions, cloud deployment
firebase-specialistFirestore, Cloud Functions, FCM, security rules
extension-developerChrome Manifest V3, service workers, messaging
mcp-developerMCP servers, tool definitions, LLM integrations
testing-specialistJest, Vitest, Playwright, pytest - any test framework
performance-engineerProfiling, caching, load testing, optimization
debuggerRoot cause analysis, error tracing, systematic debugging
refactoring-specialistCode smells, simplification, safe transformations

All agents include:

  • Confidence scoring (0-100 scale) - Only make changes with confidence ≥75
  • Anti-patterns section - Domain-specific "never do" lists to prevent common mistakes
  • Handoff protocols - Clear guidance on when to delegate to other specialists

All agents use opus model for maximum capability.

Skills (11)

Skills are the unified way to extend Claude Code. They can be:

  • User-invoked with /skill-name (like the former "slash commands")
  • Model-invoked automatically when relevant (based on description matching)
SkillInvocationDescription
deslop/deslopRemove AI-generated slop from diffs. Confidence scoring, false positive lists.
design-audit/design-auditAudit UI for accessibility (WCAG) and visual consistency. Supports --thorough.
repo-polish/repo-polishFire-and-forget repository cleanup. Creates branch, fixes issues, opens PR.
update-claudes/update-claudesGenerate CLAUDE.md files throughout your project for AI context.
minimize-ui/minimize-uiSystematic UI minimalization through ruthless reduction. 7-phase workflow.
lighthouse/lighthouseRun Lighthouse audits and iteratively fix until target scores (default 95).
generate-precommit-hooks/generate-precommit-hooksDetect project type and set up appropriate pre-commit hooks.
xml/xmlConvert prompts to XML format for structured Claude interactions.
linearAuto or /linearFull Linear task management - view, search, create, update issues.
verify-changesAutoRun tests, builds, checks to verify code works after changes.
clarify-before-implementingAutoAsk targeted clarifying questions before coding to avoid wrong work.

User-invoked skills (marked with /skill-name) require manual invocation with the slash command.

Auto-invoked skills are triggered automatically by Claude when your request matches their description.

Linear Skill Features:

  • my-tasks / backlog / in-progress / team-tasks - View issues by state
  • search "query" - Search title and description
  • --label NAME - Filter any list by label
  • create / start / done / show / comment - Issue actions

Setup:

cd skills/linear && ./install.sh
export LINEAR_API_KEY="lin_api_..."# Add to ~/.zshrc

Then just talk naturally: "show my tasks", "search rebrand issues", "mark ENG-123 done"

verify-changes: Auto-detects project type and runs appropriate verification (typecheck, lint, test, build). Provides the feedback loop that 2-3x code quality.

Statusline

Custom statusline showing:

  • Current directory and git branch
  • Activity icons for active tools
  • Cumulative cost tracking
  • Code diff stats (+/- lines)

The statusline reads Claude Code's JSON payload with jq. Without it the line says so instead of rendering empty fields, so install jq (brew install jq, apt install jq) to use it.

Hooks (2)

Shell scripts that run at specific points in Claude Code's lifecycle:

  • auto-format.sh - PostToolUse hook that runs formatters after Claude writes code. Supports Prettier, Ruff, gofmt, rustfmt, forge fmt.
  • constraint-persistence.sh - UserPromptSubmit hook that detects when you set rules ("from now on", "always do X") and prompts Claude to save them to CLAUDE.md.

Install copies hooks to ~/.claude/hooks, but you still need to add them to settings.json. See hooks/README.md for setup instructions.

Both hooks read Claude Code's JSON payload with jq. Without it they exit quietly and do nothing, so install jq (brew install jq, apt install jq) to use them.

Rules (1)

Reusable rule files for ~/.claude/rules/:

  • code-quality.md - Standards for reading before writing, keeping it simple, measurement over estimation.

Installation Options

# Install everything
./install.sh
# Preview without installing
./install.sh --dry-run
# Install only agents
./install.sh --agents-only
# Install only skills
./install.sh --skills-only
# Install only hooks
./install.sh --hooks-only
# Skip skills
./install.sh --no-skills
# Skip hooks
./install.sh --no-hooks
# Skip statusline
./install.sh --no-statusline
# Verbose output
./install.sh -v
# Custom Claude directory
./install.sh --claude-dir /path/to/.claude

Update

Pull the latest versions without re-cloning:

./update.sh
# Preview what would be updated
./update.sh --dry-run
# Custom Claude directory
./update.sh --claude-dir /path/to/.claude

Agents, skills, hooks, and statusline are each refreshed only where they are already installed. update.sh never adds a component you skipped at install time, and never restores one you deliberately deleted.

Uninstall

Remove all installed tools:

./uninstall.sh
# Preview what would be removed
./uninstall.sh --dry-run
# Skip confirmation
./uninstall.sh --force
# Custom Claude directory
./uninstall.sh --claude-dir /path/to/.claude

Uninstall also clears the statusLine and hooks entries from settings.json whenever they address the scripts this repo installs, so Claude Code is not left invoking files that are no longer on disk. That cleanup does not depend on the scripts still being present, so it also repairs a settings.json left wired up by an older install whose files are already gone. Entries you pointed at your own scripts are left alone.

Manual Installation

Agents

mkdir -p ~/.claude/agents
cp agents/*.md ~/.claude/agents/

Skills

# Linear (includes dependencies)cd skills/linear && ./install.sh
# Other skills (just copy the skill directory)
mkdir -p ~/.claude/skills/verify-changes
cp -R skills/verify-changes/*~/.claude/skills/verify-changes/
# Or copy all skillsforskill_dirin skills/*;do
skill_name=$(basename "$skill_dir")
mkdir -p ~/.claude/skills/$skill_name
cp -R "$skill_dir"/*~/.claude/skills/$skill_name/
done

Statusline

cp statusline/flying-dutchman-statusline.sh ~/.claude/
chmod +x ~/.claude/flying-dutchman-statusline.sh
# Add to ~/.claude/settings.json:# "statusLine": { "type": "command", "command": "~/.claude/flying-dutchman-statusline.sh" }

Hooks

mkdir -p ~/.claude/hooks
cp hooks/*.sh ~/.claude/hooks/
chmod +x ~/.claude/hooks/*.sh
# Add to ~/.claude/settings.json under "hooks" - see hooks/README.md

Rules

mkdir -p ~/.claude/rules
cp rules/*.md ~/.claude/rules/
# Reference in ~/.claude/CLAUDE.md: @~/.claude/rules/code-quality.md

Agent Structure

Each agent follows a consistent structure:

---
name: agent-nameauthor: Andrew Wilkinson (github.com/ADWilkinson)description: Brief description for when to use this agentmodel: sonnet | opustools: Read, Edit, MultiEdit, Write, Bash, Grep, Glob, LS, WebFetch
---
You are an expert...## When Invoked1. Step 12. Step 2
...
## Core Expertise
- Skill 1
- Skill 2## Code Patterns```code examples```## Quality/Security Checklist
- [ ] Item 1
- [ ] Item 2## Confidence Scoring| Score | Meaning | Action ||-------|---------|--------|| 0-25 | Might be intentional | Ask before changing || 50 | Likely improvement | Suggest with explanation || 75-100 | Definitely should change | Implement directly |## Anti-Patterns (Never Do)
- Never do X
- Never do Y## Handoff Protocol- **Related task**: HANDOFF:other-agent

Skill Structure

Each skill lives in its own directory under skills/ with a SKILL.md file:

---
name: skill-nameauthor: Andrew Wilkinson (github.com/ADWilkinson)description: When this skill should be useddisable-model-invocation: true # Optional: prevents auto-invocationallowed-tools: Read, Edit, Bash # Optional: restrict available tools
---
# Skill Title> **Quick Reference**: Brief summary of the workflowDetailed instructions for executing the skill...

Creating Your Own

Templates are included if you want to fork and create your own tools:

# Create a new agent
cp templates/agent-template.md agents/your-agent-name.md
# Create a new skill
mkdir -p skills/your-skill
cp templates/skill-template.md skills/your-skill/SKILL.md

Follow existing naming conventions (kebab-case) and include clear descriptions for when Claude should invoke your tool.

Testing

The shipped scripts are covered by shell suites. Every one of them is hermetic: they run against a temporary directory, stub out the network and any package manager, and never touch your real ~/.claude.

# Installer destination handling
bash tests/install-test.sh
# Update and uninstall dry-run behaviour
bash tests/update-uninstall-test.sh
# Plugin hook manifest wiring
bash tests/plugin-manifest-test.sh
# Hook behaviour, with and without jq
bash tests/hooks-test.sh
# Statusline rendering
bash tests/statusline-test.sh
# Per-skill installers, including what they write into ~/.claude
bash tests/skill-installer-test.sh
# Syntax-check every tracked shell scriptforfin$(git ls-files '*.sh');do bash -n "$f"||exit 1;done

CI runs all of them on ubuntu-latest and macos-latest for every pull request and every push to main.

Author

Andrew Wilkinson (@andrewwilkinson)

License

MIT

About

14 agents, 11 skills, 2 hooks for Claude Code. Confidence scoring, anti-patterns, framework-agnostic.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ADWilkinson/claude-code-tools: 14 agents, 11 skills, 2 hooks for Claude Code. Confidence scoring, anti-patterns, framework-agnostic. · GitHub
Skip to content

Repository files navigation

Claude Code Tools

CILicense: MITGitHub last commitGitHub stars

Custom agents, skills, hooks, and statusline for Claude Code.

Quick Install

Option 1: As a Plugin (Recommended)

# Add the marketplace
/plugin marketplace add ADWilkinson/claude-code-tools
# Install the plugin
/plugin install cct@cct

Skills will be namespaced as /cct:deslop, /cct:lighthouse, etc. Hooks auto-configure when installed as a plugin.

For local development:

claude --plugin-dir ./claude-code-tools

Option 2: Via Install Script (Short Skill Names)

git clone https://github.com/ADWilkinson/claude-code-tools.git
cd claude-code-tools
./install.sh

This copies files to ~/.claude/ for short skill names like /deslop, /lighthouse.

Default install includes agents, skills, hooks, and statusline. The Linear skill will install its dependencies using your available package manager (bun, pnpm, yarn, or npm); hooks still need settings.json configuration when using the install script.

What's Included

Agents (14)

Specialized subagents invoked automatically by Claude Code's Task tool. Framework-agnostic - they detect your stack and adapt.

AgentDescription
frontend-developerReact, Vue, Angular, Svelte, SolidJS - any modern framework
backend-developerNode, Python, Go, Rust, Ruby - REST/GraphQL APIs
database-managerSQL & NoSQL, Prisma, Drizzle, SQLAlchemy, GORM
mobile-developerReact Native, Flutter, Swift, Kotlin, cross-platform
blockchain-specialistSolidity, Wagmi, multi-chain, gas optimization
indexer-developerEnvio, The Graph, GraphQL, event handlers
devops-engineerCI/CD, Docker, GitHub Actions, cloud deployment
firebase-specialistFirestore, Cloud Functions, FCM, security rules
extension-developerChrome Manifest V3, service workers, messaging
mcp-developerMCP servers, tool definitions, LLM integrations
testing-specialistJest, Vitest, Playwright, pytest - any test framework
performance-engineerProfiling, caching, load testing, optimization
debuggerRoot cause analysis, error tracing, systematic debugging
refactoring-specialistCode smells, simplification, safe transformations

All agents include:

  • Confidence scoring (0-100 scale) - Only make changes with confidence ≥75
  • Anti-patterns section - Domain-specific "never do" lists to prevent common mistakes
  • Handoff protocols - Clear guidance on when to delegate to other specialists

All agents use opus model for maximum capability.

Skills (11)

Skills are the unified way to extend Claude Code. They can be:

  • User-invoked with /skill-name (like the former "slash commands")
  • Model-invoked automatically when relevant (based on description matching)
SkillInvocationDescription
deslop/deslopRemove AI-generated slop from diffs. Confidence scoring, false positive lists.
design-audit/design-auditAudit UI for accessibility (WCAG) and visual consistency. Supports --thorough.
repo-polish/repo-polishFire-and-forget repository cleanup. Creates branch, fixes issues, opens PR.
update-claudes/update-claudesGenerate CLAUDE.md files throughout your project for AI context.
minimize-ui/minimize-uiSystematic UI minimalization through ruthless reduction. 7-phase workflow.
lighthouse/lighthouseRun Lighthouse audits and iteratively fix until target scores (default 95).
generate-precommit-hooks/generate-precommit-hooksDetect project type and set up appropriate pre-commit hooks.
xml/xmlConvert prompts to XML format for structured Claude interactions.
linearAuto or /linearFull Linear task management - view, search, create, update issues.
verify-changesAutoRun tests, builds, checks to verify code works after changes.
clarify-before-implementingAutoAsk targeted clarifying questions before coding to avoid wrong work.

User-invoked skills (marked with /skill-name) require manual invocation with the slash command.

Auto-invoked skills are triggered automatically by Claude when your request matches their description.

Linear Skill Features:

  • my-tasks / backlog / in-progress / team-tasks - View issues by state
  • search "query" - Search title and description
  • --label NAME - Filter any list by label
  • create / start / done / show / comment - Issue actions

Setup:

cd skills/linear && ./install.sh
export LINEAR_API_KEY="lin_api_..."# Add to ~/.zshrc

Then just talk naturally: "show my tasks", "search rebrand issues", "mark ENG-123 done"

verify-changes: Auto-detects project type and runs appropriate verification (typecheck, lint, test, build). Provides the feedback loop that 2-3x code quality.

Statusline

Custom statusline showing:

  • Current directory and git branch
  • Activity icons for active tools
  • Cumulative cost tracking
  • Code diff stats (+/- lines)

The statusline reads Claude Code's JSON payload with jq. Without it the line says so instead of rendering empty fields, so install jq (brew install jq, apt install jq) to use it.

Hooks (2)

Shell scripts that run at specific points in Claude Code's lifecycle:

  • auto-format.sh - PostToolUse hook that runs formatters after Claude writes code. Supports Prettier, Ruff, gofmt, rustfmt, forge fmt.
  • constraint-persistence.sh - UserPromptSubmit hook that detects when you set rules ("from now on", "always do X") and prompts Claude to save them to CLAUDE.md.

Install copies hooks to ~/.claude/hooks, but you still need to add them to settings.json. See hooks/README.md for setup instructions.

Both hooks read Claude Code's JSON payload with jq. Without it they exit quietly and do nothing, so install jq (brew install jq, apt install jq) to use them.

Rules (1)

Reusable rule files for ~/.claude/rules/:

  • code-quality.md - Standards for reading before writing, keeping it simple, measurement over estimation.

Installation Options

# Install everything
./install.sh
# Preview without installing
./install.sh --dry-run
# Install only agents
./install.sh --agents-only
# Install only skills
./install.sh --skills-only
# Install only hooks
./install.sh --hooks-only
# Skip skills
./install.sh --no-skills
# Skip hooks
./install.sh --no-hooks
# Skip statusline
./install.sh --no-statusline
# Verbose output
./install.sh -v
# Custom Claude directory
./install.sh --claude-dir /path/to/.claude

Update

Pull the latest versions without re-cloning:

./update.sh
# Preview what would be updated
./update.sh --dry-run
# Custom Claude directory
./update.sh --claude-dir /path/to/.claude

Agents, skills, hooks, and statusline are each refreshed only where they are already installed. update.sh never adds a component you skipped at install time, and never restores one you deliberately deleted.

Uninstall

Remove all installed tools:

./uninstall.sh
# Preview what would be removed
./uninstall.sh --dry-run
# Skip confirmation
./uninstall.sh --force
# Custom Claude directory
./uninstall.sh --claude-dir /path/to/.claude

Uninstall also clears the statusLine and hooks entries from settings.json whenever they address the scripts this repo installs, so Claude Code is not left invoking files that are no longer on disk. That cleanup does not depend on the scripts still being present, so it also repairs a settings.json left wired up by an older install whose files are already gone. Entries you pointed at your own scripts are left alone.

Manual Installation

Agents

mkdir -p ~/.claude/agents
cp agents/*.md ~/.claude/agents/

Skills

# Linear (includes dependencies)cd skills/linear && ./install.sh
# Other skills (just copy the skill directory)
mkdir -p ~/.claude/skills/verify-changes
cp -R skills/verify-changes/*~/.claude/skills/verify-changes/
# Or copy all skillsforskill_dirin skills/*;do
skill_name=$(basename "$skill_dir")
mkdir -p ~/.claude/skills/$skill_name
cp -R "$skill_dir"/*~/.claude/skills/$skill_name/
done

Statusline

cp statusline/flying-dutchman-statusline.sh ~/.claude/
chmod +x ~/.claude/flying-dutchman-statusline.sh
# Add to ~/.claude/settings.json:# "statusLine": { "type": "command", "command": "~/.claude/flying-dutchman-statusline.sh" }

Hooks

mkdir -p ~/.claude/hooks
cp hooks/*.sh ~/.claude/hooks/
chmod +x ~/.claude/hooks/*.sh
# Add to ~/.claude/settings.json under "hooks" - see hooks/README.md

Rules

mkdir -p ~/.claude/rules
cp rules/*.md ~/.claude/rules/
# Reference in ~/.claude/CLAUDE.md: @~/.claude/rules/code-quality.md

Agent Structure

Each agent follows a consistent structure:

---
name: agent-nameauthor: Andrew Wilkinson (github.com/ADWilkinson)description: Brief description for when to use this agentmodel: sonnet | opustools: Read, Edit, MultiEdit, Write, Bash, Grep, Glob, LS, WebFetch
---
You are an expert...## When Invoked1. Step 12. Step 2
...
## Core Expertise
- Skill 1
- Skill 2## Code Patterns```code examples```## Quality/Security Checklist
- [ ] Item 1
- [ ] Item 2## Confidence Scoring| Score | Meaning | Action ||-------|---------|--------|| 0-25 | Might be intentional | Ask before changing || 50 | Likely improvement | Suggest with explanation || 75-100 | Definitely should change | Implement directly |## Anti-Patterns (Never Do)
- Never do X
- Never do Y## Handoff Protocol- **Related task**: HANDOFF:other-agent

Skill Structure

Each skill lives in its own directory under skills/ with a SKILL.md file:

---
name: skill-nameauthor: Andrew Wilkinson (github.com/ADWilkinson)description: When this skill should be useddisable-model-invocation: true # Optional: prevents auto-invocationallowed-tools: Read, Edit, Bash # Optional: restrict available tools
---
# Skill Title> **Quick Reference**: Brief summary of the workflowDetailed instructions for executing the skill...

Creating Your Own

Templates are included if you want to fork and create your own tools:

# Create a new agent
cp templates/agent-template.md agents/your-agent-name.md
# Create a new skill
mkdir -p skills/your-skill
cp templates/skill-template.md skills/your-skill/SKILL.md

Follow existing naming conventions (kebab-case) and include clear descriptions for when Claude should invoke your tool.

Testing

The shipped scripts are covered by shell suites. Every one of them is hermetic: they run against a temporary directory, stub out the network and any package manager, and never touch your real ~/.claude.

# Installer destination handling
bash tests/install-test.sh
# Update and uninstall dry-run behaviour
bash tests/update-uninstall-test.sh
# Plugin hook manifest wiring
bash tests/plugin-manifest-test.sh
# Hook behaviour, with and without jq
bash tests/hooks-test.sh
# Statusline rendering
bash tests/statusline-test.sh
# Per-skill installers, including what they write into ~/.claude
bash tests/skill-installer-test.sh
# Syntax-check every tracked shell scriptforfin$(git ls-files '*.sh');do bash -n "$f"||exit 1;done

CI runs all of them on ubuntu-latest and macos-latest for every pull request and every push to main.

Author

Andrew Wilkinson (@andrewwilkinson)

License

MIT

About

14 agents, 11 skills, 2 hooks for Claude Code. Confidence scoring, anti-patterns, framework-agnostic.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ADWilkinson/claude-code-tools: 14 agents, 11 skills, 2 hooks for Claude Code. Confidence scoring, anti-patterns, framework-agnostic. · GitHub
Skip to content

Repository files navigation

Claude Code Tools

CILicense: MITGitHub last commitGitHub stars

Custom agents, skills, hooks, and statusline for Claude Code.

Quick Install

Option 1: As a Plugin (Recommended)

# Add the marketplace
/plugin marketplace add ADWilkinson/claude-code-tools
# Install the plugin
/plugin install cct@cct

Skills will be namespaced as /cct:deslop, /cct:lighthouse, etc. Hooks auto-configure when installed as a plugin.

For local development:

claude --plugin-dir ./claude-code-tools

Option 2: Via Install Script (Short Skill Names)

git clone https://github.com/ADWilkinson/claude-code-tools.git
cd claude-code-tools
./install.sh

This copies files to ~/.claude/ for short skill names like /deslop, /lighthouse.

Default install includes agents, skills, hooks, and statusline. The Linear skill will install its dependencies using your available package manager (bun, pnpm, yarn, or npm); hooks still need settings.json configuration when using the install script.

What's Included

Agents (14)

Specialized subagents invoked automatically by Claude Code's Task tool. Framework-agnostic - they detect your stack and adapt.

AgentDescription
frontend-developerReact, Vue, Angular, Svelte, SolidJS - any modern framework
backend-developerNode, Python, Go, Rust, Ruby - REST/GraphQL APIs
database-managerSQL & NoSQL, Prisma, Drizzle, SQLAlchemy, GORM
mobile-developerReact Native, Flutter, Swift, Kotlin, cross-platform
blockchain-specialistSolidity, Wagmi, multi-chain, gas optimization
indexer-developerEnvio, The Graph, GraphQL, event handlers
devops-engineerCI/CD, Docker, GitHub Actions, cloud deployment
firebase-specialistFirestore, Cloud Functions, FCM, security rules
extension-developerChrome Manifest V3, service workers, messaging
mcp-developerMCP servers, tool definitions, LLM integrations
testing-specialistJest, Vitest, Playwright, pytest - any test framework
performance-engineerProfiling, caching, load testing, optimization
debuggerRoot cause analysis, error tracing, systematic debugging
refactoring-specialistCode smells, simplification, safe transformations

All agents include:

  • Confidence scoring (0-100 scale) - Only make changes with confidence ≥75
  • Anti-patterns section - Domain-specific "never do" lists to prevent common mistakes
  • Handoff protocols - Clear guidance on when to delegate to other specialists

All agents use opus model for maximum capability.

Skills (11)

Skills are the unified way to extend Claude Code. They can be:

  • User-invoked with /skill-name (like the former "slash commands")
  • Model-invoked automatically when relevant (based on description matching)
SkillInvocationDescription
deslop/deslopRemove AI-generated slop from diffs. Confidence scoring, false positive lists.
design-audit/design-auditAudit UI for accessibility (WCAG) and visual consistency. Supports --thorough.
repo-polish/repo-polishFire-and-forget repository cleanup. Creates branch, fixes issues, opens PR.
update-claudes/update-claudesGenerate CLAUDE.md files throughout your project for AI context.
minimize-ui/minimize-uiSystematic UI minimalization through ruthless reduction. 7-phase workflow.
lighthouse/lighthouseRun Lighthouse audits and iteratively fix until target scores (default 95).
generate-precommit-hooks/generate-precommit-hooksDetect project type and set up appropriate pre-commit hooks.
xml/xmlConvert prompts to XML format for structured Claude interactions.
linearAuto or /linearFull Linear task management - view, search, create, update issues.
verify-changesAutoRun tests, builds, checks to verify code works after changes.
clarify-before-implementingAutoAsk targeted clarifying questions before coding to avoid wrong work.

User-invoked skills (marked with /skill-name) require manual invocation with the slash command.

Auto-invoked skills are triggered automatically by Claude when your request matches their description.

Linear Skill Features:

  • my-tasks / backlog / in-progress / team-tasks - View issues by state
  • search "query" - Search title and description
  • --label NAME - Filter any list by label
  • create / start / done / show / comment - Issue actions

Setup:

cd skills/linear && ./install.sh
export LINEAR_API_KEY="lin_api_..."# Add to ~/.zshrc

Then just talk naturally: "show my tasks", "search rebrand issues", "mark ENG-123 done"

verify-changes: Auto-detects project type and runs appropriate verification (typecheck, lint, test, build). Provides the feedback loop that 2-3x code quality.

Statusline

Custom statusline showing:

  • Current directory and git branch
  • Activity icons for active tools
  • Cumulative cost tracking
  • Code diff stats (+/- lines)

The statusline reads Claude Code's JSON payload with jq. Without it the line says so instead of rendering empty fields, so install jq (brew install jq, apt install jq) to use it.

Hooks (2)

Shell scripts that run at specific points in Claude Code's lifecycle:

  • auto-format.sh - PostToolUse hook that runs formatters after Claude writes code. Supports Prettier, Ruff, gofmt, rustfmt, forge fmt.
  • constraint-persistence.sh - UserPromptSubmit hook that detects when you set rules ("from now on", "always do X") and prompts Claude to save them to CLAUDE.md.

Install copies hooks to ~/.claude/hooks, but you still need to add them to settings.json. See hooks/README.md for setup instructions.

Both hooks read Claude Code's JSON payload with jq. Without it they exit quietly and do nothing, so install jq (brew install jq, apt install jq) to use them.

Rules (1)

Reusable rule files for ~/.claude/rules/:

  • code-quality.md - Standards for reading before writing, keeping it simple, measurement over estimation.

Installation Options

# Install everything
./install.sh
# Preview without installing
./install.sh --dry-run
# Install only agents
./install.sh --agents-only
# Install only skills
./install.sh --skills-only
# Install only hooks
./install.sh --hooks-only
# Skip skills
./install.sh --no-skills
# Skip hooks
./install.sh --no-hooks
# Skip statusline
./install.sh --no-statusline
# Verbose output
./install.sh -v
# Custom Claude directory
./install.sh --claude-dir /path/to/.claude

Update

Pull the latest versions without re-cloning:

./update.sh
# Preview what would be updated
./update.sh --dry-run
# Custom Claude directory
./update.sh --claude-dir /path/to/.claude

Agents, skills, hooks, and statusline are each refreshed only where they are already installed. update.sh never adds a component you skipped at install time, and never restores one you deliberately deleted.

Uninstall

Remove all installed tools:

./uninstall.sh
# Preview what would be removed
./uninstall.sh --dry-run
# Skip confirmation
./uninstall.sh --force
# Custom Claude directory
./uninstall.sh --claude-dir /path/to/.claude

Uninstall also clears the statusLine and hooks entries from settings.json whenever they address the scripts this repo installs, so Claude Code is not left invoking files that are no longer on disk. That cleanup does not depend on the scripts still being present, so it also repairs a settings.json left wired up by an older install whose files are already gone. Entries you pointed at your own scripts are left alone.

Manual Installation

Agents

mkdir -p ~/.claude/agents
cp agents/*.md ~/.claude/agents/

Skills

# Linear (includes dependencies)cd skills/linear && ./install.sh
# Other skills (just copy the skill directory)
mkdir -p ~/.claude/skills/verify-changes
cp -R skills/verify-changes/*~/.claude/skills/verify-changes/
# Or copy all skillsforskill_dirin skills/*;do
skill_name=$(basename "$skill_dir")
mkdir -p ~/.claude/skills/$skill_name
cp -R "$skill_dir"/*~/.claude/skills/$skill_name/
done

Statusline

cp statusline/flying-dutchman-statusline.sh ~/.claude/
chmod +x ~/.claude/flying-dutchman-statusline.sh
# Add to ~/.claude/settings.json:# "statusLine": { "type": "command", "command": "~/.claude/flying-dutchman-statusline.sh" }

Hooks

mkdir -p ~/.claude/hooks
cp hooks/*.sh ~/.claude/hooks/
chmod +x ~/.claude/hooks/*.sh
# Add to ~/.claude/settings.json under "hooks" - see hooks/README.md

Rules

mkdir -p ~/.claude/rules
cp rules/*.md ~/.claude/rules/
# Reference in ~/.claude/CLAUDE.md: @~/.claude/rules/code-quality.md

Agent Structure

Each agent follows a consistent structure:

---
name: agent-nameauthor: Andrew Wilkinson (github.com/ADWilkinson)description: Brief description for when to use this agentmodel: sonnet | opustools: Read, Edit, MultiEdit, Write, Bash, Grep, Glob, LS, WebFetch
---
You are an expert...## When Invoked1. Step 12. Step 2
...
## Core Expertise
- Skill 1
- Skill 2## Code Patterns```code examples```## Quality/Security Checklist
- [ ] Item 1
- [ ] Item 2## Confidence Scoring| Score | Meaning | Action ||-------|---------|--------|| 0-25 | Might be intentional | Ask before changing || 50 | Likely improvement | Suggest with explanation || 75-100 | Definitely should change | Implement directly |## Anti-Patterns (Never Do)
- Never do X
- Never do Y## Handoff Protocol- **Related task**: HANDOFF:other-agent

Skill Structure

Each skill lives in its own directory under skills/ with a SKILL.md file:

---
name: skill-nameauthor: Andrew Wilkinson (github.com/ADWilkinson)description: When this skill should be useddisable-model-invocation: true # Optional: prevents auto-invocationallowed-tools: Read, Edit, Bash # Optional: restrict available tools
---
# Skill Title> **Quick Reference**: Brief summary of the workflowDetailed instructions for executing the skill...

Creating Your Own

Templates are included if you want to fork and create your own tools:

# Create a new agent
cp templates/agent-template.md agents/your-agent-name.md
# Create a new skill
mkdir -p skills/your-skill
cp templates/skill-template.md skills/your-skill/SKILL.md

Follow existing naming conventions (kebab-case) and include clear descriptions for when Claude should invoke your tool.

Testing

The shipped scripts are covered by shell suites. Every one of them is hermetic: they run against a temporary directory, stub out the network and any package manager, and never touch your real ~/.claude.

# Installer destination handling
bash tests/install-test.sh
# Update and uninstall dry-run behaviour
bash tests/update-uninstall-test.sh
# Plugin hook manifest wiring
bash tests/plugin-manifest-test.sh
# Hook behaviour, with and without jq
bash tests/hooks-test.sh
# Statusline rendering
bash tests/statusline-test.sh
# Per-skill installers, including what they write into ~/.claude
bash tests/skill-installer-test.sh
# Syntax-check every tracked shell scriptforfin$(git ls-files '*.sh');do bash -n "$f"||exit 1;done

CI runs all of them on ubuntu-latest and macos-latest for every pull request and every push to main.

Author

Andrew Wilkinson (@andrewwilkinson)

License

MIT

About

14 agents, 11 skills, 2 hooks for Claude Code. Confidence scoring, anti-patterns, framework-agnostic.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - ADWilkinson/claude-code-tools: 14 agents, 11 skills, 2 hooks for Claude Code. Confidence scoring, anti-patterns, framework-agnostic. · GitHub
Skip to content

Repository files navigation

Claude Code Tools

CILicense: MITGitHub last commitGitHub stars

Custom agents, skills, hooks, and statusline for Claude Code.

Quick Install

Option 1: As a Plugin (Recommended)

# Add the marketplace
/plugin marketplace add ADWilkinson/claude-code-tools
# Install the plugin
/plugin install cct@cct

Skills will be namespaced as /cct:deslop, /cct:lighthouse, etc. Hooks auto-configure when installed as a plugin.

For local development:

claude --plugin-dir ./claude-code-tools

Option 2: Via Install Script (Short Skill Names)

git clone https://github.com/ADWilkinson/claude-code-tools.git
cd claude-code-tools
./install.sh

This copies files to ~/.claude/ for short skill names like /deslop, /lighthouse.

Default install includes agents, skills, hooks, and statusline. The Linear skill will install its dependencies using your available package manager (bun, pnpm, yarn, or npm); hooks still need settings.json configuration when using the install script.

What's Included

Agents (14)

Specialized subagents invoked automatically by Claude Code's Task tool. Framework-agnostic - they detect your stack and adapt.

AgentDescription
frontend-developerReact, Vue, Angular, Svelte, SolidJS - any modern framework
backend-developerNode, Python, Go, Rust, Ruby - REST/GraphQL APIs
database-managerSQL & NoSQL, Prisma, Drizzle, SQLAlchemy, GORM
mobile-developerReact Native, Flutter, Swift, Kotlin, cross-platform
blockchain-specialistSolidity, Wagmi, multi-chain, gas optimization
indexer-developerEnvio, The Graph, GraphQL, event handlers
devops-engineerCI/CD, Docker, GitHub Actions, cloud deployment
firebase-specialistFirestore, Cloud Functions, FCM, security rules
extension-developerChrome Manifest V3, service workers, messaging
mcp-developerMCP servers, tool definitions, LLM integrations
testing-specialistJest, Vitest, Playwright, pytest - any test framework
performance-engineerProfiling, caching, load testing, optimization
debuggerRoot cause analysis, error tracing, systematic debugging
refactoring-specialistCode smells, simplification, safe transformations

All agents include:

  • Confidence scoring (0-100 scale) - Only make changes with confidence ≥75
  • Anti-patterns section - Domain-specific "never do" lists to prevent common mistakes
  • Handoff protocols - Clear guidance on when to delegate to other specialists

All agents use opus model for maximum capability.

Skills (11)

Skills are the unified way to extend Claude Code. They can be:

  • User-invoked with /skill-name (like the former "slash commands")
  • Model-invoked automatically when relevant (based on description matching)
SkillInvocationDescription
deslop/deslopRemove AI-generated slop from diffs. Confidence scoring, false positive lists.
design-audit/design-auditAudit UI for accessibility (WCAG) and visual consistency. Supports --thorough.
repo-polish/repo-polishFire-and-forget repository cleanup. Creates branch, fixes issues, opens PR.
update-claudes/update-claudesGenerate CLAUDE.md files throughout your project for AI context.
minimize-ui/minimize-uiSystematic UI minimalization through ruthless reduction. 7-phase workflow.
lighthouse/lighthouseRun Lighthouse audits and iteratively fix until target scores (default 95).
generate-precommit-hooks/generate-precommit-hooksDetect project type and set up appropriate pre-commit hooks.
xml/xmlConvert prompts to XML format for structured Claude interactions.
linearAuto or /linearFull Linear task management - view, search, create, update issues.
verify-changesAutoRun tests, builds, checks to verify code works after changes.
clarify-before-implementingAutoAsk targeted clarifying questions before coding to avoid wrong work.

User-invoked skills (marked with /skill-name) require manual invocation with the slash command.

Auto-invoked skills are triggered automatically by Claude when your request matches their description.

Linear Skill Features:

  • my-tasks / backlog / in-progress / team-tasks - View issues by state
  • search "query" - Search title and description
  • --label NAME - Filter any list by label
  • create / start / done / show / comment - Issue actions

Setup:

cd skills/linear && ./install.sh
export LINEAR_API_KEY="lin_api_..."# Add to ~/.zshrc

Then just talk naturally: "show my tasks", "search rebrand issues", "mark ENG-123 done"

verify-changes: Auto-detects project type and runs appropriate verification (typecheck, lint, test, build). Provides the feedback loop that 2-3x code quality.

Statusline

Custom statusline showing:

  • Current directory and git branch
  • Activity icons for active tools
  • Cumulative cost tracking
  • Code diff stats (+/- lines)

The statusline reads Claude Code's JSON payload with jq. Without it the line says so instead of rendering empty fields, so install jq (brew install jq, apt install jq) to use it.

Hooks (2)

Shell scripts that run at specific points in Claude Code's lifecycle:

  • auto-format.sh - PostToolUse hook that runs formatters after Claude writes code. Supports Prettier, Ruff, gofmt, rustfmt, forge fmt.
  • constraint-persistence.sh - UserPromptSubmit hook that detects when you set rules ("from now on", "always do X") and prompts Claude to save them to CLAUDE.md.

Install copies hooks to ~/.claude/hooks, but you still need to add them to settings.json. See hooks/README.md for setup instructions.

Both hooks read Claude Code's JSON payload with jq. Without it they exit quietly and do nothing, so install jq (brew install jq, apt install jq) to use them.

Rules (1)

Reusable rule files for ~/.claude/rules/:

  • code-quality.md - Standards for reading before writing, keeping it simple, measurement over estimation.

Installation Options

# Install everything
./install.sh
# Preview without installing
./install.sh --dry-run
# Install only agents
./install.sh --agents-only
# Install only skills
./install.sh --skills-only
# Install only hooks
./install.sh --hooks-only
# Skip skills
./install.sh --no-skills
# Skip hooks
./install.sh --no-hooks
# Skip statusline
./install.sh --no-statusline
# Verbose output
./install.sh -v
# Custom Claude directory
./install.sh --claude-dir /path/to/.claude

Update

Pull the latest versions without re-cloning:

./update.sh
# Preview what would be updated
./update.sh --dry-run
# Custom Claude directory
./update.sh --claude-dir /path/to/.claude

Agents, skills, hooks, and statusline are each refreshed only where they are already installed. update.sh never adds a component you skipped at install time, and never restores one you deliberately deleted.

Uninstall

Remove all installed tools:

./uninstall.sh
# Preview what would be removed
./uninstall.sh --dry-run
# Skip confirmation
./uninstall.sh --force
# Custom Claude directory
./uninstall.sh --claude-dir /path/to/.claude

Uninstall also clears the statusLine and hooks entries from settings.json whenever they address the scripts this repo installs, so Claude Code is not left invoking files that are no longer on disk. That cleanup does not depend on the scripts still being present, so it also repairs a settings.json left wired up by an older install whose files are already gone. Entries you pointed at your own scripts are left alone.

Manual Installation

Agents

mkdir -p ~/.claude/agents
cp agents/*.md ~/.claude/agents/

Skills

# Linear (includes dependencies)cd skills/linear && ./install.sh
# Other skills (just copy the skill directory)
mkdir -p ~/.claude/skills/verify-changes
cp -R skills/verify-changes/*~/.claude/skills/verify-changes/
# Or copy all skillsforskill_dirin skills/*;do
skill_name=$(basename "$skill_dir")
mkdir -p ~/.claude/skills/$skill_name
cp -R "$skill_dir"/*~/.claude/skills/$skill_name/
done

Statusline

cp statusline/flying-dutchman-statusline.sh ~/.claude/
chmod +x ~/.claude/flying-dutchman-statusline.sh
# Add to ~/.claude/settings.json:# "statusLine": { "type": "command", "command": "~/.claude/flying-dutchman-statusline.sh" }

Hooks

mkdir -p ~/.claude/hooks
cp hooks/*.sh ~/.claude/hooks/
chmod +x ~/.claude/hooks/*.sh
# Add to ~/.claude/settings.json under "hooks" - see hooks/README.md

Rules

mkdir -p ~/.claude/rules
cp rules/*.md ~/.claude/rules/
# Reference in ~/.claude/CLAUDE.md: @~/.claude/rules/code-quality.md

Agent Structure

Each agent follows a consistent structure:

---
name: agent-nameauthor: Andrew Wilkinson (github.com/ADWilkinson)description: Brief description for when to use this agentmodel: sonnet | opustools: Read, Edit, MultiEdit, Write, Bash, Grep, Glob, LS, WebFetch
---
You are an expert...## When Invoked1. Step 12. Step 2
...
## Core Expertise
- Skill 1
- Skill 2## Code Patterns```code examples```## Quality/Security Checklist
- [ ] Item 1
- [ ] Item 2## Confidence Scoring| Score | Meaning | Action ||-------|---------|--------|| 0-25 | Might be intentional | Ask before changing || 50 | Likely improvement | Suggest with explanation || 75-100 | Definitely should change | Implement directly |## Anti-Patterns (Never Do)
- Never do X
- Never do Y## Handoff Protocol- **Related task**: HANDOFF:other-agent

Skill Structure

Each skill lives in its own directory under skills/ with a SKILL.md file:

---
name: skill-nameauthor: Andrew Wilkinson (github.com/ADWilkinson)description: When this skill should be useddisable-model-invocation: true # Optional: prevents auto-invocationallowed-tools: Read, Edit, Bash # Optional: restrict available tools
---
# Skill Title> **Quick Reference**: Brief summary of the workflowDetailed instructions for executing the skill...

Creating Your Own

Templates are included if you want to fork and create your own tools:

# Create a new agent
cp templates/agent-template.md agents/your-agent-name.md
# Create a new skill
mkdir -p skills/your-skill
cp templates/skill-template.md skills/your-skill/SKILL.md

Follow existing naming conventions (kebab-case) and include clear descriptions for when Claude should invoke your tool.

Testing

The shipped scripts are covered by shell suites. Every one of them is hermetic: they run against a temporary directory, stub out the network and any package manager, and never touch your real ~/.claude.

# Installer destination handling
bash tests/install-test.sh
# Update and uninstall dry-run behaviour
bash tests/update-uninstall-test.sh
# Plugin hook manifest wiring
bash tests/plugin-manifest-test.sh
# Hook behaviour, with and without jq
bash tests/hooks-test.sh
# Statusline rendering
bash tests/statusline-test.sh
# Per-skill installers, including what they write into ~/.claude
bash tests/skill-installer-test.sh
# Syntax-check every tracked shell scriptforfin$(git ls-files '*.sh');do bash -n "$f"||exit 1;done

CI runs all of them on ubuntu-latest and macos-latest for every pull request and every push to main.

Author

Andrew Wilkinson (@andrewwilkinson)

License

MIT

About

14 agents, 11 skills, 2 hooks for Claude Code. Confidence scoring, anti-patterns, framework-agnostic.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ADWilkinson/claude-code-tools: 14 agents, 11 skills, 2 hooks for Claude Code. Confidence scoring, anti-patterns, framework-agnostic. · GitHub
Skip to content

Repository files navigation

Claude Code Tools

CILicense: MITGitHub last commitGitHub stars

Custom agents, skills, hooks, and statusline for Claude Code.

Quick Install

Option 1: As a Plugin (Recommended)

# Add the marketplace
/plugin marketplace add ADWilkinson/claude-code-tools
# Install the plugin
/plugin install cct@cct

Skills will be namespaced as /cct:deslop, /cct:lighthouse, etc. Hooks auto-configure when installed as a plugin.

For local development:

claude --plugin-dir ./claude-code-tools

Option 2: Via Install Script (Short Skill Names)

git clone https://github.com/ADWilkinson/claude-code-tools.git
cd claude-code-tools
./install.sh

This copies files to ~/.claude/ for short skill names like /deslop, /lighthouse.

Default install includes agents, skills, hooks, and statusline. The Linear skill will install its dependencies using your available package manager (bun, pnpm, yarn, or npm); hooks still need settings.json configuration when using the install script.

What's Included

Agents (14)

Specialized subagents invoked automatically by Claude Code's Task tool. Framework-agnostic - they detect your stack and adapt.

AgentDescription
frontend-developerReact, Vue, Angular, Svelte, SolidJS - any modern framework
backend-developerNode, Python, Go, Rust, Ruby - REST/GraphQL APIs
database-managerSQL & NoSQL, Prisma, Drizzle, SQLAlchemy, GORM
mobile-developerReact Native, Flutter, Swift, Kotlin, cross-platform
blockchain-specialistSolidity, Wagmi, multi-chain, gas optimization
indexer-developerEnvio, The Graph, GraphQL, event handlers
devops-engineerCI/CD, Docker, GitHub Actions, cloud deployment
firebase-specialistFirestore, Cloud Functions, FCM, security rules
extension-developerChrome Manifest V3, service workers, messaging
mcp-developerMCP servers, tool definitions, LLM integrations
testing-specialistJest, Vitest, Playwright, pytest - any test framework
performance-engineerProfiling, caching, load testing, optimization
debuggerRoot cause analysis, error tracing, systematic debugging
refactoring-specialistCode smells, simplification, safe transformations

All agents include:

  • Confidence scoring (0-100 scale) - Only make changes with confidence ≥75
  • Anti-patterns section - Domain-specific "never do" lists to prevent common mistakes
  • Handoff protocols - Clear guidance on when to delegate to other specialists

All agents use opus model for maximum capability.

Skills (11)

Skills are the unified way to extend Claude Code. They can be:

  • User-invoked with /skill-name (like the former "slash commands")
  • Model-invoked automatically when relevant (based on description matching)
SkillInvocationDescription
deslop/deslopRemove AI-generated slop from diffs. Confidence scoring, false positive lists.
design-audit/design-auditAudit UI for accessibility (WCAG) and visual consistency. Supports --thorough.
repo-polish/repo-polishFire-and-forget repository cleanup. Creates branch, fixes issues, opens PR.
update-claudes/update-claudesGenerate CLAUDE.md files throughout your project for AI context.
minimize-ui/minimize-uiSystematic UI minimalization through ruthless reduction. 7-phase workflow.
lighthouse/lighthouseRun Lighthouse audits and iteratively fix until target scores (default 95).
generate-precommit-hooks/generate-precommit-hooksDetect project type and set up appropriate pre-commit hooks.
xml/xmlConvert prompts to XML format for structured Claude interactions.
linearAuto or /linearFull Linear task management - view, search, create, update issues.
verify-changesAutoRun tests, builds, checks to verify code works after changes.
clarify-before-implementingAutoAsk targeted clarifying questions before coding to avoid wrong work.

User-invoked skills (marked with /skill-name) require manual invocation with the slash command.

Auto-invoked skills are triggered automatically by Claude when your request matches their description.

Linear Skill Features:

  • my-tasks / backlog / in-progress / team-tasks - View issues by state
  • search "query" - Search title and description
  • --label NAME - Filter any list by label
  • create / start / done / show / comment - Issue actions

Setup:

cd skills/linear && ./install.sh
export LINEAR_API_KEY="lin_api_..."# Add to ~/.zshrc

Then just talk naturally: "show my tasks", "search rebrand issues", "mark ENG-123 done"

verify-changes: Auto-detects project type and runs appropriate verification (typecheck, lint, test, build). Provides the feedback loop that 2-3x code quality.

Statusline

Custom statusline showing:

  • Current directory and git branch
  • Activity icons for active tools
  • Cumulative cost tracking
  • Code diff stats (+/- lines)

The statusline reads Claude Code's JSON payload with jq. Without it the line says so instead of rendering empty fields, so install jq (brew install jq, apt install jq) to use it.

Hooks (2)

Shell scripts that run at specific points in Claude Code's lifecycle:

  • auto-format.sh - PostToolUse hook that runs formatters after Claude writes code. Supports Prettier, Ruff, gofmt, rustfmt, forge fmt.
  • constraint-persistence.sh - UserPromptSubmit hook that detects when you set rules ("from now on", "always do X") and prompts Claude to save them to CLAUDE.md.

Install copies hooks to ~/.claude/hooks, but you still need to add them to settings.json. See hooks/README.md for setup instructions.

Both hooks read Claude Code's JSON payload with jq. Without it they exit quietly and do nothing, so install jq (brew install jq, apt install jq) to use them.

Rules (1)

Reusable rule files for ~/.claude/rules/:

  • code-quality.md - Standards for reading before writing, keeping it simple, measurement over estimation.

Installation Options

# Install everything
./install.sh
# Preview without installing
./install.sh --dry-run
# Install only agents
./install.sh --agents-only
# Install only skills
./install.sh --skills-only
# Install only hooks
./install.sh --hooks-only
# Skip skills
./install.sh --no-skills
# Skip hooks
./install.sh --no-hooks
# Skip statusline
./install.sh --no-statusline
# Verbose output
./install.sh -v
# Custom Claude directory
./install.sh --claude-dir /path/to/.claude

Update

Pull the latest versions without re-cloning:

./update.sh
# Preview what would be updated
./update.sh --dry-run
# Custom Claude directory
./update.sh --claude-dir /path/to/.claude

Agents, skills, hooks, and statusline are each refreshed only where they are already installed. update.sh never adds a component you skipped at install time, and never restores one you deliberately deleted.

Uninstall

Remove all installed tools:

./uninstall.sh
# Preview what would be removed
./uninstall.sh --dry-run
# Skip confirmation
./uninstall.sh --force
# Custom Claude directory
./uninstall.sh --claude-dir /path/to/.claude

Uninstall also clears the statusLine and hooks entries from settings.json whenever they address the scripts this repo installs, so Claude Code is not left invoking files that are no longer on disk. That cleanup does not depend on the scripts still being present, so it also repairs a settings.json left wired up by an older install whose files are already gone. Entries you pointed at your own scripts are left alone.

Manual Installation

Agents

mkdir -p ~/.claude/agents
cp agents/*.md ~/.claude/agents/

Skills

# Linear (includes dependencies)cd skills/linear && ./install.sh
# Other skills (just copy the skill directory)
mkdir -p ~/.claude/skills/verify-changes
cp -R skills/verify-changes/*~/.claude/skills/verify-changes/
# Or copy all skillsforskill_dirin skills/*;do
skill_name=$(basename "$skill_dir")
mkdir -p ~/.claude/skills/$skill_name
cp -R "$skill_dir"/*~/.claude/skills/$skill_name/
done

Statusline

cp statusline/flying-dutchman-statusline.sh ~/.claude/
chmod +x ~/.claude/flying-dutchman-statusline.sh
# Add to ~/.claude/settings.json:# "statusLine": { "type": "command", "command": "~/.claude/flying-dutchman-statusline.sh" }

Hooks

mkdir -p ~/.claude/hooks
cp hooks/*.sh ~/.claude/hooks/
chmod +x ~/.claude/hooks/*.sh
# Add to ~/.claude/settings.json under "hooks" - see hooks/README.md

Rules

mkdir -p ~/.claude/rules
cp rules/*.md ~/.claude/rules/
# Reference in ~/.claude/CLAUDE.md: @~/.claude/rules/code-quality.md

Agent Structure

Each agent follows a consistent structure:

---
name: agent-nameauthor: Andrew Wilkinson (github.com/ADWilkinson)description: Brief description for when to use this agentmodel: sonnet | opustools: Read, Edit, MultiEdit, Write, Bash, Grep, Glob, LS, WebFetch
---
You are an expert...## When Invoked1. Step 12. Step 2
...
## Core Expertise
- Skill 1
- Skill 2## Code Patterns```code examples```## Quality/Security Checklist
- [ ] Item 1
- [ ] Item 2## Confidence Scoring| Score | Meaning | Action ||-------|---------|--------|| 0-25 | Might be intentional | Ask before changing || 50 | Likely improvement | Suggest with explanation || 75-100 | Definitely should change | Implement directly |## Anti-Patterns (Never Do)
- Never do X
- Never do Y## Handoff Protocol- **Related task**: HANDOFF:other-agent

Skill Structure

Each skill lives in its own directory under skills/ with a SKILL.md file:

---
name: skill-nameauthor: Andrew Wilkinson (github.com/ADWilkinson)description: When this skill should be useddisable-model-invocation: true # Optional: prevents auto-invocationallowed-tools: Read, Edit, Bash # Optional: restrict available tools
---
# Skill Title> **Quick Reference**: Brief summary of the workflowDetailed instructions for executing the skill...

Creating Your Own

Templates are included if you want to fork and create your own tools:

# Create a new agent
cp templates/agent-template.md agents/your-agent-name.md
# Create a new skill
mkdir -p skills/your-skill
cp templates/skill-template.md skills/your-skill/SKILL.md

Follow existing naming conventions (kebab-case) and include clear descriptions for when Claude should invoke your tool.

Testing

The shipped scripts are covered by shell suites. Every one of them is hermetic: they run against a temporary directory, stub out the network and any package manager, and never touch your real ~/.claude.

# Installer destination handling
bash tests/install-test.sh
# Update and uninstall dry-run behaviour
bash tests/update-uninstall-test.sh
# Plugin hook manifest wiring
bash tests/plugin-manifest-test.sh
# Hook behaviour, with and without jq
bash tests/hooks-test.sh
# Statusline rendering
bash tests/statusline-test.sh
# Per-skill installers, including what they write into ~/.claude
bash tests/skill-installer-test.sh
# Syntax-check every tracked shell scriptforfin$(git ls-files '*.sh');do bash -n "$f"||exit 1;done

CI runs all of them on ubuntu-latest and macos-latest for every pull request and every push to main.

Author

Andrew Wilkinson (@andrewwilkinson)

License

MIT

About

14 agents, 11 skills, 2 hooks for Claude Code. Confidence scoring, anti-patterns, framework-agnostic.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ADWilkinson/claude-code-tools: 14 agents, 11 skills, 2 hooks for Claude Code. Confidence scoring, anti-patterns, framework-agnostic. · GitHub
Skip to content

Repository files navigation

Claude Code Tools

CILicense: MITGitHub last commitGitHub stars

Custom agents, skills, hooks, and statusline for Claude Code.

Quick Install

Option 1: As a Plugin (Recommended)

# Add the marketplace
/plugin marketplace add ADWilkinson/claude-code-tools
# Install the plugin
/plugin install cct@cct

Skills will be namespaced as /cct:deslop, /cct:lighthouse, etc. Hooks auto-configure when installed as a plugin.

For local development:

claude --plugin-dir ./claude-code-tools

Option 2: Via Install Script (Short Skill Names)

git clone https://github.com/ADWilkinson/claude-code-tools.git
cd claude-code-tools
./install.sh

This copies files to ~/.claude/ for short skill names like /deslop, /lighthouse.

Default install includes agents, skills, hooks, and statusline. The Linear skill will install its dependencies using your available package manager (bun, pnpm, yarn, or npm); hooks still need settings.json configuration when using the install script.

What's Included

Agents (14)

Specialized subagents invoked automatically by Claude Code's Task tool. Framework-agnostic - they detect your stack and adapt.

AgentDescription
frontend-developerReact, Vue, Angular, Svelte, SolidJS - any modern framework
backend-developerNode, Python, Go, Rust, Ruby - REST/GraphQL APIs
database-managerSQL & NoSQL, Prisma, Drizzle, SQLAlchemy, GORM
mobile-developerReact Native, Flutter, Swift, Kotlin, cross-platform
blockchain-specialistSolidity, Wagmi, multi-chain, gas optimization
indexer-developerEnvio, The Graph, GraphQL, event handlers
devops-engineerCI/CD, Docker, GitHub Actions, cloud deployment
firebase-specialistFirestore, Cloud Functions, FCM, security rules
extension-developerChrome Manifest V3, service workers, messaging
mcp-developerMCP servers, tool definitions, LLM integrations
testing-specialistJest, Vitest, Playwright, pytest - any test framework
performance-engineerProfiling, caching, load testing, optimization
debuggerRoot cause analysis, error tracing, systematic debugging
refactoring-specialistCode smells, simplification, safe transformations

All agents include:

  • Confidence scoring (0-100 scale) - Only make changes with confidence ≥75
  • Anti-patterns section - Domain-specific "never do" lists to prevent common mistakes
  • Handoff protocols - Clear guidance on when to delegate to other specialists

All agents use opus model for maximum capability.

Skills (11)

Skills are the unified way to extend Claude Code. They can be:

  • User-invoked with /skill-name (like the former "slash commands")
  • Model-invoked automatically when relevant (based on description matching)
SkillInvocationDescription
deslop/deslopRemove AI-generated slop from diffs. Confidence scoring, false positive lists.
design-audit/design-auditAudit UI for accessibility (WCAG) and visual consistency. Supports --thorough.
repo-polish/repo-polishFire-and-forget repository cleanup. Creates branch, fixes issues, opens PR.
update-claudes/update-claudesGenerate CLAUDE.md files throughout your project for AI context.
minimize-ui/minimize-uiSystematic UI minimalization through ruthless reduction. 7-phase workflow.
lighthouse/lighthouseRun Lighthouse audits and iteratively fix until target scores (default 95).
generate-precommit-hooks/generate-precommit-hooksDetect project type and set up appropriate pre-commit hooks.
xml/xmlConvert prompts to XML format for structured Claude interactions.
linearAuto or /linearFull Linear task management - view, search, create, update issues.
verify-changesAutoRun tests, builds, checks to verify code works after changes.
clarify-before-implementingAutoAsk targeted clarifying questions before coding to avoid wrong work.

User-invoked skills (marked with /skill-name) require manual invocation with the slash command.

Auto-invoked skills are triggered automatically by Claude when your request matches their description.

Linear Skill Features:

  • my-tasks / backlog / in-progress / team-tasks - View issues by state
  • search "query" - Search title and description
  • --label NAME - Filter any list by label
  • create / start / done / show / comment - Issue actions

Setup:

cd skills/linear && ./install.sh
export LINEAR_API_KEY="lin_api_..."# Add to ~/.zshrc

Then just talk naturally: "show my tasks", "search rebrand issues", "mark ENG-123 done"

verify-changes: Auto-detects project type and runs appropriate verification (typecheck, lint, test, build). Provides the feedback loop that 2-3x code quality.

Statusline

Custom statusline showing:

  • Current directory and git branch
  • Activity icons for active tools
  • Cumulative cost tracking
  • Code diff stats (+/- lines)

The statusline reads Claude Code's JSON payload with jq. Without it the line says so instead of rendering empty fields, so install jq (brew install jq, apt install jq) to use it.

Hooks (2)

Shell scripts that run at specific points in Claude Code's lifecycle:

  • auto-format.sh - PostToolUse hook that runs formatters after Claude writes code. Supports Prettier, Ruff, gofmt, rustfmt, forge fmt.
  • constraint-persistence.sh - UserPromptSubmit hook that detects when you set rules ("from now on", "always do X") and prompts Claude to save them to CLAUDE.md.

Install copies hooks to ~/.claude/hooks, but you still need to add them to settings.json. See hooks/README.md for setup instructions.

Both hooks read Claude Code's JSON payload with jq. Without it they exit quietly and do nothing, so install jq (brew install jq, apt install jq) to use them.

Rules (1)

Reusable rule files for ~/.claude/rules/:

  • code-quality.md - Standards for reading before writing, keeping it simple, measurement over estimation.

Installation Options

# Install everything
./install.sh
# Preview without installing
./install.sh --dry-run
# Install only agents
./install.sh --agents-only
# Install only skills
./install.sh --skills-only
# Install only hooks
./install.sh --hooks-only
# Skip skills
./install.sh --no-skills
# Skip hooks
./install.sh --no-hooks
# Skip statusline
./install.sh --no-statusline
# Verbose output
./install.sh -v
# Custom Claude directory
./install.sh --claude-dir /path/to/.claude

Update

Pull the latest versions without re-cloning:

./update.sh
# Preview what would be updated
./update.sh --dry-run
# Custom Claude directory
./update.sh --claude-dir /path/to/.claude

Agents, skills, hooks, and statusline are each refreshed only where they are already installed. update.sh never adds a component you skipped at install time, and never restores one you deliberately deleted.

Uninstall

Remove all installed tools:

./uninstall.sh
# Preview what would be removed
./uninstall.sh --dry-run
# Skip confirmation
./uninstall.sh --force
# Custom Claude directory
./uninstall.sh --claude-dir /path/to/.claude

Uninstall also clears the statusLine and hooks entries from settings.json whenever they address the scripts this repo installs, so Claude Code is not left invoking files that are no longer on disk. That cleanup does not depend on the scripts still being present, so it also repairs a settings.json left wired up by an older install whose files are already gone. Entries you pointed at your own scripts are left alone.

Manual Installation

Agents

mkdir -p ~/.claude/agents
cp agents/*.md ~/.claude/agents/

Skills

# Linear (includes dependencies)cd skills/linear && ./install.sh
# Other skills (just copy the skill directory)
mkdir -p ~/.claude/skills/verify-changes
cp -R skills/verify-changes/*~/.claude/skills/verify-changes/
# Or copy all skillsforskill_dirin skills/*;do
skill_name=$(basename "$skill_dir")
mkdir -p ~/.claude/skills/$skill_name
cp -R "$skill_dir"/*~/.claude/skills/$skill_name/
done

Statusline

cp statusline/flying-dutchman-statusline.sh ~/.claude/
chmod +x ~/.claude/flying-dutchman-statusline.sh
# Add to ~/.claude/settings.json:# "statusLine": { "type": "command", "command": "~/.claude/flying-dutchman-statusline.sh" }

Hooks

mkdir -p ~/.claude/hooks
cp hooks/*.sh ~/.claude/hooks/
chmod +x ~/.claude/hooks/*.sh
# Add to ~/.claude/settings.json under "hooks" - see hooks/README.md

Rules

mkdir -p ~/.claude/rules
cp rules/*.md ~/.claude/rules/
# Reference in ~/.claude/CLAUDE.md: @~/.claude/rules/code-quality.md

Agent Structure

Each agent follows a consistent structure:

---
name: agent-nameauthor: Andrew Wilkinson (github.com/ADWilkinson)description: Brief description for when to use this agentmodel: sonnet | opustools: Read, Edit, MultiEdit, Write, Bash, Grep, Glob, LS, WebFetch
---
You are an expert...## When Invoked1. Step 12. Step 2
...
## Core Expertise
- Skill 1
- Skill 2## Code Patterns```code examples```## Quality/Security Checklist
- [ ] Item 1
- [ ] Item 2## Confidence Scoring| Score | Meaning | Action ||-------|---------|--------|| 0-25 | Might be intentional | Ask before changing || 50 | Likely improvement | Suggest with explanation || 75-100 | Definitely should change | Implement directly |## Anti-Patterns (Never Do)
- Never do X
- Never do Y## Handoff Protocol- **Related task**: HANDOFF:other-agent

Skill Structure

Each skill lives in its own directory under skills/ with a SKILL.md file:

---
name: skill-nameauthor: Andrew Wilkinson (github.com/ADWilkinson)description: When this skill should be useddisable-model-invocation: true # Optional: prevents auto-invocationallowed-tools: Read, Edit, Bash # Optional: restrict available tools
---
# Skill Title> **Quick Reference**: Brief summary of the workflowDetailed instructions for executing the skill...

Creating Your Own

Templates are included if you want to fork and create your own tools:

# Create a new agent
cp templates/agent-template.md agents/your-agent-name.md
# Create a new skill
mkdir -p skills/your-skill
cp templates/skill-template.md skills/your-skill/SKILL.md

Follow existing naming conventions (kebab-case) and include clear descriptions for when Claude should invoke your tool.

Testing

The shipped scripts are covered by shell suites. Every one of them is hermetic: they run against a temporary directory, stub out the network and any package manager, and never touch your real ~/.claude.

# Installer destination handling
bash tests/install-test.sh
# Update and uninstall dry-run behaviour
bash tests/update-uninstall-test.sh
# Plugin hook manifest wiring
bash tests/plugin-manifest-test.sh
# Hook behaviour, with and without jq
bash tests/hooks-test.sh
# Statusline rendering
bash tests/statusline-test.sh
# Per-skill installers, including what they write into ~/.claude
bash tests/skill-installer-test.sh
# Syntax-check every tracked shell scriptforfin$(git ls-files '*.sh');do bash -n "$f"||exit 1;done

CI runs all of them on ubuntu-latest and macos-latest for every pull request and every push to main.

Author

Andrew Wilkinson (@andrewwilkinson)

License

MIT

About

14 agents, 11 skills, 2 hooks for Claude Code. Confidence scoring, anti-patterns, framework-agnostic.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - ADWilkinson/claude-code-tools: 14 agents, 11 skills, 2 hooks for Claude Code. Confidence scoring, anti-patterns, framework-agnostic. · GitHub
Skip to content

Repository files navigation

Claude Code Tools

CILicense: MITGitHub last commitGitHub stars

Custom agents, skills, hooks, and statusline for Claude Code.

Quick Install

Option 1: As a Plugin (Recommended)

# Add the marketplace
/plugin marketplace add ADWilkinson/claude-code-tools
# Install the plugin
/plugin install cct@cct

Skills will be namespaced as /cct:deslop, /cct:lighthouse, etc. Hooks auto-configure when installed as a plugin.

For local development:

claude --plugin-dir ./claude-code-tools

Option 2: Via Install Script (Short Skill Names)

git clone https://github.com/ADWilkinson/claude-code-tools.git
cd claude-code-tools
./install.sh

This copies files to ~/.claude/ for short skill names like /deslop, /lighthouse.

Default install includes agents, skills, hooks, and statusline. The Linear skill will install its dependencies using your available package manager (bun, pnpm, yarn, or npm); hooks still need settings.json configuration when using the install script.

What's Included

Agents (14)

Specialized subagents invoked automatically by Claude Code's Task tool. Framework-agnostic - they detect your stack and adapt.

AgentDescription
frontend-developerReact, Vue, Angular, Svelte, SolidJS - any modern framework
backend-developerNode, Python, Go, Rust, Ruby - REST/GraphQL APIs
database-managerSQL & NoSQL, Prisma, Drizzle, SQLAlchemy, GORM
mobile-developerReact Native, Flutter, Swift, Kotlin, cross-platform
blockchain-specialistSolidity, Wagmi, multi-chain, gas optimization
indexer-developerEnvio, The Graph, GraphQL, event handlers
devops-engineerCI/CD, Docker, GitHub Actions, cloud deployment
firebase-specialistFirestore, Cloud Functions, FCM, security rules
extension-developerChrome Manifest V3, service workers, messaging
mcp-developerMCP servers, tool definitions, LLM integrations
testing-specialistJest, Vitest, Playwright, pytest - any test framework
performance-engineerProfiling, caching, load testing, optimization
debuggerRoot cause analysis, error tracing, systematic debugging
refactoring-specialistCode smells, simplification, safe transformations

All agents include:

  • Confidence scoring (0-100 scale) - Only make changes with confidence ≥75
  • Anti-patterns section - Domain-specific "never do" lists to prevent common mistakes
  • Handoff protocols - Clear guidance on when to delegate to other specialists

All agents use opus model for maximum capability.

Skills (11)

Skills are the unified way to extend Claude Code. They can be:

  • User-invoked with /skill-name (like the former "slash commands")
  • Model-invoked automatically when relevant (based on description matching)
SkillInvocationDescription
deslop/deslopRemove AI-generated slop from diffs. Confidence scoring, false positive lists.
design-audit/design-auditAudit UI for accessibility (WCAG) and visual consistency. Supports --thorough.
repo-polish/repo-polishFire-and-forget repository cleanup. Creates branch, fixes issues, opens PR.
update-claudes/update-claudesGenerate CLAUDE.md files throughout your project for AI context.
minimize-ui/minimize-uiSystematic UI minimalization through ruthless reduction. 7-phase workflow.
lighthouse/lighthouseRun Lighthouse audits and iteratively fix until target scores (default 95).
generate-precommit-hooks/generate-precommit-hooksDetect project type and set up appropriate pre-commit hooks.
xml/xmlConvert prompts to XML format for structured Claude interactions.
linearAuto or /linearFull Linear task management - view, search, create, update issues.
verify-changesAutoRun tests, builds, checks to verify code works after changes.
clarify-before-implementingAutoAsk targeted clarifying questions before coding to avoid wrong work.

User-invoked skills (marked with /skill-name) require manual invocation with the slash command.

Auto-invoked skills are triggered automatically by Claude when your request matches their description.

Linear Skill Features:

  • my-tasks / backlog / in-progress / team-tasks - View issues by state
  • search "query" - Search title and description
  • --label NAME - Filter any list by label
  • create / start / done / show / comment - Issue actions

Setup:

cd skills/linear && ./install.sh
export LINEAR_API_KEY="lin_api_..."# Add to ~/.zshrc

Then just talk naturally: "show my tasks", "search rebrand issues", "mark ENG-123 done"

verify-changes: Auto-detects project type and runs appropriate verification (typecheck, lint, test, build). Provides the feedback loop that 2-3x code quality.

Statusline

Custom statusline showing:

  • Current directory and git branch
  • Activity icons for active tools
  • Cumulative cost tracking
  • Code diff stats (+/- lines)

The statusline reads Claude Code's JSON payload with jq. Without it the line says so instead of rendering empty fields, so install jq (brew install jq, apt install jq) to use it.

Hooks (2)

Shell scripts that run at specific points in Claude Code's lifecycle:

  • auto-format.sh - PostToolUse hook that runs formatters after Claude writes code. Supports Prettier, Ruff, gofmt, rustfmt, forge fmt.
  • constraint-persistence.sh - UserPromptSubmit hook that detects when you set rules ("from now on", "always do X") and prompts Claude to save them to CLAUDE.md.

Install copies hooks to ~/.claude/hooks, but you still need to add them to settings.json. See hooks/README.md for setup instructions.

Both hooks read Claude Code's JSON payload with jq. Without it they exit quietly and do nothing, so install jq (brew install jq, apt install jq) to use them.

Rules (1)

Reusable rule files for ~/.claude/rules/:

  • code-quality.md - Standards for reading before writing, keeping it simple, measurement over estimation.

Installation Options

# Install everything
./install.sh
# Preview without installing
./install.sh --dry-run
# Install only agents
./install.sh --agents-only
# Install only skills
./install.sh --skills-only
# Install only hooks
./install.sh --hooks-only
# Skip skills
./install.sh --no-skills
# Skip hooks
./install.sh --no-hooks
# Skip statusline
./install.sh --no-statusline
# Verbose output
./install.sh -v
# Custom Claude directory
./install.sh --claude-dir /path/to/.claude

Update

Pull the latest versions without re-cloning:

./update.sh
# Preview what would be updated
./update.sh --dry-run
# Custom Claude directory
./update.sh --claude-dir /path/to/.claude

Agents, skills, hooks, and statusline are each refreshed only where they are already installed. update.sh never adds a component you skipped at install time, and never restores one you deliberately deleted.

Uninstall

Remove all installed tools:

./uninstall.sh
# Preview what would be removed
./uninstall.sh --dry-run
# Skip confirmation
./uninstall.sh --force
# Custom Claude directory
./uninstall.sh --claude-dir /path/to/.claude

Uninstall also clears the statusLine and hooks entries from settings.json whenever they address the scripts this repo installs, so Claude Code is not left invoking files that are no longer on disk. That cleanup does not depend on the scripts still being present, so it also repairs a settings.json left wired up by an older install whose files are already gone. Entries you pointed at your own scripts are left alone.

Manual Installation

Agents

mkdir -p ~/.claude/agents
cp agents/*.md ~/.claude/agents/

Skills

# Linear (includes dependencies)cd skills/linear && ./install.sh
# Other skills (just copy the skill directory)
mkdir -p ~/.claude/skills/verify-changes
cp -R skills/verify-changes/*~/.claude/skills/verify-changes/
# Or copy all skillsforskill_dirin skills/*;do
skill_name=$(basename "$skill_dir")
mkdir -p ~/.claude/skills/$skill_name
cp -R "$skill_dir"/*~/.claude/skills/$skill_name/
done

Statusline

cp statusline/flying-dutchman-statusline.sh ~/.claude/
chmod +x ~/.claude/flying-dutchman-statusline.sh
# Add to ~/.claude/settings.json:# "statusLine": { "type": "command", "command": "~/.claude/flying-dutchman-statusline.sh" }

Hooks

mkdir -p ~/.claude/hooks
cp hooks/*.sh ~/.claude/hooks/
chmod +x ~/.claude/hooks/*.sh
# Add to ~/.claude/settings.json under "hooks" - see hooks/README.md

Rules

mkdir -p ~/.claude/rules
cp rules/*.md ~/.claude/rules/
# Reference in ~/.claude/CLAUDE.md: @~/.claude/rules/code-quality.md

Agent Structure

Each agent follows a consistent structure:

---
name: agent-nameauthor: Andrew Wilkinson (github.com/ADWilkinson)description: Brief description for when to use this agentmodel: sonnet | opustools: Read, Edit, MultiEdit, Write, Bash, Grep, Glob, LS, WebFetch
---
You are an expert...## When Invoked1. Step 12. Step 2
...
## Core Expertise
- Skill 1
- Skill 2## Code Patterns```code examples```## Quality/Security Checklist
- [ ] Item 1
- [ ] Item 2## Confidence Scoring| Score | Meaning | Action ||-------|---------|--------|| 0-25 | Might be intentional | Ask before changing || 50 | Likely improvement | Suggest with explanation || 75-100 | Definitely should change | Implement directly |## Anti-Patterns (Never Do)
- Never do X
- Never do Y## Handoff Protocol- **Related task**: HANDOFF:other-agent

Skill Structure

Each skill lives in its own directory under skills/ with a SKILL.md file:

---
name: skill-nameauthor: Andrew Wilkinson (github.com/ADWilkinson)description: When this skill should be useddisable-model-invocation: true # Optional: prevents auto-invocationallowed-tools: Read, Edit, Bash # Optional: restrict available tools
---
# Skill Title> **Quick Reference**: Brief summary of the workflowDetailed instructions for executing the skill...

Creating Your Own

Templates are included if you want to fork and create your own tools:

# Create a new agent
cp templates/agent-template.md agents/your-agent-name.md
# Create a new skill
mkdir -p skills/your-skill
cp templates/skill-template.md skills/your-skill/SKILL.md

Follow existing naming conventions (kebab-case) and include clear descriptions for when Claude should invoke your tool.

Testing

The shipped scripts are covered by shell suites. Every one of them is hermetic: they run against a temporary directory, stub out the network and any package manager, and never touch your real ~/.claude.

# Installer destination handling
bash tests/install-test.sh
# Update and uninstall dry-run behaviour
bash tests/update-uninstall-test.sh
# Plugin hook manifest wiring
bash tests/plugin-manifest-test.sh
# Hook behaviour, with and without jq
bash tests/hooks-test.sh
# Statusline rendering
bash tests/statusline-test.sh
# Per-skill installers, including what they write into ~/.claude
bash tests/skill-installer-test.sh
# Syntax-check every tracked shell scriptforfin$(git ls-files '*.sh');do bash -n "$f"||exit 1;done

CI runs all of them on ubuntu-latest and macos-latest for every pull request and every push to main.

Author

Andrew Wilkinson (@andrewwilkinson)

License

MIT

About

14 agents, 11 skills, 2 hooks for Claude Code. Confidence scoring, anti-patterns, framework-agnostic.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages