# Sailscastshq Boring Stack Inertia

> Inertia.js for The Boring JavaScript Stack

- Skill: `tomevault-io/sailscastshq-boring-stack-inertia` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/sailscastshq-boring-stack-inertia`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/sailscastshq-boring-stack-inertia/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/sailscastshq-boring-stack-inertia

---


# Inertia.js for The Boring JavaScript Stack

Inertia.js is the bridge between Sails.js and your frontend framework (React, Vue, or Svelte) in The Boring JavaScript Stack. It lets you build modern single-page apps using classic server-side routing and controllers -- no API required. The `inertia-sails` package implements the full Inertia.js v2 protocol as a Sails hook.

## When to Use

Use this skill when:

- Rendering pages with Inertia (`responseType: 'inertia'`)
- Setting page-specific meta tags, titles, and OG images with locals (`sails.inertia.local()`, `return { locals }`)
- Handling form submissions and redirects (`responseType: 'redirect'` vs `'inertiaRedirect'`)
- Sharing data globally across all pages (`sails.inertia.share()`, `once()`, `refreshOnce()`)
- Working with flash messages (`sails.inertia.flash()`)
- Handling validation errors (`responseType: 'badRequest'`, `form.errors`)
- Using advanced props: deferred, optional, always, merge, scroll
- Building frontend components with `useForm`, `usePage`, `Link`, `Head`, `router`
- Setting up `createInertiaApp` and persistent layouts
- Handling server errors with the Inertia error modal
- Working with partial reloads, history encryption, or asset versioning

## Rules

Read individual rule files for detailed explanations and code examples:

- [rules/getting-started.md](rules/getting-started.md) - How Inertia works, the protocol, client and server setup
- [rules/rendering-pages.md](rules/rendering-pages.md) - Server-side rendering, page objects, the `inertia` response type
- [rules/locals.md](rules/locals.md) - Locals for the root EJS template -- SEO meta tags, Open Graph, page titles, structured data
- [rules/actions-and-exits.md](rules/actions-and-exits.md) - Action2 patterns, exit response types, the four action patterns
- [rules/redirects-and-responses.md](rules/redirects-and-responses.md) - redirect vs inertiaRedirect, when to use each, location visits
- [rules/shared-data-and-flash.md](rules/shared-data-and-flash.md) - share(), once(), refreshOnce(), flushShared(), flash()
- [rules/forms-and-validation.md](rules/forms-and-validation.md) - useForm, form submission, validation errors, badRequest flow
- [rules/props-system.md](rules/props-system.md) - AlwaysProp, DeferProp, MergeProp, OnceProp, OptionalProp, ScrollProp
- [rules/client-side-components.md](rules/client-side-components.md) - Link, router, usePage, Head, layouts, createInertiaApp
- [rules/error-handling.md](rules/error-handling.md) - Server errors, the dev error modal, production error handling
- [rules/advanced-features.md](rules/advanced-features.md) - History encryption, partial reloads, asset versioning, CSRF, SSR

### Framework-Specific APIs

- [rules/react.md](rules/react.md) - React: useForm, usePage, Link, Head, Deferred, WhenVisible, usePoll, layouts
- [rules/vue.md](rules/vue.md) - Vue: useForm, usePage, Link, Head, Deferred, WhenVisible, usePoll, defineOptions layouts
- [rules/svelte.md](rules/svelte.md) - Svelte: useForm (stores), page store, Link, inertia action, svelte:head, layouts

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/sailscastshq) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-11 -->

