{"owner":"graffle-js","repo":"graffle","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["CLAUDE.md"],"skills":{"CLAUDE.md":"# Local Claude Rules for Graffle Project\n\n## CRITICAL: Generated Files\n\n**NEVER EDIT GENERATED FILES**\n\n- Any file in `__tests__/fixtures/*/modules/` directories is GENERATED\n- These files are created by generator scripts and should NEVER be manually edited\n- If there are issues with generated files, fix the generator code, not the generated output\n- Always regenerate fixtures using the appropriate pnpm scripts after fixing generators\n\nGenerated file patterns to NEVER edit:\n\n- `src/extensions/DocumentBuilder/__tests__/fixtures/*/modules/*.ts`\n- Any file that has been marked as generated or comes from a generator script\n\n## Type Assertion Formatting\n\nWhen using `Ts.Assert` in test files (`.test-d.ts`):\n\n1. **Use alias at module top**: `const A = Ts.Assert`\n2. **Single-line format** for short assertions:\n   ```typescript\n   A.exact.ofAs<string>().onAs<Type>()\n   ```\n3. **Multi-line format** when combined expected + actual types visually exceed ~50 characters:\n   ```typescript\n   A.sub.ofAs<LongExpectedType>()\n     .onAs<LongActualType>()\n   ```\n4. **Indentation rule**: Align the `.onAs` dot with the `.ofAs` dot\n   - Count characters in prefix (e.g., `A.sub.` = 5 chars)\n   - Use that many spaces before `.onAs`\n   - Examples:\n     - `A.exact.` → 7 spaces before `.onAs`\n     - `A.sub.` → 5 spaces before `.onAs`\n     - `A.equiv.` → 7 spaces before `.onAs`\n     - `A.awaited.exact.` → 15 spaces before `.onAs`\n"},"files":{"CLAUDE.md":"# Local Claude Rules for Graffle Project\n\n## CRITICAL: Generated Files\n\n**NEVER EDIT GENERATED FILES**\n\n- Any file in `__tests__/fixtures/*/modules/` directories is GENERATED\n- These files are created by generator scripts and should NEVER be manually edited\n- If there are issues with generated files, fix the generator code, not the generated output\n- Always regenerate fixtures using the appropriate pnpm scripts after fixing generators\n\nGenerated file patterns to NEVER edit:\n\n- `src/extensions/DocumentBuilder/__tests__/fixtures/*/modules/*.ts`\n- Any file that has been marked as generated or comes from a generator script\n\n## Type Assertion Formatting\n\nWhen using `Ts.Assert` in test files (`.test-d.ts`):\n\n1. **Use alias at module top**: `const A = Ts.Assert`\n2. **Single-line format** for short assertions:\n   ```typescript\n   A.exact.ofAs<string>().onAs<Type>()\n   ```\n3. **Multi-line format** when combined expected + actual types visually exceed ~50 characters:\n   ```typescript\n   A.sub.ofAs<LongExpectedType>()\n     .onAs<LongActualType>()\n   ```\n4. **Indentation rule**: Align the `.onAs` dot with the `.ofAs` dot\n   - Count characters in prefix (e.g., `A.sub.` = 5 chars)\n   - Use that many spaces before `.onAs`\n   - Examples:\n     - `A.exact.` → 7 spaces before `.onAs`\n     - `A.sub.` → 5 spaces before `.onAs`\n     - `A.equiv.` → 7 spaces before `.onAs`\n     - `A.awaited.exact.` → 15 spaces before `.onAs`\n"},"items":[{"name":"CLAUDE.md","path":"CLAUDE.md","title":"CLAUDE.md","content":"# Local Claude Rules for Graffle Project\n\n## CRITICAL: Generated Files\n\n**NEVER EDIT GENERATED FILES**\n\n- Any file in `__tests__/fixtures/*/modules/` directories is GENERATED\n- These files are created by generator scripts and should NEVER be manually edited\n- If there are issues with generated files, fix the generator code, not the generated output\n- Always regenerate fixtures using the appropriate pnpm scripts after fixing generators\n\nGenerated file patterns to NEVER edit:\n\n- `src/extensions/DocumentBuilder/__tests__/fixtures/*/modules/*.ts`\n- Any file that has been marked as generated or comes from a generator script\n\n## Type Assertion Formatting\n\nWhen using `Ts.Assert` in test files (`.test-d.ts`):\n\n1. **Use alias at module top**: `const A = Ts.Assert`\n2. **Single-line format** for short assertions:\n   ```typescript\n   A.exact.ofAs<string>().onAs<Type>()\n   ```\n3. **Multi-line format** when combined expected + actual types visually exceed ~50 characters:\n   ```typescript\n   A.sub.ofAs<LongExpectedType>()\n     .onAs<LongActualType>()\n   ```\n4. **Indentation rule**: Align the `.onAs` dot with the `.ofAs` dot\n   - Count characters in prefix (e.g., `A.sub.` = 5 chars)\n   - Use that many spaces before `.onAs`\n   - Examples:\n     - `A.exact.` → 7 spaces before `.onAs`\n     - `A.sub.` → 5 spaces before `.onAs`\n     - `A.equiv.` → 7 spaces before `.onAs`\n     - `A.awaited.exact.` → 15 spaces before `.onAs`\n","category":"root","tokens":357}]}