1. resources
  2. contribute
  3. get started

Get Started

Read this before you submit your first contribution.

How to Contribute

Take care to read all contributions guidelines before you begin!

  1. Learn how to contribute to open source.
  2. Follow a step-by-step guide to practice your first contribution.
  3. Locate an open issue on GitHub. Let us know you would like to volunteer.
  4. Optionally, you may coordinate efforts on the #contributors channel within Discord.
  5. If the Skeleton team approves your request, you’ll be assigned to the issue.
  6. Complete the work and submit a pull request and we’ll review the changes.

NOTE: non-trivial PRs submitted without our prior consent will be denied. Repeat offenders will be banned.

Using PNPM

Skeleton makes use of PNPM and PNPM workspaces to maintain all projects within the Skeleton monorepo.

  1. Install PNPM on your local computer.
  2. Fork the Skeleton monorepo via the option on GitHub.
  3. Use Git to clone the forked project to your local machine.
  4. Point your terminal at one of the sites or package projects listed below.
  5. Run pnpm i to install the required depedencies.
  6. Run pnpm dev to start a local dev server for each project.

NOTE: Make sure you’re running pnpm 9.5.0 or higher. You can check with pnpm --version.

Adding Dependencies

Dependencies may be installed using the standard pnpm i command. However, in some cases it may be beneficial to maintain a uniform version shared across multiple projects or within each package.json. For this we can make use of PNPM Catalogs.

The master version is maintained in the monorepo root in pnpm-workspace.yaml:

catalog:
# ...
<package>: <version>

Use the following convention to link each project’s dependency to the shared Catalog version:

Terminal window
pnpm add <package>@catalog:

Monorepo Structure

Sites

Public facing websites that are deployed to Vercel.

PathDescription
/sites/skeleton.devThe production skeleton.dev documentation website.
/sites/next.skeleton.devThe temporary Next/v3 documentation website.
/sites/themes.skeleton.devThe Skeleton themes generator website

Packages

Modular Skeleton packages distributed via NPM.

PathDescription
/packages/skeletonThe Skeleton core package, containing the Tailwind plugin.
/packages/skeleton-reactThe Skeleton React package, containing Skeleton React components.
/packages/skeleton-svelteThe Skeleton Svelte package, containing Skeleton Svelte components.
/packages/create-skeleton-appThe Skeleton onboarding CLI application.

Branch

Skeleton uses two primary branches. All pull requests should be created from and to the dev branch.

BranchDescriptionPull Requests
devRepresents the bleeding edge developement branch. Allowed
masterRepresents the release branch of the all projects. Never

PR Branch Conventions

Please use the following naming convention when creating your pull request.

BranchRole
docs/*When updating the documentation site.
feature/*When implementing a new feature.
chore/*When implementing small changes.
bugfix/*When implementing feature bugfixes.

Keep branch names short and semantic, using dashes to seperate words.

docs/get-started-typo-fix
bugfix/accordion-render-issue

Changesets

Changesets are used to automatically generate the changelog for each release. Any contributions made within /packages must contain a Changeset, contributions within /sites should not include a Changeset.

Use the following instructions to generate a changeset.

  1. Make sure you’re within your local pull request feature branch.
  2. Navigate to the root of the Skeleton monorepo.
  3. Run pnpm changeset to trigger the Changeset CLI.
  4. Follow the instructions when prompted.
  5. Changeset are added as .md files within the /.changeset directory.
  6. You may edit or revise a Changeset right up until release.

Changesets use semantic version. We recommend the following convention.

VersionRole
majorDo not use. Reserved for maintainers.
minorFor notable changes, such as a new features.
patchFor small changes, such as a fixing a typo.

Changeset descriptions will appear verbatim on the Changelog. Keep it short, semantic, and prefix this like branch names.

---
'@skeletonlabs/skeleton-svelte': minor
---
feature: Added a new `background` component prop.

Tooling

Skeleton makes use of the following technology to improve the developer experience. It’s recommended you run these tools regularly while working on new contributions, ideally before each commit.

Root Commands

Run the following commands in the monorepo root to recursively check each PNPM workspace project:

  • pnpm check - triggers each project’s respective diagnostic tooling, such a Svelte Check.
  • pnpm format - triggers Prettier to automatically format code to the defined rulesets.
  • pnpm lint - triggers ES Lint to check for any pending linting issues.
  • pnpm test - triggers all available test cases using tools such as Vitest.

Local Commands

Additionally, you may also run the local instance of each command. Consult the local package.json for available options. For format and lint commands, use the following syntax to draw from the global configuration, but isolate to the current PNPM workspace:

Terminal window
pnpm -w format
pnpm -w lint

VS Code Extensions

We recommend the following extensions for VS Code.