Skip to content
Back to skills

082 Claude 32bf512b

ASecurity

При создании/редактировании `.claude-plugin/plugin.json`:

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
toolsshellbashapi

Works with

  • api

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 082-claude_32bf512b --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 082 Claude 32bf512b?

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

Security grade badge for 082 Claude 32bf512b
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-082-claude-32bf512b/badge)](https://www.skillsdirectory.com/skills/tools-only-082-claude-32bf512b)

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

SKILL.md
# Правила проекта polyakov-claude-skills

## plugin.json — формат манифеста

При создании/редактировании `.claude-plugin/plugin.json`:

- **`author`** — ОБЯЗАТЕЛЬНО объект: `{"name": "Polyakov"}`. Строка вызывает ошибку валидации.
- **`skills`** — НЕ валидное поле. Не добавлять. Скиллы обнаруживаются автоматически из `skills/` директории.
- Эталонный формат:
  ```json
  {
    "name": "plugin-name",
    "version": "1.0.0",
    "description": "...",
    "author": {
      "name": "Polyakov"
    }
  }
  ```

## marketplace.json

- При добавлении нового плагина — обязательно добавить запись в `.claude-plugin/marketplace.json` → `plugins[]`, иначе плагин не будет виден через `/plugin install`.

## Shell-скрипты для облачной песочницы Claude

Скрипты скиллов исполняются в облачной песочнице Claude (cloud sandbox). Она имеет ограничения, которые ломают стандартные bash-подходы. Ниже — правила, выведенные из практики.

### Шелл и совместимость

- Шебанг: `#!/bin/sh`, не `#!/bin/bash`. В песочнице bash может отсутствовать.
- Никаких башизмов: `[[ ]]` → `[ ]`, `${BASH_SOURCE[0]}` → `$0`, `source` → `.`, `local` → переменные с префиксом `_funcname_`.
- Никаких внешних `source common.sh` — всё инлайнить в скрипт. Песочница может не разрешить чтение соседних файлов.
- Эталон: `plugins/fal-ai-image/skills/fal-ai-image/scripts/` (commit `6410d65`).

### Stdout буфер — главная ловушка

- Песочница имеет ограничение на размер stdout (~4–64 KB, точное значение — issue #48).
- Если скрипт выводит больше лимита — **молчаливый отказ**: "Error running command", без вывода и без stderr.
- Симптом: маленькие скрипты (quota.sh, ~200 байт вывода) работают, большие (top_requests.sh с JSON ~50 KB) — нет.

### Решение: temp file вместо переменной

```sh
# ПЛОХО — ответ API в переменной, echo | grep ломается на большом JSON
result=$(curl -s ...)
echo "$result" | grep ...

# ХОРОШО — ответ в файл, grep читает файл напрямую
TMPFILE="${TMPDIR:-/tmp}/result_$$.json"
trap 'rm -f "$TMPFILE"' EXIT
curl -s ... | tr -d '\n\r' > "$TMPFILE"
grep ... "$TMPFILE"
```

- `tr -d '\n\r'` нормализует JSON в одну строку для безопасного парсинга через grep/sed.
- `trap cleanup EXIT` гарантирует удаление файла.
- Переменная `$$` (PID) делает имя файла уникальным.

### Чеклист при создании нового скрипта

1. `#!/bin/sh` + `set -e`
2. Инлайн конфиг: `[ -f "$CONFIG" ] && . "$CONFIG"`
3. API-ответ → temp file, не переменная
4. Всё чтение данных — grep/sed по файлу, не `echo "$var" | ...`
5. Минимум stdout: таблицы ≤20 строк, остальное в CSV/файл
6. Никаких `local`, `[[ ]]`, `source`, массивов bash

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…