cursorrules — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited cursorrules (Rules) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<div align="center"> <img src="https://github.com/user-attachments/assets/699c0a3f-dfae-4e14-81db-c8ba970d9a35">
mcp-name: io.github.wende/cicada
Context compaction for AI code assistants – Give your AI structured, token-efficient access to 17+ languages including Elixir, Python, TypeScript, JavaScript, Rust, and more.
Up to 50% less waiting · Up to 70% less tokens · Up to 99% less explanations to do Tighter context = Better Quality
Quick Install · Security · Developers · AI Assistants · Docs
</div>
The core problem: AI code assistants waste context on blind searches. Grep dumps entire files when you only need a function signature, leaving less room for actual reasoning.
Instead of raw text dumps, CICADA gives your AI structured, pre-indexed knowledge:
| Traditional Search | CICADA |
|---|---|
| Grep dumps entire files | Returns only signatures + call sites |
| Misses aliased imports | Tracks all reference types |
| No semantic understanding | Keyword search finds verify_credentials when you ask for "authentication" |
# 1. Install uv (if needed)
# curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install cicada-mcp
# In your repo
cicada claude # or: cicada cursor, cicada vs, cicada gemini, cicada codex, cicada opencode, cicada zed<div align="left"> <summary><strong>Try before installing permanently</strong></summary> Runs CICADA on demand (worse indexing quality, but zero install).
uvx cicada-mcp claude # or cursor, vsor
claude mcp add cicada uvx cicada-mcpgemini mcp add cicada uvx cicada-mcpcodex mcp add cicada uvx cicada-mcpkimi mcp add --transport stdio cicada -- cicada-mcpUses your editor's built-in MCP management to install CICADA.
</details> </div>
Available commands after installation:
cicada [claude|cursor|vs|gemini|codex|opencode|zed] - One-command interactive setup per projectcicada-mcp - MCP server (auto-started by editor)cicada serve - Start REST API server for HTTP access to all MCP toolscicada status - Show index status, PR index, link status, agent files, MCP configscicada stats [repo] - Display usage statistics (tool calls, tokens, execution times)cicada watch - Watch for file changes and automatically reindexcicada index - Re-index code with custom options (-f/--force, --keywords, --embeddings, --watch)cicada index-pr - Index pull requests for PR attributioncicada run [tool] - Execute any of the 7 MCP tools directly from CLIcicada agents install - Install Claude Code agents to ./.claude/ directorycicada link [parent_dir] - Links current repository to an existing indexcicada clean - Completely removes cicada integration from your folder as well as all settingsAsk your assistant:
# Elixir
"Show me the functions in MyApp.User"
"Where is authenticate/2 called?"
# Python
"Show me the AuthService class methods"
"Where is login() used in the codebase?"
# Both languages
"Find code related to API authentication"gh and your existing OAuth token. ~/.cicada/projects/<repo_hash>/
├─ index.json # modules, functions, call sites, metadata
├─ config.yaml # indexing options + mode
├─ hashes.json # incremental indexing cache
└─ pr_index.json # optional PR metadata + reviewsYour repo only gains an editor config (.mcp.json, .cursor/mcp.json, .vscode/settings.json, .gemini/settings.json, .codex/mcp.json, or .opencode.json).
Wire CICADA into your editor once, and every assistant session inherits the context.
cd /path/to/project
cicada claude # or cicada cursor / cicada vs / cicada gemini / cicada codex / cicada opencode / cicada zedbrew install gh # or apt install gh
gh auth login
cicada index-pr . # incremental
cicada index-pr . --clean # full rebuildUnlocks questions like "Which PR introduced line 42?" or "What did reviewers say about billing.ex?"
Enable automatic reindexing when files change by starting the MCP server with the --watch flag:
.mcp.json
{
"mcpServers": {
"cicada": {
"command": "cicada-mcp",
"args": ["--watch"],
"env": {
"CICADA_CONFIG_DIR": "/home/user/.cicada/projects/<hash>"
}
}
}
}When watch mode is enabled:
.ex, .exs (Elixir) and .py (Python) files for changesdeps, _build, node_modules, .git, assets, priv, .venv, venvNote: Language detection is automatic – CICADA detects Elixir (mix.exs) and Python (pyproject.toml) projects automatically.
| Command | Purpose | Run When |
|---|---|---|
cicada claude | Configure MCP + incremental re-index | First setup, after local changes |
cicada status | Check index health, link status, agent files | After setup, troubleshooting |
cicada stats | View usage statistics and token metrics | Monthly reviews, optimization |
cicada watch | Monitor files and auto-reindex on changes | During active development |
cicada index --keywords . | Rebuild with keyword indexing | After large refactors or enabling keywords mode |
cicada index --embeddings . | Rebuild with embeddings (semantic search) | When you want Ollama-powered semantic analysis |
cicada index-pr . | Sync PR metadata/reviews | After new PRs merge |
<details> <summary><b>"Index file not found"</b></summary>
Run the indexer first:
cicada index /path/to/projectEnsure indexing completed successfully. Check for ~/.cicada/projects/<hash>/index.json.
</details>
<details> <summary><b>"Module not found"</b></summary>
Use the exact module name as it appears in code (e.g., MyApp.User, not User).
If module was recently added, re-index:
cicada index .</details>
<details> <summary><b>MCP Server Won't Connect</b></summary>
Troubleshooting checklist:
# For Claude Code
ls -la .mcp.json
# For Cursor
ls -la .cursor/mcp.json
# For VS Code
ls -la .vscode/settings.json cat .mcp.json
# Should contain: /absolute/path/to/project
# Not: ./project or ../project ls -la ~/.cicada/projects/
# Should show directory for your project</details>
<details> <summary><b>PR Features Not Working</b></summary>
Setup GitHub CLI:
# Install GitHub CLI
brew install gh # macOS
sudo apt install gh # Ubuntu
# or visit https://cli.github.com/
# Authenticate
gh auth login
# Index PRs
cicada index-prCommon issues:
cicada index-pr .Force rebuild:
cicada index-pr --clean</details>
<details> <summary><b>Keyword Search Not Working</b></summary>
Error: "Keyword search not available"
Cause: Index was built without keyword extraction.
Solution:
# Re-index with keyword extraction
cicada index . # or --keywordsVerify:
cat ~/.cicada/projects/<hash>/config.yaml
# Should show:
# indexing:
# mode: keywords</details>
More detail: PR Indexing, Incremental Indexing.
<details> <summary><b>Python Indexing</b></summary>
Requirements:
First-time setup: CICADA automatically installs scip-python via npm on first index. This may take a minute.
Known limitations (Beta):
Performance tips:
# Ensure .venv is excluded
echo "/.venv/" >> .gitignore
# Use keywords mode for quickest indexing
cicada index --keywords .Report issues: GitHub Issues with "Python" label
</details>
CICADA ships 7 focused MCP tools designed for efficient code exploration across Elixir, Python, and Erlang codebases.
| Need | Tool | Notes | |
|---|---|---|---|
| Start exploring | query | 🚀 START HERE - Smart discovery with keywords/patterns + filters (scope, recent, path) | |
| View a module's complete API | search_module | Functions, signatures, specs, docs. Use what_calls_it/what_it_calls for bidirectional analysis | |
| Find where a function is used | search_function | Definition + all call sites. Supports wildcards (*) and OR (`\ | `) patterns |
| Track git history | git_history | Unified tool: blame, commits, PRs, function evolution (replaces 4 legacy tools) | |
| Drill down into results | expand_result | Auto-expands modules or functions from query results | |
| Advanced index queries | query_jq | Custom jq queries for power users |
Want to see these tools in action? Check out Complete Workflow Examples with pro tips and real-world scenarios.
`query` - Smart code discovery (your starting point)
scope (public/private), recent (last 14 days), filter_type (modules/functions), match_source (docs/strings)path_pattern to filter by location`search_module` - Deep module analysis
what_calls_it=true → See who uses this module (impact analysis)what_it_calls=true → See what this module depends onMyApp.*, Python: api.handlers.*) and OR patterns (MyApp.User|MyApp.Post)`search_function` - Function usage tracking
what_calls_it=true (default) → See all callerswhat_it_calls=true → See all dependenciesinclude_usage_examples=trueusage_type: source, tests, or all`git_history` - All git operations in one tool
git_history("file.ex", start_line=42) → blame + PRgit_history("file.ex", start_line=40, end_line=60) → grouped blamegit_history("file.ex", function_name="create_user") → evolutiongit_history("file.ex") → all PRs/commitsrecent=true (14d), recent=false (>14d), recent=null (all)author="john"`expand_result` - Drill down from query results
`query_jq` - Advanced index queries
| schemaDetailed parameters + output formats: MCP_TOOLS_REFERENCE.md.
All tools return structured Markdown/JSON snippets (signatures, call sites, PR metadata) instead of full files, keeping prompts lean.
New in v0.5.1: All tools now use compact output by default to minimize token usage. Use verbose=true for detailed output with full docs and specs.
Deep Dives:
Production Ready:
Beta:
| Feature | CICADA | Serena | Codicil (Elixir-only) |
|---|---|---|---|
| Analysis Method | SCIP (static index) | LSP (real-time server) | LLM summaries + embeddings |
| Code Editing | ❌ | ✅ | ❌ |
| Git Context | ✅ PR history, blame, evolution | ❌ | ❌ |
| Resource Usage | Low (read from disk) | High (persistent server processes) | Medium (API calls) |
| Privacy | 100% local | 100% local | Requires external LLM APIs |
| Semantic Search | Local Ollama or keywords | ❌ | OpenAI/Anthropic embeddings |
| Call Graph | Bidirectional with alias resolution | LSP-based | ❌ |
When to choose CICADA: You want local-first operation with rich git context (PR attribution, blame, function evolution tracking) and efficient token usage.
When to choose Serena: You need code editing capabilities through LSP and can accept higher resource usage.
When to choose Codicil: You have an Elixir project and prefer LLM-powered semantic summaries (Elixir-only).
git clone https://github.com/wende/cicada.git
cd cicada
uv sync
pytestBefore submitting a PR:
black cicada testspytest --cov=cicada --cov-report=term-missing)We welcome issues/PRs for:
MIT – see LICENSE.
<div align="center">
Stop wasting context on blind searches. Give your AI CICADA.
</div>
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.