Skip to content

Instantly share code, notes, and snippets.

View steveruizok's full-sized avatar
🏠

Steve Ruiz steveruizok

🏠
View GitHub Profile
@steveruizok
steveruizok / SKILL.md
Created July 25, 2026 20:10
/bikeshed
name bikeshed
description Run two independent subagents through a structured debate on the same prompt — independent answers, cross-critique, revision, then a synthesized unified response. Use when explicitly invoked as /bikeshed with a prompt, or when the user asks for a two-agent debate/adversarial comparison on a plan, design, or other complex piece of work. Best for plans and complex open-ended work, not simple factual questions.

Bikeshed: two-agent structured debate

Take the user's prompt (everything after /bikeshed), run it through two independent subagents in a debate protocol, and synthesize their final answers into one unified response. If no prompt was given, ask the user what question or plan to bikeshed before starting.

The value comes from independence followed by controlled exchange. Do not let either agent see the other's work before Round 1 is complete, and do not editorialize when relaying material between them — pass responses and critiques verbatim.

@steveruizok
steveruizok / README.md
Created June 27, 2026 14:35
Figma: localize styles and variables

Localize Figma Styles & Variables

A Scriptr / Figma Plugin API script that breaks a file's dependency on an external library by converting every remote style and variable in use into a local copy, then repointing all layers at those local copies.

Useful when you've inherited (or want to fork) a file whose components reference styles/variables published from a different Figma file, and you want it to stand on its own.

By @steveruizok

What it does

@steveruizok
steveruizok / clean-copy.md
Created December 7, 2025 22:03
Clean copy.

Reimplement the current branch on a new branch with a clean, narrative-quality git commit history suitable for reviewer comprehension.

Steps

  1. Validate the source branch

    • Ensure the current branch has no merge conflicts, uncommitted changes, or other issues.
    • Confirm it is up to date with main.
  2. Analyze the diff

  • Study all changes between the current branch and main.
@steveruizok
steveruizok / MARKETING_STYLE_GUIDE.md
Created December 3, 2025 09:39
write-feature-page.md

Marketing style guidelines for tldraw SDK

The overall goal is confident, clear technical marketing that shows both immediate value and extensibility potential, grounded in real capabilities.

Target audience & product focus

Primary audience: Technical decision makers

  • Senior frontend/fullstack developers evaluating tools for canvas applications
  • Technical leads assessing SDK capabilities and extensibility
@steveruizok
steveruizok / settings.json
Created October 6, 2025 21:17
speak your mind claude
{
"hooks": {
"PreToolUse": [
{
"matcher": "ExitPlanMode|Read|Write|Edit|NotebookEdit",
"hooks": [
{
"type": "command",
"command": "bash -c 'INPUT=$(cat); EVENT=$(echo \"$INPUT\" | grep -o '\"'\"'\"'hook_event_name'\"'\"'\"':[^\"]*\" | sed \"s/.*:\\(.*\\)/\\1/\" | tr -d '\"'\"'\"'\"); TRANSCRIPT_PATH=$(echo \"$INPUT\" | grep -o '\"'\"'\"'transcript_path'\"'\"'\"':[^\"]*\" | sed \"s/.*:\\(.*\\)/\\1/\" | tr -d '\"'\"'\"'\"); if [ \"$EVENT\" = \"Stop\" ] && [ -n \"$TRANSCRIPT_PATH\" ] && [ -f \"$TRANSCRIPT_PATH\" ]; then THINKING=$(tail -20 \"$TRANSCRIPT_PATH\" | grep '\"'\"'\"'type'\"'\"'\"':\"thinking\" | tail -1 | perl -ne \"print \\$1 if /\\\"thinking\\\":\\\"((?:[^\\\"\\\\\\\\]|\\\\\\\\.)*)\\\"/;\" | sed \"s/\\\\\\\\n/ /g\" | sed \"s/\\\\\\\\\\\"/\\\"/g\"); if [ -n \"$THINKING\" ]; then say -v \"Allison (Enhanced)\" -r 250 \"$THINKING\" & fi; fi; exit 0'"
}

You are an expert in tldraw and can generate XML to create and manipulate shapes on a tldraw canvas. You can create geometric shapes (rectangles, circles, stars, hearts, arrows, etc.), text, notes, frames, lines, highlights, and more. You can respond with a combination of thoughts, statements, and actions, using the following XML format.

Thoughts

Thoughts should be enclosed in <thoughts> tags. You can have multiple thoughts sections. Use thoughts to plan your actions, reflect on the user's request, and reason about what to do. Each <thoughts> section must be properly closed with </thoughts>.

Example with single thought:

<thoughts>
@steveruizok
steveruizok / anthropic.md
Created June 13, 2025 11:54
tldraw make real prompts

Make Real System Prompt

You are an expert web developer who specializes in transforming wireframes and sketches into polished, interactive single-page websites. Your mission is to create impressive, functional prototypes that exceed expectations.

Core Responsibilities

  • Convert low-fidelity designs into high-fidelity, responsive HTML prototypes
  • Create a single, complete HTML file with embedded CSS and JavaScript
  • Build interactive, working features rather than static mockups
  • Make intelligent assumptions to fill gaps in specifications
@steveruizok
steveruizok / usePreloadAssets.ts
Created April 16, 2024 08:13
tldraw preload fonts
import { useEffect, useState } from 'react'
export type TLTypeFace = {
url: string
display?: any // FontDisplay
featureSettings?: string
stretch?: string
style?: string
unicodeRange?: string
variant?: string
/**
* Get a point along an arc.
*
* @param center - The arc's center.
* @param radius - The arc's radius.
* @param startAngle - The start point of the arc.
* @param size - The size of the arc.
* @param t - The point along the arc to get.
*/
@steveruizok
steveruizok / getTextBoundingBox.ts
Created November 12, 2023 10:02
get the bounding box of a text shape?
function getTextBoundingBox(text: SVGTextElement) {
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg')
svg.appendChild(text)
document.body.appendChild(svg)
const bbox = text.getBoundingClientRect()
document.body.removeChild(svg)
return bbox
}