atris/skills/github/SKILL.md
GitHub integration via AtrisOS API. Manage PRs, issues, branches, CI status, code review, search. Use when user asks about repos, pull requests, issues, branches, or code changes.
npx skillsauth add atrislabs/atris githubInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Drop this in
~/.claude/skills/github/SKILL.mdand Claude Code becomes your GitHub assistant.
#!/bin/bash
set -e
# 1. Check if atris CLI is installed
if ! command -v atris &> /dev/null; then
echo "Installing atris CLI..."
npm install -g atris
fi
# 2. Check if logged in to AtrisOS
if [ ! -f ~/.atris/credentials.json ]; then
echo "Not logged in. Run: atris login"
exit 1
fi
# 3. Extract token
if command -v node &> /dev/null; then
TOKEN=$(node -e "console.log(require('$HOME/.atris/credentials.json').token)")
elif command -v python3 &> /dev/null; then
TOKEN=$(python3 -c "import json,os; print(json.load(open(os.path.expanduser('~/.atris/credentials.json')))['token'])")
else
TOKEN=$(jq -r '.token' ~/.atris/credentials.json)
fi
# 4. Check GitHub connection
STATUS=$(curl -s "https://api.atris.ai/api/integrations/github/status" \
-H "Authorization: Bearer $TOKEN")
CONNECTED=$(echo "$STATUS" | python3 -c "import sys,json; print(json.load(sys.stdin).get('connected', False))" 2>/dev/null || echo "false")
if [ "$CONNECTED" != "true" ] && [ "$CONNECTED" != "True" ]; then
echo "GitHub not connected. Getting authorization URL..."
AUTH=$(curl -s -X POST "https://api.atris.ai/api/integrations/github/start" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"return_url":"https://atris.ai/settings/integrations"}')
URL=$(echo "$AUTH" | python3 -c "import sys,json; print(json.load(sys.stdin).get('auth_url', ''))")
echo ""
echo "Open this URL to connect GitHub:"
echo "$URL"
echo ""
echo "After authorizing, run your command again."
exit 0
fi
echo "Ready. GitHub is connected."
export ATRIS_TOKEN="$TOKEN"
The GitHub tool is available to agents as github. All actions accept optional owner and repo params (defaults to configured repo).
| Action | Params | Description |
|--------|--------|-------------|
| list_repos | per_page | List your accessible repos |
| get_repo | owner, repo | Get repo details |
| Action | Params | Description |
|--------|--------|-------------|
| list_prs | state (open/closed/all), per_page | List PRs |
| get_pr | pr_number | Get PR details + merge status |
| create_pr | title, head, base, body | Open a PR |
| list_pr_files | pr_number | Files changed in PR |
| list_pr_reviews | pr_number | Reviews on PR |
| create_pr_review | pr_number, body, event | Add review (APPROVE/REQUEST_CHANGES/COMMENT) |
| create_pr_comment | pr_number, body | Comment on PR |
| merge_pr | pr_number, merge_method | Merge PR (squash/merge/rebase) |
| Action | Params | Description |
|--------|--------|-------------|
| list_issues | state, labels, per_page | List issues |
| get_issue | issue_number | Get issue details |
| create_issue | title, body, labels | Open issue |
| update_issue | issue_number, title/body/state/labels | Update issue |
| list_issue_comments | issue_number | Get issue comments |
| create_issue_comment | issue_number, body | Comment on issue |
| add_labels | issue_number/pr_number, labels | Add labels |
| Action | Params | Description |
|--------|--------|-------------|
| list_branches | per_page | List branches |
| create_branch | branch, from_ref | Create branch from ref |
| delete_branch | branch | Delete branch |
| Action | Params | Description |
|--------|--------|-------------|
| list_commits | sha/branch, per_page | Recent commits |
| get_commit | ref | Commit details |
| compare_commits | base, head | Diff between refs |
| Action | Params | Description |
|--------|--------|-------------|
| get_combined_status | ref/branch | CI status for ref |
| list_check_runs | ref/branch | Check runs (Actions) |
| Action | Params | Description |
|--------|--------|-------------|
| search_issues | query | Search issues/PRs across repos |
| search_code | query | Search code across repos |
| Action | Params | Description |
|--------|--------|-------------|
| list_contents | path | List directory |
| get_file | path, ref | Read file (returns decoded_content) |
| put_file | path, message, content, sha, branch | Create/update file |
list_prs with state=openget_combined_status with the PR's head refget_pr with pr_numberlist_pr_files to see what changedget_file on key changed files to read contentcreate_pr_review with body and event (APPROVE/REQUEST_CHANGES/COMMENT)list_issues with state=openadd_labels based on content (bug, feature, docs)create_issue_comment acknowledging triagelist_branches to see all brancheslist_prs with state=closed to find merged PRsdelete_branchget_combined_status with ref=main for overall statuslist_check_runs for individual check detailslist_prs with state=all + filter by datelist_issues with state=all + filter by datelist_commits for recent activity| Error | Meaning | Solution |
|-------|---------|----------|
| GitHub not connected | No OAuth token | Run bootstrap |
| GitHub API error (401) | Token expired | Reconnect GitHub in settings |
| GitHub API error (403) | Rate limited or no permission | Wait or check repo access |
| GitHub API error (404) | Repo/resource not found | Check owner/repo/number |
| GitHub API error (422) | Invalid request | Check required params |
| No repo specified | No default repo configured | Set default in Settings > Integrations > GitHub |
TOKEN=$(node -e "console.log(require('$HOME/.atris/credentials.json').token)")
# Check connection
curl -s "https://api.atris.ai/api/integrations/github/status" -H "Authorization: Bearer $TOKEN"
# List repos
curl -s "https://api.atris.ai/api/integrations/github/repos" -H "Authorization: Bearer $TOKEN"
# Configure default repo
curl -s -X PUT "https://api.atris.ai/api/integrations/github/config" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"owner":"atrislabs","repo":"atrisos-backend","default_branch":"master"}'
# Disconnect
curl -s -X DELETE "https://api.atris.ai/api/integrations/github" -H "Authorization: Bearer $TOKEN"
testing
Detects AI slop and fixes it, especially in memos, docs, READMEs, messages, PRDs, and other written output. Based on Wikipedia's AI Cleanup patterns plus memo-specific anti-slop rules. Triggers on "copy edit", "review writing", "humanize", "deslopper", "ai patterns", "make it sound human", "AI slop", "anti-slop", "memo".
tools
Use when an agent needs to inspect or send local macOS iMessage through Atris CLI. Triggers on iMessage, Messages.app, local text messages, chat.db, or texting someone from the user's Mac.
databases
Submit, list, resolve, close, or delete Atris customer feedback. Use when user types /feedback or asks to triage the feedback queue.
development
Fast research sweep — arxiv, semantic scholar, github, web. Finds papers, scores relevance, extracts actionable insights, stores to wiki. Triggers on: research search, find papers, latest research, arxiv, what's new in, sweep papers, research sweep.