diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..736424e
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,3 @@
+.git
+_site
+node_modules
diff --git a/.eleventy.js b/.eleventy.js
index 1fed181..dcdd743 100644
--- a/.eleventy.js
+++ b/.eleventy.js
@@ -55,6 +55,12 @@ module.exports = function (eleventyConfig) {
eleventyConfig.addPassthroughCopy("img");
eleventyConfig.addPassthroughCopy("favicon.svg");
+ // A snapshot copy of ~/.claude/CLAUDE.md, published verbatim at /CLAUDE.md
+ // (linked from the footer). Keep it out of template processing so it ships
+ // as raw markdown instead of being rendered to HTML.
+ eleventyConfig.addPassthroughCopy({ "assets/CLAUDE.md": "CLAUDE.md" });
+ eleventyConfig.ignores.add("assets/CLAUDE.md");
+
// KaTeX: render $$...$$ at build time into static markup. Ship katex.min.css
// plus its fonts/ as a sibling so the stylesheet's url(fonts/...) resolves.
eleventyConfig.addPassthroughCopy({
diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml
index 5eb62aa..8a2615f 100644
--- a/.gitea/workflows/deploy.yaml
+++ b/.gitea/workflows/deploy.yaml
@@ -28,6 +28,10 @@ jobs:
run: |
apt-get update -qq && apt-get install -y -qq awscli > /dev/null
aws s3 sync _site/ s3://${{ vars.S3_BUCKET }} --delete
+ # sync guesses text/markdown for .md, which Firefox downloads
+ # instead of displaying; text/plain shows the raw text in the tab
+ aws s3 cp _site/CLAUDE.md s3://${{ vars.S3_BUCKET }}/CLAUDE.md \
+ --content-type "text/plain; charset=utf-8"
- name: Invalidate CloudFront
if: vars.CF_DISTRIBUTION_ID != ''
diff --git a/Makefile b/Makefile
index 9568461..74a0942 100644
--- a/Makefile
+++ b/Makefile
@@ -9,13 +9,15 @@ build:
dev:
docker run --rm -v $$(pwd):/app -w /app -p 8080:8080 node:22-alpine sh -c "yarn install && yarn dev --port 8080"
+# CLAUDE.md is re-uploaded as text/plain: sync guesses text/markdown for .md,
+# which Firefox downloads instead of displaying in the tab.
deploy: build
docker run --rm \
-e AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY \
-e AWS_DEFAULT_REGION \
unprompted \
- aws s3 sync /site $(S3_BUCKET) --delete
+ sh -c "aws s3 sync /site $(S3_BUCKET) --delete && aws s3 cp /site/CLAUDE.md $(S3_BUCKET)/CLAUDE.md --content-type 'text/plain; charset=utf-8'"
invalidate:
ifdef CF_DISTRIBUTION_ID
diff --git a/_includes/base.njk b/_includes/base.njk
index eeaccca..5f1ddf2 100644
--- a/_includes/base.njk
+++ b/_includes/base.njk
@@ -26,6 +26,7 @@
about
code
subjects
+ (CLAUDE.md)