AI agent index: llms.txt
Source for ogsfrompoly.com — the public-facing landing page for poly-track, a Polymarket skilled-trader detection project grounded in the 2026 papers by Gomez-Cram et al. and Akey et al.
The site publishes methodology, aggregate results, and open-book "financial statements" (strategy track record + project P&L) at a regular weekly + monthly cadence. Distribution is RSS plus per-page raw markdown (/<slug>.md) for LLM agents. No email capture, no signup, no comments.
Disclosure policy (load-bearing): methodology + aggregate results only. Wallet references appear only as truncated / hashed IDs (e.g.
wallet_a3f…). Live alpha is never published. See/methodologyon the deployed site anddocs/for the authoritative version.
- PRD: #1 — single source of truth for scope, user stories, validation strategy
- Implementation plan:
plans/ogsfrompoly-lp.md— phased vertical slices - Issues: #2–#10 (v1) · #11–#12 (v2, deferred)
- Domain:
ogsfrompoly.com(registered at Cloudflare Registrar; zone active)
pnpm install
pnpm cf-typegen
pnpm dev # http://localhost:3000| Layer | Technology |
|---|---|
| Framework | Astro 6 (output: "server") |
| Adapter | @astrojs/cloudflare |
| Runtime | Cloudflare Workers (nodejs_compat) |
| Styling | Tailwind CSS v4 (@tailwindcss/vite), no JS config |
| Content | Astro content collections (markdown in src/content/) |
| Validation | Zod (frontmatter + endpoint boundaries) |
| Language | TypeScript strict (@/* → src/*) |
| Linter | Biome 2 |
| Testing | Vitest |
| Dead-code | knip |
| Analytics | Cloudflare Web Analytics (cookie-less) |
| Package manager | pnpm 10 |
No CMS, no submodule, no runtime fetch from upstream — content lives as markdown in this repo.
src/
├── pages/ # File-based routes (.astro, .md, .ts for endpoints)
├── content/ # Astro content collections (statement, future: article)
├── layouts/ # Shared HTML shells
├── components/ # Reusable Astro components
├── styles/globals.css # Tailwind v4 entry (@import "tailwindcss";)
└── env.d.ts # App.Locals typed against Cloudflare Env
plans/ # Phased implementation plans (carved from PRDs)
docs/ # Authoritative design docs (disclosure policy, schema)
Path alias @/* → src/*.
Three deep modules carry the system. Each has a small public interface and is tested at its boundary.
| Module | Interface | Hidden implementation |
|---|---|---|
| Content Schema | Zod-validated frontmatter for statement (and future article) collections |
The cross-repo contract. Producer-side validation, schema version marker, breaking-change discipline |
| Dual-Format Serving | Any content entry resolves at both /<collection>/<slug> (HTML) and /<collection>/<slug>.md (text/markdown) |
Single helper + catch-all route; no per-route boilerplate when collections grow |
| Feed Generators | rss.xml, llms.txt, sitemap.xml derived from content collections |
Format renderers hidden; snapshot-tested for determinism |
See .claude/rules/deep-modules.md and the architectural decisions in plans/ogsfrompoly-lp.md.
Voice and aesthetic anchor: hermes-agent.nousresearch.com. Bold display type, terminal/install-snippet moments, opinionated function-forward copy. The brand name ogsfrompoly is retained as owned cheekiness — a credibility signal for the prediction-market-native audience.
Before declaring any change done, run all four:
pnpm types # astro check + tsc --noEmit
pnpm test # vitest
pnpm lint # biome
pnpm knip # no unused files / deps / exportsThe same four are required by CI on every PR (see issue #5).
| Script | Purpose |
|---|---|
pnpm dev |
Dev server on http://localhost:3000 |
pnpm build |
Production build to ./dist |
pnpm preview |
Preview the production build locally |
pnpm deploy |
Build + wrangler deploy |
pnpm cf-typegen |
Regenerate Env types from wrangler.jsonc |
pnpm test / :watch / :coverage |
Vitest |
pnpm types |
astro check + tsc --noEmit |
pnpm lint / :fix |
Biome check / auto-fix |
pnpm knip |
Unused files / deps / exports |
pnpm deps / :update |
Check / apply dependency updates via taze |
pnpm release |
semantic-release (CI only) |
- Use
wrangler.jsonc(not.toml). custom_domain: trueon the route (never routes-with-zone_name) — see.claude/rules/cloudflare-deployment.md.- SSL/TLS mode must be Full or Full (strict), never Flexible.
- HTTP → HTTPS via the "Always Use HTTPS" toggle, never the "Redirect from HTTP to HTTPS" rule (causes self-redirect loops on Worker custom domains).
- Access bindings via
import { env } from "cloudflare:workers"—Astro.locals.runtimewas removed in Astro v6. - Per-env secrets live in
.dev.vars/.dev.vars.staging/.dev.vars.productionlocally (never committed; wrangler loads.dev.vars.<env>ahead of.dev.varswhenCLOUDFLARE_ENV=<env>is set) and as Cloudflare secrets in production.
AGENTS.md(symlinked asCLAUDE.md) — project-wide agent guide.claude/rules/— topic rules that activate based on the files being touched.claude/agents/— design-doc writer / implementer / MVP enforcer
ISC — see LICENSE.