{"id":25422376,"url":"https://github.com/lavantien/dotfiles","last_synced_at":"2026-04-08T09:01:03.876Z","repository":{"id":172064977,"uuid":"648798025","full_name":"lavantien/dotfiles","owner":"lavantien","description":"Universal SWE Dotfiles (Neovim/Wezterm/zsh/pwsh, ClaudeCode/Git Hooks, Linux/Windows) - Battery Included","archived":false,"fork":false,"pushed_at":"2026-02-28T07:54:19.000Z","size":49572,"stargazers_count":34,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-28T13:49:56.591Z","etag":null,"topics":["ai","automation","claudecode","config","deployment","dotfiles","dotfiles-automation","dx","git","hooks","ide","linux","llm","neovim","opencode","pwsh","windows","zsh"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lavantien.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2023-06-02T20:56:02.000Z","updated_at":"2026-02-28T07:53:42.000Z","dependencies_parsed_at":"2024-05-18T12:26:09.949Z","dependency_job_id":"84915230-2354-496f-bc4e-1ae4d81ba6ec","html_url":"https://github.com/lavantien/dotfiles","commit_stats":null,"previous_names":["lavantien/dotfiles"],"tags_count":70,"template":false,"template_full_name":null,"purl":"pkg:github/lavantien/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lavantien%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lavantien%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lavantien%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lavantien%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lavantien","download_url":"https://codeload.github.com/lavantien/dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lavantien%2Fdotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31547845,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","automation","claudecode","config","deployment","dotfiles","dotfiles-automation","dx","git","hooks","ide","linux","llm","neovim","opencode","pwsh","windows","zsh"],"created_at":"2025-02-16T21:32:53.226Z","updated_at":"2026-04-08T09:01:03.860Z","avatar_url":"https://github.com/lavantien.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Universal Dotfiles\n\n[![Security](https://img.shields.io/badge/security-reviewed-brightgreen)](#security) [![Linux](https://img.shields.io/badge/Linux-FCC624?logo=linux\u0026logoColor=black)](https://github.com/lavantien/dotfiles) [![Windows](https://img.shields.io/badge/Windows-0078D6?logo=windows\u0026logoColor=white)](https://github.com/lavantien/dotfiles) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n\nProduction-grade portable one-click dotfiles for Linux and Windows 11 software engineering environment.\n\nAuto-detecting, auto-bootstraping, idempotent, gracefully degrading, full terminal tooling, fully vibecoding-enabled.\n\n---\n\n## Core Features\n\nEditor \u0026 Terminal\n- Neovim 0.12+ with built-in package manager, LSP/Treesitter config, and native completion\n- WezTerm GPU-accelerated terminal (IosevkaTerm Nerd Font)\n- Rose Pine theme across all configs\n\nDevelopment Tools\n- 20 LSP servers for complete language intelligence\n- 30 Treesitter parsers for advanced syntax highlighting\n- 40+ CLI tools for modern development workflows (fzf, yazi, zoxide, bat, eza, lazygit, gh, ripgrep, fd, sqlite, tokei, btop, repomix, docker-compose, helm, kubectl)\n\nAI-Native Agentic Development\n- Full support for Claude Code and OpenCode\n- 4 MCP servers: context7, playwright, repomix, serena\n- Auto-detect \u0026 trigger format/lint/check: Git pre-commit/commit-msg hooks\n- Statusline hook for Claude Code (unified bash script, auto-registered in settings.json)\n- System instruction sync across all repos (AGENTS.md, GEMINI.md, RULES.md → global ~/.claude/CLAUDE.md)\n\nAutomation \u0026 Safety\n- Idempotent bootstrap and update-all (safe to run multiple times)\n- Auto-detection with graceful degradation\n- OneDrive-aware on Windows\n- Timestamped backup/restore before major changes\n\nTested Platforms\n- Linux (Ubuntu 26.04+)\n- Windows 11 (PowerShell 7+)\n\n---\n\n## Quick Start\n\n\u003e **Required Clone Location**: This repository **MUST** be cloned to `~/dev/github/dotfiles`.\n\u003e\n\u003e **For Docker/Kubernetes setup**, see [DOCKER_K8S.md](DOCKER_K8S.md).\n\n### Linux\n\n```bash\ngit clone https://github.com/lavantien/dotfiles.git ~/dev/github/dotfiles\ncd ~/dev/github/dotfiles\nchmod +x allow.sh \u0026\u0026 ./allow.sh\n./bootstrap.sh\nchsh -s $(which zsh)\nexec zsh\n```\n\n### macOS\n\n```bash\ngit clone https://github.com/lavantien/dotfiles.git ~/dev/github/dotfiles\ncd ~/dev/github/dotfiles\nchmod +x allow.sh \u0026\u0026 ./allow.sh\n./bootstrap.sh\nexec zsh\n```\n\n### Windows (PowerShell 7+)\n\n```powershell\ngit clone https://github.com/lavantien/dotfiles.git $HOME/dev/github/dotfiles\ncd $HOME/dev/github/dotfiles\n.\\bootstrap.ps1\n. $PROFILE\n```\n\n### Verify Installation\n\n```bash\nwhich n  # Should point to nvim\nwhich lg  # Should point to lazygit\nup  # Runs update-all\n```\n\n---\n\n## Available Commands\n\n| Script | Purpose |\n|--------|---------|\n| **bootstrap** | Initial setup - installs package managers, SDKs, LSPs, tools, deploys configs |\n| **deploy** | Deploy configuration files (Neovim, git hooks, shell, Claude Code) |\n| **update-all (up)** | Update all package managers and system packages (20+ managers) |\n| **git-update-repos** | Clone/update ALL GitHub repos via gh CLI, optionally sync system instructions |\n| **sync-system-instructions** | Sync AI system instructions (AGENTS.md, GEMINI.md, RULES.md) to all repos, remove stale CLAUDE.md |\n| **healthcheck** | Check system health - verify tools, configs, git hooks |\n| **backup** | Create timestamped backup before major changes |\n| **restore** | Restore from a previous backup |\n| **uninstall** | Remove deployed configs (keeps installed packages) |\n\nWindows uses `.ps1` scripts, Linux/macOS uses `.sh` scripts.\n\n### Bootstrap Options\n\n| Option | Bash | PowerShell | Default |\n|--------|------|------------|---------|\n| Non-interactive | `-y`, `--yes` | `-Y` | Prompt for confirmation |\n| Dry-run | `--dry-run` | `-DryRun` | Install everything |\n| Categories | `--categories sdk` | `-Categories sdk` | full |\n| Verbose | `--verbose` | `-VerboseMode` | Show detailed output |\n\n### Update-All Options\n\n| Option | Bash | PowerShell | Purpose |\n|--------|------|------------|---------|\n| Skip pip updates | `--skip-pip` | `-SkipPip` | Skip pip package updates (speeds up update) |\n\nUsage with alias: `up --skip-pip` (bash) or `up -SkipPip` (PowerShell)\n\n### Installation Categories\n\n| Category | Description |\n|----------|-------------|\n| minimal | Package managers + git + CLI tools only |\n| sdk | Minimal + programming language SDKs |\n| full | SDK + all LSPs + linters/formatters (default) |\n\n### Configuration (Optional)\n\nAll scripts use hardcoded defaults by default (`categories: full`, interactive prompts).\n\n```bash\ncp .dotfiles.config.yaml.example ~/.dotfiles.config.yaml\nvim ~/.dotfiles.config.yaml\n./bootstrap.sh  # Auto-detects config\n```\n\n**Configuration Priority**: Command-line flags \u003e Config file \u003e Hardcoded defaults\n\n| Setting | Values | Default |\n|---------|--------|---------|\n| categories | minimal, sdk, full | full |\n| editor | nvim, vim, code, nano | (none) |\n| theme | rose-pine, rose-pine-dawn, rose-pine-moon | (none) |\n| github_username | your github username | lavantien |\n| base_dir | path to git repos | ~/dev/github |\n| auto_commit_repos | true, false | false |\n\n### Health \u0026 Troubleshooting\n\n```bash\n./healthcheck.sh\n\n# JSON output (for CI/CD)\n./healthcheck.sh --format json\n```\n\n| Issue | Solution |\n|-------|----------|\n| Git hooks not running | `git config --global core.hooksPath ~/.config/git/hooks` |\n| PowerShell execution policy | `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser` |\n| Neovim plugins not installing | In Neovim run `:PackUpdate` |\n| zoxide not jumping | Use directories normally for a few days to let zoxide learn |\n\n---\n\n## Complete Tools/Packages Matrix\n\n| Language | LSP | Tester | Formatter | Linter | Type Check |\n|----------|-----|--------|-----------|--------|------------|\n| Bash | bashls | bats | shfmt | shellcheck | - |\n| PowerShell | powershell_es | Pester | Invoke-Formatter | PSScriptAnalyzer | PSScriptAnalyzer |\n| Go | gopls | go test | gofmt, goimports | golangci-lint | go vet |\n| Rust | rust-analyzer | cargo test | rustfmt | clippy | cargo check |\n| Python | pyright | pytest | ruff, black | ruff | mypy |\n| JavaScript/TypeScript | ts_ls | jest | prettier | eslint | tsc |\n| HTML | html | - | prettier | - | - |\n| CSS/SCSS/SASS | cssls | - | prettier | stylelint | - |\n| Svelte | svelte | - | prettier | - | svelte-check |\n| C/C++ | clangd | Catch2 | clang-format | clang-tidy, cppcheck | compiler |\n| C# | csharp_ls | dotnet test | dotnet format | Roslyn analyzers | dotnet build |\n| Java | jdtls (Linux/macOS only) | JUnit | checkstyle | checkstyle | javac |\n| PHP | intelephense | php, PHPUnit | pint | PHPStan, Psalm | - |\n| Scala | metals | ScalaTest | scalafmt | scalafix | scalac |\n| Lua | lua_ls | busted | stylua | selene | - |\n| Typst | tinymist | built-in | tinymist | tinymist | - |\n| Dockerfile | docker_ls | - | - | hadolint | - |\n| Docker Compose | docker_ls | - | prettier | - | - |\n| Helm | helm_ls | - | prettier | - | - |\n| Kubernetes YAML | yamlls | kubectl | prettier | yamllint | - |\n| YAML | yamlls | - | prettier | yamllint | - |\n| TOML | tombi | - | taplo | - | - |\n\n### CLI Tools\n\nfzf, yazi, zoxide, bat, eza, lazygit, gh, ripgrep, fd, sqlite, tokei, btop, repomix, docker-compose, helm, kubectl\n\n### MCP Servers (Claude Code \u0026 OpenCode)\n\ncontext7, playwright, repomix, serena\n\n### Diagram Generation\n\nmermaid-cli (mmdc) - Generate Mermaid diagrams from command line\n\n### AI Applications (Windows)\n\nComfyUI Desktop - AI image generation (requires `comfy install` after bootstrap)\n\n---\n\n## Hooks \u0026 Config Merging\n\n### Git Hooks\n\n**Pre-commit**: auto-format, lint, type-check, re-stage fixed files\n\n**Commit-msg**: enforce Conventional Commits (feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert)\n\nPlatform-specific: `.sh` for Linux/macOS, `.ps1` for Windows\n\n### Claude Code Hooks\n\n**Statusline** hook is auto-registered in `~/.claude/settings.json`. Uses a unified bash script (`statusline.sh`) on both Linux and Windows (via Git Bash).\n\nQuality checks can be configured per-project using project-specific hooks or MCP servers.\n\n### OpenCode Config Merging\n\n`~/.config/opencode/opencode.json` is merged (not overwritten):\n- Adds missing MCP servers\n- Updates existing ones\n- Preserves any existing settings not managed by dotfiles\n\n### Claude Code Windows LSP Patching\n\nnpm-installed LSPs (typescript-language-server, pyright-langserver, intelephense) need `cmd.exe /c` wrapper. Auto-patches marketplace.json to fix `spawn EINVAL` errors.\n\n### MCP Server Manual Patching (Windows)\n\nOn Windows, MCP servers that use `npx` (like `zai-mcp-server`) also need the `cmd.exe /c` wrapper in `~/.claude.json`:\n\n```json\n\"mcpServers\": {\n  \"zai-mcp-server\": {\n    \"command\": \"cmd.exe\",\n    \"args\": [\"/c\", \"npx\", \"-y\", \"@z_ai/mcp-server\"]\n  }\n}\n```\n\nThis fixes the \"Windows requires 'cmd /c' wrapper to execute npx\" warning in MCP diagnostics.\n\n### GUI Applications Post-Installation\n\n**ComfyUI Desktop (Windows)**: After bootstrap via winget, run `comfy install` to complete setup:\n\n```powershell\ncomfy install\n```\n\nThis installs required models and dependencies for AI image generation.\n\n---\n\n## Neovim Keybindings\n\nLeader key is Space.\n\n| Keybinding | Action |\n|------------|--------|\n| `-` | Oil (file browser) |\n| `\u003cleader\u003eq` | Quit |\n| `\u003cleader\u003ex` | Write and source |\n| `\u003cleader\u003e'` | Alternate file |\n| `\u003cleader\u003ept` | Toggle Typst preview |\n| `\u003cleader\u003eps` | Start live preview |\n| `\u003cleader\u003epc` | Close live preview |\n| `\u003cleader\u003e;` | Pick live preview |\n| `\u003cleader\u003eb` | LSP format |\n| `\u003cleader\u003eu` | Pack update |\n| `\u003cleader\u003ee` | FzfLua global |\n| `\u003cleader\u003en` | FzfLua combine |\n| `\u003cleader\u003e/` | Grep current buffer |\n| `\u003cleader\u003ez` | Live grep native |\n| `\u003cleader\u003ef` | Files |\n| `\u003cleader\u003eh` | Help tags |\n| `\u003cleader\u003ek` | Keymaps |\n| `\u003cleader\u003el` | Loclist |\n| `\u003cleader\u003em` | Marks |\n| `\u003cleader\u003et` | Quickfix |\n| `\u003cleader\u003egf` | Git files |\n| `\u003cleader\u003egs` | Git status |\n| `\u003cleader\u003egd` | Git diff |\n| `\u003cleader\u003egh` | Git hunks |\n| `\u003cleader\u003egc` | Git commits |\n| `\u003cleader\u003egl` | Git blame |\n| `\u003cleader\u003egb` | Git branches |\n| `\u003cleader\u003egt` | Git tags |\n| `\u003cleader\u003egk` | Git stash |\n| `\u003cleader\u003e\\` | LSP finder |\n| `\u003cleader\u003edd` | LSP document diagnostics |\n| `\u003cleader\u003edw` | LSP workspace diagnostics |\n| `\u003cleader\u003e,` | LSP incoming calls |\n| `\u003cleader\u003e.` | LSP outgoing calls |\n| `\u003cleader\u003ea` | LSP code actions |\n| `\u003cleader\u003es` | LSP document symbols |\n| `\u003cleader\u003ew` | LSP workspace symbols |\n| `\u003cleader\u003er` | LSP references |\n| `\u003cleader\u003ei` | LSP implementations |\n| `\u003cleader\u003eo` | LSP type definitions |\n| `\u003cleader\u003ej` | LSP definitions |\n| `\u003cleader\u003ev` | LSP declarations |\n\n---\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for version history and changes.\n\n---\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flavantien%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flavantien%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flavantien%2Fdotfiles/lists"}