agentifind

Set up codebase intelligence for AI agents. Runs the agentifind CLI to extract code structure using LSP (pyright/tsserver) with tree-sitter fallback, then synthesizes a CODEBASE.md navigation guide. Run this skill to get a complete codebase map in .claude/ directory.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "agentifind" with this command: npx skills add avivk5498/agentifind/avivk5498-agentifind-agentifind-benchmark

Agentifind: Codebase Intelligence Setup

This skill sets up codebase intelligence by:

  1. Running agentifind CLI to extract code structure
  2. Detecting dynamic patterns that static analysis can't fully trace
  3. Synthesizing a navigation guide with staleness metadata

Procedure

Step 1: Check for existing guide (Staleness Detection)

If .claude/CODEBASE.md already exists, check if it's stale:

  1. Read the metadata header from CODEBASE.md:

    Source-Hash: {sha256 of codebase.json when guide was generated}
    Commit: {git commit when generated}
    Stats: {file count, function count, class count}
    
  2. Compare against current state:

    • Run sha256sum .claude/codebase.json (or equivalent)
    • Run git rev-parse HEAD
    • Read current stats from codebase.json
  3. If metadata matches: Guide is fresh. Ask user if they want to regenerate anyway.

  4. If metadata differs or missing: Guide is stale. Proceed with regeneration.

  5. If no CODEBASE.md exists: Proceed with generation.

Step 2: Detect repo type and install LSP (if needed)

Check if this is a Terraform/IaC repository:

# Check for .tf files
find . -name "*.tf" -type f | head -1

If Terraform files are found:

Check if terraform-ls is installed. If not, install it for better parsing accuracy:

# Check if terraform-ls exists
which terraform-ls || echo "NOT_INSTALLED"

If NOT_INSTALLED, install terraform-ls:

# macOS (Homebrew)
brew install hashicorp/tap/terraform-ls

# Or via Go (cross-platform)
go install github.com/hashicorp/terraform-ls@latest

Why terraform-ls matters:

  • Proper HCL parsing (not regex)
  • Accurate module resolution
  • Cross-file reference tracking
  • Provider schema awareness

If installation fails, agentifind will fall back to regex parsing (still functional but less accurate).

Step 3: Run agentifind sync

Execute the CLI to extract code structure:

npx agentifind@latest sync

Extraction Method:

  • LSP first (if available): Uses language servers for accurate cross-file resolution
    • Python: pyright-langserver (install: npm i -g pyright)
    • TypeScript: tsserver (bundled with TypeScript)
    • Terraform: terraform-ls (install: brew install hashicorp/tap/terraform-ls)
    • Note: LSP extraction can take 5-15 minutes on large codebases (building reference graph)
  • Regex/Tree-sitter fallback: Fast parsing when LSP unavailable (~30 seconds)

This creates .claude/codebase.json with:

  • Module imports/exports
  • Function and class definitions
  • Call graph relationships (more accurate with LSP)
  • Import dependencies

Options:

  • --skip-validate: Skip linting/type checks (faster)
  • --verbose: Show extraction method and progress
  • --if-stale: Only sync if source files changed

Step 4: Update .gitignore

Add the generated files to .gitignore (if not already present):

# Agentifind generated files
.claude/codebase.json
.claude/CODEBASE.md
.claude/.agentifind-checksum

These files are:

  • Regeneratable from source code
  • Large (codebase.json can be several MB)
  • Machine-specific (paths may differ)

Step 5: Read and analyze extracted data

Read .claude/codebase.json and analyze:

  • stats: File/function/class counts
  • modules: Per-file structure (imports, exports, classes, functions)
  • call_graph: What functions call what
  • import_graph: Module dependencies
  • analysis_gaps: Gaps in call graph (see Step 6)
  • validation: Lint/type issues (if present)

Step 6: Review analysis gaps

The CLI automatically detects gaps in the call graph that may indicate dynamic patterns. Read analysis_gaps from codebase.json:

{
  "analysis_gaps": {
    "uncalled_exports": [...],  // Exported functions with no callers
    "unused_imports": [...],    // Imports never referenced
    "orphan_modules": [...]     // Files never imported
  }
}

How to interpret gaps:

Gap TypeWhat It MeansLikely Cause
uncalled_exportsExported function has no detected callersEntry point, CLI command, API handler, test fixture, plugin hook, signal receiver, decorator-invoked
unused_importsImport never referenced in codeSide-effect import, re-export, type-only import, dynamically accessed
orphan_modulesFile never imported by anythingEntry point, script, config file, dynamically loaded plugin

Key insight: If something is exported but never called, or imported but never used, static analysis cannot trace it. These are the areas where the call graph is incomplete.

No manual scanning required - the CLI does this automatically by analyzing the call graph structure.

Step 7: Identify key components

From the data, determine:

  • Entry points: Files with many importers (check import_graph reverse)
  • Core modules: High export count, central in import graph
  • Utilities: Imported by many, import few themselves
  • Request flow: Trace call_graph from entry to output

Step 8: Write CODEBASE.md

First, check repo_type in codebase.json:

  • If repo_type is "terraform" → Use the Infrastructure Template below
  • If repo_type is missing or other → Use the Application Template below

Application Template (default)

Create .claude/CODEBASE.md with this structure:

# Codebase Guide

<!-- STALENESS METADATA - DO NOT EDIT -->
<!--
Generated: {ISO 8601 timestamp}
Source-Hash: {sha256 of codebase.json}
Commit: {git commit hash}
Stats: {files} files, {functions} functions, {classes} classes
-->

## ⚠️ Usage Instructions

This guide provides STARTING POINTS, not absolute truth.

**Before acting on any location:**
1. Verify the file exists with a quick Read
2. Confirm the symbol/function is still there
3. If something seems wrong, the guide may be stale - regenerate with `/agentifind`

**This guide CANNOT see:**
- Runtime behavior (dynamic imports, plugins, DI)
- Configuration-driven logic
- Database queries and their relationships
- External API integrations

## Quick Reference

| Component | Location |
|-----------|----------|
| {name} | `{path}` → `{symbol}` |

## Architecture

### Module Dependencies
{Key relationships from import_graph - focus on core modules}

### Data Flow
{Trace from call_graph if clear pattern exists}

## Analysis Gaps (Potential Dynamic Patterns)

{If analysis_gaps has items, list them here grouped by type}

### Uncalled Exports
{List from analysis_gaps.uncalled_exports - these are likely entry points, API handlers, or dynamically invoked}

| Symbol | File | Reason |
|--------|------|--------|
| {name} | `{file}:{line}` | {reason} |

### Orphan Modules
{List from analysis_gaps.orphan_modules - these are likely entry points or dynamically loaded}

| File | Reason |
|------|--------|
| `{file}` | {reason} |

**What this means:**
- Call graph is incomplete for these symbols/files
- They may be invoked via plugins, signals, decorators, CLI, or configuration
- Always trace execution manually when working in these areas
- Don't assume the call graph shows all callers

{If no gaps found, write: "No analysis gaps detected. Call graph appears complete."}

## Conventions
{Infer from naming patterns, file organization, directory structure}

## Impact Map

| If you change... | Also update... |
|------------------|----------------|
| `{high-dependency file}` | {N} dependent files |

## Known Issues
{From validation.linting/formatting/types if present, otherwise omit section}

Infrastructure Template (for Terraform/IaC repos)

When repo_type is "terraform", create .claude/CODEBASE.md with this structure:

# Infrastructure Guide

<!-- STALENESS METADATA - DO NOT EDIT -->
<!--
Generated: {ISO 8601 timestamp}
Source-Hash: {sha256 of codebase.json}
Commit: {git commit hash}
Stats: {files} files, {resources} resources, {modules} modules
-->

## ⚠️ Usage Instructions

This guide provides STARTING POINTS for infrastructure navigation.

**Before making changes:**
1. Verify the resource/module exists
2. Check the blast radius (what depends on this?)
3. Review variable dependencies
4. Consider state implications

**This guide CANNOT see:**
- Remote state data
- Dynamic values from data sources
- Provider-specific behaviors
- Secrets in tfvars files

## Infrastructure Overview

| Provider | Resources | Modules |
|----------|-----------|---------|
{For each provider in stats.providers, count resources}

## Module Structure

{List from modules array, show source and dependencies}

modules/ ├── {module.name}/ → {module.source} │ └── inputs: {list key variables}


## Resource Inventory

{Group resources by type from resources object}

### {Provider} Resources
| Type | Name | File | Dependencies |
|------|------|------|--------------|
| {type} | {name} | `{file}:{line}` | {dependencies.length} deps |

## Variable Flow

{List from variables array}

| Variable | Type | Used By | Default |
|----------|------|---------|---------|
| {name} | {type} | {used_by.length} resources | {default or "required"} |

## Blast Radius (High Risk)

{List from blast_radius where severity is "high" or "medium"}

⚠️ **Changing these resources affects many dependents:**

| Resource | Affected | Severity |
|----------|----------|----------|
| {target} | {affected_resources.length} resources | {severity} |

**Before modifying high-risk resources:**
- Run `terraform plan` to preview changes
- Consider using `terraform state mv` for refactoring
- Check if changes will force recreation

## Outputs

{List from outputs array}

| Output | Value | Referenced |
|--------|-------|------------|
| {name} | {value} | {references} |

## Dependency Graph

{Describe key relationships from dependency_graph}

Key dependencies:
- `{resource A}` → depends on → `{resource B}`

Step 9: Confirm completion

For application repos, report:

  • Files analyzed (from stats.files)
  • Symbols extracted (from stats.functions + stats.classes)
  • Extraction method used (LSP or tree-sitter)
  • Key entry points identified
  • Analysis gaps detected (count of uncalled_exports, orphan_modules)
  • Any validation issues found
  • Guide staleness metadata recorded

For Terraform/IaC repos, report:

  • Files analyzed (from stats.files)
  • Resources extracted (from stats.resources)
  • Modules detected (from stats.modules)
  • Providers used (from stats.providers)
  • High-risk resources (count from blast_radius with severity "high")
  • Variables defined vs used
  • Guide staleness metadata recorded

Step 10: Offer to update agent instructions

Check if CLAUDE.md or AGENTS.md exists in the project root.

Ask the user:

"Would you like me to add an instruction to your {CLAUDE.md/AGENTS.md} file so the agent automatically uses the CODEBASE.md for navigation?"

If user accepts:

Append this section to the file (or create AGENTS.md if neither exists):

## Codebase Navigation

Before exploring the codebase, read `.claude/CODEBASE.md` for architecture overview, key files, and conventions. This file is auto-generated by agentifind and provides:
- Quick reference to key components
- Module dependencies and data flow
- Dynamic patterns that static analysis can't trace
- Coding conventions
- Impact map for changes

**Important:** The guide provides starting points. Always verify locations before making changes.

If both CLAUDE.md and AGENTS.md exist, update CLAUDE.md (takes precedence).

If user declines:

Respond with:

"No problem! If you change your mind, add this to your CLAUDE.md or AGENTS.md file:"

## Codebase Navigation

Before exploring the codebase, read `.claude/CODEBASE.md` for architecture overview, key files, and conventions.

Output

.claude/
├── codebase.json         # Structured extraction (CLI output)
├── CODEBASE.md           # Navigation guide (this skill's output)
└── .agentifind-checksum  # Staleness detection

Notes

  • Ground ALL claims in the extracted data - do not hallucinate relationships
  • Keep the guide concise - focus on navigation over explanation
  • Prioritize "what" and "where" over "why" and "how"
  • If codebase.json already exists and is recent, skip Step 2
  • LSP extraction is slower but more accurate for cross-file references
  • Tree-sitter is faster but uses heuristic-based resolution
  • Always include the staleness metadata header - it enables future freshness checks
  • Always include the analysis gaps section - even if none found, document that the call graph is complete

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

agentifind

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

ceo-companion

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

runpod-serverless-builder

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

agent-debugger

No summary provided by upstream source.

Repository SourceNeeds Review