Postgres Adopt
garrytan/gbrain
Detect which gbrain engine is in use (PGLite vs Postgres), prefer Postgres for agent-harness installs, install/provision Postgres (Supabase discovery via SUPABASEACCESSTOKEN, local Postgres, opt-in…
Configure Supabase local development with the CLI, Docker, and migration workflow.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill supabase-local-dev-loop -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace supabase-local-dev-loop --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/.curated/supabase-local-dev-loop .claude/skills/supabase-local-dev-loop && rm -rf skills-srcUse ~/.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/
Install the "supabase-local-dev-loop" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/supabase-local-dev-loop into .claude/skills/supabase-local-dev-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "supabase-local-dev-loop", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/supabase-local-dev-loopType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill supabase-local-dev-loop -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace supabase-local-dev-loop --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/.curated/supabase-local-dev-loop .agents/skills/supabase-local-dev-loop && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "supabase-local-dev-loop" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/supabase-local-dev-loop into .agents/skills/supabase-local-dev-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "supabase-local-dev-loop", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill supabase-local-dev-loop -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace supabase-local-dev-loop --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/.curated/supabase-local-dev-loop .cursor/skills/supabase-local-dev-loop && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "supabase-local-dev-loop" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/supabase-local-dev-loop into .cursor/skills/supabase-local-dev-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "supabase-local-dev-loop", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/jeremylongshore/tons-of-skills-marketplace.git --path skills/.curated/supabase-local-dev-loop--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill supabase-local-dev-loop -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace supabase-local-dev-loop --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/.curated/supabase-local-dev-loop .gemini/skills/supabase-local-dev-loop && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "supabase-local-dev-loop" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/supabase-local-dev-loop into .gemini/skills/supabase-local-dev-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "supabase-local-dev-loop", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install jeremylongshore/tons-of-skills-marketplace supabase-local-dev-loopInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill supabase-local-dev-loop -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/.curated/supabase-local-dev-loop .github/skills/supabase-local-dev-loop && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "supabase-local-dev-loop" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/supabase-local-dev-loop into .github/skills/supabase-local-dev-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "supabase-local-dev-loop", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill supabase-local-dev-loop -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace supabase-local-dev-loop --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/.curated/supabase-local-dev-loop .opencode/skills/supabase-local-dev-loop && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "supabase-local-dev-loop" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/supabase-local-dev-loop into .opencode/skills/supabase-local-dev-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "supabase-local-dev-loop", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
supabase-local-dev-loopConfigure Supabase local development with the CLI, Docker, and migration workflow.
Supabase Local Dev Loop is an agent skill from jeremylongshore/tons-of-skills-marketplace. Configure Supabase local development with the CLI, Docker, and migration workflow. Use when initializing a Supabase project locally, starting the local stack, writing migrations, seeding data, or iterating on schema changes. Trigger with phrases like "supabase local dev", "supabase start", "supabase init", "supabase db reset", "supabase local setup".
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `references/errors.md`, `references/examples.md` and `references/implementation.md`). Compatibility notes: Designed for Claude Code
It sits in DevOps & Cloud, covering Containers. It works with Supabase and Docker. The repository describes itself as: Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 23ea8d4. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditBash(npx:*)Bash(supabase:*)Bash(docker:*)Bash(curl:*)GrepFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxsupabasenpmcurlFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
supabase.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Designed for Claude Code
From compatibility in the SKILL.md frontmatter.
Supabase Local Dev Loop loads about 2.3k tokens when it runs, and up to ~2.9k if it reads all its reference files. Until then it costs about 94 tokens; SKILL.md has 428 words of instructions outside code blocks.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
Create `.env.local` from these values (git-ignored):# .env.local- `.env.local` with local connection credentialsrmissions | Add user to `docker` group: `sudo usermod -aG docker $USER` |npx supabase functions serve --env-file .env.localAutomated 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.
The full file from jeremylongshore/tons-of-skills-marketplace at commit 23ea8d4, republished under its MIT licence (© jeremylongshore). 428 words, ~2,342 tokens.
.claude/skills/supabase-local-dev-loop/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Run the full Supabase stack locally — Postgres, Auth, Storage, Realtime, Edge Functions, and Studio — using Docker and the Supabase CLI. Local development mirrors production APIs exactly, enabling offline work, fast iteration, and repeatable migration workflows. Schema changes flow through supabase db diff to generate migrations, and supabase db reset replays them cleanly.
npx supabase commands)npx supabase# Initialize Supabase in your project root
npx supabase initThis creates a supabase/ directory:
supabase/
├── config.toml # Local stack configuration (ports, auth settings)
├── migrations/ # SQL migration files (version-controlled)
└── seed.sql # Seed data (runs after migrations on db reset)Start the local stack (first run pulls Docker images — takes a few minutes):
npx supabase startThe CLI prints all local endpoints and keys:
API URL: http://localhost:54321
GraphQL URL: http://localhost:54321/graphql/v1
S3 Storage URL: http://localhost:54321/storage/v1/s3
DB URL: postgresql://postgres:postgres@localhost:54322/postgres
Studio URL: http://localhost:54323
Inbucket URL: http://localhost:54324
anon key: eyJhbGciOiJI...
service_role key: eyJhbGciOiJI...Create .env.local from these values (git-ignored):
# .env.local
SUPABASE_URL=http://localhost:54321
SUPABASE_ANON_KEY=<anon-key-from-supabase-start>
SUPABASE_SERVICE_ROLE_KEY=<service-role-key-from-supabase-start>
DATABASE_URL=postgresql://postgres:postgres@localhost:54322/postgresVerify the stack is running:
npx supabase statusCreate a migration file with a descriptive name:
npx supabase migration new create_profiles
# Creates: supabase/migrations/<timestamp>_create_profiles.sqlWrite the migration SQL:
-- supabase/migrations/<timestamp>_create_profiles.sql
create table public.profiles (
id uuid references auth.users(id) primary key,
username text unique not null,
avatar_url text,
created_at timestamptz default now(),
updated_at timestamptz default now()
);
-- Always enable RLS on public tables
alter table public.profiles enable row level security;
create policy "Public profiles are viewable by everyone"
on public.profiles for select
using (true);
create policy "Users can update own profile"
on public.profiles for update
using (auth.uid() = id);
-- Auto-create profile on signup via trigger
create or replace function public.handle_new_user()
returns trigger as $$
begin
insert into public.profiles (id, username)
values (new.id, new.raw_user_meta_data->>'username');
return new;
end;
$$ language plpgsql security definer;
create trigger on_auth_user_created
after insert on auth.users
for each row execute procedure public.handle_new_user();Add seed data for local development:
-- supabase/seed.sql (runs automatically after migrations on db reset)
insert into auth.users (id, email, raw_user_meta_data)
values
('a1b2c3d4-e5f6-7890-abcd-ef1234567890', 'alice@example.com',
'{"username": "alice"}'),
('b2c3d4e5-f6a7-8901-bcde-f12345678901', 'bob@example.com',
'{"username": "bob"}');Apply migrations and seed data in one command:
npx supabase db reset
# Drops the database, replays all migrations, runs seed.sqlThe core iteration loop: make changes in Studio, diff them into migration files, then verify with a clean reset.
Open Studio at http://localhost:54323 and make schema changes interactively (add columns, create tables, modify RLS policies). Then capture those changes as a migration:
# Generate a migration from the diff between migrations and current DB state
npx supabase db diff -f add_bio_to_profiles
# Review the generated file
cat supabase/migrations/*_add_bio_to_profiles.sqlThe generated migration captures exactly what changed:
-- Auto-generated by supabase db diff
alter table public.profiles add column bio text;Verify the full migration chain replays cleanly:
npx supabase db reset
# Success = all migrations + seed apply without errorsPush verified migrations to a remote Supabase project:
# Link to remote project first (one-time)
npx supabase link --project-ref <your-project-ref>
# Push migrations to remote
npx supabase db pushDaily workflow summary:
# Start of day
npx supabase start
# After schema changes in Studio
npx supabase db diff -f descriptive_name
npx supabase db reset # Verify clean replay
# Before committing
npx supabase db reset # Final verification
npm test # Run tests against local instance
# End of day
npx supabase stopsupabase/migrations/.env.local with local connection credentials| Error | Cause | Solution |
|---|---|---|
Cannot connect to Docker daemon | Docker not running | Start Docker Desktop, then retry npx supabase start |
Port 54321 already in use | Previous instance still running | Run npx supabase stop then npx supabase start |
supabase db reset fails | Syntax error in migration SQL | Check the failing migration file, fix SQL, re-run reset |
Permission denied on start | Docker socket permissions | Add user to docker group: sudo usermod -aG docker $USER |
supabase db diff empty | No schema changes detected | Verify changes were made in the local DB, not just Studio UI cache |
relation "auth.users" does not exist | Running migration outside Supabase | Auth schema only exists in the Supabase-managed Postgres instance |
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(
process.env.SUPABASE_URL!, // http://localhost:54321 locally
process.env.SUPABASE_ANON_KEY! // Local anon key from supabase start
)
// Fetch profiles — works identically in local and production
const { data, error } = await supabase
.from('profiles')
.select('username, avatar_url')
.limit(10)import { createClient } from '@supabase/supabase-js'
import { describe, it, expect, beforeAll } from 'vitest'
const supabase = createClient(
'http://localhost:54321',
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' // Local anon key
)
describe('profiles', () => {
beforeAll(async () => {
// Seed data is already loaded via supabase db reset
})
it('fetches public profiles', async () => {
const { data, error } = await supabase
.from('profiles')
.select('username')
.limit(1)
expect(error).toBeNull()
expect(data).toHaveLength(1)
expect(data![0].username).toBeDefined()
})
it('enforces RLS on update', async () => {
// Anon users cannot update profiles (no auth.uid())
const { error } = await supabase
.from('profiles')
.update({ username: 'hacker' })
.eq('username', 'alice')
expect(error).not.toBeNull()
})
})# Create and serve an Edge Function with hot reload
npx supabase functions new hello-world
npx supabase functions serve --env-file .env.local
# Test it
curl -X POST http://localhost:54321/functions/v1/hello-world \
-H "Authorization: Bearer $SUPABASE_ANON_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "World"}'Proceed to supabase-sdk-patterns for production-ready client initialization, typed queries, and real-time subscriptions.
© jeremylongshore, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in skills/.curated/supabase-local-dev-loop of jeremylongshore/tons-of-skills-marketplace.
Open the folder on GitHubat commit 23ea8d4
Supabase Local Dev Loop 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Supabase Local Dev Loop this skilljeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~2.3k | Automated safety check: Notes | MIT | |
| Postgres Adoptgarrytan/gbrain | 31k | — | ~2.1k | Automated safety check: Pass | MIT | |
| Supabasemagnus919/agent-skills | 113 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Test The Docssupabase/supabase | 111k | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Crabbox Quickstartopenclaw/crabbox | 1.5k | — | ~1.6k | Automated safety check: Notes | MIT | |
| Build Imageskubernetes-sigs/cloud-provider-azure | 294 | — | ~1.7k | Automated safety check: Pass | Apache-2.0 |
garrytan/gbrain
Detect which gbrain engine is in use (PGLite vs Postgres), prefer Postgres for agent-harness installs, install/provision Postgres (Supabase discovery via SUPABASEACCESSTOKEN, local Postgres, opt-in…
magnus919/agent-skills
A skill your agent uses when developing applications with Supabase, running the Supabase CLI, designing migrations and RLS policies, testing database behavior, generating client types, deploying the…
supabase/supabase
Execute runnable docs snippets and examples inside a disposable Docker Compose sandbox (runner container + local Supabase stack via supabase start).
openclaw/crabbox
Gets you running your repository's tests in a disposable Docker or Podman container on your own machine with Crabbox, with no account and no cloud spend.
kubernetes-sigs/cloud-provider-azure
Build cloud-provider-azure container images through the repo Makefile with explicit IMAGETAG and IMAGEREGISTRY inputs, optional make flag overrides, and opt-in bounded Docker or Podman retries.
BlkLeg/CircuitBreaker
How Circuit Breaker is built, tested, packaged, and kept secret-safe — the make dev/verify/test targets, the PostgreSQL integration test database and its fixtures, the mono Docker image and native…
jeremylongshore/tons-of-skills-marketplace
Execute this skill enables AI assistant to conduct a security-focused code review using the security-agent plugin.
jeremylongshore/tons-of-skills-marketplace
Execute this skill enables AI assistant to perform natural language processing and text analysis using the nlp-text-analyzer plugin.
jeremylongshore/tons-of-skills-marketplace
Execute this skill allows AI assistant to construct and configure neural network architectures using the neural-network-builder plugin.
jeremylongshore/tons-of-skills-marketplace
Process identify anomalies and outliers in datasets using machine learning algorithms.
jeremylongshore/tons-of-skills-marketplace
Build this skill enables AI assistant to provide interpretability and explainability for machine learning models.
jeremylongshore/tons-of-skills-marketplace
Execute this skill optimizes prompts for large language models (llms) to reduce token usage, lower costs, and improve performance.
Categories
Configure Supabase local development with the CLI, Docker, and migration workflow. Supabase Local Dev Loop is an agent skill from jeremylongshore/tons-of-skills-marketplace. Configure Supabase local development with the CLI, Docker, and migration workflow.
Supabase Local Dev Loop fits situations like: initializing a Supabase project locally; starting the local stack; writing migrations; iterating on schema changes.
Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill supabase-local-dev-loop -a claude-code`. Or copy the skill folder (skills/.curated/supabase-local-dev-loop in jeremylongshore/tons-of-skills-marketplace) into .claude/skills/supabase-local-dev-loop in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill supabase-local-dev-loop -a codex`. Or copy the skill folder (skills/.curated/supabase-local-dev-loop in jeremylongshore/tons-of-skills-marketplace) into .agents/skills/supabase-local-dev-loop in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill supabase-local-dev-loop -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/supabase-local-dev-loop, .gemini/skills/supabase-local-dev-loop, .github/skills/supabase-local-dev-loop and .opencode/skills/supabase-local-dev-loop in your project.
Going by SKILL.md and its folder, Supabase Local Dev Loop needs the command-line tools its instructions call (npx, supabase, npm and curl) and credentials named SUPABASE_ANON_KEY and SUPABASE_SERVICE_ROLE_KEY. Our summary lists: Node.js; Docker; A credential in SUPABASE_ANON_KEY; A credential in SUPABASE_SERVICE_ROLE_KEY. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash(npx:*), Bash(supabase:*), Bash(docker:*), Bash(curl:*), Grep. Compatibility (from SKILL.md): Designed for Claude Code.
SKILL.md names 1 domain. As links in the text: supabase.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file; runs commands with sudo), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Supabase Local Dev Loop is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 573 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Supabase Local Dev Loop: Postgres Adopt (garrytan/gbrain, 31k stars), Supabase (magnus919/agent-skills, 113 stars), Test The Docs (supabase/supabase, 111k stars) and Crabbox Quickstart (openclaw/crabbox, 1.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jeremylongshore (a GitHub user) maintains it in jeremylongshore/tons-of-skills-marketplace, which has 2,821 GitHub stars. The repository holds 3,342 skills in this directory. The repository was last updated on October 8, 2026.
Source: jeremylongshore/tons-of-skills-marketplace on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.