APM

>Agent Skill

@hack-dance/hack-tickets

skillgit-workflow

Use the hack tickets extension (git-backed JSONL event log) to create/list/show/sync lightweight tickets. Trigger when asked to track work items, decisions, or bugs inside a repo without external issue trackers. Prefer `hack x tickets ...` commands; store lives on hidden ref `refs/hack/tickets` by default.

git
apm::install
$apm install @hack-dance/hack-tickets
apm::skill.md
---
name: hack-tickets
description: >
  Use the hack tickets extension (git-backed JSONL event log) to create/list/show/sync lightweight tickets.
  Trigger when asked to track work items, decisions, or bugs inside a repo without external issue trackers.
  Prefer `hack x tickets ...` commands; store lives on hidden ref `refs/hack/tickets` by default.
---

# hack tickets

This repo uses the hack tickets extension (`dance.hack.tickets`).
Prefer `hack tickets ...` (alias) or `hack x tickets ...` over manual edits in `.hack/tickets/`.

## Enable

Enable globally:

- `hack config set --global 'controlPlane.extensions["dance.hack.tickets"].enabled' true`
- `hack setup sync --all-scopes` (refresh generated agent instructions + skills + MCP config)

Or per-project by adding `.hack/hack.config.json`:

```json
{
  "controlPlane": {
    "extensions": {
      "dance.hack.tickets": { "enabled": true }
    }
  }
}
```

## Commands

- Create: `hack x tickets create --title "..." [--body "..."] [--body-file <path>] [--body-stdin] [--depends-on "..."] [--blocks "..."] [--actor "..."] [--json]`
- List: `hack x tickets list [--json]`
- Tui: `hack x tickets tui`
- Show: `hack x tickets show <ticket-id> [--json]`
- Update: `hack x tickets update <ticket-id> [--title "..."] [--body "..."] [--depends-on "..."] [--blocks "..."] [--clear-depends-on] [--clear-blocks] [--json]`
- Status: `hack x tickets status <ticket-id> <open|in_progress|blocked|done> [--json]`
- Sync: `hack x tickets sync [--json]`

Recommended body template (Markdown):

```md
## Context
## Goals
## Notes
## Links
```

Tip: use `--body-stdin` for multi-line markdown.

## Data model

- Tickets are derived from an append-only event log (JSONL).
- Local state lives in `.hack/tickets/` (gitignored on the main branch).
- Sync writes commits to a dedicated ref (`refs/hack/tickets` hidden by default) and pushes to your remote.
- Set `controlPlane.tickets.git.refMode` to `heads` to use a normal branch ref (and protect it if desired).

## Tips

- Keep ticket titles short; put detail in `--body`.
- Use `--json` for agent workflows and piping.
- Run `hack x tickets sync` before opening PRs if you want tickets to travel with the repo.
- Update status continuously (`open` -> `in_progress` -> `blocked`/`done`) so handoffs are explicit.
- Use `--depends-on` / `--blocks` links to model execution order for parallel agent work.