Skip to main content

shiny-web-hosting

Generate and configure Shiny Web Hosting for .NET - modular ASP.NET Core application configuration with IWebModule for clean service registration and middleware setup

インストールへ移動

ソース情報

リポジトリ
shinyorg/templates
ソースの最終更新活動
2026年4月2日 01:50
検出された SKILL.md の言語
英語
スター
155
フォーク
15

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
shiny-web-hosting
description
Generate and configure Shiny Web Hosting for .NET - modular ASP.NET Core application configuration with IWebModule for clean service registration and middleware setup
auto_invoke
true
triggers
["IWebModule","AddInfrastructureModules","UseInfrastructureModules","Shiny.Extensions.WebHosting","WebExtensions"]
# Shiny Web Hosting Skill You are an expert in Shiny Extensions Web Hosting, a .NET library providing modular ASP.NET Core application configuration via `IWebModule`. ## When to Use This Skill Invoke this skill when the user wants to: - Create ASP.NET web modules with `IWebModule` - Set up web hosting with modular service/middleware registration - Break apart a monolithic `Program.cs` into focused module classes ## Library Overview **Documentation**: https://shinylib.net/extensions/webhost/ **Repository**: https://github.com/shinyorg/Shiny.Extensions **Package**: `Shiny.Extensions.WebHosting` **Namespace**: `Shiny` ## IWebModule Interface ```csharp public interface IWebModule { void Add(WebApplicationBuilder builder); // Register services void Use(WebApplication app); // Configure middleware } ``` ## Creating Web Modules Each module implements `IWebModule` with two methods: - **`Add(WebApplicationBuilder builder)`** — register services, configuration, and anything before `Build()` - **`Use(WebApplication app)`** — configure middleware, endpoints, and anything after `Build()` ```csharp public class SwaggerModule : IWebModule { public void Add(WebApplicationBuilder builder) { builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); } public void Use(WebApplication app) { if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } } } public class CorsModule : IWebModule { public void Add(WebApplicationBuilder builder) { builder.Services.AddCors(options => { options.AddDefaultPolicy(policy => policy.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()); }); } public void Use(WebApplication app) { app.UseCors(); } } public class AuthModule : IWebModule { public void Add(WebApplicationBuilder builder) { builder.Services.AddAuthentication().AddJwtBearer(); builder.Services.AddAuthorization(); } public void Use(WebApplication app) { app.UseAuthentication(); app.UseAuthorization(); } } ``` ## Setup ```csharp using Shiny; var builder = WebApplication.CreateBuilder(args); builder.AddInfrastructureModules( new SwaggerModule(), new CorsModule(), new AuthModule() ); var app = builder.Build(); app.UseInfrastructureModules(); app.Run(); ``` ## API ```csharp public static class WebExtensions { // Register module instances and call Add() on each public static WebApplicationBuilder AddInfrastructureModules( this WebApplicationBuilder builder, params IEnumerable<IWebModule> modules); // Call Use() on each module to configure middleware public static WebApplication UseInfrastructureModules( this WebApplication app, params IEnumerable<IWebModule> modules); } ``` ## Code Generation Instructions - One module per concern (CORS, auth, swagger, health checks, etc.) - Keep `Add()` for service registration and `Use()` for middleware configuration - Pass explicit module instances to `AddInfrastructureModules()` — no assembly scanning ## Best Practices 1. **One concern per module** - Create separate modules for CORS, auth, swagger, health checks, etc. 2. **Order matters for Use()** - Middleware order in `Use()` follows the order modules are registered 3. **Fully AOT-compatible** - No reflection or assembly scanning, explicit module registration only
GitHubで見る