Every package published to the Raiku ecosystem must follow a precise, schema-validated layout. The four required artefacts — a TOML manifest, a YAML version file, a README, and a source directory — give the CLI everything it needs to install, verify, and build your package from the index. If any of these files are absent or malformed,Documentation Index
Fetch the complete documentation index at: https://mintlify.com/SGizek/Raiku/llms.txt
Use this file to discover all available pages before exploring further.
raiku validate will reject the submission before a pull request can be opened.
Directory Layout
raiku.toml — Full Specification
raiku.toml is the primary manifest. It declares everything the index and installer need to know about your package.
version.yml — Full Specification
version.yml records the release metadata for the current version. The version field must always match the value in raiku.toml exactly — a mismatch is a hard validation error.
Naming Rules
Package names are globally unique identifiers within the Raiku index. Every name must satisfy all of the following constraints:- Lowercase by convention — the schema permits
[a-zA-Z0-9_-], but lowercase is the strong community convention and all official packages use it. - Allowed characters —
[a-zA-Z0-9_-]— letters, digits, hyphens, and underscores only. - Maximum length — 64 characters.
- Globally unique — no two packages in the index may share a name.
| Name | Valid? | Reason |
|---|---|---|
fast-math | ✅ | follows lowercase convention |
blazing_vec | ✅ | underscore is allowed |
http2-client | ✅ | digit in body is allowed |
2fast | ❌ | starts with a digit |
my package | ❌ | spaces are forbidden |
fast.math | ❌ | dot is not in [a-zA-Z0-9_-] |
src/ Directory Rules
Thesrc/ entry must be a directory (not a file) and must satisfy all of the following:
- Contains at least one file — an empty
src/directory is rejected. - Subdirectories are permitted and encouraged where the language ecosystem expects them.
- No pre-compiled binaries anywhere in the package tree:
.exe,.dll,.so,.dylibare never allowed.
Language-Specific Generated Layouts
When you runraiku init, the CLI generates a language-appropriate src/ scaffold:
| Language | Generated files in src/ |
|---|---|
| Python | <name>.py, pyproject.toml |
| Rust | lib.rs, Cargo.toml |
| C | <name>.c, <name>.h |
| C++ | <name>.hpp, <name>.cpp, CMakeLists.txt |
| Zig | <name>.zig, build.zig |
| Java | dev/raiku/<name>/<Name>.java |
| C# | <Name>.cs, <name>.csproj |
| Go | <name>.go, <name>_test.go, go.mod |
Forbidden File Types
The following file types are never permitted in the package root directory:| Category | Extensions | Note |
|---|---|---|
| Pre-compiled binaries | .exe, .dll, .so, .dylib | Binaries must be produced by the build command, not bundled |
| Shell scripts | .sh, .bat, .cmd, .ps1 | Scripts are only permitted inside src/ |
| Credentials | .key, .pem, .p12, .pfx | Private keys and certificates are strictly forbidden |
| Environment files | .env | Secrets must never be committed |
index.json Entry Format
When you runraiku publish, the CLI computes a SHA-256 hash of your raiku.toml and prints the exact JSON block to add to index/index.json:
sha256 is computed automatically by raiku publish and must be updated every time raiku.toml changes. The installer verifies this hash after downloading the package; a mismatch aborts installation.
The
path field must follow the exact pattern UserSub/<Language>/<package-name>. The index is the single source of truth for all package resolution — a package does not exist in Raiku unless it has a valid entry in index/index.json.Validation Checklist
Runraiku validate --dir <package-dir> before opening a pull request. The command performs all checks listed below:
raiku.toml checks
raiku.toml checks
raiku.tomlis present in the package directory- File is valid TOML and can be parsed without errors
namefield is present, non-empty, and matches[a-zA-Z0-9_-]+(max 64 chars; lowercase by convention)versionfield is present and follows semantic versioning (MAJOR.MINOR.PATCH)languagefield is present and is one of the eight supported valuesauthorfield is present (1–128 characters)build_commandfield is present (1–512 characters) and contains no forbidden patternsdescription,license,homepage,tags,dependenciesare valid if present- No unknown or extra fields are present
version.yml checks
version.yml checks
version.ymlis present in the package directory- File is valid YAML and can be parsed without errors
versionfield is present and matches the version inraiku.tomlexactlyrelease_dateis present and followsYYYY-MM-DDformatstability_levelis one of:stable,beta,alpha,experimentalchangelogis present and non-empty (string or list of strings)
Structural checks
Structural checks
README.mdis present and non-emptysrc/exists as a directory (not a file)src/contains at least one filelanguageinraiku.tomlmatches the parent language directory (e.g.Rustmust live underUserSub/Rust/)- No forbidden file types (
.exe,.dll,.so,.dylib,.key,.pem,.p12,.pfx,.env) anywhere in the package - Shell scripts (
.sh,.bat,.cmd,.ps1) are not present in the package root
Dependency checks
Dependency checks
- Each entry in
dependenciesis a valid Raiku package name string - No circular dependency chains are introduced