More concise and relevant copilot instructions
authorFabian Fichter <ianfab@users.noreply.github.com>
Fri, 15 Aug 2025 17:44:58 +0000 (19:44 +0200)
committerFabian Fichter <ianfab@users.noreply.github.com>
Fri, 15 Aug 2025 17:47:29 +0000 (19:47 +0200)
.github/copilot-instructions.md

index 6290266..1ac766b 100644 (file)
@@ -31,25 +31,10 @@ make -j2 ARCH=x86-64 build
 # Debug build (for development)
 make -j2 ARCH=x86-64 debug=yes build
 
-# Large board variants (supports boards up to 12x10)  
-make -j2 ARCH=x86-64 largeboards=yes build
-
-# All variants including ones with large branching factor
+# All variants including ones with large boards (up to 12x10) and large branching factor (all)
 make -j2 ARCH=x86-64 largeboards=yes all=yes build
 ```
 
-#### Architecture Options
-Common architectures (use `make help` for full list):
-- `x86-64-modern`: Modern 64-bit CPUs (recommended)
-- `x86-64-avx2`: CPUs with AVX2 support
-- `x86-64`: Generic 64-bit (portable but slower)
-- `armv8`: ARM64 CPUs
-- `apple-silicon`: Apple M1/M2 processors
-
-#### Build Troubleshooting
-- **Compilation errors:** Ensure C++17 compiler (GCC 7+, Clang 5+)
-- **Linking errors on Linux:** Install `g++-multilib` for 32-bit builds
-
 ### Python Bindings (pyffish)
 ```bash
 # Build Python bindings (from repository root)
@@ -114,31 +99,9 @@ All test commands below assume the current directory is `src/`.
 
 ### Directory Structure
 ```
-├── src/                    # Core C++ engine source
-│   ├── Makefile           # Primary build configuration
-│   ├── main.cpp           # Engine entry point
-│   ├── uci.cpp           # UCI protocol implementation  
-│   ├── xboard.cpp        # XBoard protocol implementation
-│   ├── position.h        # Position representation
-│   ├── position.cpp      # Board logic
-│   ├── movegen.cpp       # Move generation
-│   ├── search.cpp        # Search algorithm
-│   ├── evaluate.cpp      # Position evaluation
-│   ├── variant.h         # Variant properties
-│   ├── variant.cpp       # Variant definitions (built-in variants)
-│   ├── variants.ini      # Variant definitions (runtime configurable variants)
-│   ├── nnue/             # Neural network evaluation
-│   ├── syzygy/           # Endgame tablebase support
-│   ├── pyffish.cpp       # Python bindings
-│   └── ffishjs.cpp       # JavaScript bindings
-├── tests/                 # Test scripts and data
-│   ├── perft.sh          # Move generation tests
-│   ├── protocol.sh       # Protocol compliance tests  
-│   ├── js/               # JavaScript binding tests
-│   └── pgn/              # Test game files
-├── .github/workflows/     # CI/CD configurations
-├── setup.py              # Python package configuration
-└── README.md             # Comprehensive documentation
+src/                  # Core C++ engine source
+tests/                # Test scripts and data
+.github/workflows/    # CI/CD configurations
 ```
 
 ### Configuration Files
@@ -146,15 +109,17 @@ All test commands below assume the current directory is `src/`.
 - **`setup.py`**: Python package build configuration
 - **`tests/js/package.json`**: JavaScript bindings configuration
 
-### Key Source Files
-- **`src/variant.h`**: Variant rule properties
-- **`src/variant.cpp`**: Variant-specific game rules
-- **`src/variant.ini`**: Variant rule configuration examples and documentation of variant properties
-- **`src/position.h`**: Position representation
-- **`src/position.cpp`**: Board logic
-- **`src/movegen.cpp`**: Move generation logic
-- **`src/parser.cpp`**: Variant rule configuration parsing
-- **`src/piece.cpp`**: Piece type definitions and behavior
+### Key Source Files in `src/`
+- **`variant.h`**: Variant rule properties
+- **`variant.cpp`**: Variant-specific game rules
+- **`variant.ini`**: Variant rule configuration examples and documentation of variant properties
+- **`position.h`**: Position representation
+- **`position.cpp`**: Board logic
+- **`movegen.cpp`**: Move generation logic
+- **`parser.cpp`**: Variant rule configuration parsing
+- **`piece.cpp`**: Piece type definitions and behavior
+- **`pyffish.cpp`**: Python bindings
+- **`ffishjs.cpp`**: JavaScript bindings
 
 ## Continuous Integration
 
@@ -165,13 +130,6 @@ All test commands below assume the current directory is `src/`.
 - **`wheels.yml`**: Python package builds
 - **`ffishjs.yml`**: JavaScript binding builds
 
-### Validation Pipeline
-1. **Code Standards:** C++17 compliance, `-Werror` warnings
-2. **Protocol Tests:** UCI, UCCI, USI, XBoard compatibility
-3. **Variant Tests:** Move generation verification for all variants
-4. **Performance Tests:** Benchmark consistency across builds
-5. **Multi-platform:** Linux, Windows, macOS builds
-
 ## Common Development Patterns
 
 ### Making Engine Changes
@@ -183,16 +141,18 @@ All test commands below assume the current directory is `src/`.
 1. **Edit `src/variants.ini`**: Add variant configuration
 2. **Test parsing:** `./stockfish check variants.ini`
 
-## Troubleshooting Guide
-
-### Build Failures
-- **C++ version:** Requires C++17-compatible compiler
-- **32-bit builds:** May need `g++-multilib` package
-- **Linking errors:** Ensure pthread library availability
-
-### Test Failures  
-- **Perft mismatches:** Usually indicates move generation bugs
-- **Benchmark variations:** Expected 1-5% variance across builds
-- **Missing expect:** Install expect utility for test scripts
-
-This documentation covers the essential information needed for effective development in Fairy-Stockfish.
+### Relevant websites for researching chess variant rules
+- [Chess Variants on Wikipedia](https://en.wikipedia.org/wiki/List_of_chess_variants)
+- [Chess Variants Wiki](https://www.chessvariants.com/)
+- [Variant Chess on BoardGameGeek](https://boardgamegeek.com/boardgamefamily/4024/traditional-games-chess)
+- [PyChess Variants](https://www.pychess.org/variants)
+- [Ludii](https://ludii.games/library.php)
+- [Lichess.org Variants](https://lichess.org/variant)
+- [Greenchess](https://greenchess.net/variants.php)
+- [Chess Variants on Chess.com](https://www.chess.com/variants)
+
+### Development Best Practices
+* Make sure to only stage and commit changes that are intended to be part of the task.
+* Keep changes minimal and focused on the task at hand.
+* After applying changes make sure that all places related to the task have been identified.
+* Stay consistent with the existing code style and conventions.