mirror of
https://github.com/Gitlawb/openclaude.git
synced 2026-08-24 02:34:15 -05:00
* docs: tighten PR review expectations in CONTRIBUTING and AGENTS guides - Add drift caveat to CodeRabbit findings: verify suggestions against PR intent before applying; decline out-of-scope with justification or ask a maintainer; never silently ignore findings - Add Keep Your Branch Current subsection (rebase duty, fix-churn warning) - Require full local CI-equivalent suite green before every push, with cross-platform exception - Add ignored/filler PR template submissions to close-without-review list - Expand follow-up guidance: multi-round review is normal, repeated fix requests signal root-cause investigation and better agent prompting - Mirror all of the above in AGENTS.md for coding agents * docs: address CodeRabbit findings on review-expectations guides - Make CONTRIBUTING.md Validation the single authoritative pre-push validation contract mirroring .github/workflows/pr-checks.yml exactly: --frozen-lockfile install, launcher compatibility checks, provider recommendation via npm as CI does, web job carve-out - Remove conflicting 'relevant subset' wording; cross-platform exception is the only carve-out from the full suite - AGENTS.md now defers to the CONTRIBUTING contract instead of defining a divergent core-checks list - Reword ambiguous 'submit the PR template ignored' bullet to 'submit a PR with the PR template ignored' * docs: align pre-push validation suite with CI semantics - Drop standalone 'bun run test:full'; bun run check already includes it - Document web workspace install (bun install --cwd web --frozen-lockfile) before web checks, matching the web CI job - Pass explicit --base/--head to security:pr-scan so local scans target the PR merge-base like CI does instead of script defaults * docs: use PR base commit ref for local security scan parity Replace git merge-base computation with origin/main and document the required invariant (fetch + keep branch rebased onto current origin/main) so the local scan matches CI's PR base.sha instead of diverging. * docs: use exact PR base for security scan * docs: make local validation contract portable * docs: scope local checks and baseline waivers * docs: harden contributor workflow guidance * docs: pin contributor safety contracts
111 lines
5.7 KiB
Markdown
111 lines
5.7 KiB
Markdown
# AGENTS.md - AI Agent Coding Guide
|
|
|
|
This guide is for AI coding agents working in the OpenClaude repository. Read it before changing code, and also follow [CONTRIBUTING.md](CONTRIBUTING.md) for contributor policy, PR expectations, review follow-up, and project scope.
|
|
|
|
## Project Snapshot
|
|
|
|
OpenClaude is a coding-agent CLI for cloud and local model providers. It supports OpenAI-compatible APIs, Anthropic, Gemini, DeepSeek, Ollama, MCP, local backends, slash commands, tools, agents, and a React/Ink terminal UI.
|
|
|
|
The installed CLI runs on Node.js `>=22.0.0`. Bun is used for source builds, scripts, dependency management, and tests.
|
|
|
|
## Work Style
|
|
|
|
- Keep changes focused on one problem.
|
|
- Prefer existing patterns in the file or nearby module.
|
|
- Avoid unrelated formatting, renames, dependency changes, or broad rewrites.
|
|
- Add or update tests when behavior changes.
|
|
- Update docs when setup, commands, provider behavior, or user-facing behavior changes.
|
|
- For new features, larger refactors, dependencies, or runtime changes, follow the issue-first guidance in [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
- Keep PR branches current with `main` using the synchronization and guarded-push workflow in [CONTRIBUTING.md § Keep Your Branch Current](CONTRIBUTING.md#keep-your-branch-current). Rebase whenever resuming work or pushing follow-up fixes, but never overwrite remote PR-head updates with an unguarded force-push.
|
|
- Run the authoritative local pre-push validation contract defined in [CONTRIBUTING.md § Validation](CONTRIBUTING.md#validation) before every push to a PR, not just the first one. CI adds clean-runner and supported-Node-matrix coverage that is not practical to reproduce in one local shell.
|
|
|
|
## Stack And Conventions
|
|
|
|
- TypeScript with strict mode and ESM imports.
|
|
- React + Ink for terminal UI.
|
|
- Bun lockfile and Bun scripts for development workflows.
|
|
- Node runtime for the built CLI.
|
|
|
|
Common libraries and patterns:
|
|
|
|
- `chalk` for terminal color.
|
|
- `commander` for CLI argument parsing.
|
|
- `execa` for child processes.
|
|
- Existing service, provider, settings, permission, and UI patterns over new abstractions.
|
|
|
|
## Repository Map
|
|
|
|
- `src/commands/` - slash and CLI command implementations.
|
|
- `src/components/` - React/Ink UI components.
|
|
- `src/services/` - API, MCP, OAuth, wiki, voice, and other service integrations.
|
|
- `src/tools/` - tool implementations.
|
|
- `src/utils/` - shared utilities.
|
|
- `src/integrations/` - provider and model integration metadata.
|
|
- `src/entrypoints/` - CLI, MCP, SDK, and generated public types.
|
|
- `src/tasks/` - local, remote, workflow, and monitor task handling.
|
|
- `docs/integrations/` - provider integration guidance.
|
|
- `web/` - documentation website.
|
|
|
|
## Validation
|
|
|
|
The authoritative local pre-push validation contract lives in [CONTRIBUTING.md § Validation](CONTRIBUTING.md#validation) and must be run before every push to a PR, including follow-up fixes during review. It covers the same command families as `.github/workflows/pr-checks.yml`; CI remains authoritative for clean-runner, supported-Node-matrix, and platform-specific coverage. The lists below are for narrowing checks while you iterate; they do not replace the pre-push contract.
|
|
|
|
Core checks:
|
|
|
|
```bash
|
|
bun install
|
|
bun run build
|
|
bun run smoke
|
|
bun run check
|
|
bun run typecheck
|
|
bun run typecheck:type-tests
|
|
```
|
|
|
|
Focused checks:
|
|
|
|
```bash
|
|
bun test ./path/to/test-file.test.ts
|
|
bun run test:provider
|
|
bun run test:provider-recommendation
|
|
```
|
|
|
|
Web checks, when changes can affect the site:
|
|
|
|
```bash
|
|
bun run web:typecheck
|
|
bun run web:build
|
|
```
|
|
|
|
Website release notes live on GitHub Releases; do not add a manually maintained release-notes data source to the static site.
|
|
|
|
Diagnostics and PR hygiene:
|
|
|
|
```bash
|
|
bun run doctor:runtime
|
|
```
|
|
|
|
For PR intent scanning, use the canonical upstream fetch and explicit-ref invocation in [CONTRIBUTING.md § Validation](CONTRIBUTING.md#validation); the scanner's default `origin/main` base is not portable to fork checkouts.
|
|
|
|
## Provider Changes
|
|
|
|
When modifying provider behavior:
|
|
|
|
1. Start with `docs/integrations/overview.md`.
|
|
2. Use the relevant how-to guide under `docs/integrations/how-to/`.
|
|
3. Check existing provider implementations before adding a new pattern.
|
|
4. Test the exact provider/model path you changed when possible.
|
|
5. Avoid breaking third-party providers while fixing first-party behavior.
|
|
|
|
## Things To Avoid
|
|
|
|
- Do not change the Node runtime or Bun development workflow without prior maintainer agreement.
|
|
- Do not add new Python code, Python provider paths, or Python dependencies without explicit maintainer approval.
|
|
- Do not introduce dependencies without clear project benefit.
|
|
- Do not skip tests for behavior changes.
|
|
- Do not silently change provider tags; maintainers control them during review.
|
|
- Do not ignore CodeRabbit or maintainer feedback; address it before requesting more review. Before applying an automated review suggestion, verify it does not pull the PR away from its stated scope or intent — decline out-of-scope suggestions with justification, or ask a maintainer when unsure. Never silently ignore findings.
|
|
- Do not push commits with failing, incomplete, or unrun local checks unless an exception in [CONTRIBUTING.md § Validation](CONTRIBUTING.md#validation) applies. Verify pre-existing failures against the current PR base and document the evidence in the PR; PR-owned failures must still be fixed.
|
|
- Do not submit a PR whose description still contains template placeholder text; fill in every section of the [PR template](.github/pull_request_template.md) for the actual change.
|
|
- Do not surface-patch recurring review findings; repeated fix requests usually indicate a core design issue — investigate and fix the root cause instead of the reported symptom.
|
|
- Do not add a manually maintained release-notes data source to the static site; link to GitHub Releases instead.
|