SLOPSHOPPER

guard-rails

Blocks git commands that sweep or discard other agents' work, and dashes in commit and PR text

newguard
v0.1.0MITupdated 2026-10-10michaelezehi/nw-skills/mods/guard-rails
A shopper browsing a rack in a slop shop
README

NW skills

New Ward skills: agent skills and slash commands for Claude Code that I use on every project.

Most are my own. Some started as other people's skills and now carry my changes, mostly an unlazy completion gate and plain-writing rules wired in. Each one is marked in the tables below.

Install

Claude Code plugin

claude plugin marketplace add michaelezehi/nw-skills
claude plugin install nw-skills@nw-skills

Plugin skills and commands are namespaced, so /research becomes /nw-skills:research.

skills.sh

npx skills@latest add michaelezehi/nw-skills

This copies editable skill folders into your project or ~/.claude/skills.

By hand

Copy any folder under skills/<category>/ into ~/.claude/skills/, and any file under commands/ into ~/.claude/commands/.

Several skills point at ~/.claude/skills/unlazy/scripts/gate-check.mjs and ~/.claude/skills/unslop/SKILL.md. Install unlazy and unslop first if you take only a few.

Skills (38)

Engineering

SkillWhat it doesOrigin
app-user-journeyScan a codebase for every user role and map each one's real journey, registration, onboarding, the day-one surface, and a proposed leaner path, then ship it as an...Original
build-speedAudit and fix any project's build + deploy pipeline for speed, kill cache-busting, move builds off the deploy box into CI, wire registry pull mode, and prove every...Original
convex-backup-cronInstall a 4x-daily production backup cron for Convex + DigitalOcean Spaces projects.Original
ogInstall a dynamic Open Graph / Twitter social card route into a Next.js project.Original
own-goalRun a goal or a whole PRD to completion: a verifiable completion condition worked in a loop until met, with an accountability record and a /reviewer gate.Original
project-optimisationFind and fix why a JS/TS monorepo is slow, from dev server memory to first-load JS per route: measure, fan out by cause, fix in parallel, re-measure, ship through staging.Original
qa-casesGenerate a shareable QA test case .md document for the current project.Original
terminal-upgradeTurn pnpm dev / npm run dev / yarn dev / bun dev in every repo on the machine into Devdeck, a calm live terminal dashboard.Original
ts-upgradeMove a repo's type checking to TypeScript 7, the native compiler, without breaking ESLint, tsup, Next, Expo, Remotion, Convex, CI or Docker builds, and measure before and after.Original
unlazyAnti-laziness execution discipline, required on every task sized L or XL (the /prd-ch scale) and run on request for anything smaller.Modified from Leonxlnx/unlazy
vercel-react-best-practicesReact and Next.js performance optimization guidelines from Vercel Engineering.Modified from vercel-labs/agent-skills
walkthroughAdd a guided walkthrough to any web app, one story per user role: a story bar with arrow keys, a journey reader with "show me how to get there", split prompt cards, and an optional demo tier...Original

Design and frontend

SkillWhat it doesOrigin
apple-designApple's approach to interface design and fluid, physical motion, translated for the web.Modified from emilkowalski/skill
brandkitPremium brand-kit image generation skill for creating high-end brand-guidelines boards, logo systems, identity decks, and visual-world presentations.Modified from Leonxlnx/taste-skill
click-burstAdds a performant click-triggered full-viewport color burst transition (scale + opacity only, no animated blur).Original
design-taste-frontendAnti-slop frontend rules for LANDING PAGES, PORTFOLIOS, and MARKETING REDESIGNS: reads the brief, infers direction, ships interfaces that do not look templated, with...Modified from Leonxlnx/taste-skill
emil-design-engEmil Kowalski's design-engineering philosophy, animation decisions, springs, gestures, component feel, and the invisible details that make software feel great.Modified from emilkowalski/skill
fedAlias for frontend-design.Original
find-animation-opportunitiesSearch a codebase or UI for places that don't animate but should, and reject everything that shouldn't.Modified from emilkowalski/skill
frontend-designThe main frontend skill. Distinctive, production-grade UI with high craft in typography, layout, colour and motion.Original
iconizeExtract individual icons from sprite sheets into named, square PNG files organized by category.Original
image-to-codeAlias for imagegen-frontend-web (image-first web flow: generate section images, then code them).Modified from Leonxlnx/taste-skill
imagegen-frontend-mobilePremium mobile app screen concept images, iOS, Android, and cross-platform screens and multi-screen flows (onboarding, auth, home, profile, settings, chat, commerce,...Modified from Leonxlnx/taste-skill
imagegen-frontend-webThe image-first WEB flow, generate one premium horizontal reference image per section (hero, landing page, marketing site, product page, portfolio), deeply analyze...Modified from Leonxlnx/taste-skill
impeccableUse when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise...Modified from pbakaus/impeccable
improve-animationsSurvey a codebase's animation and motion code as a senior motion advisor, then produce a prioritized audit and self-contained implementation plans for other agents...Modified from emilkowalski/skill
industrial-brutalist-uiOPT-IN STYLE PRESET, use ONLY when the user explicitly asks for brutalist / industrial / Swiss-print / terminal aesthetics, or names this skill.Modified from Leonxlnx/taste-skill
minimalist-uiOPT-IN STYLE PRESET, use ONLY when the user explicitly asks for a minimalist / Notion-like / warm-monochrome editorial look, or names this skill.Modified from Leonxlnx/taste-skill
pick-ui-libraryPick the right library for a given frontend task from a curated, opinionated list, numbers, OTP inputs, charts, command menus, virtualization, drag and drop, toasts,...Modified from emilkowalski/skill
prototypeBuild multiple genuinely different versions of a UI piece you describe, rendered behind a visual picker so you can flip through them live and promote the one that...Modified from emilkowalski/skill
redesign-existing-projectsUpgrades existing websites and apps to premium quality.Modified from Leonxlnx/taste-skill
review-animationsReviews animation and motion code against a high craft bar derived from Emil Kowalski's design engineering philosophy.Modified from emilkowalski/skill
sketchesHand-drawn SVG sketch/doodle system with a growing, brand-themeable repertoire.Original
stitch-design-tasteSemantic Design System Skill for Google Stitch.Modified from Leonxlnx/taste-skill
the-broadsideInstall the broadside editorial slide-deck design system into the current React/Next.js project.Original
the-stripe-modalInstall the editorial-press design system (surface card + slide-in modal flow + hero empty state) into the current React/Next.js project.Original
ui-ux-pro-maxUI/UX design intelligence for web and mobile.Modified from nextlevelbuilder/ui-ux-pro-max-skill

Writing

SkillWhat it doesOrigin
humanizerRewrite AI-sounding text so it reads like the writer without changing what it says.Modified from blader/humanizer
rndCreate a shareable internal R&D page from a team brief, a votable consensus spec with a participant intro gate (--consensus), a screen-by-screen product build deck...Original
unslopCut AI tells from any writing.Original
writing-clearly-and-conciselyStrunk companion for prose humans will read.Modified from softaworks/agent-toolkit

Commands

CommandWhat it does
/cfForce-continue a context-exhausted session.
/chHandoff continuity mode: numbered task list, accountability record with every question and decision, optional HTML summary.
/fd-chFrontend design run with reconnaissance, a quality gate and an accountability record, built on the frontend-design skill.
/prRead every PR review comment, fix what is actionable, and reply to each one.
/prd-chCreate a PRD fast and well.
/researchDeep research on any topic.
/reviewerFull audit and fix pass on the current task's changes, using any review skills installed on your machine (never Greptile or CodeRabbit).

Mods

Claude Code mods (plugins with function hooks) in mods/. Each one installs on its own from this marketplace:

claude plugin marketplace add michaelezehi/nw-skills
claude plugin install savvy-progress@nw-skills
ModWhat it doesOrigin
savvy-progressProgress bar above the prompt and an agents panel (/agents-info) with each subagent's model, context, cost and time. Draws in 24-bit colour in any truecolor terminal (Warp, iTerm2, Ghostty, WezTerm, kitty) as well as on the desktop.Modified from johnnyvizz/claude-kit
agent-barTurns the savvy-progress bar on for every task: todos, tasks and subagent launches become its rows. Steps aside when a skill reports its own plan. Needs savvy-progress.Original
guard-railsDenies git commands that sweep other agents' work (git add -A, commit -a, stash, reset, clean, restore, checkout) and dashes in commit or PR text.Original
session-pane/session-pane opens a pane with the files changed this session as a tree and the latest 50 tool calls.Original
turn-chimeA toast and a chime when a turn that ran a minute or longer finishes.Original

The skills and commands report to the progress panel by the rules in references/progress-panel.md. Copy it to ~/.claude/references/. Without savvy-progress installed they skip it.

Handoff hooks (optional)

/ch, /fd-ch and /prd-ch hand work over to a fresh session when context runs low. That needs three hooks in hooks/:

  • context-monitor.sh warns at about 70 and 90 percent context use.
  • precompact.sh writes .claude/handoffs/current.md (todos and modified files) before compaction.
  • session-start.sh feeds that handoff back in when the next session starts.

They are not switched on by installing the plugin. To use them, copy the scripts to ~/.claude/hooks/ and add this to ~/.claude/settings.json:

{
  "hooks": {
    "PostToolUse": [{ "hooks": [{ "type": "command", "command": "~/.claude/hooks/context-monitor.sh" }] }],
    "PreCompact": [{ "hooks": [{ "type": "command", "command": "~/.claude/hooks/precompact.sh" }] }],
    "SessionStart": [{ "hooks": [{ "type": "command", "command": "~/.claude/hooks/session-start.sh" }] }]
  }
}

Without them the commands still run; you just lose the automatic handoff.

Licence

My own skills and commands are MIT, see LICENSE. Modified skills keep their upstream licence and credit; see NOTICE.md.

Source 1 files
hooks/register.tsx 32 lines
1import type { Register } from 'claude-code'
2
3// Other agents share the branch: anything that sweeps or discards the whole
4// working tree can take their in-progress work with it.
5const RULES: Array<{ pattern: RegExp; reason: string }> = [
6  { pattern: /\bgit\s+add\s+(-A\b|--all\b|-u\b|--update\b|\.(\s|$))/, reason: 'stage by path, not the whole tree' },
7  { pattern: /\bgit\s+commit\s+(-[a-zA-Z]*a[a-zA-Z]*\b|--all\b)/, reason: 'commit by path: git commit -m "..." -- <paths>' },
8  { pattern: /\bgit\s+(stash|reset|clean|restore)\b/, reason: 'never stash, reset, clean or restore' },
9  { pattern: /\bgit\s+checkout\s+(?!-b\b|-B\b)/, reason: 'never checkout files; use git switch for branches' },
10]
11
12const DASHES = /[—–]/
13const WRITES_PROSE = /\bgit\s+commit\b|\bgh\s+(pr|issue)\s+(create|edit|comment)\b/
14
15export const register: Register = on => {
16  on('tool.call', { tool: 'Bash' }, ($, e, next) => {
17    const hit = RULES.find(rule => rule.pattern.test(e.command))
18
19    if (hit) {
20      return { deny: `guard-rails: ${hit.reason}.` }
21    }
22
23    if (WRITES_PROSE.test(e.command) && DASHES.test(e.command)) {
24      return { deny: 'guard-rails: the message holds an em or en dash. Use a period or a comma.' }
25    }
26
27    return next(e)
28  }).catch(($, e, next) =>
29    next.called ? next(e) : { deny: 'guard-rails: its check failed.' },
30  )
31}
32