Contribute

The site is a static site and the repository is the CMS. Every fish is a block of data in src/data/fishes.ts; every page is generated from that file at build time. No admin panel, no database, no runtime — just the repo, a PR, and a build.

Add a fish

  1. Open src/data/fishes.ts.
  2. Copy any fish block and fill every field (see the table below).
  3. Run npm run build — the new page is generated at /fishes/<your-id>/.
  4. Open a pull request. The school grows by PR.

Fish fields

fieldmeaning
idURL slug — kebab-case, unique
emojione glyph that swims with the post
title / subtitlethe hook
domaintech · culture · economy · geopolitics
depthSURFACE · MID-WATER · ABYSSAL · HADAL
layerwhich iceberg layer the fish lives in
pillblue · red · black · white · grey
schoolsone or more currents — neural-net · memetic-engine · attention-mine · supply-chain
dateISO date, used for ordering
excerptone-line teaser for cards and <meta>
anatomy.tailobserved effects — what is on the surface
anatomy.ribsfour variables: UPSTREAM_CAUSE · DOWNSTREAM_EFFECT · HIDDEN_VARIABLE · REFLEX_ACTION, each with a value
anatomy.spinethe mechanism — the thread connecting head to tail
anatomy.headthe distilled conclusion
linksids of real fish this one relates to, with a label

What makes a good fish

The community

Community lives on GitHub: the public repository plus its Discussions forum. This site is the distillation; the repo is where the school is actually written.

Activate comments (giscus)

  1. Create the public repo on GitHub and enable Discussions.
  2. Install the giscus app on the repo.
  3. Open giscus.app, select the repo, mapping = pathname, and create a Discussions category.
  4. Copy the four values — repo, repo id, category, category id — and set them as build variables:
GISCUS_REPO=Pilagrigea/pilagrigea.com
GISCUS_REPO_ID=<from giscus.app>
GISCUS_CATEGORY=<name of your category>
GISCUS_CATEGORY_ID=<from giscus.app>

Set them in Cloudflare Pages (Settings → Environment variables) or in a local .env, then rebuild. Every fish page gains a comment thread. Until then the site ships with a // DISCUSSION OFFLINE placeholder.

// OBSERVE → INFER → ANALYZE → DISTILL — then write it down and open a PR.