App-karr
view release on metacpan or search on metacpan
share/claude-skill.md view on Meta::CPAN
instead of relying only on the implicit pull/push behavior of mutating
commands.
### Backup and restore
```bash
karr backup > karr-backup.yml
karr restore --yes < karr-backup.yml
```
`restore` is destructive and replaces the entire `refs/karr/*` namespace.
### Destroy
```bash
karr destroy --yes
```
Deletes the entire `refs/karr/*` namespace from the repository and prunes the
remote board state too when a remote is configured. Prefer taking a
`karr backup` first.
### Helper refs
```bash
karr set-refs superpowers/spec/1234.md draft ready
karr get-refs superpowers/spec/1234.md
```
Stores and retrieves helper payloads in Git refs outside protected namespaces
such as `refs/karr/*`, branches, and tags. Use this for shared planning blobs,
agent scratch data, or similar workflow artifacts that should sync through Git
without becoming task cards.
### Activity log
```bash
karr log # last 20 entries
karr log --agent swift-fox # filter by agent
karr log --task 5 # filter by task
karr log --last 50 --json # more entries, JSON
```
### Agent name
```bash
karr agentname # generate random two-word name
karr pick --claim $(karr agentname) --move in-progress
```
## Stored task format
```markdown
---
id: 1
title: Set up CI pipeline
status: backlog
priority: high
class: standard
created: 2026-03-12T10:00:00Z
updated: 2026-03-12T10:00:00Z
tags:
- devops
---
Optional body with more detail.
```
Tasks are stored under `refs/karr/tasks/*/data`. During command execution `karr`
materializes the same Markdown shape into a temporary task directory, so this
format still matters when reading or generating tasks programmatically.
## Config refs
```yaml
version: 1
board:
name: My Project
statuses:
- backlog
- todo
- name: in-progress
require_claim: true
- name: review
require_claim: true
- done
- archived
priorities: [low, medium, high, critical]
claim_timeout: 1h
defaults:
status: backlog
priority: medium
class: standard
```
That YAML lives in `refs/karr/config` as sparse overrides. The next numeric id
is kept separately in `refs/karr/meta/next-id`.
## Decision tree: which command?
1. **Need a board?** â `karr init`
2. **New work item?** â `karr create "Title" --priority high`
3. **What's on the board?** â `karr board` or `karr list`
4. **Starting work?** â `karr pick --claim NAME --move in-progress`
5. **Done with task, hand to review?** â `karr handoff ID --claim NAME --note "reason"`
6. **Done with task, close it?** â `karr edit ID --release && karr move ID done`
7. **Blocked?** â `karr edit ID --block "reason"`
8. **Need details?** â `karr show ID`
9. **Soft-delete?** â `karr archive ID`
10. **Board snapshot for agent context?** â `karr context --write-to AGENTS.md`
11. **Check/change config?** â `karr config` / `karr config set KEY VALUE`
12. **Install agent skills?** â `karr skill install`
13. **Need a full board snapshot?** â `karr backup` / `karr restore --yes`
14. **Need shared non-task workflow data?** â `karr set-refs` / `karr get-refs`
15. **Need to remove the board completely?** â `karr destroy --yes`
## Multi-agent workflow
```bash
# 1. Generate agent name and pick task
NAME=$(karr agentname)
( run in 0.373 second using v1.01-cache-2.11-cpan-bbe5e583499 )