By mickzijdel
Polyglot dev-workflow hooks for Claude Code (auto-lint on edit, verify tests/linters before stopping, plaintext-secret reminders, leftover-debug-statement reminders, missing-test reminders, stack-aware skill reminders, multi-session plan reminders, review-before-finishing reminders, end-of-session memory-capture reminders, dev-env-standard reminders, Dockerfile hadolint-lint-on-write, popover/tooltip positioning reminders, GitHub Actions ref-resolution reminders, inline-SVG-to-icon-library enforcement) plus thinking-tool skills (but-for-real, premortem, board, self-rate, weekly-automation-review, commit-digest), a dev-env-setup skill (mise + hk + CI + gitleaks + project-docs standard, version-tracked), a dockerfile skill (cache-friendly layer ordering + gotchas), a popovers-tooltips skill (collision-aware positioning with Floating UI in a Stimulus controller for Rails/Hotwire, plus Tippy/Flowbite/native Popover API), and writing/content and secrets-workflow skills adapted from Nate Berkopec's dotfiles (github-readme, humanizer, readability, env-to-fnox).
Based on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
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. 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.
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.
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).
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.
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.
Modifies files
Hook triggers on file write and edit operations
A Claude Code plugin bundling fifteen polyglot, project-agnostic dev-workflow hooks plus a set of thinking-tool skills. Each hook script detects the project's own toolchain (Ruby/Rails, JavaScript/TypeScript, Python) — there is nothing to configure.
| Event | Script | Purpose |
|---|---|---|
PostToolUse (Write|Edit|MultiEdit) | lint-on-edit.sh | Auto-fix/format the file Claude just wrote using the linter this project configures (RuboCop/Standard, erb_lint, Biome/Prettier/ESLint, Ruff/Black). Safe fixes only, never blocks. |
PostToolUse (Write|Edit|MultiEdit) | latest-deps-reminder.sh | When Claude writes a dependency manifest (requirements.txt, package.json, Gemfile, pyproject.toml, …) or hand-writes a lockfile, remind it to verify the versions are current (training data goes stale) with the right lookup command per ecosystem, or to regenerate lockfiles via the package manager. On manifest edits it also nudges Claude to keep the README/CLAUDE.md key-package versions in sync (creating those docs if missing). Advisory only, never blocks; fires once per session per ecosystem. |
PostToolUse (Write|Edit|MultiEdit) | dockerfile-reminder.sh | When Claude writes a Dockerfile/Containerfile, run hadolint on it and feed the findings (or a clean pass) back to Claude, plus a layer-ordering nudge that points at the dockerfile skill. If hadolint isn't installed, falls back to a once-per-session ordering/gotchas reminder. Advisory only — reports every time, never blocks. |
PostToolUse (Write|Edit|MultiEdit) | secret-plaintext-reminder.sh | When Claude writes what looks like a plaintext secret value (a named API_KEY/SECRET/TOKEN/PASSWORD assignment to a real literal, a private-key block, or an AWS key id), nudge it to migrate to fnox via the env-to-fnox skill instead of committing the value. Fires at write time (before gitleaks would at commit). Env-var refs and obvious placeholders are ignored. Advisory only, never blocks; fires once per session. |
PostToolUse (Write|Edit|MultiEdit) | popover-reminder.sh | When Claude writes popover/tooltip/dropdown/menu UI (a frontend file — the shared extension list, see inline-svg-reminder.sh notes — that has a popover/tooltip/dropdown controller filename, role="tooltip"/the popover attribute, an @floating-ui/popper/tippy import, a data-controller naming one, or a tooltip/popover/dropdown class/data-attribute), nudge it to use a collision-aware positioner (flip + shift) rendered in the top layer/a portal instead of hand-rolled top/left math, and point at the popovers-tooltips skill. Advisory only, never blocks; fires once per session. Opt out with DEV_HOOKS_POPOVER=false. |
PostToolUse (Write|Edit|MultiEdit) | ci-action-ref-reminder.sh | When Claude writes/edits a GitHub Actions workflow (a *.yml/*.yaml pinning uses: owner/repo@ref), nudge it to verify every ref actually resolves on the remote before finishing — an action can ship release tags (v8.0.0) without floating a @v8 major, so a wrong pin passes locally but breaks CI at "Prepare all required actions". Points Claude at the bundled check_action_refs.sh (which does the git ls-remote check); the hook itself never hits the network. Advisory only, never blocks; fires once per session per file. |
PostToolUse (Write|Edit|MultiEdit) | inline-svg-reminder.sh | When Claude hand-writes inline SVG into a frontend file (an <svg> blob with real drawing content — <path>/<circle>/<rect>/… or long d="M…" path data — or a data:image/svg+xml URI), feed a correction back (exit 2, every occurrence): use the project's icon library (named from package.json/Gemfile when found), else extract to a dedicated .svg file/sprite and reference it. Good patterns stay silent: <use href> sprite refs, writing .svg files, <img src="x.svg">, markdown, test files, data-driven chart markup (<rect x={…}>), and pre-existing SVG (Writes deduped against HEAD, Edits against old_string). Opt out with DEV_HOOKS_SVG_INLINE=false. |
Stop | verify-work.sh | On stop, detect changed code files and run the project's linters/tests (RuboCop, Minitest/RSpec, Ruff/pytest, ESLint/JS tests). Feeds failures back to Claude (exit 2) so it fixes them before finishing. |
Stop | debug-leftover-reminder.sh | On stop, flag debug statements Claude newly introduced this session (console.log/debugger, binding.pry/byebug/Ruby p, breakpoint()/pdb) — diffed against HEAD so pre-existing lines are ignored — and feed them back (exit 2) to strip before finishing. Test files excluded. Fires at most once per session. |
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimnpx claudepluginhub mickzijdel/dev-hooks --plugin writingRead and edit Office documents (.docx, .xlsx, .pdf) and whole folders of mixed documents as plain text, including embedded comments/annotations by default. Ships the readoc (single/multi file), readir (tree/read/search a folder), and editdoc (Edit-tool-equivalent for .docx/.xlsx) CLIs plus an office-documents skill. Structure-aware search adds paragraph, character, and spreadsheet-cell context beyond a line-oriented grep. Output is never truncated.
Skills and utilities for working with Airtable: scripting API guidance, schema export, and collaborator access scraping.
Visual verification for Claude Code — screenshot CLI, smart reminder hook, and dev auth bypass pattern for any framework.
37signals-style Rails skills (philosophy, style, models, controllers, jobs, testing, Turbo, Stimulus, security, performance, multi-tenancy, ActiveStorage, ViewComponents, API) plus a rails-core gotchas skill and a Rails-detection session hook.
Comprehensive skill pack with 66 specialized skills for full-stack developers: 12 language experts (Python, TypeScript, Go, Rust, C++, Swift, Kotlin, C#, PHP, Java, SQL, JavaScript), 10 backend frameworks, 6 frontend/mobile, plus infrastructure, DevOps, security, and testing. Features progressive disclosure architecture for 50% faster loading.
Develop, test, build, and deploy Godot 4.x games with Claude Code. Includes GdUnit4 testing, web/desktop exports, CI/CD pipelines, and deployment to Vercel/GitHub Pages/itch.io.
Harness-native ECC operator layer - 67 agents, 271 skills, 92 legacy command shims, reusable hooks, rules, selective install profiles, and production-ready workflows for Claude Code, Codex, OpenCode, Cursor, and related agent harnesses
Core skills library for Claude Code: TDD, debugging, collaboration patterns, and proven techniques
Tools to maintain and improve CLAUDE.md files - audit quality, capture session learnings, and keep project memory current.
Upstash Context7 MCP server for up-to-date documentation lookup. Pull version-specific documentation and code examples directly from source repositories into your LLM context.