Releases: pallaoro/rulespec
v0.8.0 — agent-targeted skill folders
Set the agent location once at init — never repeat it
`rulespec init -a ` drops the skill folder right where that agent looks. Every later command (`add`, `edit`, `emit`, …) auto-discovers it. No flag-juggling on every invocation.
```bash
Project-scoped — committed with your repo
rulespec init --domain payments -a claude-code
→ .claude/skills/payments/
User-global — shared across all projects
rulespec init --domain payments -a claude-code -g
→ ~/.claude/skills/payments/
Default (no -a) unchanged
rulespec init --domain payments
→ skills/payments/
```
Supported agents
`claude-code`, `cursor`, `openclaw`, `codex`, `opencode`, `windsurf`, `amp`, `augment`, `gemini-cli`, `github-copilot`. Path mappings vendored from vercel-labs/skills. Anywhere else: pass `--outdir `.
Per-emit override
You can still retarget a single emit without reconfiguring:
```bash
rulespec emit -a cursor # writes SKILL.md to .agents/skills// instead
```
Other changes
- Discovery now walks every known agent's project + global skills dir
- `emit` writes `SKILL.md` next to the discovered source by default — folder stays self-contained no matter where it lives
- Short-flag support for `-a` (`--agent`) and `-g` (`--global`)
- Clear errors for unknown agent and `--outdir` + `--agent` conflict
Upgrade notes
Fully back-compat. Existing `skills//` folders and legacy `*.rulespec.yaml` at project root still work unchanged.
v0.7.1 — skill-folder scaffolding
Changes
Scaffold each domain as a self-contained skill folder
`rulespec init --domain payments` now creates `skills/payments/rulespec.yaml` (inside the skill folder) instead of a loose `payments.rulespec.yaml` at project root. Running `rulespec emit` writes `SKILL.md` right next to it — so each domain folder is a complete, agent-loadable skill out of the box.
```
skills/
payments/
rulespec.yaml ← authored source
SKILL.md ← emitted (agent-loadable)
```
Auto-discovery now walks skills/*/rulespec.yaml
All CLI commands (`add`, `edit`, `list`, `emit`, …) find your source automatically under the new layout. Legacy `*.rulespec.yaml` at the project root still works — existing projects keep functioning unchanged.
Upgrade notes
No action required. Existing projects continue to work. New `init` invocations use the skill-folder layout.
v0.7.0
Breaking changes:
rulespec initnow requires--domainand creates{domain}.rulespec.yaml(e.g.invoice-processing.rulespec.yaml)- Example field
descriptionrenamed tonote(--notein CLI)
New features:
rulespec emitscans all*.rulespec.yamlfiles and emits all domains at once- Auto-detection: if only one
*.rulespec.yamlexists, all commands use it automatically - Multiple files: use
--fileto target a specific one add-rule-exampleandadd-exampleaccept--notefor context- Legacy
rulespec.yamlstill works as fallback
v0.6.0
Clean emitted output for agent prompt injection.
- Moved "do not edit" warning to YAML comment in frontmatter — agents no longer see meta-instructions about CLI usage
- Emitted SKILL.md now contains only rules, sources, and intent tags — optimized for prompt injection
- Two audiences: manager agent gets CLI instructions (
skills/rulespec/SKILL.md), worker agent gets clean policy (skills/{domain}/SKILL.md) - Updated README with agent-specific install examples and file-based examples
- Added ClawHub install path
v0.5.1
v0.5.0
v0.4.1
New commands:
add-rule-example <rule-id>— add an example scoped to a specific ruleremove-rule-example <rule-id> <index>— remove a rule-specific example
File path support for examples:
--input /path/to/data.json— reads and inlines the JSON--input /path/to/document.pdf— stores as{ file: "/path/to/document.pdf" }- Works for both
--inputand--outputonadd-exampleandadd-rule-example
v0.4.0
Full CLI for rules, sources, examples, and domain management.
New commands:
rulespec set-domain <domain>— change the domainrulespec edit <id>— modify rule text, context, or intentrulespec add-source— add a data sourcerulespec remove-source <id>— remove a sourcerulespec add-example— add an input/output golden standardrulespec remove-example <index>— remove an examplerulespec replace --old "text" --new "text"— find & replace with auto-validation and recompilerulespec init --domain <name>— set domain on init