Nano Banana Pro
Agent skill for nano-banana-pro
A centralized collection of utility scripts and tools for consistent development environments across machines.
Sign in to like and favorite skills
A centralized collection of utility scripts and tools for consistent development environments across machines.
This repository serves as a single source of truth for commonly used tools, scripts, and utilities that enhance productivity across different development environments. It provides a quick and reliable way to set up these tools on any supported platform with automatic installation of required dependencies.
git clone <repository-url> ~/github/tools cd ~/github/tools ./setup.sh source ~/.zshrc
tools/ ├── setup.sh # Main setup script - PATH, permissions, and tool installation ├── scripts/ # Executable tools and utilities (SOURCE OF TRUTH) │ └── sync-to-dist.sh # Syncs all source files to src/jk_tools/ for packaging ├── install/ # Tool installation scripts (SOURCE OF TRUTH) │ ├── rust.sh # Installs Rust and Cargo via rustup │ ├── code2prompt.sh # Installs code2prompt via cargo │ └── agents.sh # Syncs to dist + installs commands to Claude/OpenCode/Codex CLIs ├── agents/ # AI agent assets (SOURCE OF TRUTH) │ ├── commands/ # Markdown command definitions (edit here) │ ├── mcp/ # Canonical MCP server definitions (edit here) │ └── settings.local.json # Settings for agent commands (edit here) ├── src/jk_tools/ # Distribution package (AUTO-SYNCED - DO NOT EDIT) │ ├── agents/ # Mirrored from agents/ (auto-synced) │ ├── scripts/ # Mirrored from scripts/ (auto-synced) │ ├── install/ # Mirrored from install/ (auto-synced) │ ├── setup_manager.py # Mirrored from root (auto-synced) │ ├── __init__.py # Package-only file │ └── cli.py # Package-only entry point ├── scratch/ # Temporary workspace (gitignored) ├── AGENTS.md # This file - documentation └── LICENSE # Repository license
The setup script automatically checks for and installs required tools. Each tool has its own installation script in the
install/ directory.
~/Library/Application Support/Code/User/mcp.json on macOS, ~/.config/Code/User/mcp.json on Linux./.vscode/mcp.json (auto-generated by the installer)IMPORTANT: This repository uses a source/distribution model for packaging.
agents/ - Agent commands, MCP configs, settingsscripts/ - Utility scriptsinstall/ - Installation scriptssetup_manager.py - Setup manager.vscode/ - VS Code planning commandssrc/jk_tools/ - Auto-synced mirror for Python package distribution./setup.shsrc/jk_tools/ - they will be overwrittenWhen you run
./setup.sh, it:
scripts/sync-to-dist.shsrc/jk_tools/No manual sync needed! Just edit the source files and run
./setup.sh.
✅ Automatically synced:
agents/commands/*.md → src/jk_tools/agents/commands/agents/mcp/ → src/jk_tools/agents/mcp/agents/settings.local.json → src/jk_tools/agents/scripts/ → src/jk_tools/scripts/install/ → src/jk_tools/install/setup_manager.py → src/jk_tools/setup_manager.py.vscode/plan-*.md and other planning commands → src/jk_tools/.vscode/❌ Not synced (package-only):
src/jk_tools/__init__.pysrc/jk_tools/cli.py❌ Not synced (project-specific):
.vscode/settings.json.vscode/mcp.jsonTo add a new agent command:
Create the command file in
agents/commands/:
# Create new command nano agents/commands/my-new-command.md
Run setup to sync and install:
./setup.sh
Command is now available in:
~/.claude/commands/my-new-command.md~/.config/opencode/command/my-new-command.md~/.codex/prompts/my-new-command.md~/.config/github-copilot/prompts/my-new-command.prompt.mdsrc/jk_tools/agents/commands/my-new-command.md (for distribution)By default, commands are installed globally (user home directory). You can also install commands locally to a project directory for version control and team sharing:
# Installs to ~/.claude/commands, ~/.config/opencode/command, etc. uvx jk-tools ./setup.sh
# Install commands locally to current directory uvx jk-tools --commands-local claude,opencode,ghcp # Install to specific directory uvx jk-tools --commands-local claude --local-dir ~/my-project
| CLI Tool | Local Directory | Auto-Discovery | Status |
|---|---|---|---|
| Claude Code | | ✅ Yes | ✅ Fully supported |
| OpenCode | | ✅ Yes | ✅ Fully supported |
| GitHub Copilot | | ⚠️ Manual attach | ✅ Supported |
| Codex | N/A | ❌ No | ❌ Not supported |
What gets installed:
Examples:
# Install from local repository (for development) uvx jk-tools-setup --commands-local claude # Install from GitHub (for production use) uvx --from git+https://github.com/jakkaj/tools jk-tools-setup --commands-local claude # Install GitHub Copilot commands from GitHub uvx --from git+https://github.com/jakkaj/tools jk-tools-setup --commands-local ghcp # Install to specific directory uvx --from git+https://github.com/jakkaj/tools jk-tools-setup --commands-local claude --local-dir ~/my-project # Install multiple CLIs at once uvx --from git+https://github.com/jakkaj/tools jk-tools-setup --commands-local claude,ghcp,opencode # Force reinstall to get latest version uvx --force-reinstall --from git+https://github.com/jakkaj/tools jk-tools-setup --commands-local ghcp # Result (Claude example): # ./ # └── .claude/ # └── commands/ # ├── plan-0-constitution.md # ├── plan-1-specify.md # ├── tad.md # └── ... (14 command files)
.prompt.md extension (e.g., tad.md → tad.prompt.md).github/copilot-instructions.md for auto-loaded instructionsCodex does not currently support project-local commands (requested feature: GitHub issue #4734).
Workarounds:
~/.codex/prompts/CODEX_HOME=$(pwd)/.codex/Local commands can be committed to git for team sharing:
# Add local commands to git git add .claude/commands/ git add .opencode/command/ git add .github/prompts/ git commit -m "Add local AI CLI commands" git push
Team members will automatically have access to project-specific commands after cloning.
To add a new tool to the repository:
scripts/ directoryinstall/ directory
install/<toolname>.sh./setup.sh to apply changes (syncs and installs)When creating new tools, follow these conventions:
Help System:
--help flag for detailed documentationNaming:
analyze-dependencies.sh)jk- prefixDocumentation:
Integration:
--help, --version, --verboseAfter setup, any script in the
scripts/ directory can be called directly from anywhere in your terminal without specifying the full path.
To see all available tools and their descriptions:
jk-tools # List all tools with descriptions jk-jt # Short alias for jk-tools jk-tools -v # Verbose mode with full help text
All tools follow a consistent help convention:
<tool-name> --help # Get detailed help for any tool jk-gcm --help # Example: help for generate-codebase-md
Tools with dashes in their names automatically get
jk- prefixed aliases:
generate-codebase-md.sh → jk-gcmjk-tools.sh → jk-jtWhen working with this repository, AI assistants should:
jk-tools to see all available utilities--helpjk-gcm) for efficiency./scratch/ to keep repo cleangit status, git diff, git log, git show), but NEVER modify git state (no git add, git commit, git push, git checkout, etc.) unless explicitly requested by the userExample workflow for an AI assistant:
# 1. Discover what tools are available jk-tools # 2. Get detailed help for a specific tool jk-gcm --help # 3. Use the tool with appropriate parameters jk-gcm ./scratch/analysis ./src # 4. Process the generated markdown cat ./scratch/analysis/codebase.md
src/jk_tools/ - it's auto-synced./setup.sh syncs and installs everything./setup.sh syncs source → distribution automatically./scripts/sync-to-dist.sh (if needed without install)git pullscripts/ and run ./setup.shsrc/jk_tools/ filesUse a top-level
scratch/ directory in this repository for temporary experiments, throwaway scripts, notes, or generated files you do not want tracked by Git.
mkdir -p scratch cd scratch # Create or copy experimental files here
You can freely create, modify, and delete anything inside
scratch/ without impacting version control. The path is ignored via .gitignore.
scripts/) before committingAdd helpers or prototypes here first; once stable, promote them into
scripts/ and run ./setup.sh.