diff --git a/.opencode/opencode.jsonc b/.opencode/opencode.jsonc index 5d2dec625c..c3f0b7070d 100644 --- a/.opencode/opencode.jsonc +++ b/.opencode/opencode.jsonc @@ -4,7 +4,6 @@ // "enterprise": { // "url": "https://enterprise.dev.opencode.ai", // }, - "instructions": ["STYLE_GUIDE.md"], "provider": { "opencode": { "options": {}, diff --git a/AGENTS.md b/AGENTS.md index 3138f6c5ec..6619861c2a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,4 +1,75 @@ -- To test opencode in `packages/opencode`, run `bun dev`. - To regenerate the JavaScript SDK, run `./packages/sdk/js/script/build.ts`. - ALWAYS USE PARALLEL TOOLS WHEN APPLICABLE. - The default branch in this repo is `dev`. + +## Style Guide + +- Keep things in one function unless composable or reusable +- Avoid unnecessary destructuring. Instead of `const { a, b } = obj`, use `obj.a` and `obj.b` to preserve context +- Avoid `try`/`catch` where possible +- Avoid using the `any` type +- Prefer single word variable names where possible +- Use Bun APIs when possible, like `Bun.file()` + +# Avoid let statements + +We don't like `let` statements, especially combined with if/else statements. +Prefer `const`. + +Good: + +```ts +const foo = condition ? 1 : 2 +``` + +Bad: + +```ts +let foo + +if (condition) foo = 1 +else foo = 2 +``` + +# Avoid else statements + +Prefer early returns or using an `iife` to avoid else statements. + +Good: + +```ts +function foo() { + if (condition) return 1 + return 2 +} +``` + +Bad: + +```ts +function foo() { + if (condition) return 1 + else return 2 +} +``` + +# Prefer single word naming + +Try your best to find a single word name for your variables, functions, etc. +Only use multiple words if you cannot. + +Good: + +```ts +const foo = 1 +const bar = 2 +const baz = 3 +``` + +Bad: + +```ts +const fooBar = 1 +const barBaz = 2 +const bazFoo = 3 +``` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a32504b22f..60b76a95e9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -148,7 +148,7 @@ This runs `bun run --cwd packages/desktop build` automatically via Tauri’s `be > [!NOTE] > If you make changes to the API or SDK (e.g. `packages/opencode/src/server/server.ts`), run `./script/generate.ts` to regenerate the SDK and related files. -Please try to follow the [style guide](./STYLE_GUIDE.md) +Please try to follow the [style guide](./AGENTS.md) ### Setting up a Debugger diff --git a/STYLE_GUIDE.md b/STYLE_GUIDE.md deleted file mode 100644 index 52d012fcb9..0000000000 --- a/STYLE_GUIDE.md +++ /dev/null @@ -1,71 +0,0 @@ -## Style Guide - -- Keep things in one function unless composable or reusable -- Avoid unnecessary destructuring. Instead of `const { a, b } = obj`, use `obj.a` and `obj.b` to preserve context -- Avoid `try`/`catch` where possible -- Avoid using the `any` type -- Prefer single word variable names where possible -- Use Bun APIs when possible, like `Bun.file()` - -# Avoid let statements - -We don't like `let` statements, especially combined with if/else statements. -Prefer `const`. - -Good: - -```ts -const foo = condition ? 1 : 2 -``` - -Bad: - -```ts -let foo - -if (condition) foo = 1 -else foo = 2 -``` - -# Avoid else statements - -Prefer early returns or using an `iife` to avoid else statements. - -Good: - -```ts -function foo() { - if (condition) return 1 - return 2 -} -``` - -Bad: - -```ts -function foo() { - if (condition) return 1 - else return 2 -} -``` - -# Prefer single word naming - -Try your best to find a single word name for your variables, functions, etc. -Only use multiple words if you cannot. - -Good: - -```ts -const foo = 1 -const bar = 2 -const baz = 3 -``` - -Bad: - -```ts -const fooBar = 1 -const barBaz = 2 -const bazFoo = 3 -```