Install an Apple TV App
Establish inputs
- Obtain the source-project path or existing IPA path.
- Obtain the atvloadly URL from the user or
ATVLOADLY_URL. Ask if neither is available; never hardcode a private host or IP.
- Confirm who controls the atvloadly host. Prefer HTTPS for a public URL; use HTTP only on a user-confirmed trusted LAN. Reject URLs containing credentials.
- Obtain the exact Apple TV name. Never select the first device or an ambiguous device.
- Keep all Apple credentials out of commands, files, logs, screenshots, and responses.
Prepare the IPA
For a source project:
- Read its
AGENTS.md, README, build documentation, project files, and CI configuration before running commands.
- Inspect
git status; preserve every existing modification and untracked file.
- Confirm a tvOS target, Bundle Identifier, minimum tvOS version, supported architecture, dependencies, and signing requirements.
- Install dependencies and build using the project's documented method. Prefer a Release archive/export when the project supports it.
- Run the project's relevant tests and build checks. Fix root causes; never delete functionality or skip required checks to manufacture success.
- Locate the resulting
.ipa and retain its absolute path.
For an existing IPA, skip the build and begin with validation.
Run read-only preflight
Run the bundled script from this skill directory:
python3 <skill-directory>/scripts/preflight.py \
--base-url "${ATVLOADLY_URL:-<user-provided-url>}" \
--device-name "<exact-Apple-TV-name>" \
--ipa "<absolute-path-to-ipa>" \
--json
Require all checks to pass. Record the atvloadly version, service status, selected paired Apple TV ID, RPPairing connection, IP, port, IPA app name, Bundle Identifier, minimum tvOS version, size, and SHA-256. The script performs GET requests only and never uploads or changes state.
Install through the web UI
- Use
chrome-use exclusively for the live web UI. If unavailable, follow its self-heal instructions; do not switch to another browser tool.
- Load the current browser workflow with
chrome-use skills get core --full.
- Open the resolved atvloadly URL.
- Take a fresh snapshot before every interaction. Use only refs from the latest snapshot; never reuse stale refs or guess selectors.
- Select the exact paired Apple TV verified by preflight.
- Open its install page and choose the validated IPA.
- Before starting installation, re-check the visible device name and the IPA path/name against the preflight Bundle Identifier and SHA-256.
- Stop for the user to handle Apple ID selection, password entry, 2FA, or developer-account choice. Never request credentials in chat, type them, read them, or expose them in command output.
- Resume with a fresh snapshot after the user confirms completion, then start or continue installation.
- Capture the terminal installation result and relevant logs without secrets.
Verify completion
Treat these as separate evidence layers:
- Build: tests/checks passed and the tvOS IPA was produced.
- Upload: atvloadly accepted the validated IPA.
- Install: atvloadly reported installation completion for the exact paired device.
- Physical device: the app icon appeared on that Apple TV, launched successfully, rendered its first screen, and passed a minimal core-function smoke test.
Do not claim physical-device success from an HTTP response, browser page, upload result, or install log alone. Ask the user to perform or confirm the on-TV steps when remote observation is unavailable. Report incomplete and failed layers explicitly.
1---2name: install-apple-tv-app3description: Build and sideload a tvOS source project or an existing IPA onto an Apple TV through atvloadly. Use when the user asks to install this project or IPA on Apple TV, deploy a tvOS app, sideload an Apple TV app, or operate atvloadly for an app installation.4---56# Install an Apple TV App78## Establish inputs9101. Obtain the source-project path or existing IPA path.112. Obtain the atvloadly URL from the user or `ATVLOADLY_URL`. Ask if neither is available; never hardcode a private host or IP.123. Confirm who controls the atvloadly host. Prefer HTTPS for a public URL; use HTTP only on a user-confirmed trusted LAN. Reject URLs containing credentials.134. Obtain the exact Apple TV name. Never select the first device or an ambiguous device.145. Keep all Apple credentials out of commands, files, logs, screenshots, and responses.1516## Prepare the IPA1718For a source project:19201. Read its `AGENTS.md`, `README`, build documentation, project files, and CI configuration before running commands.212. Inspect `git status`; preserve every existing modification and untracked file.223. Confirm a tvOS target, Bundle Identifier, minimum tvOS version, supported architecture, dependencies, and signing requirements.234. Install dependencies and build using the project's documented method. Prefer a Release archive/export when the project supports it.245. Run the project's relevant tests and build checks. Fix root causes; never delete functionality or skip required checks to manufacture success.256. Locate the resulting `.ipa` and retain its absolute path.2627For an existing IPA, skip the build and begin with validation.2829## Run read-only preflight3031Run the bundled script from this skill directory:3233```bash34python3 <skill-directory>/scripts/preflight.py \35 --base-url "${ATVLOADLY_URL:-<user-provided-url>}" \36 --device-name "<exact-Apple-TV-name>" \37 --ipa "<absolute-path-to-ipa>" \38 --json39```4041Require all checks to pass. Record the atvloadly version, service status, selected paired Apple TV ID, RPPairing connection, IP, port, IPA app name, Bundle Identifier, minimum tvOS version, size, and SHA-256. The script performs GET requests only and never uploads or changes state.4243## Install through the web UI44451. Use `chrome-use` exclusively for the live web UI. If unavailable, follow its self-heal instructions; do not switch to another browser tool.462. Load the current browser workflow with `chrome-use skills get core --full`.473. Open the resolved atvloadly URL.484. Take a fresh snapshot before every interaction. Use only refs from the latest snapshot; never reuse stale refs or guess selectors.495. Select the exact paired Apple TV verified by preflight.506. Open its install page and choose the validated IPA.517. Before starting installation, re-check the visible device name and the IPA path/name against the preflight Bundle Identifier and SHA-256.528. Stop for the user to handle Apple ID selection, password entry, 2FA, or developer-account choice. Never request credentials in chat, type them, read them, or expose them in command output.539. Resume with a fresh snapshot after the user confirms completion, then start or continue installation.5410. Capture the terminal installation result and relevant logs without secrets.5556## Verify completion5758Treat these as separate evidence layers:5960- **Build:** tests/checks passed and the tvOS IPA was produced.61- **Upload:** atvloadly accepted the validated IPA.62- **Install:** atvloadly reported installation completion for the exact paired device.63- **Physical device:** the app icon appeared on that Apple TV, launched successfully, rendered its first screen, and passed a minimal core-function smoke test.6465Do not claim physical-device success from an HTTP response, browser page, upload result, or install log alone. Ask the user to perform or confirm the on-TV steps when remote observation is unavailable. Report incomplete and failed layers explicitly.