Skip to content
CAI
Software that uses CAICheck a score

TheAngryByrd/MiniScaffold

62.3

Weak · 24 September 2026

2.9k

lines of production code

F#

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a F\# project scaffolding and build infrastructure that provides standardized templates for console applications, libraries, and tests. It manages the build process using MSBuild and .NET SDK, replacing legacy FAKE scripts with modern targets for tooling, documentation, and versioning. The system also includes automated changelog generation and a comprehensive test suite to validate template generation and build targets.

How it got here

2017–2018 — Build system and infrastructure modernization

9 changes.

This period focused on modernizing the project's build infrastructure by migrating from FAKE scripts to MSBuild targets and replacing Paket with NuGet Central Package Management. Concurrently, the codebase was restructured to standardize configuration across Console and Library templates, while introducing new MyLib.1 components and their associated test suites.

2019–2023 — Build system and documentation overhaul

10 changes.

This period focused on modernizing the project's infrastructure, specifically migrating the build system from FAKE to MSBuild and upgrading to .NET 8.0. Concurrently, the team significantly expanded the documentation site with a new template, theme support, and automated changelog generation, while also introducing comprehensive test suites and F\# project templates.

Features

Add console application with CLI argument parsing and metadata display

A new console application (MyLib.1) is introduced, providing command-line interface support for displaying version and release information, as well as a 'hello' command that accepts a name and an optional favorite color for output formatting. The application uses the Argu library for argument parsing and reads assembly metadata (release date, Git hash, version) for the info command. The configuration file has been moved from the project root to the application directory.

Content/Console/src/MyLib.1 · high confidence

Added F\# project templates for console and library projects

New F\# project templates have been added to the content library. This includes a basic console application template (Program.fs) that prints a greeting, and a library template (Library.fs) that provides sample types, including a Person record, a FavoriteColor enum, and utility functions like helloPerson and add.

Content/ProjConsole, Content/ProjLib · high confidence

Added dark and light theme support for documentation

The documentation now supports switching between light and dark visual themes. This is enabled by new CSS files (\fsdocs-light.css\, \fsdocs-dark.css\) that define color variables and styling for each mode, along with a \theme-toggle.js\ script that manages the user's preference and persists it in local storage. The \fsdocs-main.css\ and \navbar-fixed-left.css\ files provide the base layout and sidebar styling, while \fsdocs-custom.css\ handles specific icon adjustments.

Content/Library/docsSrc/content, docsSrc/content · high confidence

Added new project-specific test templates

Introduced new project-specific templates for unit testing using the Expecto framework. The changes include a Main.fs file that configures the test runner to execute tests within the assembly, and a Tests.fs file that defines a sample test case verifying integer addition, providing a starting point for writing unit tests in the project.

Content/ProjTest · medium confidence

Automated CHANGELOG generation from RELEASE\_NOTES

A new F\# script (tools/releaseToChangelog.fsx) has been added to automatically convert RELEASE\_NOTES.md into a structured CHANGELOG.md. This tool parses release notes, maps categories (e.g., 'FEATURE:' to 'added'), and generates a changelog following the Keep a Changelog format with semantic versioning links.

tools · medium confidence

Introduce automated changelog and documentation build scripts

The build process now includes new F\# scripts (Changelog.fs, FsDocs.fs, build.fs) that automate the generation of release notes from a CHANGELOG.md file, manage versioning, and configure the FsDocs documentation tool. This change adds the capability to automatically update release notes with GitHub links and generate API documentation, replacing the previous manual or script-less approach.

Content/Library/build · high confidence

Introduces MyLib.1 library with core types and utility functions

A new library file, Library.fs, is added to MyLib.1, defining the MyLib.\_1 namespace. It introduces a FavoriteColor union type with Red, Yellow, and Blue cases, and a Person record type containing name, favorite number, color, and date of birth. The module provides a helloPerson function that formats a greeting using these fields, and an add function for integer addition with comprehensive XML documentation including parameters, remarks, and exception details.

Content/Library/src/MyLib.1 · high confidence

New documentation site template and index page

The documentation source now includes a new HTML template structure (\_template.html, \_menu-item\_template.html, \_menu\_template.html) and an index page (index.md) for MiniScaffold. The template introduces a Bootstrap 5-based layout with a responsive navbar, search box, theme toggle (light/dark/auto), and structured navigation for project references and external links. The index page provides an overview of MiniScaffold's features, installation instructions, and links to tutorials, how-to guides, explanations, and reference materials.

docsSrc · high confidence

Redesigned docs landing page with card-based navigation

The documentation site now features a new landing page layout that organizes content into four distinct cards: Tutorials, How-To Guides, Explanations, and an API Reference. Each card includes a title, description, and a right-aligned 'Get started' or 'Read' button. The underlying HTML templates (\_menu-item\_template.html, \_menu\_template.html, \_template.html) have been updated to support this structure, including a new dropdown menu system and a theme toggle in the navbar.

Content/Library/docsSrc · high confidence

Standardized project configuration and build infrastructure for the Console template

The Console template now includes a standardized set of configuration files to improve cross-platform consistency and developer experience. An .editorconfig enforces consistent formatting (4-space indentation, LF line endings) for source, project, and script files. A .gitattributes file ensures correct line endings (LF for code/config, CRLF for Windows scripts) and configures Git LFS for binary assets. A .gitignore file excludes common build artifacts and IDE files. Build infrastructure is standardized via Directory.Build.props and Directory.Build.targets, which integrate dotnet tool restoration (including Fantomas for F\# formatting) and dotnet watch support. Additionally, the solution uses the modern .slnx format, and global.json is configured to use .NET SDK 10.0 with feature roll-forward.

Content/Console · high confidence

Standardizes repository configuration and build infrastructure for the Library

The Library now includes a comprehensive set of repository configuration files to improve consistency and developer experience. An .editorconfig file enforces consistent code formatting and indentation rules across all file types, including specific settings for F\# and XML project files. A .gitattributes file is added to standardize line endings (LF for source and config files, CRLF for Windows scripts) and configure Git LFS for binary assets. Additionally, a .gitignore file is introduced to exclude common build artifacts, user-specific files, and IDE caches. The project also adopts Directory.Build.props and Directory.Build.targets to centralize MSBuild properties, package metadata, and build targets, while a .fantomasignore file ensures consistent F\# code formatting via the Fantomas tool.

Content/Library · high confidence

Behavioural changes

Build system refactored to .NET 8.0 and Fake 6.1.3

The build infrastructure has been upgraded to target .NET 8.0 and migrate to Fake version 6.1.3, introducing new build scripts (Changelog.fs, FsDocs.fs, build.fs) and a packages.lock.json file. This update modernizes the build tooling, ensuring compatibility with the latest .NET runtime and the latest Fake library features.

build · high confidence

Migrate build system from FAKE script to MSBuild targets

The project's build system has been refactored to replace the legacy FAKE (F\# Make) script with modern MSBuild targets. The old \build.fsx\ script, which handled restore, build, test, and pack steps, has been removed. In its place, \Directory.Build.props\ and \Directory.Build.targets\ now define build targets for tool restoration, code formatting (Fantomas), and watch support. The \build.sh\ and \build.cmd\ scripts have been simplified to invoke the new MSBuild-based build process via \dotnet run\ on the \build.fsproj\ project. This change also includes updating the \.gitignore\ to exclude new build artifacts and tool stores, and removing the old \RELEASE\_NOTES.md\ file in favor of \CHANGELOG.md\.

(repo-wide) · high confidence

Migrate build system from FAKE to MSBuild

The build process has been refactored to use MSBuild directly via build.fs and Changelog.fs, replacing the previous FAKE-based build scripts. This change updates the build infrastructure to handle versioning, changelog generation, and release notes using native MSBuild targets and F\# modules, improving build reliability and reducing external tooling dependencies.

Content/Console/build · high confidence

Removal of MyLib module

The MyLib module, which previously provided a 'hello' function for greeting users, has been removed from the codebase. This eliminates the associated functionality from the library.

src/MyLib · low confidence

Test coverage

Add comprehensive test suite for the MiniScaffold template; Added initial test suite for MyLib.1; Removed obsolete test file.

Dependencies

Migrate from Paket to NuGet Central Package Management

The project has replaced the Paket dependency manager with NuGet's built-in Central Package Management. This introduces a root \Directory.Packages.props\ file to define all package versions centrally, including FAKE 6.1.3, Expecto 10.2.2, and FSharp.Core 8.0.403. The legacy \paket.dependencies\ and \paket.lock\ files have been removed, and all project files now reference packages via the central configuration.

(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

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 71 → 62 (-8.3)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 62 → 54 (-8.1)
  • Architecture 96 → 95 (-0.6)
  • Maturity 89 → 55 (-33.9)
  • Readiness 77 → 84 (+7.3)
  • Security 73 → 82 (+8.1)

Resolved (52)

  • Dimension evaluation failed
  • Duplicated block (39 lines × 2) (Content/ProjLib/Library.fs)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • …and 32 more

New (20)

  • Duplicated block (56 lines × 2) (Content/Library/src/MyLib.1/Library.fs)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Low IaC: WD-DOCKER-0003 (.devcontainer/Dockerfile)
  • Low IaC: WD-DOCKER-0003 (Content/Console/.devcontainer/Dockerfile)
  • Low IaC: WD-DOCKER-0003 (Content/Library/.devcontainer/Dockerfile)
  • Medium: security finding (details withheld)
  • Medium: security finding (details withheld)
  • Orphaned files with no living knowledge

Architecture

  • Unchanged — 0 containers · 1 contexts · 0 edges

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

Survey your own repository

TheAngryByrd/MiniScaffold 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 24 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 bb58c5acb91c6bc34648ec8829d7866ffaa049e2 — 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-923689c465cf.