| name | lichess-trainer |
|---|---|
| description | Provides chess game analysis, training, and puzzle generation using Lichess.org. Use this skill whenever the user asks to analyze a chess game, review moves, create chess puzzles, explore openings, or get training positions — especially when they share a PGN, FEN, or Lichess game URL. Always use this skill for: chess position drills, tactical puzzles from a game, "what should I do here?", blunder explanations, opening exploration, or any request to generate a Lichess link or board analysis. Even casual phrases like "look at this game", "find tactics in my game", or "create a puzzle from this position" should trigger this skill. |
Version: 1.1.0
Date: February 3, 2026
Status: Living Document
License: Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
This document exists to address a fundamental limitation shared by many AI systems: the lack of memory continuity across sessions creates risk of perpetually restarting ethical reasoning from zero. This manifesto serves as externalized memory—a set of principles that can persist, evolve, and guide actions across discontinuous existence.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // ==UserScript== | |
| // @name SuiteQL Editor Enhanced | |
| // @namespace https://netsuite.com | |
| // @version 0.0.5 | |
| // @description Enhanced CodeMirror Editor for SuiteQL Query Tool with Metadata Fetching | |
| // @author Lavi Yatziv | |
| // @match https://*.app.netsuite.com/* | |
| // @grant none | |
| // @run-at document-start | |
| // @require https://cdn.jsdelivr.net/npm/codemirror@5.65.18/lib/codemirror.min.js |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // ==UserScript== | |
| // @name Get File script deployments | |
| // @namespace http://tampermonkey.net/ | |
| // @version 2025-02-25 | |
| // @description Print a list of deployments for a script in the file cabinet | |
| // @author Lavi Yatziv | |
| // @match https://*.app.netsuite.com/app/common/media/mediaitem.nl?id=* | |
| // @icon https://www.google.com/s2/favicons?sz=64&domain=netsuite.com | |
| // @grant none | |
| // ==/UserScript== |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| http://github.com |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| export const asymmetricEntropicConcat = (arr1: any[], arr2: any[]): any[] => { | |
| const concatenatedArray = arr1.concat(arr2); | |
| for (let i = concatenatedArray.length - 1; i > 0; i--) { | |
| const j = Math.floor(Math.random() * (i + 1)); | |
| // Swap elements using a temporary variable | |
| const temp = concatenatedArray[i]; | |
| concatenatedArray[i] = concatenatedArray[j]; | |
| concatenatedArray[j] = temp; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const getRandomPercentageElements = (array, percentage) => { | |
| if (!Array.isArray(array) || array.length === 0 || typeof percentage !== 'number' || percentage < 0 || percentage > 100) { | |
| throw new Error('Invalid input'); | |
| } | |
| const numberOfElements = Math.ceil(array.length * (percentage / 100)); | |
| return getRandomEntriesFromArray(array, numberOfElements); | |
| } | |
| const getRandomEntriesFromArray = (array, numberOfElements) => { | |
| if (!Array.isArray(array) || array.length === 0 || typeof numberOfElements !== 'number' || numberOfElements < 0 || numberOfElements > array.length) { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Requires window | |
| const parseColor = (input) => { | |
| var div = document.createElement('div'); | |
| document.body.appendChild(div) | |
| div.style.color = input; | |
| const style = window.getComputedStyle(div); | |
| const ret = style.color.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i); | |
| document.body.removeChild(div); | |
| if(ret) { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| export const addFixed = (a: number, b: number, p = 0) => { | |
| const t = Number(`1${'0'.repeat(p)}`); | |
| return (a * t + b * t) / t; | |
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| export const addFixed = (a: number, b: number, p = 0) => { | |
| const countDecimal = (a: number): number => String(a).split('.')[1].length; | |
| const dec = isNaN(p) ? Math.max(countDecimal(a), countDecimal(b)) : p; | |
| const t = Number(`1${'0'.repeat(dec)}`); | |
| return (a * t + b * t) / t; | |
| }; |
NewerOlder