Personal website and technical blog about platform engineering, systems, and side projects.
  • SCSS 34.8%
  • Nunjucks 20.1%
  • JavaScript 19.8%
  • Python 11.3%
  • TypeScript 8.2%
  • Other 5.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
coilyco-ops 43f8425a61
Some checks failed
Test and mirror to GitHub / test (push) Successful in 2m59s
Test and mirror to GitHub / test-e2e (push) Failing after 4m5s
Publish staging image / publish (push) Successful in 54s
TruffleHog / Scan for secrets (push) Successful in 2m20s
Test and mirror to GitHub / mirror (push) Has been skipped
chore: use the full name Kai Ase Siren across the site (#141)
The full form **Kai Ase Siren** across the career surface.

That form is current and correct, and has been the public name on LinkedIn since 2026-08-25. Making the site match it is the same consistency the LinkedIn change was made for, so this should help rather than hurt the name's search picture.

**This is a pull request rather than a direct push on purpose.** `kai-bio-surface` routes resume, intro, and bio changes through review with Kai merging, and the Developer Advocate seat writes the wording. Ordinary website edits still go direct to main.

**What I did not touch:** `resume.md` names the prior legal name by Kai's own choice, and that line stays exactly as written. It is still accurate today, and becomes stale only when the petition's order is signed, which is realistically November 2026 to February 2027. That edit belongs to whoever is holding the resume when the order lands, not to this pass.

Attribution metadata across 16 repos took the same change separately: copyright lines and package author fields.

Reviewed-on: #141
2026-08-29 06:38:11 +00:00
.agents/skills/repo-website chore(skills): regenerate the repo pointer skill from Forgejo metadata 2026-08-20 00:37:35 -07:00
.claude feat: migrate site to Eleventy 2026-08-03 17:02:38 -07:00
.forgejo/workflows feat: sync the project docs mount instead of hand-vendoring it 2026-08-27 00:19:47 -07:00
.github ci: unblock the pin advance, and land it 2026-08-27 20:36:30 -07:00
.ward feat(just): retire ward exec, move the verb table to a justfile 2026-08-17 13:39:38 -07:00
cypress feat(projects): put up a housecast shell for the prose to land in 2026-08-28 13:46:28 -07:00
docs chore: use the full name Kai Ase Siren across the site (#141) 2026-08-29 06:38:11 +00:00
drafts docs: draft the umbra slice of the projects docs section 2026-08-26 21:35:01 -07:00
scripts ci: unblock the pin advance, and land it 2026-08-27 20:36:30 -07:00
src chore: use the full name Kai Ase Siren across the site (#141) 2026-08-29 06:38:11 +00:00
static ci: unblock the pin advance, and land it 2026-08-27 20:36:30 -07:00
.agentic-os.toml feat: migrate site to Eleventy 2026-08-03 17:02:38 -07:00
.dockerignore feat: add staging image contract (closes #76) 2026-07-24 00:56:07 -07:00
.gitattributes ci: unblock the pin advance, and land it 2026-08-27 20:36:30 -07:00
.gitignore feat: migrate site to Eleventy 2026-08-03 17:02:38 -07:00
.node-version chore: modernize website development toolchain (closes #75) 2026-07-23 23:48:45 -07:00
.pre-commit-config.yaml ci: unblock the pin advance, and land it 2026-08-27 20:36:30 -07:00
.prettierignore feat: migrate site to Eleventy 2026-08-03 17:02:38 -07:00
_typos.toml ci: unblock the pin advance, and land it 2026-08-27 20:36:30 -07:00
AGENTS.md ci: unblock the pin advance, and land it 2026-08-27 20:36:30 -07:00
CLAUDE.md Convert CLAUDE.md symlink to @AGENTS.md import 2026-04-23 13:35:49 -07:00
cypress.config.ts chore: modernize website development toolchain (closes #75) 2026-07-23 23:48:45 -07:00
Dockerfile feat: migrate site to Eleventy 2026-08-03 17:02:38 -07:00
eleventy.config.js chore: use the full name Kai Ase Siren across the site (#141) 2026-08-29 06:38:11 +00:00
eslint.config.mjs feat: add the umbra project page, the first of the project-page layer 2026-08-25 10:44:50 -07:00
justfile feat: sync the project docs mount instead of hand-vendoring it 2026-08-27 00:19:47 -07:00
netlify.toml refactor(site): rename two vanity hosts to their short forms 2026-08-28 13:59:00 -07:00
nginx.conf feat: migrate site to Eleventy 2026-08-03 17:02:38 -07:00
package.json chore: use the full name Kai Ase Siren in attribution 2026-08-28 23:24:36 -07:00
pnpm-lock.yaml feat: run axe-core over every indexed route, and fix what it found 2026-08-25 01:05:29 -07:00
pnpm-workspace.yaml feat: migrate site to Eleventy 2026-08-03 17:02:38 -07:00
pyproject.toml refactor(projects): make the three project pages markdown 2026-08-28 12:17:05 -07:00
README.md refactor(site): deprovision the sirens-echo section 2026-08-28 13:57:17 -07:00
tsconfig.json feat: migrate site to Eleventy 2026-08-03 17:02:38 -07:00
website ci: unblock the pin advance, and land it 2026-08-27 20:36:30 -07:00

coilysiren.me

my internet website

Git workflow

Commit directly to main without asking for confirmation, including git add. Do not open pull requests unless explicitly asked.

Commit whenever a unit of work feels sufficiently complete, such as after fixing a bug, adding a feature, passing tests, or reaching any other natural stopping point. Don't wait for the user to ask.

Status

Netlify Status

Project banners

agent-compose banner

mcp-beaver banner

umbra banner

Local development

The site uses Node.js 24 LTS and pnpm 11. Corepack reads the exact pnpm release from package.json, while .node-version keeps local development and hosted builds on the same Node release.

Eleventy renders the site to ordinary static files in dist/. Core pages render from server-produced HTML and locally served CSS and fonts, without a framework runtime, hydration, or analytics. Optional embeds may load their own resources after the core page is usable.

Commands

Dev commands are declared in the justfile. Run them as just <verb>, and run just alone to list every one.

  • just install - install the locked dependency graph.
  • just dev - clean, build, and serve Eleventy with live reload.
  • just test - run formatting, lint, type, and unit checks.
  • just build - create the production site in dist/.
  • just build-resume - regenerate the PDF from the checked-in resume page in an isolated uv environment.
  • just image-build - build the static staging image.
  • just image-smoke - validate nginx inside the staging image.
  • just image-publish-check - validate the trusted publisher script.
  • just test-e2e-ci - serve the production build and run the Cypress smoke test.
  • just deps-outdated - report dependency releases available upstream.

The dependency updater keeps Node types on the Node 24 runtime line and TypeScript on 6.x until typescript-eslint supports TypeScript 7.

See docs/static-generation.md for the template, content, asset, metadata, and output contracts.

Hosting

Netlify remains the production host for the canonical https://www.coilysiren.me site. The staging image supplies the same static build to https://website.coilysiren.me. The source repository publishes an immutable private image to Forgejo OCI. coilyco-bridge/deploy owns its Kubernetes rollout, DNS, and TLS.

See also

Cross-reference convention from coilyco-bridge/agentic-os-kai#313.