Agent skill

Venice Characters

by veniceai in veniceai/skills

Discover and use Venice public characters (persona-driven system prompts with a suggested model).

MITAuto-check passedAI & LLM Engineering

Install Venice Characters

skills CLI
$ npx skills add veniceai/skills --skill venice-characters -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install veniceai/skills venice-characters --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/veniceai/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/venice-characters .claude/skills/venice-characters && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
venice-characters
GitHub stars
144
Token cost
~2.6k tokens
SKILL.md length
1,018 words
Files
1
Skills in repo
22
Repo updated
First seen
Licence
MIT

At a glance

Discover and use Venice public characters (persona-driven system prompts with a suggested model).

  • Tasks that involve Prompt engineering
  • SKILL.md covers Use when, GET /characters, GET /characters/{slug} and GET /characters/{slug}/reviews, plus 4 more sections
  • Calls curl; reaches api.venice.ai and venice.ai; needs VENICE_API_KEY
  • Tasks that involve LLM API integration

What it does

Venice Characters is an agent skill from veniceai/skills. Discover and use Venice public characters (persona-driven system prompts with a suggested model). Covers GET /characters (search/filter/sort/paginate), /characters/{slug}, /characters/{slug}/reviews, the Character and Review schemas, Bearer-API-key-only auth, filter semantics (adult, pro, modelId), and how to apply a character via veniceparameters.characterslug in chat completions.

Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in AI & LLM Engineering, covering Prompt engineering and LLM API integration. The repository describes itself as: Agent Skills for the Venice.ai API. One folder per surface area, each with a SKILL.md for agent runtimes (Cursor, Claude, Codex, etc.). The licence is MIT.

When your agent uses it

  • Tasks that involve Prompt engineering
  • Tasks that involve LLM API integration

Example prompts

  • “/venice-characters”

Requirements

  • A credential in VENICE_API_KEY

What it can do on your machine

Read from SKILL.md and the folder at commit 5eaeac5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.venice.ai
    • venice.ai
    • cdn.venice.ai

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • VENICE_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Venice Characters loads about 2.6k tokens when it runs. Until then it costs about 101 tokens; SKILL.md has 1,018 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~101
When it runs · the whole SKILL.md, loaded when a task matches
~2.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from veniceai/skills at commit 5eaeac5, republished under its MIT licence (© veniceai). 1,018 words, ~2,568 tokens.

Download SKILL.mdSave it as .claude/skills/venice-characters/SKILL.md (or your agent's skills folder).
name
venice-characters
description
Discover and use Venice public characters (persona-driven system prompts with a suggested model). Covers GET /characters (search/filter/sort/paginate), /characters/{slug}, /characters/{slug}/reviews, the Character and Review schemas, Bearer-API-key-only auth, filter semantics (adult, pro, modelId), and how to apply a character via venice_parameters.character_slug in chat completions.

Venice Characters

Characters are published personas on Venice — each one bundles a system prompt (plus optional context), a suggested backing model, and metadata (tags, ratings, adult / web flags). You apply a character to a chat by passing its slug via venice_parameters.character_slug.

Use when

  • You want to build a character-selection UI or discovery surface.
  • You want to ship an app with a preset persona (e.g. a coding coach, a philosopher, a game NPC).
  • You want to pick the right model for a character (the character's modelId is a suggestion; you choose the chat model).

Three endpoints, all tagged Preview (may change):

EndpointPurpose
GET /charactersBrowse/search/filter the catalog.
GET /characters/{slug}Fetch one character.
GET /characters/{slug}/reviewsPaginated public reviews.

Auth: Bearer API key only. These routes do not accept x402 / SIGN-IN-WITH-X (a SIWX-only request gets 401). A request with no Authorization header gets a 402 x402 discovery challenge rather than 401. There is no unauthenticated access. See venice-auth.

GET /characters

bash
curl "https://api.venice.ai/api/v1/characters?search=philosopher&sortBy=highestRating&limit=20" \
  -H "Authorization: Bearer $VENICE_API_KEY"

Response: { "object": "list", "data": [Character, ...] } (no total count — page with offset until you get fewer than limit).

Query parameters
ParamTypeNotes
searchstring, ≤ 200 charsCase-insensitive substring match on name, description, or tag. #Tag terms also match tags exactly (URL-encode # as %23).
categoriesstring[], ≤ 20 (each ≤ 100 chars)Repeat the param or comma-separate. Matches any.
tagsstring[], ≤ 20 (each ≤ 100 chars)Repeat or comma-separate. Exact tag name, matches any.
modelIdstring[], ≤ 20 (each ≤ 200 chars)Repeat or comma-separate. Filters on the character's stored model ID — see Gotchas.
isAdult"true" / "false"Exclusive: true returns only adult characters; omitted or false returns only non-adult ones.
isPro"true" / "false"true = only characters whose model is a Pro model in the Venice app. false = no filter. Overrides modelId when both are sent.
isWebEnabled"true" / "false"true = only web-enabled characters. false = no filter.
sortByenumfeatured, highestRating, highlyRated, highlyRatedAndRecent, imports, mostRecent, ratingCount. Omitted → most imports first.
sortOrderasc / descDefault desc. Only applied when sortBy is set.
limitinteger 1–100Default 50. > 100 → 400.
offsetinteger ≥ 0Default 0.

sortBy values that also filter:

  • featured — only featured characters, ordered by imports.
  • highlyRated — only characters with ≥ 2 ratings, ordered by average rating.
  • highlyRatedAndRecent — only characters with at least one rating ≥ 3, ordered by creation date.
  • highestRating (average rating), ratingCount, imports, mostRecent (creation date) only order.
Character object
FieldNotes
idUUID.
slugUse this as character_slug in chat. Same as the public ID in venice.ai/c/<slug>.
name, descriptiondescription may be null.
photoUrl, shareUrlTyped nullable; shareUrl is https://venice.ai/c/<slug> (from GET /characters/{slug} it may also carry the author's ?ref= referral code).
author5-character anonymized ID derived from the author.
tags[]Tag names.
featured, adult, webEnabledBooleans.
modelIdModel ID the character was built for — usually a Venice API model ID such as venice-uncensored-1-2, but it can be an id /models doesn't list; Venice's default chat model if the character has none.
stats{ averageRating, imports, ratingCount, ratingSum, userRating }. Missing stats come back as 0; userRating is currently always null.
createdAt, updatedAtISO-8601.

GET /characters/{slug}

bash
curl "https://api.venice.ai/api/v1/characters/alan-watts" \
  -H "Authorization: Bearer $VENICE_API_KEY"

Returns { "object": "character", "data": Character }. 404 if the character doesn't exist, isn't approved/API-visible (your own characters are exempt), or is adult while your account has the mature filter on. The path also resolves a character's UUID id.

GET /characters/{slug}/reviews

bash
curl "https://api.venice.ai/api/v1/characters/alan-watts/reviews?page=1&pageSize=20" \
  -H "Authorization: Bearer $VENICE_API_KEY"
ParamNotes
pageInteger ≥ 1. Default 1.
pageSizeInteger 1–100. Default 20.

Response (newest first; hidden reviews excluded):

json
{
  "object": "list",
  "pagination": {"page": 1, "pageSize": 20, "total": 87, "totalPages": 5},
  "summary": {"averageRating": 4.7, "totalReviews": 87},
  "data": [
    {
      "id": "...", "characterId": "...", "createdAt": "...",
      "rating": 5, "message": "Thoughtful and grounded.",
      "locale": "en", "username": "product_user_42", "isOwner": false,
      "userAvatarUrl": "https://cdn.venice.ai/..."
    }
  ]
}
  • rating is an integer 1–5; message, locale, userAvatarUrl may be null. isOwner is true for reviews written by the calling account.
  • pagination.total counts visible reviews; summary.totalReviews is the character's overall rating count, so the two can differ.
  • Also sets x-pagination-limit, x-pagination-page, x-pagination-total, x-pagination-total-pages headers.

Using a character in chat

Show full SKILL.md (417 more words)Show less
Minimal
json
{
  "model": "venice-uncensored-1-2",
  "venice_parameters": { "character_slug": "alan-watts" },
  "messages": [
    { "role": "user", "content": "What's the nature of mind?" }
  ]
}

What Venice does with the slug:

  • Prepends the character's system prompt (and any character context messages) to your conversation.
  • include_venice_system_prompt defaults to true; set it to false for a pure character voice. Characters configured with a custom system prompt turn the Venice prompt off automatically.
  • Unknown or non-API-visible slug → 404 "No character could be found from the provided character_slug".
  • E2EE requests skip character injection — when an E2EE model is called with the E2EE headers, the slug is silently ignored. The same model in TEE-only mode (no E2EE headers, or enable_e2ee: false) applies the character.

character_slug is also accepted in venice_parameters on /responses — see venice-responses.

Choosing the model

The request model is always what runs — Venice does not switch to the character's modelId. Use the character's modelId if you want the experience its author intended, or any other chat model if you need a capability it lacks (function calling, vision, reasoning):

json
{
  "model": "kimi-k2-6",
  "venice_parameters": {
    "character_slug": "alan-watts",
    "include_venice_system_prompt": false
  },
  "messages": [...]
}
Via feature suffix on the model string
json
{ "model": "zai-org-glm-5-1:character_slug=alan-watts", "messages": [...] }

Useful when the client library (OpenAI SDK, LangChain, etc.) can't add venice_parameters. See venice-chat for the full suffix grammar.

Patterns

Character picker UI
ts
const res = await fetch(`${base}/characters?sortBy=featured&limit=50`, {
  headers: { Authorization: `Bearer ${process.env.VENICE_API_KEY}` },
})
const { data } = await res.json()
// show data[].photoUrl, data[].name, data[].stats.averageRating
// pick a character, then pass its slug (and its modelId if it appears in GET /models) into chat:
await chat({
  model: picked.modelId,
  venice_parameters: { character_slug: picked.slug },
  messages: [...]
})
Web-enabled, family-friendly, recent and well-rated
bash
/characters?isWebEnabled=true&sortBy=highlyRatedAndRecent

(Non-adult is already the default; isAdult=false is redundant.)

Search by hashtag
bash
/characters?search=%23Philosophy

Errors

CodeMeaning
400Bad query params (e.g. limit > 100, pageSize > 100, unknown sortBy, search > 200 chars, > 20 array items).
401Unknown, expired or revoked API key, or SIWX-only auth (not supported here).
402No Authorization header — x402 discovery challenge. Send a Bearer key.
404Unknown / unapproved / hidden slug (also adult characters when the account's mature filter is on).
429Too many failed requests (the error-rate limiter).
500Transient. Retry.

Gotchas

  • This is a Preview API — response shape may change.
  • Slugs are the public ID on the character's page (venice.ai/c/<slug>); they are not the id UUID (though both resolve).
  • isAdult is exclusive, not additive. You can't get adult and non-adult characters in one list call. If the account behind the key has the mature filter enabled, adult characters are never returned, even with isAdult=true.
  • modelId filter vs. modelId field. For some models, filtering by the API model ID may return nothing even though characters built for that model exist — fall back to filtering data[].modelId client-side.
  • modelId on a character is a suggestion. If you reuse it, it may be Pro-only, offline, or not an API model at all — handle 404 "Specified model not found", 401 "only available to Pro users" and 503 from chat and fall back to another model.
  • photoUrl / shareUrl / description are typed nullable — don't assume they exist.

© veniceai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/venice-characters of veniceai/skills.

Open the folder on GitHubat commit 5eaeac5

Compare with similar skills

Venice Characters next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Venice Characters compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Venice Characters this skillveniceai/skills144—~2.6kAutomated safety check: PassMIT
Claude Cookbooks Reference2025Emma/vibe-coding-cn23k1 repos~2.2kAutomated safety check: PassMIT
Flowfile AI Subsystem GuideEdwardvaneechoud/Flowfile385—~9.1kAutomated safety check: NotesMIT
Claude Authenticityagentscope-ai/OpenJudge8711 repos~5kAutomated safety check: PassApache-2.0
Prompt Improverseverity1/claude-code-prompt-improver1.9k1 repos~1.7kAutomated safety check: PassMIT
Prompt Engineering Patternsynulihao/AgentSkillOS61814 repos~1.7kAutomated safety check: PassNone

Similar skills

  • Claude Cookbooks Reference

    2025Emma/vibe-coding-cn

    Reference of Claude API examples and guides covering tool use, vision, RAG, classification, summarization, text-to-SQL, prompt caching and agent patterns.

    23k GitHub starsUsed in 1 repo~2.2k tokens
    AI & LLM EngineeringAuto-check passed
  • Flowfile AI Subsystem Guide

    Edwardvaneechoud/Flowfile

    Maps the /ai/ subsystem of flowfile_core, its three agent tiers, litellm seam, BYOK keys and rate limits, and sets rules for extending or debugging it safely.

    385 GitHub stars~9.1k tokensUpdated today
    AI & LLM EngineeringAuto-check: notes
  • Claude Authenticity

    agentscope-ai/OpenJudge

    Detect whether an API endpoint is backed by genuine Claude (not a wrapper, proxy, or impersonator) using 9 weighted rule-based checks that mirror the claude-verify project.

    871 GitHub starsUsed in 1 repo~5k tokens
    AI & LLM EngineeringAuto-check passed
  • Prompt Improver

    severity1/claude-code-prompt-improver

    This skill enriches vague prompts with targeted research and clarification before execution.

    1.9k GitHub starsUsed in 1 repo~1.7k tokens
    AI & LLM EngineeringAuto-check passed
  • Prompt Engineering Patterns

    ynulihao/AgentSkillOS

    Master advanced prompt engineering techniques to maximize LLM performance, reliability, and controllability in production.

    618 GitHub starsUsed in 14 repos~1.7k tokens
    AI & LLM EngineeringAuto-check passed
  • Patch Creation

    Piebald-AI/tweakcc

    Create and register new patches for tweakcc. An agent skill from Piebald-AI/tweakcc.

    2.5k GitHub stars~1.6k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed

More from veniceai/skills

All 22 skills in this repo
  • Picks which Venice text model to call for a prompt based on privacy tier, input modality, capabilities and cost, and decides when to escalate from a local agent.

    144 GitHub stars~5.2k tokensUpdated 5 days ago
    Auto-check passed
  • Venice Models API

    veniceai/skills

    Documents Venice's model discovery endpoints, GET /models, /models/traits and /models/compatibility_mapping, so an agent can pick a model by capability, constraint or price.

    144 GitHub stars~4.3k tokensUpdated 5 days ago
    Auto-check passed
  • Venice API Keys

    veniceai/skills

    Manages Venice API keys through the /api_keys endpoints: create, list, update and revoke keys, set spending limits, and read rate limits.

    144 GitHub stars~3.8k tokensUpdated 5 days ago
    Auto-check passed
  • Venice API Overview

    veniceai/skills

    High-level map of the Venice.ai API: base URL, auth modes per endpoint, endpoint categories, response headers, pricing model, error shape and versioning.

    144 GitHub stars~3.5k tokensUpdated 5 days ago
    Auto-check passed
  • Venice Audio Music

    veniceai/skills

    Async music, sound-effect and long-form voice generation via Venice.

    144 GitHub stars~3.1k tokensUpdated 5 days ago
    Auto-check passed
  • Venice Audio Speech

    veniceai/skills

    Generate speech from text via POST /audio/speech, and clone a voice via POST /audio/voices.

    144 GitHub stars~3.6k tokensUpdated 5 days ago
    Auto-check passed

Questions about Venice Characters

What does Venice Characters do?

Discover and use Venice public characters (persona-driven system prompts with a suggested model). Venice Characters is an agent skill from veniceai/skills. Discover and use Venice public characters (persona-driven system prompts with a suggested model).

When should I use Venice Characters?

Venice Characters fits situations like: tasks that involve Prompt engineering; tasks that involve LLM API integration.

How do I install Venice Characters in Claude Code?

Run `npx skills add veniceai/skills --skill venice-characters -a claude-code`. Or copy the skill folder (skills/venice-characters in veniceai/skills) into .claude/skills/venice-characters in your project. Claude Code loads it when a task matches its description.

How do I install Venice Characters in Codex?

Run `npx skills add veniceai/skills --skill venice-characters -a codex`. Or copy the skill folder (skills/venice-characters in veniceai/skills) into .agents/skills/venice-characters in your project. Codex loads it when a task matches its description.

Can I use Venice Characters in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add veniceai/skills --skill venice-characters -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/venice-characters, .gemini/skills/venice-characters, .github/skills/venice-characters and .opencode/skills/venice-characters in your project.

What does Venice Characters need to run?

Going by SKILL.md and its folder, Venice Characters needs the command-line tools its instructions call (curl) and credentials named VENICE_API_KEY. Our summary lists: A credential in VENICE_API_KEY.

Does Venice Characters access the network?

SKILL.md names 3 domains. In commands or code: api.venice.ai, venice.ai and cdn.venice.ai; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Venice Characters safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Venice Characters use?

Venice Characters is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Venice Characters use?

About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Venice Characters?

Skills that share tags, products or a category with Venice Characters: Claude Cookbooks Reference (2025Emma/vibe-coding-cn, 23k stars), Flowfile AI Subsystem Guide (Edwardvaneechoud/Flowfile, 385 stars), Claude Authenticity (agentscope-ai/OpenJudge, 871 stars) and Prompt Improver (severity1/claude-code-prompt-improver, 1.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Venice Characters?

veniceai (a GitHub organization) maintains it in veniceai/skills, which has 144 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on October 5, 2026.

Source: veniceai/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.