Gitdog is an AI-powered GitHub assistant for repository automation. It is built with React, TypeScript, Convex, Tailwind CSS, Lemon Squeezy, and GitHub App integration.
- The web app and Convex backend live at the repository root.
packages/cliis the publishedgitdognpm CLI (bun workspace). Itssrc/api-catalog.jsonis generated fromconvex/; runbun run check:apiwhen public Convex functions change, andbun run test:clifor CLI changes.
- Read
CLAUDE.mdfirst for repository rules. - Read
docs/convention.mdfor implementation conventions. - For workflow-style tasks, follow the relevant
.claude/commands/*.mdfile. - Do not mention internal agent files, skills, or private workflow names in user-facing GitHub issue, discussion, PR, or review comments.
- Use
bun, notnpm. - Run scripts with
bun run .... - Use
bunx convex ...for Convex CLI commands. - CI installs dependencies with
bun install --frozen-lockfile.
- Do not commit unless the user explicitly approves.
- Commit messages, PR titles, and PR descriptions must be in English.
- Use conventional commit style with lowercase subjects, for example
fix: update convex deploy workflow. - Never add Claude, Codex, or other agent co-author trailers.
- Preserve unrelated dirty worktree changes.
- Inspect untracked files before deleting them; discard only files that are clearly unnecessary.
- Use branch prefix
codex/unless the user requests another prefix.
- For TypeScript or Convex changes, run
bun run typecheckandbun run lint. - For broad shared behavior, also run
bun testwhen available. - For workflow-only changes, run Prettier on touched YAML and Markdown files.
- Keep generated Convex files only when intentionally updated.
- Do not create barrel export files in the
convex/root. - Organize functions in subdirectories with
query.ts,mutation.ts, andaction.ts. - Use the new Convex function syntax with validators.
- Authenticate with
getAuthUserId(ctx)from@convex-dev/auth/server. - Use dot-notation API references such as
api.repositories.query.list. - Use
.withIndex()instead of.filter()for database queries. - Avoid unbounded
.collect(); usepaginatedCollect()for large reads. - Production deploys use GitHub Actions secret
CONVEX_DEPLOY_KEYandbunx convex deploy --yes.
- Follow the existing sharp rectangular monochrome design system.
- Use
@preact/signals-reactfor global state and ReactuseStatefor local component state. - Put global signals in
src/utils/signals/. - Call
useSignals()in components that read signal values. - Use
LoadingIndicatorinstead of plain loading text. - User-facing text should start with capital letters.
- Use
@icons-pack/react-simple-iconsfor brand and technology icons.
- Do not expose secrets in logs, commits, PRs, or final messages.
- Prefer editing existing files over creating new files unless the task requires a new file.
- Keep comments concise and only add them when the code is not self-explanatory.
- Read existing implementation patterns before adding abstractions.