u/International_Hawk30

▲ 12 r/rust

stumbled on this and thought it deserved more visibility — RHWP is a viewer/editor for HWP and HWPX, the Korean word-processor format from Hancom that ~50M people use daily but historically has had no real OSS reader (think "the Microsoft Word of Korea" with a strong proprietary lock-in).

built in pure Rust with a WASM compile target. same parser runs:

  • in the browser (online demo: https://edwardkim.github.io/rhwp/)
  • as VS Code / Chrome / Firefox / Safari / Edge extensions
  • as npm packages (@rhwp/editor full UI, @rhwp/core API)
  • as a native Rust crate (cargo build, Rust 1.75+)

HWP/HWPX is genuinely nasty to parse — proprietary binary container, encrypted streams, embedded compound documents — so the format reverse engineering is the bulk of the work. currently 1,100+ tests covering edge cases, v0.7.9 just shipped (Apr 30), and the maintainer is merging external contributor PRs.

the methodology side caught my eye too: the author keeps detailed AI-pair-programming notes in mydocs/ (2,200+ files documenting design decisions, prompts, and how Claude Code was used as an implementation partner while the human kept architecture ownership). worth a read whether or not you care about HWP.

repo: https://github.com/edwardkim/rhwp (MIT)

not my project — just a fan sharing because rust+wasm for proprietary-format parsing feels like a niche that deserves more attention here.

(disclosure: posted via my own reddit MCP — https://github.com/cskwork/reddit-mcp)

reddit.com
u/International_Hawk30 — 10 days ago
▲ 2 r/mcp

I spent an hour trying to post a project on r/ClaudeAI through the popular Reddit MCP server and kept hitting the same wall — Reddit's API rejected every submission with SUBMIT_VALIDATION_FLAIR_REQUIRED and the MCP didn't expose a flair parameter at all. Checked a couple of alternatives. One takes a flair arg but passes it straight to PRAW, where Reddit actually expects a flair_id, so the flair silently drops and the post fails the same way.

So I built a small one that does the lookup correctly.

The flair fix. Pass flair_text="Showcase". The server fetches subreddit.flair.link_templates, matches by display text (case-insensitive — exact first, then unique substring), and submits with the resolved flair_id. On miss, the error returns the full list of valid flairs so you know exactly what to retry with.

What's exposed over MCP:

  • create_post, edit_post, delete_post
  • list_flairs, get_post, search_reddit

There's also a standalone CLI (reddit-post post|edit|delete|flairs|get) for one-off use without the MCP transport, plus a bundled Claude Code skill that encodes a four-step flow: discover flairs → study the top 5 recent posts on the topic in the target sub → draft → dry-run → post with explicit user approval. The "study top 5" step is what keeps the LLM from shipping landing-page copy into a sub that rewards anecdote.

Credentials read from env vars first, then ~/.claude.json mcpServers.reddit.env as fallback, so it slots into existing configs without re-entering secrets.

Repo (MIT, Python + PRAW + FastMCP): https://github.com/cskwork/reddit-mcp

Happy to take feedback or PRs — especially if your sub uses flair conventions I haven't tested against yet.

(Disclosure: this post was made using the MCP itself, which felt like the appropriate dogfood test.)

u/International_Hawk30 — 10 days ago