Forgejo
Forgejo REST API를 감싼 얇은 래퍼입니다. 각 리소스는 자체 스크립트로 존재하므로 에이전트가 개별적으로 발견하고 호출할 수 있습니다. SkillHone은 이 스킬을 VCS 백엔드로 의존하지만, GitLab이나 Gitea 같은 다른 백엔드도 동일한 워크플로우 표면을 제공할 수 있도록 독립성을 유지합니다.
스크립트
| 스크립트 | 리소스 | 대표 사용 예시 |
|---|---|---|
scripts/issue.py | 이슈 | python3 scripts/issue.py create --title "Bug" |
scripts/pr.py | 풀 리퀘스트 | python3 scripts/pr.py merge 1 |
scripts/wiki.py | 위키 페이지 | python3 scripts/wiki.py get --title "분석" |
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
아무것도 설정되지 않으면, 스크립트는 누락된 변수를 명확히 표시하는 메시지와 함께 종료됩니다.
리소스별 사용법
이슈
python3 scripts/issue.py list
python3 scripts/issue.py view <N>
python3 scripts/issue.py create --title "수정: 타임아웃" --body "## 문제점\n..."
python3 scripts/issue.py close <N>
python3 scripts/issue.py comment <N> --body "완료"
풀 리퀘스트
python3 scripts/pr.py list
python3 scripts/pr.py view <M>
python3 scripts/pr.py create --title "타임아웃 수정" --head fix/timeout --base main --body "#1 종료"
python3 scripts/pr.py review <M> --approve
python3 scripts/pr.py merge <M> --method merge
python3 scripts/pr.py comment <M> --body "LGTM"
위키
python3 scripts/wiki.py list
python3 scripts/wiki.py get --title "Iteration-1-Observation"
python3 scripts/wiki.py create --title "페이지" --body "내용"
python3 scripts/wiki.py edit --title "페이지" --body "업데이트된 내용"
저장소 메타데이터
python3 scripts/repo.py info
python3 scripts/repo.py branches
통합 요약
python3 scripts/summary.py
# 열린 이슈 + 열린 PR + 최신 관찰 위키 페이지
다른 스킬에서 호출하기
~/.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로 대체하세요.- 위키 페이지는 별도의 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 오류가 발생하면, 스크립트를 변경하기 전에 위의 설정 해결 순서를 다시 확인하세요.