{ "cmd": { "deploy": { "short": "Manage deployments via Coolify", "long": "Manage deployments, servers, applications and services via the Coolify API." }, "dev": { "short": "Multi-repo development workflows", "long": "Development workflow commands for managing multiple repositories.\n\nIncludes git operations, forge integration, CI status, and dev environment management.", "api": { "short": "API synchronisation tools", "test_gen": { "short": "Generate public API test stubs", "long": "Scan internal service packages and generate compile-time tests for their public API wrappers." } }, "health": { "short": "Quick health check across all repos", "long": "Show a one-line summary of repository health: total repos, dirty count, push/pull status and errors.", "repos": "repos", "to_push": "to push", "to_pull": "to pull", "dirty_label": "Dirty:", "ahead_label": "Ahead:", "behind_label": "Behind:", "errors": "errors", "errors_label": "Errors:", "more": "(+{{.Count}} more)", "flag": { "verbose": "Show per-repo details" } }, "work": { "short": "Combined status, commit and push workflow", "long": "Show status table for all repos, optionally commit dirty repos and push unpushed commits in a single workflow.", "flag": { "status": "Show status table only (no commit or push)", "commit": "Auto-commit dirty repos before pushing" }, "table_modified": "Modified", "table_untracked": "Untracked", "table_staged": "Staged", "table_ahead": "Ahead", "all_up_to_date": "All repos are up to date.", "use_commit_flag": "Tip: use --commit to auto-commit dirty repos", "error_prefix": "error:" }, "commit": { "short": "Claude-assisted commit for dirty repos", "long": "Generate commit messages with Claude for repositories that have uncommitted changes.\n\nRuns in single-repo mode when inside a git repo, or multi-repo mode with a registry.", "flag": { "all": "Commit all dirty repos without prompting" }, "committing": "Committing..." }, "push": { "short": "Push repos with unpushed commits", "long": "Push all repositories that have commits ahead of remote.\n\nHandles diverged branches by offering to pull and retry.", "flag": { "force": "Push without confirmation" }, "confirm": "Push?", "confirm_push": "Push {{.Commits}} commit(s) across {{.Repos}} repo(s)?", "all_up_to_date": "All repos are up to date.", "done_pushed": "{{.Count}} pushed", "diverged": "branch has diverged", "diverged_help": "Some repos have diverged from remote. This usually means someone pushed while you were working.", "pull_and_retry": "Pull and retry push?", "uncommitted_changes_commit": "Uncommitted changes found. Commit first?" }, "pull": { "short": "Pull repos that are behind remote", "long": "Pull latest changes for repositories that are behind their remote tracking branch.", "flag": { "all": "Pull all repos, not just those behind" }, "pulling": "pulling", "pulling_repos": "Pulling {{.Count}} repo(s)...", "all_up_to_date": "All repos are up to date.", "done_pulled": "{{.Count}} pulled", "repos_behind": "{{.Count}} repo(s) behind remote", "commits_behind": "{{.Count}} commit(s) behind" }, "tag": { "short": "Tag and push all repos in dependency order", "long": "Bump patch version, update Go dependencies, tag and push all repos in topological order.", "flag": { "dry_run": "Preview the tag plan without making changes", "force": "Tag without confirmation" } }, "impact": { "short": "Analyse dependency impact of a repo", "long": "Show which repositories are affected when a given repo changes, including direct and transitive dependents.", "analysis_for": "Impact analysis for", "direct_dependents": "{{.Count}} direct dependent(s)", "transitive_dependents": "{{.Count}} transitive dependent(s)", "no_dependents": "{{.Name}} has no dependents", "changes_affect": "Changes to {{.Repo}} affect {{.Affected}} of {{.Total}} repos", "requires_registry": "Impact analysis requires a repos.yaml registry" }, "issues": { "short": "List open issues across repos", "long": "Fetch and display open issues from the Forge API across all registered repositories.", "flag": { "assignee": "Filter by assignee username", "limit": "Maximum issues per repo" }, "open_issues": "{{.Count}} open issue(s)", "no_issues": "No open issues found." }, "reviews": { "short": "List pull requests needing review", "long": "Show open pull requests with review status across all registered repositories.", "flag": { "all": "Include draft PRs", "author": "Filter by PR author" }, "open_prs": "{{.Count}} open PR(s)", "no_prs": "No open pull requests found.", "approved": "{{.Count}} approved", "changes_requested": "{{.Count}} changes requested", "draft": "[draft]", "status_approved": "approved", "status_changes": "changes requested", "status_pending": "pending review" }, "ci": { "short": "Check CI workflow status", "long": "Show CI/CD pipeline status for all repos, with pass/fail counts and optional branch filtering.", "flag": { "branch": "Branch to check (default: main)", "failed": "Show only failed workflows" }, "passing": "{{.Count}} passing", "failing": "{{.Count}} failing", "repos_checked": "{{.Count}} repos checked", "no_ci": "{{.Count}} no CI" }, "apply": { "short": "Run a command across repos", "long": "Execute a shell command or script in every repo directory, optionally committing and pushing changes.\n\nDesigned for safe batch operations by AI agents.", "action": "Action", "cancelled": "Cancelled.", "confirm": "Proceed?", "dry_run_mode": "[dry-run] No changes will be made", "no_changes": "no changes", "summary": "Summary", "targets": "Targets", "warning": "This will run the command in each repo directory.", "flag": { "command": "Shell command to run in each repo", "script": "Script file to run in each repo", "repos": "Comma-separated list of repo names, paths, or glob patterns to target", "commit": "Commit changes after running", "message": "Commit message (required with --commit)", "push": "Push after committing", "co_author": "Co-author for commits", "dry_run": "Preview without making changes", "yes": "Skip confirmation prompt", "continue": "Continue on error instead of stopping" }, "error": { "no_command": "Either --command or --script is required", "both_command_script": "Cannot use both --command and --script", "no_repos": "No target repos found", "command_failed": "Command failed — stopping (use --continue to skip failures)", "commit_needs_message": "--commit requires --message" } }, "file_sync": { "short": "Sync a file or directory to repos", "long": "Copy a file or directory to matching repos, optionally committing and pushing the changes.\n\nDesigned for safe file distribution by AI agents.", "source": "Source", "targets": "Targets", "warning": "This will copy files into each target repo.", "confirm": "Sync these repos?", "dry_run_mode": "[dry-run] No changes will be made", "no_changes": "no changes", "summary": "Summary", "flag": { "to": "Target repo pattern (e.g. core-*)", "message": "Commit message (omit to leave uncommitted)", "push": "Push after committing", "co_author": "Co-author for commits", "dry_run": "Preview without making changes", "yes": "Skip confirmation prompt" }, "error": { "source_not_found": "Source not found: {{.Path}}", "no_targets": "No target repos matched the pattern" } }, "sync": { "short": "Synchronise public API surfaces", "long": "Scan internal service packages and regenerate public API wrappers to keep them in sync." }, "workflow": { "short": "Manage CI workflow files", "long": "List and synchronise CI/CD workflow files across all registered repositories.", "no_workflows": "No workflow files found in any repo.", "synced": "synced", "up_to_date": "up to date", "would_sync": "would sync", "dry_run_mode": "[dry-run] No changes will be made", "run_without_dry_run": "Run without --dry-run to apply changes.", "template_not_found": "Template workflow not found: {{.File}}", "read_template_error": "Failed to read template workflow", "failed_count": "{{.Count}} failed", "skipped_count": "{{.Count}} skipped", "synced_count": "{{.Count}} synced", "would_sync_count": "{{.Count}} would sync", "templates": "Templates", "header": { "repo": "Repo" }, "list": { "short": "Show workflow matrix across repos", "long": "Display a table showing which CI/CD workflow files exist in each repository." }, "sync": { "short": "Copy a workflow template to all repos", "long": "Synchronise a workflow template file into every registered repository's .github/workflows/ directory.", "flag": { "dry_run": "Preview sync without writing files" } } }, "scanning_label": "Scanning...", "no_git_repos": "No git repositories found.", "no_changes": "No changes to commit.", "repos_with_changes": "{{.Count}} repo(s) with changes", "modified": "{{.Count}} modified", "untracked": "{{.Count}} untracked", "staged": "{{.Count}} staged", "committed": "committed", "committing": "Committing", "confirm_claude_commit": "Commit with Claude?", "done_succeeded": "{{.Count}} succeeded", "status": { "clean": "clean" }, "vm": { "boot": { "short": "Start the dev environment VM", "long": "Boot the Parallels dev environment virtual machine with configurable memory and CPU.", "flag": { "memory": "Memory in MB (default: auto)", "cpus": "Number of CPUs (default: auto)", "fresh": "Discard existing state and boot fresh" } }, "install": { "short": "Download the dev environment image", "long": "Download and install the Parallels dev environment VM image." }, "serve": { "short": "Mount project and start dev server", "long": "Mount the current project directory into the VM and start the development server.", "flag": { "port": "Port to expose (default: auto)", "path": "Project path to mount" } }, "shell": { "short": "Open a shell in the dev VM", "long": "Open an interactive shell session inside the running dev environment VM.", "flag": { "console": "Use serial console instead of SSH" } }, "stop": { "short": "Stop the dev environment VM", "long": "Gracefully shut down the running Parallels dev environment VM." }, "update": { "short": "Check for and apply VM updates", "long": "Check if a newer dev environment image is available and optionally download it.", "flag": { "apply": "Download and apply the update" } }, "status": { "short": "Check dev VM status", "long": "Show installation and runtime status of the Parallels dev environment VM." }, "claude": { "short": "Start sandboxed Claude session in VM", "long": "Launch a Claude Code session inside the dev VM with project files mounted and optional authentication.", "flag": { "no_auth": "Skip authentication forwarding", "model": "Model to use for the Claude session", "auth": "Authentication flags to pass through" } }, "test": { "short": "Run tests in the dev environment", "long": "Execute the test suite inside the dev environment VM with the current project mounted.", "flag": { "name": "Run only tests matching this name" } }, "already_installed": "Dev environment already installed.", "check_updates": "Check for updates with {{.Command}}", "downloading": "Downloading dev environment image...", "progress_label": "Progress:", "installed_in": "Installed in {{.Duration}}", "start_with": "Start with {{.Command}}", "not_installed": "Dev environment not installed. Run 'core dev install' first.", "config_label": "Config:", "config_value": "{{.Memory}}MB RAM, {{.CPUs}} CPUs", "booting": "Booting dev environment...", "running": "Dev environment running", "connect_with": "Connect with {{.Command}}", "ssh_port": "SSH port:", "not_running": "Dev environment is not running.", "stopping": "Stopping dev environment...", "status_title": "Dev Environment Status", "installed_label": "Installed:", "installed_yes": "Yes", "installed_no": "No", "install_with": "Install with {{.Command}}", "container_label": "Container:", "memory_label": "Memory:", "cpus_label": "CPUs:", "uptime_label": "Uptime:", "latest_label": "Latest:", "up_to_date": "Dev environment is up to date.", "update_available": "Update available!", "run_to_update": "Run {{.Command}} to update.", "stopping_current": "Stopping current VM...", "downloading_update": "Downloading update...", "updated_in": "Updated in {{.Duration}}" } }, "docs": { "short": "Documentation management", "long": "List, scan and synchronise documentation across all registered repositories.", "list": { "short": "List documentation coverage", "long": "Show a table of documentation files (README, CLAUDE.md, CHANGELOG, docs/) for each repo.", "coverage_summary": "{{.WithDocs}} with docs, {{.WithoutDocs}} without", "header": { "readme": "README", "claude": "CLAUDE", "changelog": "CHANGELOG", "docs": "Docs" } }, "sync": { "short": "Sync docs to a central location", "long": "Copy documentation from each repo's docs/ directory into a central output directory.", "flag": { "dry_run": "Preview sync without writing files", "output": "Output directory for synced docs" }, "confirm": "Sync documentation?", "dry_run_notice": "Dry run — no files written.", "files_count": "({{.Count}} file(s))", "repos_with_docs": "{{.Count}} repo(s) with docs", "synced_packages": "{{.Count}} package(s) synced", "total_summary": "{{.Files}} files from {{.Repos}} repos → {{.Output}}", "no_docs_found": "No documentation found in any repo." } }, "git": { "short": "Git workflow commands", "long": "Git operations for single or multi-repo workflows.\n\nIncludes status, commit, push, pull, and safe batch operations for AI agents." }, "setup": { "short": "Set up workspace and clone packages", "long": "Bootstrap a new workspace or clone packages from a repos.yaml registry.\n\nIn bootstrap mode (no registry), clones the devops repo first, then offers a package wizard.\nIn registry mode, clones all or selected packages into the packages directory.", "flag": { "all": "Clone all packages without prompting", "build": "Run build after cloning", "dry_run": "Preview what would be cloned", "name": "Project directory name (bootstrap mode)", "only": "Filter by repo type (e.g. foundation,module,product)", "registry": "Path to repos.yaml" }, "bootstrap_mode": "No registry found — entering bootstrap mode", "cloning_current_dir": "Cloning into current directory", "creating_project_dir": "Creating project directory", "cloned": "cloned", "would_clone": "Would clone", "already_exists": "already exists", "would_load_registry": "Would load registry from", "org_label": "Organisation:", "to_clone": "{{.Count}} to clone", "exist": "{{.Count}} exist", "nothing_to_clone": "Nothing to clone — all repos already exist.", "would_clone_list": "Would clone:", "cancelled": "Cancelled.", "done": "done", "cloned_count": "{{.Count}} cloned", "already_exist_count": "{{.Count}} already exist", "wizard": { "git_repo_title": "Git Repository Detected", "what_to_do": "This directory is already a git repository. What would you like to do?", "project_name_title": "Project Name", "project_name_desc": "Enter a name for the project directory", "package_selection": "Package Selection", "selection_hint": "Use space to select, enter to confirm", "select_packages": "Select packages to clone", "confirm_clone": "Clone {{.Count}} package(s) to {{.Target}}?" }, "repo": { "short": "Generate .core config for a repo", "long": "Detect the current project type and generate .core/build.yaml, release.yaml, and test.yaml for the repository.", "setting_up": "Setting up repo", "detected_type": "Detected project type", "would_create": "Would create", "created": "Created" }, "github": { "short": "Configure GitHub repo settings", "long": "Apply standardised GitHub settings (labels, webhooks, branch protection, security) to repos.", "flag": { "repo": "Target a specific repo", "all": "Apply all settings", "labels": "Sync issue labels", "webhooks": "Sync webhooks", "protection": "Sync branch protection rules", "security": "Sync security settings", "check": "Check current settings (dry run)", "config": "Path to GitHub config file" }, "error": { "not_authenticated": "GitHub CLI (gh) is not authenticated. Run 'gh auth login' first.", "config_not_found": "GitHub config file not found", "conflicting_flags": "Cannot use --check with modification flags" }, "dry_run_mode": "[dry-run] Checking current settings", "no_repos_specified": "No repos specified.", "usage_hint": "Use --repo= or --all to target repos.", "run_without_check": "Run without --check to apply changes.", "no_changes": "No changes needed", "repos_checked": "Repos checked", "all_up_to_date": "All repos are up to date", "repos_with_changes": "Repos with changes", "to_create": "To create", "to_update": "To update", "to_delete": "To delete" } } }, "common": { "flag": { "registry": "Path to repos.yaml registry", "verbose": "Show detailed output" }, "count": { "commits": "{{.Count}} commit(s)", "failed": "{{.Count}} failed", "files": "{{.Count}} file(s)", "pending": "{{.Count}} pending", "repos_unpushed": "{{.Count}} repo(s) with unpushed commits", "skipped": "{{.Count}} skipped", "succeeded": "{{.Count}} succeeded" }, "status": { "clean": "clean", "dirty": "dirty", "synced": "synced", "up_to_date": "up to date", "cloning": "Cloning", "running": "Running", "stopped": "Stopped" }, "prompt": { "abort": "Aborted." }, "progress": { "checking_updates": "Checking for updates...", "checking": "Checking..." } }, "cli": { "aborted": "Aborted." }, "error": { "gh_not_found": "GitHub CLI (gh) not found. Install it from https://cli.github.com/", "registry_not_found": "Registry (repos.yaml) not found. Run from a workspace directory or use --registry.", "repo_not_found": "Repository not found: {{.Name}}" }, "i18n": { "count": { "failed": "{{.Count}} failed" }, "done": { "sync": "Sync complete." }, "fail": { "load": "Failed to load {{.Name}}", "run": "Failed to run {{.Name}}", "scan": "Failed to scan {{.Name}}" }, "progress": { "check": "Checking", "fetch": "Fetching" } } }