Claude
Skills
Sign in
Back

code.format

Included with Lifetime
$97 forever

# code.format

General

What this skill does

# code.format

Format code using Prettier, supporting multiple languages and file types. This skill can format individual files or entire directories, check formatting without making changes, and respect custom Prettier configurations.

## Overview

**Purpose:** Automatically format code using Prettier to maintain consistent code style across your project.

**Command:** `/code/format`

**Version:** 0.1.0

## Features

- Format individual files or entire directories
- Support for 15+ file types (JavaScript, TypeScript, CSS, HTML, JSON, YAML, Markdown, and more)
- Auto-detect Prettier configuration files (.prettierrc, prettier.config.js, etc.)
- Check-only mode to validate formatting without modifying files
- Custom file pattern filtering
- Detailed formatting reports
- Automatic discovery of local and global Prettier installations

## Supported File Types

- **JavaScript**: .js, .jsx, .mjs, .cjs
- **TypeScript**: .ts, .tsx
- **CSS/Styles**: .css, .scss, .less
- **HTML**: .html, .htm
- **JSON**: .json
- **YAML**: .yaml, .yml
- **Markdown**: .md, .mdx
- **GraphQL**: .graphql, .gql
- **Vue**: .vue

## Prerequisites

Prettier must be installed either globally or locally in your project:

```bash
# Global installation
npm install -g prettier

# Or local installation (recommended)
npm install --save-dev prettier
```

## Usage

### Basic Usage

Format a single file:

```bash
python3 skills/code.format/code_format.py --path src/index.js
```

Format an entire directory:

```bash
python3 skills/code.format/code_format.py --path src/
```

### Advanced Usage

**Check formatting without modifying files:**

```bash
python3 skills/code.format/code_format.py --path src/ --check
```

**Format only specific file types:**

```bash
python3 skills/code.format/code_format.py --path src/ --patterns "**/*.ts,**/*.tsx"
```

**Use custom Prettier configuration:**

```bash
python3 skills/code.format/code_format.py --path src/ --config-path .prettierrc.custom
```

**Dry run (check without writing):**

```bash
python3 skills/code.format/code_format.py --path src/ --no-write
```

**Output as YAML:**

```bash
python3 skills/code.format/code_format.py --path src/ --output-format yaml
```

## CLI Arguments

| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| `--path` | Yes | - | File or directory path to format |
| `--config-path` | No | Auto-detect | Path to custom Prettier configuration file |
| `--check` | No | false | Only check formatting without modifying files |
| `--patterns` | No | All supported | Comma-separated glob patterns (e.g., "**/*.js,**/*.ts") |
| `--no-write` | No | false | Don't write changes (dry run mode) |
| `--output-format` | No | json | Output format: json or yaml |

## Configuration

The skill will automatically search for Prettier configuration files in this order:

1. Custom config specified via `--config-path`
2. `.prettierrc` in the target directory or parent directories
3. `.prettierrc.json`, `.prettierrc.yml`, `.prettierrc.yaml`
4. `.prettierrc.js`, `.prettierrc.cjs`
5. `prettier.config.js`, `prettier.config.cjs`
6. Prettier defaults if no config found

## Output Format

The skill returns a JSON object with detailed formatting results:

```json
{
  "ok": true,
  "status": "success",
  "message": "Formatted 5 files. 3 already formatted.",
  "formatted_count": 5,
  "already_formatted_count": 3,
  "needs_formatting_count": 0,
  "checked_count": 8,
  "error_count": 0,
  "files_formatted": [
    "src/components/Header.tsx",
    "src/utils/helpers.js"
  ],
  "files_already_formatted": [
    "src/index.ts",
    "src/App.tsx",
    "src/config.json"
  ],
  "files_need_formatting": [],
  "files_with_errors": []
}
```

### Response Fields

- **ok**: Boolean indicating overall success
- **status**: Status string ("success" or "failed")
- **message**: Human-readable summary
- **formatted_count**: Number of files that were formatted
- **already_formatted_count**: Number of files that were already properly formatted
- **needs_formatting_count**: Number of files that need formatting (check mode only)
- **checked_count**: Total number of files processed
- **error_count**: Number of files that encountered errors
- **files_formatted**: List of files that were formatted
- **files_already_formatted**: List of files that were already formatted
- **files_need_formatting**: List of files needing formatting (check mode)
- **files_with_errors**: List of files with errors and error messages

## Error Handling

The skill gracefully handles various error scenarios:

- **Prettier not installed**: Clear error message with installation instructions
- **Invalid path**: Validation error if path doesn't exist
- **Syntax errors**: Reports files with syntax errors without stopping
- **Permission errors**: Reports files that couldn't be read/written
- **Timeouts**: 30-second timeout per file with clear error reporting

## Integration with Agents

Include this skill in your agent's configuration:

```yaml
name: my.agent
version: 1.0.0
skills_available:
  - code.format
```

Then invoke it programmatically:

```python
from skills.code_format.code_format import CodeFormat

formatter = CodeFormat()
result = formatter.execute(
    path="src/",
    check_only=True,
    file_patterns="**/*.{ts,tsx}"
)

if result["ok"]:
    print(f"Checked {result['checked_count']} files")
    print(f"{result['needs_formatting_count']} files need formatting")
```

## Examples

### Example 1: Format a React Project

```bash
python3 skills/code.format/code_format.py \
  --path src/ \
  --patterns "**/*.{js,jsx,ts,tsx,css,json}"
```

### Example 2: Pre-commit Check

```bash
python3 skills/code.format/code_format.py \
  --path src/ \
  --check \
  --output-format json

# Exit code 0 if all files formatted, 1 otherwise
```

### Example 3: Format Only Changed Files

```bash
# Get changed files from git
CHANGED_FILES=$(git diff --name-only --diff-filter=ACMR | grep -E '\.(js|ts|jsx|tsx)$' | tr '\n' ',')

# Format only those files
python3 skills/code.format/code_format.py \
  --path . \
  --patterns "$CHANGED_FILES"
```

## Testing

Run the test suite:

```bash
pytest skills/code.format/test_code_format.py -v
```

Run specific tests:

```bash
pytest skills/code.format/test_code_format.py::TestCodeFormat::test_single_file -v
```

## Permissions

This skill requires the following permissions:

- **filesystem:read** - To read files and configurations
- **filesystem:write** - To write formatted files
- **process:execute** - To run the Prettier command

## Artifact Metadata

**Produces:**
- `formatting-report` (application/json) - Detailed formatting operation results

## Troubleshooting

**Issue**: "Prettier is not installed"
- **Solution**: Install Prettier globally (`npm install -g prettier`) or locally in your project

**Issue**: No files found to format
- **Solution**: Check your file patterns and ensure files exist in the target path

**Issue**: Configuration file not found
- **Solution**: Ensure your config file exists and the path is correct, or let it auto-detect

**Issue**: Timeout errors
- **Solution**: Very large files may timeout (30s limit). Format them individually or increase timeout in code

## Created By

This skill was generated by **meta.skill**, the skill creator meta-agent, and enhanced with full Prettier integration.

---

*Part of the Betty Framework*
Files: 5
Size: 36.9 KB
Complexity: 36/100
Category: General

Related in General