Skip to main content

Yoker Writing Assistant

Python uv Yoker Docs Agentic

A writing assistant that coaches and develops — but never writes for you.

This is a Yoker showcase package. It demonstrates the yoker-as-runtime mode: Yoker is the entry point, and this package provides the main agent and skills for an interactive writing coaching session. The agent interviews, challenges, reviews, and flags — but every word of prose is written by the author.

Full documentation is published at yoker-writing-assistant.readthedocs.io — including a tutorial that tells the build story end-to-end, a quickstart with a worked example, and a per-skill reference.

Status

Initial release. The Python package, plugin manifest, entry point, agent definition, and all 8 skills are in place. Tests pass, all quality gates green. See AGENTS.md for the full project guide.

What It Does

The writing assistant is a developmental editor + writing coach for an author who writes every word themselves. It operates on the declared-work scope: it only acts on prose the author has already written. It never generates prose, never rewrites, never fills blanks.

Skills

Skill What it does
writing-review Developmental review, claim verification, gap/perspective analysis
writing-continuity Dangling references, cold terms, dropped themes, missing transitions
writing-voice Voice drift detection, ChatGPT smell flagging, voice profile checks
writing-mistakes Common writing mistakes — eggcorns, redundancies, non-native errors, craft patterns
writing-idioms Idiom/proverb misuse → canonical form as a proposal
writing-split Long-form → sequential social post sequence
writing-order Reorder raw material into smooth argument flow
copy-writer Platform-specific content adaptation (Twitter, LinkedIn, Mastodon, etc.)

The Non-Negotiable Rule

The agent never writes prose. Every gap is marked TODO:, every proposal is marked TODO PROPOSAL:. The author accepts, rejects, or writes. This is the core design principle — friction is the value, not a bug.

Quick Start

uvx yoker-writing-assistant                    # run directly (if published)

From a local checkout:

make env-dev                                    # install all dependencies
make run                                        # launch the writing assistant

Or run directly via the Yoker CLI:

yoker --with yoker_writing_assistant --agent-name yoker_writing_assistant:writing-assistant

A Yoker backend is a prerequisite — either a local Ollama install or a cloud LLM provider API key. If you do not already have one, run uv run yoker init once to write ~/.yoker.toml with a backend of your choice.

Configuration

Runtime configuration lives in ~/.yoker.toml (never committed). A reference template is provided as yoker.toml in this repo. The key sections:

  • [backend] — LLM provider and model
  • [agents.directories] — directories to scan for agent definitions (e.g., for the optional researcher agent)
  • [skills.directories] — directories to scan for skill definitions
  • [plugins] — plugin registration (this package is loaded via --with yoker_writing_assistant)

Optional: Researcher

The writing assistant can delegate research tasks to c3:researcher, an external research agent. To enable it, add to yoker.toml:

[agents.directories]
c3 = "../c3/agents"

If the researcher is not configured, research delegation is unavailable and the agent falls back to direct web search (yoker:websearch / yoker:webfetch), noting the limitation in its output. All other functionality works without it.

Architecture

This package is a Yoker plugin: it declares an __YOKER_MANIFEST__ that points Yoker to its agents/ and skills/ directories (inside the Python package, discovered via importlib.resources). Yoker's plugin loader discovers the agent and skill definitions automatically, namespacing them under yoker_writing_assistant:. The entry point is a thin Python wrapper (cli.py) that injects --with yoker_writing_assistant and --agent-name yoker_writing_assistant:writing-assistant into Yoker's CLI, so uvx yoker-writing-assistant launches the writing assistant directly.

The sister project yoker-assistant demonstrates the complementary mode — yoker-as-SDK — where Python owns the process and calls Yoker as a library.

Both projects share a common quality bar documented in STANDARDS.md.

Documentation

Full documentation lives in docs/ and is published to ReadTheDocs:

https://yoker-writing-assistant.readthedocs.io

The Tutorial tells the build story end-to-end — why this package exists, the non-negotiable rule, the thin-orchestrator architecture, the eight skills, the plugin manifest and CLI wrapper, and the optional researcher integration.

Supporting pages: Installation, Quickstart, Architecture, Skills, Configuration, API, Dogfooding, Changelog.

The AGENTS.md file provides the project guide for agents working on this codebase. PACKAGE.md provides AI-optimized package documentation for consumers.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yoker_writing_assistant-0.1.3.tar.gz (306.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yoker_writing_assistant-0.1.3-py3-none-any.whl (53.3 kB view details)

Uploaded Python 3

File details

Details for the file yoker_writing_assistant-0.1.3.tar.gz.

File metadata

  • Download URL: yoker_writing_assistant-0.1.3.tar.gz
  • Upload date:
  • Size: 306.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for yoker_writing_assistant-0.1.3.tar.gz
Algorithm Hash digest
SHA256 2606bc385337174b9521eaa8562550a98db0cbf503df06a3ae414e1cad1dd28d
MD5 83474e139dcbb2d4998c37507889e250
BLAKE2b-256 1f4a2d11d6f37c1fcdea84ae0fa2a0a372c7dca79010eea069018278ad91fcc6

See more details on using hashes here.

File details

Details for the file yoker_writing_assistant-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for yoker_writing_assistant-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7d643e95fce87b16770e095c25d966f977bf73347ea46e9f662c8dc38511cfb5
MD5 5bcc8a228d0c9cd124dda101baebffb6
BLAKE2b-256 ca8343630ba22fa73d2eb229681408c4413c3b22e93cc8ff70bdc61eab81124b

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.4

2 files

This release

0.1.3 This release

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page