Factory.ai
All Reports

GitHub CLI

Go

Strong Testing

GitHub CLI reaches Level 3 with 63% Testing pass rate. Currently becoming autonomous-capable with 31/64 criteria passing (48%). Key areas for improvement include the opportunities listed below.

Strengths

01
Dead Code Detection
'unused' linter enabled in .golangci.yml detects unused constants, variables, functions, and types
02
Formatter
gofmt enabled in .golangci.yml formatters section
03
Lint Config
.golangci.yml configured with multiple linters (govet, ineffassign, unused, gocritic, etc.)

Opportunities

01
Cyclomatic Complexity
Add complexity analysis to identify and refactor overly complex functions.
02
Feature Flag Infrastructure
Add feature flags to enable safer deployments and gradual rollouts.
03
Test Coverage Thresholds
Establish minimum test coverage thresholds to prevent regression and maintain code quality.

All Criteria

Style & Validation5/11 (45%)
—code_modularizationNo module boundary enforcement detected; not critical for CLI tool architecture
✗cyclomatic_complexityNo complexity analyzers (gocyclo, go-critic complexity rules) detected in linter configuration
✓dead_code_detection'unused' linter enabled in .golangci.yml detects unused constants, variables, functions, and types
✗duplicate_code_detectionNo duplicate code detection tools (jscpd, dupl for Go) configured in CI or pre-commit
✓formattergofmt enabled in .golangci.yml formatters section
✗large_file_detectionNo Git LFS in .gitattributes, no file size hooks or CI checks detected for large file prevention
✓lint_config.golangci.yml configured with multiple linters (govet, ineffassign, unused, gocritic, etc.)
—n_plus_one_detectionCLI tool without database/ORM usage; N+1 query detection not applicable
✗naming_consistencyNo naming convention enforcement in linter config; no golint or revive naming rules enabled
✗pre_commit_hooksNo pre-commit hooks (husky, .pre-commit-config.yaml) detected in repository
✓strict_typingGo enforces strict static typing by design; no optional type annotations
✗tech_debt_trackingTODO/FIXME comments exist but no automated scanner or enforcement (e.g., linter rules, CI jobs) to track them
✓type_checkGo is statically typed by default; go.mod requires go >= 1.25.0
Build System8/13 (62%)
✗agentic_developmentNo agent co-authorship in recent git log; no factory-droid[bot] or similar agent identifiers found
✗automated_pr_reviewNo automation generating review comments on PRs; only status checks run but no review content generation detected
✓build_cmd_docBuild commands documented in Makefile and CONTRIBUTING.md: 'make' for Unix, 'go run script/build.go' for Windows
✗build_performance_trackingNo build caching configuration (turbo, nx) or build metrics tracking detected in workflows
—dead_feature_flag_detectionPrerequisite failed: no feature flag infrastructure exists
✓deployment_frequencyReleases every 1-2 weeks: v2.85.0 (Jan 14), v2.83.2 (Dec 10), v2.83.1 (Nov 13) - multiple deploys per week average
✓deps_pinnedgo.sum exists with pinned dependency versions for reproducible builds
✗fast_ci_feedbackLatest CI run took ~11 minutes (00:47:53Z to 00:59:04Z), exceeding the 10-minute threshold
✗feature_flag_infrastructureNo feature flag system (LaunchDarkly, Statsig, Unleash) detected in dependencies or configuration
—heavy_dependency_detectionNot a bundled web application; bundle size analysis not applicable to CLI binary
—monorepo_toolingSingle-application repository; monorepo tooling not needed
—progressive_rolloutCLI tool distributed via package managers; progressive rollout not applicable to this distribution model
✓release_automationdeployment.yml workflow fully automates releases with GoReleaser, attestation generation, and artifact publishing
✓release_notes_automationGoReleaser configured in deployment.yml workflow automates release creation and changelog generation
—rollback_automationCLI tool without infrastructure deployment; rollback automation not applicable
✓single_command_setupCONTRIBUTING.md documents single command setup: 'make' (Unix) or 'go run script/build.go' (Windows)
✓unused_dependencies_detection'go mod tidy' verification in lint.yml workflow ensures no unused dependencies in go.mod
✓vcs_cli_toolsgh CLI installed and authenticated (verified with 'gh auth status')
—version_drift_detectionSingle-application repository; version drift detection not applicable
Testing5/8 (63%)
✗flaky_test_detectionNo test retry configuration (pytest-rerunfailures equivalent) or flaky test tracking tools detected
✓integration_tests_existacceptance/ directory with acceptance_test.go and integration tests with -tags=integration in CI
✗test_coverage_thresholdsNo coverage thresholds enforced; no --cov-fail-under or Codecov/Coveralls PR blocking detected
✓test_isolationTests run with -race flag in go.yml workflow, enabling parallel execution and race detection
✓test_naming_conventionsGo enforces *_test.go naming convention by design; all test files follow this pattern
✗test_performance_trackingNo test timing output (--verbose, --durations) or test analytics platform integration detected
✓unit_tests_exist300+ *_test.go files present throughout pkg/, internal/, and api/ directories
✓unit_tests_runnableTests runnable via 'go test ./...' documented in CONTRIBUTING.md; tests discoverable with -run=^$
Documentation3/7 (43%)
✗agents_mdNo AGENTS.md file exists at repository root to document setup for autonomous agents
✗agents_md_validationPrerequisite failed: AGENTS.md does not exist
—api_schema_docsCLI tool without HTTP API endpoints; OpenAPI/Swagger schema not applicable
✓automated_doc_generationcmd/gen-docs tool automatically generates manual pages from source code
✓documentation_freshnessREADME.md and docs/ directory updated within last 180 days (verified with git log)
✓readmeREADME.md exists with comprehensive installation, usage, and contribution instructions
✗service_flow_documentedNo architecture diagrams (.mermaid, .puml) or service dependency documentation found in docs/
✗skillsNo skills directories (.factory/skills/, .skills/, .claude/skills/) found in repository
Dev Environment1/2 (50%)
—database_schemaCLI tool without database usage; schema definition files not applicable
✓devcontainer.devcontainer/devcontainer.json configured with Go 1.25 image and golang.go extension
—devcontainer_runnabledevcontainer CLI not installed to verify container builds successfully
✗env_templateNo .env.example file exists and environment variables not documented in README or docs
—local_services_setupCLI tool without external service dependencies (Postgres, Redis, etc.); local services not needed
Debugging & Observability2/9 (22%)
✗alerting_configuredNo alerting systems (PagerDuty, OpsGenie) detected; CLI tool without production alerting
—circuit_breakersNo external service dependencies requiring circuit breaker pattern for CLI tool
—code_quality_metricsRequires GitHub admin API access to verify code quality metrics (skipped).
✗deployment_observabilityNo monitoring dashboard references (Datadog, Grafana links) in docs or code comments
✓distributed_tracinggithub.com/opentracing/opentracing-go v1.2.0 present in go.mod for trace propagation
✗error_tracking_contextualizedNo error tracking services (Sentry, Bugsnag, Rollbar) configured in dependencies
—health_checksCLI tool not deployed as a service; health check endpoints not applicable
✗metrics_collectionNo metrics instrumentation (Datadog, Prometheus, CloudWatch) detected in dependencies or code
✗profiling_instrumentationNo continuous profiling (Pyroscope, Parca) or APM profiling configured
✗runbooks_documentedNo runbooks directory or external runbook references found in README, AGENTS.md, or docs/
✓structured_logginggithub.com/sirupsen/logrus v1.9.3 present in go.mod dependencies
Security5/8 (63%)
✓automated_security_reviewCodeQL workflow generates security analysis reports with SARIF output filtered for third-party code
✓branch_protectionActive ruleset 'Copilot Code Review' detected via API enforcing branch protection rules
✓codeowners.github/CODEOWNERS exists with team assignments (@cli/code-reviewers, @cli/codespaces, @cli/package-security)
—dast_scanningCLI tool without web endpoints; DAST scanning not applicable
✓dependency_update_automationDependabot configured in .github/dependabot.yml for daily updates of go modules and GitHub Actions
✓gitignore_comprehensive.gitignore excludes .envrc, vendor/, dist/, .vscode, .idea, .DS_Store, and build artifacts
✗log_scrubbingNo log sanitization mechanisms (redact, mask patterns) detected in logging configuration
—pii_handlingCLI tool without personal data processing; PII handling tooling not applicable
—privacy_complianceCLI tool without end-user data collection; privacy compliance infrastructure not applicable
—secret_scanningRequires GitHub admin API access to verify secret scanning configuration (skipped).
✗secrets_managementNo cloud secrets manager integration detected; no .env.example template for secrets documentation
Task Discovery2/4 (50%)
✓backlog_healthAll 50 open issues have labels and descriptive titles >10 characters (100% pass rate)
✗issue_labeling_systemNo clear priority labels (P0-P3, critical/high/medium/low) or consistent area labels detected
✓issue_templatesMultiple issue templates in .github/ISSUE_TEMPLATE/ (bug_report.md, feedback.md, submit-a-request.md, etc.)
✗pr_templatesNo .github/pull_request_template.md found to guide PR descriptions
Product & Analytics0/2 (0%)
✗error_to_insight_pipelineNo error tracking integration with issue creation (Sentry-GitHub integration) detected
✗product_analytics_instrumentationNo product analytics (Mixpanel, Amplitude, PostHog) instrumentation detected

Ready to build the software of the future?

Start building

Arrow Right Icon