HagiCode.Libs.Prompts
0.3.1-dev.90.1
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
<PackageReference Include="HagiCode.Libs.Prompts" Version="0.3.1-dev.90.1" />
<PackageVersion Include="HagiCode.Libs.Prompts" Version="0.3.1-dev.90.1" />
<PackageReference Include="HagiCode.Libs.Prompts" />
paket add HagiCode.Libs.Prompts --version 0.3.1-dev.90.1
#r "nuget: HagiCode.Libs.Prompts, 0.3.1-dev.90.1"
#:package HagiCode.Libs.Prompts@0.3.1-dev.90.1
#addin nuget:?package=HagiCode.Libs.Prompts&version=0.3.1-dev.90.1&prerelease
#tool nuget:?package=HagiCode.Libs.Prompts&version=0.3.1-dev.90.1&prerelease
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
IPromptCatalogfor effective prompt enumeration, locale-aware resolution, and reload.IPromptDiagnosticsServicefor orphan file reporting and scenario-locale completeness validation.IPromptRendererfor 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 rightnot valueformatDate valuejson valuejoin values separator
Migration mapping from hagicode-core
FilePromptLoaderV2→FilePromptCatalogHandlebarsTemplateRenderer→HandlebarsPromptRendererTemplateLinkResolverlink/orphan checks →PromptFileLocatorplusIPromptDiagnosticsServicePromptLoaderStatisticsand startup completeness checks →PromptCatalogDiagnosticsplusPromptCompletenessReport
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 | Versions 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. |
-
net10.0
- Handlebars.Net (>= 2.1.6)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.2)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.2)
- Microsoft.Extensions.Options (>= 10.0.2)
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 |