feat: add dev-workflow and forge-cli skills

Add two engineering skills for implementing tracker tickets end to end:

- dev-workflow: selects workflow:ready-for-agent tickets, runs them in
  isolated worktrees, opens one PR/MR per ticket, reviews, merges, and
  cleans up.
- forge-cli: detects the forge from origin and wraps gh, glab, and tea
  for Gitea/Forgejo, GitHub, and GitLab.

Docs cover install, prerequisites, ticket labels, and per-forge CLI usage.
This commit is contained in:
2026-08-30 12:29:54 -04:00
parent eb4a13166e
commit c97603c937
11 changed files with 422 additions and 0 deletions
+146
View File
@@ -0,0 +1,146 @@
# Pi development workflow skill
`dev-workflow` implements already-planned tracker tickets from issue selection through isolated implementation worktrees, pull/merge requests, review, merge, and cleanup.
It supports:
- Tea-compatible Gitea/Forgejo repositories through `tea`
- GitHub repositories through `gh`
- GitLab repositories through `glab`
The forge is selected from `origin`, or explicitly with `DEV_WORKFLOW_FORGE`.
## Install
From this checkout, install globally for your user:
```bash
pi install /absolute/path/to/ws-developement-workflow
```
Or install it only for the current project:
```bash
pi install -l /absolute/path/to/ws-developement-workflow
```
Restart Pi after installation, or run `/reload` in an existing session. Review the package before installing it: skills can instruct Pi to run commands with your account's permissions.
## When to use it
Use this after the human-led wayfinder, planning, specification, and ticket phases have produced implementation tickets.
The skill does **not** create planning tickets. It only implements tickets that are already labelled:
```text
workflow:ready-for-agent
```
Invoke it with an optional ticket ID or URL:
```text
# Process only ticket 43
/skill:dev-workflow 43
# Process all available tickets in the current repository
/skill:dev-workflow
```
The ID must be a tracker issue/ticket, not a branch name, PR/MR ID, or session ID. With an ID, only that ticket is processed. With no ID, the skill considers all open tickets in the current repository.
## Prerequisites
Before invoking the skill:
1. Run it from a checkout of the target repository.
2. Ensure `origin` points to the correct forge repository.
3. Install and authenticate the matching CLI:
- Tea/Gitea/Forgejo: `tea`
- GitHub: `gh`
- GitLab: `glab`
4. Create implementation tickets, optionally grouped under a root issue.
5. Mark implementable tickets `workflow:ready-for-agent`.
6. Add native child/dependency relationships where supported. Otherwise put explicit issue URLs or the documented blocker marker in the ticket.
7. Configure `DEV_WORKFLOW_HUMAN_REVIEWER` if the agent may assign human review automatically.
Run the read-only preflight manually from the target repository if needed:
```bash
bash /path/to/this-package/skills/forge-cli/scripts/detect-forge.sh
```
Expected output resembles:
```text
forge=gh
remote=https://github.com/acme/project.git
```
## What happens
For the supplied ticket, or all tickets when no ticket is supplied, the skill:
1. Verifies the repository, forge CLI, authentication, default branch, and capabilities.
2. Reads only the supplied ticket; otherwise reads all open tickets in the repository.
3. Selects only open, unassigned, unblocked `workflow:ready-for-agent` tickets.
4. For a supplied ticket, runs only that ticket; with no ticket, runs currently unblocked tickets in parallel, up to three isolated workers. Dependent tickets wait for their blockers.
5. Claims each selected ticket and changes it to `workflow:implementing`, then gives it to one worker in an isolated Git worktree.
6. Runs local checks, pushes the branch, and creates exactly one PR/MR per ticket.
7. Records URLs, status, evidence, blockers, and handoffs in tracker comments.
8. Reviews each PR/MR for correctness/spec and standards, allowing at most three fix rounds.
9. Resolves conflicts through the conflict workflow instead of aborting or guessing.
10. Merges only when review, local checks, CI, target branch, and blocker gates are clean.
11. Closes the integrated ticket, records the merge receipt, and removes the worktree.
12. Re-queries the scoped ticket set after every merge so newly unblocked tickets can run.
Default worker parallelism is three, subject to the available subagent limit.
## Ticket labels
The skill uses one active workflow label per ticket:
```text
workflow:ready-for-agent
workflow:ready-for-human
workflow:implementing
workflow:pr-open
workflow:review
workflow:changes-requested
workflow:conflict
workflow:blocked
workflow:merged
```
Existing `workflow:ready-for-human` tickets are left untouched and reported as human handoffs. Missing requirements, unsafe ambiguity, credentials, product decisions, unavailable CI, and missing permissions stop the workflow instead of being guessed around.
## Forge CLI recipes
After preflight, the shared `forge-cli` skill contains the common rules and automatically selects one recipe:
- `skills/forge-cli/references/tea.md`
- `skills/forge-cli/references/gh.md`
- `skills/forge-cli/references/glab.md`
Other skills can use it too: install this package globally, then instruct them to load the shared `forge-cli` skill instead of duplicating CLI syntax.
## Completion states
The final report includes:
- merged tickets and PR/MR URLs;
- remaining eligible tickets;
- tickets waiting for human review;
- blocked tickets and exact reasons;
- failed checks and review rounds.
`done` means no open implementation or human tickets remain in the selected scope. If only human tickets remain, the result is `waiting-on-human`.
## Development checks
Validate the package with:
```bash
bash tests/test-workflow.sh
```
This checks skill metadata, references, shell syntax, forge detection, and eligibility filtering.
+2
View File
@@ -0,0 +1,2 @@