Doc coauthoring
Universal AI Agent OS — audited skills, governance rules, replayable state. One contract, every host agent.
npx -y skills add event4u-app/agent-config --skill doc-coauthoringAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use when co-authoring a PRD, design doc, RFC, decision doc, or technical spec — 3-stage flow (context → section-by-section → reader-test) — even if the user just says 'help me write this spec'.
SKILL.md
8.6 KB, as published. Nobody here has run it
doc-coauthoring
When to use
Cross-surface handoff. When this document consumes upstream work (research → document, spreadsheet → report), read the handoff envelope from
surface-agent-contracts: trustverification_already_done, honour source restrictions, and don't re-fetch what the source already grounded.
Use this skill when:
- User starts a substantial writing task — PRD, RFC, design doc, decision doc, technical spec, proposal
- User says "help me write this up", "draft a proposal", "we need a doc for X"
- The output is a structured prose document the user will own and ship
Do NOT use when:
- Authoring agent docs / module docs / AGENTS.md →
agent-docs-writing - Writing a README →
readme-writing/readme-writing-package - Writing an ADR (process is fixed, no co-authoring loop) →
adr-create - Code documentation, inline comments, docstrings
Goal
Move from a fuzzy ask to a complete document the user owns, by:
- Closing the context gap before drafting
- Building each section through brainstorm → curate → draft → refine
- Testing the draft with a fresh-context reader before declaring done
Preconditions
- User explicitly wants a document (not a quick answer)
save-fileandstr-replace-editoravailable- Target path and filename agreed up front
Document format & export floor
The document surface's floor (per
surface-agent-contracts):
- Choose the format by intent. Markdown vs
.docxvs PDF follows what the user will DO with it — when a named format is requested, produce THAT format via the document tooling; never silently substitute markdown for a.docxrequest. (fixture:ssac-docx-requested-markdown-only.) - Preserve edit scope. On an edit, change only what was asked and preserve
the rest of the document (mirrors
minimal-safe-diff). - Print/PDF preserves selectable text. Never rasterize a text-heavy document
to an image-only PDF when browser print or native export keeps the text
selectable. (fixture:
ssac-pdf-screenshot-rasterized.) - Verify the output opens/exports. Confirm the generated file opens /
round-trips
(
design-artifact-verification); where the format's tooling is absent, ship the source + say what could not be verified rather than claiming a produced file.
Procedure
0. Inspect existing material
Before any drafting, inspect the landscape: search agents/ and
the repo for related prior docs (grep -ril "{topic}" agents/ docs/),
check the user's named ticket / thread for context, and confirm no
in-flight document already covers the ask. If a near-duplicate exists,
surface it and ask whether to extend or supersede.
1. Context gathering
Close the gap between what the user knows and what you know.
- Meta-questions — one numbered-options block (per
user-interaction): doc type? primary audience? desired impact? template/format constraint? existing related docs / threads / tickets? - Info dump — invite stream-of-consciousness context: plain text, paths to existing docs, ticket links, thread paste.
- Clarifying questions — 5–10 numbered questions to fill remaining gaps. User answers shorthand (
1: yes,2: see #channel,3: backwards-compat reason). - Exit gate — ask "ready to draft, or more context?" — wait for confirmation. Do not start scaffolding the file until the user confirms.
2. Refinement & structure
Build the document section by section.
- Agree on structure — propose 3–5 sections based on doc type and context. Ask user to confirm or adjust.
- Scaffold the file — use
save-fileto create the doc with placeholder text per section ([To be written]). One commit-equivalent action; review with the user before populating. - Pick the starting section — suggest the one with the most unknowns (usually the core decision / proposal). Never start with the summary.
- Per-section loop — repeat for each section:
- Clarifying questions — 5–10 numbered questions about what this section covers
- Brainstorm — 5–20 numbered options of what could go in. Offer "more options?" at the end.
- Curation — user picks:
keep 1,4,7,9/remove 3 (dupes 1)/combine 11+12. Parse freeform feedback if the user gives"looks good but ...". - Gap check — "anything missing for this section?"
- Draft —
str-replace-editorto replace the placeholder. Never reprint the whole doc. - Iterate — user feedback in, surgical edits out. After 3 iterations with no substantial change, ask "anything to remove without losing value?"
- Section exit gate — "section done — move to next?"
- Whole-doc review at 80% complete — re-read the full file. Surface contradictions, redundancy, generic filler. Apply final edits.
3. Reader test
Verify the doc works for someone without your context.
- Predict reader questions — generate 5–10 questions a real reader would ask after reading.
- Run the test — pick one:
ai-councilavailable → invoke with the doc + predicted questions; treat each council member as a fresh reader.- Otherwise → instruct the user to open a fresh Claude / ChatGPT, paste the doc, ask the questions one by one. Capture answers.
- Additional fresh-reader checks (always): "what is ambiguous?" · "what context does this doc assume readers have?" · "internal contradictions?"
- Report — surface where the fresh reader got it wrong, where assumptions break.
- Loop back to Stage 2 for problematic sections until the fresh reader answers cleanly and surfaces no new gaps.
4. Handover
- Final read-through by the user (they own the doc).
- Verify facts, links, technical details.
- Confirm intended impact achieved.
- Surface the final file path. Done.
Output format
- Target document file at the agreed path (e.g.
agents/proposals/{slug}.md) - One concluding line stating "Doc complete at {path} — ready for owner review"
Gotcha
- One question per turn (Iron Law from
ask-when-uncertain) — never bundle clarifying + brainstorm + curate prompts in one message. - Never reprint the full doc during iteration — always use
str-replace-editor. Reprinting wastes tokens and creates merge drift. - Reader test is not optional — without it, you ship the version that makes sense to you, not to readers. Skip only on explicit user override.
- Sub-agent absence —
ai-councilmay not be configured. Have the manual fresh-Claude fallback ready (Stage 3 step 2). - Image alt-text — if the doc embeds images, add alt-text inline; without it, fresh-reader tools can't see them.
- Language discipline — keep the doc body in English (per
language-and-tone). For verbatim German user phrases or interview quotes, useDE: … · EN: …anchor blocks.
Frugality Standards
Apply the Frugality Charter.
- Per the default-terse rule, each section opens with content, not "In this section …".
- Per the cheap-question check, numbered-options blocks only when consequences differ — skip "yes / no, continue?" type prompts.
- Per the post-action summary suppression, the final output is the doc — no wrapping "Summary of what we did" block.
Pre-save self-check:
- Does any section open with a narrative preamble instead of content?
- Are clarifying questions bundled when one-at-a-time would surface user priorities better?
- Is the reader-test stage skipped or merged into a "we're done" claim?
- Is non-English prose present outside
DE: / EN:anchor blocks?
Do NOT
- Skip Stage 1 — straight-to-drafting produces docs that miss audience and impact
- Bundle 5+ questions into one numbered block — breaks one-question-per-turn
- Reprint the whole doc on every iteration
- Declare "done" without the Stage 3 reader test
- Generate doc content from scratch when the user has existing context — gap-closing is the whole point
→ Final prose pass for audience-facing output: humanizer — remove AI-writing tells before delivery.