HackMD Blog
  • NEW!
    NEW!  Connect Ideas Across Notes
    Save time and share insights. With Paragraph Citation, you can quote others’ work with source info built in. If someone cites your note, you’ll see a card showing where it’s used—bringing notes closer together.
    Got it
        • Sharing URL Link copied
        • /edit
        • View mode
          • Edit mode
          • View mode
          • Book mode
          • Slide mode
          Edit mode View mode Book mode Slide mode
        • Customize slides
        • Note Permission
        • Read
          • Owners
          • Signed-in users
          • Everyone
          Owners Signed-in users Everyone
        • Write
          • Owners
          • Signed-in users
          • Everyone
          Owners Signed-in users Everyone
        • Engagement control Commenting, Suggest edit, Emoji Reply
      • Invite by email
        Invitee

        This note has no invitees

      • Publish Note

        Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

        Your note will be visible on your profile and discoverable by anyone.
        Your note is now live.
        This note is visible on your profile and discoverable online.
        Everyone on the web can find and read all notes of this public team.

        Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

        Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

        Explore these features while you wait
        Complete general settings
        Bookmark and like published notes
        Write a few more notes
        Complete general settings
        Write a few more notes
        See published notes
        Unpublish note
        Please check the box to agree to the Community Guidelines.
        View profile
      • Commenting
        Permission
        Disabled Forbidden Owners Signed-in users Everyone
      • Enable
      • Permission
        • Forbidden
        • Owners
        • Signed-in users
        • Everyone
      • Suggest edit
        Permission
        Disabled Forbidden Owners Signed-in users Everyone
      • Enable
      • Permission
        • Forbidden
        • Owners
        • Signed-in users
      • Emoji Reply
      • Enable
      • Versions and GitHub Sync
      • Note settings
      • Note Insights New
      • Engagement control
      • Make a copy
      • Transfer ownership
      • Delete this note
      • Insert from template
      • Import from
        • Dropbox
        • Google Drive
        • Gist
        • Clipboard
      • Export to
        • Dropbox
        • Google Drive
        • Gist
      • Download
        • Markdown
        • HTML
        • Raw HTML
    Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Help
    Menu
    Options
    Engagement control Make a copy Transfer ownership Delete this note
    Import from
    Dropbox Google Drive Gist Clipboard
    Export to
    Dropbox Google Drive Gist
    Download
    Markdown HTML Raw HTML
    Back
    Sharing URL Link copied
    /edit
    View mode
    • Edit mode
    • View mode
    • Book mode
    • Slide mode
    Edit mode View mode Book mode Slide mode
    Customize slides
    Note Permission
    Read
    Owners
    • Owners
    • Signed-in users
    • Everyone
    Owners Signed-in users Everyone
    Write
    Owners
    • Owners
    • Signed-in users
    • Everyone
    Owners Signed-in users Everyone
    Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.

    Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Explore these features while you wait
    Complete general settings
    Bookmark and like published notes
    Write a few more notes
    Complete general settings
    Write a few more notes
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    --- title: "When Your AI Writes the Docs: A Governance Layer for Agent-Generated Markdown" tags: en, education description: "AI agents now produce Markdown at scale, from spec drafts to skill files to meeting notes. HackMD is the governance layer that makes that output reviewable, versioned, and safe to ship." image: "https://hackmd.io/_uploads/SkECGwIpWe.jpg" author: ChaseHack summary: AI agents are generating Markdown faster than humans can read it. Spec drafts, skill files, meeting notes, architecture docs; all produced in seconds, all demanding human judgment before they enter a source of truth. This post argues that the missing piece in modern AI stacks is not another agent, but a governance layer for what agents write. date: "2026-04-22" --- A year ago, the big question was whether AI could write a coherent Markdown document. It can. The question now is what happens next. Agents like Claude Code, Cursor, and OpenCode produce Markdown constantly. They draft API specs, generate skill files, write meeting summaries, update AGENTS.md files, and leave behind trails of changelog entries, RFC drafts, and design notes. Most of this content is good. Some of it is subtly wrong. A small amount of it is confidently, dangerously incorrect. And all of it needs a home before it enters the source of truth. ![01_hero_governance_layer](https://hackmd.io/_uploads/rk3iZPIabl.png) That's the gap we want to talk about today. The industry spent 2025 building out pipelines that serve Markdown *to* agents, standards like [Markdown for Agents](https://blog.cloudflare.com/markdown-for-agents/) and the `Accept: text/markdown` content negotiation pattern. The conversation now needs to turn around. When agents send Markdown *back*, where does it go? Who reads it? Who signs off? How do you know what changed? We think HackMD is the answer to those questions, and this post walks through why. ## The shift: agents as documentation authors Markdown used to be a format humans wrote for other humans. README files, wikis, internal docs, blog posts. A person typed the words, another person read them, and the structure in between was mostly for rendering. That stopped being true sometime in 2025. Today, a significant share of Markdown in active codebases is generated or heavily edited by AI. A recent arXiv paper titled ["Who Writes the Docs in SE 3.0?"](https://arxiv.org/pdf/2601.20171) found that when coding agents submit documentation pull requests, an average of 86.8% of line edits made by agents in source code are accepted by human developers. The researchers also note that documentation has become a primary entry point for AI agent contributions, yet integrating agent-authored documentation introduces reliability risks that are not automatically mitigated by existing review practices. Read that last part again. Agents are writing our docs. Our review practices were not designed for this. The trend goes beyond pull requests. Three patterns have become common across engineering orgs: - **AGENTS.md files** describe to coding agents how a project is built, tested, and structured. [AGENTS.md](https://agents.md/) is now stewarded by the Agentic AI Foundation under the [Linux Foundation](https://www.linuxfoundation.org/) as an open format. These files are frequently drafted or updated by agents themselves. - **Skill files** (often written as `skill.md`) encode a reusable prompt workflow with instructions, constraints, and context for an agent to follow. [GitBook describes them](https://www.gitbook.com/blog/skill-md) as "structured technical documentation written specifically for AI agents." - **Living specs and RFCs** get drafted by agents as a first pass, with humans iterating from there rather than starting from a blank page. Each of these artifacts is Markdown. Each one directly steers how an agent behaves on future work. And each one needs a place where a human can read it carefully, question specific claims, edit with confidence, and leave a trail of what changed. ## The problem with reviewing agent output in a pull request The default answer today is: put it in Git, open a pull request, review the diff. That works for some things. For a lot of agent-generated Markdown, it doesn't. A pull request is a fine mechanism for reviewing code, where the syntax is strict, the diff is semantic, and the cost of a missed issue shows up as a failing test. Prose is different. When an agent writes a paragraph explaining an API change, the diff viewer shows you red-and-green lines, but it doesn't help you notice that the paragraph has subtly changed the meaning of a security assumption. It doesn't help a domain expert who isn't in Git every day leave a targeted comment on a specific claim. It doesn't preserve the conversation when the file gets merged. There's also a participation problem. A lot of the people best positioned to review agent-generated content, product managers, technical writers, subject matter experts, compliance reviewers, don't live in Git. Forcing them through a pull request workflow either slows the review down or silently excludes them. Neither outcome is good. This is the same argument we made in our post on [choosing a CMS for technical teams in 2026](https://hackmd.io/blog/2026/02/04/tech-teams-cms-2026?utm_source=blog&utm_medium=recent-posts): collaborative Markdown is the missing layer *before* content reaches a publishing system. Agent output makes that layer even more important, because the volume is higher and the error modes are stranger. ## What a governance layer actually looks like When we say "governance layer," we don't mean heavy process or approval gates. We mean the four things a team actually needs when machines are producing content that matters: ![02_four_layers](https://hackmd.io/_uploads/rkgxfvI6Wx.png) ### 1. Review in the browser, not a terminal Agent output needs to land somewhere a human can actually read it. Not pipe it into `less`, not stare at a raw diff, but open it, scan it, edit it inline, and see the rendered version as they work. HackMD renders Markdown the way a reader will eventually see it, with tables, diagrams, embedded media, and code blocks all formatted. That makes it possible to catch the things that a plain-text diff hides, like a broken link, a malformed table, or a claim that sounded authoritative in raw Markdown but clearly needs a citation when you see the whole document. ### 2. Discussion that stays attached to the document Once a reviewer spots something, they need a way to flag it without derailing the whole doc. HackMD's [paragraph citations](https://hackmd.io/blog/2025/08/07/paragraph-citation-2025) and [guided comments](https://hackmd.io/blog/2025/07/14/guided-comment-2025) let someone ask "what's the source for this?" or "this contradicts the v1 spec" directly against a specific sentence. The thread lives alongside the content, where anyone else reviewing later can see what's already been raised. This matters specifically for agent output because agents hallucinate at the sentence level, not the document level. Your review tooling needs to work at that resolution too. ### 3. Versioning that shows what the agent changed When an agent rewrites a doc, the most important question is often the simplest: what did it change? HackMD keeps a full revision history for every note. You can compare any two revisions, roll back a change you don't like, or pin a specific version as a stable snapshot with [version links](https://hackmd.io/blog/2025/04/28/version-link-2025). If an agent rewrote your onboarding guide and broke three sections in the process, you don't have to reconstruct the old version from memory. You just revert. ### 4. Access control for a staging area The last piece is permission. Agent drafts probably shouldn't be world-readable the moment they land. HackMD's team roles, folder permissions, and [tag management](https://hackmd.io/blog/2025/09/23/tag-management-2025) let you create a staging area where agent output lives until a human has signed off. Once reviewed, the content can move to a published location or get exported to wherever it ultimately belongs, which is often a Git repo or a public docs site. Together, these four capabilities are what we mean when we say governance. Not bureaucracy. Just the minimum a team needs to trust what they ship. ## What the workflow looks like in practice ![03_workflow](https://hackmd.io/_uploads/Sk2ffDLpbx.png) Here's a concrete pattern we've seen teams adopt. It works for specs, RFCs, skill files, meeting notes, release notes, and most other structured prose an agent might produce. **Step 1.** An agent generates a Markdown artifact, whether that's a spec rewrite, a skill file update, a draft changelog, or a summary of a long design discussion. **Step 2.** The artifact lands in a HackMD note, either via the [HackMD API](https://hackmd.io/@hackmd-api/developer-portal/https%3A%2F%2Fhackmd.io%2F%40hackmd-api%2FrkoVeBXkq), the [HackMD CLI](https://www.npmjs.com/package/@hackmd/hackmd-cli), or a direct integration the agent is wired into. Because HackMD is Markdown-native, there is no format conversion or lossy import. What the agent wrote is what lands in the editor. **Step 3.** Reviewers open the note in the browser. They read, comment, edit, and @-mention the right people. The document is already rendered, already shareable, already discoverable via tags and folders. **Step 4.** Every edit is captured in version history automatically. If a reviewer catches an agent hallucination and fixes it, the fix is attributed and timestamped. If someone decides the whole draft is unsalvageable and reverts to a prior version, that's recorded too. **Step 5.** Once the doc is approved, it moves on. Maybe that's a commit back to a Git repo as an updated AGENTS.md file. Maybe it's an export to a published docs site. Maybe it just stays in HackMD as the living team knowledge base. The important part is that the review happened before the content crossed into a system where mistakes are expensive. That flow is what governance looks like when it's working. The agent did the fast part. The humans did the judgment part. Nothing got lost in between. ## Why this matters more in 2026 The case for a governance layer has quietly gotten stronger over the last year. Agents are getting more autonomous, which means they're producing more content between human check-ins. Tools like [CompanyOS](https://thenewstack.io/skills-vs-mcp-agent-architecture/) have shown that an entire company can be operated out of a dozen Markdown skill files, with agents reading and updating them as they work. [Visual Studio Magazine noted in February 2026](https://visualstudiomagazine.com/articles/2026/02/24/in-agentic-ai-its-all-about-the-markdown.aspx) that Microsoft and GitHub are treating Markdown as "a stable, auditable control surface for AI behavior inside developer tools." The direction is clear: Markdown is no longer just documentation. It's the instruction set. That makes the review step non-optional. A typo in a blog post is embarrassing. A wrong fact in an AGENTS.md file silently propagates to every future task the agent runs. A hallucinated guardrail in a skill file weakens every future output. Most teams do not have a deliberate workflow for reviewing this content yet. Some are trying to retrofit pull requests. Some are skipping the review step entirely and hoping for the best. Neither approach scales. ## Where HackMD fits HackMD is already built for this. We didn't design the editor around agents specifically, we designed it around the reality that good documentation comes from collaboration, iteration, and an honest record of what changed. Those are exactly the properties agent-generated content needs, too. If your team is shipping AGENTS.md files, maintaining skill libraries, drafting specs with AI assistance, or just dealing with a growing pile of Markdown that someone (or something) needs to sign off on, we'd love to show you what the workflow can look like. Read more: [HackMD is built for agents](https://hackmd.io/blog/2026/03/22/agentic-workflow-2026?utm_source=blog&utm_medium=featured-article) — the companion post on how HackMD serves raw Markdown to agents via content negotiation, plus how the CLI and API fit into agent workflows. <div style="text-align: center; font-family: 'Inter', sans-serif; margin: 2em 0;"> <a href="https://hackmd.io/login" target="_blank" style="display: inline-block; background-color: #453aff; color: white; padding: 14px 28px; text-decoration: none; font-weight: 600; font-size: 16px; border-radius: 8px;"> TRY HACKMD </a> </div>

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password
    or
    Sign in via Google Sign in via Facebook Sign in via X(Twitter) Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    By signing in, you agree to our terms of service.

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully