mickzijdel
UserHook, skill, and CLI script for agents to take screenshots and visually check their work
Categories
Indexed Skills (63)
setup-auth
Set up the dev auth bypass route so the screenshot tool can authenticate. Invoke when screenshot fails with an auth/login redirect, or when the user explicitly asks to set up dev auth.
verify
Visually verify UI changes by taking authenticated screenshots of the local dev server. Use after editing any view, template, component, or layout file. If screenshot redirects to a login page, invoke vischeck:setup-auth first.
airtable-schema
Export and inspect an Airtable base schema (tables, fields, views) using the airtable-export-schema utility. Use when the user wants to export a base schema, or when you need schema context before writing Airtable scripts.
airtable-scripting
Comprehensive guidance for writing Airtable scripts in both Scripting Extensions (manual execution) and Automation Scripts (triggered execution). Use when writing scripts for Airtable Scripting Extensions, creating automation scripts, integrating external APIs with Airtable, working with Airtable's native Scripting API, handling different field types programmatically, or troubleshooting script errors.
airtable-standards-check
Check an Airtable schema JSON file against the BlueDot Impact Airtable Standards. Use when the user wants to validate their Airtable base structure, find naming convention violations, or produce a standards compliance report.
airtable-user-scraping
Scrape user/collaborator access data from Airtable bases using the airtable-scrape-users utility. Use when the user wants to audit who has access to which Airtable bases and at what permission level.
getting-started
Use when someone new to coding (or to AI-assisted coding) needs their machine set up — they say "set me up", "onboard me", "I just installed Claude Code", ask how to start coding with Claude, or want an existing setup checked or brought up to date (toolchain, editor, Docker, GitHub, Claude config). Idempotent and safe to re-run. macOS, Linux, and WSL2.
starting-a-project
Use when someone is starting a new project and unsure what stack or framework to build it with — "what should I use to build X?", "how do I start a new project?" — or asks how to deploy / put a project online. Covers the common beginner goals: a content website, an interactive app, a database-backed web app, an API, a script or automation, a phone app, a data dashboard.
api-scraping
Get structured data off a website by reverse-engineering the private JSON/GraphQL API behind it instead of scraping rendered HTML. Use when the user wants to "scrape a site", "get all the X from", "pull listings/results/posts/prices from", "build a scraper/client for", says "there's no public API for this", or "reverse-engineer this site's API". The loop: capture network traffic (HAR), find the request carrying the data, replay it outside the browser, minimize headers/auth to only what's required, then generate a paginating, rate-limited, resumable client. Escalates only as far as it must (headers → cookies/token → TLS impersonation → headless browser) and stops at CAPTCHAs and anything needing the user's legal/ToS call.
compress-comments
Use when a session's work left verbose or redundant code comments to clean up — after finishing a feature, before commit/merge, when the compress-comments-reminder hook fires, or when asked to "compress the comments", "clean up your comments", or "review the comments you added". NOT for reviewing code structure (use code-simplifier) or whole-repo audits (use repo-review).
dependency-upgrade
Bring a repo's dependencies up to the latest versions across JavaScript (npm/pnpm/yarn), Ruby (bundler), Python (uv/poetry/pip), and GitHub Actions — reading changelogs/migration guides for major bumps, applying the needed code changes, and landing each step as its own verified commit. Use when the user wants to "update my packages", "upgrade dependencies", "bump deps to latest", "check for outdated packages", or do this across all their repos (fleet mode). Gates every commit on a green test suite; defers any major it can't get green to a written report. Pairs with the github-actions skill (Actions pins) and respects dev-env-setup's 4-day dependency cooldown.
dev-env-setup
Audit a repo against an opinionated dev-environment standard (mise pinning tools, an hk pre-commit hook running linters/tests + gitleaks, a GitHub Actions workflow that mirrors those checks, and project docs — README.md + CLAUDE.md recording pinned package versions) and set it up or upgrade it. Use when a repo is missing the standard setup, when the dev-env-reminder hook flags a gap, when the user mentions hk/mise/gitleaks/"my dev setup", when starting a new repo, or to backfill every standard-tracking repo after a version bump (fleet mode). Tracks a standard version via DEV_ENV_VERSION in mise.toml and upgrades behind repos using references/upgrade-guide.md.
env-to-fnox
Migrate a project's plaintext .env file to fnox, a secret manager that stores only *references* in a committed fnox.toml and resolves real values from a vault at run time. Use when a repo has secrets in .env (or .env.local) and the user wants them out of plaintext, when setting up secrets for a new project, or when the user mentions fnox, Bitwarden Secrets Manager, bws, or "stop committing my .env". Defaults to the Bitwarden Secrets Manager provider; also supports 1Password, age, AWS/Azure/Vault, and the OS keychain.
github-actions
Write, review, and harden GitHub Actions workflows against supply-chain attacks, and bump a whole fleet of repos' action pins to the latest versions. Use when writing or editing a workflow YAML (.github/workflows/*.yml, ci.yml), when asked to review a CI workflow or audit GitHub Actions security, when the ci-action-ref-reminder hook fires, or when the user wants to "bump my actions", "update the fleet", "pin actions to SHAs", run zizmor, or close supply-chain / pull_request_target / script-injection / GITHUB_TOKEN-permissions gaps. Pairs with references/security-checklist.md (the full checklist) and dev-env-setup's CI templates.
repo-review
Whole-repository review/audit of an existing or inherited codebase. Use when the user says "review this repository", "audit this codebase", "do a full code review of the repo", "what's wrong with this app", "I just inherited this project", or asks for a multi-axis sweep (e.g. "review for 1. performance 2. code smells 3. structure"). NOT for reviewing a single diff/PR (use the /code-review command) or a one-file change.
worktree-setup
Provision a freshly-created git worktree so it's actually ready to work in — trust its mise.toml, copy gitignored-but-needed files (Rails config/master.key, .env, …) from the main checkout, and re-mark shebang scripts executable. Use right after creating a worktree (native EnterWorktree or `git worktree add`), or when a new worktree errors with "mise.toml not trusted", is missing secrets/.env, can't load the app, or has non-executable scripts. Also when parallel worktrees collide on the same dev-server port or database — opt into per-worktree ports + databases via a `.worktree-isolate.conf`. Pairs with using-git-worktrees (which creates the worktree; this provisions it).
humanizer
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.
voice-profile
Use when drafting or revising prose that should match a specific person's writing voice — when the user says "match my voice", "in my style", "sound like me", "use my voice profile", or has a voice_profile.md; and when building or updating such a profile from samples. For expository/academic write-ups, docs, essays, and newsletters.
office-documents
Use when you need to read OR edit the contents of Office documents (.docx, .xlsx, .xlsm, .pdf) or explore/search a folder of mixed documents. Provides the readoc, readir, and editdoc CLIs. Reach for this whenever a task involves reading or modifying a Word doc, Excel sheet, PDF, or a directory of such files.
rails-activestorage
Use when handling file uploads, variants, direct uploads, and rich text attachments
rails-audit
Use when auditing, reviewing, or doing a health-check of an existing/inherited Rails app — onboarding to a legacy codebase, assessing technical debt, or a pre-engagement code review. Orchestrates the deep-dive rails-* skills and produces a severity-ranked report. Triggers on: code audit, app review, legacy/inherited Rails app, technical debt assessment, 'review my Rails app'.
rails-clean-test-output
Systematically eliminate unexpected output (warnings, stray puts/p/pp, deprecation notices) from a Rails test suite, one issue at a time, with per-fix verification and commits. Works for both RSpec (`bundle exec rspec`) and Minitest (`bin/rails test`) - detect which the project uses and adapt. Use whenever the user wants to clean up, silence, fix, or investigate noisy test output, mentions warnings or stray logs during test runs, or asks to get their suite running "clean" - e.g. "my test output is noisy", "there's a bunch of warnings when I run specs/tests", "help me clean up the test output".
rails-controllers
Use when writing thin controllers with concerns, resource-oriented design, and REST patterns
rails-core
Use FIRST on any Ruby on Rails work — the project owner's hard-won Rails gotchas and non-negotiable rules (fixtures, migrations, Stimulus LSP, validation, gems, test suite). Read before writing or changing Rails code.
rails-database-performance
Use when reviewing or auditing a Rails app's database schema for missing indexes, slow query patterns, or database performance issues. Triggers on: schema review, slow queries, EXPLAIN ANALYZE output, missing index warnings, or any request to audit db/schema.rb.
rails-i18n
Use when adding or auditing internationalization (I18n) — locale file organization, lazy lookup, pluralization, number/date/currency formatting, per-request locale selection, fallbacks, translating validation errors and model/attribute names, and catching missing/unused keys with i18n-tasks. Triggers on "i18n", "internationalization", "translate", "locale", "pluralize", "missing translation", "l10n", "add a language".
rails-jobs
Use when writing background jobs with Solid Queue, including recurring jobs and context serialization
rails-logging
Rails logging and observability — Lograge for structured one-line request logs, tagged logging with request/user context, sensitive parameter filtering, ActiveSupport::Notifications for custom instrumentation, Sentry/error-tracker integration, health check endpoints, and log-level configuration. Use when setting up a new app's observability stack, debugging noisy logs, or adding structured logging.
rails-mailers
Use when writing, configuring, or testing ActionMailer mailers — layouts, previews, deliver_later vs deliver_now, i18n subjects, attachments, bounce handling, and local dev delivery. Triggers on "mailer", "send an email", "ActionMailer", "email template", "deliver_later", "mailer preview", "bounce".
rails-migrations
Use when writing, reviewing, or executing database migrations — especially on tables with existing data in production. Covers safe zero-downtime patterns, the strong_migrations gem, concurrent index creation, column and table renames, data backfills, and removing columns safely. Extends rails-core rule 5 (multi-step nullable columns) with the full toolkit. Triggers on "migration", "add column", "rename column", "backfill", "index", "drop column", "change column type", "zero-downtime".
rails-models
Use when writing ActiveRecord models with concerns, validations, callbacks, scopes, and associations
rails-multi-tenancy
Use when implementing URL-based multi-tenancy, CurrentAttributes, or account context patterns
rails-performance
Use when optimizing performance with caching, ETags, batching, and N+1 prevention
rails-philosophy
Core philosophies, design choices, and tacit knowledge underpinning 37signals-style Rails development
rails-project-setup
Use when setting up a new Rails 8 project with modern stack (Solid Queue, Solid Cache, Solid Cable, Kamal deployment)
rails-security
Use when implementing authentication, authorization, or security features in Rails
rails-stimulus
Use when writing Stimulus controllers with modern JavaScript patterns (ES2022 private fields, values, targets)
rails-style
Use when following Rails code style conventions for method ordering, conditionals, REST routing, and naming
rails-testing
Use when writing tests with fixtures, system tests, VCR cassettes, and parallel execution, or when profiling/speeding up a slow test suite (Stackprof, Speedscope, TestProf)
rails-turbo
Use when implementing Turbo Frames, Streams, broadcasting, and view transitions in Rails
rails-viewcomponents
Use when creating, extracting, or refactoring ViewComponents in a Rails app — including slot design, component API, testing, and when to extract vs keep as partials
airtable-schema-diff
Compare two Airtable schema exports to see what changed between them. Use when the user wants to diff two schema JSON files, detect table/field/view additions, removals, renames, or type changes.
accessibility
Use when building or reviewing web UI — auditing or fixing accessibility (a11y) against WCAG 2.2 / ARIA. Covers semantic HTML, alt text, accessible names, labels, keyboard focus order, color contrast, and reduced motion, with Rails/Hotwire and React patterns. Pairs with the a11y-reminder hook.
agent-brief
Use when writing a task brief for an agent — dispatching a subagent, handing off work, or turning a fuzzy request into instructions — and you want it aimed at an outcome, not a method. Triggers on "brief an agent", "write a task for a subagent", "spec this out for an agent", or a handoff that says what to do but not why or what's out of scope. Pairs with the intent-check hook.
dockerfile
Use when writing or editing a Dockerfile/Containerfile (or any container image build) — covers cache-friendly layer ordering and common gotchas.
loop-oversight
Use before launching a loop that runs many iterations — a `/loop`, a `/schedule` routine, or a Workflow fan-out — or when a running loop is drifting, unbounded, or leaving no reviewable trail. Triggers on "loop over every X", "go through all the Y and track status", "automate this repetitive sweep", "run this on a schedule", or an Osman-style "make a canonical tracker and work through every item". Sets up the ledger, the bound, and the independent verify pass a loop needs to stay reviewable. NOT for a one-off task (just do it) or one-shot parallel fan-out with no iteration (that's dispatching-parallel-agents).
off-topic-improvements
Use when working through a repo's `plans/off-topic-improvements.md` backlog — the out-of-scope improvements noted during earlier work. Triggers on "drain the backlog", "address the off-topic improvements", "tackle the off-topic backlog", "work through the improvements file", or clearing accumulated backlog items. Triages each item (do now / defer / drop), lands each addressed item as its own atomic commit, and keeps the backlog file in sync. NOT for finding new improvements (that's a review) or a single ad-hoc fix.
popovers-tooltips
Use when building or fixing popovers, tooltips, dropdowns, menus, comboboxes, or any floating/overlay UI — especially when they render off-screen, get clipped, or are mis-positioned. Covers Floating UI in a Stimulus controller (Rails/Hotwire), Tippy/Flowbite/Preline, and the native Popover API.
script-library
Use when a one-off script you wrote is worth keeping — to genericize it and save it to the reusable CLI library (~/.local/bin or a shared scripts repo). Triggers when the save-script-reminder hook fires, or the user says "save this script", "make this a CLI tool", or "add it to my scripts".
tailwind
Use when writing or fixing Tailwind CSS — in HTML, ERB/ViewComponent, JSX, Vue, or any template that carries utility classes. Covers design tokens, taming class soup, component-first extraction, dark mode, responsive layout, and accessibility. Triggers on "tailwind", "css", "styling", "dark mode", "responsive", "class soup", "@apply", "design system", or any "make this look right / fix this layout" request — even when styling isn't named explicitly, since templates almost always contain Tailwind classes.
adr
Use when making a significant architectural or technical decision that shouldn't be re-litigated later — choosing a tool, pattern, or approach with real trade-offs. Write one ADR per decision, proactively the moment such a decision lands — don't wait to be asked. Triggers on "record this decision", "why did we choose X", "document our approach to Y", "write an ADR", or when completing a decision that cost real deliberation (library selection, database strategy, auth approach, deployment model).
board
Use when you want hard, independent, adversarial critique of an idea, plan, design, draft, proposal, pitch, or landing page — especially when you suspect the default response is too agreeable or sycophantic and you want real pushback before committing. Convene it on your own initiative before returning a consequential plan or draft, not only when asked. Triggers on "poke holes in this", "what am I missing", "be brutal", "convince me this is wrong", or any decision that benefits from several expert angles at once.
but-for-real
Use when about to claim something is done, fixed, working, passing, or ready to ship; when a change has only been eyeballed or pattern-matched rather than actually run; or when the user says "but for real", "for real this time", "don't guess", or "did you actually test it". Triggers on premature success claims, unverified fixes, and hand-waving instead of inspecting the real code.
codebase-design
Use when designing or restructuring a module's interface — deciding what hides behind a seam, judging whether an abstraction earns its keep, or making code testable through its interface. Triggers on "design this interface", "is this abstraction worth it", "where should this boundary go", "make this more testable", or when another skill needs the deep-module vocabulary. Not for domain terminology (that's [[domain-modeling]]) or whole-repo audits.
commit-digest
Use on a weekly (or on-demand) cadence to review recent commits from tracked external repos (e.g. dotfiles, framework repos) and optionally Atom/RSS feeds, then pull in improvements applicable to the current project. Opens a separate PR for each implementation and logs skipped suggestions to a dedicated branch for searchable, dedup-safe history. Triggers on "check for new ideas", "what changed upstream", "any improvements to pull in from <repo>", "review dotfiles commits", or as a scheduled agent. Companion to weekly-automation-review, which reviews the local repo's own activity.
domain-modeling
Use when pinning down a project's domain terminology — building or sharpening a CONTEXT.md ubiquitous-language glossary, resolving vague or conflicting terms, or when another skill needs the domain model maintained. Triggers on "ubiquitous language", "domain glossary", "what should we call this", "add this to CONTEXT.md", or a term that conflicts with the existing glossary. Not for recording decisions (that's [[adr]] — this skill hands off to it).
grill
Use when a plan, design, or feature idea needs to be interrogated until it is fully specified — the user wants to be interviewed, one question at a time, until every open decision is resolved. Triggers on "grill me", "interview me", "ask me questions about this", "stress-test this plan with me", "help me fully specify this", or before writing a plan/PRD from a still-fuzzy idea — offer to grill first rather than drafting from guesses. Not for generating ideas from scratch (that's brainstorming), third-party critique (that's [[board]]), or failure-mode hunting (that's [[premortem]]).
premortem
Use before committing to a non-trivial plan, design, architecture, migration, launch, or irreversible decision — especially when momentum or optimism is high and nobody has named what could go wrong. Triggers when you're about to start executing a plan, when stakes are high or the decision is hard to reverse, or when the user asks to stress-test, pressure-test, or sanity-check an approach. Not for generating ideas (that's brainstorming).
weekly-automation-review
Use on a weekly (Monday) cadence, or when asked what repetitive work is worth automating, what to turn into a skill/hook/tool, or to review recent activity for automation opportunities. This is the skill the scheduled Monday remote agent invokes. Triggers on recurring-task review, "what should I automate", and end-of-week/start-of-week retrospectives.
github-readme
This skill should be used when creating or revising a GitHub README for a software project, including section structure, onboarding flow, examples, and contribution guidance.
readability
This skill should be used when writing or revising web content, product copy, AI-generated responses, docs, or long-form text where clarity, scannability, and comprehension matter.
code-simplifier
Simplify and refine code for clarity, consistency, and maintainability while preserving all functionality. Use after modifying code, when asked to simplify or clean up code, or during refactoring. Focuses on recently changed sections unless directed otherwise.
self-rate
Use before returning a draft, answer, plan, or code change you're unsure about, or when the user asks how confident you are, how good it is, or to grade/score/critique your own work. Triggers when claims may be overstated, when output quality is uncertain, or when you want to catch weak spots before the user does rather than after.
Bio shown is the top-scored skill's repo description as a fallback — real GitHub bios land in a future update.