diff --git a/internal/cmd/goals.go b/internal/cmd/goals.go new file mode 100644 index 00000000..762405cf --- /dev/null +++ b/internal/cmd/goals.go @@ -0,0 +1,60 @@ +package cmd + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +// Goal command flags +var ( + goalsJSON bool + goalsStatus string + goalsPriority string +) + +var goalsCmd = &cobra.Command{ + Use: "goals [goal-id]", + GroupID: GroupWork, + Short: "View strategic goals (epics) with staleness indicators", + Long: `View strategic goals (epics) across the workspace. + +Goals are high-level objectives that organize related work items. +This command shows goals with staleness indicators to help identify +stale or neglected strategic initiatives. + +Examples: + gt goals # List all open goals + gt goals --json # Output as JSON + gt goals --status=all # Show all goals including closed + gt goals hq-abc # Show details for a specific goal`, + RunE: runGoals, +} + +func init() { + goalsCmd.Flags().BoolVar(&goalsJSON, "json", false, "Output as JSON") + goalsCmd.Flags().StringVar(&goalsStatus, "status", "open", "Filter by status (open, closed, all)") + goalsCmd.Flags().StringVar(&goalsPriority, "priority", "", "Filter by priority (e.g., P0, P1, P2)") + rootCmd.AddCommand(goalsCmd) +} + +func runGoals(cmd *cobra.Command, args []string) error { + // If arg provided, show specific goal + if len(args) > 0 { + goalID := args[0] + return showGoal(goalID) + } + + // Otherwise list all goals + return listGoals() +} + +func showGoal(goalID string) error { + // TODO: Implement goal details view + return fmt.Errorf("goal details not yet implemented: %s", goalID) +} + +func listGoals() error { + // TODO: Implement goals listing with staleness + return fmt.Errorf("goals listing not yet implemented") +}