wotb-sync

Guides cross-layer synchronization of replay parsing, i18n, exports, and schema changes.

5|Updated Jun 22, 2026
One-click install
npx skills add https://github.com/A158Coke/WotbTools --skill wotb-sync-a158coke
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: wotb-sync
Source: https://github.com/A158Coke/WotbTools/tree/main/.agents/skills/wotb-sync
Command: npx skills add https://github.com/A158Coke/WotbTools --skill wotb-sync-a158coke

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? In the WoTBTools project, a single data change must propagate through many layers: Java replay parsing, REST API keys, trilingual frontend locale files, Excel export column definitions, Flyway migrations, and documentation. Missing one layer causes inconsistent labels, broken builds, or failed ddl-auto validation. This Skill provides a checklist of recipes so every cross-layer change is applied completely and consistently. ## Core Features & Use Cases - Recipe-based playbooks: Twelve targeted recipes (A–L) covering column renames, new data columns, parser/protobuf changes, frontend-only tweaks, rating config, map names, tankopedia updates, Hall of Fame schema, cross-site state, Extended page, Keycloak auth, and FE↔BE OpenAPI contracts. - Golden rules enforcement: API stays pure English snake_case keys; display names live in locales/{zh,en,ru}.json plus Columns.java/AggregateSheets.java; controllers stay thin with logic in services. - Mandatory verification and docs: Each recipe ends with mvn test (JDK 21), npm test/build, and documentation updates. - Use Case: When adding a new player statistic column to battle results, follow Recipe B to update ReplayParser, Columns.java, Mapper.AGG_COLS, AggregateSheets, all three locale files, and the developer guide in one pass. ## Quick Start Ask the AI to add a new replay data column or rename an existing label, and it will follow the matching wotb-sync recipe to update every affected layer and run the required tests.

Frequently Asked Questions about wotb-sync

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add a new data column to a replay results table?

Follow Recipe B: parse the field in ReplayParser.java into PlayerResult, add a Column entry in Columns.java and AggregateSheets.java, expose the key via /api/columns, then add trilingual labels in locales/{zh,en,ru}.json under player_labels or agg_labels.

How do I rename a column label across frontend and Excel export?

Use Recipe A: update the key's value in all three locale files (zh, en, ru) under player_labels and agg_labels, plus the title in Columns.java for single-battle exports and AggregateSheets.java for summary exports. The API key itself stays unchanged.

Does changing the Hall of Fame table structure require a Flyway migration?

Yes. Any schema change needs a new sequentially numbered Flyway migration (V<N>__xxx.sql) without modifying applied versions. JPA entities, DTOs, and repository columns must align with the migration or ddl-auto: validate fails at startup.

Why does the Maven build fail with the wrong Java version?

The project requires JDK 21, but the system default java may differ. Set JAVA_HOME to a JDK 21 installation before running mvn -s settings.xml test, otherwise compilation and tests fail.

Where is the single source of truth for map display names?

Map names live only in common/map_names.json, mapping lowercase internal names to zh/en/ru labels. The Java exporter reads it from the classpath and the frontend imports the same file, so editing one file updates both ends.