skills/atuin/SKILL.md
Shell history management with Atuin. Use when configuring shell history, setting up history sync, searching command history, importing history from other shells, troubleshooting atuin issues, or optimizing history workflows. Covers installation, sync setup, search modes, statistics, and self-hosting.
npx skillsauth add julianobarbosa/claude-code-skills atuinInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Magical shell history with encrypted sync across all your machines.
Atuin replaces your shell history with a SQLite database and provides:
| Shell | Support Level | |-------|--------------| | Zsh | Full | | Bash | Full | | Fish | Full | | Nushell | Full | | Xonsh | Full |
# Official installer (recommended)
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh
# macOS (Homebrew)
brew install atuin
# Cargo
cargo install atuin
# Arch Linux
pacman -S atuin
Zsh (~/.zshrc):
eval "$(atuin init zsh)"
Bash (~/.bashrc):
eval "$(atuin init bash)"
Fish (~/.config/fish/config.fish):
atuin init fish | source
Nushell (config.nu):
source ~/.local/share/atuin/init.nu
# Import existing history
atuin import auto
# Optional: Register for sync
atuin register -u <USERNAME> -e <EMAIL>
# Verify setup
atuin doctor
| Key | Action |
|-----|--------|
| Ctrl+R | Open search UI |
| Up/Down | Navigate history |
| Tab | Select without executing |
| Enter | Execute command |
| Alt+1-9 | Quick select item |
| Ctrl+R (in UI) | Cycle filter modes |
| Mode | Description |
|------|-------------|
| global | All history across machines |
| host | Current machine only |
| session | Current terminal session |
| directory | Current working directory |
| workspace | Git repository root |
| Mode | Description |
|------|-------------|
| prefix | Match from start of command |
| fulltext | Substring match anywhere |
| fuzzy | Fuzzy matching (default) |
| skim | Skim-style fuzzy finder |
# Basic search
atuin search "git push"
# Filter by exit code (successful only)
atuin search --exit 0 "make"
# Time-based filtering
atuin search --after "yesterday 3pm" "docker"
atuin search --before "2024-01-01" "npm"
# Combine filters
atuin search --exit 0 --after "1 week ago" "kubectl"
# Directory filter
atuin search --cwd /path/to/project "test"
# 1. Register account
atuin register -u <USERNAME> -e <EMAIL>
# 2. Login (creates session)
atuin login -u <USERNAME>
# 3. Import existing history
atuin import auto
# 4. Sync
atuin sync
# Check sync status
atuin status
# Using Docker
docker run -d \
-p 8888:8888 \
-v $HOME/.atuin-server:/data \
ghcr.io/atuinsh/atuin:latest \
server start
# Configure client
atuin config set sync_address "http://localhost:8888"
# ~/.config/atuin/config.toml
[sync]
records = true # Enable sync v2
~/.config/atuin/config.toml # Main config
~/.local/share/atuin/history.db # History database
~/.local/share/atuin/key # Encryption key
~/.local/share/atuin/session # Server session
# ~/.config/atuin/config.toml
# Search behavior
search_mode = "fuzzy" # prefix, fulltext, fuzzy, skim
filter_mode = "global" # global, host, session, directory, workspace
# Shell key binding defaults
filter_mode_shell_up_key_binding = "session" # Up arrow default
# UI settings
style = "compact" # auto, full, compact
inline_height = 40 # Max lines (0 = full screen)
show_preview = true # Show command preview
show_help = true # Show keybind help
enter_accept = false # true = execute immediately
# Sync settings
auto_sync = true # Sync automatically
sync_frequency = "1h" # How often to sync
sync_address = "https://api.atuin.sh" # Server URL
# Privacy
secrets_filter = true # Auto-filter sensitive data
store_failed = true # Store failed commands
# ~/.config/atuin/config.toml
# Regex patterns to exclude from history
history_filter = [
"^password",
"^secret",
"^export.*API_KEY",
".*--password.*"
]
# Directories to exclude
cwd_filter = [
"^/tmp",
"^/private"
]
# Built-in secrets filter (AWS keys, tokens, etc.)
secrets_filter = true
# ~/.config/atuin/config.toml
# Vim-style navigation
keymap_mode = "vim-normal" # emacs, vim-normal, vim-insert, auto
# Cursor style per mode
[keymap_cursor]
emacs = "blink-block"
vim_insert = "blink-bar"
vim_normal = "steady-block"
# History operations
atuin history list # List all history
atuin history list --cmd-only # Commands only (no metadata)
atuin history prune # Remove entries
# Search
atuin search [query] # Interactive search
atuin search --interactive # Force interactive mode
# Sync
atuin sync # Manual sync
atuin sync --force # Force full sync
atuin status # Sync status
# Statistics
atuin stats # Usage statistics
atuin stats --count 20 # Top 20 commands
# Account
atuin register # Create account
atuin login # Login to sync server
atuin logout # Logout
atuin account delete # Delete account
# Maintenance
atuin doctor # Diagnostic checks
atuin info # System information
atuin gen-completions # Generate shell completions
# Auto-detect and import
atuin import auto
# Specific shells
atuin import zsh
atuin import bash
atuin import fish
atuin import resh
# Import zsh_history file
atuin import zsh-hist-db
# Start daemon (background sync)
atuin daemon
# Check daemon status
atuin daemon status
# Basic stats
atuin stats
# Top N commands
atuin stats --count 25
# Example output:
# Total commands: 50,234
# Unique commands: 12,456
#
# Top 10:
# 1. git status (2,345)
# 2. cd (1,890)
# 3. ls (1,654)
# 4. git diff (1,234)
# ...
# ~/.config/atuin/config.toml
[stats]
# Commands where subcommands matter
common_subcommands = [
"cargo",
"git",
"kubectl",
"docker",
"npm"
]
# Prefixes to strip from stats
common_prefix = [
"sudo"
]
# Morning: Sync history from other machines
atuin sync
# During work: Search across all history
# Press Ctrl+R, type query
# Use Ctrl+R to cycle: session → directory → global
# Find that command you ran last week
atuin search --after "1 week ago" "docker-compose"
# Check your patterns
atuin stats
# On Machine A: Register and setup
atuin register -u myuser -e [email protected]
atuin import auto
atuin sync
# On Machine B: Login and sync
atuin login -u myuser
atuin sync
# History now shared between machines
# Search finds commands from both
# Check installation
atuin doctor
# Verify shell integration
echo $ATUIN_SESSION # Should be set
# Test search
atuin search "test"
# Check sync status
atuin status
# Force resync if needed
atuin sync --force
# ~/.config/atuin/config.toml
# Use prefix mode for faster matching
search_mode = "prefix"
# Limit to session by default
filter_mode = "session"
# Reduce preview height
max_preview_height = 2
# ~/.config/atuin/config.toml
# Sync less frequently
sync_frequency = "4h"
# Enable sync v2 (more efficient)
[sync]
records = true
# ~/.config/atuin/config.toml
[daemon]
enabled = true
sync_frequency = 300 # seconds
# 1. Install atuin
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh
# 2. Import existing history
atuin import auto
# 3. Add shell integration (replaces fzf Ctrl+R)
echo 'eval "$(atuin init zsh)"' >> ~/.zshrc
# 4. Remove fzf history binding (if any)
# Remove: bindkey '^R' fzf-history-widget
# mcfly: Export first, then import
mcfly export > history.txt
# Manual import needed
# hstr: Standard history import works
atuin import auto
~/.local/share/atuin/key)# Backup your encryption key
cp ~/.local/share/atuin/key ~/atuin-key.backup
# Restore on new machine
cp ~/atuin-key.backup ~/.local/share/atuin/key
# ~/.config/atuin/config.toml
# Enable automatic secrets filtering
secrets_filter = true # Blocks AWS keys, GitHub tokens, etc.
# Add custom patterns
history_filter = [
".*password=.*",
".*secret=.*",
"^mysql.*-p.*"
]
| Issue | Solution |
|-------|----------|
| Ctrl+R not working | Check shell integration in rc file |
| Sync failing | Run atuin doctor, check network |
| Missing history | Run atuin import auto |
| Slow search | Switch to prefix search mode |
| Duplicate history | Check if imported multiple times |
# Full diagnostics
atuin doctor
# System info
atuin info
# Check database
sqlite3 ~/.local/share/atuin/history.db "SELECT COUNT(*) FROM history"
# Debug mode
ATUIN_LOG=debug atuin sync
# Logout and clear local data
atuin logout
rm -rf ~/.local/share/atuin
rm -rf ~/.config/atuin
# Reinstall
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh
atuin status reports ok, but inserts buffer locally only. History looks fine until you check on another machine.~/.local/share/atuin/key.fuzzy vs prefix: match counts differ subtly; switching modes confuses muscle memory at 2am.~/.zsh_history and atuin's DB drift; history builtin and atuin search return different results.development
End-to-end branch delivery: commit (no AI attribution) → push → open a pull request → ensure a Board work item exists (create one per task, assigned to the configured user, if none) and link it → after merge, clean up branch and worktree. Auto-detects the platform from the remote — Azure Repos + Boards (azure-devops-node-api SDK; OAuth Bearer push fallback via `az`) or GitHub (Octokit; `gh` for auth). Scripts are TypeScript, run via `bun`. Use whenever asked to "ship", "ship it", "ship this branch", "open a PR", "push and open a PR", "raise a PR", "deliver this", "send this for review", or "create a PR and link the work item" — and when a direct push to main is blocked and the change needs to go through a PR instead.
testing
Brief description of what this skill does. Include specific triggers - when should Claude use this skill? Example triggers, file types, or keywords that indicate this skill applies.
tools
Manage and troubleshoot PATH configuration in zsh. Use when adding tools to PATH (bun, nvm, Python venv, cargo, go), diagnosing "command not found" errors, validating PATH entries, or organizing shell configuration in .zshrc and .zshrc.local files.
tools
Zabbix monitoring system automation via API and Python. Use when: (1) Managing hosts, templates, items, triggers, or host groups, (2) Automating monitoring configuration, (3) Sending data via Zabbix trapper/sender, (4) Querying historical data or events, (5) Bulk operations on Zabbix objects, (6) Maintenance window management, (7) User/permission management