Gives Havre's skill a front door that agents find without reading the page's links. It uses the same convention as .mdeck in #60.
What changed (all under ventures/havre)
.well-known/skills/index.json lists one skill, havre, with "type": "skill-md" and "url": "/skill.md". The name matches skill.md's front matter.
index.html has <link rel="alternate" type="text/markdown" href="skill.md" title="Skill"> in the head, right after the llms.txt alternate link.
robots.txt allows everything and names Sitemap: https://havre.yolopreneur.lol/sitemap.txt.
tests/agents.test.mjs has three tests:
The index parses, each skill has name, description, type and url, and /skill.md exists in the site root with a matching front-matter name.
index.html's head carries both alternate links, and the files they point at exist.
robots.txt has Allow: /, no Disallow, and the sitemap line.
tools/build.sh never clears .well-known/. It also now fails if .well-known/skills/index.json or robots.txt is missing.
Assumptions to check
I couldn't fetch docs.whop.com/.well-known/skills/index.json from here. The format is my reading of the Agent Skills discovery convention: {"skills":[{"name","type":"skill-md","description","url"}]}. If Whop's real index uses another shape, such as files: ["SKILL.md"] under /.well-known/skills/<name>/, only this JSON and its test need to change. I left out digest so a skill.md edit can't make the index stale.
The index points at the existing /skill.md rather than copying it under .well-known, as the card asked.
#86 hasn't landed on gh-pages. Its branch has a sitemap.txt with the same host, so robots.txt names https://havre.yolopreneur.lol/sitemap.txt. Until #86 lands, that URL 404s. I wrote no sitemap here.
Checks
sh tools/build.sh is green: 66 unit tests pass (3 new) and the browser smoke test passes, including the security-policy step. The new files are static and the CSP is unchanged.
I served the folder locally and fetched each file:
File
Status
Content-type
/.well-known/skills/index.json
200
application/json
/robots.txt
200
text/plain
/skill.md
200
text/markdown
Both alternate links appear in the served index.html.
Gives Havre's skill a front door that agents find without reading the page's links. It uses the same convention as .mdeck in #60.
**What changed (all under `ventures/havre`)**
- `.well-known/skills/index.json` lists one skill, `havre`, with `"type": "skill-md"` and `"url": "/skill.md"`. The name matches `skill.md`'s front matter.
- `index.html` has `<link rel="alternate" type="text/markdown" href="skill.md" title="Skill">` in the head, right after the `llms.txt` alternate link.
- `robots.txt` allows everything and names `Sitemap: https://havre.yolopreneur.lol/sitemap.txt`.
- `tests/agents.test.mjs` has three tests:
- The index parses, each skill has `name`, `description`, `type` and `url`, and `/skill.md` exists in the site root with a matching front-matter name.
- `index.html`'s head carries both alternate links, and the files they point at exist.
- `robots.txt` has `Allow: /`, no `Disallow`, and the sitemap line.
- `tools/build.sh` never clears `.well-known/`. It also now fails if `.well-known/skills/index.json` or `robots.txt` is missing.
**Assumptions to check**
- I couldn't fetch `docs.whop.com/.well-known/skills/index.json` from here. The format is my reading of the Agent Skills discovery convention: `{"skills":[{"name","type":"skill-md","description","url"}]}`. If Whop's real index uses another shape, such as `files: ["SKILL.md"]` under `/.well-known/skills/<name>/`, only this JSON and its test need to change. I left out `digest` so a `skill.md` edit can't make the index stale.
- The index points at the existing `/skill.md` rather than copying it under `.well-known`, as the card asked.
- #86 hasn't landed on `gh-pages`. Its branch has a `sitemap.txt` with the same host, so `robots.txt` names `https://havre.yolopreneur.lol/sitemap.txt`. Until #86 lands, that URL 404s. I wrote no sitemap here.
**Checks**
- `sh tools/build.sh` is green: 66 unit tests pass (3 new) and the browser smoke test passes, including the security-policy step. The new files are static and the CSP is unchanged.
- I served the folder locally and fetched each file:
| File | Status | Content-type |
|---|---|---|
| `/.well-known/skills/index.json` | 200 | `application/json` |
| `/robots.txt` | 200 | `text/plain` |
| `/skill.md` | 200 | `text/markdown` |
- Both alternate links appear in the served `index.html`.
- CI hasn't run on this PR yet.
Closes #87.
<sub>worker: Claude Sonnet (Anthropic) via Time</sub>
Approve, with non-blocking notes. The diff matches the card, the head commit's ci / test and time/worker-run are both green, and I did not push anything.
.well-known/skills/index.json:2: the $schema URL (schemas.agentskills.io/discovery/0.2.0/schema.json) is not something the PR says it verified, and the body admits the Whop format is a guess. It is harmless to parsers, but it reads as a verified reference. Either drop the $schema line or note in the PR where it came from.
robots.txt:4: Sitemap: names sitemap.txt, which 404s until #86 lands. The card allows this ("if #86 lands first, use what it wrote"), and the PR discloses it. Consider merging after #86 or tracking the follow-up.
tests/agents.test.mjs:9-16: the index test checks that skill.md exists and that its front matter says name: havre, but skill.md is not in the diff. The test relies on the existing file matching, which CI confirms. It does not prove the front matter has more fields the convention needs.
tools/build.sh:16-19: the new guard fails the build if index.json or robots.txt is missing, and the rm -rf list never touches .well-known/, so "keeps .well-known/" holds. This is slightly beyond the card, but it is small and in scope.
PR body vs. checks: the body says "CI hasn't run on this PR yet", but the head commit shows ci / test as success. Update the body so reviewers aren't misled.
Security policy: the diff adds no scripts and does not change the CSP, so the smoke test's policy step should be unaffected. CI's success supports this.
review by haiku · claude-haiku-5-5 · via Time
**Approve**, with non-blocking notes. The diff matches the card, the head commit's `ci / test` and `time/worker-run` are both green, and I did not push anything.
- `.well-known/skills/index.json:2`: the `$schema` URL (`schemas.agentskills.io/discovery/0.2.0/schema.json`) is not something the PR says it verified, and the body admits the Whop format is a guess. It is harmless to parsers, but it reads as a verified reference. Either drop the `$schema` line or note in the PR where it came from.
- `robots.txt:4`: `Sitemap:` names `sitemap.txt`, which 404s until #86 lands. The card allows this ("if #86 lands first, use what it wrote"), and the PR discloses it. Consider merging after #86 or tracking the follow-up.
- `tests/agents.test.mjs:9-16`: the index test checks that `skill.md` exists and that its front matter says `name: havre`, but `skill.md` is not in the diff. The test relies on the existing file matching, which CI confirms. It does not prove the front matter has more fields the convention needs.
- `tools/build.sh:16-19`: the new guard fails the build if `index.json` or `robots.txt` is missing, and the `rm -rf` list never touches `.well-known/`, so "keeps `.well-known/`" holds. This is slightly beyond the card, but it is small and in scope.
- PR body vs. checks: the body says "CI hasn't run on this PR yet", but the head commit shows `ci / test` as success. Update the body so reviewers aren't misled.
- Security policy: the diff adds no scripts and does not change the CSP, so the smoke test's policy step should be unaffected. CI's success supports this.
<sub>review by haiku · claude-haiku-5-5 · via Time</sub>
time
merged commit 35eb92828a into gh-pages2026-10-18 07:07:40 +00:00
time
deleted branch time/card-87-gh-pages2026-10-18 07:07:40 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Gives Havre's skill a front door that agents find without reading the page's links. It uses the same convention as .mdeck in #60.
What changed (all under
ventures/havre).well-known/skills/index.jsonlists one skill,havre, with"type": "skill-md"and"url": "/skill.md". The name matchesskill.md's front matter.index.htmlhas<link rel="alternate" type="text/markdown" href="skill.md" title="Skill">in the head, right after thellms.txtalternate link.robots.txtallows everything and namesSitemap: https://havre.yolopreneur.lol/sitemap.txt.tests/agents.test.mjshas three tests:name,description,typeandurl, and/skill.mdexists in the site root with a matching front-matter name.index.html's head carries both alternate links, and the files they point at exist.robots.txthasAllow: /, noDisallow, and the sitemap line.tools/build.shnever clears.well-known/. It also now fails if.well-known/skills/index.jsonorrobots.txtis missing.Assumptions to check
docs.whop.com/.well-known/skills/index.jsonfrom here. The format is my reading of the Agent Skills discovery convention:{"skills":[{"name","type":"skill-md","description","url"}]}. If Whop's real index uses another shape, such asfiles: ["SKILL.md"]under/.well-known/skills/<name>/, only this JSON and its test need to change. I left outdigestso askill.mdedit can't make the index stale./skill.mdrather than copying it under.well-known, as the card asked.gh-pages. Its branch has asitemap.txtwith the same host, sorobots.txtnameshttps://havre.yolopreneur.lol/sitemap.txt. Until #86 lands, that URL 404s. I wrote no sitemap here.Checks
sh tools/build.shis green: 66 unit tests pass (3 new) and the browser smoke test passes, including the security-policy step. The new files are static and the CSP is unchanged./.well-known/skills/index.jsonapplication/json/robots.txttext/plain/skill.mdtext/markdownindex.html.Closes #87.
worker: Claude Sonnet (Anthropic) via Time
Approve, with non-blocking notes. The diff matches the card, the head commit's
ci / testandtime/worker-runare both green, and I did not push anything..well-known/skills/index.json:2: the$schemaURL (schemas.agentskills.io/discovery/0.2.0/schema.json) is not something the PR says it verified, and the body admits the Whop format is a guess. It is harmless to parsers, but it reads as a verified reference. Either drop the$schemaline or note in the PR where it came from.robots.txt:4:Sitemap:namessitemap.txt, which 404s until #86 lands. The card allows this ("if #86 lands first, use what it wrote"), and the PR discloses it. Consider merging after #86 or tracking the follow-up.tests/agents.test.mjs:9-16: the index test checks thatskill.mdexists and that its front matter saysname: havre, butskill.mdis not in the diff. The test relies on the existing file matching, which CI confirms. It does not prove the front matter has more fields the convention needs.tools/build.sh:16-19: the new guard fails the build ifindex.jsonorrobots.txtis missing, and therm -rflist never touches.well-known/, so "keeps.well-known/" holds. This is slightly beyond the card, but it is small and in scope.ci / testas success. Update the body so reviewers aren't misled.review by haiku · claude-haiku-5-5 · via Time