--- name: writing-documentation description: Use when writing or updating any documentation - README, website docs, or skills. Covers quality standards, example validation, and DRY patterns. --- # Writing Documentation ## When to Use This Skill - Creating a new package README - Writing website documentation (MDX) - Creating or updating skills - Reviewing documentation for quality - Documenting Phase 7 of create-destination or create-source ## Prerequisites - [understanding-flow](../understanding-flow/SKILL.md) - Architecture context - [understanding-events](../understanding-events/SKILL.md) - Event naming rules --- ## Documentation Types ### Where Content Belongs | Type | Purpose | Audience | | ------------------ | --------------------------------------------- | --------------------------- | | **Package README** | Installation, basic usage, API reference | Package users | | **Website docs** | Guides, integration examples, detailed config | Integrators | | **Skills** | Process knowledge, workflows | AI assistants, contributors | ### Divio Documentation Types Keep these separate - don't mix tutorials with reference: | Type | Purpose | User State | | ---------------- | ------------------ | ----------------------------- | | **Tutorial** | Learning | Studying, beginner | | **How-To Guide** | Problem-solving | Working, knows what they need | | **Reference** | Information lookup | Working, needs facts | | **Explanation** | Understanding | Studying, needs context | --- ## Example Validation (CRITICAL) ### The Problem AI-generated examples can be: - Syntactically correct but use non-existent APIs - Plausible-looking but don't match actual exports - Outdated, referencing deprecated patterns ### Source of Truth Hierarchy ```text TIER 1: apps/quickstart/ ✓ Tested ✓ Compiled ✓ CI-validated → USE FOR: All code examples TIER 2: packages/core/src/eventGenerator.ts ✓ Canonical events ✓ Real data structures → USE FOR: Event examples TIER 3: packages/*/src/index.ts exports ✓ Actual public API → USE FOR: Verifying API names exist TIER 4: Package READMEs & Website docs ⚠ May contain errors → VERIFY against Tier 1-3 before trusting ``` ### Validation Checklist Before publishing ANY code example: - [ ] **API exists?** Check `packages/*/src/index.ts` exports - [ ] **Pattern validated?** Compare against `apps/quickstart/` - [ ] **Events canonical?** Use patterns from `eventGenerator.ts` - [ ] **Example compiles?** TypeScript check passes - [ ] **Imports correct?** Package names match actual packages ### Red Flags | Red Flag | What It Indicates | | -------------------------------------- | ----------------------------------- | | API name not in package exports | Hallucinated or outdated API | | Import path doesn't match package.json | Wrong package reference | | Event name with underscore | Wrong format (should be space) | | No imports shown | Context missing, harder to validate | --- ## DRY Patterns ### PropertyTable for Configuration **When to use:** Any page documenting package configuration with Zod schemas. ```mdx import { schemas } from '@walkeros/web-destination-gtag/dev'; ; ; ``` **When NOT to use:** - Pages without package configuration - Reference tables (Logger API, CLI commands) - Conceptual explanations ### Schema Exports (dev.ts) Every destination/source should export schemas: ```typescript // src/dev.ts export * as schemas from './schemas'; export * as examples from './examples'; ``` ### Don't Duplicate - Link to source files instead of copying type definitions - Reference `apps/quickstart/` examples instead of writing from scratch - Use PropertyTable instead of hardcoded markdown tables --- ## Quality Checklist ### Structure - [ ] Follows appropriate Divio type (Tutorial/How-To/Reference/Explanation) - [ ] Code example within first 100 words - [ ] First example under 20 lines - [ ] Uses `
` for advanced content - [ ] Has "Next Steps" or "Related" section ### Content - [ ] All event names use `"entity action"` format with space - [ ] Flow config shown as primary usage pattern - [ ] Examples are complete and copy-pasteable - [ ] Includes imports in code examples ### AI Readability - [ ] Clear semantic headers (H2, H3, H4 hierarchy - no skipped levels) - [ ] Tables for structured data - [ ] Links to source of truth TypeScript files - [ ] Static fallback content alongside dynamic components ### Consistency - [ ] Uses standard table formats - [ ] Follows package/skill/website templates - [ ] Terminology matches: walkerOS, collector, destination, source --- ## Templates ### Package README Template ````markdown # @walkeros/[package-name] [1-sentence description] [Source Code](link) | [NPM](link) | [Documentation](link) ## Quick Start ```json { "version": 1, "flows": { "default": { "web": {}, "[sources|destinations]": { "[name]": { "package": "@walkeros/[package-name]", "config": { ... } } } } } } ``` ```` ## Features - **Feature 1**: Brief description - **Feature 2**: Brief description ## Installation ```bash npm install @walkeros/[package-name] ``` ## Configuration Reference | Name | Type | Description | Required | Default | | ---- | ---- | ----------- | -------- | ------- | ## Examples ### Basic [Simple example]
Advanced: Custom Mapping [Complex example]
## Type Definitions See [src/types.ts](./src/types.ts) for TypeScript interfaces. ## Related - [Documentation](website/docs/...) ```` ### Website Doc Template (MDX) ```mdx --- title: [Title] description: [SEO description] sidebar_position: [N] --- # [Title] [1-sentence description] ## Quick Start ```json // Flow config example (<15 lines) ```` ## Features - **Feature 1**: Description ## Installation ```bash npm install @walkeros/[package] ``` ## Configuration ## Next Steps - [Related guide 1](/docs/...) ````mdx --- ## Priority Matrix ### Issue Classification | Priority | Criteria | Action | |----------|----------|--------| | **P0 Critical** | Incorrect examples, wrong APIs, security issues | Fix immediately | | **P1 High** | Missing PropertyTable, outdated domains, missing sections | Fix soon | | **P2 Medium** | Inconsistent terminology, skipped headings | Plan to fix | | **P3 Low** | Style issues, minor wording | Backlog | --- ## Non-Negotiables ### Event Naming ```text CORRECT: "page view", "product add", "order complete" WRONG: "page_view", "pageView", "PAGE VIEW" ``` ```` ### Package References ```text CORRECT: `@walkeros/collector` (with backticks) WRONG: @walkeros/collector (no backticks) ``` ### Domain References ```text CORRECT: `www.walkeros.io` or relative paths DO NOT USE: legacy domain references ``` --- ## Process ### For New Package Documentation 1. **Verify examples exist** in `apps/quickstart/` or create them first 2. **Write README** using template above 3. **Write website doc** using MDX template 4. **Run quality checklist** 5. **Verify all code examples** against Tier 1-3 sources ### For Documentation Updates 1. **Identify issue priority** using matrix above 2. **Check current state** against source of truth 3. **Make minimal changes** - don't over-engineer 4. **Verify examples still compile** 5. **Run quality checklist** --- ## Related - [← Back to Hub](../../AGENT.md) ``` ```