Onboard
NoCodeWork Growth OS — open-source Growth OS for any AI agent: point it at a business URL, persist USP/UVP/ICP context, run a growth audit (SEO, speed, GEO/AI-visibility, competitors, live GA4/GSC), then delegate to marketing skills. Runs on Claude Code, Codex, Hermes & MCP.
npx -y skills add nocodework/growth-os --skill onboardAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
First-run flow for Growth OS. Takes a business URL and walks the user through the full setup — build the context hub, connect accounts, run the growth audit — then explains what to do next. Use when someone runs /growth-os:onboard, says "set up Growth OS", "get started", "onboard my business", or just drops a URL and asks Growth OS to take it from there.
SKILL.md
5.6 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
onboard
The front door to Growth OS. One command turns a raw business URL into a working Growth OS: a persistent context hub, a set of connected data sources, and a first growth audit — with a plain-language explanation of what each step found and what to do about it.
What it does
onboard is an orchestrator. It doesn't do the heavy lifting itself — it sequences the three foundational skills in the right order and keeps the user oriented between them:
- context — read the URL, draft a first-pass positioning (USP/UVP/ICP), and confirm it with the user. Writes
.agents/product-marketing.md. - connect — figure out which data sources the user can wire up right now (zero-approval) versus which need a lead-time approval, and walk them through the fast ones first.
- audit — run the growth audit against whatever is connected, plus the always-available checks (SEO, page speed, GEO), and write findings back to the hub.
Then it hands off: a short "here's what I found, here's what's worth doing first" summary.
When to use
- The user is running Growth OS for the first time in a repo/project.
- Someone gives you a business URL and expects Growth OS to "take it from here."
- A returning user wants to re-baseline a business (new site, new positioning, new quarter).
If the hub already exists and the user only wants one piece (just re-run the audit, just connect one account), skip straight to that skill instead of the full flow.
Inputs
- Business URL (required). The homepage is enough. If the user gives a deeper page (pricing, product), use it — more signal.
- Optional: a one-line description of the business, if the site is thin or gated.
If no URL is provided, ask for one before doing anything. Everything downstream keys off it.
Steps
-
Confirm the target. Echo the URL back and state what you're about to do: build a context file, connect data sources, run an audit. Set the expectation that this takes a few passes and that nothing gets published or changed on their site — Growth OS is read-side.
-
Check for an existing hub. Look for
.agents/product-marketing.md.- If missing → this is a true first run. Continue to step 3.
- If present → tell the user Growth OS is already set up here. Offer: refresh context, re-run the audit, or connect more accounts. Don't silently overwrite anything.
-
Delegate to
context. Hand off the URL.contextruns its batched interview (pre-filled from the URL, user confirms), and writes the hub. Wait for it to finish and confirm the positioning is captured before moving on — the audit and every downstream skill reads from this file. -
Delegate to
connect. Now that we know the business, wire up data.connectscans.envfor existing keys, splits sources into 🟢 start-now versus 🔴 needs-approval, and walks the user through the fast ones (GA4, Search Console, MailerLite, PageSpeed) first. Make it clear the 🔴 sources (Google Ads, Meta) can be started in parallel because the approvals sit with the account owner and take real calendar time — the user shouldn't wait on them to get value today. -
Delegate to
audit. Run the growth audit. It uses whateverconnectmanaged to wire up for the live baseline, and always runs the checks that need no accounts (SEO crawl, PageSpeed if the key is set, GEO visibility). It appends an## Audit Findingssection to the hub. -
Explain and hand off. Summarize in plain language:
- What Growth OS now knows about the business (one or two lines from the context).
- What's connected and what's still pending approval.
- The three or four highest-leverage findings from the audit.
- The single next action worth taking — usually either "connect X to unlock Y" or "fix Z on the site."
Point the user at
/growth-os:dashboardfor the assembled overview and/growth-os:delegatewhen they want to act on a specific finding.
Which adapters / CLI it calls
onboard itself calls no adapters directly. It delegates:
- Positioning → context skill
- Data wiring → connect skill (which references
docs/integrations/*) - Audit → audit skill (which invokes the read-side CLI:
growth-os ga4 …,growth-os gsc …,growth-os psi …, plus the GEO module)
How it delegates
Sequential, gated hand-offs. Each step must land before the next starts, because each one depends on the previous:
contextmust write the hub beforeauditcan reason about the business or run GEO (GEO queries are derived from the ICP).connectshould run beforeauditso the audit has live GA4/GSC data for the baseline — but the audit still runs (with a smaller scope) if the user skips connecting.
Never block the whole flow on a 🔴 approval. If Google Ads or Meta aren't ready, note them as pending and finish onboarding with everything else. The user gets value on day one and the slow approvals catch up later.
Guardrails
- Read-side only.
onboardnever publishes, edits the user's site, or writes to any connected account. - Idempotent. Running it again on an already-onboarded project offers a refresh, never a silent wipe.
- Own keys. Every credential the user provides during
connectlives in their.env, never in the hub and never sent anywhere but the source API.