diff --git a/skills/gitea-pr-review-cli/SKILL.md b/skills/gitea-pr-review-cli/SKILL.md new file mode 100644 index 0000000..2f79dc4 --- /dev/null +++ b/skills/gitea-pr-review-cli/SKILL.md @@ -0,0 +1,111 @@ +--- +name: gitea-pr-review-cli +description: Use when an agent needs to fetch a single Gitea PR and produce or consume the project's review document format with strict version checks. +--- + +# gitea-pr-review CLI + +## Overview +Use this skill when you need PR review context from Gitea in a stable document format for LLM workflows. + +The CLI supports two output formats (`markdown`, `json`) and one strict schema version (`v1`). Version mismatch must be treated as a hard failure. + +## When to Use + +Use this skill when: +- You need to fetch one PR and convert it into LLM-friendly review documents. +- You need to re-render Markdown from a previously generated JSON file. +- You need deterministic output rules (numbering/version/header fields). + +Do not use this skill when: +- You need cross-PR aggregation. +- You need full patch/diff bodies (this tool intentionally focuses on review context + diff stat). + +## Required Inputs + +For `fetch`, these environment variables are required: +- `GITEA_PR_CLI_API_TOKEN` +- `GITEA_PR_CLI_URL` +- `GITEA_PR_CLI_REPO` + +## Quick Start + +```bash +# 0) load env +source .local/env.sh + +# 1) sanity check CLI document version contract +gitea-pr-review version +# expected: v1 + +# 2) fetch markdown to stdout (default) +gitea-pr-review fetch + +# 3) fetch json to file +gitea-pr-review fetch --format json --out pr.json + +# 4) render markdown from json +gitea-pr-review render-md --in pr.json --out pr.md +``` + +## Command Reference + +### `fetch ` +Fetch PR data from Gitea and output review document. + +Options: +- `--format markdown|json` (default `markdown`) +- `--out ` (if omitted, write to stdout) + +### `render-md --in ` +Render Markdown from existing JSON document. + +Options: +- `--out ` (if omitted, write to stdout) + +Important: +- Input JSON must have `version == "v1"`. +- If version mismatches, command exits non-zero. + +### `version` +Print current document version string. + +Expected output: +- `v1` + +## Output Contract (v1) + +Markdown header contains: +- Title line: `# # ` +- Numbering rule block +- `version: v1` +- `fetched at: <rfc3339>` +- PR description + +JSON contains: +- Top-level `version: "v1"` +- `meta.fetched_at` (RFC3339 string) + +Numbering hierarchy: +- Review: `<pr>.<review>` +- Comment: `<pr>.<review>.<comment>` +- Reply: `<pr>.<review>.<comment>.<reply>` + +## Failure Handling + +If `fetch` fails: +1. Check all required env vars are set. +2. Re-run with same env using a small PR index to isolate auth/connectivity issues. +3. Confirm repo slug format is `<owner>/<repo>`. + +If `render-md` fails: +1. Validate JSON is generated by this CLI. +2. Validate `version` is exactly `v1`. +3. Check JSON is complete (`meta`, `reviews`, `threads`, `diff_stat`). + +## Common Mistakes + +- Running `fetch` without sourcing env file. +- Assuming schema compatibility across versions. +- Editing JSON `version` manually and expecting `render-md` to work. +- Treating position-only comments as lacking location; this CLI maps available position data to a displayed line when possible.