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
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.
| Folder | Role | Files |
|---|---|---|
| .codex | agent-config | 25 |
| .github | agent-config | 2 |
| skills | agent-instructions | 1 |
| .agents | folder | 37 |
| .codex-plugin | folder | 1 |
| .okf | folder | 2 |
| .pi | folder | 27 |
| .plugin | folder | 1 |
| catalog | folder | 120 |
| mcp | folder | 12 |
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
- 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
Point Claude Code at .codex-plugin/plugin.json: it does not read that file on its own.
cd okf-crossplane-v2 && claude
AutoGineer scanned these files at commit df24ac2.
Add crossplane-v2-okf to .mcp.json:
{ "mcpServers": { "crossplane-v2-okf": { "type": "http", "url": "https://crossplane.mcp.jkroepke.de/mcp" } } }Or add it with the Claude Code CLI:
claude mcp add --transport http crossplane-v2-okf https://crossplane.mcp.jkroepke.de/mcpYour data is sent to crossplane.mcp.jkroepke.de.
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-v2Pass --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 \
--globalThen 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 \
--globalBoth 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 --detachTo 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.specor.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 exampleexamples-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/skills/okf-open-knowledge-format/references/spec-v02.md
Open Knowledge Format (OKF)
Version 0.2
OKF is an open, human- and agent-friendly format for representing knowledge: the metadata, context, and curated insight that surrounds data and systems. It is designed to be authored by people, generated by agents, exchanged across organizations, and consumed by both.
The format is intentionally minimal: a directory of markdown files with
YAML frontmatter. There is no schema registry, no central authority, and
no required tooling. If you can cat a file, you can read OKF; if you
can git clone a repo, you can ship it.
This document is self-contained: it specifies everything needed to produce and consume OKF v0.2. A summary of what changed from v0.1 is in §13.
1. Motivation
The space of knowledge representation for AI agents is evolving quickly, and many incompatible conventions are emerging. OKF takes the position that knowledge is best represented in commonly accessible, established formats that are:
Readable by humans without tooling.
Parseable by agents without bespoke SDKs.
Diffable in version control.
Portable across tools, organizations, and time.
Increasingly, a knowledge corpus is not authored once and then read: it is continuously written and maintained by agents. When most concepts are machine-generated, a consumer needs answers that a plain markdown-plus-frontmatter convention does not make first-class:
What was this created from, and how was it verified? (provenance)
How much should I trust it? (trust)
Is it still true? (freshness)
Is it the current version? (lifecycle)
Was this number produced the way we said it must be? (attestation)
OKF v0.2 makes provenance, trust, lifecycle, and attestation first-class while keeping the format minimally opinionated. The format is minimally opinionated. It standardizes only the small set of structural conventions needed to make a knowledge corpus self-describing — anything beyond that is left to the producer.
Goals
Define a universal format that producers (people, agents, export pipelines) can write into.
Inform how consumers (agents, UIs, search indexes, deterministic code) should read and traverse it.
Facilitate exchange of knowledge across systems and organizations.
Standardize the small set of frontmatter fields that make an agent-maintained corpus trustable, without prescribing any runtime.
Non-goals
Defining a fixed taxonomy of concept types.
Prescribing storage, serving, or query infrastructure.
Replacing domain-specific schemas (Avro, Protobuf, OpenAPI, and so on). OKF references them; it does not subsume them.
Specifying a packaging or invocation standard for the code an executor or attester points at. OKF fixes the interface, not the packaging.
2. Terminology
Knowledge Bundle (or bundle): A self-contained, hierarchical collection of knowledge documents. The unit of distribution.
Concept: A single unit of knowledge within a bundle, represented as one markdown document. It may describe a tangible asset (a table, an API), an abstract idea (a metric, a business process), or anything in between.
Concept ID: The path of the concept's file within the bundle, with the
.mdsuffix removed.Frontmatter: A YAML metadata block delimited by
---at the top of a markdown file.Body: Everything in the file after the frontmatter.
Link: A standard markdown link from one concept to another, used to express relationships beyond the implicit parent/child hierarchy.
Source: A material a concept derives from, external or internal to the bundle, recorded in the
sourcesfrontmatter field.Provenance: The set of sources a concept derives from.
Credibility signal: An objective, per-source fact (
author,usage_count,last_modified) used to infer trust; OKF records the signals, not a verdict (see §5.1).Actor: A string identifying who or what performed an action, using the convention
<producer>/<version>for agents,human:<id>for people, andprocess:<id>for automated processes (see §7).Trust tier: A level derived from a concept's
verifiedfield: unverified, machine-confirmed, or human-reviewed (see §5.3).Attested Computation: A concept (
type: Attested Computation) carrying a sanctioned way to compute a value, so a consumer can confirm the value was produced by running it (see §10).Executor: Run instructions or code that executes a computation and returns a receipt (see §10.2).
Receipt: The evidence a run returns, shaped by
executor.receipt; a runtime artifact, not stored in the bundle (see §10).Attester: Deterministic (no-LLM) code that inspects a receipt and returns a verdict (see §10.2).
3. Bundle structure
A bundle is a directory tree of markdown files. The directory structure is independent of the domain: producers organize concepts however makes sense for the knowledge being captured.
path/to/bundle/
index.md # Optional. Directory listing for progressive disclosure.
log.md # Optional. Chronological history of updates.
<concept>.md # A concept at the bundle root.
<subdirectory>/ # Subdirectories organize concepts into groups.
index.md
<concept>.md
<subdirectory>/
...A bundle MAY be distributed as:
A git repository (recommended, since it provides history, attribution, and diffs).
A tarball or zip archive of the directory.
A subdirectory within a larger repository.
3.1 Reserved filenames
The following filenames have defined meaning at any level of the hierarchy and MUST NOT be used for concept documents:
| Filename | Purpose |
|---|---|
index.md | Directory listing. See §8. |
log.md | Update history. See §9. |
All other .md files are concept documents.
Tags remain a first-class concept through the tags frontmatter field
(§4.1). OKF does not specify a separate file format for aggregating
documents by tag; a consumer that wants a tag-browsing view can
synthesize one at consumption time by scanning frontmatter.
4. Concept documents
Every concept is a UTF-8 markdown file with two parts:
A YAML frontmatter block, delimited by
---on its own line at the start of the file and a closing---on its own line.A markdown body, containing free-form content.
4.1 Frontmatter
---
type: <Type name> # REQUIRED
title: <Optional display name>
description: <Optional one-line summary>
resource: <Optional canonical URI for the underlying asset>
tags: [<tag>, <tag>, ...] # Optional
# ... trust, lifecycle, provenance, and computation families (see §5, §10)
# ... other producer-defined key/value pairs
---Required:
type: A short string identifying the kind of concept. Consumers use it for routing, filtering, and presentation. Example values:BigQuery Table,BigQuery Dataset,API Endpoint,Metric,Playbook,Reference,Attested Computation.Type values are not registered centrally. Producers SHOULD pick values that are descriptive and self-explanatory; consumers MUST tolerate unknown types gracefully, typically by treating them as generic concepts.
type is the only always-required key; a concept carrying just type is
fully conformant (§11).
Recommended:
title: Human-readable display name. If omitted, consumers MAY derive a title from the filename.description: A single sentence summarizing the concept. Used byindex.mdgenerators, search snippets, and previews.resource: A URI that uniquely identifies the underlying asset the concept describes. Absent for concepts that describe abstract ideas rather than physical resources.tags: A YAML list of short strings for cross-cutting categorization.
The optional provenance, trust, and lifecycle families (§5) and the computation fields for Attested Computation concepts (§10) may also appear.
Extensions: Producers MAY include any additional keys. Consumers SHOULD preserve unknown keys when round-tripping and MUST NOT reject documents with unrecognized fields.
4.2 Body
The body is standard markdown. Producers SHOULD favor structural markdown (headings, lists, tables, fenced code blocks) over freeform prose, since structure aids both human reading and agent retrieval.
There are no required body sections. The following headings have conventional meaning and SHOULD be used when applicable:
| Heading | Purpose |
|---|---|
# Schema | Structured description of an asset's columns/fields. |
# Examples | Concrete usage examples, often as fenced code blocks. |
# Computation | The sanctioned computation of an Attested Computation. See §10. |
Per-claim attribution to external sources uses markdown footnotes keyed to
sources entries rather than a body citations list (§5.1).
4.3 Example: a concept bound to a resource
---
type: BigQuery Table
title: Customer Orders
description: One row per completed customer order across all channels.
resource: https://console.cloud.google.com/bigquery?p=acme&d=sales&t=orders
tags: [sales, orders, revenue]
generated: { by: reference_agent/gemini-2.5-pro, at: 2026-05-28T14:30:00Z }
---
# Schema
| Column | Type | Description |
|---------------|-----------|------------------------------------------|
| `order_id` | STRING | Globally unique order identifier. |
| `customer_id` | STRING | Foreign key into [customers](/tables/customers.md). |
| `total_usd` | NUMERIC | Order total in US dollars. |
| `placed_at` | TIMESTAMP | When the customer submitted the order. |
# Joins
Joined with [customers](/tables/customers.md) on `customer_id`.4.4 Example: a concept not bound to a resource
---
type: Playbook
title: "Incident response: data freshness alert"
description: Steps to triage a freshness alert on the orders pipeline.
tags: [oncall, incident]
generated: { by: human:ahormati, at: 2026-04-12T09:00:00Z }
---
# Trigger
A freshness alert fires when `orders` lags more than 30 minutes behind its
expected SLA. See the [orders table](/tables/orders.md).
# Steps
1. Check the [ingestion job dashboard](https://example.com/dash).
2. ...5. Provenance, trust, and lifecycle
These frontmatter families make "where did this come from," "how much should I trust it," and "is it still current" answerable from frontmatter. All are optional. Their absence carries meaning: an unverified concept is distinguishable from a verified one, but is never rejected (§11).
5.1 Provenance: sources
sources records the materials a concept derives from, external or
internal to the bundle.
sources:
- id: ga4-schema
resource: https://developers.google.com/analytics/bigquery/export-schema
title: GA4 BigQuery Export schema
author: team:ga4-docs
usage_count: 5000
last_modified: 2026-05-30
usage_window: { from: 2026-06-01, to: 2026-06-30 }Each sources entry:
resource: REQUIRED within an entry. Names either a concrete artifact a consumer can follow (an absolute URL, a bundle-relative path, or a path into areferences/subdirectory, §6) or a population or scope descriptor it cannot (for exampleall queries in BigQuery project X).id: Optional. A stable key used to attribute individual claims (see below). SHOULD be present when the body cites the source.title: Optional. Human-readable label for the source.The optional credibility signals
author,usage_count, andlast_modified, described next.
Source credibility signals. OKF records objective, per-source signals
so a consumer can judge how much to trust a concept by judging the sources
it was extracted from. It does not store a credibility score: a score is
subjective, unportable across consumers, and goes stale. Credibility is
inferred from the signals, the same way trust tiers are (§5.3), not
stored. Each signal is optional and lives on a sources entry:
author: Who or what produced the source, in the actor convention (§7). An authority signal.usage_count: How oftenresourcewas exercised (dashboard views, query executions, page reads) overusage_window. An adoption and liveness signal. For a single artifact it is that artifact's own exercise count; for a scope descriptor it is the number of exercises within the scope that touch the concept.last_modified: When the source itself last changed (YYYY-MM-DD). A recency signal, distinct fromgenerated.at(§5.2), which records when the concept was written.usage_window: Written once as a sibling ofsources, it frames everyusage_countwith a{ from, to }date range. A single entry MAY carry its ownusage_windowto override the shared one.
usage_count is a coarse signal. It is comparable at the
alive-versus-dead and order-of-magnitude level, and against a source's own
history over time, but not as a precise cross-kind ranking: a scheduled
query's executions and a human's deliberate dashboard views do not carry
equal weight. Consumers SHOULD read it as liveness and trend, not as a
score.
Lineage is expressed through links, not a dedicated field. When a
resource points at another OKF concept, the derivation edge already
exists in the bundle graph (§6), so a consumer MAY recurse into that
source's own sources and let credibility propagate. External leaf sources
carry only their intrinsic signals. Deeper lineage (an explicit external
derived_from, or data lineage) is out of scope for v0.2.
Per-claim attribution. To attribute a specific claim, use a markdown
footnote whose label is a sources[].id:
The `events_` table is sharded daily as `events_YYYYMMDD`.[^ga4-schema]
[^ga4-schema]: GA4 BigQuery Export schemaThe footnote label is the join key into sources; consumers resolve
attribution through the matching entry, not by parsing the footnote prose.
Labels are keyed rather than positional (sources[0]) because agents
constantly rewrite these documents: a positional index misattributes
silently the moment the list is reordered, whereas a stable id survives
reordering.
5.2 Trust: generated and verified
generated records how the current content was produced. verified
records who or what has confirmed the content against its sources or
resource. They are kept distinct because who wrote a concept need not
be who confirmed it.
generated: { by: reference_agent/gemini-2.5-pro, at: 2026-06-20T22:53:05Z }generated.by: REQUIRED withingenerated. An actor (§7).generated.at: An ISO 8601 datetime marking the content's last meaningful change. Consumers use it to tell a recent edit from a stale fact.
verified:
- { by: human:ahormati, at: 2026-06-25T09:00:00Z }
- { by: process:finance-nightly, at: 2026-06-26T02:00:00Z }verified: A list of verification events, each withby(an actor) andat(an ISO 8601 datetime). Multiple entries capture independent checks, for example a human sign-off plus a nightly process. "How recently" is the latestat.verifiedis independent ofgenerated.at: content can change without re-confirmation, and facts can be re-confirmed without regeneration.A single verifier MAY be written as one
{ by, at }mapping without the list dash. Consumers MUST treat a bare mapping as a one-element list:
verified: { by: human:ahormati, at: 2026-06-25T09:00:00Z }5.3 Trust tiers
Consumers derive a trust tier from verified, lowest to highest:
No
verifiedkey ⇒ unverified.verifiedby non-human:actors only ⇒ machine-confirmed.verifiedby ahuman:<id>actor ⇒ human-reviewed.
A concept with no trust frontmatter is still consumable; consumers MUST NOT reject it (§11). Trust tiers are advisory signals, not access control.
5.4 Lifecycle: status
status: stable # draft | stable | deprecateddraft: not yet reviewed; possibly incomplete.stable: default; ready for consumption.deprecated: kept for links and history; no longer current.
Absent status ⇒ stable.
5.5 Lifecycle: stale_after
stale_after: 2026-09-23 # absolute date; content is stale on/after this dayOptional. An absolute date (YYYY-MM-DD). A concept is stale when
today >= stale_after. An absolute date, not a relative TTL, keeps the
staleness decision a plain date comparison with no reference to when the
concept was read.
6. Cross-linking and paths
6.1 Links between concepts
Concepts MAY link to other concepts using standard markdown links. Two forms are supported:
Absolute (bundle-relative): begins with
/, interpreted relative to the bundle root. This is the recommended form because it is stable when documents are moved within their subdirectory.See the [customers table](/tables/customers.md) for the join key.Relative: a standard markdown relative path.
See the [neighboring concept](./other.md).
A link from concept A to concept B asserts a relationship. The specific kind (parent/child, references, joins-with, depends-on) is conveyed by the surrounding prose, not by the link itself. Consumers that build a graph view typically treat all links as directed edges of an untyped relationship.
Consumers MUST tolerate broken links: a link whose target does not exist in the bundle is not malformed; it may simply represent not-yet-written knowledge.
6.2 Path-valued fields
Several fields name a path or URI: resource, sources[].resource,
computation, executor.resource, and attester.resource (§10). A
sources[].resource may instead be a scope descriptor (§5.1), in which
case it is not a path. Each path-valued field accepts:
an absolute URL (for example
https://...),a bundle-relative path beginning with
/, ora relative path (for example
../computations/revenue.md).
6.3 The references/ convention
A references/ subdirectory conventionally mirrors external material, run
instructions, or code as first-class concepts within the bundle. Sources,
executors, and attesters commonly point into it (for example
references/attesters/revenue.py). It is a naming convention, not a
requirement.
7. Actor convention
Fields that record an identity (generated.by, verified[].by) use a
single actor convention:
<producer>/<version>for agents and tools, for examplereference_agent/gemini-2.5-pro.human:<id>for a person, for examplehuman:ahormati.process:<id>for an automated process, for exampleprocess:finance-nightly.
Consumers that classify trust (§5.3) key off the human: prefix, so
producers MUST use it for hand-authored or human-confirmed content.
8. Index files
An index.md file MAY appear in any directory, including the bundle root.
It enumerates the directory's contents to support progressive
disclosure: letting a human or agent see what is available before
opening individual documents.
Index files contain no frontmatter, with one exception: a bundle-root
index.md MAY carry an okf_version key (§12). The body uses one or more
sections, each grouping concepts under a heading:
# Section / Group Heading
* [Title 1](relative-url-1) - short description of item 1
* [Title 2](relative-url-2) - short description of item 2
# Another Section
* [Subdirectory](subdir/) - short description of the subdirectoryEntries SHOULD include the description from the linked concept's
frontmatter. Producers MAY generate index.md automatically; consumers
MAY synthesize one on the fly when none is present.
9. Log files
A log.md file MAY appear at any level of the hierarchy to record the
history of changes to that scope. The format is a flat list of
date-grouped entries, newest first:
# Directory Update Log
## 2026-05-22
* **Update**: Added a BigQuery table reference for [Customer Metrics](/tables/customer-metrics.md).
* **Creation**: Established the [Dataplex Playbook](/playbooks/dataplex.md).
## 2026-05-15
* **Initialization**: Created foundational directory structure.Date headings MUST use ISO 8601 YYYY-MM-DD form. Log entries are prose;
the leading bold word (**Update**, **Creation**, **Deprecation**) is
a convention, not a requirement.
10. Attested computations concept
An Attested Computation concept carries not just what a value means but a sanctioned way to compute it, so a consumer can confirm the agent ran the blessed computation instead of improvising its own. Provenance (§5.1) answers "where did this claim come from"; attestation answers "was this number produced the way we said it must be." OKF records the computation and the means to check it; it does not execute anything itself.
10.1 A computation is its own concept
A sanctioned computation is a standalone concept of
type: Attested Computation. A concept that needs the value (a Metric, a
BigQuery Table) links to it with a normal markdown link (§6). Three
properties motivate the standalone concept:
runtimedefines whatparametersmean. A parameter is a SQL bind variable, a dbt var, or a Python argument depending on the runtime. Keepingruntimeandparametersin one frontmatter makes the binding semantics self-evident.One computation, many consumers. The same computation can back a metric, a dashboard concept, and a report; as a concept it is referenced once and reused.
Trust state is per computation.
verified,stale_after, and a singleattesterdescribe one thing. Revenue, profit, and margin each verify and attest independently, which is three concepts, not three entries in one frontmatter.
10.2 Contract fields
The contract is the concept's top-level frontmatter. In addition to the provenance, trust, and lifecycle families (§5), an Attested Computation concept carries:
runtime: REQUIRED for this type. The single field that says how to run the computation, and so how the executor and attester interpret it and whatparametersmean. Example values:bigquery,postgres,dbt,python,Looker.parameters: A list of the typed, named holes the agent may fill. Each entry:{ name, type, required }. Binding semantics followruntime.computation: Optional. A path (§6.2) to a file holding the computation, used instead of an inline body fence (see §10.3). Absent ⇒ the body# Computationfence is the computation.executor: How the computation is run.resourcenames run instructions or code; a runner (an agent, or deterministic consumer code) follows it.receiptdeclares the fields a run must return, the evidence the attester inspects (for example a BigQueryjob_idand the SQL the job actually executed).attester: The deterministic check.resourcenames code (no LLM) that takes a receipt and returns a verdict. It is meant to run consumer-side.
What sits behind a resource (a Skill, a script, a container) is a
packaging choice; OKF fixes the interface, not the packaging (§1).
---
type: Attested Computation
title: Revenue for fiscal year
description: Recognized revenue for a fiscal year, per Finance's definition.
status: stable
runtime: bigquery
parameters:
- { name: year, type: integer, required: true }
executor:
resource: references/skills/run-on-bq.md
receipt: [job_id, executed_sql, result]
attester:
resource: references/attesters/revenue.py
generated: { by: reference_agent/gemini-2.5-pro, at: 2026-06-20T22:53:05Z }
verified: { by: human:ahormati, at: 2026-06-25T09:00:00Z }
stale_after: 2026-09-23
sources:
- id: rev-policy
resource: https://wiki.acme/finance/revenue-recognition
title: Revenue recognition policy
---
# Computation
SELECT SUM(amount) AS revenue
FROM finance.recognized_revenue
WHERE fiscal_year = @year
The computation binds only the declared `parameters`, per the recognition
policy.[^rev-policy]
[^rev-policy]: Revenue recognition policy10.3 The computation
Provide the computation in one of two ways:
Inline: a single fenced code block in the body under
# Computation. Best for a short computation reviewed alongside the contract.File: set
computationto a path (§6.2) and omit the body fence. Best for a long or generated computation, or one already kept as a real file shared with non-OKF tooling.
runtime: bigquery
computation: references/computations/lib/revenue.sql
parameters:
- { name: year, type: integer, required: true }The agent MAY only supply values for the declared parameters; it MUST
NOT author or edit the computation. Binding computation with the
parameter values into the executable artifact is the consumer's job, and
the attester independently re-derives that same binding to compare against
what actually ran. Because the comparison is on the expanded, compiled
artifact the receipt carries (executed_sql, compiled_sql), a rewritten
query, a swapped computation file, or a mutated dependency fails the check.
A typed, parameter-only surface is what makes "did the sanctioned thing
run" a mechanical comparison rather than a judgement call.
10.4 Concepts that use a computation
A document is rarely a single computation. An income-statement overview that discusses revenue, profit, and margin stays one readable concept and links to one Attested Computation per figure:
---
type: Metric
title: Revenue
description: Recognized revenue for a fiscal year.
tags: [finance, revenue]
status: stable
generated: { by: reference_agent/gemini-2.5-pro, at: 2026-06-20T22:53:05Z }
---
# Definition
Recognized revenue sums `amount` over rows booked to the fiscal year,
computed by [the revenue computation](../computations/revenue.md).Because each computation is its own concept, revenue can be fresh while
profit is past its stale_after, and each attests on its own run.
Co-locating them is a directory choice (a computations/ folder with an
index.md), not a frontmatter one.
10.5 How a consumer uses it (informative)
This subsection is informative, not normative. The runtime artifacts below are not stored in the bundle.
Discover via
type: Attested Computation, a frontmatter signal liftable intoindex.md; a consumer reaches one directly or by following a link from a concept that uses it.Load the contract from frontmatter and the computation from the body (or the file named by
computation).Parameterize: the agent supplies values for the declared parameters.
Execute: the executor runs the bound computation and returns a receipt shaped by
executor.receipt.Attest: the consumer runs the attester over the receipt. It confirms provenance (the computation that ran equals
computationbound with the claimed parameters, not agent-authored SQL) and fidelity (the displayed value matches the receipt's authoritative source, re-read by job id rather than taken from the agent's text).Gate: refuse to display a failing attestation; warn or refuse when
today >= stale_after. On success, surface the verdict (for example a link to the job log) so trust is visible.
10.6 Verification versus attestation
verified (§5.2) and attestation are distinct, and both exist:
verifiedconfirms the definition still matches policy. It is doc-level, slow, and recorded in the bundle.Attestation confirms a single run produced the value the sanctioned way. It is per-call, runtime, and not stored in the bundle.
A concept with a stale definition can still attest cleanly, and a freshly-verified definition still requires attestation on each run, which is why both are needed.
11. Conformance
A bundle is conformant with OKF v0.2 if:
Every non-reserved
.mdfile in the tree contains a parseable YAML frontmatter block.Every frontmatter block contains a non-empty
typefield.Every reserved filename (
index.md,log.md) follows the structure in §8 and §9 respectively when present.
When the trust, lifecycle, provenance, or computation families are present, producers SHOULD follow §5 through §10, and consumers:
MUST treat a bare
verifiedmapping as a one-element list (§5.2).MUST NOT reject a concept for missing any optional family (§5.3).
SHOULD derive trust tiers and staleness only from the fields specified here, and SHOULD surface, not silently drop, a failing attestation (§10.5).
Consumers SHOULD treat all other constraints as soft guidance. In particular, consumers MUST NOT reject a bundle because of:
Missing optional frontmatter fields.
Unknown
typevalues.Unknown additional frontmatter keys.
Broken cross-links.
Missing
index.mdfiles.
12. Versioning
This document specifies OKF version 0.2. Revisions are versioned as
<major>.<minor>:
A minor version bump introduces backward-compatible additions (new optional fields, new conventional section headings).
A major version bump may make breaking changes (renaming required fields, changing reserved filenames).
Bundles MAY declare the version they target with okf_version: "0.2" in a
bundle-root index.md frontmatter block (the only place frontmatter is
permitted in an index.md). Consumers that do not understand the declared
version SHOULD attempt best-effort consumption rather than refusing the
bundle.
Considered and deferred
The following are intentionally left to a future revision:
The full runtime protocol: receipt and verdict wire formats, and the attestation lifecycle around a run.
The attester ABI, portability, and sandboxing, likely bundled with future work on serving and Skills.
Attestation caching.
Semantic-layer templates (Looker, dbt) where the attester comparison shifts from SQL equality to model-and-binding equality.
13. Changes from v0.1
v0.2 supersedes OKF v0.1 and is a minor version bump under §12, except for two deliberate breaking changes called out below because they rename or retire v0.1 fields. A v0.1 bundle is consumable by a v0.2 consumer under the fallbacks noted here.
13.1 Breaking changes
timestampis superseded bygenerated.at. A concept's last content change is now recorded asgenerated: { by, at }(§5.2). Consumers MAY fall back to a legacytimestampwhengeneratedis absent.The body
# Citationslist is superseded bysources. Provenance moves to frontmatter (§5.1). Consumers SHOULD readsourcesand MAY still parse a legacy# Citationsbody list for v0.1 documents.
13.2 Additive changes
All of the following are additive: new optional keys, one new concept type, and one new conventional heading. Their absence yields a plain v0.1 concept.
New frontmatter families:
sourceswith its per-source credibility signals (author,usage_count,last_modified) and theusage_windowsibling;generated,verified;status,stale_after(§5).New concept type
Attested Computationand its computation keysruntime,parameters,computation,executor,attester(§10).New conventional body heading
# Computation(§4.2).The actor convention for
generated.byandverified[].by(§7).
Everything else (bundle structure, reserved filenames, the required
type, recommended title/description/resource/tags, cross-linking,
index files, log files, permissive conformance) is carried forward
unchanged.
Appendix A: Worked example, an income statement
One bundle exercising every family, shown as a v0.1 to v0.2 migration of an income statement with two figures, revenue and gross profit.
v0.1 form
A single doc: both figures in one concept, the SQL in prose an agent can
read, ignore, or rewrite, citations a flat list, and the only timestamp is
timestamp.
---
type: Metric
title: Income statement (fiscal year)
description: Headline income-statement figures for a fiscal year.
tags: [finance, income-statement]
timestamp: '2026-05-28T22:53:05+00:00'
---
# Definition
The income statement reports revenue and gross profit for a fiscal year.
# Revenue
Recognized revenue sums `amount` over rows booked to the fiscal year:
SELECT SUM(amount) AS revenue
FROM finance.recognized_revenue
WHERE fiscal_year = <year>
# Gross profit
Gross profit by segment, per the cost-allocation standard:
SELECT gross_profit FROM fct_income_statement
WHERE fiscal_year = <year> AND segment = <segment>
# Citations
- https://wiki.acme/finance/fpa-handbook
- https://wiki.acme/finance/revenue-recognition
- https://wiki.acme/finance/cost-allocationv0.2 form
The two figures split into attested computations linked from a narrative concept. Every family is populated, and the two computations sit in deliberately different states so one consumer reaches two verdicts.
bundles/finance/
metrics/income-statement.md type: Metric (narrates, links both)
computations/revenue.md type: Attested Computation (runtime: bigquery)
computations/profit.md type: Attested Computation (runtime: dbt)
references/skills/run-on-bq.md, run-dbt.md
references/attesters/sql-equality.py, dbt-binding.pymetrics/income-statement.md, the readable doc; trust lives on what it
links, not here:
---
type: Metric
title: Income statement (fiscal year)
description: Headline income-statement figures for a fiscal year.
tags: [finance, income-statement]
status: stable
generated: { by: reference_agent/gemini-2.5-pro, at: 2026-06-20T22:53:05Z }
verified: { by: human:ahormati, at: 2026-06-25T09:00:00Z }
stale_after: 2026-12-31
sources:
- id: fpa-handbook
resource: https://wiki.acme/finance/fpa-handbook
title: FP&A reporting handbook
---
# Definition
The income statement reports [revenue](../computations/revenue.md) and
[gross profit](../computations/profit.md) for a fiscal year, per the FP&A
reporting handbook.[^fpa-handbook] Each figure is produced by a sanctioned,
attestable computation; this concept only narrates them.
[^fpa-handbook]: FP&A reporting handbookcomputations/revenue.md, BigQuery SQL, human-verified, fresh, and
corroborated by a live dashboard source carrying credibility signals:
---
type: Attested Computation
title: Revenue for fiscal year
description: Recognized revenue for a fiscal year, per Finance's definition.
tags: [finance, revenue]
status: stable
runtime: bigquery
parameters:
- { name: year, type: integer, required: true }
executor:
resource: references/skills/run-on-bq.md
receipt: [job_id, executed_sql, result]
attester:
resource: references/attesters/sql-equality.py
generated: { by: reference_agent/gemini-2.5-pro, at: 2026-06-28T14:00:00Z }
verified: { by: human:ahormati, at: 2026-06-25T09:00:00Z }
stale_after: 2026-12-31
sources:
- id: rev-policy
resource: https://wiki.acme/finance/revenue-recognition
title: Revenue recognition policy
author: team:finance-fpa
last_modified: 2026-04-02
- id: exec-rev-dash
resource: dashboards/exec-revenue
title: Executive revenue dashboard
author: team:finance-fpa
usage_count: 5000
last_modified: 2026-06-18
usage_window: { from: 2026-06-01, to: 2026-06-30 }
---
# Computation
SELECT SUM(amount) AS revenue
FROM finance.recognized_revenue
WHERE fiscal_year = @year
Recognized revenue per the recognition policy,[^rev-policy] corroborated by
the executive revenue dashboard.[^exec-rev-dash]
[^rev-policy]: Revenue recognition policy
[^exec-rev-dash]: Executive revenue dashboardcomputations/profit.md, a dbt model, process-verified, and past its
stale_after:
---
type: Attested Computation
title: Gross profit for fiscal year
description: Gross profit by segment for a fiscal year, per the cost-allocation standard.
tags: [finance, profit]
status: stable
runtime: dbt
parameters:
- { name: year, type: integer, required: true }
- { name: segment, type: string, required: true }
executor:
resource: references/skills/run-dbt.md
receipt: [run_id, compiled_sql, result]
attester:
resource: references/attesters/dbt-binding.py
generated: { by: reference_agent/gemini-2.5-pro, at: 2026-06-14T14:00:00Z }
verified: { by: process:finance-nightly, at: 2026-06-12T08:00:00Z }
stale_after: 2026-06-15
sources:
- id: cost-alloc
resource: https://wiki.acme/finance/cost-allocation
title: Cost allocation standard
---
# Computation
SELECT gross_profit
FROM {{ ref('fct_income_statement') }}
WHERE fiscal_year = {{ var('year') }}
AND segment = {{ var('segment') }}
Gross profit by segment per the cost-allocation standard.[^cost-alloc]
[^cost-alloc]: Cost allocation standard242 files
- .agents/agents/okf-crossplane-cli-update-researcher/AGENT.md
- .agents/agents/okf-crossplane-core-code-researcher/AGENT.md
- .agents/agents/okf-crossplane-core-design-researcher/AGENT.md
- .agents/agents/okf-crossplane-core-docs-researcher/AGENT.md
- .agents/agents/okf-crossplane-core-update-researcher/AGENT.md
- .agents/agents/okf-crossplane-docs-update-researcher/AGENT.md
- .agents/agents/okf-crossplane-researcher/AGENT.md
- .agents/agents/okf-crossplane-runtime-update-researcher/AGENT.md
- .agents/agents/okf-function-auto-ready-researcher/AGENT.md
- .agents/agents/okf-function-environment-configs-researcher/AGENT.md
- .agents/agents/okf-function-go-templating-project-history-researcher/AGENT.md
- .agents/agents/okf-function-go-templating-researcher/AGENT.md
- .agents/agents/okf-function-go-templating-sprig-researcher/AGENT.md
- .agents/agents/okf-function-go-templating-update-researcher/AGENT.md
- .agents/agents/okf-function-kro-kro-researcher/AGENT.md
- .agents/agents/okf-function-kro-researcher/AGENT.md
- .agents/agents/okf-function-sdk-go-researcher/AGENT.md
- .agents/agents/okf-function-sequencer-researcher/AGENT.md
- .agents/agents/okf-function-sequencer-update-researcher/AGENT.md
- .agents/agents/okf-function-tag-manager-researcher/AGENT.md
- .agents/agents/okf-reviewer/AGENT.md
- .agents/agents/okf-source-scout/AGENT.md
- .agents/agents/okf-upjet-researcher/AGENT.md
- .agents/agents/okf-xprin-update-researcher/AGENT.md
- .agents/skills/okf-open-knowledge-format/SKILL.md
- .agents/skills/okf-open-knowledge-format/references/conversion.md
- .agents/skills/okf-open-knowledge-format/references/examples.md
- .agents/skills/okf-open-knowledge-format/references/spec-v02.md
- .agents/skills/okf-open-knowledge-format/scripts/validate.sh
- .agents/skills/okf-updates/SKILL.md
- .agents/skills/okf-updates/agents/openai.yaml
- .agents/skills/okf/SKILL.md
- .agents/skills/okf/agents/openai.yaml
- .agents/skills/okf/references/evidence-contract.md
- .agents/skills/okf/references/okf-profile.md
- .agents/skills/okf/references/okf-spec.md
- .agents/skills/okf/references/sources.yaml
- .codespellrc
- .codex-plugin/plugin.json
- .codex/agents/okf-crossplane-cli-update-researcher.toml
- .codex/agents/okf-crossplane-core-code-researcher.toml
- .codex/agents/okf-crossplane-core-design-researcher.toml
- .codex/agents/okf-crossplane-core-docs-researcher.toml
- .codex/agents/okf-crossplane-core-update-researcher.toml
- .codex/agents/okf-crossplane-docs-update-researcher.toml
- .codex/agents/okf-crossplane-researcher.toml
- .codex/agents/okf-crossplane-runtime-update-researcher.toml
- .codex/agents/okf-function-auto-ready-researcher.toml
- .codex/agents/okf-function-environment-configs-researcher.toml
- .codex/agents/okf-function-go-templating-project-history-researcher.toml
- .codex/agents/okf-function-go-templating-researcher.toml
- .codex/agents/okf-function-go-templating-sprig-researcher.toml
- .codex/agents/okf-function-go-templating-update-researcher.toml
- .codex/agents/okf-function-kro-kro-researcher.toml
- .codex/agents/okf-function-kro-researcher.toml
- .codex/agents/okf-function-sdk-go-researcher.toml
- .codex/agents/okf-function-sequencer-researcher.toml
- .codex/agents/okf-function-sequencer-update-researcher.toml
- .codex/agents/okf-function-tag-manager-researcher.toml
- .codex/agents/okf-reviewer.toml
- .codex/agents/okf-source-scout.toml
- .codex/agents/okf-upjet-researcher.toml
- .codex/agents/okf-xprin-update-researcher.toml
- .codex/config.toml
- .dockerignore
- .editorconfig
- .github/workflows/ci.yaml
- .github/zizmor.yml
- .gitignore
- .mcp.json
- .okf/claim-ledger.md
- .okf/sources.lock.yaml
- .pi/agents/okf-crossplane-cli-update-researcher.md
- .pi/agents/okf-crossplane-core-code-researcher.md
- .pi/agents/okf-crossplane-core-design-researcher.md
- .pi/agents/okf-crossplane-core-docs-researcher.md
- .pi/agents/okf-crossplane-core-update-researcher.md
- .pi/agents/okf-crossplane-docs-update-researcher.md
- .pi/agents/okf-crossplane-researcher.md
- .pi/agents/okf-crossplane-runtime-update-researcher.md
- .pi/agents/okf-function-auto-ready-researcher.md
- .pi/agents/okf-function-environment-configs-researcher.md
- .pi/agents/okf-function-go-templating-project-history-researcher.md
- .pi/agents/okf-function-go-templating-researcher.md
- .pi/agents/okf-function-go-templating-sprig-researcher.md
- .pi/agents/okf-function-go-templating-update-researcher.md
- .pi/agents/okf-function-kro-kro-researcher.md
- .pi/agents/okf-function-kro-researcher.md
- .pi/agents/okf-function-sdk-go-researcher.md
- .pi/agents/okf-function-sequencer-researcher.md
- .pi/agents/okf-function-sequencer-update-researcher.md
- .pi/agents/okf-function-tag-manager-researcher.md
- .pi/agents/okf-reviewer.md
- .pi/agents/okf-source-scout.md
- .pi/agents/okf-upjet-researcher.md
- .pi/agents/okf-xprin-update-researcher.md
- .pi/prompts/okf-updates.md
- .pi/prompts/okf.md
- .pi/settings.json
- .plugin/plugin.json
- AGENTS.md
- ATTRIBUTION.md
- Dockerfile
- LICENSE
- README.md
- catalog/cli/control-plane-projects.md
- catalog/cli/generated-go-model-accessors.md
- catalog/cli/generated-go-runtime-objects.md
- catalog/cli/index.md
- catalog/cli/local-composition-rendering.md
- catalog/cli/xrd-convert.md
- catalog/composition-api-and-provider-contracts.md
- catalog/composition-developer-starter.md
- catalog/composition-pipeline-and-security.md
- catalog/composition-testing-and-packaging.md
- catalog/core/composed-resource-identity-and-replacement.md
- catalog/core/composed-resource-rbac.md
- catalog/core/composite-resource-definition.md
- catalog/core/composite-resource-model.md
- catalog/core/composition-gitops-health.md
- catalog/core/composition-project-layout.md
- catalog/core/composition.md
- catalog/core/configurations/configuration.md
- catalog/core/configurations/dependencies-and-authoring.md
- catalog/core/configurations/index.md
- catalog/core/configurations/package.md
- catalog/core/configurations/revision.md
- catalog/core/controlled-rollout-of-composition-functions-design.md
- catalog/core/cross-namespace-synchronization-patterns.md
- catalog/core/environment-config.md
- catalog/core/index.md
- catalog/core/managed-resource-activation-policy.md
- catalog/core/managed-resource-anatomy.md
- catalog/core/managed-resource-controls-and-conditions.md
- catalog/core/managed-resource-definition.md
- catalog/core/managed-resource-external-identity.md
- catalog/core/managed-resource-lifecycle.md
- catalog/core/managed-resource-management-policies-project-history.md
- catalog/core/managed-resource-management-policies.md
- catalog/core/managed-resource-references-and-provider-config.md
- catalog/core/managed-resources.md
- catalog/core/minimal-managed-resource-activation.md
- catalog/core/namespaced-composition-boundaries.md
- catalog/core/native-composition-environment-removal.md
- catalog/core/pushsecret-external-store-pattern.md
- catalog/core/realtime-composition-project-history.md
- catalog/core/realtime-composition-reconciliation.md
- catalog/core/tenant-xr-api-security.md
- catalog/core/usages-and-clusterusages.md
- catalog/core/xrd-api-version-evolution.md
- catalog/core/xrd-cel-validation.md
- catalog/core/xrd-openapi-schema.md
- catalog/core/xrd-subresources-and-display.md
- catalog/core/xrd-unknown-data.md
- catalog/functions/composition-function-specification.md
- catalog/functions/composition-functions.md
- catalog/functions/environment-config-pipeline.md
- catalog/functions/function-auto-ready/built-in-health-checks.md
- catalog/functions/function-auto-ready/cel-health-checks.md
- catalog/functions/function-auto-ready/index.md
- catalog/functions/function-auto-ready/input.md
- catalog/functions/function-auto-ready/package.md
- catalog/functions/function-auto-ready/readiness.md
- catalog/functions/function-environment-configs/index.md
- catalog/functions/function-environment-configs/input.md
- catalog/functions/function-environment-configs/package.md
- catalog/functions/function-environment-configs/selection-and-merge.md
- catalog/functions/function-go-templating/connection-details.md
- catalog/functions/function-go-templating/context.md
- catalog/functions/function-go-templating/environment-source.md
- catalog/functions/function-go-templating/extra-resources.md
- catalog/functions/function-go-templating/index.md
- catalog/functions/function-go-templating/input.md
- catalog/functions/function-go-templating/package.md
- catalog/functions/function-go-templating/patterns/index.md
- catalog/functions/function-go-templating/patterns/manual-readiness.md
- catalog/functions/function-go-templating/patterns/non-composed-resource-readiness.md
- catalog/functions/function-go-templating/patterns/provider-backed-external-query.md
- catalog/functions/function-go-templating/patterns/provider-kubernetes-object-readiness.md
- catalog/functions/function-go-templating/patterns/safe-status-and-connection-publication.md
- catalog/functions/function-go-templating/patterns/sveltos-clustersummary-readiness.md
- catalog/functions/function-go-templating/patterns/yaml-document-boundaries.md
- catalog/functions/function-go-templating/project-history.md
- catalog/functions/function-go-templating/rendered-output.md
- catalog/functions/function-go-templating/request-data.md
- catalog/functions/function-go-templating/response-ttl.md
- catalog/functions/function-go-templating/runtime-options.md
- catalog/functions/function-go-templating/sprig.md
- catalog/functions/function-go-templating/template-functions.md
- catalog/functions/function-kro/graph-evaluation.md
- catalog/functions/function-kro/index.md
- catalog/functions/function-kro/input.md
- catalog/functions/function-kro/package.md
- catalog/functions/function-sequencer/index.md
- catalog/functions/function-sequencer/input.md
- catalog/functions/function-sequencer/sequencing.md
- catalog/functions/index.md
- catalog/functions/operation-functions.md
- catalog/functions/overview.md
- catalog/functions/package.md
- catalog/functions/scheduled-and-watched-operations.md
- catalog/index.md
- catalog/log.md
- catalog/providers/crd-schema-discovery.md
- catalog/providers/index.md
- catalog/providers/provider-connection-details-source-retrieval.md
- catalog/providers/provider-families.md
- catalog/providers/provider-landscape.md
- catalog/providers/provider-package-revisions.md
- catalog/providers/upjet-terraform-provenance.md
- catalog/sdk/crd-cache-schema-stripping.md
- catalog/sdk/index.md
- catalog/sdk/provider-development/generate-test-package.md
- catalog/sdk/provider-development/index.md
- catalog/sdk/provider-development/managed-reconciler.md
- catalog/sdk/provider-development/managed-resource-apis.md
- catalog/sdk/provider-development/provider-configuration.md
- catalog/sdk/provider-development/start-here.md
- catalog/tools/index.md
- catalog/tools/xprin-crossplane-cli-tiers.md
- catalog/tools/xprin-crossplane-version.md
- catalog/tools/xprin-function-container-reuse.md
- catalog/tools/xprin-test-artifacts-export.md
- catalog/tools/xprin-test-suites.md
- catalog/tools/xprin-update-goldens.md
- compose.yaml
- mcp/README.md
- mcp/entrypoint.sh
- mcp/fetch_cache.py
- mcp/git_source.py
- mcp/github_source.py
- mcp/provider_crd_tools.py
- mcp/pyproject.toml
- mcp/server.py
- mcp/tests/test_git_source.py
- mcp/tests/test_github_source.py
- mcp/tests/test_provider_crd_tools.py
- mcp/uv.lock
- mise.toml
- renovate.json
- skills-lock.json
- skills/crossplane-v2-okf/SKILL.md
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` resultsAGENTS.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
jkroepke
- 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