Agent skill
psp-onboarding
First-run interactive setup for the PSP skill pack.
Filed under Onboarding, retention and expansion.
From cmj-hub/claude-psp · 5 skills · 2 · pushed 2026-09-09
What it does when it runs
First-run interactive setup for the PSP skill pack. Walks the operator through brand-config.json (ICP precision, exclusion criteria, signal sources) and SOUL.md (buyer vocabulary, stories, the 11am-Tuesday moment) in ~15 minutes. Refuses to let the operator skip — generic PSP output is worse than no PSP. Loaded automatically by the main psp skill when brand-config.json or SOUL.md is missing.
Read from the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- None found.
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- Tool permissions it declares
- Read
- Write
- -
- Grep
- Actions present in the files
- network
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/cmj-hub/claude-psp.git /tmp/claude-psp git -C /tmp/claude-psp sparse-checkout set "skills/psp-onboarding" mkdir -p ~/.claude/skills/psp-onboarding cp -R "/tmp/claude-psp/skills/psp-onboarding/." ~/.claude/skills/psp-onboarding/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
Or take the whole library
This repo ships a .claude-plugin manifest, so Claude Code can install all 5 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.
/plugin marketplace add cmj-hub/claude-psp /plugin
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
The skill
Source on GitHub ↗Reproduced in full from cmj-hub/claude-psp/blob/970cb1702ffdf35663b81946f64f46aa30507cf5/skills/psp-onboarding/SKILL.md, which is licensed MIT (skill frontmatter). 790 words, 13 headings.
PSP Onboarding — first-run setup
Walks the operator through ~15 minutes of setup that makes every downstream PSP 10x more useful than generic framework prose.
Activation
Loaded automatically by the psp orchestrator when brand-config.json
or SOUL.md is missing from the project root.
Also user-invocable: "Set up PSP brand config", "PSP onboarding", "Configure PSP".
Why this exists
A generic PSP that says "Series-B SaaS feels pipeline pressure" is worse than no PSP — it produces outreach that everyone else is also producing. The 5-component PSP framework only generates real differentiation when paired with:
- Your ICP precision (segment, exclusion, motion)
- Your buyer's actual vocabulary (sourced from real writing, not invented)
- Your stories (signal-to-pain mappings you've seen succeed or fail before)
- Your won't-chase boundaries
Workflow
Step 0 — Detect prior state
Check for existing brand-config.json + SOUL.md. If both exist, ask:
"Refresh, or skip?" If one exists, fill the gap.
Step 1 — ICP precision
First, ICP. Be specific — "B2B SaaS" is too broad.
Tell me in one batch:
1. The 1-sentence segment (stage / size / motion / region)
2. The size range ($M ARR)
3. The motion (PLG / sales-led / hybrid)
4. The 3-5 exclusion criteria (who you don't sell to)
If your ICP is fuzzy, that's a finding — outreach against a fuzzy ICP
will be fuzzy. We can use placeholders for now and flag them for refresh
after 100 sends.
Save to brand-config.icp.
Step 2 — Primary PSP draft
Now your primary PSP. Five components:
1. SIGNAL — what's a public, recent, verifiable thing your buyer does
that implies the pain? (job post, funding round, leadership change,
product launch, pricing change)
2. PAIN — what's the felt operational reality at 11am Tuesday when
that signal is present? In their language, not yours.
3. TIMING TRIGGER — which 90-day window makes the pain acute now:
new-exec / budget-cycle / obvious-failure?
4. FELT-PAIN ROLE — who at the buyer feels it most? (Often a layer
below the buying authority.)
5. VOCABULARY — 4-8 phrases the buyer uses in private about this. If
you don't know yet, that's step 3.
Save to brand-config.psp_drafts.primary.
Step 3 — Vocabulary mining
If you don't have 4-8 buyer phrases yet, let's mine them.
Point me at any of these sources for the buyer segment:
- 3-5 of their public LinkedIn posts
- 1-2 podcast appearances
- 2-3 of their hiring job posts (job posts reveal pain language verbatim)
- 1-2 conference talks / panel appearances
- Their public AMA responses
I'll extract candidate phrases — you confirm which ones land.
If WebFetch is available, the skill can pull + extract directly. If not, instruct the operator to paste content and run extraction.
Step 4 — Signal sources (operations)
Where will you hunt these signals? (Mark all that apply.)
1. LinkedIn job search (daily — manual or via Phantombuster)
2. Crunchbase / news APIs (weekly)
3. RSS feeds for specific publications
4. Podcast feeds for relevant shows
5. Manual research only
How often refresh:
- PSP refresh cadence (default: 90 days)
- Vocabulary refresh (default: 30 days)
- Signal freshness window (default: 14 days — older signals drop)
Save to brand-config.signal_sources + brand-config.research_cadence.
Step 5 — Stories (SOUL.md)
Tell me 3-5 stories that anchor your PSP — times you saw a signal-to-pain
mapping work or fail.
Each story: 1-2 sentences, anonymized but specific. These become
calibration points for the construct skill.
Also:
- Your won't-chase boundaries (topics / segments you refuse)
- The 11am-Tuesday operational moment of your buyer (paint it specific)
Save to SOUL.md.
Step 6 — Write the files
Write brand-config.json + SOUL.md at the project root. Show preview:
✓ brand-config.json — ICP + 1 PSP draft + signal sources + cadence
✓ SOUL.md — 3 stories + vocabulary + 11am-Tuesday moment
Try a quick test:
> Construct a PSP for <segment>
The output will now use:
- Your ICP precision (not generic "B2B SaaS")
- Your vocabulary (not category jargon)
- Your stories as calibration
Next step: install `cmj-hub/claude-evp` to lock the EVP that speaks
to this PSP. Then `cmj-hub/claude-cold-email` to ship outreach.
Step 7 — Refresh cadence
PSPs decay. Re-run onboarding when:
- ICP shifts (new segment / segment cull)
- Buyer vocabulary evolves
- Quarterly minimum (90 days)
Re-run: `/psp onboarding refresh`
References
../../brand-config.example.json— full template../../SOUL.md— voice template../../AGENTS.md— behavior rules- Sister skills:
psp-kickoff— adaptive router that uses these filespsp-construct— uses brand + SOUL for actual PSP buildpsp-signal-hunt— runs against your signal sources
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- onboarding by coreyhaines31 · 50,138
- icp-onboarding by growthenginenowoslawski · 705
- onboarding-cro by OpenClaudia · 691
- onboarding-flow by shawnpang · 324
- customer-onboarding by louisblythe · 153
- suede-onboarding by JasonColapietro · 135
- user-onboarding by manojbajaj95 · 100
- product-onboarding-activation by realjaymes · 60
Need help setting it up?
This page tells you what psp-onboarding does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.