--- name: wayfinder-triage description: >- Triage the Wayfinder repo in one pass — survey open PRs (CI status, review comments, mergeability) and open issues / feature requests, report what needs action, then drive small, clear fixes following the project's conventions. Use when asked to "do Wayfinder triage", "triage the repo", check repo health, or review what's open across PRs and issues. --- # Wayfinder triage A repeatable health-and-action pass over the `itsthelore/wayfinder-router` repo. Works the same from the CLI, web, or mobile because it relies only on the GitHub MCP tools (`mcp__github__*`) — there is no `gh` CLI in web/mobile sessions. Default posture: **report first, act conservatively.** Fix what is clearly small and unambiguous; ask before anything architectural; never merge unless the user has authorized it. ## 1. Survey - **Open PRs** — `mcp__github__list_pull_requests` (state `open`). For each, gather: - CI: `pull_request_read` method `get_check_runs` (note any non-success conclusion). - Reviews: `pull_request_read` method `get_review_comments` (unresolved threads). - Mergeability: `pull_request_read` method `get` (`mergeable_state`). - **Open issues** — `mcp__github__list_issues` (state `OPEN`); classify each as a feature request, bug, or question. ## 2. Report Give a concise status — one line per PR (CI ✅/❌, review state, mergeable?) and per issue (type + the ask). Lead with anything red or blocked. ## 3. Act (per item) - **Tractable, small CI failure** → reproduce locally, fix, push to the PR's branch. - **Ambiguous, architectural, or large** → ask the user first (use AskUserQuestion). - **Duplicate / no action needed** → skip silently. - **Green + mergeable PR** → report it as ready. Merge only if the user has said so. - To keep watching a PR (CI + reviews) instead of one-shot triage, use the PR activity subscription rather than polling. ## Project conventions (honor these when fixing or contributing) - **Branch, never push to `main`.** Open a PR from a feature branch. - **Run the full CI gate locally before pushing** (mirrors `.github/workflows/ci.yml`): - `ruff check .` - `mypy wayfinder_router` (install extras first so mypy sees optional deps: `pip install -e ".[dev,gateway,ui]"`) - `pytest -q` - confirm `rac` is **not** importable — the standalone invariant (WF-ADR-0001). - **Deterministic core invariant (WF-ADR-0001):** scoring/routing makes no model call, needs no key, and touches no network. Model calls live only in the invocation / gateway layer (WF-ADR-0004). Never move logic that breaks this. - **CHANGELOG (Keep a Changelog):** every user-visible change gets a bullet under `## Unreleased` in `CHANGELOG.md`, in user-impact voice, citing the relevant `WF-ADR-####` / `WF-DESIGN-####`. Create the `## Unreleased` section if absent. - **Commits:** conventional style (`feat(...)`, `fix(...)`, `docs(...)`). - **Merging:** squash with a clean, hand-written commit title + message. For stacked PRs, after the base merges, rebase the child onto the squashed base so its diff stays minimal. - **Versioning is CalVer `YYYY.M.MICRO`,** single-sourced at `__version__` in `wayfinder_router/__init__.py` (read dynamically by `pyproject.toml`). Cut a release by promoting `## Unreleased` to a dated `## vYYYY.M.MICRO — DATE` entry (with a short intro) and bumping `__version__` to match. Tagging/publishing is a human step. ## Notes - Providers: Wayfinder forwards to any OpenAI-compatible `/chat/completions` endpoint with a Bearer key — there is no per-provider code, so "does it support X?" is almost always "yes, point an arm's `base_url` at it." Auth schemes other than Bearer (e.g. Azure's `api-key` header) would need a code change. - Keys are read from the environment at request time and never written to disk; an optional `api_key_cmd` can fill one from a secret store in memory.