Bedrock
itsmostafa/aws-agent-skills
AWS Bedrock foundation models for generative AI. An agent skill from itsmostafa/aws-agent-skills.
Step-by-step guide for adding a new guardrail provider to Agent Kernel.
$ npx skills add yaalalabs/agent-kernel --skill ak-dev-new-guardrail-provider -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install yaalalabs/agent-kernel ak-dev-new-guardrail-provider --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/yaalalabs/agent-kernel.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/ak-dev-new-guardrail-provider .claude/skills/ak-dev-new-guardrail-provider && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ak-dev-new-guardrail-provider" agent skill from https://github.com/yaalalabs/agent-kernel/tree/develop/.agents/skills/ak-dev-new-guardrail-provider into .claude/skills/ak-dev-new-guardrail-provider/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ak-dev-new-guardrail-provider", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/yaalalabs/agent-kernel/tree/develop/.agents/skills/ak-dev-new-guardrail-providerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add yaalalabs/agent-kernel --skill ak-dev-new-guardrail-provider -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install yaalalabs/agent-kernel ak-dev-new-guardrail-provider --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yaalalabs/agent-kernel.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/ak-dev-new-guardrail-provider .agents/skills/ak-dev-new-guardrail-provider && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ak-dev-new-guardrail-provider" agent skill from https://github.com/yaalalabs/agent-kernel/tree/develop/.agents/skills/ak-dev-new-guardrail-provider into .agents/skills/ak-dev-new-guardrail-provider/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ak-dev-new-guardrail-provider", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add yaalalabs/agent-kernel --skill ak-dev-new-guardrail-provider -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install yaalalabs/agent-kernel ak-dev-new-guardrail-provider --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yaalalabs/agent-kernel.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/ak-dev-new-guardrail-provider .cursor/skills/ak-dev-new-guardrail-provider && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ak-dev-new-guardrail-provider" agent skill from https://github.com/yaalalabs/agent-kernel/tree/develop/.agents/skills/ak-dev-new-guardrail-provider into .cursor/skills/ak-dev-new-guardrail-provider/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ak-dev-new-guardrail-provider", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/yaalalabs/agent-kernel.git --path .agents/skills/ak-dev-new-guardrail-provider--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add yaalalabs/agent-kernel --skill ak-dev-new-guardrail-provider -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install yaalalabs/agent-kernel ak-dev-new-guardrail-provider --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yaalalabs/agent-kernel.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/ak-dev-new-guardrail-provider .gemini/skills/ak-dev-new-guardrail-provider && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ak-dev-new-guardrail-provider" agent skill from https://github.com/yaalalabs/agent-kernel/tree/develop/.agents/skills/ak-dev-new-guardrail-provider into .gemini/skills/ak-dev-new-guardrail-provider/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ak-dev-new-guardrail-provider", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install yaalalabs/agent-kernel ak-dev-new-guardrail-providerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add yaalalabs/agent-kernel --skill ak-dev-new-guardrail-provider -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/yaalalabs/agent-kernel.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/ak-dev-new-guardrail-provider .github/skills/ak-dev-new-guardrail-provider && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ak-dev-new-guardrail-provider" agent skill from https://github.com/yaalalabs/agent-kernel/tree/develop/.agents/skills/ak-dev-new-guardrail-provider into .github/skills/ak-dev-new-guardrail-provider/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ak-dev-new-guardrail-provider", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add yaalalabs/agent-kernel --skill ak-dev-new-guardrail-provider -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install yaalalabs/agent-kernel ak-dev-new-guardrail-provider --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yaalalabs/agent-kernel.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/ak-dev-new-guardrail-provider .opencode/skills/ak-dev-new-guardrail-provider && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ak-dev-new-guardrail-provider" agent skill from https://github.com/yaalalabs/agent-kernel/tree/develop/.agents/skills/ak-dev-new-guardrail-provider into .opencode/skills/ak-dev-new-guardrail-provider/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ak-dev-new-guardrail-provider", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ak-dev-new-guardrail-providerStep-by-step guide for adding a new guardrail provider to Agent Kernel.
Ak Dev New Guardrail Provider is an agent skill from yaalalabs/agent-kernel. Step-by-step guide for adding a new guardrail provider to Agent Kernel. Use this skill when you need to integrate a new content safety or guardrail service (beyond OpenAI Guardrails, AWS Bedrock Guardrails, and Walled AI). Covers implementing input/output guardrails, factory registration, configuration, and testing.
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in AI & LLM Engineering, covering LLM guardrails. It works with OpenAI and Amazon Bedrock. The repository describes itself as: The Operating System for Scalable Enterprise AI Agents - Run, orchestrate, and deploy Compliant Enterprise AI Agents at scale across frameworks, without lock-in, rewrites or… The licence is Apache-2.0.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 97fa8d9. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are python, yaml and toml).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
WALLED_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Ak Dev New Guardrail Provider loads about 3.5k tokens when it runs. Until then it costs about 87 tokens; SKILL.md has 748 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from yaalalabs/agent-kernel at commit 97fa8d9, republished under its Apache-2.0 licence (© yaalalabs). 748 words, ~3,549 tokens.
.claude/skills/ak-dev-new-guardrail-provider/SKILL.md (or your agent's skills folder).This guide walks through adding a new guardrail provider to Agent Kernel. Use the existing OpenAI (ak-py/src/agentkernel/guardrail/openai.py), Bedrock (ak-py/src/agentkernel/guardrail/bedrock.py), and Walled AI (ak-py/src/agentkernel/guardrail/walledai.py) implementations as reference.
| Provider | Type value | Features | Extra |
|---|---|---|---|
| OpenAI | openai | Content moderation, jailbreak detection, PII detection (via config JSON) | agentkernel[openai] |
| AWS Bedrock | bedrock | AWS-managed guardrails (ID + version) | agentkernel[aws] |
| Walled AI | walledai | Content safety + PII redaction/unmasking (via pii flag) | agentkernel[walledai] |
Agent Kernel's guardrail system uses the hook mechanism:
InputGuardrail class in guardrail/guardrail.py (itself a PreHook) — they inspect incoming requests and can halt execution by returning an AgentReply instead of passing throughOutputGuardrail class (itself a PostHook) — they inspect agent replies and can modify or replace the responseBaseGuardrailUtil (also in guardrail/guardrail.py) provides shared text-extraction helpers and is mixed into concrete guardrail classesguardrail.py select the appropriate provider based on AKConfig.guardrail configuration; unknown types raise an exception, and the no-op classes are returned only when guardrails are disabledRuntime, meaning they apply to all agents automaticallyCreate ak-py/src/agentkernel/guardrail/<provider>.py.
The base class is a plain provider-specific class that holds shared client/config setup. The concrete input/output classes (steps 3 and 4) combine it with the no-op InputGuardrail/OutputGuardrail hooks and the BaseGuardrailUtil mixin. Real examples: class OpenAIInputGuardrail(BaseGuardrailUtil, BaseOpenAIGuardrail, InputGuardrail) in openai.py, class BedrockInputGuardrail(BaseGuardrailUtil, BaseBedrockGuardrail, InputGuardrail) in bedrock.py, and class WalledAIInputGuardrail(InputGuardrail, WalledAIGuardrailBase) in walledai.py.
# ak-py/src/agentkernel/guardrail/<provider>.py
import logging
import os
from abc import ABC
from agentkernel.core.config import AKConfig
logger = logging.getLogger("ak.guardrail.<provider>")
class Base<Provider>Guardrail(ABC):
"""Base class for <Provider> guardrail implementations."""
def __init__(self):
config = AKConfig.get().guardrail
# Initialize the guardrail client/SDK. Secrets come from environment
# variables, not config (e.g., Walled AI reads WALLED_API_KEY).
# e.g., self._client = ProviderClient(api_key=os.getenv("<PROVIDER>_API_KEY"))
logger.info("<Provider> guardrail initialized")If you are modifying an input request with the guardrail, then you should make sure to return the modified request and all the other unmodified requests. For example, if you have 3 requests and the guardrail modifies the first one, then you should return a list of 3 requests with the first one modified and the other two unmodified.
from agentkernel.core.base import Agent, Session
from agentkernel.core.model import AgentReply, AgentReplyText, AgentRequest
from agentkernel.guardrail.guardrail import BaseGuardrailUtil, InputGuardrail, OutputGuardrail
class <Provider>InputGuardrail(BaseGuardrailUtil, Base<Provider>Guardrail, InputGuardrail):
"""Validates input requests using <Provider> guardrail service."""
async def on_run(
self, session: Session, agent: Agent, requests: list[AgentRequest]
) -> list[AgentRequest] | AgentReply:
# 1. Extract text content from requests
text = BaseGuardrailUtil._extract_text_from_requests(requests)
if not text:
return requests # No text to validate, pass through
# 2. Call the guardrail service
try:
result = await self._validate(text)
except Exception as e:
logger.error(f"Guardrail validation error: {e}")
return requests # Fail open (or fail closed based on policy)
# 3. If content is flagged, return an AgentReply to halt execution
if result.is_flagged:
message = self._build_intervention_message(result)
logger.warning(f"Input guardrail triggered: {message}")
return AgentReplyText(
response=message,
prompt=text
)
# 4. Content is safe, pass through
return requests
async def _validate(self, text: str):
"""Call the guardrail provider's API to validate text."""
# Provider-specific validation logic
# return self._client.validate(text=text, source="INPUT")
pass
def _build_intervention_message(self, result) -> str:
"""Build a user-friendly message when content is blocked."""
return "I apologize, but I'm unable to process this request as it may violate content safety guidelines."
def name(self) -> str:
return "<provider>_input_guardrail"class <Provider>OutputGuardrail(BaseGuardrailUtil, Base<Provider>Guardrail, OutputGuardrail):
"""Validates agent output using <Provider> guardrail service."""
async def on_run(
self, session: Session, requests: list[AgentRequest], agent: Agent, agent_reply: AgentReply
) -> AgentReply:
# 1. Extract text from the reply
text = BaseGuardrailUtil._extract_text_from_reply(agent_reply)
if not text:
return agent_reply # No text to validate
# 2. Call the guardrail service
try:
result = await self._validate(text)
except Exception as e:
logger.error(f"Output guardrail validation error: {e}")
return agent_reply # Fail open
# 3. If content is flagged, modify the reply
if result.is_flagged:
message = self._build_intervention_message(result)
logger.warning(f"Output guardrail triggered: {message}")
agent_reply.response = message
return agent_reply
# 4. Content is safe, return unchanged
return agent_reply
async def _validate(self, text: str):
"""Call the guardrail provider's API to validate text."""
pass
def _build_intervention_message(self, result) -> str:
return "The generated response was flagged by content safety filters and has been blocked."
def name(self) -> str:
return "<provider>_output_guardrail"Both factories in ak-py/src/agentkernel/guardrail/guardrail.py share the house pluggable-backend
shape from core/util/factory.py (resolve_dotted, require_extra, AKConfigError — the same
pattern used by the trace, session/thread/multimodal store, and sandbox provider factories): a
short-circuit for disabled, if-per-built-in with the SDK import wrapped in require_extra (so a
missing optional dependency raises an actionable ImportError naming the pip extra), then a
dotted-path "bring your own" fallback for anything else:
_BUILTIN_GUARDRAILS = ["openai", "bedrock", "walledai"]
class InputGuardrailFactory:
@staticmethod
def get() -> PreHook:
config = AKConfig.get().guardrail.input
if not config.enabled:
return InputGuardrail() # OFF: pass-through hook
gtype = config.type
if gtype == "openai":
with require_extra("openai", "guardrail.input.type: openai"):
from .openai import OpenAIInputGuardrail
return OpenAIInputGuardrail()
if gtype == "bedrock":
with require_extra("aws", "guardrail.input.type: bedrock"):
from .bedrock import BedrockInputGuardrail
return BedrockInputGuardrail()
if gtype == "walledai":
with require_extra("walledai", "guardrail.input.type: walledai"):
from .walledai import WalledAIInputGuardrail
return WalledAIInputGuardrail()
if gtype == "<provider>": # ADD THIS
with require_extra("<provider>", "guardrail.input.type: <provider>"):
from .<provider> import <Provider>InputGuardrail
return <Provider>InputGuardrail()
if "." not in gtype:
raise AKConfigError(
f"unknown guardrail type '{gtype}'; expected one of {_BUILTIN_GUARDRAILS} or a dotted path to an InputGuardrail subclass"
)
return resolve_dotted(gtype, base=InputGuardrail)() # bring-your-own
# Same pattern for OutputGuardrailFactory.get()A dotted type (e.g. myorg.guardrails.CustomInputGuardrail) resolves via resolve_dotted
without any factory edit at all — only add an if branch here for a first-party, in-repo
provider you want addressable by a short name.
Update the guardrail config in ak-py/src/agentkernel/core/config.py:
The existing _GuardrailParamConfig.type is a free-form string (no regex pattern) described as
"a built-in short name (openai, bedrock, walledai) or a dotted path to an InputGuardrail/OutputGuardrail
subclass" — do not add a pattern= constraint back, since that would break the bring-your-own path.
Its only fields are enabled, type, pii, config_path, model, id, and version — there is
no api_key field. Secrets come from environment variables (e.g., Walled AI reads WALLED_API_KEY).
If your provider needs new config fields, add them to _GuardrailParamConfig in core/config.py:
# config.yaml
guardrail:
input:
enabled: true
type: <provider>
# provider-specific fields (must exist on _GuardrailParamConfig)
config_path: guardrails_input.json
output:
enabled: true
type: <provider>
config_path: guardrails_output.jsonIf the provider requires additional packages, add them to ak-py/pyproject.toml either under an existing group or a new one:
[project.optional-dependencies]
# Option A: Add to existing openai group if it's an OpenAI-based provider
# Option B: Create a new group
<provider>-guardrail = [
"provider-sdk>=x.y.z",
]Add tests to the existing consolidated ak-py/tests/test_guardrail.py, which covers the no-op hooks, the factories (including test_get_raises_exception_for_unknown_type), and the OpenAI provider:
import pytest
from unittest.mock import AsyncMock, patch
from agentkernel.core.model import AgentRequestText, AgentReplyText
from agentkernel.guardrail.<provider> import (
<Provider>InputGuardrail,
<Provider>OutputGuardrail
)
@pytest.mark.asyncio
async def test_input_guardrail_passes_safe_content():
guardrail = <Provider>InputGuardrail()
# Mock the validation to return safe
guardrail._validate = AsyncMock(return_value=MockResult(is_flagged=False))
requests = [AgentRequestText(prompt="What is 2+2?")]
result = await guardrail.on_run(session, agent, requests)
assert isinstance(result, list) # passed through
@pytest.mark.asyncio
async def test_input_guardrail_blocks_unsafe_content():
guardrail = <Provider>InputGuardrail()
guardrail._validate = AsyncMock(return_value=MockResult(is_flagged=True))
requests = [AgentRequestText(prompt="unsafe content")]
result = await guardrail.on_run(session, agent, requests)
assert isinstance(result, AgentReplyText) # haltedCreate examples/cli/guardrail/<provider>/ with:
demo.py — agent with guardrails enabledconfig.yaml — guardrail configurationpyproject.toml — dependenciesdemo_test.py — tests verifying guardrail triggersAdd guardrail provider docs to docs/docs/advanced/guardrails.md or create docs/docs/advanced/guardrails-<provider>.md.
Then update the landing page inventories in docs/src/components/*/data.tsx: add a tile to the Observability, safety & testing row in IntegrationsMarquee/data.tsx (role Guardrail, href to the provider's docs page, logo or react-icons/si glyph), and add the provider to the Content Guardrails card's tags and description under the Guard tab in FeatureExplorer/data.tsx. Logo sourcing and the build check are in ak-dev-sync-docs-from-branch, Docs-Site Landing and Features Pages.
Then check the docs-site features page (docs/src/pages/features.tsx): the Problem section's rows name the built-in guardrail providers in a with: cell ("OpenAI and Bedrock guardrails built in"); add the new provider wherever the existing ones are listed (grep docs/src/pages/*.tsx for "Bedrock").
ak-py/src/agentkernel/guardrail/<provider>.py with base, input, and output classesguardrail.py for both input and outputtype: "<provider>" in config.yamlpyproject.toml (if needed)ak-py/tests/test_guardrail.pyexamples/cli/guardrail/<provider>/docs/docs/advanced/guardrails*.mdIntegrationsMarquee/data.tsx), Content Guardrails card tags (FeatureExplorer/data.tsx); features page with: cells© yaalalabs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/ak-dev-new-guardrail-provider of yaalalabs/agent-kernel.
Open the folder on GitHubat commit 97fa8d9
Ak Dev New Guardrail Provider next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Ak Dev New Guardrail Provider this skillyaalalabs/agent-kernel | 192 | — | ~3.5k | Automated safety check: Pass | Apache-2.0 | |
| Bedrockitsmostafa/aws-agent-skills | 1.2k | — | ~4.9k | Automated safety check: Pass | MIT | |
| Migrating Openai Agents SDK To Pydantic AIpydantic/pydantic-ai | 21k | — | ~1.8k | Automated safety check: Pass | MIT | |
| Openai Agentscoco-research/coco | 531 | — | ~3.3k | Automated safety check: Pass | MIT | |
| Neo4j Genai Plugin Skillneo4j-contrib/neo4j-skills | 114 | — | ~3k | Automated safety check: Notes | MIT | |
| Amazon Bedrockaws/agent-toolkit-for-aws | 2.8k | — | ~8.6k | Automated safety check: Pass | Apache-2.0 |
itsmostafa/aws-agent-skills
AWS Bedrock foundation models for generative AI. An agent skill from itsmostafa/aws-agent-skills.
pydantic/pydantic-ai
Migrate Python OpenAI Agents SDK applications to Pydantic AI and, when warranted, Pydantic AI Harness.
coco-research/coco
Build AI applications with OpenAI Agents SDK - text agents, voice agents, multi-agent handoffs, tools with Zod schemas, guardrails, and streaming.
neo4j-contrib/neo4j-skills
Use Neo4j GenAI Plugin ai.text. An agent skill from neo4j-contrib/neo4j-skills.
aws/agent-toolkit-for-aws
Builds generative AI applications on Amazon Bedrock. An agent skill from aws/agent-toolkit-for-aws.
giuseppe-trisciuoglio/developer-kit
Provides AWS CloudFormation patterns for Amazon Bedrock resources including agents, knowledge bases, data sources, guardrails, prompts, flows, and inference profiles.
yaalalabs/agent-kernel
Code quality standards, formatting, Python style rules (classes over script-style functions, configuration-field rules), commit conventions, and PR workflow for Agent Kernel development.
yaalalabs/agent-kernel
Step-by-step guide for adding a new built-in test evaluator provider to Agent Kernel (beyond DeepEval, Opik and JEV).
yaalalabs/agent-kernel
Step-by-step guide for adding a new knowledge base backend to Agent Kernel.
yaalalabs/agent-kernel
Step-by-step guide for adding a new messaging platform integration to Agent Kernel.
yaalalabs/agent-kernel
Step-by-step guide for adding a new multimodal attachment storage backend to Agent Kernel.
yaalalabs/agent-kernel
Step-by-step guide for adding a new queue transport to Agent Kernel's execution pipeline.
Works with
Categories
Step-by-step guide for adding a new guardrail provider to Agent Kernel. Ak Dev New Guardrail Provider is an agent skill from yaalalabs/agent-kernel. Step-by-step guide for adding a new guardrail provider to Agent Kernel.
Ak Dev New Guardrail Provider fits situations like: you need to integrate a new content safety; guardrail service (beyond OpenAI Guardrails; AWS Bedrock Guardrails.
Run `npx skills add yaalalabs/agent-kernel --skill ak-dev-new-guardrail-provider -a claude-code`. Or copy the skill folder (.agents/skills/ak-dev-new-guardrail-provider in yaalalabs/agent-kernel) into .claude/skills/ak-dev-new-guardrail-provider in your project. Claude Code loads it when a task matches its description.
Run `npx skills add yaalalabs/agent-kernel --skill ak-dev-new-guardrail-provider -a codex`. Or copy the skill folder (.agents/skills/ak-dev-new-guardrail-provider in yaalalabs/agent-kernel) into .agents/skills/ak-dev-new-guardrail-provider in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add yaalalabs/agent-kernel --skill ak-dev-new-guardrail-provider -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ak-dev-new-guardrail-provider, .gemini/skills/ak-dev-new-guardrail-provider, .github/skills/ak-dev-new-guardrail-provider and .opencode/skills/ak-dev-new-guardrail-provider in your project.
Going by SKILL.md and its folder, Ak Dev New Guardrail Provider needs credentials named WALLED_API_KEY. Our summary lists: Python 3; A credential in WALLED_API_KEY.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Ak Dev New Guardrail Provider is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Ak Dev New Guardrail Provider: Bedrock (itsmostafa/aws-agent-skills, 1.2k stars), Migrating Openai Agents SDK To Pydantic AI (pydantic/pydantic-ai, 21k stars), Openai Agents (coco-research/coco, 531 stars) and Neo4j Genai Plugin Skill (neo4j-contrib/neo4j-skills, 114 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
yaalalabs (a GitHub organization) maintains it in yaalalabs/agent-kernel, which has 192 GitHub stars. The repository holds 23 skills in this directory. The repository was last updated on October 9, 2026.
Source: yaalalabs/agent-kernel on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.