Cline rules
.clinerules/cline-overview.mdCline rules
Quality
54/100
Scores the file, not the repository.Length
3,251 words
37 headings · 10 code blocksRepository
25
— · pushed 13 days agoLast changed
3 days ago
First indexed 3 days ago.1# Cline Extension Architecture & Development Guide23## Project Overview45Cline is a VSCode extension that provides AI assistance through a combination of a core extension backend and a React-based webview frontend. The extension is built with TypeScript and follows a modular architecture pattern.67## Architecture Overview89```mermaid10graph TB11 subgraph VSCodeExtensionHost[VSCode Extension Host]12 subgraph CoreExtension[Core Extension]13 ExtensionEntry[Extension Entry<br/>src/extension.ts]14 WebviewProvider[WebviewProvider<br/>src/core/webview/index.ts]15 Controller[Controller<br/>src/core/controller/index.ts]16 Task[Task<br/>src/core/task/index.ts]17 GlobalState[VSCode Global State]18 SecretsStorage[VSCode Secrets Storage]19 McpHub[McpHub<br/>src/services/mcp/McpHub.ts]20 end2122 subgraph WebviewUI[Webview UI]23 WebviewApp[React App<br/>webview-ui/src/App.tsx]24 ExtStateContext[ExtensionStateContext<br/>webview-ui/src/context/ExtensionStateContext.tsx]25 ReactComponents[React Components]26 end2728 subgraph Storage29 TaskStorage[Task Storage<br/>Per-Task Files & History]30 CheckpointSystem[Git-based Checkpoints]31 end3233 subgraph apiProviders[API Providers]34 AnthropicAPI[Anthropic]35 OpenRouterAPI[OpenRouter]36 BedrockAPI[AWS Bedrock]37 OtherAPIs[Other Providers]38 end3940 subgraph MCPServers[MCP Servers]41 ExternalMcpServers[External MCP Servers]42 end43 end4445 %% Core Extension Data Flow46 ExtensionEntry --> WebviewProvider47 WebviewProvider --> Controller48 Controller --> Task49 Controller --> McpHub50 Task --> GlobalState51 Task --> SecretsStorage52 Task --> TaskStorage53 Task --> CheckpointSystem54 Task --> |API Requests| apiProviders55 McpHub --> |Connects to| ExternalMcpServers56 Task --> |Uses| McpHub5758 %% Webview Data Flow59 WebviewApp --> ExtStateContext60 ExtStateContext --> ReactComponents6162 %% Bidirectional Communication63 WebviewProvider <-->|postMessage| ExtStateContext6465 style GlobalState fill:#f9f,stroke:#333,stroke-width:2px66 style SecretsStorage fill:#f9f,stroke:#333,stroke-width:2px67 style ExtStateContext fill:#bbf,stroke:#333,stroke-width:2px68 style WebviewProvider fill:#bfb,stroke:#333,stroke-width:2px69 style McpHub fill:#bfb,stroke:#333,stroke-width:2px70 style apiProviders fill:#fdb,stroke:#333,stroke-width:2px71```7273## Definitions7475- **Core Extension**: Anything inside the src folder, organized into modular components76- **Core Extension State**: Managed by the Controller class in src/core/controller/index.ts, which serves as the single source of truth for the extension's state. It manages multiple types of persistent storage (global state, workspace state, and secrets), handles state distribution to both the core extension and webview components, and coordinates state across multiple extension instances. This includes managing API configurations, task history, settings, and MCP configurations.77- **Webview**: Anything inside the webview-ui. All the react or view's seen by the user and user interaction components78- **Webview State**: Managed by ExtensionStateContext in webview-ui/src/context/ExtensionStateContext.tsx, which provides React components with access to the extension's state through a context provider pattern. It maintains local state for UI components, handles real-time updates through message events, manages partial message updates, and provides methods for state modifications. The context includes extension version, messages, task history, theme, API configurations, MCP servers, marketplace catalog, and workspace file paths. It synchronizes with the core extension through VSCode's message passing system and provides type-safe access to state through a custom hook (useExtensionState).7980### Core Extension Architecture8182The core extension follows a clear hierarchical structure:83841. **WebviewProvider** (src/core/webview/index.ts): Manages the webview lifecycle and communication852. **Controller** (src/core/controller/index.ts): Handles webview messages and task management863. **Task** (src/core/task/index.ts): Executes API requests and tool operations8788This architecture provides clear separation of concerns:89- WebviewProvider focuses on VSCode webview integration90- Controller manages state and coordinates tasks91- Task handles the execution of AI requests and tool operations9293### WebviewProvider Implementation9495The WebviewProvider class in `src/core/webview/index.ts` is responsible for:9697- Managing multiple active instances through a static set (`activeInstances`)98- Handling webview lifecycle events (creation, visibility changes, disposal)99- Implementing HTML content generation with proper CSP headers100- Supporting Hot Module Replacement (HMR) for development101- Setting up message listeners between the webview and extension102103The WebviewProvider maintains a reference to the Controller and delegates message handling to it. It also handles the creation of both sidebar and tab panel webviews, allowing Cline to be used in different contexts within VSCode.104105### Core Extension State106107The `Controller` class manages multiple types of persistent storage:108109- **Global State:** Stored across all VSCode instances. Used for settings and data that should persist globally.110- **Workspace State:** Specific to the current workspace. Used for task-specific data and settings.111- **Secrets:** Secure storage for sensitive information like API keys.112113The `Controller` handles the distribution of state to both the core extension and webview components. It also coordinates state across multiple extension instances, ensuring consistency.114115State synchronization between instances is handled through:116- File-based storage for task history and conversation data117- VSCode's global state API for settings and configuration118- Secrets storage for sensitive information119- Event listeners for file changes and configuration updates120121The Controller implements methods for:122- Saving and loading task state123- Managing API configurations124- Handling user authentication125- Coordinating MCP server connections126- Managing task history and checkpoints127128### Webview State129130The `ExtensionStateContext` in `webview-ui/src/context/ExtensionStateContext.tsx` provides React components with access to the extension's state. It uses a context provider pattern and maintains local state for UI components. The context includes:131132- Extension version133- Messages134- Task history135- Theme136- API configurations137- MCP servers138- Marketplace catalog139- Workspace file paths140141It synchronizes with the core extension through VSCode's message passing system and provides type-safe access to the state via a custom hook (`useExtensionState`).142143The ExtensionStateContext handles:144- Real-time updates through message events145- Partial message updates for streaming content146- State modifications through setter methods147- Type-safe access to state through a custom hook148149## API Provider System150151Cline supports multiple AI providers through a modular API provider system. Each provider is implemented as a separate module in the `src/api/providers/` directory and follows a common interface.152153### API Provider Architecture154155The API system consists of:1561571. **API Handlers**: Provider-specific implementations in `src/api/providers/`1582. **API Transformers**: Stream transformation utilities in `src/api/transform/`1593. **API Configuration**: User settings for API keys and endpoints1604. **API Factory**: Builder function to create the appropriate handler161162Key providers include:163- **Anthropic**: Direct integration with Claude models164- **OpenRouter**: Meta-provider supporting multiple model providers165- **AWS Bedrock**: Integration with Amazon's AI services166- **Gemini**: Google's AI models167- **Cerebras**: High-performance inference with Llama, Qwen, and DeepSeek models168- **Ollama**: Local model hosting169- **LM Studio**: Local model hosting170- **VSCode LM**: VSCode's built-in language models171172### API Configuration Management173174API configurations are stored securely:175- API keys are stored in VSCode's secrets storage176- Model selections and non-sensitive settings are stored in global state177- The Controller manages switching between providers and updating configurations178179The system supports:180- Secure storage of API keys181- Model selection and configuration182- Automatic retry and error handling183- Token usage tracking and cost calculation184- Context window management185186### Plan/Act Mode API Configuration187188Cline supports separate model configurations for Plan and Act modes:189- Different models can be used for planning vs. execution190- The system preserves model selections when switching modes191- The Controller handles the transition between modes and updates the API configuration accordingly192193## Task Execution System194195The Task class is responsible for executing AI requests and tool operations. Each task runs in its own instance of the Task class, ensuring isolation and proper state management.196197### Task Execution Loop198199The core task execution loop follows this pattern:200201```typescript202class Task {203 async initiateTaskLoop(userContent: UserContent, isNewTask: boolean) {204 while (!this.abort) {205 // 1. Make API request and stream response206 const stream = this.attemptApiRequest()207208 // 2. Parse and present content blocks209 for await (const chunk of stream) {210 switch (chunk.type) {211 case "text":212 // Parse into content blocks213 this.assistantMessageContent = parseAssistantMessageV2(chunk.text)214 // Present blocks to user215 await this.presentAssistantMessage()216 break217 }218 }219220 // 3. Wait for tool execution to complete221 await pWaitFor(() => this.userMessageContentReady)222223 // 4. Continue loop with tool result224 const recDidEndLoop = await this.recursivelyMakeClineRequests(225 this.userMessageContent226 )227 }228 }229}230```231232### Message Streaming System233234The streaming system handles real-time updates and partial content:235236```typescript237class Task {238 async presentAssistantMessage() {239 // Handle streaming locks to prevent race conditions240 if (this.presentAssistantMessageLocked) {241 this.presentAssistantMessageHasPendingUpdates = true242 return243 }244 this.presentAssistantMessageLocked = true245246 // Present current content block247 const block = this.assistantMessageContent[this.currentStreamingContentIndex]248249 // Handle different types of content250 switch (block.type) {251 case "text":252 await this.say("text", content, undefined, block.partial)253 break254 case "tool_use":255 // Handle tool execution256 break257 }258259 // Move to next block if complete260 if (!block.partial) {261 this.currentStreamingContentIndex++262 }263 }264}265```266267### Tool Execution Flow268269Tools follow a strict execution pattern:270271```typescript272class Task {273 async executeToolWithApproval(block: ToolBlock) {274 // 1. Check auto-approval settings275 if (this.shouldAutoApproveTool(block.name)) {276 await this.say("tool", message)277 this.consecutiveAutoApprovedRequestsCount++278 } else {279 // 2. Request user approval280 const didApprove = await askApproval("tool", message)281 if (!didApprove) {282 this.didRejectTool = true283 return284 }285 }286287 // 3. Execute tool288 const result = await this.executeTool(block)289290 // 4. Save checkpoint291 await this.saveCheckpoint()292293 // 5. Return result to API294 return result295 }296}297```298299### Error Handling & Recovery300301The system includes robust error handling:302303```typescript304class Task {305 async handleError(action: string, error: Error) {306 // 1. Check if task was abandoned307 if (this.abandoned) return308309 // 2. Format error message310 const errorString = `Error ${action}: ${error.message}`311312 // 3. Present error to user313 await this.say("error", errorString)314315 // 4. Add error to tool results316 pushToolResult(formatResponse.toolError(errorString))317318 // 5. Cleanup resources319 await this.diffViewProvider.revertChanges()320 await this.browserSession.closeBrowser()321 }322}323```324325### API Request & Token Management326327The Task class handles API requests with built-in retry, streaming, and token management:328329```typescript330class Task {331 async *attemptApiRequest(previousApiReqIndex: number): ApiStream {332 // 1. Wait for MCP servers to connect333 await pWaitFor(() => this.controllerRef.deref()?.mcpHub?.isConnecting !== true)334335 // 2. Manage context window336 const previousRequest = this.clineMessages[previousApiReqIndex]337 if (previousRequest?.text) {338 const { tokensIn, tokensOut } = JSON.parse(previousRequest.text || "{}")339 const totalTokens = (tokensIn || 0) + (tokensOut || 0)340341 // Truncate conversation if approaching context limit342 if (totalTokens >= maxAllowedSize) {343 this.conversationHistoryDeletedRange = this.contextManager.getNextTruncationRange(344 this.apiConversationHistory,345 this.conversationHistoryDeletedRange,346 totalTokens / 2 > maxAllowedSize ? "quarter" : "half"347 )348 }349 }350351 // 3. Handle streaming with automatic retry352 try {353 this.isWaitingForFirstChunk = true354 const firstChunk = await iterator.next()355 yield firstChunk.value356 this.isWaitingForFirstChunk = false357358 // Stream remaining chunks359 yield* iterator360 } catch (error) {361 // 4. Error handling with retry362 if (isOpenRouter && !this.didAutomaticallyRetryFailedApiRequest) {363 await setTimeoutPromise(1000)364 this.didAutomaticallyRetryFailedApiRequest = true365 yield* this.attemptApiRequest(previousApiReqIndex)366 return367 }368369 // 5. Ask user to retry if automatic retry failed370 const { response } = await this.ask(371 "api_req_failed",372 this.formatErrorWithStatusCode(error)373 )374 if (response === "yesButtonClicked") {375 await this.say("api_req_retried")376 yield* this.attemptApiRequest(previousApiReqIndex)377 return378 }379 }380 }381}382```383384Key features:3853861. **Context Window Management**387 - Tracks token usage across requests388 - Automatically truncates conversation when needed389 - Preserves important context while freeing space390 - Handles different model context sizes3913922. **Streaming Architecture**393 - Real-time chunk processing394 - Partial content handling395 - Race condition prevention396 - Error recovery during streaming3973983. **Error Handling**399 - Automatic retry for transient failures400 - User-prompted retry for persistent issues401 - Detailed error reporting402 - State cleanup on failure4034044. **Token Tracking**405 - Per-request token counting406 - Cumulative usage tracking407 - Cost calculation408 - Cache hit monitoring409410### Context Management System411412The Context Management System handles conversation history truncation to prevent context window overflow errors. Implemented in the `ContextManager` class, it ensures long-running conversations remain within model context limits while preserving critical context.413414Key features:4154161. **Model-Aware Sizing**: Dynamically adjusts based on different model context windows (64K for DeepSeek, 128K for most models, 200K for Claude).4174182. **Proactive Truncation**: Monitors token usage and preemptively truncates conversations when approaching limits, maintaining buffers of 27K-40K tokens depending on the model.4194203. **Intelligent Preservation**: Always preserves the original task message and maintains the user-assistant conversation structure when truncating.4214224. **Adaptive Strategies**: Uses different truncation strategies based on context pressure - removing half of the conversation for moderate pressure or three-quarters for severe pressure.4234245. **Error Recovery**: Includes specialized detection for context window errors from different providers with automatic retry and more aggressive truncation when needed.425426### Task State & Resumption427428The Task class provides robust task state management and resumption capabilities:429430```typescript431class Task {432 async resumeTaskFromHistory() {433 // 1. Load saved state434 this.clineMessages = await getSavedClineMessages(this.getContext(), this.taskId)435 this.apiConversationHistory = await getSavedApiConversationHistory(this.getContext(), this.taskId)436437 // 2. Handle interrupted tool executions438 const lastMessage = this.apiConversationHistory[this.apiConversationHistory.length - 1]439 if (lastMessage.role === "assistant") {440 const toolUseBlocks = content.filter(block => block.type === "tool_use")441 if (toolUseBlocks.length > 0) {442 // Add interrupted tool responses443 const toolResponses = toolUseBlocks.map(block => ({444 type: "tool_result",445 tool_use_id: block.id,446 content: "Task was interrupted before this tool call could be completed."447 }))448 modifiedOldUserContent = [...toolResponses]449 }450 }451452 // 3. Notify about interruption453 const agoText = this.getTimeAgoText(lastMessage?.ts)454 newUserContent.push({455 type: "text",456 text: `[TASK RESUMPTION] This task was interrupted ${agoText}. It may or may not be complete, so please reassess the task context.`457 })458459 // 4. Resume task execution460 await this.initiateTaskLoop(newUserContent, false)461 }462463 private async saveTaskState() {464 // Save conversation history465 await saveApiConversationHistory(this.getContext(), this.taskId, this.apiConversationHistory)466 await saveClineMessages(this.getContext(), this.taskId, this.clineMessages)467468 // Create checkpoint469 const commitHash = await this.checkpointTracker?.commit()470471 // Update task history472 await this.controllerRef.deref()?.updateTaskHistory({473 id: this.taskId,474 ts: lastMessage.ts,475 task: taskMessage.text,476 // ... other metadata477 })478 }479}480```481482Key aspects of task state management:4834841. **Task Persistence**485 - Each task has a unique ID and dedicated storage directory486 - Conversation history is saved after each message487 - File changes are tracked through Git-based checkpoints488 - Terminal output and browser state are preserved4894902. **State Recovery**491 - Tasks can be resumed from any point492 - Interrupted tool executions are handled gracefully493 - File changes can be restored from checkpoints494 - Context is preserved across VSCode sessions4954963. **Workspace Synchronization**497 - File changes are tracked through Git498 - Checkpoints are created after tool executions499 - State can be restored to any checkpoint500 - Changes can be compared between checkpoints5015024. **Error Recovery**503 - Failed API requests can be retried504 - Interrupted tool executions are marked505 - Resources are cleaned up properly506 - User is notified of state changes507508## Plan/Act Mode System509510Cline implements a dual-mode system that separates planning from execution:511512### Mode Architecture513514The Plan/Act mode system consists of:5155161. **Mode State**: Stored in `chatSettings.mode` in the Controller's state5172. **Mode Switching**: Handled by `togglePlanActModeWithChatSettings` in the Controller5183. **Mode-specific Models**: Optional configuration to use different models for each mode5194. **Mode-specific Prompting**: Different system prompts for planning vs. execution520521### Mode Switching Process522523When switching between modes:5245251. The current model configuration is saved to mode-specific state5262. The previous mode's model configuration is restored5273. The Task instance is updated with the new mode5284. The webview is notified of the mode change5295. Telemetry events are captured for analytics530531### Plan Mode532533Plan mode is designed for:534- Information gathering and context building535- Asking clarifying questions536- Creating detailed execution plans537- Discussing approaches with the user538539In Plan mode, the AI uses the `plan_mode_respond` tool to engage in conversational planning without executing actions.540541### Act Mode542543Act mode is designed for:544- Executing the planned actions545- Using tools to modify files, run commands, etc.546- Implementing the solution547- Providing results and completion feedback548549In Act mode, the AI has access to all tools except `plan_mode_respond` and focuses on implementation rather than discussion.550551## Data Flow & State Management552553### Core Extension Role554555The Controller acts as the single source of truth for all persistent state. It:556- Manages VSCode global state and secrets storage557- Coordinates state updates between components558- Ensures state consistency across webview reloads559- Handles task-specific state persistence560- Manages checkpoint creation and restoration561562### Terminal Management563564The Task class manages terminal instances and command execution:565566```typescript567class Task {568 async executeCommandTool(command: string): Promise<[boolean, ToolResponse]> {569 // 1. Get or create terminal570 const terminalInfo = await this.terminalManager.getOrCreateTerminal(cwd)571 terminalInfo.terminal.show()572573 // 2. Execute command with output streaming574 const process = this.terminalManager.runCommand(terminalInfo, command)575576 // 3. Handle real-time output577 let result = ""578 process.on("line", (line) => {579 result += line + "\n"580 if (!didContinue) {581 sendCommandOutput(line)582 } else {583 this.say("command_output", line)584 }585 })586587 // 4. Wait for completion or user feedback588 let completed = false589 process.once("completed", () => {590 completed = true591 })592593 await process594595 // 5. Return result596 if (completed) {597 return [false, `Command executed.\n${result}`]598 } else {599 return [600 false,601 `Command is still running in the user's terminal.\n${result}\n\nYou will be updated on the terminal status and new output in the future.`602 ]603 }604 }605}606```607608Key features:6091. **Terminal Instance Management**610 - Multiple terminal support611 - Terminal state tracking (busy/inactive)612 - Process cooldown monitoring613 - Output history per terminal6146152. **Command Execution**616 - Real-time output streaming617 - User feedback handling618 - Process state monitoring619 - Error recovery620621### Browser Session Management622623The Task class handles browser automation through Puppeteer:624625```typescript626class Task {627 async executeBrowserAction(action: BrowserAction): Promise<BrowserActionResult> {628 switch (action) {629 case "launch":630 // 1. Launch browser with fixed resolution631 await this.browserSession.launchBrowser()632 return await this.browserSession.navigateToUrl(url)633634 case "click":635 // 2. Handle click actions with coordinates636 return await this.browserSession.click(coordinate)637638 case "type":639 // 3. Handle keyboard input640 return await this.browserSession.type(text)641642 case "close":643 // 4. Clean up resources644 return await this.browserSession.closeBrowser()645 }646 }647}648```649650Key aspects:6511. **Browser Control**652 - Fixed 900x600 resolution window653 - Single instance per task lifecycle654 - Automatic cleanup on task completion655 - Console log capture6566572. **Interaction Handling**658 - Coordinate-based clicking659 - Keyboard input simulation660 - Screenshot capture661 - Error recovery662663## MCP (Model Context Protocol) Integration664665### MCP Architecture666667The MCP system consists of:6686691. **McpHub Class**: Central manager in `src/services/mcp/McpHub.ts`6702. **MCP Connections**: Manages connections to external MCP servers6713. **MCP Settings**: Configuration stored in a JSON file6724. **MCP Marketplace**: Online catalog of available MCP servers6735. **MCP Tools & Resources**: Capabilities exposed by connected servers674675The McpHub class:676- Manages the lifecycle of MCP server connections677- Handles server configuration through a settings file678- Provides methods for calling tools and accessing resources679- Implements auto-approval settings for MCP tools680- Monitors server health and handles reconnection681682### MCP Server Types683684Cline supports two types of MCP server connections:685- **Stdio**: Command-line based servers that communicate via standard I/O686- **SSE**: HTTP-based servers that communicate via Server-Sent Events687688### MCP Server Management689690The McpHub class provides methods for:691- Discovering and connecting to MCP servers692- Monitoring server health and status693- Restarting servers when needed694- Managing server configurations695- Setting timeouts and auto-approval rules696697### MCP Tool Integration698699MCP tools are integrated into the Task execution system:700- Tools are discovered and registered at connection time701- The Task class can call MCP tools through the McpHub702- Tool results are streamed back to the AI703- Auto-approval settings can be configured per tool704705### MCP Marketplace706707The MCP Marketplace provides:708- A catalog of available MCP servers709- One-click installation710- README previews711- Server status monitoring712713The Controller class manages MCP servers through the McpHub service:714715```typescript716class Controller {717 mcpHub?: McpHub718719 constructor(context: vscode.ExtensionContext, webviewProvider: WebviewProvider) {720 this.mcpHub = new McpHub(this)721 }722723 async downloadMcp(mcpId: string) {724 // Fetch server details from marketplace725 const response = await axios.post<McpDownloadResponse>(726 "https://api.cline.bot/v1/mcp/download",727 { mcpId },728 {729 headers: { "Content-Type": "application/json" },730 timeout: 10000,731 }732 )733734 // Create task with context from README735 const task = `Set up the MCP server from ${mcpDetails.githubUrl}...`736737 // Initialize task and show chat view738 await this.initClineWithTask(task)739 }740}741```742743## Conclusion744745This guide provides a comprehensive overview of the Cline extension architecture, with special focus on state management, data persistence, and code organization. Following these patterns ensures robust feature implementation with proper state handling across the extension's components.746747Remember:748- Always persist important state in the extension749- The core extension follows a WebviewProvider -> Controller -> Task flow750- Use proper typing for all state and messages751- Handle errors and edge cases752- Test state persistence across webview reloads753- Follow the established patterns for consistency754- Place new code in appropriate directories755- Maintain clear separation of concerns756- Install dependencies in correct package.json757758## Contributing759760Contributions to the Cline extension are welcome! Please follow these guidelines:761762When adding new tools or API providers, follow the existing patterns in the `src/integrations/` and `src/api/providers/` directories, respectively. Ensure that your code is well-documented and includes appropriate error handling.763764The `.clineignore` file allows users to specify files and directories that Cline should not access. When implementing new features, respect the `.clineignore` rules and ensure that your code does not attempt to read or modify ignored files.765
Also in adsumnetworks/Adsum-IoT-Coder
Diff this repo’s formatsOne repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| adsumnetworks/Adsum-IoT-Coder.clinerules/general.md · 25 | Cline rules | buildtestapiagent-behaviour | 69/100 | 3 days ago | |
| adsumnetworks/Adsum-IoT-Coder.clinerules/network.md · 25 | Cline rules | styletesting-strategydependencies | 54/100 | 3 days ago | |
| adsumnetworks/Adsum-IoT-Coder.clinerules/project-memory.md · 25 | Cline rules | setupteststyleui+2 | 71/100 | 3 days ago | |
| adsumnetworks/Adsum-IoT-Coder.clinerules/protobuf-development.md · 25 | Cline rules | buildstylearchapi+1 | 74/100 | 3 days ago |
Similar configs
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| bashdeban/fastmind.clinerules/.project-consistency-keeper2.md · 5 | Cline rules | setupbuildtestlint-format+11 | 100/100 | 3 days ago | |
| JCodesMore/ai-website-cloner-template.clinerules · 31k | Cline rules | buildlint-formatstylearch+3 | 97/100 | 2 days ago | |
| BryaanF/LiantPortfolio.clinerules/project-guidelines.md · 0 | Cline rules | buildstylearchgit+2 | 96/100 | 3 days ago | |
| u9401066/zotero-keeper.clinerules/50-pubmed-project.md · 6 | Cline rules | testlint-formatstylearch+1 | 94/100 | 3 days ago | |
| u9401066/zotero-keepervscode-extension/resources/repo-assets/pubmed-search-mcp/.clinerules/50-pubmed-project.md · 6 | Cline rules | testlint-formatstylearch+1 | 94/100 | 3 days ago | |
| VaillerTeeter/HoshimiNest.clinerules/project-identity.md · 1 | Cline rules | setuparchtypesdo-not | 93/100 | yesterday | |
| HerringtonDarkholme/megarepo.clinerules/02-development.md · 17 | Cline rules | setupbuildteststyle+3 | 92/100 | 3 days ago | |
| blendsdk/codeops-mcp.clinerules/project.md · 0 | Cline rules | buildteststylearch+7 | 91/100 | 3 days ago |
