dora is a CLI tool that provides AI agents with fast, structured code intelligence. It replaces grep/find/glob with pre-computed aggregates, reducing token usage and improving efficiency. Operations teams benefit from quicker code navigation and context understanding, integrating with tools like Sourcegraph and SQLite.
git clone https://github.com/butttons/dora.gitdora pre-indexes codebases into SQLite, enabling AI agents to answer questions about code structure, dependencies, and symbol usage through millisecond queries instead of multi-step file exploration. It wraps SCIP language indexers (TypeScript, Python, Java, Rust, and more) and adds Tree-sitter analysis for function signatures, complexity metrics, and code smells. The tool reduces token consumption and speeds up code navigation for operations teams and AI agents working with Claude, Cursor, and other tools. dora outputs results in TOON format optimized for LLM token usage and provides an MCP server interface for direct agent integration.
1. **Install dora**: Ensure dora is installed and available in your PATH. Run `dora --version` to verify. 2. **Run the analysis**: Execute the prompt template in your terminal or AI tool, replacing `[CODEBASE_PATH]` and `[SPECIFIC_FUNCTION_NAME]` with your repository path and target function. For example: ```bash dora analyze src/ --function processTransaction --context 3 ``` 3. **Refine results**: Use the `--context` flag to adjust how many lines of context are included around each call (default is 2). 4. **Export for review**: Pipe the output to a file for further analysis: ```bash dora analyze src/ --function processTransaction --context 3 > transaction_calls.txt ``` 5. **Integrate with tools**: Use the results in tools like Sourcegraph to jump directly to the identified lines or set up alerts for changes in these files. **Tips:** - For large repositories, narrow the search by specifying subdirectories (e.g., `src/services/`). - Combine with `dora grep` for broader pattern matching if needed. - Use the `--json` flag to get machine-readable output for further processing.
Find all references to a symbol across a large codebase in milliseconds
Identify bidirectional dependencies and circular imports automatically
Rank files by change risk and coupling to prioritize refactoring
Discover the most imported files and unused symbols in a project
No install command available. Check the GitHub repository for manual installation instructions.
git clone https://github.com/butttons/doraCopy the install command above and run it in your terminal.
Launch Claude Code, Cursor, or your preferred AI coding agent.
Use the prompt template or examples below to test the skill.
Adapt the skill to your specific use case and workflow.
Use dora to analyze the [CODEBASE_PATH] repository and identify all functions that call [SPECIFIC_FUNCTION_NAME]. For each caller, extract the file path, line number, and the context of the call (e.g., 3 lines before/after). Format the results as a structured table with columns: File Path, Line Number, Context, and Caller Function Name. Prioritize results by most recently modified files first.
Here’s the analysis of calls to `processTransaction()` in the `payment-gateway` repository as of 2024-05-20. The results are ordered by most recently modified files:
| File Path | Line Number | Context | Caller Function Name |
|-------------------------|-------------|---------------------------------------------------------------------------------------------|-----------------------------|
| src/handlers/api.js | 42 | ```javascript
const result = await processTransaction(
transactionData,
{ retryPolicy: 'exponential' }
);
``` | handlePaymentRequest |
| src/utils/validators.js | 187 | ```javascript
if (!isValidTransaction(transaction)) {
processTransaction(transaction, { dryRun: true });
}
``` | validateTransaction |
| src/services/ledger.js | 315 | ```javascript
const ledgerEntry = processTransaction(
transaction,
{ includeMetadata: true }
);
``` | updateLedger |
| src/legacy/v1/bridge.js | 78 | ```javascript
processTransaction(legacyData, { version: '1.0' });
``` | legacyBridgeHandler |
**Key Insights:**
- The `api.js` and `validators.js` files are the most frequently modified, suggesting active development in these areas.
- The `ledger.js` file uses `processTransaction` with metadata, which may be critical for auditing.
- The `bridge.js` file in the legacy directory appears to be a compatibility layer, indicating potential technical debt.
**Recommendations:**
1. Review the `api.js` handler for potential optimizations in transaction processing.
2. Investigate the `validators.js` file for edge cases where `processTransaction` is called with `dryRun: true`.
3. Consider refactoring the `bridge.js` file to reduce dependency on `processTransaction` in legacy code.Achieve ultra-fast JavaScript execution with built-in bundling and TypeScript support.
Get more done every day with Microsoft Teams – powered by AI
Automate security compliance and monitor real-time security posture seamlessly.
Automate your spreadsheet tasks with AI power
Agentic AI Workflow platform
Connected workspace for docs, wikis, and projects
Take a free 3-minute scan and get personalized AI skill recommendations.
Take free scan