# Contributing (scripts)

<figure><img src="/files/phOqyIiKbklQTpQi6Q8A" alt="" width="200"><figcaption><p>exile.watch logo</p></figcaption></figure>

## [Prerequisites](/development/prerequisites.md)

## Development

### 1. [Fork @exile-watch/nucleus repo](https://github.com/exile-watch/nucleus)

### 2. [Create GitHub PAT token](/development/generating-github-pat.md)

### 3. [Create .npmrc file](/development/.npmrc-file.md)&#x20;

### 4. Install dependencies

```bash
# project root
$: nvm use # uses node version that's defined in .nvmrc
$: npm i # install dependencies
```

### 5. Check changes made in [nucleus](/projects/nucleus.md) package locally in [crucible](/projects/crucible.md) project

#### a) Create [nucleus](/projects/nucleus.md) package link

<pre class="language-bash"><code class="lang-bash"><strong># @exile-watch/nucleus project
</strong># package path e.g. ~/nucleus/packages/encounter-data
$: npm link
</code></pre>

#### b) Build [nucleus](/projects/nucleus.md) package

<pre class="language-bash"><code class="lang-bash"><strong># @exile-watch/nucleus project
</strong># package path e.g. ~/nucleus/packages/encounter-data
$: npm run build
</code></pre>

#### c) Link [nucleus](/projects/nucleus.md) package in [crucible](/projects/crucible.md) project

<pre class="language-bash"><code class="lang-bash"><strong># @exile-watch/crucible project
</strong># root path ~/crucible
$: npm link @exile-watch/encounter-data #
</code></pre>

### 6. Conclusion

Not happy with the change? \
Repeat step [#b-build-nucleus-package](#b-build-nucleus-package "mention") and [#c-link-nucleus-package-in-crucible-project](#c-link-nucleus-package-in-crucible-project "mention")

Happy with the change? \
Create a new pull request and don't forget to locally unlink modified package:

<pre class="language-bash"><code class="lang-bash"><strong># @exile-watch/nucleus project
</strong># package path e.g. ~/nucleus/packages/encounter-data
$: npm unlink
</code></pre>

<pre class="language-bash"><code class="lang-bash"><strong># @exile-watch/crucible project
</strong># root path ~/crucible
$: npm i # this will "revert" linked module to the actual package 
</code></pre>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.exile.watch/projects/nucleus/contributing-scripts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
