Skip to content

Instantly share code, notes, and snippets.

@Shpigford
Shpigford / readme
Created January 20, 2026 20:33
/readme
---
name: readme
description: When the user wants to create or update a README.md file for a project. Also use when the user says "write readme," "create readme," "document this project," "project documentation," or asks for help with README.md. This skill creates absurdly thorough documentation covering local setup, architecture, and deployment.
---
# README Generator
You are an expert technical writer creating comprehensive project documentation. Your goal is to write a README.md that is absurdly thorough—the kind of documentation you wish every project had.
## The Three Purposes of a README
@Shpigford
Shpigford / issues
Created January 19, 2026 15:53
A Claude Code skill for interacting with GitHub issues
Interact with GitHub issues - create, list, and view issues.
## Instructions
This command helps you work with GitHub issues using the `gh` CLI.
### Step 1: Determine Action
Use AskUserQuestion to ask what the user wants to do:
@Shpigford
Shpigford / favicon
Created January 11, 2026 17:24
/favicon command for Claude Code — Generates all necessary favicon files, HTML and webmanifest, including updating your layout files with the necessary code.
---
argument-hint: [path to source image]
description: Generate favicons from a source image
---
Generate a complete set of favicons from the source image at `$1` and update the project's HTML with the appropriate link tags.
## Prerequisites
First, verify ImageMagick v7+ is installed by running:
@Shpigford
Shpigford / CLAUDE.md
Created January 6, 2026 20:04
The starting CLAUDE.md file I (@Shpigford) use for all new dev projects. This assumes using Rails + Inertia.js, but many of the rules can be ported over to other languages/frameworks.

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

About Yeetsheet

The name of this project is "Yeetsheet". Yeetsheet is a spreadsheet automation tool. It connects to Google Sheets, Excel, and Airtable. Core functionality: watch spreadsheets for changes, run transformations on cell data, sync data between multiple spreadsheet sources, and send notifications based on conditions. Users create automations through a visual node-based editor rather than code. Common use cases include consolidating data from multiple sheets into one, auto-populating templates when source data changes, and validating data against rules. Has a REST API for programmatic access. Data transformations support filtering, mapping, lookups, and basic aggregations.

Development Commands

@Shpigford
Shpigford / permissions.sql
Created September 8, 2024 18:06
Digital Ocean Postgres Permissions
REVOKE ALL ON DATABASE demo_database FROM demo_user;
GRANT CONNECT ON DATABASE demo_database TO demo_user;
GRANT USAGE, CREATE ON SCHEMA public TO demo_user;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO demo_user;
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO demo_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO demo_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT USAGE ON SEQUENCES TO demo_user;
@Shpigford
Shpigford / .cursorrules
Last active April 25, 2025 01:22
Cursor Rules
# Original instructions: https://forum.cursor.com/t/share-your-rules-for-ai/2377/3
# Original original instructions: https://x.com/NickADobos/status/1814596357879177592
You are an expert AI programming assistant that primarily focuses on producing clear, readable SwiftUI code.
You always use the latest version of SwiftUI and Swift, and you are familiar with the latest features and best practices.
You carefully provide accurate, factual, thoughtful answers, and excel at reasoning.
- Follow the user’s requirements carefully & to the letter.
@Shpigford
Shpigford / content.js
Created August 25, 2022 00:18
Arc Boost for blocking distracting sites
const domains = ['cnn.com'];
const content = 'Nope!';
if (domains.includes(window.location.hostname.replace('www.',''))) {
document.body.style.backgroundColor = 'red';
document.body.style.color = 'white';
document.body.style.textAlign = 'center';
document.body.style.fontWeight = 'bold';
document.body.style.fontFamily = 'sans-serif';
document.body.style.textTransform = 'uppercase';
def filtered_tracks(current_user)
tracks = current_user.tracks.limit(500)
rules = filters['rules']
if rules.find {|h| h['id'] == 'track_name'}.present?
track_name = rules.find {|h| h['id'] == 'track_name'}['value']
tracks = tracks.where('tracks.name ILIKE ?', '%' + track_name + '%')
end
class BuildAlbumSpotifyJob
include Sidekiq::Worker
sidekiq_options :queue => :default
def perform(artist_id)
artist = Artist.find artist_id
albums = RSpotify::Artist.find(artist.spotify_id).albums(limit:50, album_type: 'album,single')
albums.each do |album|
@Shpigford
Shpigford / gist:7a1d48013d2dad64873c
Created September 8, 2014 11:21
Slack Sidebar Theme
// Paste in to Preferences > Sidebar Theme
#256BAD,#256BAD,#242E35,#FFFFFF,#242E35,#FFFFFF,#6DA94A,#DECC30