acai.sh
- title
- acai.sh
- type
- toolbox
- summary
- Набор инструментов для spec-driven разработки: агенты пишут код с привязкой к номерам критериев приёмки (ACID)
- tags
- typescript, elixir, spec-driven-development, ai-agents, cli, watchlist
- language
- TypeScript (CLI), Elixir (server)
- license
- Apache-2.0
- created
- 2026-05-03
- updated
- 2026-05-03
- lang
- ru
- translation_of
- acai
- source_updated
- 2026-05-03
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
Open source набор инструментов для spec-driven разработки с участием ИИ, построенный вокруг спецификаций feature.yaml и ACID (Acceptance Criteria IDs). Аргументация автора о том, зачем это нужно и чем проект отличается от смежных инструментов спецификации, изложена в заметке specsmaxxing.
Суть в одной строке: хватит просить агента помнить от сессии к сессии, что должна делать разрабатываемая функциональность; напишите один раз нумерованный список критериев приёмки, пусть агент ссылается на эти номера из кода и тестов, и рецензируйте требования, а не файлы.
Компоненты
Организация публикует три репозитория:
- acai-sh/cli - TypeScript CLI, распространяемый через
npx @acai.sh/cliи релизы GitHub для Linux/macOS. Apache-2.0, ~10★, создан 2026-03-22. - acai-sh/server - бэкенд на Elixir/Phoenix/Postgres для self-hosted запуска, включающий дашборд, REST API, базу данных, сервис резервного копирования и reverse proxy. Apache-2.0, ~3★, создан 2026-02-27.
- acai-sh/docs - сайт документации на базе Mintlify по адресу acai.sh.
Есть и хостинговая версия на app.acai.sh - автор пишет "бесплатно на какое-то время или навсегда", в зависимости от расходов на эксплуатацию. Разделение на hosted и self-hosted традиционное: код - OSS, хостинг - услуга.
Как всё устроено
feature.yaml → agent reads via `npx @acai.sh/cli skill` → agent writes code with `// AUTH-1` etc.
│
└──── `acai push --all` from CI → app.acai.sh dashboard with requirement-by-requirement review surface
Подкоманда CLI skill обучает агента соглашению: достаточно установить её один раз на проект, и агент научится читать feature.yaml, писать код со ссылками на ACID и отдавать статусы выполнения или блокировки. Дашборд нужен потому, что рецензирование требований устроено иначе, чем просмотр diff'ов: удобнее видеть список вроде "AUTH-2-1: завершено, назначено на claude-code, ожидает проверки", а не PR на 600 строк.
Целевое состояние - цикл plan -> implement -> review, где LLM выступает исполнителем, а человек проверяет результат на уровне требований. Примеры CI-хуков и интеграция цикла на момент этого ingest'а запланированы в roadmap.
Формат feature.yaml
feature:
name: imaginary-api-endpoint
product: api
description: ...
components:
AUTH:
name: Authn and Authz
requirements:
1: Accepts Authorization header with `Bearer <token>`
1-1: Token must be non-expired, non-revoked
2: Respects the scopes configured for the owner
2-note: See `access-tokens.SCOPES.1` for complete list of supported scopes
constraints:
ENG:
requirements:
1: All actions are idempotent
2: All HTTP 2xx JSON responses wrap their payload in a root `data` key
Разделение на components (функциональные требования, сгруппированные по зонам) и constraints (сквозные инженерные инварианты) - главное авторское решение формата. Иерархическая нумерация (2-1) даёт подтребованиям конкретный адрес. Соседние ключи *-note содержат перекрёстные ссылки. Флаги deprecated и replaced_by служат для сохранения истории прямо в спецификации, когда стабильная нумерация требует переименования.
Как автор позиционирует проект относительно аналогов
Из статьи:
- GitHub SpecKit - "vibe coding с лишними шагами". Решает другую задачу (больше промптов, больше skill'ов), нежели согласование по ACID.
- OpenSpec - расходится в философской предпосылке: OpenSpec считает, что спецификации описывают, как системы ведут себя сейчас; acai считает, что спецификации должны описывать, как системы должны себя вести.
- Kiro - преобразует неструктурированный
.mdв синтаксис EARS.feature.yamlв acai метит в золотую середину между.mdи EARS. - Traycer.ai - использует обычные
.md-файлы; acai более требователен к структуре формата.
Пример использования
# in your project
npx @acai.sh/cli skill # teach the agent the convention
# (write feature.yaml, hand the agent a prompt referencing it)
# CI / push to dashboard
ACAI_API_TOKEN=<secret> acai push --all
Промпт для агента, который автор предлагает вставлять дословно:
Dear Claude, ... Start by running
npx @acai.sh/cli skill. This will teach you everything you need to know about our process for spec-driven development. Then, proceed to plan and implement the features specified in our spec files.
(Формулировка "Dear Claude / Love, [your-name]" - это авторская ирония; ключевая рабочая инструкция здесь - вызов npx @acai.sh/cli skill.)
Статус - watchlist
Внесён в watchlist с повторной проверкой 2026-08-03. Причины:
- Проект одного автора, суммарно ~13★ на всех репозиториях на момент ingest'а, все три репозитория созданы за последние 2-3 месяца.
- Хостинговый дашборд служит основной поверхностью для ревью. Self-hosting работает (сервер открыт), но он тяжеловесен: развёртывание стека Elixir/Phoenix/Postgres, включая reverse proxy. Большинство пользователей окажется на
app.acai.sh- личном сервере автора без опубликованной бизнес-модели. Обещание "возможно, навсегда бесплатно" выглядит шатко. - Привязка к формату ощутима. Как только в кодовой базе появятся сотни ссылок
// AUTH-2-1, переход сfeature.yamlна другой инструмент спецификаций потребует миграционного скрипта. - Интеграция с CI/CD находится в roadmap, а не готова. Задуманный целевой процесс (реактивные циклы
plan -> implement -> review) опирается на интеграции, которых пока нет.
Что позволит проекту выпуститься из watchlist'а: публичный переход заметного стороннего проекта на этот формат; появление примеров CI-хуков; второй контрибьютор в организации; прояснение разделения между hosted и self-hosted. При повторной проверке стоит также взглянуть, опубликовал ли автор "автоматизированный цикл plan -> implement -> review", на который он намекал.
Почему за проектом стоит следить, несмотря на watchlist
Соглашение об ACID как двунаправленных ссылках жизнеспособно независимо от самого продукта acai.sh - см. acceptance-criteria-ids для портативной версии. Даже если конкретно этот инструмент заглохнет, паттерн почти наверняка появится в более крупных системах (Cursor, Charlie Labs, GitHub), у которых есть достаточная база пользователей для его закрепления.
Ограничения
- CLI только на TypeScript; портов на Python или Go пока нет (написать их, вероятно, тривиально, но сейчас это барьер для проектов не на Node, которым не хочется тащить зависимость от Node на этапе сборки).
- Сервер написан на Elixir, что создаёт более высокий порог для self-hosting'а по сравнению с типичным бинарником на Go или Rust.
- Интеграция с редакторами не документирована - агент изучает ACID через команду
skill, но люди, пишущиеfeature.yaml, редактируют обычный YAML без валидации схемы, документации при наведении курсора или перехода к определению по ссылкамAUTH-2-1. - Соглашение наиболее полезно для бэкенда и функциональных возможностей. Возможности пользовательского интерфейса укладываются в схему хуже, поскольку автор явно исключает "дизайн и поверхностные требования" из рамок спецификации.
Связанные страницы
- specsmaxxing - исходный пост, подробная аргументация и мысленный эксперимент
- acceptance-criteria-ids - соглашение в отрыве от инструмента
- acai-blog - блог на acai.sh
- ceo-ai-psychosis - статья, где введён термин "AI psychosis"; автор acai использует его самокритично
- ai-assisted-workflow - рабочий процесс Барберо со спецификацией до написания кода, близкая философия
- clean-code-coding-agents - смежный аргумент о структуре кода как контексте для агента
- building-syntaqlite-ai - пример из практики, где отсутствие дисциплины в спецификациях привело к переделкам
- charlie-daemons, botctl, superhq, flue - смежные попытки решить более широкую задачу "реактивной фабрики софта", очерченную в посте
Репозиторий
github.com/acai-sh - cli (10★), server (3★), docs (Mintlify) - Apache-2.0