| name | plugin-navigator |
| description | Navigate between Jekyll plugins and their tests. Use when working on _plugins/ or _tests/, finding untested code, or reviewing test coverage. |
Plugin Navigator
Tools for navigating between plugins (_plugins/src/) and tests (_tests/src/).
Scripts
Run from project root:
.claude/skills/plugin-navigator/scripts/test-for-plugin _plugins/src/infrastructure/url_utils.rb
.claude/skills/plugin-navigator/scripts/plugin-for-test _tests/src/infrastructure/test_url_utils.rb
.claude/skills/plugin-navigator/scripts/coverage-stats
.claude/skills/plugin-navigator/scripts/coverage-stats --list-missing
.claude/skills/plugin-navigator/scripts/coverage-stats --list-missing --by-domain
.claude/skills/plugin-navigator/scripts/orphan-tests
Naming Convention
- Plugin:
_plugins/src/{path}/{name}.rb
- Test:
_tests/src/{path}/test_{name}.rb or _tests/src/{path}/test_{name}_*.rb
Matching is precise: test_user.rb and test_user_integration.rb match user.rb, but test_user_profile.rb does NOT match user.rb (it matches user_profile.rb).
Architecture
Four domains under _plugins/src/:
| Domain | Purpose |
|---|
infrastructure/ | Low-level utilities (logging, URL, text processing, link cache) |
content/ | Domain logic (books, posts, authors, series, short stories) |
seo/ | JSON-LD generators, front matter validation |
ui/ | Generic components (cards, ratings, citations) |
Test Review Checklist
When reviewing test comprehensiveness:
- Public API coverage - Are all public methods tested?
- Edge cases - nil inputs, empty collections, missing data
- Error paths - Invalid input, missing dependencies
- Boundary conditions - First/last items, single vs multiple
- Integration - Does it work with real Jekyll site data?
Known Quirks
test_helper.rb, test_render_mode_coverage.rb, and
test_link_cache_structure.rb are allowlisted in orphan-tests
(cross-cutting suites with no matching plugin)