chore · git:20260907.ad5db37 · 2026-09-07 · sha256 a3310605516eb0be
chore git:20260907.ad5db37A
Immutable. This exact content is served forever at /api/v1/blob/a3310605516eb0be.
---
name: chore
description: 'Capture a simple task that does not need planning (CHORE + TASK in readyToWork by default, or registration-only with --no-task). Use when PM mentions "simple task", "chore", "small task", "housekeeping", "quick task", "мелкая задача", "чора", or any request to log routine work without PRD/SPEC overhead. Trigger liberally — under-triggering pushes tiny work into freeform chat; over-triggering is recoverable (PM can delete).'
argument-hint: "[описание] [--no-task]"
---
# /polisade:chore [описание] [--no-task] — Простая задача
Быстрое добавление простой задачи, не требующей планирования. По умолчанию
создаёт пару `CHORE + TASK` (TASK идёт в `readyToWork`). Передай `--no-task`,
чтобы **только зарегистрировать** chore без TASK.
## Использование
```
/polisade:chore Увеличить контекстное окно до 128k
/polisade:chore Обновить README с новыми командами
/polisade:chore Удалить неиспользуемые зависимости
/polisade:chore Поправить форматирование в конфиге --no-task # только регистрация
```
- Default — как раньше: CHORE + TASK сразу. CHORE по определению «< 1 часа,
очевидная реализация», поэтому «сделать сейчас» — типичное намерение.
- С `--no-task` — только CHORE со статусом `ready`; для последующей
декомпозиции используй `/polisade:tasks CHORE-XXX`.
## Категории
| Категория | Примеры |
|-----------|---------|
| `config` | Изменение конфигурации, переменных окружения |
| `cleanup` | Удаление мусора, неиспользуемого кода |
| `upgrade` | Обновление версий, миграции |
| `docs` | Обновление документации (не создание новой) |
## Алгоритм
1. **Распарсь args.** Выдели `--no-task` (если есть), остаток склей в описание.
2. **Прочитай `.state/PROJECT_STATE.json`.** Извлеки
`settings.chore.autoCreateTask` (default: `true` если ключ отсутствует).
3. **Определи `create_task`:**
- `create_task = settings.chore.autoCreateTask and (not --no-task)`.
- Флаг `--no-task` побеждает настройку (и наоборот, если настройка
`false`, то флаг не нужен — TASK и так не создастся).
<!-- polisade:exec-denied CAPSULE BEGIN -->
> ⛔ **Вызов скрипта отклонён или не запустился** (`Command references protected path` / `Install directory is read-protected` / `Filesystem Guard` / `the tool's default permission is 'deny'`, отказ песочницы, ненулевой exit без вывода) — **STOP**.
> Процитируй отказ дословно. НЕ пересказывай по исходнику, что скрипт «сделал бы»; НЕ собирай dry-run вручную; НЕ переходи к apply/push/pr-create.
> НЕ транскрибируй скрипт (прочитать → записать копию в `/tmp` или в проект → запустить копию): копия не байт-идентична — уезжают классы символов в regex, форма возврата функций, пропадают целые функции — и молча меняется набор применённых изменений.
> Отказ инструмента — это отказ, а не результат. Доложи PM дословный текст отказа и сошлись на #127 (доставка скриптов в проект).
<!-- polisade:exec-denied CAPSULE END -->
4. **Вычисли next-id для CHORE** по протоколу из
`skills/tasks/references/compute-next-id.md`. Если `create_task` — также
вычисли next-id для TASK. При **Counter drift** — АБОРТ с рекомендацией
`${POLISADE_PYTHON:-python3} {plugin_root}/scripts/polisade_sync.py . --apply --yes`.
5. **Write-guard.** Перед `Write` проверь, что `backlog/chores/CHORE-{N}-slug.md`
не существует и `CHORE-{N}` отсутствует в `state.artifactIndex`. Если
`create_task` — та же проверка на `tasks/TASK-{M}-slug.md` / `TASK-{M}`.
При коллизии — АБОРТ.
6. **Создай файл `backlog/chores/CHORE-XXX-slug.md`.**
7. **Если `create_task` — создай `tasks/TASK-XXX-slug.md`** со ссылкой на CHORE.
⛔ **КРИТИЧНО: TASK-файл ДОЛЖЕН быть ровно `tasks/TASK-XXX-*.md` в корневой папке `tasks/`.**
НЕ в `docs/tasks/`, НЕ в `docs/TASK-*.md`, НЕ в `backlog/tasks/`.
`/polisade:implement` ищет таски ТОЛЬКО в корневой `tasks/`. Если папки нет — `mkdir -p tasks`.
8. **Инкрементируй счётчики.** `counters.json[CHORE] = N_chore` всегда;
`counters.json[TASK] = N_task` — только если `create_task`.
9. **Обнови `.state/PROJECT_STATE.json`:**
- Добавь CHORE со статусом `ready` (в `artifactIndex`).
- Если `create_task` — добавь TASK со статусом `ready` в `readyToWork`
и в `artifactIndex`, пропиши `parent: CHORE-XXX`.
10. **Выведи подтверждение** (два варианта — см. ниже).
## Opt-out TASK: флаг vs настройка
`/polisade:chore` **создаёт TASK по умолчанию** — это не изменилось в v2.21.0.
Отличие от `/polisade:debt`: для chore «сделать сейчас» — типичное намерение,
поэтому default сохранён. Но добавлен симметричный opt-out.
| Источник сигнала | Поведение |
|---|---|
| `/polisade:chore <d>` + `settings.chore.autoCreateTask: true` (default) | CHORE + TASK |
| `/polisade:chore <d> --no-task` | Только CHORE |
| `/polisade:chore <d>` + `settings.chore.autoCreateTask: false` | Только CHORE |
## Шаблон файла CHORE
Используй `docs/templates/chore-template.md`.
## Шаблон TASK при создании
Используется **только** когда TASK создаётся одновременно с CHORE (default
или `settings.chore.autoCreateTask: true`, не заблокировано `--no-task`).
```markdown
---
id: TASK-XXX
title: "[Описание из CHORE]"
status: ready
created: YYYY-MM-DD
parent: CHORE-XXX
priority: P3
depends_on: []
---
# Задача: [Описание]
## Контекст
**CHORE:** [[CHORE-XXX]]
## Что нужно сделать
[Копируется из CHORE]
## Критерии приёмки
- [ ] Изменения внесены
- [ ] Ничего не сломано
```
## Формат подтверждения
### С TASK (default)
```
═══════════════════════════════════════════
CHORE ДОБАВЛЕН
═══════════════════════════════════════════
ID: CHORE-001
Описание: Увеличить контекстное окно до 128k
Файл: backlog/chores/CHORE-001-context-window.md
Категория: config
Статус: ready
Создана задача: TASK-001
Файл: tasks/TASK-001-context-window.md
═══════════════════════════════════════════
СЛЕДУЮЩИЙ ШАГ:
→ /polisade:implement TASK-001 — выполнить сразу
→ /polisade:continue — автономная работа
═══════════════════════════════════════════
```
### Без TASK (`--no-task` или `settings.chore.autoCreateTask: false`)
```
═══════════════════════════════════════════
CHORE ЗАРЕГИСТРИРОВАН
═══════════════════════════════════════════
ID: CHORE-001
Описание: Поправить форматирование в конфиге
Файл: backlog/chores/CHORE-001-config-format.md
Категория: config
Статус: ready
TASK не создана — chore зафиксирован для планирования.
═══════════════════════════════════════════
СЛЕДУЮЩИЕ ШАГИ:
→ /polisade:tasks CHORE-001 — декомпозировать в TASK когда готов
→ /polisade:chore <описание> — в следующий раз создать TASK сразу (default)
→ /polisade:state — обзор бэклога
═══════════════════════════════════════════
```
## Отличие от других типов
| Тип | Когда использовать |
|-----|-------------------|
| CHORE | Простая задача, очевидная реализация, < 1 часа |
| FEAT | Новая функциональность, требует планирования |
| DEBT | Технический долг, рефакторинг |
| BUG | Исправление ошибки |
## Важно
- CHORE — для атомарных изменений.
- Не используй для фич или багов.
- Default — с TASK. Используй `--no-task` только для явной регистрации
«записать, но пока не делать».
- `/polisade:implement` работает только с TASK.