codebase-index 1.9.0__tar.gz → 2.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- codebase_index-2.1.0/.claude/skills/codebase-index/.skill_version +1 -0
- codebase_index-2.1.0/.claude/skills/codebase-index/SKILL.md +65 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/.claude/skills/codebase-index/references/commands.md +33 -0
- codebase_index-2.1.0/.claude/skills/codebase-index/references/memory.md +49 -0
- {codebase_index-1.9.0/.opencode → codebase_index-2.1.0/.claude}/skills/codebase-index/references/response-contract.md +12 -1
- {codebase_index-1.9.0 → codebase_index-2.1.0}/.claude/skills/codebase-index/scripts/cbx +1 -1
- {codebase_index-1.9.0/.opencode → codebase_index-2.1.0/.claude}/skills/codebase-index/scripts/cbx.ps1 +1 -1
- {codebase_index-1.9.0 → codebase_index-2.1.0}/.claude-plugin/plugin.json +1 -1
- codebase_index-2.1.0/.codex/skills/codebase-index/.skill_version +1 -0
- codebase_index-2.1.0/.codex/skills/codebase-index/SKILL.md +65 -0
- {codebase_index-1.9.0/skill → codebase_index-2.1.0/.codex/skills/codebase-index}/references/commands.md +33 -0
- codebase_index-2.1.0/.codex/skills/codebase-index/references/memory.md +49 -0
- {codebase_index-1.9.0/.claude → codebase_index-2.1.0/.codex}/skills/codebase-index/references/response-contract.md +12 -1
- {codebase_index-1.9.0/.opencode → codebase_index-2.1.0/.codex}/skills/codebase-index/scripts/cbx +1 -1
- {codebase_index-1.9.0 → codebase_index-2.1.0}/.codex/skills/codebase-index/scripts/cbx.ps1 +1 -1
- codebase_index-2.1.0/.gitattributes +16 -0
- codebase_index-2.1.0/.github/ISSUE_TEMPLATE/benchmark_report.yml +62 -0
- codebase_index-2.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +74 -0
- codebase_index-2.1.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
- codebase_index-2.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +50 -0
- codebase_index-2.1.0/.github/ISSUE_TEMPLATE/language_support.yml +48 -0
- codebase_index-2.1.0/.github/PULL_REQUEST_TEMPLATE.md +21 -0
- codebase_index-2.1.0/.github/SUPPORT.md +25 -0
- codebase_index-2.1.0/.github/labels.yml +63 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/.github/workflows/ci.yml +21 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/.github/workflows/release.yml +14 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/.gitignore +2 -0
- codebase_index-2.1.0/.opencode/skills/codebase-index/.skill_version +1 -0
- codebase_index-2.1.0/.opencode/skills/codebase-index/SKILL.md +65 -0
- {codebase_index-1.9.0/.codex → codebase_index-2.1.0/.opencode}/skills/codebase-index/references/commands.md +33 -0
- codebase_index-2.1.0/.opencode/skills/codebase-index/references/memory.md +49 -0
- {codebase_index-1.9.0/skill → codebase_index-2.1.0/.opencode/skills/codebase-index}/references/response-contract.md +12 -1
- {codebase_index-1.9.0/.codex → codebase_index-2.1.0/.opencode}/skills/codebase-index/scripts/cbx +1 -1
- {codebase_index-1.9.0/.claude → codebase_index-2.1.0/.opencode}/skills/codebase-index/scripts/cbx.ps1 +1 -1
- {codebase_index-1.9.0 → codebase_index-2.1.0}/AGENTS.md +9 -4
- {codebase_index-1.9.0 → codebase_index-2.1.0}/CHANGELOG.md +369 -1
- codebase_index-2.1.0/CONTRIBUTING.md +120 -0
- codebase_index-2.1.0/PKG-INFO +322 -0
- codebase_index-2.1.0/README.md +272 -0
- codebase_index-2.1.0/ROADMAP.md +34 -0
- codebase_index-2.1.0/SECURITY.md +73 -0
- codebase_index-2.1.0/assets/architecture.svg +96 -0
- codebase_index-2.1.0/assets/benchmark.svg +98 -0
- codebase_index-2.1.0/assets/demo-terminal.svg +49 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/bin/cbx +1 -1
- {codebase_index-1.9.0 → codebase_index-2.1.0}/bin/cbx.ps1 +1 -1
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/ARCHITECTURE.md +19 -13
- codebase_index-2.1.0/docs/BENCHMARKS.md +263 -0
- codebase_index-2.1.0/docs/COMMUNITY_AUDIT.md +262 -0
- codebase_index-2.1.0/docs/COMMUNITY_LAUNCH.md +281 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/COMPARISON.md +19 -19
- codebase_index-2.1.0/docs/DATABASE_SCHEMA.md +6 -0
- codebase_index-2.1.0/docs/DEMO.md +103 -0
- codebase_index-2.1.0/docs/DEVELOPMENT.md +236 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/FAQ.md +39 -29
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/INSTALLATION.md +22 -19
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/MCP.md +18 -5
- codebase_index-2.1.0/docs/MEMORY.md +107 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/QUICKSTART.md +41 -30
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/RELEASE_CHECKLIST.md +27 -18
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/RETRIEVAL.md +128 -17
- codebase_index-2.1.0/docs/RETRIEVAL_PIPELINE.md +5 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/ROADMAP.md +14 -2
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/SCHEMA.md +17 -4
- codebase_index-2.1.0/docs/SECURITY.md +7 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/SECURITY_MODEL.md +34 -19
- codebase_index-2.1.0/docs/demo.tape +29 -0
- codebase_index-2.1.0/docs/installer.md +238 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m9-release.md +1 -1
- codebase_index-2.1.0/docs/superpowers/specs/2026-09-10-evidence-memory-design.md +365 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/examples/config.example.json +4 -1
- codebase_index-2.1.0/examples/demo/EXPECTED_OUTPUT.md +187 -0
- codebase_index-2.1.0/examples/demo/README.md +53 -0
- codebase_index-2.1.0/examples/demo/run_demo.ps1 +42 -0
- codebase_index-2.1.0/examples/demo/run_demo.sh +53 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/pyproject.toml +3 -2
- {codebase_index-1.9.0 → codebase_index-2.1.0}/requirements.lock +1 -1
- codebase_index-2.1.0/research/2.0-audit.md +175 -0
- codebase_index-2.1.0/research/README.md +125 -0
- codebase_index-2.1.0/research/architecture.md +185 -0
- codebase_index-2.1.0/research/build_indexes.py +68 -0
- codebase_index-2.1.0/research/data/.gitignore +8 -0
- codebase_index-2.1.0/research/diagnose_accretion.py +141 -0
- codebase_index-2.1.0/research/diagnose_calibration.py +59 -0
- codebase_index-2.1.0/research/diagnose_slots.py +118 -0
- codebase_index-2.1.0/research/diagnose_structure.py +293 -0
- codebase_index-2.1.0/research/experiment_memory.py +162 -0
- codebase_index-2.1.0/research/experiments.md +313 -0
- codebase_index-2.1.0/research/fit_gate.py +68 -0
- codebase_index-2.1.0/research/fit_weights.py +185 -0
- codebase_index-2.1.0/research/hypotheses.md +284 -0
- codebase_index-2.1.0/research/novelty.md +98 -0
- codebase_index-2.1.0/research/nucleus/__init__.py +6 -0
- codebase_index-2.1.0/research/nucleus/baselines.py +313 -0
- codebase_index-2.1.0/research/nucleus/evalrun.py +382 -0
- codebase_index-2.1.0/research/nucleus/memory.py +161 -0
- codebase_index-2.1.0/research/nucleus/relations.py +355 -0
- codebase_index-2.1.0/research/nucleus/search.py +508 -0
- codebase_index-2.1.0/research/related-work.md +250 -0
- codebase_index-2.1.0/research/selection.md +95 -0
- codebase_index-2.1.0/research/test_nucleus.py +129 -0
- codebase_index-2.1.0/scripts/apply_labels.sh +19 -0
- codebase_index-2.1.0/scripts/check_links.py +92 -0
- codebase_index-2.1.0/scripts/check_versions.py +101 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/scripts/gen_assets.py +0 -111
- codebase_index-2.1.0/scripts/gen_benchmark_chart.py +119 -0
- codebase_index-2.1.0/scripts/gen_terminal_svg.py +149 -0
- codebase_index-2.1.0/scripts/release_notes.py +113 -0
- codebase_index-2.1.0/skill/SKILL.md +65 -0
- {codebase_index-1.9.0/.opencode/skills/codebase-index → codebase_index-2.1.0/skill}/references/commands.md +33 -0
- codebase_index-2.1.0/skill/references/memory.md +49 -0
- {codebase_index-1.9.0/.codex/skills/codebase-index → codebase_index-2.1.0/skill}/references/response-contract.md +12 -1
- {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/scripts/cbx +1 -1
- {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/scripts/cbx.ps1 +1 -1
- {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/scripts/doctor.py +2 -2
- {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/scripts/smoke_test.py +0 -1
- codebase_index-2.1.0/skills/codebase-index/SKILL.md +65 -0
- codebase_index-2.1.0/skills/codebase-index/references/commands.md +106 -0
- codebase_index-2.1.0/skills/codebase-index/references/memory.md +49 -0
- codebase_index-2.1.0/skills/codebase-index/references/response-contract.md +93 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/__init__.py +1 -1
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/cli.py +218 -14
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/config.py +15 -0
- codebase_index-2.1.0/src/codebase_index/discovery/gates.py +117 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/discovery/walker.py +26 -20
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/doctor.py +38 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/graph/builder.py +92 -13
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/graph/expand.py +21 -5
- codebase_index-2.1.0/src/codebase_index/graph/modules.py +112 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/graph/navigate.py +64 -4
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/indexer/pipeline.py +29 -2
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/mcp/server.py +85 -22
- codebase_index-2.1.0/src/codebase_index/memory/__init__.py +5 -0
- codebase_index-2.1.0/src/codebase_index/memory/identity.py +181 -0
- codebase_index-2.1.0/src/codebase_index/memory/session.py +230 -0
- codebase_index-2.1.0/src/codebase_index/memory/store.py +435 -0
- codebase_index-2.1.0/src/codebase_index/memory/validate.py +150 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/models.py +31 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/output/markdown.py +170 -6
- codebase_index-2.1.0/src/codebase_index/parsers/base.py +74 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/parsers/treesitter.py +105 -1
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/diversity.py +45 -9
- codebase_index-2.1.0/src/codebase_index/retrieval/features.py +119 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/intent.py +18 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/pipeline.py +160 -4
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/priors.py +35 -2
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/rerank.py +37 -3
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/searchers.py +154 -22
- codebase_index-2.1.0/src/codebase_index/retrieval/tuning.py +274 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/scaffold.py +12 -4
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/service.py +206 -18
- codebase_index-2.1.0/src/codebase_index/skill_template/SKILL.md +65 -0
- codebase_index-2.1.0/src/codebase_index/skill_template/references/commands.md +106 -0
- codebase_index-2.1.0/src/codebase_index/skill_template/references/memory.md +49 -0
- codebase_index-2.1.0/src/codebase_index/skill_template/references/response-contract.md +93 -0
- codebase_index-2.1.0/src/codebase_index/skill_template/scripts/cbx +25 -0
- codebase_index-2.1.0/src/codebase_index/skill_template/scripts/cbx.ps1 +28 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/storage/db.py +2 -1
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/storage/repo.py +97 -17
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/storage/schema.sql +4 -1
- codebase_index-2.1.0/tests/__init__.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/benchmark_honest_RESULTS.md +6 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/benchmark_public_RESULTS.md +4 -3
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/eval/README.md +69 -2
- codebase_index-2.1.0/tests/eval/baselines.py +443 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/eval/gen_queries.py +8 -4
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/eval/harness.py +71 -5
- codebase_index-2.1.0/tests/eval/memory_eval.py +660 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/eval/metrics.py +32 -0
- codebase_index-2.1.0/tests/eval/results/1.10.0-perf.json +14 -0
- codebase_index-2.1.0/tests/eval/results/1.10.0-retrieval-8corpus.txt +58 -0
- codebase_index-2.1.0/tests/eval/results/2026-09-04-public-baselines.json +14501 -0
- codebase_index-2.1.0/tests/eval/results/2026-09-04-public-baselines.md +104 -0
- codebase_index-2.1.0/tests/eval/results/2026-09-14-evidence-memory.json +960 -0
- codebase_index-2.1.0/tests/eval/results/2026-09-14-evidence-memory.md +19 -0
- codebase_index-2.1.0/tests/eval/results/2026-09-24-agent-pilot.md +72 -0
- codebase_index-2.1.0/tests/eval/results/2026-09-24-retrieval-2.1.0.txt +47 -0
- codebase_index-2.1.0/tests/eval/results/2026-09-24-terra-nl-queries.yml +75 -0
- codebase_index-2.1.0/tests/eval/run_baselines.py +348 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/eval/run_eval.py +24 -7
- codebase_index-2.1.0/tests/fixtures/index-1.10.0/index.sqlite +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/describe_refresh.json +6 -2
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/impact_user_model.json +1 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_describe_symbol.json +6 -2
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_find_refs.json +12 -3
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_find_symbol.json +1 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_healthcheck.json +4 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_impact_of.json +1 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_index_stats.json +4 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_search_code.json +2 -2
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/refs_refresh_access_token.json +12 -3
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/search_token.json +2 -2
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/stats.json +4 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/symbol_user.json +1 -0
- codebase_index-2.1.0/tests/test_agent_ergonomics.py +227 -0
- codebase_index-2.1.0/tests/test_compact_output.py +114 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_discovery.py +24 -0
- codebase_index-2.1.0/tests/test_eval_baselines.py +68 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_gen_queries.py +15 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_mcp_golden.py +5 -7
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_mcp_server.py +33 -7
- codebase_index-2.1.0/tests/test_memory_eval_smoke.py +119 -0
- codebase_index-2.1.0/tests/test_memory_identity.py +156 -0
- codebase_index-2.1.0/tests/test_memory_lifecycle.py +232 -0
- codebase_index-2.1.0/tests/test_memory_session.py +293 -0
- codebase_index-2.1.0/tests/test_memory_stale_context.py +124 -0
- codebase_index-2.1.0/tests/test_memory_store.py +208 -0
- codebase_index-2.1.0/tests/test_memory_surfaces.py +197 -0
- codebase_index-2.1.0/tests/test_memory_validate.py +210 -0
- codebase_index-2.1.0/tests/test_migration_1x.py +107 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_packaging.py +2 -2
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_plugin_wrappers.py +24 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_priors.py +28 -0
- codebase_index-2.1.0/tests/test_qualified_refs.py +320 -0
- codebase_index-2.1.0/tests/test_ranking_features.py +263 -0
- codebase_index-2.1.0/tests/test_read_cap.py +61 -0
- codebase_index-2.1.0/tests/test_release_scripts.py +172 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_tuning_contract.py +25 -1
- codebase_index-1.9.0/.claude/skills/codebase-index/.skill_version +0 -1
- codebase_index-1.9.0/.claude/skills/codebase-index/SKILL.md +0 -89
- codebase_index-1.9.0/.codex/skills/codebase-index/.skill_version +0 -1
- codebase_index-1.9.0/.codex/skills/codebase-index/SKILL.md +0 -89
- codebase_index-1.9.0/.gitattributes +0 -7
- codebase_index-1.9.0/.github/FUNDING.yml +0 -8
- codebase_index-1.9.0/.github/ISSUE_TEMPLATE/bug_report.yml +0 -74
- codebase_index-1.9.0/.github/ISSUE_TEMPLATE/feature_request.yml +0 -56
- codebase_index-1.9.0/.github/PULL_REQUEST_TEMPLATE.md +0 -38
- codebase_index-1.9.0/.opencode/skills/codebase-index/.skill_version +0 -1
- codebase_index-1.9.0/.opencode/skills/codebase-index/SKILL.md +0 -89
- codebase_index-1.9.0/CONTRIBUTING.md +0 -162
- codebase_index-1.9.0/PKG-INFO +0 -381
- codebase_index-1.9.0/README.md +0 -331
- codebase_index-1.9.0/ROADMAP.md +0 -112
- codebase_index-1.9.0/SECURITY.md +0 -51
- codebase_index-1.9.0/assets/demo.png +0 -0
- codebase_index-1.9.0/docs/BENCHMARKS.md +0 -134
- codebase_index-1.9.0/docs/DATABASE_SCHEMA.md +0 -185
- codebase_index-1.9.0/docs/RETRIEVAL_PIPELINE.md +0 -179
- codebase_index-1.9.0/docs/SECURITY.md +0 -119
- codebase_index-1.9.0/docs/SEO.md +0 -196
- codebase_index-1.9.0/docs/installer.md +0 -239
- codebase_index-1.9.0/examples/demo-project/README.md +0 -55
- codebase_index-1.9.0/skill/SKILL.md +0 -89
- codebase_index-1.9.0/skills/codebase-index/SKILL.md +0 -89
- codebase_index-1.9.0/skills/codebase-index/references/commands.md +0 -73
- codebase_index-1.9.0/skills/codebase-index/references/response-contract.md +0 -82
- codebase_index-1.9.0/src/codebase_index/parsers/base.py +0 -47
- codebase_index-1.9.0/src/codebase_index/retrieval/tuning.py +0 -146
- codebase_index-1.9.0/src/codebase_index/skill_template/SKILL.md +0 -89
- codebase_index-1.9.0/src/codebase_index/skill_template/references/commands.md +0 -73
- codebase_index-1.9.0/src/codebase_index/skill_template/references/response-contract.md +0 -82
- codebase_index-1.9.0/src/codebase_index/skill_template/scripts/cbx +0 -25
- codebase_index-1.9.0/src/codebase_index/skill_template/scripts/cbx.ps1 +0 -28
- {codebase_index-1.9.0 → codebase_index-2.1.0}/.claude/skills/codebase-index/examples/hooks/settings.json +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/.claude-plugin/marketplace.json +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/.codex/skills/codebase-index/examples/hooks/settings.json +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/.editorconfig +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/.github/ISSUE_TEMPLATE/skill_listing_request.yml +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/.opencode/agents/codebase-index.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/.opencode/commands/codebase-index.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/.opencode/skills/codebase-index/examples/hooks/settings.json +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/CODE_OF_CONDUCT.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/LICENSE +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/adapters/claude.ps1 +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/adapters/claude.sh +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/adapters/codex.ps1 +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/adapters/codex.sh +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/adapters/opencode.ps1 +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/adapters/opencode.sh +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/assets/mark.png +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/assets/social-preview.png +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/bin/codebase-index +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/bin/codebase-index.ps1 +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/LANGUAGES.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/PRODUCT_UPGRADE_PLAN.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/SKILL_DESIGN.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-benchmark-index-improvements.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-generalize-skill-research-discipline.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m1-storage-discovery.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m2-fts-lexical.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m3-treesitter-symbols.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m4-hybrid-search.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m5-graph-impact.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m6-embeddings-vector.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m7-5-plugin-one-command-install.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m7-skill-packaging.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m8-hooks-watch.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-multilang-symbols-make-skill-win.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-06-24-snippet-skeletonization.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/specs/2026-05-29-plugin-one-command-install-design.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/specs/2026-06-14-typed-framework-edges-design.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/specs/2026-06-24-snippet-skeletonization-design.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/examples/hooks/settings.json +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/examples/queries.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/examples/sample-queries.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/examples/sample-retrieval-output.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/hooks/hooks.json +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/install.ps1 +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/install.sh +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/lib/common.ps1 +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/lib/common.sh +0 -0
- {codebase_index-1.9.0/tests → codebase_index-2.1.0/research}/__init__.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/scripts/bootstrap.ps1 +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/scripts/bootstrap.sh +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/scripts/release_smoke.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/scripts/sync_skill_copies.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/examples/basic-usage.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/examples/claude-md-example.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/examples/hooks-example.json +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/scripts/bootstrap.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/scripts/install.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/__main__.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/discovery/__init__.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/discovery/classify.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/discovery/ignore.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/embeddings/__init__.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/embeddings/backend.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/embeddings/external.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/embeddings/local.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/embeddings/noop.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/graph/__init__.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/graph/analysis.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/graph/export.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/graph/retrieval.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/indexer/__init__.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/indexer/doc_chunks.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/indexer/freshness.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/mcp/__init__.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/output/__init__.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/output/json.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/output/redact.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/parsers/__init__.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/parsers/languages.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/parsers/line_chunker.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/parsers/symbol_chunks.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/__init__.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/budget.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/fusion.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/fuzzy.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/lexical.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/skeleton.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/types.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/skill_template/examples/hooks/settings.json +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/skill_update.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/storage/__init__.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/watch/__init__.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/watch/watcher.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/benchmark_honest.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/benchmark_honest_newtowny.txt +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/benchmark_public.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/benchmark_real_repo.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/conftest.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/eval/__init__.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/eval/queries/self_repo.yml +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/eval/queries/self_repo_git.yml +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/README.md +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/expected_answers.yml +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/multilang/sample.go +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/multilang/sample.java +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/multilang/sample.rs +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/.env +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/.gitignore +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/huge.json +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/logo.png +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/node_modules/leftpad/index.js +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/secrets.pem +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/src/api/service.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/src/auth/token.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/src/models/user.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/src/schema.generated.ts +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/web/app.ts +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/architecture.json +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/explain_auth.json +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_architecture.json +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_explain_code.json +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_impact_of_diff.json +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_path_between.json +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/path_renew_to_token.json +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden_utils.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/installer/smoke.ps1 +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/installer/smoke.sh +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_analysis.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_benchmark_comparison.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_bootstrap.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_budget.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_chunker.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_classify.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_clean_cli.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_cli.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_cli_golden.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_config.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_diff_impact.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_diversity.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_doc_chunks.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_doctor.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_embeddings_backend.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_embeddings_external.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_embeddings_local.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_freshness.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_fusion.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_fuzzy.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_graph.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_graph_coverage.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_graph_export_cli.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_graph_retrieval.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_hooks_merge.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_hybrid_ranking.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_ignore.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_impact_cli.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_impact_decay.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_index_cli.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_init_cli.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_intent.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_languages.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_lexical.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_multilang_symbols.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_navigate.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_output.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_parse_guardrails.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_perf_smoke.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_pipeline.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_pipeline_search.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_pipeline_vectors.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_plugin_manifest.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_plugin_skill_parity.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_public_benchmark.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_quality_benchmark.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_redact.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_repo_search.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_rerank.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_retrieval_types.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_scaffold.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_search_cli.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_searchers.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_seeded_index.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_service.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_skeleton.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_skill_update.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_storage.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_symbol_cli.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_symbol_ranking.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_symbol_refs.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_sync_skill_copies.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_treesitter.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_update.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_update_cli.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_vector_search.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_vectors_storage.py +0 -0
- {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_watcher.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.1.0
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: codebase-index
|
|
3
|
+
description: Use before answering repository questions about architecture, implementation, symbols, references, dependencies, refactoring impact, data flow, or bugs. Query the local hybrid index first so the agent reads only evidence-bearing file:line ranges instead of scanning the repository, and verify evidence gathered earlier before relying on it.
|
|
4
|
+
allowed-tools: Bash(codebase-index search *), Bash(codebase-index explain *), Bash(codebase-index architecture *), Bash(codebase-index symbol *), Bash(codebase-index refs *), Bash(codebase-index impact *), Bash(codebase-index diff-impact *), Bash(codebase-index path *), Bash(codebase-index describe *), Bash(codebase-index verify *), Bash(codebase-index graph *), Bash(codebase-index stats *), Bash(codebase-index doctor *), Bash(codebase-index update *), Bash(codebase-index index *), Bash(cbx *), Read, Grep, Glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Codebase Index
|
|
8
|
+
|
|
9
|
+
Use the local index before reading repository files. It answers with ranked,
|
|
10
|
+
numbered lines, so most answers need no Read and no Grep at all.
|
|
11
|
+
|
|
12
|
+
## Route the question — always `--compact`
|
|
13
|
+
|
|
14
|
+
| Intent | Command |
|
|
15
|
+
|---|---|
|
|
16
|
+
| Where / how does X work? | `codebase-index search "X" --compact --session <tag>` |
|
|
17
|
+
| Overview of a feature | `codebase-index explain "X" --compact --session <tag>` |
|
|
18
|
+
| Every caller / call site of X | `codebase-index refs "Owner.member" --compact` |
|
|
19
|
+
| What breaks if X changes (incl. other modules) | `codebase-index impact "Owner.member" --compact` |
|
|
20
|
+
| Find a definition | `codebase-index symbol "X"` |
|
|
21
|
+
| A class: members, who uses it | `codebase-index describe "Class" --json` |
|
|
22
|
+
| What does my diff affect? | `codebase-index diff-impact --json` |
|
|
23
|
+
| Is what I read earlier still true? | `codebase-index verify --session <tag> --json` |
|
|
24
|
+
|
|
25
|
+
`--compact` prints `path:start-end symbol` per result with the matching lines
|
|
26
|
+
numbered underneath (` 24| public static final String FILE_ID = ...`). Cite
|
|
27
|
+
those lines as `path:24` directly. Read a range only when the lines shown do not
|
|
28
|
+
answer the question — and then only that range, never the whole file.
|
|
29
|
+
|
|
30
|
+
Name members as `Owner.member` (`TownService.refresh`, `activation::place`,
|
|
31
|
+
`CoreError::ObjectDamaged`) so same-named methods of other types are excluded.
|
|
32
|
+
`refs --compact` lines are `path:line kind caller -> target`: the list of call
|
|
33
|
+
sites with the calling function is usually the whole answer. Add
|
|
34
|
+
`--exclude-tests` for production-only lists and `--path <prefix>` for one module.
|
|
35
|
+
`kind reference` is a non-call use, e.g. an enum variant matched in a `match` arm.
|
|
36
|
+
|
|
37
|
+
`impact --compact` starts with `# module <m>: build files depending on it: ...`
|
|
38
|
+
— the answer to "does another module depend on this", with no build-file grep.
|
|
39
|
+
|
|
40
|
+
## Protocol
|
|
41
|
+
|
|
42
|
+
1. Pick one session tag per conversation (e.g. `auth-fix-1`); pass it to
|
|
43
|
+
`search`/`explain`. Results already sent in this session print as
|
|
44
|
+
`(already sent)` — use your earlier copy.
|
|
45
|
+
2. A header saying `index stale` → run `codebase-index update` once; `NO INDEX`
|
|
46
|
+
→ `codebase-index index`.
|
|
47
|
+
3. Batch independent questions into one Bash call (`cmd1; echo ---; cmd2`).
|
|
48
|
+
4. `# partial:` on refs/impact means the list may be incomplete. For
|
|
49
|
+
`Owner.member` it lists `possible_call` sites (calls on a variable the index
|
|
50
|
+
cannot type), nearest first: check those few lines, do not grep the repo.
|
|
51
|
+
5. Before relying on evidence from earlier in a long task, run
|
|
52
|
+
`codebase-index verify --session <tag> --json`.
|
|
53
|
+
6. Grep only when the index returns nothing relevant or for non-code text.
|
|
54
|
+
|
|
55
|
+
Edge confidence: `extracted` exact, `inferred` heuristic (receiver matched a
|
|
56
|
+
type), `ambiguous` unresolved. Never present an inferred chain as certain.
|
|
57
|
+
|
|
58
|
+
## Answer
|
|
59
|
+
|
|
60
|
+
Lead with the answer, then the minimum `file:line` evidence. State uncertainty
|
|
61
|
+
only when evidence is partial, inferred or stale.
|
|
62
|
+
|
|
63
|
+
Options and JSON fields: [references/commands.md](references/commands.md),
|
|
64
|
+
[references/response-contract.md](references/response-contract.md),
|
|
65
|
+
session memory: [references/memory.md](references/memory.md).
|
{codebase_index-1.9.0 → codebase_index-2.1.0}/.claude/skills/codebase-index/references/commands.md
RENAMED
|
@@ -17,6 +17,9 @@ Useful search options:
|
|
|
17
17
|
- `--offset <pagination offset>`
|
|
18
18
|
- `--raw` to disable snippet skeletonization
|
|
19
19
|
- `--no-fallback` to suppress fallback suggestions
|
|
20
|
+
- `--session <tag>` to name this conversation's context: unchanged evidence it
|
|
21
|
+
already received comes back as `reused: true` without the snippet, and
|
|
22
|
+
evidence that changed is listed under `memory.invalidated`
|
|
20
23
|
|
|
21
24
|
`explain` uses the HOW_IT_WORKS intent and a larger default token budget. Prefer
|
|
22
25
|
it over repeatedly rewording a broad search.
|
|
@@ -34,6 +37,24 @@ codebase-index describe "<file-or-symbol>" --json
|
|
|
34
37
|
|
|
35
38
|
- `architecture` reads module analysis cached at index time.
|
|
36
39
|
- `refs` finds definitions, calls, and graph-backed references.
|
|
40
|
+
For a method whose name several types share, pass `Owner.member`
|
|
41
|
+
(`TownService.refresh`, or `module::fn` for a top-level function); each site
|
|
42
|
+
names its `caller` and the `target` it resolved to. Calls the index cannot type
|
|
43
|
+
(`chest.holdings().take(..)`) come back as `possible_call`, nearest first, with
|
|
44
|
+
`coverage.partial: true`: read those before claiming a complete list.
|
|
45
|
+
`impact` and `symbol` accept the same form.
|
|
46
|
+
Filters: `--exclude-tests`, `--path <prefix>` (repeatable). `--compact` prints
|
|
47
|
+
`path:line kind caller -> target [confidence]`, one site per line.
|
|
48
|
+
- `search`, `explain` and `impact` also take `--compact`: agent text instead of
|
|
49
|
+
JSON. For search/explain, each result is `path:start-end symbols` followed by up
|
|
50
|
+
to eight numbered lines that carry the match (rarer query words first);
|
|
51
|
+
evidence already sent to the session prints as `(already sent)`. For impact,
|
|
52
|
+
one `d<hops> path:line name via edge` line per node, after a
|
|
53
|
+
`# module ...` line naming the build files that depend on the target's module.
|
|
54
|
+
- `symbol` returns exact matches alone when there are any and reports how many
|
|
55
|
+
prefix matches it left out (`more_prefix_matches`); `--exact` drops them.
|
|
56
|
+
- `describe` on a class, enum, struct or trait also lists its `members` and
|
|
57
|
+
folds their edges into `used_by` / `uses` (code outside the type).
|
|
37
58
|
- `impact` walks dependents (`up`), dependencies (`down`), or both.
|
|
38
59
|
- `diff-impact` aggregates impact for tracked changes relative to a verified
|
|
39
60
|
Git commit; new or excluded files are reported as unresolved.
|
|
@@ -49,6 +70,18 @@ codebase-index graph "<target>" --direction both --depth 2 --output graph.html
|
|
|
49
70
|
For headless work, use `--output`; do not use `--open`. Exports also support
|
|
50
71
|
`--format graphml|dot|neo4j`.
|
|
51
72
|
|
|
73
|
+
## Evidence
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
codebase-index verify --session <tag> --json
|
|
77
|
+
codebase-index verify "<path:start-end@hash>" ... --json
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
- `verify` is read-only and needs no index: it checks evidence against the
|
|
81
|
+
working tree. `all_valid` is true only when every checked span still holds.
|
|
82
|
+
- `--strict` exits 1 when anything is invalid (useful in scripts).
|
|
83
|
+
- See [memory.md](memory.md) for verdict states and when to reread.
|
|
84
|
+
|
|
52
85
|
## Index health
|
|
53
86
|
|
|
54
87
|
```bash
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Evidence Memory
|
|
2
|
+
|
|
3
|
+
Load this when you use `--session`, when a packet contains `reused`, `stale` or
|
|
4
|
+
`memory`, or when you want to cite evidence for later.
|
|
5
|
+
|
|
6
|
+
## What is guaranteed
|
|
7
|
+
|
|
8
|
+
Evidence is identified by the exact bytes of a file span. `reused: true` is set
|
|
9
|
+
only when this session already received the same text — or the whole span —
|
|
10
|
+
and those bytes are unchanged now. Nothing is decided by query similarity, and
|
|
11
|
+
memory stores no source text.
|
|
12
|
+
|
|
13
|
+
## Verdict states
|
|
14
|
+
|
|
15
|
+
| state | still true? | do this |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| `valid` | yes | use it |
|
|
18
|
+
| `relocated` | yes — identical content moved inside the file | use it; cite the new lines |
|
|
19
|
+
| `changed` | no | reread the range before relying on it |
|
|
20
|
+
| `ambiguous` | no — identical content now occurs more than once | reread |
|
|
21
|
+
| `deleted` | no — file gone; a rename or move counts as deleted | search again |
|
|
22
|
+
| `excluded` | no — now ignored or secret-like | do not read it |
|
|
23
|
+
| `unreadable` | no | search again |
|
|
24
|
+
|
|
25
|
+
## Reread even when evidence is valid
|
|
26
|
+
|
|
27
|
+
- You are about to edit and need the exact current text.
|
|
28
|
+
- The earlier snippet was a skeleton or a signature and you need the body.
|
|
29
|
+
- Your context was cleared or compacted, or you cannot see the earlier snippet.
|
|
30
|
+
- A tool output was truncated.
|
|
31
|
+
|
|
32
|
+
## Citing evidence across conversations
|
|
33
|
+
|
|
34
|
+
`codebase-index verify --session <tag> --json` lists everything the session
|
|
35
|
+
received as `path:start-end@hash` references. Keep the references next to the
|
|
36
|
+
conclusions they support in notes or handoffs:
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
Refunds are capped at the invoice total [billing/refund.py:3-4@3f9a2c1b7d4e8a90]
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Later, from any agent, check them before trusting the note:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
codebase-index verify "billing/refund.py:3-4@3f9a2c1b7d4e8a90" --json
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
`all_valid: true` means every cited span still holds exactly. Otherwise reread
|
|
49
|
+
the invalid spans and re-derive the conclusion; do not patch the old one.
|
|
@@ -16,9 +16,20 @@ Each result can contain:
|
|
|
16
16
|
- `snippet`
|
|
17
17
|
- `skeletonized`
|
|
18
18
|
- `elided_lines`
|
|
19
|
+
- `stale` — only when the index text no longer matches the file
|
|
20
|
+
- `reused` — only with `--session`, when `snippet` was withheld because this
|
|
21
|
+
session already received that exact text from unchanged source
|
|
19
22
|
|
|
20
23
|
`recommended_reads` is the read plan. Start with its first one to three entries
|
|
21
|
-
and use exact line ranges.
|
|
24
|
+
and use exact line ranges. An entry with `truncated: true` was capped at the
|
|
25
|
+
definition head (`max_read_lines`, default 120); `line_end_full` gives the real
|
|
26
|
+
extent. Read the capped range first and continue only when the head is not
|
|
27
|
+
enough.
|
|
28
|
+
|
|
29
|
+
With `--session`, the packet also carries `memory`: `session`, `reused`,
|
|
30
|
+
`tokens_saved`, and `invalidated` — references to evidence the session received
|
|
31
|
+
that has since changed. `available: false` means nothing was withheld. See
|
|
32
|
+
[memory.md](memory.md).
|
|
22
33
|
|
|
23
34
|
`pagination.has_more` and `pagination.next_offset` indicate additional results.
|
|
24
35
|
Prefer a more specific command or a larger token budget before paging.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# - Whitelists subcommands so the skill can never invoke destructive ones (clean/init/watch).
|
|
5
5
|
set -euo pipefail
|
|
6
6
|
|
|
7
|
-
ALLOWED="search explain architecture symbol refs impact diff-impact path describe graph stats doctor update index"
|
|
7
|
+
ALLOWED="search explain architecture symbol refs impact diff-impact path describe verify graph stats doctor update index"
|
|
8
8
|
|
|
9
9
|
sub="${1:-}"
|
|
10
10
|
case " $ALLOWED " in
|
|
@@ -10,7 +10,7 @@ param(
|
|
|
10
10
|
$ErrorActionPreference = "Stop"
|
|
11
11
|
$allowed = @(
|
|
12
12
|
"search", "explain", "architecture", "symbol", "refs", "impact", "diff-impact",
|
|
13
|
-
"path", "describe", "graph", "stats", "doctor", "update", "index"
|
|
13
|
+
"path", "describe", "verify", "graph", "stats", "doctor", "update", "index"
|
|
14
14
|
)
|
|
15
15
|
|
|
16
16
|
if ($allowed -notcontains $Subcommand) {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "codebase-index",
|
|
4
4
|
"displayName": "Codebase Index",
|
|
5
5
|
"description": "Give Claude a precise local map of your codebase: find implementations, trace behavior, and predict change impact with file-line evidence.",
|
|
6
|
-
"version": "1.
|
|
6
|
+
"version": "2.1.0",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "codebase-index contributors"
|
|
9
9
|
},
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.1.0
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: codebase-index
|
|
3
|
+
description: Use before answering repository questions about architecture, implementation, symbols, references, dependencies, refactoring impact, data flow, or bugs. Query the local hybrid index first so the agent reads only evidence-bearing file:line ranges instead of scanning the repository, and verify evidence gathered earlier before relying on it.
|
|
4
|
+
allowed-tools: Bash(codebase-index search *), Bash(codebase-index explain *), Bash(codebase-index architecture *), Bash(codebase-index symbol *), Bash(codebase-index refs *), Bash(codebase-index impact *), Bash(codebase-index diff-impact *), Bash(codebase-index path *), Bash(codebase-index describe *), Bash(codebase-index verify *), Bash(codebase-index graph *), Bash(codebase-index stats *), Bash(codebase-index doctor *), Bash(codebase-index update *), Bash(codebase-index index *), Bash(cbx *), Read, Grep, Glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Codebase Index
|
|
8
|
+
|
|
9
|
+
Use the local index before reading repository files. It answers with ranked,
|
|
10
|
+
numbered lines, so most answers need no Read and no Grep at all.
|
|
11
|
+
|
|
12
|
+
## Route the question — always `--compact`
|
|
13
|
+
|
|
14
|
+
| Intent | Command |
|
|
15
|
+
|---|---|
|
|
16
|
+
| Where / how does X work? | `codebase-index search "X" --compact --session <tag>` |
|
|
17
|
+
| Overview of a feature | `codebase-index explain "X" --compact --session <tag>` |
|
|
18
|
+
| Every caller / call site of X | `codebase-index refs "Owner.member" --compact` |
|
|
19
|
+
| What breaks if X changes (incl. other modules) | `codebase-index impact "Owner.member" --compact` |
|
|
20
|
+
| Find a definition | `codebase-index symbol "X"` |
|
|
21
|
+
| A class: members, who uses it | `codebase-index describe "Class" --json` |
|
|
22
|
+
| What does my diff affect? | `codebase-index diff-impact --json` |
|
|
23
|
+
| Is what I read earlier still true? | `codebase-index verify --session <tag> --json` |
|
|
24
|
+
|
|
25
|
+
`--compact` prints `path:start-end symbol` per result with the matching lines
|
|
26
|
+
numbered underneath (` 24| public static final String FILE_ID = ...`). Cite
|
|
27
|
+
those lines as `path:24` directly. Read a range only when the lines shown do not
|
|
28
|
+
answer the question — and then only that range, never the whole file.
|
|
29
|
+
|
|
30
|
+
Name members as `Owner.member` (`TownService.refresh`, `activation::place`,
|
|
31
|
+
`CoreError::ObjectDamaged`) so same-named methods of other types are excluded.
|
|
32
|
+
`refs --compact` lines are `path:line kind caller -> target`: the list of call
|
|
33
|
+
sites with the calling function is usually the whole answer. Add
|
|
34
|
+
`--exclude-tests` for production-only lists and `--path <prefix>` for one module.
|
|
35
|
+
`kind reference` is a non-call use, e.g. an enum variant matched in a `match` arm.
|
|
36
|
+
|
|
37
|
+
`impact --compact` starts with `# module <m>: build files depending on it: ...`
|
|
38
|
+
— the answer to "does another module depend on this", with no build-file grep.
|
|
39
|
+
|
|
40
|
+
## Protocol
|
|
41
|
+
|
|
42
|
+
1. Pick one session tag per conversation (e.g. `auth-fix-1`); pass it to
|
|
43
|
+
`search`/`explain`. Results already sent in this session print as
|
|
44
|
+
`(already sent)` — use your earlier copy.
|
|
45
|
+
2. A header saying `index stale` → run `codebase-index update` once; `NO INDEX`
|
|
46
|
+
→ `codebase-index index`.
|
|
47
|
+
3. Batch independent questions into one Bash call (`cmd1; echo ---; cmd2`).
|
|
48
|
+
4. `# partial:` on refs/impact means the list may be incomplete. For
|
|
49
|
+
`Owner.member` it lists `possible_call` sites (calls on a variable the index
|
|
50
|
+
cannot type), nearest first: check those few lines, do not grep the repo.
|
|
51
|
+
5. Before relying on evidence from earlier in a long task, run
|
|
52
|
+
`codebase-index verify --session <tag> --json`.
|
|
53
|
+
6. Grep only when the index returns nothing relevant or for non-code text.
|
|
54
|
+
|
|
55
|
+
Edge confidence: `extracted` exact, `inferred` heuristic (receiver matched a
|
|
56
|
+
type), `ambiguous` unresolved. Never present an inferred chain as certain.
|
|
57
|
+
|
|
58
|
+
## Answer
|
|
59
|
+
|
|
60
|
+
Lead with the answer, then the minimum `file:line` evidence. State uncertainty
|
|
61
|
+
only when evidence is partial, inferred or stale.
|
|
62
|
+
|
|
63
|
+
Options and JSON fields: [references/commands.md](references/commands.md),
|
|
64
|
+
[references/response-contract.md](references/response-contract.md),
|
|
65
|
+
session memory: [references/memory.md](references/memory.md).
|
|
@@ -17,6 +17,9 @@ Useful search options:
|
|
|
17
17
|
- `--offset <pagination offset>`
|
|
18
18
|
- `--raw` to disable snippet skeletonization
|
|
19
19
|
- `--no-fallback` to suppress fallback suggestions
|
|
20
|
+
- `--session <tag>` to name this conversation's context: unchanged evidence it
|
|
21
|
+
already received comes back as `reused: true` without the snippet, and
|
|
22
|
+
evidence that changed is listed under `memory.invalidated`
|
|
20
23
|
|
|
21
24
|
`explain` uses the HOW_IT_WORKS intent and a larger default token budget. Prefer
|
|
22
25
|
it over repeatedly rewording a broad search.
|
|
@@ -34,6 +37,24 @@ codebase-index describe "<file-or-symbol>" --json
|
|
|
34
37
|
|
|
35
38
|
- `architecture` reads module analysis cached at index time.
|
|
36
39
|
- `refs` finds definitions, calls, and graph-backed references.
|
|
40
|
+
For a method whose name several types share, pass `Owner.member`
|
|
41
|
+
(`TownService.refresh`, or `module::fn` for a top-level function); each site
|
|
42
|
+
names its `caller` and the `target` it resolved to. Calls the index cannot type
|
|
43
|
+
(`chest.holdings().take(..)`) come back as `possible_call`, nearest first, with
|
|
44
|
+
`coverage.partial: true`: read those before claiming a complete list.
|
|
45
|
+
`impact` and `symbol` accept the same form.
|
|
46
|
+
Filters: `--exclude-tests`, `--path <prefix>` (repeatable). `--compact` prints
|
|
47
|
+
`path:line kind caller -> target [confidence]`, one site per line.
|
|
48
|
+
- `search`, `explain` and `impact` also take `--compact`: agent text instead of
|
|
49
|
+
JSON. For search/explain, each result is `path:start-end symbols` followed by up
|
|
50
|
+
to eight numbered lines that carry the match (rarer query words first);
|
|
51
|
+
evidence already sent to the session prints as `(already sent)`. For impact,
|
|
52
|
+
one `d<hops> path:line name via edge` line per node, after a
|
|
53
|
+
`# module ...` line naming the build files that depend on the target's module.
|
|
54
|
+
- `symbol` returns exact matches alone when there are any and reports how many
|
|
55
|
+
prefix matches it left out (`more_prefix_matches`); `--exact` drops them.
|
|
56
|
+
- `describe` on a class, enum, struct or trait also lists its `members` and
|
|
57
|
+
folds their edges into `used_by` / `uses` (code outside the type).
|
|
37
58
|
- `impact` walks dependents (`up`), dependencies (`down`), or both.
|
|
38
59
|
- `diff-impact` aggregates impact for tracked changes relative to a verified
|
|
39
60
|
Git commit; new or excluded files are reported as unresolved.
|
|
@@ -49,6 +70,18 @@ codebase-index graph "<target>" --direction both --depth 2 --output graph.html
|
|
|
49
70
|
For headless work, use `--output`; do not use `--open`. Exports also support
|
|
50
71
|
`--format graphml|dot|neo4j`.
|
|
51
72
|
|
|
73
|
+
## Evidence
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
codebase-index verify --session <tag> --json
|
|
77
|
+
codebase-index verify "<path:start-end@hash>" ... --json
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
- `verify` is read-only and needs no index: it checks evidence against the
|
|
81
|
+
working tree. `all_valid` is true only when every checked span still holds.
|
|
82
|
+
- `--strict` exits 1 when anything is invalid (useful in scripts).
|
|
83
|
+
- See [memory.md](memory.md) for verdict states and when to reread.
|
|
84
|
+
|
|
52
85
|
## Index health
|
|
53
86
|
|
|
54
87
|
```bash
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Evidence Memory
|
|
2
|
+
|
|
3
|
+
Load this when you use `--session`, when a packet contains `reused`, `stale` or
|
|
4
|
+
`memory`, or when you want to cite evidence for later.
|
|
5
|
+
|
|
6
|
+
## What is guaranteed
|
|
7
|
+
|
|
8
|
+
Evidence is identified by the exact bytes of a file span. `reused: true` is set
|
|
9
|
+
only when this session already received the same text — or the whole span —
|
|
10
|
+
and those bytes are unchanged now. Nothing is decided by query similarity, and
|
|
11
|
+
memory stores no source text.
|
|
12
|
+
|
|
13
|
+
## Verdict states
|
|
14
|
+
|
|
15
|
+
| state | still true? | do this |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| `valid` | yes | use it |
|
|
18
|
+
| `relocated` | yes — identical content moved inside the file | use it; cite the new lines |
|
|
19
|
+
| `changed` | no | reread the range before relying on it |
|
|
20
|
+
| `ambiguous` | no — identical content now occurs more than once | reread |
|
|
21
|
+
| `deleted` | no — file gone; a rename or move counts as deleted | search again |
|
|
22
|
+
| `excluded` | no — now ignored or secret-like | do not read it |
|
|
23
|
+
| `unreadable` | no | search again |
|
|
24
|
+
|
|
25
|
+
## Reread even when evidence is valid
|
|
26
|
+
|
|
27
|
+
- You are about to edit and need the exact current text.
|
|
28
|
+
- The earlier snippet was a skeleton or a signature and you need the body.
|
|
29
|
+
- Your context was cleared or compacted, or you cannot see the earlier snippet.
|
|
30
|
+
- A tool output was truncated.
|
|
31
|
+
|
|
32
|
+
## Citing evidence across conversations
|
|
33
|
+
|
|
34
|
+
`codebase-index verify --session <tag> --json` lists everything the session
|
|
35
|
+
received as `path:start-end@hash` references. Keep the references next to the
|
|
36
|
+
conclusions they support in notes or handoffs:
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
Refunds are capped at the invoice total [billing/refund.py:3-4@3f9a2c1b7d4e8a90]
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Later, from any agent, check them before trusting the note:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
codebase-index verify "billing/refund.py:3-4@3f9a2c1b7d4e8a90" --json
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
`all_valid: true` means every cited span still holds exactly. Otherwise reread
|
|
49
|
+
the invalid spans and re-derive the conclusion; do not patch the old one.
|
|
@@ -16,9 +16,20 @@ Each result can contain:
|
|
|
16
16
|
- `snippet`
|
|
17
17
|
- `skeletonized`
|
|
18
18
|
- `elided_lines`
|
|
19
|
+
- `stale` — only when the index text no longer matches the file
|
|
20
|
+
- `reused` — only with `--session`, when `snippet` was withheld because this
|
|
21
|
+
session already received that exact text from unchanged source
|
|
19
22
|
|
|
20
23
|
`recommended_reads` is the read plan. Start with its first one to three entries
|
|
21
|
-
and use exact line ranges.
|
|
24
|
+
and use exact line ranges. An entry with `truncated: true` was capped at the
|
|
25
|
+
definition head (`max_read_lines`, default 120); `line_end_full` gives the real
|
|
26
|
+
extent. Read the capped range first and continue only when the head is not
|
|
27
|
+
enough.
|
|
28
|
+
|
|
29
|
+
With `--session`, the packet also carries `memory`: `session`, `reused`,
|
|
30
|
+
`tokens_saved`, and `invalidated` — references to evidence the session received
|
|
31
|
+
that has since changed. `available: false` means nothing was withheld. See
|
|
32
|
+
[memory.md](memory.md).
|
|
22
33
|
|
|
23
34
|
`pagination.has_more` and `pagination.next_offset` indicate additional results.
|
|
24
35
|
Prefer a more specific command or a larger token budget before paging.
|
{codebase_index-1.9.0/.opencode → codebase_index-2.1.0/.codex}/skills/codebase-index/scripts/cbx
RENAMED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# - Whitelists subcommands so the skill can never invoke destructive ones (clean/init/watch).
|
|
5
5
|
set -euo pipefail
|
|
6
6
|
|
|
7
|
-
ALLOWED="search explain architecture symbol refs impact diff-impact path describe graph stats doctor update index"
|
|
7
|
+
ALLOWED="search explain architecture symbol refs impact diff-impact path describe verify graph stats doctor update index"
|
|
8
8
|
|
|
9
9
|
sub="${1:-}"
|
|
10
10
|
case " $ALLOWED " in
|
|
@@ -10,7 +10,7 @@ param(
|
|
|
10
10
|
$ErrorActionPreference = "Stop"
|
|
11
11
|
$allowed = @(
|
|
12
12
|
"search", "explain", "architecture", "symbol", "refs", "impact", "diff-impact",
|
|
13
|
-
"path", "describe", "graph", "stats", "doctor", "update", "index"
|
|
13
|
+
"path", "describe", "verify", "graph", "stats", "doctor", "update", "index"
|
|
14
14
|
)
|
|
15
15
|
|
|
16
16
|
if ($allowed -notcontains $Subcommand) {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Скрипты-инсталляторы должны иметь LF, иначе ломаются на macOS/Linux
|
|
2
|
+
# (shebang "#!/usr/bin/env sh\r" недопустим). PowerShell-файлы — тоже LF для единообразия.
|
|
3
|
+
*.sh text eol=lf
|
|
4
|
+
*.ps1 text eol=lf
|
|
5
|
+
*.py text eol=lf
|
|
6
|
+
# cbx — POSIX-скрипт без расширения; CRLF в worktree ломает shebang при копировании
|
|
7
|
+
cbx text eol=lf
|
|
8
|
+
# .skill_version хранит ровно "<version>\n"; scripts/sync_skill_copies.py пишет и
|
|
9
|
+
# сравнивает байты, поэтому при core.autocrlf=true git подставлял CRLF в worktree и
|
|
10
|
+
# test_real_repo_is_in_sync падал на любом свежем клоне под Windows.
|
|
11
|
+
.skill_version text eol=lf
|
|
12
|
+
# sample_repo сравнивается побайтно: tests/fixtures/index-1.10.0/index.sqlite хранит sha256
|
|
13
|
+
# её файлов. Файлы без правила (web/app.ts) git под Windows с core.autocrlf=true отдавал
|
|
14
|
+
# с CRLF, под Linux/macOS с LF, и update на CI переиндексировал файл. -text отключает
|
|
15
|
+
# любую конверсию: в рабочем дереве те же байты, что в репозитории, на любой ОС.
|
|
16
|
+
tests/fixtures/sample_repo/** -text
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
name: Benchmark report
|
|
2
|
+
description: Share a reproduced, failed, or new benchmark run (good or bad numbers both welcome)
|
|
3
|
+
title: "[Benchmark]: "
|
|
4
|
+
labels: ["benchmark"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Independent runs are how this project keeps its numbers honest. Unflattering results are as useful as flattering ones.
|
|
10
|
+
|
|
11
|
+
- type: dropdown
|
|
12
|
+
id: kind
|
|
13
|
+
attributes:
|
|
14
|
+
label: What did you run?
|
|
15
|
+
options:
|
|
16
|
+
- tests/eval/run_eval.py (retrieval eval, own corpus)
|
|
17
|
+
- tests/eval/run_eval.py (shipped query sets)
|
|
18
|
+
- tests/benchmark_public.py (synthetic suite)
|
|
19
|
+
- tests/benchmark_honest.py (index vs rg+window)
|
|
20
|
+
- Something else (describe below)
|
|
21
|
+
validations:
|
|
22
|
+
required: true
|
|
23
|
+
|
|
24
|
+
- type: input
|
|
25
|
+
id: version
|
|
26
|
+
attributes:
|
|
27
|
+
label: codebase-index version / commit
|
|
28
|
+
placeholder: "1.9.0 or git SHA"
|
|
29
|
+
validations:
|
|
30
|
+
required: true
|
|
31
|
+
|
|
32
|
+
- type: input
|
|
33
|
+
id: corpus
|
|
34
|
+
attributes:
|
|
35
|
+
label: Corpus
|
|
36
|
+
description: Public repository URL + commit SHA, or language / size if private.
|
|
37
|
+
placeholder: "https://github.com/pallets/flask @ d318b68 — Python, ~18k LOC"
|
|
38
|
+
validations:
|
|
39
|
+
required: true
|
|
40
|
+
|
|
41
|
+
- type: textarea
|
|
42
|
+
id: command
|
|
43
|
+
attributes:
|
|
44
|
+
label: Exact commands
|
|
45
|
+
render: shell
|
|
46
|
+
validations:
|
|
47
|
+
required: true
|
|
48
|
+
|
|
49
|
+
- type: textarea
|
|
50
|
+
id: results
|
|
51
|
+
attributes:
|
|
52
|
+
label: Results table / raw output
|
|
53
|
+
description: Paste the pooled table and significance rows as printed. Attach the JSON if large.
|
|
54
|
+
render: markdown
|
|
55
|
+
validations:
|
|
56
|
+
required: true
|
|
57
|
+
|
|
58
|
+
- type: textarea
|
|
59
|
+
id: notes
|
|
60
|
+
attributes:
|
|
61
|
+
label: Observations
|
|
62
|
+
description: Anything surprising, queries that failed, or where the baseline beat the index.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Something is wrong, crashes, or returns the wrong result
|
|
3
|
+
title: "[Bug]: "
|
|
4
|
+
labels: ["bug", "triage"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Thanks. A reproducible report gets fixed fastest. Do not paste real secrets — the tool redacts snippets, your logs may not.
|
|
10
|
+
|
|
11
|
+
- type: input
|
|
12
|
+
id: version
|
|
13
|
+
attributes:
|
|
14
|
+
label: codebase-index version
|
|
15
|
+
description: "`pip show codebase-index` (there is no --version flag)"
|
|
16
|
+
placeholder: "1.9.0"
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
|
|
20
|
+
- type: input
|
|
21
|
+
id: env
|
|
22
|
+
attributes:
|
|
23
|
+
label: Python and OS
|
|
24
|
+
placeholder: "Python 3.12.3 · macOS 14.4 / Ubuntu 24.04 / Windows 11"
|
|
25
|
+
validations:
|
|
26
|
+
required: true
|
|
27
|
+
|
|
28
|
+
- type: dropdown
|
|
29
|
+
id: surface
|
|
30
|
+
attributes:
|
|
31
|
+
label: Surface
|
|
32
|
+
options:
|
|
33
|
+
- CLI
|
|
34
|
+
- Claude Code skill / plugin
|
|
35
|
+
- Codex CLI
|
|
36
|
+
- OpenCode
|
|
37
|
+
- MCP server
|
|
38
|
+
- Installer scripts
|
|
39
|
+
- Other
|
|
40
|
+
validations:
|
|
41
|
+
required: true
|
|
42
|
+
|
|
43
|
+
- type: textarea
|
|
44
|
+
id: what-happened
|
|
45
|
+
attributes:
|
|
46
|
+
label: What happened, and what did you expect?
|
|
47
|
+
placeholder: |
|
|
48
|
+
Ran `codebase-index refs open_session --json` on <repo>. Expected the call in ctx.py; got an empty list with coverage.partial=false.
|
|
49
|
+
validations:
|
|
50
|
+
required: true
|
|
51
|
+
|
|
52
|
+
- type: textarea
|
|
53
|
+
id: repro
|
|
54
|
+
attributes:
|
|
55
|
+
label: Steps to reproduce
|
|
56
|
+
description: Ideally against a public repository or a tiny snippet we can index.
|
|
57
|
+
placeholder: |
|
|
58
|
+
1. git clone https://github.com/... && cd ...
|
|
59
|
+
2. codebase-index index
|
|
60
|
+
3. codebase-index search "..." --json
|
|
61
|
+
validations:
|
|
62
|
+
required: true
|
|
63
|
+
|
|
64
|
+
- type: textarea
|
|
65
|
+
id: doctor
|
|
66
|
+
attributes:
|
|
67
|
+
label: "`codebase-index doctor` output"
|
|
68
|
+
render: shell
|
|
69
|
+
|
|
70
|
+
- type: textarea
|
|
71
|
+
id: logs
|
|
72
|
+
attributes:
|
|
73
|
+
label: Relevant output (`--json` where applicable) or traceback
|
|
74
|
+
render: shell
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
blank_issues_enabled: false
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: Questions and ideas
|
|
4
|
+
url: https://github.com/denfry/codebase-index/discussions
|
|
5
|
+
about: Ask how to use the tool, discuss design, or share what you built with it.
|
|
6
|
+
- name: Security vulnerability
|
|
7
|
+
url: https://github.com/denfry/codebase-index/security/advisories/new
|
|
8
|
+
about: Report privately. Please do not open a public issue (see SECURITY.md).
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: Feature request
|
|
2
|
+
description: Propose an improvement or a new capability
|
|
3
|
+
title: "[Feature]: "
|
|
4
|
+
labels: ["enhancement", "triage"]
|
|
5
|
+
body:
|
|
6
|
+
- type: textarea
|
|
7
|
+
id: problem
|
|
8
|
+
attributes:
|
|
9
|
+
label: Problem
|
|
10
|
+
description: What are you trying to do with your agent that the tool makes hard today?
|
|
11
|
+
placeholder: "When I ask Claude Code about ..., codebase-index returns ..., so the agent ends up reading ..."
|
|
12
|
+
validations:
|
|
13
|
+
required: true
|
|
14
|
+
|
|
15
|
+
- type: textarea
|
|
16
|
+
id: proposal
|
|
17
|
+
attributes:
|
|
18
|
+
label: Proposal
|
|
19
|
+
description: What should happen instead? A CLI example or a sketch of the JSON is ideal.
|
|
20
|
+
validations:
|
|
21
|
+
required: true
|
|
22
|
+
|
|
23
|
+
- type: dropdown
|
|
24
|
+
id: area
|
|
25
|
+
attributes:
|
|
26
|
+
label: Area
|
|
27
|
+
options:
|
|
28
|
+
- Retrieval quality (ranking, fusion, budget)
|
|
29
|
+
- Graph extraction (edges, impact, paths)
|
|
30
|
+
- Language support
|
|
31
|
+
- Indexing (discovery, parsing, freshness)
|
|
32
|
+
- CLI / output format
|
|
33
|
+
- MCP server
|
|
34
|
+
- Claude Code / Codex / OpenCode integration
|
|
35
|
+
- Benchmarks / evaluation
|
|
36
|
+
- Documentation
|
|
37
|
+
- Other
|
|
38
|
+
validations:
|
|
39
|
+
required: true
|
|
40
|
+
|
|
41
|
+
- type: textarea
|
|
42
|
+
id: evidence
|
|
43
|
+
attributes:
|
|
44
|
+
label: How would we know it worked?
|
|
45
|
+
description: Retrieval changes need a measurable effect (see tests/eval). A query and the file you expected is enough to start.
|
|
46
|
+
|
|
47
|
+
- type: textarea
|
|
48
|
+
id: alternatives
|
|
49
|
+
attributes:
|
|
50
|
+
label: Alternatives or workarounds you tried
|