core/capabilities/orchestration/onboard/SKILL.md
First-run project setup that detects tech stack, selects quality packs, and generates .sage/ directory with CLAUDE.md. For new projects, guides technology selection. Use when no .sage/ directory exists, when the user says "set up sage", "initialize", "get started", or when starting a brand new project from scratch.
npx skillsauth add xoai/sage onboardInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Set up Sage for a project. Detect what exists, configure what's needed, generate the agent instructions. This is the FIRST thing that runs.
Core Principle: A beginner should go from "I have a project" (or "I have an idea") to "Sage is configured and ready" in under 3 minutes.
.sage/ directory exists).sage/ directory and prompts: "This project isn't set up
with Sage yet. Want me to set it up? (Takes ~2 minutes)"Check what exists:
.sage/ exist? → Already onboarded. Offer to re-scan or update.package.json / requirements.txt / pubspec.yaml exist? → Existing project.Branch accordingly:
Read dependency files to detect the tech stack:
package.json → detect: next, react, vue, svelte, express, supabase, firebase
pubspec.yaml → detect: flutter, firebase
requirements.txt / pyproject.toml → detect: django, flask, fastapi
go.mod → detect: gin, echo, fiber
Produce a stack summary:
DETECTED STACK:
Frontend: Next.js 14 (App Router), React 19, Tailwind CSS 4
Backend: Supabase (@supabase/ssr, @supabase/supabase-js)
Testing: Vitest, Testing Library
Build: Turbopack
Show to user: "I detected this stack. Anything I missed or got wrong?"
Based on detected stack, select which packs activate:
PACKS TO LOAD:
L1: web (web application detected)
L1: baas (Supabase detected)
L2: nextjs (Next.js detected)
L2: react (React detected)
nextjs surfaces integration/supabase-integration.md (Supabase detected)
Show to user: "These packs will guide code quality. Look right?"
Scan the codebase for established patterns:
Save to .sage/conventions.md.
Create the .sage/ directory and all files. See Output below.
One question: "What are you building? Describe it in a sentence or two."
Examples of what they might say:
Based on what they described, recommend a stack. Ask focused questions:
Question 1: Platform "Is this a web app, mobile app, or both?"
Question 2: Backend complexity "Will this need complex backend logic (custom algorithms, complex queries, multi-step workflows), or is it mostly storing/fetching data with user accounts?"
Question 3: Scale expectation (only if unclear) "Is this an MVP/prototype, or do you need it production-ready from day one?"
Based on answers, recommend:
RECOMMENDED STACK:
You're building a web app with user accounts and data storage.
For fast MVP delivery, I recommend:
Frontend: Next.js (App Router) + React + Tailwind CSS
Backend: Supabase (auth, database, storage — no backend to build)
Testing: Vitest + Testing Library
Deploy: Vercel
This gets you from idea to deployed app fastest.
Ready to go with this, or want to explore alternatives?
If user wants alternatives, explain trade-offs briefly. Don't overwhelm.
After stack approval, create the project structure:
npx create-next-app, flutter create, etc.)Same as A4 — create .sage/ directory. Conventions will be minimal for
a new project (establish them as the first code is written).
.sage/ Directory.sage/
├── config.yaml # Project configuration
├── conventions.md # Discovered or established patterns
├── decisions.md # Shared decision log (agent + human)
├── docs/ # Project-level knowledge (flat, skill-prefixed)
├── work/ # Per-initiative (YYYYMMDD-slug/ subfolders)
└── gates/ # Quality gate scripts and config
sage-version: "<stamped by sage init from the framework's VERSION file>"
project-name: "<detected or provided>"
mode-default: build
packs:
enabled:
- web
- baas
- nextjs
- react
constitution:
base: sage/core/constitution/base.constitution.md
preset: startup # or enterprise, opensource
# Decisions
Shared log for significant decisions and context.
Both the AI agent and human collaborators write here.
### YYYY-MM-DD — [Decision title]
[What was decided, why, alternatives considered.]
# Project Conventions
Discovered by Sage onboard on <date>.
Update this file as conventions evolve.
## Naming
- Files: <detected pattern>
- Components: <detected pattern>
- Variables: <detected pattern>
## Structure
- Components: <detected layout>
- Tests: <detected location and framework>
- Styles: <detected approach>
## Patterns
- State management: <detected or TBD>
- Data fetching: <detected or TBD>
- Error handling: <detected or TBD>
Normally sage init / sage update generate the platform's instructions file
(CLAUDE.md / AGENTS.md / GEMINI.md) from the shared body in
runtime/platforms/_shared/instructions-body.sh with the merged constitution
spliced in — you do not hand-assemble it during onboarding.
If you must produce one directly, the template is
core/capabilities/context/context-loader/templates/main-instructions.template.md:
{{CONSTITUTION}} with the loaded constitution principles{{NAVIGATOR_PATH}} with the sage-navigator skill path{{AVAILABLE_SKILLS}} and {{COMMANDS_TABLE}} from the enabled skillsSave to project root as the platform's instructions file (e.g. CLAUDE.md).
If .claude/mcp.json or .sage/mcp.json exists, run tool discovery:
bash sage/runtime/mcp/discover.sh .
This connects to each configured MCP server, lists available tools, and caches
the manifest at .sage/mcp-manifest.json. The CLAUDE.md generation includes
a lightweight tool summary (~50 tokens per server) so you know what's available
without consuming context with full schemas.
If no MCP config exists, skip this step. Layer 1 tools (bash scripts) are always available regardless of MCP configuration.
Show the user: "Sage is set up. Here's what I configured: [summary]. Tell me what to build, or say 'sage help' for guidance on what to do next."
MUST (violation = broken setup or confused user):
.sage/ directory and CLAUDE.md — they're the minimum viable setup.SHOULD (violation = suboptimal experience):
MAY (context-dependent):
testing
Root cause diagnosis with evidence, Reproducing test, Minimal patch
tools
Session resumption with context
tools
Configure Sage preset and project settings. Switch between base, startup, enterprise, or opensource constitution presets. Use when the user says "configure sage", "change preset", or "sage settings".
development
Brief (medium+ tasks), Spec, Implementation plan