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