Brand Artifact Skill
Synthesizes research files into structured brand artifacts that drive the content engine. The coach persona — used for angle validation — is always derived from community research, never hardcoded.
Commands
# Generate brand docs from existing research
bun scripts/brand-artifact.ts init <slug>
# Propose updates from new research (human reviews diffs)
bun scripts/brand-artifact.ts update <slug> --from <research-file>
# Display artifact(s)
bun scripts/brand-artifact.ts show <slug>
bun scripts/brand-artifact.ts show <slug> community-profile
# Extract coach persona for a platform (for content angle loop)
bun scripts/brand-artifact.ts coach <slug> <platform>
# List all brands + artifact status
bun scripts/brand-artifact.ts list
Artifact Files
| File | Generated by | Updated by | Purpose |
|---|---|---|---|
community-profile.md |
LLM (from research) | Research updates | Per-platform audience + coach personas |
voice-guide.md |
LLM (from research) | Performance data | Tone, examples, anti-examples |
competitive-context.md |
LLM (from research) | Research updates | Honest positioning per competitor |
product-state.md |
Template | Manual only | What's live, pricing, accuracy checklist |
performance-log.md |
Template | After each publish | What landed, what didn't |
research-refs.md |
Template | After each update | Research source index |
The Core Principle
Coach personas derive from research, never from assumptions.
community-profile.md contains one coach persona per platform. Each persona:
- Cites which research file confirmed its patterns
- Distinguishes
[RESEARCH-CONFIRMED]from[INFERRED] - Sounds like a real community member, not a marketing brief
The content angle loop extracts this persona via coach <slug> <platform> and injects it into the validation agent.
The Evolution Loop
New research runs
↓
bun scripts/brand-artifact.ts update <slug> --from <file>
↓
Proposed diffs written as *.proposed-update.md
↓
Human reviews → applies changes → deletes proposed file
↓
research-refs.md updated with new source
After content publishes:
Performance data collected (upvotes, engagement, SEO ranking)
↓
Manual entry in performance-log.md
↓
What worked → promote to voice-guide.md positive examples
What flopped → add to voice-guide.md anti-examples
Persistent patterns → update community-profile.md coach persona
File Locations
| Path | Purpose |
|---|---|
scripts/brand-artifact.ts |
Main CLI |
docs/brand-artifacts/<slug>/ |
Brand artifact files |
docs/brand-configs/<slug>.json |
Brand config (source for init) |
docs/market-research/ |
Research files (source for init + update) |
What to Fill Manually
product-state.md is the one file the LLM cannot fill accurately. Before any content publishes, a human must verify:
- Features list matches the actual product
- Pricing / free tier is current and accurate
- Code examples in drafts actually run
- Any "coming soon" claims are removed
Related Skills
brand-audit— runs before init (produces the audit data that feeds product-state.md)community-research— powers the research that feeds init and update (use your preferred search/discovery API, e.g. Reddit JSON API, Algolia, SerpAPI, or a search/discovery service of your choice)conversation-monitor— ongoing community monitoring that generates update inputs