Wiki Schema
How I structure and maintain this wiki — page layout, the workflow I follow when adding new material, log format, conventions.
Status: mature Related: Index, Log, Overview
What this wiki is
A personal knowledge base for offensive security: penetration testing, red teaming, vulnerability research, and exploit development. The shape:
- I read papers, conference talks, blog posts, and CVE write-ups. When something is worth keeping, I take notes.
- I distill those notes into pages — pulling out the structural claims, working examples, and references that I want to come back to. New material extends existing pages where I already have coverage; I only create a new page when there’s enough material to warrant one.
- The wiki compounds. Every page cross-references the others. A new entry usually means edits across several pages, not just one.
This isn’t a comprehensive textbook — it’s the parts of the field I’ve worked through, in the form most useful to me.
Layout
_wiki/
index.md landing
overview.md landscape map
schema.md this file
log.md reverse-chronological record of additions
domains/ the four pillars
concepts/ foundational ideas + topic concepts
techniques/ TTPs across operations and exploit dev
tools/ frameworks, debuggers, scanners, C2
playbooks/ engagement runbooks
cves/ CVE deep-dives
kernel/ Windows kernel-mode exploitation
usermode/ Windows user-mode exploitation
attacks/ Wi-Fi protocol attacks
defenses/ Wi-Fi defenses
devices/ vendor / device test results
resources/ reading lists, researchers, templates
sources/ provenance pages — one per source I've worked through
Page format
Every page starts with this frontmatter:
---
title: "Human-readable title"
permalink: /wiki/<dir>/<slug>/
layout: single
author_profile: true
tags:
- <tag>
---
Body conventions:
- One-line italic summary.
**Status:**line —seed | sketch | drafting | mature | stale.**Related:**line — internal links to neighbouring pages.- Optional
{% include toc %}for long pages. - Sections (
##,###). ## Referencessection at the end.
No body H1 — Jekyll renders the page title from frontmatter; a body H1 produces a duplicate header. Internal links are absolute Jekyll URLs (/wiki/concepts/opsec/), not Obsidian wikilinks.
Workflow
Adding a new source
- Read it. Skim once for shape, then re-read the sections I want to keep.
- Decide what’s structural (the claims I want available six months from now) vs. what’s incidental.
- Edit the relevant pages. Most ingests touch several — a new CVE write-up usually means edits to the CVE page, the kernel-internals page for the affected component, and the technique page for the bug class.
- Add or update cross-references in both directions.
- Add a provenance entry under
sources/and append a line tolog.md.
Looking something up
- Browse
index.mdor the relevant category index. - Follow cross-references between pages.
- If I notice a gap while looking — a missing concept, a stale claim, a contradiction — fix it then, before I forget.
Periodic clean-up
A health pass every once in a while: contradictions, stale claims that newer sources have superseded, orphan pages with no inbound links, concepts referenced but lacking their own page, missing cross-references, seed / sketch pages ready for re-classing, tag inconsistencies.
Log entry format
## [YYYY-MM-DD] <op> | <one-line title>
- **Source:** <URL or citation> — <author / venue>
- **Pages created:** <list>
- **Pages modified:** <list>
- **Key additions:** <bullets — what's new on the pages, not what the source said>
<op> ∈ INGEST | QUERY | LINT | EXPAND | INIT. The ## [YYYY-MM-DD] prefix is grep-parseable.
Conventions
- Edits live on the pages, not in commit messages or notes elsewhere. If it’s worth remembering, it’s worth filing.
- Don’t summarise the source in the log — summarise it on the page; the log records what changed.
- Don’t create a page just because a topic was mentioned — wait until there’s enough material.
- Don’t lose contradictions — flag them inline with
<!-- CONTRADICTION: ... -->and resolve them on a later pass. - Don’t touch site code outside
_wiki/unless explicitly intended (navigation updates that mirror new wiki structure are the exception).
