Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

The collection

evoke-build/reflexes is the first-party collection: fifteen reflexes for what a Mac does at a word. Each reflex is one directory, with reflex.toml and the file it runs, where it runs one. There is nothing to build. Thirteen of the fifteen run a file and need Node 24 or newer on your PATH; open and trash run a program the Mac has. Every one follows the rules, so each is a manifest to copy from.

$ evoke add evoke-build/reflexes
ReflexDoesEffectReads from your wordsYieldsYours to set
awakeKeeps the laptop awake for a duration, or until pkill caffeinatewriteduration, a duration, optional
downloadSaves a URL's file to ~/Downloads, or to a place you namewriteurl, a URL; to, one of your places, optionalpathplaces
lockLocks the screenwrite
mailStarts an email in your mail appwriteto, an address; subject, text in quotes, optional
noteAppends a dated line to your notes filewritetext, text in quotesfile
openOpens one of your foldersreadplace, one of your placesplaces
powerRestarts or shuts downdestructiveaction, restart or shutdown
screenshotCaptures the screen, a window or a selectionwritearea, screen, window or selection, optional; clipboard, a flagpath
sleepPuts the laptop to sleepwrite
soundMutes, unmutes, or turns the volume up or downwritestate, off, on, up or down; by, a number of points, optional
timerCounts down, then ringswriteduration, a duration; label, text in quotes, optional
trashEmpties the trashdestructive
visitOpens one of your sites, in a private window on requestreadsite, one of your sites; incognito, a flagsites
volumeSets the output volumewritelevel, a number from 0 to 100
wifiTurns Wi-Fi on or offwritestate, on or off

Yours to set

A reflex that needs your words or a setting for a required argument stays inactive until it has them. evoke says which line gives it what it needs. download runs without places; with it, a place you name. Two vocabularies and one setting cover the collection:

$ evoke vocab places add desktop "The desktop." --value "~/Desktop"      # a word per folder; the value its path
$ evoke vocab sites add github "GitHub." --value https://github.com             # a word per site; the value its URL
$ evoke config note file "~/notes.txt"                                          # a path under your home, or absolute; a file that exists

What they pass on

A reflex may declare what its result holds, for a later step of one sentence to take (Weaving). download and screenshot yield path, the file they saved to, a quoted text: a later step with a quoted argument your words left empty can take it, as note does in download https://evoke.build/llms.txt and note it. No reflex in the collection returns a whole result under a name yet, and none takes one.

What they say back

One lowercase line that says what happened: volume 40% · muted · locked · sleeping · saved ~/Desktop/Screenshot 2026-09-20 at 10.31.05.png · copied to the clipboard · eggs: 3 minutes, rings at 10:34 AM · awake for 2 hours · noted "buy milk" in ~/notes.txt · new mail to ana@example.com about "friday" · opened https://github.com in a private window · saved report.pdf to ~/Downloads (1.2 MB).

How they are built

  • macOS, one self-contained file each: every manifest names it, so on Linux each reflex is inactive, and evoke add says so. open and trash are argv reflexes and need no runtime. Each manifest declares what its body touches under [needs], and evoke add prints it under the row: screenshot writes ~/Desktop and runs screencapture. wifi finds the Wi-Fi device by its port's name: en0 on a laptop, often not on a desktop with Ethernet.
  • What outlives a run detaches and returns at once. awake leaves caffeinate running. timer leaves a script that waits, then notifies with a sound.
  • sleep sleeps with pmset. power sends the login window's own restart and shutdown events. So apps are asked to quit, and no second dialog appears, since the decision was confirmed already. lock opens the system's lock screen and needs no Accessibility permission.
  • download never writes over a file already there. A download the 30 s deadline cuts short is removed, and the run says so. A body that runs a program reports the program's own words when it fails. visit opens a private window through the default browser's own flag, in Chrome, Brave, Vivaldi, Edge or Firefox. Safari opens none from a script.
  • Every reflex writes its effect, carries at least three examples, and has its near neighbours as false tests, in words no example uses. One record leaves out each option and each pick. The reflexes name each other under not_for: timer is not for keeping the laptop awake, and awake is not for timers.

Licence and changes

The collection is MIT, since its scripts are meant to be copied into reflexes of your own. Issues and changes go to evoke-build/evoke. The collection is developed and published from there.

FAQPrivacyGitHub