JD.SemanticKernel.Extensions.Compaction
0.1.100
See the version list below for details.
dotnet add package JD.SemanticKernel.Extensions.Compaction --version 0.1.100
NuGet\Install-Package JD.SemanticKernel.Extensions.Compaction -Version 0.1.100
<PackageReference Include="JD.SemanticKernel.Extensions.Compaction" Version="0.1.100" />
<PackageVersion Include="JD.SemanticKernel.Extensions.Compaction" Version="0.1.100" />
<PackageReference Include="JD.SemanticKernel.Extensions.Compaction" />
paket add JD.SemanticKernel.Extensions.Compaction --version 0.1.100
#r "nuget: JD.SemanticKernel.Extensions.Compaction, 0.1.100"
#:package JD.SemanticKernel.Extensions.Compaction@0.1.100
#addin nuget:?package=JD.SemanticKernel.Extensions.Compaction&version=0.1.100
#tool nuget:?package=JD.SemanticKernel.Extensions.Compaction&version=0.1.100
JD.SemanticKernel.Extensions
An extensible toolkit for Microsoft Semantic Kernel that bridges Claude Code skills, plugins, and hooks into SK applications, and adds context management primitives (compaction, semantic memory) for building production-grade AI agents.
Features
- 📝 Skills — Parse
SKILL.mdfiles (YAML frontmatter + markdown) intoKernelFunctionorPromptTemplate - 🔗 Hooks — Map Claude Code lifecycle events (
PreToolUse,PostToolUse, etc.) to SK'sIFunctionInvocationFilterandIPromptRenderFilter - 📦 Plugins — Load
.claude-plugin/directories with skills, hooks, and MCP configs - 🔌 MCP — Discover MCP servers from Claude Code, Claude Desktop, VS Code, Codex, Copilot, and JD canonical config with a PatternKit-backed provider chain
- 🗜️ Compaction — Transparent context window management with configurable triggers and hierarchical summarization
- 🧠 Memory — Semantic memory with MMR reranking, temporal decay scoring, and query expansion
- 💾 Memory.Sqlite — SQLite-backed persistent memory storage
- 🎯 Fluent API —
UseSkills(),UseHooks(),UsePlugins(),AddCompaction(),AddSemanticMemory()extension methods
Packages
Quick Start
dotnet add package JD.SemanticKernel.Extensions
Load Skills
using JD.SemanticKernel.Extensions.Skills;
var kernel = Kernel.CreateBuilder()
.AddOpenAIChatCompletion("gpt-4o", apiKey)
.UseSkills("./skills/") // Scans for SKILL.md files
.Build();
A SKILL.md file follows the Claude Code / AgentSkills.io format:
---
name: code-reviewer
description: Reviews code for quality issues
allowed-tools: [Read, Grep, Glob]
---
# Code Reviewer
Review the provided code for:
1. Bug risks
2. Security vulnerabilities
3. Performance issues
Input: $ARGUMENTS
Configure Hooks
using JD.SemanticKernel.Extensions.Hooks;
var kernel = Kernel.CreateBuilder()
.AddOpenAIChatCompletion("gpt-4o", apiKey)
.UseHooks(hooks =>
{
hooks.OnFunctionInvoking("Bash|Execute", async ctx =>
{
Console.WriteLine($"Validating: {ctx.Function.Name}");
});
hooks.OnFunctionInvoked("Write|Edit", async ctx =>
{
Console.WriteLine($"Post-edit hook: {ctx.Function.Name}");
});
hooks.OnPromptRendering(async ctx =>
{
Console.WriteLine("Prompt is about to render...");
});
})
.Build();
Load Plugins
using JD.SemanticKernel.Extensions.Plugins;
var kernel = Kernel.CreateBuilder()
.AddOpenAIChatCompletion("gpt-4o", apiKey)
.UsePlugins("./my-plugin/") // Single plugin directory
.UseAllPlugins("./plugins/") // All plugins in directory
.Build();
Plugin directories follow the .claude-plugin/ convention:
my-plugin/
├── .claude-plugin/
│ └── plugin.json # Manifest
├── skills/
│ └── reviewer/SKILL.md # Skills
├── hooks/
│ └── hooks.json # Hooks
└── .mcp.json # MCP servers (future)
Meta-Package (All-in-One)
using JD.SemanticKernel.Extensions;
var kernel = Kernel.CreateBuilder()
.AddOpenAIChatCompletion("gpt-4o", apiKey)
.AddClaudeCodeSkills("./skills/")
.AddClaudeCodePlugin("./my-plugin/")
.AddClaudeCodeHooks(hooks => hooks.OnFunctionInvoking(".*", _ => Task.CompletedTask))
.Build();
Context Compaction
Automatically compress chat history when it grows too large, preserving key context while staying within token limits.
using JD.SemanticKernel.Extensions.Compaction;
var kernel = Kernel.CreateBuilder()
.AddOpenAIChatCompletion("gpt-4o", apiKey)
.Build();
// Register compaction as transparent middleware
kernel.Services.AddCompaction(options =>
{
options.TriggerMode = CompactionTriggerMode.ContextPercentage;
options.Threshold = 0.70; // Compact at 70% of context window
options.MaxContextWindowTokens = 128_000; // Model's context limit
options.PreserveLastMessages = 10; // Always keep recent messages
options.MinMessagesBeforeCompaction = 5; // Don't compact short conversations
});
Trigger modes:
TokenThreshold— Compact when estimated tokens exceed an absolute countContextPercentage— Compact when usage exceeds a percentage of the context window
Token estimation:
var tokens = TokenEstimator.EstimateTokens("Hello world"); // ~2 tokens
var historyTokens = TokenEstimator.EstimateTokens(chatHistory); // Includes overhead
Semantic Memory
Store, search, and retrieve context-relevant information with embedding-based similarity, MMR diversity reranking, and temporal decay scoring.
using JD.SemanticKernel.Extensions.Memory;
// Register with in-memory backend
kernel.Services.AddSemanticMemory(options =>
{
options.DefaultSearchOptions = new MemorySearchOptions
{
TopK = 10,
MinRelevanceScore = 0.7,
UseMmrReranking = true,
MmrLambda = 0.7, // Balance relevance vs diversity
UseTemporalDecay = true,
TemporalDecayRate = 0.01,
};
});
SQLite persistence:
using JD.SemanticKernel.Extensions.Memory.Sqlite;
kernel.Services.AddSqliteMemoryBackend("Data Source=memory.db");
Key capabilities:
- MMR reranking — Maximal Marginal Relevance for diverse search results
- Temporal decay — Recent memories rank higher with configurable decay rate
- Query expansion — Automatically generate alternative queries for broader recall
- Pluggable backends —
InMemoryBackend(default),SqliteMemoryBackend, or implementIMemoryBackend
Hook Event Mapping
| Claude Code Event | SK Filter |
|---|---|
PreToolUse |
IFunctionInvocationFilter.OnFunctionInvokingAsync |
PostToolUse |
IFunctionInvocationFilter.OnFunctionInvokedAsync |
UserPromptSubmit |
IPromptRenderFilter.OnPromptRenderingAsync |
Stop / SubagentStop |
IAutoFunctionInvocationFilter |
SessionStart / SessionEnd |
IExtensionEventBus (custom) |
PreCompact / Notification |
IExtensionEventBus (custom) |
Related Projects
| Project | Description |
|---|---|
| JD.SemanticKernel.Connectors.ClaudeCode | Claude Code authentication provider for SK |
| JD.SemanticKernel.Connectors.GitHubCopilot | GitHub Copilot authentication provider for SK |
Building
dotnet restore
dotnet build
dotnet test
License
MIT © JD
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Extensions.DependencyInjection (>= 10.0.8)
- Microsoft.SemanticKernel (>= 1.76.0)
- Microsoft.SemanticKernel.Connectors.OpenAI (>= 1.76.0)
- System.Text.Json (>= 10.0.8)
-
net8.0
- Microsoft.Extensions.DependencyInjection (>= 10.0.8)
- Microsoft.SemanticKernel (>= 1.76.0)
- Microsoft.SemanticKernel.Connectors.OpenAI (>= 1.76.0)
- System.Text.Json (>= 10.0.8)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on JD.SemanticKernel.Extensions.Compaction:
| Package | Downloads |
|---|---|
|
JD.SemanticKernel.Extensions
Meta-package for JD.SemanticKernel.Extensions. Provides unified UseSkills(), UsePlugins(), and UseHooks() extension methods for loading Claude Code skills, plugins, and hooks into Semantic Kernel. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.101 | 33 | 6/8/2026 |
| 0.1.100 | 30 | 6/8/2026 |
| 0.1.99 | 106 | 6/2/2026 |
| 0.1.98 | 97 | 6/2/2026 |
| 0.1.97 | 143 | 5/29/2026 |
| 0.1.96 | 133 | 5/29/2026 |
| 0.1.95 | 367 | 5/23/2026 |
| 0.1.94 | 143 | 5/23/2026 |
| 0.1.93 | 149 | 5/22/2026 |
| 0.1.92 | 137 | 5/22/2026 |
| 0.1.91 | 138 | 5/22/2026 |
| 0.1.90 | 148 | 5/15/2026 |
| 0.1.89 | 131 | 5/15/2026 |
| 0.1.88 | 150 | 5/15/2026 |
| 0.1.87 | 130 | 5/15/2026 |
| 0.1.86 | 130 | 5/15/2026 |
| 0.1.85 | 129 | 5/15/2026 |
| 0.1.84 | 125 | 5/15/2026 |
| 0.1.83 | 134 | 5/15/2026 |
| 0.1.82 | 137 | 5/15/2026 |