{"owner":"apache","repo":"fesod","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":[".github/copilot-instructions.md"],"skills":{".github/copilot-instructions.md":"# Apache Fesod (Incubating) — Copilot Repository Instructions\n\n## Project Overview\n\nApache Fesod (Incubating) is a Java library for processing spreadsheets (XLS/XLSX/CSV) without OOM, derived from Alibaba EasyExcel. It uses Apache POI under the hood with streaming SAX-based reading. The project is an Apache incubator project and must follow ASF conventions.\n\n- **Language**: Java 8+ (source/target = 1.8; CI builds on JDK 8, 11, 17, 21, 25 — JDK 17+ is recommended for local development)\n- **Build**: Maven 3.6.3 via `./mvnw` wrapper (project docs require 3.9+, but wrapper currently pins 3.6.3; both work)\n- **CI matrix**: JDK 8, 11, 17, 21, 25\n\n## Build & Test Commands\n\n```bash\n# Build (skips tests by default)\n./mvnw clean install -DskipTests\n\n# Run tests (must explicitly enable)\n./mvnw clean package -Dmaven.test.skip=false -pl fesod-common,fesod-shaded,fesod-sheet,fesod-examples/fesod-sheet-examples\n\n# Format check / auto-format\n./mvnw spotless:check\n./mvnw spotless:apply\n\n# Run tests by tag\n./mvnw test -Dtest.groups=unit          # fast unit tests only\n./mvnw test -Dtest.excludedGroups=fuzz  # exclude slow fuzz tests\n\n# Full install with javadoc (CI validation)\n./mvnw install -B -V\n./mvnw javadoc:javadoc\n```\n\n## Code Style & Conventions\n\n- **Formatter**: Palantir Java Format (enforced by Spotless, no checkstyle)\n- **Imports**: Static imports first, then regular imports; no unused imports (enforced by Spotless `importOrder` with `\\#|` separator)\n- **Indent**: 4 spaces\n- **License header**: ASF Apache 2.0 header required on all `.java`, `.xml`, `.yml`, `.toml` files. Header template at `tools/spotless/license-header.txt`; enforced by the Hawkeye workflow (`.github/workflows/license-check.yml`), not Spotless\n- **Lombok**: Allowed; config in `lombok.config` (`toString.callSuper = CALL`, `equalsAndHashCode.callSuper = CALL`)\n- **Commits**: English, format `type: description` (types: `fix`, `feat`, `refactor`, `test`, `docs`, `chore`, `style`, `dependency`)\n\n## Module Structure\n\n```\n(root)                 # Root POM (artifactId: fesod-parent), dependency & plugin management\n├── fesod-common/      # Zero-dependency utilities (org.apache.fesod.common.util)\n├── fesod-shaded/      # Relocated Spring ASM/cglib (org.apache.fesod.shaded)\n├── fesod-bom/         # BOM for downstream consumers\n├── fesod-sheet/       # Core library: read/write XLS/XLSX/CSV via POI\n│   ├── src/main/java/org/apache/fesod/sheet/\n│   │   ├── FesodSheet.java    # Main entry: FesodSheet.read() / FesodSheet.write()\n│   │   ├── analysis/          # Read pipeline (v03=XLS BIFF, v07=XLSX SAX, csv)\n│   │   ├── write/             # Write pipeline (builder, executor, handler chains)\n│   │   ├── metadata/          # Data models, builders, csv/ property/\n│   │   ├── converters/        # Type conversion framework (by Java type)\n│   │   └── util/              # DateUtils, NumberUtils, WorkBookUtil, etc.\n│   └── src/test/java/org/apache/fesod/sheet/\n│       └── testkit/           # Test infrastructure (NOT a separate module)\n│           ├── Tags.java      # @Tag constants: unit, round-trip, read, write, format, fuzz\n│           ├── base/          # AbstractExcelTest (round-trip base)\n│           ├── assertions/    # ExcelAssertions fluent API\n│           └── builders/      # TestDataBuilder\n└── fesod-examples/    # Usage examples\n```\n\n## Testing Conventions\n\n- **JUnit 5** with `PER_CLASS` lifecycle and `ReplaceUnderscores` display name generator (configured globally in `fesod-sheet/src/test/resources/junit-platform.properties`, not via per-class annotations)\n- **Tags** (use `@Tag(Tags.XXX)`):\n  - `unit` — pure logic, no file I/O\n  - `round-trip` — write-then-read via `AbstractExcelTest`\n  - `read` / `write` — single-direction tests\n  - `format` — CSV/charset/date format tests\n  - `fuzz` — Jazzer property-based (slow, excluded in PR CI)\n- **Real-file tests**: Prefer `AbstractExcelTest.createTempFile()` + `ExcelAssertions` for integration tests\n- **Test data**: Use `TestDataBuilder.simpleData(n)` or model classes in `testkit/models/`\n\n## CI Checks (must pass before merge)\n\n1. `spotless:check` — format\n2. License header (hawkeye)\n3. Multi-JDK test matrix (8/11/17/21/25)\n4. `mvn install` + `mvn javadoc:javadoc`\n5. CodeQL security scan\n"},"files":{".github/copilot-instructions.md":"# Apache Fesod (Incubating) — Copilot Repository Instructions\n\n## Project Overview\n\nApache Fesod (Incubating) is a Java library for processing spreadsheets (XLS/XLSX/CSV) without OOM, derived from Alibaba EasyExcel. It uses Apache POI under the hood with streaming SAX-based reading. The project is an Apache incubator project and must follow ASF conventions.\n\n- **Language**: Java 8+ (source/target = 1.8; CI builds on JDK 8, 11, 17, 21, 25 — JDK 17+ is recommended for local development)\n- **Build**: Maven 3.6.3 via `./mvnw` wrapper (project docs require 3.9+, but wrapper currently pins 3.6.3; both work)\n- **CI matrix**: JDK 8, 11, 17, 21, 25\n\n## Build & Test Commands\n\n```bash\n# Build (skips tests by default)\n./mvnw clean install -DskipTests\n\n# Run tests (must explicitly enable)\n./mvnw clean package -Dmaven.test.skip=false -pl fesod-common,fesod-shaded,fesod-sheet,fesod-examples/fesod-sheet-examples\n\n# Format check / auto-format\n./mvnw spotless:check\n./mvnw spotless:apply\n\n# Run tests by tag\n./mvnw test -Dtest.groups=unit          # fast unit tests only\n./mvnw test -Dtest.excludedGroups=fuzz  # exclude slow fuzz tests\n\n# Full install with javadoc (CI validation)\n./mvnw install -B -V\n./mvnw javadoc:javadoc\n```\n\n## Code Style & Conventions\n\n- **Formatter**: Palantir Java Format (enforced by Spotless, no checkstyle)\n- **Imports**: Static imports first, then regular imports; no unused imports (enforced by Spotless `importOrder` with `\\#|` separator)\n- **Indent**: 4 spaces\n- **License header**: ASF Apache 2.0 header required on all `.java`, `.xml`, `.yml`, `.toml` files. Header template at `tools/spotless/license-header.txt`; enforced by the Hawkeye workflow (`.github/workflows/license-check.yml`), not Spotless\n- **Lombok**: Allowed; config in `lombok.config` (`toString.callSuper = CALL`, `equalsAndHashCode.callSuper = CALL`)\n- **Commits**: English, format `type: description` (types: `fix`, `feat`, `refactor`, `test`, `docs`, `chore`, `style`, `dependency`)\n\n## Module Structure\n\n```\n(root)                 # Root POM (artifactId: fesod-parent), dependency & plugin management\n├── fesod-common/      # Zero-dependency utilities (org.apache.fesod.common.util)\n├── fesod-shaded/      # Relocated Spring ASM/cglib (org.apache.fesod.shaded)\n├── fesod-bom/         # BOM for downstream consumers\n├── fesod-sheet/       # Core library: read/write XLS/XLSX/CSV via POI\n│   ├── src/main/java/org/apache/fesod/sheet/\n│   │   ├── FesodSheet.java    # Main entry: FesodSheet.read() / FesodSheet.write()\n│   │   ├── analysis/          # Read pipeline (v03=XLS BIFF, v07=XLSX SAX, csv)\n│   │   ├── write/             # Write pipeline (builder, executor, handler chains)\n│   │   ├── metadata/          # Data models, builders, csv/ property/\n│   │   ├── converters/        # Type conversion framework (by Java type)\n│   │   └── util/              # DateUtils, NumberUtils, WorkBookUtil, etc.\n│   └── src/test/java/org/apache/fesod/sheet/\n│       └── testkit/           # Test infrastructure (NOT a separate module)\n│           ├── Tags.java      # @Tag constants: unit, round-trip, read, write, format, fuzz\n│           ├── base/          # AbstractExcelTest (round-trip base)\n│           ├── assertions/    # ExcelAssertions fluent API\n│           └── builders/      # TestDataBuilder\n└── fesod-examples/    # Usage examples\n```\n\n## Testing Conventions\n\n- **JUnit 5** with `PER_CLASS` lifecycle and `ReplaceUnderscores` display name generator (configured globally in `fesod-sheet/src/test/resources/junit-platform.properties`, not via per-class annotations)\n- **Tags** (use `@Tag(Tags.XXX)`):\n  - `unit` — pure logic, no file I/O\n  - `round-trip` — write-then-read via `AbstractExcelTest`\n  - `read` / `write` — single-direction tests\n  - `format` — CSV/charset/date format tests\n  - `fuzz` — Jazzer property-based (slow, excluded in PR CI)\n- **Real-file tests**: Prefer `AbstractExcelTest.createTempFile()` + `ExcelAssertions` for integration tests\n- **Test data**: Use `TestDataBuilder.simpleData(n)` or model classes in `testkit/models/`\n\n## CI Checks (must pass before merge)\n\n1. `spotless:check` — format\n2. License header (hawkeye)\n3. Multi-JDK test matrix (8/11/17/21/25)\n4. `mvn install` + `mvn javadoc:javadoc`\n5. CodeQL security scan\n"},"items":[{"name":"copilot-instructions.md","path":".github/copilot-instructions.md","title":"copilot-instructions.md","content":"# Apache Fesod (Incubating) — Copilot Repository Instructions\n\n## Project Overview\n\nApache Fesod (Incubating) is a Java library for processing spreadsheets (XLS/XLSX/CSV) without OOM, derived from Alibaba EasyExcel. It uses Apache POI under the hood with streaming SAX-based reading. The project is an Apache incubator project and must follow ASF conventions.\n\n- **Language**: Java 8+ (source/target = 1.8; CI builds on JDK 8, 11, 17, 21, 25 — JDK 17+ is recommended for local development)\n- **Build**: Maven 3.6.3 via `./mvnw` wrapper (project docs require 3.9+, but wrapper currently pins 3.6.3; both work)\n- **CI matrix**: JDK 8, 11, 17, 21, 25\n\n## Build & Test Commands\n\n```bash\n# Build (skips tests by default)\n./mvnw clean install -DskipTests\n\n# Run tests (must explicitly enable)\n./mvnw clean package -Dmaven.test.skip=false -pl fesod-common,fesod-shaded,fesod-sheet,fesod-examples/fesod-sheet-examples\n\n# Format check / auto-format\n./mvnw spotless:check\n./mvnw spotless:apply\n\n# Run tests by tag\n./mvnw test -Dtest.groups=unit          # fast unit tests only\n./mvnw test -Dtest.excludedGroups=fuzz  # exclude slow fuzz tests\n\n# Full install with javadoc (CI validation)\n./mvnw install -B -V\n./mvnw javadoc:javadoc\n```\n\n## Code Style & Conventions\n\n- **Formatter**: Palantir Java Format (enforced by Spotless, no checkstyle)\n- **Imports**: Static imports first, then regular imports; no unused imports (enforced by Spotless `importOrder` with `\\#|` separator)\n- **Indent**: 4 spaces\n- **License header**: ASF Apache 2.0 header required on all `.java`, `.xml`, `.yml`, `.toml` files. Header template at `tools/spotless/license-header.txt`; enforced by the Hawkeye workflow (`.github/workflows/license-check.yml`), not Spotless\n- **Lombok**: Allowed; config in `lombok.config` (`toString.callSuper = CALL`, `equalsAndHashCode.callSuper = CALL`)\n- **Commits**: English, format `type: description` (types: `fix`, `feat`, `refactor`, `test`, `docs`, `chore`, `style`, `dependency`)\n\n## Module Structure\n\n```\n(root)                 # Root POM (artifactId: fesod-parent), dependency & plugin management\n├── fesod-common/      # Zero-dependency utilities (org.apache.fesod.common.util)\n├── fesod-shaded/      # Relocated Spring ASM/cglib (org.apache.fesod.shaded)\n├── fesod-bom/         # BOM for downstream consumers\n├── fesod-sheet/       # Core library: read/write XLS/XLSX/CSV via POI\n│   ├── src/main/java/org/apache/fesod/sheet/\n│   │   ├── FesodSheet.java    # Main entry: FesodSheet.read() / FesodSheet.write()\n│   │   ├── analysis/          # Read pipeline (v03=XLS BIFF, v07=XLSX SAX, csv)\n│   │   ├── write/             # Write pipeline (builder, executor, handler chains)\n│   │   ├── metadata/          # Data models, builders, csv/ property/\n│   │   ├── converters/        # Type conversion framework (by Java type)\n│   │   └── util/              # DateUtils, NumberUtils, WorkBookUtil, etc.\n│   └── src/test/java/org/apache/fesod/sheet/\n│       └── testkit/           # Test infrastructure (NOT a separate module)\n│           ├── Tags.java      # @Tag constants: unit, round-trip, read, write, format, fuzz\n│           ├── base/          # AbstractExcelTest (round-trip base)\n│           ├── assertions/    # ExcelAssertions fluent API\n│           └── builders/      # TestDataBuilder\n└── fesod-examples/    # Usage examples\n```\n\n## Testing Conventions\n\n- **JUnit 5** with `PER_CLASS` lifecycle and `ReplaceUnderscores` display name generator (configured globally in `fesod-sheet/src/test/resources/junit-platform.properties`, not via per-class annotations)\n- **Tags** (use `@Tag(Tags.XXX)`):\n  - `unit` — pure logic, no file I/O\n  - `round-trip` — write-then-read via `AbstractExcelTest`\n  - `read` / `write` — single-direction tests\n  - `format` — CSV/charset/date format tests\n  - `fuzz` — Jazzer property-based (slow, excluded in PR CI)\n- **Real-file tests**: Prefer `AbstractExcelTest.createTempFile()` + `ExcelAssertions` for integration tests\n- **Test data**: Use `TestDataBuilder.simpleData(n)` or model classes in `testkit/models/`\n\n## CI Checks (must pass before merge)\n\n1. `spotless:check` — format\n2. License header (hawkeye)\n3. Multi-JDK test matrix (8/11/17/21/25)\n4. `mvn install` + `mvn javadoc:javadoc`\n5. CodeQL security scan\n","category":".github","tokens":1065}]}