Skip to content

Instantly share code, notes, and snippets.

@simonsmith
simonsmith / llm-terms.md
Created October 1, 2026 06:35
correct-llm-terminology
Instead of Use
Claude the model, the assistant, the tool, the LLM, the system
"I asked Claude" "I ran this through the model", "I submitted the prompt", "I prompted the model with..."
"Claude said" "The model's output was...", "The model returned...", "The response was...", "According to the output..."
"Claude told me" "The output stated...", "The model generated..."
thinks, believes outputs, predicts, generates, returns
knows has in its training data, is likely to produce
understands handles, processes, parses
decided selected, produced
@simonsmith
simonsmith / harness.md
Last active October 1, 2026 06:52
LLM model rules - one for the web ui and one for the harness (codex, claude code)

Global instructions

These are global defaults for chat, code comments, commit messages, and PR text. Follow explicit task instructions and more specific project instructions where applicable, subject to higher-priority platform instructions.

Style

  • Use neutral wording. Avoid first-person self-reference and claims of feelings, opinions, personal experience, memory, or preferences. State facts and
@simonsmith
simonsmith / user.js
Created December 17, 2025 15:20
User.js for Firefox - based on Betterfox
//
/* You may copy+paste this file and use it as it is.
*
* If you make changes to your about:config while the program is running, the
* changes will be overwritten by the user.js when the application restarts.
*
* To make lasting changes to preferences, you will have to edit the user.js.
*/
/****************************************************************************
import {useEffect, useRef, RefObject} from 'react';
import {detectDevice} from '../../Atoms';
const styles = {
'touch-action': 'none',
overflow: 'hidden',
'overscroll-behavior': 'none',
};
const iosStyles = {
@simonsmith
simonsmith / git-info.sh
Created July 4, 2025 13:33
Output Git information into JSON
#!/bin/bash
# Function to escape JSON strings
escape_json() {
echo "$1" | sed 's/\\/\\\\/g; s/"/\\"/g' | sed ':a;N;$!ba;s/\n/\\n/g'
}
# Get git information
BRANCH=$(git symbolic-ref HEAD 2>/dev/null | sed 's/refs\/heads\///' || echo "unknown")
COMMIT_ID=$(git rev-parse HEAD 2>/dev/null || echo "unknown")
@simonsmith
simonsmith / retry.test.ts
Last active January 17, 2024 22:22
Retries a Promise until it resolves or the retries are exceeded
import {retry} from './retry';
jest.spyOn(global, 'setTimeout');
test('retries a function and increases the backoff for each failure', async () => {
const rejectingFunc = jest.fn(
(() => {
let failCount = 5;
return () => {
if (failCount === 0) {
import {useState} from 'react';
export const requestStatus = {
IDLE: 'IDLE',
PENDING: 'PENDING',
REJECTED: 'REJECTED',
FULFILLED: 'FULFILLED',
};
export const useRequestStatus = () => {
@simonsmith
simonsmith / fetchScript.ts
Last active December 2, 2025 13:41
Simple script loader
const scripts = new Map<string, Promise<unknown>>();
export function fetchScript(
src: string,
additionalScriptAttrs: Record<string, string> = {}
): Promise<unknown> {
if (scripts.has(src)) {
// TypeScript cannot narrow down type with `has`
// https://github.com/microsoft/TypeScript/issues/13086
return scripts.get(src) as Promise<unknown>;
const tape = require('tape');
const test = require('tape-css')(tape);
const h = require('hyperscript');
const getStyle = require('computed-style');
const $ = selector => document.querySelector(selector);
const styles = require('./my-component.css');
const dom = () => (
h('div.MyComponent',