The way into Senso when the user has not said which path they want. Use for "get me started with senso" (the phrase they are given to paste), "set up Senso", "run onboarding", "help me with Senso", or any ask for help with Senso that names no material and no path. It says what Senso is, offers the two paths — the Verification Loop and Shared Context — and hands to the one they pick. A user who names a path up front belongs to that path's skill, not here; a user who names material to save belongs to senso-context-layer. This skill runs no setup and no loop of its own.
npx @senso-ai/shipables install senso-ai/senso-quickstartOne read, one message, one hand-off. This skill owns nothing else: the setup chores belong to the two setup skills, the work belongs to the two flow skills, and every command belongs to a module.
| They want | Skill |
|---|---|
| Verification Loop — AI models citing a verified page about the brand | senso-verification-loop, which runs senso-verification-loop-setup first when the organization is not set up |
| Shared Context — the knowledge base as shared context for the team's agents | senso-shared-context, which runs senso-shared-context-setup first when needed |
Never hijack a stated request. "Save revenue.pdf to Senso" is a save — senso-context-layer's
— even on an empty organization, and even if the starter phrase is pasted later. An empty context
layer is not permission to run a welcome.
A named path skips the question. "Let's go through the Verification Loop", "Shared Context", "fill another gap", "where do we stand" — the user has answered. Load that skill with the one-sentence welcome kept and the question dropped. Asking what they already said is the redundant turn that loses people.
A vague start always gets the question — never a guess from the organization's state. An org with an industry and tracked prompts looks like a Verification Loop org; it records what someone did, not what this person wants. A teammate on an org set up for the loop last week may want Shared Context today. One reply costs less than a wrong path.
No recommendation on the path question. Every other choice in these skills marks one option (Recommended); this one does not, on purpose. The two paths are different jobs, not a better and a worse way to do one job, and marking either steers a user who has no basis to be steered.
Say what this is for before asking for anything. The welcome names the outcome of each path in one sentence each. A user who does not know what the paths are for cannot choose between them.
The organization's name, in a sentence. Never the record. whoami returns an id, a tier and a
key prefix, and printing them back looks like diligence — "Free tier" and a key expiry are the two
lines you would least choose to show a room. Say the name; drop the rest.
Never narrate the machinery. No rules recited, no ids, no checks. The user sees a welcome and a question. The one line before the welcome, if there is one, is "Checking which organization you're on…" — never "I'll load the quickstart skill".
The welcome goes through the picker, and the picker carries the welcome. With Claude Code's
AskUserQuestion, write the message above as text, then open the picker — and fill the picker so it
stands on its own, because the message above it is often not produced: on a live onboarding run
and in four of four test runs on two models, the agent opened the picker with no text before it.
So the picker's question is the welcome's first two sentences plus the ask — "You're on
. Senso is a context layer: one knowledge base for what's true about your brand, which AI
models can cite and your own agents can work from. Which do you want to start with?" — and each option's
description is that path's full sentence from the template. Plain text in the picker — it does not render markdown,
so ** shows as asterisks. A picker whose question is only
"What would you like to do?" is the defect. Without the tool (Codex, Cursor), the quoted prose is
the ask. A dismissed picker is not an answer: say the two paths again as plain text, once, and
take a spoken reply.
senso whoami --output json --quiet # the key works; which organization; updates
First, always, and once. It is the only thing between you and a wasted conversation: command not found, a stale key and a key for an org they did not expect all surface here, before anything
is spent. If it fails, load senso-context-layer → No key, or a dead one, is fixed here — you run the
login. — a missing or dead key is fixed in this session; after a good login, go on to the
welcome with the organization's name. Stop only when the login could not be completed, or the
failure is anything else — that is its Troubleshooting. Do not run it again downstream —
hand the organization's name, apiKeySource and updates to the skill you route to; every module
accepts them in place of a second call. Do not run senso setup here, even when updates says
the skills are out of date: it replaces the skill files that the next skill still reads. The flow
skill runs it after the user's task.
Nothing else is read here. Which path they want is not in the organization's state.
Welcome to Senso. You're on Harborview Systems. Senso is a context layer: one knowledge base for what's true about your brand, which AI models can cite and your own agents can work from. Two ways to use it:
Verification Loop: I'll find questions people in your industry ask AI models where a competitor gets named and you don't. Then we publish a verified answer, with every line traced back to your own documents.
Shared Context: your team's knowledge base, one memory for the knowledge, policies and decisions your team maintains together. Every teammate's agent answers from it with sources, and changes are reviewed and saved as new versions, so everyone works from the same source.
What would you like to do?
Options: Verification Loop · Shared Context — no (Recommended). Each description is that path's sentence above, whole.
| What they picked, or said up front | Load |
|---|---|
| Verification Loop — or any of "verification loop", "fill another gap", "where do we stand", "how do I rank", "who's beating us", "check what the models say about us" | senso-verification-loop. Its first act is a two-read check; a bare organization is handed to senso-verification-loop-setup and comes back. Say nothing about setup here |
| Shared Context — or "shared context", "set up a knowledge base my agents use" | senso-shared-context |
| A single setup chore by name — "set my industry", "what industry are we", "is my brand name right" | senso-verification-loop-setup, which runs only that chore |
| Named material — a file, a URL to pull in, a note to remember | senso-context-layer. Not a path; never the question |
| Something else | Take it as the answer and hand to whichever skill owns it. Do not re-ask |
The hand-off is silent. Load the skill and follow it; the next thing the user sees is that skill's first message. No "great, starting the Verification Loop", no summary of what is about to happen — the path's own first message says what it is for, and a preamble before it is the same beat twice.
When the organization cannot run a path, the path's skill says so — an organization without the
GEO product finds out at the industry step and ends cleanly on a searchable context layer. Nothing
in whoami or org get says which product an organization has, so this skill does not try to
route around it.
No setup. Material, industry, brand name, content type, brand kit —
senso-verification-loop-setup; the Shared Context chores — senso-shared-context-setup.
No loop, no work. Finding a question, drafting, evaluating, publishing —
senso-verification-loop and the modules it loads.
No commands beyond whoami. Every write, search and listing belongs to a module, and the
module is the only place its mechanics are written down.
| They want | Skill |
|---|---|
| The Verification Loop, or where they stand | senso-verification-loop |
| Its setup chores | senso-verification-loop-setup |
| Shared Context | senso-shared-context / senso-shared-context-setup |
| Save, find or organize a document; import a website | senso-context-layer |
| The gap report | senso-gap-report |
| Draft or check content | senso-generate-verify |
| Publish | senso-publish |