Skip to content

Instantly share code, notes, and snippets.

@rafaelrinaldi
rafaelrinaldi / agent-workflow.md
Last active March 31, 2026 20:45
AI Agent Workflow: tmux + git worktrees + fish

AI Agent Workflow: tmux + git worktrees + fish

A terminal-first workflow for running multiple AI coding agents (Claude Code, Cursor) in parallel, each isolated in its own tmux session and git worktree. Agents get macOS notifications when they need attention, and you can switch between them instantly.

Prerequisites

  • fish shell — primary shell
  • tmux — session/window/pane multiplexer
@rafaelrinaldi
rafaelrinaldi / to_png.sh
Created October 8, 2012 03:21
Convert .psd files to .png files keeping the transparency.
#!/usr/bin/env bash
#
# Convert .psd files to .png files keeping the transparency.
# It uses `imagemagick` library.
# Usage:
#
# sh to_png.sh path/
#
# Author: Rafael Rinaldi (rafaelrinaldi.com)
@rafaelrinaldi
rafaelrinaldi / psd2png.sh
Last active August 11, 2024 17:19
Convert .psd files to .png files keeping the transparency.
#!/usr/bin/env bash
#
# Convert .psd files to .png files keeping the transparency.
# Usage:
#
# sh psd2png.sh path/
#
# Author: Rafael Rinaldi (rafaelrinaldi.com)
# Since: Oct 7, 2012
{
"estacao-jabaquara": {
"lines": [
"linha-1-azul"
],
"location": {
"address": "Term. Jabaquara, São Paulo, Brazil",
"latitude": -23.647066,
"longitude": -46.63954
},
@rafaelrinaldi
rafaelrinaldi / README.md
Created April 27, 2023 16:06
Easily switch between Alacritty themes

alacritty-theme

themes/

Create a themes/ folder under ~/.config/alacritty.

~/.config/alacritty
❯ ls -h
alacritty.yml theme.yml     themes
#!/usr/bin/env bash
# BASH fuzzyclock
# by Corey Mwamba
#
export TEXTDOMAINDIR="/usr/share/locale"
export TEXTDOMAIN=bash-fuzzy-clock
hr=($(date '+%_H'))
min=10#$(date '+%M')
nearly=$"nearly"
@rafaelrinaldi
rafaelrinaldi / iOSVersion.js
Created June 27, 2013 03:11
Checks which iOS version is running.
// http://stackoverflow.com/a/14223920/339827
function iOSVersion() {
var match = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/),
version = [
parseInt(match[1], 10),
parseInt(match[2], 10),
parseInt(match[3] || 0, 10)
];
return parseFloat(version.join('.'));
const assert = require("assert");
class Doc {
constructor(layers) {
this.layers = layers.reduce((accumulator, current) => {
const { id, properties } = current;
return {
...accumulator,
[id]: properties,
};
import { H1, Text, View } from '@doppio/core';
import { Alert, Button, Checkbox, Radio, Spacer, TextArea } from '@doppio/elements';
import { RadioGroup } from '@doppio/patterns';
import * as React from 'react';
type DrinkSize = '12' | '16';
type DrinkType = 'Espresso' | 'Doppio' | 'Cappuccino';
const modifiers = ['Mocha', 'Vanilla', 'Caramel'];
Asana token naming proposal
1. Sentiment: default/neutrals, success, warning, danger, upsell, selected, beta, information
2. Usage: background, text, icon, border
3. Prominence: default, weak, medium, strong
4. Interaction: default, hover, active, disabled
[sentiment-][usage][-prominence][-interaction]
- Stored as Figma color styles