Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
josiahsiegel avatar

Input Handling

  • 42 installs
  • 50 repo stars
  • Updated June 18, 2026
  • josiahsiegel/claude-plugin-marketplace

Helps with ai & agent building tasks.

About

input-handling is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.

  • input-handling
  • AI & Agent Building
  • AI-coding skill

Input Handling by the numbers

  • 42 all-time installs (skills.sh)
  • +4 installs in the week ending Aug 2, 2026 (Skillselion tracking)
  • Ranked #8,070 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 3, 2026 (Skillselion catalog sync)
npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill input-handling

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs42
repo stars50
Last updatedJune 18, 2026
Repositoryjosiahsiegel/claude-plugin-marketplace

What it does

Helps with ai & agent building tasks.

Files

SKILL.mdMarkdownGitHub ↗

TUI Input Handling, Raw Mode, Keyboard, Mouse, Paste, and Focus

Use this skill when a TUI reads keys, handles shortcuts, supports mouse, edits text, manages focus, or needs safe paste behavior.

Input contract

  • Only enter raw or cbreak mode for interactive TTY sessions.
  • Provide non-interactive alternatives for scripts, pipes, and CI.
  • Keep input decoding separate from application actions.
  • Make every action reachable by keyboard.
  • Treat mouse support as optional progressive enhancement.
  • Preserve expected terminal shortcuts unless the user can rebind them.

Raw mode rules

Raw mode disables line discipline and changes signal behavior. Centralize it and restore it reliably. Verify behavior for Ctrl-C, Ctrl-Z/suspend where supported, EOF, resize, terminal close, and fatal exceptions. Passwords and tokens must not echo.

Keybinding design

Good keybindings are discoverable, consistent, and conflict-aware.

  • Always provide visible help for common actions.
  • Use q, Esc, or Ctrl-C for quit/cancel only when consistent with workflow risk.
  • Confirm destructive actions; require stronger confirmation for irreversible work.
  • Avoid stealing common terminal, shell, editor, and multiplexer shortcuts unless configurable.
  • Support both mnemonic shortcuts and navigational keys where possible.
  • Distinguish global shortcuts from focused-widget shortcuts.

Focus model

Every interactive element needs:

  • A stable identity.
  • Focus eligibility rules.
  • A visible focus indicator that does not rely on color alone.
  • Tab/Shift-Tab or arrow navigation when appropriate.
  • Clear behavior for disabled, hidden, modal, and nested controls.
  • Mouse click behavior that updates focus before activating actions.

Paste and mouse safety

Enable bracketed paste for shells, editors, command palettes, and multiline inputs. Parse paste start/end markers and treat pasted text as data, not a sequence of commands. For mouse input, validate coordinates against the current layout and ignore stale events after resize.

Failure modes

SymptomLikely causeFix
Esc feels delayedparser waiting to distinguish Alt prefixtune timeout or use framework protocol support
Ctrl-C does not exitraw mode swallowed signalmap Ctrl-C explicitly and restore terminal
Paste triggers actionsno bracketed paste or paste treated as keystrokesenable paste protocol and route as text
Mouse clicks wrong rowstale layout after resize or scrollvalidate coordinates against current viewport
Focus disappearsno focused fallback after removing widgetcompute next eligible focus target

Reference files

  • references/input-protocols.md - Keyboard, mouse, paste, focus, and resize event details.
  • references/keybinding-design.md - Shortcut design, conflict avoidance, and forms/editors.

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.