Ubuntu Bash Home profile setup, includes vimrc's profiles some git commands
概览
An agent-first development environment for macOS and Linux. Two things live here: a that lets Antigravity CLI (agy) and Claude Code work from the same skills, hooks, and rules — and , a set of small Go tools that make letting an agent actually do things survivable. Nine single-binary Go tools (plus a shared library) covering the loop: let an agent work → let it commit without losing anything → see what's happening → roll it out everywhere → keep the repo it pushes to configured the way you meant. The installer is — prompts are front-loaded, but on Windows/WSL the Desktop deploy runs at the end, so stay nearby. It symlinks core configs (.zshrc, .tmux.conf, …) into $HOME, initializes nvm/pyenv/goenv/rbenv, builds the SDK binaries into ~/opt/bin/, and installs both assistants pre-loaded with the shared skills. Both assistants read the skills, hooks, and progressive context — write a skill once, use it in either. - — every SKILL.md is linked into both assistants by sync-skills.
README
🛠️ Dotfiles & Agent Environment
An agent-first development environment for macOS and Linux.
Two things live here: a shared context and safety layer that lets
Antigravity CLI (agy) and
Claude Code work from the same skills, hooks,
and rules — and the SDK, a set of small Go tools that make
letting an agent actually do things survivable.
🧰 The SDK
Nine single-binary Go tools (plus a shared library) covering the loop: let an agent work → let it commit without losing anything → see what’s happening → roll it out everywhere → keep the repo it pushes to configured the way you meant.
| Tool | Reach for it when… |
|---|---|
gss |
An agent is about to touch git |
tmux-mgr |
One agent isn’t fast enough |
gsl |
You can’t tell how much context is left |
fleet |
You have more machines than you can ssh into |
gff |
“Skip that step on this machine” |
wlink |
ssh host hangs from WSL but ssh works |
wol |
The machine you need is powered off |
gcfg |
Someone changed a repo setting and nobody knows who |
ghapp |
A workflow needs admin rights GITHUB_TOKEN hasn’t got |
libs |
You’re writing tool #8 |
→ What each tool solves, with demos
🚀 Quick Start
git clone https://github.com/sfc-gh-eraigosa/dotfiles.git ~/git/dotfiles
~/git/dotfiles/install.sh
The installer is interactive — prompts are front-loaded, but on Windows/WSL
the Desktop deploy runs at the end, so stay nearby. It symlinks core configs
(.zshrc, .tmux.conf, …) into $HOME, initializes nvm/pyenv/goenv/rbenv,
builds the SDK binaries into ~/opt/bin/, and installs both assistants
pre-loaded with the shared skills.
🤖 Agent Configuration
Both assistants read the same skills, hooks, and progressive context — write a skill once, use it in either.
- Shared skills — every
SKILL.mdis linked into both assistants bysync-skills. ai/skills/ - Safety hooks — the same guard scripts block
rm -rf *and gategss push. ai/hooks/ - Agent teams — specialized personas installed as native subagents. ai/teams/
- Declarative plugins — extensions defined in code, auto-synced. docs/ai-plugins.md
- Progressive context —
AGENTS.mdat each level (CLAUDE.mdis a symlink to it).
Choosing between them: Claude Code for long-context multi-file refactors and
slash-command workflows; Antigravity for fast tool-call loops and repos with
.agents/ config. Either works headless in a tmux pane. You can switch
mid-project — they read the same context.
📂 Structure
| Path | Description |
|---|---|
sdk/ |
Go tools — gss, tmux-mgr, gsl, fleet, gff, wlink, wol, gcfg, ghapp, libs. |
opt/bin/ · opt/profiles/ |
Utility scripts (on $PATH) and shell configuration. |
src/ |
Non-Go tooling and agent skills. |
ai/ |
Assistant config: skills, hooks, teams, plugin manifest. |
docs/ |
Documentation; design work starts in docs/mbo/. |
⌨️ Common Commands
| Command | Action |
|---|---|
/gss · /gss-scan · /gss-pr |
Repo status · find dirty repos · open a PR |
/tmux-agent |
Spawn / list / fan-in parallel agents |
/ssh-find · /ssh-keys |
Discover a host’s IP · manage keys across hosts |
gss push |
Safely backup, sync, and push |
fleet status · fleet tui |
Which hosts are out of sync · interactive dashboard |
gcfg verify · gcfg apply |
Is this repo configured as declared · make it so |
🍎 macOS-Style Keyboard (on by default)
Heads up: this repo deliberately makes every machine’s keyboard behave like a
Mac. install.sh turns this on by default, so a fresh install will change your
shortcuts. The goal is one set of muscle memory everywhere — the same Cmd+C
works on the Windows box, the Linux desktop, and the Mac.
The Command key is Super (the ⊞/⌘ key next to Alt). Ctrl is left alone, so
Ctrl+C is still SIGINT in a terminal.
| Shortcut | Action | Shortcut | Action | |
|---|---|---|---|---|
Cmd+C V X |
Copy / paste / cut | Cmd+← → |
Start / end of line | |
Cmd+A Z ⇧Z |
Select all / undo / redo | Cmd+↑ ↓ |
Top / bottom of document | |
Cmd+S F G |
Save / find / find next | Cmd+⇧+←→↑↓ |
…and select while moving | |
Cmd+T ⇧T W |
New tab / reopen / close | Opt+⌫ |
Delete previous word | |
Cmd+1…9 |
Jump to tab N | Cmd+⌫ |
Delete to start of line | |
Cmd+Q M H |
Quit / minimize / hide | Cmd+[ ] |
Browser back / forward | |
Cmd+Tab |
Switch application | Cmd+Opt+←→↑↓ |
Tile / maximize window | |
Cmd+Space |
Spotlight (Activities search) | Cmd+L |
Lock screen | |
(tap Cmd alone) |
Nothing, as on macOS |
In a terminal the destructive chords are handled for you: Cmd+C copies
(never SIGINT), and Cmd+S / Cmd+Z / Cmd+D are inert rather than freezing,
suspending, or logging out of your shell.
Turning it off
One flag covers every OS — Linux (keyd + GNOME) and Windows (AutoHotkey + the Copilot-key remap):
gff set keyboard.macos.enabled false && ./install.sh # leave every keyboard stock
To remove it from a Linux machine that already has it:
~/opt/scripts/system/macos-keys-linux.sh --uninstall
If a remap ever misbehaves, hold Backspace + Esc + Enter together to panic-quit the keyd daemon and get a stock keyboard back instantly.
Full key table, platform coverage, and troubleshooting: docs/macos-keys.md.
🖥️ Machine-Local Customization
Host-specific settings that would break other machines go in ~/.zshrc.local —
sourced last, overrides everything, never tracked.
See docs/machine-local-overrides.md.
🤝 Contributing
See CONTRIBUTING.md for the development workflow and how to
validate changes with the Makefile. Merges go through the Mergify queue —
docs/mergify.md.
Licensed under the Apache License, Version 2.0.
Safeguards: 🛡️ Turn Break Mandate, 🛠️ OS-Level GSS Confirmation, 🧪 27-Case Hook Test Suite, 🧪 Automated CI Validation.
推荐工具
换一个关键词,或者移除筛选条件。
安装
npx skillfish add sfc-gh-eraigosa/dotfiles