Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Author or revise any project document whose primary audience is a HUMAN -- README.md, PLAN.md, per-paper survey notes (notes/survey_*.md), bibliography collection logs (references/_collection_log.md), reviewer-response drafts, per-section research notes (notes/section_*.md), per-component implementation plans (notes/impl_*.md). Apply the human/agent audience split (these docs are NOT downstream renderings of AGENTS.md), the two-tier readability structure (orient-quickly + look-up-later), proper
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 589% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 122% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 788% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 1417% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 515% | 0% |
Load this skill whenever the agent is about to produce or substantially revise a document whose primary audience is a human -- not the agent itself, not a downstream tool. In this ecosystem that includes (non-exhaustive list):
README.md -- top-level human-facing entry point for any project.PLAN.md -- plan-of-record / contract; both humans and agents read.notes/survey_<citekey>.md -- per-paper survey notes; the user readsthese when drafting paper sections and when re-orienting after time away.
references/_collection_log.md -- bibliography verification audittrail; the user (and reviewers) read this.
notes/section_<N>.md -- per-paper-section research notes; the userreads them while drafting the section.
notes/impl_<component>.md -- per-component implementation plans;the user reads them before greenlighting code.
Always load this skill before generating any of the above. Other skills (literature-survey, research-paper-writing) cross-reference this one for the structural + stylistic conventions they share.
Do NOT load this skill for:
AGENTS.md files -- those have the opposite audience(agents). They should be telegraphic and structured, not narrative.
conventions (governed by the project's coding style).
SKILL.md files -- those are agent-facing.Every project in this ecosystem keeps two parallel entry-point documents with explicitly different audiences:
| File | Audience | Tone | |:-------------|:--------------------|:---------------------------------------------| | AGENTS.md | AI coding agents | Telegraphic, structured, machine-parseable. | | README.md | Human collaborators | Narrative, indexed, designed to be SCANNED. |
The same split generalises to every other document the agent produces:
| Document type | Primary audience | Tone | |:------------------------------------|:----------------------|:---------------------------------------| | README.md | New + returning humans | Narrative, two-tier, scannable. | | PLAN.md | Maintainer + co-authors | Structured prose; sectioned; living. | | notes/survey_<citekey>.md | Paper authors | Compact prose + equations + tables. | | references/_collection_log.md | Maintainer + reviewers | Audit-trail tables; date-stamped. | | notes/section_<N>.md | Paper authors | Working notes; section-flavoured. | | notes/impl_<component>.md | Code authors | Design doc; trade-offs explicit. | | Reviewer-response / rebuttal | Editors + reviewers | Direct; concession-and-concession-counter style. |
Critical: do NOT treat any of these as downstream renderings of AGENTS.md. They have different jobs. AGENTS.md tells an agent what to do; the documents above let a human read what the project IS, what the plan IS, what is known, what is decided.
A well-written human-facing doc should:
doc (or the project) is relevant to them;
their own question without paging the maintainer.
These rules apply regardless of doc type. Per-doc-type structure goes in the references/<doc-type>-structures.md files loaded on demand.
sentence + 2-3 sentences of context.
with anchor-linked entries.
carry a status / last-updated stamp near the top.
For docs read by both impatient and thorough readers (README.md, PLAN.md, longer survey notes), use a Quick Start / Headline section near the top with the 30-second version, then deeper sections for the 5-minute reader. Cross-reference between the two so the reader can choose their depth.
For shorter docs (a single survey note, a single section note), the two-tier rule reduces to: open with a one-sentence headline, then expand.
#, ##, ###). No Setext-style underlines.###. If you need ####, the section needs to besplit.
# per document (the title). Top-level sections are ##.apply consistently within a doc.
supporting location by anchor (within the doc) or relative path (to another file in the same repo).
([PLAN.md](PLAN.md)), not absolute URLs.
the link AND a one-line description so the link's role is obvious even if it 404s.
path/to/file:line_number so the reader can navigatedirectly.
Prefer tables when:
top-to-bottom.
Prefer prose when:
themselves;
Prefer annotated bullet lists (one item per line, with -- or : explaining each) when items are short labels with one-line definitions.
For repository or directory layouts, use a Unicode-box-drawing tree with brief inline annotations:
textproject-name/ ├── AGENTS.md entry point for AI agents ├── README.md you are here └── src/ source code
Avoid plain ---bulleted lists for layout; the tree shape conveys nesting visually and is far easier to scan.
bash, python, text, ...).probably wants surrounding numbered-step prose with shorter blocks inside each step.
<...> placeholders for values the reader must substitute.Comment what to substitute on the line above when not obvious.
$...$ inline,$$...$$ display) for any equation or symbol.
x^2 + y^2); it is harder to scan andharder to copy.
about.
things").
commas).
that ..." -> delete).
/Users/<name>/, author-specific directoryconventions). Use generic placeholders (<projects-parent-dir>/...) so the doc is publishable without per-author scrubbing.
<TODO> / <INSERT> / <your-fork> placeholders that shouldhave been filled in (vs ones deliberately left for users to substitute).
Revised YYYY-MM-DD (note). Maintained by <name>.).
Human-facing docs accumulate cited facts -- file counts ("the skill ships 4 references"), line counts ("AGENTS.md is ~680 lines"), enumerations ("the three deferred items are X, Y, Z"), status labels ("F-03..F-08 -- shipped 2026-05-17"), commit SHAs, test counts, citation counts. These facts WILL drift as the underlying state changes; the doc that cites them becomes silently wrong.
The discipline:
suffices. Instead of "the skill ships 4 references", prefer "see the workflow table in SKILL.md" -- the table is the single source of truth, and the reader who cares about the exact count reads the table.
number itself is load-bearing for the argument: "we covered all 12 rules", "the budget was exceeded by 2.3x"), tag the fact with a self-invalidation marker -- a parenthetical date-stamp + source pointer: markdown ... ships 4 references (as of 2026-05-17; see [SKILL.md](SKILL.md) workflow table for current count). The marker tells future readers (and future agents auditing the doc) "this number may have drifted; check the source."
doc edit, scan for inline numbers / counts / enumerations / SHAs in the doc and verify each against its current source. STATUS.md, CHANGELOG.md, README.md "Current status" sections, and per-skill SKILL.md footers are the most-frequent drift sites.
"deferred" / "blocked" labels must include the date the label was last verified, not just the date the label was added. "F-17 -- planned (as of 2026-05-17)" is correct; "F-17 -- planned" alone will be silently wrong by 2026-06.
This rule was motivated by Session A's STATUS.md / CHANGELOG.md maintenance burden: every commit shifts counts that other docs cite, and without explicit self-invalidation markers the drift accumulates invisibly between sessions.
Subsection K (self-invalidation of cited facts) addresses drift WITHIN a single doc. This subsection L addresses the complementary failure mode: drift ACROSS docs. When a non-trivial change lands (a new skill ships, a new template ships, a count changes, a section gets renamed, a convention changes), DOWNSTREAM docs that reference the changed thing become silently stale unless the agent audits them explicitly. K + L together: K helps the next reader recognise stale content; L prevents the content from becoming stale in the first place.
The discipline: before committing any non-trivial change, run the following 3-step audit.
Classify the change as either trivial or non-trivial:
reformatting, ASCII↔Unicode conversions, code-comment edits, whitespace cleanups, single-word phrasings, fixing broken links.
removed skill / template / file; renamed section or file; changed count (how many skills ship, how many references in a skill, how many entries in some list); changed convention or default; changed status label (planned -> shipped, deferred -> active); new external dependency; new GitHub-issue template category; project's first real-project bootstrap.
If you cannot quickly classify a change as trivial, treat it as non-trivial.
For ANY non-trivial change to this repo, the standard audit list is:
| Doc | Drift-prone content | |:-------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------| | README.md | "What you get" inventory; status callout; repo-layout tree; "Feedback from real projects" categories; section dates. | | STATUS.md | Well-grounded / informed-prediction classification; evidence-count table; roadmap-condition progress. | | CHANGELOG.md | Per-session section; cross-references to commits. | | AGENTS.md | Section 5 skills index table; templates index table; Section 6 universal conventions when convention changes. | | Per-skill SKILL.md footers | "References shipped / planned" counts; date-stamp; cross-references between skills. | | Per-template README.md | "What this template ships" inventory; placeholder lists. | | .github/ISSUE_TEMPLATE/*.md | "The four shipped skills are ..." or similar count-bearing prose. | | notes/agent_feedback.md (per project) | Cross-references to upstream commits / issues from prior entries. |
For ANY non-trivial change to a per-project repo using this framework, the standard audit list reduces to:
| Doc | Drift-prone content | |:---------------------------------------------|:---------------------------------------------------------------------------------------------| | README.md | Status / current-version statements; "what this project is" headline; feature inventory. | | PLAN.md | Status section; milestone progress; "current phase" markers. | | AGENTS.md Project facts | Status, current phase, code dependencies (especially pinned versions). | | notes/README.md | Indexes of survey / impl / section notes. | | notes/_resolved/INDEX.md (if changed) | Entries table. | | notes/_archive/INDEX.md (if changed) | Entries table. |
For each doc on the relevant list:
thing. Cross-references, counts, enumerations, status labels, inventories. Use Grep when faster than Read.
K-rule self-invalidation marker if the update would be disproportionate to the value).
audited; nothing to update") so the user has a record that the audit happened.
The audit should be visible in the response to the user, NOT silent. Frame it as a checklist:
textDownstream-doc audit (per F-20): - README.md: status callout + What-you-get table updated [DONE] - STATUS.md: evidence-count table + retirement-condition #4 updated [DONE] - CHANGELOG.md: new section appended [DONE] - AGENTS.md skills index: no change needed (this change doesn't add/remove a skill) - per-skill SKILL.md footers: no change needed - .github/ISSUE_TEMPLATE/: no change needed (no count change)
Without an explicit audit step, the agent treats each doc as independent and only updates the one it's directly editing. Real documentation systems are graphs, not trees: a change to one node often shifts edges across many. The 2026-05-20 README.md gap (STATUS callout still said 2026-05-14 + ZERO real research projects even after Session A + A.5 + 2 real projects) is the existence proof: STATUS.md got updated; CHANGELOG.md got updated; README.md was missed. F-20 prevents that miss.
K marks WHERE drift is likely; L is the cron-job that prevents it.
refactor, new file format, migrated layout), additionally consult the project-onboarding skill's references/scenario-2- existing-agentic-files.md Scenario 2.C content-check pattern.
extend it (e.g. a CITATION.cff'd software repo might add CITATION.cff to the per-project list; a paper repo with references/_collection_log.md might add it).
When authoring or auditing a human-facing doc, ask of each piece of content: "who needs this and when?" Use the table to decide placement.
| Content | Goes in | Rationale | |:-------------------------------------------------------------|:-------------------------------------|:-----------------------------------------------------------------------------| | Project name, one-line description, scope | README.md | First thing a human visiting the repo sees. | | "Where do AI agents start?" pointer | README.md | One callout block near the top. | | Quick start / install / first-use commands | README.md | Humans need this; agents follow AGENTS.md instead. | | Repository layout (annotated tree) | README.md | Helps humans orient. | | Glossary / definitions / domain context | README.md (or docs/glossary.md) | Humans need; agents get domain facts from per-project AGENTS.md. | | Contribution / extension instructions | README.md | Humans need; cross-reference AGENTS.md for skill-/template-author rules. | | Provenance, licence, acknowledgements | README.md | Humans + standard repo hygiene. | | List of which skills the agent should load | AGENTS.md | Agent-only directive. | | Per-project facts (target venue, citation style, ...) | AGENTS.md | Agent-only; humans read these in PLAN.md if needed. | | Plan-of-record / roadmap / experiment protocol | PLAN.md | The contract; both humans and agents read. | | Headline contribution + positioning | PLAN.md (full); README.md (2-3 sentences) | Single source of truth in PLAN.md; README summarises + links. | | Per-paper survey notes | notes/survey_<citekey>.md | One per reference; not user-facing index material. | | Bibliography verification audit trail | references/_collection_log.md | Per-pass status + corrections. | | Per-section research notes (working drafts of paper sections) | notes/section_<N>.md | Working docs. | | Per-component implementation plans | notes/impl_<component>.md | Working docs. |
The structural skeletons + worked examples for each doc type live in references/:
references/readme-structures.md -- README.md skeletons for paper /software / skills-repo / rebuttal projects.
references/plan-structures.md -- PLAN.md skeletons for paper /software / experiment projects.
references/notes-structures.md -- skeletons for survey_*.md,section_*.md, impl_*.md.
references/audit-log-structures.md -- skeleton for_collection_log.md (bibliography) and other audit trails.
Load only the file relevant to the current edit target.
When asked to author or rewrite a human-facing doc:
first-time visitor, motivated new collaborator, returning collaborator. Section structure should serve all three simultaneously.
references/<doc-type>-structures.md for the skeleton.
the TOC reads coherently, the document will too.
IS, then 2-3 sentences of context.
summary -- whatever the doc type's skeleton specifies).
sentence stating what the section is about.
references/self-review-checklist.md.AGENTS.md,PLAN.md, notes/, code docstrings) -- listing each move in the response so the user can confirm.
The authoring workflow above assumes a new doc. Rewriting an existing substantial doc (a README, a PLAN.md, a long survey note, a paper section in drafts/) is a distinct workflow with a higher risk of silent content loss. The argo-anywhere onboarding session (2026-05-14) surfaced this -- the agent rewrote a substantial README during migration, and although nothing was lost, there was no discipline forcing the agent to PROVE nothing was lost. This section codifies the missing discipline.
The pattern is adapted from the project-onboarding skill's Scenario 2.C content-check table -- which solves the same problem for migrating an existing CLAUDE.md to a per-project AGENTS.md. The pattern generalises to ANY substantial doc rewrite.
Apply this workflow when the rewrite target is:
agentic sessions co-authored under user direction).
time + may not remember they captured.
cited by experiments/<run-id>/README.md, a notes/section_*.md cited by drafts/main.tex).
Do NOT apply for: small docs (<50 lines, easy to eyeball); freshly- templated docs that haven't been customised; auto-generated docs (API reference, changelogs).
written enumeration of every distinct piece of content -- not just sections, but every project-fact, every decision-rationale, every cross-reference, every example. For very long docs, write this to a temporary notes/_rewrite-inventory_<doc>_<date>.md so the user can review.
elsewhere; cite which / what).
markdown | Item | Original location | New destination | Status | |:---|:---|:---|:---| | Project codename rationale | README.md L52-56 | new README.md "Background" section | preserved | | Old deployment instructions | README.md L120-180 | drops (deployment moved to docs/deploy.md) | dropped, reason: relocated | | Personal-anecdote paragraph | README.md L201-215 | drops | dropped, reason: not appropriate for README | | ... | ... | ... | ... |
Total inventory items in the original = total rows in the table. Every line in the original has a row OR is explicitly dropped with reason. NO silent omission.
reviews + approves OR adjusts (especially the "Drop with reason" rows). Only then proceed to writes.
"preserve" item is actually present.
(so the user can confirm the cross-references still resolve).
notes/_rewrite-inventory_<doc>_<date>.mdin the working tree for one commit cycle (the user may want to consult it post-rewrite); then delete in a follow-up commit.
The "rewrote a README + nothing was obviously lost" case is the silent failure mode. Without the content-check table, neither the agent nor the user can prove the negative ("we didn't lose anything"). The table makes the proof explicit + reviewable + auditable.
project-onboarding/references/scenario-2-existing-agentic-files.md(Scenario 2.C "agent-file with substantive project content") -- which solves the same problem for the specific case of migrating an existing agent-file to AGENTS.md. The general-purpose doc-rewrite version is here.
reorganisation), additionally consult references/<doc-type>-structures.md for the target structure.
When the user asks the agent to produce a human-facing doc:
references/<doc-type>-structures.md.references/self-review-checklist.md.
any), and what (if anything) was deliberately left alone.
literature-survey skill produces notes/survey_<citekey>.mdand references/_collection_log.md. Both are human-facing; that skill's output should follow this skill's conventions. literature-survey cross-references this skill explicitly.
research-paper-writing skill produces draft paper sections.The drafts themselves are governed by paper-writing conventions (paragraph clarity, claim-evidence alignment); but any meta-docs it produces (a section-level research note, a paper README, a rebuttal draft) are human-facing and follow this skill.
references/readme-structures.md -- README.md skeletons.references/plan-structures.md -- PLAN.md skeletons.references/notes-structures.md -- skeletons for notes/*.md(survey, section, impl).
references/audit-log-structures.md -- skeleton for collection logsand other audit trails.
references/self-review-checklist.md -- self-review checklist for afreshly-authored or revised human-facing doc.
research-paper-writing skill -- different audience (paperreaders, not project visitors), but the paragraph-clarity check and claim-evidence alignment principles transfer well.
Created 2026-05-13 by A. Attia (initially as project-readme-authoring). Revised 2026-05-13: renamed to human-facing-doc-authoring and generalised scope to cover all human-facing project documents (PLAN.md, survey notes, collection logs, rebuttal drafts, ...) -- the human/agent audience split is universal, not README-specific. Revised 2026-05-17 (Session A): added "Rewriting an existing substantial doc" section (F-02; ~80 lines after Authoring workflow) + subsection K "Self-invalidation of cited facts" (F-17; ~50 lines in universal conventions). Revised 2026-05-20: added subsection L "Downstream-doc audit before commit" (F-20; ~110 lines in universal conventions after K), codifying the cross-doc drift-prevention discipline motivated by the 2026-05-20 README.md gap.
Other measured skills in the registry, with their headline benchmark lift.