> ## Documentation Index
> Fetch the complete documentation index at: https://docs.viscribe.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Contributing

> Set up the ViscribeAI repository and run the checks used for Python, TypeScript, and documentation changes.

## Repository layout

ViscribeAI is a dual-language SDK. Keep Python and TypeScript behavior aligned
unless a change is intentionally scoped to one package.

* `python/`: Python package, examples, and tests.
* `typescript/`: TypeScript package, examples, and tests.
* `docs/`: Mintlify documentation.
* `CONTRIBUTING.md`: repository contribution guide.
* `ROADMAP.md`: planned capabilities and longer-term direction.

## Local setup

Install repository tooling from the repo root.

```bash theme={null}
npm install
```

Install Python dependencies.

```bash theme={null}
cd python
uv sync
```

Install TypeScript dependencies.

```bash theme={null}
cd typescript
npm install
```

Create a root `.env` file only for local live examples.

```bash theme={null}
OPENAI_API_KEY=sk-your-provider-key
OPENAI_MODEL=gpt-5-mini
```

Do not commit `.env` files or provider credentials.

## Verification

Run the checks that match the files you changed.

```bash theme={null}
cd python
uv run python -m pytest
uv run ruff check .
```

```bash theme={null}
cd typescript
npm test
npm run typecheck
npm run build
npm pack --dry-run
```

Repository hygiene checks:

```bash theme={null}
npm run format:check
git diff --check
```

Use `npm run format` from the repo root to format Markdown, JSON, YAML, and
TypeScript files when needed.

## Pull requests

* Open normal pull requests against `develop`.
* Keep the change focused on one problem or feature.
* Use Conventional Commit wording for PR titles.
* Update docs and examples when public behavior changes.
* Add or update tests for user-facing behavior and non-trivial logic.
* Include the exact verification commands you ran.

## Security

Report security issues by email to `security@viscribe.ai`. Do not open public
issues for security-sensitive reports.
