{"id":31945214,"url":"https://github.com/dean0x/skim","last_synced_at":"2026-05-01T11:01:01.967Z","repository":{"id":318266880,"uuid":"1070555087","full_name":"dean0x/skim","owner":"dean0x","description":"The most intelligent context optimization engine for coding agents. Code-aware AST parsing across 17 languages. Command rewriting. Test, build, and git output compression. Token budget cascading. Built in Rust.","archived":false,"fork":false,"pushed_at":"2026-04-29T14:42:37.000Z","size":1402,"stargazers_count":22,"open_issues_count":29,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-29T16:30:03.990Z","etag":null,"topics":["ai","claude-code","cli","code-reader","developer-tools","llm","rust","token-optimization","tree-sitter"],"latest_commit_sha":null,"homepage":"https://dean0x.github.io/x/skim/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dean0x.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-06T05:35:45.000Z","updated_at":"2026-04-29T14:45:32.000Z","dependencies_parsed_at":"2025-12-06T10:09:32.205Z","dependency_job_id":null,"html_url":"https://github.com/dean0x/skim","commit_stats":null,"previous_names":["dean0x/skim"],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/dean0x/skim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dean0x%2Fskim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dean0x%2Fskim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dean0x%2Fskim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dean0x%2Fskim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dean0x","download_url":"https://codeload.github.com/dean0x/skim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dean0x%2Fskim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32494275,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","claude-code","cli","code-reader","developer-tools","llm","rust","token-optimization","tree-sitter"],"created_at":"2025-10-14T10:50:21.391Z","updated_at":"2026-05-01T11:01:01.959Z","avatar_url":"https://github.com/dean0x.png","language":"Rust","funding_links":[],"categories":["others"],"sub_categories":[],"readme":"# Skim: The Most Intelligent Context Optimization Engine for Coding Agents\n\n\u003e **Code skimming. Command rewriting. Test, build, and git output compression. Token budget cascading.** 17 languages. 14ms for 3,000 lines. Built in Rust.\n\nOther tools filter terminal noise. Skim understands your code. It parses ASTs across 17 languages, strips implementation while preserving architecture, then optimizes every other type of context your agent consumes: test output, build errors, git diffs, and raw commands. 14ms for 3,000 lines. 48x faster on cache hits.\n\n[![Website](https://img.shields.io/badge/Website-skim-e87040)](https://dean0x.github.io/x/skim/)\n[![CI](https://github.com/dean0x/skim/actions/workflows/ci.yml/badge.svg)](https://github.com/dean0x/skim/actions/workflows/ci.yml)\n[![Crates.io](https://img.shields.io/crates/v/rskim.svg)](https://crates.io/crates/rskim)\n[![npm](https://img.shields.io/npm/v/rskim.svg)](https://www.npmjs.com/package/rskim)\n[![Downloads](https://img.shields.io/crates/d/rskim.svg)](https://crates.io/crates/rskim)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\n## Why Skim?\n\n**Context capacity is not the bottleneck. Attention is.** Every token you send to an LLM dilutes its focus. Research consistently shows attention dilution in long contexts -- models lose track of critical details even within their window. More tokens means higher latency, degraded recall, and weaker reasoning. Past a threshold, adding context makes outputs worse. While other tools stop at filtering command output, Skim parses your actual code structure and optimizes the full spectrum of agent context: code, test output, build errors, git diffs, and commands. Deeper, broader, and smarter than anything else available.\n\nTake a typical 80-file TypeScript project: 63,000 tokens. That contains maybe 5,000 tokens of actual signal. The rest is implementation noise the model doesn't need for architectural reasoning.\n\n**80% of the time, the model doesn't need implementation details.** It doesn't care *how* you loop through users or validate emails. It needs to understand *what* your code does and how pieces connect.\n\nThat's where Skim comes in.\n\n| Mode       | Tokens | Reduction | Use Case                   |\n|------------|--------|-----------|----------------------------|\n| Full       | 63,198 | 0%        | Original source code       |\n| Structure  | 25,119 | 60.3%     | Understanding architecture |\n| Signatures | 7,328  | 88.4%     | API documentation          |\n| Types      | 5,181  | 91.8%     | Type system analysis       |\n\nFor example:\n\n```typescript\n// Before: Full implementation (100 tokens)\nexport function processUser(user: User): Result {\n    const validated = validateUser(user);\n    if (!validated) throw new Error(\"Invalid\");\n    const normalized = normalizeData(user);\n    return await saveToDatabase(normalized);\n}\n\n// After: Structure only (12 tokens)\nexport function processUser(user: User): Result { /* ... */ }\n```\n\n**One command. 60-90% smaller.** Your 63,000-token codebase? Now 5,000 tokens. Fits comfortably in a single prompt with room for your question.\n\nThat same 80-file project that wouldn't fit? Now you can ask: *\"Explain the entire authentication flow\"* or *\"How do these services interact?\"* — and the AI actually has enough context to answer.\n\n## Features\n\n### Code Skimming (the original, still unmatched)\n- **17 languages** including TypeScript, JavaScript, Python, Rust, Go, Java, C, C++, C#, Ruby, SQL, Kotlin, Swift, Markdown, JSON, YAML, TOML\n- **6 transformation modes** from full to minimal to pseudo to structure to signatures to types (15-95% reduction)\n- **14.6ms** for 3,000-line files. **48x faster** on cache hits\n- **Token budget cascading** that automatically selects the most aggressive mode fitting your budget\n- **Parallel processing** with multi-file globs via rayon\n\n### Command Rewriting (`skim init`)\n- PreToolUse hook rewrites `cat`, `head`, `tail`, `cargo test`, `vitest`, `git diff` into skim equivalents\n- Two-layer rule system with declarative prefix-swap and custom argument handlers\n- One command installs the hook for automatic, invisible context savings\n\n### Test Output Compression (`skim test`)\n- Parses and compresses output from cargo, go, vitest, jest, pytest\n- Extracts failures, assertions, pass/fail counts while stripping noise\n- Three-tier degradation from structured parse to regex fallback to passthrough\n\n### Build Output Compression (`skim build`)\n- Parses cargo, clippy, tsc build output\n- Extracts errors, warnings, and summaries\n\n### Lint Output Compression (`skim lint`)\n- Parses ESLint, Ruff, mypy, golangci-lint, prettier, rustfmt, biome, dprint, oxlint, black, gofmt output\n- Extracts errors and warnings with severity grouping\n- Three-tier degradation from structured parse to regex fallback to passthrough\n\n### Package Manager Compression (`skim pkg`)\n- Parses npm, pnpm, pip, cargo audit/install/outdated output\n- Extracts vulnerabilities, version conflicts, and dependency issues\n\n### Git Output Compression (`skim git`)\n- **`skim git diff`** -- AST-aware: shows changed functions with full boundaries and `+`/`-` markers, strips diff noise\n  - `--mode structure` adds unchanged functions as signatures for context\n  - `--mode full` shows entire files with change markers\n  - Supports `--staged`, commit ranges (`HEAD~3`, `main..feature`)\n- **`skim git show`** -- compresses `git show` output in two modes:\n  - Commit mode (default, e.g. `skim git show HEAD`): strips commit header noise and renders the diff with the AST-aware pipeline\n  - File-content mode (e.g. `skim git show HEAD:src/main.rs`): applies skim's source transform to the file content\n  - Three-tier degradation: AST-aware render → raw hunk render → guardrail passthrough\n- Compresses `git status` and `git log` with flag-aware passthrough\n- All subcommands support `--json` for machine-readable output\n\n### Intelligence\n- `skim discover` scans agent session history for optimization opportunities\n- `skim learn` detects CLI error-retry patterns and generates correction rules\n- Output guardrail ensures compressed output is never larger than the original\n\n## Installation\n\n### Try it (no install required)\n\n```bash\nnpx rskim file.ts\n```\n\n### Install globally (recommended for regular use)\n\n```bash\n# Via Homebrew (macOS/Linux)\nbrew install dean0x/tap/skim\n\n# Via npm\nnpm install -g rskim\n\n# Via Cargo\ncargo install rskim\n```\n\n\u003e **Note**: Use `npx` for trying it out. For regular use, install globally to avoid npx overhead (~100-500ms per invocation).\n\n### From Source\n\n```bash\ngit clone https://github.com/dean0x/skim.git\ncd skim\ncargo build --release\n# Binary at target/release/skim\n```\n\n## Quick Start\n\n```bash\n# Try it with npx (no install)\nnpx rskim src/app.ts\n\n# Or install globally for better performance\nnpm install -g rskim\n\n# Extract structure from single file (auto-detects language)\nskim src/app.ts\n\n# Process entire directory recursively (auto-detects all languages)\nskim src/\n\n# Process current directory\nskim .\n\n# Process multiple files with glob patterns\nskim 'src/**/*.ts'\n\n# Process all TypeScript files with custom parallelism\nskim '*.{js,ts}' --jobs 4\n\n# Get only function signatures from multiple files\nskim 'src/*.ts' --mode signatures --no-header\n\n# Extract type definitions\nskim src/types.ts --mode types\n\n# Extract markdown headers (H1-H3 for structure, H1-H6 for signatures/types)\nskim README.md --mode structure\n\n# Pipe to other tools\nskim src/app.ts | bat -l typescript\n\n# Read from stdin (REQUIRES --language flag)\ncat app.ts | skim - --language=typescript\n\n# Override language detection for unusual file extensions\nskim weird.inc --language=typescript\n\n# Clear cache\nskim --clear-cache\n\n# Disable caching for pure transformation\nskim file.ts --no-cache\n\n# Show token reduction statistics\nskim file.ts --show-stats\n```\n\n## Usage\n\n```bash\n# Basic usage (auto-detects language)\nskim file.ts                    # Single file\nskim src/                       # Directory (recursive)\nskim 'src/**/*.ts'             # Glob pattern\n\n# With options\nskim file.ts --mode signatures  # Different mode\nskim src/ --jobs 8             # Parallel processing\nskim - --language typescript   # Stdin (requires --language)\n```\n\n**Common options:**\n- `-m, --mode` - Transformation mode: `structure` (default), `signatures`, `types`, `full`, `minimal`, `pseudo`\n- `-l, --language` - Override auto-detection (required for stdin only)\n- `-j, --jobs` - Parallel processing threads (default: CPU cores)\n- `--no-cache` - Disable caching\n- `--show-stats` - Show token reduction stats\n- `--disable-analytics` - Disable analytics recording\n\n📖 **[Full Usage Guide →](docs/usage.md)**\n\n## Transformation Modes\n\nSkim offers six modes with different levels of aggressiveness:\n\n| Mode       | Reduction | What's Kept                              | Use Case                   |\n|------------|-----------|------------------------------------------|----------------------------|\n| Full       | 0%        | Everything (original source)             | Testing/comparison         |\n| Minimal    | 15-30%    | All code, doc comments                   | Light cleanup              |\n| Pseudo     | 30-50%    | Logic flow, names, values                | LLM context with logic     |\n| Structure  | 70-80%    | Signatures, types, classes, imports      | Understanding architecture |\n| Signatures | 85-92%    | Only callable signatures                 | API documentation          |\n| Types      | 90-95%    | Only type definitions                    | Type system analysis       |\n\n```bash\nskim file.ts --mode structure   # Default\nskim file.ts --mode pseudo      # Pseudocode (strips types, visibility, decorators)\nskim file.ts --mode signatures  # More aggressive\nskim file.ts --mode types       # Most aggressive\nskim file.ts --mode full        # No transformation\n```\n\n**Note on JSON/YAML/TOML files:** JSON, YAML, and TOML always use structure extraction regardless of mode. Since they are data (not code), there are no \"signatures\" or \"types\" to extract—only structure. All modes produce identical output for these file types.\n\n📖 **[Detailed Mode Guide →](docs/modes.md)**\n\n## Supported Languages\n\n| Language   | Status | Extensions         | Notes                           |\n|------------|--------|--------------------|---------------------------------|\n| TypeScript | ✅     | `.ts`, `.tsx`      | Excellent grammar               |\n| JavaScript | ✅     | `.js`, `.jsx`      | Full ES2024 support             |\n| Python     | ✅     | `.py`, `.pyi`      | Complete coverage               |\n| Rust       | ✅     | `.rs`              | Up-to-date grammar              |\n| Go         | ✅     | `.go`              | Stable                          |\n| Java       | ✅     | `.java`            | Good coverage                   |\n| C          | ✅     | `.c`, `.h`         | Full C11 support                |\n| C++        | ✅     | `.cpp`, `.hpp`, `.cc`, `.hh`, `.cxx`, `.hxx` | C++20 support |\n| Markdown   | ✅     | `.md`, `.markdown` | Header extraction               |\n| JSON       | ✅     | `.json`            | Structure extraction (serde)    |\n| YAML       | ✅     | `.yaml`, `.yml`    | Multi-document support (serde)  |\n| TOML       | ✅     | `.toml`            | Structure extraction (toml)     |\n| C#         | ✅     | `.cs`              | Full grammar, structs/interfaces|\n| Ruby       | ✅     | `.rb`              | Classes, modules, methods       |\n| SQL        | ✅     | `.sql`             | DDL/DML via tree-sitter-sequel  |\n| Kotlin     | ✅     | `.kt`, `.kts`      | Data classes, coroutines, sealed classes |\n| Swift      | ✅     | `.swift`           | Protocols, generics, SwiftUI structs |\n\n## Examples\n\n### TypeScript\n\n```typescript\n// Input\nclass UserService {\n    async findUser(id: string): Promise\u003cUser\u003e {\n        const user = await db.users.findOne({ id });\n        if (!user) throw new NotFoundError();\n        return user;\n    }\n}\n\n// Output (structure mode)\nclass UserService {\n    async findUser(id: string): Promise\u003cUser\u003e { /* ... */ }\n}\n```\n\n### Python\n\n```python\n# Input\ndef process_data(items: List[Item]) -\u003e Dict[str, Any]:\n    \"\"\"Process items and return statistics\"\"\"\n    results = {}\n    for item in items:\n        results[item.id] = calculate_metrics(item)\n    return results\n\n# Output (structure mode)\ndef process_data(items: List[Item]) -\u003e Dict[str, Any]: { /* ... */ }\n```\n\n### JSON\n\n```json\n// Input\n{\n  \"user\": {\n    \"profile\": {\n      \"name\": \"Jane Smith\",\n      \"age\": 28,\n      \"tags\": [\"admin\", \"verified\"]\n    },\n    \"settings\": {\n      \"theme\": \"dark\",\n      \"notifications\": true\n    }\n  },\n  \"items\": [\n    {\"id\": 1, \"price\": 100},\n    {\"id\": 2, \"price\": 200}\n  ]\n}\n\n// Output (structure mode)\n{\n  user: {\n    profile: {\n      name,\n      age,\n      tags\n    },\n    settings: {\n      theme,\n      notifications\n    }\n  },\n  items: {\n    id,\n    price\n  }\n}\n```\n\n### YAML (Multi-Document)\n\n```yaml\n# Input (Kubernetes manifests)\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: app-config\ndata:\n  database_url: postgres://localhost:5432\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: web-app\nspec:\n  replicas: 3\n\n# Output (structure mode)\napiVersion\nkind\nmetadata:\n  name\ndata:\n  database_url\n---\napiVersion\nkind\nmetadata:\n  name\nspec:\n  replicas\n```\n\n📖 **[More Examples (All Languages) →](docs/examples.md)**\n\n## Use Cases\n\n### LLM Context Optimization\n\nReduce codebase size by 60-90% to fit in LLM context windows:\n\n```bash\nskim src/ --no-header | llm \"Analyze this codebase\"\nskim src/app.ts | llm \"Review this architecture\"\n```\n\n### API Documentation\n\nExtract function signatures for documentation:\n\n```bash\nskim src/ --mode signatures \u003e api-docs.txt\nskim 'lib/**/*.py' --mode signatures \u003e python-api.txt\n```\n\n### Type System Analysis\n\nFocus on type definitions and interfaces:\n\n```bash\nskim src/ --mode types --no-header\nskim 'src/**/*.ts' --mode types\n```\n\n### Code Navigation\n\nQuick overview without implementation details:\n\n```bash\nskim large-file.py | less\nskim src/auth/ | less\n```\n\n📖 **[10 Detailed Use Cases →](docs/use-cases.md)**\n\n## Caching\n\n**Caching is enabled by default** for 40-50x faster repeated processing.\n\n### Performance Impact\n\n| Scenario | Time | Speedup |\n|----------|------|---------|\n| First run (no cache) | 244ms | 1.0x |\n| **Second run (cached)** | **5ms** | **48.8x faster!** |\n\n### Cache Management\n\n```bash\nls ~/.cache/skim/           # View cache\nskim --clear-cache          # Clear cache\nskim file.ts --no-cache     # Disable for one run\n```\n\n**How it works:**\n- Cache key: SHA256(file path + mtime + mode)\n- Automatic invalidation when files change\n- Platform-specific cache directory\n\n**When to disable caching:**\n- One-time LLM transformations\n- Stdin processing\n- Disk-constrained environments\n\n📖 **[Caching Internals →](docs/caching.md)**\n\n## Token Counting\n\nSee exactly how much context you're saving with `--show-stats`:\n\n```bash\nskim file.ts --show-stats\n# [skim] 1,000 tokens → 200 tokens (80.0% reduction)\n\nskim 'src/**/*.ts' --show-stats\n# [skim] 15,000 tokens → 3,000 tokens (80.0% reduction) across 50 file(s)\n```\n\nUses OpenAI's tiktoken (cl100k_base for GPT-3.5/GPT-4). Output to stderr for clean piping.\n\n## Analytics\n\nSkim automatically tracks token savings from every invocation in a local SQLite database (`~/.cache/skim/analytics.db`). View your savings with the `stats` subcommand:\n\n```bash\nskim stats                       # All-time dashboard (cost estimates always shown)\nskim stats --since 7d            # Last 7 days\nskim stats --format json         # Machine-readable output\nskim stats --verbose             # Include parse quality details\nskim stats --clear               # Reset analytics data\n```\n\n**Environment variables:**\n\n| Variable | Description |\n|----------|-------------|\n| `SKIM_DISABLE_ANALYTICS` | Set to `1`, `true`, or `yes` to disable recording |\n| `SKIM_INPUT_COST_PER_MTOK` | Override $/MTok for cost estimates (default: 3.0) |\n| `SKIM_ANALYTICS_DB` | Override analytics database path |\n\nAnalytics recording is fire-and-forget (non-blocking) and does not affect command performance. Data is automatically pruned after 90 days.\n\n## Security\n\nSkim includes built-in DoS protections:\n\n- **Max recursion depth**: 500 levels\n- **Max input size**: 50MB per file\n- **Max AST nodes**: 100,000 nodes\n- **Path traversal protection**: Rejects malicious paths\n- **No code execution**: Only parses, never runs code\n\n📖 **[Security Details \u0026 Best Practices →](docs/security.md)**\n🔒 **[Vulnerability Disclosure →](SECURITY.md)**\n\n## Architecture\n\nSkim uses a clean, streaming architecture:\n\n```\nLanguage Detection → tree-sitter Parser → Transformation → Streaming Output\n```\n\n**Design principles:**\n- **Streaming-first**: Output to stdout, no intermediate files\n- **Zero-copy**: Uses `\u0026str` slices to minimize allocations\n- **Error-tolerant**: Handles incomplete/broken code gracefully\n- **Type-safe**: Explicit error handling, no panics\n\n📖 **[Architecture Deep Dive →](docs/architecture.md)**\n\n## Performance\n\n**Target**: \u003c50ms for 1000-line files ✅ **Exceeded** (14.6ms for 3000-line files)\n\n### Benchmark Results\n\n| File Size | Lines | Time   | Speed      |\n|-----------|-------|--------|------------|\n| Small     | 300   | 1.3ms  | 4.3µs/line |\n| Medium    | 1500  | 6.4ms  | 4.3µs/line |\n| **Large** | **3000** | **14.6ms** | **4.9µs/line** |\n\n### Real-World Token Reduction\n\n**Production TypeScript Codebase:**\n\n| Mode       | Tokens | Reduction | LLM Context Multiplier |\n|------------|--------|-----------|------------------------|\n| Full       | 63,198 | 0%        | 1.0x                   |\n| **Structure**  | **25,119** | **60.3%** | **2.5x more code**     |\n| **Signatures** | **7,328**  | **88.4%** | **8.6x more code**     |\n| **Types**      | **5,181**  | **91.8%** | **12.2x more code**    |\n\n📖 **[Full Performance Benchmarks →](docs/performance.md)**\n\n## Development\n\n### Quick Start\n\n```bash\n# Build and test\ncargo build --release\ncargo test --all-features\n\n# Lint\ncargo clippy -- -D warnings\ncargo fmt -- --check\n\n# Benchmark\ncargo bench\n```\n\n### Adding New Languages\n\n~30 minutes per language:\n\n1. Add tree-sitter grammar to `Cargo.toml`\n2. Update `Language` enum in `src/types.rs`\n3. Add file extension mapping\n4. Add test fixtures\n5. Run tests\n\n📖 **[Development Guide →](docs/development.md)**\n\n## Project Status\n\n**Current**: v2.7.0 — Stable\n\n✅ **Core — Code Reading (17 languages):**\n- TypeScript/JavaScript/Python/Rust/Go/Java/C/C++/C#/Ruby/SQL/Markdown/JSON/YAML/TOML\n- 5 transformation modes: structure, signatures, types, minimal, full\n- Token budget (`--tokens N`), max lines (`--max-lines N`), last lines (`--last-lines N`)\n- Multi-file glob support, parallel processing, caching (40-50x speedup)\n\n✅ **Command Output Compression:**\n- Test runners: cargo test, pytest, vitest/jest, go test\n- Build tools: cargo build, cargo clippy, tsc\n- Git: status, diff, log\n- File tools: find, ls, tree, grep, rg\n- Log: JSON structured + plaintext dedup, debug filtering, stack trace collapsing\n- Infra: gh, aws, curl, wget\n- Three-tier degradation: Structured → Regex → Passthrough\n\n✅ **Agent Integration:**\n- `skim init` — hook installation for Claude Code, Cursor, Codex, Gemini, Copilot, OpenCode\n- `skim rewrite` — command rewriting engine with `--hook` mode\n- MCP server mode for agent-native workflows\n\n✅ **Analytics \u0026 Intelligence:**\n- `skim stats` — persistent SQLite dashboard with cost estimation\n- `skim discover` — missed optimization finder across agent sessions\n- `skim learn` — CLI error pattern detection and correction rules\n\n✅ **Distribution:**\n- cargo (`cargo install rskim`), npm (`npx rskim`), Homebrew (`brew install dean0x/tap/skim`)\n- 3,002 tests passing, 14.6ms performance (3x under target)\n\nSee [CHANGELOG.md](CHANGELOG.md) for version history.\n\n## Documentation\n\nComprehensive guides for all aspects of Skim:\n\n- 📖 **[Usage Guide](docs/usage.md)** - Complete CLI reference and options\n- 🎯 **[Transformation Modes](docs/modes.md)** - Detailed mode comparison and examples\n- 💡 **[Examples](docs/examples.md)** - Language-specific transformation examples\n- 🚀 **[Use Cases](docs/use-cases.md)** - 10 practical scenarios with commands\n- ⚡ **[Caching](docs/caching.md)** - Caching internals and best practices\n- 🔒 **[Security](docs/security.md)** - DoS protections and security best practices\n- 🏗️ **[Architecture](docs/architecture.md)** - System design and technical details\n- ⏱️ **[Performance](docs/performance.md)** - Benchmarks and optimization guide\n- 🛠️ **[Development](docs/development.md)** - Contributing and adding languages\n\n## Part of the AI Development Stack\n\n| Tool | Role | What It Does |\n|------|------|-------------|\n| **Skim** | Context Optimization | Code-aware AST parsing across 17 languages, command rewriting, test/build/git output compression |\n| **[DevFlow](https://github.com/dean0x/devflow)** | Quality Orchestration | 18 parallel reviewers, working memory, self-learning, composable plugin system |\n| **[Autobeat](https://github.com/dean0x/autobeat)** | Agent Orchestration | Autonomous orchestration. Eval loops, multi-agent pipelines, DAG dependencies, crash-proof persistence |\n\nSkim optimizes every byte of context. DevFlow enforces production-grade quality. Autobeat scales execution across agents. No other stack covers all three.\n\n## Contributing\n\nContributions welcome! Please:\n\n1. Check [issues](https://github.com/dean0x/skim/issues) for existing work\n2. Open an issue to discuss major changes\n3. Follow existing code style (`cargo fmt`, `cargo clippy`)\n4. Add tests for new features\n5. Update documentation\n\n📖 **See [Development Guide](docs/development.md) for detailed instructions**\n\n### Project Structure\n\n```\nskim/\n├── crates/\n│   ├── rskim-core/    # Core library (language-agnostic)\n│   └── rskim/         # CLI binary (I/O layer)\n├── tests/fixtures/    # Test files for each language\n└── benches/           # Performance benchmarks (planned)\n```\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n## Acknowledgments\n\n- [tree-sitter](https://tree-sitter.github.io/) - Fast, incremental parsing library\n- [clap](https://github.com/clap-rs/clap) - Command-line argument parsing\n- [ripgrep](https://github.com/BurntSushi/ripgrep), [bat](https://github.com/sharkdp/bat), [fd](https://github.com/sharkdp/fd) - Inspiration for Rust CLI design\n\n## Links\n\n- **Website**: https://dean0x.github.io/x/skim/\n- **Repository**: https://github.com/dean0x/skim\n- **Issues**: https://github.com/dean0x/skim/issues\n- **Crates.io**: https://crates.io/crates/rskim\n- **npm**: https://www.npmjs.com/package/rskim\n\n---\n\n**Built with ❤️ in Rust**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdean0x%2Fskim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdean0x%2Fskim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdean0x%2Fskim/lists"}