Help us improve
Share bugs, ideas, or general feedback.
From copyskills
Gathers and validates context needed before writing copy. Three modes: interactive interview for humans, agent handshake for multi-agent systems, fast-path for complete briefs. Use before any copy generation to ensure minimum context requirements are met.
npx claudepluginhub srstomp/copyskills --plugin copyskillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/copyskills:copy-briefThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Context-gathering skill. No copy generation. Receives inputs, validates fields, returns a complete structured brief.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Explores codebases via GitNexus: discover repos, query execution flows, trace processes, inspect symbol callers/callees, and review architecture.
Share bugs, ideas, or general feedback.
Context-gathering skill. No copy generation. Receives inputs, validates fields, returns a complete structured brief.
This skill handles the gap between what a consuming agent or human knows and what a copy skill needs. It validates field completeness, identifies gaps, and resolves them through three distinct modes. Output is always a complete structured brief in the standard YAML format.
The brief uses this YAML structure:
type: "cold outreach email"
goal: "Book a demo call"
audience:
who: "US food enthusiasts, 28-45"
pain: "Bored of supermarket sake"
sophistication: "casual"
product:
name: "SakeBox"
description: "Monthly sake subscription"
differentiator: "Direct from 40+ Japanese breweries"
brand_voice:
tone: "knowledgeable, casual"
avoids: ["artisanal", "curated", "elevate"]
examples: ["Example copy that matches desired voice"]
constraints:
length: "150 words max"
format: "plain text email"
cta: "single CTA, link to booking page"
language: "en-US"
| Field | Status | If missing |
|---|---|---|
| type | Required | Cannot proceed |
| goal | Required | Cannot proceed |
| audience.who | Required | Cannot proceed |
| product.name | Recommended | Proceed, flag reduced quality |
| audience.pain | Recommended | Infer from type + audience |
| brand_voice | Recommended | Use domain defaults |
| constraints | Optional | Use domain-standard defaults |
Required fields (cannot proceed without all three): type, goal, audience.who
Recommended fields (proceed with a quality flag if missing): product.name, audience.pain, brand_voice
Optional fields (sensible defaults apply): constraints
Evaluate in this order:
Use when a human is providing context conversationally.
Rules:
references/brief-questions.md for the question bank. Select the question that fits the copy type.Sequence:
type if not provided: use the universal question for copy type.goal if not provided.audience.who if not provided.Confirmation step: Before proceeding to copy generation, surface the brief summary:
Here's what I have:
- Writing: [type]
- Goal: [goal]
- Audience: [audience.who]
- [any other fields collected]
Ready to proceed, or anything to adjust?
Use when invoked by an orchestrator, pipeline, or another agent.
Rules:
Response format when fields are missing:
missing:
required:
- audience.who: "Who is this for? (age range, role, context)"
recommended:
- brand_voice: "Any tone or voice guidelines?"
- audience.pain: "What problem does this audience have?"
Only list fields that are actually missing. If no required fields are missing, omit the required key. If no recommended fields are missing, omit the recommended key.
Handshake flow:
Step 1: Orchestrator sends partial brief
{ type: "drip email step 3", goal: "re-engage inactive users" }
Step 2: Copy-brief identifies gaps, responds with missing-fields YAML
Step 3: Orchestrator fills what it can, resends the updated brief
Step 4: Copy-brief confirms minimum requirements met, outputs the complete brief
When to proceed with gaps:
If required fields are all present and the calling agent cannot provide recommended fields, proceed. Include a flags entry in the output brief noting which recommended fields were absent.
Use when all required fields are already present in the input.
Rules:
type, goal, and audience.who are present and non-empty.flags entry to the output noting reduced context.Validation:
type must be a non-empty string describing the copy format.goal must describe a specific outcome, not a vague intent.audience.who must identify the audience concretely.If any required field is empty, missing, or too vague to act on, fall back to the appropriate mode (Mode 1 for humans, Mode 2 for agents).
The output of this skill is always a complete structured brief in the standard YAML format. Include all fields that were collected or inferred. Add a flags array for any recommended fields that were not provided.
type: "cold outreach email"
goal: "Book a demo call"
audience:
who: "US food enthusiasts, 28-45"
pain: "Bored of supermarket sake"
sophistication: "casual"
product:
name: "SakeBox"
description: "Monthly sake subscription"
differentiator: "Direct from 40+ Japanese breweries"
brand_voice:
tone: "knowledgeable, casual"
avoids: ["artisanal", "curated", "elevate"]
examples: ["Example copy that matches desired voice"]
constraints:
length: "150 words max"
format: "plain text email"
cta: "single CTA, link to booking page"
language: "en-US"
flags: []
If recommended fields were absent, the flags array lists them:
flags:
- "brand_voice not provided: using domain defaults"
- "audience.pain not provided: inferred from type and audience"
No copy generation. This skill gathers and validates context. It does not write copy.
Required fields block all modes. If type, goal, or audience.who cannot be determined, stop and ask. There is no fallback.
One question at a time (Mode 1). Never present a list of questions to a human user.
Structured responses only (Mode 2). No prose explanations to agents. Return YAML.
Infer, do not hallucinate. If a field can be reasonably inferred from other provided fields, make the inference and note it in flags. Do not invent audience pain points or brand voice that contradict provided context.