pawsby UnboundGet started

Teach your agents the house rules.

Your team has a way of doing things. How a page gets made, what a ticket needs, how a bucket is set up. paws puts those rules where an AI coding agent can’t miss them, and checks them before every action.

See how it works
npx paws init
Free to useNo account needed
Claude Code
  1. agent
    $ aws s3 mb s3://acme-exports
  2. paws
    Hold on. Buckets need tags here.
    Load skill aws-tagging-standards, then retry.
  3. skill
    aws-tagging-standards loaded
  4. retry
    $ aws s3 mb s3://acme-exportsOwner=data-engEnv=prodpublic access: blocked
  5. done
    Bucket created.
Works withClaude CodeSupported nowCursorComing nextClineComing next

Your agents reach for everything.

Docs, tickets, cloud, code, chat, secrets. Each one has a way it is supposed to be done on your team. paws holds the rule for each, and checks it at the moment the agent reaches.

Rules that stick, not suggestions that drift.

You can write instructions in CLAUDE.md and the agent will mostly follow them. Mostly is fine for formatting. It is not fine for a production bucket or a customer-facing page. paws checks the rule before the action, every single time.

Creating a Confluence page

It uses the team template and lands under the right parent. No orphan pages.

before: confluence.create_page

Filing a ticket

Priority, owner and component are filled in before the ticket exists.

before: linear.create_issue

Creating an S3 bucket

It is tagged, private, and named to convention before the CLI runs.

before: aws s3 mb

How it works

Three steps. If you have ever used a git hook, you already know the model.

  1. 1

    Write the rule

    One Markdown file per rule in a .paws/ folder. The top says when it applies and what to do. The rest explains why, for whoever reads it next.

  2. 2

    Run paws once

    It turns your rules into the agent's own hooks. Nothing runs in the background, and the output is a file you can read and commit.

  3. 3

    The agent checks before it acts

    When it reaches for a matching action, the rule fires first. The agent is told what to load or fix, then tries again. Every time, not most times.

.paws/pre-tool/aws-tagging.md
---
name: aws-tagging
event: pre-tool
matcher:
  tool: Bash
  command_regex: ^aws s3 mb
action:
  type: require-skill
  skill: aws-tagging-standards
  deny_message: Buckets need tags here. Load aws-tagging-standards, then retry.
---
# AWS tagging

Every bucket carries Owner and Environment tags and
blocks public access. The skill explains how. This
hook makes sure it is read before the bucket exists.

Why we built it

We kept writing the same instructions into CLAUDE.md and watching agents follow them most of the time. Most of the time is not good enough for a production bucket or a page a customer will read. A check that runs before the action is. So we built one, and we are giving it away.

paws is free, and it will stay that way. If your team adopts it, tell us which rules you wrote. They become the next presets.

Raj Srinivasan · Founder, Unbound

Start from a preset.

Most rules are the same across teams. Extend a published preset instead of writing from scratch. Unbound ships the first ten, with more on the way.

@paws/aws-tagging

Tags and locks down every new AWS resource

@paws/secret-scan

Stops commits that contain credentials

@paws/migration-safety

Requires the checklist before schema changes

@paws/confluence-page

Template and parent for every new page

@paws/ticket-fields

Required fields on every new ticket

@paws/dependency-vetting

Vets a package before it is added

One repo is easy. Two hundred is where Unbound comes in.

paws works on its own, forever, with no account. When you need the same rules across every repo, Unbound writes them once, ships them to every machine, and tells you when one drifts.