Ananke.Skills
0.8.3
dotnet add package Ananke.Skills --version 0.8.3
NuGet\Install-Package Ananke.Skills -Version 0.8.3
<PackageReference Include="Ananke.Skills" Version="0.8.3" />
<PackageVersion Include="Ananke.Skills" Version="0.8.3" />
<PackageReference Include="Ananke.Skills" />
paket add Ananke.Skills --version 0.8.3
#r "nuget: Ananke.Skills, 0.8.3"
#:package Ananke.Skills@0.8.3
#addin nuget:?package=Ananke.Skills&version=0.8.3
#tool nuget:?package=Ananke.Skills&version=0.8.3
Ananke.Skills
External skill catalog for Ananke. Discover CLI-based skills from a catalog, rank them with local reliability scores, resolve them into ToolDefinition entries, and add them to a ToolKit for agent use.
This package currently centers on OpenClaw / ClawHub-style skill discovery and local CLI execution. It stays protocol-agnostic by bridging skills through process execution rather than requiring MCP or a custom runtime protocol.
Install
dotnet add package Ananke.Skills
This package depends on Ananke.Orchestration and uses its ToolKit / ToolDefinition model.
What this package provides
| Area | Key types |
|---|---|
| Catalog abstraction | ISkillCatalog, SkillDescriptor, SkillParameter, SkillInstallMethod |
| Local scoring | ISkillScoreStore, SkillScore, VoteDirection, JsonFileScoreStore |
| CLI execution | CliProcessRunner, CliProcessResult |
| Catalog implementation | OpenClawCatalog |
| ToolKit integration | ToolKitSkillExtensions |
| Semantic tool-memory bridge | SkillCatalogMemorySync |
Core concepts
ISkillCatalog
The package-level contract for skill discovery and resolution:
SearchAsync(...)finds matching skills from a local cacheResolveAsync(...)turns aSkillDescriptorinto a runnableToolDefinitionSyncAsync()refreshes local catalog metadata from the backing source
SkillDescriptor
Lightweight metadata about an external skill:
- stable catalog ID
- display/package name
- human-readable description
- tags for relevance ranking
- install method (
uvx,npx, and future runners) - optional structured parameters for CLI argument generation
Local scoring
ISkillScoreStore tracks local up/down votes per skill. These scores are deployment-local and affect catalog ranking. Negative scores can be used to suppress unreliable skills from agent exposure.
CLI bridge
CliProcessRunner executes external commands with:
- timeout enforcement
- stdout/stderr capture
- output-size limits
- cancellation support
This lets skills be exposed as normal Ananke tools without embedding another protocol stack in the agent runtime.
Quick start
Create a catalog and seed local scores
using Ananke.Skills;
using Ananke.Skills.OpenClaw;
var scoreStore = new JsonFileScoreStore(Path.Combine(AppContext.BaseDirectory, "skills", "scores.json"));
var catalog = new OpenClawCatalog(
cacheDir: Path.Combine(AppContext.BaseDirectory, "skills"),
scoreStore: scoreStore,
enableVoting: true);
await catalog.SyncAsync();
Search and resolve skills manually
var matches = await catalog.SearchAsync("airbnb search lodging", limit: 3);
var tool = await catalog.ResolveAsync(matches[0]);
Populate a ToolKit from natural-language intent
using Ananke.Orchestration.Tools;
var toolkit = new ToolKit("external-skills");
await toolkit.AddFromCatalogAsync(
catalog,
query: "airbnb search lodging",
limit: 5);
Each resolved skill becomes a normal ToolDefinition that an AgentJob can expose to a model.
OpenClaw catalog behavior
OpenClawCatalog is the built-in ISkillCatalog implementation.
Current behavior:
- maintains a local
catalog.jsoncache - searches offline between syncs
- ranks matches by relevance plus local vote score
- resolves supported install methods into CLI-backed
ToolDefinitionentries - can automatically record up/down votes based on execution success when
enableVotingis enabled
Currently supported install methods:
UvxNpx
Tool memory projection
SkillCatalogMemorySync decorates an ISkillCatalog and projects synced skills into IToolMemory as ToolMemoryEntry records. This connects the external skill catalog to Ananke's semantic tool-routing pipeline.
Use it when you want skills to be discoverable by the tool gate even before a static ToolKit has been manually populated.
Operational notes
OpenClawCatalog.SearchAsync(...)works from the local cache after syncCliProcessRunnertruncates large output and enforces execution timeoutsJsonFileScoreStoreis suitable for single-process and demo scenarios- Skill execution requires the underlying runner binary to be installed (
uvx,npx, etc.)
Related packages
| Package | What it adds |
|---|---|
Ananke.Orchestration |
ToolKit, ToolDefinition, and agent orchestration |
Ananke.Abstractions |
IToolMemory, ToolMemoryEntry, and tool-health contracts |
Ananke |
Meta-package for the broader orchestration stack |
Documentation
Full docs, demos, and package guidance: github.com/sevensamurai/Ananke
License
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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. |
-
net10.0
- Ananke.Orchestration (>= 0.8.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.