fai-semantic-kernel-integration — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited fai-semantic-kernel-integration (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Build AI orchestration with Semantic Kernel plugins, planners, and memory.
using Microsoft.SemanticKernel;
using Azure.Identity;
var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
deploymentName: "gpt-4o",
endpoint: Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT")!,
credentials: new DefaultAzureCredential()
);
var kernel = builder.Build();public class SearchPlugin
{
[KernelFunction("search_documents")]
[Description("Search the knowledge base for documents matching a query")]
public async Task<string> SearchAsync(
[Description("Search query text")] string query,
[Description("Maximum results")] int limit = 5)
{
var results = await _searchClient.SearchAsync(query, limit);
return JsonSerializer.Serialize(results);
}
}
// Register plugin
kernel.Plugins.AddFromType<SearchPlugin>();var settings = new OpenAIPromptExecutionSettings
{
FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
};
var result = await kernel.InvokePromptAsync(
"Find documents about retry patterns and summarize them",
new KernelArguments(settings)
);
Console.WriteLine(result);import semantic_kernel as sk
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
from azure.identity import DefaultAzureCredential
kernel = sk.Kernel()
kernel.add_service(AzureChatCompletion(
deployment_name="gpt-4o",
endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
credentials=DefaultAzureCredential(),
))from semantic_kernel.functions import kernel_function
class SearchPlugin:
@kernel_function(name="search", description="Search knowledge base")
async def search(self, query: str, limit: int = 5) -> str:
results = await search_service.search(query, limit)
return json.dumps(results)
kernel.add_plugin(SearchPlugin(), "search")var chatService = kernel.GetRequiredService<IChatCompletionService>();
var history = new ChatHistory("You are a helpful AI assistant.");
history.AddUserMessage("What is a circuit breaker pattern?");
var response = await chatService.GetChatMessageContentAsync(history, settings, kernel);
history.AddAssistantMessage(response.Content!);| Issue | Cause | Fix |
|---|---|---|
| Plugin not invoked | Missing FunctionChoiceBehavior | Set Auto() in execution settings |
| Auth fails | No DefaultAzureCredential | Install Azure.Identity, configure MI |
| Function not found | Missing [KernelFunction] | Add attribute + register plugin |
| High token usage | History too long | Trim history to last N messages |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.