Developing minikit
bin/ minikit, minikit.bat — bootstrap; bin/cache/ holds the compiled CLI and simulator builds
cli/ minikit_core (application core, pure Dart) · minikit (adapters, commands)
packages/ mini_app_core · mini_app_sdk · mini_app_bridge · mini_app_host
simulator/ Flutter desktop UI + Rust core
templates/ what `minikit create` starts from
docs/ these pages, the explainer and its SVG exports, media
skills/ AI skills
schemas/ JSON Schema for miniapp.json
release.json the versions this checkout ships
Architecture of the CLI
minikit_core holds the use cases (create, run, validate, build, package, doctor, upgrade, docs,
skills, IDE setup) behind small ports — console, processes, environment, Flutter, git, the
simulator's control API, release assets, the terminal — with a fake for every port, so the whole
core is tested in memory in milliseconds. minikit supplies the dart:io adapters and the
commands. Errors are values (Outcome<T, Failure>) and become exit codes once, at the command
boundary. Named patterns where they fit: Command, Facade, Strategy (targets, consoles), Adapter
(IDEs, processes), Chain of Responsibility (doctor checks, validators), Template Method (the package
pipeline), Observer (the served-marker watcher), Repository (config, run state), State (a run).
Working on it
export MINIKIT_DEV=1 # run the CLI from source
bin/minikit version
cd cli/minikit_core && dart run build_runner build && dart test
cd ../minikit && dart test
cd ../../simulator && flutter test && (cd rust && cargo test)
python3 tool/excalidraw_to_svg.py # after editing the explainer
Work happens on dev; main holds releases and is where tags live. Small, focused commits.
CI (.github/workflows/ci.yml) runs the Dart, Flutter and Rust suites on every push to either
branch and compiles the bootstrap.