**Teach your coding agent to author, maintain, validate, and visualize portable knowledge bundles: markdown your team and your agents both read.** Built for OKF v0.2 (trust signals, provenance, staleness), while the rest of the ecosystem still targets v0.1.
FAQ
okf is a Claude Code plugin with 3 hand-picked skills for documentation work, indexed on Flowy. Install it with the command on its page. It includes okf, validate, visualize. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
> /plugin marketplace add scaccogatto/okf-skills> /plugin install okf@scaccogatto
Teach your coding agent to author, maintain, validate, and visualize portable knowledge bundles: markdown your team and your agents both read.
Built for OKF v0.2 (trust signals, provenance, staleness), while the rest of the ecosystem still targets v0.1.
Click any node for rendered markdown, the derived trust tier and staleness, provenance with its credibility signals, and "Links to / Cited by" backlinks. No backend, nothing leaves the page.
/plugin install okf@scaccogatto
npx skills add scaccogatto/okf-skills
OKF is an open, vendor-neutral format (announced by Google Cloud, June 2026) that represents knowledge (the context and curated insight around your systems) as a directory of markdown files with YAML frontmatter. No schema registry, no runtime, no SDK. If you can
cata file you can read it; if you cangit clonea repo you can ship it.
This is the Claude Code-native OKF toolchain. It teaches Claude to produce, maintain, consume, validate, and visualize OKF bundles as a normal part of how it already works, driven by the verbatim spec, backed by a deterministic conformance checker, with a self-contained graph renderer. Ships as a Claude Code plugin, as agent skills (Cursor, Codex, and 20+ agents), and as a GitHub Action for repos with no agent at all. Every other tool in Google's community list still targeted v0.1 when we checked on 2026-07-27; this one is v0.2 throughout.
πͺ This repo documents itself in OKF. The architecture, skills, and decisions behind okf-skills live in
.okf/, explorable as a live self-graph. CI validates that bundle on every push (dogfooding the conformance checker).
As a Claude Code plugin:
/plugin marketplace add scaccogatto/okf-skills
/plugin install okf@scaccogatto
As agent skills via skills.sh (Claude Code, Cursor, Codex, and 20+ agents):
npx skills add scaccogatto/okf-skills # the okf, validate & visualize skills
Local development (no marketplace): claude --plugin-dir /path/to/okf-skills.
Both layouts coexist in this one repo: .claude-plugin/ makes it a plugin
marketplace, skills/<name>/SKILL.md makes it skills.sh-discoverable. Scripts live
inside their skills and are referenced via ${CLAUDE_SKILL_DIR}, so they work in
either path. The scripts need uv (or python3 + pyyaml).
Capture knowledge: ask Claude to "document the auth service in OKF", or run:
/okf:okf produce .okf
Validate before committing:
/okf:validate .okf --strict
# or directly, zero-config:
uv run skills/validate/scripts/okf_validate.py .okf --strict
# gate in CI while some warnings are still outstanding:
uv run skills/validate/scripts/okf_validate.py .okf --max-warnings 5
Gate it in CI: the composite action works in any repo, with or without Claude Code:
- uses: scaccogatto/okf-skills@v1
with:
bundle: .okf
strict: "true" # or: max-warnings: "5"
Visualize the knowledge graph, a self-contained viz.html that opens in any
browser (live example):
/okf:visualize .okf
# or directly, with a title and a back-link to your repo:
uv run skills/visualize/scripts/okf_visualize.py .okf \
-o viz.html --title "My project" --link "https://github.com/me/project"
Every concept gets a shareable deep link (viz.html#services/auth-api opens with
that concept selected). Each panel carries two derived badges: the Β§5.3 trust
tier (unverified / machine-confirmed / human-reviewed) and staleness once
stale_after is past. OKF stores neither (a stored tier is a stored opinion, and
it goes stale), so both are computed at render time.
Keep it up to date. Two opt-in ways to make upkeep automatic:
templates/CLAUDE-okf.md into
your project's CLAUDE.md (or ~/.claude/CLAUDE.md) to have Claude consult
.okf/ before tasks and write knowledge back after changes.upkeep: enforced to .okf/index.md's frontmatter to
arm the plugin's dormant Stop hook, which then blocks finishing when tracked
files changed but .okf/log.md wasn't updated. Off by default; a user overrides
any bundle with OKF_HOOK=off. Full gate sequence:
stop-hook concept.| Component | What it does |
|---|---|
/okf:okf skill | Produce / maintain / consume bundles, applying the spec and templates. Auto-triggers when a repo has an OKF bundle. |
/okf:validate skill | Deterministic Β§11 conformance check (not an eyeball pass). |
/okf:visualize skill | Render a bundle to a self-contained interactive HTML graph (viz.html). |
skills/okf/scripts/okf_init.py | Scaffold a conformant starter bundle in one shot. |
skills/validate/scripts/okf_validate.py | Standalone, zero-config validator (uv run, PyYAML via PEP 723). |
skills/visualize/scripts/okf_visualize.py | Standalone bundleβviz.html renderer. |
skills/okf/reference/SPEC.md | The OKF v0.2 spec, vendored verbatim: the source of truth. |
templates/CLAUDE-okf.md | Snippet that turns on automatic consume/maintain in your project. |
action.yml | Composite GitHub Action to gate a bundle in any repo's CI, no Claude Code needed. |
examples/sample-bundle/ | The conformant bundle behind the live demo. |
A bundle is a directory of markdown files; a concept's path is its ID. The only
rule for conformance is YAML frontmatter with a non-empty type; everything else
is optional.
.okf/
βββ index.md # progressive disclosure (root carries okf_version)
βββ log.md # ISO-dated change history, newest first
βββ services/auth-api.md # one concept = one file; path is its ID
βββ decisions/use-okf.md
βββ metrics/checkout-conversion.md
---
type: Service
title: Auth API
description: Issues and verifies short-lived access tokens.
resource: https://github.com/acme/auth
status: stable
generated: { by: doc_agent/1.0, at: 2026-06-14T10:00:00Z }
verified: { by: human:dana, at: 2026-06-20T09:00:00Z }
sources:
- id: auth-readme
resource: https://github.com/acme/auth#readme
title: Auth service README
---
# Endpoints
Tokens live 15 minutes.[^auth-readme]
[^auth-readme]: Auth service README
v0.2 assumes a corpus that agents keep writing, so it makes four things answerable
from frontmatter alone. All optional; a concept carrying only type is still fully
conformant. Full normative detail is in SPEC.md.
| Family | Fields | Answers |
|---|---|---|
| Provenance | sources[] + author / usage_count / last_modified, usage_window | Where did this come from, and how credible is that source? |
| Trust | generated: {by, at}, verified[], actor convention (human: / process: / agent/version) | Who wrote it, who confirmed it? |
| Lifecycle | status, stale_after | Is it current? Is it still true? |
| Attestation | type: Attested Computation + runtime, parameters, executor, attester | Was this number produced the sanctioned way? |
Upgrading from v0.1? --migrate rewrites the two superseded constructs
(timestamp β generated.at, body # Citations β sources) in place, textually
and idempotently. The tools read both meanwhile and flag the old forms as warnings,
never errors; --strict is the nudge, --migrate is the door:
uv run skills/validate/scripts/okf_validate.py .okf --migrate --strict
okf-skills/
βββ .claude-plugin/{plugin.json, marketplace.json}
βββ skills/{okf, validate, visualize}/{SKILL.md, scripts/}
βββ hooks/ # the dormant Stop hook
βββ examples/sample-bundle/ # the live-demo bundle
βββ docs/ # GitHub Pages: the live interactive demo
βββ templates/CLAUDE-okf.md
βββ action.yml # the CI-gating GitHub Action
βββ Makefile # make docs / test / validate; CI runs the same
βββ .github/workflows/ci.yml
Issues and PRs welcome: new templates, producers for more sources, validator and
visualizer improvements. CI validates the plugin manifest and the example bundle on
every push. Releases are automatic: bump version in .claude-plugin/plugin.json
and merging to main tags and publishes okf--v<version> on its own. That bump is
required, not optional: a PR touching the shipped surface (skills/, hooks/,
templates/, action.yml, .claude-plugin/) fails CI until the version is
raised. Docs, .okf/ and tests are exempt; the skip-version-check label
bypasses the gate for a shipped change that warrants no release.
skills/okf/reference/SPEC.md is vendored
verbatim from the reference repository
with attribution..claude-plugin/
marketplace.json
plugin.json
.github/
workflows/
ci.yml
release.yml
.gitignore
.okf/
components/
index.md
okf_init.md
release-workflow.md
stop-hook.md
validator.md
visualizer.md
decisions/
auto-release.md
dormant-hooks.md
dual-distribution.md
index.md
no-hooks.md
okf-v02-dual-read.md
scale-guardrails.md
self-contained-skills.md
index.md
log.md
reference/
index.md
okf-spec.md
skills/
index.md
okf.md
validate.md
visualize.md
action.yml
CHANGELOG.md
docs/
assets/
demo.gif
og.html
og.png
index.html
self.html
examples/
sample-bundle/
datasets/
index.md
orders-db.md
decisions/
event-driven.md
index.md
use-okf.md
index.md
log.md
metrics/
checkout-conversion.md
index.md
runbooks/
index.md
payment-failures.md
services/
auth-api.md
index.md
orders-api.md
payments-api.md
hooks/
hooks.json
okf-stop-check.sh
LICENSE
Makefile
NOTICE
README.md
skills/
okf/
reference/
APACHE-2.0.txt
SPEC.md
scripts/
okf_init.py
SKILL.md
templates/
concept.md
index.md
log.md
validate/
scripts/
okf_validate.py
SKILL.md
visualize/
scripts/
okf_visualize.py
SKILL.md
templates/
CLAUDE-okf.md
tests/
fixtures/
non-conformant/
broken.md
test_okf_validate.pyΒ© 2026 Flowy Β· Free and open source
Built for Claude Code Β· Not affiliated with Anthropic