# Notion Writer (Skill 32) — CLI Enhancements: File Uploads + Markdown Engine > **Date**: 2026-06-27 > **Status**: Approved (brainstorming) > **Scope**: Two additive features — (Tier 1) local file/image upload via the `ntn` CLI, and (Tier 2) an opt-in "markdown engine" that writes through Notion's native enhanced-markdown endpoints. > **Predecessor**: 2026-04-27 Extended Block Coverage (callouts/toggles/columns/mentions), CLAUDE.md v1.2.0 > **Target version**: bump CLAUDE.md footer to v1.3.0 --- ## Goal Add two capabilities to `custom-skills/32-notion-writer/code/scripts/notion_writer.py`: 1. **Tier 1 — Local media uploads.** Today `![alt](path)` is effectively broken (the inline link regex leaves a stray `!` and renders the image as a text link). Make standalone image references work: local files are uploaded via `ntn files create` and embedded as Notion `image` blocks with a `file_upload` reference; remote URLs become `external` image blocks. This fills a genuine capability gap — the parser previously had no image support at all. 2. **Tier 2 — Markdown engine.** Add `--engine markdown` to write content through Notion's native enhanced-markdown endpoints (`POST /v1/pages` with `markdown`, `PATCH /v1/pages/:id/markdown`) instead of the local block converter. A dialect translator converts the skill's existing authoring syntax (GitHub alerts, Pandoc columns, `@[mentions]`) into Notion-flavored markdown so a single source document works in both engines. The default engine stays `blocks` — every existing call and downstream script behaves identically. Both engines share one media-upload path. --- ## Non-goals - **Re-platforming onto `ntn`** (Tier 3, rejected). The skill keeps its token-based SDK core; `ntn` is used only as a file-upload subprocess. - **Reading pages back as markdown** (`GET /v1/pages/:id/markdown`). Not needed for a writer; parked. - **Workspace-mismatch hard guard.** User chose plain shell-out; preflight surfaces the `ntn` target workspace as an informational note but does not block on mismatch. - **Generic local attachments** (``, ``, `