diff --git a/.gemini/skills/code-reviewer/SKILL.md b/.gemini/skills/code-reviewer/SKILL.md deleted file mode 100644 index 37b7c2e1c3..0000000000 --- a/.gemini/skills/code-reviewer/SKILL.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -name: code-reviewer -description: - Use this skill to review code. It supports both local changes (staged or working tree) - and remote Pull Requests (by ID or URL). It focuses on correctness, maintainability, - and adherence to project standards. ---- - -# Code Reviewer - -This skill guides the agent in conducting professional and thorough code reviews for both local development and remote Pull Requests. - -## Workflow - -### 1. Determine Review Target -* **Remote PR**: If the user provides a PR number or URL (e.g., "Review PR #123"), target that remote PR. -* **Local Changes**: If no specific PR is mentioned, or if the user asks to "review my changes", target the current local file system states (staged and unstaged changes). - -### 2. Preparation - -#### For Remote PRs: -1. **Checkout**: Use the GitHub CLI to checkout the PR. - ```bash - gh pr checkout - ``` -2. **Preflight**: Execute the project's standard verification suite to catch automated failures early. - ```bash - npm run preflight - ``` -3. **Context**: Read the PR description and any existing comments to understand the goal and history. - -#### For Local Changes: -1. **Identify Changes**: - * Check status: `git status` - * Read diffs: `git diff` (working tree) and/or `git diff --staged` (staged). -2. **Preflight (Optional)**: If the changes are substantial, ask the user if they want to run `npm run preflight` before reviewing. - -### 3. In-Depth Analysis -Analyze the code changes based on the following pillars: - -* **Correctness**: Does the code achieve its stated purpose without bugs or logical errors? -* **Maintainability**: Is the code clean, well-structured, and easy to understand and modify in the future? Consider factors like code clarity, modularity, and adherence to established design patterns. -* **Readability**: Is the code well-commented (where necessary) and consistently formatted according to our project's coding style guidelines? -* **Efficiency**: Are there any obvious performance bottlenecks or resource inefficiencies introduced by the changes? -* **Security**: Are there any potential security vulnerabilities or insecure coding practices? -* **Edge Cases and Error Handling**: Does the code appropriately handle edge cases and potential errors? -* **Testability**: Is the new or modified code adequately covered by tests (even if preflight checks pass)? Suggest additional test cases that would improve coverage or robustness. - -### 4. Provide Feedback - -#### Structure -* **Summary**: A high-level overview of the review. -* **Findings**: - * **Critical**: Bugs, security issues, or breaking changes. - * **Improvements**: Suggestions for better code quality or performance. - * **Nitpicks**: Formatting or minor style issues (optional). -* **Conclusion**: Clear recommendation (Approved / Request Changes). - -#### Tone -* Be constructive, professional, and friendly. -* Explain *why* a change is requested. -* For approvals, acknowledge the specific value of the contribution. - -### 5. Cleanup (Remote PRs only) -* After the review, ask the user if they want to switch back to the default branch (e.g., `main` or `master`). diff --git a/packages/cli/src/ui/components/MainContent.test.tsx b/packages/cli/src/ui/components/MainContent.test.tsx index e5bd5882fd..8ecf1792a4 100644 --- a/packages/cli/src/ui/components/MainContent.test.tsx +++ b/packages/cli/src/ui/components/MainContent.test.tsx @@ -529,7 +529,7 @@ describe('MainContent', () => { ], state: 'running', }, - } as unknown as IndividualToolCallDisplay; + } as Partial as IndividualToolCallDisplay; const uiState = { ...defaultMockUiState, @@ -620,7 +620,7 @@ describe('MainContent', () => { approvalMode: ApprovalMode.PLAN, status: CoreToolCallStatus.Success, resultDisplay: 'Hidden content', - } as unknown as IndividualToolCallDisplay, + } as Partial as IndividualToolCallDisplay, ]; const confirmingTool = { @@ -696,7 +696,7 @@ describe('MainContent', () => { approvalMode: ApprovalMode.PLAN, status: CoreToolCallStatus.Success, resultDisplay: 'hidden', - } as unknown as IndividualToolCallDisplay, + } as Partial as IndividualToolCallDisplay, ], borderBottom: true, }, diff --git a/packages/cli/src/ui/components/messages/ToolGroupMessageRegression.test.tsx b/packages/cli/src/ui/components/messages/ToolGroupMessageRegression.test.tsx index fefbd95e66..8b5e640d7f 100644 --- a/packages/cli/src/ui/components/messages/ToolGroupMessageRegression.test.tsx +++ b/packages/cli/src/ui/components/messages/ToolGroupMessageRegression.test.tsx @@ -16,6 +16,7 @@ import { } from '@google/gemini-cli-core'; import os from 'node:os'; import { createMockSettings } from '../../../test-utils/settings.js'; +import type { IndividualToolCallDisplay } from '../../types.js'; describe('ToolGroupMessage Regression Tests', () => { const baseMockConfig = makeFakeConfig({ @@ -26,16 +27,17 @@ describe('ToolGroupMessage Regression Tests', () => { ui: { errorVerbosity: 'full' }, }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const createToolCall = (overrides: any = {}) => ({ - callId: 'tool-123', - name: 'test-tool', - status: CoreToolCallStatus.Success, - ...overrides, - }); + const createToolCall = ( + overrides: Partial = {}, + ): IndividualToolCallDisplay => + ({ + callId: 'tool-123', + name: 'test-tool', + status: CoreToolCallStatus.Success, + ...overrides, + }) as IndividualToolCallDisplay; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const createItem = (tools: any[]) => ({ + const createItem = (tools: IndividualToolCallDisplay[]) => ({ id: 1, type: 'tool_group' as const, tools, @@ -72,11 +74,11 @@ describe('ToolGroupMessage Regression Tests', () => { kind: Kind.Agent, status: CoreToolCallStatus.Executing, resultDisplay: { + isSubagentProgress: true, agentName: 'TestAgent', state: 'running', recentActivity: [], - // eslint-disable-next-line @typescript-eslint/no-explicit-any - } as any, + }, }), ]; const item = createItem(toolCalls); @@ -108,11 +110,11 @@ describe('ToolGroupMessage Regression Tests', () => { kind: Kind.Agent, status: CoreToolCallStatus.Success, resultDisplay: { + isSubagentProgress: true, agentName: 'TestAgent', state: 'completed', recentActivity: [], - // eslint-disable-next-line @typescript-eslint/no-explicit-any - } as any, + }, }), ]; const item = createItem(toolCalls); @@ -138,8 +140,7 @@ describe('ToolGroupMessage Regression Tests', () => { }); it('Bridges: still renders a bridge if it has a top border', async () => { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const toolCalls: any[] = []; + const toolCalls: IndividualToolCallDisplay[] = []; const item = createItem(toolCalls); const { lastFrame, unmount } = await renderWithProviders(