Prior art
Project history
Section titled “Project history”Origins: Obsidian Frameworker
Section titled “Origins: Obsidian Frameworker”The project began as “Frameworker” — a concept for mapping plaintext markdown files to taxonomical frameworks with CSV import, YAML frontmatter, and 2-way sync. The core insight: GRC involves massive knowledge work, and keeping structured frameworks side-by-side with the knowledge we create could change how compliance teams operate.
Python tool (1500+ lines)
Section titled “Python tool (1500+ lines)”The frameworks_to_obsidian.py script was the first implementation. It takes tabular framework data (CSV/XLSX) and translates it into hierarchical Obsidian vault structures with:
- Folder taxonomy generation from hierarchy columns
- Markdown notes with YAML frontmatter
- WikiLinks between framework nodes (crosswalks)
- Custom transforms per framework (tag aggregation, regex normalization, hierarchical forward-fill)
Supported frameworks: MITRE ATT&CK + D3FEND + ENGAGE, NIST 800-53, CSF v2, CIS v8, CRI Profile
Architecture: Load → Clean → Transform → Deduplicate → Configure → Generate → Link
Obsidian plugin
Section titled “Obsidian plugin”The plugin extends the Python tool into a general-purpose import wizard with a UI, config system, and broader format support. It makes the import process accessible to non-developers.
Obsidian & Cyber Working Group
Section titled “Obsidian & Cyber Working Group”An open-source community building resources for using Obsidian in cybersecurity:
- Framework crosswalk engine
- Starter vaults for SecOps, GRC, and personal branding
- Knowledge organization meta-framework SEACOW — lives in the
cybersader/cyberbasepublic vault. See the SEACOW + folder-tag-sync prior-art log for how it connects to Crosswalker’s Foundation decisions. - obsidian-folder-tag-sync — the project owner’s other active plugin (lives in the same
plugin_development/workspace as Crosswalker) that provides bidirectional folder↔tag sync for polyhierarchy. Direct reuse candidate for Crosswalker’s generation engine — see the prior-art log and the roadmap research item.
The edge metadata gap
Section titled “The edge metadata gap”A key discovery during research: no existing Obsidian plugin can attach data to relationships between notes. Every plugin evaluated falls short:
| Plugin | What it does | Why it’s not enough |
|---|---|---|
| Breadcrumbs V4 | Edge fields and field groups | Individual key:value pairs per edge only — no structured JSON metadata |
| Juggl | Graph visualization with typed links | No powerful query/reasoning over the graph; needs export/import |
| Excalibrain | Visual graph like Juggl/Breadcrumbs | Display-only, no metadata encoding |
| Graph Link Types | Turns Dataview inline tags into graph edges | Display-only, no additional metadata |
| Semantic Canvas | Another graph view with link types | Display-only |
| Supercharged Links | CSS styling based on target note YAML | Visual only, no edge data |
This gap is what motivated the link metadata system — using Dataview inline fields with dot notation and JSON to encode structured metadata on links.
Existing tools in this space
Section titled “Existing tools in this space”GRC platforms
Section titled “GRC platforms”- ServiceNow GRC, Archer, LogicGate — Enterprise GRC with proprietary databases
- Drata, Vanta — Automated compliance, SaaS-locked
- CISO Assistant — Open-source, 80+ frameworks, auto-mapping between standards
- Trade-off: Full-featured but expensive (commercial) or limited UI (open-source), locked-in
Framework mapping tools
Section titled “Framework mapping tools”- SCF with STRM — Set Theory Relationship Mapping, mathematical approach to crosswalking
- Apptega — Commercial crosswalking platform
- HITRUST MyCSF — Compliance framework tool
- RegScale — OSCAL-native compliance automation
- See framework standards for full list
Knowledge/note tools
Section titled “Knowledge/note tools”- Obsidian + Dataview — Flexible but no structured import
- Notion databases — Good structure but no graph navigation
- Roam Research — Graph-first but no filesystem
No tool bridges structured framework data and a personal/team knowledge base with typed, queryable links. That’s the Crosswalker niche.
Related Obsidian plugins
Section titled “Related Obsidian plugins”| Plugin | Overlap | Difference |
|---|---|---|
| Dataview | Queries generated data | Doesn’t import structured data |
| Folder Notes | Folder-as-note pattern | No import or generation |
| Metadata Menu | Property management | No bulk import from external files |
| Database Folder | Table views | No external data import wizard |
| Obsidian Bases | Built-in table/card views | No external data import |
Python tool technical details
Section titled “Python tool technical details”Helper functions
Section titled “Helper functions”match_value()— flexible string/array/regex matcher for crosswalkingbuild_full_path_components()/split_folders()— path constructionsanitize_column_name()— normalize column headershierarchical_ffill()— grouped forward-fill for merged cells in Excel
Core engine
Section titled “Core engine”- Taxonomy builder — DataFrame + config → folders + markdown files
- Linker — two frameworks + matching rules → inject WikiLinks
Per-framework transforms
Section titled “Per-framework transforms”- CRI: Tag aggregation from subject areas
- NIST 800-53: Regex ID normalization for assessment procedures
- D3FEND: Hierarchical forward-fill for ontology structure
- CIS v8: Preamble extraction from control descriptions
See helper functions for algorithm specifications and framework data sources for per-framework sheet and column details.
Cross-project learnings: DFD-Excalidraw System
Section titled “Cross-project learnings: DFD-Excalidraw System”The DFD-Excalidraw System is a separate project that transforms Excalidraw diagrams into a queryable markdown-based graph database — solving identical problems to Crosswalker:
| Shared Problem | DFD Solution | Crosswalker Application |
|---|---|---|
| File-based graph database | Markdown files as nodes (Assets) and edges (Transfers) | Framework notes as nodes, WikiLinks as edges |
| No referential integrity | Defensive scripts that self-heal on each run | Import wizard validates before generating |
| Schema versioning | dfd-asset-v1, dfd-transfer-v1 identifiers | _crosswalker.schema_version field |
| Orphan detection | Forward scan + Bases audit views | Backlink-count detection via Bases |
| Data model resilience | 4-tier metadata system | _crosswalker metadata tiers |
| Eventual consistency | Manual sync via script runs | Manual sync via re-import |
Key insight from DFD: design for lazy detection, not eager prevention. File-based systems can never be ACID-compliant, so the focus should be on surfacing inconsistencies (via Bases views) and providing repair tools (re-import, link cleanup), not trying to prevent all invalid states.