Skip to content

[Code Quality] Expand Huh form usage for multi-field inputs with validation #13056

@github-actions

Description

@github-actions

Description

The console package currently uses Huh only for simple yes/no confirmations. Expanding to multi-field forms with validation would create a more cohesive, user-friendly workflow creation experience.

Current Limitation

// Current: Simple yes/no only
func ConfirmAction(title, affirmative, negative string) (bool, error) {
    var confirmed bool
    
    confirmForm := huh.NewForm(
        huh.NewGroup(
            huh.NewConfirm().
                Title(title).
                Affirmative(affirmative).
                Negative(negative).
                Value(&confirmed),
        ),
    ).WithAccessible(console.IsAccessibleMode())
    
    return confirmForm.Run(), nil
}

Suggested Changes

Create comprehensive form patterns for workflow configuration:

// Recommended pattern for complex inputs
func promptWorkflowConfig() (*WorkflowConfig, error) {
    var cfg WorkflowConfig
    
    form := huh.NewForm(
        huh.NewGroup(
            huh.NewInput().
                Title("Workflow Name").
                Value(&cfg.Name).
                Validate(validateWorkflowName),
            huh.NewSelect[string]().
                Title("Trigger").
                Options(
                    huh.NewOption("Manual (workflow_dispatch)", "workflow_dispatch"),
                    huh.NewOption("Issue opened", "issues"),
                    huh.NewOption("Pull request", "pull_request"),
                ).
                Value(&cfg.Trigger),
            huh.NewMultiSelect[string]().
                Title("Required Tools").
                Options(
                    huh.NewOption("GitHub API", "github"),
                    huh.NewOption("File editing", "edit"),
                    huh.NewOption("Shell commands", "bash"),
                ).
                Value(&cfg.Tools),
            huh.NewConfirm().
                Title("Enable safe outputs?").
                Value(&cfg.SafeOutputs),
        ),
    ).WithAccessible(console.IsAccessibleMode())
    
    if err := form.Run(); err != nil {
        return nil, err
    }
    return &cfg, nil
}

Benefits

  • Single coherent form flow (better than multiple prompts)
  • Built-in validation
  • Better keyboard navigation
  • Consistent accessibility support
  • Reduced user errors through validation

Files Affected

  • pkg/cli/add_interactive_*.go files (primary candidates for conversion)
  • pkg/console/forms.go (new file for form helpers)
  • pkg/console/forms_test.go (tests for form patterns)

Success Criteria

  • Multi-field form helper functions implemented
  • Validation helpers created for common patterns
  • At least 2 interactive CLI commands converted to use new forms
  • Accessibility mode support maintained
  • Comprehensive tests for form validation
  • All tests pass (make test-unit)
  • User experience improved (single form vs multiple prompts)

Source

Extracted from Terminal Stylist Analysis discussion #13054 - High Priority Recommendation #1

Priority

High - Improves interactive workflow creation UX, leverages existing Charmbracelet infrastructure

AI generated by Discussion Task Miner - Code Quality Improvement Agent

  • expires on Feb 15, 2026, 9:08 AM UTC

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions