projectrules.ai

JavaScript Code Style Guide

JavaScriptCoding StyleBest PracticesError HandlingAsync Programming

Description

JavaScript coding style guidelines for CarbonCommander

Globs

*.Djs*.Djsx
---
description: JavaScript coding style guidelines for CarbonCommander
globs: *.Djs,*.Djsx
---

# JavaScript Code Style Guide

## Class Structure

- Use ES6 class syntax for defining classes
- Place static properties and methods at the top of the class
- Group related methods together
- Use descriptive method and property names in camelCase
- Use PascalCase for class names

Example:
```javascript
class MyTool {
    static _CarbonBarPageLoadFilter = (window) => {
        return true;
    }

    static ToolFunction = {
        function: {
            name: 'tool_function',
            description: 'Description of the tool',
            parameters: {
                properties: {
                    // parameters here
                }
            }
        },
        execute: async function(scope, args) {
            // implementation
        }
    };
}
```

## Tool Development

- Each tool should have a `function` definition and an `execute` method
- Tool functions should be static class properties
- Include comprehensive parameter descriptions
- Use async/await for asynchronous operations
- Handle errors gracefully and return structured responses

## Error Handling

- Always return objects with `success` and either `result` or `error` properties
- Use try-catch blocks for error handling
- Log errors appropriately using `ccLogger`

Example:
```javascript
try {
    // operation here
    return { success: true, result: data };
} catch (error) {
    return { success: false, error: error.message };
}
```

## Logging

- Use the `ccLogger` for consistent logging
- Use appropriate log levels:
  - `debug` for detailed information
  - `info` for general information
  - `warn` for warnings
  - `error` for errors
  - `group`/`groupEnd` for grouped logs

## Comments and Documentation

- Include JSDoc-style comments for classes and methods
- Document parameters using descriptive names and types
- Include examples for complex functionality
- Use inline comments sparingly and only when necessary

## Promises and Async

- Use async/await instead of raw promises when possible
- Chain promises appropriately when needed
- Always handle promise rejections
- Use Promise.all for parallel operations

## Event Handling

- Use descriptive event names
- Clean up event listeners when they're no longer needed
- Use event delegation when appropriate
- Prevent event bubbling when handling events if necessary
JavaScript Code Style Guide