Edytor
Tools
What worked
The detectors directly implement a 6-pass revision heuristic distilled from editorial analysis of ~50 of my posts — the research document did the hard design work, and Claude Code translated it into code cleanly. The 'sit quietly in the room like an editor' philosophy shaped every decision: debounced analysis (2.5s after typing stops), folder scoping to blog/ and _draft/ only, console-only output in Phase 1 with visual surfaces deferred. The parser preserves character offsets, which means future gutter marks won't require re-architecture.
What broke
The citation detector has false positives on place names, acronyms, and sentence-starts — capitalization is a fundamentally weak heuristic for proper noun detection. Four of the six failure modes (metaphor coherence, inventory depth, promise alignment, transition quality) need LLM analysis that hasn't been built yet, so the tool currently catches surface-level issues only. parseDocument() silently skips malformed content, which is fine for drafts but means errors disappear quietly.
Roles
I wrote the research documents — the editorial analysis defining what a failure mode is and the 6-pass revision heuristic. Claude Code wrote every detector from those specs. The analysis cadence, folder scoping, and threshold configurability were co-designed.
Edytor (Writing Coach Obsidian Plugin)
Overview
Edytor is an Obsidian plugin providing real-time, non-disruptive writing coaching for personal blog drafting. It detects six specific failure modes derived from editorial feedback on my writing, helping catch recurring bad habits during drafting rather than after publication.
Philosophy: Non-disruptive observation, never interference with writing flow. The plugin "sits quietly in the room" like an editor — visible when you look for it, invisible when you don't.
Target users: Writers using Obsidian who maintain a personal blog (specifically my ~/book vault with blog/ and _draft/ folders).
What It Does
Six local detection systems running in real-time as you type:
- Hedge phrase detection — 14-phrase kill list ("I think", "perhaps", "sort of")
- Apology pattern detection — 8 patterns ("thinking out loud", "ramble-filled")
- Citation/proper noun density — Three-pass: as-argues, bibliography, proper-noun
- Sentence length detection — Max/avg word counts per sentence (configurable amber/red thresholds)
- Parenthetical detection — Open parentheses count per sentence
- List/inventory detection — Markdown lists 3+ items and bibliography-style constructions
Analysis is debounced (2.5s after typing stops), scoped to blog/ and _draft/ folders only, with configurable thresholds per metric. Currently outputs to console; visual surfaces (status bar, gutter marks) are next.
How It Evolved
The real design work happened before any code was written. I analyzed ~50 of my published posts and distilled the recurring problems into a 6-pass revision heuristic. That research document became the spec — Claude Code translated each pass into a detector.
Phase 1 was deliberately minimal: console output only, no UI. The goal was to validate that the detectors catch real issues in real drafts before investing in visual surfaces. This turned out to be the right call — the citation detector's false positive rate on proper nouns would have been much more annoying as inline gutter marks than as console entries.
The parser preserves character offsets throughout the pipeline, which was a forward-looking decision: when gutter marks arrive in Phase 2, the architecture won't need to change.
Four of the six failure modes (metaphor coherence, inventory depth, promise alignment, transition quality) require LLM analysis via Roughneck, which means the tool currently catches surface-level writing issues only. The harder, more valuable detections are still ahead.
Architecture Decisions
- Research-first design — Detectors implement a specific editorial framework, not generic writing advice. The 6-pass heuristic came from analyzing my actual failure patterns.
- Offset preservation in parser — Character positions maintained from parse through analysis, so future visual overlays don't require re-architecture.
- Regex ordering — Longest-first matching, multi-pass citation detection, abbreviation handling to reduce false positives.
- Debounced, scoped analysis — 2.5s after typing stops, blog/ and _draft/ folders only. No performance impact on other vault activity.
- Console-first, UI-later — Validate detection quality before investing in visual surfaces.
Weaknesses and Open Questions
- Citation detection false positives — Capitalization is a weak heuristic; catches place names, acronyms, sentence-starts. May need a different approach entirely.
- No LLM analysis yet — The four hardest failure modes need Phase 3 (Roughneck integration). The current tool only catches surface-level issues.
- Silent error handling — parseDocument() skips malformed content without reporting. Fine for drafts, fragile as a pattern.
- No incremental analysis — Full re-analysis on every debounce. Not a problem at current document sizes, but won't scale to long-form.
- Zero UI — Console only until Phase 2 ships.
Ecosystem Role
Edytor connects to the broader portfolio through Roughneck (future LLM analysis queue) and CNC (future writing quality metrics). It's also the project most directly shaped by research rather than code — the editorial analysis documents are the real artifact, and the plugin is their runtime expression.