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.
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 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.,c3 = "../c3/agents"for the optional researcher agent)[skills.directories]— directories to scan for skill definitions (e.g.,c3 = "../c3/skills"for c3 heritage skills)[plugins]— plugin registration (this package is loaded via--with yoker_writing_assistant)
Optional: c3 Researcher
The writing assistant can delegate research tasks to c3:researcher, an
external agent from the c3 project.
To enable it, add to yoker.toml:
[agents.directories]
c3 = "../c3/agents"
[skills.directories]
c3 = "../c3/skills"
If c3 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
c3.
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 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 will live in docs/ (pending). The
AGENTS.md file provides the project guide for agents working
on this codebase.
License
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yoker_writing_assistant-0.1.0.tar.gz.
File metadata
- Download URL: yoker_writing_assistant-0.1.0.tar.gz
- Upload date:
- Size: 276.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
600f3a6c31965d82769213a9efaae63d35e51401ed0ae72816ef99487bb733a2
|
|
| MD5 |
f6237a87a6538a4b05de63000e766256
|
|
| BLAKE2b-256 |
7eee49eda5ca6eb93bfea128d1cb213d1342ea56d3e7a3e903d91bf34ae20f2d
|
File details
Details for the file yoker_writing_assistant-0.1.0-py3-none-any.whl.
File metadata
- Download URL: yoker_writing_assistant-0.1.0-py3-none-any.whl
- Upload date:
- Size: 52.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc61c5ea082ee70be14c6f8df51e7327fa4f9687b11c19b42c8df09cd631e410
|
|
| MD5 |
3158de20846b780d7b3bebcaf4c3a23c
|
|
| BLAKE2b-256 |
85cdb1a05486e1cd1c8b132f73954739e89fe3d4080febb8465d319d394f6b74
|