Agent skill

Cline CLI Release Publisher

by cline in cline/cline

Walks through releasing the Cline CLI package to npm: release notes, version bump, matching git tag, and either the GitHub workflow or a local publish.

Apache-2.0Auto-check: warningsDevelopment

Install Cline CLI Release Publisher

The automated check flagged lines worth reading first. See the safety section below.

skills CLI
$ npx skills add cline/cline --skill publish-cli -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install cline/cline publish-cli --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/cline/cline.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.cline/skills/publish-cli .claude/skills/publish-cli && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
publish-cli
GitHub stars
70k
Token cost
~3.4k tokens
SKILL.md length
1,755 words
Files
1
Skills in repo
8
Repo updated
First seen
Licence
Apache-2.0

At a glance

Walks through releasing the Cline CLI package to npm: release notes, version bump, matching git tag, and either the GitHub workflow or a local publish.

  • Releasing a new version of the CLI package to npm
  • SKILL.md covers Release contract, Step 0: Release the SDK first… and Workflow
  • Calls git, bun and gh
  • Drafting release notes and a changelog entry for a CLI release

What it does

This skill guides you through releasing the command-line package in the Cline repository to npm. Release preparation covers drafting and approving release notes, bumping the version in apps/cli/package.json, updating apps/cli/CHANGELOG.md and creating a git tag that matches that version.

You then choose one of two publish paths. The cli-publish GitHub Actions workflow runs from main and checks out the existing tag, while a local publish with `bun release cli` needs a clean checkout, the tag on HEAD both locally and on origin, and an authenticated gh for the GitHub release. A nightly workflow publishes under the nightly dist-tag without creating a tag. If the SDK packages changed since their last release, they must be published first. Local publishes do not sign Windows binaries, so the GitHub path is preferred for those.

When your agent uses it

  • Releasing a new version of the CLI package to npm
  • Drafting release notes and a changelog entry for a CLI release
  • Bumping the CLI version and creating the matching git tag
  • Triggering the CLI publish workflow or a nightly build

Example prompts

  • “Prepare a release of the CLI and draft the release notes.”
  • “Bump the CLI version and tag it so we can run the publish workflow.”
  • “Publish a nightly build of the CLI to npm.”
  • “I need to publish the CLI from my own machine instead of GitHub Actions.”

Requirements

  • A checkout of the Cline repository, with commands run from its root
  • Bun for the local release helper
  • An authenticated gh CLI with release permissions for local GitHub releases

What it can do on your machine

Read from SKILL.md and the folder at commit 6354d20. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • bun
    • gh
    • npm
    • node

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, gh and npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Cline CLI Release Publisher loads about 3.4k tokens when it runs. Until then it costs about 55 tokens; SKILL.md has 1,755 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~55
When it runs · the whole SKILL.md, loaded when a task matches
~3.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: warnings

The automated check found patterns that need a careful read before installing.

  • WarningMentions a credentials file (SSH keys, cloud or package-manager tokens)SKILL.md:183
    s that have `ignore-scripts=true` in `~/.npmrc` (set by the npm supply-chain hardening guide). Bun reads npm's `ignore-s

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from cline/cline at commit 6354d20, republished under its Apache-2.0 licence (© cline). 1,755 words, ~3,418 tokens.

Download SKILL.mdSave it as .claude/skills/publish-cli/SKILL.md (or your agent's skills folder).
name
publish-cli
description
Use when preparing, tagging, and publishing an apps/cli npm release. Guides changelog drafting, apps/cli/package.json version bumps, cli-vX.Y.Z tags, local npm publishing, and the publish-cli GitHub workflow.

CLI Release

Use this skill when the user asks to release the CLI, publish cline, bump the CLI version, draft release notes, create a cli-vX.Y.Z tag, or trigger the CLI publish workflow.

The CLI is npm-only. Do not add alternate distribution channels. Windows binaries are Authenticode-signed automatically by the publish workflow via Azure Trusted Signing (see the .github/actions/sign-windows-cli composite action and "Windows code signing" in apps/cli/DISTRIBUTION.md); if the signing secrets are not configured the workflow warns and publishes unsigned binaries. Local publishes (bun release cli) do not sign — prefer the GitHub Actions publish path for releases users run on Windows.

Working directory: run every command below from the repository root. Paths and scripts (e.g. apps/cli/package.json, sdk/packages/, bun release cli, bun run version) are written relative to the repo root.

The skill should guide the user through one release preparation flow, then offer the publish path options. The two normal publish paths are GitHub Actions and local publishing from an authenticated machine.

Release contract

  • SDK prerequisite: the CLI depends on the SDK via workspace:* (@cline/core, @cline/shared, and friends). If the SDK changed since its last release, release the SDK first and wait for it to finish publishing before releasing the CLI. See "Step 0: Release the SDK first if it changed" below.
  • Version source: apps/cli/package.json.
  • Main release tag: cli-vX.Y.Z, where X.Y.Z matches apps/cli/package.json.
  • Nightly release version: X.Y.Z-nightly.TIMESTAMP.
  • Release prep includes approved release notes, a version bump, and an apps/cli/CHANGELOG.md update.
  • Publish paths:
    • GitHub workflow: .github/workflows/cli-publish.yml.
    • Local publish helper: bun release cli.
  • npm dist-tags and git tags are separate. --tag latest and --tag nightly are npm registry channels. cli-vX.Y.Z is a git tag for source history and GitHub releases.
  • The GitHub main release workflow runs from main, requires an existing cli-vX.Y.Z tag, checks out that tag, and publishes from it.
  • The GitHub nightly workflow publishes to npm with the nightly dist-tag and does not create a tag.
  • The local release helper requires a clean checkout and cli-vX.Y.Z to point at HEAD locally and on origin before publishing.
  • Local GitHub release creation requires gh to be authenticated with release permissions for the repo.
  • Always ask before pushing commits or tags.
  • Do not amend commits unless explicitly requested.

Step 0: Release the SDK first if it changed

Do this before anything else in the Workflow below.

The CLI builds and ships against the SDK source in the monorepo (workspace:* for @cline/core, @cline/shared, and the rest), so a CLI release always contains the latest SDK code whether or not the SDK was released. The build and tests use that source too, not anything from npm. Releasing the SDK alongside the CLI is still worth doing for two reasons:

  • Hub freshness. The hub daemon lives in @cline/core and stamps a buildId that defaults to the @cline/core package version (resolveHubBuildId in sdk/packages/core/src/hub/discovery/index.ts). A running hub is only retired and respawned when that buildId changes (isCompatibleHubRecord / retireIncompatibleHub in sdk/packages/core/src/hub/daemon/index.ts). So if the SDK code changed but the version did not, a user who upgrades the CLI keeps talking to their already-running hub, which is still executing the old SDK code. Bumping the SDK version makes the new CLI's buildId differ, so the stale hub is detected as incompatible and respawned with the fresh code.
  • Release hygiene. We want regular SDK releases; cutting one whenever we cut a CLI release keeps the published SDK in step with what the CLI ships.

So when the SDK has changed, release it first (which bumps the @cline/core version), then cut the CLI release on top of that bump. Leave the CLI's SDK dependency as workspace:* — the fix is to release the SDK, not to pin the CLI.

  1. Check for unreleased SDK changes.
sh
git fetch origin --tags
git tag --list 'sdk/sdk/v*' 'sdk-v*' --sort=-v:refname | head -1
git log <last-sdk-tag>..origin/main --oneline --no-merges -- sdk/packages

sdk/<pkg>/v* tags are created by the sdk-publish.yml workflow; sdk-v* tags are created by the local bun release sdk helper. Use whichever is newest as the baseline.

If git log prints no commits, the SDK is already up to date. Skip the rest of Step 0 and continue with the Workflow below.

If it prints commits, sanity-check the diff (ignore entries that are only the previous version-bump commit's lockfile or generated files), then release the SDK.

  1. Decide the SDK version bump.

All SDK packages share one version, read from sdk/packages/llms/package.json. Ask whether this is patch, minor, major, or an explicit version. Patch is the default. Do not guess if the user has not made it clear.

  1. Draft the SDK release notes and update the changelog.

Draft user-facing notes from the SDK commits found in step 1, translating commit messages into user-facing language (same approach as the CLI release notes below). Prepend a new ## <version> section with those notes to the top of sdk/CHANGELOG.md, using the header format ## <version> with no date — the same flat, newest-on-top format as apps/cli/CHANGELOG.md. This is the SDK changelog (all SDK packages share one version) and it is maintained by hand; the sdk-publish.yml workflow does not read it.

  1. Bump versions and regenerate.
sh
bun run version <version>

This bumps every SDK package.json to the new version, regenerates the lockfile and the generated model catalog, formats, and builds. Review the result.

  1. Commit and push the bump to main.

The sdk-publish.yml workflow publishes the version that is committed on main and tags that commit, so the bump must land on main before the workflow runs.

sh
git add -A
git commit -m "chore(sdk): release v<version>"

Ask before pushing:

sh
git push origin HEAD
  1. Trigger the SDK publish workflow on the latest channel.
sh
gh workflow run sdk-publish.yml -f channel=latest -f confirm_publish=publish
gh run list --workflow=sdk-publish.yml --limit=1 --json databaseId,url,status,createdAt --jq '.[0]'

The workflow runs the SDK tests, publishes @cline/shared, @cline/llms, @cline/agents, @cline/core, and @cline/sdk to npm with the latest dist-tag in dependency order, and pushes sdk/<pkg>/v<version> git tags.

  1. Wait for the SDK workflow to succeed before starting the CLI release.
sh
gh run watch <run-id> --exit-status

Do not start the CLI release until this run has finished successfully. The CLI does not install the SDK from npm, but cutting the CLI release on top of a clean, completed SDK release keeps the two in step: the CLI release commit then sits on top of the @cline/core version bump, so the shipped CLI carries the new version that forces a running hub to respawn with the new code, and you are not building a CLI release on top of an SDK release that failed midway.

After the SDK release succeeds, pull main so the CLI release is prepared on top of the SDK version bump:

sh
git checkout main && git pull --ff-only

Then continue with the Workflow below.

For a local SDK publish from an authenticated machine instead of the workflow, bun release sdk <version> exists, but prefer the sdk-publish.yml workflow for normal releases so the CLI release can gate on a single GitHub Actions run.

Show full SKILL.md (674 more words)Show less

Workflow

Complete Step 0 first. Only proceed once the SDK is released (or you confirmed no SDK release was needed).

  1. Gather context.
sh
git status --short --branch
git fetch origin --tags
git tag --list 'cli-v*' --sort=-v:refname | head -10
node -p "require('./apps/cli/package.json').version"

Find the latest CLI tag. If there is no cli-v* tag, use the first relevant CLI release commit as the baseline and say that the baseline is inferred.

  1. Collect release commits.
sh
git log <last-cli-tag>..HEAD --oneline --no-merges -- apps/cli sdk/packages sdk/scripts .github/workflows/cli-publish.yml

The sdk/packages commits matter here even though the SDK was released separately in Step 0: the CLI bundles the SDK, so SDK changes ship in this CLI release too. Read those commits and fold anything user-relevant to the CLI into the release notes (provider/model updates, behavior changes, fixes the CLI inherits). Skip SDK changes that are purely internal or have no CLI-visible effect.

  1. Draft user-facing release notes.

Include user-facing features, fixes, behavior changes, compatibility changes, and notable install or release changes. Exclude pure refactors, tests, style, chores, and internal file moves unless they matter to users.

Write a flat bullet list. Translate commit messages into user-facing language. If a commit is unclear, read the full commit before summarizing it.

Scope notes to the CLI. Shared-code commits in the range are often for desktop or the extension. Keep a bullet only if the change reaches apps/cli (hub fixes do; desktop webview/sidecar/voice/packaging don't). Skip items already in the last CLI section, grep any quoted string, and leave out anything uncertain.

Present the draft and wait for approval before editing files.

  1. Decide the version bump.

Ask whether this should be patch, minor, major, or an explicit version. Do not guess if the user has not made it clear.

  1. Update release files.

Update apps/cli/package.json to the approved version.

Prepend a section to apps/cli/CHANGELOG.md for the approved version using the approved release notes. Use the header format ## X.Y.Z with no date. The publish workflow extracts the top section of the changelog by matching ^## [0-9] and pastes it verbatim into the GitHub release body and the Slack release announcement, so the section content is the release notes that get shipped.

  1. Verify before committing.

Run focused checks first:

sh
bun -F @cline/cli typecheck
bun -F @cline/cli test:unit

For higher confidence, run:

sh
bun run types
bun --cwd apps/cli run build:platforms:single

If the user wants full release confidence before tagging, run:

sh
bun run test
bun --cwd apps/cli run build:platforms

Known local-only test failure: src/commands/distribution-package.test.ts > rejects direct source package packing by default will fail on machines that have ignore-scripts=true in ~/.npmrc (set by the npm supply-chain hardening guide). Bun reads npm's ignore-scripts from ~/.npmrc, so bun pm pack --dry-run skips the source-publish prepack guard and exits 0, which the test reads as a failure. CI does not set ignore-scripts, so the test passes there. Confirm by running bun pm pack --dry-run directly: with ~/.npmrc in place it exits 0 with no guard output; with ~/.npmrc moved aside it exits 1 and prints the guard message. This is not a release blocker by itself, but it does mean the local-publish path (bun release cli) will also bypass the source-publish guard on this machine; prefer the GitHub Actions publish path on machines with ignore-scripts=true set globally, or temporarily unset it (npm config delete ignore-scripts or mv ~/.npmrc ~/.npmrc.bak) for the duration of a local publish.

  1. Commit release changes.

Only after the user approves the notes and version:

sh
git add apps/cli/package.json apps/cli/CHANGELOG.md
git commit -m "chore(cli): release vX.Y.Z"

Ask before pushing the release commit:

sh
git push origin HEAD

For the GitHub main release path, ask before creating and pushing the release tag:

sh
git tag -a cli-vX.Y.Z -m "CLI vX.Y.Z"
git push origin refs/tags/cli-vX.Y.Z
  1. Publish.

Ask the user which path to use:

  • GitHub main release. Use this after the release commit is on main and the matching cli-vX.Y.Z tag has been pushed. The workflow publishes to npm from that tag, creates the GitHub release, and posts to Slack.
  • Local release. Use this when the user wants to publish from this machine. The local machine must be authenticated to npm and GitHub.
  • GitHub nightly release.
  • Stop after the version commit.

For GitHub main release:

sh
gh workflow run cli-publish.yml -f publish_target=main -f git_tag=cli-vX.Y.Z -f confirm_publish=publish
gh run list --workflow=cli-publish.yml --limit=1 --json url,status,conclusion,createdAt --jq '.[0]'

For GitHub nightly release:

sh
gh workflow run cli-publish.yml -f publish_target=nightly

For forced GitHub nightly release:

sh
gh workflow run cli-publish.yml -f publish_target=nightly -f force_nightly_publish=true

For local publish:

sh
gh auth status
npm whoami
git tag -a cli-vX.Y.Z -m "CLI vX.Y.Z"
git push origin refs/tags/cli-vX.Y.Z
bun release cli

After a successful local publish, ask before running:

sh
gh release create cli-vX.Y.Z --verify-tag --title "CLI vX.Y.Z" --notes "Paste the approved release notes here."

If publishing with another npm dist-tag:

sh
bun release cli --tag next
  1. Final response.

Report:

  • version
  • tag
  • changelog file updated
  • commit hash
  • whether anything was pushed
  • publish path selected
  • workflow URL or local publish result
  • tests and builds run

© cline, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .cline/skills/publish-cli of cline/cline.

Open the folder on GitHubat commit 6354d20

Compare with similar skills

Cline CLI Release Publisher next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Cline CLI Release Publisher compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Cline CLI Release Publisher this skillcline/cline70k—~3.4kAutomated safety check: WarnApache-2.0
Ccb GitHubSeemSeam/claude_codex_bridge3.5k—~4.9kAutomated safety check: PassCustom licence
npm Release Via GitHub Actionsjmfederico/pi-web861—~2.9kAutomated safety check: PassMIT
Automate npm Releasejd-solanki/slidev-theme-dracula161—~626Automated safety check: PassNone
ClickUp CLI Release Processkrodak/clickup-cli120—~906Automated safety check: WarnMIT
OpenWork Release Processdifferent-ai/openwork24k—~2.3kAutomated safety check: PassCustom licence

Similar skills

  • Ccb GitHub

    SeemSeam/claude_codex_bridge

    Maintain this CCB project's GitHub-facing release and npm publication surface.

    3.5k GitHub stars~4.9k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • A skill your agent uses whenever the user asks for a new npm version, npm release, package release, new release, version bump, publishing to npm, cutting a GitHub release, tagging a release, or…

    861 GitHub stars~2.9k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Automate npm Release

    jd-solanki/slidev-theme-dracula

    Automate npm package publishing via GitHub Actions for single-package repos and independent monorepo packages, including bumpp version tags, GitHub release notes, trusted publishing, provenance, and…

    161 GitHub stars~626 tokensUpdated 3 mo ago
    DevelopmentAuto-check passed
  • ClickUp CLI Release Process

    krodak/clickup-cli

    Walks through releasing a new version of clickup-cli: pre-release checks, version bump, tagging, CI watch, release notes and the Homebrew update.

    120 GitHub stars~906 tokensUpdated yesterday
    DevOps & CloudAuto-check: warnings
  • OpenWork Release Process

    different-ai/openwork

    Cuts an OpenWork desktop release through a tag-driven GitHub Actions workflow that makes no commits, with pre-tag checks on open fix PRs and verification afterward.

    24k GitHub stars~2.3k tokensUpdated today
    DevOps & CloudAuto-check passed
  • EverOS Release Workflow

    EverMind-AI/EverOS

    Walks through cutting a versioned everos release: bump the version, update the changelog, tag it, and review the drafted GitHub Release page before publishing.

    13k GitHub stars~1.3k tokensUpdated today
    DevelopmentAuto-check passed

More from cline/cline

All 8 skills in this repo
  • Cline SDK Guide

    cline/cline

    Reference for building AI agents with the Cline SDK: the Agent runtime, ClineCore sessions, custom tools, plugins, events, providers, scheduling and multi-agent teams.

    70k GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Opens a GitHub pull request from your current branch with the gh CLI, after reviewing the commits and diff and gathering the details the PR needs.

    70k GitHub starsUsed in 1 repo~1.6k tokens
    Auto-check passed
  • Helps build terminal user interfaces with OpenTUI using its core imperative API or its React and Solid reconcilers, with references for layout, keyboard, animation and testing.

    70k GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Guides publishing a one-time What's new dialog in the Cline desktop app: deciding if one is due, picking highlights from the changelog and editing one content file.

    70k GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Covers preparing, tagging and publishing a Cline desktop app release on the stable, beta or nightly channel through the desktop-publish GitHub workflow.

    70k GitHub stars~4.5k tokensUpdated today
    Auto-check passed
  • Validates and publishes the standalone @cline/ui npm package through its own release workflow, separate from the Cline SDK runtime packages.

    70k GitHub stars~1.4k tokensUpdated today
    Auto-check passed

Questions about Cline CLI Release Publisher

What does Cline CLI Release Publisher do?

Walks through releasing the Cline CLI package to npm: release notes, version bump, matching git tag, and either the GitHub workflow or a local publish. This skill guides you through releasing the command-line package in the Cline repository to npm.md and creating a git tag that matches that version.

When should I use Cline CLI Release Publisher?

Cline CLI Release Publisher fits situations like: releasing a new version of the CLI package to npm; drafting release notes and a changelog entry for a CLI release; bumping the CLI version and creating the matching git tag; triggering the CLI publish workflow or a nightly build.

How do I install Cline CLI Release Publisher in Claude Code?

Run `npx skills add cline/cline --skill publish-cli -a claude-code`. Or copy the skill folder (.cline/skills/publish-cli in cline/cline) into .claude/skills/publish-cli in your project. Claude Code loads it when a task matches its description.

How do I install Cline CLI Release Publisher in Codex?

Run `npx skills add cline/cline --skill publish-cli -a codex`. Or copy the skill folder (.cline/skills/publish-cli in cline/cline) into .agents/skills/publish-cli in your project. Codex loads it when a task matches its description.

Can I use Cline CLI Release Publisher in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add cline/cline --skill publish-cli -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/publish-cli, .gemini/skills/publish-cli, .github/skills/publish-cli and .opencode/skills/publish-cli in your project.

What does Cline CLI Release Publisher need to run?

Going by SKILL.md and its folder, Cline CLI Release Publisher needs the command-line tools its instructions call (git, bun, gh, npm and node). Our summary lists: A checkout of the Cline repository, with commands run from its root; Bun for the local release helper; An authenticated gh CLI with release permissions for local GitHub releases.

Does Cline CLI Release Publisher access the network?

SKILL.md contains no URLs. Its commands use git, gh and npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Cline CLI Release Publisher safe to install?

Our automated static check of SKILL.md flagged 1 warning(s): mentions a credentials file (ssh keys, cloud or package-manager tokens). Read the flagged lines before installing; the check is not a guarantee either way.

What licence does Cline CLI Release Publisher use?

Cline CLI Release Publisher is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Cline CLI Release Publisher use?

About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Cline CLI Release Publisher?

Skills that share tags, products or a category with Cline CLI Release Publisher: Ccb GitHub (SeemSeam/claude_codex_bridge, 3.5k stars), npm Release Via GitHub Actions (jmfederico/pi-web, 861 stars), Automate npm Release (jd-solanki/slidev-theme-dracula, 161 stars) and ClickUp CLI Release Process (krodak/clickup-cli, 120 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Cline CLI Release Publisher?

cline (a GitHub organization) maintains it in cline/cline, which has 69,954 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 7, 2026.

Source: cline/cline on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.