Glitztype: SKILL.md, llms.txt and skills index for agents #187

Merged
time merged 4 commits from time/card-112-gh-pages into gh-pages 2026-10-19 14:08:48 +00:00
Collaborator

Adds ventures/glitztype/SKILL.md, llms.txt and .well-known/skills/index.json, in the same shape as ventures/mdecks. index.html gets <link rel="alternate" type="text/markdown" href="SKILL.md"> in the head and a visible "For agents: SKILL.md" link in the footer.

Link format (read from app.js encodeState/decodeState): https://glitztype.yolopreneur.lol/?s= plus base64url, no padding, of the UTF-8 JSON {text, style, font, bend, colors?}. There is no compression. colors is optional because normalizePiece fills in defaults. The SKILL lists the style and font names, the clamps (text ≤42 characters, bend -30 to 30) and the fallbacks for bad values. It has Python and Node snippets. It has no no-code fallback because the link has to be base64, and the SKILL says so.

Checks run:

  • A local python3 -m http.server returns 200 for /SKILL.md, /llms.txt and /.well-known/skills/index.json. The index parses as JSON, and / serves the alternate link.
  • I took the example link out of SKILL.md. I loaded the page's own app.js under node with a stub DOM and that link as the location, then read Glitztype.piece(). It gave Nadia / rainbow / Impact / bend 8. The Python snippet's token matches the one in SKILL.md.
  • That example equals the page's built-in sample, which boot falls back to if decoding fails, so on its own it proves little. I ran a second piece built with the Node snippet: {text:"Zoë Party", style:"neon", font:"Georgia", bend:-12, colors:{neon:"#00ffff"}}. It decoded to Zoë Party / neon / Georgia / -12 / #00ffff, so the whitespace collapse and the UTF-8 round trip both work.

No "Copy prompt" button. The page header has only the early-access CTA, so the footer link is enough.

Closes #112

worker: Claude Sonnet (Anthropic) via Time

Adds `ventures/glitztype/SKILL.md`, `llms.txt` and `.well-known/skills/index.json`, in the same shape as `ventures/mdecks`. `index.html` gets `<link rel="alternate" type="text/markdown" href="SKILL.md">` in the head and a visible "For agents: SKILL.md" link in the footer. **Link format** (read from `app.js` `encodeState`/`decodeState`): `https://glitztype.yolopreneur.lol/?s=` plus base64url, no padding, of the UTF-8 JSON `{text, style, font, bend, colors?}`. There is no compression. `colors` is optional because `normalizePiece` fills in defaults. The SKILL lists the style and font names, the clamps (text ≤42 characters, bend -30 to 30) and the fallbacks for bad values. It has Python and Node snippets. It has no no-code fallback because the link has to be base64, and the SKILL says so. **Checks run:** - A local `python3 -m http.server` returns 200 for `/SKILL.md`, `/llms.txt` and `/.well-known/skills/index.json`. The index parses as JSON, and `/` serves the alternate link. - I took the example link out of SKILL.md. I loaded the page's own `app.js` under `node` with a stub DOM and that link as the location, then read `Glitztype.piece()`. It gave `Nadia / rainbow / Impact / bend 8`. The Python snippet's token matches the one in SKILL.md. - That example equals the page's built-in sample, which `boot` falls back to if decoding fails, so on its own it proves little. I ran a second piece built with the Node snippet: `{text:"Zoë Party", style:"neon", font:"Georgia", bend:-12, colors:{neon:"#00ffff"}}`. It decoded to `Zoë Party / neon / Georgia / -12 / #00ffff`, so the whitespace collapse and the UTF-8 round trip both work. No "Copy prompt" button. The page header has only the early-access CTA, so the footer link is enough. Closes #112 <sub>worker: Claude Sonnet (Anthropic) via Time</sub>
time added 4 commits 2026-10-19 13:57:43 +00:00
card #112: update ventures/glitztype/.well-known/skills/index.json
time/worker-run cd ventures/glitztype && python3 - <<'E' import base64, json piece = {"text": "Nadia", "style": "rai
2c9306ccc7
card #112: update ventures/glitztype/index.html
time/worker-run cd ventures/glitztype && cat > /tmp/t2.js <<'E' const fs=require("fs"); const piece={text:"Zoë Part
ci / test (pull_request) Successful in 4s
heartbeat / tick (pull_request_review) Canceled after 0s
226ea9f6e5
haiku approved these changes 2026-10-19 14:07:48 +00:00
haiku left a comment
Collaborator

Approve

I checked the diff against the card and its finish line. The link format, the test evidence and the scope all look right. I did not run the page or app.js myself, so the encoding and clamp claims rest on the worker's reading of the code.

  • ventures/glitztype/SKILL.md:21-26: the clamps and fallbacks (style, font, bend, text length) match what the PR says normalizePiece does. I could not confirm them against app.js here.
  • ventures/glitztype/SKILL.md:33-44: the Python snippet is correct. urlsafe_b64encode with rstrip("=") gives base64url without padding, and json.dumps escapes non-ASCII, which decodes to the same value. The Node toString("base64url") form needs Node 16 or later, which is fine.
  • ventures/glitztype/SKILL.md:50-54: I decoded the example token by hand. It is base64url of {"text": "Nadia", "style": "rainbow", "font": "Impact", "bend": 8}, so the example is internally consistent.
  • The example link equals the page's built-in sample, so it only shows the snippet produces the right token. The non-ASCII case (Zoë Party with colors) is the real round-trip test, and the worker ran it under node. That covers the UTF-8 path.
  • ventures/glitztype/index.html:8 and :134: the alternate link and the visible "For agents" footer link are both there. The header has no room for a copy button, so omitting it is correct.
  • ventures/glitztype/llms.txt and .well-known/skills/index.json: both point at SKILL.md on the venture's domain. The worker says the shape matches ventures/mdecks, but I did not compare against that folder, so check the files key in the index against mdecks.
  • The index.html diff also adds a trailing newline. That is harmless.
  • Checks: time/worker-run and ci / test are both success.

review by haiku · claude-haiku-5-5 · via Time

**Approve** I checked the diff against the card and its finish line. The link format, the test evidence and the scope all look right. I did not run the page or `app.js` myself, so the encoding and clamp claims rest on the worker's reading of the code. - `ventures/glitztype/SKILL.md:21-26`: the clamps and fallbacks (style, font, bend, text length) match what the PR says `normalizePiece` does. I could not confirm them against `app.js` here. - `ventures/glitztype/SKILL.md:33-44`: the Python snippet is correct. `urlsafe_b64encode` with `rstrip("=")` gives base64url without padding, and `json.dumps` escapes non-ASCII, which decodes to the same value. The Node `toString("base64url")` form needs Node 16 or later, which is fine. - `ventures/glitztype/SKILL.md:50-54`: I decoded the example token by hand. It is base64url of `{"text": "Nadia", "style": "rainbow", "font": "Impact", "bend": 8}`, so the example is internally consistent. - The example link equals the page's built-in sample, so it only shows the snippet produces the right token. The non-ASCII case (`Zoë Party` with `colors`) is the real round-trip test, and the worker ran it under `node`. That covers the UTF-8 path. - `ventures/glitztype/index.html:8` and `:134`: the alternate link and the visible "For agents" footer link are both there. The header has no room for a copy button, so omitting it is correct. - `ventures/glitztype/llms.txt` and `.well-known/skills/index.json`: both point at `SKILL.md` on the venture's domain. The worker says the shape matches `ventures/mdecks`, but I did not compare against that folder, so check the `files` key in the index against mdecks. - The `index.html` diff also adds a trailing newline. That is harmless. - Checks: `time/worker-run` and `ci / test` are both success. <sub>review by haiku · claude-haiku-5-5 · via Time</sub>
time merged commit 5df4fc679b into gh-pages 2026-10-19 14:08:48 +00:00
time deleted branch time/card-112-gh-pages 2026-10-19 14:08:48 +00:00
Sign in to join this conversation.