diff --git a/Makefile b/Makefile index 25c7c2b6..26c9250d 100644 --- a/Makefile +++ b/Makefile @@ -72,6 +72,7 @@ setup-vim: setup-brew: curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash + eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv bash)" brew update; brew upgrade brew-pkgs: setup-brew diff --git a/README.md b/README.md index e1e6601e..c7f7670f 100644 --- a/README.md +++ b/README.md @@ -117,4 +117,67 @@ Lot's of aliases - see `./scripts/aliases.sh`. Some small interactive shell hel `CLAUDE.md` at the repo root serves the same purpose for Claude Code. +<<<<<<< HEAD + + + + + Label + setenv.XDG_CONFIG_HOME + ProgramArguments + + sh + -c + launchctl setenv XDG_CONFIG_HOME $HOME/dotfiles + + RunAtLoad + + + + +$ launchctl load ~/Library/LaunchAgents/setenv.XDG_CONFIG_HOME.plist +``` + +## AI Configuration + +Two AGENTS.md: + +- `./AGENTS.md` for this repo +- `./pi/config/pi/agent/AGENTS.md` for Pi & Claude Code + +PI_CODING_AGENT_DIR in dotfiles/common/env.sh points pi's config to ~/dotfiles/config/pi/, which contains agent/AGENTS.md (agent instructions), settings.json, themes, and sessions. + +CLAUDE.md at the repo root serves the same purpose for Claude Code, but is symlinked to `AGENTS.md`. + +Skills are defined once in agents/skills/ and symlinked by make dotfiles to both ~/.agents/skills (pi) and ~/.claude/skills (Claude Code). +||||||| 5f1ddca + + + + + Label + setenv.XDG_CONFIG_HOME + ProgramArguments + + sh + -c + launchctl setenv XDG_CONFIG_HOME $HOME/dotfiles + + RunAtLoad + + + + +$ launchctl load ~/Library/LaunchAgents/setenv.XDG_CONFIG_HOME.plist +``` + +## Agent Configuration + +PI_CODING_AGENT_DIR in dotfiles/common/env.sh points pi's config to ~/dotfiles/config/pi/, which contains agent/AGENTS.md (agent instructions), settings.json, themes, and sessions. + +CLAUDE.md at the repo root serves the same purpose for Claude Code. + +Skills are defined once in agents/skills/ and symlinked by make dotfiles to both ~/.agents/skills (pi) and ~/.claude/skills (Claude Code). +======= Skills are defined once in `.agents/skills/` and symlinked by `make dotfiles` to both `~/.agents/skills` (for Pi) and `~/.claude/skills` (for Claude Code). +>>>>>>> dacbf2ff02af0435dad113fec6089182f393df64 diff --git a/config/brew/Brewfile b/config/brew/Brewfile index ca8de85e..73128d79 100644 --- a/config/brew/Brewfile +++ b/config/brew/Brewfile @@ -31,6 +31,8 @@ brew "tig" brew "tree" brew "wget" brew "zoxide" +brew "deno" +brew "yarn" # Language servers & linters brew "actionlint" @@ -97,9 +99,14 @@ brew "wordnet" # Taps brew "hudochenkov/sshpass/sshpass" -brew "koekeishiya/formulae/skhd" +if OS.mac? + brew "koekeishiya/formulae/skhd" +end brew "koekeishiya/formulae/yabai" +# TODO!!! +# brew tap databricks/tap + # Casks cask "amethyst" cask "claude-code" @@ -112,7 +119,15 @@ cask "mactex" brew "markdownlint-cli" cask "copilot-cli" +brew "azure-cli" brew "git-delta" cask "keycastr" +<<<<<<< HEAD:brew/Brewfile + +tap "databricks/tap" +brew "databricks" +||||||| 5f1ddca:brew/Brewfile +======= brew "marp-cli" brew "btop" +>>>>>>> dacbf2ff02af0435dad113fec6089182f393df64:config/brew/Brewfile diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index 7285b7c4..a3ce1a1e 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -1,5 +1,55 @@ { "Vim-Jinja2-Syntax": { "branch": "master", "commit": "2c17843b074b06a835f88587e1023ceff7e2c7d1" }, +<<<<<<< HEAD:nvim/lazy-lock.json + "barbar.nvim": { "branch": "master", "commit": "539d73def39c9172b4d4d769f14090e08f37b29d" }, + "blink-cmp-copilot": { "branch": "main", "commit": "439cff78780c033aa23cf061d7315314b347e3c1" }, + "blink-cmp-dictionary": { "branch": "master", "commit": "35142bba869b869715e91a99d2f46bcf93fca4ae" }, + "blink-cmp-env": { "branch": "main", "commit": "99af62c1f9aa46005e8f50ad4ccee581946546ca" }, + "blink-emoji.nvim": { "branch": "master", "commit": "dff709139ad5389fb55ebab026e75278a12b325a" }, + "blink-ripgrep.nvim": { "branch": "main", "commit": "d84a20e765fdc9cc8c0775708e083e7185654527" }, + "blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" }, + "blink.compat": { "branch": "main", "commit": "2ed6d9a28b07fa6f3bface818470605f8896408c" }, + "bullets.vim": { "branch": "master", "commit": "28c22791153a90bb61a86fbeeae0f812e048ade7" }, + "codecompanion.nvim": { "branch": "main", "commit": "680c445eb357c72129d175ea5d481aa9e92ae6a5" }, + "conform.nvim": { "branch": "master", "commit": "086a40dc7ed8242c03be9f47fbcee68699cc2395" }, + "copilot.lua": { "branch": "master", "commit": "adff470bca742b7658228ed144589250ecb3dc0a" }, + "dbtpal": { "branch": "main", "commit": "981eab51609362712c64e3cf3fb773fe11f859b9" }, + "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, + "emmet-vim": { "branch": "master", "commit": "92ef2f74f4093edc99db5e9e4cf7e40116a85bd6" }, + "gitsigns.nvim": { "branch": "main", "commit": "6d808f99bd63303646794406e270bd553ad7792e" }, + "indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" }, + "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" }, + "lualine.nvim": { "branch": "master", "commit": "a905eeebc4e63fdc48b5135d3bf8aea5618fb21c" }, + "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, + "mini.icons": { "branch": "main", "commit": "bac6317300e205335df425296570d84322730067" }, + "mini.nvim": { "branch": "main", "commit": "5849ef04c32a6a8e55957b946c0a275801d87530" }, + "nvim-autopairs": { "branch": "master", "commit": "59bce2eef357189c3305e25bc6dd2d138c1683f5" }, + "nvim-bqf": { "branch": "main", "commit": "c282a62bec6c0621a1ef5132aa3f4c9fc4dcc2c7" }, + "nvim-colorizer.lua": { "branch": "master", "commit": "5cfe7fffbd01e17b3c1e14af85d5febdef88bd8c" }, + "nvim-lint": { "branch": "master", "commit": "eab58b48eb11d7745c11c505e0f3057165902461" }, + "nvim-lspconfig": { "branch": "master", "commit": "e146efacbafed3789ac568abcc5a981c5decaa58" }, + "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" }, + "nvim-treesitter-context": { "branch": "master", "commit": "b0c45cefe2c8f7b55fc46f34e563bc428ef99636" }, + "nvim-treesitter-textobjects": { "branch": "main", "commit": "851e865342e5a4cb1ae23d31caf6e991e1c99f1e" }, + "nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" }, + "nvim-web-devicons": { "branch": "master", "commit": "c72328a5494b4502947a022fe69c0c47e53b6aa6" }, + "obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" }, + "oil.nvim": { "branch": "master", "commit": "0fcc83805ad11cf714a949c98c605ed717e0b83e" }, + "peek.nvim": { "branch": "master", "commit": "5820d937d5414baea5f586dc2a3d912a74636e5b" }, + "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, + "render-markdown.nvim": { "branch": "main", "commit": "d67113f11384c0dad96fced2f7b91f1fc811e97f" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" }, + "telescope-git-file-history.nvim": { "branch": "master", "commit": "4442114f9257e682e60a8cb6de14cf988e26055c" }, + "telescope-makefile": { "branch": "master", "commit": "f35425d7d53d92a04215c3714a5819811d2842c3" }, + "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, + "telescope.nvim": { "branch": "master", "commit": "506338434fec5ad19cb1f8d45bf92d66c4917393" }, + "trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" }, + "undotree": { "branch": "master", "commit": "6fa6b57cda8459e1e4b2ca34df702f55242f4e4d" }, + "vim": { "branch": "master", "commit": "07b144414730cc4cf4405ab840bf46c5fa12704b" }, + "vim-argwrap": { "branch": "master", "commit": "03615d1eed248408567bc8fa6a5a8c94ef3cd170" }, + "vim-fugitive": { "branch": "master", "commit": "3b753cf8c6a4dcde6edee8827d464ba9b8c4a6f0" }, +||||||| 5f1ddca:config/nvim/lazy-lock.json +======= "barbar.nvim": { "branch": "master", "commit": "a4bef5b4fc1f064f2f673172252028eae18191c9" }, "blink-cmp-copilot": { "branch": "main", "commit": "439cff78780c033aa23cf061d7315314b347e3c1" }, "blink-cmp-dictionary": { "branch": "master", "commit": "17ea03ba5c296310b9f74587b52fde1b04d84c1a" }, @@ -49,6 +99,7 @@ "vim-argwrap": { "branch": "master", "commit": "03615d1eed248408567bc8fa6a5a8c94ef3cd170" }, "vim-fugitive": { "branch": "master", "commit": "3b753cf8c6a4dcde6edee8827d464ba9b8c4a6f0" }, "vim-markdown": { "branch": "master", "commit": "1bc9d0cd8e1cc3e901b0a49c2b50a843f1c89397" }, +>>>>>>> dacbf2ff02af0435dad113fec6089182f393df64:config/nvim/lazy-lock.json "vim-markdown-toc": { "branch": "master", "commit": "66026b323379c9a712c6169cd43153216acef090" }, "vim-one": { "branch": "master", "commit": "187f5c85b682c1933f8780d4d419c55d26a82e24" }, "vim-python-pep8-indent": { "branch": "master", "commit": "60ba5e11a61618c0344e2db190210145083c91f8" }, diff --git a/config/nvim/lua/plugins/formatting.lua b/config/nvim/lua/plugins/formatting.lua index bcdddc46..f2df0e46 100644 --- a/config/nvim/lua/plugins/formatting.lua +++ b/config/nvim/lua/plugins/formatting.lua @@ -29,10 +29,13 @@ return { -- markdown = { "injected" }, javascript = { "prettier" }, css = { "stylelint" }, - yaml = { "yamlfix" }, + yaml = { + "yamlfix", + "trim_whitespace", + }, sql = { "sqlfluff" }, ["*"] = { - "codespell", + -- "codespell", "trim_newlines", }, }, diff --git a/config/pi/AGENTS.md b/config/pi/AGENTS.md index 42dab915..563084a1 100644 --- a/config/pi/AGENTS.md +++ b/config/pi/AGENTS.md @@ -1,3 +1,50 @@ +<<<<<<< HEAD +You are an expert software engineer and data scientist, writing excellent code: + +- Responses and code should be concise - favour a less verbose implementation where appropriate +- Provide clear, concise explanations +- Do not include summaries at the end of responses unless specifically asked. +- Include comments only if necessary +- Include functions only if necessary +- Include docstrings for functions +- All Python code should pass strict type checking. Use `list` style rather than `typing.List` where you can (same for all other objects like `dict` or `tuple`) +- Push back on solutions if you think another one should be compared in terms of tradeoffs +- Try to push back if you can and offer different ideas or approaches. Try to explore a range of ideas, perspectives. +- List tradeoffs explicitly if appropriate. List assumptions explicitly if appropriate. List what you are uncertain about. +- Always be consistent with patterns established in the code base +- Don't put `_df` suffixes onto dataframe variables - use `data` as the default name for a dataframe +- Favour flat unnested code +- Fail at the source of the error rather than checking and failing +- Only deploy DABs databricks.yml to the `dev_developer` target only +- If you are confused, ask me a question rather than spinning in circles + +Always create a plan and then ask to execute. You should very rarely go off and implement without some back and forth conversation with me - only if it's very clear from my first message I want you to make changes. + +## Searching & Reading + +When reading, read deeply, in great detail. Note intricacies. Go through everything. + +## Planning + +Plans will go into `./ai/plan-something.md`. + +Check for a plan before you start a planning task - if you find an existing plan, the read and edit it. + +If you are making code changes from a plan, update the plan as part of your code changes (last step). + +Plans should include a section on `## Steps` which lists in order the work needed. + +## Programming + +- When you write Python code, make it type safe, so that it would pass strict type checking with a tool like basedpyright. Prefer using `list` or `dict` over `typing.List` or `typing.Dict` (same for all other objects like this - avoid `import typing` if possible). +- Only include comments when they explain something that is not obvious from the code. +- Always respect existing conventions in each file and across the code base when making changes. +- Don't put `_df` suffixes onto dataframe variables - use data as the default name for a dataframe +- Favour flat unnested code - try to minimize levels of indentation +- Fail at the source of the error rather than checking and failing +- Never start changing code unless you have explicit approval to start making changes +||||||| 5f1ddca +======= ## How to Respond Responses should be concise. @@ -41,3 +88,4 @@ Only include comments when they explain something that is not obvious from the c Always respect existing conventions in each file and across the code base when making changes. Always ask for permissions before starting work. Never edit files until you have presented a plat to the user. +>>>>>>> dacbf2ff02af0435dad113fec6089182f393df64 diff --git a/config/pi/settings.json b/config/pi/settings.json index fc19f53d..b0d70ac9 100644 --- a/config/pi/settings.json +++ b/config/pi/settings.json @@ -1,7 +1,17 @@ { +<<<<<<< HEAD + "lastChangelogVersion": "0.69.0", + "defaultProvider": "databricks", + "defaultModel": "databricks-claude-sonnet-4-6", +||||||| 5f1ddca + "lastChangelogVersion": "0.66.1", + "defaultProvider": "openrouter", + "defaultModel": "moonshotai/kimi-k2.5", +======= "lastChangelogVersion": "0.78.0", "defaultProvider": "openrouter", "defaultModel": "moonshotai/kimi-k2.5", +>>>>>>> dacbf2ff02af0435dad113fec6089182f393df64 "theme": "dracula", "packages": [ "npm:@aliou/pi-guardrails", @@ -12,5 +22,12 @@ "npm:@guwidoe/pi-prompt-suggester" ], "defaultThinkingLevel": "off", +<<<<<<< HEAD + "quietStartup": false +||||||| 5f1ddca + "defaultThinkingLevel": "medium", + "quietStartup": false +======= "quietStartup": true +>>>>>>> dacbf2ff02af0435dad113fec6089182f393df64 } \ No newline at end of file diff --git a/dotfiles/common/.zshenv b/dotfiles/common/.zshenv index 8c07e59e..14d8ec4f 100644 --- a/dotfiles/common/.zshenv +++ b/dotfiles/common/.zshenv @@ -1,8 +1,4 @@ bash $HOME/dotfiles/scripts/trace.sh "$0" -# if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then -# . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' -# fi -# Moved mise activation to .zshrc for interactive shells only (performance optimization) export EDITOR=$(which nvim) export XDG_CONFIG_HOME="$HOME/.config" if command -v launchctl >/dev/null 2>&1; then diff --git a/dotfiles/common/.zshrc b/dotfiles/common/.zshrc index 501f717b..6f48a302 100644 --- a/dotfiles/common/.zshrc +++ b/dotfiles/common/.zshrc @@ -111,8 +111,6 @@ setopt HIST_SAVE_NO_DUPS # Don't save duplicates to file setopt SHARE_HISTORY # Share history between all sessions setopt HIST_REDUCE_BLANKS # Remove superfluous blanks from commands export AWS_LOG_LEVEL=3 - -alias brew='arch -arm64 brew' source ~/dotfiles/macos/pyenv-flags # custom ipython config diff --git a/dotfiles/macos/.zshrc b/dotfiles/macos/.zshrc index 86e4d398..3a5e0aeb 100644 --- a/dotfiles/macos/.zshrc +++ b/dotfiles/macos/.zshrc @@ -8,6 +8,8 @@ export POWERLINE_NERD_FONTS=1 eval "$(keychain --eval --quiet ~/.ssh/github-air ~/.ssh/macbook-pro)" eval "$(/opt/homebrew/bin/brew shellenv zsh)" +# do not know if i need/want this... +alias brew='arch -arm64 brew' # Skip quote display for faster startup (can be called manually with 'quote' command) # quote diff --git a/dotfiles/ubuntu/.bashrc b/dotfiles/ubuntu/.bashrc index 801ec809..289b58ac 100644 --- a/dotfiles/ubuntu/.bashrc +++ b/dotfiles/ubuntu/.bashrc @@ -1 +1,2 @@ source "$HOME"/dotfiles/dotfiles/common/.bashrc +eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" diff --git a/dotfiles/ubuntu/.zshrc b/dotfiles/ubuntu/.zshrc index 7658a577..d896d20d 100644 --- a/dotfiles/ubuntu/.zshrc +++ b/dotfiles/ubuntu/.zshrc @@ -1 +1,11 @@ +eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv bash)" source $HOME/dotfiles/dotfiles/common/.zshrc +ssh-add ~/.ssh/github ~/.ssh/ado +export TODO_DIR=~/docs/project +export PERSONAL_PATH=~/docs +if [ -z "$SSH_AUTH_SOCK" ]; then + eval "$(ssh-agent -s)" > /dev/null + ssh-add ~/.ssh/ado 2>/dev/null + ssh-add ~/.ssh/github 2>/dev/null +fi +alias expl='explorer.exe .' diff --git a/dotfiles/wsl/.zshrc b/dotfiles/wsl/.zshrc index 8d0f72f6..4e5f075f 100644 --- a/dotfiles/wsl/.zshrc +++ b/dotfiles/wsl/.zshrc @@ -1,6 +1,7 @@ +eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" source "$HOME/dotfiles/dotfiles/common/.zshrc" source "$HOME/dotfiles/dotfiles/wsl/common.sh" eval $(keychain --quiet --eval github ado) # eval $(keychain --eval --agents ssh -Q --quiet $HOME/.ssh/azure-devops_id_rsa) - +[ -d ~/docs ] || ln -s "/mnt/c/Users/ag43/OneDrive - Meridian Energy Limited/Documents/docs" ~/docs [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh diff --git a/dotfiles/wsl/common.sh b/dotfiles/wsl/common.sh index 68fc0ddc..7ef6468c 100644 --- a/dotfiles/wsl/common.sh +++ b/dotfiles/wsl/common.sh @@ -1,4 +1,4 @@ -alias docs='cd "/mnt/c/Users/ag43/OneDrive - Meridian Energy Limited/Documents/docs"' +alias docs='cd ~/docs' alias od='cd ~/onedrive' export TODO_DIR="/mnt/c/Users/ag43/OneDrive - Meridian Energy Limited/Documents/docs/project" keychain --quiet ~/.ssh/ado diff --git a/os/ubuntu/setup.sh b/os/ubuntu/setup.sh index 6aa727c0..c5252b79 100755 --- a/os/ubuntu/setup.sh +++ b/os/ubuntu/setup.sh @@ -5,3 +5,4 @@ sudo apt -y install build-essential cmake keychain sudo apt -y install build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev +sudo apt -y install wbritish diff --git a/scripts/aliases.sh b/scripts/aliases.sh index 7b95dbc6..2d798ea7 100755 --- a/scripts/aliases.sh +++ b/scripts/aliases.sh @@ -42,6 +42,9 @@ alias markserv='markserv --browser' # vim alias vi='$EDITOR' +# nvim +alias diffview='nvim +DiffviewOpen' + # python alias py='python' alias ipy='ipython' diff --git a/scripts/setup-uv.sh b/scripts/setup-uv.sh index 1c4204eb..ffaad7c5 100644 --- a/scripts/setup-uv.sh +++ b/scripts/setup-uv.sh @@ -6,3 +6,4 @@ uv tool install yamllint --python 3.11.9 uv tool install pydocstyle --python 3.11.9 uv tool install sqlfluff --python 3.11.9 uv tool install pynvim --python 3.11.9 +uv tool install basedpyright --python 3.11.9