Control Claude Code (ACP Server) via Lark/Feishu IM messages to complete coding tasks on remote servers.
The keywords "MUST", "SHOULD", "MAY" in these guidelines are interpreted according to RFC 2119.
- MUST strictly follow user requirements without exceeding scope.
- MUST NOT guess or assume information not present in context; confirm with user when uncertain.
- MUST make full use of all available tools.
- SHOULD prioritize MCP tools when available (e.g.,
mcp__filesystem__list_directoryoverls). - Command execution tools like
bashshould only be used when other tools cannot complete the task.
- SHOULD only write comments at critical points, explaining why rather than what
- SHOULD NOT write extensive comments
- SHOULD NOT edit linter/formatter config files; user confirmation required if modification is necessary.
- MUST NOT edit files outside the project (except temporary directories like
/tmp).
- Runtime MUST use
bun runto execute scripts defined inpackage.json:bun run check— Type checking (tsc --noEmit)bun run lint— Lint checking (oxlint)bun run lint:fix— Auto-fix linting issuesbun run fmt— Format code (oxfmt)bun run fmt:check— Check formattingCLAUDECODE=1 bun run test— Run unit tests (when applicable)
- SHOULD frequently check LSP, linter, and type checker results; trigger checks after each edit.
- SHOULD make every effort to fix all errors/warnings; MUST stop and ask user for help if unable to fix.
- MUST NOT bypass errors through:
- Inserting disable comments or modifying linter config
- Using type assertions like
as unknown asto bypass type checking - Arbitrarily downgrading/replacing/modifying third-party dependencies
- SHOULD retrieve latest documentation through tools (
man, context7 MCP, fetch tools, etc.); common knowledge excepted. - MUST NOT use raw HTTP requests like
curlto scrape web pages. - MUST NOT continue coding when unable to understand the usage of tools/libraries.
- This project uses Bun as the runtime environment, not Node.js.
- Prefer Bun-specific APIs when available (e.g.,
Bun.stripANSI()for ANSI code removal). - Use
buncommand instead ofnpmornodefor all operations.
- This project uses Drizzle ORM with Bun SQLite for database operations.
- Schema changes workflow:
- Modify schema files in
src/db/schema/ - Run
bun run db:generateto generate migration files - Restart program (migrations are automatically applied on startup)
- Modify schema files in
- MUST NOT directly modify database files or bypass the ORM layer.
- New configuration options MUST be added to both:
- Schema definition in
src/config/schema.ts - Example file in
config.example.yaml
- Schema definition in
- Configuration fields SHOULD have sensible defaults.
- Configuration documentation MUST be updated in both README files (English and Chinese).