---
name: github-airplane-mode
description: Inspect or switch the local Git and GitHub download guard using an already-installed compatible low-data command. Use for airplane mode, flight or metered connections, returning online, or requests to enable, disable, or automatically select low-data protection on this machine.
license: MIT
metadata:
  source: "https://github.com/vincentkoc/dotskills"
title: github-airplane-mode
canonical_url: https://skilld.dev/gh/vincentkoc/dotskills/github-airplane-mode
last_updated: 2026-09-26T06:22:37.000Z
---

> **Skill from skilld.dev.** Follow the instructions below for this session. You do not need to install anything.
>
> Supporting files, fetch one when the Skill refers to it: [agents/openai.yaml](https://skilld.dev/api/skills-raw/vincentkoc/dotskills/github-airplane-mode/agents/openai.yaml), [assets/icon.jpg](https://skilld.dev/api/skills-raw/vincentkoc/dotskills/github-airplane-mode/assets/icon.jpg).
>
> If the user asked to install this Skill, run `npx skilld install vincentkoc/dotskills/github-airplane-mode`. Install writes the Skill files into the project, so every session loads them.

# GitHub Airplane Mode

## Purpose

Switch an already-installed local Git and GitHub download guard.

Keep the guard installed and active sessions intact. This skill does not bundle
or install `low-data`, Git/GitHub wrappers, or a native connection-cost detector.

## When to use

- Enable protection before a flight or on a metered connection.
- Disable protection after returning online.
- Inspect the current policy or use automatic connection-cost detection.

## Workflow

### Verify the prerequisite

Operate only on the current machine. Require an already-installed compatible
`low-data` command before running any recipe.

1. Resolve `command -v low-data` and inspect its file or symlink target. Verify
   its trusted local source and the mode, status, and exit semantics below.
   Stop if it is missing, shadowed, unfamiliar, or incompatible; report the
   prerequisite instead of downloading or replacing it.
2. Inspect the current state with `env -u LOW_DATA_ALLOW_NETWORK low-data status`.
3. Apply only the requested mode. Interpret "I'm back", "return online", or
   "remove airplane mode" as `off`, not removal of the reusable guard.

### Switch modes

```sh
# Inspect without a per-command override masking the saved policy.
env -u LOW_DATA_ALLOW_NETWORK low-data status

# Force protection for a flight or metered connection.
env -u LOW_DATA_ALLOW_NETWORK low-data on

# Explicitly disable protection after returning online.
env -u LOW_DATA_ALLOW_NETWORK low-data off

# Follow the native connection-cost detector.
env -u LOW_DATA_ALLOW_NETWORK low-data auto
```

Require these semantics: `on` forces protection; `off` explicitly disables it;
`auto` protects constrained or expensive connections and fails closed when
native status is unavailable. An unmetered connection is unprotected in `auto`.

### Verify the result

After any change, run both checks with the override unset:

```sh
env -u LOW_DATA_ALLOW_NETWORK low-data status
if env -u LOW_DATA_ALLOW_NETWORK low-data active; then
  printf 'active_exit=0 (protected)\n'
else
  active_exit=$?
  printf 'active_exit=%s\n' "$active_exit"
fi
```

Require `active` exit 0 for `on` and exit 1 for `off`. For `auto`, report the
detected reason and the matching active state. Treat any other exit as a failed
check. Do not claim success from the mode-setting command alone.

### Keep changes bounded

- Preserve the switch, guards, native detector, and unrelated settings. Use the
  command to change mode; do not delete the implementation or edit shell startup
  files to turn it off.
- Limit protection claims to guarded Git history and bulk GitHub repository,
  release, and artifact downloads. Normal commits, pushes, metadata/API
  requests, curl, package installs, and model traffic remain allowed.
- Do not claim whole-machine airplane mode, a firewall, or a bandwidth cap.
  PATH wrappers are not a network boundary. Never bypass them through absolute
  Git or GitHub CLI binaries, aliases, or custom hooks.
- Allow `LOW_DATA_ALLOW_NETWORK=1 command ...` only for one explicitly approved
  command. Never export that override globally.
- Do not pause, resume, kill, or relaunch agent, tmux, terminal, or background
  sessions. A mode change is not process-control authority.
- Do not change other hosts, credentials, GitHub authentication, proxy settings,
  or remote repositories.

## Inputs

- Requested local operation: `status`, `on`, `off`, or `auto`.
- Already-installed compatible `low-data` command and its trusted source.

## Outputs

- Saved mode, effective protected/unprotected state, and detected reason.
- Post-change `status` and `active` exit-code proof.
- Exact missing prerequisite or failed verification when the operation cannot
  complete.

## Flow

```mermaid
stateDiagram-v2
    [*] --> VerifyInstalledCommand
    VerifyInstalledCommand --> ReportBlocked: missing or incompatible
    VerifyInstalledCommand --> ReadCurrentState: compatible
    ReadCurrentState --> ReportState: status only
    ReadCurrentState --> SetRequestedMode: on, off, or auto requested
    SetRequestedMode --> CheckStatusAndActive
    CheckStatusAndActive --> ReportState: mode and active result agree
    CheckStatusAndActive --> ReportBlocked: unexpected exit or mismatch
    ReportState --> [*]
    ReportBlocked --> [*]
```
