The organization site served at btclib.org, and
nothing else: no package, no suite, no documentation build. GitHub Pages
builds it from this repository's main branch at the root, with the
classic Jekyll builder, and CNAME is what claims the domain —
REPOSITORY.md reads both settings back from the endpoint.
index.md is
btclib-org/.github's
profile/README.md under Jekyll front matter, and that file is the
organization's page — what github.com/btclib-org renders. One text, one
place it is written, and a second copy of it here is the thing this
arrangement exists to avoid: a transcription is the copy that goes stale.
.github/scripts/derive-homepage.sh is what writes it, from the commit
its own front matter records, and the file's body is the source's bytes
with nothing added or rewritten. So the derivation is checkable by
anybody in one command, without reading the script:
awk 'n>=2 {print} $0=="---" {n++}' index.md | cmp - <(curl -fsSL \
"https://raw.githubusercontent.com/btclib-org/.github/$(awk \
'$0=="---"{n++;next} n==1&&$1=="source_commit:"{print $2;exit}' \
index.md)/profile/README.md")homepage.yml asks the same question on every pull request, and asks a
second one on main: whether that source still says what this site says.
CONTRIBUTING.md's Changing the homepage is what to do about either
answer, and the script's own header has the alternatives that were
weighed against deriving — transcribing the page, a git submodule, a
fetch at build time — and what rejects each.
_config.yml is the site's configuration and decides what else in the
root is published at all: the exclude: list there replaces Jekyll's
default rather than adding to it, so a file added to this directory
without an entry becomes a URL under btclib.org whether anybody meant
it to or not.
CNAME holds btclib.org, and Pages reads it out of the built site on
every build: it is the domain claim as a file rather than only as a
setting, which is why website.yml asserts that the site it builds
still carries it.
Gemfile names the github-pages release GitHub's own builder runs, so
website.yml can build the site with the same toolchain and fail out
loud where the builder on GitHub's side fails silently.
The rest is what section 2 of
the organization's standard
gives a tier-3 repository: CONTRIBUTING.md and REVIEWING.md, each the
same file in every repository up to its last section, REPOSITORY.md for
the settings that live outside the tree, CLAUDE.md for what a session
needs, and CHANGELOG.md, LICENSE, COPYRIGHT and AUTHORS.md.