Archilyzer · Source

archilyzer

Archilyzer
git clone https://archilyzer.pages.dev/source/archilyzer.git
Log | Files | Refs | README | LICENSE

commit 6a353b6b41af14c46b22ca11cf152c7f755efd6f
parent ede6a3a5c7c021b8b71113a507f8c3683a873c99
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Wed, 30 Sep 2026 21:01:00 -0400

docs: the homepage's Ten-minute setup runs `pnpm --silent -C "$PWD" archilyzer mcp`

Release 16 DX made the homepage's AI and MCP doc the one place the
research setup is told, after W2 forked. W2's command form now applies
there too, as it does in its copies (README §1/§4, mcp/README, AGENTS.md):
the block's registration line, a note on why --silent stays, and the
other-clients note gives the mcp.json args in the same form.

docs.spec pins the new line, that `archilyzer mcp` is on the page and
`exec tsx src/index.ts` is not, and that the doc fits a 390 px phone.
The drift table and FACTS name the form and every copy. A homepage
[Unreleased] bullet under DX's.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Diffstat:
Mhomepage/CHANGELOG.md | 1+
Mhomepage/content/README.md | 2+-
Mhomepage/content/docs/ai-and-mcp.md | 8++++++--
Mhomepage/e2e/docs.spec.ts | 22+++++++++++++++++++---
Mplans/FACTS.md | 9++++++++-
5 files changed, 35 insertions(+), 7 deletions(-)

diff --git a/homepage/CHANGELOG.md b/homepage/CHANGELOG.md @@ -2,6 +2,7 @@ ## [Unreleased] - **The AI and MCP doc has a Ten-minute setup.** Right after the MCP server's introduction, one block runs Claude Code against a published archive, the Jeralyzer as the example: clone the source (or unpack the tarball on Downloads), `pnpm install`, `claude mcp add archilyzer`, start `claude` and try `/ask`; then what it needs, why the server must be registered as `archilyzer` (the shipped `/ask` and `/sweep` call `mcp__archilyzer__…`), the two optional editor lines for `fetch_clip`, `TRANSCRIPT_HUB_URL`, where the `mcp.json` form for other clients is, and WSL2 on Windows. "What it can do" is a heading of its own after it. Every archive's **Use with AI** link now lands on this page. +- **The Ten-minute setup starts the server with the source's own command, `pnpm --silent -C "$PWD" archilyzer mcp`**, as the README and the MCP server's README do. `--silent` keeps pnpm's own lines off the output the client reads the server's replies on, and a note says so. The note on other clients gives the `mcp.json` entry's arguments in the same form. - **`/source/` links the source's history.** A History block — how many commits (past 10,000, "the latest 10,000 of N"), the newest one (linking to its page), and links to the Log, the Refs and the Atom feed — shows when the build published the history pages (`/source/git/`, rendered by stagit); without them there is no History block. The history pages open on the homepage's ground (the reader's stored choice, else Dark; without JavaScript, the system's), start with one line back to `/source/`, and their Files page is an index into the raw tree. The e2e shows the page with and without a history from a fixture publish (`E2E_SOURCE_PUBLIC_DIR`, never read by a production build), and walks the real pages when the checkout has published them. - **The growth chart draws its smallest instances together as Other.** Two or more instances that each hold under 5% of the chart's total are one band, **Other**, on top of the stack, in a near-neutral grey of its own (`--chart-other`: 7.36:1 on the Light ground, 3.22:1 on the Dark one, and apart from every instance colour for colour-blind readers); an instance at exactly 5% keeps its band, and a single one under 5% is not grouped. The other instances keep their bands and their colours. The legend lists them and Other; the caption says what Other is and the chart's description names the instances in it; every month's hover title and the Numbers by year table still name every instance. At this release's numbers Hasanalyzer, Rekietalyzer and Jasolyzer are Other. The instance cards and `/stats` are unchanged. The e2e fixture's fifth site transcribes 4 a day rather than 5, so two of its six sites are grouped. - **An unlisted site is not on the homepage.** A site whose settings turn off **List on the Archilyzer homepage and hub** (`listed: false`) has no Official Instances card, chart series, `/stats` entry or recent item, is not in `channel-sites.json` or `stats/`, and the channels only it carries count in none of the numbers, the headline totals included. The summary's version is 6. The e2e fixture has a seventh, unlisted site that no page names. diff --git a/homepage/content/README.md b/homepage/content/README.md @@ -36,7 +36,7 @@ its public counterpart needs the same change. | `docs/operate.md` | `README.md`, `SCHEDULED_SYNC.md` | editor routes, scheduler settings | | `docs/deploy-cloudflare.md` | `PUBLISH.md` (Cloudflare, R2, cost-abuse) | the 25 MB Pages limit, R2 options | | `docs/deploy-docker.md` | `PUBLISH.md` (building every site in containers) | phase structure, settings names | -| `docs/ai-and-mcp.md` | `mcp/README.md`, `README.md` §1 and §4 | tool names, `corpus.json` shape, the Ten-minute setup's commands (README §1/§4 and mcp/README's "Add to Claude Code" are copies of them: change all three together) | +| `docs/ai-and-mcp.md` | `mcp/README.md`, `README.md` §1 and §4 | tool names, `corpus.json` shape, the Ten-minute setup's commands, `pnpm --silent -C … archilyzer mcp` (README §1/§4, mcp/README's "Add to Claude Code" and its `mcp.json`, and AGENTS.md's no-corpus block are copies of them: change them together) | | `docs/faq.md` | — (written for this site) | claims about cost and hardware | ## House rules for these files diff --git a/homepage/content/docs/ai-and-mcp.md b/homepage/content/docs/ai-and-mcp.md @@ -42,7 +42,7 @@ git clone https://archilyzer.pages.dev/source/archilyzer.git archilyzer # or t cd archilyzer && pnpm install claude mcp add archilyzer \ --env TRANSCRIPT_SITE_URL=https://jeralyzer.pages.dev \ - -- pnpm -C "$PWD" --filter yt-dlp-transcript-mcp exec tsx src/index.ts + -- pnpm --silent -C "$PWD" archilyzer mcp claude # then: /ask what has he said about … ``` @@ -54,13 +54,17 @@ claude # then: /ask what has he said about … - **Register it as `archilyzer`.** The shipped `/ask` and `/sweep` commands call `mcp__archilyzer__ask_plan` / `mcp__archilyzer__sweep_plan`, and that tool name embeds the server name as you registered it. +- **Keep `--silent`.** Claude Code reads the server's replies on its standard + output, and without it some pnpm versions print a line of their own there + first. `archilyzer mcp` is the source's own command for starting the server. - **Clips:** two optional `--env` lines, `ARCHILYZER_EDITOR_URL` and `WORKER_TOKEN` (the editor's own), let `fetch_clip` ask a local editor for clip media; leave them out for research alone. - **One archive or several:** `TRANSCRIPT_SITE_URL` reads one archive; `TRANSCRIPT_HUB_URL`, given a hub's URL, federates every archive on the hub. - **Another client** (Claude Desktop, Cursor): the same server as an - `mcp.json` entry is in + `mcp.json` entry, `"command": "pnpm"` with + `"args": ["--silent", "-C", "/ABS/PATH/TO/archilyzer", "archilyzer", "mcp"]`, is in [mcp/README.md](https://archilyzer.pages.dev/source/tree/mcp/README.md). - **On Windows,** run all of this inside WSL2, Claude Code included: see “Claude Code on Windows” in the diff --git a/homepage/e2e/docs.spec.ts b/homepage/e2e/docs.spec.ts @@ -76,10 +76,13 @@ test("the AI and MCP doc's Ten-minute setup registers archilyzer and links the s expect(lines[1]).toBe("cd archilyzer && pnpm install"); expect(lines[2]).toBe("claude mcp add archilyzer \\"); expect(lines[3]).toBe(" --env TRANSCRIPT_SITE_URL=https://jeralyzer.pages.dev \\"); - expect(lines[4]).toBe( - ' -- pnpm -C "$PWD" --filter yt-dlp-transcript-mcp exec tsx src/index.ts', - ); + // Release 13 slice W2: the server starts through the source's own command, + // with --silent so pnpm prints nothing on the protocol's stdout first. + expect(lines[4]).toBe(' -- pnpm --silent -C "$PWD" archilyzer mcp'); expect(lines[5]).toMatch(/^claude\s+# then:\s+\/ask /); + const text = await page.locator("main").innerText(); + expect(text).toContain("archilyzer mcp"); + expect(text).not.toContain("exec tsx src/index.ts"); // The source and the tarball, linked as the other docs link them: in place. const source = page.locator('.doc-measure a[href="/source/"]', { hasText: "git mirror" }); @@ -95,6 +98,19 @@ test("the AI and MCP doc's Ten-minute setup registers archilyzer and links the s ).toContainText("mcp__archilyzer__ask_plan / mcp__archilyzer__sweep_plan"); }); +// The setup's notes carry inline code (the mcp.json args); none of it may +// widen the page on a phone. The commands block scrolls in its own box. +test("the AI and MCP doc fits a 390 px phone", async ({ page }) => { + await page.setViewportSize({ width: 390, height: 800 }); + await page.goto("/docs/ai-and-mcp/"); + await expect(page.locator(".doc-measure h3#ten-minute-setup")).toBeVisible(); + const [scroll, client] = await page.evaluate(() => [ + document.documentElement.scrollWidth, + document.documentElement.clientWidth, + ]); + expect(scroll).toBeLessThanOrEqual(client); +}); + test("an unknown doc slug is a 404, not a crash", async ({ page }) => { const res = await page.request.get("/docs/not-a-real-page/"); expect(res.status()).toBe(404); diff --git a/plans/FACTS.md b/plans/FACTS.md @@ -7996,10 +7996,17 @@ source mirror (homepage)". Anchors are at the branch. TRANSCRIPT_SITE_URL=…` → `claude`, `/ask`. **README §4's quickstart carries that whole sequence, in the same order** (its command adds the two optional editor lines). **README §1 and mcp/README's "Add to Claude Code" and `mcp.json` examples share only the registration**, `claude - mcp add archilyzer … -- pnpm -C <checkout> --filter yt-dlp-transcript-mcp exec tsx src/index.ts`: + mcp add archilyzer … -- pnpm --silent -C <checkout> archilyzer mcp`: README §1 with `"$PWD"` from the repo's root, mcp/README with the placeholder `/ABS/PATH/TO/archilyzer`. Nothing shares text between `homepage/content` and the READMEs (`homepage/content/README.md`'s drift table names them). + - *Amended 2026-09-30 (release 13 slice W2, brought to main):* every copy — the doc's block and + its `mcp.json` note, README §1/§4, mcp/README's "Add to Claude Code" and `mcp.json` (`"args": + ["--silent", "-C", <checkout>, "archilyzer", "mcp"]`), AGENTS.md's no-corpus block — runs the + server as `pnpm --silent -C <checkout> archilyzer mcp` (was `pnpm -C <checkout> --filter + yt-dlp-transcript-mcp exec tsx src/index.ts`; why `--silent`: "The CLI's last subcommands" above). + `homepage/e2e/docs.spec.ts` pins the doc's line and that `exec tsx src/index.ts` is not on the + page. - **A site has no `/use-with-ai` page** (export and hub). `AI_DOC_URL` (`common/lib/project.ts`, `${PROJECT_URL}/docs/ai-and-mcp/`) is the target of the header's nav entry (a plain `<a>`: the header's and `MobileMenu`'s links take `external: true`), the footer's link and Ask AI's link,