# Aatex Navigation

> Навигация по ЦУП ААТех — пространства, доски, колонки. Применяй когда пользователь спрашивает "какие у меня доски", "покажи пространства", "что в колонке X", "где найти доску Y", или когда нужно получить boardId/spaceId/columnId перед созданием/перемещением карточки.

- Skill: `awaik/aatex-navigation` (Agent Skill)
- Install (CLI): `npx skillmds@latest add awaik/aatex-navigation`
- Raw SKILL.md: https://api.skillmd.com/api/skills/awaik/aatex-navigation/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: awaik (https://skillmd.com/u/awaik)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/awaik/aatex-navigation

---


# Навигация по ЦУП ААТех

## Когда использовать

- Начало любого сценария с карточками (нужны `boardId`, `spaceId`, `columnId`)
- Пользователь спрашивает: «какие доски», «покажи пространства», «что на доске»
- Поиск нужной доски по названию («найди доску Закупки»)
- Проверка ограничений колонки (какие типы карточек разрешены)

## Иерархия

```
Organization
└── Space (пространство — тема работы)
    └── Board (доска — канбан)
        └── Column (колонка — статус)
            └── Card (карточка — задача)
```

## Инструменты

| Инструмент | Параметры | Что возвращает |
|-----------|-----------|----------------|
| `list_spaces` | — | Пространства текущей организации |
| `list_boards` | `spaceId` | Доски в пространстве |
| `get_board_columns` | `boardId` | Колонки (JSONB) + title доски |
| `list_all_boards` | — | Все доски по всем пространствам: `{id, title, boardType, spaceId, spaceName}` |
| `archive_board` | `boardId` | Soft-delete (без активных карточек) |

## Сценарии

### 1. «Покажи доски»

Самый быстрый способ — `list_all_boards`. Он вернёт плоский список всех доступных досок с именами пространств. Не итерируй `list_spaces` → `list_boards` если пользователь не уточнил пространство.

### 2. «Найди доску по названию»

```
list_all_boards → фильтруй по title (case-insensitive contains)
```

Если нашёл одну — запомни её `id`. Если несколько — уточни у пользователя.

### 3. «Какие колонки на доске»

```
get_board_columns(boardId) → board.columns: [{id, title, isFinalColumn, attachedBoardId, allowedCardTypes?}]
```

Обрати внимание:
- `isFinalColumn: true` — финальная колонка (завершение работы, автоматизация)
- `attachedBoardId` — колонка каскадит карточки на dispatch-доску
- `allowedCardTypes` — ограничения по типам карточек в этой колонке (если задано)

### 4. Получить `columnId` для создания карточки

```
1. list_all_boards → найти primary доску
2. get_board_columns(boardId) → выбрать подходящую колонку
3. Запомнить columnId + проверить allowedCardTypes
```

## Важные особенности

### Primary vs Dispatch

| Тип | Создавать карточки? | Описание |
|-----|---------------------|----------|
| `primary` | **ДА** — только здесь | Основная доска, хранит карточки |
| `dispatch` | **НЕТ** | Отображает карточки из primary через каскад |
| `personal` | ДА | Персональная доска пользователя |

**`card.boardId` всегда указывает на primary.** Если нужно переместить карточку на dispatch — используйте primary колонку с `attachedBoardId`, каскад сработает автоматически.

### Доступ к доскам

- Доска с пустым `userIds` (не personal) — видна всем в орге
- Доска с заполненным `userIds` — только перечисленным + owner/admin
- Personal board (`userId` set) — только владельцу + owner/admin
- MCP-клиент видит ровно те же доски, что пользователь в UI

### Архивация

`archive_board` работает только если на доске **нет активных (не-архивных) карточек**. Если есть — предложи пользователю:

1. Массово заархивировать карточки: `bulk_move_cards` в колонку + `archive_card`
2. Или переместить на другую доску

## Типичные ошибки

| Ошибка | Причина |
|--------|---------|
| `Board not found` | ID неверный или доска в другой орге |
| `Access denied` | Нет в `userIds` доски |
| `Board has active cards` | Нельзя архивировать — сначала убери карточки |

## Пример (типичное начало сценария)

Пользователь: «Создай карточку "Закупка подшипников" в Производстве»

```
1. list_all_boards
   → ищу spaceName="Производство" + boardType="primary"
   → нашёл boardId=42, spaceId=7
2. get_board_columns(42)
   → выбираю колонку "Новые" columnId="col_abc123"
3. (перехожу к create_card с найденными ID)
```

