Skip to content

Agent UX feedback: friction points and feature ideas from real session #54

@ekroon

Description

@ekroon

Context

Feedback from an extended tab management session using tabctl (list → close → group-assign → merge-window workflow). Managed 49 tabs across 3 windows: closed 30, created 5 groups, merged 2 windows down to 1.

Friction points

1. Positional args on close fail silently

tabctl close 123 456 789  # exit code 1, zero output

Expected: Usage hint like error: use --tab <id> to specify tabs

2. group-assign without --create gives unhelpful error

error: Group not found
hint: Use tabctl group-list to see existing groups.

Expected: Add tip: use --create to create a new group

3. merge-window flag names are not guessable

Tried --window/--into before discovering --from/--to. Consider adding aliases.

4. No way to move individual tabs between windows

Had to use group-assign (moves tab as side effect) or merge-window (moves everything). A tabctl move-tab --tab X --to-window Y would fill this gap.

5. Multi-window group-assign error could be more helpful

error: Multiple source windows. Provide --window to create a new group.

Expected: Add tip: create the group in one window first, then assign cross-window tabs to it by name

Feature ideas (AI agent use case)

tabctl list --flat

Flat list without window/group nesting — one tab per line with window and group as fields. Much easier for agents to parse and filter.

tabctl close --group "name"

Close all tabs in a group at once instead of enumerating tab IDs manually.

tabctl list --summary

Quick counts per window/group without full tab details. Useful for orientation.

Stdin piping

tabctl list --flat --json | jq ".[] | select(.groupTitle == null) | .tabId" | tabctl close --stdin

Enable powerful composition with standard Unix tools.

tabctl status

One-liner health check: window count, tab count, group count.

What works great

  • Compact JSON output is clean and complete
  • Tab IDs are stable throughout a session
  • --confirm on close is good safety
  • --create flag on group-assign is a nice create-or-assign pattern
  • Group colors make visual organization intuitive
  • Skill integration works well for the agent workflow loop

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions