---
title: Writer Studio (standalone writing editor) (part 5)
---

# Writer Studio (standalone writing editor) (part 5)

## What it is

This is part 5 of the [Writer Studio (standalone writing editor)](ai-writer.md) page. It is the reference half of the feature: the complete list of writer IPC channels and the key-files table that maps each part of Writer Studio to the source that implements it.

## Where to find it

Writer Studio opens from the **Writer** virtual project in the sidebar, and the [parent page](ai-writer.md) covers gating, surfaces and first-run setup. Nothing in this part has a UI of its own: the channels below are what the renderer, the plugin webview and the CLI routes all call, and the key-files table is there for reading the code.

## How it behaves

### IPC channels (`writer:*`)

Defined in `src/shared/ipc-channels/writer.ts`; handlers in
`src/main/ipc/writer-handlers.ts` (all gated by
`isUnreleasedFeatureVisible('ai-writer', ...)`); Zod schemas in
`src/shared/ipc-schemas.ts` (the `writer*` entries).

| Constant                     | Channel string               | Purpose                                                                                                                                                                                            |
| ---------------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `WRITER_LIST`                | `writer:list`                | list all non-deleted documents, ordered by `updated_at` DESC                                                                                                                                       |
| `WRITER_GET`                 | `writer:get`                 | fetch one document by id                                                                                                                                                                           |
| `WRITER_CREATE`              | `writer:create`              | create a new document; returns it                                                                                                                                                                  |
| `WRITER_SAVE_CONTENT`        | `writer:save-content`        | patch a document's body content                                                                                                                                                                    |
| `WRITER_UPDATE_META`         | `writer:update-meta`         | patch title / goal / audience / tone / creativity (metadata)                                                                                                                                       |
| `WRITER_DELETE`              | `writer:delete`              | soft-delete a document                                                                                                                                                                             |
| `WRITER_RESTORE`             | `writer:restore`             | undo a soft-delete                                                                                                                                                                                 |
| `WRITER_SEARCH`              | `writer:search`              | search documents by title and content                                                                                                                                                              |
| `WRITER_FOLDER_LIST`         | `writer:folder-list`         | list all folders                                                                                                                                                                                   |
| `WRITER_FOLDER_CREATE`       | `writer:folder-create`       | create a new folder                                                                                                                                                                                |
| `WRITER_FOLDER_RENAME`       | `writer:folder-rename`       | rename a folder                                                                                                                                                                                    |
| `WRITER_FOLDER_DELETE`       | `writer:folder-delete`       | delete a folder (moves documents to Unfiled)                                                                                                                                                       |
| `WRITER_DOC_MOVE`            | `writer:doc-move`            | move a document into a folder (or back to Unfiled)                                                                                                                                                 |
| `WRITER_DOC_SET_PINNED`      | `writer:doc-set-pinned`      | pin or unpin a document within its folder                                                                                                                                                          |
| `WRITER_VERSION_LIST`        | `writer:version-list`        | list version snapshots for a document                                                                                                                                                              |
| `WRITER_VERSION_GET`         | `writer:version-get`         | fetch a single version snapshot                                                                                                                                                                    |
| `WRITER_VERSION_SNAPSHOT`    | `writer:version-snapshot`    | create a manual version snapshot                                                                                                                                                                   |
| `WRITER_VERSION_RESTORE`     | `writer:version-restore`     | restore a document to a previous version                                                                                                                                                           |
| `WRITER_AI_EDIT`             | `writer:ai-edit`             | AI-rewrite a selection; returns rewritten text                                                                                                                                                     |
| `WRITER_AI_OPTIONS`          | `writer:ai-options`          | generate N alternative versions of a selected segment                                                                                                                                              |
| `WRITER_AI_AUTOCOMPLETE`     | `writer:ai-autocomplete`     | inline ghost-text continuation at end of paragraph (max 40 tokens)                                                                                                                                 |
| `WRITER_AI_CHAT`             | `writer:ai-chat`             | chat-assistant turn: returns `{ conversation, edits }` from the `<conversation>`/`<suggested_edits>` protocol; **persists the turn** (user + assistant) on success when a `documentId` is supplied |
| `WRITER_CHAT_HISTORY_GET`    | `writer:chat-history-get`    | load a document's persisted Assistant chat history (oldest-first) to rehydrate the panel on open                                                                                                   |
| `WRITER_CHAT_HISTORY_CLEAR`  | `writer:chat-history-clear`  | clear a document's persisted chat history                                                                                                                                                          |
| `WRITER_CREATE_FROM_SESSION` | `writer:create-from-session` | create a Writer document from a Claude session's content                                                                                                                                           |
| `WRITER_IMPORT_FILE`         | `writer:import-file`         | import a local file (DOCX, MD, TXT, RTF, ODT, EPUB) as markdown; returns `{ title, markdown }`                                                                                                     |
| `WRITER_TEMPLATE_LIST`       | `writer:template-list`       | list all non-deleted user templates, ordered by `updated_at` DESC                                                                                                                                  |
| `WRITER_TEMPLATE_GET`        | `writer:template-get`        | fetch one user template by id                                                                                                                                                                      |
| `WRITER_TEMPLATE_CREATE`     | `writer:template-create`     | create a user template from a document's content and guidance; returns it                                                                                                                          |
| `WRITER_TEMPLATE_DELETE`     | `writer:template-delete`     | soft-delete a user template                                                                                                                                                                        |
| `WRITER_PUBLISH`             | `writer:publish`             | publish document to Shares; returns `{ url, token }`                                                                                                                                               |
| `WRITER_UNPUBLISH`           | `writer:unpublish`           | revoke the active share and clear share columns                                                                                                                                                    |
| `WRITER_WINDOW_OPEN`         | `writer:window-open`         | open the pop-out Writer window                                                                                                                                                                     |
| `WRITER_DOCUMENTS_CHANGED`   | `writer:documents-changed`   | push notification when the document list changes                                                                                                                                                   |
| `WRITER_ACTION_PRESET_LIST`  | `writer:action-preset-list`  | list all non-deleted custom action presets, ordered by sort order                                                                                                                                   |
| `WRITER_ACTION_PRESET_CREATE`| `writer:action-preset-create`| create a custom action preset (`{ label, instruction }`)                                                                                                                                           |
| `WRITER_ACTION_PRESET_UPDATE`| `writer:action-preset-update`| update a preset's label, instruction, or sort order                                                                                                                                                |
| `WRITER_ACTION_PRESET_DELETE`| `writer:action-preset-delete`| soft-delete a custom action preset                                                                                                                                                                 |
| `WRITER_MC_LINK`             | `writer:mc-link`             | link a document to a Mission Control item                                                                                                                                                          |
| `WRITER_MC_UNLINK`           | `writer:mc-unlink`           | unlink a document from a Mission Control item                                                                                                                                                      |
| `WRITER_MC_CREATE_AND_LINK`  | `writer:mc-create-and-link`  | create a Mission Control item and link the document                                                                                                                                                |
| `WRITER_MC_GET_LINK`         | `writer:mc-get-link`         | get the Mission Control link for a document                                                                                                                                                        |
| `WRITER_CLONE_DOCUMENT`      | `writer:clone-document`      | duplicate a document (content + metadata + tags) with "Copy of" title prefix                                                                                                                       |
| `WRITER_TAG_ADD`             | `writer:tag-add`             | add a tag to a document (INSERT OR IGNORE)                                                                                                                                                         |
| `WRITER_TAG_REMOVE`          | `writer:tag-remove`          | remove a tag from a document                                                                                                                                                                       |
| `WRITER_TAG_LIST`            | `writer:tag-list`            | list tags for a specific document                                                                                                                                                                  |
| `WRITER_TAG_LIST_ALL`        | `writer:tag-list-all`        | list all distinct tags across all documents (sorted)                                                                                                                                               |
| `WRITER_EXPORT_FILE`         | `writer:export-file`         | save a document to disk as Markdown (.md) or HTML (.html) via a system save dialog                                                                                                                 |
| `WRITER_EXPORT_TO_VAULT`     | `writer:export-to-vault`     | export a document to KMS vault                                                                                                                                                                     |
| `WRITER_IMPORT_FROM_VAULT`   | `writer:import-from-vault`   | import a document from KMS vault                                                                                                                                                                   |
| `WRITER_PULL_FROM_VAULT`     | `writer:pull-from-vault`     | pull latest vault note content into a linked Writer document (creates a pre-import version snapshot)                                                                                               |
| `WRITER_KMS_SYNC_STATUS`     | `writer:kms-sync-status`     | query sync status between a Writer document and its linked vault note (in-sync / writer-ahead / vault-ahead / conflict / unlinked)                                                                 |
| `WRITER_PM_STATUS`           | `writer:pm-status`           | get PM integration status for a document                                                                                                                                                           |
| `WRITER_SEND_TO_PM`          | `writer:send-to-pm`          | send a document to the PM system                                                                                                                                                                   |

Every channel is registered in `tests/integration/ipc-contract.test.ts`.

## For agents

### Key files

| What                  | Where                                                                                                                                                                                                                                                                |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Migration             | `src/main/db/migrations/20260603162951-create-writer-documents-table.ts`; chat history: `…20260618150227-writer-chat-messages-table.ts`; tags: `…20260903023357-create-writer-document-tags-table.ts`; templates: `…20260903023722-create-writer-templates-table.ts` |
| Query layer           | `src/main/db/queries-writer.ts`; chat history: `src/main/db/queries-writer-chat.ts`; templates: `src/main/db/queries-writer-templates.ts`                                                                                                                            |
| IPC handlers          | `src/main/ipc/writer-handlers.ts`                                                                                                                                                                                                                                    |
| File import service   | `src/main/services/writer/writer-file-import-service.ts`                                                                                                                                                                                                             |
| CLI routes            | `src/main/services/cli/cli-server-writer-routes.ts`                                                                                                                                                                                                                  |
| IPC channels          | `src/shared/ipc-channels/writer.ts`                                                                                                                                                                                                                                  |
| Shared types          | `src/shared/types/writer.ts`                                                                                                                                                                                                                                         |
| Gating registry       | `src/shared/unreleased-features.ts` (`ai-writer`)                                                                                                                                                                                                                    |
| Renderer (store + UI) | `src/renderer/src/features/writer/`                                                                                                                                                                                                                                  |
| Plugin port (webview) | `src/plugins/writer/` — `writer-bridge.ts` (backend glue), `web/src/` (guest app source), `ui/` (committed build output)                                                                                                                                             |

For the test-locked invariants and the safe-change checklist, see the contract:
`.claude/memory/contracts/writer-contract.md`.

## Related

The user-facing behaviour these channels implement is split across [part 2](ai-writer-part-2.md) (editor, document list and data model), [part 3](ai-writer-part-3.md) (the AI capabilities) and [part 4](ai-writer-part-4.md) (sharing, exports and integrations); the [Writer Studio (standalone writing editor)](ai-writer.md) page is the parent.
