Guidance for structuring Ark documentation using the Diataxis framework. Use this skill when creating new docs, deciding where content belongs, reviewing documentation PRs, or restructuring existing documentation.
79
81%
Does it follow best practices?
Impact
97%
1.32xAverage score across 2 eval scenarios
Passed
No findings from the security scan
Guidance for structuring Ark documentation using Diataxis adapted for Ark's needs.
docs/content/
├── Introduction
├── Quickstart
├── Tutorials → Linear learning paths
├── How-to Guides → Task-oriented, by persona
├── Core Concepts → Understanding "why" and "how"
├── Reference → Factual lookup material
├── Marketplace → External link
└── Disclaimer| Diataxis | Ark Term | Why |
|---|---|---|
| Explanation | Core Concepts | More accessible |
Purpose: Hands-on lessons for newcomers.
Characteristics:
Writing style:
Content belongs here if:
Examples: Quickstart, Running the Dashboard, Starting a New Project, Complete Worked Example
Purpose: Help competent users complete specific tasks.
Organized by persona:
Writing style:
Content belongs here if:
Purpose: Explain what Ark is, how it's designed, and why.
Topics:
Writing style:
Content belongs here if:
Purpose: Factual lookup material.
Organized by type:
Writing style:
Content belongs here if:
Is the reader LEARNING or WORKING?
│
├─ LEARNING (studying)
│ ├─ Hands-on, step-by-step? → TUTORIALS
│ └─ Understanding concepts? → CORE CONCEPTS
│
└─ WORKING (applying)
├─ Completing a task? → HOW-TO GUIDES
└─ Looking up facts? → REFERENCEHub pages link to content without moving files:
tutorials.mdx - Lists tutorials in order.how-to-guides.mdx - Groups by persona.core-concepts.mdx - Groups by topic.reference/index.mdx - Groups by type.Hub pages should:
| Persona | Sections |
|---|---|
| End users | Quickstart, Tutorials |
| Agent builders | Tutorials, How-to (Build) |
| Platform engineers | How-to (Operate), Reference |
| Contributors | How-to (Extend), Core Concepts |
rk. Never ARK. This matches the repo's CLAUDE.md and is enforced in review.Learn how to [contribute to Ark](url).To contribute, see [here](url).| Don't put in... | This content... |
|---|---|
| Tutorials | Explanations, choices. |
| How-to guides | Teaching, complete reference. |
| Core concepts | Instructions, reference. |
| Reference | Instructions, explanations. |
CRD and service reference pages follow a consistent template. Use reference/resources/query.mdx, team.mdx, and tools.mdx as the models:
title and a description of the form "<Kind> CRD reference — ...".## Spec — a single annotated YAML example, comments grouped Required / optional.## Fields — a table with columns Field | Type | Required | Description, including enum values, defaults, and cross-field rules.## Status — a status YAML block, a ### Status fields table, a ### Phases table where a phase enum exists, and a ### Print columns line naming the columns kubectl get renders.## Related — links to adjacent pages.For an overview/index page, use one table listing every resource with its Kind and API version. Don't keep a second overlapping overview page — one topic, one page. The same applies to service APIs: one service, one reference page (Ark API, Broker Service), with the built-in OpenAPI/Swagger framed as the always-current source of truth.
Reference docs must be true to the code, not to intent or memory. Pages can read plausibly and still be wrong — this is the most common defect. Before writing or reviewing a reference page, verify every claim:
ark/api/v1alpha1/*_types.go and the generated CRD in ark/config/crd/bases/. +kubebuilder:validation:Enum, +kubebuilder:default, and the json tags are authoritative — not the existing prose.ark/internal/controller/, ark/internal/validation/). Migration targets, same- vs cross-namespace resolution, and validation rules live here. Example: a deprecated graph team strategy migrates to sequential (edges discarded), not selector — confirmed in validation/defaults.go. Verify even when a reviewer asserts otherwise.kubectl explain, kubectl get <kind> (for the print columns), and real resource YAML. For a service API, hit the running service's /openapi.json and Swagger.git grep <pattern> <tag> shows when something changed; git merge-base --is-ancestor <commit> <tag> confirms what actually shipped. Don't label a section "Unreleased" or cite a version (e.g. there is no v0.2.0) without checking.This session's rewrites found extensive fictional fields (spec.model, systemPrompt, spec.agents), non-existent CLI commands (ark check, ark describe; it's devspace run routes, not make routes), and wrong migration targets — all in pages that looked fine.
cd docs && npm run build (Turbopack). The production build catches MDX and mermaid errors the dev server silently tolerates, and prints a page count on success. Never push a docs change without a clean build.26d4d0b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.