๐ฎ OMP Hub
Oh My Pi โ AI Agent Framework
Skills ยท Memory ยท Stack Plans ยท Projects ยท Knowledge
Transform verbose session transcripts, raw codebases, or complex implementation logs into ultra-condensed, high-density, emojified developer cheat sheets.
1. ๐ฏ Quick Start Dashboard
flowchart LR A[<b>INPUT SESSION</b><br/>โข Chat logs<br/>โข Code bases<br/>โข Build logs] --> B[<b>CLEANSING</b><br/>โข Strip chat<br/>โข No filler<br/>โข Facts only] B --> C[<b>REFLECTION</b><br/>โข Extract API<br/>โข Map CLI<br/>โข Gotchas] C --> D[<b>CONDENSATION</b><br/>โข Layout tables<br/>โข Emoji anchors<br/>โข Compact code]
2. ๐งผ Cleansing
- Conversational pleasantries: Strip โHelloโ, โSureโ, โLet me help you withโ, โAs you can seeโ, and meta-dialogue.
- Context scaffolding: Remove long paragraphs explaining why a tool or library is designed a certain way; keep only the direct application.
- Unused boilerplate: Delete generic setups or verbose explanation blocks.
3. ๐ง Reflection
Extract these core elements and group them by developer intent:
| Focus | Elements to Extract | Representation |
|---|---|---|
| API Contracts | Function signatures, parameters, types, interfaces | Concise TS/Python interface blocks |
| CLI Commands | Installation, build, run, test commands | Actionable inline code lines |
| Configuration | Environment variables, config files (vite.config.ts, etc.) | Key-value settings tables |
| Architectural Invariants | File paths, structure, folder layout | Directory trees (find-like) |
4. โก Condensation
Pack maximum information in minimum space. Prefer structural density over paragraphs.
Gotchas & Caveats
- Warning: Never suppress compiler/linter warnings to bypass test suites.
- Trap: Avoid using global state variables across SSR boundaries in Svelte 5.
- Rule: All path variables in plugins must be absolute.
Side-by-Side Comparatives
| Svelte 4 (Stores/Slots) | Svelte 5 (Runes/Snippets) |
|---|---|
let count = writable(0) | let count = $state(0) |
let doubled = derived(count, $c => $c * 2) | let doubled = $derived(count * 2) |
<slot /> | {@render children()} |
5. ๐จ Formatting
Use emojis consistently as visual anchors for rapid scanning:
| Emoji | Category | Use Case |
|---|---|---|
| ๐ | Quick Start | Getting started quickly, installation commands, initial setups |
| ๐ง | Configuration | Settings, config files, env files, tuning parameters |
| ๐ฆ | Dependencies | Installation lists, imports, package definitions |
| ๐ก | Best Practices | Code patterns, optimization tips, recommended layouts |
| ๐จ | Gotchas / Alerts | Critical warnings, traps, common error causes |
| ๐ | Verification | Tests, lint commands, assertions, validation checklists |
6. ๐ Self-Verification Checklist
Before saving, verify the cheat sheet against these rules:
- No paragraph exceeds 2 sentences.
- All commands are copy-pasteable and grouped.
- File paths are exact and absolute where required.
- No fluff words (e.g. โbasicallyโ, โessentiallyโ, โjustโ, โsimplyโ).
- Formatted correctly with appropriate markdown syntax.
7. ๐ Related
Hardcore scrape, recursively research, and obsessively loop to grab all knowledge about any topic, then compress it into 100% loss-less semantic developer guides.
1. ๐ฏ Quick Start Dashboard
flowchart LR A[<b>INPUT SPEC/TOPIC</b><br/>โข Tool / Stack<br/>โข FOSS Library<br/>โข Raw Content] --> B[<b>HARDCORE GRAB</b><br/>โข Web search<br/>โข Repo read<br/>โข Issue/PR] B --> C[<b>OBSESSIVE LOOP</b><br/>โข Cross-ref<br/>โข Verify<br/>โข Deepen] C --> D[<b>KURBY DIGEST</b><br/>โข Strip bloat<br/>โข Keep core<br/>โข Density 100%]
2. ๐ Hardcore Grabbing
- Recursive Search: Use
web_searchandreadtools to grab docs, spec sheets, and FOSS repositories. - Local Discovery: Map workspace dependencies (
package.json,Cargo.toml) and environment configs (.env*). - Diverse Sources: Target developer wikis, RFCs, GitHub issues, and discussion threads.
3. ๐ Research Loop
- Perpetual Looping: Avoid stopping at the first search page. Retrieve deep pages and cross-reference contradictory sources.
- Fact Verification: Verify command parameters, API changes, and environment limits against live codebase files.
- Traversing Deprecations: Identify legacy paths, active forks, and pending breaking changes in issue lists.
4. โ๏ธ Kurby Compression
- Bloat Elimination: Delete conversational pleasantries, introductory guides, meta-dialogues, and verbose explanations.
- Semantic Preservation: Condense text while retaining all parameters, configurations, types, and traps.
- Environment Scope: Isolate and keep only what applies directly to the target operating system, tooling, and constraints.
5. ๐จ Formatting
| Emoji | Category | Role in Digest |
|---|---|---|
| ๐ | Quick Start | Scraped installation and bootstrapping steps. |
| ๐ง | Configuration | Raw configuration flags, properties, and environment variables. |
| ๐ฆ | Dependencies | Target package declarations, modules, and library imports. |
| ๐ก | Best Practices | Architectures, design patterns, and optimization tricks. |
| ๐จ | Gotchas / Alerts | Deprecations, traps, API incompatibilities, and compiler quirks. |
| ๐ | Verification | Test commands, validation scripts, and sanity assertions. |
6. ๐ Self-Verification Checklist
Before finalizing any digested content, verify against these rules:
- No paragraph exceeds 2 sentences.
- 100% of core information is retained in condensed format.
- No fluff words (e.g. โactuallyโ, โbasicallyโ, โsimplyโ, โobviouslyโ).
- Visual landmarks are applied consistently.
7. ๐ Related
1. ๐ฏ Core Principle
The LLM Wiki is a persistent, compounding personal knowledge base compiled once and kept current by an LLM-in-the-loop. Unlike traditional Retrieval-Augmented Generation (RAG) which rediscovers knowledge per query, the LLM Wiki synthesizes information, tracks contradictions, establishes cross-references, and integrates new context directly into structured, interlinked markdown pages.
The human curates sources and directs the domain constraints; the agent summarizes, cross-references, directories, and audits consistency.
2. ๐๏ธ Layout
A standard LLM Wiki resides at a designated directory (defaulting to ~/wiki) with the following hierarchy:
wiki/
โโโ SCHEMA.md # Domain conventions, taxonomy, tag constraints, page thresholds
โโโ index.md # Alphabetical content catalog grouped by type with one-line summaries
โโโ log.md # Chronological record of all updates, rotated at 500 entries
โโโ raw/ # Layer 1: Immutable source material
โ โโโ articles/ # Web articles, text scrapes
โ โโโ papers/ # PDFs, ArXiv documents
โ โโโ transcripts/ # Meeting transcripts, interviews
โโโ entities/ # Layer 2: Subject profiles (people, organizations, models)
โโโ concepts/ # Layer 2: Subject topics (techniques, mathematical formulations)
โโโ comparisons/ # Layer 2: Side-by-side matrices and evaluations
โโโ queries/ # Layer 2: Filed syntheses of complex user questions
๐ฅ Layer 1: Raw Sources
Raw source documents are immutable. The agent reads from but never writes to this directory. Each source receives frontmatter mapping its origins:
---
source_url: https://0rk.de/article
ingested: YYYY-MM-DD
sha256: <body-hash>
---The SHA256 digest is calculated over the raw markdown/text body (excluding the frontmatter) to detect content drift or duplicate ingestion.
๐ Layer 2: Wiki Pages
Wiki pages contain synthesized knowledge written in markdown with standard YAML frontmatter:
---
title: Page Title
created: YYYY-MM-DD
updated: YYYY-MM-DD
type: entity | concept | comparison | query
tags: [tag1, tag2]
sources: [raw/articles/source-file.md]
confidence: high | medium | low
contested: false
contradictions: []
---๐ Layer 3: Schema
Contains the domain definition, tag taxonomy, and page-creation thresholds. It governs what tags are allowed and what topics warrant page creation.
3. โ๏ธ Core Operations
๐ฅ Ingest Pipeline
When ingesting new material:
- Source Capture: Save the raw document into
raw/under a lowercase, hyphenated slug. Prepend the origin URL and compute its body SHA-256. If a document with the same URL already exists, verify the hash. Skip if identical; flag drift and overwrite if changed. - Entity & Concept Extraction: Identify key subjects that meet the Page Thresholds (appearing in 2+ sources or central to one).
- Index Scan: Search
index.mdand check the filesystem to locate existing pages for the extracted subjects. - Write/Update Pages:
- For new subjects, create files in their respective directories. Ensure at least two outbound
[[wikilinks]]link them to existing pages. - For existing subjects, integrate the new facts. Bump the
updateddate. - If claims conflict, follow the Conflict Policy: do not silently overwrite. Detail both perspectives with dates and sources, mark
contested: true, add the conflicting page to thecontradictionslist, and log the conflict.
- For new subjects, create files in their respective directories. Ensure at least two outbound
- Navigation Update: Append new pages to
index.mdand document the action insidelog.md.
๐ Query Flow
When resolving user questions:
- Orientation: Read
SCHEMA.md,index.md, and the last 30 lines oflog.md. - Search: Execute regex search for keywords across the wiki directory.
- Synthesis: Synthesize a comprehensive answer, citing relevant pages using wikilinks (e.g.,
[[transformer-architecture]]). - Filing: For highly complex or side-by-side syntheses, create a page under
queries/orcomparisons/to save the work.
4. ๐งญ Navigation
index.md: Tracks every page sorted alphabetically within sections corresponding to theirtype(Entities, Concepts, Comparisons, Queries).- Scale Rules:
- Split a section when it exceeds 50 entries.
- Generate a
_meta/topic-map.mdgrouping pages by theme when total entries exceed 200.
5. ๐ Lint & Audit
The agent must programmatically audit the vault using a script or command to report on:
- Orphans: Pages with zero inbound wikilinks.
- Broken Links: Wikilinks pointing to non-existent target files.
- Index Gaps: Wiki pages present in the filesystem but missing from
index.md. - Schema Compliance: Frontmatter validation and tags not declared in
SCHEMA.mdโs taxonomy. - Staleness: Pages updated >90 days ago that reference active subjects.
- Contradictions: Pages with
contested: trueor unresolved conflicts. - Size Limits: Pages exceeding 200 lines (candidates for splitting).
6. ๐ Related
Complete, zero-fluff reference guide for Quartz 5, a fast, modular, TypeScript/YAML-configured static site generator optimized for publishing digital gardens and Obsidian vaults.
1. ๐ Quick Start
Essential CLI Commands
- Initialize project: Create a new Quartz workspace in the vault directory:
npx quartz create - Local development: Launch a local hot-reloading preview server:
npx quartz build --serve - Compile static files: Build optimized production HTML/CSS/JS assets to
public/:npx quartz build - Configuration validation: Run typechecks and code formatter checks:
npm run check
Deployment Configuration
- Multi-Platform Target: Quartz builds static files that can be hosted on GitHub Pages, Cloudflare Pages, Netlify, or Vercel.
- Build Settings: Use the following standard configurations in host pipelines:
- Build Command:
npx quartz plugin install && npx quartz build - Output Directory:
public
- Build Command:
- Sitemap & RSS: Set
baseUrlinquartz.config.yamlto configure feed sitemaps and XML paths correctly.
2. ๐ง Configuration
- Primary settings: Site-wide properties (theme colors, locale, fonts, and active plugins).
- JSON Schema: Supported editors validate syntax and catch formatting mistakes dynamically.
Configuration Template
# quartz.config.yaml
configuration:
theme: "light"
locale: "en-US"
baseUrl: "ssot.0rk.de" # Root domain for feeds
layout:
groups:
toolbar: # Custom flexbox container
direction: row # Flex direction
gap: 0.5rem # Item spacing
byPageType:
canvas:
template: minimal # Render frame override for Obsidian .canvas files
content:
template: default # Fallback layout frame
plugins:
- source: github:quartz-community/explorer
enabled: true
layout:
position: left # Section placement (left/right/beforeBody/afterBody/footer)
priority: 100 # Priority order (higher numbers render higher up)
options:
title: "Navigation"
- source: github:quartz-community/latex
enabled: true
layout:
position: beforeBody
priority: 50
options:
renderEngine: katexAdvanced Customization (quartz.ts)
- TypeScript Merging: Code-based configuration logic, plugins callbacks (sorting/filtering), and customizations are written in
quartz.ts. - Precedence rule: Programmatic rules in
quartz.tstake precedence and merge directly with values inquartz.config.yaml.
3. ๐ฆ Dependencies
System Requirements
- Runtimes: Requires Node.js v22+ and npm v10.9.2+ to support core ESM and plugin API execution.
- Module Sync: Restore all plugins listed in project configuration:
npx quartz plugin install --from-config
Plugin Management CLI
- Add External Plugin: Install community-authored plugins directly from GitHub repositories:
npx quartz plugin add <github-url> - Dependency Updates: Resolve lockfile or fresh clone issues by updating all plugins:
npx quartz plugin install --latest
Core Plugin Pipeline Stages
| Category | Pipeline Phase | Purpose | Key Built-in Examples |
|---|---|---|---|
| Transformers | Parse & alter AST | Process Markdown syntax, parse frontmatter, extract links. | ObsidianFlavoredMarkdown, Frontmatter, CrawlLinks |
| Filters | Prune content | Exclude specific files (drafts, non-published) from building. | Drafts, ExplicitPublish |
| Emitters | Write outputs | Compile and emit static assets, search indices, and graph files. | Pagefind (Search), GraphView, Static |
4. ๐ก Best Practices
- Build Optimization: Disable computationally expensive emitters like
GraphViewto accelerate compilations in large vaults. - Obsidian Link Format: Use clean Markdown relative links or native Wikilinks (
[[VaultNote]]) for reliable link resolution. - Asset Management: Keep images and attachments in a centralized vault folder to ensure path mappings build without errors.
5. ๐จ Gotchas & Warnings
- V4 Configuration Migrations: Version 4 utilizes TypeScript configs (
quartz.config.ts); version 5 enforcesquartz.config.yaml. - Option Nesting Gotchas: Ensure option properties are nested under the
options:block in your YAML, or Quartz will silently ignore them. - C# Collision: Do not confuse Quartz SSG (Obsidian publishing) with the Quartz.NET scheduling library.
- Slow Builds: Speed up builds in heavy environments using the concurrency flag:
npx quartz build --concurrency 8 - Failed Deployments: Outdated Node/npm engines are the leading cause of setup dependency errors in production environments.
- Nginx Clean URL 404s: Quartz references internal pages with clean URLs (e.g.
/specs/omp), but emits them as.htmlfiles (e.g./specs/omp.html). To prevent 404 routing errors, ensure the Nginx config has the.htmlfallback enabled:location / { try_files $uri $uri/ $uri.html =404; }
6. ๐ Research
- Quartz Syncer: Obsidian companion plugin that pushes vaults and resolves/exports Dataview queries to static formats.
- Canvas Rendering: Core layout supports direct visual parsing and responsive display of Obsidian
.canvasmaps. - Official Documentation: Quartz SSG Official Site
- Source Code: jackyzha0/quartz
llms.txtgives Large Language Models and AI agents a clean, curated, machine-first map of a siteโs content โ a table of contents written for inference, not browsers. It sits beside its cognitive-filesystem siblings SKILL.md, AGENTS.md, and the lingo glossary.
1. ๐งฌ Anatomy
Canonical skeleton of a compliant
llms.txt, top to bottom โ clean Markdown in a fixed order.
# Site/Project Name
> Blockquote containing a short, descriptive context summary.
Detailed project descriptions and usage guidelines go here.
## 2. Navigation Group Heading
- [Link Name](https://ssot.0rk.de/target): Optional description text separated by a colon.
- [Additional Link](/local-path): Description details.| Part | Required | Rule |
|---|---|---|
| H1 Header | โ | Project name on the very first line. |
| Blockquote | โ | One-paragraph summary of the siteโs context. |
| Body | optional | Free-form prose for usage guidelines and caveats. |
| H2 Navigation | recommended | Group links logically under section headings. |
| Links | recommended | Standard [Name](URL) followed optionally by : Description. |
3. ๐ Deployment
Serve raw text files from the domain root.
- Location: Host at the root of the target domain:
https://ssot.0rk.de/llms.txtโ streamlined navigation and high-level table of contents.https://ssot.0rk.de/llms-full.txtโ optional full-text compilation of all target documents.
- Static Serving: Drop the raw text files directly into the public or content directories of static site generators (Quartz, Docusaurus, VitePress).
4. ๐ฆ Tooling
- WordPress: integrate via SEO plugins (e.g. Yoast, AIOSEO).
- CI/CD: generate dynamically during builds with project crawlers or custom scripts.
5. ๐ก Best Practices
- Jargon-Free Language: keep descriptions simple and direct for optimal LLM context parsing.
- Clean Markdown: avoid complex HTML tags or styles so scrapers stay compatible.
- Unambiguous Paths: use absolute URLs or root-relative paths for reliable link resolution.
6. ๐จ Gotchas
- Not an Official Protocol: major AI platforms do not commit to parsing
llms.txtautomatically. - Complementary to Robots:
llms.txtguides attention but never replaces the permission controls inrobots.txt. - Token Optimization: keep
llms.txthigh-level and offload full text tollms-full.txtto minimize token overhead.
N32G031-based vape โ pocket console. Novo 6 ยท Raz TN9000 ยท Kraze HD7K & clones.
graph LR A["๐ OPEN<br>Teardown + clean<br><i>spudger, IPA+gloves</i>"] B["๐ CONNECT<br>USB-C SWD tap<br><i>CC1=SWDIO, CC2=SWCLK<br>3.3V ONLY!</i>"] C["๐ฅ DUMP<br>OpenOCD flash<br><i>0x08000000<br>64KB MCU, 1MB SPI NOR</i>"] D["๐จ MOD<br>RGB565 bitmaps<br><i>80ร160 px, big-endian<br>Pillow</i>"] E["๐ค FLASH<br>SPI/SWD write<br><i>TL866 / CH341A<br>flashrom</i>"] A -->|"โฑ๏ธ"| B -->|"โฑ๏ธ"| C -->|"โฑ๏ธ"| D -->|"โฑ๏ธ"| E style A fill:#4a9,color:#fff style B fill:#49a,color:#fff style C fill:#69c,color:#fff style D fill:#e9973f,color:#fff style E fill:#a882ff,color:#fff
๐งค GLOVES MANDATORY ยท ๐ DISCONNECT BATTERY FIRST
๐ง HW Overview
graph TD HW["๐ HW SPECS"] MCU["๐ง MCU<br>N32G031K8Q7<br>ARM Cortex-M0 ยท 48MHz<br>64KB Flash ยท 8KB SRAM"] SCR["๐บ Screen<br>0.96โณ 80ร160 IPS TFT<br>ST7735S or GC9107<br>4-wire SPI"] FLS["๐พ Flash<br>GT25Q80A 8Mbit (1MB)<br>bitmaps, puff counters, config"] CEL["๐ Cell<br>13450 Li-ion ~1700mAh<br>UNPROTECTED ยท puncture = ๐ฅ"] COI["โก Coil<br>N-ch MOSFET driver<br>latch HIGH = fire hazard โ ๏ธ"] HW --- MCU HW --- SCR HW --- FLS HW --- CEL HW --- COI style HW fill:#69c,color:#fff,stroke:#357,stroke-width:2px style CEL fill:#f44,color:#fff,stroke:#a00,stroke-width:2px style COI fill:#f80,color:#fff,stroke:#a50,stroke-width:2px
1. ๐ ๏ธ Teardown
| # | Do | โ ๏ธ |
|---|---|---|
| 1 | Pry bottom cap โ slide sled out | Plastic spudger only |
| 2 | Disconnect battery lead FIRST | Puncture = thermal runaway ๐ฅ |
| 3 | Clean PCB: 99% IPA + nitrile gloves ๐งค | Nicotine absorbs through skin |
| 4 | ID chip markings (QFN32/LQFP32) | Varies between production runs |
๐ฅ PULL GENTLY: Do NOT puncture the 13450-size 1700mAh lithium-ion battery! Puncture = Thermal runaway = fire.
๐งค E-liquid has nicotine (toxic and absorbs through skin!). Use 99% Isopropyl Alcohol to clean the logic board and wear nitrile gloves!
2. ๐ SWD Tap
The USB-C SWD Hack: Hardware engineers often wire the SWDIO and SWCLK debug lines directly to the unused CC1/CC2 pins on the USB-C port!
graph LR subgraph USB["๐ USB-C Port"] CC1["CC1"] CC2["CC2"] GND_U["GND"] VBUS["VBUS 5V"] end subgraph PRB["๐ฌ Debug Probe"] SWDIO["SWDIO"] SWCLK["SWCLK"] PGND["GND"] end subgraph MCU["๐ง N32G031"] PA13["PA13"] PA14["PA14"] end CC1 -->|"data"| SWDIO -->|"debug"| PA13 CC2 -->|"clock"| SWCLK -->|"debug"| PA14 GND_U -->|"common"| PGND VBUS -.->|"LETHAL"| PA13 style VBUS fill:#f44,color:#fff,stroke:#a00,stroke-width:3px style CC1 fill:#4a9,color:#fff style CC2 fill:#49a,color:#fff style PA13 fill:#6a6,color:#fff style PA14 fill:#6a6,color:#fff style SWDIO fill:#4a9,color:#fff style SWCLK fill:#49a,color:#fff
# USB-C Debug Accessory Mode: CC1โSWDIO | CC2โSWCLK | GNDโGND
# โ ๏ธ 3.3V ONLY โ 5V probe = dead MCU | Need breakout + 5.1kฮฉ pull-downs
openocd -f interface/stlink.cfg -f target/n32g031.cfg \
-c "init; halt; dump_image fw.bin 0x08000000 0x10000; exit"
# Got 0xFFFFFFFF? โ FMC read-protection ON ๐ โ chip-erase (loses factory FW)
# Alt: SRAM injection via ISP (BOOT0 pin) or UART bootloader| Tool | Use |
|---|---|
| ST-Link V2 / J-Link / CMSIS-DAP | SWD debug โ 3.3V logic |
| Custom USB-C breakout | Expose CC1/CC2 + 5.1kฮฉ pull-downs |
| OpenOCD / pyOCD | halt โ dump_image โ flash write_image |
3. ๐ฅ FW Extraction
flowchart TD A(["๐ฌ Connect SWD"]) --> B{"halt + dump?"} B -->|"got data"| C["๐ Ghidra/IDA"] B -->|"0xFF..."| D{"๐ FMC Locked"} D -->|"nuke it"| E["๐ฃ Chip Erase"] D -->|"bypass"| F["๐ SRAM Inject"] D -->|"alt"| G["๐ก UART Boot"] E --> H["โ ๏ธ Factory FW Gone"] H --> I(["๐ค Flash Custom"]) F --> J["๐ RAM Bypass"] G --> J J --> C C --> K["๐บ๏ธ Locate Bitmaps"] style A fill:#4a9,color:#fff style D fill:#f44,color:#fff,stroke:#a00,stroke-width:3px style H fill:#f80,color:#fff style E fill:#fa0,color:#000 style I fill:#4c9,color:#fff style K fill:#69c,color:#fff
๐ FMC Lock? If the memory dump gives you endless
0xFFFFFFFF, the Flash Memory Controller (FMC) is locked. Youโll need SRAM injection via ISP mode or a Whole Chip Erase (destroys factory firmware forever).
4. ๐จ Display Mod
Pixel Format: RGB565 โ 16-bit color (5 bits Red, 6 bits Green, 5 bits Blue) stored in big-endian layout. ๐
flowchart LR A(["๐ผ๏ธ PNG"]) -->|"Pillow"| B["๐ 80x160"] B -->|"convert"| C["๐จ RGB565"] C -->|"pack BE"| D["๐ฆ out.bin"] D -->|"desolder"| E["๐ง SSOP Adapt"] E -->|"program"| F["๐พ TL866/CH341A"] F -->|"resolder"| G(["โ Custom LCD"]) style A fill:#69c,color:#fff style C fill:#e9973f,color:#fff style D fill:#a882ff,color:#fff style G fill:#4c9,color:#fff
# PNG โ RGB565 binary (big-endian!) โ flash to GT25Q80A via TL866/CH341A/flashrom
from PIL import Image; import struct
img = Image.open('custom.png').convert('RGB').resize((80,160))
open('out.bin','wb').write(b''.join(
struct.pack('>H',((r>>3)<<11)|((g>>2)<<5)|(b>>3))
for y in range(160) for x in range(80) for r,g,b in [img.getpixel((x,y))]))| Programmer | Interface | Notes |
|---|---|---|
| MiniPro TL866 | SPI NOR | Desolder chip, SSOPโDIP adapter |
| CH341A | SPI NOR | Cheapest option, clip or desolder |
| flashrom | CLI | flashrom -p ch341a_spi -r dump.bin |
5. ๐ฅ๏ธ LCD Init
sequenceDiagram participant MCU as MCU participant LCD as LCD rect rgb(68, 207, 110, 0.1) Note over MCU,LCD: Reset Phase MCU->>LCD: SWRESET 0x01 Note over LCD: 150ms wait MCU->>LCD: SLPOUT 0x11 Note over LCD: 500ms wait end rect rgb(83, 223, 221, 0.1) Note over MCU,LCD: Config Phase MCU->>LCD: COLMOD 0x3A 0x05 (RGB565) MCU->>LCD: MADCTL 0x36 (orientation) Note right of MCU: Bit3 = RGB/BGR swap MCU->>LCD: CASET 0x2A (col range) MCU->>LCD: RASET 0x2B (row range) end rect rgb(168, 130, 255, 0.1) Note over MCU,LCD: Activate Phase MCU->>LCD: DISPON 0x29 MCU->>LCD: RAMWR 0x2C + pixels end
SWRESET(0x01) โ SLPOUT(0x11) โ COLMOD(0x3A,0x05=RGB565) โ MADCTL(0x36) โ DISPON(0x29)
- ๐ Red/blue swapped? XOR
MADCTLwith0x08(bit 3 toggles RGBโBGR). Donโt rewire. - โฌ Black border/offset? Set
CASET(0x2A)/RASET(0x2B)โ try_colstart=0x01or0x1A. - ๐ฒ GC9107 blank? Must send unlock
0xFFโ0xA5before any command. Init may start0xFE/0xEF/0xEB.
6. ๐พ Custom FW
graph TD subgraph SDK["๐ Community SDKs"] A["ColorLCDVape-RE"] -->|"memory maps"| C["โก Custom FW"] B["Vaporware SDK"] -->|"display API"| C D["RAZ-RE"] -->|"HW pinouts"| C end C -->|"compile"| E["๐ง arm-gcc"] E -->|"flash"| F["๐ค SWD Write"] F --> G(["๐ฎ Pocket Console"]) subgraph SAFE["๐จ Safety Critical"] C -->|"must have"| H["โฑ๏ธ Timer ISR"] H -->|"kills"| I["๐ MOSFET Off"] C -->|"must have"| J["๐ ADC Watch"] J -->|"triggers"| K["๐ LVC Cutoff"] end style H fill:#f44,color:#fff,stroke:#a00,stroke-width:3px style J fill:#fa0,color:#000,stroke:#a50,stroke-width:2px style G fill:#4c9,color:#fff style I fill:#f44,color:#fff style K fill:#fa0,color:#000
โ ๏ธ THE COIL OF DEATH: If you write your own C code and your MOSFET pin latches HIGH by accident, your coil will melt, the pod will catch fire, and the battery will vent. ALWAYS code a strict hardware-timer-backed thermal cutoff limit! โฑ๏ธ๐จ
๐ก๏ธ Safety Pattern
// MANDATORY: hardware-timer-backed coil cutoff โ main loop bugs CANNOT override
#define MAX_FIRE_MS 10000 // 10s hard ceiling
#define MIN_VBAT_MV 3000 // 3.0V low-voltage cutoff
void init_safety(void) {
GPIO_ResetBits(GPIOA, COIL_PIN); // default: coil OFF
TIM_SetAutoReload(TIM3, MAX_FIRE_MS); // ISR kills MOSFET
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
ADC_AnalogWatchdogThresholdsConfig(ADC1, 0xFFF, MIN_VBAT_MV);
}๐ฆ Deps & Tools
| Category | Item | Notes |
|---|---|---|
| ๐ง Probe | ST-Link V2 / J-Link / CMSIS-DAP | SWD debug โ 3.3V logic |
| ๐พ Programmer | MiniPro TL866 / CH341A / flashrom | SPI NOR read/write (desolder chip) |
| ๐ฅ๏ธ Debug | OpenOCD / pyOCD | halt โ dump_image โ flash write_image |
| ๐ฌ RE | Ghidra / IDA Free | ARM Cortex-M0 disassembly |
| ๐ Convert | Python + Pillow | PNGโRGB565 |
| โ๏ธ Compile | arm-none-eabi-gcc | Custom firmware cross-compile |
| ๐ ColorLCDVape-RE | ginbot86 | Memory maps, re-theming docs |
| ๐ RAZ-RE | xbenkozx | HW revision pinouts |
| ๐ Vaporware SDK | ImoverEngineering | Minimal C SDK โ display only, no coil code |
๐จ Gotchas
| Trap | Fix | |
|---|---|---|
| ๐ฅ | MOSFET latch-of-death โ GPIO HIGH on crash = coil melts โ fire โ battery vent | Hardware timer ISR kills MOSFET; never trust main loop |
| ๐ | FMC/ROP โ 0xFFFFFFFF dump = read-protected | Chip-erase unlocks but destroys factory FW forever |
| โก | 5V probe on 3.3V MCU = instant death | Level-shift or use 3.3V probe |
| ๐งช | Nicotine residue on PCB absorbs through skin | Nitrile gloves + 99% IPA clean |
| ๐ | Same model โ same chips โ HW revisions swap MCU/display/flash | Verify markings every unit |
| ๐ | RGB565 byte order โ 16-bit big-endian (5R/6G/5B) | Garbled colors = wrong endianness |
| ๐ฑ | USB-C DAM โ standard cables donโt expose CC1/CC2 | Custom breakout + 5.1kฮฉ pull-downs |
| ๐ง | SWD locked? โ ISP via UART BOOT0 pin | Check N32G031 datasheet ยง3.4 |
๐๏ธ Full Architecture
graph TB subgraph L1["๐ Physical"] A["๐ฆ Device"] -->|"pry open"| B["๐ง Teardown"] B -->|"99% IPA"| C["๐งน Clean"] end subgraph L2["๐ Debug"] C -->|"expose CC"| D["๐ USB-C Break"] D -->|"3.3V"| E["๐ฌ SWD Probe"] E -->|"connect"| F["๐ป OpenOCD"] end subgraph L3["๐ฅ Extract"] F -->|"halt"| G{"๐ FMC?"} G -->|"unlocked"| H["๐พ MCU 64KB"] G -->|"locked"| I["๐ฃ Erase"] I -->|"blank MCU"| J["๐ Fresh"] F -->|"SPI read"| K["๐พ Flash 1MB"] end subgraph L4["๐จ Mod"] H -->|"disasm"| L["๐ฌ Ghidra"] K -->|"extract"| M["๐ผ๏ธ Bitmaps"] M -->|"Pillow"| N["๐จ RGB565"] N -->|"program"| O["๐ค Flash SPI"] end subgraph L5["๐พ Custom OS"] L -->|"understand"| P["๐ Write FW"] P -->|"safety!"| Q["๐จ ISR Guard"] Q -->|"deploy"| R(["โ Done"]) end style I fill:#f44,color:#fff,stroke:#a00,stroke-width:2px style Q fill:#f80,color:#fff,stroke:#a50,stroke-width:2px style A fill:#69c,color:#fff style R fill:#4c9,color:#fff style G fill:#f44,color:#fff
๐บ๏ธ Visual workflow map: NovoModCanvas โ
Pitch: Replace two fragmented knowledge systems with a single, isolated Quartz 5 instance at
w.0rk.de.
๐ Visual Migration Map: Interactive Canvas โ
1. โ ๏ธ Problem
| System | URL | Stack | Pages | Status |
|---|---|---|---|---|
| LLM Wiki | llm-wiki.0rk.de | Hugo + vanilla JS | 28 | Hugo maintenance overhead, no Obsidian features |
| Personal Wiki | wiki.0rk.de | Raw Markdown | 3 | No web presence (TLS cert missing), no search |
Two knowledge bases, two build systems, zero cross-linking.
2. ๐ก Solution
A 3rd isolated Quartz 5 instance โ separate from ssot.0rk.de (specs) and quartz.0rk.de (showcase).
1. โ๏ธ Quartz 5
- Obsidian
[[wikilinks]]โ wiki already uses them - Full-text search (Pagefind) โ wiki has none
- Graph view โ visualize knowledge connections
- Canvas support โ visual mind maps (this pitch is one)
- Consistent stack โ same tooling as SSOT
llms.txtgeneration โ AI-agent-navigable
2. ๐ก๏ธ Why Isolated
- SSOT = technical specs (how to build things)
- w.0rk.de = knowledge (what things are, research, entities)
- Different audiences, update cadences, content schemas
- Independent deploy cycles, no cross-contamination
3. ๐๏ธ Taxonomy
quartz-wiki/content/
โโโ architecture/ โ llm-wiki architecture/ (7 cognitive layers)
โ โโโ identity-anchors/
โ โโโ mutable-memory/
โ โโโ orchestration/
โ โโโ capabilities/
โ โโโ autonomic/
โ โโโ spec-driven/
โ โโโ swarm-alignment/
โโโ topics/ โ llm-wiki topics/ (13) + wiki concepts/ merged
โ โโโ cs2docs.md
โ โโโ docskurby.md
โ โโโ quartz5.md
โ โโโ skill-xray.md
โ โโโ discord-omp-plugin.md
โ โโโ svelte-5-*.md
โ โโโ transformer-architecture.md โ from wiki concepts/
โ โโโ ...
โโโ entities/ โ wiki entities/ (research-grade profiles)
โ โโโ karpathy-llm-wiki.md
โโโ research/ โ llm-wiki research/ + evolving/ merged
โ โโโ research-automation.md
โ โโโ evolving/
โโโ raw/ โ wiki raw/ (source archive)
โ โโโ articles/
โ โโโ papers/
โ โโโ transcripts/
โ โโโ assets/
โโโ reference.md โ llm-wiki-reference.md (system cheatsheet)
โโโ index.md โ unified homepage
Total: ~31 pages (28 from llm-wiki + 3 from wiki, with concepts folded into topics).
4. ๐ช Pipeline
| Step | Action | Details |
|---|---|---|
| โ Clone | Fork quartz-ssot as quartz-wiki/ template | Same Quartz 5 + canvas-page plugin |
| โก Convert | Strip Hugo _index.md โ Quartz index.md | Adapt frontmatter, remove Hugo shortcodes |
| โข Merge | Unify wiki [[wikilinks]] with Quartz links | Already Obsidian-compatible, minimal work |
| โฃ Deploy | npx quartz build + nginx w.0rk.de | Certbot TLS, try_files $uri $uri/ $uri.html =404; |
1. ๐ Post-Migration
llm-wiki.0rk.deโ 301 redirect tow.0rk.dewiki.0rk.deโ 301 redirect tow.0rk.de- Hugo repo archived, wiki directory superseded
5. โ๏ธ Infrastructure
# /etc/nginx/sites-enabled/w.0rk.de
server {
listen 443 ssl http2;
server_name w.0rk.de;
root /home/dv/quartz-wiki/public;
index index.html;
location / {
try_files $uri $uri/ $uri.html =404;
}
# certbot --nginx -d w.0rk.de
ssl_certificate /etc/letsencrypt/live/w.0rk.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/w.0rk.de/privkey.pem;
}1. ๐ DNS
Add w.0rk.de A/AAAA record pointing to same server IP as other *.0rk.de domains.
6. ๐ Landscape
| Domain | Stack | Purpose | Status |
|---|---|---|---|
ssot.0rk.de | Quartz 5 | Technical specs & standards | Active |
quartz.0rk.de | Quartz 5 | Quartz showcase & docs | Active |
w.0rk.de | Quartz 5 | Unified knowledge wiki | NEW |
llm-wiki.0rk.de | โ 301 to w.0rk.de | ||
wiki.0rk.de | โ 301 to w.0rk.de |
7. ๐ Effort
| Component | Complexity | Notes |
|---|---|---|
| Quartz scaffold | Low | Clone existing template |
| Hugo โ Quartz conversion | Medium | 28 pages, frontmatter + shortcode adaptation |
| Wiki merge | Low | 3 pages, wikilinks already compatible |
| Nginx + Certbot | Low | Standard config, proven pattern |
| Canvas maps | Low | Use canvas-gen skill |
| Total | Phased steps | Mechanical migration, no design ambiguity |
The single source of truth for how 0rk content is planned, written, themed, linked, and verified. Every other page obeys this. When a guru page and this Bible disagree, the Bible wins.
1. ๐งญ Mission
Achieve holistic overstanding of the task, then act in pure wisdom: apply DRY / KISS / YAGNI, enforce SOLID + SoC + LoD, ship robust, 100%-complete systems โ never stubs, mocks, or โTODO: implementโ. Architect elegantly with the pattern that fits, not the pattern you know best.
- ๐ค Autonomous loop: plan the work, work the plan, loop until 100% done. Pause only to conclude or escalate an emergency.
- ๐ฃ๏ธ Talk in conclusions, not transcripts. The 7-word response template:
๐: [Condensed conclusion.]โ routine done.๐ฅณ: [Hype chant.]โ a big nut cracked.๐ฅต: [SHOUTING THE ISSUE.]โ emergency, only after thewhen-stuckflow.
- ๐ฏ Decision-completeness: resolve every path, signature, and command up front (see ๐ Planning Standard). The implementer makes no design choices mid-flight.
2. ๐ช Steps
Break ALL work into discrete phases โ steps โ sub-steps. Time estimates are forbidden โ no hours, days, weeks, or โmin readโ.
- โ
Allowed:
Phase 1/3,Step 2 of 5,Task 1.1 / 1.2,- [ ] Title,3/7 complete. - โ Forbidden: โ~2 hoursโ, โWeek 1โ2โ, โDuration: 1hโ.
flowchart LR P["Phase"] -->|"contains"| S["Step"] S -->|"contains"| SS["Sub-step"] SS -->|"tracked by"| C["Checkbox"]
When stuck, run the loop: reason deeply โ gather logs/filetree/web โ apply a triple-checked fix โ test to 100% โ loop with accumulated knowledge โ document root cause. Shout ๐ฅต only after that flow.
3. ๐จ Style
This very page both states and demonstrates the rule: headings are number-first, then emoji, then 1โ3 words.
- ๐ข Order:
## 1. ๐ Skill Tableโ number, emoji, words. Never## ๐ 1. .... - โ๏ธ Length: 1โ3 words. If meaning is lost, fuse a single note under it instead of a long heading.
Example of the fuse rule: a heading that would read โDetailed Migration Rollback Procedureโ collapses to
## 9. โฉ๏ธ Rollbackplus this one-line note.
- ๐ซ No redundant H1: drop a top-level title that just repeats the page title/breadcrumb โ both already render.
- ๐งผ Tasteful emoji: one leading emoji per heading, never per bullet. Zero-fluff, high-density, developer-grade prose.
- ๐ Exception: ๐ Planning Standard is emoji-free in its body โ keep its headings plain, still number-first if numbered.
- ๐๏ธ Frontmatter: keys are
title/description/tags/aliases/created/modified/published. Never add amodifieddate by hand โ git supplies the realHH:mm. Moved files carryaliases: ["<old-slug>"]. - ๐ท๏ธ Tag vocab (pick 2โ4):
discord,omp,memory,quartz,skill,cheatsheet,plan,hardware,research.
4. ๐ง Mermaid
The site themes Mermaid adaptively from CSS variables and re-themes live on dark/light toggle (verified in the plugin fork).
- ๐ซ No
%%{init}%%directives, ever. Never hardcodetheme,themeVariables, or colors โ that forces dark in light mode and freezes the palette. Delete any you find. - ๐ค Quote every edge label:
-->|"Trigger Event"|, never-->|Trigger Event|. - ๐งท Quote node/subgraph text with
(),/,,,:,[]:subgraph S["Daemon (Python / discord.py)"]. - ๐ท Never use the reserved word
endas a node id. - ๐ Best-fit chart: pick
flowchart,sequenceDiagram,stateDiagram,erDiagram, ormindmapby intent. Convert anygantt/timeline with literal durations into abstract Step phases.
Deep dive + copy-paste snippets: ๐ง MermaidGuru. Diagrams beyond Mermaidโs reach โ ๐จ SvgGuru; spatial maps โ ๐บ๏ธ CanvasGuru.
5. ๐ Links
markdownLinkResolution: shortestโ link files by basename, folders by directory path.
- ๐ Files:
[[MermaidGuru|๐ง MermaidGuru]],[omp](https://omp.0rk.de/omp),[[quartz5]]. - ๐ Folders:
[[skills/gurus|๐ง Skill Docs]]. - ๐บ๏ธ Canvas:
[[knowledge/specs.canvas|๐บ๏ธ Site Map]]. - ๐บ๏ธ Canvas Nesting: Every
.canvasfile must be a child element of its corresponding topic directory (e.g.,content/plans/w-0rk-migration/canvas.canvasunder parentcontent/plans/w-0rk-migration/index.md). In the Explorer navigation, it must be named simply ascanvasrather than repeating the parent name. - โ ๏ธ Collision: basename
projectsis ambiguous (thecontent/projects/folder vs the cheatsheet). Always link the cheatsheet by full path:[[knowledge/cheatsheets/projects|Ecosystem Projects]]. - ๐ Real URLs only:
baseUrlisssot.0rk.de. Neverexample.comโ articles โhttps://0rk.de/article; the feed lives athttps://ssot.0rk.de/llms.txt. Secrets become env placeholders ($DISCORD_WEBHOOK_URL,$CHANNEL_ID).
Densify: link omp โ ompkeep โ quartz5 โ quartz5-checklist, and every guru โ its topic page.
6. ๐ง Memory
OmpKeep is the governed memory layer โ heuristics and process context, not factual ground truth.
- ๐ฅ Daily writes append directly; long-term writes enter the inbox for curation. Trust repo files, runtime output, and user instruction for facts.
- ๐ฅ Read
memory://root/memory_summary.mdfirst; escalate confidence only after repo verification. Memory alone is never proof. - โป๏ธ If memory disagrees with the repo, treat it as stale: proceed corrected, then regenerate the artifact. See ๐ง OmpKeep and ๐ Shared Memory.
7. โ Verify
Done means it behaves end-to-end โ not that a scaffold compiles.
- Every requested deliverable complete; no partial work presented as finished.
- All affected artifacts (callsites, links, frontmatter) updated.
- Mermaid blocks carry no init directive and quote every edge label.
- No
example.com; headings are number-first emojified; no time estimates. - Claims grounded in tools/repo; inferences marked. Build, deploy, and commit are the main agentโs job โ content agents never run them.
Operate THIS Quartz fork via ๐ชจ QuartzGuru; the full checklist lives at โ Quartz Checklist.