Add AI context description to commands#3503
Merged
Merged
Conversation
dfde4c1 to
2cba82a
Compare
2cba82a to
eae5fc3
Compare
4 tasks
BlasttS
reviewed
Jun 1, 2026
| The list should be comma-separated(,) in the form of user1,user2,... | ||
| ` | ||
| } | ||
|
|
Contributor
There was a problem hiding this comment.
Shouldn't all the changes below be in jfrog-cli-artifactory ?
https://github.com/jfrog/jfrog-cli-artifactory/blob/main/artifactory/docs/groupaddusers/help.go
Is there a reason we have this in CLI too ?
This applies to all help.go files.
Contributor
Author
There was a problem hiding this comment.
It is because the commands are not located in RT repo.
Contributor
Author
There was a problem hiding this comment.
Maybe they should someday.
eae5fc3 to
01b7665
Compare
This was referenced Jun 1, 2026
BlasttS
approved these changes
Jun 1, 2026
01b7665 to
a662e89
Compare
Add a global --ai-help flag that, together with the JFROG_CLI_AI_HELP env var, switches the conversion layer in jfrog-cli-core to render AIDescription instead of Description. The argv pre-pass runs before getCommands() so the conversion layer (invoked during command setup) reads the env var early; urfave/cli's own flag parsing happens later inside app.Run, by which time command strings are already frozen. The flag deliberately omits EnvVar: urfave/cli's BoolFlag EnvVar binding parses the env value with strconv.ParseBool at startup and crashes on unparseable values (e.g. JFROG_CLI_AI_HELP=maybe). Our resolver in docs/common.AIHelpEnabled treats unparseable as a soft fall-back to detection - bypassing urfave/cli's binding preserves that gentler behavior. No AIDescription content is populated yet; that arrives via the follow-up backfill commit (umbrella subagent for help.go files and call-site rewrites).
…l sites Builds on commit 0650eec (which added the --ai-help flag and argv pre-pass to main.go). This commit completes the umbrella's side of JGC-473 by: 1. Adding GetAIDescription() to 85 docs/<ns>/<cmd>/help.go files for all visible jfrog-cli local commands. 28 help.go files for hidden / deprecated / dead-code stubs were intentionally skipped. 2. Rewriting cli.Command literals in main.go and 7 */cli.go files to route Usage / HelpName through corecommon.ResolveDescription, so the conversion-layer mechanism in jfrog-cli-core applies to the umbrella's own urfave/cli-based commands (which don't go through components.Command). For namespace shells with hardcoded Usage strings (rt, mc, pl, c, etc.) new <name>AIUsage constants were introduced. 3. Adding JFROG_CLI_AI_HELP=false default in main_test.go's setupIntegrationTests so help-text assertions remain deterministic when the test runner inherits an AI agent's env (CLAUDECODE, CURSOR_AGENT, etc.). CI runners without agent env are unaffected. TEMPORARY go.mod state - REMOVE the 5 replace directives in the replace block before merge. Each points at the in-flight JGC-473 branch of the respective repo (jfrog-cli-core on JGC-473-devbase; 4 plugin repos on developer's fork because direct org push is not in scope for plugin repos). Once each repo's JGC-473 PR merges to its base branch, the require pinning is sufficient and these replaces MUST be removed. This PR MUST NOT merge until: (a) all 5 cross-repo JGC-473 PRs have merged, AND (b) the yarn-coordination break between core master and jfrog-cli-artifactory main is resolved upstream (RTECO-1035 follow-up).
983a8fb to
f077068
Compare
Per @vitaliil-jfrog: drop the "GitOps-style RBAC management" framing (not a documented JFrog concept) in favor of the concrete use case (re-applying a known-good definition from version control to correct drift). Also soften the adjacent gotcha that asserted unverifiable partial-rollback behavior to a plain "verify the result" suggestion.
Audit of the AIDescription examples surfaced flags and related-command references that do not exist for their commands; an agent copying them would hit "unknown flag" errors. Fixes: - terraform-config: --server-id-resolve/--repo-resolve do not exist (deploy-only); use --server-id-deploy/--repo-deploy. - poetry-config, pnpm-config: resolve-only; drop the non-existent --repo-deploy. - gp (go-publish): remove the invented --deps flag (and its gotcha). - eot (exchange-oidc-token): the URL flag is --url, not --platform-url; also fixed the same --platformUrl typo in the command's own Usage string. - rt user-create: the groups flag is --users-groups, not --groups. - npm-config: removed the bogus "--interactive=false" note (no such flag); prompts occur only when required flags are missing. - docker: Related referenced "jf xr docker-scan" -> "jf docker scan". - npm: Related referenced "jf xr audit npm" -> "jf audit".
vitaliil-jfrog
approved these changes
Jun 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
JFrog CLI commands now provide AI-agent-oriented help text. When the CLI is invoked by an AI coding agent — or when explicitly requested — each command's
--helpoutput expands from its short one-line description into a structured, example-rich guide designed for automated agents: when to use the command, prerequisites, runnable examples, common gotchas, and related commands.Human output is unchanged by default. The richer text is shown only when AI mode is active, which is determined in this order of precedence:
--ai-helpflag —jf --ai-help <command> --helpforces AI-oriented help for that invocation.JFROG_CLI_AI_HELPenvironment variable — set totrueto force it on, orfalseto force it off (a hard opt-out).If
JFROG_CLI_AI_HELPis set to an unrecognized value, the CLI safely falls back to automatic detection rather than erroring. Commands that have not yet been given AI-oriented text simply continue to show their standard description.This first release adds AI-oriented help across the JFrog CLI command set, including Artifactory, security/Xray, evidence, AppTrust, and worker (platform-services) commands.
Implementation notes
jfrog-cli-coregains anAIDescriptionfield oncomponents.Command/Namespaceand adocs/common.ResolveDescriptionresolver wired into thecomponents -> urfave/cliconversion layer, so any plugin that populatesAIDescriptionrenders AI help automatically.--ai-helpglobal flag plus an argv pre-pass (it setsJFROG_CLI_AI_HELPbefore command setup, since the conversion layer reads it then). Localcli.Commandliterals inmain.goand the*/cli.gofiles routeUsage/HelpNamethroughcorecommon.ResolveDescription; namespace shells use<name>AIUsageconstants.main_test.goforcesJFROG_CLI_AI_HELP=falseduring integration-test setup so help-text assertions stay deterministic when the test runner itself runs inside an AI agent.Dependency status — all merged
Every cross-repo JGC-473 PR has merged; each JFrog dependency is pinned to its merged base-branch version. No temporary
replacedirectives remain.Test plan
go build ./...cleango test ./...— 0 failures on a clean (non-agent) env. (The RTECO-1368TestVisibility_*_E2Etests are agent-env sensitive; they pass on CI and on a shell withoutCLAUDECODE/CURSOR_*.)--ai-helpflag, agent auto-detect, unparseable env value (graceful fallback), namespace listings, runtime unaffected.jf rt upload,jf audit,jf evd create,jf apptrust ping,jf worker deploy.Out of scope (follow-ups)
Name:line).