From 72a05ccaa527268b436a00b7d39405f58e243529 Mon Sep 17 00:00:00 2001 From: Kiryl Chetyrbak Date: Thu, 26 Feb 2026 10:02:35 -0500 Subject: [PATCH 01/33] Update TypeScript peer dependency to version 5.9.3 and modify tsconfig.json to include and exclude specific directories. --- bun.lock | 2 +- package.json | 2 +- tsconfig.json | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/bun.lock b/bun.lock index c0b7ee6..2742df7 100644 --- a/bun.lock +++ b/bun.lock @@ -15,7 +15,7 @@ "ultracite": "7.2.3", }, "peerDependencies": { - "typescript": "^5", + "typescript": "^5.9.3", }, }, }, diff --git a/package.json b/package.json index 23f3791..95d335d 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,6 @@ "ultracite": "7.2.3" }, "peerDependencies": { - "typescript": "^5" + "typescript": "^5.9.3" } } diff --git a/tsconfig.json b/tsconfig.json index 146fe4e..d9b84d4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -25,5 +25,7 @@ "noUnusedLocals": false, "noUnusedParameters": false, "noPropertyAccessFromIndexSignature": false - } + }, + "include": ["index.ts", "src/**/*.ts", "test/**/*.ts"], + "exclude": ["node_modules"] } From dd5ebef7b6e2b46ae320243e84341ca108739ea5 Mon Sep 17 00:00:00 2001 From: Kiryl Chetyrbak Date: Fri, 27 Feb 2026 13:24:52 -0500 Subject: [PATCH 02/33] Add VSCode settings for code formatting and editor configurations --- .vscode/settings.json | 58 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..0fdebbd --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,58 @@ +{ + "editor.defaultFormatter": "esbenp.prettier-vscode", + "typescript.tsdk": "node_modules/typescript/lib", + "editor.formatOnSave": true, + "editor.formatOnPaste": true, + "emmet.showExpandedAbbreviation": "never", + "[javascript]": { + "editor.defaultFormatter": "oxc.oxc-vscode" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "oxc.oxc-vscode" + }, + "[typescript]": { + "editor.defaultFormatter": "oxc.oxc-vscode" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "oxc.oxc-vscode" + }, + "[json]": { + "editor.defaultFormatter": "oxc.oxc-vscode" + }, + "[jsonc]": { + "editor.defaultFormatter": "oxc.oxc-vscode" + }, + "[yaml]": { + "editor.defaultFormatter": "oxc.oxc-vscode" + }, + "[html]": { + "editor.defaultFormatter": "oxc.oxc-vscode" + }, + "[vue]": { + "editor.defaultFormatter": "oxc.oxc-vscode" + }, + "[vue-html]": { + "editor.defaultFormatter": "oxc.oxc-vscode" + }, + "[handlebars]": { + "editor.defaultFormatter": "oxc.oxc-vscode" + }, + "[css]": { + "editor.defaultFormatter": "oxc.oxc-vscode" + }, + "[scss]": { + "editor.defaultFormatter": "oxc.oxc-vscode" + }, + "[less]": { + "editor.defaultFormatter": "oxc.oxc-vscode" + }, + "[graphql]": { + "editor.defaultFormatter": "oxc.oxc-vscode" + }, + "[markdown]": { + "editor.defaultFormatter": "oxc.oxc-vscode" + }, + "editor.codeActionsOnSave": { + "source.fixAll.oxc": "explicit" + } +} \ No newline at end of file From 8ce70912f8067de203db97e7d81e00b0ca1cc391 Mon Sep 17 00:00:00 2001 From: Kiryl Chetyrbak Date: Sun, 1 Mar 2026 23:42:44 -0500 Subject: [PATCH 03/33] Update Oxlint configuration, remove outdated files, and enhance CLI structure. Increased max statements limit in .oxlintrc.json, added consistent type definitions rule, and updated package.json to reflect new CLI entry point. Removed unused files and adjusted TypeScript configuration for better project organization. --- .cursor/rules/ultracite.mdc | 123 ------ .oxlintrc.json | 5 +- .vscode/settings.json | 114 ++--- AGENTS.md | 126 ------ bishop.json | 6 + bun.lock | 38 +- index.ts | 9 - package.json | 10 +- src/adapters/cursor.ts | 211 --------- src/adapters/types.ts | 30 -- src/checks.ts | 273 ------------ src/cli.ts | 54 +-- src/cli/args.ts | 3 + src/comments.ts | 49 --- src/config.ts | 84 ++-- src/engine.ts | 687 ------------------------------ src/exec.ts | 48 --- src/git.ts | 87 ++-- src/github.ts | 402 ++++++++--------- src/index.ts | 102 ----- src/init.test.ts | 7 + src/init.ts | 17 + src/main.ts | 16 + src/output.ts | 51 --- src/prompt.ts | 58 --- src/resolve.test.ts | 8 + src/resolve.ts | 16 + test/cli.test.ts | 40 -- test/comments-and-prompts.test.ts | 111 ----- test/config.test.ts | 101 ----- test/cursor-adapter.test.ts | 192 --------- test/engine.test.ts | 298 ------------- test/git.test.ts | 32 -- test/local-e2e.test.ts | 208 --------- tsconfig.json | 2 +- 35 files changed, 401 insertions(+), 3217 deletions(-) delete mode 100644 .cursor/rules/ultracite.mdc create mode 100644 bishop.json delete mode 100755 index.ts delete mode 100644 src/adapters/cursor.ts delete mode 100644 src/adapters/types.ts delete mode 100644 src/checks.ts mode change 100644 => 100755 src/cli.ts create mode 100644 src/cli/args.ts delete mode 100644 src/comments.ts delete mode 100644 src/engine.ts delete mode 100644 src/exec.ts delete mode 100644 src/index.ts create mode 100644 src/init.test.ts create mode 100644 src/init.ts create mode 100644 src/main.ts delete mode 100644 src/output.ts delete mode 100644 src/prompt.ts create mode 100644 src/resolve.test.ts create mode 100644 src/resolve.ts delete mode 100644 test/cli.test.ts delete mode 100644 test/comments-and-prompts.test.ts delete mode 100644 test/config.test.ts delete mode 100644 test/cursor-adapter.test.ts delete mode 100644 test/engine.test.ts delete mode 100644 test/git.test.ts delete mode 100644 test/local-e2e.test.ts diff --git a/.cursor/rules/ultracite.mdc b/.cursor/rules/ultracite.mdc deleted file mode 100644 index be25fa6..0000000 --- a/.cursor/rules/ultracite.mdc +++ /dev/null @@ -1,123 +0,0 @@ -# Ultracite Code Standards - -This project uses **Ultracite**, a zero-config preset that enforces strict code quality standards through automated formatting and linting. - -## Quick Reference - -- **Format code**: `bun x ultracite fix` -- **Check for issues**: `bun x ultracite check` -- **Diagnose setup**: `bun x ultracite doctor` - -Oxlint + Oxfmt (the underlying engine) provides robust linting and formatting. Most issues are automatically fixable. - ---- - -## Core Principles - -Write code that is **accessible, performant, type-safe, and maintainable**. Focus on clarity and explicit intent over brevity. - -### Type Safety & Explicitness - -- Use explicit types for function parameters and return values when they enhance clarity -- Prefer `unknown` over `any` when the type is genuinely unknown -- Use const assertions (`as const`) for immutable values and literal types -- Leverage TypeScript's type narrowing instead of type assertions -- Use meaningful variable names instead of magic numbers - extract constants with descriptive names - -### Modern JavaScript/TypeScript - -- Use arrow functions for callbacks and short functions -- Prefer `for...of` loops over `.forEach()` and indexed `for` loops -- Use optional chaining (`?.`) and nullish coalescing (`??`) for safer property access -- Prefer template literals over string concatenation -- Use destructuring for object and array assignments -- Use `const` by default, `let` only when reassignment is needed, never `var` - -### Async & Promises - -- Always `await` promises in async functions - don't forget to use the return value -- Use `async/await` syntax instead of promise chains for better readability -- Handle errors appropriately in async code with try-catch blocks -- Don't use async functions as Promise executors - -### React & JSX - -- Use function components over class components -- Call hooks at the top level only, never conditionally -- Specify all dependencies in hook dependency arrays correctly -- Use the `key` prop for elements in iterables (prefer unique IDs over array indices) -- Nest children between opening and closing tags instead of passing as props -- Don't define components inside other components -- Use semantic HTML and ARIA attributes for accessibility: - - Provide meaningful alt text for images - - Use proper heading hierarchy - - Add labels for form inputs - - Include keyboard event handlers alongside mouse events - - Use semantic elements (`