This platform is built on a few deliberate decisions. Each one exists for a reason, and the Build Bible explains that reasoning in full. Here is the short version.
Typed content
Every post you write has a schema. The schema defines what fields a post needs (title, slug, excerpt, date, status) and validates them at build time. If you write a post with a missing title or a malformed slug, the build fails and tells you why. Bad data never reaches your readers.
This matters because a schema is a contract between you and your own platform. It prevents drift, catches mistakes early, and means your archive stays consistent as it grows.
The draft gate
The function getPublished() in src/lib/content.ts is the safety layer. It filters every query so that only posts with status: "published" reach your live site. Drafts appear in dev mode so you can preview them, but they never ship to production.
This is the single most valuable safety feature in the Skeleton. The scariest publishing mistake (shipping an unfinished draft to the public) is engineered out by default.
Owned feeds
Your RSS feed is generated from your content and served from your domain. The audience pipe is yours. No platform controls your distribution, no algorithm decides your reach, and no terms-of-service change can cut the connection between you and your readers.
Four dependencies
The fewer things your platform depends on, the fewer things can break, be deprecated, or change their pricing. This platform runs on four: Astro (the framework), MDX (for rich content), RSS (for feeds), and sitemap (for search engines). That is it. No runtime. No database. No vendor lock-in.
How to learn more
The Build Bible covers every decision in depth. Start there.