🌐 🇰🇷 한국어 README
🧠 AM I GOOD AT VIBE
A local-first VS Code extension that captures every AI coding conversation you have — terminal CLIs and IDE chat panels alike — and roasts your coding vibe.
AM I GOOD AT VIBE silently records both your terminal AI CLI conversations (Claude Code, Codex, Gemini CLI, aider, Copilot CLI — captured live from the integrated terminal) and your IDE chat-panel history (Claude Code IDE, GitHub Copilot Chat, VS Code chat panel, Cursor — read directly from each tool's on-disk session store), plus your code changes and prompt entries. It then hands the log to your own local AI CLI to produce a witty, social-media-shareable analysis: a nickname, a spicy one-line roast, six competency scores, and concrete action items.
100% local. Your source code never leaves your machine. (audit the capture path → · audit the masking regex →)
⚠️ Beta status (v0.1.0) — testers wanted
This is the first public release. I (the author) have only been able to verify it on a single environment:
| Tested on |
Status |
| macOS + VS Code 1.93+ + Claude Code v0.1 |
✅ Works |
| Windows |
✅ Cross-platform (SQLite chat-cache import now uses a built-in pure-JS reader — no sqlite3 CLI needed) |
| Linux |
✅ Works |
| Codex / Gemini / aider / Copilot / Cody / Cursor CLIs |
❓ Pattern matching exists but not tested end-to-end |
| Cursor IDE |
❓ Chat-cache paths defined but unverified |
If you try it, please open an issue with what worked and what didn't — even a one-line "macOS, Claude Code, capture works ✅" is genuinely helpful. PRs for cross-platform fixes are especially welcome (see the Contributing section).
✨ Features
| # |
Feature |
Notes |
| 1 |
Terminal AI CLI capture |
Auto-detects claude, codex, gemini, aider, q chat, gh copilot, cody, cursor-agent |
| 2 |
IDE chat-panel history import |
Reads Claude Code IDE (~/.claude/projects/<workspace>/*.jsonl), VS Code chat panel (chatSessions/), GitHub Copilot Chat (state.vscdb), and Cursor (state.vscdb) — no proposed API required, runs on every Analyze |
| 3 |
Interactive REPL tracking |
Line-by-line real-time parsing of ❯ user turns and ⏺ assistant turns inside REPLs |
| 4 |
Own chat participant |
@amigoodatvibe chat participant for GUI-side prompt recording |
| 5 |
🔒 100% Capture Terminal |
Optional opt-in pseudoterminal that captures EVERY keystroke, no Shell Integration required |
| 6 |
Real-time secret masking |
API keys (Anthropic / OpenAI / Gemini / GitHub / AWS), JWT, Bearer, passwords, .env lines → [MASKED_*] before disk write |
| 7 |
Rich sidebar UI |
Main CTA + live stats + recent activity feed (auto-refreshes on capture) |
| 8 |
Vibe report webview |
Nickname / one-line roast / 6 competency bars / strengths · improvements / action items / X · LinkedIn share buttons |
| 9 |
Language-adaptive analysis |
Auto-detects English vs. Korean prompts and emits the nickname & roast in that language (anything else falls back to English) |
| 10 |
VS Code theme native |
All colors use var(--vscode-*) — dark/light auto-switches |
🚀 Install
From the VS Code Marketplace (recommended)
Search "AM I GOOD AT VIBE" in the Extensions view, or install directly:
👉 https://marketplace.visualstudio.com/items?itemName=amigoodatvibe.amigoodatvibe
From source (development)
git clone https://github.com/mykim-aus/AM-I-GOOD-AT-VIBE.git
cd AM-I-GOOD-AT-VIBE
npm install
npm run compile
# Open this folder in VS Code → F5 to launch an Extension Development Host
First run
In the integrated terminal of the new window, run any AI CLI:
claude "write me a hello world function"
The capture file <workspace>/.am-i-good-at-vibe/raw_history.json is created. Then click the AM I GOOD AT VIBE icon in the activity bar → 📊 Analyze, or run AM I GOOD AT VIBE: 🧠 Analyze My AI Coding Vibe from the command palette.
Analysis is delegated to your local AI CLI (claude by default). No data is transmitted to any remote server.
Requirements
- VS Code 1.93+ (Shell Integration is on by default; required for the most accurate capture path).
- A local AI CLI — defaults to
claude. Configurable via amigoodatvibe.localCliTool (e.g. codex, gemini).
- Cross-platform. The SQLite-based IDE chat-cache importer (Copilot / Cursor) reads
state.vscdb directly via a built-in pure-JS reader, so it works on macOS, Linux, and Windows with no sqlite3 CLI dependency.
🔒 Privacy & limits
- Local storage only: every log line lives at
<workspace>/.am-i-good-at-vibe/raw_history.json and the directory is auto-.gitignored.
- Memory-level masking: regex-based masking runs before the disk write — API keys / passwords /
.env lines never touch disk in plaintext.
- Other extensions' GUI chats can't be intercepted live: VS Code provides no public API to read other extensions' webview chat panels. We work around this by reading their on-disk SQLite stores (Copilot, Cursor) and Claude Code's session JSONL files when you run Analyze.
- Shell Integration recommended: precise terminal response capture requires VS Code 1.93+ Shell Integration (enabled by default).
- External terminals (Terminal.app / iTerm) aren't captured: they're outside VS Code's process tree. Use the integrated terminal — or the opt-in 🔒 100% Capture Terminal for cases where Shell Integration is unavailable.
⚙️ Configuration
| Key |
Default |
Description |
amigoodatvibe.localCliTool |
claude |
Local AI CLI used for vibe analysis |
amigoodatvibe.outputLanguage |
auto |
auto / english / korean — forces nickname/roast language (only EN & KO are supported; everything else falls back to English) |
amigoodatvibe.autoCapture |
true |
Background auto-capture on/off |
amigoodatvibe.maskingEnabled |
true |
Real-time secret masking on/off |
amigoodatvibe.cliTimeoutMs |
120000 |
Analysis CLI execution timeout (ms) |
amigoodatvibe.captureCodeChanges |
true |
Capture code-change metadata |
amigoodatvibe.logRotateBytes |
1048576 |
Log rotation threshold (bytes) |
🧩 Supported AI CLIs
| Tool |
Command pattern examples |
Verified? |
| Claude Code |
claude "...", claude -p "...", claude (REPL) |
✅ |
| OpenAI Codex CLI |
codex chat "...", codex exec "..." |
❓ |
| Google Gemini CLI |
gemini chat "...", gemini "..." |
❓ |
| aider |
aider --message "..." |
❓ |
| Amazon Q |
q chat "..." |
❓ |
| GitHub Copilot CLI |
gh copilot suggest "...", gh copilot explain "..." |
❓ |
| Sourcegraph Cody |
cody chat "..." |
❓ |
| Cursor Agent |
cursor-agent "..." |
❓ |
Adding a new tool is usually a one-line addition to AI_CLI_PATTERNS in src/util.ts.
🛠 Troubleshooting
No activity in the sidebar?
- Run
AM I GOOD AT VIBE: 🩺 Run Capture Diagnostics from the command palette. Check that Shell Integration is reported as ON.
- Make sure you're using VS Code's built-in integrated terminal — external terminals (Terminal.app, iTerm, Warp) aren't visible to VS Code.
- A small dot next to the terminal prompt = Shell Integration is active. If absent, set
terminal.integrated.shellIntegration.enabled: true.
- Still nothing? Open the + New Terminal dropdown and pick AM I GOOD AT VIBE Capture — that profile captures 100% of stdio without needing Shell Integration.
"Local CLI not found"?
The amigoodatvibe.localCliTool setting (default claude) must resolve in the same $PATH that your VS Code-spawned shell sees. Check which claude (or your configured CLI) inside the VS Code integrated terminal.
No Claude Code history imported by Analyze?
The extension reads ~/.claude/projects/<workspace-hash>/*.jsonl. If Claude Code is installed but the directory doesn't exist for your workspace, you haven't used Claude Code in that project yet — capture will start working from your next claude invocation. The vibe analysis still runs on whatever was captured.
Analyze reports "could not find a JSON object"?
The local CLI returned prose instead of pure JSON. Open View → Output → AM I GOOD AT VIBE to see the raw CLI output. Most often this means the system prompt got truncated or the CLI is at a model version that ignores the JSON-only directive; try a stricter CLI flag or a different model.
📐 Analysis output schema
The local CLI must respond with a single valid JSON object matching:
{
"nickname": "Claude-Whisperer Black Belt",
"one_line_pack": "Catches Claude's bugs like a sniper, never reads their own diff.",
"overall_score": 82,
"summary": "Solid prompting habits with one glaring security gap.",
"competency_scores": {
"prompt_quality": 85,
"context_setting": 72,
"iteration_efficiency": 78,
"security_awareness": 55,
"code_review_habit": 88,
"tool_diversity": 70
},
"strengths": [{ "title": "...", "evidence": "..." }],
"improvements": [{ "title": "...", "evidence": "...", "actionable": "..." }],
"action_items": ["...", "..."],
"recommended_next_actions": ["...", "..."]
}
🌐 Language adaptive: nickname, one_line_pack, summary, and all evidence strings come out in either English or Korean — picked from the majority language of your user prompts. Sparse / mixed / other-language logs fall back to English.
Full system instruction lives in src/prompt.ts.
🐞 Known limitations
- Primarily verified on macOS / Linux — see Beta status above. Windows IDE-cache import now works via the built-in reader, but broader Windows end-to-end testing is still welcome.
- Interactive REPLs need Shell Integration — without it, REPL turn-by-turn parsing degrades to best-effort line classification.
- The opt-in 100% Capture Terminal isn't a real PTY — raw TUI apps (the
claude REPL with full-screen UI, vim, etc.) won't render correctly inside it. Use it for one-shot commands.
- External terminals (Terminal.app, iTerm, Warp) aren't captured — they're outside VS Code's process tree.
🧪 Testing
npm test # → 100 unit tests for pure helpers + prompt builder + extension cache reader
Tests cover everything that doesn't depend on the vscode module. UI/webview/capture changes need a manual repro inside the Extension Development Host (F5).
🤝 Contributing
This is a v0.1 release with one tester (me, on one machine). Help is wanted on:
- Cross-platform verification (Windows, Linux) — install, run, file an issue with results.
- End-to-end testing of CLIs other than Claude Code (Codex, Gemini, aider, q chat, gh copilot, cody, cursor-agent).
- Adding new AI CLIs — usually a one-line addition to
AI_CLI_PATTERNS in src/util.ts.
- Evaluation criteria — refine the 6 competency scores (
prompt_quality, context_setting, iteration_efficiency, security_awareness, code_review_habit, tool_diversity) defined in src/prompt.ts. New axes, sharper rubrics, or different weights all welcome.
- Prompt improvements — the analysis system prompt lives in src/prompt.ts. Sharper roasts, more reliable JSON output, or better language detection are great PR material.
- Code review of src/extension.ts and the capture paths (this is being open-sourced for the first time — fresh eyes very welcome).
See CONTRIBUTING.md for the full guide, including the local-first invariant every PR must preserve.
⭐ Support
If AM I GOOD AT VIBE gave you a good chuckle, please drop a star — it's the only signal the project optimizes for.
👉 github.com/mykim-aus/AM-I-GOOD-AT-VIBE
📄 License
MIT — see LICENSE.