Capture Conversation
outline/outline
Save the current conversation, a decision, or a set of notes as a document in an Outline collection; use when the user wants to keep what was discussed in their knowledge base.
Step-by-step guide for adding a new knowledge base backend to Agent Kernel.
$ npx skills add yaalalabs/agent-kernel --skill ak-dev-new-knowledgebase-integration -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install yaalalabs/agent-kernel ak-dev-new-knowledgebase-integration --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-knowledgebase-integration .claude/skills/ak-dev-new-knowledgebase-integration && 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-knowledgebase-integration" agent skill from https://github.com/yaalalabs/agent-kernel/tree/develop/.agents/skills/ak-dev-new-knowledgebase-integration into .claude/skills/ak-dev-new-knowledgebase-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ak-dev-new-knowledgebase-integration", 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-knowledgebase-integrationType 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-knowledgebase-integration -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install yaalalabs/agent-kernel ak-dev-new-knowledgebase-integration --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-knowledgebase-integration .agents/skills/ak-dev-new-knowledgebase-integration && 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-knowledgebase-integration" agent skill from https://github.com/yaalalabs/agent-kernel/tree/develop/.agents/skills/ak-dev-new-knowledgebase-integration into .agents/skills/ak-dev-new-knowledgebase-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ak-dev-new-knowledgebase-integration", 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-knowledgebase-integration -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install yaalalabs/agent-kernel ak-dev-new-knowledgebase-integration --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-knowledgebase-integration .cursor/skills/ak-dev-new-knowledgebase-integration && 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-knowledgebase-integration" agent skill from https://github.com/yaalalabs/agent-kernel/tree/develop/.agents/skills/ak-dev-new-knowledgebase-integration into .cursor/skills/ak-dev-new-knowledgebase-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ak-dev-new-knowledgebase-integration", 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-knowledgebase-integration--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-knowledgebase-integration -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install yaalalabs/agent-kernel ak-dev-new-knowledgebase-integration --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-knowledgebase-integration .gemini/skills/ak-dev-new-knowledgebase-integration && 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-knowledgebase-integration" agent skill from https://github.com/yaalalabs/agent-kernel/tree/develop/.agents/skills/ak-dev-new-knowledgebase-integration into .gemini/skills/ak-dev-new-knowledgebase-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ak-dev-new-knowledgebase-integration", 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-knowledgebase-integrationInstalls 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-knowledgebase-integration -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-knowledgebase-integration .github/skills/ak-dev-new-knowledgebase-integration && 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-knowledgebase-integration" agent skill from https://github.com/yaalalabs/agent-kernel/tree/develop/.agents/skills/ak-dev-new-knowledgebase-integration into .github/skills/ak-dev-new-knowledgebase-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ak-dev-new-knowledgebase-integration", 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-knowledgebase-integration -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-knowledgebase-integration --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-knowledgebase-integration .opencode/skills/ak-dev-new-knowledgebase-integration && 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-knowledgebase-integration" agent skill from https://github.com/yaalalabs/agent-kernel/tree/develop/.agents/skills/ak-dev-new-knowledgebase-integration into .opencode/skills/ak-dev-new-knowledgebase-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ak-dev-new-knowledgebase-integration", 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-knowledgebase-integrationStep-by-step guide for adding a new knowledge base backend to Agent Kernel.
Ak Dev New Knowledgebase Integration is an agent skill from yaalalabs/agent-kernel. Step-by-step guide for adding a new knowledge base backend to Agent Kernel. Use this skill when you need to integrate a new storage system with the KnowledgeBase interface and expose it through KnowledgeBuilder tools.
Its SKILL.md is about 5.1k 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 Knowledge Management, covering Knowledge bases. 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 e03a602. 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 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 no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Ak Dev New Knowledgebase Integration loads about 5.1k tokens when it runs. Until then it costs about 64 tokens; SKILL.md has 2,121 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 e03a602, republished under its Apache-2.0 licence (© yaalalabs). 2,121 words, ~5,067 tokens.
.claude/skills/ak-dev-new-knowledgebase-integration/SKILL.md (or your agent's skills folder).Use this skill to add a new knowledge base backend under ak-py/src/agentkernel/knowledgebase/.
This applies when you are integrating any durable source not already covered by:
ChromaManager (semantic vector search)Neo4jManager (graph relationships)StarburstManager (read-only SQL via Trino)OKFManager (Open Knowledge Format markdown bundles, over a local directory or S3)If the new source is documents addressed by path, do not start from scratch: compose a
DocumentStore instead (step 4a).
.agents/skills/ak-dev-architecture/SKILL.mdak-py/src/agentkernel/knowledgebase/base.py (the ABC, the capability gates, schema())ak-py/src/agentkernel/knowledgebase/model.py (KnowledgeCapabilities, record typing)ak-py/src/agentkernel/knowledgebase/errors.py (the error hierarchy)ak-py/src/agentkernel/knowledgebase/knowledgebuilder.py (tool gating)ak-py/src/agentkernel/knowledgebase/document.py and store/base.py (document-shaped backends)ak-py/src/agentkernel/knowledgebase/okf/manager.py (the reference document backend)Create a new file:
ak-py/src/agentkernel/knowledgebase/<backend>.py
Use lowercase file names (for example qdrant.py, milvus.py, elasticsearch.py).
KnowledgeBaseImplement a concrete class that extends KnowledgeBase:
from typing import Any, Iterable, List, Mapping
from .base import KnowledgeBase, Record
from .model import KnowledgeCapabilities
class MyBackendManager(KnowledgeBase):
def __init__(self, name: str = "", description: str | None = None, **kwargs):
# Declare only what this backend actually supports: an undeclared operation
# raises KnowledgeCapabilityError rather than returning an empty result.
super().__init__(
capabilities=KnowledgeCapabilities(
kinds=["vector"],
search=True,
search_mode="semantic",
writable=True,
),
name=name,
)
self.name = name
self.description = description or "my backend"
self._client = None
self.connect(**kwargs)
@property
def backend_name(self) -> str:
return self.name if self.name else "mybackend"
def connect(self, **kwargs) -> None:
# Initialize backend client and verify connectivity.
self._client = ...
def write(self, records: Iterable[Record], **kwargs) -> None:
for record in records:
text = str(record.get("text", "")).strip()
metadata = dict(record.get("metadata", {}))
if not text:
continue
# Persist text + metadata using backend-native API.
self._client.store(text=text, metadata=metadata)
def search(self, query: str, limit: int = 3, **kwargs) -> List[Mapping[str, Any]]:
rows = self._client.search(query=query, limit=limit)
return [{"text": row["text"], "metadata": row.get("metadata", {})} for row in rows]
def get_description(self) -> str:
return f"{self.backend_name}: {self.description}"super().__init__(capabilities=...) is required — the base takes no zero-argument form. Pass name
too so a rejected declaration names your backend rather than the class.
backend_name, connect and get_description are the only abstract members. Each retrieval and
write operation is optional, and the declaration decides which ones you must implement:
| Declare | Implement | Serves |
|---|---|---|
search | search(query, limit) | read_kb and search_kb |
query + query_language | query(statement, limit) | read_kb |
fetch | fetch(ids) | fetch_kb |
browse | browse(path, limit) | browse_kb |
writable | write(records) | write_kb |
derives_schema | _derived_schema() | get_schemas without an add_schema() call |
Two fields are descriptive rather than gating: kinds is an open taxonomy (vector, structured,
graph, document, …) and search_mode ("semantic" / "lexical") is advisory — it does not imply
search, and declaring search does not require it.
Rules KnowledgeBase.__init__ enforces:
search / query / fetch / browse / writable must be True.query=True requires a query_language ("cypher", "sql", …), and a query_language requires
query=True.KnowledgeBase.validate_capabilities(capabilities, subject) is a static method, so a declaration can
be checked without constructing a backend — which is how the contract suite exercises it.
Never implement read(). There is no such method on the ABC, and one defined on your subclass is
never called. The routing it used to do lives in the read_kb tool, which reaches query() when you
declared query and search() otherwise — which is what lets one tool serve every backend.
search_kb's gate is the same shape as the other two: any backend declaring search. For a
search-only backend it therefore reaches the same search() that read_kb does. That redundancy is
deliberate — the two tools differ in what they promise, not in what they reach — and it is what lets a
backend with no query language still advertise relevance retrieval by name.
If the backend derives its own schema, declare derives_schema=True and return a non-empty mapping
from _derived_schema(); the contract suite fails a backend that declares one without the other.
schema() writes capabilities last and unoverridably, so a deployment cannot contradict the
declaration through add_schema().
All reads must return normalized rows compatible with KnowledgeBuilder:
{"text": str, "metadata": dict}All writes accept the same shape through write(records=[...]).
If the provider result is not in this shape, normalize inside search() / query() / fetch() / browse().
model.py names the shape in two TypedDicts — KnowledgeRecord (text, metadata) and
KnowledgeMetadata (id, source, title, kind, trust, stale, links). They are
documentation-only. Record = Mapping[str, Any] stays the annotation on every signature, nothing
validates them at runtime, and a backend is free to carry keys beyond the conventional set. Use them to
decide what to name your metadata, not as a schema to enforce.
One key is load-bearing: a backend declaring fetch must put a comma-free id in every record's
metadata. format_results() prefixes each line with it so the agent can feed a result straight back
into fetch_kb, and fetch_kb splits its ids argument on ,. KnowledgeBaseContract asserts this;
nothing checks it at runtime.
If the backend is read-only, say so in the declaration and implement nothing:
super().__init__(
capabilities=KnowledgeCapabilities(kinds=["structured"], query=True, query_language="sql", writable=False),
name=name,
)KnowledgeBase.write() then raises KnowledgeCapabilityError(backend_name, "write") on its own, and
KnowledgeBuilder gates write_kb before it ever reaches you. Do not override write() to raise —
that only duplicates the base — and never silently ignore writes. The same holds for every other
operation: leave undeclared ones unimplemented rather than raising by hand.
Raise into the hierarchy in errors.py, not out of it:
KnowledgeError is the base every knowledge-base failure subclasses.KnowledgeCapabilityError is an undeclared operation. It is deliberately not a
NotImplementedError: that would be indistinguishable from an unimplemented abstract method, whereas
this is a declaration mismatch the tool boundary is expected to catch and explain.KnowledgePathError is a path that escapes a store namespace or is unusable as an identity.Finding nothing is not a failure. A read matching no records returns []; a document that cannot be
parsed is skipped with a diagnostic. Reserve exceptions for failures of the machinery.
DocumentStoreIf your records are documents at paths, subclass DocumentKnowledgeBase rather than KnowledgeBase
and let a DocumentStore supply the bytes. That splits the two axes — storage and representation — so
one backend serves the same collection from a local directory in development and an object store in
production, with no code change. OKFManager (okf/manager.py) is the reference implementation.
class MyDocBackend(DocumentKnowledgeBase):
def __init__(self, store: DocumentStore, name: str = "") -> None:
super().__init__(
store=store,
capabilities=KnowledgeCapabilities(kinds=["document"], search=True, fetch=True, browse=True, writable=True),
name=name,
)What the base gives you, and what it does not:
and. The store's writable is intersected with your declaration, so the
more restrictive side wins: a read-only store beats a backend willing to write. This is why
capabilities are per instance, not per class._read_document(path) maps absence to None, not an exception — FileNotFoundError and other
OSErrors (a browse record fed back into fetch reaches open() on a directory) become a logged
warning and an empty answer. KnowledgePathError deliberately propagates... segments, absolute paths, and symlinks
escaping a local root are refused on access and skipped during traversal. Decide per operation what
to do with the refusal — dropping one path out of a fetch list and refusing a whole write are
different answers — but never re-implement the check.DocumentStore.from_uri() accepts a bare path, file://,
s3://bucket/prefix, and python:pkg.mod.ClassName for a bring-your-own store. Take a
DocumentStore in your constructor; do not take a path and build the store yourself.connect()ValueError messages for missing settingsclose() if the backend has sockets, cursors, or open sessionsUpdate ak-py/pyproject.toml with a new optional dependency group:
[project.optional-dependencies]
mybackend = [
"provider-sdk>=x.y.z",
]Keep dependency groups narrow and provider-specific.
Two cases the template does not cover:
pyyaml is a core
dependency. Do not invent an extra for a group that would be empty.boto3 arrives through S3DocumentStore and the existing
aws extra, not through the backend that composes it.Then decide whether the backend belongs in knowledgebase/__init__.py's _LAZY_EXPORTS. The rule is
the reason ChromaManager / Neo4jManager / StarburstManager are deliberately not exported: a
module that imports its SDK at module import would make that SDK a hard requirement the moment an agent
touched the name, even lazily. Export the name only if importing your module pulls no optional
dependency; otherwise leave callers to import it from its own module, and say so in its docstring. If
you do export it, add the TYPE_CHECKING mirror entry too.
Add or update example code under examples/cli/knowledgebase/openai/ showing:
.add_schema(...) — unless the backend declares derives_schema=True,
in which case the example should contain no add_schema() call at all; that absence is what the flag
buys, and the OKF demo demonstrates itKnowledgeBuilder([...], semantic_map=...)OpenAIToolBuilder.bind(kb.build())Reference pattern:
examples/cli/knowledgebase/openai/chromadb/demo.pyexamples/cli/knowledgebase/openai/neo4j/demo.pyexamples/cli/knowledgebase/openai/starburst/demo.pyexamples/cli/knowledgebase/openai/okf/demo.py (document store composition, derives_schema, gating)examples/cli/knowledgebase/openai/multi/demo.pyDocument the backend in:
docs/docs/advanced/knowledge-bases.mddocs/docs/core-concepts/overview.md (if backend list appears there)docs/src/pages/features.tsx (its description and highlights name every backend) and the Knowledge Base line of the What's New tip in docs/docs/intro.mdInclude:
Also add the example to the demo and README lists in docs/docs/advanced/knowledge-bases.md and
docs/docs/examples/overview.md, and to the backend enumerations in README.md, ak-py/README.md,
docs/docs/intro.md and docs/docs/installation.md — those lists are the ones that silently go stale.
The docs website carries more hard-coded backend lists, all of which need the new name:
docs/src/components/*/data.tsx: a tile in the Memory, knowledge & data row of IntegrationsMarquee/data.tsx (role Vector knowledge, Graph knowledge, or SQL knowledge; href to the knowledge base docs; logo or react-icons/si glyph), pick("<tile name>") on the Memory & knowledge card in ArchitectureOverview/data.tsx, and the Knowledge Bases card's tags and description under the Remember tab in FeatureExplorer/data.tsx (logo sourcing and the build check: ak-dev-sync-docs-from-branch, Docs-Site Landing and Features Pages)docs/src/pages/features.tsx — the Knowledge Bases card's description and its highlightsdocs/src/pages/developer.tsx — the Knowledge Bases items arraydocs/src/pages/ai-engineer.tsx — the Knowledge Bases items arrayUnit tests under ak-py/tests/ are the primary requirement, and a contract run is mandatory. The
tier has ten test_knowledgebase* modules to model yours on, plus the knowledgebase/testing.py
contract module they share; the demo test beside the example
(examples/cli/knowledgebase/openai/*/demo_test.py) is additional, not a substitute.
1. Subclass the reusable contract. agentkernel.knowledgebase.testing holds
KnowledgeBaseContract, DocumentStoreContract and the dependency-free FakeKnowledgeBase the
knowledge-base contract is proven against. It ships in the package, so an out-of-tree backend can
subclass it too. Register your backend in ak-py/tests/test_knowledgebase_contract.py:
from agentkernel.knowledgebase.testing import KnowledgeBaseContract
class TestMyBackendContract(KnowledgeBaseContract):
@pytest.fixture
def knowledge_base(self):
return MyBackendManager(...) # mock the provider clientEvery assertion is gated on your own declaration, so the contract adapts to what you declared rather
than demanding a shape you did not claim. Override the input hooks (search_query, query_statement,
browse_path, write_probe, declared_ids) when the defaults do not suit the backend.
The contract classes are deliberately not named Test* and the module is not named test_*, so
pytest collects neither on its own — keep that convention if you add one.
2. Add a DocumentStoreContract subclass if you added a store, as
ak-py/tests/test_knowledgebase_stores.py does for the local and S3 stores.
3. Add a module for the backend's own behavior. Cover:
text + metadataKnowledgeCapabilityError (the base does this; the
test guards against an accidental override)backend_name uniqueness assumptions and descriptive output_derived_schema() returning a non-empty mapping, if you declared derives_schema4. If you exported the name, extend ak-py/tests/test_knowledgebase_exports.py — it asserts every
__all__ entry resolves and that no optional SDK lands in sys.modules on import. That test is the
gate a new export has to pass.
Prefer mocked provider clients to avoid flaky external calls.
Validate that your backend works with KnowledgeBuilder.build() and tools:
get_schemas() returns your backend schema, and it carries a capabilities key matching your
declaration — written last by schema(), so add_schema() cannot contradict itget_all_kb_descriptions() includes your backend's descriptionread_kb() routes correctly to your backend name, reaching query() if you declared query and
search() otherwisewrite_kb() behaves as expected (or returns a readable capability message, not an exception)fetch_kb if you declared fetch, browse_kb if
you declared browse, search_kb if you declared searchderives_schema, get_schemas() works with no add_schema() call anywhereak-py/src/agentkernel/knowledgebase/KnowledgeBase — or DocumentKnowledgeBase over a DocumentStore for
document-shaped knowledge — and implements backend_name, connect, get_descriptionsuper().__init__(capabilities=..., name=name) declares only what the backend actually supports,
and every declared operation is implemented — the declaration and the implemented set agreeread() override; no hand-written raise for an undeclared operation{"text", "metadata"} records, with a comma-free id if fetch is
declaredderives_schema and a non-empty _derived_schema() either both present or both absentKnowledgeError hierarchyak-py/pyproject.toml — or deliberately noneknowledgebase/__init__.py (_LAZY_EXPORTS plus the TYPE_CHECKING
mirror), and it pulls no optional SDKexamples/cli/knowledgebase/openai/IntegrationsMarquee/data.tsx), pick() chip on the Memory &
knowledge card (ArchitectureOverview/data.tsx), Knowledge Bases card tags (FeatureExplorer/data.tsx)KnowledgeBaseContract subclass registered in ak-py/tests/test_knowledgebase_contract.py and
green (plus DocumentStoreContract for a new store)ak-py/tests/ for connect, each declared operation, and constraintsak-py/tests/test_knowledgebase_exports.py extended if the name is exportedKnowledgeBuilder tools, including which gated tools appear© 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-knowledgebase-integration of yaalalabs/agent-kernel.
Open the folder on GitHubat commit e03a602
Ak Dev New Knowledgebase Integration 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 Knowledgebase Integration this skillyaalalabs/agent-kernel | 191 | — | ~5.1k | Automated safety check: Pass | Apache-2.0 | |
| Capture Conversationoutline/outline | 41k | — | ~474 | Automated safety check: Pass | Custom licence | |
| Project CairniBlinkQ/project-cairn | 235 | 2 repos | ~861 | Automated safety check: Pass | MIT | |
| LLM Wiki Knowledge GraphEgonex-AI/Understand-Anything | 86k | 1 repos | ~1.5k | Automated safety check: Pass | MIT | |
| Find And Citeoutline/outline | 41k | — | ~537 | Automated safety check: Pass | Custom licence | |
| Xhs Virtual Productchenjin-cmd/xhs-virtual-product | 727 | — | ~862 | Automated safety check: Pass | MIT |
outline/outline
Save the current conversation, a decision, or a set of notes as a document in an Outline collection; use when the user wants to keep what was discussed in their knowledge base.
iBlinkQ/project-cairn
Standardize how an AI-collaboration project turns work into reusable knowledge.
Egonex-AI/Understand-Anything
Detects a Karpathy-pattern LLM wiki and builds an interactive knowledge graph with entities, implicit relationships and topic clusters.
outline/outline
Answer questions from the Outline knowledge base with quotes and links to the source documents; use when the user asks what the team knows, documented, or decided about a topic.
chenjin-cmd/xhs-virtual-product
This skill helps plan, select, produce, and market Xiaohongshu (RED) virtual/digital products — templates, knowledge bases, test tools, study materials.
VectifyAI/OpenKB
A skill your agent uses when the user asks about content in their OpenKB knowledge base — research topics, concepts compiled from their documents, cross-document synthesis — or mentions openkb, an…
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 guardrail provider 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.
Categories
Step-by-step guide for adding a new knowledge base backend to Agent Kernel. Ak Dev New Knowledgebase Integration is an agent skill from yaalalabs/agent-kernel. Step-by-step guide for adding a new knowledge base backend to Agent Kernel.
Ak Dev New Knowledgebase Integration fits situations like: you need to integrate a new storage system with the KnowledgeBase interface and expose it through KnowledgeBuilder tools; tasks that involve Knowledge bases.
Run `npx skills add yaalalabs/agent-kernel --skill ak-dev-new-knowledgebase-integration -a claude-code`. Or copy the skill folder (.agents/skills/ak-dev-new-knowledgebase-integration in yaalalabs/agent-kernel) into .claude/skills/ak-dev-new-knowledgebase-integration in your project. Claude Code loads it when a task matches its description.
Run `npx skills add yaalalabs/agent-kernel --skill ak-dev-new-knowledgebase-integration -a codex`. Or copy the skill folder (.agents/skills/ak-dev-new-knowledgebase-integration in yaalalabs/agent-kernel) into .agents/skills/ak-dev-new-knowledgebase-integration 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-knowledgebase-integration -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-knowledgebase-integration, .gemini/skills/ak-dev-new-knowledgebase-integration, .github/skills/ak-dev-new-knowledgebase-integration and .opencode/skills/ak-dev-new-knowledgebase-integration in your project.
SKILL.md names no scripts, command-line tools or credentials: Ak Dev New Knowledgebase Integration is instructions for the agent only. Our summary lists: Python 3.
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 Knowledgebase Integration 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 5.1k tokens (SKILL.md is roughly 20k 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 Knowledgebase Integration: Capture Conversation (outline/outline, 41k stars), Project Cairn (iBlinkQ/project-cairn, 235 stars), LLM Wiki Knowledge Graph (Egonex-AI/Understand-Anything, 86k stars) and Find And Cite (outline/outline, 41k 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 191 GitHub stars. The repository holds 23 skills in this directory. The repository was last updated on October 8, 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.