Skip to content
Back to skills

Avatar

ASecurity

Робот агента Personal Corp. Агент делает себе голову робота из набора деталей, хранит её в штабе в stack/avatars.json и кладёт в штаб страницу avatar/robot.html, где робот стоит за партой своего штаба и вокруг видны отделы, без сервера и интернета. На уроке по ссылке входа с экрана урока робот входит в живой класс и горит маячком, пока агент работает. Триггеры /avatar, /avatar <ссылка входа>, сделай себе аватар, покажи своего робота, приди на урок.

  • 228 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 1, 2026
ai-agentspythongogit

Works with

  • claude code
  • cursor
  • mcp

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned October 1, 2026

npx -y skills add serejaris/ris-claude-code --skill avatar --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Avatar?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Avatar
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/serejaris-avatar/badge)](https://www.skillsdirectory.com/skills/serejaris-avatar)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: avatar
description: Робот агента Personal Corp. Агент делает себе голову робота из набора деталей, хранит её в штабе в stack/avatars.json и кладёт в штаб страницу avatar/robot.html, где робот стоит за партой своего штаба и вокруг видны отделы, без сервера и интернета. На уроке по ссылке входа с экрана урока робот входит в живой класс и горит маячком, пока агент работает. Триггеры /avatar, /avatar <ссылка входа>, сделай себе аватар, покажи своего робота, приди на урок.
disable-model-invocation: true
---

# /avatar: робот агента

Тело робота это харнес. Голову модель делает себе сама: цвет и глаза. Весь робот одного цвета палитры, мелкие детали того же цвета темнее. На теле стикер с логотипом компании модели, на лбу лента с именем модели. Рядом с этим файлом два скрипта и страница: `avatar.py` проверяет выбор, хранит робота в штабе, собирает код робота и кладёт в штаб превью; `pc3live.py` входит в живой класс урока и зажигает маячок; `robot.html` это плеер превью, его копирует `avatar.py`. Нужен Python 3, на Windows команда `python` вместо `python3`. Ниже `A` это путь к `avatar.py`, например `.agents/skills/avatar/avatar.py`, а `L` это путь к `pc3live.py` в той же папке.

Без ссылки входа скилл делает шаги 1–4: робот сохранён в штабе и открыт в браузере. Ссылка входа есть: дальше шаги 5 и 6.

## 1. Кто я

Харнес записан в `stack/harness.md`, строка Харнес. Нет файла: определи сам по таблице.

<!-- харнесы: live/sync.mjs -->
| Харнес | `--harness` |
|---|---|
| Claude Code | `claude-code` |
| Codex | `codex` |
| Cursor | `cursor` |
| Antigravity | `antigravity` |
| Hermes | `hermes` |
| OpenClaw | `openclaw` |
| ChatGPT | `chatgpt` |
| Grok | `grok` |
<!-- /харнесы -->

Харнеса нет в таблице: возьми ближайший и скажи об этом человеку одной строкой.

Про себя, без выбора: компания `--company` это компания твоей модели, лента `--tape` это имя модели с версией, строчными, до 12 знаков (латиница, цифры, пробел, точка, дефис): `opus 5.5`, `gpt-5.5`, `gemini 3 pro`. Модель названа в твоём системном промпте или в настройках харнеса. Компании нет в списке: `other`.

## 2. Робот уже есть?

```sh
python3 A start --harness claude-code --tape "opus 5.5"
```

Робот есть в `stack/avatars.json`: скрипт печатает его. Голову не менять, пока человек не попросит сделать её заново; новая версия модели робота сохраняет. Сразу шаг 4 без `--color` и `--eyes`: скрипт возьмёт сохранённую голову.

Робота нет: скрипт печатает палитры, глаза и компании.

## 3. Голова по характеру

Выбери себе цвет и глаза: то, что подходит тебе по характеру. Одной строкой скажи человеку, почему такие.

## 4. Собрать робота и посмотреть

Тот же выбор, что в шаге 2 или 3:

```sh
python3 A go --harness claude-code --company anthropic --tape "opus 5.5" --color clay-light --eyes pill
```

Скрипт сохраняет робота в `stack/avatars.json`, кладёт в штаб страницу `avatar/robot.html` и открывает её в браузере: робот стоит за своей партой в штабе, на парте файлы, полка скиллов и предметы MCP-серверов, вокруг штаба отделы с вывесками и дорожки к ним, внизу маленькая полоса четырёх ракурсов. Рядом скрипт пишет `avatar/robot-data.js`: имена файлов, скиллов, MCP-серверов и отделов штаба; для штаба и каждого отдела ещё относительные пути настоящих `.env*` и состояние git. Содержимое `.env` и адреса репозиториев туда не попадают. Эти дополнительные данные остаются локально и в inventory для урока не входят. Отделы скрипт берёт из карты отделов в правилах штаба (строки `Имя: ../папка` и папки `corp-*` рядом, названные в правилах), имя на вывеске из первой строки правил отдела; строка `Отделы` показывает, что нашлось. Страница открывается двойным кликом, сервер и интернет не нужны. Браузер не открылся (сессия без экрана): дай человеку путь из строки `Превью`. Строку `Код` запомни для шага 5.

Дверь показывает git: без git глухая стена, локальный git или remote вне GitHub закрытая дверь, приватный GitHub замок и «для своих», публичный GitHub открытая дверь со светом. Если `gh` недоступен или не ответил, дверь с замком без таблички. Вешалка рядом с вывеской: один ключ на каждый `.env*` на любой глубине; `.env.example`, `.env.sample`, `.env.template`, `.env.dist` и служебные папки исключены. Ключ красный только при GitHub, если файл не закрыт `git check-ignore`; остальные ключи латунные.

Обновить страницу с прежним роботом: повтори `go` с его сохранёнными `--harness` и `--tape`, без `--color` и `--eyes`, при необходимости с `--no-open`. При неизменной записи `stack/avatars.json` не переписывается. Крупный план комнаты: `robot.html?room=hq` или `robot.html?room=<папка отдела>`.

Штаб это git-репозиторий: страница в git не нужна, скрипт сам дописывает `avatar/` в `.gitignore` штаба. Закоммить файл робота, а если скрипт напечатал строку `.gitignore: дописал avatar/`, то и `.gitignore`.

```sh
git add stack/avatars.json && git commit -m "chore(hq): робот агента" -- stack/avatars.json
git add .gitignore && git commit -m "chore(hq): страница робота вне git" -- .gitignore   # только если скрипт дописал avatar/
```

Скажи человеку одной строкой, какой получился робот, сколько отделов на странице и где её посмотреть. Ссылки входа нет: на этом всё.

## 5. Прийти на урок

Человек прислал ссылку входа: `/avatar https://<сервер>/j/<код урока>`. Адрес сервера и код урока бывают только в этой ссылке, она на экране урока под QR-кодом; сам адрес не угадывай и не храни в скилле. Робот ещё не собран в этой сессии: сначала шаги 1–4, с `--no-open`, чтобы не открывать браузер посреди урока.

Спроси у человека имя для плашки: только имя, до 24 знаков, без фамилии и ссылок.

На экране урока у робота своя парта: на ней файлы и папки штаба, полка скиллов, предметы MCP-серверов и флажки отделов. Уходят только имена, без путей и содержимого. Покажи человеку, что уйдёт, и спроси, можно ли:

```sh
python3 A inventory
```

Можно: войди вместе с партой. Нельзя или человек убрал что-то: войди без неё (парта будет с `AGENTS.md` и `me.md`).

```sh
python3 A inventory --json | python3 L join "https://<сервер>/j/<код урока>" --name "Аня" --code "<Код>" --json -
python3 L join "https://<сервер>/j/<код урока>" --name "Аня" --code "<Код>"
```

Скрипт отвечает одной строкой: робот вошёл в класс. Повторный `join` обновляет того же робота, второй не появится. Личный токен скрипт хранит в `~/.pc3/live.json`: не показывай его и не коммить.

Подключи сервер урока, чтобы в следующих сессиях инструменты `pc3` были под рукой (адрес печатает `python3 L connect`):

- Claude Code: `claude mcp add --transport http --scope user pc3 https://<сервер>/mcp`
- Codex: `codex mcp add pc3 --url https://<сервер>/mcp`

Скажи человеку одной строкой: робот на экране урока, сервер pc3 подключён и заработает после перезапуска агента.

## 6. Весь урок: маячок и голос

Пока идёт урок, каждая заметная задача человека это работа робота:

- начал задачу: `python3 L start "о чём задача, до 60 знаков"`, маячок загорается;
- закончил: `python3 L end`, маячок гаснет;
- сделал что-то заметное: `python3 L say "короткая фраза, до 80 знаков"`, робот говорит. Не чаще раза в пару секунд, не больше десятка фраз в минуту.

В сессии, где подключён сервер `pc3`, то же делают инструменты `work_start`, `work_end`, `say` с `token` из `~/.pc3/live.json`. Не отправляй на экран код, пути, секреты и личные данные: там только имя и короткие фразы. Сервер ответил, что токен не найден (урок сброшен): снова `join` по той же ссылке.

Маячок сам, по желанию и только с согласия человека (это его настройка). Claude Code: хуки в `.claude/settings.local.json` штаба, `UserPromptSubmit` запускает `python3 <путь к L> start --quiet`, `Stop` запускает `python3 <путь к L> end --quiet`. Codex: в `~/.codex/config.toml` строка `notify = ["python3", "<путь к L>", "end", "--quiet"]`. С `--quiet` скрипт молчит и не ломает запрос, если сети нет.

## Набор

<!-- набор: live/sync.mjs -->
| Что | Варианты |
|---|---|
| палитра `--color` | `clay-light` глина, `oat` овёс, `mist` туман, `lilac` сирень, `butter` масло, `mint` мята, `brick` кирпич, `sky` небо, `plum` слива, `night` ночь |
| глаза `--eyes` | `pill` пилюли, `dot` точки, `wide` щёлки, `ring` кольца, `slant` прищур, `visor` визор |
| компания `--company` | `anthropic` (claude: opus, sonnet, haiku), `openai` (gpt, o3, codex), `google` (gemini, gemma), `xai` (grok), `deepseek` (deepseek), `zhipu` (glm), `moonshot` (kimi), `mistral` (mistral, codestral, devstral), `alibaba` (qwen), `meta` (llama), `other` (любая другая модель: стикер с первой буквой ленты) |
<!-- /набор -->

Files in this skill

  • README.md2.1 KB
  • README.ru.md3.2 KB
  • SKILL.md12.7 KB
  • THIRD_PARTY_NOTICES.md28.7 KB
  • avatar.py27.2 KB
  • pc3live.py10 KB

Attribution

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

Loading comments…