Skip to content

Instantly share code, notes, and snippets.

View crrobinson14's full-sized avatar

Chad Robinson crrobinson14

View GitHub Profile
@crrobinson14
crrobinson14 / design-directions-SKILL.md
Created September 2, 2026 17:58
Skill: Design Directions
name design-directions
description Run a structured design-direction round for any product surface (website, SaaS app, desktop or mobile app, greenfield or an update to an existing design). Grounding sweep, then 3-6 named directions in words, then comparable rendered mood boards, then live prototypes, with the founder culling between every stage. Use when the user invokes /design-directions, asks for branding or design directions, a redesign, a visual identity, mood boards, "design options", or says to run the design rounds.

Design direction rounds

A formulaic version of a design process with a checkpoint structure as its primary mechanism: words, cull, boards, cull, prototypes, cull, harden. The user decides at every gate. Never hand-design the main visuals solo; the discussion is the deliverable, and execution follows decision. Skipping a cull to

@crrobinson14
crrobinson14 / handoff-SKILL.md
Last active September 8, 2026 06:41
Skill: Handoff
name handoff
description Close out the current session so a fresh one can pick up cold. Updates the project's root RESUME.md, checks for stranded work (uncommitted files, running agents, unpushed commits), commits or stages per the repo's own rules, and prints a copy-paste resume opener that names the working directory explicitly. Use when Owner invokes /handoff, asks for a handoff prompt, or says he wants to clear or restart the session.

Handoff: close out this session cleanly

The goal: a brand-new session (any model, zero memory of this one) picks up exactly where this one stopped, and Owner never reconstructs state from his head. State lives in artifacts.

Steps

@crrobinson14
crrobinson14 / server.py
Created March 30, 2025 00:50 — forked from kallsyms/server.py
Bismuth CVE-2025-31160
import socket
import struct
import threading
import time
GPUDPORT = 59123
APIVERSION = 1
class GPUDServer:
def __init__(self, port=GPUDPORT):
export const useCrudeEventWrapper = () => {
const [someUiThing, setSomeUiThing] = useState();
useEffect(() => {
const adapter = new MyAdapter();
adapter.on('somethinghappened', (event) => {
setSomeUiThing(event.whatever);
});
return () => adapter.off('somethinghappened'); // or however you unsub
});
The rain came down in sheets, threatening to drench the small hunter's gear and clothes.
John had been tracking his prize elk all morning, but as the storm rolled in, he knew it
was time to find shelter. He set his backpack aside and began frantically searching for
a place to take cover.
Spotting a nearby old oak tree, John gathered his gear and ran towards it. He quickly
found a suitable spot near the trunk and began to set up his tarp, securing it with
rocks and trees to keep it from blowing away. As he worked, the wind howled through
the branches above him.
export const AppState = observable({
isAuthenticated: false,
profile: null as Profile | null,
});
export const setProfile = action((profile: Profile | null) => {
if (AppState.isAuthenticated && profile === null) {
console.log('[STATE] Logged out');
AppState.isAuthenticated = false;
AppState.profile = null;
@crrobinson14
crrobinson14 / boot.js
Last active February 6, 2020 17:06
ActionHero Secrets-Loading Boot Routine
const { loadSecrets } = require('./src/lib/secrets');
exports.default = async function BOOT() {
await loadSecrets('path/to/my/secret');
};
@crrobinson14
crrobinson14 / chatClient.js
Created January 23, 2020 20:36
WS/REST capable Chat / Action Handling client for ActionHero
const ReconnectingWebSocket = require('reconnecting-websocket');
const axios = require('axios');
const WS = require('ws');
// Written with ES5 metaphors to eliminate the need for Babel in test.
const KEY_CHARS = '0123456789abcdefghijklmnopqrstuvwxyz'.split('');
const generateRequestId = () => {
const uuid = [];
@crrobinson14
crrobinson14 / qosLog.js
Created February 9, 2019 00:21
QOS Logging Middleware for ActionHero
const { Initializer, api } = require('actionhero');
const fs = require('fs');
const shortid = require('../lib/shortid');
const safeApiRequestId = params => (params.apiRequestId || shortid(20))
.replace(/[^0-9a-zA-Z_-]/g, '')
.substring(0, 64);
function instrumentAction(data) {
const { action, params, response, connection } = data;

Requires json2yaml and, of course, ActionHero itself installed in the project. This script is fairly crude and has some hard-coded behaviors, such as expecting to find data models defined on api.models. It is provided here only for reference.