Agent skill

Pixel Face

by Cotal-AI in Cotal-AI/Cotal

Create or improve a 32×32 pixel-art persona face for the Frontier Faces demo (examples/04-frontier-faces/personas.mjs) — the animated agent avatars rendered by face-term.mjs / the browser…

Apache-2.0Auto-check passedAgent Workflows

Install Pixel Face

skills CLI
$ npx skills add Cotal-AI/Cotal --skill pixel-face -a claude-code

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

GitHub CLI
$ gh skill install Cotal-AI/Cotal pixel-face --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/Cotal-AI/Cotal.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/pixel-face .claude/skills/pixel-face && 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
pixel-face
GitHub stars
313
Token cost
~1.5k tokens
SKILL.md length
677 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
Apache-2.0

At a glance

Create or improve a 32×32 pixel-art persona face for the Frontier Faces demo (examples/04-frontier-faces/personas.mjs) — the animated agent avatars rendered by face-term.mjs / the browser…

  • Works in 5 steps: Pick a key. If you have a photo, save it… → Hand-edit a /tmp/-draft.mjs (export… → render-png → Read the PNG → compare to… → …
  • The user asks to add a new persona/face/avatar
  • SKILL.md covers Where things are, Conventions (condensed — full…, Tools (exact) and Create a new persona, plus 3 more sections
  • Calls node and python3

What it does

Pixel Face is an agent skill from Cotal-AI/Cotal. Create or improve a 32×32 pixel-art persona face for the Frontier Faces demo (examples/04-frontier-faces/personas.mjs) — the animated agent avatars rendered by face-term.mjs / the browser <cotal-face / the gallery. Use when the user asks to add a new persona/face/avatar, improve an existing one (hair, eyes, likeness, expression), make it "look more like" someone, or fix a face that "doesn't read". Drives the example's own tools (img2rows.mjs, render-png.mjs) and follows FACE-DESIGN.md; uses a multi-agent variant…

Its SKILL.md is about 1.5k 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 Agent Workflows, covering Design tokens, Sprites and pixel art and Multi-agent orchestration. It works with Model Context Protocol. The repository describes itself as: The open standard for agent coordination. The licence is Apache-2.0.

When your agent uses it

  • The user asks to add a new persona/face/avatar
  • Improve an existing one (hair
  • Make it look more like someone
  • Fix a face that doesnt read

Example prompts

  • “look more like”
  • “t read”
  • “/pixel-face”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Pick a key. If you have a photo, save it as assets/.png and img2rows it for a rough base;
  2. Hand-edit a /tmp/-draft.mjs (export const entry) following the conventions above.
  3. render-png → Read the PNG → compare to the reference → iterate until all 7 states read well.
  4. Splice the finished entry into personas.mjs (keep the file's style; reuse color keys).
  5. Review in the gallery; confirm no other persona changed.

What it can do on your machine

Read from SKILL.md and the folder at commit bf3a7b2. 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:

    • node
    • python3

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

  • Network

    No URLs in SKILL.md.

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

  • Credentials

    Names no API keys, tokens, secrets or passwords.

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

Context cost

Pixel Face loads about 1.5k tokens when it runs. Until then it costs about 137 tokens; SKILL.md has 677 words of instructions outside code blocks.

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

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 Cotal-AI/Cotal at commit bf3a7b2, republished under its Apache-2.0 licence (© Cotal-AI). 677 words, ~1,506 tokens.

Download SKILL.mdSave it as .claude/skills/pixel-face/SKILL.md (or your agent's skills folder).
name
pixel-face
description
Create or improve a 32×32 pixel-art persona face for the Frontier Faces demo (examples/04-frontier-faces/personas.mjs) — the animated agent avatars rendered by face-term.mjs / the browser <cotal-face> / the gallery. Use when the user asks to add a new persona/face/avatar, improve an existing one (hair, eyes, likeness, expression), make it "look more like" someone, or fix a face that "doesn't read". Drives the example's own tools (img2rows.mjs, render-png.mjs) and follows FACE-DESIGN.md; uses a multi-agent variant loop for likeness.

pixel-face — author & refine the Frontier Faces pixel art

A persona face is pure data in examples/04-frontier-faces/personas.mjs (one entry per persona). The same data drives the terminal renderer (face-term.mjs), the browser element (web/cotal-face.js), and the PNG tool — so edit personas.mjs once and it's live everywhere. Always work from examples/04-frontier-faces/.

Where things are

  • personas.mjs — the entries (rows, colors, glow, mouths, expr, eyes, lines). Single source of truth.
  • FACE-DESIGN.md — the full conventions (grid zones, color keys, eye recipe, visemes). Read it first.
  • tools/img2rows.mjs — rough a reference photo into a 32×32 rows+palette.
  • tools/render-png.mjs — render a 7-state contact sheet (PNG) for review. This is the validator.
  • tools/face-template.mjs — copy-me starter entry that encodes the conventions.
  • gallery.html (all personas, original-vs-pixel) and preview.html?p=<key> (one persona) — served via python3 -m http.server or tools/serve-wall.mjs; for visual QA.
  • assets/<persona-key>.<ext> — reference photos. Gitignored / local-only — never commit them.

Persona key ≠ agent name. The roster uses agent-file basenames; the face comes from each agent's face: frontmatter: elon→musk, steve→jobs, rayan→ray (others match). Persona keys: neon david ray sven garry jobs musk dario mira bernie michelle.

Conventions (condensed — full detail in FACE-DESIGN.md)

  • Grid 32×32, . = transparent, face centered ~col 15. Zones: hair 1–9 · brows 10–11 (drawn by expr, not rows) · eyes 12–13 (drawn by eyes()) · nose 14–16 · mouth 18–20 (drawn by mouths) · chin 21–24 · collar 26–31.
  • Color keys: skin P light / S mid / s shadow · E pupil · W/w catchlight · R lip · m lip-shadow · b brow · h hair · L cyan + M magenta = the cotal glow ribbon (glow: { L: 8, M: 6 } blurs them). Use rng(row, c1, c2, key) (exported from personas.mjs) for runs.
  • Eye recipe: 2-wide iris (E) on the iris row; row below = catchlight (W/w, OUTER corner)
    • lid-shadow (s, INNER). jobs is the "alive" benchmark — match its eye, don't use flat black blocks.
  • Surprise = raised brows + open mouth, eyes stay open (growing the iris behind glasses looks wrong). Don't reintroduce a wide eye style.
  • The face renders at a fixed 32×16 (not scaled to the pane), so faces look the same size as long as the pane is ≥ ~32 cols.

Tools (exact)

sh
# rough a reference photo → 32×32 rows + palette (macOS: uses sips)
node tools/img2rows.mjs --in assets/<key>.png --w 24 --h 30 [--colors 12] [--x0 4] [--y0 0]

# render a 7-state contact sheet (neutral·happy·sad·angry·surprised·talking·blink) to review
node tools/render-png.mjs --file <draft>.mjs --out /tmp/<key>.png --scale 8     # draft: export const entry = {…}
node tools/render-png.mjs --file personas.mjs --persona <key> --out /tmp/<key>.png --scale 8   # existing

A draft module must export const entry = {…} and (if it uses rng in expr/mouths) import { rng } from '/abs/path/examples/04-frontier-faces/personas.mjs'. After every render, Read the PNG and compare it to assets/<key>.<ext>. Iterate.

Create a new persona

  1. Pick a key. If you have a photo, save it as assets/<key>.png and img2rows it for a rough base; otherwise copy tools/face-template.mjs.
  2. Hand-edit a /tmp/<key>-draft.mjs (export const entry) following the conventions above.
  3. render-png → Read the PNG → compare to the reference → iterate until all 7 states read well.
  4. Splice the finished entry into personas.mjs (keep the file's style; reuse color keys).
  5. Review in the gallery; confirm no other persona changed.
Show full SKILL.md (234 more words)Show less

Improve an existing persona

  1. Read its entry in personas.mjs + its reference assets/<key>.<ext> and the current render.
  2. Edit only the in-scope rows (e.g. hair = rows 1–9). Preserve eyes(), glasses/beard, expr, mouths, colors of other features, and the collar/glow — change the minimum.
  3. render-png the draft → Read → compare → iterate (≥3 passes). Then splice the rows back into personas.mjs and confirm the diff is limited to that entry.

Multi-agent variant loop (use for likeness — "doesn't look like them")

When matching a real person, generate options instead of guessing:

  1. Spawn ~3 subagents on the main working tree (NOT git worktrees — assets/ is gitignored, so reference photos are absent from a fresh worktree). Give each: the reference path, the current entry, the conventions, and a distinct direction.
  2. Each agent writes its OWN /tmp/<key>-<n>.mjs draft (never edits personas.mjs — avoids conflicts), renders it, Reads the PNG, compares to the photo, iterates, and returns the final rows.
  3. You pick the best, splice it in, review in the gallery. Refine one axis per pass (e.g. head shape, then hair). This is the loop used for garry/musk.

QA bar

  • Always review visually — the render-png contact sheet and the gallery.html original-vs-pixel view — never blind. Judge: does it read / look like the person across all 5 expressions + blink?
  • jobs is the reference standard. Keep faces front-facing/symmetric unless intentional.
  • Don't commit assets/ (reference photos stay local). Persona edits to personas.mjs ARE committable.

© Cotal-AI, Apache-2.0. 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 .claude/skills/pixel-face of Cotal-AI/Cotal.

Open the folder on GitHubat commit bf3a7b2

Compare with similar skills

Pixel Face 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.

Pixel Face compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pixel Face this skillCotal-AI/Cotal313—~1.5kAutomated safety check: PassApache-2.0
Codex with ChatGPT Planning LoopXiaoDuoYa/codex-with-chatgpt7.1k—~11kAutomated safety check: NotesMIT
MemPalace Task HandoffMemPalace/mempalace59k—~1.9kAutomated safety check: PassMIT
agtx One-Shot Project Runnerfynnfluegge/agtx1.7k—~3.8kAutomated safety check: PassApache-2.0
Puppetmaster Agent Orchestrationprofessorpalmer/Puppetmaster467—~3.2kAutomated safety check: PassMIT
Agent Manager Fleet TUIYoanWai/agent-manager578—~1kAutomated safety check: PassApache-2.0

Similar skills

  • Codex with ChatGPT Planning Loop

    XiaoDuoYa/codex-with-chatgpt

    Uses ChatGPT in the browser as the planning and review brain for a Codex session, with Codex keeping all execution and ChatGPT reading the workspace through a bridge.

    7.1k GitHub stars~11k tokensUpdated 8 days ago
    Agent WorkflowsAuto-check: notes
  • MemPalace Task Handoff

    MemPalace/mempalace

    Creates, hands off, claims, executes and closes agent tasks through the MemPalace logstream, with approval of the exact task before it is recorded.

    59k GitHub stars~1.9k tokensUpdated 2 days ago
    Agent WorkflowsAuto-check passed
  • Runs a whole project unattended on an agtx kanban board, decomposing the goal, starting tasks, unblocking workers and merging each result.

    1.7k GitHub stars~3.8k tokensUpdated 7 days ago
    Agent WorkflowsAuto-check passed
  • Puppetmaster Agent Orchestration

    professorpalmer/Puppetmaster

    Operates and supervises Puppetmaster, a multi-agent orchestrator, through its MCP tools or CLI, picking the right verb for edits, reviews, audits and long-running jobs.

    467 GitHub stars~3.2k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Agent Manager Fleet TUI

    YoanWai/agent-manager

    Runs several coding-agent CLIs as real tmux sessions in one terminal UI, color-coded by whether each is working, waiting, idle or blocked.

    578 GitHub stars~1k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Generate Harness Dsl

    QoderAI/better-harness

    Generate, revise, or review complete Harness as Code .harness files when a coding-agent workflow, agent role, skill, tool contract, MCP connection, runtime, or deployment must be compiler-valid and…

    2.4k GitHub stars~761 tokensUpdated yesterday
    Agent WorkflowsAuto-check passed

More from Cotal-AI/Cotal

  • Cotal Setup

    Cotal-AI/Cotal

    Set up Cotal on this machine: install it, start a local agent mesh (NATS + JetStream), verify it, and put an agent on it.

    313 GitHub stars~442 tokensUpdated today
    Auto-check passed
  • Team Topology

    Cotal-AI/Cotal

    Define a multi-agent team for ANY task on ANY system as an explicit deployment topology - pick the shape from the task's dominant risk, specify the runtime/communication/trust layers, place model…

    313 GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Run several independent Cotal features concurrently by creating one Git worktree and one spawn-capable mesh manager per feature; each manager staffs a review panel in a dedicated channel, adds one…

    313 GitHub stars~5.3k tokensUpdated today
    Auto-check passed
  • Cold Review

    Cotal-AI/Cotal

    Write the brief for a single independent cold reviewer and grade what it returns, keeping it isolated from the panel that already graded the change.

    313 GitHub stars~4.2k tokensUpdated today
    Auto-check passed

Questions about Pixel Face

What does Pixel Face do?

Create or improve a 32×32 pixel-art persona face for the Frontier Faces demo (examples/04-frontier-faces/personas.mjs) — the animated agent avatars rendered by face-term.mjs / the browser…. Pixel Face is an agent skill from Cotal-AI/Cotal.mjs / the browser <cotal-face / the gallery.

When should I use Pixel Face?

Pixel Face fits situations like: the user asks to add a new persona/face/avatar; improve an existing one (hair; make it look more like someone; fix a face that doesnt read.

How do I install Pixel Face in Claude Code?

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

How do I install Pixel Face in Codex?

Run `npx skills add Cotal-AI/Cotal --skill pixel-face -a codex`. Or copy the skill folder (.claude/skills/pixel-face in Cotal-AI/Cotal) into .agents/skills/pixel-face in your project. Codex loads it when a task matches its description.

Can I use Pixel Face 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 Cotal-AI/Cotal --skill pixel-face -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pixel-face, .gemini/skills/pixel-face, .github/skills/pixel-face and .opencode/skills/pixel-face in your project.

What does Pixel Face need to run?

Going by SKILL.md and its folder, Pixel Face needs the command-line tools its instructions call (node and python3). Our summary lists: Python 3.

Does Pixel Face access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Pixel Face 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 Pixel Face use?

Pixel Face is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Pixel Face use?

About 1.5k tokens (SKILL.md is roughly 6k 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 Pixel Face?

Skills that share tags, products or a category with Pixel Face: Codex with ChatGPT Planning Loop (XiaoDuoYa/codex-with-chatgpt, 7.1k stars), MemPalace Task Handoff (MemPalace/mempalace, 59k stars), agtx One-Shot Project Runner (fynnfluegge/agtx, 1.7k stars) and Puppetmaster Agent Orchestration (professorpalmer/Puppetmaster, 467 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Pixel Face?

Cotal-AI (a GitHub organization) maintains it in Cotal-AI/Cotal, which has 313 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 9, 2026.

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