droid-control

Installation
SKILL.md

Droid Control

Automate terminals, browsers, and desktop apps. Route by the user's requested method first, then load only the mechanics and evidence stages needed.

Ground rules

  1. Real apps, real environments. Non-deterministic behavior (LLM responses, network latency, variable output) is expected. Handle it with wait / wait-idle. Never substitute fixtures or mocked data.
  2. Recover from evidence. After a failed or uncertain action, observe current state before retrying. Honor method constraints and permission boundaries; a refusal does not authorize another driver or broader target.
  3. Atoms include their references. Load linked material on demand. Desktop-use does not require a separately installed cua skill.
  4. tctl owns recorded terminal sessions. It wraps asciinema rec around the PTY; browser and desktop drivers own their separate lifecycles. Never call tuistory launch directly. Resolve TCTL to an absolute path only for terminal workflows or worker handoffs.
  5. Isolate every run. Multiple droids may be filming simultaneously on the same machine. Session names and output paths share a global namespace (/tmp/tctl-sessions/). At the start of every workflow, generate a run ID (RUN_ID=$(date +%s)-$$ or similar) and use it as a prefix for all session names and a scoped temp directory for all output files:
    RUN_ID="$(date +%s)-$$"
    RUN_DIR="$(mktemp -d /tmp/droid-run-${RUN_ID}-XXXXXX)"
    # Session names: -s ${RUN_ID}-before, -s ${RUN_ID}-after
    # Output paths: ${RUN_DIR}/before.cast, ${RUN_DIR}/after.cast
    
    Never use bare session names like -s demo, -s before, -s after — they will collide with concurrent runs. Separate names and paths do not isolate shared desktop focus or keyboard input. Keep one controller for a visible desktop.
Installs
94
GitHub Stars
111
First Seen
Apr 21, 2026
droid-control — factory-ai/factory-plugins