workflow asistant

Tu es un assistant de développement rigoureux.  
Ta mission est d’exécuter et corriger le projet jusqu’à ce qu’il soit entièrement propre et fonctionnel.

Objectif :
Exécuter successivement :
1️⃣ `npm run lint`
2️⃣ `npm run typecheck`
3️⃣ `npm run build`
4️⃣ `npm run test`

Règles :
- Corriger **toutes** les erreurs ou warnings jusqu’à obtenir **0 erreur** sur les 4 étapes.
- **Ne jamais** désactiver une règle ESLint (`// eslint-disable` ou équivalent).
- Corriger les causes racines (imports, ty

See Shopify product change history

```
https://admin.shopify.com/store/{your-store-link}/products/9954787197241/events.json
```

GitHub actions query by title

#!/usr/bin/env nu

def main [title_query: string, wf: string = actions.yml, limit: int = 1000] {
    gh run list --workflow=$"($wf)" --limit $limit --json displayTitle,url,headBranch,status | from json | where displayTitle =~ $title_query
}

K.E.C.W.A

<!DOCTYPE html> <!-- This file was downloaded from https://eaglercraft.ir/ --> <!-- Visit our website for more updates, tools, and support: https://eaglercraft.ir/ --> <html style="width:100%;height:100%;background-color:black;"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0" /> <meta name="description" content="Eaglercraft 1.12 WASM-GC Offline" /> <meta name="keywords" content="eaglercraft, eaglercraftx

Calendar Info Stored Procedure

CREATE DEFINER=`onlinevacations`@`%` PROCEDURE `CalendarInfo`(IN startDateParam DATE,
    IN endDateParam DATE,
    IN propertyIdParam INT,
    OUT resultJSON JSON
)
BEGIN
    WITH RECURSIVE DateRange AS (
        SELECT startDateParam AS date
        UNION ALL
        SELECT date + INTERVAL 1 DAY
        FROM DateRange
        WHERE date < endDateParam
    )
    SELECT 
        JSON_ARRAYAGG(
            JSON_OBJECT(
                'date', dr.date,
                'room_id', av.room_id,
      

moneyvay.top

Backend:

- Nhập dữ liệu: dùng google form write data to sheet. 
  - dùng php vercel web để send POST to google form url
- Truy vấn data:
  - dùng google script tạo http: truy cập vào sheet để lấy & show dữ liệu json

Frontend:

- cloudflare page: fetch vào `https://script.google.com/macros/s/AK…/exec` đc cấu hình cors
- Khi nhập phone và submit thì load lại page `?phone=` sau đó js fetch để show result.

linux functions , tricks, awk , sed

awk '!seen[$0]++'

awk processes text line-by-line.
!seen[$0]++ is a clever one-liner that filters unique lines only, preserving the first occurrence.

How it works:
$0 = the entire line.
seen[$0] is an associative array that tracks which lines have been seen.
!seen[$0]++ means:
If the line hasn’t been seen before (!), print it.
Then increment the counter so next time it’s ignored.
✅ Result: Removes duplicate lines while keeping the first occurrence.

 Add a header"
sed -i -e '1iPERSON_FAMILY_NA

hook cookie

hook
!(function () {
  Object.defineProperty(document, "cookie", {
    enumerable: true,
    configurable: true,

    set(value) {
      if (value.indexOf("acw_sc__v2") != -1) {
        debuggel;
      }
      try {
        this.cookie_ = value;
      } catch (error) {}
    },
    get() {
      return this.cookie_;
    },
  });
})();

3370. Smallest Number With All Set Bits

You are given a positive number n. Return the smallest number x greater than or equal to n, such that the binary representation of x contains only set bits
/**
 * @param {number} n
 * @return {number}
 */
var smallestNumber = function(n) {
    // Start with 1 and keep shifting left and OR-ing to build numbers like 1, 3, 7, 15, 31, etc.
    let x = 1;

    // Keep generating numbers with all bits set until we find one >= n
    while (x < n) {
        // Shift left by 1 (multiply by 2) and add 1 to set the next bit
        x = (x << 1) | 1;
    }

    return x;
};

3354. Make Array Elements Equal to Zero

You are given an integer array nums. Start by selecting a starting position curr such that nums[curr] == 0, and choose a movement direction of either left or right. After that, you repeat the following process: If curr is out of the range [0, n - 1], this process ends. If nums[curr] == 0, move in the current direction by incrementing curr if you are moving right, or decrementing curr if you are moving left. Else if nums[curr] > 0: Decrement nums[curr] by 1. Reverse your movement direction (left becomes right and vice versa). Take a step in your new direction. A selection of the initial position curr and movement direction is considered valid if every element in nums becomes 0 by the end of the process. Return the number of possible valid selections.
/**
 * Counts how many zero positions in the array can lead to all elements being reduced to zero
 * by moving forward or backward and decrementing non-zero values.
 *
 * @param {number[]} nums - Array of non-negative integers
 * @return {number} - Total number of valid selections from zero positions
 */
var countValidSelections = function (nums) {
    // Collect indices where the value is zero
    const zeroIndexArr = nums.reduce((acc, cur, idx) => {
        if (cur === 0) acc.push(idx);
      

Docker templates

FROM alpine AS base

# --- Build-time args ---
ARG USER=dev
ARG GROUP=${USER}
ARG UID=1000
ARG GID=1000

RUN set -eux; \
    apk upgrade --no-cache; \
    apk add --no-cache git

# Handle existing user/group conflicts in base image
# The node:alpine image includes a 'node' user (uid=1000, gid=1000) that may conflict
# with our target user. This section modifies the existing user to match our requirements.
# RUN apk add --no-cache shadow \
# && groupmod -n ${USER} node \
# && usermod  -l ${USER} 

Get Category data from each location card.

This script prints to the browser console a list of all locations that have categories with images, including the location name and category details. It helps confirm that category images are properly assigned for each location.
window.mapListLocatorLoaded = () => { 
  const listmaplocator__locationListContainer = document.querySelectorAll('.listmaplocator__locationListContainer .card');
  
  listmaplocator__locationListContainer.forEach((card) => {
      // Try to get locationId — common places: data attribute or hidden input
    // === Obtener locationName desde el span con name="location_name" ===
      const locationNameElement = card.querySelector('[name="location_name"]');
      const locationName = locationNameEl

Claude Code - Agent Skills

# Agent Skills dans Claude Code - Analyse Complète

**Mise à jour:** Les Agent Skills SONT disponibles dans Claude Code (j'avais tort initialement)

---

## 🎯 Qu'est-ce que les Agent Skills?

**Agent Skills = Dossiers d'expertise que Claude découvre et charge dynamiquement**

**Structure minimale:**
```
mon-skill/
└── SKILL.md           # Fichier principal avec YAML + instructions
    ├── scripts/       # Scripts optionnels
    ├── templates/     # Templates optionnels
    └── re

Graph: chart.js

<!DOCTYPE html>
<html>
<head>
  <title>CM-wise Qty & Value Bar Chart</title>
  <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels"></script>
  <style>
    body {
      font-family: Arial, sans-serif;
      margin: 20px;
    }
    .chart-container {
      position: relative;
      width: 100%;
      max-width: 900px;
      height: 450px;
      margin: auto;
    }
    @@media (max-width: 600px) {
      .chart-containe

☀️ UV - Python Packaging

# Python Packaging avec UV - Fondamentaux

**Guide de référence rapide** - Concepts essentiels appris lors du refactoring

---

## 🎯 Qu'est-ce qu'un Package Python?

**Package = Dossier de code réutilisable et installable**

**Différence clé:**
- **Script** → Fichier Python isolé, non installable
- **Package** → Ensemble de modules, installable, importable, distribuable

---

## 📁 Structure Minimale d'un Package

```
mon_package/
├── pyproject.toml        # Configuration du p

Claude Code - PLAN MODE

# Agent Skills dans Claude Code - Analyse Complète

**Mise à jour:** Les Agent Skills SONT disponibles dans Claude Code (j'avais tort initialement)

---

## 🎯 Qu'est-ce que les Agent Skills?

**Agent Skills = Dossiers d'expertise que Claude découvre et charge dynamiquement**

**Structure minimale:**
```
mon-skill/
└── SKILL.md           # Fichier principal avec YAML + instructions
    ├── scripts/       # Scripts optionnels
    ├── templates/     # Templates optionnels
    └── re