Add more scientific research tool detectors - #156
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR expands Brief’s research/scientific tooling detection by adding new knowledge-base tool definitions (across R, Python, Julia, and shared tools), plus a dedicated fixture project and tests to validate those signals. It also fixes recursive glob handling so multi-dot filename patterns (e.g., **/*.nf.test) are checked via the bounded walk rather than the extension cache.
Changes:
- Added knowledge-base detectors for nf-test, nf-core, MultiQC, Dockstore, DVC, cibuildwheel, MyST-Parser, BenchmarkTools.jl, lintr, styler, targets, vdiffr, and tinytest.
- Updated recursive glob optimization to avoid incorrect extension-cache short-circuiting for multi-dot patterns.
- Added a comprehensive
testdata/research-tools-projectfixture and Go tests covering the new detection signals.
Reviewed changes
Copilot reviewed 26 out of 26 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| detect/detect.go | Refines recursive glob optimization to correctly handle multi-dot suffix patterns via bounded walk. |
| detect/research_tools_test.go | Adds fixture-based and minimal-signal tests to verify new research tool detectors. |
| knowledge/_shared/nf-test.toml | Defines nf-test detection including multi-dot recursive patterns. |
| knowledge/_shared/nf-core.toml | Adds nf-core detection via nf-core metadata file(s). |
| knowledge/_shared/multiqc.toml | Adds MultiQC detection via common config filenames (including nested). |
| knowledge/_shared/dvc.toml | Adds DVC detection via standard config/lockfile markers and .dvc/ config. |
| knowledge/_shared/dockstore.toml | Adds Dockstore detection via standard Dockstore descriptor locations. |
| knowledge/python/cibuildwheel.toml | Adds cibuildwheel detection via dependency and tool.cibuildwheel key presence. |
| knowledge/python/myst-parser.toml | Adds MyST-Parser detection via dependency and optional conf.py content signals. |
| knowledge/julia/benchmarktools.toml | Adds BenchmarkTools.jl detection via Project.toml keys and dependency. |
| knowledge/r/lintr.toml | Adds lintr detection and command/config metadata. |
| knowledge/r/styler.toml | Adds styler detection and command metadata. |
| knowledge/r/targets.toml | Adds targets detection and command/config metadata. |
| knowledge/r/tinytest.toml | Adds tinytest detection via canonical test file/dir signals and command metadata. |
| knowledge/r/vdiffr.toml | Adds vdiffr detection via R dependency signals and taxonomy metadata. |
| testdata/research-tools-project/nf-test.config | Fixture signal for nf-test config. |
| testdata/research-tools-project/tests/pipeline/main.nf.test | Fixture multi-dot recursive file signal for nf-test (**/*.nf.test). |
| testdata/research-tools-project/.nf-core.yml | Fixture signal for nf-core metadata. |
| testdata/research-tools-project/assets/multiqc_config.yml | Fixture nested MultiQC config signal. |
| testdata/research-tools-project/.github/.dockstore.yml | Fixture Dockstore descriptor signal. |
| testdata/research-tools-project/.dvc/config | Fixture DVC project config signal. |
| testdata/research-tools-project/pyproject.toml | Fixture signals for MyST-Parser dependency and cibuildwheel config. |
| testdata/research-tools-project/Project.toml | Fixture signal for BenchmarkTools dependency in Julia. |
| testdata/research-tools-project/DESCRIPTION | Fixture signals for R Suggests-based detection (lintr/styler/targets/tinytest/vdiffr). |
| testdata/research-tools-project/_targets.R | Fixture signal for targets pipeline detection. |
| testdata/research-tools-project/tests/tinytest.R | Fixture signal for tinytest test runner presence. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add detectors for nf-test, nf-core, MultiQC, Dockstore, DVC, cibuildwheel, MyST-Parser, BenchmarkTools.jl, lintr, styler, targets, vdiffr, and tinytest.
Handle recursive multi-dot file patterns such as
**/*.nf.testthrough the bounded file walk, and cover the signals with a research project fixture.