| 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
has_children: true
---
Navigation Structure
- Use
nav_order to control ordering (lower numbers appear first)
- Use
parent to create hierarchical navigation
- Use
has_children: true for 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
---
- 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:
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-case with (abbreviations) for letter sequences
- Validate all examples parse correctly
-
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
description fields
- Key definitions include
examples arrays with realistic JSON
- Examples demonstrate V4 wrapper object format
- Complex structures have complete examples
- Examples are consistent with design document examples
-
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:
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
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.
python .claude/skills/technical-writer/scripts/generate_llms_txt.py
python .claude/skills/technical-writer/scripts/generate_llms_txt.py --compact-only
python .claude/skills/technical-writer/scripts/generate_llms_txt.py --full-only
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.
python .claude/skills/technical-writer/scripts/validate_docs_structure.py
python .claude/skills/technical-writer/scripts/validate_docs_structure.py docs/path/to/file.md
python .claude/skills/technical-writer/scripts/validate_docs_structure.py --fix
check_links.sh
Checks for broken internal links in markdown files.
.claude/skills/technical-writer/scripts/check_links.sh --markdown-only
.claude/skills/technical-writer/scripts/check_links.sh --fix
check_api_docs.py
Analyzes Rust code for undocumented public APIs.
python .claude/skills/technical-writer/scripts/check_api_docs.py
python .claude/skills/technical-writer/scripts/check_api_docs.py --strict
python .claude/skills/technical-writer/scripts/check_api_docs.py --threshold 80
validate_tutorial.py
Validates tutorial structure and content quality.
python .claude/skills/technical-writer/scripts/validate_tutorial.py docs/tutorials/my-tutorial.md
python .claude/skills/technical-writer/scripts/validate_tutorial.py --suggest path/to/tutorial.md
python .claude/skills/technical-writer/scripts/validate_tutorial.py --strict path/to/tutorials/
GitHub Pages / Jekyll Workflow
Local Development
-
Install dependencies:
cd docs && bundle install
-
Run local server:
bundle exec jekyll serve
-
Build 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.md not 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:
This helps maintain consistency across the Morphir ecosystem and provides readers with access to authoritative sources.