diff --git a/cmd/gh-aw/main.go b/cmd/gh-aw/main.go index 1c2e35d9269..922ef8c3f5d 100644 --- a/cmd/gh-aw/main.go +++ b/cmd/gh-aw/main.go @@ -276,7 +276,7 @@ Unlike 'upgrade', compilation only applies codemods when you opt in with --fix. ` + string(constants.CLIExtensionPrefix) + ` compile workflow.md # Compile by file path ` + string(constants.CLIExtensionPrefix) + ` compile .github/workflows # Compile all workflows in a directory ` + string(constants.CLIExtensionPrefix) + ` compile --dir custom/workflows # Compile from custom directory - ` + string(constants.CLIExtensionPrefix) + ` compile --watch ci-doctor # Watch and auto-compile + ` + string(constants.CLIExtensionPrefix) + ` compile ci-doctor --watch # Watch and auto-compile ` + string(constants.CLIExtensionPrefix) + ` compile --trial --logical-repo owner/repo # Compile for trial mode ` + string(constants.CLIExtensionPrefix) + ` compile --dependabot # Generate Dependabot manifests ` + string(constants.CLIExtensionPrefix) + ` compile --dependabot --force # Force overwrite existing dependabot.yml @@ -433,7 +433,7 @@ This command only works with workflows that have workflow_dispatch triggers. gh aw run daily-perf-improver --auto-merge-prs # Auto-merge any PRs created during execution gh aw run daily-perf-improver -F name=value -F env=prod # Pass workflow inputs gh aw run daily-perf-improver --push # Commit and push workflow files before running - gh aw run daily-perf-improver --dry-run # Validate without actually running + gh aw run daily-perf-improver --dry-run # Preview without triggering workflow runs gh aw run daily-perf-improver --json # Output results in JSON format`, Args: cobra.ArbitraryArgs, RunE: func(cmd *cobra.Command, args []string) error { @@ -795,7 +795,7 @@ Use "` + string(constants.CLIExtensionPrefix) + ` help all" to show help for all runCmd.Flags().Bool("auto-merge-prs", false, "Auto-merge any pull requests created during the workflow execution") runCmd.Flags().StringArrayP("raw-field", "F", []string{}, "Add a string parameter in key=value format (can be used multiple times)") runCmd.Flags().Bool("push", false, "Commit and push workflow files (including transitive imports) before running") - runCmd.Flags().Bool("dry-run", false, "Validate workflow without actually triggering execution on GitHub Actions") + runCmd.Flags().Bool("dry-run", false, "Preview workflow execution without triggering runs on GitHub Actions") runCmd.Flags().BoolP("json", "j", false, "Output results in JSON format") runCmd.Flags().Bool("approve", false, "Approve all safe update changes. When strict mode is active (the default), the compiler emits warnings for new restricted secrets or unapproved action additions/removals not present in the existing gh-aw-manifest. Use this flag to approve and skip safe update enforcement") // Register completions for run command diff --git a/docs/src/content/docs/setup/cli.md b/docs/src/content/docs/setup/cli.md index f141af0900e..206ef32cae2 100644 --- a/docs/src/content/docs/setup/cli.md +++ b/docs/src/content/docs/setup/cli.md @@ -383,6 +383,7 @@ gh aw run workflow1 workflow2 # Run multiple workflows gh aw run workflow --repeat 3 # Run 4 times total (1 initial + 3 repeats) gh aw run workflow --push # Auto-commit, push, and dispatch workflow gh aw run workflow --push --ref main # Push to specific branch +gh aw run workflow --dry-run # Preview without triggering workflow runs gh aw run workflow --json # Output triggered workflow results as JSON ``` @@ -614,7 +615,7 @@ Forecast AI Credit (AIC) usage for agentic workflows using recent run history an ```bash wrap gh aw forecast # Forecast all workflows (monthly) gh aw forecast ci-doctor # Forecast a specific workflow -gh aw forecast ci-doctor daily-planner # Compare two workflows +gh aw forecast ci-doctor daily-news # Compare two workflows gh aw forecast --period week # Weekly projections gh aw forecast --days 7 # Use 7-day history window gh aw forecast --sample 50 # Sample up to 50 runs per workflow diff --git a/pkg/cli/add_command.go b/pkg/cli/add_command.go index c4be1bc594b..210bc46d9d9 100644 --- a/pkg/cli/add_command.go +++ b/pkg/cli/add_command.go @@ -98,7 +98,7 @@ type AddWorkflowsResult struct { func NewAddCommand(validateEngine func(string) error) *cobra.Command { cmd := &cobra.Command{ Use: "add ...", - Short: "Add agentic workflows from repositories or local files to .github/workflows", + Short: "Add agentic workflows from repositories, local files, or URLs to .github/workflows", Long: addCommandLong, Example: addCommandExample, Args: func(cmd *cobra.Command, args []string) error { @@ -194,8 +194,8 @@ func registerAddCommandFlags(cmd *cobra.Command) { cmd.Flags().String("stop-after", "", "Override stop-after value in the workflow (e.g., '+48h', '2025-12-31 23:59:59')") // Add no-security-scanner flag to add command (--disable-security-scanner is kept as a deprecated alias) - cmd.Flags().Bool("no-security-scanner", false, "Disable security scanning of workflow markdown content") - cmd.Flags().Bool("disable-security-scanner", false, "Disable security scanning of workflow markdown content") + cmd.Flags().Bool("no-security-scanner", false, "Skip security scanning of workflow markdown content") + cmd.Flags().Bool("disable-security-scanner", false, "Skip security scanning of workflow markdown content") _ = cmd.Flags().MarkDeprecated("disable-security-scanner", "use --no-security-scanner instead") // Register completions for add command diff --git a/pkg/cli/add_command_test.go b/pkg/cli/add_command_test.go index a92671e9f00..0427be04654 100644 --- a/pkg/cli/add_command_test.go +++ b/pkg/cli/add_command_test.go @@ -27,7 +27,7 @@ func TestNewAddCommand(t *testing.T) { require.NotNil(t, cmd, "NewAddCommand should not return nil") assert.Equal(t, "add ...", cmd.Use, "Command use should be 'add ...'") - assert.Equal(t, "Add agentic workflows from repositories or local files to .github/workflows", cmd.Short, "Command short description should match") + assert.Equal(t, "Add agentic workflows from repositories, local files, or URLs to .github/workflows", cmd.Short, "Command short description should match") assert.Contains(t, cmd.Long, "Add one or more agentic workflows", "Command long description should contain expected text") // Verify Args validator is set diff --git a/pkg/cli/add_wizard_command.go b/pkg/cli/add_wizard_command.go index b56acb3a398..1388dc67706 100644 --- a/pkg/cli/add_wizard_command.go +++ b/pkg/cli/add_wizard_command.go @@ -128,7 +128,7 @@ Note: To create a new workflow from scratch, use the 'new' command instead.`, cmd.Flags().String("append", "", "Append extra content to the end of agentic workflow on installation") // Add no-security-scanner flag (matches --no-security-scanner in add command) - cmd.Flags().Bool("no-security-scanner", false, "Disable security scanning of workflow markdown content") + cmd.Flags().Bool("no-security-scanner", false, "Skip security scanning of workflow markdown content") // Register completions RegisterEngineFlagCompletion(cmd) diff --git a/pkg/cli/deploy_command.go b/pkg/cli/deploy_command.go index a7e533a3654..a4ac12bf70a 100644 --- a/pkg/cli/deploy_command.go +++ b/pkg/cli/deploy_command.go @@ -90,7 +90,7 @@ func validateDeployArgs(cmd *cobra.Command, args []string) error { } func registerDeployFlags(cmd *cobra.Command) { - cmd.Flags().StringP("repo", "r", "", "Target repository in [HOST/]owner/repo format (required unless --org is provided)") + cmd.Flags().StringP("repo", "r", "", "Target repository ([HOST/]owner/repo format). Required unless --org is provided") cmd.Flags().StringP("name", "n", "", "Specify name for the added workflow (without .md extension)") addEngineFlag(cmd) cmd.Flags().BoolP("force", "f", false, "Overwrite existing workflow files without confirmation") @@ -99,8 +99,8 @@ func registerDeployFlags(cmd *cobra.Command) { cmd.Flags().StringP("dir", "d", "", "Workflow directory (default: $GH_AW_WORKFLOWS_DIR or .github/workflows)") cmd.Flags().Bool("no-stop-after", false, "Remove any stop-after field from the workflow") cmd.Flags().String("stop-after", "", "Override stop-after value in the workflow (e.g., '+48h', '2025-12-31 23:59:59')") - cmd.Flags().Bool("no-security-scanner", false, "Disable security scanning of workflow markdown content") - cmd.Flags().Bool("disable-security-scanner", false, "Disable security scanning of workflow markdown content") + cmd.Flags().Bool("no-security-scanner", false, "Skip security scanning of workflow markdown content") + cmd.Flags().Bool("disable-security-scanner", false, "Skip security scanning of workflow markdown content") _ = cmd.Flags().MarkDeprecated("disable-security-scanner", "use --no-security-scanner instead") cmd.Flags().String("cool-down", defaultDeployCooldown, coolDownFlagUsage) cmd.Flags().String("org", "", "Deploy workflows across repositories in an organization") diff --git a/pkg/cli/deploy_command_test.go b/pkg/cli/deploy_command_test.go index f700ab131ef..7bb1c3292ee 100644 --- a/pkg/cli/deploy_command_test.go +++ b/pkg/cli/deploy_command_test.go @@ -60,7 +60,7 @@ func TestNewDeployCommand_RegistersCoreFlags(t *testing.T) { repoFlag := cmd.Flags().Lookup("repo") require.NotNil(t, repoFlag, "expected --repo flag to be registered") - assert.Contains(t, repoFlag.Usage, "required unless --org is provided") + assert.Contains(t, repoFlag.Usage, "Required unless --org is provided") } func TestNewDeployCommand_CoolDownFlagUsageMatchesUpdate(t *testing.T) { diff --git a/pkg/cli/experiments_command.go b/pkg/cli/experiments_command.go index a1e20b29f9e..b1032a3f838 100644 --- a/pkg/cli/experiments_command.go +++ b/pkg/cli/experiments_command.go @@ -88,9 +88,8 @@ type ExperimentsAnalyzeConfig struct { // NewExperimentsCommand creates the experiments command with its subcommands. func NewExperimentsCommand() *cobra.Command { cmd := &cobra.Command{ - Use: "experiments", - Hidden: true, - Short: "Explore ongoing experiments in the repository", + Use: "experiments", + Short: "Explore ongoing experiments in the repository", Long: `Explore ongoing experiments in the repository. Experiments are tracked via git branches with the "experiments/" prefix (e.g., diff --git a/pkg/cli/experiments_command_test.go b/pkg/cli/experiments_command_test.go index 4856f349105..2498bdd72b5 100644 --- a/pkg/cli/experiments_command_test.go +++ b/pkg/cli/experiments_command_test.go @@ -300,7 +300,7 @@ func TestNewExperimentsCommand(t *testing.T) { cmd := NewExperimentsCommand() require.NotNil(t, cmd, "command should be created") assert.Equal(t, "experiments", cmd.Name(), "command name should be experiments") - assert.True(t, cmd.Hidden, "experiments command should be hidden") + assert.False(t, cmd.Hidden, "experiments command should be visible") subCmds := cmd.Commands() subNames := make([]string, 0, len(subCmds)) diff --git a/pkg/cli/fix_command.go b/pkg/cli/fix_command.go index bc639a7303a..11e8641553c 100644 --- a/pkg/cli/fix_command.go +++ b/pkg/cli/fix_command.go @@ -47,16 +47,16 @@ Use --list-codemods to see all available codemods and their descriptions. If no workflows are specified, all Markdown files in .github/workflows will be processed. The command will: - 1. Scan workflow files for deprecated fields - 2. Apply relevant codemods to fix issues - 3. Report what was changed in each file + 1. Scan workflow files for deprecated fields. + 2. Apply relevant codemods to fix issues. + 3. Report what was changed in each file. Without --write (dry-run mode), no files are modified. With --write, the command performs all steps and additionally: - 4. Write updated files back to disk - 5. Delete deprecated .github/aw/schemas/agentic-workflow.json file if it exists - 6. Delete old template files from previous versions if present - 7. Delete old workflow-specific .agent.md files from .github/agents/ if present + 4. Write updated files back to disk. + 5. Delete deprecated .github/aw/schemas/agentic-workflow.json file if it exists. + 6. Delete old template files from previous versions if present. + 7. Delete old workflow-specific .agent.md files from .github/agents/ if present. ` + WorkflowIDExplanation, Example: ` ` + string(constants.CLIExtensionPrefix) + ` fix # Check all workflows (dry-run) diff --git a/pkg/cli/forecast_command.go b/pkg/cli/forecast_command.go index 40e8839368a..9b01a3c0088 100644 --- a/pkg/cli/forecast_command.go +++ b/pkg/cli/forecast_command.go @@ -66,7 +66,7 @@ Backtesting (--eval): ` + WorkflowIDExplanation, Example: ` ` + string(constants.CLIExtensionPrefix) + ` forecast # Forecast all workflows (monthly) ` + string(constants.CLIExtensionPrefix) + ` forecast ci-doctor # Forecast a specific workflow - ` + string(constants.CLIExtensionPrefix) + ` forecast ci-doctor daily-planner # Compare two workflows + ` + string(constants.CLIExtensionPrefix) + ` forecast ci-doctor daily-news # Compare two workflows ` + string(constants.CLIExtensionPrefix) + ` forecast --period week # Weekly projections ` + string(constants.CLIExtensionPrefix) + ` forecast --days 7 # Use 7-day history window ` + string(constants.CLIExtensionPrefix) + ` forecast --sample 50 # Sample up to 50 runs per workflow diff --git a/pkg/cli/lint_command.go b/pkg/cli/lint_command.go index 66fb1683724..635f8e12e0a 100644 --- a/pkg/cli/lint_command.go +++ b/pkg/cli/lint_command.go @@ -39,10 +39,10 @@ func NewLintCommand() *cobra.Command { This command does not recompile Markdown workflows and does not run zizmor or poutine. By default, shellcheck and pyflakes integrations are disabled for generated run scripts.`, - Example: ` ` + string(constants.CLIExtensionPrefix) + ` lint - ` + string(constants.CLIExtensionPrefix) + ` lint .github/workflows/foo.lock.yml - ` + string(constants.CLIExtensionPrefix) + ` lint --dir .github/workflows - ` + string(constants.CLIExtensionPrefix) + ` lint --shellcheck --pyflakes`, + Example: ` ` + string(constants.CLIExtensionPrefix) + ` lint # Lint all .lock.yml workflows in the default directory + ` + string(constants.CLIExtensionPrefix) + ` lint .github/workflows/foo.lock.yml # Lint a specific lock file + ` + string(constants.CLIExtensionPrefix) + ` lint --dir custom-workflows/ # Lint all lock files in a custom directory + ` + string(constants.CLIExtensionPrefix) + ` lint --shellcheck --pyflakes # Enable actionlint script integrations`, RunE: func(cmd *cobra.Command, args []string) error { workflowDir, _ := cmd.Flags().GetString("dir") includeShellcheck, _ := cmd.Flags().GetBool("shellcheck") diff --git a/pkg/cli/logs_command.go b/pkg/cli/logs_command.go index d18bd832a04..b510a2bc5ab 100644 --- a/pkg/cli/logs_command.go +++ b/pkg/cli/logs_command.go @@ -54,7 +54,7 @@ Downloaded artifacts include (when using --artifacts all): - aw-{branch}.patch: Git patch of changes for each branch (one file per PR/push) - workflow-logs/: GitHub Actions workflow run logs (job logs organized in subdirectory) - summary.json: Complete metrics and run data for all downloaded runs -`, validArtifactSets) + WorkflowIDExplanation, +`, validArtifactSets) + "\n\n" + WorkflowIDExplanation, Example: ` # Basic usage ` + string(constants.CLIExtensionPrefix) + ` logs # Download logs for all workflows ` + string(constants.CLIExtensionPrefix) + ` logs weekly-research # Download logs for specific workflow @@ -62,12 +62,12 @@ Downloaded artifacts include (when using --artifacts all): ` + string(constants.CLIExtensionPrefix) + ` logs -c 10 # Download last 10 matching runs # Date filtering - ` + string(constants.CLIExtensionPrefix) + ` logs --start-date 2024-01-01 # Download all runs after date - ` + string(constants.CLIExtensionPrefix) + ` logs --end-date 2024-01-31 # Download all runs before date + ` + string(constants.CLIExtensionPrefix) + ` logs --start-date 2024-01-01 # Download up to 10 runs after date + ` + string(constants.CLIExtensionPrefix) + ` logs --end-date 2024-01-31 # Download up to 10 runs before date ` + string(constants.CLIExtensionPrefix) + ` logs --start-date -1w # Download up to 10 runs from last week ` + string(constants.CLIExtensionPrefix) + ` logs --start-date -1w -c 5 # Download up to 5 runs from last week - ` + string(constants.CLIExtensionPrefix) + ` logs --end-date -1d # Download all runs until yesterday - ` + string(constants.CLIExtensionPrefix) + ` logs --start-date -1mo # Download all runs from last month + ` + string(constants.CLIExtensionPrefix) + ` logs --end-date -1d # Download up to 10 runs before yesterday + ` + string(constants.CLIExtensionPrefix) + ` logs --start-date -1mo # Download up to 10 runs from last month # Content filtering ` + string(constants.CLIExtensionPrefix) + ` logs --engine claude # Filter logs by claude engine @@ -375,7 +375,7 @@ Downloaded artifacts include (when using --artifacts all): logsCmd.Flags().Bool("train", false, "Analyze log patterns across downloaded runs and save pattern weights to drain3_weights.json in the output directory") logsCmd.Flags().String("format", "", "Output format: console (decorated tables), tsv (tab-separated), pretty (cross-run report), markdown (cross-run Markdown). Default: compact agent-optimized output") logsCmd.Flags().String("report-file", "", "Write --format markdown output directly to this file path instead of stdout (creates parent directories as needed)") - logsCmd.Flags().Int("last", 0, "Alias for --count: number of recent runs to download") + logsCmd.Flags().Int("last", 0, "Alias for --count/-c: number of recent runs to download") logsCmd.Flags().StringSlice("artifacts", []string{"usage"}, "Artifact sets to download (default: usage — compact summary for faster downloads). Use 'all' for everything, or comma-separate sets. Valid sets: "+validArtifactSets) logsCmd.Flags().String("cache-before", "", "(Cache eviction) Evict locally cached run folders for runs before this date, prior to downloading. Accepts deltas like -1d, -1w, -1mo (or explicit day counts like -30d), or an absolute date YYYY-MM-DD. Unlike --start-date, this only clears local cache and does not filter which runs are fetched.") logsCmd.Flags().String("after", "", "Alias for --cache-before") diff --git a/pkg/cli/logs_command_test.go b/pkg/cli/logs_command_test.go index f4e4bd5d1d9..e0e9c3713c8 100644 --- a/pkg/cli/logs_command_test.go +++ b/pkg/cli/logs_command_test.go @@ -62,6 +62,9 @@ func TestNewLogsCommand(t *testing.T) { assert.NotNil(t, afterRunIDFlag, "Should have 'after-run-id' flag") beforeRunIDFlag := flags.Lookup("before-run-id") assert.NotNil(t, beforeRunIDFlag, "Should have 'before-run-id' flag") + lastFlag := flags.Lookup("last") + assert.NotNil(t, lastFlag, "Should have 'last' flag") + assert.Contains(t, lastFlag.Usage, "--count/-c", "--last usage should mention the canonical --count/-c flag") // Check tool-graph flag toolGraphFlag := flags.Lookup("tool-graph") diff --git a/pkg/cli/trial_command.go b/pkg/cli/trial_command.go index e54592114ef..b6657d4081d 100644 --- a/pkg/cli/trial_command.go +++ b/pkg/cli/trial_command.go @@ -15,7 +15,7 @@ func NewTrialCommand(validateEngine func(string) error) *cobra.Command { Long: `Run one or more agentic workflows in trial mode against a simulated repository. This command creates a temporary private repository in your GitHub account, installs the specified -workflow(s) from their source repositories, and runs them in "trial mode" to capture safe outputs without +workflows from their source repositories, and runs them in "trial mode" to capture safe outputs without making actual changes to the "simulated" host repository. Repository modes: @@ -114,7 +114,7 @@ Trial results are saved both locally (in trials/ directory) and in the host repo cmd.Flags().Bool("delete-host-repo-after", false, "Delete the host repository after completion (kept by default)") cmd.Flags().Bool("force-delete-host-repo-before", false, "Force delete the host repository before creation if it already exists") cmd.Flags().BoolP("yes", "y", false, "Skip confirmation prompts") - cmd.Flags().Bool("dry-run", false, "Preview trial execution without applying any changes") + cmd.Flags().Bool("dry-run", false, "Preview trial execution without creating repos or running workflows") cmd.Flags().Int("timeout", 30, "Execution timeout in minutes (set to 0 to disable timeout)") cmd.Flags().String("trigger-context", "", "Trigger context URL (e.g., GitHub issue URL) for issue-triggered workflows") cmd.Flags().Int("repeat", 0, "Number of additional times to run after the initial execution (e.g., --repeat 3 runs 4 times total)") @@ -122,8 +122,8 @@ Trial results are saved both locally (in trials/ directory) and in the host repo addEngineFlag(cmd) addJSONFlag(cmd) cmd.Flags().String("append", "", "Append extra content to the end of agentic workflow on installation") - cmd.Flags().Bool("no-security-scanner", false, "Disable security scanning of workflow markdown content") - cmd.Flags().Bool("disable-security-scanner", false, "Disable security scanning of workflow markdown content") + cmd.Flags().Bool("no-security-scanner", false, "Skip security scanning of workflow markdown content") + cmd.Flags().Bool("disable-security-scanner", false, "Skip security scanning of workflow markdown content") _ = cmd.Flags().MarkDeprecated("disable-security-scanner", "use --no-security-scanner instead") cmd.MarkFlagsMutuallyExclusive("logical-repo", "clone-repo") diff --git a/pkg/cli/update_command.go b/pkg/cli/update_command.go index 66b18d63807..1fc0a457d82 100644 --- a/pkg/cli/update_command.go +++ b/pkg/cli/update_command.go @@ -58,7 +58,7 @@ Note: In GitHub Enterprise repos, shorthand source specs resolve on your enterpr ` + string(constants.CLIExtensionPrefix) + ` update --no-merge # Override local changes with upstream ` + string(constants.CLIExtensionPrefix) + ` update repo-assist --major # Allow major version updates ` + string(constants.CLIExtensionPrefix) + ` update --force # Force update even if no changes - ` + string(constants.CLIExtensionPrefix) + ` update --no-release-bump # Update without force-bumping all action versions + ` + string(constants.CLIExtensionPrefix) + ` update --no-release-bump # Disable force-bumping non-core actions (core actions/* are still force-updated) ` + string(constants.CLIExtensionPrefix) + ` update --no-compile # Update without regenerating lock files ` + string(constants.CLIExtensionPrefix) + ` update --no-redirect # Refuse workflows that use redirect frontmatter ` + string(constants.CLIExtensionPrefix) + ` update --dir custom/workflows # Update workflows in custom directory @@ -170,10 +170,10 @@ Note: In GitHub Enterprise repos, shorthand source specs resolve on your enterpr cmd.Flags().Bool("no-release-bump", false, "Disable automatic major version bumps for all actions (only core actions/* are force-updated)") cmd.Flags().Bool("disable-release-bump", false, "Disable automatic major version bumps for all actions (only core actions/* are force-updated)") _ = cmd.Flags().MarkDeprecated("disable-release-bump", "use --no-release-bump instead") - cmd.Flags().Bool("no-security-scanner", false, "Disable security scanning of workflow markdown content") - cmd.Flags().Bool("disable-security-scanner", false, "Disable security scanning of workflow markdown content") + cmd.Flags().Bool("no-security-scanner", false, "Skip security scanning of workflow markdown content") + cmd.Flags().Bool("disable-security-scanner", false, "Skip security scanning of workflow markdown content") _ = cmd.Flags().MarkDeprecated("disable-security-scanner", "use --no-security-scanner instead") - cmd.Flags().Bool("no-compile", false, "Skip recompiling workflows (do not modify lock files)") + cmd.Flags().Bool("no-compile", false, "Skip recompiling workflows during update (do not modify lock files)") cmd.Flags().Bool("no-redirect", false, "Refuse updates when redirect frontmatter is present") cmd.Flags().String("org", "", "Preview or create workflow update pull requests across an organization") cmd.Flags().StringSlice("repos", nil, "Limit --org mode to repositories matching one or more glob patterns") diff --git a/pkg/cli/update_command_test.go b/pkg/cli/update_command_test.go index 0664f472898..2b6abcc3436 100644 --- a/pkg/cli/update_command_test.go +++ b/pkg/cli/update_command_test.go @@ -88,7 +88,7 @@ func TestNewUpdateCommand_HasDisableSecurityScannerFlag(t *testing.T) { flag := cmd.Flags().Lookup("no-security-scanner") require.NotNil(t, flag, "update command should register --no-security-scanner") - assert.Equal(t, "Disable security scanning of workflow markdown content", flag.Usage, "flag help text should match add/trial wording") + assert.Equal(t, "Skip security scanning of workflow markdown content", flag.Usage, "flag help text should match add/trial wording") // Deprecated alias should still be registered deprecated := cmd.Flags().Lookup("disable-security-scanner") diff --git a/pkg/cli/upgrade_command.go b/pkg/cli/upgrade_command.go index 992b35c69f5..2ecf6da8cd5 100644 --- a/pkg/cli/upgrade_command.go +++ b/pkg/cli/upgrade_command.go @@ -34,7 +34,7 @@ type UpgradeConfig struct { func NewUpgradeCommand() *cobra.Command { cmd := &cobra.Command{ Use: "upgrade", - Short: "Upgrade repository with latest agent files and apply codemods to all workflows", + Short: "Upgrade local agent files and workflows (codemods, action updates, and compilation)", Long: `Upgrade the repository to the latest version of agentic workflows. This command: @@ -44,7 +44,7 @@ This command: 4. Compiles all workflows to generate lock files (like 'compile' command) Flag behavior: -- upgrade runs codemods, action version updates, and workflow compilation by default; use --no-fix to skip all three steps +- Upgrade runs codemods, action version updates, and workflow compilation by default; use --no-fix to skip all three steps - --no-actions and --no-compile are only applied when --no-fix is not set DEPENDENCY HEALTH AUDIT: diff --git a/pkg/cli/validate_command.go b/pkg/cli/validate_command.go index cb293bbce81..dc4a556a3e1 100644 --- a/pkg/cli/validate_command.go +++ b/pkg/cli/validate_command.go @@ -27,7 +27,7 @@ If no workflows are specified, all Markdown files in .github/workflows will be v ` + string(constants.CLIExtensionPrefix) + ` validate --dir custom/workflows # Validate from custom directory ` + string(constants.CLIExtensionPrefix) + ` validate --json # Output results in JSON format ` + string(constants.CLIExtensionPrefix) + ` validate --strict # Enforce strict mode validation - ` + string(constants.CLIExtensionPrefix) + ` validate --fail-fast # Stop at the first error`, + ` + string(constants.CLIExtensionPrefix) + ` validate --fail-fast # Stop at the first validation error`, RunE: func(cmd *cobra.Command, args []string) error { engineOverride, _ := cmd.Flags().GetString("engine") dir, _ := cmd.Flags().GetString("dir")