
Read this skill before making git commits
This skill encodes Emil Kowalski's philosophy on UI polish, component design, animation decisions, and the invisible details that make software feel great.
Spawn the pi coding agent with a specific model/provider. Use when asked to run pi with a particular model, switch pi's model, use DeepSeek V4 Flash/Pro in pi, or look up pi's --model/--provider/--models CLI flags and thinking-level shorthand.
Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".
Use cargo for Rust development with check-first workflow. Prefer cargo check over cargo build, use debug builds for testing, AVOID release builds unless explicitly needed.
Save notes to the agent-notes Obsidian vault. Use when you discover something worth remembering — insights, decisions, references, or debug findings — for a specific project or as shared cross-project knowledge.
Find bugs and verify correctness in code changes. Use when reviewing a PR, staged diff, or specific code the user points at. Hunts for logic errors, security flaws, race conditions, resource leaks, and API misuse. Produces evidence-based findings with concrete failure scenarios. Does NOT flag style, formatting, or naming issues.
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction.
IDA Pro plugin development - SDK setup, CMake build patterns, Python plugin structure, Nix packaging, and common gotchas for IDA 9.x.
Create and edit JSON Canvas files (.canvas) with nodes, edges, groups, and connections. Use when working with .canvas files, creating visual canvases, mind maps, flowcharts, or when the user mentions Canvas files in Obsidian.
Create and edit Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties, and other Obsidian-specific syntax. Use when working with .md files in Obsidian, or when the user mentions wikilinks, callouts, frontmatter, tags, embeds, or Obsidian notes.
Converts a research paper (PDF path, uploaded PDF, or URL) into a reusable skill that stores distilled knowledge for future sessions. Use when a user asks to "turn this paper into a skill", "make this PDF reusable", "encode this research", or wants project-specific decisions backed by a specific paper without re-uploading it.
Use when manipulating Zellij sessions, creating tabs or panes, sending commands to panes, capturing output, or looking up Zellij CLI commands for terminal multiplexer operations
Use uv for Python development. Always prefer uv over pip/poetry/virtualenv. Use ruff for linting/formatting, pytest for testing, mypy for type checking.
How to write meaningful tests that verify behavior, not implementation details. Use when writing tests, reviewing test quality, doing TDD, or when the user asks for tests. Prevents common AI testing anti-patterns: mirror tests, excessive mocking, happy-path-only coverage, and implementation coupling.
Emulates not-matthias's technical blog writing style. Use when writing blog posts, technical articles, README content, or any long-form technical prose. Produces investigation-driven, first-person narratives with dry humor, practical code examples, and concrete takeaways.
Extract patterns and challenges from past Claude Code conversation logs and convert them into reusable skills or memory entries. Run periodically to capture recurring solutions.
Interactive brainstorming and planning skill. Use when the user wants to brainstorm, plan, spec out, or think through an idea — whether it's a software feature, a project, a business idea, or anything else. Triggers on /brainstorm, "let's brainstorm", "help me plan", "spec this out", "I want to build X but not sure how", "help me think through", "design X with me". Asks structured questions in adaptive rounds, explores the codebase when relevant, and produces a plan with task breakdown saved to .agents/docs/.
Full technical architect toolkit for pre-implementation due diligence. Covers prior art research, codebase impact analysis, design doc / RFC generation, acceptance criteria, and dependency mapping. Use when the user wants to do technical planning, architecture review, impact analysis, or due diligence before building. Triggers on /architect, "what's the impact of", "write an RFC", "design doc for", "what exists for this", "prior art", "acceptance criteria", "what would this affect".
Guide for writing ast-grep rules to perform structural code search and analysis. Use when users need to search codebases using Abstract Syntax Tree patterns, find specific code structures, or perform complex code queries that go beyond simple text search.
Use when analyzing complex codebases for security vulnerabilities, performance issues, and structural patterns - provides systematic AST-based approach using ast-grep for comprehensive code understanding beyond manual inspection
Normalize Claude-specific project config to the generic Agent Skills convention. Merge CLAUDE.md into AGENTS.md and merge .claude/ into .agents/ as the canonical location, then create Claude compatibility symlinks back to the generic files. Use when asked to "normalize agent config", "sync agent files", "set up AGENTS.md", "make this repo work with other agents", "create generic agent config", or "claude to agents".
Guide for setting up and using cmkr.build, a modern CMake-based build system using TOML configuration. Use when creating new C++ projects, setting up CMake builds, converting from CMakeLists.txt, or when users mention cmkr, cmake.toml, or "CMake TOML".
General Correctness rules, Rust patterns, comments, avoiding over-engineering. When writing code always take these into account
Extract clean markdown content from web pages using Defuddle CLI, removing clutter and navigation to save tokens. Use instead of WebFetch when the user provides a URL to read or analyze, for online documentation, articles, blog posts, or any standard web page.
Export the current Claude Code conversation to a GitHub Gist as markdown. Use when sharing conversation history, archiving sessions, or creating shareable documentation from a Claude Code conversation.
Systematic fact-checking for technical blog posts. Extracts every claim (explicit and implicit), cross-references against attached specifications, architecture manuals, source code, and documentation, then generates a verification report with citations and verdicts.
Guide to using ghidra-cli for headless Ghidra automation. Use when analyzing binaries, decompiling functions, searching for patterns, tracing cross-references, patching bytes, or running automated reverse engineering workflows.
Use whenever working with GitHub — PRs, issues, CI runs, review comments, unresolved threads, code search, or any `gh` CLI / GraphQL query.
Search GitHub code using gh code-search command. Use when looking for reference implementations, code examples, or specific patterns across GitHub repositories. Particularly useful for Nix configurations, language-specific patterns, or learning how others solved similar problems.
Plain-text flashcard system using FSRS spaced repetition. Use when 'hashcards' is explicitly mentioned — for creating cards, managing decks, running reviews, or scripting card generation.
Configure and use Himalaya CLI email client with Protonmail Bridge. Use when setting up himalaya, debugging IMAP/SMTP connection issues, or managing email from the terminal. Covers config format for v1.2.0, Protonmail Bridge quirks, and common commands.
Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.
Discover project conventions and surface security concerns. Use when starting work in a new or unfamiliar project, when asked to "learn the codebase", "check project rules", "what are the conventions", "onboard to this project", or "anything shady in this codebase". Scans agent config files (.claude/, .cursor/, CLAUDE.md, etc.) and runs a security/smell sweep for hardcoded secrets, insecure patterns, suspicious dependencies, and dangerous configurations.
Use when working with the Linear CLI (`linear`) to browse and manage issues, projects, teams, cycles, labels, documents, and GraphQL queries.
Must read guide on creating/editing mermaid charts with validation tools
Keep code changes as small, local, and low-churn as possible while preserving correctness. Use when implementing or reviewing a change where the goal is the smallest safe git diff with no unrelated refactors.
Creating and debugging Nix packages - fetchers, hash generation, overlays, AppImage wrapping, and common build patterns for NixOS dotfiles.
Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries. Use when working with .base files, creating database-like views of notes, or when the user mentions Bases, table views, card views, filters, or formulas in Obsidian.
Interact with Obsidian vaults using the Obsidian CLI to read, create, search, and manage notes, tasks, properties, and more. Also supports plugin and theme development with commands to reload plugins, run JavaScript, capture errors, take screenshots, and inspect the DOM. Use when the user asks to interact with their Obsidian vault, manage notes, search vault content, perform vault operations from the command line, or develop and debug Obsidian plugins and themes.
Austrian rail travel planner (ÖBB Scotty). Use when planning train journeys in Austria, checking departures/arrivals at stations, or looking for service disruptions. Covers ÖBB trains, S-Bahn, regional trains, and connections to neighboring countries.
Guide to using Rizin and Radare2 for binary analysis - lookup instructions, functions, basic blocks, and control flow graphs. Use when analyzing binary structure, investigating control flow graphs, disassembling code, or exploring function calls and jumps.
Use `uv` instead of pip/python/venv. Run scripts with `uv run script.py`, add deps with `uv add`, use inline script metadata for standalone scripts.
Review changed code for reuse, quality, and efficiency, then fix any issues found. Use after completing an implementation to catch redundancy, dead code, and over-engineering before committing.
Guide for creating or importing agent skills. Use when users ask to add/create/update/copy/adapt a skill (including from URLs or GitHub). Enforces skill format, trigger-quality descriptions, and source attribution via an HTML comment at the end of SKILL.md when externally sourced.
Find and download skills. Use when you need to discover existing skills from GitHub repositories and store them in the correct local skills category. Results in discovered skills being downloaded into the users dotfile repo.
Systematic technical research and brainstorming. Given a question, recursively explores attached specifications, source code, documentation, GitHub repositories, and authoritative online sources to build comprehensive, accurate answers. Surfaces edge cases, caveats, and implementation details that matter.
Create and manage Git worktrees for parallel feature development. Use when user wants to work on multiple features simultaneously or needs isolated development environments.
Navigate to directories using zoxide (frecency-based directory jumper). Use when the user says "go to", "navigate to", "cd to", "jump to" a project or directory by nickname/partial name (e.g. "go to my dotfiles", "jump to dot").
Fetch and display raw content from GitHub file URLs by automatically converting standard GitHub URLs to raw.githubusercontent.com format and retrieving the file content.