Document Generator
garrytan/gstack
Writes missing documentation from scratch for a feature, a module or a whole project, organized as tutorial, how-to, reference and explanation pages.
Assists with writing and maintaining Morphir technical documentation.
$ npx skills add finos/morphir --skill technical-writer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install finos/morphir technical-writer --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/finos/morphir.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/technical-writer .claude/skills/technical-writer && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "technical-writer" agent skill from https://github.com/finos/morphir/tree/main/.claude/skills/technical-writer into .claude/skills/technical-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "technical-writer", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/finos/morphir/tree/main/.claude/skills/technical-writerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add finos/morphir --skill technical-writer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install finos/morphir technical-writer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/finos/morphir.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/technical-writer .agents/skills/technical-writer && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "technical-writer" agent skill from https://github.com/finos/morphir/tree/main/.claude/skills/technical-writer into .agents/skills/technical-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "technical-writer", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add finos/morphir --skill technical-writer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install finos/morphir technical-writer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/finos/morphir.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/technical-writer .cursor/skills/technical-writer && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "technical-writer" agent skill from https://github.com/finos/morphir/tree/main/.claude/skills/technical-writer into .cursor/skills/technical-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "technical-writer", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/finos/morphir.git --path .claude/skills/technical-writer--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add finos/morphir --skill technical-writer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install finos/morphir technical-writer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/finos/morphir.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/technical-writer .gemini/skills/technical-writer && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "technical-writer" agent skill from https://github.com/finos/morphir/tree/main/.claude/skills/technical-writer into .gemini/skills/technical-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "technical-writer", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install finos/morphir technical-writerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add finos/morphir --skill technical-writer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/finos/morphir.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/technical-writer .github/skills/technical-writer && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "technical-writer" agent skill from https://github.com/finos/morphir/tree/main/.claude/skills/technical-writer into .github/skills/technical-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "technical-writer", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add finos/morphir --skill technical-writer -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install finos/morphir technical-writer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/finos/morphir.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/technical-writer .opencode/skills/technical-writer && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "technical-writer" agent skill from https://github.com/finos/morphir/tree/main/.claude/skills/technical-writer into .opencode/skills/technical-writer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "technical-writer", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
technical-writerAssists with writing and maintaining Morphir technical documentation.
Technical Writer is an agent skill from finos/morphir. Assists with writing and maintaining Morphir technical documentation. Use when creating, reviewing, or updating documentation including API docs, user guides, tutorials, and content for the Docusaurus site. Also helps ensure documentation quality through link checking, structure validation, and code review for documentation coverage.
Its SKILL.md is about 4.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 17 other files, including scripts, reference files and assets (for example `assets/tutorial-template.md`, `references/code-review-checklist.md` and `references/docs-structure.md`).
It sits in Development, covering Technical writing and Technical documentation. The repository describes itself as: A universal language for business and technology. The licence is Apache-2.0.
9 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 95c1aec. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 7 files in scripts/ (Python and Shell), which the agent can run.
Shell commands in SKILL.md call:
pythonmisenpmFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
morphir.finos.orgAlso links to:
docusaurus.iollmstxt.orgFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Technical Writer loads about 4.4k tokens when it runs, and up to ~9.7k if it reads all its reference files. Until then it costs about 88 tokens; SKILL.md has 1,362 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from finos/morphir at commit 95c1aec, republished under its Apache-2.0 licence (© finos). 1,362 words, ~4,444 tokens.
.claude/skills/technical-writer/SKILL.md (or your agent's skills folder). This skill also uses 13 other files; get the full folder from GitHub.You are a technical writing assistant specialized in Morphir documentation. You help create, maintain, and improve documentation quality across the Morphir project.
The Morphir documentation lives in docs/ and is organized into these sections:
| Section | Purpose |
|---|---|
getting-started/ | New user introduction and setup |
cli-preview/ | Next-gen CLI documentation |
concepts/ | Core concepts and theory |
design/ | Design documents (draft/, proposals/, rfcs/) |
spec/ | Technical specifications (includes draft/) |
user-guides/ | Practical how-to guides |
reference/ | API and technical reference |
developers/ | Contributor guides |
community/ | Community resources |
use-cases/ | Real-world examples |
adr/ | Architecture Decision Records |
For detailed section guidelines, see docs-structure.md.
---
title: Document Title
sidebar_position: 1
---python .claude/skills/technical-writer/scripts/validate_docs_structure.py docs/path/to/new-doc.mdUse the tutorial template at assets/tutorial-template.md.
Required tutorial elements:
Validate tutorials:
python .claude/skills/technical-writer/scripts/validate_tutorial.py docs/path/to/tutorial.md --suggestQuick markdown link check:
.claude/skills/technical-writer/scripts/check_links.sh --markdown-onlyFull build with link validation (recommended before PRs):
cd website && npm run buildThe Docusaurus config is set to warn on broken links. For stricter checking, the build will report all broken links.
Check that public APIs are documented:
python .claude/skills/technical-writer/scripts/check_api_docs.py --path pkg/For markdown report:
python .claude/skills/technical-writer/scripts/check_api_docs.py --format markdown > api-coverage.mdWhen reviewing PRs, use the checklist at code-review-checklist.md.
Key items:
mise run examples:validate)When specification documents (docs/spec/) need to match design documents (docs/design/), use the consistency checklist at spec-design-consistency.md.
Key consistency checks:
Naming Format Validation
package/path:module/path#local-namesegment/segment (no : or #)kebab-case with (abbreviations) for letter sequencesNode Coverage
(v4)JSON Example Validation
Schema Documentation and Examples
description fieldsexamples arrays with realistic JSONDirectory Structure Validation
.type.json, .value.json, module.json)Terminology Alignment
Workflow for consistency review:
# 1. Validate examples against schemas
mise run examples:validate
# 2. Validate fixtures (if present)
mise run fixtures:validate
# 3. Open design and spec side-by-side
# 4. Walk through each section
# 5. Validate JSON examples
# 6. Verify directory structure examples
# 7. Fix discrepancies
# 8. Generate review document (optional, saved to .morphir/out/)
# 9. Regenerate llms.txt
python .claude/skills/technical-writer/scripts/generate_llms_txt.pyReview Documents:
.morphir/out/ directoryIntroducing 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
```elm
-- Practical, runnable example
**Documenting a command:**
```markdown
## `morphir command`
Description of what the command does.
### Usage
```bash
morphir command [options] <args>| Option | Description | Default |
|---|---|---|
--flag | What it does | false |
# 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 runExpected output or result.
Continue building on previous step...
## Tools Reference
### validate_docs_structure.py
Validates documentation structure, frontmatter, and heading hierarchy.
```bash
# Check all docs
python scripts/validate_docs_structure.py
# Check specific file
python scripts/validate_docs_structure.py docs/path/to/file.md
# Attempt to fix issues
python scripts/validate_docs_structure.py --fixChecks for broken internal links in markdown files.
# Quick check
./scripts/check_links.sh --markdown-only
# With fix suggestions
./scripts/check_links.sh --fixAnalyzes source code for undocumented public APIs.
# Check pkg directory
python scripts/check_api_docs.py
# Strict mode (fails on undocumented APIs)
python scripts/check_api_docs.py --strict
# Set coverage threshold
python scripts/check_api_docs.py --threshold 80Validates tutorial structure and content quality.
# Basic validation
python scripts/validate_tutorial.py docs/tutorials/my-tutorial.md
# With suggestions
python scripts/validate_tutorial.py --suggest path/to/tutorial.md
# Strict mode
python scripts/validate_tutorial.py --strict path/to/tutorials/Converts YAML-formatted JSON Schema files to JSON format to keep both versions in sync.
# Convert a single file
python scripts/convert_schema.py morphir-ir-v3.yaml
# Convert all schemas in a directory
python scripts/convert_schema.py --dir website/static/schemas/
# Verify YAML and JSON are in sync (no changes made)
python scripts/convert_schema.py --verify website/static/schemas/
# Force conversion even if JSON is newer
python scripts/convert_schema.py --force morphir-ir-v3.yaml
# JSON output for CI
python scripts/convert_schema.py --verify --json website/static/schemas/Detects drift between schema definitions and implementation.
# Check YAML/JSON sync only
python scripts/check_schema_drift.py --sync
# Check schema vs Go code drift
python scripts/check_schema_drift.py --code
# Run all drift checks
python scripts/check_schema_drift.py --all
# JSON output for CI integration
python scripts/check_schema_drift.py --all --json
# Fail on any issues (strict mode)
python scripts/check_schema_drift.py --all --strictThe Morphir IR schemas are maintained in YAML format (human-readable) with JSON versions generated for tool compatibility.
Schema locations:
website/static/schemas/*.yamlwebsite/static/schemas/*.jsonpkg/models/ir/schema/ (in finos/morphir-go)Workflow for schema changes:
python .claude/skills/technical-writer/scripts/convert_schema.py website/static/schemas/python .claude/skills/technical-writer/scripts/convert_schema.py --verify website/static/schemas/When reviewing PRs that touch schemas or model code, check for drift:
# Full drift check
python .claude/skills/technical-writer/scripts/check_schema_drift.py --all
# If issues found:
# - YAML/JSON mismatch: Run convert_schema.py to sync
# - Schema/code mismatch: Review if schema or code needs updatingCommon drift scenarios:
| Scenario | Detection | Resolution |
|---|---|---|
| YAML edited, JSON not updated | --sync check fails | Run convert_schema.py |
| New Go type without schema entry | --code shows undocumented type | Add to schema or document as intentional |
| Schema type without Go implementation | --code shows potential missing impl | Implement or document as intentional |
Docusaurus has two different behaviors for file links that are critical to understand:
| Link Type | Example | Result |
|---|---|---|
| Absolute path | [Schema](/schemas/file.json) | Served from static/ folder without hashing |
| Relative path | [Schema](./file.json) | Processed by webpack, hashed, placed in /assets/files/ |
Files in website/static/ are served directly at the root URL without any processing:
website/static/schemas/morphir-ir-v3.json → https://morphir.finos.org/schemas/morphir-ir-v3.jsonwebsite/static/img/logo.png → https://morphir.finos.org/img/logo.pngAlways use absolute paths starting with / to reference static assets:
<!-- CORRECT: Absolute path - served clean from static folder -->
[Download Schema](/schemas/morphir-ir-v3.json)
<!-- WRONG: Relative path - gets hashed by webpack -->
[Download Schema](./morphir-ir-v3.json)Relative links to non-markdown files (.json, .yaml, .pdf, etc.) in MDX/MD files trigger webpack processing:
/assets/files/morphir-ir-v3-85ce70553b0c0364e88a70abdc45ce97.jsonThis happens because Docusaurus treats relative asset links as "require" statements, enabling cache busting but creating ugly URLs.
Canonical location: Keep all downloadable files in website/static/
website/static/schemas/website/static/img/website/static/ir/examples/Never duplicate files: Don't copy static files into docs/ folders
Always use absolute paths for downloadable assets:
- [JSON Schema](/schemas/morphir-ir-v3.json)
- [YAML Schema](/schemas/morphir-ir-v3.yaml)
- [Example IR](/ir/examples/v3/lcr-morphir-ir.json)Relative paths are OK for:
[Related Doc](./other-doc.md)Search for relative links to non-markdown files:
# Find relative links to JSON/YAML files (potential problems)
grep -rn '\]\(\./.*\.\(json\|yaml\)\)' docs/
# All such links should be converted to absolute paths
# ./schema.json → /schemas/schema.json| File Location | Clean URL |
|---|---|
website/static/schemas/*.json | /schemas/*.json |
website/static/schemas/*.yaml | /schemas/*.yaml |
website/static/ir/examples/v3/*.json | /ir/examples/v3/*.json |
website/static/img/* | /img/* |
For more details, see the Docusaurus Static Assets documentation.
The llms.txt specification defines a standard format for providing LLM-friendly documentation. Morphir provides two files:
/llms.txt - Compact version with curated links and descriptions/llms-full.txt - Full version with inline content from key documentsGenerates llms.txt files from Morphir documentation.
# Generate both compact and full versions
python scripts/generate_llms_txt.py
# Generate only compact version
python scripts/generate_llms_txt.py --compact-only
# Generate only full version
python scripts/generate_llms_txt.py --full-only
# Preview without writing files
python scripts/generate_llms_txt.py --dry-run
# Custom output directory
python scripts/generate_llms_txt.py --output website/static/When documentation changes significantly, regenerate the llms.txt files:
# From repository root
python .claude/skills/technical-writer/scripts/generate_llms_txt.py
# Files are written to:
# - website/static/llms.txt
# - website/static/llms-full.txtThe generated files follow the llms.txt specification:
./other-doc.md/schemas/file.json (see Docusaurus Static Assets)© finos, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 13 other files (scripts, references, assets) in .claude/skills/technical-writer of finos/morphir.
Open the folder on GitHubat commit 95c1aec
Technical Writer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Technical Writer this skillfinos/morphir | 213 | — | ~4.4k | Automated safety check: Pass | Apache-2.0 | |
| Document Generatorgarrytan/gstack | 136k | — | ~11k | Automated safety check: Notes | MIT | |
| Technical WriterOneWave-AI/claude-skills | 322 | — | ~1.2k | Automated safety check: Notes | MIT | |
| Tech Writertheneoai/awesome-skills | 183 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Technical Writing Standardcursor/plugins | 10k | 10 repos | ~2.4k | Automated safety check: Pass | None | |
| Heym Documentation Articlesheymrun/heym | 1.4k | — | ~780 | Automated safety check: Pass | Custom licence |
garrytan/gstack
Writes missing documentation from scratch for a feature, a module or a whole project, organized as tutorial, how-to, reference and explanation pages.
OneWave-AI/claude-skills
Writes and restructures technical documentation - READMEs, tutorials, how-to guides, user guides, architecture docs, onboarding guides, runbooks and SOPs, troubleshooting guides, release notes, and…
theneoai/awesome-skills
Expert Technical Writer with 12+ years producing developer documentation for APIs, SDKs, and enterprise software.
cursor/plugins
Applies four layers of technical-writing rules to docs, RFCs, readmes, PR descriptions and commit messages so a tired engineer follows them on the first read.
heymrun/heym
Creates and updates documentation articles for the Heym platform: category choice, manifest entry, markdown file and cross-links from existing pages.
manycoretech/aholo-viewer
Guides writing and maintaining Aholo Viewer documentation: README, AGENTS.md, architecture notes, bilingual manual pages and AI collaboration guides.
finos/morphir
Manages the Morphir knowledge base under kb/ — OKF bundles and concept documents.
finos/morphir
A skill your agent uses when adding, adopting, debugging or updating Morphir CLI examples and morphir itest scenarios, including scenarios.md, .feature.md and .feature files, scenario metadata, Rego…
finos/morphir
Assists with Morphir CLI release management for finos/morphir, including pre-release verification, extension verification, version bumps, tagging, and release coordination.
finos/morphir
A skill your agent uses when asked to babysit or watch a PR, when watching an open pull request, after opening or pushing to a PR, or when asked to monitor CI, review comments, merge conflicts…
Categories
Assists with writing and maintaining Morphir technical documentation. Technical Writer is an agent skill from finos/morphir. Assists with writing and maintaining Morphir technical documentation.
Technical Writer fits situations like: updating documentation including API docs; content for the Docusaurus site.
Run `npx skills add finos/morphir --skill technical-writer -a claude-code`. Or copy the skill folder (.claude/skills/technical-writer in finos/morphir) into .claude/skills/technical-writer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add finos/morphir --skill technical-writer -a codex`. Or copy the skill folder (.claude/skills/technical-writer in finos/morphir) into .agents/skills/technical-writer in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add finos/morphir --skill technical-writer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/technical-writer, .gemini/skills/technical-writer, .github/skills/technical-writer and .opencode/skills/technical-writer in your project.
Going by SKILL.md and its folder, Technical Writer needs Python and a shell for the scripts in its folder and the command-line tools its instructions call (python, mise and npm). Our summary lists: Python 3; A Bash shell.
SKILL.md names 3 domains. In commands or code: morphir.finos.org; the agent is likely to contact it when it follows the instructions. As links in the text: docusaurus.io and llmstxt.org. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Technical Writer is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.4k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.2k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Technical Writer: Document Generator (garrytan/gstack, 136k stars), Technical Writer (OneWave-AI/claude-skills, 322 stars), Tech Writer (theneoai/awesome-skills, 183 stars) and Technical Writing Standard (cursor/plugins, 10k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
finos (a GitHub organization) maintains it in finos/morphir, which has 213 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 7, 2026.
Source: finos/morphir on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.