To write technical documentation people can use, define the reader, task, system or process version, and observable result before drafting. Then choose a document type, collect authoritative sources, write for one task at a time, test the instructions separately from proofreading, and assign an owner to maintain them.
This guide presents a practical workflow for creating tutorials, how-to guides, reference pages, explanations, and internal procedures. It treats documentation as an operational deliverable rather than a writing exercise. The examples use proposed workflow designs, not claims that a particular platform automatically validates content or detects every affected page.
For example, a guide for a support engineer checking a sandbox configuration should state the required access, account context, product version, steps to follow, and visible result that confirms success. If any of those details are unknown, resolve them with the system or process owner before publishing.
A document is ready to draft when its reader, task, version, and observable success condition are known.
Start with the reader’s task and a document contract
Before writing, complete this sentence: “After reading this, [audience] can [task] in [system or version], and can confirm success by [observable result].” If you cannot name the task, version, or result, ask the system or process owner before drafting.
A document contract records the minimum context needed to write, review, test, and maintain the page. It can live in repository front matter, page metadata, a tracking record, or another agreed location. The following is an illustrative working format, not a required platform schema:
{
"document_id": "DOC-042",
"title": "Verify a sandbox configuration",
"audience": "support engineer",
"document_type": "how-to",
"product_version": "2026.10",
"environment": "sandbox",
"prerequisites": [
"test account",
"configuration access"
],
"expected_result": "verification event is visible in the test environment",
"failure_conditions": [
"account lacks configuration permission",
"event is not visible after the test action"
],
"owner": "configuration process owner",
"technical_reviewer": "assigned system owner",
"last_tested_at": "2026-10-20",
"source_urls": [
"approved specification or process page"
],
"sensitivity_level": "internal",
"next_review_at": "2027-01-20"
}
Keep the expected result observable. “Configuration is correct” is vague; “the test event appears in the sandbox event log” can be checked. Add a sensitivity level, technical reviewer, and next review date when the risk or publishing process calls for them.
Choose the documentation type that matches the reader’s need
Diátaxis distinguishes four documentation types by the reader’s purpose. Classify the page before choosing its structure. If one page is being asked to teach a skill, solve a task, enumerate exact behavior, and explain design rationale, split it or link to focused content instead of forcing every purpose into one long page.
- Tutorial: helps someone learn through a practical experience. Use it when the reader is new to a skill or workflow.
- How-to guide: helps someone achieve a real-world goal. Use it when the reader understands the system and needs to complete a task.
- Reference: describes technical details precisely. Use it for API parameters, types, supported behavior, configuration fields, or error codes.
- Explanation: provides context and understanding. Use it when the reader needs to know why a system or process is designed a certain way.
For example, a new engineer following a first deployment exercise may need a tutorial. An experienced operator performing a known deployment task needs a how-to. An API consumer checking a field’s type needs reference material. A developer asking why a service uses a particular architecture needs an explanation. See the Diátaxis guide to documentation types.
Product documentation and process documentation can both use these forms. A customer-facing API reference and an internal access procedure have different audiences and permissions, but both need clear scope, accurate instructions, and appropriate ownership.
Plan the source trail before drafting
Collect the evidence that supports behavior-sensitive instructions before turning notes into prose. Depending on the document, that may include an approved specification, current process page, system owner’s confirmation, tested command or example, screenshots, and the relevant product, API, SDK, or client-library version.
Record which source supports each important claim. A template can remind an author to include prerequisites or an owner, but it does not establish that the content is correct, secure, current, or executable. This is the single distinction to keep in mind when using templates or workflow software.
Check the reader’s starting conditions as well as the steps:
- Skill level and role.
- Account state, permissions, tools, and environment.
- Required inputs and prerequisites.
- Expected result and likely failure conditions.
- Escalation route and task owner.
- Product, process, API, SDK, or client-library version.
GitLab’s public onboarding documentation illustrates how a process can organize general and role-specific tasks, access requests, support channels, and completion guidance. It is an example of page structure, not evidence of a particular productivity outcome. Its separate IT onboarding guide provides a more concrete example of step-by-step account and device setup.
Draft one task at a time
For task-oriented material, use only the sections that help the defined reader complete the task:
- Purpose: state the outcome and who should use the instructions.
- Prerequisites: list required access, account state, tools, and environment before dependent steps.
- Steps: give one action per step, using labels that match the interface or system.
- Expected result: show what successful completion looks like.
- Troubleshooting and escalation: explain likely failures and identify who owns unresolved issues.
Use descriptive headings, short paragraphs, one action per step, and examples beside the instruction they clarify. Distinguish local, sandbox, staging, and production actions. State permission and input requirements before the step that depends on them. If a command, endpoint, field, limit, response, or retry rule is not confirmed by an authoritative source, leave it open and ask the technical owner rather than filling the gap.
For API material, state the API version and environment. Stripe’s official API reference documents its request and response conventions, authentication, sandbox context, and account and version caveats. Its versioning guidance is specific to Stripe and should not be generalized to another provider. Verify examples against the applicable account and version rather than copying an example without its context.
A step is ready for review when the reader can identify the action, required input or permission, and expected result without guessing. If it changes security, billing, access, API behavior, or production state, include the relevant owner in the approval path.
Use practical workflow patterns without pretending they are vendor features
The following patterns are proposed operating designs. They show how inputs, bounded AI work, validation, routing, and exceptions can fit together. They are not vendor-published schemas, guaranteed automations, or evidence that a platform can identify every affected page.
Pattern 1: Draft a task guide from approved source notes
- Trigger and input: a process owner approves notes for a recurring internal task. The input includes the document ID, audience, task, product version, environment, prerequisites, expected result, and source URLs.
- AI job: transform only the supplied notes into a proposed outline with Purpose, Prerequisites, Steps, Expected result, Troubleshooting, and Escalation. Return missing permissions, results, or failure conditions as open questions.
- Validation: deterministic checks confirm required fields, valid source URLs, and no unresolved placeholders marked as complete. A technical owner checks the claims, an authorized tester runs the procedure, and a security reviewer checks sensitive material when relevant.
- Destination: save the output as a draft in the documentation repository or approved knowledge base. Do not publish it directly from the AI step.
- Exception path: if the source notes omit a permission or expected result, route the draft back to the named process owner. If execution fails, record the environment and test run, then hold publication until the procedure or source process is corrected.
Pattern 2: Route a known product change for documentation review
- Trigger and input: a release record, approved change ticket, or source-control change identifies a changed component. The record includes a release ID, target version, change description, source link, and candidate document IDs.
- AI job: compare the explicit change description with document metadata and suggest candidate pages with a reason for review. The output must say needs owner confirmation, not safe or complete.
- Validation: the release owner confirms the change scope. Each document owner checks whether the page contains affected instructions, updates version context, and records any required retest.
- Destination: create a documentation review task linked to the release record. Preserve the release ID as the change source, not as the document revision identity.
- Exception path: if no owner can determine whether a page is affected, assign the question to the component owner and keep the page in a review state. A recurring task or notification is not automatic impact detection.
Pattern 3: Prepare and verify version-sensitive API reference content
- Trigger and input: an API specification or versioned vendor reference is approved for an update. Required inputs include the API version, environment, endpoint or resource name, authentication method, request fields, response schema, error behavior, permissions, and source URLs.
- AI job: reformat verified material into a consistent reference structure and explain supplied terms in plain language. Do not generate endpoint paths, parameters, limits, retry rules, or compatibility claims.
- Validation: an API owner confirms the version and fields against the official reference. An authorized tester runs examples in an appropriate sandbox or test account. A security reviewer checks that examples contain no credentials or production identifiers.
- Destination: publish the approved revision to the version-controlled API reference or developer documentation site, with the tested environment and date recorded.
- Exception path: if the official source and observed behavior disagree, stop publication and assign the discrepancy to the API owner. Do not resolve it by silently choosing the newer-looking version.
Review, execute, and approve as separate quality gates
Proofreading does not test behavior, and a technical review does not prove that a command or procedure executes. Keep the gates distinct and record who performed each one and what evidence they produced.
Test the success path and a likely failure path. Check that prerequisites are available, outputs match the text, screenshots show the current interface, and links work for the intended audience. Ask a representative reader to perform the task without coaching and record where they hesitate or interpret a step differently. A reader test identifies usability problems, but it does not replace technical or security approval.
Publish with ownership and a change-review path
Choose a destination based on audience, permissions, contribution process, and whether the content should stay close to code or an operational procedure. A repository, internal knowledge base, help center, or wiki may fit different needs. GitHub documents that repository wikis can be edited on GitHub or locally. Repository visibility, plan, permissions, and search-indexing considerations affect whether a wiki is suitable. See GitHub’s information about wikis.
Assign an owner, record the last-tested date, preserve revision history where available, and set a next-review date or trigger. A release ticket or known process change can create a review task, but that is not automatic impact detection. An owner still has to confirm which pages are affected and whether the instructions require retesting.
ClickUp’s Process and Procedures Template page lists statuses, custom fields, views, assignment guidance, and recurring review recommendations. Those public details describe the template’s listed features, not a complete validation system or automatic identification of affected pages.
One release can affect many documents. Store a release ID as the change source, not as the document revision ID. Give each document revision its own revision number or source commit, and each execution test its own test run ID. This preserves document-level history and prevents unrelated records from colliding.
Keep revision, review, test, and citation records at the right grain
If a workflow stores documentation data in a database, define what one row represents before designing keys. One revision row represents one revision of one document. One review row represents one reviewer’s decision in one review round. One test row represents one test case run for one document version, environment, and product version. One citation association represents one source attached to one document revision.
These are illustrative implementation recommendations, not vendor-published schemas. A practical model can use the following identities:
- Document revision:
document_id + revision_numberordocument_id + source_commit, with publication state stored separately. - Review decision:
document_revision_id + reviewer_id + review_round, with the decision timestamp and result. - Test execution:
document_id + test_case_id + environment + product_version + test_run_id. The run ID allows repeated tests of the same case without overwriting earlier evidence. - Citation association:
document_revision_id + citation_id. One revision can have multiple citations, and one citation can support multiple revisions. - Release relationship: a separate association between
release_idand affected document revisions. A release ID must not become the revision key.
When multiple workers or writers can publish concurrently, enforce uniqueness in the database and use an atomic upsert or transaction. A read-then-create check alone can race and create duplicate revisions or test records. Keep raw observations, reported summaries, and CRM contact or deal events as separate records when measuring documentation work. A page view count is not a test result, and a support contact is not proof that a particular document caused or resolved the contact.
Use AI for bounded drafting work, not technical authority
AI can turn approved notes into a proposed outline, suggest headings, flag ambiguous sentences, or list unanswered questions. It should not invent steps or decide that a technical claim is correct. A human technical owner and an authorized tester remain responsible for consequential instructions. For guidance on defining an AI agent’s role and boundaries, see AI agent design.
Use deterministic rules when a condition is explicit and machine-checkable:
- Required metadata is missing.
- A link is broken or a placeholder remains.
- A required section is absent.
- A document references a product version newer than its last test date.
- An example contains a credential pattern or prohibited production identifier.
- A revision or test key would duplicate an existing record.
Use AI when the work requires interpreting or transforming supplied notes. If an AI workflow returns structured fields, parse the result and validate required keys, types, and allowed values before saving or routing it. Reject malformed output rather than silently treating it as complete. If source notes do not specify a permission or expected result, return a question for the process owner instead of filling the gap.
Measure usefulness for a defined task
Choose an outcome tied to the document’s purpose, such as whether representative readers complete a task, find the correct reference, identify the right escalation path, or encounter fewer repeated misunderstandings. Define the task, audience, document revision, observation period, and event before comparing results.
A change in support questions, task completion, or onboarding time is an outcome to measure in that organization, not a guaranteed effect of publishing documentation. Note concurrent product, audience, support-process, or training changes before attributing an outcome to the document.
- The task, intended audience, and starting conditions are defined.
- The product or process version, environment, and last-tested date are recorded.
- Success has an observable result and a stated event definition.
- The document revision, eligible audience, and measurement window are identified.
- Concurrent product, audience, support-process, or training changes are noted.
Use failed reader tests and repeated misunderstandings to improve task framing, prerequisites, or failure guidance. If readers still cannot complete the task, check whether the problem is unclear documentation, missing permissions, a product defect, or an inaccurate source process before revising the prose.
