- 38 skills from mattpocock/skills into .agents/skills/ (symlinked into .claude/skills/ for Claude Code) - skills-lock.json for reproducible installs - docs/agents/: issue-tracker (Gitea via tea CLI), triage-labels (default five-role vocabulary), domain docs (single-context) - CLAUDE.md: add '## Agent skills' section pointing at docs/agents/ - .gitignore: un-ignore docs/agents/ under the local /docs/* rule
3.9 KiB
Issue tracker: Gitea (self-hosted)
Issues and specs for this repo live as issues on Gitea
(https://git.crkc.xyz/Apps/ImageApi). Use the tea CLI for all operations.
Conventions
- Create an issue:
tea issues create --title "..." --description-file -(read the body from a heredoc on stdin), or--description "..."for a one-liner. Add labels at creation with--labels "...". - Read an issue:
tea issues <index> --comments. Usetea issues list -f index,title,body,labels,comments -o jsonfor machine-readable output. - List issues:
tea issues list --state open(default state is open) with appropriate--labels/--keywordfilters. - Comment on an issue:
tea comments add <index> "..."(alias:tea comments <index> "..."). - Apply / remove labels:
tea issues edit <index> --add-labels "..."/--remove-labels "...". Labels that don't exist yet are created by the server on first use. - Close:
tea issues close <index>. It does not accept a closing comment, so post the explanation first withtea comments add <index> "...", then close. - Raw API access (for anything the
teasubcommands don't cover):tea api <endpoint>makes an authenticated request to the Gitea API (prefixes/api/v1/when the path doesn't start with/api/). Placeholders{owner}and{repo}are replaced from the current repo context. Use-Ffor typed fields (numbers, booleans) and-dfor raw JSON bodies.
Infer the repo from the git remote (-R lets tea discover the Gitea
login from the remote); tea does this automatically when run inside a
clone. Confirm the acting user with tea whoami.
Unlike GitHub, Gitea numbers issues and pull requests separately, so a bare
#42 is unambiguous once you know which surface it refers to.
Pull requests as a triage surface
PRs as a request surface: no. (Set to yes if this repo treats
external PRs as feature requests; /triage reads this flag.)
When set to yes, PRs run through the same labels and states as issues,
using the tea pulls equivalents (tea pulls list/view/edit,
tea pulls close, plus tea comments which covers PRs). Keep only PRs
from outside collaborators (drop the repo owner and team members) when
listing external PRs for triage.
When a skill says "publish to the issue tracker"
Create a Gitea issue.
When a skill says "fetch the relevant ticket"
Run tea issues <index> --comments.
Wayfinding operations
Used by /wayfinder. The map is a single issue with child issues
as tickets.
- Map: a single issue labelled
wayfinder:map, holding the Notes / Decisions-so-far / Fog body.tea issues create --title "..." --labels wayfinder:map --description-file -. - Child ticket: an issue carrying
Part of #<map>at the top of its description, labelledwayfinder:<type>(research/prototype/grilling/task). Once claimed, the ticket is assigned to the driving dev. - Blocking: Gitea's native issue dependencies (enabled on this
server), the canonical, UI-visible representation. Add an edge with
tea api --method POST repos/{owner}/{repo}/issues/<child>/dependencies/blocked_by -F issue_id=<blocker-issue-index>(the Gitea dependencies API takes the issue index, i.e. the visible#number, not an internal database id). Where dependencies aren't available, fall back to aBlocked by: #<n>, #<n>line at the top of the child description. A ticket is unblocked when every blocker is closed. - Frontier query: list the map's open children (issues whose
description carries
Part of #<map>), drop any with an open blocker (dependency orBlocked byline) or an assignee; first in map order wins. - Claim:
tea issues edit <n> --add-assignees <username>(the session's first write;<username>fromtea whoami). - Resolve:
tea comments add <n> "<answer>", thentea issues close <n>, then append a context pointer (gist + link) to the map's Decisions-so-far.