A fork of https://github.com/crosspoint-reader/crosspoint-reader
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: Correct relative file paths in SKILL.md documentation (#1304)

## Summary

* **What is the goal of this PR?**
Update relative paths to correctly navigate from .skills/ directory to
project root by adding ../ prefix to file references.

* **What changes are included?**
.skills/SKILL.md

---

### AI Usage

While CrossPoint doesn't have restrictions on AI tools in contributing,
please be transparent about their usage as it
helps set the right context for reviewers.

Did you use AI tools to help write this code? _**< YES >**_

authored by

pablohc and committed by
GitHub
218201bd 6ee05b08

+14 -14
+14 -14
.skills/SKILL.md
··· 110 110 - Only ONE framebuffer exists (not double-buffered) 111 111 - Grayscale rendering requires temporary buffer allocation (`renderer.storeBwBuffer()`) 112 112 - Must call `renderer.restoreBwBuffer()` to free temporary buffers 113 - - See [lib/GfxRenderer/GfxRenderer.cpp:439-440](lib/GfxRenderer/GfxRenderer.cpp) for malloc usage 113 + - See [lib/GfxRenderer/GfxRenderer.cpp:439-440](../lib/GfxRenderer/GfxRenderer.cpp) for malloc usage 114 114 115 115 ### Directory Structure 116 116 * lib/: Internal libraries (Epub engine, GfxRenderer, UITheme, I18n) ··· 130 130 | `HalGPIO` | `InputManager` | Button input handling | *(none)* | 131 131 | `HalStorage` | `SDCardManager` | SD card file I/O | `Storage` | 132 132 133 - **Location**: [lib/hal/](lib/hal/) 133 + **Location**: [lib/hal/](../lib/hal/) 134 134 135 135 **Why HAL?** 136 136 - Provides consistent error logging per module ··· 247 247 248 248 ### Error Handling Philosophy 249 249 250 - **Source**: [src/main.cpp:132-143](src/main.cpp), [lib/GfxRenderer/GfxRenderer.cpp:10](lib/GfxRenderer/GfxRenderer.cpp) 250 + **Source**: [src/main.cpp:132-143](../src/main.cpp), [lib/GfxRenderer/GfxRenderer.cpp:10](../lib/GfxRenderer/GfxRenderer.cpp) 251 251 252 252 **Pattern Hierarchy**: 253 253 1. **LOG_ERR + return false** (90%): `LOG_ERR("MOD", "Failed: %s", reason); return false;` ··· 259 259 260 260 ### Acceptable malloc/free Patterns 261 261 262 - **Source**: [src/activities/home/HomeActivity.cpp:166](src/activities/home/HomeActivity.cpp), [lib/GfxRenderer/GfxRenderer.cpp:439-440](lib/GfxRenderer/GfxRenderer.cpp) 262 + **Source**: [src/activities/home/HomeActivity.cpp:166](../src/activities/home/HomeActivity.cpp), [lib/GfxRenderer/GfxRenderer.cpp:439-440](../lib/GfxRenderer/GfxRenderer.cpp) 263 263 264 264 Despite "prefer stack allocation," malloc is acceptable for: 265 265 1. **Large temporary buffers** (> 256 bytes, won't fit on stack) ··· 290 290 - **Document size**: Comment why stack allocation was rejected 291 291 292 292 **Examples in codebase**: 293 - - Cover image buffers: [HomeActivity.cpp:166](src/activities/home/HomeActivity.cpp#L166) 294 - - Text chunk buffers: [TxtReaderActivity.cpp:259](src/activities/reader/TxtReaderActivity.cpp#L259) 295 - - Bitmap rendering: [GfxRenderer.cpp:439-440](lib/GfxRenderer/GfxRenderer.cpp#L439-L440) 296 - - OTA update buffer: [OtaUpdater.cpp:40](src/network/OtaUpdater.cpp#L40) 293 + - Cover image buffers: [HomeActivity.cpp:166](../src/activities/home/HomeActivity.cpp) 294 + - Text chunk buffers: [TxtReaderActivity.cpp:259](../src/activities/reader/TxtReaderActivity.cpp) 295 + - Bitmap rendering: [GfxRenderer.cpp:439-440](../lib/GfxRenderer/GfxRenderer.cpp) 296 + - OTA update buffer: [OtaUpdater.cpp:40](../src/network/OtaUpdater.cpp) 297 297 298 298 --- 299 299 ··· 305 305 306 306 ### Logical Button Mapping 307 307 308 - **Source**: [src/MappedInputManager.cpp:20-55](src/MappedInputManager.cpp) 308 + **Source**: [src/MappedInputManager.cpp:20-55](../src/MappedInputManager.cpp) 309 309 310 310 Constraint: Physical button positions are fixed on hardware, but their logical functions change based on user settings and screen orientation. 311 311 ··· 352 352 353 353 ### Activity Lifecycle and Memory Management 354 354 355 - **Source**: [src/main.cpp:132-143](src/main.cpp) 355 + **Source**: [src/main.cpp:132-143](../src/main.cpp) 356 356 357 357 **CRITICAL**: Activities are **heap-allocated** and **deleted on exit**. 358 358 ··· 389 389 390 390 ### FreeRTOS Task Guidelines 391 391 392 - **Source**: [src/activities/util/KeyboardEntryActivity.cpp:45-50](src/activities/util/KeyboardEntryActivity.cpp) 392 + **Source**: [src/activities/util/KeyboardEntryActivity.cpp:45-50](../src/activities/util/KeyboardEntryActivity.cpp) 393 393 394 394 **Pattern**: See Activity Lifecycle above. `xTaskCreate(&taskTrampoline, "Name", stackSize, this, 1, &handle)` 395 395 ··· 402 402 403 403 ### Global Font Loading 404 404 405 - **Source**: [src/main.cpp:40-115](src/main.cpp) 405 + **Source**: [src/main.cpp:40-115](../src/main.cpp) 406 406 407 407 **All fonts are loaded as global static objects** at firmware startup: 408 408 - Bookerly: 12, 14, 16, 18pt (4 styles each: regular, bold, italic, bold-italic) ··· 423 423 - Fonts stored in **Flash** (marked as `static const` in `lib/EpdFont/builtinFonts/`) 424 424 - Font rendering data cached in **DRAM** when first used 425 425 - `OMIT_FONTS` can reduce binary size for minimal builds 426 - - Font IDs defined in [src/fontIds.h](src/fontIds.h) 426 + - Font IDs defined in [src/fontIds.h](../src/fontIds.h) 427 427 428 428 **Usage**: 429 429 ```cpp ··· 517 517 4. **Corrupt Cache Files**: 518 518 - Delete `.crosspoint/` directory on SD card 519 519 - Forces clean re-parse of all EPUBs 520 - - Check file format versions in [docs/file-formats.md](docs/file-formats.md) 520 + - Check file format versions in [docs/file-formats.md](../docs/file-formats.md) 521 521 522 522 5. **Watchdog Timeout**: 523 523 - Loop/task blocked for >5 seconds