Glacier
Snowball's open-source monorepository managed by Yarn 3 and TurboRepo
Install / Use
/learn @snowball-tech/GlacierREADME
Snowball Glacier
<!-- prettier-ignore-start -->| eslint-snowball-config | prettier-config | renovate-config | semantic-release-config |
| - | - | - | - |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Quality on main branch | Security on main branch | Release on main branch |
| - | - | - |
| |
|
|
The open-source mono-repository for packages developed, maintained and used by Snowball.
Setup
Before anything, start by cloning the repository:
git clone git@github.com:snowball-tech/glacier.git
If you haven't setup any SSH key to your GitHub account, you will need to do so. Check out the documentation on how to connect with SSH. Alternatively, you can also use HTTPS to clone the repository (but this is not recommended):
git clone https://github.com/snowball-tech/glacier.git
Note that you can also use the GitHub CLI to clone the repository:
gh repo clone snowball-tech/glacier
When cloned, go into the repository directory:
cd glacier
Pre-requisites
Before setting up this repository and start using it/contributing to it, you'll need to make sure you have some tools installed on your machine.
<details> <summary>Click here to see the details</summary>MacOS only
<details> <summary>Click for more information</summary>If you are on MacOS, you will need some extra things to make the steps below easier.
- Homebrew
First of all, you will need HomeBrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
You can always check the official documentation if you have any question or issue
- Shell
You are probably using Zsh as your default shell.
Some steps below are updating the .zshrc file in your home directory.
So we have to make sure this file exists:
touch ~/.zshrc
If you are using Bash as your default shell, run:
touch ~/.bash_profile
</details>These commands may give you an error if the files already existed. You can ignore it.
NodeJS
To be able to work with this repository, you will have to have a working version of NodeJS.
You can simply install the latest version of the 24.x.x build.
To do so, it's recommended to use a Node Version Manager like NVM or N
NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
Note that you may check on the official installation documentation if a newer version is available.
You can always check the official documentation if you have any question or issue
Then restart your terminal (on MacOS you have to completely quit the Terminal application before restarting it).
Then you can make NVM automatically select the appropriate NodeJS version for the repository:
nvm use
N
curl -L https://bit.ly/n-install | bash
Then restart your terminal (on MacOS you have to completely quit the Terminal application before restarting it).
Alternatively, on MacOS you can also run:
brew install nAnd then restart your terminal by completely quitting the Terminal application and restarting it.
You can always check the official installation documentation and the official documentation if you have any question or issue
Then you can make N automatically select the appropriate NodeJS version for the repository:
n auto
Yarn
This mono-repository is base on Yarn Workspaces. So you'll have to have Yarn on its 4.x.x version.
When having NodeJS installed, simply run:
corepack enable
corepack prepare yarn@stable --activate
You can always check the official installation documentation if you have any question or issue
Then make sure you have the latest 4.x.x version installed:
yarn --version
This should output a 4.x.x version (e.g. "4.12.0").
</details>Installation
There is an automated setup process that will handle all the steps for you (dependencies, configuration, ...):
yarn setup
There you go
You are now ready to start working on Glacier.
Usage & Development
It's recommended to regularly update the dependencies and the environment on your local copy of the repository:
yarn setup
This repository is a mono-repository. This means that it contains multiple packages and applications all together in a single Git repository.
Each of these packages and applications contains their own documentation in
their own README.md file.
See the dedicated
TOOLING.mddocumentation for more information about the mono-repository management with Yarn workspaces.
File structure
This repository is organized around two major directories:
glacier
|-- packages
|-- ...
Packages
Packages are located in the packages directory.
This directory contains packages made to be published in a public NPM repository (https://www.npmjs.com) and used in other packages and/or apps.
There are currently 5 packages available in Glacier:
-
eslint-snowball-config: a composable ESLint v9 configuration to enable config, plugin and rules according to your needs;
-
prettier-config: the base Prettier configuration and ignored files. This configuration disables semicolon, enforce usage of single quotes and add all trailing commas.
It also offers the organize attributes and Shell script plugins out of the box; -
renovate-config: a base opinionated Renovate configuration with support for NPM, Golang, secrets and many more;
-
semantic-release-config: a mono-repository oriented configuration for Semantic Release that allows to publish multiple packages.
It also provide the commit rules for generating changelog and create releases.
TypeScript
See the dedicated CONVENTIONS.md and
TOOLING.md documentations.
Linting & Formatting
See the dedicated CONVENTIONS.md and
TOOLING.md documentations.
Dependencies
Always remember to add dependency if you really need it to avoid cluttering the packages and degrading the performance both in the developers and users side.
It is your duty as a member of the Snowball's engineering team to help mainting the dependencies up to date. This means that you are expected and should help reviewing, testing and merging dependencies updates PRs on a regular basis.
The best way to do so is to regularly check the [Renovate dashboar
Related Skills
node-connect
346.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
107.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
Writing Hookify Rules
107.2kThis skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.
review-duplication
100.1kUse this skill during code reviews to proactively investigate the codebase for duplicated functionality, reinvented wheels, or failure to reuse existing project best practices and shared utilities.
