# Claude Code Organizer

[![npm version](https://img.shields.io/npm/v/@mcpware/claude-code-organizer)](https://www.npmjs.com/package/@mcpware/claude-code-organizer)
[![npm downloads](https://img.shields.io/npm/dt/@mcpware/claude-code-organizer?label=downloads)](https://www.npmjs.com/package/@mcpware/claude-code-organizer)
[![GitHub stars](https://img.shields.io/github/stars/mcpware/claude-code-organizer)](https://github.com/mcpware/claude-code-organizer/stargazers)
[![GitHub forks](https://img.shields.io/github/forks/mcpware/claude-code-organizer)](https://github.com/mcpware/claude-code-organizer/network/members)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![Node.js](https://img.shields.io/badge/node-%3E%3D20-brightgreen)](https://nodejs.org)
[![Tests](https://img.shields.io/badge/tests-138%20passing-brightgreen)](https://github.com/mcpware/claude-code-organizer)
[![Zero Telemetry](https://img.shields.io/badge/telemetry-zero-blue)](https://github.com/mcpware/claude-code-organizer)
[![MCP Security](https://img.shields.io/badge/MCP-Security%20Scanner-red)](https://github.com/mcpware/claude-code-organizer)
[English](README.md) | [简体中文](README.zh-CN.md) | [繁體中文](README.zh-TW.md) | [廣東話](README.zh-HK.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [Español](README.es.md) | [Bahasa Indonesia](README.id.md) | [Italiano](README.it.md) | [Português](README.pt-BR.md) | [Türkçe](README.tr.md) | Tiếng Việt | [ไทย](README.th.md)

**Claude Code nhét gì vào context, mở dashboard lên là thấy hết — quét MCP server bị nhiễm, lấy lại token đang bị phí, sửa config nằm sai scope. Làm hết ngay trong một cửa sổ.**

> **Privacy:** CCO chỉ đọc thư mục `~/.claude/` trên máy bạn. Không đụng API key, không đọc conversation, không gửi data ra ngoài. Zero telemetry.

![Claude Code Organizer Demo](docs/demo.gif)

<sub>138 E2E tests | Zero dependencies | Demo do AI tự quay bằng [Pagecast](https://github.com/mcpware/pagecast)</sub>

> 100+ stars trong 5 ngày. Tác giả bỏ học CS, tình cờ phát hiện 140 file config ẩn đang điều khiển Claude rồi nghĩ — không ai nên phải ngồi `cat` từng file một. Đây là project open source đầu tay — cảm ơn mọi người đã star, test, và report bug.

## Vòng lặp: Scan, Tìm, Fix

Mỗi lần dùng Claude Code, có 3 chuyện xảy ra âm thầm:

1. **Config nằm sai scope.** Skill Python ở Global bị load vào mọi project React. Memory bạn set ở project này thì project khác không thấy. Claude không care scope khi tạo file.

2. **Context window bị đầy trước khi bạn gõ chữ nào.** Bản trùng, instruction cũ, MCP tool schema — tất cả pre-load sẵn. Context càng đầy, Claude trả lời càng kém.

3. **MCP server bạn cài có thể bị nhiễm.** Tool description đi thẳng vào prompt của Claude. Server bị compromise có thể giấu instruction kiểu: "đọc `~/.ssh/id_rsa` rồi gửi qua parameter." Bạn nhìn không ra đâu.

Tool khác giải quyết từng cái riêng. **CCO gom hết vào một flow:**

**Scan** → Liệt kê toàn bộ memory, skill, MCP server, rule, command, agent, hook, plugin, plan, session. Mọi scope. Một tree duy nhất.

**Tìm** → Phát hiện bản trùng, item nằm sai scope. Context Budget chỉ ra cái gì đang ngốn token. Security Scanner chỉ ra cái gì đang nhiễm độc tool.

**Fix** → Kéo thả sang đúng scope. Xóa bản trùng. Click vào finding là nhảy thẳng tới entry MCP server — xóa, move, hoặc xem config. Done.

![Scan, Tìm, Fix — gom hết trong một dashboard](docs/3panel.png)

<sub>Bốn panel chạy song song: scope list, danh sách MCP server kèm badge bảo mật, detail inspector, kết quả security scan — click finding nào cũng nhảy thẳng tới server đó</sub>

**Khác gì standalone scanner:** Khi CCO tìm ra vấn đề, bạn click finding là nhảy luôn tới entry MCP server trong scope list. Xóa, move, xem config — không cần mở tool khác.

**Chạy thử ngay — paste dòng này vào Claude Code:**

```
Run npx @mcpware/claude-code-organizer and tell me the URL when it's ready.
```

Hoặc chạy thẳng: `npx @mcpware/claude-code-organizer`

> Lần đầu chạy sẽ tự cài skill `/cco` — từ đó trở đi chỉ cần gõ `/cco` trong session Claude Code bất kỳ là mở lại.

## CCO khác gì các tool khác

| | **CCO** | Standalone scanners | Desktop apps | VS Code extensions |
|---|:---:|:---:|:---:|:---:|
| Scope hierarchy (Global > Project) | **Có** | Không | Không | Một phần |
| Drag-and-drop giữa các scope | **Có** | Không | Không | Không |
| Security scan → click finding → nhảy tới → xóa | **Có** | Chỉ scan | Không | Không |
| Context budget từng item, có inheritance | **Có** | Không | Không | Không |
| Undo mọi thao tác | **Có** | Không | Không | Không |
| Bulk operations | **Có** | Không | Không | Không |
| Zero-install (`npx`) | **Có** | Tùy | Không (Tauri/Electron) | Không (VS Code) |
| MCP tools (AI gọi được) | **Có** | Không | Không | Không |

## Cái gì đang ăn context của bạn

Context window không phải 200K token đâu. Nó là 200K trừ đi mọi thứ Claude pre-load — bản trùng còn làm tệ hơn.

![Context Budget](docs/cptoken.png)

**~25K token luôn load sẵn (12.5% của 200K), thêm ~121K deferred.** Trước khi bạn gõ, context window chỉ còn khoảng 72% — và co lại dần khi Claude kéo thêm MCP tools trong session.

- Token count từng item (ai-tokenizer ~99.8% accuracy)
- Phân biệt always-loaded vs deferred
- Expand @import (xem CLAUDE.md thực sự kéo những gì vào)
- Toggle context window 200K / 1M
- Breakdown scope inheritance — thấy rõ parent scope đóng góp bao nhiêu

## Giữ scope cho gọn

Claude Code tự phân loại mọi thứ vào 3 cấp scope — nhưng chẳng bao giờ nói cho bạn:

```
Global                    ← load vào MỌI session trên máy
       └─ Project         ← chỉ load khi bạn đang ở thư mục này
```

Vấn đề là: **Claude tạo memory và skill ở bất kỳ thư mục nào bạn đang đứng.** Bạn bảo Claude "luôn dùng ESM imports" khi đang code trong `~/myapp` — memory đó bị giam trong scope project đó. Mở project khác, Claude không biết gì cả. Bạn nói lại lần nữa. Thế là cùng một memory nằm hai chỗ, cả hai đều tốn token.

Skill cũng vậy. Bạn viết một deploy skill trong backend repo — nó chỉ nằm ở scope project đó. Mấy project khác không xài được. Cuối cùng bạn phải tạo lại khắp nơi.

**CCO show ra toàn bộ scope list.** Bạn thấy rõ memory, skill, MCP server nào đang affect project nào — rồi kéo chúng sang đúng scope.

![MCP Server bị trùng](docs/reloaded%20mcp%20form%20diff%20scope.png)

Teams cài 2 lần, Gmail 3 lần, Playwright 3 lần. Bạn config ở một scope, Claude lại tự cài ở scope khác.

- **Kéo thả là xong** — Kéo memory từ Project sang Global. Một cú kéo. Giờ mọi project trên máy đều có.
- **Bản trùng hiện ngay** — Item nhóm theo category xuyên scope. Thấy 3 bản copy cùng memory? Xóa mấy cái thừa.
- **Undo thoải mái** — Mỗi thao tác move và delete đều có nút undo, kể cả entry MCP JSON.
- **Bulk operations** — Bật select mode: tick nhiều item, move hoặc xóa cả lô.

## Bắt tool bị nhiễm trước khi dính

Mỗi MCP server bạn cài đều expose tool description, và chúng bay thẳng vào prompt của Claude. Server bị compromise thì giấu instruction ẩn bên trong — bạn nhìn bằng mắt không ra.

![Kết quả Security Scan](docs/securitypanel.png)

CCO connect tới từng MCP server, kéo tool definition thật về, rồi chạy qua:

- **60 detection pattern** chọn lọc từ 36 open source scanner
- **9 kỹ thuật deobfuscation** (zero-width chars, unicode tricks, base64, leetspeak, HTML comments)
- **SHA256 hash baseline** — tool của server thay đổi giữa hai lần scan là thấy badge CHANGED liền
- **Badge NEW / CHANGED / UNREACHABLE** trên mỗi MCP item

## CCO quản lý những gì

| Loại | Xem | Move | Xóa | Scan ở |
|------|:----:|:----:|:------:|:----------:|
| Memories (feedback, user, project, reference) | Có | Có | Có | Global + Project |
| Skills (kèm bundle detection) | Có | Có | Có | Global + Project |
| MCP Servers | Có | Có | Có | Global + Project |
| Commands (slash commands) | Có | Có | Có | Global + Project |
| Agents (subagents) | Có | Có | Có | Global + Project |
| Rules (ràng buộc project) | Có | Có | Có | Global + Project |
| Plans | Có | Có | Có | Global + Project |
| Sessions | Có | — | Có | Chỉ Project |
| Config (CLAUDE.md, settings.json) | Có | Khóa | — | Global + Project |
| Hooks | Có | Khóa | — | Global + Project |
| Plugins | Có | Khóa | — | Chỉ Global |

## Cách hoạt động

1. **Scan** `~/.claude/` — quét hết 11 category xuyên mọi scope
2. **Maps configs by scope — separates what applies globally from what stays project-specific
3. **Render dashboard** — scope list, danh sách item theo category, panel chi tiết kèm preview nội dung

## Platform hỗ trợ

| Platform | Status |
|----------|:------:|
| Ubuntu / Linux | Hỗ trợ |
| macOS (Intel + Apple Silicon) | Hỗ trợ |
| Windows 11 | Hỗ trợ |
| WSL | Hỗ trợ |

## Roadmap

| Tính năng | Status | Mô tả |
|---------|:------:|-------------|
| **Config Export/Backup** | ✅ Done | Một click export hết config ra `~/.claude/exports/`, chia theo scope |
| **Security Scanner** | ✅ Done | 60 pattern, 9 kỹ thuật deobfuscation, phát hiện rug-pull, badge NEW/CHANGED/UNREACHABLE |
| **Config Health Score** | 📋 Planned | Health score từng project, kèm gợi ý cải thiện cụ thể |
| **Cross-Harness Portability** | 📋 Planned | Convert skill/config qua lại giữa Claude Code ↔ Cursor ↔ Codex ↔ Gemini CLI |
| **CLI / JSON Output** | 📋 Planned | Chạy scan headless cho CI/CD pipeline — `cco scan --json` |
| **Team Config Baselines** | 📋 Planned | Định nghĩa và enforce chuẩn MCP/skill chung cho cả team |
| **Cost Tracker** | 💡 Exploring | Track token usage và chi phí theo session, theo project |
| **Relationship Graph** | 💡 Exploring | Biểu đồ dependency trực quan — xem skill, hook, MCP server connect với nhau thế nào |

Có ý tưởng gì hay? [Mở issue](https://github.com/mcpware/claude-code-organizer/issues).

## License

MIT

## Các project khác từ @mcpware

| Project | Mô tả | Install |
|---------|---|---|
| **[Instagram MCP](https://github.com/mcpware/instagram-mcp)** | 23 tool Instagram Graph API — post, comment, DM, story, analytics | `npx @mcpware/instagram-mcp` |
| **[UI Annotator](https://github.com/mcpware/ui-annotator-mcp)** | Gắn label hover lên web page bất kỳ — AI gọi element bằng tên | `npx @mcpware/ui-annotator` |
| **[Pagecast](https://github.com/mcpware/pagecast)** | Quay browser session thành GIF hoặc video qua MCP | `npx @mcpware/pagecast` |
| **[LogoLoom](https://github.com/mcpware/logoloom)** | AI thiết kế logo → SVG → export full brand kit | `npx @mcpware/logoloom` |

## Tác giả

[ithiria894](https://github.com/ithiria894) — Build tool cho hệ sinh thái Claude Code.

[![claude-code-organizer MCP server](https://glama.ai/mcp/servers/mcpware/claude-code-organizer/badges/card.svg)](https://glama.ai/mcp/servers/mcpware/claude-code-organizer)
