Install
$ agentstack add skill-b2bforce-b2bforce-marketing-company-profile ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Company Profile from URL
Creates, enriches, or refreshes the firm profile from a website.
When to Use
- Setup: user provides company website URL during
firm-context - Create:
workspace/firm/profile.mdis missing or still a template - Enrich: interview-based
workspace/firm/profile.mdexists and should be improved
with website facts
- Refresh: the firm changed its website, positioning, proof points, target market,
or services and the profile should be checked again
Prerequisites
- Company website URL
- Current agent/LLM session
- Read existing
workspace/firm/profile.mdif it exists - Optional website access through the current agent/browser, or
tool-firecrawl
if configured
Workflow
1. Choose mode
Use one of three modes:
create— no realworkspace/firm/profile.mdexists.enrich— setup already created an interview-based profile.refresh— profile exists and the user wants a later website re-audit.
2. Read current context
Read workspace/firm/profile.md first. Treat it as the source of truth for user-provided facts.
3. Fetch website content
Fetch the website's most relevant pages: homepage, about, services, case studies, industries, and contact if available.
Use the current agent/browser when available. If the workflow is being automated and tool-firecrawl is configured, use Firecrawl scrape/map scripts. If no website access is available, stop this skill and keep the interview-based profile; do not invent website facts.
Truncate page content to the minimum useful evidence. Keep source URLs in notes only when they support a changed field.
4. Extract profile facts
Extraction priorities, in order:
- What the firm does
- Who it serves
- Services and specializations
- Positioning and brand voice
- Proof points and credibility signals
- Operating regions and objective firmographics
Possible fields: name, websiteurl, tagline, description, industry, target market, brandvoice, wordstoavoid if stated, specializations, proofpoints, flagship clients, certifications, country, city, operatingregions, employeecount, foundedyear.
Use null or omit fields that cannot be determined. Do not guess revenue, headcount, clients, certifications, or founding year.
Enums:
industry: digitalagency, softwarehouse, saas, consulting, ecommerce, fintech, healthcare, education, manufacturing, retail, media, real_estate, logistics, energy, nonprofit, government, othertarget_market_segment: smb, mid_market, enterprise, allmessaging_style: educational, authoritative, conversational, technical, inspirationalemployee_count: 1-10, 11-50, 51-200, 201-500, 501-1000, 1000+annual_revenue: 100M
Country names may be mapped to ISO codes when the existing profile uses codes. Do not default to US unless the website or user said so.
5. Merge into profile
Write only:
workspace/firm/profile.md
Merge rules:
- User-provided facts from the existing profile win over website extraction.
- Fill blank/template fields with website evidence.
- On refresh, update objective facts only when the website is clearly current.
- If the website conflicts with an important existing fact, do not silently
overwrite it. Add a short !_verify note in workspace/firm/profile.md or ask the user if the workflow can pause.
- Do not create
data/firm.jsonor duplicate firm context elsewhere. - Keep the profile concise; remove generic website boilerplate.
6. Refresh behavior
For refresh, re-read the current website and compare against the profile. Focus on meaningful changes: positioning, services, target markets, proof points, regions, and brand voice. Ignore navigation labels, generic marketing copy, and minor page wording changes.
Quality rules
- Specific over generic taglines (e.g. "AI-powered content for B2B service companies", not "We help businesses grow")
- brand_voice: detailed, actionable tone guidance (formal/casual, technical/business, confidence level, recurring phrases) — not "professional and friendly"
- description: lead with what they DO, not who they ARE
- Use the closest enum match only when the profile schema uses enums; use null
or omit when unknown
- Flag low-confidence fields with
!_verifycomment - Never ask the user to paste API keys in chat. If a tool key is needed, tell the
user to fill .env locally.
Related Skills
| Skill | When | |-------|------| | firm-context | Setup interview and manual profile before enrichment | | marketing-service | Next: create or enrich primary services | | marketing-icp | After services exist |
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: b2bforce
- Source: b2bforce/b2bforce
- License: MIT
- Homepage: https://www.b2bforce.ai/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.