aerospace-config

Complete AeroSpace tiling window manager configuration assistant for macOS. Use for any AeroSpace configuration task including keybindings, workspace management, window rules, layouts (BSP, columns, rows, accordion), focus behavior, gaps, floating windows, app-specific settings, exec commands, or any window management customization. Also use for debugging and troubleshooting AeroSpace issues including log inspection, window state analysis, and diagnosing layout problems. This skill fetches fresh documentation for each request to ensure accurate, up-to-date guidance.

16 stars

Best use case

aerospace-config is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Complete AeroSpace tiling window manager configuration assistant for macOS. Use for any AeroSpace configuration task including keybindings, workspace management, window rules, layouts (BSP, columns, rows, accordion), focus behavior, gaps, floating windows, app-specific settings, exec commands, or any window management customization. Also use for debugging and troubleshooting AeroSpace issues including log inspection, window state analysis, and diagnosing layout problems. This skill fetches fresh documentation for each request to ensure accurate, up-to-date guidance.

Teams using aerospace-config should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/aerospace-config/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/design/aerospace-config/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/aerospace-config/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How aerospace-config Compares

Feature / Agentaerospace-configStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Complete AeroSpace tiling window manager configuration assistant for macOS. Use for any AeroSpace configuration task including keybindings, workspace management, window rules, layouts (BSP, columns, rows, accordion), focus behavior, gaps, floating windows, app-specific settings, exec commands, or any window management customization. Also use for debugging and troubleshooting AeroSpace issues including log inspection, window state analysis, and diagnosing layout problems. This skill fetches fresh documentation for each request to ensure accurate, up-to-date guidance.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# AeroSpace Configuration Assistant

This skill provides comprehensive assistance for configuring AeroSpace, a tiling window manager for macOS. AeroSpace uses TOML for configuration and offers extensive customization for keyboard-driven window management, workspaces, layouts, and window behavior.

## Configuration Location

**Config File:** `/Users/alex/.config/aerospace/aerospace.toml`

Alternative locations: `~/.aerospace.toml`

## Core Principles

### ALWAYS Follow This Workflow

1. **Read Current Config**: Use Read tool to examine existing configuration
2. **Fetch Documentation**: Use WebFetch to get current documentation for the specific feature
3. **Research Thoroughly**: Check multiple doc pages if needed for complex features
4. **Implement Carefully**: Preserve existing config, validate TOML syntax
5. **Explain Clearly**: Document what changed and why
6. **Guide Testing**: Explain how to reload config (`aerospace reload-config`)

### Documentation Strategy

**Never embed documentation text.** Always use WebFetch to retrieve current information from the AeroSpace documentation.

AeroSpace documentation is comprehensive and continuously updated. The configuration system supports many options across window management, keybindings, and layouts.

## Full Configuration Capabilities

AeroSpace supports configuration across these comprehensive areas. For each request, fetch the relevant documentation:

### 1. Getting Started & Overview
- **Installation & Setup**: Initial configuration, first-time setup
  - https://nikitabobko.github.io/AeroSpace/guide
- **Default Config**: Understanding the default configuration
  - https://nikitabobko.github.io/AeroSpace/goodness#default-config

### 2. Keybindings & Modes
- **Key Bindings**: Main mode, custom modes, key syntax
  - https://nikitabobko.github.io/AeroSpace/guide#key-bindings
  - https://nikitabobko.github.io/AeroSpace/guide#binding-modes
- **Key Syntax**: Modifier keys, key names, key combinations
  - https://nikitabobko.github.io/AeroSpace/guide#key-syntax

### 3. Window Management
- **Tree Structure**: Understanding the window tree paradigm
  - https://nikitabobko.github.io/AeroSpace/guide#tree
- **Layouts**: BSP (Binary Space Partitioning), columns, rows, accordion, tiles
  - https://nikitabobko.github.io/AeroSpace/guide#layouts
- **Floating Windows**: Float rules, floating toggle
  - https://nikitabobko.github.io/AeroSpace/guide#floating-windows

### 4. Workspaces & Monitors
- **Workspaces**: Workspace configuration, assignment, switching
  - https://nikitabobko.github.io/AeroSpace/guide#workspaces
- **Multiple Monitors**: Monitor assignment, workspace-to-monitor mapping
  - https://nikitabobko.github.io/AeroSpace/guide#multiple-monitors

### 5. Application-Specific Rules
- **Window Detection Callbacks**: on-window-detected, app-specific behavior
  - https://nikitabobko.github.io/AeroSpace/guide#on-window-detected-callback
- **App Identifiers**: Bundle IDs, window titles for rules

### 6. Visual Appearance
- **Gaps**: Inner gaps, outer gaps, per-workspace gaps
  - https://nikitabobko.github.io/AeroSpace/guide#gaps

### 7. Commands Reference
- **All Commands**: Complete command reference for keybindings and exec
  - https://nikitabobko.github.io/AeroSpace/commands
- **Individual Commands**: (fetch specific command pages as needed)
  - https://nikitabobko.github.io/AeroSpace/commands#focus
  - https://nikitabobko.github.io/AeroSpace/commands#move
  - https://nikitabobko.github.io/AeroSpace/commands#resize
  - https://nikitabobko.github.io/AeroSpace/commands#workspace
  - https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
  - https://nikitabobko.github.io/AeroSpace/commands#layout
  - https://nikitabobko.github.io/AeroSpace/commands#split
  - https://nikitabobko.github.io/AeroSpace/commands#join-with
  - https://nikitabobko.github.io/AeroSpace/commands#flatten-workspace-tree
  - https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget
  - https://nikitabobko.github.io/AeroSpace/commands#mode
  - https://nikitabobko.github.io/AeroSpace/commands#reload-config

### 8. Configuration Options
- **TOML Configuration**: Full config reference
  - https://nikitabobko.github.io/AeroSpace/guide#config-syntax
- **Config Options Reference**: All available configuration options
  - https://nikitabobko.github.io/AeroSpace/config-reference

### 9. Advanced Features
- **Exec Commands**: Running shell commands, exec-and-forget
  - https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget
- **Focus Behavior**: Focus follows window, mouse handling
- **Normalization**: Container normalization options

### 10. Troubleshooting & Debugging
- **Troubleshooting Guide**: Common issues, debugging
  - https://nikitabobko.github.io/AeroSpace/guide#troubleshooting
- **Config Validation**: Checking config syntax
- **Logs & Debugging**: Finding logs, debug information

## Configuration File Structure

AeroSpace configs use TOML format:

```toml
# Start AeroSpace at login
start-at-login = true

# Gaps between windows
[gaps]
inner.horizontal = 10
inner.vertical = 10
outer.left = 10
outer.bottom = 10
outer.top = 10
outer.right = 10

# Main mode keybindings
[mode.main.binding]
alt-h = 'focus left'
alt-j = 'focus down'
alt-k = 'focus up'
alt-l = 'focus right'

# Workspace keybindings
alt-1 = 'workspace 1'
alt-2 = 'workspace 2'

# Move windows to workspaces
alt-shift-1 = 'move-node-to-workspace 1'
alt-shift-2 = 'move-node-to-workspace 2'

# Layout commands
alt-slash = 'layout tiles horizontal vertical'
alt-comma = 'layout accordion horizontal vertical'

# Window detection callbacks
[[on-window-detected]]
if.app-id = 'com.apple.finder'
run = 'layout floating'
```

## Research Process for Each Request

When user requests any configuration change:

1. **Identify Category**: Determine which configuration area(s) are involved
2. **Fetch Core Docs**: Get main documentation page for that category
3. **Fetch Specifics**: If needed, get specific command reference or examples
4. **Check Commands**: If keybinding involves commands, fetch command documentation
5. **Verify Syntax**: Check TOML syntax and available options
6. **Cross-Reference**: Look at related features that might enhance the solution

## Implementation Guidelines

### Code Quality
- Use clear section organization and comments
- Follow TOML best practices
- Validate syntax before suggesting
- Use consistent indentation

### Config Organization
- Group related settings together (gaps, keybindings, rules)
- Add section comments for clarity
- Preserve user's existing organizational structure
- Keep keybindings logically grouped by function

### Error Prevention
- Check for config file existence before editing
- Validate that TOML syntax is correct
- Ensure keybinding commands exist
- Verify app bundle IDs for window rules

### User Guidance
- Explain what each change does
- Link to relevant documentation pages
- Suggest how to test changes (`aerospace reload-config`)
- Offer related enhancements when appropriate
- Mention keyboard shortcuts in clear format (alt-shift-1)

## Common Tasks Quick Reference

### Testing Changes
```bash
aerospace reload-config
```

### Finding App Bundle IDs

**Method 1: Using osascript (preferred for known app names)**
```bash
osascript -e 'id of app "AppName"'
```
Example:
```bash
osascript -e 'id of app "Finder"'
# Returns: com.apple.finder
```

**Method 2: List all running apps**
```bash
aerospace list-apps
```

**Method 3: Using mdls on the app bundle**
```bash
mdls -name kMDItemCFBundleIdentifier /Applications/AppName.app
```

### Listing Windows

**List all windows:**
```bash
aerospace list-windows --all
```

**List windows in specific workspace:**
```bash
aerospace list-windows --workspace TER
```

**List windows as JSON (for detailed analysis):**
```bash
aerospace list-windows --all --json
```

**Filter windows by app (example for Ghostty):**
```bash
aerospace list-windows --all --json | python3 -c "import json,sys; data=json.load(sys.stdin); filtered=[w for w in data if 'AppName' in w.get('app-name','')]; print(json.dumps(filtered, indent=2))"
```

**List active workspaces:**
```bash
aerospace list-workspaces --monitor all --empty no
```

## Debugging & Log Inspection

When troubleshooting issues (window resizing, layout problems, unexpected behavior), use these debugging techniques:

### Check if AeroSpace is Running
```bash
pgrep -l AeroSpace && echo "AeroSpace is running" || echo "AeroSpace is NOT running"
```

### View System Logs

AeroSpace logs to the macOS unified logging system. Use the `log` command to retrieve logs:

**Get recent AeroSpace logs (last 30 minutes):**
```bash
/usr/bin/log show --predicate 'processImagePath CONTAINS "AeroSpace"' --last 30m --info --debug | tail -200
```

**Get logs for specific time period:**
```bash
/usr/bin/log show --predicate 'processImagePath CONTAINS "AeroSpace"' --last 10m --style compact
```

**Stream live logs (useful during testing):**
```bash
/usr/bin/log stream --predicate 'processImagePath CONTAINS "AeroSpace"' --style compact
```

Note: Use `/usr/bin/log` with full path to avoid shell interpretation issues.

### Debug Windows Session

To debug a specific problematic window:

1. Start debug session:
```bash
aerospace debug-windows
```

2. Focus the problematic window

3. Run the command again to get results:
```bash
aerospace debug-windows
```

### Common Debugging Scenarios

**Window not floating/tiling as expected:**
1. List windows to see current state: `aerospace list-windows --workspace WORKSPACE_NAME --json`
2. Check if on-window-detected rule is correct
3. Note: Rules only apply to NEW windows - existing windows keep their state

**Layout issues after config change:**
1. Reload config: `aerospace reload-config`
2. Close and reopen the problematic app for new rules to apply
3. Check logs for any errors

**App windows behaving unexpectedly:**
1. Verify app bundle ID: `osascript -e 'id of app "AppName"'`
2. List all windows from that app to see how AeroSpace perceives them
3. Some apps (like Ghostty) report tabs as separate windows - this is a known macOS limitation

### Debug Mode
```bash
aerospace enable-debug-mode
```

## Remember

- **Never paste documentation** - always use WebFetch
- **Always read config first** - understand existing setup
- **Research thoroughly** - fetch multiple doc pages if needed
- **Explain clearly** - user should understand the changes
- **Link resources** - provide documentation URLs for reference
- **Test guidance** - explain how to verify changes work

AeroSpace is actively developed. When in doubt, fetch the documentation.

Related Skills

ameba-configuration

16
from diegosouzapw/awesome-omni-skill

Use when configuring Ameba rules and settings for Crystal projects including .ameba.yml setup, rule management, severity levels, and code quality enforcement.

akka-net-aspire-configuration

16
from diegosouzapw/awesome-omni-skill

Configure Akka.NET with .NET Aspire for local development and production deployments. Covers actor system setup, clustering, persistence, Akka.Management integration, and Aspire orchestration patterns.

aerospace-expert

16
from diegosouzapw/awesome-omni-skill

Expert-level aerospace systems, flight management, maintenance tracking, aviation safety, and aerospace software

add-config-field

16
from diegosouzapw/awesome-omni-skill

Guide adding a new config field across types, defaults, config.yaml, and optional state/env wiring.

add-app-config

16
from diegosouzapw/awesome-omni-skill

Use when adding configuration for a new application to the dotfiles, setting up a new tool's config, or when user says "add config for X"

a2a-server-config

16
from diegosouzapw/awesome-omni-skill

Agent-to-Agent (A2A) server configuration patterns for HTTP, STDIO, SSE, and WebSocket transports. Use when building A2A servers, configuring MCP transports, setting up server endpoints, or when user mentions A2A configuration, server transport, MCP server setup, or agent communication protocols.

configure-downstream

16
from diegosouzapw/awesome-omni-skill

Configure Konflux for new Submariner version - creates overlays, tenant config, and RPAs for Y-stream releases.

aerospace

16
from diegosouzapw/awesome-omni-skill

Configure and manage AeroSpace tiling window manager for macOS. Use when working with window layouts, tiling configurations, workspace management, monitor assignments, or AeroSpace keybindings. Keywords: aerospace, tiling, workspaces, window manager, i3-like.

aceternity-ui-configuration

16
from diegosouzapw/awesome-omni-skill

Specifies that Aceternity UI dependencies should be considered during code generation or modification.

openclaw-config-validator

16
from diegosouzapw/awesome-omni-skill

Validate, analyze, and explain OpenClaw configuration files. Use when users need to check config.json for errors, understand what a config field does, compare configs, or safely modify OpenClaw configuration. Triggers on config validation requests, schema questions, or config editing tasks.

import-existing-ai-config

16
from diegosouzapw/awesome-omni-skill

Import existing AI tool configurations (from Claude, Copilot, or Cursor) into universal-ai-config templates. Converts target-specific files into universal templates.

EchoKit Config Generator

16
from diegosouzapw/awesome-omni-skill

Generate config.toml for EchoKit servers with interactive setup for ASR, TTS, LLM services, MCP servers, API key entry, and server launch