SmartSkills.Core 0.1.0-preview

This is a prerelease version of SmartSkills.Core.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package SmartSkills.Core --version 0.1.0-preview
                    
NuGet\Install-Package SmartSkills.Core -Version 0.1.0-preview
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SmartSkills.Core" Version="0.1.0-preview" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SmartSkills.Core" Version="0.1.0-preview" />
                    
Directory.Packages.props
<PackageReference Include="SmartSkills.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SmartSkills.Core --version 0.1.0-preview
                    
#r "nuget: SmartSkills.Core, 0.1.0-preview"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SmartSkills.Core@0.1.0-preview
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SmartSkills.Core&version=0.1.0-preview&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=SmartSkills.Core&version=0.1.0-preview&prerelease
                    
Install as a Cake Tool

SmartSkills

CI

Automatically discover and install agent skills based on your project's dependencies. Supports .NET (NuGet) and Node.js (npm/yarn/pnpm) ecosystems. Available as both a CLI tool and MSBuild integration.

Overview

SmartSkills scans your project for installed packages and matches them against a remote skill registry to find relevant agent skills. Skills follow the Agent Skills specification and are downloaded, validated, and installed locally.

Key features:

  • Scan projects and solutions for NuGet and npm dependencies
  • Auto-detect project type (.NET, Node.js) in a directory
  • Match packages against skill registries using exact and glob patterns
  • Fetch skills from GitHub and Azure DevOps repositories
  • Commit-SHA-based caching to skip unchanged skills
  • Configurable multi-source registries with priority ordering

Installation

CLI Tool

dotnet tool install -g SmartSkills.Cli

MSBuild Integration

Add the NuGet package to your project:

<PackageReference Include="SmartSkills.MSBuild" Version="1.0.0" PrivateAssets="all" />

CLI Usage

Scan for Dependencies

# Scan current directory (auto-detects .sln or .csproj)
smart-skills scan

# Scan a specific project
smart-skills scan --project ./src/MyProject/MyProject.csproj

# Output as JSON
smart-skills scan --project ./src/MyProject --json

Install Skills

# Install skills based on detected packages
smart-skills install

# Install for a specific project
smart-skills install --project ./src/MyProject

# Preview without installing
smart-skills install --dry-run

List Installed Skills

smart-skills list
smart-skills list --json

Check Status

smart-skills status
smart-skills status --project ./src/MyProject

Restore Skills from Lock File

# Restore all skills to their exact locked versions
smart-skills restore

# Restore for a specific project
smart-skills restore --project ./src/MyProject

Uninstall a Skill

smart-skills uninstall my-skill-name

Global Options

Option Description
-v, --verbose Enable verbose logging
--dry-run Preview changes without executing

Skills Lock File

SmartSkills uses a lock file (smart-skills.lock.json) to track the exact state of installed skills. It serves as the single source of truth for reproducible installations — analogous to packages.lock.json (NuGet) or yarn.lock (npm).

How It Works

When you run smart-skills install, the lock file records:

  • Remote URL and skill path — where the skill was fetched from
  • Commit SHA — the exact commit used for this version of the skill
  • Content hash — a SHA256 hash of all installed files for local edit detection

On subsequent installs, SmartSkills compares the remote commit SHA and local content hash to determine whether a skill needs updating, is up-to-date, or has been locally modified.

Example Lock File

{
  "version": 1,
  "skills": {
    "azure-identity-dotnet": {
      "remoteUrl": "https://github.com/microsoft/skills",
      "skillPath": "skills/azure-identity-dotnet",
      "language": "dotnet",
      "commitSha": "abc123def456...",
      "localContentHash": "sha256:e3b0c44298fc1c14..."
    }
  }
}

Workflows

Command Behavior
smart-skills install Fetches latest skills, updates lock file with new commit SHAs and content hashes
smart-skills install --force Overwrites locally modified skills
smart-skills restore Downloads skills at the exact commit SHAs recorded in the lock file
smart-skills status Shows which skills are up-to-date, modified, or missing
smart-skills status --check-remote Also checks if newer versions are available upstream
smart-skills uninstall <name> Removes the skill directory and its lock file entry

Version Control

The lock file should be committed to your repository. This ensures that all team members and CI pipelines restore the same skill versions. The file uses deterministic JSON formatting (sorted keys, consistent indentation) to produce clean diffs.

MSBuild Integration

Basic Setup

Add the package reference:

<Project Sdk="Microsoft.NET.Sdk">
  <ItemGroup>
    <PackageReference Include="SmartSkills.MSBuild" Version="1.0.0" PrivateAssets="all" />
  </ItemGroup>
</Project>

Skills are automatically resolved and installed during build.

Configuration Properties

Property Default Description
SmartSkillsEnabled true Enable/disable skill acquisition
SmartSkillsOutputDirectory $(MSBuildProjectDirectory)\.agents\skills Local install directory

Disabling for Specific Builds

<PropertyGroup Condition="'$(Configuration)' == 'Release'">
  <SmartSkillsEnabled>false</SmartSkillsEnabled>
</PropertyGroup>

Skill Registry

SmartSkills ships with a built-in registry of curated skills that is embedded in the core library. When your project references a matching NuGet package, the corresponding skill is automatically discovered — no configuration needed.

Built-in Skills

The embedded registry includes skills from microsoft/skills and redis/agent-skills:

NuGet Package(s) Skill Source
Azure.Messaging.ServiceBus azure-servicebus-dotnet microsoft/skills
Azure.AI.OpenAI azure-ai-openai-dotnet microsoft/skills
Azure.Identity, Azure.Identity.* azure-identity-dotnet microsoft/skills
Azure.Messaging.EventGrid, Azure.Messaging.EventGrid.* azure-eventgrid-dotnet microsoft/skills
Azure.Messaging.EventHubs, Azure.Messaging.EventHubs.* azure-eventhub-dotnet microsoft/skills
Azure.Search.Documents azure-search-documents-dotnet microsoft/skills
Azure.Security.KeyVault.Keys azure-security-keyvault-keys-dotnet microsoft/skills
Azure.AI.DocumentIntelligence azure-ai-document-intelligence-dotnet microsoft/skills
Azure.AI.Projects, Azure.AI.Projects.* azure-ai-projects-dotnet microsoft/skills
Azure.AI.VoiceLive azure-ai-voicelive-dotnet microsoft/skills
Azure.Maps.Search, Azure.Maps.Routing, Azure.Maps.Rendering, Azure.Maps.Geolocation, Azure.Maps.TimeZones azure-maps-search-dotnet microsoft/skills
Azure.AI.Agents.Persistent azure-ai-agents-persistent-dotnet microsoft/skills
Microsoft.Agents.Builder, Microsoft.Agents.Hosting.AspNetCore, Microsoft.Agents.* m365-agents-dotnet microsoft/skills
Microsoft.Azure.WebJobs.Extensions.AuthenticationEvents microsoft-azure-webjobs-extensions-authentication-events-dotnet microsoft/skills
Azure.ResourceManager.AppContainers azure-mgmt-appcontainers-dotnet microsoft/skills
Azure.ResourceManager.AppService azure-mgmt-appservice-dotnet microsoft/skills
Azure.ResourceManager.Compute azure-mgmt-compute-dotnet microsoft/skills
Azure.ResourceManager.ContainerRegistry azure-mgmt-containerregistry-dotnet microsoft/skills
Azure.ResourceManager.ContainerService azure-mgmt-containerservice-dotnet microsoft/skills
Azure.ResourceManager.CosmosDB azure-mgmt-cosmosdb-dotnet microsoft/skills
Azure.ResourceManager.KeyVault azure-mgmt-keyvault-dotnet microsoft/skills
Azure.ResourceManager.Network azure-mgmt-network-dotnet microsoft/skills
Azure.ResourceManager.Playwright azure-mgmt-playwright-dotnet microsoft/skills
Azure.ResourceManager.Sql azure-resource-manager-sql-dotnet microsoft/skills
GitHub.Copilot.SDK copilot-sdk microsoft/skills
StackExchange.Redis, StackExchange.Redis.*, NRedisStack, Microsoft.Extensions.Caching.StackExchangeRedis, Redis.OM redis-development redis/agent-skills

Adding Custom Registries

You can extend the built-in registry by providing additional JSON files. These are merged with the embedded registry at runtime — your custom entries are appended alongside the built-in ones.

Programmatic Usage
using SmartSkills.Core.Registry;

// Load only the built-in embedded registry
var entries = RegistryIndexParser.LoadEmbedded();

// Merge built-in + your custom registries
var entries = RegistryIndexParser.LoadMerged(new[]
{
    "path/to/my-team-skills.json",
    "path/to/project-skills.json"
});

// Parse a standalone registry file
var entries = RegistryIndexParser.Parse(jsonString);

Registry JSON Format

A skill registry is a JSON file that maps packages to skill locations:

{
  "repoUrl": "https://github.com/my-org/my-skills",
  "skills": [
    {
      "packagePatterns": ["Microsoft.EntityFrameworkCore", "Microsoft.EntityFrameworkCore.*"],
      "skillPath": "skills/ef-core",
      "language": "dotnet"
    },
    {
      "packagePatterns": ["@azure/cosmos"],
      "skillPath": "skills/azure-cosmos-ts",
      "language": "javascript"
    },
    {
      "packagePatterns": ["SomePackage"],
      "skillPath": "skills/some-skill",
      "repoUrl": "https://github.com/other-org/other-repo"
    }
  ]
}
Field Required Description
repoUrl (top-level) No Default repository URL inherited by all skills in the file
language (top-level) No Default ecosystem filter inherited by all skills ("dotnet", "javascript", or omit for any)
skills[].packagePatterns Yes Array of package names or glob patterns to match
skills[].skillPath Yes Path to the skill directory within the repository
skills[].repoUrl No Per-skill repository URL override (takes precedence over the top-level value)
skills[].language No Per-skill ecosystem filter override (takes precedence over the top-level value)

Package Patterns

Patterns support exact match and glob syntax:

  • Microsoft.EntityFrameworkCore — matches exactly Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.* — matches any package starting with Microsoft.EntityFrameworkCore.
  • Azure.Storage.* — matches Azure.Storage.Blobs, Azure.Storage.Queues, etc.

Authentication

  • GitHub: Public repositories only — no authentication required.
  • Azure DevOps: Uses DefaultAzureCredential from Azure.Identity. This automatically picks up credentials from Azure CLI (az login), environment variables, managed identity, etc.

Error Codes

Code Description Remediation
SS001 Network error Check internet connection and proxy settings
SS002 Authentication failed Run az login for ADO access
SS003 .NET SDK not found Install from https://dot.net/download
SS004 Skill validation failed Check SKILL.md frontmatter format
SS005 Registry not found Verify registry URL
SS006 Skill not found Check skill path in registry index
SS007 Installation failed Check file permissions and disk space

Project Structure

src/
  SmartSkills.Core/        # Shared library (scanning, matching, fetching, installation)
  SmartSkills.Cli/         # CLI tool (System.CommandLine)
  SmartSkills.MSBuild/     # MSBuild tasks + props/targets
tests/
  SmartSkills.Core.Tests/  # Unit tests
  SmartSkills.Cli.Tests/   # E2E CLI tests
  SmartSkills.MSBuild.Tests/ # MSBuild task tests

Development

# Build
dotnet build

# Test
dotnet test

# Pack CLI tool
dotnet pack src/SmartSkills.Cli -o ./artifacts

# Pack MSBuild package
dotnet pack src/SmartSkills.MSBuild -o ./artifacts

License

MIT

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0-preview2 51 2/14/2026
0.1.0-preview 49 2/12/2026