This repository is a local-first GitHub issue and PR crawler for maintainers.
Current priorities:
- reliable local sync from GitHub
- OpenAI-backed summarization and embeddings
- exact local vector similarity and clustering
- a future local web UI, but not yet
- package manager:
pnpm - language/runtime: Node.js + TypeScript
- workspace layout:
packages/api-corepackages/api-contractapps/cliapps/webplaceholder only
- database: SQLite
- GitHub API: Octokit
- OpenAI API: official
openaiNode SDK - vector search: exact cosine similarity in-process
- CLI is the main runtime host in V1.
- The local HTTP API is hosted in-process by the CLI.
syncis open-only.syncis metadata-only by default.sync --include-commentsis opt-in deeper hydration.- filtered crawls like
--limitand--sincedo not reconcile stale open items --sinceaccepts ISO timestamps and relative durations like15m,2h,7d, and1mo
- product/design: docs/DESIGN.md
- implementation status and next phases: docs/PLAN.md
- operator overview: README.md
- maintainer workflow and release notes: CONTRIBUTING.md
Use the repo-local project-manager skill for GitHub issue and project-board work in this repository.
- Repo/project config:
.agents/project-manager.config.json - Project board: https://github.com/orgs/pwrdrvr/projects/9
- Canonical local tracker:
.local/work-items.yaml(derived; refresh withpnpm project:sync) - Canonical local issue drafts:
.local/issue-drafts/ - Do not create parallel scratch trackers or alternate temp directories for issue workups.
- CLI entrypoint: apps/cli/src/main.ts
- core service orchestration: packages/api-core/src/service.ts
- local HTTP API: packages/api-core/src/api/server.ts
- shared schemas/contracts: packages/api-contract/src/contracts.ts
- GitHub client: packages/api-core/src/github/client.ts
- OpenAI provider: packages/api-core/src/openai/provider.ts
- SQLite migration/schema: packages/api-core/src/db/migrate.ts
- Keep changes aligned with the current plan unless the user explicitly changes direction.
- Prefer small, logically isolated changes.
- If you make a logical change, commit it before starting the next logical change.
- Do not leave multiple unrelated or semi-related logical changes uncommitted in the working tree.
- Use conventional commit messages so changes are easy to revert later.
Examples:
feat: add neighbors endpointfix: respect GitHub rate-limit reset timedocs: update getting started sync examplesrefactor: split comment hydration from default synctest: cover filtered sync reconciliation rulesdocs: rewrite README for installed CLI users
Run the smallest relevant verification before committing.
Common commands:
pnpm typecheckpnpm test- targeted CLI smoke tests via:
pnpm --filter ghcrawl cli doctorpnpm --filter ghcrawl cli sync openclaw/openclaw --limit 1
If a change affects OpenAI-backed paths, avoid unnecessary live spend unless the user wants a real run.
When you create or update a PR, follow through on GitHub Actions with gh:
- monitor the PR checks after pushing
- inspect failed job logs directly with
ghinstead of asking the user to paste errors back - keep fixing and pushing until the PR checks pass, unless the user explicitly wants to stop earlier
- Keep package boundaries intact:
apps/webmust not depend onapi-core- browser code must not access SQLite, GitHub, or OpenAI directly
- Prefer metadata-first sync unless there is a strong reason to hydrate comments.
- Do not add a heavyweight external search service as a default dependency path.
- Preserve operator-facing progress output for long-running commands.