Thank you for your interest in contributing to the Second Life Creation Portal! This guide will help you get started.
Please discuss significant changes before starting work. This ensures your contribution aligns with project priorities and prevents duplicated effort.
- GitHub Issues - Report bugs and suggest improvements
- Discord - Join the Second Life Official Discord for real-time discussion (see
#opensource-devchannel) - Feedback Forum - feedback.secondlife.com for user-facing discussions and feature requests
- Mailing List - opensource-dev for announcements and technical discussions
For substantial documentation changes, start a discussion in GitHub Issues or Discord before making a pull request.
- Node.js 18 or later
- pnpm (recommended) or npm
- Git
# Clone the repository
git clone https://github.com/secondlife/create.git
cd create
# Install dependencies
pnpm install
# Start the dev server
pnpm devVisit http://localhost:4321 to see your changes.
The project auto-generates function and event reference pages from LSL definitions:
# Fetch latest LSL/Lua definitions from GitHub
pnpm fetch:definitions
# Generate all documentation (LSL + Lua functions and events)
pnpm generate:docsAll documentation lives in src/content/docs/ as Markdown (.md) or MDX (.mdx) files:
script/lsl-reference/- LSL language referencescript/lua-reference/- Lua language referencescript/guides/- Scripting tutorials and guidesbuild/- Building and construction documentation
Use a balanced, pragmatic tone:
- Professional but approachable
- Explain the "why" behind concepts, not just the "what"
- Include practical code examples
- Assume readers have some Second Life experience
- Avoid marketing language or excessive enthusiasm
Example:
"Tables are Lua's most powerful data structure. Unlike LSL's separate
listtype, tables serve two purposes: they work as both arrays (like LSL lists) and dictionaries/maps (which LSL doesn't have)."
- Create a
.mdor.mdxfile in the appropriate directory - Add frontmatter:
--- title: Page Title description: Brief description for SEO ---
- For
.mdx, import Starlight components as needed:import { Card, CardGrid, Tabs, TabItem } from '@astrojs/starlight/components';
- Update the sidebar in
astro.config.mjsif needed (or rely on autogenerate)
Function and event reference pages are auto-generated from src/definitions/lsl_definitions.yaml:
- To update function/event metadata: Edit the YAML file and run
pnpm generate:docs - To add examples and notes: Add content after the component tag in the MDX file:
<LSLFunction /> ## Examples Your custom content here...
Custom content is preserved when regenerating pages.
Use the lsl language identifier:
```lsl
default {
state_entry() {
llSay(0, "Hello, World!");
}
}
```Use luau (not lua) and always include type annotations:
```luau
script.on("state_entry", function()
Chat.say("Hello, World!")
end)
```See LUA_REFERENCE.md for detailed Lua documentation guidelines.
The site supports additional languages. To add translated content:
- Create localized directories:
docs/de/,docs/ja/, etc. - Mirror the English structure
- Translate content while preserving technical accuracy
.
├── public/ # Static assets (favicons, etc.)
├── scripts/ # Build and generation scripts
├── src/
│ ├── assets/ # Images and media files
│ ├── components/ # Astro components
│ ├── content/
│ │ └── docs/ # Documentation content (Markdown/MDX)
│ ├── definitions/ # LSL/Lua language definitions (YAML)
│ └── styles/ # Custom CSS
├── astro.config.mjs # Astro configuration
└── CLAUDE.md # Detailed project guidance
This repository uses different licenses for different types of content:
Documentation Text:
- New content you contribute is licensed under CC-BY 4.0
- Legacy wiki content (pages with
<WikiAttribution>component) remains under CC-BY-SA 3.0
Code Examples:
- All code examples (LSL, Lua, JavaScript, etc.) must be contributed under CC0 1.0 (Public Domain)
- This means anyone can use your code examples freely without attribution requirements
By submitting a contribution, you agree that:
- Documentation text (explanations, tutorials, guides) you write will be licensed under CC-BY 4.0
- All code examples in your contribution are released to the public domain under CC0 1.0
- You have the right to license your contributions under these terms
- You understand that your contributions may be freely used by others under these licenses
When editing legacy wiki content:
- Pages marked with
<WikiAttribution>are CC-BY-SA 3.0 licensed - Substantial modifications to these pages may need to remain CC-BY-SA 3.0
- If you're unsure, ask in your pull request
Code examples:
- Keep code examples concise and focused on teaching concepts
- Don't include proprietary code or code you don't have rights to release
- All code examples automatically become public domain (CC0) when merged
- Fork the repository and create a feature branch
- Make your changes following the style guidelines
- Test locally with
pnpm dev - Run type checking:
pnpm astro check - Submit a pull request with a clear description of your changes
- Confirm in your PR description that you agree to license your contribution under the appropriate license
- Be responsive to feedback during review