@intent-driven/cli
v1.23.9
Published
Intent-Driven Frontend — CLI для bootstrap новых доменов через LLM-диалог
Maintainers
Readme
@intent-driven/cli
CLI для bootstrap новых доменов в парадигме Intent-Driven Frontend через интерактивный LLM-диалог.
Установка и запуск
Без установки, через npx:
ANTHROPIC_API_KEY=sk-ant-... npx @intent-driven/cli init my-domainИли глобально:
npm install -g @intent-driven/cli
export ANTHROPIC_API_KEY=sk-ant-...
idf init my-domainAPI-ключ Claude получить: https://console.anthropic.com/
Что делает idf init <name>
Ведёт короткий диалог из 5 шагов:
- Описание домена — 1-2 предложения от тебя.
- Сущности — Claude предлагает 3-7 ключевых entity на основе описания.
- Роли — Claude предлагает 1-3 роли с base (
owner/viewer/agent/observer). - Намерения — Claude выводит 8-15 атомарных интентов; ты multiselect-ом оставляешь нужные.
- Генерация — пишет файлы и валидирует через
crystallizeV2.
На выходе — каталог <name>/ с готовой стартовой структурой:
<name>/
domain.js ─ ontology + intents + projections
seed.js ─ начальный мир для smoke-тестов
test/crystallize.test.js ─ vitest-проверки
package.json ─ зависимости (@intent-driven/core, vitest)
README.md ─ описание доменаПосле cd <name> && npm install && npm test — всё должно зеленеть.
Опции
idf init <name> [options]
-m, --model LLM-модель: haiku | sonnet | opus (default: sonnet)
-o, --out Каталог для генерации (default: ./<name>)
-h, --help
-v, --versionМодели:
haiku(Claude Haiku 4.5) — самая быстрая и дешёвая, для простых доменовsonnet(Claude Sonnet 4.6) — баланс качества и скорости (default)opus(Claude Opus 4.6) — лучшее качество для сложных domain'ов
Подключение сгенерированного домена к прототипу
В клонированном DubovskiyIM/idf:
- Скопируй каталог
<name>/вsrc/domains/<name>/. - Зарегистрируй в
src/prototype.jsxкак новый пункт переключателя:import myDomainDef from "./domains/my-domain/domain.js"; import myDomainSeed from "./domains/my-domain/seed.js"; // … добавить в DOMAINS / SEEDS map npm run dev— твой домен станет доступен через переключатель в шапке.
Что считается «сгенерированным»
CLI не угадывает бизнес-логику. То, что он генерирует — каркас, который:
- Проходит
crystallizeV2без ошибок. - Имеет corretные типы полей (
money,datetime,boolean,entityRefвыводятся из имён). - Имеет правильную структуру
particlesв каждом intent'е. - Генерирует базовый набор
catalog+detailпроекций для каждой non-reference entity.
Что не генерируется автоматически:
- Условия (
conditions) — нужно добавить вручную,Claudeих не выводит без знания бизнес-правил. - Кастомные projections —
dashboard,wizard,canvas(только catalog/detail из коробки). - Многосущностные effects (например, batch-изменения) — простые add/replace/remove.
После генерации домен — стартовая точка для итеративной правки.
idf import
Импорт схемы из внешних источников в IDF-ontology.
idf import prisma
idf import prisma --file schema.prisma --out src/domains/api/ontology.jsidf import openapi
idf import openapi --file openapi.yaml --out src/domains/api/ontology.jsidf import postgres
idf import postgres --url postgresql://user:pass@localhost/mydb --out src/domains/api/ontology.jsidf import nestjs-typeorm
Сканирует NestJS+TypeORM проект (*.entity.ts + *.controller.ts) и генерирует ontology.
idf import nestjs-typeorm --src ./src --out src/domains/api/ontology.js
idf import nestjs-typeorm --src ./apps/backend/src --no-guardsФлаги:
--src <dir>(required) — root user-проекта для рекурсивного скана--out <file>(defaultsrc/domains/default/ontology.js)--name <name>— domain name (defaultdefault)--no-guards— отключить Guards → roles mapping--tsconfig <path>(optional) — путь к tsconfig.json (default: auto-detect в src/)
v0.2: extracts @Param/@Body/@Query параметры из Nest handler'ов в intent.parameters. Резолвит DTO-классы и enum-references по relative imports + tsconfig compilerOptions.paths.
Скоп v1.0
В этой версии — только команда init. В планах для следующих минорных:
idf add intent <name>— добавить намерение к существующему доменуidf validate <path>— прогон conformance-тестов из spec- Поддержка не-Anthropic LLM (OpenAI, локальные)
Issues / feature requests: https://github.com/DubovskiyIM/idf-sdk/issues
Лицензия
MIT.
