Forgejo
Forgejo REST APIのシンプルなラッパーです。各リソースは個別のスクリプトに分かれているため、エージェントは個別に発見・実行できます。SkillHoneはこれをVCSバックエンドスキルとして利用しますが、Forgejoスキル自体は独立しているため、GitLabやGiteaなどの他のバックエンドでも同じワークフロー表面を提供できます。
スクリプト
| スクリプト | リソース | 代表的な使用例 |
|---|---|---|
scripts/issue.py | Issue | python3 scripts/issue.py create --title "Bug" |
scripts/pr.py | プルリクエスト | python3 scripts/pr.py merge 1 |
scripts/wiki.py | Wikiページ | python3 scripts/wiki.py get --title "Analysis" |
scripts/repo.py | リポジトリメタデータ | python3 scripts/repo.py branches |
scripts/summary.py | 集約ダッシュボード | python3 scripts/summary.py |
すべてのスクリプトは --help をサポートしています。フラグを推測する前に実行してください。
設定
以下の順序で解決されます(最初に見つかったものが優先):
- 環境変数:
FORGEJO_URL,FORGEJO_TOKEN,FORGEJO_OWNER,FORGEJO_REPO ~/.skillhone/settings.json+~/.skillhone/identities.conf- カレントワーキングディレクトリの
_data/forgejo_config.txt
何も設定されていない場合、スクリプトは不足している変数を明示したメッセージとともに終了します。
リソースごとの使用法
Issue
python3 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"
プルリクエスト
python3 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"
Wiki
python3 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"
リポジトリメタデータ
python3 scripts/repo.py info
python3 scripts/repo.py branches
複合サマリー
python3 scripts/summary.py
# オープンIssue + オープンPR + 最新の観察Wikiページ
他のスキルからの呼び出し
~/.skillhone/skills/ 配下にある他のスキルは、絶対パスでこれらのスクリプトを呼び出します:
python3 ~/.skillhone/skills/forgejo/scripts/issue.py list
これにより、VCSバックエンドを交換可能に保ちます。GitLabやGiteaのスキルも同等のコマンド表面を公開でき、SkillHoneの最適化ロジックを変更する必要はありません。
落とし穴
@文字を含むトークンはgit clone URLの注入を壊します。@を含まないトークンを使用するか、URLエンコードしてください。merge --method squashは古いバージョンのForgejoではサポートされていません。Unknown methodが発生した場合はmergeにフォールバックしてください。- Wikiページは別のgitリポジトリ(
<repo>.wiki.git)内に.mdファイルとして保存されます。wiki.pyはそれを隠蔽しますが、カスタム編集が必要な場合はWikiリポジトリを直接クローンしてください。
ハードルール
- Forgejoトークンをstdout/stderrログに絶対に出力しないでください。スクリプトはすでにトークンをマスクしますが、
--bodyフィールドに貼り付けないでください。 - SkillHoneワークフロー内で
curlや手書きのHTTPを使って直接ForgejoのREST APIを呼び出さないでください。認証情報の読み込み、マスク、バックエンドの交換が一元化されるよう、これらのバックエンドスクリプトを使用してください。 - 認証情報を発見するために
_data/forgejo_config.txt、~/.skillhone/settings.json、またはidentities.confをcatしないでください。スクリプトが内部で認証情報を解決します。 - どのスクリプトを使用しても
mainに直接プッシュしないでください。PRのみを使用してください。 - 401/403エラーが発生した場合は、スクリプトを変更する前に上記の設定解決順序を再確認してください。