# Contributing Contributions are welcome: new tool integrations especially. 1. Fork the repository 2. Create a feature branch: `git checkout -b feat/my-tool` 3. Implement your tool 4. Open a pull request Please ensure your tool handles context cancellation, respects rate limits, and declares the correct input types. Document any required API key or external binary dependency. ## Development ### Prerequisites - [Go 1.25+](https://go.dev/dl/) - [Bun](https://bun.sh) - [Just](https://github.com/casey/just) Or you can use the Nix Shell by typing `nix develop` ### Run locally ```bash git clone https://github.com/anotherhadi/iknowyou.git cd iknowyou just dev ``` Open [http://localhost:4321](http://localhost:4321). The backend listens on `:8080` by default. Configure via environment variables: | Variable | Default | Description | | ------------ | ------------- | ---------------------------- | | `IKY_PORT` | `8080` | HTTP port | | `IKY_CONFIG` | `config.yaml` | Path to the YAML config file | ## Adding a Tool 1. Create `back/internal/tools/mytool/mytool.go` implementing `tools.ToolRunner` 2. Optionally implement `tools.Configurable` + `tools.ConfigDescriber` for config UI support 3. Optionally implement `tools.AvailabilityChecker` if the tool requires an external binary 4. Register in `back/cmd/server/main.go` and `back/cmd/gendocs/main.go` 5. Run `just docs` to update the docs