بنقرة واحدة
koan-debugging
Framework-specific troubleshooting, boot report analysis, common error patterns
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Framework-specific troubleshooting, boot report analysis, common error patterns
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | koan-debugging |
| description | Framework-specific troubleshooting, boot report analysis, common error patterns |
Framework-specific debugging focuses on boot reports, provider elections, and auto-registration patterns rather than generic .NET troubleshooting.
# Check boot logs for framework initialization
docker logs koan-app --tail 20 --follow | grep "Koan:"
# Expected success patterns:
[INFO] Koan:discover postgresql: server=localhost... OK
[INFO] Koan:modules data→postgresql
[INFO] Koan:modules web→controllers
[INFO] Koan:modules ai→openai
[INFO] Koan:modules MyApp v1.0.0
Symptom: Service not found in DI container
System.InvalidOperationException: Unable to resolve service for type 'ITodoService'
Diagnosis:
KoanAutoRegistrar exists at /Initialization/KoanAutoRegistrar.csIKoanAutoRegistrarpublic (not internal)Solution:
// Verify KoanAutoRegistrar is discoverable
public sealed class KoanAutoRegistrar : IKoanAutoRegistrar
{
public string ModuleName => "MyApp";
public void Initialize(IServiceCollection services)
{
services.AddScoped<ITodoService, TodoService>();
}
public void Describe(BootReport report, IConfiguration cfg, IHostEnvironment env)
{
report.AddModule(ModuleName, "1.0.0");
}
}
Symptom: Module not discovered
[WARNING] Koan:modules MyModule not found
Diagnosis:
<ProjectReference> or <PackageReference> existsSolution:
<!-- Ensure project reference exists -->
<ProjectReference Include="..\MyModule\MyModule.csproj" />
Symptom: ID not generated
System.InvalidOperationException: Entity ID is required but not set
Diagnosis:
Entity<T, TKey> with custom key type requires manual ID assignmentEntity<T> (not Entity<T, TKey>)Solution:
// ✅ CORRECT: Auto GUID v7 generation
public class Todo : Entity<Todo>
{
public string Title { get; set; } = "";
}
// OR: Manual key management
public class NumericTodo : Entity<NumericTodo, int>
{
public override int Id { get; set; } // Must set manually
}
Symptom: Query not working
System.NotSupportedException: Provider does not support LINQ queries
Diagnosis:
Solution:
// Check capabilities first
var caps = Data<Todo, string>.QueryCaps;
if (caps.Capabilities.HasFlag(QueryCapabilities.LinqQueries))
{
return await Todo.Query(t => t.Completed);
}
else
{
var all = await Todo.All();
return all.Where(t => t.Completed).ToList();
}
Symptom: Provider not available
[ERROR] Koan:discover mongodb: connection failed
[INFO] Koan:modules data→json (fallback)
Diagnosis:
appsettings.jsonSolution:
// Verify configuration
{
"Koan": {
"Data": {
"Sources": {
"Default": {
"Adapter": "mongodb",
"ConnectionString": "mongodb://localhost:27017/myapp"
}
}
}
}
}
# Test MongoDB connectivity
docker ps | grep mongo
docker logs mongo-container
Symptom: Wrong provider elected
[INFO] Koan:modules data→json (expected: mongodb)
Diagnosis:
Solution:
// Force specific provider with attribute
[DataAdapter("mongodb")]
public class Todo : Entity<Todo>
{
public string Title { get; set; } = "";
}
// Or verify boot report
if (KoanEnv.IsDevelopment)
{
KoanEnv.DumpSnapshot(logger);
}
Symptom: N+1 query problem
// App making hundreds of queries
[DEBUG] Executing query: SELECT * FROM Todo WHERE Id = 'id1'
[DEBUG] Executing query: SELECT * FROM Todo WHERE Id = 'id2'
[DEBUG] Executing query: SELECT * FROM Todo WHERE Id = 'id3'
... (repeated hundreds of times)
Diagnosis:
Solution:
// ❌ WRONG: N queries
foreach (var id in ids)
{
var todo = await Todo.Get(id);
}
// ✅ CORRECT: 1 query
var todos = await Todo.Get(ids);
Symptom: Out of memory
System.OutOfMemoryException: Array dimensions exceeded supported range
Diagnosis:
.All() instead of streamingSolution:
// ❌ WRONG: Loads everything into memory
var allTodos = await Todo.All(); // 1 million records!
// ✅ CORRECT: Stream in batches
await foreach (var todo in Todo.AllStream(batchSize: 1000))
{
await ProcessTodo(todo);
}
Symptom: Container fails to start
[ERROR] Application startup exception
[ERROR] Unable to connect to database
Diagnosis:
Solution:
# docker-compose.yml
services:
app:
depends_on:
postgres:
condition: service_healthy
postgres:
healthcheck:
test: ["CMD-SHELL", "pg_isready -U koan"]
interval: 5s
timeout: 5s
retries: 5
// Use container hostname, not localhost
{
"Koan": {
"Data": {
"Sources": {
"Default": {
"ConnectionString": "Host=postgres;Database=myapp"
}
}
}
}
}
Auto-Registration Errors
KoanAutoRegistrar or assembly not loadedProvider Capability Mismatches
QueryCaps and implement graceful fallbacksEntity Pattern Violations
Entity<T> patterns properlyContext Routing Conflicts
// In Development environment
if (KoanEnv.IsDevelopment)
{
var logger = app.Services.GetRequiredService<ILogger<Program>>();
KoanEnv.DumpSnapshot(logger);
}
[INFO] Koan:discover postgresql: server=localhost;database=myapp;username=koan;password=*** OK
[INFO] Koan:discover mongodb: connection timeout FAILED
[INFO] Koan:modules data→postgresql (elected: connection successful)
[INFO] Koan:modules web→controllers (discovered: 5 controllers)
[INFO] Koan:modules ai→openai (api_key present, model: gpt-4)
[INFO] Koan:modules MyApp v1.0.0 (services: TodoService, EmailService)
[WARNING] Email SMTP configuration missing - using console fallback
What to look for:
OK status for expected providersdata→postgresql)FAILED status for critical services// Log capabilities for current provider
var caps = Data<Todo, string>.QueryCaps;
logger.LogInformation("Provider: {Provider}", caps.ProviderName);
logger.LogInformation("Capabilities: {Capabilities}", caps.Capabilities);
// Check specific capabilities
if (caps.Capabilities.HasFlag(QueryCapabilities.LinqQueries))
{
logger.LogInformation("Provider supports server-side LINQ");
}
if (caps.Capabilities.HasFlag(QueryCapabilities.Transactions))
{
logger.LogInformation("Provider supports transactions");
}
if (Todo.SupportsFastRemove)
{
logger.LogInformation("Provider supports TRUNCATE/DROP");
}
logger.LogInformation("Environment: {Env}", KoanEnv.CurrentEnvironment);
logger.LogInformation("IsDevelopment: {Dev}", KoanEnv.IsDevelopment);
logger.LogInformation("IsProduction: {Prod}", KoanEnv.IsProduction);
logger.LogInformation("InContainer: {Container}", KoanEnv.InContainer);
logger.LogInformation("AllowMagicInProduction: {Magic}", KoanEnv.AllowMagicInProduction);
# Container development workflow
./start.bat # Always use project start scripts
# View structured logs
docker logs koan-app --tail 20 --follow | grep "Koan:"
# Check assembly discovery
docker exec koan-app ls /app/*.dll
# Test database connectivity
docker exec postgres-container psql -U koan -d myapp -c "SELECT 1"
# Check Redis connectivity
docker exec redis-container redis-cli PING
Invoke this skill when:
docs/guides/troubleshooting/docs/guides/troubleshooting/bootstrap-failures.mddocs/guides/troubleshooting/adapter-connection-issues.mddocs/guides/deep-dive/bootstrap-lifecycle.mdAuto-registration via KoanAutoRegistrar, minimal Program.cs, "Reference = Intent" pattern
Chat endpoints, embeddings, RAG workflows, vector search
Aggregate boundaries, relationships, lifecycle hooks, value objects
Entity<T> patterns, GUID v7 auto-generation, static methods vs manual repositories
Transparent L1/L2 caching for Entity<T>, [Cacheable] attribute, cross-node coherence, per-request opt-out
Run a mandatory pre-implementation exploration workflow before writing production code in Koan (.NET/C#). Use when a task requires code changes and Codex must first map concerns/layers, read relevant files and docs, check existing constants and types, identify the closest existing pattern, plan exact code placement, and confirm architectural guardrails.