Agent skill
firm-context
Create and maintain the firm profile for a professional service firm skills + workspace repo.
Filed under Positioning and messaging.
From b2bforce/b2bforce · 29 skills · 2 · pushed 2026-08-21
What it does when it runs
Create and maintain the firm profile for a professional service firm skills + workspace repo. Use when starting a new firm repo, onboarding, missing business context, or before any marketing/sales/intelligence skill. For competitor monitoring, see intel-competitor-monitoring.
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
- No
allowed-toolsin the frontmatter. It only issues instructions, so there is nothing to bound. - Actions present in the files
- None. Instructions only.
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/b2bforce/b2bforce.git /tmp/b2bforce git -C /tmp/b2bforce sparse-checkout set ".agents/skills/firm-context" mkdir -p ~/.claude/skills/firm-context cp -R "/tmp/b2bforce/.agents/skills/firm-context/." ~/.claude/skills/firm-context/
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 ↗
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 b2bforce/b2bforce/blob/7682ed90c62190a0f3c09eb135596d08bd6890bc/.agents/skills/firm-context/SKILL.md, which is licensed MIT (skill frontmatter). 788 words, 10 headings.
Firm Context
Hub skill for B2BForce. Establishes who the firm is before any other workflow runs.
When to Use
- New B2BForce workspace — first task after clone
- User says "set up my firm", "fill firm context", "onboard"
- Another skill fails because
workspace/firm/profile.mdis missing or incomplete - User updates positioning, services, ICP, or competitor list
- The firm sells under more than one brand, or adds a brand —
add-brandmode
Before You Start
- Read docs/SETUP-PROMPT.md for full bootstrap flow.
- Use
workspace/firm/profile.mdas the primary context file.
Workflow
Create (first time)
-
Interview — ask (do not guess):
- Firm name, website URL, industry
- Does the firm sell under more than one brand (separate names/domains)?
If yes, list them — each becomes a brand home
workspace/firm/brands/{slug}/with!_brand.mdinside, and the Brand Scope Gate inAGENTS.mdapplies. One brand: create nothing extra. - Primary services (1–5) — in multi-brand, ask which brand each belongs to
- Target clients (ICP summary)
- Competitors to monitor (name + URL) — in multi-brand, which brand(s) each competes with
- Distribution channels the firm actually publishes on (blog, X, LinkedIn, newsletter, Medium…): for each, the URL, how publishing happens (e.g. Buffer, native, CMS, mailing tool), and the posting rhythm — in multi-brand, per brand
- Content language
- Priority workflows
-
Write files:
workspace/firm/profile.md— primary firm profile and contextworkspace/firm/services/{slug}.md— one minimal file per primary serviceworkspace/marketing/channels/{slug}.md— one per distribution channel the user named (schema:docs/WORKSPACE.md, "Distribution channel"); skip channels the firm does not actually useworkspace/intelligence/competitors/{slug}/!_profile.md— one per competitor
-
Website enrichment — if the user provided a website URL, run
marketing-company-profileinenrichmode after the interview-based profile exists. If website/API access is unavailable, keep the manual profile and note that enrichment can be run later. Do not block setup. -
Service file minimum — keep each service file short:
- service name
- one-sentence description
- who it is for
- main problem it solves
- expected outcome
- proof or notes if known
-
Sync README — update title to
{Firm Name} — B2BForce Workspace.
Update (existing)
- Read current
workspace/firm/profile.md. - Apply firm-level changes to
workspace/firm/profile.md. - Add/update/remove service files under
workspace/firm/services/as needed. - Add/remove competitor folders under
workspace/intelligence/competitors/as needed.
Add a brand (add-brand mode)
Use when the firm starts selling under an additional name. Rules live in the
Brand Scope Gate in AGENTS.md; this skill only executes them.
- Interview — brand name, website, positioning sentence, content language, which existing services (if any) move to it.
- Write
workspace/firm/brands/{slug}/!_brand.md(schema:docs/WORKSPACE.md, "Brand home"). Keep firm-level facts inprofile.md; the brand record carries only what differs. - If this is the second brand home, migrate in the same change — this is
the moment the workspace switches to multi-brand:
git mvthe first brand's definitional entities into its brand home:firm/services/*→firm/brands/{brand}/services/,marketing/icp/*(withpersonas/) →firm/brands/{brand}/icp/,firm/proof/*→firm/brands/{brand}/proof/,marketing/channels/*→firm/brands/{brand}/channels/.git mvthe working pipelines into{brand}/segments in place:marketing/content/(ideas/,drafts/),marketing/landing-pages/,marketing/placements/,sales/prospecting/,sales/opportunities/, andintelligence/ai-visibility/.- Frontmatter stays untouched: bare slugs now resolve within the artifact's
brand. Do not add
brand:fields to brand-scoped artifacts — the path carries the brand, including for proof records. - Shared entities (clients, competitors) gain
brands: [...]pointing at the first brand unless the user says otherwise, and anyservices:lists in client accounts switch to the qualified{brand}/{slug}form.
- Verify —
scripts/validate-brands.shmust pass before anything new is generated. It rejects flat stragglers, so a partial migration cannot go unnoticed. - Tell the user that brand-scoped workflows now need a brand: an explicit
choice per run, or
B2BFORCE_BRANDin the environment.
Output paths
| Artifact | Path |
|---|---|
| Firm profile | workspace/firm/profile.md |
| Brand home (multi-brand only) | workspace/firm/brands/{slug}/!_brand.md |
| Services | workspace/firm/services/{slug}.md — multi-brand: firm/brands/{brand}/services/{slug}.md |
| Distribution channels | workspace/marketing/channels/{slug}.md — multi-brand: firm/brands/{brand}/channels/{slug}.md |
| Competitors | workspace/intelligence/competitors/{slug}/!_profile.md |
Related Skills
| Skill | When |
|---|---|
intel-competitor-monitoring | After competitors are listed — enable crawl pipeline |
marketing-company-profile | Create, enrich, or refresh profile from website URL |
marketing-service | Create/enrich/refresh service before ICP |
marketing-icp | Generate ICP + personas from service context |
marketing-content-ideas | Content calendar after ICP |
Rules
- Never ask for API keys — point user to
.env. - Do not create
data/firm.jsonunless a concrete tool needs machine-readable metadata. - Never commit
data/firm.jsonif it contains private strategy. - English only for UI strings and file content unless user specifies another language in
content_language.
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.
- startup-context by shawnpang · 308
- multi-turn-context-retention by louisblythe · 136
- product-context by taizen-ai · 8
- context-intake by kili-d · 2
Need help setting it up?
This page tells you what firm-context 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.