{"owner":"basecamp","repo":"omarchy","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"files":{"AGENTS.md":"# Style\n\n- Two spaces for indentation, no tabs\n- Use bash 5 conditionals: use `[[ ]]` for string/file tests and `(( ))` for numeric tests\n- In `[[ ]]`, don't quote variables, but do quote string literals when comparing values (e.g., `[[ $branch == \"dev\" ]]`)\n- Prefer `(( ))` over numeric operators inside `[[ ]]` (e.g., `(( count < 50 ))`, not `[[ $count -lt 50 ]]`)\n- For strings/paths with spaces, quote them instead of escaping spaces with `\\ ` (e.g., `\"$APP_DIR/Disk Usage.desktop\"`, not `$APP_DIR/Disk\\ Usage.desktop`)\n- Shebangs must use `#!/bin/bash` consistently (never `#!/usr/bin/env bash`)\n- Scripts under `install/` and `migrations/` may be sourced and intentionally omit shebangs\n\n# Command Naming\n\nAll commands start with `omarchy-`. Prefixes indicate purpose.\n\nThe authoritative command group list lives in `bin/omarchy` in `GROUP_DESCRIPTIONS`. Keep `GROUP_DESCRIPTIONS` updated when adding a new command prefix.\n\nCommon prefixes include:\n\n- `cmd-` - check if commands exist, misc utility commands\n- `capture-` - screenshots, screen recordings, and other capture tools\n- `pkg-` - package management helpers\n- `hw-` - hardware detection (return exit codes for use in conditionals)\n- `refresh-` - copy default config to user's `~/.config/`\n- `restart-` - restart a component\n- `launch-` - open applications\n- `install-` - install optional software\n- `setup-` - interactive setup wizards\n- `toggle-` - toggle features on/off\n- `theme-` - theme management\n- `update-` - update components\n\nOther current prefixes include:\n\n- `ac-`, `audio-`, `battery-`, `branch-`, `brightness-`, `channel-`, `config-`, `debug-`, `dev-`, `drive-`, `first-`, `font-`, `haptic-`, `hibernation-`, `hook-`, `hyprland-`, `menu-`, `migrate-`, `notification-`, `npx-`, `plymouth-`, `powerprofiles-`, `reinstall-`, `remove-`, `screensaver-`, `show-`, `snapshot-`, `state-`, `sudo-`, `swayosd-`, `system-`, `transcode-`, `tui-`, `tz-`, `upload-`, `version-`, `voxtype-`, `webapp-`, `wifi-`, `windows-`\n\n# Command Metadata\n\nCommands in `bin/` can declare CLI metadata in comments near the top of the file. `bin/omarchy` scans the first 80 lines, and tests expect command metadata to remain valid.\n\nSupported metadata keys:\n\n- `# omarchy:summary=...` - short help text\n- `# omarchy:group=...` - command group when it differs from the filename-derived prefix\n- `# omarchy:name=...` - command name within the group\n- `# omarchy:args=...` - usage arguments\n- `# omarchy:examples=...` - examples separated with ` | `\n- `# omarchy:alias=...` / `# omarchy:aliases=...` - alternate routes\n- `# omarchy:hidden=true` - hide from default command listings\n- `# omarchy:requires-sudo=true` - mark commands that require sudo\n\nPrefer explicit metadata for user-facing commands. Keep routes consistent with the filename unless there is a deliberate alias or compatibility route.\n\nExample:\n\n```bash\n# omarchy:summary=Take a screenshot\n# omarchy:group=capture\n# omarchy:args=[smart|region|windows|fullscreen] [slurp|copy]\n# omarchy:examples=omarchy screenshot | omarchy capture screenshot region\n# omarchy:aliases=omarchy screenshot\n```\n\n# Install Scripts\n\nInstall entry points (`install.sh`, `boot.sh`) use `#!/bin/bash`. Many scripts under `install/` are sourced via `run_logged` and intentionally do not have shebangs.\n\nInstall stage files follow this pattern:\n\n- `install/*/all.sh` lists scripts in execution order\n- leaf scripts are sourced by `run_logged $OMARCHY_INSTALL/path/to/script.sh`\n- avoid `exit` in sourced install scripts unless intentionally aborting the install\n- use `$OMARCHY_INSTALL` and `$OMARCHY_PATH` instead of hard-coded Omarchy paths\n- keep hardware-specific logic under `install/config/hardware/`\n- prefer helper commands for package and command checks where available\n\nRaw `command -v`, `pacman`, and `pacman-key` are acceptable in bootstrap/preflight/package-helper contexts where the helper commands may not be available yet or where direct package-manager behavior is the point of the script.\n\n# Helper Commands\n\nUse these instead of raw shell commands:\n\n- `omarchy-cmd-missing` / `omarchy-cmd-present` - check for commands\n- `omarchy-pkg-missing` / `omarchy-pkg-present` - check for packages\n- `omarchy-pkg-add` - install packages (handles both pacman and AUR)\n- `omarchy-hw-asus-rog` - detect ASUS ROG hardware (and similar `hw-*` commands)\n\nExceptions are allowed for bootstrap, preflight, migration, and package-helper scripts where the helper may not be available yet, where the helper itself is being implemented, or where direct package-manager behavior is required.\n\n# Config Structure\n\n- `config/` - default configs copied to `~/.config/`\n- `default/themed/*.tpl` - templates with `{{ variable }}` placeholders for theme colors\n- `themes/*/colors.toml` - theme color definitions (accent, background, foreground, color0-15)\n\n# Visual Changes\n\nWhen making visual changes, such as Waybar styles or desktop appearance, always take and analyze a screenshot after applying the change to verify the result. Use `omarchy capture screenshot fullscreen save` for fullscreen screenshots.\n\n# Refresh Pattern\n\nTo copy a default config to user config with automatic backup:\n\n```bash\nomarchy-refresh-config hypr/hyprlock.conf\n```\n\nThis copies `~/.local/share/omarchy/config/hypr/hyprlock.conf` to `~/.config/hypr/hyprlock.conf`.\n\n# Migrations\n\nTo create a new migration, run `omarchy-dev-add-migration --no-edit`. This creates a migration file named after the unix timestamp of the last commit.\n\nNew migration format:\n- File permissions must be `0644` (`-rw-r--r--`); migrations are sourced, not executed directly\n- No shebang line\n- Start with an `echo` describing what the migration does\n- Use `$OMARCHY_PATH` to reference the omarchy directory\n- Prefer helper commands such as `omarchy-cmd-present`, `omarchy-cmd-missing`, `omarchy-pkg-present`, and `omarchy-pkg-missing`\n\nSome older migrations predate these rules. Do not copy older migrations that start with shebangs, omit the leading `echo`, or hard-code `~/.local/share/omarchy`.\n\nMigrations may use raw `pacman`, `command -v`, or direct config edits when needed for historical compatibility or one-off repair work.\n\nExample:\n```bash\necho \"Disable fingerprint in hyprlock if fingerprint auth is not configured\"\n\nif omarchy-cmd-missing fprintd-list || ! fprintd-list \"$USER\" 2>/dev/null | grep -q \"finger\"; then\n  sed -i 's/fingerprint:enabled = .*/fingerprint:enabled = false/' ~/.config/hypr/hyprlock.conf\nfi\n```\n"}}