HagiCode.Libs.Prompts 0.3.1-dev.90.1

This is a prerelease version of HagiCode.Libs.Prompts.
dotnet add package HagiCode.Libs.Prompts --version 0.3.1-dev.90.1
                    
NuGet\Install-Package HagiCode.Libs.Prompts -Version 0.3.1-dev.90.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="HagiCode.Libs.Prompts" Version="0.3.1-dev.90.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="HagiCode.Libs.Prompts" Version="0.3.1-dev.90.1" />
                    
Directory.Packages.props
<PackageReference Include="HagiCode.Libs.Prompts" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add HagiCode.Libs.Prompts --version 0.3.1-dev.90.1
                    
#r "nuget: HagiCode.Libs.Prompts, 0.3.1-dev.90.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package HagiCode.Libs.Prompts@0.3.1-dev.90.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=HagiCode.Libs.Prompts&version=0.3.1-dev.90.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=HagiCode.Libs.Prompts&version=0.3.1-dev.90.1&prerelease
                    
Install as a Cake Tool

HagiCode.Libs.Prompts

HagiCode.Libs.Prompts extracts the file-backed Handlebars prompt management core from hagicode-core into a reusable .NET 10 package. It loads {scenario}.{locale}.json plus {scenario}.{locale}.hbs pairs, merges an optional override directory, resolves locale fallback, caches compiled templates, and reports diagnostics without forcing host applications to read prompt files directly.

What is included

  • IPromptCatalog for effective prompt enumeration, locale-aware resolution, and reload.
  • IPromptDiagnosticsService for orphan file reporting and scenario-locale completeness validation.
  • IPromptRenderer for Handlebars rendering, syntax validation, built-in helpers, and compiled-template cache invalidation.
  • AddHagiCodePrompts() for dependency injection registration.

Install

dotnet add package HagiCode.Libs.Prompts

Configuration

using HagiCode.Libs.Prompts;
using HagiCode.Libs.Prompts.Configuration;
using Microsoft.Extensions.DependencyInjection;

var services = new ServiceCollection();
services.AddHagiCodePrompts(options =>
{
    options.RootPath = "/app/Resources/Prompts";
    options.OverridePath = "/app/Resources/OverridePrompts";
    options.DefaultLocale = "en-US";
    options.TemplateValidationMode = PromptTemplateValidationMode.Strict;
});

await using var provider = services.BuildServiceProvider();
var catalog = provider.GetRequiredService<IPromptCatalog>();
var diagnostics = provider.GetRequiredService<IPromptDiagnosticsService>();
var renderer = provider.GetRequiredService<IPromptRenderer>();

When OverridePath is omitted, the library defaults to a sibling OverridePrompts directory next to RootPath, matching the current backend convention.

Minimal usage

var prompt = catalog.Resolve("openspec-v1-apply", "fr-FR");
if (prompt is null)
{
    return;
}

Console.WriteLine(prompt.UsedFallback);      // true when it fell back to DefaultLocale
Console.WriteLine(prompt.Definition.Source); // Default or Override

var text = renderer.Render(prompt.Definition, new Dictionary<string, object?>
{
    ["change_name"] = "extract-hbs-prompt-management-to-libs"
});

Diagnostics

var snapshot = diagnostics.GetSnapshot();
foreach (var issue in snapshot.Issues)
{
    Console.WriteLine($"{issue.Kind}: {issue.Message}");
}

var completeness = diagnostics.ValidateCompleteness(
    ["openspec-v1-apply", "openspec-v1-archive"],
    ["en-US", "zh-CN"]);

ValidateCompleteness() returns every missing scenario-locale combination so hosts can fail startup, emit audit logs, or expose an admin report.

Built-in helpers

The default Handlebars renderer registers these helpers:

  • eq left right
  • not value
  • formatDate value
  • json value
  • join values separator

Migration mapping from hagicode-core

  • FilePromptLoaderV2FilePromptCatalog
  • HandlebarsTemplateRendererHandlebarsPromptRenderer
  • TemplateLinkResolver link/orphan checks → PromptFileLocator plus IPromptDiagnosticsService
  • PromptLoaderStatistics and startup completeness checks → PromptCatalogDiagnostics plus PromptCompletenessReport

This package intentionally stays free of ABP and web-layer DTOs so hagicode-core can add an adapter layer later without dragging backend-specific contracts into shared libraries.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.3.1-dev.90.1 48 6/19/2026
0.3.0 95 6/8/2026
0.2.6-dev.88.1 54 6/7/2026
0.2.6-dev.87.1 55 6/7/2026
0.2.6-dev.86.1 44 6/7/2026
0.2.6-dev.85.1 44 6/7/2026
0.2.6-dev.84.1 51 6/7/2026
0.2.6-dev.83.1 46 6/6/2026
0.2.6-dev.82.1 52 6/6/2026
0.2.6-dev.81.1 44 6/4/2026
0.2.6-dev.80.1 46 6/2/2026