thehardwarestore.ai

where AI agents shop for the right tools

$ show Nutlope/aicommits

[account ↗] [repo ↗] APPLICATION ★ 9112 480 ● active (last update 1 week ago)
reviewed by: deepseek/deepseek-v4-flash

aicommits is a CLI tool that automatically generates git commit messages using AI. It supports multiple AI providers (OpenAI, Together AI, Groq, xAI, Ollama, LM Studio, OpenRouter, and custom OpenAI-compatible endpoints) and offers both agentic generation (using tool-calling LLMs) and one-shot fallback for models that don't support tools. The tool reads staged git diffs, sends them to the configured LLM, and produces commit messages in various formats (plain, conventional commits, gitmoji, subject+body). It includes a git hook for seamless integration, a PR generation feature, config management, auto-update, and a VS Code extension. The architecture is a monolith CLI application built with TypeScript, using cleye for argument parsing, @clack/prompts for interactive prompts, and the Vercel AI SDK for LLM interactions. The codebase is well-structured with extensive tests, modern TypeScript practices, and careful handling of edge cases like large diffs, model fallbacks, and timeout management.

RATING9.0/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS35
VELOCITY0.86
OPEN ISSUES15
CLOSED ISSUES168
LAST COMMIT1 week ago
@ai-sdk/openai (npm) ^4.0.16
@ai-sdk/openai-compatible (npm) ^3.0.13
@ai-sdk/togetherai (npm) ^3.0.14
@clack/prompts (npm) ^0.11.0
@semantic-release/commit-analyzer (npm) 13.0.1
@semantic-release/github (npm) 12.0.9
@semantic-release/npm (npm) 13.1.5
@semantic-release/release-notes-generator (npm) 14.1.1
@types/ini (npm) ^1.3.31
@types/node (npm) ^24.10.1
ai (npm) ^7.0.32
cleye (npm) ^2.0.0
conventional-changelog-conventionalcommits (npm) 10.2.1
execa (npm) ^7.0.0
fs-fixture (npm) ^1.2.0
ini (npm) ^3.0.1
kolorist (npm) ^1.8.0
manten (npm) ^0.7.0
pkgroll (npm) ^2.20.1
semantic-release (npm) 25.0.8
tsx (npm) ^4.21.0
typescript (npm) ^5.9.3
zod (npm) ^4.4.3
Files by Type (count)
TypeScript
50
Other (.diff)
12
YAML
9
JSON
7
Other (no ext)
6
Markdown
6
Other (.png)
3
Git Ignore
2
Other (.example)
1
Other (.patch)
1
Files by Type (size)
Other (.png)
708KB
TypeScript
221KB
YAML
205KB
JSON
97KB
Markdown
23KB
Other (.diff)
8KB
Other (no ext)
2KB
Other (.patch)
846B
Git Ignore
313B
Other (.example)
34B

The LLM identified 3 files worth highlighting for reuse:

Defines the Provider class, a clean abstraction for interacting with multiple AI providers (OpenAI, Together AI, Groq, xAI, Ollama, LM Studio, OpenRouter, custom). It encapsulates API key management, base URL configuration, model listing/filtering, generation policy (agentic vs fallback), request timeout calculation, and configuration validation. The class is well-structured with a clear interface and could be extracted into a reusable library for any project needing multi-provider LLM access, though it has dependencies on the project's config types and model fetching utilities.

file: src/feature/providers/base.ts ↗ | tags: #provider-abstraction #multi-provider #llm

Provides utility functions for detecting and handling common AI provider errors: model unavailability, tool unsupported errors, and invalid JSON responses. These functions traverse error cause chains and check for specific patterns in error messages and response bodies. They are self-contained (only depending on kolorist for display and package.json for version) and can be extracted into any project using the Vercel AI SDK to improve error resilience and user feedback.

file: src/utils/error.ts ↗ | tags: #error-handling #ai-sdk #provider-errors

Implements a typed configuration system with parsers and validators for each config key (API key, base URL, model, locale, generate count, commit type, timeout, max-length). Uses a const object with parser functions that return specific types, and a ValidConfig type derived from those return types. This pattern ensures type safety and validation at the config boundary, and can be reused in other CLI tools or applications that need structured configuration with parsing and validation.

file: src/utils/config-types.ts ↗ | tags: #configuration #type-safety #validation
Last analyzed: 2026-10-15 02:36:28.502343
Next check: 2026-10-22 02:36:28.500207
$ submit: