AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Content Brief

skill-cgallic-kai-cmo-harness-content-brief · by cgallic

Generate a strategic content brief from format + site + keyword. Auto-resolves persona, pulls GSC data, generates hooks, angles, and competitor weakness via LLM.

— No reviews yet
0 installs
30 views
0.0% view→install

Install

$ agentstack add skill-cgallic-kai-cmo-harness-content-brief

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No 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 No
  • ✓ 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.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-cgallic-kai-cmo-harness-content-brief)

Reliability & compatibility

✓ Security review passed
0 installs to date
— no reviews yet
● 3mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

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 →
Are you the author of Content Brief? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

/content-brief — The CMO

Generate an 18-field content brief from three inputs. The brief drives everything downstream — /content-write reads it, /content-gate validates against it, /content-retro measures against it.

Preamble

source "$(dirname "$0")/../lib/preamble.sh"

Arguments

Parse from ARGUMENTS. All three are required:

  • format: blog | seo | linkedin | email-lifecycle | cold-email | tiktok | meta-ads | google-ads | press
  • site: Site key matching config (e.g., kaicalls, abp)
  • keyword: Target keyword in quotes

Example invocation: /content-brief blog kaicalls "AI receptionists for law firms"

The Skill

Step 1: Validate Inputs

Check that the format is valid. Valid formats: blog, seo, linkedin, email-lifecycle, cold-email, tiktok, meta-ads, google-ads, press.

If invalid, tell the user: "Unknown format '{X}'. Valid formats: blog, seo, linkedin, email-lifecycle, cold-email, tiktok, meta-ads, google-ads, press."

Step 2: Generate the Brief

Run this command and capture the JSON output:

kai-brief --format {format} --site {site} --keyword "{keyword}" --output json

If the command fails with a config error (missing API key), tell the user: "Set your Gemini API key: kai-config set llm.api_key_env GEMINI_API_KEY and ensure the env var is set."

If GSC data is unavailable, the brief will still generate — it falls back to LLM-only research. Note this to the user: "GSC data unavailable — brief generated with LLM research only."

Step 3: Display the Brief

Present the brief fields in a scannable format:

CONTENT BRIEF — {format} for {site}
═══════════════════════════════════════

Target keyword:     {keyword}
Secondary keywords: {secondary_keywords}
Format:             {format}
Persona:            {persona}

ANGLE:   {angle}
HOOKS:
  1. {hook_options[0]}
  2. {hook_options[1]}
  3. {hook_options[2]}

Competitor weakness: {competitor_weakness}
Audience pain:       {audience_pain}
Proof available:     {proof_available}
CTA:                 {cta}
Word count target:   {word_count_target}
Internal links:      {internal_links}

Step 4: Save the Brief

Save the brief JSON to ~/.kai-marketing/briefs/{date}-{slug}.json where:

  • {date} = today in YYYY-MM-DD format
  • {slug} = keyword slugified (spaces to hyphens, lowercase, max 40 chars)

Use the Write tool to save. Confirm to user: "Brief saved to ~/.kai-marketing/briefs/{filename}"

Step 5: Offer Next Step

Tell the user: "Brief ready. Run /content-write to generate the draft, or edit the brief first."

Error Handling

  • Missing API key: Direct user to kai-config set llm.api_key_env GEMINI_API_KEY
  • Invalid format: List valid formats
  • GSC timeout: Generate brief without GSC data, note the limitation
  • LLM failure: Show the error, suggest retrying

Chain State

Writes to: ~/.kai-marketing/briefs/{date}-{slug}.json Read by: /content-write (next in chain)

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.