private void getValidMoves(int row,
int col,
PieceType pieceType,
PlayerColor turn) {
validMoves = new ArrayList<>();
int direction = (turn == PlayerColor.RED) ? 1 : -1;
if(pieceType == PieceType.REGULAR)
{
addMove(validMoves, row + direction, col-1);
addMove(validMoves, row + direction, col+1);
// Handle jumped a piece
private void setValidMoves(PlayerColor turn) {
try{
validMovesCells = new String[BOARDSIZE][BOARDSIZE];
getValidMoves(highlightedRow, highlightedCol, PieceType.REGULAR, turn);
}
catch(Exception e)
{
Log.e(TAG, "setValidMoves: " + e.getMessage());
}
} public String hitTest(Point point,
PlayerColor turn,
Context context) {
String result = "-1";
for (int row = 0; row < cells[0].length; row++)
{
for (int col = 0; col < cells[1].length; col++)
{
highlights[row][col] = "0";
if(cellValues[row][col] == "")
{
//Log.d(TAG, "hitTest: Empty at [" + row + "," + col + "]");
private void drawTurn(Canvas canvas, Rect rect, int color) {
Paint paint = new Paint();
paint.setColor(color);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
int x = rect.centerX();
int y = rect.centerY();
canvas.drawCircle(x, y, SIZE * .35f, paint);
}---
name: web-artifacts-builder
description: Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts.
license: Complete terms in LICENSE.txt
---
# Web Artifacts Builder
To build powerful frontend claude.ai artifacts, follow these steps:
1. Initialize the frpublic void Draw(Canvas canvas){
Log.d(TAG, "Draw: Start");
Paint paint = new Paint();
paint.setColor(Color.LTGRAY);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
Paint paintYellow = new Paint();
paintYellow.setColor(Color.YELLOW);
paintYellow.setStyle(Paint.Style.STROKE);
paintYellow.setStrokeWidth(10);
Paint paintMoves = new Paint();
paintMoves.setColor(Color.CYAN);
paintMoves.setStyle(Paint.S private void clearCellValues()
{
for(int row = 0; row < cells[0].length; row++)
{
for(int col = 0; col < cells[1].length; col++)
{
cellValues[row][col] = "";
}
}
}private void initCellValues() {
for(int row = 0; row < cells[0].length; row++)
{
for(int col = 0; col < cells[1].length; col++)
{
if(row < 3) {
// Placing the red pieces
if ((row + col) % 2 == 0)
cellValues[row][col] = PlayerColor.RED.toString();
else
cellValues[row][col] = "";
}
else if (rpackage edu.fvtc.checkers;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.Build;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowMetrics;
import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
import androidx.annot# Fiche ponctuelle — Commands vs Skills : anatomie et décision de migration
**Contexte** : fiche produite pendant la Phase 4 de l'audit, Point 4/6 — conceptuelle pure. La mécanique de conversion pas-à-pas fera l'objet d'une fiche séparée, produite après un premier exercice pratique.
---
## 1. Le choix dont il s'agit
Claude Code propose deux mécanismes pour définir des "capacités" invocables :
- **Commands** (`.claude/commands/X.md`)
- **Skills** (`.claude/skills/X/SKILL.md`)
Depuis la conv# Fiche ponctuelle — Tester une CLI Python via `subprocess.run` (test d'intégration bout-en-bout)
**Contexte de capture :** session memory-grep, Phase 1a (smoke test pytest), 2026-04-28.
Question utilisateur : explication détaillée du helper `_run_memgrep` qui invoque la CLI dans un subprocess isolé pour les tests d'intégration.
---
## TL;DR
Pour tester une CLI Python qui lit le filesystem (`Path.home()`, etc.) sans toucher l'environnement réel de l'utilisateur, le pattern canonique est :
`# Fiche ponctuelle — `__init__.py` vs `__main__.py` dans un package Python
**Contexte de capture :** session memory-grep, Phase 1a (bootstrap CLI), 2026-04-28.
Question utilisateur : différence et rôles précis des deux fichiers, après leur création par `uv init` puis personnalisation.
---
## TL;DR
| Fichier | Rôle |
|---------|------|
| `__init__.py` | **Identité et API publique** du package : marqueur "ceci est un package", point d'entrée des imports, exposition de l'API, métadonnées (`__ve<ul class="grid">
<li class="row">テスト<br />テスト</li>
<li class="row">テスト</li>
</ul>## TDCHAT / PYTHON MANAGER / CONFIG PATH
for example:
/Users/oli/Library/Application Support/ChatTD/python_config.json
Refresh Registery / Edit Config file pulse seems to be broken on mac os.
## INSTALL PROCESS.
General notes around install process on mac.
### drop onto network for the first time
When drag and drop lops.tox, behaviour isn't as expected ( disapears & re-create at TD ./ folder ) stays where user drops it.
### Hardcoded "install venv"
a venv with path:
D:/TD-tox/LOPS_tox/IN/**
* @param {number[][]} grid
* @return {boolean}
*/
var hasValidPath = function(grid) {
const m = grid.length;
const n = grid[0].length;
// Each street type defines which directions you can EXIT from this cell.
// These are (dr, dc) pairs: row change, column change.
const dirs = {
1: [[0, -1], [0, 1]], // left, right
2: [[1, 0], [-1, 0]], // down, up
3: [[0, -1], [1, 0]], // left, down
4: [[0, 1], [1, 0]], // right, dAndroid https://httptoolkit.com/android/
Web
brew install --cask burp-suite
https://portswigger.net/burp