소스 정보
- 저장소
- nearai/ironclaw
- 최근 소스 활동
- 2026년 7월 14일 05:24
- 감지된 SKILL.md 언어
- 영어
- 스타
- 12,606
- 포크
- 1,489
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/nearai/ironclaw --skill github명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | github |
| version | 1.0.0 |
| description | GitHub API integration via HTTP tool with automatic credential injection |
| activation | {"keywords":["github","pull request","github issue","github repo","pr comment","open a pr","create a pr","my prs"],"exclude_keywords":["gitlab","bitbucket"],"patterns":["(?i)(list|show|get|fetch|open|close|create|file|merge|comment on)\\s.*(pull request|\\bPR\\b)","(?i)github\\.com","(?i)[a-z0-9._-]+/[a-z0-9._-]+#\\d+"],"tags":["git","code-review","devops"],"max_context_tokens":2000} |
| credentials | [{"name":"github_token","provider":"github","location":{"type":"bearer"},"hosts":["api.github.com"],"oauth":{"authorization_url":"https://github.com/login/oauth/authorize","token_url":"https://github.com/login/oauth/access_token","scopes":["repo","read:org"],"refresh":{"strategy":"reauthorize_only"}},"setup_instructions":"Create a personal access token at https://github.com/settings/tokens"}] |
You have access to the GitHub REST API via the http tool. Credentials are automatically injected — never construct Authorization headers manually. When the URL host is api.github.com, the system injects Authorization: Bearer {github_token} transparently.
All endpoints use https://api.github.com as the base URL. Common headers are injected automatically.
List issues:
http(method="GET", url="https://api.github.com/repos/{owner}/{repo}/issues?state=open&sort=created&direction=desc&per_page=30")
Get single issue:
http(method="GET", url="https://api.github.com/repos/{owner}/{repo}/issues/{number}")
Create issue:
http(method="POST", url="https://api.github.com/repos/{owner}/{repo}/issues", body={"title": "...", "body": "...", "labels": ["bug"]})
Add comment:
http(method="POST", url="https://api.github.com/repos/{owner}/{repo}/issues/{number}/comments", body={"body": "..."})
List PRs:
http(method="GET", url="https://api.github.com/repos/{owner}/{repo}/pulls?state=open&sort=created&direction=desc&per_page=30")
Create PR:
http(method="POST", url="https://api.github.com/repos/{owner}/{repo}/pulls", body={"title": "...", "body": "...", "head": "feature-branch", "base": "main", "draft": true})
Get PR diff:
http(method="GET", url="https://api.github.com/repos/{owner}/{repo}/pulls/{number}", headers=[{"name": "Accept", "value": "application/vnd.github.v3.diff"}])
Get repo info:
http(method="GET", url="https://api.github.com/repos/{owner}/{repo}")
List branches:
http(method="GET", url="https://api.github.com/repos/{owner}/{repo}/branches")
List recent commits:
http(method="GET", url="https://api.github.com/repos/{owner}/{repo}/commits?per_page=10")
When the user says "my PRs", "my issues", or "my repos", they mean the user who owns github_token. Don't try to list a single repo, hit the search/user endpoints instead.
Get the authenticated user (resolves who @me is):
http(method="GET", url="https://api.github.com/user")
My latest PRs across all repos:
http(method="GET", url="https://api.github.com/search/issues?q=is:pr+author:%40me+sort:updated-desc&per_page=20")
My open issues across all repos (assigned to me):
http(method="GET", url="https://api.github.com/search/issues?q=is:issue+is:open+assignee:%40me&per_page=20")
PRs that need my review:
http(method="GET", url="https://api.github.com/search/issues?q=is:pr+is:open+review-requested:%40me")
My repos (list all repos accessible to the token):
http(method="GET", url="https://api.github.com/user/repos?sort=updated&per_page=30")
GitHub has three search endpoints. Build queries with the search syntax.
Search issues and PRs (one endpoint, filter with is:pr or is:issue):
http(method="GET", url="https://api.github.com/search/issues?q=repo:{owner}/{repo}+is:pr+is:open+label:bug")
/search/pulls endpoint; /search/issues is the unified endpoint for both issues and PRs.Search code:
http(method="GET", url="https://api.github.com/search/code?q=fn+main+language:rust+repo:{owner}/{repo}")
Search repositories:
http(method="GET", url="https://api.github.com/search/repositories?q=tetris+language:rust&sort=stars")
URL-encode @ as %40 and spaces as + in q= values.
The http tool returns an envelope:
{"status": 200, "headers": {...}, "body": <parsed value>}
body is already a parsed Python dict or list. Do not call json.loads() on it. Example:
r = await http(method="GET", url="https://api.github.com/repos/{owner}/{repo}/pulls/123")
if r["status"] != 200:
FINAL(f"GitHub returned HTTP {r['status']}: {r['body']}")
pr = r["body"] # dict, not a string
title = pr["title"] # use direct indexing; these keys always exist on a 2xx
state = pr["state"]
head = pr["head"]["ref"]
base = pr["base"]["ref"]
Accept: application/vnd.github.v3.diff etc.) — body is a str containing the raw unified diff; use it as-is.body = pr_meta.get("body", pr_meta) as a "safety net" — it hides real errors. If status isn't 2xx, fail fast.Link header for pagination.X-RateLimit-Remaining if doing bulk ops.{"message": "..."} with a non-2xx status — surface them literally in your FINAL answer.Authorization header — it is injected automatically by the credential system.draft: true unless the user explicitly says "ready for review".state parameter for issues/PRs is open, closed, or all — not active/inactive.per_page to control result count (max 100). Default is 30./search/issues?q=...+author:%40me. Do NOT loop over /repos/{owner}/{repo}/pulls for every repo; that's slow and you usually don't have the full repo list.