graffle (Agent Skills)

GitHub

Simple GraphQL Client for JavaScript. Minimal. Extensible. Type Safe. Runs everywhere.

CLAUDE.md

# Local Claude Rules for Graffle Project

## CRITICAL: Generated Files

**NEVER EDIT GENERATED FILES**

- Any file in `__tests__/fixtures/*/modules/` directories is GENERATED
- These files are created by generator scripts and should NEVER be manually edited
- If there are issues with generated files, fix the generator code, not the generated output
- Always regenerate fixtures using the appropriate pnpm scripts after fixing generators

Generated file patterns to NEVER edit:

- `src/extensions/DocumentBuilder/__tests__/fixtures/*/modules/*.ts`
- Any file that has been marked as generated or comes from a generator script

## Type Assertion Formatting

When using `Ts.Assert` in test files (`.test-d.ts`):

1. **Use alias at module top**: `const A = Ts.Assert`
2. **Single-line format** for short assertions:
   ```typescript
   A.exact.ofAs<string>().onAs<Type>()
   ```
3. **Multi-line format** when combined expected + actual types visually exceed ~50 characters:
   ```typescript
   A.sub.ofAs<LongExpectedType>()
     .onAs<LongActualType>()
   ```
4. **Indentation rule**: Align the `.onAs` dot with the `.ofAs` dot
   - Count characters in prefix (e.g., `A.sub.` = 5 chars)
   - Use that many spaces before `.onAs`
   - Examples:
     - `A.exact.` → 7 spaces before `.onAs`
     - `A.sub.` → 5 spaces before `.onAs`
     - `A.equiv.` → 7 spaces before `.onAs`
     - `A.awaited.exact.` → 15 spaces before `.onAs`