Write and edit Writerside user documentation pages for the Multik library. Covers all page types: Getting Started, User Guide, and API Reference. Handles page structure, Korro code samples, mk.tree navigation, and cross-references. Use this skill when creating new doc pages, updating existing ones, or when the multik-kdoc skill needs to create/update Writerside topics.
npx skills add https://github.com/Kotlin/multik --skill multik-docs
Write and edit Writerside documentation for the Multik library. Documentation lives in docs/topics/ and is organized into three categories, each with distinct structure and purpose.
Before writing, internalize these principles:
From the Diataxis framework (full reference: references/diataxis-framework.md):
Project doc rules (full reference: references/doc-quality-rules.md):
docs/topics/apiDocs/) — strict templatesAudience: Experienced users. Purpose: Precise technical lookup.
API reference pages must look uniform. Three sub-types:
descriptive-statistics.md): each function gets its own H2 with nested H3 sub-sections and anchor IDsarray-creation.md, statistics.md)Read references/api-reference-templates.md for exact structural templates with real examples.
These pages vary in structure depending on the topic. Instead of following a template, read 2-3 existing pages of the same type before writing to match the tone and patterns.
Getting Started (docs/topics/gettingStarted/): Narrative style for beginners. Onboarding, installation, platform setup. May use tabs for Gradle Kotlin/Groovy, bullet lists, multiple Korro imports. Examples: quickstart.md, installation.md, engines-of-multik.md.
User Guide (docs/topics/userGuide/): Task-oriented for intermediate users. Typically opens with ## Overview, each section is self-contained (brief prose + code example). Examples: copies-and-views.md, indexing-and-slicing.md, creating-multidimensional-arrays.md.
FAQ (docs/topics/FAQ.md): H2 headings for topic groups, H3 headings as questions. Direct answers with code examples, uses Fix: and Workaround: labels.
Community & Contribution (docs/topics/community-and-contribution.md): Freeform informational page with links, lists, tables.
Landing pages (.topic XML files): Pure XML format for section entry points (e.g., welcome.topic, getting-started.topic). See references/writerside-markup.md for the XML schema.
references/api-reference-templates.md and follow the exact template for the sub-type (only load this file for API Reference pages). For other pages: read 2-3 existing pages of the same type to match tone and structure. Look at nearby pages in mk.tree for context.docs/mk.tree to add the page to the navigation (see mk.tree section below).<seealso> and inline links.Every markdown page uses these elements in this exact order at the top:
# Page Title
<!---IMPORT samples.docs.category.ClassName-->
<web-summary>
Two to three sentences for search results and SEO.
</web-summary>
<card-summary>
One to two sentences for card previews.
</card-summary>
<link-summary>
One sentence for inline link hover previews.
</link-summary>
# Title is always the first line (H1). Exactly one per page.<!---IMPORT ...--> appears only when the page uses Korro samples. Multiple imports are allowed.web-summary is the longest, link-summary is the shortest.Every page ends with a <seealso> block for related content:
<seealso style="cards">
<category ref="api-docs">
<a href="page-name.md" summary="Brief description of the linked page."/>
</category>
</seealso>
Or with a title and multiple categories:
<seealso style="cards" title="Next steps">
<category ref="user-guide">
<a href="page.md" summary="Description."/>
</category>
<category ref="api-docs">
<a href="page.md" summary="Description.">Custom Link Title</a>
</category>
</seealso>
Category refs: "user-guide", "api-docs", "get-start", "ext" (external links).
Three patterns, in order of preference:
— resolves to the page title. Best for inline references.link text — for when the page title doesn't fit the context.text — for linking to specific sections.> Warning text here.
> {style="warning"}
> Note text here.
> {style="note"}
> Tip text here.
> {style="tip"}
When using non-standard Writerside elements (tabs, compare blocks, procedures, topic switchers, etc.), read references/writerside-markup.md for syntax reference. Skip this file for pages that only use standard markdown, code blocks, admonitions, and seealso blocks.
Korro is a Gradle plugin that synchronizes code snippets between Writerside markdown and executable Kotlin test files. This ensures documentation examples always compile and produce expected output.
Markdown side (docs/topics/{category}/page.md):
<!---IMPORT samples.docs.apiDocs.ArrayCreation-->
<!---FUN arange_example-->
val a = mk.arange<Int>(5) // [0, 1, 2, 3, 4]
val b = mk.arange<Int>(2, 10, 3) // [2, 5, 8]
<!---END-->
Kotlin side (multik-core/src/commonTest/kotlin/samples/docs/{category}/ClassName.kt):
package samples.docs.apiDocs
import org.jetbrains.kotlinx.multik.api.*
import kotlin.test.Test
class ArrayCreation {
@Test
fun arange_example() {
// SampleStart
val a = mk.arange<Int>(5) // [0, 1, 2, 3, 4]
val b = mk.arange<Int>(2, 10, 3) // [2, 5, 8]
// SampleEnd
}
}
<!---FUN name--> must match the @Test fun name() method name exactly<!---IMPORT package.ClassName--> must match the test class fully-qualified name// SampleStart and // SampleEnd is what appears in the markdown code blockassertEquals(...)) go after // SampleEnd — they validate but don't appear in docs//, multi-line with /* ... */samples/docs/apiDocs/ for API Reference pagessamples/docs/userGuide/ for User Guide pagessamples/docs/ root for Getting Started and other pages@Test fun method to it.ShapeManipulation.kt for shape-manipulation.md).samples.docs.apiDocs or samples.docs.userGuide.<!---IMPORT ...--> directive at the top of the markdown page.<!---FUN name--> / <!---END--> blocks in the markdown.After creating or updating samples, remind the user to run:
./gradlew :multik-core:jvmTest --tests "samples.docs.*"
The navigation tree is defined in docs/mk.tree. When adding a new page:
<toc-element> for the page type:<toc-element toc-title="Getting started" topic="getting-started.topic"><toc-element topic="user-guide.topic"><toc-element toc-title="API reference"><toc-element topic="your-page.md"/> at the appropriate position.<toc-element>.toc-title="Custom Title" only when the page's H1 isn't suitable for the sidebar.wip="true" for pages that are not yet complete.Example:
<toc-element topic="array-creation.md">
<toc-element topic="arange.md"/>
<toc-element topic="your-new-function.md"/>
<!-- ... -->
</toc-element>
Before finishing any page:
<!---IMPORT--> and <!---FUN-->)<seealso> block at the end with 2-4 relevant linksmk.tree in the correct location (for new pages)Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
Next.js best practices - file conventions, RSC boundaries, data patterns, async APIs, metadata, error handling, route handlers, image/font optimization, bundling
Use when starting feature work that needs isolation from current workspace or before executing implementation plans - creates isolated git worktrees with smart directory selection and safety verification
Take kotlin/multik-docs from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.