# sites.tanmoysarkar.me A minimal dumpyard for LLM-generated static sites. Repository: `tanmoysrt/sites.tanmoysarkar.me`, branch `main`. Read `skills/publish-site-artifact/SKILL.md` before creating a report, guide, plan, or presentation. ## Add a direct HTML page Use a lowercase kebab-case slug. Write a self-contained `index.html` at `research//`, `learning//`, or `plans//`. Keep assets in the page's folder. Give the page a meaningful HTML ``. ## Source for generated pages If a tool generates the published HTML or assets, keep the editable source files, configuration, and source assets in `raw/<section>/<slug>/`. Put generated files in `<section>/<slug>/`. Record the build command in `raw/<section>/<slug>/README.md` unless the repository already provides a build script. Commit source and output together. A direct HTML page does not need a duplicate raw copy. The Pages workflow does not deploy `raw/`. ## Add a presentation Choose `research`, `learning`, or `plans` based on the deck's purpose. Use Marp. Keep editable Markdown at `raw/<section>/<slug>/slides.md` and local files at `raw/<section>/<slug>/assets/`. Before building, check `marp --version`. If Marp CLI is missing, ask the user to install it globally with `npm install -g @marp-team/marp-cli`; do not install it for them. Run `npm run build:deck -- <section> <slug>` to create `<section>/<slug>/index.html` and copy its assets. Set `marp: true` and a meaningful `title` in the frontmatter. Keep slides light and minimal. Show each slide immediately; for a flow that benefits from step-by-step explanation, use consecutive slides and add `<!-- _transition: fade 250ms -->` to the slide before a flow step. Commit raw and built files together. ## Publishing: GitHub CLI is required Check `gh auth status` first. Do not put tokens in files or use raw HTTP requests to publish. Before either publishing method, review every new or changed source and generated file. Never publish PII: remove private names, contact details, addresses, IDs, and personal records from both `raw/` and public output. If you find unexplained high-entropy data, such as a token-like string, encoded blob, or binary, ask the user what it is and leave it out until confirmed safe. Do not rely on `.gitignore` for this review. For a **new direct HTML page**, run this from the repository root after replacing the path: ```sh PAGE_PATH='research/<slug>/index.html' CONTENT="$(base64 < "$PAGE_PATH" | tr -d '\n')" gh api "repos/tanmoysrt/sites.tanmoysarkar.me/contents/$PAGE_PATH" \ -X PUT -f message="Add $PAGE_PATH" -f branch=main -f content="$CONTENT" ``` To update an existing page, first get its SHA with `gh api "repos/tanmoysrt/sites.tanmoysarkar.me/contents/$PAGE_PATH" --jq .sha`, then add `-f sha="<the-sha>"` to the PUT command. For any generated or multi-file artifact, use `gh repo clone tanmoysrt/sites.tanmoysarkar.me`, add both source and built files in that clone, then commit and push. The Pages workflow regenerates section listings and deploys the site after the push. Only publish when the person requesting the artifact asks for publication. Verify the public URL before reporting success. Never commit secrets.