JD.SemanticKernel.Extensions
0.1.28
See the version list below for details.
dotnet add package JD.SemanticKernel.Extensions --version 0.1.28
NuGet\Install-Package JD.SemanticKernel.Extensions -Version 0.1.28
<PackageReference Include="JD.SemanticKernel.Extensions" Version="0.1.28" />
<PackageVersion Include="JD.SemanticKernel.Extensions" Version="0.1.28" />
<PackageReference Include="JD.SemanticKernel.Extensions" />
paket add JD.SemanticKernel.Extensions --version 0.1.28
#r "nuget: JD.SemanticKernel.Extensions, 0.1.28"
#:package JD.SemanticKernel.Extensions@0.1.28
#addin nuget:?package=JD.SemanticKernel.Extensions&version=0.1.28
#tool nuget:?package=JD.SemanticKernel.Extensions&version=0.1.28
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 - 🗜️ 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
- JD.SemanticKernel.Extensions.Compaction (>= 0.1.28)
- JD.SemanticKernel.Extensions.Hooks (>= 0.1.28)
- JD.SemanticKernel.Extensions.Memory (>= 0.1.28)
- JD.SemanticKernel.Extensions.Plugins (>= 0.1.28)
- JD.SemanticKernel.Extensions.Skills (>= 0.1.28)
-
net8.0
- JD.SemanticKernel.Extensions.Compaction (>= 0.1.28)
- JD.SemanticKernel.Extensions.Hooks (>= 0.1.28)
- JD.SemanticKernel.Extensions.Memory (>= 0.1.28)
- JD.SemanticKernel.Extensions.Plugins (>= 0.1.28)
- JD.SemanticKernel.Extensions.Skills (>= 0.1.28)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on JD.SemanticKernel.Extensions:
| Package | Downloads |
|---|---|
|
JD.AI.Core
Core library for JD.AI — agents, providers, sessions, tools, orchestration, and event bus. Shared by the TUI, Gateway, and channel adapters. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.41 | 0 | 3/3/2026 |
| 0.1.40 | 116 | 3/3/2026 |
| 0.1.39 | 250 | 2/28/2026 |
| 0.1.38 | 353 | 2/28/2026 |
| 0.1.37 | 76 | 2/28/2026 |
| 0.1.36 | 84 | 2/28/2026 |
| 0.1.34 | 78 | 2/27/2026 |
| 0.1.33 | 76 | 2/27/2026 |
| 0.1.32 | 71 | 2/27/2026 |
| 0.1.31 | 79 | 2/27/2026 |
| 0.1.29 | 74 | 2/27/2026 |
| 0.1.28 | 77 | 2/27/2026 |
| 0.1.17 | 81 | 2/27/2026 |
| 0.1.16 | 82 | 2/27/2026 |
| 0.1.14 | 72 | 2/27/2026 |
| 0.1.13 | 76 | 2/27/2026 |
| 0.1.12 | 71 | 2/27/2026 |
| 0.1.11 | 78 | 2/27/2026 |
| 0.1.10 | 77 | 2/27/2026 |
| 0.1.8 | 81 | 2/27/2026 |