# Contributing to @use-funnel libraries
Welcome contribution from everyone
All communications in this repository will be by English.
> Every contributor to @use-funnel libraries should adhere to [our Code of Conduct](./CODE_OF_CONDUCT.md). Please read it to understand what actions will and will not be tolerated.
## Contributing as issue
### 1. Search for duplicates
[Search the existing issues](https://github.com/toss/use-funnel/issues) before logging a new one.
### 2. Have a question?
The issue tracker is for **issues**, in other words, bugs and suggestions.
If you have a _question_, please use [GitHub Discussions](https://github.com/toss/use-funnel/discussions), your favorite search engine, or other resources.
### 3. Found a bug?
When logging a bug, please be sure to include the following:
- What version of TypeScript you're using (run `tsc --v`)
- If at all possible, an _isolated_ way to reproduce the behavior
- The behavior you expect to see, and the actual behavior
### 4. Feature suggestion?
We also accept suggestions in the [issue tracker](https://github.com/toss/use-funnel/issues/new?assignees=&labels=&projects=&template=feature_request.md&title=%5BFeature%5D%3A).
In general, things we find useful when reviewing suggestions are:
- A description of the problem you're trying to solve
- An overview of the suggested solution
## Contributing as code
### Prerequisites
0. [Choose an issue about bug or feature you want to work on](https://github.com/toss/use-funnel/issues)
1. Fork this repository.
2. Clone the repository
```shell
git clone git@github.com:{username}/use-funnel.git
```
3. Please use the correct node version. You can use the version declared in [.nvmrc](https://github.com/toss/use-funnel/blob/main/.nvmrc). We strongly recommend [nvm](https://github.com/nvm-sh/nvm) to control local machine's node version easily. also We recommend [nvm's deeper shell integration](https://github.com/nvm-sh/nvm#deeper-shell-integration) too.
4. Install packages. [We use pnpm@9.6.0. Install pnpm with corepack please if you can](https://pnpm.io/installation#using-corepack). We recommend using corepack for pnpm to automatically use the version declared in the packageManager field of package.json.
```shell
corepack enable && corepack prepare
pnpm install
```
### Add a new router package
```shell
pnpm add:router --name your-router-name
```
### Pull Requests
> [Opening a pull request](https://github.com/toss/use-funnel/pulls)
All commit message and title of your Pull Request should match the following format:
```
[optional package scope]:
[optional body]
[optional footer(s)]
```
> We adhere [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/). We check your commits on pre-commit(git-hook) by husky with our rules. please follow it.
Several predefined GitHub Workflows will check qualities. If you fail our checks, please check the error message and update the Pull Request.