Metadata-Version: 2.4
Name: s-agentskit
Version: 0.1.0
Summary: AI-агенты как сущности: автономный онбординг инструкций (идемпотентные managed-блоки в .claude/.cursor/.codex/.gemini/.github/…) поверх единого реестра агентов-данных. Тонкий слой на clikit.
Author: Dmitry
License: MIT
License-File: LICENSE
Requires-Python: >=3.11
Requires-Dist: s-clikit
Provides-Extra: dev
Requires-Dist: pytest>=8.3; extra == 'dev'
Requires-Dist: ruff>=0.8; extra == 'dev'
Description-Content-Type: text/markdown

# agentskit

**AI-агенты как сущности: автономный онбординг инструкций.** Переиспользуемый
слой (dist `s-agentskit` / import `agentskit`) поверх `clikit`. Делает любой
навык/инструмент **автономным онбордером**: он сам прописывает свои инструкции
(managed-блок) в конфиг-файлы любого AI-агента — `.claude` / `.cursor` / `.codex`
/ `.gemini` / `.github` / … — идемпотентно и аддитивно (чужой текст не затирается).

```
agentskit (реестр агентов = данные) → onboard(namespace, body) → managed-блок в N агентов
```

## Зачем

Знание «где живёт каждый AI-агент» (его config-папка и memory-файл) не должно
дублироваться в каждом инструменте. agentskit держит **единый реестр агентов как
ДАННЫЕ** (`data/agents.json`, 18 агентов) — потребитель приносит только контент
(тело инструкции + свой namespace), а механизм (детект, инъекция, резолв
global/project) общий.

> Роль «агент-как-адаптер» (драйв агента из комбайна gateway/bublictr) — зона
> **adapterkit**, не этого кита. agentskit отвечает только за онбординг.

## Установка

```bash
pip install s-agentskit       # import agentskit  (dist-имя ≠ import-имя)
# dev:  uv sync --extra dev
```

## Библиотека (основной способ)

```python
from agentskit import onboard, resolve_agent_keys

onboard(
    namespace="atlas",                       # маркеры <!-- ATLAS:BEGIN/END -->
    body="## Работай в Atlas\n- atlas task …",
    scope="all",                             # global | repo | all
    agents=resolve_agent_keys("claude,gemini"),  # или None — все существующие файлы
    create=True,
)
```

Идемпотентно: повторный вызов с тем же `body` → `unchanged`. Несколько плагинов
(разные `namespace`) сосуществуют в одном `CLAUDE.md` без коллизий.

## CLI

```bash
agentskit agents                  # весь реестр агентов
agentskit detect                  # какие агенты есть в проекте/$HOME
agentskit onboard -n mytool --body-file INSTRUCTIONS.md --agents claude,cursor --create
agentskit uninstall -n mytool --agents all
```

## Публичный API

`onboard` / `uninstall` · `detect_agents` / `list_agents` · `resolve_agent_keys`
· `resolve_targets` · `inject_managed_block` / `has_managed_block` /
`strip_managed_block` / `managed_block` · `begin_marker` / `end_marker` ·
`AgentSpec` / `SkillLayout` / `register_agent_spec` / `agent_registry`.

## Расширение реестра

Добавить агента без правки кита: запись в `data/agents.json`, либо
`register_agent_spec(AgentSpec(...))`, либо entry-points группа
`agentskit.agent_specs` во внешнем пакете.

## Режимы

- **reference** (MVP): managed-блок-указатель в memory-файл агента (`CLAUDE.md` и т.п.).
- **full** (фаза 2): материализация контента целиком в per-agent layout (как
  `uipro`-инсталлеры).

## Лицензия

[MIT](LICENSE).
