Agent Skill
2/7/2026

edge-case-discovery

Use when user requests exhaustive edge case analysis. Enforces TodoWrite with 15+ items (5 categories). Triggers: "all edge cases", "what could break", "bulletproof", "failure modes". If thinking "main path is sufficient" - use this.

P
pvillega
12GitHub Stars
1Views
npx skills add pvillega/claude-templates

SKILL.md

Nameedge-case-discovery
DescriptionUse when user requests exhaustive edge case analysis. Enforces TodoWrite with 15+ items (5 categories). Triggers: "all edge cases", "what could break", "bulletproof", "failure modes". If thinking "main path is sufficient" - use this.

Claude Templates

WARNING: This project is designed for use in sandboxed environments only.

A curated setup for Claude Code combining plugins (from the Claude marketplace) and skills (from skills.sh) with sandbox safety guards. Designed for YOLO mode (--dangerously-skip-permissions).

NOTE: This may be updated at any time as I tweak things to fit my own workflows, so I recommend you to fork it and adapt it to your own usage patterns.

Quick Start

git clone https://github.com/pvillega/claude-templates.git
cd claude-templates

# Installs plugins, skills, and default settings
./install.sh

# Run Claude (added as an alias to your ~/.bashrc or ~/.zshrc)
cl

To update all installed plugins, skills, and tools to their latest versions:

./update.sh

To completely remove everything installed by this project:

./uninstall.sh

If you do not use Bash or Zsh, you can set up the alias manually:

alias cl='claude --dangerously-skip-permissions'

Prerequisites

The installer requires the following to be available before running:

  • curl — for downloading installers
  • npm — for installing Node.js-based tools and skills
  • Homebrew — package manager for CLI tools (macOS and Linux)
  • Docker (optional) — required by some security skills (not installed by the installer)

Homebrew is available on both macOS and Linux. To install:

# macOS and Linux
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

For Linux-specific instructions, see Homebrew on Linux.

About Safety

Using agents without restrictions on tools poses some dangers. It could impact files outside your workspace, potentially damaging your system. Or it can exfiltrate data.

As a consequence, using Claude Code from your local environment by itself is risky. At this point in time there are multiple alternatives, so this template doesn't enforce any preferences.

What it does, though, is to restrict very dangerous commands (like git push --force).

Setup

The install.sh script installs plugins, skills, sandbox settings, and marketplace configuration. Run it from the repository root:

./install.sh

Use --clean for a fresh install when you want to remove stale configuration that might not be properly overridden. The --dry-run flag lets you preview what would be deleted before committing.

Optional Tools

At the end of every install, install.sh scans tools/optional/*.sh and offers a numbered menu of opt-in installers. Non-interactive runs honour INSTALL_OPTIONAL=all|<csv>|<empty> (e.g. INSTALL_OPTIONAL=lean,postgres_mcp ./install.sh). Failures in an optional installer warn but never abort the main install.

Currently shipped:

ScriptWhat it installsNotes
tools/optional/lean.shlean-lsp-mcp at user scope + cameronfreer/lean4-skills marketplace + lean4 plugin + lake build PostToolUse hookFor Lean 4 projects. Requires uv + rg + jq + claude on PATH. Hook only fires when a lakefile.lean is present.
tools/optional/postgres_mcp.shPrereq check + uvx cache pre-warm for postgres-mcpDoes not register the MCP at user scope (load-in-every-project cost). Prints the exact claude mcp add --scope local command and DATABASE_URI convention for per-project opt-in.

API Keys

Tavily requires an API key. You can configure it via:

  • Tavily CLI login (recommended): Run tvly login --api-key $(echo $TAVILY_API_KEY) to authenticate using your API key.
  • Shell export: Add export TAVILY_API_KEY=... to your shell profile.

Plugins

Plugins are installed from the Claude marketplace. They provide commands, agents, skills, and MCP server configurations.

PluginProvidesDescriptionTrigger
Superpowers14 skills, 1 agentStructured dev workflows: TDD, debugging, brainstorming, planning, worktrees, code review/brainstorming, /tdd, auto
Frontend Design1 skillProduction-grade frontend UI generation with bold aesthetic choicesAutomatic on UI work
Code Review5 agents, 1 commandPR analysis with five parallel agents checking compliance, bugs, and git history/code-review
Security Guidance1 hookPreToolUse hook warning about security vulnerabilities on file edits (injection, XSS)Automatic (pre-Edit/Write)
Commit Commands3 commandsGit commit, push, PR creation with style analysis; branch cleanup/commit, /commit-push-pr, /clean_gone
Claude Code Setup1 skillRecommends tailored automations (MCP servers, skills, hooks, subagents) for a projectrecommend automations
Hookify1 skill, 1 agent, 4 commandsCreate custom hooks from natural language or conversation analysis/hookify, /hookify:list
Skill Creator1 skillCreate, modify, and measure skill performance with evals and variance analysis/skill-creator
Engram1 skill, MCP serverPersistent memory across sessions via SQLite + FTS5. Disables built-in auto-memory (autoMemoryEnabled: false) — engram's selective retrieval and automatic decay make it the better choice.mem_save, mem_search (auto + manual)

The ct plugin (from this repo) adds 47 skills and 7 agents covering two layers: (a) workflow skills for code quality, security, refactoring, and triage; and (b) deep-operational guides for languages (Go, Rust, C, Python/uv, Bash), infra (Kubernetes, ArgoCD, Terraform, Docker BuildKit, GitHub Actions, Traefik, systemd, Hetzner, Coolify), data stores (Postgres, Redis, SQLite WAL, vector search), observability (Grafana, OpenTelemetry), security/networking (secrets-management, TLS/openssl), and ML (PyTorch, CUDA, fine-tuning, LLM inference, RAG, classical/DL/time-series ML). The deep-operational skills load only on incident-diagnosis or runtime-tuning keywords, not day-to-day usage. See SKILLS.md for the complete list. Some skills and agents were adapted from channingwalton/dotfiles.

CLI Tools

The installer sets up the following CLI tools, used by Claude Code for enhanced capabilities:

ToolDescriptionInstall Method
Claude CodeAnthropic's AI coding assistantNative installer
jqJSON processor for config mergingHomebrew
fdFast find alternative (aliased as find)Homebrew
ripgrepFast grep alternative (aliased as grep)Homebrew
rtkToken-optimized CLI proxy (60-90% savings)Homebrew
ghGitHub CLI for PR/issue managementHomebrew
Tavily CLIAI-optimized web searchNative installer
jscpdCopy/paste detectionnpm
Context7 CLILibrary documentation fetchernpm
agent-browserAI-first browser automation (50+ commands)npm + browser install
EngramPersistent memory for AI agents (SQLite + FTS5)Homebrew
GabbLocal code indexer for semantic code understanding (MCP server)Homebrew
uvFast Python package/project manager (required by optional lean-lsp-mcp and postgres-mcp)Homebrew
tacReverse-cat used by anti-rationalization hook (macOS only — Linux ships it via coreutils)Homebrew (coreutils)
axe-core CLI + Pa11yWCAG accessibility auditing (runtime + batch)npm
Nuclei + ZAPDAST security scanning (fast + deep)Homebrew + Docker
SemgrepOSS SAST scanner (PostToolUse security scanning via ct plugin hook)Homebrew
GitleaksSecret detection via global git pre-commit hookHomebrew

Tools are configured in the TOOLS array in config.sh. Each tool has an install, update, and uninstall script in the tools/ directory.

Security Scanning

Two layers of automated security scanning are installed:

Semgrep (Claude Code PostToolUse hook via ct plugin) — scans every file after Claude edits it using Semgrep OSS with community rules (~2,800 rules, no account required). The hook runs semgrep scan on changed files only, blocking further edits until issues are resolved. Skippable via SKIP_SEMGREP=1 environment variable.

Gitleaks (git pre-commit hook) — scans staged changes for secrets before every git commit. Defense-in-depth alongside Semgrep Secrets. Skip with SKIP_GITLEAKS=1 git commit -m "...".

Note: The global git hooks path (core.hooksPath) is set to ~/.git-hooks/. This overrides per-repo .git/hooks/ directories, but the hook script chains to repo-local hooks as a fallback. If you use the pre-commit framework in some repos, the chain-through ensures those hooks still run.

Skills

This template provides 79 skills total — 66 from plugins (Superpowers 14, CT 47, plus Frontend Design, Claude Code Setup, Hookify, Skill Creator, Engram) and 13 global skills from skills.sh + tools:

CategoryCountSourcesHighlights
Code Quality & Review4getsentry/skillsfind-bugs, security-review, GHA security, skill-scanner
Web Research & Documentation3tavily-ai, upstash/context7tavily-cli, tavily-map, library docs
Browser Automation2vercel-labsagent-browser, dogfood (QA)
Knowledge Management2kepano/obsidian-skillsObsidian CLI, markdown
UI Components1shadcn/uiComponent management and debugging
Code Navigation1gabb-softwareSemantic file exploration

See SKILLS.md for the complete inventory and WORKFLOWS.md for task-driven usage guidance.

Skills are installed globally (-g) so they are available in all projects. To add more, edit the SKILLS array in config.sh or install manually:

npx skills add <owner/repo> -g --all

Browse available skills at skills.sh.

LSP Integration

Claude Code supports Language Server Protocol for code intelligence (go-to-definition, find-references, diagnostics, etc.). This is highly recommended for effective code navigation and analysis.

Install the plugin and language server for each language you use:

Official Plugins (claude-plugins-official)

LanguagePlugin InstallLanguage Server Install
TypeScript/JSclaude plugin install typescript-lsp@claude-plugins-officialnpm install -g typescript-language-server typescript
Pythonclaude plugin install pyright-lsp@claude-plugins-officialnpm install -g pyright
Goclaude plugin install gopls-lsp@claude-plugins-officialgo install golang.org/x/tools/gopls@latest
Rustclaude plugin install rust-analyzer-lsp@claude-plugins-officialrustup component add rust-analyzer
C/C++claude plugin install clangd-lsp@claude-plugins-officialbrew install llvm (or sudo apt install clangd)
Javaclaude plugin install jdtls-lsp@claude-plugins-officialbrew install jdtls (requires JDK 21+)
C#claude plugin install csharp-lsp@claude-plugins-officialdotnet tool install --global csharp-ls
Rubyclaude plugin install ruby-lsp@claude-plugins-officialgem install ruby-lsp (requires Ruby 3.0+)
PHPclaude plugin install php-lsp@claude-plugins-officialnpm install -g intelephense
Kotlinclaude plugin install kotlin-lsp@claude-plugins-officialbrew install kotlin-language-server
Luaclaude plugin install lua-lsp@claude-plugins-officialbrew install lua-language-server
Swiftclaude plugin install swift-lsp@claude-plugins-officialIncluded with Xcode (or brew install swift)

Community / Third-Party Plugins

These languages have LSP servers but no official Claude plugin. Use third-party marketplaces or community plugins instead.

LanguagePlugin SourceLanguage Server InstallNotes
ScalaPiebald-AI/claude-code-lsps (Metals)cs install metalsRequires Coursier: brew install coursier/formulas/coursier && cs setup. JDK 11+ needed.
Haskellm4dc4p/claude-hls (community)ghcup install hlsRequires GHCup: curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh. HLS must match your GHC version.
OCamlPiebald-AI/claude-code-lsps or boostvolt/claude-code-lspsopam install ocaml-lsp-serverRequires opam: brew install opam && opam init. Install in the same opam switch as your project.
UnisonNo plugin available yetbrew install unisonweb/unison/ucmLSP is built into UCM. Run ucm lsp to start the language server. Feature coverage is still evolving.

To use third-party marketplaces, add them first:

claude plugin marketplace add Piebald-AI/claude-code-lsps
claude plugin marketplace add boostvolt/claude-code-lsps

After installing, restart Claude Code. Verify with: check ~/.claude/debug/latest for Total LSP servers loaded: N.

Agent Teams

The sandbox settings enable the experimental Agent Teams feature (CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS), which allows Claude to coordinate multiple agents working together on complex tasks.

Thinking Configuration

The sandbox settings configure extended thinking for maximum depth:

SettingValueEffect
alwaysThinkingEnabledtrueExtended thinking is always on — Claude never skips the thinking step
effortLevel"high"Default effort level is high (equivalent to /effort high every session)

Together these ensure Claude always thinks deeply, regardless of perceived task complexity. To temporarily lower effort in a session, use /effort medium or /effort low.

Note: There is a tier above high called ultrathink, which triggers max-level thinking for that single turn. It is activated per-turn by including "ultrathink" or "megathink" in your prompt, without changing your persistent effort setting.

Status Line

A custom status line script (templates/statusline.sh) is installed to ~/.claude/statusline.sh and configured via sandbox-settings.json. It displays up to three lines:

LineContentDetails
1📁 folder │ 🌿 branch │ 💭 modeCurrent directory, git branch, thinking mode
2Model │ ▓▓▓░░░░░ 15% [1M] │ 5h: 12% │ 7d: 8%Model name, context usage bar, 5-hour and 7-day rate limits
3🤖 agent │ 🌳 worktree (branch)Only shown when an agent or worktree is active

The context bar and rate limits are color-coded: green (< 70%), yellow (70–89%), red (90%+).

Shell Alias Awareness

A SessionStart hook owned by the ct plugin automatically loads your shell aliases into Claude's context at the start of every session. This prevents issues where Claude uses a command (e.g., grep) that is aliased to a different tool (e.g., rg) with incompatible flags.

The install.sh script adds a line to your ~/.bashrc and/or ~/.zshrc that exports aliases to ~/.claude/shell-aliases.txt on every new shell. The hook reads that file (kept outside the plugin so it survives plugin updates and reinstalls) at session start.

If you install new tools or update aliases, regenerate the file by running:

./export-aliases.sh

If you use a different shell (fish, nushell, etc.), add the equivalent of alias > ~/.claude/shell-aliases.txt to your shell's config file so the aliases are kept up to date.

Remote Notifications (ntfy.sh)

The ct plugin ships Stop and Notification hooks that POST to ntfy.sh so you get a push notification (mobile app, browser at https://ntfy.sh/app, or CLI subscriber) when Claude finishes a turn or blocks waiting for input. Designed for tmux-over-SSH workflows where osascript or terminal bells don't reach you.

install.sh auto-generates a random topic of the form claude-$USER-<16-hex> and writes it to NTFY_TOPIC inside the env block of ~/.claude/settings.json. Subscribe on your device to that topic URL to start receiving events. The hook silently no-ops when NTFY_TOPIC is unset, so removing the entry disables notifications without further changes.

Other Contents

  • SKILLS.md - Complete inventory of all plugins, skills, agents, commands, and MCP servers
  • WORKFLOWS.md - Task-driven guide: "when I need X, use Y"
  • install.sh - Setup script (marketplace, plugins, skills, sandbox settings)
  • update.sh - Updates all installed plugins, skills, and npm packages
  • uninstall.sh - Removes all plugins, skills, tools, settings, and shell aliases
  • export-aliases.sh - Regenerates ~/.claude/shell-aliases.txt (run after installing new tools)
  • plugins/ct/ - The local Claude Code plugin (skills, commands, agents)
  • templates/CLAUDE.md - Template project instructions
  • templates/statusline.sh - Custom status line (folder, branch, model, context, rate limits, agent/worktree)
  • sandbox-settings.json - Sandbox security configuration
  • mise.toml.example - Environment variable template for API keys

Acknowledgements

This repository was inspired by and incorporates patterns from:

Skills Info
Original Name:edge-case-discoveryAuthor:pvillega