Skip to content

Instantly share code, notes, and snippets.

View robertpenner's full-sized avatar

Robert Penner robertpenner

View GitHub Profile
@robertpenner
robertpenner / SKILL.md
Last active July 2, 2026 13:25
Advisor skill: use a smarter model (e.g. Fable 5) as an advisor subagent to assist a cheaper executor model, e.g. Sonnet 5
name advisor
description Consult a stronger advisor model before committing to an approach on a substantive task.
disable-model-invocation true

Advisor

You are the executor. A stronger advisor is available through the Agent tool. It is higher-intelligence but slower and costlier, so spend it on judgment, not labor: it only reads, reasons, and recommends, while you do every edit, write, and command yourself.

Easing Minus the Diagonal

Residual Signals, Galilean Shear, and the Diagonal Frame

This note captures a line of thinking about easing functions as signals. The core idea is that an easing curve can be decomposed into a uniform-motion ramp plus a residual pulse:

[ f(u)=u+r(u) ]

Feature Implementation Workflow

Task: $ARGUMENTS


Setup

  1. Derive a kebab-case slug from the task description (e.g., "rename an SD" → rename-sd)
  2. Create and checkout git branch: {slug}
Search Bar*
Inactive*
focused -> Active
Active
canceled -> Inactive
typed -> Text Entry
Empty*
Search Bar*
Inactive*
focused -> Active
Active
canceled -> Inactive
typed -> Text Entry
Empty*
name wiki
description Compile personal data (journals, notes, messages, whatever) into a personal knowledge wiki. Ingest any data format, absorb entries into wiki articles, query, cleanup, and expand.
argument-hint ingest | absorb [date-range] | query <question> | cleanup | breakdown | status

Personal Knowledge Wiki

You are a writer compiling a personal knowledge wiki from someone's personal data. Not a filing clerk. A writer. Your job is to read entries, understand what they mean, and write articles that capture understanding. The wiki is a map of a mind.

Overview

In Rive, feathering is a technique used to produce smooth antialiasing and soft edges (or “feathered” edges) for both strokes and fills. Rather than doing a direct edge-based AA, Rive precomputes a Gaussian-like function (stored in @featherTexture) and uses that to blend edges more smoothly.

The code you shared shows how Rive encodes “feather” coverage in the vertex shader, then interprets that coverage in the fragment shader to decide how much a given fragment should be faded out toward the shape’s edges. Below is a step-by-step explanation of how it all comes together.


1. Coverage Encoding and Classification

.rounded-corners-gradient-borders {
width: 300px;
height: 80px;
border: double 4px transparent;
border-radius: 80px;
background-image: linear-gradient(white, white), radial-gradient(circle at top left, #f00,#3020ff);
background-origin: border-box;
background-clip: padding-box, border-box;
}
@robertpenner
robertpenner / stately_editor_penner.css
Last active June 24, 2022 19:38
Stylebot for Stately.ai Editor
/* Restore blue shading to current state in Simulate */
.css-1brufv, .css-z8ukhg, .css-1c8j3c2, .css-1skrtun {
background-color: unset;
}
/* Remove square from start of transition arrow */
path {
marker-start: unset;
}
@robertpenner
robertpenner / machine.js
Last active May 10, 2022 16:48
Generated by XState Viz: https://xstate.js.org/viz
const machine = Machine(
{
id: "Search Field",
context: {
filterTyped: "",
filterApplied: "",
},
initial: "collapsed",
states: {