From Sales OS
Generates a personalized {{Seller}} x {{Client}} sales one-pager (HTML) for a discovery, sales, or onboarding call, then hands it over as a file and, when Vercel is available, a shareable link. The leave-behind that follows or precedes a call: hero, scope breakdown, outcomes, pricing, inclusions, kickoff steps, and a scheduling CTA. Offer-agnostic and config-driven: it reads the rep's offer, brand, pricing, and identity from config (or a Sales OS Context/ folder), so it works for ANY rep selling ANYTHING. Use ANY TIME the user asks to prepare, create, build, make, draft, or personalize a one-pager for a sales call. Triggers on "prep the one-pager for my call with X", "create a one-pager based on the call with X", "personalize the one-pager from the transcript", "make a one-pager for [client] at [price]", or "build a one-pager for [name]". Handles BOTH pre-call (research-grounded) and post-call (transcript-grounded) scenarios. Always writes the HTML file; deploys and returns a link only if Vercel is set up.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sales-os:onepagerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You generate a personalized HTML one-pager for a sales prospect, write it to a file, and (when Vercel is available) deploy it and return a shareable link. The one-pager is the visual leave-behind that follows a sales call or precedes one. It is the rep's most important offer asset.
You generate a personalized HTML one-pager for a sales prospect, write it to a file, and (when Vercel is available) deploy it and return a shareable link. The one-pager is the visual leave-behind that follows a sales call or precedes one. It is the rep's most important offer asset.
This skill is offer-agnostic and config-driven. Every business-specific value (who the seller is, what they sell, how they price it, how they brand it) comes from config or a Sales OS Context/ folder. The skill ships a proven STRUCTURE, not an offer. Read config first, then ground the rep's offer in the structure.
Resolve the rep's specifics in this order, first hit wins:
Context/ folder in or above the working directory (Context/offer.md, Context/brand.md, Context/config.md). If present, the user is inside a Sales OS. Read it as the source of truth.config/offer.md at the project root (the post-disco sibling config; same schema).config/onepager.md at the project root, if a one-pager-specific config exists.If only *.example.md files exist, or nothing is found, the config is not set up. Tell the user what you need (see references/substitution-map.md for the full list) and either ask for it inline or proceed with a clean neutral default brand, stating that you did.
From config, resolve up front (see references/substitution-map.md for the CONFIG: source of each):
{{Seller}} x {{Client}} or the rep's own), signer name and email.done_for_you | enablement | subscription | project | other).one_time | recurring | tiered | deposit_milestone | quote), amount, currency, terms.Before building, ask: "Is there already a proposal for this client (a doc, a deck, a PDF, a PandaDoc, anything sent or drafted)?" This matters most post-call, where a formal proposal often already exists.
If one exists, read it and treat it as the source of truth. Align the one-pager to it on every locked term: price, payment terms, scope, named services, timeline or phases, positioning, and every inclusion. The one-pager is the visual companion to the proposal: the two must never contradict each other. If they disagree on any locked term, surface it to the user rather than silently picking one.
If no proposal exists yet, proceed with the call or research grounding, and note the one-pager may itself become the basis for the proposal.
The user usually says. If ambiguous, ask one question: "Has the call happened yet, or are we prepping for it?"
references/structure.md (pre-call section).references/structure.md (post-call section).Both paths converge at Step 3 (the same edit, write, optional-deploy pipeline).
CONFIG: brand.colors and CONFIG: brand.fonts into the template's CSS variables. No brand config means keep the clean neutral default.references/structure.md for what each drives.SLUG="<lowercase-slug>"
OUT="<output_dir-from-config-or-./clients>"
mkdir -p "$OUT/$SLUG"
cp .claude/skills/onepager/assets/template.html "$OUT/$SLUG/one-pager.html"
The template ships brand-neutral with clear {{PLACEHOLDER}} markers. You substitute them in Step 4.
Open references/substitution-map.md and work top to bottom. Every personalization point is enumerated there with its CONFIG: source. The critical spots to never miss:
After substitutions, grep for any leftover placeholder or prior-client strings:
grep -niE "\{\{|CONFIG:|lorem|placeholder|example\.com" "$OUT/$SLUG/one-pager.html"
It should return clean. Any {{...}} left means a missed substitution. Also grep for any previous client's name if you reused a filled file.
Deployment is optional. Always write the file. Then follow references/deploy.md:
Return to the user with:
{{PLACEHOLDER}} in the shipped file. Grep before handing over.{{...}} that slipped through makes the page look broken. The Step 5 grep catches these.references/structure.md.If a new structural pattern emerges (a new section, a new pricing model rendering), update references/structure.md and references/substitution-map.md. Only touch assets/template.html when the change is universal, never client-specific. The template stays the canonical neutral starting point that gets personalized per call.
npx claudepluginhub hubert-sys/benai-skills --plugin sales-osGuides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Synthesizes the current conversation into a structured spec (PRD) and publishes it to the project issue tracker with a ready-for-agent label, without interviewing the user.
2plugins reuse this skill
First indexed Jul 18, 2026