Skip to content

Commit 85395d8

Browse files
committed
docs: rewrite README for cross-language code intelligence positioning
1 parent 8dc0a03 commit 85395d8

1 file changed

Lines changed: 52 additions & 175 deletions

File tree

README.md

Lines changed: 52 additions & 175 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111

1212
# jam
1313

14-
**The developer-first AI CLI.** Cross-language code intelligence from your terminal.
14+
**Cross-language code intelligence for polyglot codebases.**
1515

16-
Trace call graphs across Java, SQL, Python, and TypeScript. Impact analysis.
17-
AI-powered agentic execution. Works with Copilot & Gemini. Windows, macOS, Linux.
16+
Trace call graphs and column-level impact across Java, SQL, Python, and TypeScript.
17+
From your terminal — or as an MCP server for any AI agent.
1818

1919
[![CI](https://github.com/sunilp/jam-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/sunilp/jam-cli/actions/workflows/ci.yml)
2020
[![npm](https://img.shields.io/npm/v/@sunilp-org/jam-cli.svg)](https://www.npmjs.com/package/@sunilp-org/jam-cli)
@@ -24,206 +24,83 @@ AI-powered agentic execution. Works with Copilot & Gemini. Windows, macOS, Linux
2424

2525
</div>
2626

27-
<div align="center">
28-
<img src="docs/assets/demo.svg" alt="jam CLI — trace, git wtf, agent" width="720">
29-
</div>
30-
3127
---
3228

33-
## What Jam Does
29+
## The pain jam solves
3430

35-
Jam isn't a generic AI assistant. It's the senior dev who's seen everything — direct, opinionated, and warm. Every message, error, and prompt speaks with the same voice: concise, specific, developer-aligned.
36-
37-
- 🔍 **Call graph tracing** — trace any symbol's callers, callees, and upstream chain across languages
38-
- 💥 **Impact analysis** — "if I change this, what breaks?" with column-level SQL dependency tracking
39-
- 🤖 **Agentic execution**`jam go` (interactive) and `jam run` (one-shot) decompose tasks into parallel subtasks
40-
- 💬 **AI chat & ask** — streaming responses, multi-turn sessions, stdin/pipe support
41-
- 🩹 **Patch workflow** — generate diffs, validate, preview, apply with confirmation
42-
- 📊 **Code intelligence** — explain files, search code, review diffs, generate Mermaid diagrams
43-
- 🔧 **Git toolkit**`wtf` explains state, `undo` reverses mistakes, `standup` shows your work
44-
-**Verification** — scan for secrets, lint, type-check before you commit
45-
- 🧰 **19 zero-LLM utilities**`ports`, `stats`, `deps`, `todo`, `hash`, `json`, `env`, and more
46-
- 🔌 **Any provider** — Copilot, Gemini, Ollama, OpenAI, Anthropic, Groq — or bring your own
47-
- 🏠 **Local-first** — your code never leaves your machine unless you choose a remote provider
48-
- 🖥️ **Cross-platform** — Windows (PowerShell, cmd), macOS, Linux
49-
- 🔗 **MCP + plugins** — connect to Model Context Protocol servers, drop in custom commands
50-
51-
---
52-
53-
## Install
31+
You're about to drop the `legacy_id` column from `customer`. Your codebase has Java services, Python ETL jobs, raw SQL stored procs, and a TypeScript frontend. Your AI agent searches for the column name and finds 3 references. Are there really only 3? Or did the agent miss the JPA `@Column(name="legacy_id")` mapping, the MyBatis XML alias, the SQLAlchemy column class, and the stored procedure that joins on it?
5432

5533
```bash
56-
# npm
57-
npm install -g @sunilp-org/jam-cli
58-
59-
# Homebrew
60-
brew tap sunilp/tap && brew install jam-cli
61-
62-
# Try without installing
63-
npx @sunilp-org/jam-cli doctor
34+
jam impact customer.legacy_id
6435
```
6536

66-
Jam auto-detects the best available AI provider — **no API keys needed** if you have Copilot or Gemini:
67-
68-
| Priority | Provider | Setup |
69-
|----------|----------|-------|
70-
| 1 | **GitHub Copilot** | VSCode extension — zero config |
71-
| 2 | **Gemini Code Assist** | VSCode extension — zero config |
72-
| 3 | **Anthropic** | `export ANTHROPIC_API_KEY=sk-ant-...` |
73-
| 4 | **OpenAI** | `export OPENAI_API_KEY=sk-...` |
74-
| 5 | **Ollama** (default) | `ollama serve` + `ollama pull llama3.2` |
75-
76-
```bash
77-
jam doctor # verify everything works
78-
jam models list # see available models
79-
jam models set gpt-4o # set your preferred model
80-
```
81-
82-
---
83-
84-
## Cookbook
85-
86-
### Ask & Chat
87-
88-
```bash
89-
jam ask "explain the builder pattern in Go"
90-
91-
# pipe anything
92-
cat schema.sql | jam ask "what tables have no foreign keys?"
93-
git log --since="1 week" -p | jam ask "summarize this week's changes"
94-
95-
# interactive chat with history
96-
jam chat
9737
```
98-
99-
### Agent Engine
100-
101-
```bash
102-
# interactive agent console — reads, writes, runs commands
103-
jam go
104-
jam> add retry logic to the HTTP client with exponential backoff
105-
106-
# one-shot autonomous task
107-
jam run "add input validation to all API endpoints" --yes
108-
109-
# fully autonomous with parallel workers
110-
jam run "refactor auth module into separate files" --auto --workers 4
38+
customer.legacy_id
39+
├─ Java (5 callers)
40+
│ ├─ CustomerRepository.findByLegacyId src/main/java/.../CustomerRepository.java:42
41+
│ ├─ CustomerService.migrate (uses #1) src/main/java/.../CustomerService.java:118
42+
│ └─ ... 3 more
43+
├─ Python (2 callers)
44+
│ ├─ etl.transform_customers etl/transforms.py:67
45+
│ └─ migrations/0042_drop_column.py (drops the column ← intended)
46+
├─ SQL (3 callers)
47+
│ ├─ sp_reconcile_customers (stored proc) db/procs/sp_reconcile_customers.sql:12
48+
│ ├─ vw_customer_audit (view) db/views/vw_customer_audit.sql:8
49+
│ └─ trigger_customer_audit db/triggers/trigger_customer_audit.sql:5
50+
└─ TypeScript (1 caller)
51+
└─ getCustomerLegacy web/src/api/customer.ts:23
52+
53+
⚠ Risk: HIGH — 11 sites across 4 languages depend on this column.
11154
```
11255

113-
### Code Intelligence
56+
That's the value. Run it before the change, not after CI breaks.
11457

115-
```bash
116-
# trace a function's call graph
117-
jam trace createProvider
118-
jam trace updateBalance --impact # what breaks if this changes?
119-
jam trace handleRequest --mermaid # output as Mermaid diagram
120-
jam trace PROC_PAYMENT --depth 8 # deeper upstream chain
121-
122-
# explain any file
123-
jam explain src/auth/middleware.ts
58+
## What jam does
12459

125-
# search with AI understanding
126-
jam search "where is the rate limiter configured?"
60+
- **`jam trace <symbol>`** — call graph in any direction (callers, callees, both) across languages
61+
- **`jam impact <symbol>`** — what breaks if this symbol or column changes
62+
- **`jam diagram`** — Mermaid diagrams for architecture or call flow
63+
- **`jam search`** / **`jam deps`** — symbol search and dependency analysis
64+
- **`jam mcp serve`** *(Phase 2, coming)* — expose all of the above as an MCP server, so Claude Code, Cursor, Aider, and Goose can call into jam's polyglot intelligence
65+
- Plus a handful of zero-LLM developer utilities: `ports`, `stats`, `hash`, `json`, `env`, `dup`, `http`, `todo`, `git wtf`, `git undo`, `git standup`, and more
12766

128-
# generate architecture diagram from code
129-
jam diagram
130-
```
67+
## What jam is **not**
13168

132-
### Git Toolkit
69+
- Not an AI coding agent. Use Claude Code, Cursor, or Aider for "write this feature."
70+
- Not a chat tool. Use the official Anthropic, OpenAI, or Google CLIs for that.
71+
- Not a generic terminal AI. jam answers one question well: *"if I change this, what breaks across my stack?"*
13372

134-
```bash
135-
jam git wtf # "3 files staged, 2 conflicts, 1 stash. Here's what happened..."
136-
jam git undo # undo last commit, last stash, or last merge
137-
jam git standup # your commits from the last 3 days
138-
jam git cleanup # preview and delete merged branches
139-
jam git oops # fix common mistakes (wrong branch, bad commit message)
140-
```
141-
142-
### Dev Utilities (zero LLM)
143-
144-
```bash
145-
jam stats # LOC, languages, complexity hotspots
146-
jam deps # import dependency graph
147-
jam todo # find all TODO/FIXME/HACK comments
148-
jam verify # pre-commit checks: secrets, lint, types
149-
jam ports # what's listening on which port
150-
jam env # environment variable diff between shells
151-
jam hash <file> # MD5/SHA1/SHA256 of any file
152-
jam json <file> # validate, format, query JSON
153-
jam recent # recently modified files
154-
jam convert 5kg lb # unit conversions
155-
jam http GET /users # quick HTTP requests
156-
jam pack # analyze npm/pip/cargo package size
157-
```
158-
159-
### Patch & Review
73+
## Install
16074

16175
```bash
162-
# AI-powered diff summary
163-
jam diff
164-
165-
# code review with risk assessment
166-
jam review
167-
168-
# generate and apply a patch
169-
jam patch "add error handling to the database module"
170-
171-
# auto-generate commit message matching your project's convention
172-
jam commit
173-
```
174-
175-
---
176-
177-
## VSCode Extension
178-
179-
[Install from Marketplace](https://marketplace.visualstudio.com/items?itemName=sunilp.jam-cli-vscode)
180-
181-
- All commands in the Command Palette
182-
- `@jam` chat participant in GitHub Copilot Chat
183-
- TODO tree in the sidebar with click-to-navigate
184-
- **Copilot or Gemini** auto-detected — zero configuration, no API keys
185-
- Status bar indicator shows connection state
186-
- Keeps jam-cli updated automatically
187-
188-
---
76+
# npm
77+
npm install -g @sunilp-org/jam-cli
18978

190-
## Configuration
79+
# Homebrew
80+
brew tap sunilp/tap && brew install jam-cli
19181

192-
```bash
193-
jam init # interactive setup wizard
194-
jam config show # show resolved config
82+
# Try without installing
83+
npx @sunilp-org/jam-cli doctor
19584
```
19685

197-
```json
198-
// .jamrc (per-project)
199-
{
200-
"defaultProfile": "work",
201-
"profiles": {
202-
"work": { "provider": "anthropic", "model": "claude-sonnet-4-20250514" },
203-
"local": { "provider": "ollama", "model": "llama3.2" }
204-
}
205-
}
206-
```
86+
## Quickstart
20787

20888
```bash
209-
jam ask "hello" --profile work # use Anthropic
210-
jam ask "hello" --profile local # use Ollama
89+
jam doctor # check your environment
90+
jam trace getUserById # who calls / what does it call
91+
jam impact users.email # cross-language column impact
92+
jam diagram --type architecture # Mermaid architecture diagram
21193
```
21294

213-
Supports HTTP proxy (`HTTP_PROXY`), custom CA certificates (`tlsCaPath`), configurable timeouts, MCP servers, and plugin loading. [Full configuration docs →](https://jam.sunilprakash.com)
214-
215-
---
216-
217-
## Links
95+
## Status
21896

219-
- 📖 [Documentation](https://jam.sunilprakash.com)
220-
- 🧩 [VSCode Extension](https://marketplace.visualstudio.com/items?itemName=sunilp.jam-cli-vscode)
221-
- 🍺 [Homebrew Tap](https://github.com/sunilp/homebrew-tap)
222-
- 🐛 [Issues](https://github.com/sunilp/jam-cli/issues)
97+
- **v0.12.0** (current) — Sharp pivot from generic AI CLI to cross-language code intelligence. AI-assistant features (ask/chat/run/go and friends) archived to [`archive/ai-suite`](https://github.com/sunilp/jam-cli/tree/archive/ai-suite).
98+
- **v0.13** (next) — `jam mcp serve` stdio MCP server. Plug jam into Claude Code / Cursor / Aider / Goose.
99+
- **v0.14** (after that) — Deep Java (Spring Data, JPA, MyBatis), Python (SQLAlchemy, Django, Alembic), SQL (multi-dialect, views, triggers, stored procs), and Kotlin support.
223100

224-
## Contributing
101+
## Looking for ask / chat / run / go?
225102

226-
See [CONTRIBUTING.md](CONTRIBUTING.md). PRs welcome.
103+
Those commands were removed in v0.12 — they competed with Claude Code without doing anything Claude Code doesn't already do better. The code lives on the [`archive/ai-suite`](https://github.com/sunilp/jam-cli/tree/archive/ai-suite) branch. A future release may revive AI features, but only ones that ride on top of the cross-language graph (impact-aware migration plans, PR-tailored impact summaries, etc.) — not generic chat.
227104

228105
## License
229106

0 commit comments

Comments
 (0)