brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
repo-developmentMaintain a Pyserini source checkout, build developer resources, and choose focused tests without triggering heavyweight experiments.
Independent GitHub snapshot · Automated classification · Original documentation governs
Use this sub-skill when the user is contributing to Pyserini from a source checkout, fixing tests, preparing an editable install, initializing submodules, building Anserini/evaluation resources, updating docs or prebuilt-index metadata, or deciding which tests are safe for a focused change.
Do not use this sub-skill for normal PyPI installation, user-facing indexing/search/fetch, dense encoding/Faiss workflows, run evaluation/fusion usage, REST/MCP deployment, or public API recipes. Route those tasks to ../install-and-runtime/SKILL.md, ../index-search-fetch/SKILL.md, ../dense-encoding/SKILL.md, ../evaluation-and-fusion/SKILL.md, or ../serving-and-agent-tools/SKILL.md.
Confirm the checkout shape before installing:
git status --short
git submodule status tools
python --version
java -version
If tools is missing or uninitialized, initialize only the expected submodule:
git submodule update --init --recursive tools
Install in editable mode inside a Python 3.12 environment with JDK 21 available:
python -m pip install --upgrade pip
python -m pip install -e .
python -m pip check
python -c "import pyserini; print('editable import ok')"
Build local developer resources only when the target tests need them:
(cd tools/eval && tar xvfz trec_eval.9.0.4.tar.gz && cd trec_eval.9.0.4 && make)
(cd tools/eval/ndeval && make)
mkdir -p pyserini/resources/jars
cp ../anserini/target/anserini-*-fatjar.jar pyserini/resources/jars/
The fatjar copy assumes a sibling Anserini checkout that has already been built. If the user keeps the fatjar elsewhere, set ANSERINI_CLASSPATH for the current process before any PyJNIus/JVM import starts.
Select tests with the bundled helper before running native tests:
python scripts/select_safe_tests.py --help
python scripts/select_safe_tests.py --paths pyserini/server/config.py tests/core/test_server_config.py
python scripts/select_safe_tests.py --category checkout --include-bounded
Run the smallest matching commands first. Do not run broad tests, integrations, scripts/jobs*.txt, prebuilt-index downloads, model encoders, or two-click reproduction matrices unless the user explicitly approves heavyweight/network work.
tools/ is a Git submodule for evaluation tools and topics/qrels resources. Missing files under tools/eval or tools/topics-and-qrels usually mean the submodule was not initialized.anserini-*-fatjar.jar in Pyserini package resources or on ANSERINI_CLASSPATH before the JVM starts.trec_eval and ndeval binaries from the tools submodule; Python import success alone is not enough.scripts/jobs.docs-all.txt, scripts/jobs.integrations-all.txt, and scripts/jobs.regressions-all.txt as maintainer manifests, not default validation commands.references/development-workflows.md for source checkout, editable install, submodule, eval-tool, fatjar, docs, and job-manifest workflows.references/test-selection.md for safe test categories, native candidate commands, and skip rules.references/troubleshooting.md for missing submodules, missing jars, Java/Python mismatches, eval-tool failures, and accidental network/download tests.scripts/select_safe_tests.py --help for a deterministic command selector that is safe by default.pip check before blaming Pyserini code.tools submodule state before running eval, qrels, or topic tests.