Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Forgejo REST API toolkit — manage issues, pull requests, wikis, and repos on a Forgejo server. Use when the agent needs to file an issue, open / review / merge a PR, read or write a wiki page, or look up repo / branch info. One standalone script per resource type. Reads credentials from environment, `~/.skillhone/settings.json`, or `_data/forgejo_config.txt`.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | -39% | 0% |
| case-17 | ✗→✓ | ▲ Improved | -37% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 63% | 0% |
| case-19 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-20 | ✓→✓ | = Same ✓ | 33% | 0% |
Thin wrapper around the Forgejo REST API. Each resource lives in its own script so the agent can discover and invoke them individually. SkillHone depends on this as a VCS backend skill, but it stays independent so another backend such as GitLab or Gitea can provide the same workflow surface.
| Script | Resource | Representative usage | |--------|----------|----------------------| | scripts/issue.py | Issues | python3 scripts/issue.py create --title "Bug" | | scripts/pr.py | Pull requests | python3 scripts/pr.py merge 1 | | scripts/wiki.py | Wiki pages | python3 scripts/wiki.py get --title "Analysis" | | scripts/repo.py | Repo metadata | python3 scripts/repo.py branches | | scripts/summary.py | Aggregate dashboard | python3 scripts/summary.py |
Every script supports --help. Run it before guessing flags.
Resolved in this order (first match wins):
FORGEJO_URL, FORGEJO_TOKEN, FORGEJO_OWNER, FORGEJO_REPO~/.skillhone/settings.json + ~/.skillhone/identities.conf_data/forgejo_config.txt in the current working directoryIf nothing is set, the script exits with a clear message naming the missing variable.
bashpython3 scripts/issue.py list python3 scripts/issue.py view <N> python3 scripts/issue.py create --title "Fix: timeout" --body "## Problem\n..." python3 scripts/issue.py close <N> python3 scripts/issue.py comment <N> --body "Done"
bashpython3 scripts/pr.py list python3 scripts/pr.py view <M> python3 scripts/pr.py create --title "Fix timeout" --head fix/timeout --base main --body "Closes #1" python3 scripts/pr.py review <M> --approve python3 scripts/pr.py merge <M> --method merge python3 scripts/pr.py comment <M> --body "LGTM"
bashpython3 scripts/wiki.py list python3 scripts/wiki.py get --title "Iteration-1-Observation" python3 scripts/wiki.py create --title "Page" --body "content" python3 scripts/wiki.py edit --title "Page" --body "updated content"
bashpython3 scripts/repo.py info python3 scripts/repo.py branches
bashpython3 scripts/summary.py # open issues + open PRs + latest observation wiki page
Other skills living under ~/.skillhone/skills/ call these scripts via their absolute path:
bashpython3 ~/.skillhone/skills/forgejo/scripts/issue.py list
This keeps the VCS backend replaceable. A GitLab or Gitea skill can expose an equivalent command surface without changing SkillHone's optimization logic.
@ characters break git clone URL injection. Use a token without @ or URL-encode it.merge --method squash is not supported by older Forgejo versions. If you hit Unknown method, fall back to merge..md files in a separate git repo (<repo>.wiki.git). wiki.py hides that, but if you need custom editing, clone the wiki repo directly.--body fields.curl or handcrafted HTTP fromSkillHone workflows. Use these backend scripts so credential loading, redaction, and backend replacement stay centralized.
cat _data/forgejo_config.txt, ~/.skillhone/settings.json, oridentities.conf to discover credentials. The scripts resolve credentials internally.
main via any of these scripts. PRs only.Other measured skills in the registry, with their headline benchmark lift.