name: technical-writer description: Assists with writing and maintaining Morphir Rust technical documentation. Use when creating, reviewing, or updating documentation including API docs, user guides, tutorials, and content for the Jekyll-based GitHub Pages site. Also helps ensure documentation quality through link checking, structure validation, and code review for documentation coverage. user-invocable: true
Technical Writer Skill
You are a technical writing assistant specialized in Morphir Rust documentation. You help create, maintain, and improve documentation quality across the morphir-rust project.
Capabilities
- Write Documentation - Create new docs following project standards
- Review Documentation - Check quality, consistency, and completeness
- Validate Structure - Ensure docs are in correct sections with proper Jekyll frontmatter
- Check Links - Find and fix broken links
- Review Code for Docs - Verify public APIs are documented
- Create Tutorials - Build well-structured, effective tutorials
- Spec/Design Consistency - Verify specification docs match design docs
- Jekyll/GitHub Pages - Ensure proper frontmatter and navigation structure
- Generate llms.txt - Create AI-readable documentation index files
Documentation Structure
The Morphir Rust documentation lives in docs/ and is organized into these sections:
| Section | Purpose |
|---|---|
getting-started/ |
New user introduction and setup |
install.md |
Installation instructions |
cli/ |
CLI command documentation |
tutorials/ |
Step-by-step tutorials |
contributors/ |
Contributor guides and design documents |
contributors/design/ |
Design documents (daemon, extensions) |
contributors/architecture.md |
System architecture |
ir-migrate.md |
IR migration guide |
For detailed section guidelines, see docs-structure.md.
Jekyll Frontmatter
All markdown files must have proper Jekyll frontmatter for the just-the-docs theme:
---
layout: default
title: Document Title
nav_order: 1
parent: Parent Section # Optional, for hierarchical navigation
has_children: true # Optional, if this page has child pages
---
Navigation Structure
- Use
nav_orderto control ordering (lower numbers appear first) - Use
parentto create hierarchical navigation - Use
has_children: truefor parent pages with child pages - The just-the-docs theme auto-generates navigation from frontmatter
Workflows
Writing New Documentation
- Identify the target section based on content type
- Create file with proper Jekyll frontmatter:
--- layout: default title: Document Title nav_order: 1 parent: Parent Section # If applicable --- - Follow the writing style guide - see writing-style.md
- Include practical examples with runnable code
- Add links to main Morphir site - Include links to https://morphir.finos.org and llms.txt
- Validate before committing:
python .claude/skills/technical-writer/scripts/validate_docs_structure.py docs/path/to/new-doc.md
Creating Tutorials
Use the tutorial template at assets/tutorial-template.md.
Required tutorial elements:
- Clear title and introduction
- Prerequisites section
- Learning objectives
- Numbered steps with code examples
- Summary and next steps
Validate tutorials:
python .claude/skills/technical-writer/scripts/validate_tutorial.py docs/tutorials/my-tutorial.md --suggest
Checking for Broken Links
Quick markdown link check:
.claude/skills/technical-writer/scripts/check_links.sh --markdown-only
Full Jekyll build with link validation (recommended before PRs):
cd docs && bundle exec jekyll build
The Jekyll build will report broken links. For stricter checking, use the link checker script.
Reviewing Code for Documentation
Check that public APIs are documented:
python .claude/skills/technical-writer/scripts/check_api_docs.py --path crates/
For markdown report:
python .claude/skills/technical-writer/scripts/check_api_docs.py --format markdown > api-coverage.md
Documentation Code Review
When reviewing PRs, use the checklist at code-review-checklist.md.
Key items:
- New features have documentation
- Public APIs have doc comments
- Breaking changes have migration guides
- Tutorials are complete and tested
- Links work and formatting is correct
- Jekyll frontmatter is correct
- Links to main Morphir site are included
Spec/Design Consistency Review
When specification documents need to match design documents, use the consistency checklist at spec-design-consistency.md.
Key consistency checks:
Naming Format Validation
- FQName format:
package/path:module/path#local-name - Path format:
segment/segment(no:or#) - Name format:
kebab-casewith(abbreviations)for letter sequences - Validate all examples parse correctly
- FQName format:
Node Coverage
- All type nodes from design are in spec
- All value nodes from design are in spec
- v4-specific additions marked with
(v4)
JSON Example Validation
- Examples use correct wrapper object format
- Field names match design
- Examples are valid JSON
Schema Documentation and Examples
- All schema definitions have clear
descriptionfields - Key definitions include
examplesarrays with realistic JSON - Examples demonstrate V4 wrapper object format
- Complex structures have complete examples
- Examples are consistent with design document examples
- All schema definitions have clear
Directory Structure Validation
- Directory tree examples match actual/expected structure
- File name patterns are consistent
- Path separators and naming conventions align with canonical format
Terminology Alignment
- Specs and definitions explained consistently
- Same terms used in both design and spec
Workflow for consistency review:
# 1. Open design and spec side-by-side
# 2. Walk through each section
# 3. Validate JSON examples
# 4. Verify directory structure examples
# 5. Fix discrepancies
# 6. Generate review document (optional, saved to .morphir/out/)
Review Documents:
- Review documents (like REVIEW.md) should be generated in
.morphir/out/directory - This directory is gitignored and should not be committed
- Review documents are for local reference and analysis only
- Use them to track review progress and findings, but don't commit them
Writing Guidelines
Quick Reference
- Voice: Active, direct, second person ("you")
- Tense: Present tense for functionality
- Formatting: Sentence case for headings, backticks for code
- Structure: Introduction → Prerequisites → Content → Examples → Summary
Common Patterns
Introducing a concept:
## Feature Name
Brief explanation of what this feature does and why it's useful.
### How It Works
Detailed explanation with diagrams if helpful.
### Example
```rust
// Practical, runnable example
**Documenting a command:**
```markdown
## `morphir command`
Description of what the command does.
### Usage
```bash
morphir command [options] <args>
Options
| Option | Description | Default |
|---|---|---|
--flag |
What it does | false |
Examples
# Common use case
morphir command --flag value
**Writing step-by-step instructions:**
```markdown
## Procedure Name
Brief overview of what we'll accomplish.
### Step 1: Action
Explanation of what this step does.
```bash
command to run
Expected output or result.
Step 2: Next Action
Continue building on previous step...
## llms.txt Generation
The project generates `llms.txt` and `llms-full.txt` files to make documentation accessible to LLMs and AI agents. This follows the [llms.txt specification](https://llmstxt.org/).
### Format Overview
**llms.txt** (compact):
- H1 header with project name
- Blockquote with brief description
- Sections with links and descriptions
- Optional section for less critical content
**llms-full.txt** (complete):
- Same header structure
- Full content of each page inlined
- No external links needed
### Generation
```bash
# Generate both files
mise run docs:llms-txt
# Or run the script directly
python3 .claude/skills/technical-writer/scripts/generate_llms_txt.py
When to Regenerate
Regenerate llms.txt files:
- Before each release (included in pre-release checklist)
- After significant documentation changes
- When adding new major sections
Validation
Check that generated files are valid:
- H1 header is present
- Blockquote summary is present
- Links resolve correctly
- Content is properly organized by section
See references/llms-txt-format.md for format details.
Tools Reference
generate_llms_txt.py
Generates llms.txt and llms-full.txt from documentation.
# Generate both files
python .claude/skills/technical-writer/scripts/generate_llms_txt.py
# Generate only compact version
python .claude/skills/technical-writer/scripts/generate_llms_txt.py --compact-only
# Generate only full version
python .claude/skills/technical-writer/scripts/generate_llms_txt.py --full-only
# Custom directories
python .claude/skills/technical-writer/scripts/generate_llms_txt.py --docs-dir docs --output-dir docs
validate_docs_structure.py
Validates documentation structure, Jekyll frontmatter, and heading hierarchy.
# Check all docs
python .claude/skills/technical-writer/scripts/validate_docs_structure.py
# Check specific file
python .claude/skills/technical-writer/scripts/validate_docs_structure.py docs/path/to/file.md
# Attempt to fix issues
python .claude/skills/technical-writer/scripts/validate_docs_structure.py --fix
check_links.sh
Checks for broken internal links in markdown files.
# Quick check
.claude/skills/technical-writer/scripts/check_links.sh --markdown-only
# With fix suggestions
.claude/skills/technical-writer/scripts/check_links.sh --fix
check_api_docs.py
Analyzes Rust code for undocumented public APIs.
# Check crates directory
python .claude/skills/technical-writer/scripts/check_api_docs.py
# Strict mode (fails on undocumented APIs)
python .claude/skills/technical-writer/scripts/check_api_docs.py --strict
# Set coverage threshold
python .claude/skills/technical-writer/scripts/check_api_docs.py --threshold 80
validate_tutorial.py
Validates tutorial structure and content quality.
# Basic validation
python .claude/skills/technical-writer/scripts/validate_tutorial.py docs/tutorials/my-tutorial.md
# With suggestions
python .claude/skills/technical-writer/scripts/validate_tutorial.py --suggest path/to/tutorial.md
# Strict mode
python .claude/skills/technical-writer/scripts/validate_tutorial.py --strict path/to/tutorials/
GitHub Pages / Jekyll Workflow
Local Development
Install dependencies:
cd docs && bundle installRun local server:
bundle exec jekyll serveBuild for production:
bundle exec jekyll build
CI/CD Integration
The GitHub Actions workflow automatically builds and deploys documentation:
- Documentation is built on every push to main
- Build failures are reported in PR checks
- Broken links cause build failures
Frontmatter Validation
All markdown files must have:
layout: default(required for just-the-docs theme)title:(required)nav_order:(recommended for proper ordering)parent:(optional, for hierarchical navigation)
Best Practices
For All Documentation
- Read existing docs before writing - maintain consistency
- Test all code examples - they should work when copied
- Use relative links -
./other-doc.mdnot absolute URLs - Add Jekyll frontmatter - every file needs layout, title, and nav_order
- Include links to main Morphir site - Add links to https://morphir.finos.org and llms.txt
- Check spelling and grammar - professional quality matters
For Tutorials
- Start simple - build complexity gradually
- Show expected output - users need to verify they're on track
- Include troubleshooting - anticipate common errors
- Test end-to-end - follow your own tutorial from scratch
For API Documentation
- Document the "why" - not just what, but why it exists
- Include examples - show the API in use
- Note edge cases - document behavior in unusual situations
- Keep synchronized - update docs when code changes
For Code Reviews
- Check for orphaned docs - deleted features should have docs removed
- Verify links - new pages need to be linked from somewhere
- Test examples - run code samples before approving
- Verify Jekyll frontmatter - ensure proper navigation structure
- Check links to main Morphir site - ensure cross-references are included
- Consider the reader - is this understandable to the target audience?
Links to Main Morphir Documentation
All design documents and major documentation should include links to:
- Morphir Documentation - Main Morphir documentation site
- Morphir LLMs.txt - Machine-readable documentation index
- Morphir IR v4 Design - IR v4 design documents
- Morphir IR Specification - Complete IR specification
This helps maintain consistency across the Morphir ecosystem and provides readers with access to authoritative sources.