Skip to content
Security
Skill

/dogwood

Orientation and router for authoring Dogwood authorization policies end to end. Run /dogwood when you are starting from scratch and are not sure which step you are on — it maps the lifecycle (action schema -> service schema, if needed -> policies -> validate/replay) and points

From plugin
dogwood
2584 skills
Install
$ npx -y skills add dogwood-policy/dogwood --skill dogwood --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/dogwood

Context preview

The summary Claude sees to decide when to auto-load this skill.

Orientation and router for authoring Dogwood authorization policies end to end. Run /dogwood when you are starting from scratch and are not sure which step you are on — it maps the lifecycle (action schema -> service schema, if needed -> policies -> validate/replay) and points

SKILL.md

dogwood.SKILL.md
name: dogwood
description: "Orientation and router for authoring Dogwood authorization policies end to end. Run /dogwood when you are starting from scratch and are not sure which step you are on — it maps the lifecycle (action schema -> service schema, if needed -> policies -> validate/replay) and points you at the right task skill. This command only routes; it does not do the work itself. Not for a specific step — the three task skills (authoring-action-schema, authoring-service-schema, autoformalize-policies) each own their step."
disable-model-invocation: true

Dogwood: where do I start?

This is the **entry point** for building a Dogwood authorization setup from nothing. It is a *map and a router*, not a worker: it tells you the lifecycle and hands you off to the one task skill that owns your current step. Each of the three task skills named below does the actual authoring, points at the guide as its ground truth, and ends in a **mandatory `dogwood` CLI gate**.

New to Dogwood entirely? Read the mental model first — it is short and pays for itself. Paths are relative to this skill directory (`.claude/skills/dogwood/`); the guide lives in the `dogwood-docs` crate:

  • `../../../dogwood-docs/guide/00-introduction.md` — what Dogwood is, the

problem it solves, and the five concepts (policies, events, schemas, temporal / providers, the authorizer). **Read this if you are new.**

  • `../../../dogwood-docs/guide/README.md` — the full guide index and reading

order, if you want the complete picture before starting.

The lifecycle

An authorization setup is built in this order. Each step depends on the one before it — **you cannot skip forward**.

1. **Action schema** — declare your world: entity types, actions, and each action's `context` shape (a Cedar `.cedarschema`). This is the one schema every policy needs, and it is **required before anything else**. → skill: **authoring-action-schema** 2. **Service schema** — *only if needed*. Customize the **event schema** (event *kinds* beyond the default `request`/`response`/`error`, pins, the `max_window` look-back cap) and/or declare **information providers** (computed facts / `guardrails`). Both default sensibly, so most setups skip this step entirely. → skill: **authoring-service-schema** 3. **Policies** — turn a natural-language rule ("permit X only if Y", "deny after Z", "no more than N per hour") into a validated `.dw` policy. → skill: **autoformalize-policies** 4. **Validate / replay** — check a policy set and watch a temporal policy decide across an event trace, with the `dogwood` CLI (`validate`, `replay`, `lower`, `check-parse`, and the `schema` checks). → guide: `../../../dogwood-docs/guide/12-cli.md`

Which skill do I want?

Route on what you are trying to do:

  • **"I need to define what actions / entities / request fields exist"** — or you

have an MCP tool manifest to turn into a schema, or you have no schema yet at all → **authoring-action-schema** (step 1; do this first).

  • **"My policies need event kinds beyond a plain request"** (history-only

responses, custom decision kinds), **a look-back longer than 24h or any-principal (global-trace) semantics**, **or a computed fact / guardrail / risk score / regex / denylist** that isn't just a field of the request → **authoring-service-schema** (step 2; only after you have an action schema).

  • **"I have a schema and want to write a policy from a plain-English rule"** →

**autoformalize-policies** (step 3; requires an action schema, and a service schema if the rule needs custom events or providers).

  • **"I already have a `.dw` policy and want to check it or replay a trace"** →

the `dogwood` CLI; see `../../../dogwood-docs/guide/12-cli.md`.

If two of these seem to fit, pick the **earliest** one — an action schema is a prerequisite for the service schema and for policies, so a missing prerequisite is almost always the real blocker.

Notes

  • **Action schema vs service schema are different things.** The *action* schema

is entities + actions + context (Cedar `.cedarschema`, **authoring-action-schema**). The *service* schema is event kinds + providers (the event-schema DSL and `providers.json`, **authoring-service-schema**). Don't conflate them — they have separate skills and separate `dogwood schema` checks (`schema action` vs `schema event` / `schema providers`).

  • **Every task skill validates with the `dogwood` CLI before it is done.** A

schema or policy that has not passed its CLI gate is not a finished answer. Exit codes are uniform across the tool: `0` ok/valid, `1` usage or I/O error, `2` rejected input. See `../../../dogwood-docs/guide/12-cli.md`.

  • This command does not edit files or run the pipeline. Once you know your step,

**invoke the named task skill** and follow it.

Read more
Ships withdogwood

Dogwood is a governance language designed for AI agents and their tools. It supports Cedar policies and adds temporal conditions (since, formerly, once, aggregations) to look back over an agent's recent events.

Get the whole plugin
Stats
334
Stars
22
Forks
Active
Maintenance
Rust
Language
Apache-2.0
License
6d ago
Last commit
21d ago
Created

Repo: dogwood-policy/dogwood