Skip to content
CAI
Software that uses CAICheck a score

goodtocode/semantickernel-microservice

51.5

Adequate · 21 September 2026

5.6k

lines of production code

C#

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Features

Add comprehensive Azure Infrastructure as Code (IaC) modules

The .azure directory now includes a full suite of Bicep templates for provisioning Azure resources, including App Service plans, Web Apps, API Management, Bot Service, Key Vault, and various connectivity connectors (FTP, SFTP, Office 365, SharePoint). This introduces a new, code-defined method for deploying the application's underlying Azure infrastructure, replacing or supplementing previous manual or template-based setup processes.

.azure · high confidence

Add configuration options for Azure OpenAI and OpenAI services

New configuration classes, AzureOpenAIOptions and OpenAIOptions, have been added to the project. These classes define the settings required to connect to Azure OpenAI (including endpoint, API key, and deployment name) and OpenAI (including model IDs for chat, text generation, embedding, moderation, image, and audio, plus the API key).

src/Infrastructure.SemanticKernel/Options · high confidence

Added SQL project structure and database scripts

The data layer now includes a new SQL Server project (Data.sqlproj) with associated build tasks, enabling the management of database schema objects. This includes SQL scripts for dropping tables across the database, such as \_\_EFMigrationsHistory, Actors, Tags, ChatMessages, ChatSessions, TextAudio, TextImages, TextPrompts, and TextResponses, alongside empty placeholder scripts for chat and multimedia data.

data · medium confidence

Added Semantic Kernel plugins for actors, chat sessions, and chat messages

New Semantic Kernel plugins have been introduced to expose actor lookups, chat session management, and message retrieval to AI agents. The ActorsPlugin provides structured responses for finding actors by ID or name. The ChatSessionsPlugin allows listing recent sessions and updating session titles. The ChatMessagesPlugin enables retrieving recent messages across all sessions or filtering by specific session IDs. These plugins integrate with the existing database context to provide data access for the AI assistant.

src/Infrastructure.SemanticKernel/Plugins · high confidence

Initial SQL Server database schema and persistence layer

The application now supports SQL Server as a database provider. This change introduces the \SemanticKernelContext\ and associated entity configurations for Actors, ChatSessions, ChatMessages, TextPrompts, TextResponses, TextImages, and TextAudio. A new migration (20260130074609\_InitialCreate) establishes the corresponding database tables, and the infrastructure registers the necessary dependency injection and database context services.

src/Infrastructure.SqlServer · high confidence

Initial project scaffolding and build infrastructure

The \src\ directory is initialized with foundational build and configuration files. This includes \.editorconfig\ for C\# code style and naming conventions, \Directory.Build.props\ and \Directory.Build.targets\ to centralize .NET project properties (such as C\# 12, nullable, and analyzers), and \nuget.config\ for package sources. Additionally, \build.cmd\ and \build.sh\ scripts are added to automate building and testing, while solution files (\SemanticKernelBlazor.sln\, \SemanticKernelMicroservice.sln\) define the project structure.

src · high confidence

Introduce Blazor presentation layer with authentication, UI components, and API client

Added the Blazor presentation layer, including a generated NSwag client for the backend API, authentication components (sign-in/sign-out, user profile, and claims info), and a suite of reusable UI components such as layout wrappers, typography labels, skeleton loaders, and a wizard stepper. The application now supports user identity management, token acquisition for downstream APIs, and a structured navigation and error-handling experience.

src/Presentation.Blazor · high confidence

Introduce new application-layer abstractions and commands for Actors, Chat, and Audio features

Added new interfaces in the \Abstractions\ folder (\IActorResponse\, \IActorsPlugin\, \IChatMessagesPlugin\, \IChatSessionsPlugin\, \ISemanticKernelContext\, \ISemanticPluginCompatible\, \IUserInfoRequest\) that define the application's service contracts. Additionally, implemented a comprehensive set of CQRS commands and queries for managing Actors (create, update, delete, get), Chat Sessions and Messages (create, delete, get), and Text-to-Audio generation (create, delete, get). These changes provide the underlying application logic and data access patterns for these specific features.

src/Core.Application · high confidence

New AI model definitions for OpenAI and Hugging Face

Added new C\# struct definitions for AI models, including OpenAI models (GPT-4, GPT-3.5 Turbo, embeddings, DALL-E, Whisper) and Hugging Face models (BERT, GPT-2, RoBERTa). These constants provide a centralized, typed way to reference specific AI model identifiers within the SemanticKernel infrastructure.

src/Infrastructure.SemanticKernel/AiModels · high confidence

New API endpoints for chat, audio, and actor management

The WebApi layer now exposes new controllers for managing chat sessions, chat messages, audio content, and user actors. Admin endpoints allow full CRUD operations (create, read, list, update, delete) for chat sessions and messages, as well as retrieval and creation of text-to-audio records. User-specific endpoints allow actors to retrieve their own chat sessions and profile information. These controllers utilize a Mediator pattern for command/query handling and integrate with an authentication pipeline that injects user identity claims (ObjectId, TenantId, Roles, etc.) into requests via a pipeline behavior.

src/Presentation.WebApi · high confidence

Test coverage

Added integration tests for Actor and Chat Session commands and queries

Added new integration tests for the Actor and Chat Session domains, covering Create, Delete, and Get (by external ID, chat session, and paginated list) operations. The tests verify success, not-found, and validation error scenarios using the Reqnroll framework.

src/Tests.Specs.Integration · high confidence

Dependencies

Upgrade to .NET 10 and modernize dependencies

The project has been upgraded to target .NET 10.0 across all components, including the core domain, application, infrastructure, and presentation layers. This update includes upgrading Microsoft packages such as Entity Framework Core, ASP.NET Core, and Identity to version 10.0.2, and adopting Microsoft.FluentUI for the Blazor UI. Additionally, the solution now uses Goodtocode.Mediator and Goodtocode.Validation instead of MediatR and FluentValidation, and integrates OpenTelemetry and Application Insights for observability.

(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 60 → 52 (-8.6)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 92 → 90 (-2.1)
  • Architecture 75 → 75 (-0.1)
  • Maturity 55 → 46 (-9.3)
  • Readiness 64 → 48 (-16.0)
  • Security 63 → 70 (+7.1)
  • Domain Modelling 68 (new)
  • Accessibility 61 → 53 (-8.0)
  • Performance 72 → 72 (+0.0)

Resolved (46)

  • BarePragmaDisable (src/Core.Application/Audio/CreateTextToAudioCommand.cs)
  • BarePragmaDisable (src/Core.Application/Image/CreateTextToImageCommand.cs)
  • BarePragmaDisable (src/Infrastructure.SemanticKernel/ConfigureServices.cs)
  • Bounded contexts not declared
  • Duplicated block (10 lines × 2) (src/Core.Application/ChatCompletion/GetMyChatSessionsPaginatedQueryValidator.cs)
  • Duplicated block (11 lines × 7) (src/Core.Application/Actor/GetActorChatSessionsPaginatedQueryValidator.cs)
  • Duplicated block (21 lines × 2) (src/Presentation.Blazor/Components/Skeleton/SkeletonTable.razor)
  • Duplicated block (21 lines × 2) (src/Presentation.Blazor/Pages/Chat/Components/NewChatMessageInput.razor)
  • Duplicated block (9 lines × 10) (src/Core.Application/Audio/GetTextAudiosPaginatedQueryValidator.cs)
  • Duplicated block (9 lines × 7) (src/Core.Application/Actor/GetActorChatSessionsQueryValidator.cs)
  • High CVE: System.Security.Cryptography.Xml 10.0.0
  • High CVE: System.Security.Cryptography.Xml 10.0.0
  • High CVE: System.Security.Cryptography.Xml 10.0.0
  • High CVE: System.Security.Cryptography.Xml 10.0.0
  • High CVE: System.Security.Cryptography.Xml 10.0.0
  • High CVE: System.Security.Cryptography.Xml 10.0.0
  • High CVE: System.Security.Cryptography.Xml 10.0.0
  • High CVE: System.Security.Cryptography.Xml 10.0.0
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • …and 26 more

New (197)

  • AnalyzerSeverityNone (src/Presentation.Blazor/Clients/.editorconfig)
  • CommentedOutCode (src/Infrastructure.SemanticKernel/ConfigureServices.cs)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Dormant codebase
  • Duplicated block (10 lines × 2) (src/Presentation.Blazor/Components/Skeleton/SkeletonList.razor)
  • Duplicated block (10 lines × 4) (src/Core.Application/Actor/GetActorChatSessionsPaginatedQueryValidator.cs)
  • Duplicated block (12–17 lines × 7) (src/Infrastructure.SqlServer/Persistence/Configurations/ActorsConfig.cs)
  • Duplicated block (13 lines × 7) (src/Core.Application/Actor/GetActorChatSessionsPaginatedQueryValidator.cs)
  • Duplicated block (21 lines × 2) (src/Presentation.Blazor/Components/Skeleton/SkeletonList.razor)
  • Duplicated block (34 lines × 2) (src/Presentation.Blazor/Pages/Chat/Components/NewChatMessageCard.razor)
  • Duplicated block (5 lines × 2) (src/Core.Application/Audio/GetTextAudiosPaginatedQuery.cs)
  • Duplicated block (5 lines × 2) (src/Core.Application/ChatCompletion/ChatMessageDto.cs)
  • Duplicated block (5 lines × 2) (src/Core.Application/ChatCompletion/GetChatMessagesPaginatedQuery.cs)
  • Duplicated block (5 lines × 2) (src/Core.Application/ChatCompletion/GetChatSessionsPaginatedQuery.cs)
  • Duplicated block (5 lines × 2) (src/Core.Application/Image/GetTextImagesPaginatedQuery.cs)
  • Duplicated block (5 lines × 2) (src/Core.Application/TextGeneration/GetTextPromptsPaginatedQuery.cs)
  • Duplicated block (6 lines × 2) (src/Presentation.Blazor/Pages/Chat/Components/ChatSessionList.razor)
  • Duplicated block (6 lines × 2) (src/Presentation.Blazor/Pages/Chat/Components/NewChatMessageCard.razor)
  • Duplicated block (7 lines × 2) (src/Core.Application/Actor/GetActorChatSessionsPaginatedQuery.cs)
  • …and 177 more

API surface

  • Unchanged — 31 HTTP endpoints

Architecture

  • Unchanged — 3 containers · 0 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

goodtocode/semantickernel-microservice 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 a897d5e3ba9a737314efea9d66ba1bf93288e470 — 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.