Action library

Ready-made actions to copy into At Hand. They’re all plain text, so you can read one before you add it.

To add one, copy the block and open Settings → AI Actions → Paste… in At Hand. Nothing runs until you’ve read it and allowed it.

Text Tidy

Trims stray spaces, joins wrapped lines, and counts what you selected.

name: Text Tidy
author: At Hand

actions:
  - title: Trim spaces
    on: text
    icon: textformat
    run: javascript
    output: replace
    script: |-
      output = input.split("\n").map(line => line.trim()).join("\n").replace(/\n{3,}/g, "\n\n")

  - title: Join lines
    on: text
    icon: arrow.left.and.right
    run: javascript
    output: replace
    script: |-
      output = input.replace(/\s*\n\s*/g, " ").trim()

  - title: Count words
    on: text
    icon: number
    run: javascript
    output: show
    script: |-
      const words = input.trim() ? input.trim().split(/\s+/).length : 0
      output = words + " words, " + input.length + " characters"

Image Kit

Converts and shrinks images from the Finder’s right-click menu. No scripts involved, so there’s nothing to approve.

name: Image Kit
author: At Hand

actions:
  - title: Convert to JPEG
    on: files
    icon: photo
    contexts: [image]
    run: convertImage
    format: jpeg
    quality: 85

  - title: Convert to PNG
    on: files
    icon: photo
    contexts: [image]
    run: convertImage
    format: png

  - title: Shrink to 2048px
    on: files
    icon: arrow.down.right.and.arrow.up.left
    contexts: [image]
    run: resizeImage
    maxPixels: 2048

Case Converter

Upper, lower and title case for whatever text you’ve selected.

name: Case Converter
author: At Hand

actions:
  - title: UPPERCASE
    on: text
    icon: textformat.size.larger
    run: javascript
    output: replace
    script: |-
      output = input.toUpperCase()

  - title: lowercase
    on: text
    icon: textformat.size.smaller
    run: javascript
    output: replace
    script: |-
      output = input.toLowerCase()

  - title: Title Case
    on: text
    icon: textformat
    run: javascript
    output: replace
    script: |-
      output = input.replace(/\w\S*/g, w => w[0].toUpperCase() + w.slice(1).toLowerCase())