Skip to content

Prompt Line is a macOS app developed to improve the prompt input experience in the terminal for CLI-based AI coding agents such as Claude Code, Gemini CLI, OpenAI Codex CLI, and Aider.

License

Notifications You must be signed in to change notification settings

nkmr-jp/prompt-line

Repository files navigation

🧑‍💻 Prompt Line

Ask DeepWiki

English | 日本語

Overview

Prompt Line is a macOS app developed to improve the prompt input experience in the terminal for CLI-based AI coding agents such as Claude Code, Gemini CLI, OpenAI Codex CLI, and Aider. It addresses UX challenges related to multi-byte character input (e.g., Japanese) by providing a dedicated floating input interface.

This greatly reduces stress when entering text in the following cases in particular.

  1. Prompt input for CLI-based AI coding agents in the terminal
  2. Chat apps where pressing Enter sends the message at an unintended time
  3. Text editor with slow input response (e.g., large Confluence documents)

Features

Quick Launch, Quick Paste

Quick launch with shortcut (Cmd+Shift+Space).
Type text and quick paste (Cmd+Enter). doc1.gif

Perfect for Editing Voice-Inputted Text

The operation is the same as a typical text editor.
Of course, you can also use it in combination with a voice input app.
Pressing Enter will not automatically send the text, so you don't have to worry about line breaks.
It is also ideal for editing text entered by voice.
(This video uses superwhisper.) doc2.gif

Search and Reuse Prompt History

Prompt history is saved and can be reused from the right menu.
Search is also available. (Cmd+f) doc3.gif

Launch Anywhere

Can be launched anywhere there's a text input field.
Also convenient when you want to reuse the same prompt in other apps. doc4.gif

Of course, it also works with apps other than Terminal. doc5.gif

File Opener

You can launch a file searched for with a file path or @ and check its contents. (Ctrl+Enter or Cmd+Click)

doc9.png

File Search

You can search for files by typing @.
fd command installation is required. (brew install fd)
※ You need to configure fileSearch in ~/.prompt-line/settings.yml. See "⚙️ Settings" section.
※ Supported applications: Terminal.app, iTerm2, JetBrains IDEs (IntelliJ, WebStorm, etc.), VSCode, Cursor, Windsurf

doc10.png

Markdown Search

You can search for slash commands by typing /.
※ You need to configure mdSearch in ~/.prompt-line/settings.yml. See "⚙️ Settings" section.

doc11.png

You can also configure to search for sub-agents and skills by typing @.

doc12.png

📦 Installation

System Requirements

  • macOS 10.14 or later
  • Node.js 20 or later
  • Xcode Command Line Tools or Xcode (for compiling native tools)

Build from Source

  1. Clone the repository:

    git clone https://github.com/nkmr-jp/prompt-line.git
    cd prompt-line

    To build a specific version:

    git clone https://github.com/nkmr-jp/prompt-line.git
    cd prompt-line
    git checkout v0.x.x  # Replace with desired version tag
  2. Install dependencies:

    npm install
  3. Build the application:

    npm run build
  4. The built app will be created in the dist/ directory

  5. Open the dmg file:

    open dist/Prompt-Line-0.x.x-arm64.dmg # Apple Silicon
    open dist/Prompt-Line-0.x.x-x64.dmg # Intel
  6. Drag Prompt Line.app to Applications folder

  7. Launch Prompt Line. An icon will appear in the system tray.

  1. You can start using it with Cmd+Shift+Space.

Accessibility Permissions

Prompt Line requires accessibility permissions to paste text into other applications. A dialog box will appear on first use, so follow the instructions to set it up.

Troubleshooting

If the accessibility permissions dialog box does not appear

  1. Open System SettingsPrivacy and SecurityAccessibility.
  2. Find “Prompt Line” in the list and enable it.
  3. If it is not in the list, add Prompt Line from Applications using the “+” button.

If “Prompt Line” is enabled in Accessibility Permissions but you still cannot paste

  1. Open System SettingsPrivacy and SecurityAccessibility
  2. Delete “Prompt Line” from Applications using the “-” button to reset permissions
  3. The issue should be resolved after reconfiguring settings.

Accessibility permissions can also be reset using the following command:

npm run reset-accessibility

📦 Update

If you already have an older version installed and want to update to the latest version, follow these steps.

  1. Run the npm run reset-accessibility command to reset the accessibility permissions in the “Prompt Line.”
  2. Refer to the “📦 Installation” section and reinstall

Usage

Basic Workflow

  1. Move to where you want to input
  2. Press Cmd+Shift+Space to open Prompt Line
  3. Type your text
  4. Press Cmd+Enter to paste text
  5. Continue working

Features

  • History Panel - Click previous entries to reuse. Search is also available. (Cmd+f)
  • Draft Autosave - Automatically saves your work
  • Image Support - Paste clipboard images with Cmd+V
  • File Opener - Open files from file path text (Ctrl+Enter or Cmd+Click)
  • File Search - Search files by typing @ (requires fd command and settings configuration)
  • Markdown Search - Search slash commands by typing / or sub-agents by typing @ (requires settings configuration)

⚙️ Settings

You can customize Prompt Line's behavior by creating a settings file at ~/.prompt-line/settings.yml:

# Prompt Line Settings Configuration
# This file is automatically generated but can be manually edited

# ============================================================================
# KEYBOARD SHORTCUTS
# ============================================================================
# Format: Modifier+Key (e.g., Cmd+Shift+Space, Ctrl+Alt+Space)
# Available modifiers: Cmd, Ctrl, Alt, Shift

shortcuts:
  main: Cmd+Shift+Space           # Show/hide the input window (global)
  paste: Cmd+Enter         # Paste text and close window
  close: Escape              # Close window without pasting
  historyNext: Ctrl+j          # Navigate to next history item
  historyPrev: Ctrl+k          # Navigate to previous history item
  search: Cmd+f            # Enable search mode in history

# ============================================================================
# WINDOW SETTINGS
# ============================================================================
# Position options:
#   - active-text-field: Near focused text field (default, falls back to active-window-center)
#   - active-window-center: Center within active window
#   - cursor: At mouse cursor location
#   - center: Center on primary display

window:
  position: active-text-field
  width: 600                      # Recommended: 400-800 pixels
  height: 300                     # Recommended: 200-400 pixels

# ============================================================================
# FILE OPENER SETTINGS
# ============================================================================
# Configure which applications to use when opening file links
# When defaultEditor is null, system default application is used

fileOpener:
  # Default editor for all files (null = use system default application)
  # Example values: "Visual Studio Code", "Sublime Text", "WebStorm"
  defaultEditor: null
  # Extension-specific applications (overrides defaultEditor)
  #extensions:                       # Extension-specific apps (uncomment to enable)
  #  ts: "WebStorm"
  #  md: "Typora"
  #  pdf: "Preview"

# ============================================================================
# FILE SEARCH SETTINGS (@ mentions)
# ============================================================================
# Note: fd command is required for file search (install: brew install fd)
# When this section is commented out, file search feature is disabled

#fileSearch:                        # File search for @ mentions (uncomment to enable)
#  respectGitignore: true             # Respect .gitignore files
#  includeHidden: true                # Include hidden files (starting with .)
#  maxFiles: 5000                     # Maximum files to return
#  maxDepth: null                     # Directory depth limit (null = unlimited)
#  followSymlinks: false              # Follow symbolic links
#  fdPath: null                       # Custom path to fd command (null = auto-detect)
#  #excludePatterns:                  # Additional exclude patterns
#  #  - "*.log"
#  #  - "*.tmp"
#  #includePatterns:                  # Force include patterns (override .gitignore)
#  #  - "dist/**/*.js"

# ============================================================================
# MARKDOWN SEARCH SETTINGS (Slash Commands & Mentions)
# ============================================================================
# Configure sources for slash commands (/) and mentions (@)
# Template variables: {basename}, {frontmatter@fieldName}

#mdSearch:                         # Slash commands & mentions (uncomment to enable)
#  # Pattern examples:
#  #   "*.md"                  - Root directory only
#  #   "**/*.md"               - All subdirectories (recursive)
#  #   "**/commands/*.md"      - Any "commands" subdirectory
#  #   "**/*/SKILL.md"         - SKILL.md in any subdirectory
#  #   "**/{cmd,agent}/*.md"   - Brace expansion (cmd or agent dirs)
#  #   "test-*.md"             - Wildcard prefix
#
#  - name: "{basename}"
#    type: command                     # 'command' for / or 'mention' for @
#    description: "{frontmatter@description}"
#    path: ~/.claude/commands
#    pattern: "*.md"
#    argumentHint: "{frontmatter@argument-hint}"  # Optional hint after selection
#    maxSuggestions: 20                # Max number of suggestions (default: 20)
#
#  - name: "agent-{basename}"
#    type: mention
#    description: "{frontmatter@description}"
#    path: ~/.claude/agents
#    pattern: "*.md"
#    maxSuggestions: 20
#    searchPrefix: "agent:"            # Require @agent: prefix for this entry (optional)
#
#  - name: "{frontmatter@name}"
#    type: mention
#    description: "{frontmatter@description}"
#    path: ~/.claude/plugins
#    pattern: "**/*/SKILL.md"          # Match SKILL.md in any plugin subdirectory
#    maxSuggestions: 20
#    searchPrefix: "skill:"            # Require @skill: prefix for this entry

Prompt History

  • All data stored locally on your Mac
  • No internet connection required
  • Prompt history saved in ~/.prompt-line/history.jsonl
  • Saved in JSON Lines format, so you can analyze it using DuckDB

doc8.png

Contributing

See Contribution Guide for details.

License

MIT License - see LICENSE for details.

About

Prompt Line is a macOS app developed to improve the prompt input experience in the terminal for CLI-based AI coding agents such as Claude Code, Gemini CLI, OpenAI Codex CLI, and Aider.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published