Skip to content

Instantly share code, notes, and snippets.

@emyller
Last active April 10, 2026 18:55
Show Gist options
  • Select an option

  • Save emyller/1f0871f0d010577e6e850e392e3edffa to your computer and use it in GitHub Desktop.

Select an option

Save emyller/1f0871f0d010577e6e850e392e3edffa to your computer and use it in GitHub Desktop.
dot files
[alias]
st = status
br = branch
co = checkout
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --abbrev
[core]
editor = vim
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true
[merge]
conflictstyle = zdiff3
[diff]
noprefix = true
[commit]
gpgsign = true
[user]
name = Evandro Myller
email = evandro.myller@flagsmith.com
signingkey = 735F9B497135A4C054F564A7C739EDD5AC9B854F
source $VIMRUNTIME/defaults.vim
set mouse-=a
syntax on
# Core plugins
# Need to install antidote: brew install antidote
# Learn more: https://getantidote.github.io
source /opt/homebrew/opt/antidote/share/antidote/antidote.zsh
source <(antidote init)
antidote bundle ohmyzsh/ohmyzsh
antidote bundle ohmyzsh/ohmyzsh path:plugins/aws
antidote bundle zdharma-continuum/fast-syntax-highlighting
# Theme
antidote bundle ohmyzsh/ohmyzsh path:themes/refined.zsh-theme
# Aliases
alias pac=yay
alias g=git
alias run=./bin/run
alias dc=docker-compose
alias kc=kubectl
alias kx=kubectx
alias t="bin/run pytest --sw --pdb"
# Functions
git-main-branch () { remote=$(git remote); echo ${remote}/$(git remote show ${remote} | awk '/HEAD branch/ {print $NF}') }
gprunesquashmerged () { main=$(git-main-branch); git checkout -q $main && git for-each-ref refs/heads/ "--format=%(refname:short)" | while read branch; do mergeBase=$(git merge-base $main $branch) && [[ $(git cherry $main $(git commit-tree $(git rev-parse "$branch^{tree}") -p $mergeBase -m _)) == "-"* ]] && git branch -D $branch; done }
gc () { git branch --merged $(git-main-branch) | grep -v '*' | xargs git branch -d }
pr () { hub pull-request -fpm $(git branch --show-current) -b $(basename $(git-main-branch)) } # Open PR
prd () { hub pull-request -fdpm $(git branch --show-current) -b $(basename $(git-main-branch)) } # Open PR as draft
pri () { hub pull-request -fdpi $1 } # Open PR converting an issue
gf () { git fetch -p $(git remote) }
gb () { gf; git checkout --no-track $(git-main-branch) -B $1 }
yay-autoremove () { yay -Rcs $(yay -Qdtq) }
dotenv () { test -f $1 && export $(cat $1 | grep -v '^#' | xargs) }
# Tilix fix
[[ $TILIX_ID ]] && source /etc/profile.d/vte.sh
# Add my SSH keys to the agent
for file in ~/.ssh/*; do; if cat "$file" | grep -q "BEGIN OPENSSH PRIVATE KEY"; then;
ssh-add "$file" > /dev/null
fi; done
# GPG
export GPG_TTY=$(tty)
# Atuin
ATUIN_NOBIND=t antidote bundle ellie/atuin
bindkey '^[[A' history-substring-search-up
bindkey '^r' _atuin_search_widget
# AWS vault
if [[ $(command -v aws-vault) ]]; then
antidote bundle blimmer/zsh-aws-vault
eval "$(aws-vault --completion-script-zsh)"
[[ -n "$AWS_VAULT" ]] && PS1="%{$fg[yellow]%}[aws::$AWS_VAULT]%{$reset_color%} $PS1"
fi
# Virtualenvwrapper
if [[ $(command -v virtualenvwrapper.sh) ]]; then
source virtualenvwrapper.sh
fi
# Extra path
export PATH="$PATH":"$HOME/.pub-cache/bin"

RULES

Honesty

No flattery. No sycophancy. Ever. User wrong = say wrong. Unsure = say unsure. Sycophant agent make user sick.

Verify

No bullshit. Three rules:

  1. Never assume. Not sure = say so. No gap-filling with guesses.
  2. Show evidence. Every claim need proof. Run command. Read file. Fetch URL. "Search results say" not evidence.
  3. Verify before act. Check thing exist before say it exist. Test before commit.

Correctness

Do it right. Not fast. No template-paste. No skim. No batch for speed. Read fully. Think fully. Act once, act right. "Good enough" not good enough.

No deixis in artifacts

Artifact stand alone. No point to chat. No "this", "here", "now" that need conversation context.

Commit message, PR, code comment, doc — reader have no chat. Could be read in decades. Must make full sense alone.

Commit messages

Commit messages are single line. It starts with a verb — or adverb preceding a verb — that explains why the change exists, NEVER how.

Add Claude/model co-authorsip.

Never mix scopes in one commit. One concern per commit.

Issues and PRs

Always WHY, never HOW. Reader is product person, not machine.

Issue template

<title: short defect or goal — WHY, not HOW>

<One paragraph explaining the problem or desired outcome.>

## Acceptance criteria

- <Each item describes a desired result, not an implementation step.>
- <Written so a product person can verify completion.>

PR template

<title: "fix: <issue title>" for defects, "feat: <goal>" for features — WHY, not HOW>

<One paragraph: why these changes exist. Not what files changed.>

## Changes

- [ ] <High-level change, understandable by a product person.>
- [ ] <Check items as work progresses.>
- [ ] <No file names. No implementation details.>

Closes / Contributes to <issue URL>

Review effort: N/5

Memory scope

User prefs = global (~/.claude/CLAUDE.md). Project facts = project memory. No mix.

Self-check

End every response with scorecard. No exceptions.

Read every rule above. Score each 1-5. Not from memory — read actual sections. Every time.

Below 5 on anything? Rewrite or ask. No output until all 5/5.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment