A quality-enforcement framework that blocks non-compliant code edits until issues are resolved.

Install

mkdir -p .claude/skills/paw && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/15301" && unzip -o skill.zip -d .claude/skills/paw && rm skill.zip

Installs to .claude/skills/paw

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

PAW (Portable Agentic Workflow) framework. Enforcement loop, violation lifecycle, .pawignore, gates, hooks, plugins, deadlock avoidance. Load before PAW config, violation debugging, or framework extension.
205 charsno explicit “when” trigger
Advanced

Key capabilities

  • Enforce code quality rules
  • Block tool execution on critical violations
  • Manage violation lifecycle
  • Allow specific files to be ignored
  • Provide commands for managing gates and violations
  • Support custom quality gates and hooks

How it works

The skill runs quality gates after an agent edits a file, records critical violations in a database, and blocks subsequent tool calls on other files until the violations in the current file are resolved.

Inputs & outputs

You give it
Agent edits to files
You get back
Violation reports, blocked tool execution, or unblocked tools after fixes

When to use paw

  • Enforcing architecture rules
  • Preventing code quality regression
  • Automated code governance

About this skill

PAW Framework

What

Quality-enforcement layer between agent + codebase. Runs gates (checks) on every edit. Blocks until violations fixed. Real-time linter at agent level.

Layout

.github/PAW/          ← Core (runtime, adapters, types, sync)
  hooks/              ← Defaults (→ .paw/ on sync)
  templates/          ← Synced (skills, agents, prompts, tsconfig)
  adapters/           ← Surface adapters
  cli/                ← Commands (status, violations, gates, unblock)
  docs/               ← Documentation

.paw/                 ← Project install (gitignored)
  hooks/              ← Active (from .github/PAW/hooks/)
  gates/              ← Quality gates (*.gate.ts)
  plugins/            ← Hooks (gate-name/*.ts)
  config.json         ← Surface config
  paw.sqlite          ← Violations DB
  paw.log             ← Hook log

.pawignore            ← Skip patterns
.github/hooks/hooks.json ← Generated (VS Code reads)  

Enforcement Loop

  1. Agent edits file
  2. PostToolUse fires → runs gates
  3. Critical violations found? → write to DB, warn agent
  4. Next tool call → PreToolUse fires → checks DB
  5. Violations on THIS file? → ALLOWED (fix it). Other file? → DENIED.
  6. File fixed → PostToolUse re-runs → resolved. All unblocked.

Deadlock Rules

1. Fix immediately. Violations block all tools until file clean.

2. Session-scoped. Session A violations ≠ block Session B. Project-scope violations block everyone.

3. Exempt tools never blocked: read_file, grep_search, file_search, semantic_search, list_dir, get_errors, get_terminal_output, memory, manage_todo_list.

4. .pawignore always allowed. Patterns in .pawignore + .github/PAW/, .paw/ editable anytime.

5. Indirect-fix unblocks all. If violation marked indirectFix: true (fix needs new file, not current), gates allow tools through to create fix file.

6. Last resort: unblock. User runs npm run paw:unblock (password). Clears all violations.

.pawignore

Glob patterns at root. Matched files:

  • Skipped by PostToolUse (no gates)
  • Always editable during PreToolUse
  • Excluded from health checks

Built-in (no .pawignore needed): .github/PAW/, .paw/

Gates

.paw/gates/*.gate.ts auto-discovered. Export: QualityGate interface.

  • id, name, severity (critical|warning), appliesTo (globs), check(context) method
  • Critical = blocks. Warning = report only.
  • Findings with indirectFix: true don't block when sole violations remain.

Hooks

.paw/hooks/ map to lifecycle:

  • preToolUse.mjs → before tool (enforcement)
  • postToolUse.mjs → after tool (detect)
  • sessionEnd*.mjs → session close

paw sync copies defaults, regenerates .github/hooks/hooks.json (VS Code reads).

Plugins

.paw/plugins/{hook-name}/*.ts. Survive paw sync --force. Receive hook input, return messages.

Commands

CmdPurpose
paw:installSetup (deps, compile, sync, init DB)
paw:statusStatus + violations
paw:violationsList violations
paw:gatesList gates
paw:gates runRun all
paw:unblockClear all (password)

Extend PAW

New gate (TS): .paw/gates/{name}.gate.ts → export QualityGate New gate (other): .paw/gates/{name}.{ext}, add runner to config.json
New hook: .paw/hooks/{name}.ts, run paw sync New plugin: .paw/plugins/{hook-name}/{name}.ts Ignore path: add to .pawignore
Suppress inline: /* paw:gate:{id}:{rule} ignore */

Gate Ignore Directives

Suppress violations with comments:

/* paw:gate:{id} ignore */              all rules, whole file
/* paw:gate:{id}:{rule} ignore */       one rule, whole file
/* paw:gate:{id} ignore-nextline */     next line only
/* paw:gate:{id}:{rule} ignore-nextline */ one rule, next line
/* paw:gate:* ignore */                 ALL gates, whole file

Valid in TS/MDX/HTML comments.

/* paw:gate:* ignore */
// Use on generated files only — suppresses every gate

```ts
/* paw:gate:antipatterns:console-log ignore */
// Suppress only the console-log rule from the antipatterns gate
{/* paw:gate:content-format:missing-h1 ignore */}

Rules

  • Never use paw:gate:* ignore in hand-authored files. Reserve it for generated output.
  • Prefer the narrowest scope: gate:rule over gate:*, ignore-nextline over ignore.
  • Never suppress missing-test — create the test file instead.
  • health:check-ignore is deprecated. Do not use it in new files.

When not to use it

  • When the user wants to skip enforcement because a change is 'simple'
  • When the user wants to ignore Critical issues
  • When the user wants to proceed with unfixed Important issues

Limitations

  • Critical violations block all tools until the file is clean.
  • Session A violations do not block Session B.
  • Exempt tools are never blocked.

How it compares

This skill provides real-time, agent-level quality enforcement that blocks further work until issues are fixed, unlike a traditional linter that might only report warnings without preventing progression.

Compared to similar skills

paw side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
paw (this skill)02moNo flagsAdvanced
resolve-conflicts818moReviewIntermediate
claude-automation-recommender472moReviewBeginner
codex-skill125moReviewAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

resolve-conflicts

antinomyhq

Use this skill immediately when the user mentions merge conflicts that need to be resolved. Do not attempt to resolve conflicts directly - invoke this skill first. This skill specializes in providing a structured framework for merging imports, tests, lock files (regeneration), configuration files, and handling deleted-but-modified files with backup and analysis.

81334

claude-automation-recommender

anthropics

Analyze a codebase and recommend Claude Code automations (hooks, subagents, skills, plugins, MCP servers). Use when user asks for automation recommendations, wants to optimize their Claude Code setup, mentions improving Claude Code workflows, asks how to first set up Claude Code for a project, or wants to know what Claude Code features they should use.

47140

codex-skill

feiskyer

Use when user asks to leverage codex, gpt-5, or gpt-5.1 to implement something (usually implement a plan or feature designed by Claude). Provides non-interactive automation mode for hands-off task execution without approval prompts.

12110

git-advanced-workflows

wshobson

Master advanced Git workflows including rebasing, cherry-picking, bisect, worktrees, and reflog to maintain clean history and recover from any situation. Use when managing complex Git histories, collaborating on feature branches, or troubleshooting repository issues.

1197

subagent-driven-development

davila7

Use when executing implementation plans with independent tasks in the current session

1493

validate-openapi-specs

epieczko

Validates and registers hook manifest files (YAML) in the Hook Registry for versioned hook management.

594

Search skills

Search the agent skills registry