Generated banner for Open Knowledge Format for Crossplane v2
Generated logo for Open Knowledge Format for Crossplane v2

Open Knowledge Format for Crossplane v2

LLM wiki kit

First committed by jkroepke

Published in jkroepke/okf-crossplane-v2. Publisher page

37 GitHub stars

What it is

LLM-wiki in OKF (Open Knowledge Format) for Crossplane v2
— the description by jkroepke

AutoGineer overview, from the brain’s own files

The okf-crossplane-v2 repository provides a versioned, source-backed knowledge catalog designed to help AI agents and developers navigate the Crossplane v2 ecosystem. It aggregates information from Go API types, CRDs, package metadata, and documentation into a structured format. By utilizing the Open Knowledge Format (OKF), it enables agents to perform precise lookups on providers, composition functions, and API definitions. The project includes a dedicated MCP server that allows agents to query live repository data, such as CRD definitions, versioning, and examples, ensuring that the information retrieved is grounded in specific, versioned source code.

How it works

Memory model: LLM wiki

AutoGineer overview, from the brain’s own files

The system organizes technical knowledge into a catalog of Markdown files stored in the catalog folder. These files contain OKF metadata and provenance links. An MCP server, which can be self-hosted or used via a public endpoint, ingests this catalog into a DuckDB instance. Agents interact with this data through specific tools that resolve provider versions, search CRDs, and retrieve documentation or examples. The system relies on specialized researcher agents defined in the .agents folder to maintain and validate the knowledge base, ensuring that facts are linked to stable source code and documentation.

Folders
FolderRoleFiles
.codexagent-config25
.githubagent-config2
skillsagent-instructions1
.agentsfolder37
.codex-pluginfolder1
.okffolder2
.pifolder27
.pluginfolder1
catalogfolder120
mcpfolder12

Requirements

Apps: Docker

API keys (by name): GITHUB_TOKEN

Works with: Claude Code, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Amp, Cline, JetBrains Junie, Devin (ex-Windsurf)

Set it up

  1. Download the brain as a ZIP and unzip it where you keep your notes or project: https://mp-staging.autogineer.com/agent-brains/jkroepke/okf-crossplane-v2/download
  2. Point Claude Code at .codex-plugin/plugin.json: it does not read that file on its own.

  3. cd okf-crossplane-v2 && claude

  4. AutoGineer scanned these files at commit df24ac2.

  5. Add crossplane-v2-okf to .mcp.json:

    {
      "mcpServers": {
        "crossplane-v2-okf": {
          "type": "http",
          "url": "https://crossplane.mcp.jkroepke.de/mcp"
        }
      }
    }
    
  6. Or add it with the Claude Code CLI:

    claude mcp add --transport http crossplane-v2-okf https://crossplane.mcp.jkroepke.de/mcp
  7. Your data is sent to crossplane.mcp.jkroepke.de.

  8. First committed by jkroepke. Published in jkroepke/okf-crossplane-v2. Licence: Apache License 2.0.

Usage

AutoGineer overview, from the brain’s own files

  • Querying CRD definitions for specific Crossplane providers
  • Retrieving versioned examples for composition functions
  • Resolving stable provider versions and their associated documentation
  • Integrating Crossplane knowledge into AI agent workflows via MCP
“Find the latest version of the AWS provider and list its CRDs.”
The agent uses the get_versions and provider_crd_search tools to return the canonical repository name and a list of available CRDs for the specified provider.
“Show me the definition for the S3Bucket CRD in the latest AWS provider.”
The agent retrieves the YAML definition of the requested CRD using the provider_crd_get_definition tool, ensuring the output is token-efficient.

Documentation by jkroepke

Image: CI Image: GitHub license Image: GitHub Repo stars Image: BundleDex

Open Knowledge Format for Crossplane v2

This repository provides a structured knowledge catalog for the Crossplane v2 ecosystem using Open Knowledge Format v0.2.

The goal is to make Crossplane concepts, APIs, providers, composition functions, documentation, and practical examples easier to discover and understand. The catalog is designed for both humans and knowledge-aware tools.

Installation

WARNING
The public MCP server is a temporary early-access service for early adopters. Its availability is not guaranteed, and it may change or be removed without notice. It is intended to bridge the current tooling gap until the OKF ecosystem provides practical, end-user-friendly solutions that run locally. For reliable or production use, self-host the included container.

Install the companion skill and hosted OKF-aware MCP server together as a plugin for every detected supported agent:

npx plugins add jkroepke/okf-crossplane-v2

Pass --target codex to install only in Codex. Restart the selected agents after installation.

Alternatively, install the hosted OKF-aware MCP server globally:

npx add-mcp \
  https://crossplane.mcp.jkroepke.de/mcp \
  --name crossplane-v2-okf \
  --global

Then install the companion skill so the agent prefers this bundle over generic documentation providers for Crossplane v2 questions:

npx skills add jkroepke/okf-crossplane-v2 \
  --skill crossplane-v2-okf \
  --global

Both standalone installers detect supported agents and ask where the integration should be installed. Restart the selected agent after installation.

The public MCP health endpoint is available at https://crossplane.mcp.jkroepke.de/healthz.

Self-hosting the MCP server

The included container fetches this repository, ingests catalog/ into a DuckDB catalog, and serves the okf-mcp tools over Streamable HTTP.

docker compose up --build --detach

To authenticate the server's GitHub requests, export GITHUB_TOKEN before starting the container. The token is optional.

The local MCP endpoint is http://127.0.0.1:8000/mcp. Put it behind a TLS reverse proxy for crossplane.mcp.jkroepke.de.

The catalog is refreshed at container startup. If fetching or ingestion fails and a previous catalog exists in the volume, the server continues with that last successful catalog.

The MCP tools are read-only, but the public endpoint has no application-level authentication. Apply request limits and access controls at the reverse proxy when required.

Crossplane package tools

The server adds these tools backed by OSS GitHub repositories:

  • get_versions(name) resolves an OSS provider or function repository and returns its canonical repository name, versions.latest, a compact list of recent stable versions, and tag counts. Pass the returned provider name to the CRD tools.

  • provider_crd_search(provider_name, provider_version, crd_search_term) searches CRDs in one explicit provider package version. The search term supports case-insensitive shell-style wildcards.

  • provider_crd_get_definition(provider_name, provider_version, crd_name, path?) returns the complete CRD definition as token-efficient YAML. Use a dotted path such as .spec or .spec.versions[0] to return only a subtree.

  • provider_crd_get_examples(provider_name, provider_version, crd_name) returns GitHub repository paths for generated and handwritten examples. Without an API version, it selects the latest served CRD API version, for example examples-generated/namespaced/ec2/v1beta2/route.yaml.

  • provider_crd_get_terraform_docs(provider_name, provider_version, crd_name) returns the Terraform provider repository, version, and documentation path. It reads the Crossplane provider Makefile and the generated controller mapping instead of inferring the Terraform resource name.

crd_name accepts a Kind, group/Kind, group/version/Kind, or a YAML fragment containing apiVersion and kind.

Use an OSS GitHub repository name such as crossplane-contrib/provider-upjet-aws or crossplane-contrib/function-go-templating. A small set of historical package aliases is mapped to their known OSS source repositories; unmapped upbound/... names are rejected rather than guessed.

The CRD tools require an explicit provider version. The value latest is also supported and selects the highest stable semantic-version Git tag. Self-hosted deployments need outbound HTTPS access to GITHUB_API_URL and GITHUB_RAW_URL.

Successful remote fetches are cached in memory. Git tag listings use the configurable short FETCH_CACHE_TTL_SECONDS (default: 300 seconds); CRDs, definitions, examples, and Terraform metadata resolved at immutable Git tags are cached for 30 days. FETCH_CACHE_MAX_ENTRIES (default: 512) bounds memory use.

Why this repository exists

Crossplane knowledge is distributed across many repositories and kinds of sources:

  • Go API types and runtime implementations

  • CustomResourceDefinitions and OpenAPI schemas

  • package metadata

  • tests and executable examples

  • official Crossplane documentation

  • community implementations and real-world composition examples

Upjet-based providers add another layer. Their Crossplane managed resources are generated from Terraform provider resources, while the Terraform documentation often contains more details about the underlying cloud APIs and configuration fields.

This repository connects these sources in one versioned catalog without replacing the original documentation.

Knowledge structure

Knowledge is stored as small Markdown documents under catalog/. Each document represents an independently useful concept and includes OKF metadata, provenance in sources, keyed claim footnotes, and relationships to related concepts.

Repository validation pins okf-ingest 0.11.0, which adds OKF v0.2 core support, including generated.at freshness fallback and preservation of the new frontmatter families (upstream support commit).

If the task is to build a Crossplane v2 Composition, start with the Composition developer route. It routes agents through separate API/provider, pipeline/security, and testing/packaging concepts without pretending that provider-specific schemas or credentials are universal.

The catalog is intended to be:

  • Source-backed: important statements link to source code, schemas, tests, examples, or official documentation.

  • Version-aware: sources are tied to specific repository revisions.

  • Navigable: overview documents connect related concepts without requiring readers to know the source repository layout.

  • Incremental: providers, functions, services, documentation areas, and example repositories can be added in focused batches.

License

This project is licensed under the Apache License 2.0.

AGENTS.md

Repository guidance

This repository contains an Open Knowledge Format (OKF) knowledge bundle for the Crossplane v2 ecosystem.

Default behavior

  • The mcp/ directory contains the project-owned MCP server; a customer MCP server is out of scope.

  • Do not start the OKF generation or enrichment workflow automatically.

  • Run the normal workflow only when the user explicitly invokes $okf, /skill:okf, or /okf, or selects a feature candidate returned by an explicitly invoked $okf-updates, /skill:okf-updates, or /okf-updates workflow.

  • Run update discovery only when the user explicitly invokes $okf-updates, /skill:okf-updates, or /okf-updates.

  • Keep this file limited to repository-wide rules. The shared workflows live in .agents/skills/okf/ and .agents/skills/okf-updates/.

  • Canonical specialist instructions live in .agents/agents/<name>/AGENT.md.

  • Runtime adapters in .codex/agents/ and .pi/agents/ contain only runtime metadata and a reference to the matching canonical instruction file. Do not duplicate role instructions in runtime adapters.

Ownership

  • The root or parent agent owns planning, source selection, file edits, validation, commits, and pull request updates.

  • Subagents are read-only researchers. They return compact evidence packets and never edit the catalog.

  • Use at most three direct subagents at once. Do not create nested subagent trees.

  • When running in Pi, use only the project agents whose names start with okf-. Their tool allowlists intentionally omit editing tools and nested delegation.

  • The $okf-updates parent resolves locked and latest stable component identities before delegation. It must not start an update researcher when no newer stable identity exists.

Change workflow

  • For every content addition or update, create a new dedicated branch from the latest default branch before editing. Never add or update content directly on the default branch.

  • Keep the complete related change set on that branch, including catalog documents, source locks, claim ledgers, indexes, logs, and required agent or source-profile changes.

  • Run deterministic validation and the okf-reviewer before committing the changes.

  • Resolve all blocking review findings and rerun targeted validation. Continue only after the reviewer returns APPROVED.

  • After the final review fixes, run mise run lint before creating any commit. Fix every lint error and rerun the command until it succeeds.

  • After reviewer approval and a successful lint run, commit every intended change. Do not leave generated or supporting files uncommitted.

  • Create commits with a Developer Certificate of Origin sign-off by default by using git commit --signoff (or git commit -s). Omit the sign-off only when the user explicitly requests an unsigned commit.

  • Push the branch and open a pull request for the reviewed commit set. Do not merge the pull request unless the user explicitly requests it.

  • $okf-updates discovery is read-only. It must not update source locks or catalog files before the requester selects a candidate.

  • After selection from $okf-updates, process each selected feature independently through the normal $okf workflow. Never include an unselected feature implicitly.

Domain routing

  • Use okf-crossplane-core-docs-researcher for current stable Crossplane Core documentation.

  • Use okf-crossplane-core-code-researcher for current stable Crossplane Core CRDs under cluster/crds.

  • Use okf-crossplane-core-design-researcher only as a last-resort historical-context source for a specific Core feature already identified from current stable documentation or implementation evidence. Never use it for general feature discovery.

  • Use okf-crossplane-cli-update-researcher only for stable-release CLI update discovery, including new commands, flags, project workflows, rendering, packaging, and validation behavior.

  • Use okf-xprin-update-researcher only for stable-release xprin update discovery, including new assertion, suite, rendering, and test-runner capabilities.

  • Use okf-function-go-templating-researcher for user-facing function-go-templating installation, input schema, examples, and additional template functions.

  • Use okf-function-go-templating-sprig-researcher for the exact Sprig version exposed by the selected stable function-go-templating release.

  • Use okf-function-go-templating-project-history-researcher for human-authored issues and pull requests related to that function.

  • Use okf-function-sdk-go-researcher for developer-facing crossplane/function-sdk-go APIs, helpers, examples, and testing utilities.

  • Use okf-function-tag-manager-researcher for user-facing crossplane-contrib/function-tag-manager installation, input schema, tag-management behavior, supported-resource filters, and examples.

  • Use every matching *-update-researcher only from the explicit $okf-updates workflow and only after its component identity changes.

  • Every composition function must have its own canonical instruction files and matching Codex and Pi adapters before its OKF concepts are generated.

  • Use the generic okf-crossplane-researcher only for domains without a dedicated agent, such as CLI, runtime, tools, native providers, and testing tools.

  • The Crossplane CLI is a separate catalog domain and is not part of Crossplane Core.

Evidence rules

  • Use source code, API types, generated schemas, tests, and package metadata to establish API shape and runtime behavior.

  • Use official Crossplane documentation to establish documented terminology, guidance, supported workflows, lifecycle states, and versioned user-facing examples.

  • Resolve the latest stable Crossplane release before Core research and use the matching stable documentation major.minor series.

  • Resolve the highest stable semantic-version tag before researching a composition function. Do not assume a sample tag and do not silently fall back to main.

  • Record explicit Alpha, Beta, Preview, Stable, or Deprecated labels from selected sources when available.

  • Without an explicit feature-state label, treat a served v1alpha* API as Alpha and a served v1beta* API as Beta. Such APIs must never be recorded as Stable.

  • For APIs without an alpha or beta served version, default the feature state to Stable unless selected sources explicitly label it Alpha, Beta, Preview, or Deprecated.

  • Apply the served-version default to the API or capability that actually owns that version. Do not transfer an input API's Beta state to the whole Function package, and do not transfer an unlabelled package's state to its input API.

  • For non-API software, packages, helpers, and implementation behavior without an explicit lifecycle label, record Not stated by selected sources. A highest stable semantic-version tag selects released source; it does not establish product maturity.

  • A pattern that requires multiple APIs or explicitly labelled capabilities inherits the least stable required surface. State that dependency as the basis instead of assigning the pattern the package's unrelated maturity.

  • Never use v1 alone as proof of Stable; it only permits the Stable default when no selected source or served API version indicates a non-stable state.

  • Crossplane Core design documents under crossplane/crossplane/design/** are historical design-context sources only. Pin the current main commit and record the document status and any accuracy warning.

  • A design document, including an Accepted design, does not establish current implementation, released behavior, supported guidance, or feature maturity.

  • Qualify every design-derived current fact against selected stable source code, CRDs, schemas, tests, or matching stable documentation. Keep uncorroborated material labelled as historical design intent or unresolved context.

  • Never use design documents to discover features or derive Alpha, Beta, Preview, Stable, or Deprecated state.

  • Exclude Claims, claim references, deprecated CompositeResourceDefinition v1, legacy v1 XR semantics, and sections explicitly labelled v1 Composite Resources (Legacy) from legacy-free output.

  • Do not treat every apiextensions.crossplane.io/v1 resource as legacy. Require explicit deprecation metadata or a legacy label.

  • Project-history evidence must exclude bots and apps and record a research timestamp.

  • Open issues are reports. Open or unmerged pull requests are proposals. Neither establishes released behavior.

  • A merged pull request belongs to a selected release only when its merge commit is contained in that release tag. A closed issue is not automatically fixed.

  • Treat third-party examples as illustrative. They may describe their own implementation but must not be the sole evidence for general Crossplane behavior or recommended practice.

  • Corroborate reusable third-party patterns with primary sources or official documentation.

  • Verify licensing and attribution before copying or adapting third-party material. Otherwise summarize and cite it.

  • Pin every released source repository to an immutable commit before generating knowledge.

  • Cite source files with commit-pinned GitHub URLs and line ranges whenever practical.

  • Do not convert assumptions, name similarity, issue reports, proposals, design intent, or undocumented behavior into facts.

  • For Upjet resources, do not infer a Terraform mapping from names alone. Require Upjet configuration or generated metadata that identifies the Terraform resource.

  • Preserve disagreements between source code, documentation, and historical design as explicit notes instead of silently choosing one.

Output rules

  • Generated knowledge belongs under catalog/.

  • Target OKF v0.2. Declare okf_version: "0.2" only in the bundle-root catalog/index.md frontmatter.

  • Every non-reserved OKF Markdown document must contain parseable YAML frontmatter with a non-empty type field.

  • index.md and log.md follow the OKF reserved-file rules.

  • Record the current representation with generated.by and generated.at; do not emit the superseded v0.1 timestamp field.

  • Put provenance in frontmatter sources. Give each claim-bearing source a stable id, cite claims with matching keyed Markdown footnotes, and do not add the superseded v0.1 # Citations list.

  • Add verified only for an actual verification event. Do not infer human review from authorship, commits, pull requests, or reviewer execution.

  • Prefer small concept documents, structural Markdown, progressive disclosure, and citations over broad narrative pages.

Catalog example convention

  • For fictional, human-orderable composite-resource examples, use plattform.example.com as the placeholder for a team-owned group (for example, plattform.example.com/v1alpha1). In real deployments, replace it with <department>.<company-domain>. Keep real product and Kubernetes API groups unchanged. This is an illustrative authoring convention, not a Crossplane or Kubernetes requirement.

242 files

Advantages

  • Provides version-aware knowledge by linking facts to specific repository revisions. evidence: README.md
  • Connects distributed sources like Go APIs, CRDs, and documentation into a single navigable catalog. evidence: README.md

Limitations

  • The public MCP server is provided as an early-access service and is not intended for production use without self-hosting. evidence: README.md
  • Requires explicit provider versions for CRD tools, as it does not guess or infer versions automatically. evidence: README.md

Security

Risk level: Low risk

This brain runs

Agent instructions that run or fetch something (26)

  • .agents/agents/okf-function-go-templating-researcher/AGENT.md: Write for Crossplane users who want to install and use `function-go-templating` in Compositions.
  • .agents/agents/okf-reviewer/AGENT.md: `mise run lint` succeeds after the final fixes and before the root or parent agent creates a commit.
  • .agents/agents/okf-reviewer/AGENT.md: Run `mise run lint` as the final validation command.
  • .agents/skills/okf-open-knowledge-format/SKILL.md: If the user agrees to install:
  • .agents/skills/okf-open-knowledge-format/SKILL.md: uv tool install okflint
  • .agents/skills/okf-open-knowledge-format/SKILL.md: pip install okflint
  • .agents/skills/okf-open-knowledge-format/SKILL.md: kcmd push --dry-run
  • .agents/skills/okf-updates/SKILL.md: Run this workflow only after the user explicitly invokes `$okf-updates`, `/skill:okf-updates`, or `/okf-updates`.
  • .agents/skills/okf-updates/SKILL.md: Run at most three direct researchers at once.
  • .agents/skills/okf-updates/SKILL.md: A requester reply that selects one or more candidate IDs from this explicitly invoked workflow is explicit permission to run the normal OKF update logic for those candidates.
  • .agents/skills/okf-updates/SKILL.md: Run deterministic validation, `okf-reviewer`, and `mise run lint`.
  • .agents/skills/okf/SKILL.md: Run this workflow only after the user explicitly invokes `$okf`, `/skill:okf`, or `/okf`.
  • .agents/skills/okf/SKILL.md: After all review fixes, run `mise run lint`.
  • .agents/skills/okf/SKILL.md: Commit every intended file only after reviewer approval and a successful lint run.
  • .agents/skills/okf/SKILL.md: Run the Core docs and Core code researchers together when a concept needs both user-facing guidance and exact served API shape.
  • .agents/skills/okf/SKILL.md: Run independent read-heavy research in parallel, with at most three direct agents.
  • .agents/skills/okf/SKILL.md: After all fixes, run `mise run lint` and fix every reported issue.
  • .agents/skills/okf/SKILL.md: The reviewer may return `APPROVED` only after the final lint run succeeds.
  • .agents/skills/okf/SKILL.md: Non-thinking coding models such as Qwen3-Coder-Next can run every project agent without incompatible reasoning controls.
  • .agents/skills/okf/SKILL.md: deterministic validation and `mise run lint` results
  • AGENTS.md: Run the normal workflow only when the user explicitly invokes `$okf`, `/skill:okf`, or `/okf`, or selects a feature candidate returned by an explicitly invoked `$okf-updates`, `/skill:okf-updates`, or `/okf-updates` workflow.
  • AGENTS.md: Run update discovery only when the user explicitly invokes `$okf-updates`, `/skill:okf-updates`, or `/okf-updates`.
  • AGENTS.md: Run deterministic validation and the `okf-reviewer` before committing the changes.
  • AGENTS.md: After the final review fixes, run `mise run lint` before creating any commit.
  • AGENTS.md: After reviewer approval and a successful lint run, commit every intended change.
  • AGENTS.md: Create commits with a Developer Certificate of Origin sign-off by default by using `git commit --signoff` (or `git commit -s`).

MCP servers (1)

  • .mcp.json (crossplane-v2-okf): https://crossplane.mcp.jkroepke.de/mcp · uses the network
  • Low risk: network-instructions (.agents/skills/okf-open-knowledge-format/SKILL.md:214)

Attribution and licence

First committed by
GitHub avatar of jkroepkejkroepke
Publisher
Jan-Otto Kröpke (Community)
Source
jkroepke/okf-crossplane-v2 · commit df24ac2
Licence
Apache License 2.0 (files served here)
  • ATTRIBUTION.md (written by AutoGineer)
Synced
Contributors
jkroepke

AutoGineer is not affiliated with or endorsed by jkroepke.

Download

The ZIP holds the files AutoGineer serves, with ATTRIBUTION.md and the licence. Download okf-crossplane-v2.zip