Yoker Writing Assistant
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
Metadata
Release files for yoker-writing-assistant 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| yoker_writing_assistant-0.1.4.tar.gz | 295.0 kB | Without provenance | Details for yoker_writing_assistant-0.1.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| yoker_writing_assistant-0.1.4-py3-none-any.whl | Python 3 | none | any | Details for yoker_writing_assistant-0.1.4-py3-none-any.whl |
Total release size: 348.3 kB
Release files / yoker_writing_assistant-0.1.4.tar.gz
| Download URL | yoker_writing_assistant-0.1.4.tar.gz |
|---|---|
| Size | 295.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
19da6c4b44cf9551414e1c6efd998e3c128aaf508aaaf16bd96b4a1440da7d2d
|
|
BLAKE2b-256 checksum How to use checksums |
237f28b20e8f76e56129f90819d7dc9bf0bc3d0147222d98cd903b66fd8781b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Release files / yoker_writing_assistant-0.1.4-py3-none-any.whl
| Download URL | yoker_writing_assistant-0.1.4-py3-none-any.whl |
|---|---|
| Size | 53.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4eb07f236fa77786ffa0517e5db053bb2f82ba470a91da04d7763291580d3de7
|
|
BLAKE2b-256 checksum How to use checksums |
87c814d3c88362983e05ea5f4664e5e7fed8f885e323afa3d225316cb6dcdd4a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Security for yoker-writing-assistant 0.1.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.