# Claude Notes

## What This Repo Is

A curated registry of apps and tools that integrate with [OpenRouter](https://openrouter.ai). Each app has a directory in `apps/` with metadata and a logo.

## Adding a New App

1. **Create directory**: `apps/{app-name}/`
2. **Create `app.yaml`** with this format:
   ```yaml
   name: "App Name"
   description: "One or two sentences about the app (max 300 chars)."
   url: "https://app-website.com"
   docs: "https://app-website.com/docs/openrouter"
   tags:
     - coding  # options: chat, coding, productivity, creative, research, other
   open_source: "https://github.com/org/repo"  # optional
   date_added: "YYYY-MM-DD"
   ```
3. **Add `logo.png`**: Square PNG image (128x128 or 256x256 recommended)

## Finding Logos

Try these sources in order:
- `/apple-touch-icon.png` on their website
- GitHub org avatar: `https://avatars.githubusercontent.com/u/{org-id}`
- VS Code Marketplace icon (for extensions)
- `/favicon.ico` (last resort, may need conversion)

## Validation

```bash
npm run validate   # Validates all app entries
```

**Do not run `npm run generate` or edit README.md** — the README is auto-generated by a GitHub Action after PRs are merged to `main`.

## Schema

Full schema definition: `schema/app.schema.json`

Required fields: `name`, `description`, `url`, `docs`, `tags`, `date_added`
Optional fields: `open_source`

## Useful Reference

- OpenRouter partners page for app info: https://openrouter.ai/partners
- Check existing entries in `apps/` for format examples

### Terminal Management

- **Always use background terminals** (`isBackground: true`) for every command so a terminal ID is returned
- **Always kill the terminal** after the command completes, whether it succeeds or fails — never leave terminals open
- Do not reuse foreground shell sessions — stale sessions block future terminal operations in Codespaces
- In GitHub Codespaces, agent-spawned terminals may be hidden — they still work. Do not assume a terminal is broken if you cannot see it
- If a terminal appears unresponsive, kill it and create a new one rather than retrying in the same terminal
