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.zipInstalls 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.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
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
- Agent edits file
- PostToolUse fires → runs gates
- Critical violations found? → write to DB, warn agent
- Next tool call → PreToolUse fires → checks DB
- Violations on THIS file? → ALLOWED (fix it). Other file? → DENIED.
- 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: truedon'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
| Cmd | Purpose |
|---|---|
| paw:install | Setup (deps, compile, sync, init DB) |
| paw:status | Status + violations |
| paw:violations | List violations |
| paw:gates | List gates |
| paw:gates run | Run all |
| paw:unblock | Clear 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:* ignorein hand-authored files. Reserve it for generated output. - Prefer the narrowest scope:
gate:ruleovergate:*,ignore-nextlineoverignore. - Never suppress
missing-test— create the test file instead. health:check-ignoreis 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.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| paw (this skill) | 0 | 2mo | No flags | Advanced |
| resolve-conflicts | 81 | 8mo | Review | Intermediate |
| claude-automation-recommender | 47 | 2mo | Review | Beginner |
| codex-skill | 12 | 5mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by Typeir
View all by Typeir →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.
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.
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.
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.
subagent-driven-development
davila7
Use when executing implementation plans with independent tasks in the current session
validate-openapi-specs
epieczko
Validates and registers hook manifest files (YAML) in the Hook Registry for versioned hook management.