sahin.io

Specs

Skills & Agents

Everything needed to rebuild this site from its data, written as Claude Code skills and agents.

13 page skills · 6 foundation skills · 10 quality and ship skills · 5 agents

Rebuild order

Start with the foundation, then build each page family, then check and ship.

  1. site-foundation
  2. site-chrome-navigation
  3. seo-head-and-schema
  4. theme-system
  5. i18n-locales
  6. new-react-page
  7. page-hub-home
  8. page-company
  9. page-taxonomy
  10. page-investors
  11. page-vc-portfolios
  12. page-editorial
  13. page-angel-guides-reports
  14. page-news
  15. page-founders
  16. page-status-sectors-markets
  17. page-performance
  18. page-research-tools
  19. page-skills-and-agents
  20. deploy-gate
  21. ui-before-after
  22. ship-to-production

Foundation

Skillsite-foundation

The base of sahin.io/angel-investments — the stack, the route manifest, the two render paths (static renderers vs React pages), the static build, and the order in which the page skills rebuild the site. Use first when rebuilding the site from scratch, before adding a new route family, or when orienting in how a URL becomes an HTML file.

Read spec
Skillsite-chrome-navigation

The chrome around every page on sahin.io/angel-investments — static header and mega menu, React NavBar, SiteSidebar, MobileSectionNav, footer, breadcrumbs — and the YAML that drives them (navigation.yaml, chrome.yaml, page-crumbs.yaml). Use when building, rebuilding or changing the menu, a menu page's label/title/description, the sidebar, the mobile tabs, the footer or breadcrumbs.

Read spec
Skillseo-head-and-schema

How every page on sahin.io/angel-investments gets its <head> — title (fitPageTitle, 60-char budget, site-titles.yaml), meta description, absolute canonical, robots/noindex, Open Graph and Twitter tags, the single JSON-LD @graph from server/publicSchema.ts — plus sitemap.xml, llms.txt / llms-full.txt and robots.txt. Use when building or changing any page's title, description, canonical, indexing, structured data, sitemap entry or llms output.

Read spec
Skilltheme-system

The investor theme system on sahin.io/angel-investments — theme colors and ids in InvestorThemeContext, the --investor-* CSS variables (themeVars.ts, theme bootstrap script, themed public-page CSS), full-page hub views in client/src/components/views/*View.tsx, theme copy in content/themes/*.yaml, the gallery in ThemeSwitcher, and the no-VC-firm-logo rule. Use when adding, changing or removing a theme or hub view, touching theme colors, or styling chrome that must follow the active theme.

Read spec
Skilli18n-locales

The language setup of sahin.io/angel-investments — English-only public pages, the i18next client registry in client/src/i18n, the dormant locale JSON files and LanguageSwitcher, and why visible copy lives in content/ YAML rather than locale files. Use before adding a language, translating anything, touching client/src/i18n or LanguageSwitcher, or when someone asks why the site is English only.

Read spec
Skillnew-react-page

The generic, file-by-file recipe for adding or rebuilding a React page on sahin.io/angel-investments — props builder, *Page.tsx, *Types.ts, CSS, the PublicReactPage union, PublicReactPageView, components.client/server, route registration (menu page, SINGLE_PAGES, FAMILIES or reactPageForRoute), YAML copy, titles, crumbs and tests. Use whenever a new page or slug family is added, an existing route is moved to React, or a page skill says "follow new-react-page".

Read spec

Pages

Skillpage-hub-home

The portfolio home page (the hub) and the /explore site directory on sahin.io/angel-investments. Use when building, rebuilding or changing the hub's interactive React view, its crawlable no-JS index, its head/JSON-LD, or the /explore directory.

2 route patternsRead spec
Skillpage-company

The per-company pages on sahin.io/angel-investments — the company profile (/{company}) and its investors page (/{company}/angel-investors). Use when building, rebuilding or changing either page, its React view, its static body, titles, descriptions or schema.

2 route patternsRead spec
Skillpage-taxonomy

The Category and Sub-Category collection pages and their investor directories on sahin.io/angel-investments (/{category}, /{category}/{sub}, and each one's /angel-investors directory). Use when building, rebuilding or changing these pages, their editorial Markdown, their noindex rules, titles or schema, or when a new Category or Sub-Category appears.

4 route patternsRead spec
Skillpage-investors

The investor pages on sahin.io/angel-investments — the /angel-investors index, the per-firm and per-angel pages (/angel-investors/{investor}), the Co-Investor Network, the all-time angel rankings, and the sourced /lists pages. Use when building, rebuilding or changing any of them, their eligibility thresholds, wording, titles or schema.

6 route patternsRead spec
Skillpage-vc-portfolios

The five "portfolio in a firm-inspired style" pages (a16z, Sequoia, Accel, Founders Fund, YC) on sahin.io/angel-investments, which show the whole public portfolio as a design homage. Use when building, rebuilding or changing any of them, their shared company list, filters, featured carousel or homage line.

5 route patternsRead spec
Skillpage-editorial

The owner-reviewed editorial pages on sahin.io/angel-investments (Guides index and guides, Thesis, About, FAQ, Glossary, Pitch, Lessons) and the editorial status gate (Markdown drafts publish only with status approved; preview with pnpm content:preview). Use when writing, approving, building, rebuilding or changing any of these pages or the editorial pipeline.

8 route patternsRead spec
Skillpage-angel-guides-reports

The long-form angel investing reports and guides on sahin.io/angel-investments (State of Angel Investing 2026 and 2025, Angel Investor Guide, Angel Investor vs VC, Angel Investing Returns, Angel Investor Networks, Angel Investing Tax Benefits, Pre-Seed vs Seed). Use when building, rebuilding or changing any of these React article pages, their YAML copy or their computed portfolio figures.

8 route patternsRead spec
Skillpage-news

The Portfolio News pages on sahin.io/angel-investments - the /news feed, the reviewed source-linked news registry (content/news/portfolio-news.yaml) and the recovered per-announcement pages with their search-history index allowlist (data/news-index-allowlist.json). Use when adding a news item, rebuilding the news pages, changing news rewording, or deciding whether a /news/{slug} page is indexed.

2 route patternsRead spec
Skillpage-founders

The founder pages on sahin.io/angel-investments - the Founder Directory, the per-founder profiles (/founder/{slug}) with their sourced-fact indexing rule, the Founder Network graph and the Founder Tracker. Use when building, rebuilding or changing any founder page, founder slugs, the founder registry (content/founders/public-founders.yaml) or founder indexing.

4 route patternsRead spec
Skillpage-status-sectors-markets

Spec for the Status guide, the Sectors pages, the Sector Heatmap and the market profiles on sahin.io/angel-investments (/status, /status/{slug}, /sectors, /sectors/{slug}, /sector-heatmap, /market/{slug}). Use when building, rebuilding or changing any of these pages, their slugs, their copy or the data they group by.

6 route patternsRead spec
Skillpage-performance

Spec for the stage and exit pages on sahin.io/angel-investments (/stages, /exit-readiness, /exit-scenarios, /investment-flow, /secondary-market), including the single general portfolio return figure rule. Use when building, rebuilding or changing any of these pages, their scoring models, their copy or the research data they read.

5 route patternsRead spec
Skillpage-research-tools

Spec for the interactive research and visualization pages on sahin.io/angel-investments (/research, /company-compare, /competitor-radar, /network-graph, /market-timing, /landscape, /timeline, /map). Use when building, rebuilding or changing any of these tools, their charts, their copy or the research data they read.

8 route patternsRead spec
Skillpage-skills-and-agents

Spec for the Skills & Agents pages (https://sahin.io/angel-investments/skills-and-agents and /skills-and-agents/{name}), which publish this repo's Claude Code skills and agents from a redacted generated catalog. Use when building, rebuilding or changing those pages, when adding or renaming a skill or agent, or when the catalog test fails.

2 route patternsRead spec

Quality & Ship

Skilldeploy-gate

Run the full local deploy gate — type check, all unit tests, static build, SEO validation, plus the CI-only bundle/logo/worker checks — after EVERY code, data, style, or config change, before saying the change is done, showing before/after screenshots, or asking to ship. Use it whenever you finish editing anything under client/, server/, shared/, scripts/, cloudflare/, data/, content/, or package/config files, even for a one-line change.

Read spec
Skillui-before-after

Capture and show the owner side-by-side BEFORE/AFTER screenshots of every UI change (desktop + mobile). Use after ANY change that affects what a page looks like — static pages from server/seoRouteManifest.ts, server/publicChrome.ts, CSS, React pages/components, copy, layout, logos — before reporting the work as done or asking to ship.

Read spec
Skillship-to-production

Commit, push to main, wait for the Cloudflare deploy, and PROVE the change is live on sahin.io (deploy SHA + change marker + production screenshot). Use whenever the owner approves a change ("ship it", "deploy", "looks good", "amazing", "yes"), and as the last step of every finished change while auto-ship mode is on (see CLAUDE.md). Never report a change as done before this has confirmed it in production.

Read spec
Skillpage-content-yaml

Every visible word on sahin.io/angel-investments lives in YAML or Markdown under content/, never in page code (owner, 2026-10-11 "no html code, yaml + markdown only"). Use before writing or changing any visible copy (headings, labels, intros, FAQs, buttons, theme text), when adding a page, and when moving an existing page's copy out of code.

Read spec
Skillportfolio-counts-single-source

The one rule for every company count and status count on sahin.io/angel-investments ("234 companies", "212 active", public/acquired/failed, exited). Use before writing, changing, or displaying any such number on a page, in a theme view, a constant, a data summary, a validator, llms.txt, or the Airtable sync; whenever two numbers on the site disagree; and whenever the owner says counts, totals, or statuses do not match.

Read spec
Skillprivate-data-boundary

The owner's private investment data and where it may never go. Invested amounts, invest dates, realized/unrealized/current value, [redacted]/TVPI/DPI, per-company or per-deal [redacted] (one general portfolio [redacted] is allowed, from data/portfolio-performance.yaml), carry, fund or entity names, share class, [redacted]-or-cap, round terms, and links to his AngelList portfolio must never be in a committed file, a build, a deploy target or another repo. The one exception is angel-investments-performance, which is always kept. Use before any data, Airtable, AngelList, sync, import, deploy, cleanup or cross-repo work, and whenever a file or page might carry deal data.

Read spec
Skillproduction-deployment

What production is for sahin.io/angel-investments (Cloudflare Pages behind the sahin.io proxy), what a push to main runs, how public pages are routed and rendered, and how to run the static build locally. Use before touching the deploy workflow, the worker, routing, redirects or static generation, or when asked whether something is live.

Read spec
Skillproject-architecture

How the angel-investments codebase is laid out — tech stack, data files, page inventory, navigation, theming, view modes, file naming, tests, and how to add a company, page, chart, theme or translation. Use when orienting in the repo or before adding or moving code, data files, pages, themes or translations.

Read spec
Skillpublic-url-conventions

The URL and slug rules for every public page on sahin.io/angel-investments. Use before adding, renaming, moving, or linking any public route or slug (new page families, companies, Categories, Sub-Categories, investor directories, lists, news, guides), whenever a portfolio/Airtable sync introduces a new Category or Sub-Category, and whenever someone asks to change, prettify, shorten, or redirect a URL.

Read spec
Skillstanding-rules

The owner's standing rules for sahin.io/angel-investments and how to record a new one. Use whenever the owner says "always", "never", "this is a rule", "from now on" or "every time", before editing CLAUDE.md, and when unsure whether an owner preference applies.

Read spec

Agents

Agentpage-builder

Builds or rebuilds ONE page family of sahin.io/angel-investments (for example page-news or page-company) by following its page skill exactly, then runs the deploy gate. Use when a page family must be created from scratch, restored, or brought back in line with its spec, or when site-builder hands over one family.

Read spec
Agentpage-spec-auditor

Read-only check that every route in the public route manifest (server/seoRouteManifest.ts) belongs to exactly one page skill, and that each page skill still matches the code it describes. Use before a site rebuild, after adding or moving a page family, and when server/page-skills-coverage.test.ts fails.

Read spec
Agentprivate-data-auditor

Read-only sweep for the owner's private investment data (invested amounts, values, [redacted]/[redacted], carry, fund/entity names, deal terms) and links to his AngelList portfolio, across this repo, the build output, the live site, sibling repos and Cloudflare Pages projects. Use before shipping data or sync changes, after any cleanup, and whenever the owner asks whether private data is exposed anywhere.

Read spec
Agentrules-keeper

Records a new standing rule from the owner ("always", "never", "this is a rule", "from now on") in the skills, agents, tests and hooks that enforce it, and keeps CLAUDE.md thin. Use whenever the owner states a rule, or to check that existing rules are still recorded and enforced.

Read spec
Agentsite-builder

Orchestrates a full rebuild of sahin.io/angel-investments from its data files, working through the skills in rebuild order and handing each page family to the page-builder agent. Use when the whole site (or several page families) must be rebuilt, restored or re-verified against the specs.

Read spec