AI in your project.
Done right.

Full bootstrap in one command. Real-time security auditor, automatic hooks, smart commit and slash commands for Spring Boot, Angular and React.

Get started → View on GitHub
bash — ai-kit init
$ bash ai-kit.sh init
 
AI Dev Kit v1.0.0
================================
 
[Phase 1] Stack detection
  OK Java 21 + Spring Boot 4.0.1
  OK Spring Security + JWT
  OK Angular 19 (standalone)
  OK PostgreSQL + Docker Compose
 
[Phase 2] Generating context files
  OK stack.md (312 bytes)
  OK architecture.md (541 bytes)
  OK rules.md (398 bytes)
  OK CLAUDE.md → thin index (@imports)
 
[Phase 5] Installing Auditor
  OK auditor.sh, post-java-write.sh installed
  OK session-start.sh, stop-test-reminder.sh
  OK Auditor self-test: PASSED
 
================================
Setup complete. Start Claude Code: claude

Everything you need, already configured

From initial bootstrap to daily work — AI Dev Kit covers every touchpoint between you and the AI.

🛡️

Real-time auditor

Intercepts every file write via PreToolUse hook. Blocks SQL Injection, hardcoded secrets, unauthenticated endpoints before they hit disk.

📄

Sectioned context files

Generates stack.md, architecture.md and rules.md in .claude/context/. CLAUDE.md becomes a thin index — Claude loads only what's relevant, saving tokens every session.

🖥️

Terminal UI (TUI)

ai-kit tui opens a clickable, mouse-navigable interface. Manage specs, track tasks, stream live command output, and launch Claude directly — all without typing a command.

🗂️

Spec-driven workflow

ai-kit spec new drafts a structured task spec. spec start generates a focused TASK.md — so Claude knows exactly what to build and what to ignore.

⚡

Compile & type check

PostToolUse hook runs ./mvnw compile after each .java and tsc --noEmit after each .ts. Errors surface immediately.

🚀

Smart Commit

Reviews the diff via AI, blocks if issues are found, generates a Conventional Commit message automatically and pushes.

⌨️

Slash Commands

Ready-to-use commands tailored to your stack: /project:endpoint, /project:refactor, /project:debug, /project:pr and more.

📋

Custom rules

Define your team's rules in .aikit-rules.yml with regex patterns, severity and message. The auditor applies them automatically.

🔔

Desktop notifications

Build failures trigger a native notification on Linux (notify-send), macOS, and Windows — so you know immediately without watching the terminal.

📊

Audit report

Run ai-kit audit-report to generate a markdown summary of all auditor findings — grouped by severity with rule, file, and line.

🩺

Doctor & Update

ai-kit doctor diagnoses your installation. ai-kit update refreshes hooks and commands in-place — no need to re-run init.

One command. Everything configured.

ai-kit init analyzes your project and sets up each piece automatically.

0

Pre-flight

Verifies claude CLI, git and python3.

1

Stack detection

Reads pom.xml, package.json, angular.json. Detects 20+ project characteristics.

2

Generate context files

Uses claude -p to generate three focused files: stack.md, architecture.md, rules.md. CLAUDE.md is a thin index that imports them.

3

Configure hooks

Writes .claude/settings.json with all hooks mapped to the detected stack.

4

Install commands

Only the commands relevant to your stack — no unnecessary clutter.

5

Deploy Auditor

Copies hook scripts and runs a self-test to confirm everything is working.

Auditor — examples
[AUDITOR] CRITICAL — Rule J-001 (Write blocked)
File: src/.../UserRepository.java:42
Fix: SQL Injection risk: user input concatenated
         in SQL string. Use @Query with named
         parameters or PreparedStatement.
Write blocked. Fix the issue and try again.
 
──────────────────────────────────────
 
[AUDITOR] HIGH — Rule J-002 (Write blocked)
File: src/.../PaymentController.java:12
Fix: @RestController with no @PreAuthorize
         on any endpoint. Add @PreAuthorize or
         // ai-kit:ignore J-002 if public by design.
Write blocked. Fix the issue and try again.
 
──────────────────────────────────────
 
[AUDITOR] MEDIUM — Rule J-003
File: src/.../OrderService.java:78
Fix: System.out.println detected. Use SLF4J:
         log.info("Order processed: {}", orderId);
File written. Resolve before merging.
 
──────────────────────────────────────
 
[AUDITOR] MEDIUM — Rule J-007
File: src/.../NotificationService.java:55
Fix: Generic catch(Exception) swallows all
         errors. Catch specific exceptions or
         re-throw as a domain exception.
File written. Resolve before merging.
Smart Commit
$ bash smart-commit.sh --push
 
… 3 file(s) staged
… Reviewing changes...
✔ Review approved
… Generating commit message...
 
Generated message:
  feat(user): add search-by-email endpoint
 
  Confirm commit? [Y/n] Y
✔ Commit created
✔ Push complete → main

From code to commit — fully guarded

Every file the AI writes passes through the auditor. Critical issues are blocked before they touch disk. Smart Commit adds a second layer before pushing.

AI writes
a file
Claude Code
→
PreToolUse
hook fires
auditor.sh
→
severity?
checks rules
→
CRITICAL/HIGH →
Write
blocked
↲ fix & retry
MEDIUM →
Warning
logged
→
LOW →
Silent
audit.log
→
Developer
fixes issue
iterate
→
Smart
Commit
smart-commit.sh
→
AI reviews
diff
claude -p
→
Commit
& push
git push
CRITICAL / HIGH
Write is blocked. Claude Code sees the error and must fix the issue before retrying. No bad code ever reaches disk.
MEDIUM
Write proceeds, warning is printed. Logged to audit.log. Smart Commit will highlight open warnings before committing.
LOW
Logged silently to audit.log. Visible in ai-kit audit-report and in the session-start summary.
Smart Commit gate
Blocks commit if open CRITICAL/HIGH findings exist today. Sends the full diff to Claude for secrets, SQL injection, and unprotected endpoints review.

Visual spec management — no typing required

ai-kit tui gives you a full mouse-navigable interface for the spec lifecycle. Click to approve, start, run Claude, and track tasks in real time.

Action buttons
Approve Validate and approve a draft spec — checks that What, Scope and Files are filled.
Start Activate the spec — sets status to in-progress and writes TASK.md to the project root.
✦ Claude Suspends the TUI, opens Claude Code in the project directory with the task pre-loaded. TUI resumes automatically when you exit Claude.
Review AI reviews the implementation against the spec. If issues are found, a ✦ Fix with Claude button appears directly in the result modal.
Close Closes the spec — moves to done/, removes TASK.md, links commits.
Tab panels
Checklist
Live task progress. Click a task to tick it done.
Activity
Commits since start, files changed vs spec scope, audit findings.
Spec
Full spec markdown for the selected spec.
Log
Real-time output stream from running commands.
ai-kit tui
SPECS
── ACTIVE ──
● SPEC-002 [3/4]
── DRAFT ──
· SPEC-003 [0/7]
── DONE ──
✓ SPEC-001 [6/6]
+ New Spec
SPEC-002 ● ACTIVE
Add optional bio field to the user model
[███████░░░] 3/4 tasks (75%)
Checklist
Activity
Spec
Log
✔ Add bio field to User model
✔ Create migration for bio column
✔ Include bio in GET /api/users/me
○ Allow PATCH /api/users/me to update bio
Approve
Start
✦ Claude
Review
Close
Typical flow:   New Spec  →  Approve  →  Start  →  ✦ Claude (implements)  →  Review  →  Fix with Claude if needed  →  Close

Define before you build

A spec is a short markdown file that aligns you and the AI on scope before a single line is written. Every phase of the task has a dedicated command — from drafting to AI-reviewed close.

1 · Plan
spec new
Claude drafts scope, contracts, files
2 · Approve
spec approve
Validates What, Scope & Files are filled
3 · Start
spec start
Generates TASK.md, syncs CLAUDE.md
4 · Track
spec check
Progress without AI — zero tokens
5 · Adapt
spec update
Add files, tasks or tick items done
6 · Close
spec close
AI reviews diff, archives with commits
ai-kit spec — examples
$ ai-kit spec new "Add user search endpoint"
.... Calling claude -p to draft spec...
OK Spec created: .aikit-specs/active/SPEC-001-add-user-search-endpoint.md
.... Review and edit, then run: ai-kit spec approve SPEC-001
 
$ ai-kit spec approve SPEC-001
OK SPEC-001 approved
.... Scope: 5 file(s) (1 new), 4 task(s)
.... Run: ai-kit spec start SPEC-001
 
$ ai-kit spec start SPEC-001
OK SPEC-001 is now active
OK TASK.md written at project root
OK CLAUDE.md updated with @TASK.md import
.... Auditor will log writes outside this spec's scope
.... When done: ai-kit spec close
markdown — TASK.md (auto-generated)
<!-- AUTO-GENERATED by ai-kit spec start -->
# Current Task: SPEC-001

## Objective
Add GET /users/search?email= returning
paginated UserSummaryDTO.

## Files to touch
- src/.../UserController.java
- src/.../UserService.java
- src/.../UserRepository.java
- src/.../dto/UserPageDTO.java  ← NEW
- src/test/.../UserControllerTest.java

## Out of scope — do not touch
- Authentication / security config
- Database migrations
Scope guard
When a spec is active, the auditor logs a LOW finding if Claude writes a file not listed in the spec. Suppress with // ai-kit:ignore SPEC-SCOPE.
Session start
Every Claude Code session shows the active spec, task progress (done/total), and warns if TASK.md is missing.
Smart diff
spec review sends the full diff when small (≤350 lines) or per-file summaries when large — so the AI always gets accurate input regardless of diff size.

Quality & security rules

21 built-in rules for Java, Angular, React and any file. Extensible via .aikit-rules.yml and suppressible via .aikit-ignore.

IDSeverityDescription
J-001CRITICALSQL Injection via string concatenation in queries
J-002HIGH@RestController with no @PreAuthorize on any endpoint
J-003MEDIUMSystem.out.println in production code
J-004HIGH@Transactional on a private method (no effect in Spring AOP)
J-005MEDIUMJPA @Entity missing proper equals/hashCode
J-006CRITICALHardcoded JWT secret in source code
J-007MEDIUMGeneric catch(Exception) that swallows all errors silently
J-008MEDIUM@Scheduled without @Async — blocks the scheduler thread pool
J-009MEDIUM@Value injecting a secret field directly — prefer @ConfigurationProperties
IDSeverityDescription
F-001LOWconsole.log in production code
F-002MEDIUMExplicit TypeScript any
F-003HIGH.subscribe() without takeUntilDestroyed or unsubscribe — Angular memory leak
F-004CRITICALSecret in environment.ts, .env or frontend config file
F-005MEDIUMuseEffect without dependency array — runs on every render
F-006HIGHDirect DOM manipulation in Angular component (document.getElementById)
F-007LOWrouter.navigate with hardcoded string literal in Angular component
IDSeverityDescription
U-001CRITICALHardcoded password, token, API key or private key
U-002LOWTODO / FIXME in new code
U-003MEDIUMEmoji in source code (.java, .ts, .tsx, .js)

Define your team's rules in .aikit-rules.yml at the project root:

yaml — .aikit-rules.yml
rules:
  - id: C-001
    severity: HIGH
    files: "*.java"
    pattern: 'System\.exit\('
    message: "System.exit() must not be used. Throw a proper exception instead."

  - id: C-002
    severity: MEDIUM
    files: "*.tsx,*.ts"
    pattern: '^\s*fetch\s*\('
    message: "Use the useApi() hook instead of calling fetch() directly."

Fields: id, severity (CRITICAL/HIGH/MEDIUM/LOW), files (glob), pattern (regex grep -P), message, fix (optional — appended to the auditor message)

To suppress built-in rules project-wide, add them to .aikit-ignore:

text — .aikit-ignore
# one rule ID per line — # starts a comment
F-001  # uses custom logger wrapper, no console.log needed
U-002  # TODOs tracked in Linear

Ready in minutes

Requirements: Claude Code CLI, bash (Git Bash on Windows), python3, git.

1

Clone the repository

git clone https://github.com/jeffev/ai-dev-kit.git
2

Run from your project root

cd my-project
bash /path/to/ai-dev-kit/ai-kit.sh init
3

Open Claude Code

claude
# SessionStart shows git + Docker status
# Auditor active on every file write
4

Use Smart Commit instead of git commit

git add .
bash smart-commit.sh --push
💡 Tip: add a shell alias to use it from any project:
# ~/.bashrc or ~/.zshrc
alias ai-kit="bash /path/to/ai-dev-kit/ai-kit.sh"

# Bootstrap & maintenance
ai-kit init
ai-kit update           # update hooks in-place
ai-kit doctor           # diagnose installation
ai-kit tui              # open the visual TUI

# Spec-driven workflow
ai-kit spec new "add payment endpoint"
ai-kit spec approve SPEC-001
ai-kit spec start SPEC-001
ai-kit spec close       # archives spec with commit links
ai-kit spec list        # show active & done specs

# Daily workflow
ai-kit commit --push
ai-kit audit-report     # generate findings report
ai-kit audit-test src/main/java/MyClass.java

Common questions

You can close it manually even if not all tasks are done:

ai-kit spec close SPEC-001 --force

The --force flag skips the interactive confirmation prompt. The spec will be archived in .aikit-specs/done/ with its current state.

In the TUI, click the Close button — it will show a review modal. Click Close in the modal to confirm.

The ✦ Claude button is only enabled when the spec status is active (i.e. after running Start). This ensures TASK.md exists before opening Claude.

The flow is: Approve → Start → ✦ Claude.

When the Review modal opens, click ✦ Fix with Claude. The TUI will suspend and Claude will open with the full review output pre-loaded as context — Claude knows exactly what to fix without you having to paste anything.

After Claude finishes, exit it (/exit or Ctrl+C) to return to the TUI. Run Review again to confirm everything is resolved before closing.

Use spec check — it's fast, requires no AI, and works directly in the terminal:

ai-kit spec check           # uses the currently active spec
ai-kit spec check SPEC-001  # check a specific spec

It shows the checklist (done/pending), which expected files have been touched, and any out-of-scope changes detected in git diff.

Run ai-kit upgrade from your project directory:

ai-kit upgrade

This pulls the latest changes from the AI Dev Kit repository and automatically reapplies hooks and commands to your current project. No need to run init again.

The TUI requires the textual Python library. Running ai-kit tui will attempt to install it automatically, but if that fails:

pip install textual
# or
pip3 install textual

If you're on Windows and python3 points to the Microsoft Store stub, use python instead, or install Python 3 from python.org.

Run spec start again on the active spec — it regenerates TASK.md without resetting the status or start commit:

ai-kit spec start SPEC-001

If the spec is already in-progress, it will warn you but still regenerate the file.