Skip to content
Skills Library
Programming · Tool integration

github

/github

Clone and push the user's GitHub repositories with git, and work with issues, pull requests, and files through the GitHub API with den fetch. Use for any task on GitHub.

Repository
den ↗
Licence
Apache-2.0
Last repository change
13.11.2026

Assessment and security

100/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability25 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content35 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
1
Scripts
0
HTML comments
0
URLs in SKILL.md
6
Deprecation

No signals detected. Repository changed on 13.11.2026, without references to retired models or APIs.

Licence

Apache-2.0, otwarta: można używać i zmieniać, z zachowaniem licencji i informacji o zmianach.

What it does and when to use it

Clone and push the user's GitHub repositories with git, and work with issues, pull requests, and files through the GitHub API with den fetch. Use for any task on GitHub.

Original author description

Clone and push the user's GitHub repositories with git, and work with issues, pull requests, and files through the GitHub API with den fetch. Use for any task on GitHub.

How it works

  1. git
  2. Back up the space
  3. What waits for the user in the API
  4. Requests
  5. Local findings
Original SKILL.md headings · 73 lines, 845 words
SKILL.md preview
---
name: github
description: Clone and push the user's GitHub repositories with git, and work with issues, pull requests, and files through the GitHub API with den fetch. Use for any task on GitHub.
---

# github

den holds the user's GitHub token and adds it to each request, to git's and to the API's. You never see it, so never ask the user for it, try to read it, or put one in a URL.

```bash
den fetch --secret github https://api.github.com/user
```

- When den answers that `github_token` is not set, tell the user GitHub is not connected yet. They create a fine-grained token at github.com/settings/personal-access-tokens, limited to the repositories you need, with Contents, Issues, and Pull requests set to read and write, and run `den secret set github_token` on their computer.
- Public repositories also work without the token.

## git

git works as usual with `https://github.com/<owner>/<repo>` addresses: den's git config sends them through den, which adds the token. Clone into the space, change many files, commit, and push, rather than changing files one by one through the API.

```bash
git clone https://github.com/<owner>/<repo>
git switch -c <topic-branch>
git commit -am "…"
git push -u origin <topic-branch>
```

- Commit as the user only once they told you their name and email; until then ask, and keep the answer in `notes/skills/github.md`. Set it per repository with `git config user.name` and `git config user.email`.
- A push that creates a branch, or changes a branch you created through den, goes at once, force-pushes included. A push to any other branch, such as `main`, deleting such a branch, or pushing a tag waits for the user's Allow in Telegram. So work on your own branch and open a pull request, unless the user asked you to push to `main`.
- Such a push fails at once with `den: waiting for the user in Telegram`: den keeps it and sends it to GitHub once the user allows it, then tells you in a new `[den:` message. Do not push it again; after that message, `git fetch` updates your copy of the remote branch. If the branch moved on GitHub meanwhile, GitHub refuses the kept push, and den says so: fetch, rebase or merge, and push again.

## Back up the space

The space is a git repository, and the nightly review commits to it. When the user asks for a backup, push it to a private repository of theirs every night:

1. Ask the user to create an empty private repository, without a README, and to give their GitHub token access to it. An empty one matters: your first push then creates its branch, so later pushes go without a question.
2. Check that it is private, since the space holds the user's notes: `den fetch --secret github https://api.github.com/repos/<owner>/<repo>` shows `"private": true`. Then add it as `backup` and push:

   ```bash
   git -C ~/space remote add backup https://github.com/<owner>/<repo>
   git -C ~/space push backup HEAD:main
   ```

3. Add a job after the nightly review that stays quiet unless the push fails:

   ```bash
   den job add --name backup --schedule "30 4 * * *" "Push the space to its backup with git -C ~/space push backup HEAD:main. Reply exactly SILENT when it succeeds; otherwise say why in one line."
   ```

The backup holds the space only, not `archive/` or `inbox/`.

## What waits for the user in the API

Reads go at once, and so do these changes to the user's own repositories: issues, comments, labels, milestones, opening and editing pull requests, and git blobs, trees, and commits. den asks the user in Telegram first before any other write: files changed through the API, merges, tags, releases, workflow runs, deletions, access, anything in someone else's repository, a public repository, and any GraphQL mutation. To change files, commit and push with git to your own branch, and open a pull request. Such a request returns at once, saying den asked: den sends it once the user allows it and tells you the service's answer in a new `[den:` message. The user already sees den's question, so do not tell them you asked, and do not send it again.

## Requests

`den fetch` prints the response body; `-i` adds the status and headers. A body given with `-d` makes it a POST unless `-X` says otherwise, and `-d @file` reads a file.

```bash
gh=https://api.github.com
den fetch --secret github "$gh/repos/<owner>/<repo>/issues?state=open&per_page=50" | jq -r '.[] | "#\(.number) \(.title)"'
den fetch --secret github -d '{"title":"…","body":"…"}' "$gh/repos/<owner>/<repo>/issues"
den fetch --secret github -d '{"body":"…"}' "$gh/repos/<owner>/<repo>/issues/<n>/comments"
den fetch --secret github -H "Accept: application/vnd.github.raw+json" "$gh/repos/<owner>/<repo>/contents/<path>"
den fetch --secret github "$gh/search/issues?q=<query>+repo:<owner>/<repo>"
```

- **Change a file:** `PUT /repos/<owner>/<repo>/contents/<path>` with `message`, the new content in base64 (`base64 -w0 file`), and, for an existing file, its current `sha` from a GET of the same path.
- **Open a pull request:** `POST /repos/<owner>/<repo>/pulls` with `title`, `head`, `base`, and `body`.
- **Get a private repository's files:** download `GET /repos/<owner>/<repo>/tarball/<branch>` to a file and unpack it with `tar -xzf`.
- **More pages:** a long list continues in the `Link` header (`-i`) as `rel="next"`. Raise `per_page` up to 100 before you page.

## Local findings

Findings about this skill on this machine are in `notes/skills/github.md`. Read it before you start, and add what you learn there. This skill itself is read-only.

Versions

RepositoryScoreLicence
This page · unsady/den100Apache-2.0
rjmurillo/ai-agents100MIT
rjmurillo/ai-agents100MIT
VincenzoImp/pitcrew100MIT
AceDataCloud/Skills100Apache-2.0
the-open-agent/openagent100Apache-2.0
OpenHands/extensions100MIT
TerminalSkills/skills100Apache-2.0
atomicbot-ai/atomic-agent100MIT

Database snapshot: 13.11.2026 · package version 7da5cb40948b (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 100github-workflow
    GitHub workflow automation — branching, committing, pushing, pull requests, issues, and code review. Use when asked to commit, push, create PRs/branches/issues, or manage git workflow.
  • 100gh-cli
    The gh CLI is GitHub's official command line tool for interacting with GitHub repositories, issues, pull requests, and more. When needs to interact with GitHub repositories, issues, pull requests, and more, use this skill.
  • 100github-navigator
    GitHub operations via gh CLI. CRITICAL: Use instead of WebFetch for any `github.com` URL or GitHub repo path like `owner/repo`. Use when the user asks to inspect repositories, files, issues, pull requests, releases, Actions runs, or repository structure. Use when the user says…
  • 95github-api
    GitHub API integration with managed OAuth. Access repositories, issues, pull requests, commits, branches, and users. Use this skill when users want to interact with GitHub repositories, manage issues and PRs, search code, or automate workflows. For other third party apps, use…
  • 95github-cli
    MUST USE for GitHub-related operations, including a GitHub URL, repository or code search, Issues, pull requests, Actions, Releases, permissions, and API requests. Use the local GitHub CLI (`gh`).
  • 100forgejo
    Work with Forgejo code, issues, pull requests, comments, files and CI status. Find repositories, clone and push with git, list and read issues and pull requests, create and update issues, create pull requests, comment, read the changed files of a pull request, check the CI…

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.