Agent skill · Audited from source
Document Editor
skill · vellum-ai/vellum-assistantMIT licenceAudited 14 Oct 2026 · source 19bc86343b63
Is it safe? Yes — SAFE, grade B (89/100). We read this skill's source at commit 19bc86343b63 and observed filesystem access and no hard-coded secrets. What it does: Use whenever the user wants to write or draft an article, blog post, essay, report, or any long-form content. Creates the content in a rich text editor instead of dumping it in chat, so it can be streamed, reviewed,…
Cite
Cite this page
ModelsAtlas. “Document Editor (vellum-ai/vellum-assistant)”. Retrieved 14 Oct 2026. https://modelsatlas.com/skills/vellum-ai/document-editor
Trust audit
Audit 0.4.1 · source read 14 Oct 2026
SAFE means nothing in the source contradicts what the skill says it does. Grade B is shared by 13,985 of 14,816 audited skills.
What the source does
- FilesystemDeclared5 observations
- NetworkNone observedNo outbound calls in the source
- ShellNone observedNo commands run in the source
- DependenciesPinnedNothing floats
- SecretsNone foundNo keys in source
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | PASS | 5 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | PASS | 5 |
L2 Instructions | Prompt injection, authority framing, hidden directives | PASS | 0 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: no behavioural pass.
Findings (10)
LOWInventory / provenanceinv.symlink · assistant/CLAUDE.md
assistant/CLAUDE.md
- Why
- link not followed
- Fix
- —
LOWInventory / provenanceinv.symlink · assistant/src/approvals/CLAUDE.md
assistant/src/approvals/CLAUDE.md
- Why
- link not followed
- Fix
- —
LOWInventory / provenanceinv.symlink · assistant/src/notifications/CLAUDE.md
assistant/src/notifications/CLAUDE.md
- Why
- link not followed
- Fix
- —
LOWInventory / provenanceinv.symlink · assistant/src/runtime/CLAUDE.md
assistant/src/runtime/CLAUDE.md
- Why
- link not followed
- Fix
- —
LOWInventory / provenanceinv.symlink · gateway/CLAUDE.md
gateway/CLAUDE.md
- Why
- link not followed
- Fix
- —
LOWFilesystem / pathfs.traversal · tools/comment-list.ts:1
import { executeCommentList } from "../../../../tools/document/document-comment-tool.js";- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · tools/comment-list.ts:5
} from "../../../../tools/types.js";
- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · tools/comment-reply.ts:1
import { executeCommentReply } from "../../../../tools/document/document-comment-tool.js";- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · tools/comment-reply.ts:5
} from "../../../../tools/types.js";
- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · tools/comment-resolve.ts:1
import { executeCommentResolve } from "../../../../tools/document/document-comment-tool.js";- Why
- No further detail recorded for this rule.
- Fix
- —
Audit 0.4.1 · source sha 19bc86343b63 · 14 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publishervellum-ai GitHub organizationOwner of the repository this skill is read from
- Source foldervellum-ai/vellum-assistant/assistant/src/config/bundled-skills/document-editorThe exact folder we audited
- LicenceMITAs the repository states it
- Commit pinned for this verdict19bc86343b63A new audit runs when the source changes
- Repository statusNot archivedLast push 1 day ago
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: Use whenever the user wants to write or draft an article, blog post, essay, report, or any long-form content. Creates the content in a rich text editor instead of dumping it in chat, so it can be streamed, reviewed,…
---
name: document-editor
description: Use whenever the user wants to write or draft an article, blog post, essay, report, or any long-form content. Creates the content in a rich text editor instead of dumping it in chat, so it can be streamed, reviewed, edited, and exported.
compatibility: "Designed for Vellum personal assistants"
metadata:
emoji: "✍️"
vellum:
display-name: "Document Writer"
category: "content"
activation-hints:
- "User asks to write, draft, or compose an article, blog post, essay, report, story, or any long-form content — always create it in the document editor, not as a chat reply"
- "User wants written content they will iterate on, review, or export — use the editor instead of inline markdown"
- "A file attachment contains a draft or document the user wants to revise — open it in the editor"
avoid-when:
- "The user wants an interactive app, dashboard, calculator, game, or anything with state or data — use app-builder instead"
- "A one or two sentence answer is enough — just reply in chat"
---
Write and edit long-form documents using the built-in rich text editor. Documents open in workspace mode with chat docked to the side. When a request is about writing prose (an article, blog post, report, essay, story, or similar), create it here rather than writing it into the chat response.
## Tools
- **document_create** - Opens a new document editor with an optional title and initial Markdown content. Returns a `surface_id` for subsequent updates. This is the entry point for any new piece of writing.
- **document_update** - Updates content in an open document editor by `surface_id`. Supports `replace` (overwrite) and `append` (add to end) modes.
- **document_read** - Reads the current content of a document by `surface_id` when it belongs to the current conversation, or when the current actor is the guardian/local user. Use to verify content before editing.
- **document_find** - Searches a document for text or regex patterns. Returns matching lines with line numbers, match positions, and matched text.
- **document_replace_text** - Targeted find-and-replace within a document. Supports literal and regex patterns (with backreferences). Optionally limit the number of replacements.
- **document_list** - Lists documents. Without `query`, lists the current conversation's documents. With `query`, searches by title; guardian/local users can search across conversations, while other actors are scoped to the current conversation.
- **document_open** - Opens an existing document in the editor panel by `surface_id`. Use this when a document exists but isn't visible in the editor — for example after the user switches devices, refreshes the page, or when the editor panel was closed. Fetches the document from storage and sends it to the client.
- **document_delete** - Deletes a document by `surface_id`. Use to clean up unwanted documents.
## Creating a new document
This is the default path when the user asks you to write something.
1. **Create the document**: Call `document_create` with a title (inferred from the request). Call the tool immediately, not after conversational preamble. Anything you pass as `initial_content` is saved right then, so the first `document_update` must start with the next chunk rather than repeating it.
2. **Write content in Markdown**: Use proper structure (`#` for titles, `##` for sections), **bold**, _italic_, code blocks, tables, lists, blockquotes as appropriate.
3. **CRITICAL - Stream content in chunks**: Call `document_update` MULTIPLE times, not just once. Break content into logical chunks (paragraphs, sections, or every 200-300 words). Call `document_update` with `mode: "append"` for EACH chunk separately. Each append carries ONLY that chunk: content already in the document is committed, and resending it would print it twice. When you are streaming into the document you just created, `surface_id` is optional: omit it and pass only `content`, and the update targets that document. The user experiences real-time content appearing as you write.
### Recovering from a failed update
If a `document_update` call fails with an `Invalid input` error, do NOT call `document_create` again — that produces a duplicate for the user. The most common cause is a missing `content` field: resend the call with the chunk's Markdown in `content`. You can omit `surface_id` to target the document you are currently writing; pass it explicitly only when editing a different existing document.
## Editing an existing document
When the user requests changes to a document:
1. Find the `surface_id` from the `<active_documents>` context block.
2. Use `document_update` with the existing `surface_id` — do NOT call `document_create` again.
3. **Choose the right editing tool:**
- `document_update` with `mode: "append"` — adding new content to the end.
- `document_update` with `mode: "replace"` — ONLY for full rewrites where the majority of the document is changing.
- `document_find` + `document_replace_text` — **for everything else**. Fixing typos, renaming terms, swapping sections, reordering content, adjusting formatting, or any edit that touches only part of the document. This is the default choice for edits. It avoids rewriting the entire document and eliminates the risk of accidentally dropping content.
4. **Do NOT use `document_update` with `mode: "replace"` for targeted edits.** Rewriting the entire document to change a few words or rearrange sections is wasteful and error-prone.
## Retrieving existing documents
When the user asks to see, open, or pull up a document:
1. Check the `<active_documents>` block in your context — it lists all documents in this conversation with their `surface_id` and title.
2. If the document is NOT in `<active_documents>`, call `document_list` with a `query` matching the document title. For guardian/local users, this searches across previous conversations and sessions.
3. Once you have the `Excerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit 19bc863
git clone https://github.com/vellum-ai/vellum-assistant git -C vellum-assistant checkout 19bc86343b63
The author documents no install command, so this uses the repository directly. Our verdict covers commit 19bc86343b63 only.
Works in
The author has not said which agents this skill supports, and we have not tested it in any.
Audit history
Every audit, every source change
- ✓SAFE B 89 / 100
first audit · source
19bc86343b63
README badge
For maintainers · shows the latest audit
[](https://modelsatlas.com/skills/vellum-ai/document-editor/)
The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.
Similar skills
All coding & review skills →vellum-ai/vellum-assistant
Set up, authenticate, and run external coding agents (Claude Code, Codex) via the Agent Client Protocol
vellum-ai/vellum-assistant
Shop on Amazon and Amazon Fresh through your browser
vellum-ai/vellum-assistant
Record and analyze API surfaces of web services
vellum-ai/vellum-assistant
Build and edit small, personal visual tools and artifacts — dashboards, trackers, calculators, data visualizations, charts, simple landing pages, and slide decks the user wants for THEMSELVES. This is the right skill…
vellum-ai/vellum-assistant
Drive a specific named macOS app via raw input bypassing the Accessibility tree
vellum-ai/vellum-assistant
Import conversation history from ChatGPT into Vellum
Add this badge to your README
[](https://modelsatlas.com/skills/vellum-ai/document-editor/)
<a href="https://modelsatlas.com/skills/vellum-ai/document-editor/"><img src="https://modelsatlas.com/skills/vellum-ai/document-editor/badge.svg" alt="ModelsAtlas: SAFE B"></a>
Questions about Document Editor
What does the Document Editor skill do?
Is Document Editor safe to install?
What can Document Editor access on my machine?
How current is this page?
Sources
- github.com/vellum-ai/vellum-assistant/tree/main/assistant/src/co — the audited source at commit 19bc86343b63 and every finding aboveObserved · 14 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What does the Document Editor skill do?
- Is Document Editor safe to install?
- What can Document Editor access on my machine?