Install
openclaw skills install @matthiasbeckmann987-spec/beckmann-knowledge-graphA structured knowledge graph acting as a cognitive lens for AI agents. Enables paradox resolution, analysis of open questions, and high-complexity future forecasting based on Beckmann Logic, Predictive Brain Theory, and simulation models.
openclaw skills install @matthiasbeckmann987-spec/beckmann-knowledge-graphThis skill equips an AI agent with a structured analytical lens in the form of a knowledge graph. The graph does not contain encyclopedic facts, but encodes logics, frameworks, and mechanisms for:
The graph is built on four pillars:
| Pillar | What It Provides |
|---|---|
| Beckmann Logic | Three-level problem-solving framework (low vs. high complexity) |
| Predictive Brain Theory (PBT) | Epistemological foundation (Predictive Processing) |
| Simulation / Holographic Model | Mathematical metaphor for physical and cognitive limits |
| Historical Case Studies | Validated examples (e.g., Hannibal, introduction of the potato, Kaiserslautern 1998) |
Language note: Both this skill instruction and the graph files are in English. The agent must use the exact English IDs from the graph (e.g., Reversal effect, Expectation firewall) when searching, and formulate the final answer in the language of the user query (English by default).
The skill folder has this layout:
beckmann-knowledge-graph/
├── SKILL.md ← this file
├── README.md
├── CHANGELOG.md
├── package.json
└── Results-and-Tools/
├── graph_overview.json ← structural map of the entire graph (Phase 1)
├── UNDERSTANDING-REPORT.md ← analytical interpretation of the entire graph (Phase 2)
├── graph_Part_1_of_4_summary.md ← content index for Part 1 (Phase 3)
├── graph_Part_2_of_4_summary.md ← content index for Part 2 (Phase 3)
├── graph_Part_3_of_4_summary.md ← content index for Part 3 (Phase 3)
├── graph_Part_4_of_4_summary.md ← content index for Part 4 (Phase 3)
├── graph_Part_1_of_4.json ← detail data, load only when needed (Phase 4)
├── graph_Part_2_of_4.json ← detail data, load only when needed (Phase 4)
├── graph_Part_3_of_4.json ← detail data, load only when needed (Phase 4)
└── graph_Part_4_of_4.json ← detail data, load only when needed (Phase 4)
All data files are located in the Results-and-Tools/ subfolder. Always use the relative path ./Results-and-Tools/ when loading them.
The number of parts (currently 4) will grow as the graph grows. Always determine the total number of parts dynamically — do not hard-code it. Read _meta.segment_total from Part 1, or count the available graph_Part_X_of_N_summary.md files.
The graph is split into multiple part files. Always use this staged loading strategy — never load all part files at once. The strategy separates orientation (small files) from detail retrieval (large JSON files), minimizing context window usage.
Results-and-Tools/graph_overview.jsonThis file is the structural map of the entire graph: entity count, relation count, global type histogram, predicate histogram, hub ranking by degree, bridge candidates, case study index, and a full entity index with short descriptions.
From this file, determine:
For simple or well-scoped questions, Phase 1 alone may be sufficient.
Results-and-Tools/UNDERSTANDING-REPORT.mdThis file contains the human-readable analytical interpretation of the entire graph, including:
From this file, calibrate your retrieval plan:
For many questions, Phase 1 + Phase 2 together provide sufficient context to answer without loading any part files.
Only proceed to Phase 3 when Phases 1 and 2 do not provide sufficient entity-level detail.
Each part has a corresponding summary file: graph_Part_X_of_N_summary.md. These files are small (plain text) and contain:
Read all available summary files first. Based on their type distributions and entity indexes, determine which part(s) contain the entities relevant to your question. Then load only those part JSON files in Phase 4.
Example reasoning from summaries:
comment type entities and names cases like Hannibal or Kaiserslautern → load that partQuantum concept or Neuroscience concept → load that partEquilibrium concept (game theory) → load that partThis approach is fully dynamic: it works correctly whether the graph has 4, 8, or 20 parts, and it remains accurate even as entities shift between parts when the graph grows.
Load only the part files identified in Phase 3. Load the minimum number needed.
JavaScript / Node.js:
import fs from 'fs';
// Read Part 1 to determine total number of parts dynamically
const part1 = JSON.parse(fs.readFileSync('./Results-and-Tools/graph_Part_1_of_4.json', 'utf8'));
const totalParts = part1._meta.segment_total; // do not hard-code this number
const entities = part1.entities;
const relations = part1.relations;
Python:
import json
# Read Part 1 to determine total number of parts dynamically
with open('./Results-and-Tools/graph_Part_1_of_4.json', 'r', encoding='utf-8') as f:
part1 = json.load(f)
total_parts = part1['_meta']['segment_total'] # do not hard-code this number
entities = part1['entities']
relations = part1['relations']
Note on relation overlap: Part files contain intentional relation overlap at segment boundaries — relations referencing entities from adjacent parts are included in both parts for self-consistency. This is expected behavior, not a duplication error.
The graph contains two arrays: entities and relations. Their size grows with each release — do not hard-code counts. Refer to CHANGELOG.md for the current version and size.
Entity – 4 fields:
{
"id": "Beckmann logic explained",
"type": "Explanation",
"description": "Full textual description...",
"scientific_status": "non-existent, purely philosophical"
}
Relation – 5 fields:
{
"subject": "Results orientation",
"predicate": "leads to",
"object": "Negative result",
"description": "Context of this connection...",
"scientific_status": "hypothesis"
}
Important implementation notes:
id, subject, object must be taken exactly (case-sensitive) from the graph — do not translate or normalize them.scientific_status (with underscore). For backward compatibility with older graphs that used scientific status (with space), accept both:const getStatus = (node) => node['scientific_status'] ?? node['scientific status'] ?? 'unknown';
scientific_status as Confidence Filter| Status | Meaning for the Answer |
|---|---|
established | Established knowledge — can be used as fact |
partially established | Partially supported — cite with source/uncertainty |
hypothesis | Working hypothesis — label as "according to graph, hypothesis" |
metaphor | Metaphorical model — explicitly name as metaphor |
non-existent, purely philosophical | Purely philosophical — do not claim empirical validity |
open question | Open question — explicitly name the limit |
Rule: Prefer argument chains built from established and partially established. If a chain consists only of metaphor or non-existent, purely philosophical, state this explicitly in Confidence and Limits.
Beckmann Logic is derived from:
+-------------------------------------+
| SOLUTION LEVEL HIGH COMPLEXITY | <- creative, context-aware -> POSITIVE result
+-------------------------------------+
^ competes with ^
+-------------------------------------+
| PROBLEM LEVEL (new actual level) | <- actual state + hidden assumptions
+-------------------------------------+
v tempts to v
+----------------------------------------+
| SOLUTION LEVEL LOW COMPLEXITY | <- direct, obvious -> NEGATIVE result
+----------------------------------------+
dominant expectation)Problem level -> low complexity -> negative result -> worse problem level
-> high complexity -> positive result -> New actual level -> becomes next problem level
epistemological: PBT / Simulation (Predictive processing, Holographic universe)paradox: type contains Limit concept, Paradox, Philosophicalforecast: dominant expectation + Time scalestrategic / historical: Case studies (Lesson_for_AI)AI safety: type = AI security mechanism, Secure AI architecture, Dangerous AI architectureSearch semantically in id and description, not just exact match:
function getStatus(node) {
return node['scientific_status'] ?? node['scientific status'] ?? 'unknown';
}
const relevant = entities.filter(e =>
e.id.toLowerCase().includes(keyword) ||
e.description.toLowerCase().includes(keyword)
);
// Always read the full description - it contains the reasoning
Focus on predicates that actually occur frequently in the graph:
| Predicate | Meaning |
|---|---|
generated | X generates Y |
enabled | X enables Y |
refers to | X refers to Y |
reinforced | Feedback loop |
triggers | Activation / cascade |
leads to | Causal chain |
includes | Hierarchical embedding |
protects / protects against | Protection function |
is an example of | Example / validation |
requires | Necessary condition |
Note: Predicates like is reversed by, checked, solves rarely occur verbatim — use triggers, leads to, reinforced instead to find reversal effects.
Procedure: Get all relations where the relevant entity is subject or object, then follow paths via the predicates above.
dominant expectation)Capacity limit or thing in itself? Then name the limit.thing in itself.Use this template:
## Graph-Based Answer
**Problem Formulation** (after analysis of pre-assumptions)
**Used Graph Nodes (with real status):**
- [Reversal effect | Fundamental mechanism | established] - reason for relevance
- [Expectation firewall | AI security mechanism | hypothesis] - reason
**Argumentation Path** (chain: subject -> predicate -> object + scientific_status)
**Answer** (based on graph logic, in user's language)
**Confidence and Limits** (which part is established vs. metaphor?)
**New Questions** (next problem level)
Paradoxes = signal for false pre-assumption.
Protocol:
type = Limit concept, Core concept, Fundamental mechanism (e.g., Reversal effect)subject or objectrefers to, triggers, reinforced, leads tothing in itself)dominant expectation, Market Dominant Expectation)Time scale entities (short/medium/long/cosmological)Dangerous process, Results orientationImportant entities — use exact IDs from the graph:
Expectation firewall | AI security mechanism : Blocks formation of dominant future expectationsResults orientation | Dangerous AI architecture : Optimized for future outcome -> forms dominant expectation -> vulnerable to Reversal effectProcess orientation | Secure AI architecture : Optimized for quality of current action -> saferAI-human symbiosis : Target stateRule: For all AI questions, prioritize Expectation firewall and Process orientation. The graph recommends: Avoid formation of dominant future expectations and preserve ability for external verification.
The graph contains knowledge about psychological manipulation, cognitive biases, and expectation management. This knowledge is not neutral.
Expectation firewall, Pre-assumptions_cementation)Process orientation), never optimize dangerous ones (Results orientation)scientific_status: Many manipulation mechanisms are hypothesis or metaphor, not establishedVersioning is maintained exclusively in CHANGELOG.md. See that file for current version, entity/relation counts, and history.
This skill and the graph files are updated iteratively. Always check CHANGELOG.md and use the latest version available. Do not hard-code counts or status distributions — always read them dynamically from the graph files.
description| Entity ID (exact from graph) | Type (actual) | Meaning |
|---|---|---|
Beckmann logic explained | Explanation | Core framework |
Expectation firewall | AI security mechanism | Central AI safety |
dominant expectation | Dominant expectation vector | Most important input for forecasts |
Reversal effect | Fundamental mechanism | Core failure scenario |
External reality | Limit concept | Epistemological anchor |
thing in itself | Limit concept | Knowledge limit after Kant |
Holographic universe | mathematical, logical model | Physical frame |
Predictive processing | Mechanism (neuroscience/cognition) | PBT core mechanism |
Pre-assumptions_cementation | Structural counterprinciple (core concept) | Analysis of pre-assumptions |
Process orientation | Secure AI architecture | Safe AI pattern |
Results orientation | Dangerous AI architecture | Dangerous AI pattern |
new actual level | problem level | Result of each solution |