page-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.
- Source file
.claude/skills/page-angel-guides-reports/SKILL.md- Routes covered
/state-of-angel-investing-2026/state-of-angel-investing-2025/angel-investor-guide/angel-investor-vs-vc/angel-investing-returns/angel-investor-networks/angel-investing-tax-benefits/pre-seed-vs-seed
Angel guides and reports
Routes
| URL (https://sahin.io/angel-investments/...) | Manifest kind | React kind | Props builder | Copy |
|---|---|---|---|---|
| state-of-angel-investing-2026 | legacyFeature (menu) |
stateOfAngel |
stateOfAngel.ts |
state-of-angel-investing-2026.yaml |
| state-of-angel-investing-2025 | reactPage |
stateOfAngel2025 |
stateOfAngel2025.ts |
state-of-angel-investing-2025.yaml |
| angel-investor-guide | legacyFeature (menu) |
angelGuide |
angelGuide.ts |
angel-investor-guide.yaml |
| angel-investor-vs-vc | legacyFeature (menu) |
angelVsVc |
angelVsVc.ts |
angel-investor-vs-vc.yaml |
| angel-investing-returns | reactPage |
angelReturns |
angelReturns.ts |
angel-returns.yaml |
| angel-investor-networks | reactPage |
angelNetworks |
angelNetworks.ts |
angel-networks.yaml |
| angel-investing-tax-benefits | reactPage |
angelTax |
angelTax.ts |
angel-tax.yaml |
| pre-seed-vs-seed | reactPage |
preSeedVsSeed |
preSeedVsSeed.ts |
pre-seed-vs-seed.yaml |
- 8 routes, all
index. Builders live inserver/publicPages/, copy incontent/pages/. - Menu pages (2026 report, guide, vs VC) come from
content/shared/navigation.yaml→LEGACY_MENU_PAGES(shared/publicNavigation.ts) and render the static shell withrenderLegacyFeaturePage(); they map to React inreactPageForRoute()(server/publicReactPages.ts). - The other five are
SINGLE_PAGESentries inserver/reactPageRoutes.ts, static shell byrenderReactShellPage(). - Render path: React body for all eight (
scripts/generate-static.ts). - Not to be confused with the Markdown guides at https://sahin.io/angel-investments/guides/{slug}
(
page-editorial).content/guides/angel-investor-vs-vc.mdandpre-seed-vs-seed.mdare drafts; if approved they would get/guides/...paths, not these.
Files
- Components:
client/src/publicPages/{StateOfAngel,StateOfAngel2025,AngelGuide,AngelVsVc,AngelReturns,AngelNetworks,AngelTax,PreSeedVsSeed}Page.tsxwith matching*Types.ts; registered intypes.ts,components.client.ts,components.server.ts. - CSS:
client/src/publicPages/styles/{stateOfAngel,stateOfAngel2025,angelGuide,angelVsVc,angelReturns,angelNetworks,angelTax,preSeedVsSeed}.css, imported fromclient/src/index.css. - Shared guide block model:
server/publicPages/guideContent.ts(YAML shape of a long-form article and conversion to typed blocks; used by returns, tax, vs VC, networks, pre-seed vs seed). - The 2025 report reuses the 2026 report's block model and renderer.
- Data:
ctx.companies, sourced company values viasourced()inserver/publicReactPages.ts, public status, year founded from the enriched research records. - Meta descriptions for menu pages:
content/pages/recovery-surfaces.yamland the menu entry (RECOVERY_SURFACE_BY_PATH,MENU_DESCRIPTION_FEATURESinserver/seoRouteManifest.ts).
Sections on the page
- 2026 report: byline, executive summary, table of contents, ten numbered sections with stat tiles and tables; the portfolio section is computed from the current portfolio.
- 2025 report: key finding, headline stats, executive summary, cohort table (by year founded), sector analysis, largest companies, strategy insights, methodology, about the author, resources.
- Guide: sections, portfolio numbers, FAQ list (
faqs.heading,faqs.items). - Returns / tax / vs VC / networks / pre-seed vs seed: hero, typed article blocks (paragraphs, tables, callouts, lists), related guides limited to routes that exist.
SEO
- Title and description:
metain each YAML (<x>PageMeta) forSINGLE_PAGES; menu pages use the navigation title and the menu or recovery-surface description. - Canonical
https://sahin.io/angel-investments/<path>; JSON-LD viabuildPageGraph()(CollectionPage plus BreadcrumbList; menu pages add an ItemList of context links). - All indexable: sitemap, llms files, IndexNow. Query targeting:
server/keyword-[redacted].test.ts.
Rules
- Every word in YAML; code only computes numbers and fills
{placeholders}(page-content-yaml). - Industry figures are authored copy; portfolio figures are computed from the portfolio
(
portfolio-counts-single-source). Company values are cited per company, never summed. - Never state when, how much or on what terms Sahin invested (
private-data-boundary). The single portfolio return figure, if shown, only fromdata/portfolio-performance.yaml, never per company. - Links resolve only to routes in the current manifest.
Tests
server/content-in-yaml.test.ts, server/keyword-[redacted].test.ts,
server/public-link-graph.test.ts, server/public-company-value.test.ts,
server/public-content-policy.test.ts, server/seo-route-manifest.test.ts.
Rebuild from scratch
- Write the page YAML in
content/pages/(meta, hero, sections or blocks, FAQ, related links); runnode scripts/sync-site-copy-module.mjs. - Write the props builder in
server/publicPages/withloadPageContent(CONTENT_FILE, SHAPE); reuseguideContent.tsfor block articles; compute portfolio numbers fromctx. - Add types, component, registry entries and CSS (
new-react-page,theme-system). - Wire it:
SINGLE_PAGESinserver/reactPageRoutes.ts, or for a menu page acontent/shared/navigation.yamlentry plus a branch inreactPageForRoute(). deploy-gate, thenui-before-after, thenship-to-production.