Skip to content
CAI
Software that uses CAICheck a score

go-nunu/nunu

55.1

Adequate · 21 September 2026

1.4k

lines of production code

Go

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Nunu is a Go-based CLI tool designed to scaffold and manage Go projects, offering commands to create new applications with various layout templates and generate code components like handlers, services, and repositories. It provides a development environment with a robust file-watching runner that supports configurable build flags and platform-specific process management, alongside an automated dependency injection generator for Wire. The system focuses on improving developer workflow through stable command structures, consistent error handling, and modern architectural patterns such as repository-based data access.

Features

Improved wire command usability with 'all' subcommand and better error handling

The \wire\ command now includes a new \all\ subcommand (\nunu wire all\) that automatically discovers and runs wire generation across all \wire.go\ files in the project, rather than requiring manual directory selection. The main \wire\ command has been refactored to use \RunE\ for proper error propagation, providing clearer error messages when no \wire.go\ is found or when the command fails. Additionally, the underlying file search logic now correctly identifies the project root using \go.mod\ and skips \vendor\ and \.git\ directories, ensuring more reliable discovery of wire files.

internal/command/wire · high confidence

New project command adds Admin, MCP Server, and Chat layout templates

The \nunu new\ command now offers additional project layout options: Admin (Gin APIs with Vue 3 UI and RBAC), MCP Server (Model Context Protocol with STDIO/SSE/HTTP transports), and Chat (real-time WebSocket/TCP examples). This change also includes a test ensuring that existing project directories are preserved if layout selection is cancelled.

internal/command/new · high confidence

Removals

Removal of the legacy 'nunu new' project creation command

The \internal/command/project/project.go\ file, which implemented the \nunu new\ CLI command for scaffolding new projects, has been deleted. This change removes the interactive workflow that previously cloned a template repository, prompted users for a project name and layout selection (Basic or Advanced), and performed post-creation steps like module renaming and \go mod tidy\. Users will no longer be able to create new projects using this specific command implementation.

internal/command/project · high confidence

Behavioural changes

CLI command refactoring and improved error handling

The CLI now uses consistent error-return patterns (RunE) instead of fatal logging for commands like create and upgrade, providing better error propagation. The create command has been restructured to support snake\_case naming, local template paths via a --tpl-path flag, and stricter validation of component names. Additionally, the 'dao' subcommand has been renamed to 'repository' to align with modern naming conventions.

internal/command/create · high confidence

CLI command structure refactored and stabilized

The Nunu CLI has been refactored to improve runtime stability and command organization. The root command is now explicitly exported as \CmdRoot\ with error and usage output silenced for cleaner execution. Several subcommands have been renamed or reorganized: the \project\ command is replaced by \new\, the \wire\ command is now \CmdWire\ with a new \wire all\ subcommand, and the \create\ command's subcommands (Handler, Service, Model) have been renamed to \CmdCreateHandler\, \CmdCreateService\, and \CmdCreateModel\ respectively, with \CreateDaoCmd\ removed in favor of \CreateRepositoryCmd\. The version string now dynamically pulls from the config package and reflects the updated copyright year range (2023-2026).

cmd · high confidence

CLI now reports errors and exits with a non-zero status on failure

The Nunu CLI's main entry point has been updated to capture and display errors returned by the command execution logic. Previously, errors were silently ignored; now, if a command fails, the error message is printed to standard error and the process exits with code 1, making it easier to diagnose issues when running Nunu commands.

(repo-wide) · high confidence

Improved project root detection and support for directory exclusion in CLI commands

The internal helper package now provides robust, error-aware detection of the Go module root by walking up the directory tree to find go.mod, rejecting invalid files, and preventing fallback to parent modules when validating a specific directory. Additionally, the \nunu run\ command now supports \excludeDir\ and \includeExt\ flags, allowing users to filter which directories are scanned for the main function using gitignore-style patterns, with proper handling of syntax errors and vendor/generated directories.

internal/pkg · high confidence

Redesigned \`nunu run\` command with configurable file watching and build flags

The \nunu run\ command has been rewritten to provide a more robust and configurable development experience. Users can now filter watched files using the new \--excludeDir\ flag (accepting comma-separated gitignore-style patterns) and \--includeExt\ flag (specifying file extensions to monitor), ensuring that irrelevant files like \node\_modules\ do not trigger unnecessary reloads. A new \--buildFlags\ flag allows passing arbitrary arguments to the Go build command, such as \-tags cse\. The command now automatically locates the main package, supports selecting from multiple candidates via an interactive prompt, and implements debounced file watching to prevent rapid-fire restarts during bursts of file changes. Platform-specific process management has been consolidated into \run\_unix.go\ and \run\_windows.go\ to handle process groups and termination correctly across operating systems.

internal/command/run · high confidence

Refactored code generation templates to use SnakeCase and repository pattern

The code generation templates in the \tpl/create\ directory have been updated to support SnakeCase naming conventions and a new repository-based architecture. The model template now generates a \TableName\ method using the struct's SnakeCase name. The service template has shifted from a concrete struct with DAO dependencies to an interface that depends on a repository, and the handler template now accepts the service interface rather than a concrete service struct. Additionally, the old DAO template has been removed and replaced by a new repository template that defines the repository interface and implementation.

tpl · high confidence

Version bump to 1.1.6 and new layout templates

The application version is updated to 1.1.6. New repository URLs are added for admin, chat, MCP, and monorepo layout templates, and the default exclude/include directories for the run command are now configurable via config variables.

config · high confidence

Dependencies

Updated Go version and dependencies

The project now targets Go 1.25.8 and has updated several dependencies, including survey/v2 to v2.3.7, cobra to v1.10.2, and fsnotify to v1.10.1. New dependencies such as doublestar/v4, lancet/v2, and go-shellquote have been added, alongside various indirect updates to golang.org/x packages and other utilities.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 55.

Lenses

  • Code Health 93
  • Architecture 69
  • Maturity 63
  • Readiness 36
  • Security 98

Changes since last survey

  • 76 commits — 63 feature/other, 13 fixes

By area

  • (root) — 21 commits
  • internal/command — 18 commits
  • (repo) — 13 commits
  • docs/en — 7 commits
  • tpl/create — 6 commits
  • config/config.go — 4 commits
  • docs/zh — 4 commits
  • .github/assets — 2 commits
  • docs/pt — 1 commit

Notable commits

  • fix: Merge pull request #102 from SimonFoobar648/fix/star-history-chart
  • fix: fix error word
  • fix: fix: change handler.tpl error code
  • fix: fix: excludeDir error
  • fix: fix: harden hot reload for production
  • fix: fix: restore broken star history chart in README
  • fix: fix: rm runCreate Println
  • fix: fix: svc and repo add ctx
  • fix: fix: update chat description
  • fix: fix: update copyright year to 2026 in LICENSE and root.go
  • fix: nunu: fix cmd windows import time
  • fix: nunu: fix new ProjectName
  • fix: nunu: fix run RunCmd.Long
  • change: Merge pull request #100 from go-nunu/agent/stable-v1.1.6
  • change: Merge pull request #101 from go-nunu/agent/docs-nunu-skills
  • change: Merge pull request #16 from jeff2go/main
  • change: Merge pull request #22 from silver-brother/main
  • change: Merge pull request #25 from ch3nnn/internal-command
  • change: Merge pull request #31 from RogueCultivators/main
  • change: Merge pull request #35 from lorenzohee/main
  • …and 56 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

go-nunu/nunu was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit f20c775987517384ad2c931222a4bbd7b2dffbdb — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.