Get Started - Skeleton

Skeleton

  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. Post a comment letting us know you wish to volunteer.
  4. Optionally, you may coordinate efforts on the #contributors channel within Discord.
  5. A member of the Skeleton team will assign the issue to you and help outline requirements.
  6. Complete the work and submit a pull request per the requirements on this page.

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

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. Run pnpm i from the root to install the required dependencies.
  5. Point your terminal at one of the /sites, /packages or /playgrounds projects detailed below.
  6. Run pnpm dev to start a local dev server for each project.

NOTE: Make sure you’re running PNPM version 9.5.0 or higher to ensure support for PNPM catalogs. You can check your version with pnpm --version.

Adding Dependencies

As a courtesy, please consult with Skeleton maintainers before adding dependencies. Third-party dependencies come with some level of risk, and we may be able to offer alternatives that limit the scope of changes.

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 and hosted for users to browse.

PathDescription
/sites/skeleton.devThe production documentation website.
/sites/themes.skeleton.devThe Skeleton themes generator website

Packages

Modular Skeleton packages distributed via NPM.

PathDescription
/packages/skeletonThe Skeleton core package, contains Skeleton’s Tailwind-specific features.
/packages/skeleton-reactThe Skeleton React package, contains Skeleton React components.
/packages/skeleton-svelteThe Skeleton Svelte package, contains Skeleton Svelte components.
/packages/skeleton-cliThe Skeleton CLI, currently focused on migrations.
/packages/skeleton-commonThe Skeleton common package, contains shared internal only utilities.
/packages/necroparserAn internal tool for generating component type schema for API references.

Branch

Skeleton utilizes three primary branches.

BranchDescriptionPull Requests
masterRepresents the release branch of the all projects. Never
devRepresents a queue of new features prepped for release. Allowed
nextRepresents the bleeding edge pre-release branch. Allowed

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 a chore.
bugfix/*When implementing a fix for a bug.

Keep branch names short and semantic, and use snake-case to separate 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
  • Any contributions made within /sites should not include a Changeset.

Follow these 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 before your PR is merged.

Changesets use semantic versioning. We recommend the following convention.

VersionRole
majorDo not use. Reserved for maintainers only.
minorFor notable changes, such as a new feature.
patchFor small changes, such as a fixing a bug.

Changeset descriptions will appear verbatim on the Changelog. Keep it short, semantic, and and include the same branch prefix.

---
'@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 before flagging the PR as “ready for review”.

Root Commands

Run the following commands in the monorepo root. Each will run recursively for supported packages.

  • pnpm format - Formats the monorepo using Prettier.
  • pnpm lint - Finds (and attempts to fix) any issues within the monorepo using ESLint.
  • pnpm test - Runs all unit tests using Vitest.
  • pnpm check - Runs framework specific diagnostics, such as Svelte Check, Astro Check, etc.

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 root package.json:

Terminal window
pnpm -w <command>

VS Code Extensions

We recommend the use of VSCode for contributions, and the following VSCode extensions.