## Tooling for shell interactions Is it about finding FILES? use 'fd' Is it about finding TEXT/strings? use 'rg' Is it about finding CODE STRUCTURE? use 'ast-grep' Is it about SELECTING from multiple results? pipe to 'fzf' Is it about interacting with JSON? use 'jq' Is it about interacting with YAML or XML? use 'yq'
A Claude skill for mastering CLI navigation and code exploration using modern command-line tools.
The cli-ninja skill provides guidance for efficient repository navigation and code exploration using these tools:
- fd - Fast file finding
- rg (ripgrep) - Lightning-fast text search
- ast-grep - Code structure search by AST
- fzf - Interactive fuzzy selection
- jq - JSON processing
- yq - YAML/XML processing
Main skill file with:
- Tool selection decision tree
- Quick reference guide for all 6 tools
- Combination workflows (7 common patterns)
- Best practices and performance tips
- Integration examples
Comprehensive guides for each tool:
fd-patterns.md(5.1 KB) - File finding patterns and flagsrg-patterns.md(8.2 KB) - Text search patterns and regex tipsast-grep-guide.md(14 KB) - Code structure patterns for Python, Zig, Go, Ruby, JS/TS, Rustfzf-workflows.md(12 KB) - Interactive selection and preview configurationsjq-cookbook.md(11.4 KB) - JSON transformations and filtersyq-examples.md(12.4 KB) - YAML/XML processing examples
Reusable workflow examples:
combo-search.sh(8.2 KB) - 10 common combination workflowsinteractive-code-finder.sh(10.8 KB) - Interactive ast-grep + fzf tool
What are you looking for?
ββ FILES by name/path/extension?
β ββ Use: fd
β ββ Need to select from results? β Pipe to fzf
β
ββ TEXT/STRINGS in file contents?
β ββ Use: rg (ripgrep)
β ββ Need to select from results? β Pipe to fzf
β
ββ CODE STRUCTURE (functions, classes, imports)?
β ββ Use: ast-grep
β ββ Need to select from results? β Pipe to fzf
β ββ Need to refactor/replace? β Use ast-grep --rewrite
β
ββ Working with JSON data?
β ββ Use: jq
β
ββ Working with YAML or XML data?
ββ Use: yq
rg -l 'def process_data' -t py | fzf --preview 'rg -C 5 "def process_data" {}' | xargs $EDITORast-grep --pattern 'old_function($$$)' --rewrite 'new_function($$$)' -l py --interactivefd -e json | fzf --preview 'jq . {}'- Language-agnostic: Patterns for Python, JavaScript/TypeScript, Rust, Go, Zig, and Ruby
- Practical examples: Real-world workflows for common tasks
- Performance tips: Optimize searches for speed
- Integration ready: Combine tools for powerful workflows
- Interactive scripts: Ready-to-use bash scripts for complex searches
# Add the marketplace
/plugin marketplace add pythoninthegrass/cli-ninja
# Install the skill
/plugin install cli-ninjaOr install directly in one command:
/plugin install cli-ninja@pythoninthegrass/cli-ninja- Download
cli-ninja-{version}.zipfrom the latest release - Extract and place in your Claude Code plugins directory
- Restart Claude Code if necessary
Once installed, invoke the skill when navigating repositories or searching code:
/cli-ninjaUse the cli-ninja skill when:
- Navigating repositories and codebases
- Searching for files, text, or code patterns
- Working with JSON/YAML/XML configuration
- Performing code refactoring
- Building interactive CLI workflows
- Needing to select from multiple results
The skill assumes these tools are installed:
- fd
- rg (ripgrep)
- ast-grep
- fzf
- jq
- yq
Installation varies by platform (Homebrew on macOS, apt/dnf on Linux, etc.)
94.5 KB (9 files)
This project uses Release Please to automate releases based on Conventional Commits.
-
Make changes and commit using Conventional Commits format:
git commit -m "feat: add new search pattern for Python" git commit -m "fix: correct typo in fzf examples" git commit -m "docs: update installation instructions"
-
Push to main branch:
git push origin main
-
Release Please creates a PR automatically with:
- Updated CHANGELOG.md based on your commits
- Version bump following semantic versioning
- All changes since the last release
-
Merge the release PR to trigger:
- Git tag creation
- GitHub Release creation with auto-generated release notes
- Packaging and uploading of
cli-ninja-{VERSION}.zip
feat:- New feature (bumps minor version)fix:- Bug fix (bumps patch version)docs:- Documentation changes (no version bump)chore:- Maintenance tasks (no version bump)refactor:- Code refactoring (no version bump)test:- Test changes (no version bump)
Add ! or BREAKING CHANGE: footer for breaking changes (bumps major version):
git commit -m "feat!: redesign skill structure"The current version is tracked in .release-please-manifest.json. Release Please manages this automatically.
If you need to create a release manually, you can:
- Update
.release-please-manifest.jsonwith the new version - Update
CHANGELOG.mdmanually - Create and push a tag:
git tag v0.2.0 git push origin v0.2.0
The workflow will package and upload the zip file to the release.