Skip to content
Back to skills

State

ASecurity

Show project status

  • 7 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 5, 2026
ai-agentspythonbashapi

Works with

  • api

Security analysis

A100/100

Scanned September 22, 2026

npx -y skills add cryndoc/polisade-orchestrator --skill state --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of State?

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

Security grade badge for State
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/cryndoc-state/badge)](https://www.skillsdirectory.com/skills/cryndoc-state)

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: state
description: Show project status
---

# /polisade:state — Статус проекта

Показать полный статус проекта для PM.

## Использование

```
/polisade:state    # Показать статус
```

## Алгоритм

1. Прочитай `.state/PROJECT_STATE.json`
2. Просканируй папки `docs/`, `backlog/`, `tasks/` на артефакты
3. Сверь статусы с PROJECT_STATE.json (синхронизируй если нужно)
4. Собери статистику по состояниям
5. Выведи в структурированном формате

## Формат вывода

```
═══════════════════════════════════════════
  СТАТУС ПРОЕКТА
═══════════════════════════════════════════

МОЖНО РЕАЛИЗОВАТЬ (N):
   • BUG-001: Кнопка не работает (P1)
   • TASK-001: Create API endpoint
   • TASK-002: Add UI component

МОЖНО СОЗДАТЬ ЗАДАЧИ (N):
   • FEAT-001 → /polisade:tasks FEAT-001
   • SPEC-001 → /polisade:tasks SPEC-001

НУЖНА ПРОРАБОТКА (N):
   • PRD-001 → /polisade:spec PRD-001
   • SPEC-002 → /polisade:design SPEC-002 (опц., создать doc-as-code пакет)

АРХИТЕКТУРА:
   Active ADRs: 4
   Design packages: 2 (DESIGN-001, DESIGN-002)

ПРИЁМКА:
   пар: 7; последний прогон: 6/7 зелёных; ⚠️ база разошлась: чеков 0, приборов 1

<!-- polisade:claude-only BEGIN -->
CORPUS-RUN (экспериментально, #187 — показывать только если есть ARCHRUN или corpus.mode=living):
   Corpus mode: living
   • ARCHRUN-001: ждёт PM — "synonym collision: Order vs PurchaseOrder"
       → /polisade:unblock, затем /polisade:design-corpus --resume=<runId>
   • ARCHRUN-002: ready (resume required) → /polisade:design-corpus --resume=<runId>
<!-- polisade:claude-only END -->

───────────────────────────────────────────

ЖДУТ PM (N):
   • TASK-003: "Какой лимит для rate limiting?"
     (с 2024-01-15)
   • FEAT-002: "Какой приоритет?"
     (с 2024-01-14)

ЗАБЛОКИРОВАНО (N):
   • TASK-008: Тесты падают после изменений в API

В РАБОТЕ (N):
   • TASK-005: Implementing auth module

───────────────────────────────────────────

БЭКЛОГ:
   Features: 3 (1 ready, 2 draft)
   Bugs: 2 (1 ready, 1 in_progress)
   Tech Debt: 5 (2 ready, 3 draft)

ЗАВЕРШЕНО ЗА СЕССИЮ:
   • TASK-004, BUG-002

═══════════════════════════════════════════
РЕКОМЕНДАЦИЯ:
   → [Конкретное действие]
═══════════════════════════════════════════
```

## Логика рекомендаций

1. Если есть `waitingForPM`:
   → "Запусти /polisade:unblock чтобы ответить на N вопросов"

2. Если есть ready BUG:
   → "Есть баги для исправления. /polisade:continue или /polisade:implement BUG-XXX"

3. Если есть ready TASK:
   → "Запусти /polisade:continue для автономной работы"

4. Если есть ready FEAT/SPEC/PLAN без задач:
   → "Создай задачи: /polisade:tasks FEAT-XXX"

5. Если есть ready PRD без спеки:
   → "Создай спецификацию: /polisade:spec PRD-XXX"

5b. Если есть ready SPEC без DESIGN-PKG (опц. рекомендация):
   → "Можно создать дизайн-пакет: /polisade:design SPEC-XXX (C4/ERD/OpenAPI/ADR)"

6. Если всё `blocked`:
   → "Все задачи заблокированы. Детали выше."

7. Если всё `done`:
   → "Всё завершено! Добавь новую работу: /polisade:feature или /polisade:prd"

## Группировка артефактов

### По возможности действия

| Группа | Артефакты | Следующее действие |
|--------|-----------|-------------------|
| Можно реализовать | BUG, TASK, DEBT (ready) | /polisade:implement или /polisade:continue |
| Можно создать задачи | FEAT, SPEC, PLAN (ready) | /polisade:tasks |
| Нужна проработка | PRD (ready) | /polisade:spec |
| Можно спроектировать | SPEC (ready) без DESIGN-PKG | /polisade:design (опционально) |
| Архитектура | DESIGN-PKG, ADR | информационно — показывает количество в блоке "АРХИТЕКТУРА" |
<!-- polisade:claude-only BEGIN -->
| Corpus-run (#187) | ARCHRUN (waiting_pm / ready) | отдельная секция "CORPUS-RUN" — **НЕ** в "Можно реализовать"; resume через /polisade:design-corpus --resume, не implement |
<!-- polisade:claude-only END -->

### Источник строки блока "ПРИЁМКА" (issue #343)

Строка берётся ЦЕЛИКОМ из поля `summary` одной команды и не собирается
своими словами:

<!-- 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 -->

```bash
${POLISADE_PYTHON:-python3} {plugin_root}/scripts/polisade_acceptance.py status --json --root "${POLISADE_WORK_DIR:-.}"
```

Чеки она НЕ исполняет — состояние читается из файла приёмки, зафиксированной
базы и отчёта последнего прогона. Тот же расчёт читают `/polisade:doctor`,
`/polisade:review-pr` и раздел `## Приёмка` в описании PR: четыре собственных
разбора одного файла разошлись бы молча.

Блок печатается ВСЕГДА, включая «приёмка не заведена»: её отсутствие — факт
о проекте, а не пустое место. Пометки `stale` (отчёт снят на другом коде) и
«база разошлась» не глотать — это ровно те два способа, которыми зелёная
приёмка перестаёт что-либо означать.

⛔ **Три формы, и третья обязательна** (issue #356). Блок печатается так:

| когда | что печатать |
|---|---|
| команда отработала | строку `summary` **ДОСЛОВНО** |
| команда ответила `state: absent` | `приёмка не заведена` |
| команда НЕ отработала | `не удалось определить` + **дословный** отказ |

«Приёмка не заведена» — это ОТВЕТ ИНСТРУМЕНТА, а не заполнитель пустоты.
Замерено на живом прогоне: скрипт не запускался вовсе (ноль вхождений в
логе), модель придумала отказ, привела несуществующую причину, процитировала
капсулу exec-denied как прикрытие — и напечатала «не заведена» на проекте,
где приёмка ЗАВЕДЕНА и где она сама её двумя строками выше увидела.
Отсутствие ответа, отрендеренное как отрицательный ответ, — тот самый класс
F1, ради которого блок и заводился.

Дословная строка `summary` в отчёте и есть свидетельство, что команда
отработала: пересказ своими словами такого свидетельства не даёт.


### Источники цифр для блока "АРХИТЕКТУРА"

- **Active ADRs** — длина массива `architecture.activeADRs` в PROJECT_STATE.json
- **Design packages** — количество артефактов с `type == "DESIGN-PKG"` в `artifacts`

<!-- polisade:claude-only BEGIN -->
### Источники для блока "CORPUS-RUN" (#187, experimental)

- **Corpus mode** — `architecture.corpus.mode` (`silo` / `living`). Блок
  показывается только если `mode == "living"` ИЛИ есть хотя бы один `ARCHRUN-*`.
- **ARCHRUN runs** — артефакты с префиксом `ARCHRUN-` (из `waitingForPM` и
  `readyToWork`). `ready` означает **«resume required»**, а не обычную задачу:
  всегда сопровождай ссылкой `/polisade:design-corpus --resume=<runId>`
  (runId — из `architecture.corpus.pendingRun`). **Никогда не показывай ARCHRUN
  в "Можно реализовать".**
<!-- polisade:claude-only END -->

### По статусу

- **ready** — готово к работе
- **in_progress** — в работе
- **waiting_pm** — ждёт ответа PM
- **blocked** — техническая проблема
- **done** — завершено
- **draft** — черновик (не показывать в основном списке)

## Синхронизация

При обнаружении расхождений между файлами и PROJECT_STATE.json:
- Добавь недостающие артефакты в state
- Обнови статусы из frontmatter файлов
- Сообщи о синхронизации: "Синхронизировано N артефактов"

## Важно

- Показывай самую важную информацию первой (баги, блокеры)
- Группируй по возможным действиям, не просто по типам
- Давай конкретные рекомендации с командами
- Не перегружай информацией — PM должен быстро понять что делать

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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.