Contribution Guide
Welcome to the sUNC documentation project! We worked tirelessly to standardise and make the documentation beautiful and readable for everyone.
This guide outlines the official standards for contributing to the sUNC documentation, including how libraries and functions should be structured and written.
Consistency makes the documentation readable, searchable, and enjoyable to explore.
Documenting entire libraries
Each library must be placed in a folder named after the library itself. Inside this folder, you must include a README.md file, which serves as the index page for that library, in both this documentation website and also when browsing the documentation repository on GitHub.
Index page requirements
- Introduce the purpose of the library
- Summarise what you can and cannot do with it
Index pages do not need to follow this strict format, but they should aim to do so, for clarity and helpfulness.
General documentation style
All documentation pages (including function pages and index pages) must:
- Use inline links to relevant Wikipedia, Roblox Luau, or other sUNC pages with referencing key terms.
-
Use the correct inline link formats, e.g.:
As you can see, the example above uses a code snippet with
luausyntax highlighting enabled, whilst also being a hyperlink to the Roblox API documentation fortask.defer.
All markdown documents must be formatted using David Anson's "markdownlint" extension, available for free in the Visual Studio marketplace.
This extension alone is not sufficient enough, which is why we use Yu Zhang's "markdown all in one" extension too, but only specifically for formatting tables. This makes tables look nice and readable in the source markdown files of the documentation.
The repository for this documentation already includes a .vscode/extensions.json file, so the extensions should automatically download for you once you consent.
When formatting tables, open the Command Palette with Ctrl + Shift + P (Windows) or ⌘ + Shift + P (macOS), select "Format Document With...", and select "Markdown All In One" like so:

Language choices
Using British English
It is generally well known around the sUNC community that the documentation and most things that have a lot of text are written using British English. This usually means some words Americans spell with a "z" will instead use an "s". If you are unsure, please check the Oxford or Cambridge dictionaries.
The "Oxford Comma"
Please use the Oxford Comma when writing lists.
This means that in a list of three or more items, a comma is placed before the final "and" or "or".
For example: "apples, oranges, and bananas" rather than "apples, oranges and bananas".
The Oxford Comma avoids ambiguity and makes lists clearer. It also mirrors natural pauses in daily speech, which makes the text easier to read aloud and less confusing to follow.
Short-form contractions
Please avoid contractions like "isn't" and "it's". Instead, use "is not" and "it is" respectively. These are just examples, but the same rules apply for all contractions. Because this documentation is formal and technical rather than conversational, contractions should be avoided.
Articles before a word
An article is something that goes before a word, like a and an. This is a polite reminder to not just put an an in front of things that have a vowel literally, but rather whether the word has a vowel sound when pronounced out loud. Non-native English speakers tend to get this rule wrong sometimes.
If unsure about pronunciation, assume that pronunciation is done with a British RP accent - the best sources to listen to are the Oxford and Cambridge dictionaries again where the pronunciation is perfect.
Function documentation
Each function must have its own file, named after the function (e.g. newcclosure.md).
Title Format
The title of the page must be written as:
Important
Do not include emojis in function titles.
Notices
Place all important !!! callouts (warnings, errors, info) immediately under the title. These should include anything the user must know before using the function.
Description
Provide a description of the function directly after any notices.
When referencing the function name, always use the code snippet format:
Type definition
Type definitions are important!
You must always include a Luau-style type definition when documenting a function.
Include the Luau type definition at the bottom of the first section, with Luau syntax highlighting but no individual line highlighting or line numbers:
Make sure it precedes the parameters table.
Parameters
The parameters must always be neatly described in a function, like so:
## Parameters
| Parameter | Description |
|-------------------------|-------------------------------------|
| `#!luau parameter_name` | Short description of the parameter. |
Use snake_case for every variable, and camelCase for parameters to easily distinguish between the two.
There should be no horizontal rule (---) between the type definition and the parameters section.
Providing users with examples
Every function page must include at least one example.
Use 'Example' or 'Examples' based on how many examples you have
To make the documentation experience more logical and also grammatically correct, please do the following:
- Make the heading ## Example if there is only one example.
- Make the heading ## Examples if there is more than one example.
Each example should have its own subheading, e.g. ### Example 1, ### Example 2.
Each example should use the following format:
## Example
```luau title="Short but descriptive title for your code" linenums="1"
-- an example is here
print("Hello world!")
print("This is some example code")
```
- Examples must use
luausyntax highlighting. - Line numbers must be enabled using
linenums="1". - Each example must have a
titledescribing in short what the code does.