How to Contribute
Take care to read all contributions guidelines before you begin!
- Learn how to contribute to open source .
- Follow a step-by-step guide to practice your first contribution.
- Locate an open issue on GitHub . Post a comment letting us know you wish to volunteer.
- Optionally, you may coordinate efforts on the
#contributorschannel within Discord . - A member of the Skeleton team will assign the issue to you and help outline requirements.
- 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.
- Install PNPM on your local computer.
- Fork the Skeleton monorepo via the option on GitHub.
- Use Git to clone the forked project to your local machine.
- Run
pnpm ifrom the root to install the required dependencies. - Point your terminal at one of the
/sites,/packagesor/playgroundsprojects detailed below. - Run
pnpm devto start a local dev server for each project.
Monorepo Structure
Sites
Public facing websites that are deployed and hosted for users to browse.
| Path | Description |
|---|---|
/sites/skeleton.dev | The documentation website |
/sites/themes.skeleton.dev | The theme generator website |
Packages
Modular Skeleton packages distributed via NPM.
| Path | Description |
|---|---|
/packages/skeleton | The Skeleton core package, contains Skeleton’s Tailwind-specific features. |
/packages/skeleton-react | The Skeleton React package, contains Skeleton React components. |
/packages/skeleton-svelte | The Skeleton Svelte package, contains Skeleton Svelte components. |
/packages/skeleton-common | The Skeleton common package, contains shared modules. |
/packages/cli | The Skeleton CLI, contains Skeleton’s migrations. |
Playgrounds
Isolated sandbox environments for developing, testing and experimenting.
| Path | Description |
|---|---|
/playgrounds/skeleton-svelte | A SvelteKit playground for testing the Svelte package |
/playgrounds/skeleton-react | A NextJS playground for testing the React package |
Branch
Create and target all pull requests against the main branch unless otherwise instructed.
| Branch | Description | Pull Requests |
|---|---|---|
main | Represents the release branch of the all projects. | Allowed |
PR Branch Conventions
Please use the following naming convention when creating your pull request.
| Branch | Role |
|---|---|
docs/* | When making edits to the docs. |
feature/* | When adding a new feature. |
chore/* | When making changes to the build process or auxiliary tools. |
fix/* | When fixing a bug. |
Keep branch names short and semantic, and use kebab-case to separate words:
docs/get-started-typo
bugfix/accordion-render-issue
Changesets
Changesets are used to automatically generate the changelog for each release.
- Any contributions made within
/packagesmust contain a Changeset - Any contributions made within
/sitesshould not include a Changeset.
Follow these instructions to generate a changeset:
- Navigate to the root of the Skeleton monorepo.
- Run
pnpm changesetto trigger the Changeset CLI. - Select the packages that are affected by your changes.
- Select the type of version bump required (major, minor, patch).
- Provide a short description of the changes made.
Changesets use semantic versioning. We recommend the following convention.
| Version | Role |
|---|---|
major | For breaking changes, such as changing the API of a component or function. |
minor | For notable changes, such as a new feature. |
patch | For small changes, such as a fixing a bug. |
Changeset descriptions will appear verbatim on the corresponding CHANGELOG.md. Keep it short, semantic, and and include the same branch prefix .
---
'@skeletonlabs/skeleton-svelte': minor
---
feat: Added `Avatar` component.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” on GitHub.
Root Commands
Run the following commands in the monorepo root. Each will run recursively for supported packages.
| Command | Description | Tool |
|---|---|---|
pnpm format | Runs the formatter | Prettier |
pnpm lint | Runs the linter | Oxlint |
pnpm test | Runs all unit tests | Vitest |
pnpm check | Runs the type checker | TypeScript , Svelte Check and Astro Check |