All skills

Shipwright build system for The Boring JavaScript Stack — Rsbuild-based asset pipeline replacing Grunt, with framework plugins for React/Vue/Svelte, Tailwind CSS, SSR support, and dev server with HMR. Use this skill when configuring builds, managing assets, or debugging the development server.

Use this Skill: https://skilld.dev/gh/sailscastshq/boring-stack/shipwright

This session only. Nothing lands on disk.

rulesconfiguration.md

≈708 tokens on demand. Your agent reads this file only when SKILL.md points to it.

Shipwright configuration

module.exports.shipwright.build accepts Rsbuild configuration. A Vue template uses:

const { pluginTailwindcss } = require('@rsbuild/plugin-tailwindcss')
const { pluginVue } = require('@rsbuild/plugin-vue')
const { pluginInertia } = require('rsbuild-plugin-inertia')

module.exports.shipwright = {
  build: {
    plugins: [pluginTailwindcss(), pluginVue(), pluginInertia()]
  }
}

For React, use pluginReact() from @rsbuild/plugin-react; for Svelte, use pluginSvelte() from @rsbuild/plugin-svelte. Keep the Tailwind and Inertia plugins in both cases.

React Compiler

React Compiler is opt-in. With the React 2.1 plugin and Rsbuild 2.2, enable it using pluginReact({ reactCompiler: true }). The templates leave it disabled by default. Test application behavior before enabling it. React 17/18 applications additionally need react-compiler-runtime and a matching compiler target; these templates use React 19.

See the React plugin options.

Entry and page discovery

Shipwright detects the browser entry. Keep createInertiaApp() in assets/js/app.js; pluginInertia() supplies page resolution from assets/js/pages/ when no explicit resolver is present. Do not add a hand-written require() resolver to a normal template entry. An existing custom resolver is preserved. Set pluginInertia({ pages: false }) only when taking responsibility for resolution yourself.

For SSR, the plugin detects assets/js/ssr.js and creates separate web and node environments. Browser entries and copied public assets belong to web; the private renderer belongs to node. See SSR.

Aliases and build options

Shipwright supplies @ for assets/js and ~ for assets. Keep editor mappings in jsconfig.json consistent:

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": { "@/*": ["assets/js/*"], "~/*": ["assets/*"] }
  }
}

Use build.source.define for explicitly public build-time constants. Values embedded in browser bundles are visible to users. Backend secrets belong in Sails configuration.

Use build.output.assetPrefix for a CDN and build.output.sourceMap for source-map policy. With multiple environments, scope browser-only changes to build.environments.web and server-only changes to build.environments.node.

Configure the application port in Sails, not as a separate Rsbuild listener. See development and the Rsbuild configuration reference.

Source: SKILL.md on GitHub

1 alert17d4 checks · Risk SAFE
  • Gen Agent Trust Hub17d

    No security issues were detected. The skill provides legitimate documentation and rules for managing the Shipwright build system, covering asset compilation, framework plugins, and development workflows.

  • Socket17d

    No alerts

  • Snyk17d

    Risk: LOW · No issues

  • Runlayer7mo

    8/8 files flagged

Signed by skilld at dbf6087. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 3 days ago.

Activeupdated 3 weeks ago
Other metadata
metadata
{
  "author": "sailscastshq",
  "version": "1.1.0",
  "tags": "shipwright, rsbuild, build, vite, assets, tailwind, ssr, hmr, boring-stack"
}

README badge

README badge for sailscastshq/boring-stack/shipwright