Systems Lab

Agent skill

firm-context

Create and maintain the firm profile for a professional service firm skills + workspace repo.

activeSelf-containedInstructions only788 words

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-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about firm-context

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
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.

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.md is missing or incomplete
  • User updates positioning, services, ICP, or competitor list
  • The firm sells under more than one brand, or adds a brand — add-brand mode

Before You Start

  1. Read docs/SETUP-PROMPT.md for full bootstrap flow.
  2. Use workspace/firm/profile.md as the primary context file.

Workflow

Create (first time)

  1. 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.md inside, and the Brand Scope Gate in AGENTS.md applies. 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
  2. Write files:

    • workspace/firm/profile.md — primary firm profile and context
    • workspace/firm/services/{slug}.md — one minimal file per primary service
    • workspace/marketing/channels/{slug}.md — one per distribution channel the user named (schema: docs/WORKSPACE.md, "Distribution channel"); skip channels the firm does not actually use
    • workspace/intelligence/competitors/{slug}/!_profile.md — one per competitor
  3. Website enrichment — if the user provided a website URL, run marketing-company-profile in enrich mode 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.

  4. 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
  5. Sync README — update title to {Firm Name} — B2BForce Workspace.

Update (existing)

  1. Read current workspace/firm/profile.md.
  2. Apply firm-level changes to workspace/firm/profile.md.
  3. Add/update/remove service files under workspace/firm/services/ as needed.
  4. 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.

  1. Interview — brand name, website, positioning sentence, content language, which existing services (if any) move to it.
  2. Write workspace/firm/brands/{slug}/!_brand.md (schema: docs/WORKSPACE.md, "Brand home"). Keep firm-level facts in profile.md; the brand record carries only what differs.
  3. If this is the second brand home, migrate in the same change — this is the moment the workspace switches to multi-brand:
    • git mv the first brand's definitional entities into its brand home: firm/services/*firm/brands/{brand}/services/, marketing/icp/* (with personas/) → firm/brands/{brand}/icp/, firm/proof/*firm/brands/{brand}/proof/, marketing/channels/*firm/brands/{brand}/channels/.
    • git mv the working pipelines into {brand}/ segments in place: marketing/content/ (ideas/, drafts/), marketing/landing-pages/, marketing/placements/, sales/prospecting/, sales/opportunities/, and intelligence/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 any services: lists in client accounts switch to the qualified {brand}/{slug} form.
  4. Verifyscripts/validate-brands.sh must pass before anything new is generated. It rejects flat stragglers, so a partial migration cannot go unnoticed.
  5. Tell the user that brand-scoped workflows now need a brand: an explicit choice per run, or B2BFORCE_BRAND in the environment.

Output paths

ArtifactPath
Firm profileworkspace/firm/profile.md
Brand home (multi-brand only)workspace/firm/brands/{slug}/!_brand.md
Servicesworkspace/firm/services/{slug}.md — multi-brand: firm/brands/{brand}/services/{slug}.md
Distribution channelsworkspace/marketing/channels/{slug}.md — multi-brand: firm/brands/{brand}/channels/{slug}.md
Competitorsworkspace/intelligence/competitors/{slug}/!_profile.md

Related Skills

SkillWhen
intel-competitor-monitoringAfter competitors are listed — enable crawl pipeline
marketing-company-profileCreate, enrich, or refresh profile from website URL
marketing-serviceCreate/enrich/refresh service before ICP
marketing-icpGenerate ICP + personas from service context
marketing-content-ideasContent calendar after ICP

Rules

  • Never ask for API keys — point user to .env.
  • Do not create data/firm.json unless a concrete tool needs machine-readable metadata.
  • Never commit data/firm.json if 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.

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.