From crisp-tc
Generate, review, and debug C# code following the Crisp/Blue Yonder JDA Space Automation coding conventions. Use this skill whenever writing new C# scripts or class libraries for JDA Space Automation Pro, CKB (Category Knowledge Base), or related tooling. Covers project structure, Dapper database access, Serilog RollingFileAlternate logging, and the exact method/class patterns established in the ProductExport and SampleSpaceBRV template projects. Trigger any time the user asks to write, scaffold, or review C# code for these systems.
How this skill is triggered — by the user, by Claude, or both
Slash command
/crisp-tc:csharp-stylingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<context>
Read these before writing any code:
references/project-structure.md — Folder layout, .csproj setup, NuGet packages, namespace
conventions. Read first when scaffolding a new project.references/coding-style.md — Class structure, field naming, constructor patterns, method
signatures, models, error handling. Read for any code generation task.references/serilog-patterns.md — Exact Serilog RollingFileAlternate setup and usage.
Every method must log Start/Finish with try/catch.references/dapper-patterns.md — Dapper connection management, DynamicParameters, stored
procedure calls, ExecuteReader → DataTable, ExecuteScalar.references/wpf-patterns.md — WPF Window/code-behind boilerplate, event handler pattern,
DataGrid binding, file dialogs. Read any time a UI is needed.
references/wpf-patterns.md.MainWindow.xaml (layout) and MainWindow.xaml.cs (code-behind).CommandFactory and Logger — never instantiates them.DataGrid bound to DataTable.DefaultView.references/dapper-patterns.md and references/serilog-patterns.md.DataTable, string, bool, or List<T> — match the pattern for the return type.ILogger instead of Logger.Models/ folder.public string Name { get; set; }internal visibility unless cross-assembly.internal DataTable GetSomeData(string parameter)
{
_logger.Information($"Starting GetSomeData()");
var retVal = new DataTable();
try
{
// ... implementation ...
}
catch (Exception ex)
{
_logger.Error(ex, "GetSomeData Exception");
}
_logger.Information($"Finished GetSomeData() - retVal: {retVal.Rows.Count} rows");
return retVal;
}
_logger.Information($"Starting MethodName()") is the FIRST line of every method body._logger.Information($"Finished MethodName()") is immediately before the return.try { }.catch (Exception ex) logs with _logger.Error(ex, "MethodName Exception").private readonly IKBDbSupport _support;
private readonly Logger _logger;
private SqlConnection _connectionString;
private readonly string _customSchema;
Use GetDbConnection() / ConnectionCleanup() pattern. Never leave connections open.
Use DynamicParameters for stored procedures. See references/dapper-patterns.md.
Logger is Serilog.Core.Logger (not ILogger). Set up once in ConfigurationHelper.
See references/serilog-patterns.md for exact configuration.
If any UI is required, use WPF (Windows Presentation Foundation):
Views\ folder: MainWindow.xaml + MainWindow.xaml.cs.CommandFactory and Logger into Window constructors.System.Windows.MessageBox (not System.Windows.Forms).references/wpf-patterns.md for full boilerplate and rules.Follow the SampleSpaceBRV layout exactly:
HelperClasses/ — CommandFactory, ConfigurationHelper, CommonConstantsModels/ — simple POCOs, auto-properties onlySQL/Stored Procedures/, SQL/Tables/, SQL/Views/ — SQL scriptsLibraries/ — local JDA DLL referencesSee references/project-structure.md.
npx claudepluginhub gocrisp-proservices/techteam_skills --plugin crisp-tcProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.