Big Arrow logo

Big Arrow

Community
franzenzenhofer
big-arrow

Point at something on the human's macOS screen with a big arrow and a sign ("Franz, click HERE"), and hand over values, secrets and questions on a floating cue card, using the bigarrow CLI. Use whenever the human has to look at, click, type into or choose a specific spot, button, field, window, tab or menu: show me where, point to it, which button, where do I click, zeig mir wo, guide me through this UI, the human must approve or sign something, or you need the human's hand and they may not be looking at the terminal; also to hand over credentials, a password, token, 2FA code, IBAN or command to paste, or to ask the human a question or a choice while they are away from the terminal. Mandatory when it is time-critical: a code that expires, a login or payment page that times out, a build waiting on the human.

Overview

Publisherfranzenzenhofer
Repositorybig-arrow-on-the-screen
Skill namebig-arrow
Stars
823
Forks
26
Bundled files
2
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 2 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by franzenzenhofer on GitHub. Read the source before you install it.

Installation

Install the Big Arrow AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/franzenzenhofer/big-arrow-on-the-screen/tree/main/skill/big-arrow
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/franzenzenhofer/big-arrow-on-the-screen.git /tmp/big-arrow-on-the-screen
mkdir -p .claude/skills
cp -r /tmp/big-arrow-on-the-screen/skill/big-arrow .claude/skills/big-arrow
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Big Arrow in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Big Arrow on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Big Arrow is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

big-arrow

bigarrow draws a click-through arrow with a sign, needs no permission and never takes the focus. Point at the thing itself, a line in the terminal is easy to miss.

Needs bigarrow 0.5.1 or newer. If bigarrow --version prints an older one, run brew upgrade franzenzenhofer/tap/bigarrow first: an old binary has no card and prints {{value}} as plain text.

bash
open "x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture"
bigarrow start --element "Ghostty" --app "System Settings" --text "Franz, switch this on: Ghostty may record your screen" --say
# watch for the result (page changed, job continued, file appeared), then:
bigarrow stop

Rules

  • Open the exact pane or URL yourself, then point at the one control left for the human. Never walk them through menus. The human clicks; you point.
  • The sign is one full sentence naming the action ("Franz, click Save", never "here"). When the click approves, grants, pays, signs, sends or deletes, add what happens: "Franz, click Pay: 49 EUR to Hetzner". The human decides; the facts go on the sign, not only in the terminal.
  • --say when the human may not be looking. Time-critical (code expires, page times out, job waits): --color red --say and say by when: "Franz, enter the 2FA code now, it expires in 60 s".
  • Something to paste (a command you may not run, a URL, a code): put it on the sign as {{value}}. The human sees the value on a copy button (no braces); one click copies all of it and the arrow stays. Point at where it goes: "Franz, copy {{sudo xcodebuild -license accept}} and paste it here", then check that it was pasted.
  • One arrow per step; bigarrow stop the moment the step is done. Arrows also end alone: after 300 s, when your session exits, when the human answers (hook below).
  • A click on the sign or shaft, except a copy button, removes the arrow (target clicks pass through). A removed arrow was seen: check the result, do not redraw. Skip --close-button unless asked.

Cards: values, secrets, answers

One value to paste: a {{value}} chip on the sign. Two or more values, any secret, or a question: a cue card, a floating window with copy buttons that never takes the focus.

bash
bigarrow card --title "Franz, log in to Hetzner" --app "Google Chrome" --field "User=franz@example.com" \
  --secret "Password=keychain:hetzner/franz" --link https://console.hetzner.cloud --button "done=I'm in"
bigarrow wait          # blocks until an answer: {"result":"button","value":"done","copied":["User","Password"],...}
  • Secrets never go on the command line (ps shows it to everyone): --secret takes a source, pass:, keychain:<service>/<account>, op:, env:, file:, or put the value in a JSON card on stdin. They show as dots, copy as concealed and leave the clipboard after 30 s.
  • --ask "Question?" (typed reply), --choice id=Label (2 to 6), --button id=Label. wait exits 0 for an answer, 1 when the human closed the card without one: then ask in the terminal.
  • A card with questions closes itself once every question is answered (--keep keeps it until the X); the reply's answers has them all. A card with only values stays until the human's X. It survives your session and the prompt hook: close it yourself when it is no longer needed, bigarrow stop --pid <pid> or bigarrow stop --cards.
  • A row can point: in a JSON card, "point": {"element": "Password"} aims the arrow at where that value goes, and it moves on when the human copies the next one. start ... --card card.json shows an arrow and a card together. Row types and JSON: reference.md.

Targets

You knowUse
A label in a native or Electron app--element "Allow" --app "System Settings"
An app or one of its windows--window "Safari" / --window "Safari:Inbox"
A spot inside a Chrome tab--rect x,y,w,h --app "Google Chrome:<tab title>"
A spot in a screenshot--at X,Y --app "<App>"

Always pass --app (or --window) for a target inside an app: it is raised first and the arrow hides while another app covers it. App:title matches a window title, else a tab. Coordinates are global top-left points. Inside a Chrome page --element needs Chrome started with --force-renderer-accessibility; otherwise convert getBoundingClientRect() to --rect (reference.md). Unsure? bigarrow elements --app X --match "allow" or --dry-run.

Errors

Exit 2 bad input, 3 target not found (the message lists what exists), 4 permission missing: run bigarrow doctor. Accessibility (--element, App:title, --until-click) and Screen Recording (--window App:title) belong to the app running your shell (Terminal, Ghostty, VS Code), never to bigarrow. Open the pane the error names (macOS 27: Accessibility is "Device Control and Data Access") and point at that app's switch.

More (pane ids, look and timing flags): reference.md.

Setup once

~/.claude/settings.json: "hooks": {"UserPromptSubmit": [{"hooks": [{"type": "command", "command": "bigarrow stop --hook"}]}]}

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Big Arrow AI skill do?

Point at something on the human's macOS screen with a big arrow and a sign ("Franz, click HERE"), and hand over values, secrets and questions on a floating cue card, using the bigarrow CLI. Use whenever the human has to look at, click, type into or choose a specific spot, button, field, window, tab or menu: show me where, point to it, which button, where do I click, zeig mir wo, guide me through this UI, the human must approve or sign something, or you need the human's hand and they may not be looking at the terminal; also to hand over credentials, a password, token, 2FA code, IBAN or comma...

Why use Big Arrow on TypingMind?

Because you install it once and use it with any model. Big Arrow is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Big Arrow in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/franzenzenhofer/big-arrow-on-the-screen/tree/main/skill/big-arrow. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Big Arrow?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Big Arrow?

As many as you like. As long as a model supports skills, you can use Big Arrow with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Big Arrow AI skill free?

Yes. It is published on GitHub by franzenzenhofer under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇