mirror of
https://github.com/Matir/skel.git
synced 2026-05-25 21:19:09 -07:00
Skel updates
This commit is contained in:
15
dotfiles/config/gemini/settings.json
Normal file
15
dotfiles/config/gemini/settings.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"editor": {
|
||||||
|
"mode": "vim"
|
||||||
|
},
|
||||||
|
"context": {
|
||||||
|
"includeFiles": [
|
||||||
|
"/usr/local/google/home/davidtomaschik/.skel/GEMINI.md",
|
||||||
|
"/usr/local/google/home/davidtomaschik/.skel/AGENTS.md"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"experimental": {
|
||||||
|
"skills": true,
|
||||||
|
"planMode": true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -39,3 +39,15 @@ disabled = true
|
|||||||
[kubernetes]
|
[kubernetes]
|
||||||
disabled = false
|
disabled = false
|
||||||
detect_folders = ["k8s"]
|
detect_folders = ["k8s"]
|
||||||
|
|
||||||
|
[custom.gemini_context]
|
||||||
|
description = "Displays the current Gemini CLI context"
|
||||||
|
when = "test -n \"$GEMINI_CLI_HOME\""
|
||||||
|
command = """
|
||||||
|
context_dir=\"${XDG_CONFIG_HOME:-$HOME/.config}/gemini\"
|
||||||
|
if [[ \"$GEMINI_CLI_HOME\" == $context_dir/* ]]; then
|
||||||
|
basename \"$GEMINI_CLI_HOME\"
|
||||||
|
fi
|
||||||
|
"""
|
||||||
|
style = "bold blue"
|
||||||
|
format = "♊[$output](blue) "
|
||||||
|
|||||||
168
dotfiles/zshrc.d/gemini.zsh
Normal file
168
dotfiles/zshrc.d/gemini.zsh
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
# Gemini CLI Context Management
|
||||||
|
|
||||||
|
# Base directory for Gemini contexts
|
||||||
|
export GEMINI_CONTEXT_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/gemini"
|
||||||
|
|
||||||
|
# Ensure the base context directory exists
|
||||||
|
mkdir -p "$GEMINI_CONTEXT_DIR"
|
||||||
|
|
||||||
|
# Template settings file
|
||||||
|
GEMINI_TEMPLATE_SETTINGS="${HOME}/.skel/dotfiles/config/gemini/settings.json"
|
||||||
|
|
||||||
|
# Create a new Gemini context
|
||||||
|
gemini-context-create() {
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo "Usage: gemini-context-create <name>"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local context_name="$1"
|
||||||
|
local context_path="$GEMINI_CONTEXT_DIR/$context_name"
|
||||||
|
|
||||||
|
if [[ "$context_name" =~ [/] ]]; then
|
||||||
|
echo "Error: Context name cannot contain slashes."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "$context_path" ]; then
|
||||||
|
echo "Error: Context '$context_name' already exists at $context_path"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Creating context '$context_name' at $context_path"
|
||||||
|
mkdir -p "$context_path/.gemini"
|
||||||
|
|
||||||
|
if [ -f "$GEMINI_TEMPLATE_SETTINGS" ]; then
|
||||||
|
cp "$GEMINI_TEMPLATE_SETTINGS" "$context_path/.gemini/settings.json"
|
||||||
|
echo "Initialized with template settings."
|
||||||
|
else
|
||||||
|
echo "Warning: Template settings not found at $GEMINI_TEMPLATE_SETTINGS"
|
||||||
|
touch "$context_path/.gemini/settings.json"
|
||||||
|
fi
|
||||||
|
echo "Context '$context_name' created."
|
||||||
|
}
|
||||||
|
|
||||||
|
# List available Gemini contexts
|
||||||
|
_gemini_context_list_internal() {
|
||||||
|
command ls "$GEMINI_CONTEXT_DIR" 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
gemini-context-list() {
|
||||||
|
echo "Available Gemini contexts:"
|
||||||
|
local contexts=$(_gemini_context_list_internal)
|
||||||
|
if [ -z "$contexts" ]; then
|
||||||
|
echo " (No contexts found)"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
for context in $contexts; do
|
||||||
|
if [ -d "$GEMINI_CONTEXT_DIR/$context" ]; then
|
||||||
|
echo " $context"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Use a specific Gemini context
|
||||||
|
gemini-context-use() {
|
||||||
|
local context_name
|
||||||
|
local quiet=0
|
||||||
|
|
||||||
|
if [ "$1" = "-q" ] || [ "$1" = "--quiet" ]; then
|
||||||
|
quiet=1
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
if command -v fzf >/dev/null; then
|
||||||
|
context_name=$(_gemini_context_list_internal | fzf --prompt="Select Gemini Context: ")
|
||||||
|
if [ -z "$context_name" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Usage: gemini-context-use [-q] <name>"
|
||||||
|
echo "fzf not found for interactive selection."
|
||||||
|
gemini-context-list
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
context_name="$1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local context_path="$GEMINI_CONTEXT_DIR/$context_name"
|
||||||
|
|
||||||
|
if [ ! -d "$context_path" ]; then
|
||||||
|
[[ "$quiet" -eq 0 ]] && echo "Error: Context '$context_name' not found at $context_path"
|
||||||
|
[[ "$quiet" -eq 0 ]] && gemini-context-list
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
export GEMINI_CLI_HOME="$context_path"
|
||||||
|
[[ "$quiet" -eq 0 ]] && echo "Switched to Gemini context '$context_name' (GEMINI_CLI_HOME=$GEMINI_CLI_HOME)"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Edit a context's settings
|
||||||
|
gemini-context-edit() {
|
||||||
|
local context_name
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
if command -v fzf >/dev/null; then
|
||||||
|
context_name=$(_gemini_context_list_internal | fzf --prompt="Select Gemini Context to Edit: ")
|
||||||
|
if [ -z "$context_name" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Usage: gemini-context-edit <name>"
|
||||||
|
gemini-context-list
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
context_name="$1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local context_path="$GEMINI_CONTEXT_DIR/$context_name"
|
||||||
|
local settings_file="$context_path/.gemini/settings.json"
|
||||||
|
|
||||||
|
if [ ! -d "$context_path" ]; then
|
||||||
|
echo "Error: Context '$context_name' not found."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$settings_file" ]; then
|
||||||
|
echo "Error: settings.json not found for context '$context_name'."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
${EDITOR:-vim} "$settings_file"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Show the current Gemini context
|
||||||
|
gemini-context-current() {
|
||||||
|
if [ -n "$GEMINI_CLI_HOME" ]; then
|
||||||
|
local current_context=$(basename "$GEMINI_CLI_HOME")
|
||||||
|
if [ "$GEMINI_CONTEXT_DIR/$current_context" = "$GEMINI_CLI_HOME" ]; then
|
||||||
|
echo "Current Gemini context: $current_context"
|
||||||
|
else
|
||||||
|
echo "Current Gemini context: Custom"
|
||||||
|
fi
|
||||||
|
echo "GEMINI_CLI_HOME=$GEMINI_CLI_HOME"
|
||||||
|
else
|
||||||
|
echo "No Gemini context set, using default."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Unset the current Gemini context
|
||||||
|
gemini-context-unset() {
|
||||||
|
unset GEMINI_CLI_HOME
|
||||||
|
echo "Unset Gemini context, reverted to default."
|
||||||
|
}
|
||||||
|
|
||||||
|
# Alias for gemini-context-use
|
||||||
|
alias gemctx='gemini-context-use'
|
||||||
|
|
||||||
|
# Zsh Completion for gemini-context-use and gemctx
|
||||||
|
_gemini_contexts() {
|
||||||
|
local contexts
|
||||||
|
contexts=($(_gemini_context_list_internal))
|
||||||
|
_describe 'gemini contexts' contexts
|
||||||
|
}
|
||||||
|
compdef _gemini_contexts gemini-context-use
|
||||||
|
compdef _gemini_contexts gemctx
|
||||||
|
compdef _gemini_contexts gemini-context-edit
|
||||||
Reference in New Issue
Block a user