Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
169 changes: 169 additions & 0 deletions .agents/skills/propose-tool-use-improvements/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
---
name: propose-tool-use-improvements
description: Propose improvements to how the user currently uses their tools. Analyzes existing configurations, dotfiles, and workflows to suggest better patterns, unused features, integrations, or optimizations.
---

# Propose Tool Use Improvements

Analyze how the user currently uses their tools and propose improvements—better configurations, unused features, workflow optimizations, or integrations they're missing. Focus on getting more value from what they already have.

## When to Use

- User shares dotfiles and wants optimization suggestions
- User describes a workflow that seems inefficient or manual
- User has tools that might have features they don't know about
- User mentions friction points that could be solved with better configuration
- User wants to level up their existing setup without adding new tools

## Step 1: Analyze Current Configuration

Look for:

| What to Check | What to Find |
|--------------|--------------|
| **Config files** | `.tmux.conf`, `init.lua`, `.zshrc`, git configs—are they using defaults or customizing? |
| **Plugin ecosystems** | tpm for tmux, lazy.nvim for Neovim, zsh plugins—what's installed vs. what's available? |
| **Aliases/functions** | Are they repeating commands that could be aliased or scripted? |
| **Integration gaps** | Tools that could talk to each other but don't (e.g., fzf + git, zoxide + cd) |
| **Manual workflows** | Tasks done by hand that could be automated |

## Step 2: Identify Improvement Areas

Research what they're missing:

1. **Hidden features** - Tools often have powerful features users don't discover
2. **Better defaults** - Modern tools often need config to shine
3. **Integration opportunities** - Chaining tools together (e.g., `fzf` + `bat` + `ripgrep`)
4. **Performance tuning** - Startup time, lazy loading, parallelization
5. **Workflow patterns** - Better ways to accomplish common tasks

Use **code_search** and **fetch_content** to find:
- "Best practices for [tool] configuration 2024"
- "Hidden features of [tool]"
- "[Tool] + [other tool] integration"
- Official documentation for lesser-known features

## Step 3: Structure Recommendations

Group by impact and effort:

| Category | Description |
|----------|-------------|
| **Quick wins** | One-line config changes, aliases, or keybindings |
| **Medium investment** | Plugin installations, workflow changes, script creation |
| **Deep improvements** | Architecture changes, custom scripting, migration to better patterns |

For each suggestion include:
- **Current state** - What they're probably doing now
- **The improvement** - What to change and why it's better
- **Implementation** - Config snippet or command to make it happen

## Step 4: Provide Specific Configurations

Always give concrete, copy-pasteable improvements:

```markdown
### Enable fzf previews with bat

**Current:** Plain fzf without file previews
**Improvement:** Add syntax-highlighted previews

```bash
# Add to .zshrc/.bashrc
export FZF_DEFAULT_OPTS="--preview 'bat --color=always --style=numbers --line-range=:500 {}'"
```
```

## Response Format

```markdown
## Improvements for Your [Tool/Workflow]

### Quick Wins

| Improvement | Why | Config |
|-------------|-----|--------|
| Enable tmux mouse mode | Scroll with trackpad, resize panes | `set -g mouse on` |
| Add zoxide to cd | Smarter directory jumping | `eval "$(zoxide init zsh)"` |

### Medium Investment

#### 1. [Feature Name]
**What you're missing:** [Description]
**The fix:** [Specific change]

```bash
# config snippet
```

**Result:** [What improves]

### Deep Improvements

#### [Architecture Change]
[Description of significant workflow improvement]
...

### Integration Opportunities

Your [Tool A] + [Tool B] could work together:
- Current: [Manual process]
- Better: [Integrated process]
- How: [Implementation]
```

## Guidelines

- **Assume good defaults first** - Don't suggest changes for change's sake; find real friction
- **Show the delta** - Make clear what changes vs. what stays the same
- **Provide configs** - Always include copy-pasteable snippets
- **Explain the "why"** - Help them understand what they're gaining
- **Respect complexity budgets** - Don't suggest 20 changes at once; prioritize
- **Check for existing setup** - Don't suggest what they already have
- **Version awareness** - Note if improvement requires tool updates

## Example User Flow

1. User: "here's my tmux.conf, how can I improve it?"
2. Read config → identify they're using mostly defaults, missing mouse mode, no vim keys, basic status bar
3. Research: `fetch_content` tmux documentation for newer features, best practices
4. Suggest: mouse mode, vim navigation, better status bar config, plugin recommendations (tpm + resurrect + continuum)
5. Provide specific config snippets for each
6. User asks: "what's resurrect get me?" → explain session persistence, show setup

## Common Improvement Patterns

### Tmux
- Mouse mode for scroll/resize
- Vim keys for navigation (`setw -g mode-keys vi`)
- Sensible prefix (Ctrl-a or Ctrl-space vs. Ctrl-b)
- tpm + essential plugins (resurrect, continuum, yank)
- Custom status bar with useful info

### Neovim
- Lazy loading for plugins
- LSP configuration improvements
- Telescope/fzf integration tuning
- Better keymaps for common actions
- Auto-formatting on save

### Shell (zsh/bash)
- zsh-autosuggestions + zsh-syntax-highlighting
- Better history settings (size, duplicates, sharing)
- fzf integration for history and files
- zoxide instead of/cd
- Starship prompt tuning

### Git
- Useful aliases (co, br, ci, st)
- delta for diff viewing
- Better merge/diff tools
- Hooks for linting/formatting
- Worktree usage for multi-branch work

### General CLI
- bat instead of cat (with config)
- ripgrep config file for defaults
- fd aliases for common finds
- just/task runner adoption for repeated commands
- direnv for project-specific env vars
148 changes: 148 additions & 0 deletions .agents/skills/propose-tools/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
---
name: propose-tools
description: Propose new CLI tools and applications based on the user's existing tool configuration. Analyzes Brewfiles, package manifests, or tool lists to suggest complementary additions with explanations of what value each adds to the workflow.
---

# Propose Tools

Analyze the user's existing tool configuration and propose new tools that would complement their workflow. Explain what each tool does, why it fits their setup, and what specific value it adds.

## When to Use

- User shares a Brewfile, package.json, or list of installed tools and asks for recommendations
- User wants to discover tools in a specific category (e.g., "what are good Rust CLI tools?")
- User is setting up a new machine and wants suggestions
- User mentions a workflow pain point that could be solved with a tool

## Step 1: Analyze Existing Tools

First, understand what the user already has:

| What to Look For | Why It Matters |
|-----------------|----------------|
| **Language preferences** | Rust tools? Go tools? Node-based? Suggests ecosystem preferences |
| **Terminal-centric vs GUI** | Heavy CLI suggests TUI tools; mixed suggests both |
| **Shell environment** | zsh/bash/fish with prompt customizers (starship, p10k) |
| **Editor setup** | Neovim, Emacs, VS Code—suggests integration opportunities |
| **Task runners** | just, task, make—suggests build/automation tools |
| **Version managers** | mise, asdf, nvm—suggests polyglot development |
| **Multiplexer/WM** | tmux, zellij, yabai, skhd—suggests power-user patterns |

## Step 2: Research Complementary Tools

Use **code_search** and **web_search** to find:

1. **Direct complements** - Tools that enhance what they already use (e.g., `delta` for git users)
2. **Category gaps** - Missing categories they might benefit from (e.g., no file manager → suggest `yazi`)
3. **Modern alternatives** - Faster Rust/Go rewrites of tools they use (e.g., `ripgrep` → `grep`)
4. **Ecosystem standards** - Tools commonly paired with their stack

Example searches:
```
"modern CLI tools 2024 2025 Rust alternatives"
"best terminal file manager yazi lf ranger comparison"
"zellij vs tmux features benefits"
"complement to [tool they have] workflow"
```

## Step 3: Structure Recommendations

Present tools in a table or list with:

| Column | Purpose |
|--------|---------|
| **Tool** | Name and one-line description |
| **Why You'd Like It** | Connects to their existing workflow |
| **Replaces/Complements** | What it improves or works alongside |

For high-interest tools, add:
- **Quick install** command (e.g., `brew install foo`)
- **What you'd gain** - Specific workflow improvements
- **What you might miss** - Honest trade-offs vs alternatives

## Step 4: Categorize Suggestions

Group recommendations by:

- **Immediate wins** - Tools that slot into existing workflows
- **Worth experimenting** - Tools that replace something (tmux → zellij)
- **Honorable mentions** - Related tools for future exploration

## Response Format

```markdown
Based on your [file], here are [N] tools that would complement your workflow:

## [N] Recommended Tools

| Tool | Description | Why It Fits |
|------|-------------|-------------|
| yazi | Terminal file manager (Rust) | You use lf/fzf—yazi adds image previews + faster |
| atuin | Shell history with sync | You have starship—atuin upgrades Ctrl+R experience |

### Deep Dive: [Most Relevant Tool]

**What it gets you:**
- Feature A (how it improves on current tool)
- Feature B (new capability)

**Quick try:**
\`\`\`bash
brew install [tool]
[quick start command]
\`\`\`

**Trade-offs:**
| Current | This Tool |
|---------|-----------|
| X | Y |

### Honorable Mentions
- tool-a - brief reason
- tool-b - brief reason
```

## Exclusions

Avoid recommending these categories of tools:

| Category | Examples | Why Exclude |
|----------|----------|-------------|
| **Already installed** | ripgrep, fd, fzf, zellij, atuin | Check their manifest—don't suggest what they have |
| **Duplicate functionality** | eza vs lsd vs exa, zellij vs tmux vs screen | One tool per category is enough |
| **Deprecated/unmaintained** | exa (use eza), bat-extras | Prefer actively maintained forks |
| **Niche without context** | kubectl plugins, language-specific LSPs | Unless they work in that domain |
| **GUI alternatives to their CLI tools** | VS Code when they use Neovim | Respect their terminal-centric choices |
| **Highly personal/dotfiles tools** | Shell prompts beyond starship/p10k, custom PS1 | These are deeply personal choices |

### Common Tools to Check For

Popular modern CLI tools that often appear in dotfiles—verify these aren't already present before suggesting:
- **Shell/terminal**: zellij, tmux, zoxide, atuin, mcfly, thefuck
- **File/text**: ripgrep, fd, fzf, eza, bat, delta, sd, yazi
- **Dev tools**: mise, asdf, just, hyperfine, tokei, grex

### Handling User Exclusions

If the user mentions tools to exclude:
- Note them explicitly at the start of recommendations
- Respect category-level exclusions (e.g., "no more Rust tools")
- Don't suggest alternatives to excluded tools (e.g., if they exclude zellij, don't push tmux "instead")

## Guidelines

- **Lead with the "why"** - Always connect suggestions back to their existing setup
- **Be honest about trade-offs** - Replacement tools have switching costs; acknowledge them
- **Respect their choices** - If they use tmux, don't push zellij hard—offer it as an experiment
- **Prioritize active projects** - Prefer tools with recent releases and healthy communities
- **Include install command** - Usually `brew install`, but adapt to their package manager
- **Limit to 10 main suggestions** - Too many is overwhelming; use "honorable mentions" for extras

## Example User Flow

1. User: "look at my brewfile - propose 10 other tools i might like"
2. Read Brewfile → identify Rust CLI tools, tmux, Neovim, task runners
3. Research: `code_search("zellij vs tmux features 2024")`, `web_search("modern Rust CLI tools")`
4. Suggest: yazi (complements fzf), zellij (tmux alt), atuin (enhances shell), etc.
5. User asks follow-up: "what would zellij get me?"
6. Deep dive with specific features, trade-offs, quick-start
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,5 @@ pre
temp
temp.*
temp
config/pi/auth.json
config/pi/sessions/
17 changes: 17 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Agent Instructions
- Read the `README.md`
- Read the agent instructions in `AGENTS.md`

## Style Guidelines
- **Python**: Use Ruff formatting, type hints, PEP 8 naming (snake_case)
- **Shell Scripts**: Use double quotes for variables, bash shebang for scripts
- **Error Handling**: Use proper error handling with exit codes in shell scripts
- **Neovim Config**: Organize by functionality in lua/plugins/ directory
- **Imports**: Group and sort imports (use isort for Python)
- **Comments**: Be descriptive but concise, explain why not what
- **Documentation**: For functions, include purpose and parameter descriptions
- **Testing**: Test shell functions using shunit2 framework
23 changes: 9 additions & 14 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ setup-common:
bash ./tmux/setup.sh
bash ./zsh/setup.sh
bash ./fzf/setup.sh
bash ./scripts/setup-pi.sh
bash ./scripts/setup-extras.sh

setup-macos: export OS=macos
Expand All @@ -20,7 +21,7 @@ setup-ubuntu: brew-pkgs dotfiles setup-common
setup-wsl: export OS=wsl
setup-wsl: dotfiles setup-common

.PHONY: setup-stow dotfiles
.PHONY: setup-stow dotfiles setup-uv setup-python

STOW_ARGS=-vv
setup-stow:
Expand All @@ -30,8 +31,13 @@ dotfiles: setup-stow
stow "$(STOW_ARGS)" -d dotfiles -t "$(HOME)" "$(OS)"
stow "$(STOW_ARGS)" dotfiles
stow "$(STOW_ARGS)" yabai
ln -sf ~/dotfiles/fish ~/.config/fish\

stow "$(STOW_ARGS)" skhd
ln -sf ~/dotfiles/fish ~/.config/fish
mkdir -p "$(HOME)/.agents"
ln -sfn ~/dotfiles/agents/skills "$(HOME)/.agents/skills"
mkdir -p "$(HOME)/.claude"
ln -sfn ~/dotfiles/agents/skills "$(HOME)/.claude/skills"
ln -sf ~/dotfiles/config/pi/agent/AGENTS.md "$(HOME)/.claude/CLAUDE.md"

setup-uv:
bash ./python/setup-uv.sh
Expand All @@ -54,17 +60,6 @@ setup-vim:
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
"vim" +PluginInstall +qall

.PHONY: setup-nix nix-pkgs

setup-nix:
curl -L https://nixos.org/nix/install | sh
. ./nix/load-"$(OS)".sh && nix-channel --add https://nixos.org/channels/nixpkgs-unstable unstable
. ./nix/load-"$(OS)".sh && nix-channel --update

NIX_ARGS=--extra-experimental-features nix-command --extra-experimental-features flakes
nix-pkgs: setup-nix
. ./nix/load-"$(OS)".sh && cd nix && nix flake update "$(NIX_ARGS)" && (nix profile upgrade "$(NIX_ARGS)" nix || nix profile install "$(NIX_ARGS)" .)

.PHONY: setup-brew brew-pkgs

setup-brew:
Expand Down
Loading
Loading