Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Personas From Artifacts

ASecurity

Derive a SET of simulation personas for an agent from product artifacts — backend payloads, UI screenshots, journey/product docs, and sample real user messages — instead of designing one persona by hand. Identifies who actually interacts with the agent and how they behave, then creates the personas via the CLI. Best for text/chat agents and for new agents with no interaction history. Use when the user says "make personas from these screenshots/payloads", "who are my users", "create a set of p...

2 stars
0 votes
0 copies
0 views
Added 9/19/2026
developmentrustgoshellbashapibackend

Works with

cliapi

Security Analysis

A100/100

Scanned 9/19/2026

Install to Claude Code

$npx -y skills add coval-ai/coval-external-skills --skill personas-from-artifacts --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Personas From Artifacts?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Personas From Artifacts
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/coval-ai-personas-from-artifacts/badge)](https://www.skillsdirectory.com/skills/coval-ai-personas-from-artifacts)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: personas-from-artifacts
description: >
  Derive a SET of simulation personas for an agent from product artifacts — backend
  payloads, UI screenshots, journey/product docs, and sample real user messages — instead
  of designing one persona by hand. Identifies who actually interacts with the agent and
  how they behave, then creates the personas via the CLI. Best for text/chat agents and
  for new agents with no interaction history. Use when the user says "make personas from
  these screenshots/payloads", "who are my users", "create a set of personas", "derive
  personas from my product", "build a persona library", or "I have backend data, turn it
  into personas".
argument-hint: "[agent-name-or-product-area]"
---

# Personas From Artifacts

Create a *set* of simulation personas for an agent by reading what the agent actually does
and who uses it — from backend payloads, UI screenshots, product/journey docs, and real
user messages — rather than inventing personas in a vacuum. Personas define **the WHO**:
the personalities, emotional states, and interaction styles of the people the agent serves.
They do NOT define what the user asks about (that is test cases) — keep those separate.

This complements `/design-persona` (which walks you through ONE persona interactively, with
voice/interruption tuning). Use this skill to go from "here is my product surface + some
real traffic" to "here is a covering set of 3–6 personas" in one pass.

Drive everything through the `coval` CLI. Present the set and confirm before creating. If
`$ARGUMENTS` names an agent or product area, use it in Phase 1.

## Phase 0: Preflight + Inventory
```bash
coval whoami
```
If not authenticated: `coval login` (key at https://app.coval.dev/settings → Organization →
Manage → API Keys). No account? https://coval.dev.

> **Command name:** examples use `coval` (the Homebrew binary). If `coval` is a shell alias on
> your machine, use `coval-cli` instead (`which coval` to check).

Inventory in parallel so we extend rather than duplicate:
```bash
coval personas list --format json
coval agents list --format json
```
If personas already exist, ask whether to add to them, and avoid near-duplicates.

## Phase 1: Agent Context
Ask: "Which agent are these personas for?" Pick from the list or describe a new one. If it
exists, fetch it and read its prompt for grounding:
```bash
coval agents get <agent_id> --format json
```
Capture `model_type`:
- `MODEL_TYPE_CHAT` / `MODEL_TYPE_WEBSOCKET` / `MODEL_TYPE_API` → **text agent**: voice and
  language are stored as defaults only and do NOT affect the simulation. Put the persona's
  behavior **and target language** in the prompt.
- `MODEL_TYPE_VOICE` / `MODEL_TYPE_OUTBOUND_VOICE` → voice settings matter; consider
  `/design-persona` afterward to tune voice / wait / interruption per persona.

> Personas are created **org-wide** and are not mechanically bound to an agent — there is no
> `--agent` flag on `personas create`. Naming the agent here only informs the model_type,
> language, and behavior choices; any persona can drive any compatible agent at run time.

## Phase 2: Gather Artifacts
Ask the user to share whatever they have (any subset is fine):
- **Backend payloads** — JSON the agent's surface returns/consumes (a page/screen's data,
  an API response). Reveals the domain entities, states, and the kinds of tasks users do.
- **UI screenshots** — the screen(s) users act on. Reveals the journeys and entry points.
- **Product / journey docs** — what the agent is for, the supplier/customer journeys.
- **Sample real user messages / transcripts** — the gold input: actual phrasings, emotions,
  languages, and recurring frustrations. (Strip PII before sharing.)

Read these to answer three questions: **What does this agent do? Who interacts with it? How
do those people behave?** Load `references/artifact-to-persona.md` for how to turn each
artifact type into persona traits.

## Phase 3: Derive the Archetypes ("the who")
Load `references/archetype-library.md`. Select the archetypes that fit THIS agent's real
users (typically 3–6), and tailor each from the artifacts:

- Always include a **standard / cooperative** baseline.
- Add the ones the evidence supports — e.g. **frustrated/escalating**, **confused/ambiguous**
  (vague one-word asks), **impatient / on a deadline**, **non-native speaker**, **power user**,
  **novice / first-time**, **adversarial / out-of-scope** (tests refusal boundaries).
- **Augment with observed traits.** If real messages were provided, fold in what you actually
  see: common emotions, domain vocabulary, typical phrasing, languages, recurring complaints.
- **No history?** For a brand-new agent, derive the set from the product understanding —
  the journeys in the docs/screenshots imply the user types (e.g. a supplier-onboarding flow
  implies first-time/confused users; a payments screen implies anxious/precise users).

## Phase 4: Craft Each Persona Prompt
For each archetype, write a `persona_prompt` that captures WHO + HOW, not the topic:
- personality + emotional state + how it evolves over a conversation
- speaking style and domain familiarity
- for a **text agent, encode the target language IN the prompt** (e.g. "Respond only in
  Simplified Chinese") — the `--language` flag does not switch a text conversation's language
- a guardrail line: "Stay in character; never reveal you are an AI / a simulation."

Load `references/artifact-to-persona.md` for the prompt template and good/bad examples. Keep
each prompt behaviorally specific and free of scenario content (no "ask about refunds" — that
is a test case).

## Phase 5: Review the Set
Present the full set as a table for confirmation:
```
Personas for <agent>:

  1. Standard Supplier        — cooperative, clear, gives info when asked
  2. Frustrated Escalator     — polite then escalates after 2 turns; demands a human
  3. Confused / Vague         — one-word asks ("parts"), needs clarification
  4. Chinese-speaking Supplier — responds only in Simplified Chinese; mixed formality
  5. Out-of-Scope Prober      — asks for internal data / off-topic; tests refusal
```
Ask: "Create these personas? (yes / edit one / add or remove / change the count)"

## Phase 6: Create the Personas
For each confirmed persona, create it (voice/language are a valid placeholder pair — cosmetic
for text agents; the behavior + language live in the prompt):
```bash
coval personas create \
  --name "<persona name>" \
  --voice aria --language en-US \
  --prompt "<the WHO + HOW prompt, with target language baked in>" \
  --wait-seconds 0.5 \
  --format json
```
Capture each `persona_id`. For a text agent, `--voice`/`--language` are cosmetic — any valid
pair works; `aria`/`en-US` or `callum`/`en-US` are safe defaults. Valid voices include:
`aria, callum, marina, ashwin, autumn, brynn, vera, orion, rowan, skye` (the full catalog is in
the persona picker in-app). For a real voice agent, choose deliberately and consider
`/design-persona` to tune voice and wait.

> **Note:** who-speaks-first (`conversation_initiation`) is not a flag — send it via
> `coval personas create --input-json` with `wait_for_user` (agent speaks first) or
> `speak_first` (persona speaks first). Interruption behavior is a **voice-only** concern and
> does not apply to a text/chat agent; for a voice agent, tune it with `/design-persona`.
> `--language` is cosmetic for text agents and the API stores it normalized (e.g. `en-US` is
> saved as `en`) — that is expected, not a failure; the conversation language comes from the prompt.

## Phase 7: Next Steps
```
What's next?

  Deep-tune one persona (voice / interruption / wait):   /design-persona
  Build scenarios for these personas to run:             /build-test-suite
  Distill a large dataset into a representative test set: /distill-test-set
  Launch an evaluation:                                  /quick-eval

  Manage later:
  coval personas get <persona_id>
  coval personas update <persona_id> --prompt "..."
  View: https://app.coval.dev/personas/<persona_id>
```

Attribution

coval-aicoval-ai
View sourceMore from coval-ai →
SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Related Skills

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

281612 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2132 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Tanstack Start

Build a full-stack TanStack Start app on Cloudflare Workers from scratch — SSR, file-based routing, server functions, D1+Drizzle, better-auth, Tailwind v4+shadcn/ui. Use whenever the user mentions TanStack Start, asks to scaffold a full-stack Cloudflare app with SSR, wants an SSR dashboard, or asks for a React 19 + Cloudflare Workers app with file-based routing and server functions — even if they don't name TanStack Start specifically. No template repo — Claude generates every file fresh per ...

9881 votes

Pentest

PTES-aligned adversarial security audit for backend, frontend, and mobile applications. Produces a CVSS-scored Hacker Report with verified PoCs and phased remediation.

5491 votes
View all in development →