GENeral Extensible Neural Network Adaptive Data Yntelligence.
CLI-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ git-ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ, merge-ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°ΠΌΠΈ ΠΈ GitLab review-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠΌ.
# Π‘ΠΏΡΠ°Π²ΠΊΠ°
npx gennady help
# ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΏΡΠ°Π²ΠΊΠ°
npx gennady
# Commit Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ²Π½ΠΎ
npx gennady commit- Node.js
22+ - Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ (Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄ Ρ git-ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ)
- ΠΠ»Ρ GitLab-ΠΊΠΎΠΌΠ°Π½Π΄:
GITLAB_PERSONAL_TOKEN
# ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ review-verify / review-issues / vcs-reply (live)
export GITLAB_PERSONAL_TOKEN="<token>"
# ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ (default: /api/v4)
export GITLAB_API_PATH="/api/v4"ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ commit message ΠΈΠ· staged-ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
npx gennady commit
npx gennady commit --mode=oneline
npx gennady commit --branch=develop
npx gennady commit --task=MAILCORE-123
npx gennady commit --applyΠΠΏΡΠΈΠΈ:
--mode,-m:auto | oneline | detailed--oneline,--short,--one,-o: ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ one-line--branch,-b: target branch Π΄Π»Ρ diff--task,-t: Π΄ΠΎΠ±Π°Π²ΠΈΡΡ task id Π² subject--model: ΠΌΠΎΠ΄Π΅Π»Ρ AI backend--api,--apiUrl: URL AI API--apply: ΡΡΠ°Π·Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡgit commitΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ
ΠΡΠ²ΠΎΠ΄ ΡΠ°ΠΉΠ»ΠΎΠ² Π² XML ΠΈΠ»ΠΈ Markdown.
npx gennady cat ./src
npx gennady cat "./src/**/*.ts" --output=md
npx gennady cat ./src --plain
npx gennady cat --url="https://gitlab.com/.../-/merge_requests/123"ΠΠΏΡΠΈΠΈ:
--output,-o:xml(ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) ΠΈΠ»ΠΈmd--plain: Π±Π΅Π· ANSI-ΡΠ²Π΅ΡΠΎΠ²--exclude,-e: ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ--ext: ΡΠΈΠ»ΡΡΡ ΠΏΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌ--url: MR/PR URL Π΄Π»Ρ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ±ΠΎΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²
AI-ΡΠ΅Π²ΡΡ staged ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
npx gennady review
npx gennady review --branch=developΠΠΏΡΠΈΠΈ:
--branch,-b: target branch Π΄Π»Ρ diff (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ origin/main)
Π‘ΠΎΠ±ΠΈΡΠ°Π΅Ρ prompt Π΄Π»Ρ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ discussion-ΡΡΠ΅Π΄ΠΎΠ² Merge Request (GitLab).
# ΠΠ²ΡΠΎΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ MR ΠΏΠΎ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΠΊΠ΅
npx gennady review-verify
# ΠΠΎ URL
npx gennady review-verify "https://gitlab.example.com/group/project/-/merge_requests/123"
npx gennady review-verify --url="https://gitlab.example.com/group/project/-/merge_requests/123"
# ΠΠΎ ref
npx gennady review-verify group/project!123
npx gennady review-verify --ref=group/project!123
# Π―Π²Π½ΠΎ project + iid
npx gennady review-verify --project=group/project --iid=123ΠΠΏΡΠΈΠΈ:
--branch,-b: branch-ΡΠ΅ΠΆΠΈΠΌ--url: URL merge request--ref:<project>!<iid>--project: ΠΏΡΡΡ GitLab-ΠΏΡΠΎΠ΅ΠΊΡΠ°--iid: IID merge request--all: Π²ΠΊΠ»ΡΡΠ°ΡΡ resolved discussions
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ GitLab-host (*gitlab* Π² host).
ΠΠ°ΠΊ review-verify, Π½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ XML-Π°ΡΡΠ΅ΡΠ°ΠΊΡ issues.
npx gennady review-issues
npx gennady review-issues --ref=group/project!123ΠΠΏΡΠΈΠΈ: ΡΠ΅ ΠΆΠ΅, ΡΡΠΎ Ρ review-verify.
Π‘ΠΎΠ±ΠΈΡΠ°Π΅Ρ prompt Π΄Π»Ρ AI-ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ merge-ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² Ρ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ confidence (auto-resolve ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ).
# ΠΡΠΆΠ½ΠΎ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ merge-ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ
npx gennady resolve-conflicts
# ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ override-ΠΌΠ΅ΡΠΊΠΈ Π²Π΅ΡΠΎΠΊ
npx gennady resolve-conflicts --branch=main --incoming=feature/refactor-xΠΠΏΡΠΈΠΈ:
--branch,-b: override Π΄Π»Ρ current branch label--incoming: override Π΄Π»Ρ incoming branch label
ΠΠ°ΠΆΠ½ΠΎ: ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ git commit, ΠΎΠ½Π° ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ prompt.
ΠΠΎΡΡΠΈΠ½Π³ ΠΎΡΠ²Π΅ΡΠΎΠ² Π² GitLab MR discussions ΠΈΠ· JSON-ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ΅ΡΠ΅Π· stdin.
echo '[{"discussionId":"123","body":"β
Fixed"}]' | \
npx gennady vcs-reply --project=group/project --iid=123
# ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π±Π΅Π· ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ
echo '[{"discussionId":"123","body":"β
Fixed"}]' | \
npx gennady vcs-reply --project=group/project --iid=123 --dry-runΠΠΏΡΠΈΠΈ:
--project: ΠΏΡΡΡ GitLab-ΠΏΡΠΎΠ΅ΠΊΡΠ°--iid: IID merge request--dry-run,--dry: Π½Π΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ, ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ dry-run Π²ΡΠ²ΠΎΠ΄
Π€ΠΎΡΠΌΠ°Ρ stdin:
[{ "discussionId": "<discussion-id>", "body": "<reply markdown>" }]ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ TypeScript-ΡΠ°ΠΉΠ»ΠΎΠ²: file-header, anchors, DbC-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ, invariant-count.
npx gennady lint ./src
npx gennady lint --staged
npx gennady lint ./src --autofix --verboseΠΠΏΡΠΈΠΈ:
--autofix: Π°Π²ΡΠΎΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ DbC-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ²--staged: ΡΠΎΠ»ΡΠΊΠΎ staged ΠΈ untracked.ts(Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠΈΠΉ Ρ ΠΏΡΡΡΠΌΠΈ)--verbose,-v: debug-Π»ΠΎΠ³ΠΈ--max-invariants: ΠΌΠ°ΠΊΡ. ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π½Π° ΡΡΡΠ½ΠΎΡΡΡ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 3)--exclude: ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ°ΠΉΠ»Ρ ΠΏΠΎ glob (ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΡΠΉ)
ΠΡΠ»ΡΡΠΈ-ΠΌΠΎΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΌΠ½Π΅Π½ΠΈΡ Ρ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΡΠΈΠ½ΡΠ΅Π·ΠΎΠΌ.
# ΠΠ½Π΅Π½ΠΈΠ΅ Π΄Π²ΡΡ
ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Ρ ΡΠΈΠ½ΡΠ΅Π·ΠΎΠΌ
npx gennady alt-opinion \
--model="llmproxy/kimi-k2.6" \
--model="llmproxy/glm-5.1" \
--synthModel="llmproxy/deepseek-v4-pro" \
--file="./spec.md"
# Π§Π΅ΡΠ΅Π· stdin
cat spec.md | npx gennady alt-opinion \
--model="llmproxy/gpt-4o" \
--model="openrouter/claude-sonnet"ΠΠΏΡΠΈΠΈ:
--model: Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΌΠΎΠ΄Π΅Π»ΠΈprovider/model[::prompt.md](ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΡΠΉ)--synthModel: ΠΌΠΎΠ΄Π΅Π»Ρ-ΡΠΈΠ½ΡΠ΅Π·Π°ΡΠΎΡ--file: ΠΏΡΡΡ ΠΊ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ--modelPrompt: ΠΏΡΠΎΠΌΠΏΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ--synthPrompt: ΠΏΡΠΎΠΌΠΏΡ Π΄Π»Ρ ΡΠΈΠ½ΡΠ΅Π·Π°ΡΠΎΡΠ°--strict: exit 1 ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ΅ Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ
Π‘ΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ai/directives/ ΠΈΠ· npm-ΠΏΠ°ΠΊΠ΅ΡΠ° Π² ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡ.
npx gennady sync
npx gennady sync --dry-run
npx gennady sync ts-patterns typescript --dry-runΠΠΏΡΠΈΠΈ:
--dry-run: ΠΏΡΠ΅Π΄ΠΏΡΠΎΡΠΌΠΎΡΡ Π±Π΅Π· Π·Π°ΠΏΠΈΡΠΈ
Π‘ΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ SDD-Π½Π°Π²ΡΠΊΠΎΠ² ΠΈΠ· ai/skills/ Π² .claude/skills/ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
npx gennady sync-skills
npx gennady sync-skills --dry-run
npx gennady sync-skills sdd-executeΠΠΏΡΠΈΠΈ:
--dry-run: ΠΏΡΠ΅Π΄ΠΏΡΠΎΡΠΌΠΎΡΡ Π±Π΅Π· Π·Π°ΠΏΠΈΡΠΈ
ΠΠ°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡ: file-header ΡΠ°Π·ΠΌΠ΅ΡΠΊΠ°, DBC-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ, Π³ΡΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
npx gennady orient # ΠΊΠ°ΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
npx gennady orient --task=TSK-03 # ΡΠ°ΠΉΠ»Ρ Π·Π°Π΄Π°ΡΠΈ
npx gennady orient --consumer=DbcTsLinter # ΠΊΡΠΎ ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ
npx gennady orient --file=path/to/file.ts # Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΌΠΎΡΡ
npx gennady orient --graph # Π³ΡΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
npx gennady orient --specs # ΠΎΠ±Π·ΠΎΡ ΡΠΏΠ΅ΠΊΠΠΏΡΠΈΠΈ:
--file,--task,--consumer,--entity: ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌ--graph,--specs: ΠΎΠ±Π·ΠΎΡΠ½ΡΠ΅ ΡΠ΅ΠΆΠΈΠΌΡ--fuzzy,--detail,--depth,--max-results: Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²ΡΠ²ΠΎΠ΄Π°
ΠΡΠ²ΠΎΠ΄ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ orient Π΄Π»Ρ AI-Π°Π³Π΅Π½ΡΠΎΠ².
npx gennady agents-rulesΠΠ΅ΡΠΊΠ°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ stdout.
npx gennady remote-console
npx gennady remote-console --port=8080
npx gennady remote-console --url="https://example.com"ΠΠΏΡΠΈΠΈ:
--port,-p: ΠΏΠΎΡΡ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 43001)--host: Ρ ΠΎΡΡ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ localhost)--url: URL ΡΡΡΠ°Π½ΠΈΡΡ Π΄Π»Ρ ΠΎΡΠΊΡΡΡΠΈΡ Ρ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠ΅ΠΉ
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅: cli/cmd/README.md.
npx gennady commit
npx gennady commit --mode=oneline --apply --task=TSK-42npx gennady lint ./src
npx gennady lint --staged --autofixnpx gennady orient # ΠΊΠ°ΡΡΠ°
npx gennady orient --task=TSK-03 # ΡΠ°ΠΉΠ»Ρ Π·Π°Π΄Π°ΡΠΈ
npx gennady orient --graph # Π³ΡΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
npx gennady agents-rules # ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π΄Π»Ρ AGENTS.mdexport GITLAB_PERSONAL_TOKEN="<token>"
npx gennady review-verify --ref=group/project!123npx gennady review
npx gennady review --branch=developgit merge feature/some-branch
# Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ
npx gennady resolve-conflictsnpx gennady cat "./src/**/*.ts" --output=md --plain | pbcopynpx gennady sync
npx gennady sync-skillsnpx gennady alt-opinion \
--model="llmproxy/kimi-k2.6" \
--model="llmproxy/glm-5.1" \
--synthModel="llmproxy/deepseek-v4-pro" \
--file="./spec.md"npx gennady remote-console