Skip to content

Development

The repository uses devenv to provide a reproducible development environment with all required tools (Smithy CLI, JDK, .NET SDKs, formatters). See devenv.nix and devenv.yaml at the repo root for the full definition.

The recommended way to activate the environment is via direnv. After installing direnv and running direnv allow once in the repo root, the environment activates automatically whenever you enter the directory.

To enter the shell manually instead:

Terminal window
devenv shell

All day-to-day tasks are defined as just recipes. Run just with no arguments to list them.

RecipeWhat it does
just restoreRestore NuGet packages
just buildBuild in Release configuration
just testRun the test suite
just fmtFormat all sources (C#, Nix, YAML, Justfile)
just check-formatVerify formatting (used in CI)
just packPack NuGet packages to artifacts/packages
just docsStart the documentation dev server
just ciFull CI sequence: restore → check-format → build → test → pack
Terminal window
just pack

The generated .nupkg files are written to artifacts/packages.

Add a NuGet.config next to the consumer project to make the local feed available alongside nuget.org:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="smithy-net-local" value="../../artifacts/packages" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>

Adjust the relative path to match your project layout.

See Releasing.