modular/skills

new-modular-project

Creates a new Mojo or MAX project.

Voir la source
Document Skill original

Rendu depuis le dépôt source en conservant titres, exemples, code, tableaux, liens et images.

When the user wants to create a new project, first infer as many options as possible from the user's request (for example, "new Mojo project" means type=Mojo, "called foo" means name=foo). Then use a structured multiple-choice prompt (not plain text) to gather only the remaining unspecified options in a single interaction. Do NOT ask about options the user has already provided or implied. The options to determine are:

  • Project name: ask if the user hasn't specified one.
  • Type of project: Mojo or MAX (infer from context if the user said "Mojo

project" or "MAX project").

  • Environment manager: pixi (recommended) or uv.
  • uv project type (only when the environment manager is uv): full uv

project (uv init + uv add, recommended) or quick uv environment (uv venv + uv pip install, lighter weight).

  • Channel: nightly or stable. Default to nightly for MAX projects and

stable for Mojo projects, and ask only if the user hasn't implied one.

Then follow the appropriate section below (pixi or uv) to initialize the project and choose max or mojo as appropriate. Don't pin a version: each channel already resolves to the right one.

MAX and Mojo ship together but number their releases differently, so their version strings don't look alike. On the stable channel, max is 26.5 while mojo is 1.0.0; on nightly they're 26.6.0.dev* and 1.1.0.dev*. That's expected, not a mismatch.

[!NOTE] Don't look for or use magic for Mojo or MAX projects; it's no longer supported. Pixi has fully replaced its capabilities.

System prerequisites

Mojo requires a C linker for compilation. Install one if not already present:

OSCommand
Ubuntu/Debiansudo apt install gcc
Fedora/RHELsudo dnf install gcc
macOSxcode-select --install
WindowsInstall WSL2 first (see Windows users), then install gcc

Windows users: Mojo doesn't run natively on Windows. Install WSL2 (wsl --install in PowerShell), then follow the Linux instructions inside your WSL environment.


Pixi (recommended)

Pixi manages Python, Mojo, and other dependencies in a reproducible manner inside a controlled environment.

First, determine whether pixi is installed. If it isn't available at the command line, install it using the latest instructions at <https://pixi.prefix.dev/latest/#installation>.

After installing pixi, you may need to add it to the local shell environment.

Nightly

bash
# New project
pixi init [PROJECT] \
  -c https://conda.modular.com/max-nightly/ -c conda-forge \
  && cd [PROJECT]
pixi add [max / mojo]
pixi shell

# Existing project - add to pixi.toml channels first:
# [workspace]
# channels = ["https://conda.modular.com/max-nightly/", "conda-forge"]
pixi add [max / mojo]

Stable

bash
# New project
pixi init [PROJECT] \
  -c https://conda.modular.com/max/ -c conda-forge \
  && cd [PROJECT]
pixi add [max / mojo]
pixi shell

# Existing project
pixi add [max / mojo]

Python-using projects

If your project uses Python libraries with Mojo:

bash
pixi add python
pixi add requests           # conda-forge packages
pixi add --pypi some-pkg    # PyPI-only packages

uv

uv is a fast and very popular package manager, familiar to developers coming from a Python background. It also works well with Mojo projects.

Nightly (project)

bash
uv init [PROJECT] && cd [PROJECT]
uv add [max / mojo] \
  --index https://whl.modular.com/nightly/simple/ \
  --prerelease allow

Stable (project)

bash
uv init [PROJECT] && cd [PROJECT]
uv add "max[all]"

This resolves from PyPI. The all extra pulls in mojo and the rest of the MAX stack, so the MAX and Mojo versions always match.

Nightly (quick environment)

bash
mkdir [PROJECT] && cd [PROJECT]
uv venv
uv pip install [max / mojo] \
  --index https://whl.modular.com/nightly/simple/ \
  --prerelease allow

Stable (quick environment)

bash
mkdir [PROJECT] && cd [PROJECT]
uv venv
uv pip install "max[all]"

When using uv, you can use max or mojo directly by working within the project environment:

bash
 source .venv/bin/activate

pip

Standard Python package manager.

Nightly

bash
python3 -m venv .venv && source .venv/bin/activate
pip install --pre [max / mojo] \
  --extra-index-url https://whl.modular.com/nightly/simple/

Use --extra-index-url, not --index-url. The latter replaces PyPI, and the nightly index doesn't carry third-party dependencies like numpy, so pip backtracks through every max version instead of reporting a clear error.

Stable

bash
python3 -m venv .venv && source .venv/bin/activate
pip install "max[all]"

As with uv, the all extra installs mojo as well, so the MAX and Mojo versions always match.


Conda

For conda and mamba users.

Nightly

bash
conda install -c conda-forge \
  -c https://conda.modular.com/max-nightly/ [max / mojo]

Stable

bash
conda install -c conda-forge \
  -c https://conda.modular.com/max/ [max / mojo]

Version alignment with MAX

If using MAX with custom Mojo kernels, both must come from the same channel. Don't compare their version numbers: MAX and Mojo number releases differently, so a matching pair looks mismatched (stable is max 26.5 with mojo 1.0.0).

bash
# Check that both came from the same channel
pixi list | grep -E "^(max|mojo)\b"

Or, instead install max[all] (with pip/uv) or max-all (with conda/pixi):

bash
uv add "max[all]"
bash
pixi add max-all

Installing max with "all" optional dependencies instead of installing max and mojo separately will ensure that the max and mojo versions always match. Mixing versions between the two causes kernel compilation failures.


References

du même dépôt

Autres Skills

Tous les Skills
modular
Communauté

closure-migration

- Migrates Mojo code off legacy parametric closures (capturing[], @parameter / @parameter, apifn) onto value-taking unified closures (api(args, fn) with {imm} / {mut} / {var} / named capture lists). Use when removing parametric overloads, fixing "capturing thin" conversion errors, rewriting nested launch/callback closures, or migrating any API that took a comptime function parameter. Also use when CI SIGSEGVs while compiling a Mojo object with compileoffloadclosure func must be fully bound — that is host elaboration; verify with kgen -elaborate, not remote GPU execution.

installations
1
GitHub Stars
188
Mis à jour
6 sept.
modular
Communauté

debug-model

Debug silent corruption when a MAX model loads, compiles, serves, and generates tokens but output disagrees with a reference implementation. Use whenever parity debugging stalls on scalar taps, the model returns gibberish or wrong greedy tokens, logit cosine is high but argmax differs, or generation is coherent then diverges — during an architecture port, a quantization bring-up, a multi-GPU conversion, or after a MAX upgrade. Triggers on "parity failure", "silent corruption", "logits match but tokens diverge", "top-1 mismatch", "greedy divergence", and "model serves but generates garbage". Not for crashes on load or pre-serve scaffolding (use import-model). Mandates reference-vs-MAX tensor-dump comparators first, verify fixes numerically before recompiling, and serve-vs-pipeline bisect when dumps match but text diverges.

installations
1
GitHub Stars
188
Mis à jour
6 sept.
modular
Communauté

eval-model

Measures the task accuracy of text models served by MAX using standard benchmarks such as GSM8K, MMLU, HellaSwag, ARC, AIME, GPQA, TruthfulQA, WinoGrande, and BABILong. Use when benchmarking a served model, comparing it with model-card or reference scores, verifying that a new MAX model produces correct answers, or running repeatable dataset evaluations against a MAX OpenAI-compatible endpoint.

installations
1
GitHub Stars
188
Mis à jour
6 sept.
modular
Communauté

import-model

Use when importing a new model architecture into MAX from a Hugging Face model ID. Triggers on: "import a model into MAX", "add model to MAX", "bring up in MAX". Workflow: inspect Hugging Face config and modeling code, scaffold from a similar MAX architecture, implement each graph layer to match HF, serve, then verify against the Hugging Face reference. When the server runs but output is wrong (gibberish, greedy mismatch, coherent-then-diverges), load debug-model for the divergence hunt instead of scalar-tap iteration.

installations
1
GitHub Stars
188
Mis à jour
6 sept.