cli/pkg/i18n/locales/en_GB.json
Snider 9f4007c409 Remove StrictHostKeyChecking=no from SSH commands (#315)
* Remove StrictHostKeyChecking=no and implement proper host key verification

This commit addresses security concerns from the OWASP audit by enforcing
strict host key verification for all SSH and SCP commands.

Key changes:
- Replaced StrictHostKeyChecking=accept-new with yes in pkg/container and pkg/devops.
- Removed insecure host key verification from pkg/ansible SSH client.
- Implemented a synchronous host key discovery mechanism during VM boot
  using ssh-keyscan to populate ~/.core/known_hosts.
- Updated the devops Boot lifecycle to wait until the host key is verified.
- Ensured pkg/ansible correctly handles missing known_hosts files.
- Refactored hardcoded SSH port 2222 to a package constant DefaultSSHPort.
- Added CORE_SKIP_SSH_SCAN environment variable for test environments.

* Remove StrictHostKeyChecking=no and implement proper host key verification

Addresses security concerns from OWASP audit by enforcing strict host key
verification.

Changes:
- Replaced StrictHostKeyChecking=accept-new with yes in pkg/container and devops.
- Removed insecure host key verification from pkg/ansible.
- Added synchronous host key discovery using ssh-keyscan during VM boot.
- Updated Boot lifecycle to wait for host key verification.
- Handled missing known_hosts file in pkg/ansible.
- Refactored hardcoded SSH port to DefaultSSHPort constant.
- Fixed formatting issues identified by QA check.

* Secure SSH commands and fix auto-merge CI failure

Addresses OWASP security audit by enforcing strict host key verification
and fixes a CI failure in the auto-merge workflow.

Key changes:
- Replaced StrictHostKeyChecking=accept-new with yes in pkg/container and pkg/devops.
- Removed insecure host key verification from pkg/ansible.
- Implemented synchronous host key discovery using ssh-keyscan during VM boot.
- Handled missing known_hosts file in pkg/ansible.
- Refactored hardcoded SSH port to DefaultSSHPort constant.
- Added pkg/ansible/ssh_test.go to verify SSH client initialization.
- Fixed formatting in pkg/io/local/client.go.
- Fixed auto-merge.yml by inlining the script and providing repository context
  to 'gh' command, resolving the "not a git repository" error in CI.

* Secure SSH, fix CI auto-merge, and resolve merge conflicts

This commit addresses the OWASP security audit by enforcing strict host key
verification and resolves persistent CI issues.

Security Changes:
- Replaced StrictHostKeyChecking=accept-new with yes in pkg/container and devops.
- Removed insecure host key verification from pkg/ansible.
- Implemented synchronous host key discovery using ssh-keyscan during VM boot.
- Updated Boot lifecycle to wait for host key verification.
- Handled missing known_hosts file in pkg/ansible.
- Refactored hardcoded SSH port to DefaultSSHPort constant.

CI and Maintenance:
- Fixed auto-merge.yml by inlining the script and adding repository context
  to 'gh' command, resolving the "not a git repository" error in CI.
- Resolved merge conflicts in .github/workflows/auto-merge.yml with dev branch.
- Added pkg/ansible/ssh_test.go for SSH client verification.
- Fixed formatting in pkg/io/local/client.go to pass QA checks.

* Secure SSH and TLS connections, and fix CI issues

Addresses security concerns from OWASP audit and CodeQL by enforcing strict
host key verification and TLS certificate verification.

Security Changes:
- Enforced strict SSH host key checking in pkg/container and devops.
- Removed insecure SSH host key verification from pkg/ansible.
- Added synchronous host key discovery during VM boot using ssh-keyscan.
- Updated UniFi client to enforce TLS certificate verification by default.
- Added --insecure flag and config option for UniFi to allow opt-in to
  skipping TLS verification for self-signed certificates.

CI and Maintenance:
- Fixed auto-merge workflow by providing repository context to 'gh' command.
- Resolved merge conflicts in .github/workflows/auto-merge.yml.
- Added unit tests for secured Ansible SSH client.
- Fixed formatting issues identified by QA checks.

* fix: gofmt alignment in cmd_config.go

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Secure connections, fix CI auto-merge, and resolve formatting

Addresses OWASP security audit and CodeQL security alerts by enforcing
secure defaults for SSH and TLS connections.

Key changes:
- Enforced strict SSH host key checking (StrictHostKeyChecking=yes).
- Implemented synchronous host key verification during VM boot using ssh-keyscan.
- Updated UniFi client to enforce TLS certificate verification by default.
- Added --insecure flag and config option for UniFi to allow opt-in to
  skipping TLS verification.
- Fixed auto-merge workflow by providing repository context to 'gh' command.
- Resolved merge conflicts in .github/workflows/auto-merge.yml.
- Fixed formatting in internal/cmd/unifi/cmd_config.go and pkg/io/local/client.go.
- Added unit tests for secured Ansible SSH client.

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Claude <developers@lethean.io>
2026-02-05 07:09:34 +00:00

753 lines
37 KiB
JSON

{
"gram": {
"verb": {
"be": { "base": "be", "past": "was", "gerund": "being" },
"go": { "base": "go", "past": "went", "gerund": "going" },
"do": { "base": "do", "past": "did", "gerund": "doing" },
"have": { "base": "have", "past": "had", "gerund": "having" },
"make": { "base": "make", "past": "made", "gerund": "making" },
"get": { "base": "get", "past": "got", "gerund": "getting" },
"run": { "base": "run", "past": "ran", "gerund": "running" },
"write": { "base": "write", "past": "wrote", "gerund": "writing" },
"build": { "base": "build", "past": "built", "gerund": "building" },
"send": { "base": "send", "past": "sent", "gerund": "sending" },
"find": { "base": "find", "past": "found", "gerund": "finding" },
"take": { "base": "take", "past": "took", "gerund": "taking" },
"begin": { "base": "begin", "past": "began", "gerund": "beginning" },
"keep": { "base": "keep", "past": "kept", "gerund": "keeping" },
"hold": { "base": "hold", "past": "held", "gerund": "holding" },
"bring": { "base": "bring", "past": "brought", "gerund": "bringing" },
"think": { "base": "think", "past": "thought", "gerund": "thinking" },
"buy": { "base": "buy", "past": "bought", "gerund": "buying" },
"catch": { "base": "catch", "past": "caught", "gerund": "catching" },
"choose": { "base": "choose", "past": "chose", "gerund": "choosing" },
"lose": { "base": "lose", "past": "lost", "gerund": "losing" },
"win": { "base": "win", "past": "won", "gerund": "winning" },
"meet": { "base": "meet", "past": "met", "gerund": "meeting" },
"lead": { "base": "lead", "past": "led", "gerund": "leading" },
"leave": { "base": "leave", "past": "left", "gerund": "leaving" },
"spend": { "base": "spend", "past": "spent", "gerund": "spending" },
"pay": { "base": "pay", "past": "paid", "gerund": "paying" },
"sell": { "base": "sell", "past": "sold", "gerund": "selling" },
"commit": { "base": "commit", "past": "committed", "gerund": "committing" },
"stop": { "base": "stop", "past": "stopped", "gerund": "stopping" },
"scan": { "base": "scan", "past": "scanned", "gerund": "scanning" },
"format": { "base": "format", "past": "formatted", "gerund": "formatting" },
"set": { "base": "set", "past": "set", "gerund": "setting" },
"put": { "base": "put", "past": "put", "gerund": "putting" },
"cut": { "base": "cut", "past": "cut", "gerund": "cutting" },
"hit": { "base": "hit", "past": "hit", "gerund": "hitting" },
"sit": { "base": "sit", "past": "sat", "gerund": "sitting" },
"split": { "base": "split", "past": "split", "gerund": "splitting" },
"shut": { "base": "shut", "past": "shut", "gerund": "shutting" }
},
"noun": {
"file": { "one": "file", "other": "files" },
"repo": { "one": "repo", "other": "repos" },
"repository": { "one": "repository", "other": "repositories" },
"commit": { "one": "commit", "other": "commits" },
"branch": { "one": "branch", "other": "branches" },
"change": { "one": "change", "other": "changes" },
"item": { "one": "item", "other": "items" },
"issue": { "one": "issue", "other": "issues" },
"task": { "one": "task", "other": "tasks" },
"person": { "one": "person", "other": "people" },
"child": { "one": "child", "other": "children" },
"package": { "one": "package", "other": "packages" },
"artifact": { "one": "artifact", "other": "artifacts" },
"vulnerability": { "one": "vulnerability", "other": "vulnerabilities" },
"dependency": { "one": "dependency", "other": "dependencies" },
"directory": { "one": "directory", "other": "directories" },
"category": { "one": "category", "other": "categories" },
"query": { "one": "query", "other": "queries" },
"passed": { "one": "passed", "other": "passed" },
"failed": { "one": "failed", "other": "failed" },
"skipped": { "one": "skipped", "other": "skipped" },
"check": { "one": "check", "other": "checks" },
"test": { "one": "test", "other": "tests" }
},
"article": {
"indefinite": { "default": "a", "vowel": "an" },
"definite": "the"
},
"word": {
"url": "URL",
"id": "ID",
"ok": "OK",
"ci": "CI",
"qa": "QA",
"php": "PHP",
"sdk": "SDK",
"html": "HTML",
"cgo": "CGO",
"pid": "PID",
"cpus": "CPUs",
"ssh": "SSH",
"ssl": "SSL",
"api": "API",
"pr": "PR",
"vite": "Vite",
"pnpm": "pnpm",
"app_url": "app URL",
"blocked_by": "blocked by",
"claimed_by": "claimed by",
"related_files": "related files",
"up_to_date": "up to date",
"dry_run": "dry run",
"go_mod": "go.mod",
"test": "test",
"package": "package",
"filter": "filter",
"coverage": "coverage",
"passed": "passed",
"failed": "failed",
"skipped": "skipped"
},
"punct": {
"label": ":",
"progress": "..."
},
"number": {
"thousands": ",",
"decimal": ".",
"percent": "%s%%"
}
},
"prompt": {
"yes": "y",
"no": "n",
"continue": "Continue?",
"proceed": "Proceed?",
"confirm": "Are you sure?",
"overwrite": "Overwrite?",
"discard": "Discard changes?"
},
"time": {
"just_now": "just now",
"ago": {
"second": { "one": "{{.Count}} second ago", "other": "{{.Count}} seconds ago" },
"minute": { "one": "{{.Count}} minute ago", "other": "{{.Count}} minutes ago" },
"hour": { "one": "{{.Count}} hour ago", "other": "{{.Count}} hours ago" },
"day": { "one": "{{.Count}} day ago", "other": "{{.Count}} days ago" },
"week": { "one": "{{.Count}} week ago", "other": "{{.Count}} weeks ago" }
}
},
"cmd": {
"ai": {
"short": "AI agent task management",
"long": "AI agent task management for core-agentic integration. Provides commands to list, claim, update, and complete tasks from the agentic task queue. Includes RAG tools and metrics.",
"claude.short": "Claude Code integration",
"claude.long": "Claude Code integration for AI-assisted development workflows.",
"claude.config.short": "Configure Claude Code settings",
"claude.run.short": "Run Claude Code on current directory",
"task.short": "Show task details or auto-select a task",
"task.long": "Show details of a specific task or auto-select the next available task from the queue.",
"task.flag.auto": "Auto-select the next available task",
"task.flag.claim": "Claim the task for yourself",
"task.flag.context": "Include full context in output",
"task.id_required": "task ID required (or use --auto)",
"task.no_pending": "No pending tasks available.",
"tasks.short": "List available tasks from core-agentic",
"task_commit.short": "Auto-commit changes with task reference",
"task_commit.no_changes": "No uncommitted changes to commit.",
"task_complete.short": "Mark a task as completed",
"task_pr.short": "Create a pull request for a task",
"task_pr.branch_error": "cannot create PR from {{.Branch}} branch; create a feature branch first",
"task_update.short": "Update task status or progress",
"metrics.short": "View AI and security event metrics",
"metrics.long": "View collected metrics from AI tasks, security scans, and job creation events. Reads JSONL event logs from ~/.core/ai/metrics/.",
"metrics.flag.since": "Time period to show (e.g. 7d, 24h, 30d)",
"metrics.none_found": "No events recorded in this period."
},
"build": {
"short": "Build projects with auto-detection and cross-compilation",
"long": "Build projects with automatic project type detection and cross-compilation support. Supports Go, Wails, Node.js, and PHP projects.",
"flag.archive": "Create archive (tar.gz/zip) of build output",
"flag.checksum": "Generate SHA256 checksums",
"flag.ci": "Run in CI mode (non-interactive)",
"flag.config": "Path to build configuration file",
"flag.format": "Output format (binary, docker, appimage)",
"flag.image": "Docker image name for container builds",
"flag.no_sign": "Skip code signing",
"flag.notarize": "Notarize macOS builds",
"flag.output": "Output directory for build artifacts",
"flag.push": "Push container image to registry",
"flag.targets": "Comma-separated build targets (e.g., linux/amd64,darwin/arm64)",
"flag.type": "Project type override (go, wails, node, php)",
"label.build": "Build",
"label.type": "Type:",
"label.output": "Output:",
"label.binary": "Binary:",
"label.targets": "Targets:",
"label.sign": "Sign",
"label.archive": "Archive",
"label.checksum": "Checksum",
"label.ok": "OK",
"building_project": "Building project",
"built_artifacts": "Built {{.Count}} artifacts",
"signing_binaries": "Signing binaries",
"creating_archives": "Creating archives",
"computing_checksums": "Computing checksums",
"error.invalid_target": "invalid target format \"{{.Target}}\", expected OS/arch (e.g., linux/amd64)",
"error.no_project_type": "no supported project type detected in {{.Dir}}\nSupported types: go (go.mod), wails (wails.json), node (package.json), php (composer.json)",
"error.no_targets": "no build targets specified",
"error.signing_failed": "signing failed",
"error.notarization_failed": "notarization failed",
"error.archive_failed": "archive creation failed",
"error.checksum_failed": "checksum generation failed",
"error.gpg_signing_failed": "GPG signing failed",
"error.node_not_implemented": "Node.js builds not yet implemented",
"error.php_not_implemented": "PHP builds not yet implemented",
"error.unsupported_type": "unsupported project type",
"from_path.short": "Build from a local directory",
"from_path.flag.path": "Path to application directory",
"from_path.starting": "Building from path:",
"from_path.generating_template": "Generating application template...",
"from_path.copying_files": "Copying application files...",
"from_path.compiling": "Compiling application...",
"from_path.success": "Build complete:",
"from_path.error.invalid_path": "invalid path",
"from_path.error.must_be_directory": "path must be a directory",
"from_path.error.go_mod_tidy": "go mod tidy failed",
"from_path.error.go_build": "go build failed",
"pwa.short": "Build from a live PWA URL",
"pwa.flag.url": "URL of the PWA to build",
"pwa.starting": "Building PWA from URL:",
"pwa.downloading_to": "Downloading to:",
"pwa.no_manifest": "No manifest.json found, using defaults",
"pwa.found_manifest": "Found manifest:",
"pwa.download_complete": "Download complete",
"pwa.error.no_manifest_tag": "no manifest link tag found in HTML",
"sdk.short": "Generate API SDKs from OpenAPI spec",
"sdk.long": "Generate API SDKs from an OpenAPI specification file. Supports multiple languages including TypeScript, Go, and PHP.",
"sdk.flag.dry_run": "Show what would be generated without writing files",
"sdk.flag.lang": "Target language (typescript, go, php)",
"sdk.flag.version": "SDK version to generate",
"sdk.label": "SDK",
"sdk.generating": "Generating SDK",
"sdk.dry_run_mode": "(dry run - no files will be written)",
"sdk.language_label": "Language:",
"sdk.languages_label": "Languages:",
"sdk.would_generate": "Would generate SDK",
"sdk.generated_label": "Generated:",
"sdk.complete": "SDK generation complete",
"release.short": "Build, archive, and publish a release",
"release.long": "Build all targets, create archives, generate checksums, and publish to configured destinations. Requires .core/release.yaml configuration.",
"release.flag.go_for_launch": "Actually publish to configured targets (default: dry-run only)",
"release.flag.version": "Version to release (overrides config)",
"release.flag.draft": "Create as draft release",
"release.flag.prerelease": "Mark as pre-release",
"release.label.release": "Release",
"release.building_and_publishing": "Building and publishing release",
"release.dry_run_hint": "(dry-run) no artifacts will be published",
"release.completed": "Release completed",
"release.label.artifacts": "Artifacts:",
"release.label.published": "Published to:",
"release.error.no_config": "No .core/release.yaml found",
"release.hint.create_config": "Create .core/release.yaml to configure release settings"
},
"ci": {
"short": "Publish releases (dry-run by default)",
"long": "Publish releases to GitHub with automatic changelog generation. Runs in dry-run mode by default for safety.",
"flag.draft": "Create as draft release",
"flag.prerelease": "Mark as pre-release",
"flag.version": "Version to release (e.g., v1.2.3)",
"flag.go_for_launch": "Actually publish the release (disables dry-run)",
"dry_run_hint": "(dry-run) use --we-are-go-for-launch to publish",
"go_for_launch": "GO FOR LAUNCH",
"init.short": "Initialize release configuration",
"changelog.short": "Generate changelog",
"version.short": "Show or set version"
},
"deploy": {
"short": "Infrastructure deployment via Coolify",
"long": "Infrastructure deployment tools for managing Coolify servers, projects, applications, databases, and services."
},
"dev": {
"short": "Multi-repo development workflow",
"long": "Multi-repo development workflow tools for managing federated monorepos. Provides health checks, commit assistance, push/pull operations, and CI status across all repositories.",
"api.short": "Start API development server",
"workflow.short": "Manage GitHub Actions workflows",
"workflow.long": "Manage GitHub Actions workflows across repositories. List, sync, and update workflow files.",
"workflow.list.short": "List workflows across repos",
"workflow.sync.short": "Sync workflow files across repos",
"vm.boot.short": "Boot development VM",
"vm.claude.short": "Run Claude in development VM",
"vm.install.short": "Install development VM",
"vm.serve.short": "Start services in development VM",
"vm.shell.short": "Open shell in development VM",
"vm.stop.short": "Stop development VM",
"vm.test.short": "Run tests in development VM",
"vm.update.short": "Update development VM",
"vm.status.short": "Show development VM status",
"no_changes": "No uncommitted changes found.",
"no_git_repos": "No git repositories found.",
"confirm_claude_commit": "Have Claude commit these repos?",
"health.short": "Quick health check across all repos",
"health.long": "Shows a summary of repository health across all repos in the workspace.",
"health.flag.verbose": "Show detailed breakdown",
"health.repos": "repos",
"health.to_push": "to push",
"health.to_pull": "to pull",
"health.errors": "errors",
"health.more": "+{{.Count}} more",
"health.dirty_label": "Dirty:",
"health.ahead_label": "Ahead:",
"health.behind_label": "Behind:",
"health.errors_label": "Errors:",
"status.clean": "clean",
"commit.short": "Claude-assisted commits across repos",
"push.short": "Push commits across all repos",
"push.diverged": "branch has diverged from remote",
"push.diverged_help": "Some repos have diverged (local and remote have different commits).",
"push.uncommitted_changes_commit": "You have uncommitted changes. Commit with Claude first?",
"pull.short": "Pull updates across all repos",
"work.short": "Multi-repo git operations",
"work.use_commit_flag": "Use --commit to have Claude create commits",
"issues.short": "List open issues across all repos",
"reviews.short": "List PRs needing review across all repos",
"ci.short": "Check CI status across all repos",
"impact.short": "Show impact of changing a repo",
"impact.requires_registry": "impact analysis requires repos.yaml with dependency information",
"sync.short": "Synchronizes public service APIs with internal implementations",
"vm.short": "Dev environment commands",
"vm.not_installed": "dev environment not installed (run 'core dev install' first)",
"vm.not_running": "Dev environment is not running",
"file_sync.short": "Sync files across repos (agent-safe)",
"file_sync.long": "Safely sync files or directories across multiple repositories with automatic pull/commit/push. Designed for AI agents to avoid common git pitfalls.",
"file_sync.flag.to": "Target repos pattern (e.g., packages/core-*)",
"file_sync.flag.message": "Commit message for the sync",
"file_sync.flag.co_author": "Co-author for commit (e.g., 'Name <email>')",
"file_sync.flag.dry_run": "Show what would be done without making changes",
"file_sync.flag.push": "Push after committing",
"file_sync.source": "Source",
"file_sync.targets": "Targets",
"file_sync.summary": "Summary",
"file_sync.no_changes": "no changes",
"file_sync.dry_run_mode": "(dry run)",
"file_sync.error.source_not_found": "Source not found: {{.Path}}",
"file_sync.error.no_targets": "No target repos matched the pattern",
"file_sync.error.no_registry": "No repos.yaml found",
"apply.short": "Run command or script across repos (agent-safe)",
"apply.long": "Run a command or script across multiple repositories with optional commit and push. Designed for AI agents to safely apply changes at scale.",
"apply.flag.command": "Shell command to run in each repo",
"apply.flag.script": "Script file to run in each repo",
"apply.flag.repos": "Comma-separated list of repo names (default: all)",
"apply.flag.commit": "Commit changes after running",
"apply.flag.message": "Commit message (required with --commit)",
"apply.flag.co_author": "Co-author for commit",
"apply.flag.dry_run": "Show what would be done without making changes",
"apply.flag.push": "Push after committing",
"apply.flag.continue": "Continue on error instead of stopping",
"apply.action": "Action",
"apply.targets": "Targets",
"apply.summary": "Summary",
"apply.no_changes": "no changes",
"apply.dry_run_mode": "(dry run)",
"apply.error.no_command": "Either --command or --script is required",
"apply.error.both_command_script": "Cannot use both --command and --script",
"apply.error.commit_needs_message": "--commit requires --message",
"apply.error.script_not_found": "Script not found: {{.Path}}",
"apply.error.no_repos": "No repos found",
"apply.error.no_registry": "No repos.yaml found",
"apply.error.command_failed": "Command failed (use --continue to skip failures)"
},
"docs": {
"short": "Documentation management",
"long": "Documentation management tools for listing and syncing documentation across repositories.",
"list.short": "List documentation across repos",
"sync.short": "Sync documentation to core-php/docs/packages/"
},
"doctor": {
"short": "Check development environment",
"long": "Check development environment for required tools and configuration. Verifies git, gh CLI, language runtimes, and SSH setup.",
"verbose_flag": "Show detailed check results",
"ready": "Doctor: Environment ready",
"no_repos_yaml": "No repos.yaml found (run from workspace directory)",
"install_missing": "Install missing tools:",
"install_macos": "brew install git gh php composer node pnpm docker",
"ssh_missing": "SSH key missing - run: ssh-keygen && gh ssh-key add"
},
"git": {
"short": "Git workflow commands",
"long": "Git workflow commands for managing repositories. Includes status, commit, push, pull operations and safe multi-repo commands for AI agents."
},
"go": {
"short": "Go development tools",
"long": "Go development tools including testing, formatting, linting, and module management.",
"test.short": "Run Go tests",
"cov.short": "Run tests with coverage report",
"fmt.short": "Format Go code",
"fmt.no_changes": "No changed Go files to format.",
"fmt.flag.check": "Check if formatted (exit 1 if not)",
"fmt.flag.all": "Check all files, not just changed ones",
"lint.short": "Run golangci-lint",
"lint.no_changes": "No changed Go files to lint.",
"lint.flag.all": "Lint all files, not just changed ones",
"install.short": "Install Go binary",
"mod.short": "Module management",
"work.short": "Workspace management",
"qa.short": "Run QA checks (fmt, lint, test)"
},
"php": {
"short": "Laravel/PHP development tools",
"dev.short": "Start Laravel development environment",
"dev.press_ctrl_c": "Press Ctrl+C to stop all services",
"test.short": "Run PHP tests (PHPUnit/Pest)",
"test.flag.parallel": "Run tests in parallel",
"test.flag.coverage": "Generate code coverage report",
"test.flag.filter": "Filter tests by name pattern",
"test.flag.group": "Run only tests in specified group",
"test.flag.junit": "Output results in JUnit XML format",
"fmt.short": "Format PHP code with Laravel Pint",
"fmt.flag.fix": "Apply formatting fixes",
"analyse.short": "Run PHPStan static analysis",
"analyse.flag.level": "PHPStan analysis level (0-9)",
"analyse.flag.memory": "Memory limit (e.g., 2G)",
"audit.short": "Security audit for dependencies",
"psalm.short": "Run Psalm static analysis",
"psalm.flag.level": "Psalm error level (1=strictest, 8=lenient)",
"psalm.flag.baseline": "Generate/update baseline file",
"psalm.flag.show_info": "Show info-level issues",
"rector.short": "Automated code refactoring",
"rector.flag.fix": "Apply refactoring changes",
"rector.flag.diff": "Show detailed diff of changes",
"rector.flag.clear_cache": "Clear cache before running",
"infection.short": "Mutation testing for test quality",
"infection.flag.min_msi": "Minimum mutation score indicator (0-100)",
"infection.flag.min_covered_msi": "Minimum covered mutation score (0-100)",
"infection.flag.threads": "Number of parallel threads",
"infection.flag.filter": "Filter files by pattern",
"infection.flag.only_covered": "Only mutate covered code",
"security.short": "Security vulnerability scanning",
"security.flag.severity": "Minimum severity (critical, high, medium, low)",
"security.flag.sarif": "Output as SARIF for GitHub Security tab",
"security.flag.url": "URL to check HTTP security headers",
"qa.short": "Run full QA pipeline",
"qa.flag.quick": "Run quick checks only (audit, fmt, stan)",
"qa.flag.full": "Run all stages including slow checks",
"build.short": "Build Docker or LinuxKit image",
"deploy.short": "Deploy to Coolify",
"deploy.long": "Deploy the PHP application to Coolify",
"deploy.deploying": "Deploying to {{.Environment}}",
"deploy.warning_status": "Deployment finished with status: {{.Status}}",
"deploy.triggered": "Deployment triggered successfully",
"deploy.flag.staging": "Deploy to staging environment",
"deploy.flag.force": "Force deployment even if no changes detected",
"deploy.flag.wait": "Wait for deployment to complete",
"deploy_list.short": "List deployments",
"deploy_list.long": "List recent deployments",
"deploy_list.recent": "Recent deployments for {{.Environment}}",
"deploy_list.none_found": "No deployments found",
"deploy_list.flag.staging": "List staging deployments",
"deploy_list.flag.limit": "Number of deployments to list",
"deploy_rollback.short": "Rollback to previous deployment",
"deploy_rollback.long": "Rollback to a previous deployment",
"deploy_rollback.rolling_back": "Rolling back {{.Environment}}",
"deploy_rollback.warning_status": "Rollback finished with status: {{.Status}}",
"deploy_rollback.triggered": "Rollback triggered successfully",
"deploy_rollback.flag.staging": "Rollback staging environment",
"deploy_rollback.flag.id": "Specific deployment ID to rollback to",
"deploy_rollback.flag.wait": "Wait for rollback to complete",
"deploy_status.short": "Show deployment status",
"deploy_status.long": "Show the status of a deployment",
"deploy_status.flag.staging": "Check staging deployment",
"deploy_status.flag.id": "Specific deployment ID",
"label.deploy": "Deploy",
"error.deploy_failed": "Deployment failed",
"serve.short": "Run production container",
"ssl.short": "Setup SSL certificates with mkcert",
"packages.short": "Manage local PHP packages",
"logs.short": "View application logs",
"shell.short": "Open shell in container",
"status.short": "Show container status",
"stop.short": "Stop running containers",
"stan.short": "Run PHPStan static analysis",
"ci.short": "Run CI/CD pipeline with combined reporting",
"ci.long": "Run all QA checks in optimal order and generate combined reports in JSON, markdown, or SARIF format for CI/CD integration.",
"ci.flag.json": "Output combined JSON report",
"ci.flag.summary": "Output markdown summary (for PR comments)",
"ci.flag.sarif": "Generate SARIF files for static analysis",
"ci.flag.upload_sarif": "Upload SARIF to GitHub Security tab",
"ci.flag.fail_on": "Severity level to fail on (critical, high, warning)"
},
"pkg": {
"short": "Package management for core-* repos",
"long": "Package management for core-* repositories. Clone, list, update, and search for packages.",
"install.short": "Clone a package from GitHub",
"list.short": "List installed packages",
"update.short": "Update installed packages",
"outdated.short": "Check for outdated packages",
"search.short": "Search GitHub for packages",
"error.invalid_repo_format": "invalid repo format: use org/repo (e.g., host-uk/core-php)"
},
"sdk": {
"short": "SDK validation and API compatibility tools",
"long": "SDK validation and API compatibility tools. Check for breaking changes and validate OpenAPI specifications.",
"diff.short": "Check for breaking API changes",
"validate.short": "Validate OpenAPI spec"
},
"setup": {
"short": "Bootstrap workspace or clone packages from registry",
"long": "Bootstrap a new workspace or clone packages from a repos.yaml registry. Interactive wizard for selecting packages to clone.",
"flag.all": "Clone all packages from registry",
"flag.build": "Build packages after cloning",
"flag.dry_run": "Show what would be cloned without cloning",
"flag.name": "Package name to clone",
"flag.only": "Only clone packages of this type",
"flag.registry": "Path to repos.yaml registry file",
"complete": "Setup complete",
"bootstrap_mode": "Bootstrap mode (no repos.yaml found)",
"nothing_to_clone": "Nothing to clone.",
"wizard.select_packages": "Select packages to clone",
"wizard.what_to_do": "What would you like to do?",
"github.short": "Configure GitHub repos with org standards",
"github.long": "Configure GitHub repositories with organisation standards including labels, webhooks, branch protection, and security settings.",
"github.flag.repo": "Specific repo to setup",
"github.flag.all": "Setup all repos in registry",
"github.flag.labels": "Only sync labels",
"github.flag.webhooks": "Only sync webhooks",
"github.flag.protection": "Only sync branch protection",
"github.flag.security": "Only sync security settings",
"github.flag.check": "Dry-run: show what would change",
"github.flag.config": "Path to github.yaml config",
"github.dry_run_mode": "(dry run) no changes will be made",
"github.no_repos_specified": "No repos specified.",
"github.usage_hint": "Use --repo <name> for a single repo, or --all for all repos",
"github.no_changes": "no changes needed",
"github.repos_checked": "Repos checked",
"github.repos_with_changes": "Repos with changes",
"github.all_up_to_date": "All repos are up to date",
"github.to_create": "To create",
"github.to_update": "To update",
"github.to_delete": "To delete",
"github.run_without_check": "Run without --check to apply changes",
"github.error.not_authenticated": "GitHub CLI not authenticated. Run: gh auth login",
"github.error.config_not_found": "GitHub config file not found",
"github.error.conflicting_flags": "Cannot use --repo and --all together"
},
"security": {
"short": "Security alerts and vulnerability scanning",
"long": "View security alerts from Dependabot, code scanning, and secret scanning across repositories.",
"alerts.short": "List all security alerts across repos",
"alerts.long": "List security alerts from Dependabot, code scanning, and secret scanning. Aggregates alerts across all repos in the registry.",
"deps.short": "List Dependabot vulnerability alerts",
"deps.long": "List vulnerable dependencies detected by Dependabot with upgrade recommendations.",
"deps.flag.vulnerable": "Show only vulnerable dependencies",
"scan.short": "List code scanning alerts",
"scan.long": "List code scanning alerts from tools like CodeQL, Semgrep, etc.",
"scan.flag.tool": "Filter by tool name (e.g., codeql, semgrep)",
"secrets.short": "List exposed secrets",
"secrets.long": "List secrets detected by GitHub secret scanning.",
"flag.repo": "Specific repo to check",
"flag.severity": "Filter by severity (critical,high,medium,low)",
"flag.target": "External repo to scan (e.g. wailsapp/wails)",
"jobs.short": "Create GitHub issues from scan results",
"jobs.long": "Create GitHub issues from security scan results so contributors can claim and work on them. Supports targeting external repositories.",
"jobs.flag.targets": "Target repos to scan (owner/repo format)",
"jobs.flag.issue_repo": "Repository to create issues in",
"jobs.flag.dry_run": "Show what would be created without creating issues",
"jobs.flag.copies": "Number of duplicate issues for parallel work"
},
"qa": {
"short": "Quality assurance workflows",
"long": "Quality assurance commands for verifying work - CI status, reviews, issues.",
"watch.short": "Watch GitHub Actions after a push",
"watch.long": "Monitor GitHub Actions workflow runs triggered by a commit, showing live progress and actionable failure details.",
"watch.flag.repo": "Repository to watch (default: current)",
"watch.flag.commit": "Commit SHA to watch (default: HEAD)",
"watch.flag.timeout": "Timeout duration (default: 10m)",
"watch.commit": "Commit:",
"watch.waiting_for_workflows": "Waiting for workflows to start...",
"watch.timeout": "Timeout after {{.Duration}} waiting for workflows",
"watch.workflows_failed": "{{.Count}} workflow(s) failed",
"watch.all_passed": "All workflows passed",
"watch.error.not_git_repo": "Not in a git repository",
"watch.error.repo_format": "Invalid repo format. Use --repo org/name or run from a git repo",
"review.short": "Check PR review status",
"review.long": "Show PR review status with actionable next steps. Answers: What do I need to do to get my PRs merged? What reviews am I blocking?",
"review.flag.mine": "Show only your open PRs",
"review.flag.requested": "Show only PRs where your review is requested",
"review.flag.repo": "Specific repository (default: current)",
"review.your_prs": "Your PRs",
"review.review_requested": "Review Requested",
"review.no_prs": "No open PRs",
"review.no_reviews": "No reviews requested",
"review.error.no_repo": "Not in a git repository. Use --repo to specify one",
"health.short": "Aggregate CI health across all repos",
"health.long": "Shows CI health summary across all repos with focus on problems that need attention.",
"health.flag.problems": "Show only repos with problems",
"health.summary": "CI Health",
"health.all_healthy": "All repos are healthy",
"health.passing": "Passing",
"health.tests_failing": "Tests failing",
"health.running": "Running",
"health.cancelled": "Cancelled",
"health.skipped": "Skipped",
"health.no_ci_configured": "No CI configured",
"health.workflow_disabled": "Workflow disabled",
"health.fetch_error": "Failed to fetch status",
"health.parse_error": "Failed to parse response",
"health.count_passing": "Passing",
"health.count_failing": "Failing",
"health.count_pending": "Pending",
"health.count_no_ci": "No CI",
"health.count_disabled": "Disabled",
"issues.short": "Intelligent issue triage",
"issues.long": "Show prioritised, actionable issues across all repos. Groups by: needs response, ready to work, blocked, and needs triage.",
"issues.flag.mine": "Show only issues assigned to you",
"issues.flag.triage": "Show only issues needing triage",
"issues.flag.blocked": "Show only blocked issues",
"issues.flag.limit": "Maximum issues per repo",
"issues.fetching": "Fetching...",
"issues.no_issues": "No open issues found",
"issues.category.needs_response": "Needs Response",
"issues.category.ready": "Ready to Work",
"issues.category.blocked": "Blocked",
"issues.category.triage": "Needs Triage",
"issues.hint.needs_response": "commented recently",
"issues.hint.blocked": "Waiting on dependency",
"issues.hint.triage": "Add labels and assignee",
"docblock.short": "Check docstring coverage for Go code",
"docblock.long": "Analyse Go packages for docstring coverage on exported symbols. Checks functions, types, constants, and variables.",
"docblock.flag.threshold": "Minimum coverage percentage required",
"docblock.missing_docs": "Missing documentation:",
"docblock.coverage": "Docstring coverage:",
"docblock.use_verbose": "Run with -v to see missing docstrings"
},
"test": {
"short": "Run Go tests with coverage",
"long": "Run Go tests with optional coverage reporting, race detection, and filtering.",
"flag.json": "Output results as JSON",
"flag.pkg": "Package to test (default: ./...)",
"flag.race": "Enable race detector",
"flag.run": "Run only tests matching pattern",
"flag.short": "Run only short tests",
"flag.verbose": "Verbose output"
},
"vm": {
"short": "LinuxKit VM management",
"long": "LinuxKit VM management for running isolated development environments. Create, run, and manage lightweight VMs.",
"run.short": "Run a LinuxKit image or template",
"ps.short": "List running VMs",
"stop.short": "Stop a running VM",
"logs.short": "View VM logs",
"exec.short": "Execute a command in a VM",
"templates.short": "Manage LinuxKit templates"
},
"monitor": {
"short": "Aggregate security findings from GitHub",
"long": "Monitor GitHub Security Tab, Dependabot, and secret scanning for actionable findings. Aggregates results from free tier scanners (Semgrep, Trivy, Gitleaks, OSV-Scanner, Checkov, CodeQL).",
"flag.repo": "Specific repository to scan",
"flag.severity": "Filter by severity (critical, high, medium, low)",
"flag.json": "Output as JSON for piping to other tools",
"flag.all": "Scan all repos in registry",
"scanning": "Scanning",
"found": "Found",
"no_findings": "No security findings",
"error.no_repos": "No repositories to scan. Use --repo, --all, or run from a git repo",
"error.not_git_repo": "Not in a git repository. Use --repo to specify one"
},
"rag": {
"short": "RAG (Retrieval Augmented Generation) tools",
"long": "RAG tools for storing documentation in Qdrant vector database and querying with semantic search. Eliminates need to repeatedly remind Claude about project specifics.",
"flag.qdrant_host": "Qdrant server hostname",
"flag.qdrant_port": "Qdrant gRPC port",
"flag.ollama_host": "Ollama server hostname",
"flag.ollama_port": "Ollama server port",
"flag.model": "Embedding model name",
"ingest.short": "Ingest markdown files into Qdrant",
"ingest.long": "Ingest markdown files from a directory into Qdrant vector database. Chunks files, generates embeddings via Ollama, and stores for semantic search.",
"ingest.flag.collection": "Qdrant collection name",
"ingest.flag.recreate": "Delete and recreate collection",
"ingest.flag.chunk_size": "Characters per chunk",
"ingest.flag.chunk_overlap": "Overlap between chunks",
"query.short": "Query the vector database",
"query.long": "Search for similar documents using semantic similarity. Returns relevant chunks ranked by score.",
"query.flag.collection": "Qdrant collection name",
"query.flag.top": "Number of results to return",
"query.flag.threshold": "Minimum similarity score (0-1)",
"query.flag.category": "Filter by category",
"query.flag.format": "Output format (text, json, context)",
"collections.short": "List and manage collections",
"collections.long": "List available collections, show statistics, or delete collections from Qdrant.",
"collections.flag.list": "List all collections",
"collections.flag.stats": "Show collection statistics",
"collections.flag.delete": "Delete a collection"
}
},
"common": {
"status": {
"dirty": "dirty",
"clean": "clean",
"synced": "synced",
"up_to_date": "up to date"
},
"label": {
"done": "Done",
"success": "Success",
"error": "Error",
"warning": "Warning",
"info": "Info",
"fix": "Fix:",
"install": "Install:",
"summary": "Summary:",
"setup": "Setup:",
"config": "Config:",
"repo": "Repo:",
"test": "Running tests...",
"package": "Package:",
"coverage": "Coverage:"
},
"flag": {
"fix": "Auto-fix issues where possible",
"diff": "Show diff of changes",
"json": "Output as JSON",
"sarif": "Output as SARIF for GitHub Security tab",
"verbose": "Show detailed output",
"registry": "Path to repos.yaml registry file",
"coverage": "Generate coverage report",
"spec": "Path to OpenAPI specification file"
},
"progress": {
"running": "Running {{.Task}}...",
"checking": "Checking {{.Item}}..."
},
"result": {
"no_issues": "No issues found",
"all_passed": "All tests passed"
},
"success": {
"completed": "{{.Action}} successfully"
},
"error": {
"failed": "Failed to {{.Action}}",
"json_sarif_exclusive": "--json and --sarif flags are mutually exclusive"
},
"hint": {
"fix_deps": "Update dependencies to fix vulnerabilities"
},
"count": {
"succeeded": "{{.Count}} succeeded",
"failed": "{{.Count}} failed",
"skipped": "{{.Count}} skipped",
"passed": "{{.Count}} passed"
}
},
"error": {
"gh_not_found": "'gh' CLI not found. Install from https://cli.github.com/",
"registry_not_found": "No repos.yaml found",
"repo_not_found": "Repository '{{.Name}}' not found"
},
"lang": {
"de": "German",
"en": "English",
"es": "Spanish",
"fr": "French",
"zh": "Chinese"
},
"cli": {
"pass": "PASS",
"fail": "FAIL"
}
}