Skip to content

Instantly share code, notes, and snippets.

View boneskull's full-sized avatar
💀

Christopher Hiller boneskull

💀
View GitHub Profile
@boneskull
boneskull / README.md
Last active December 24, 2025 04:41
How to Automate Claude Plugin Versioning with Release Please

How to Automate Claude Plugin Versioning with Release Please

Introduction

Manually bumping the versions of your Claude Plugins is painful. If you have many plugins, it is worse than death. It's that bad.

By leveraging a tool that I've long used to version Node.js projects—[Release Please][]—we can make this process at least no worse than a trip to the dentist.

What you'll get:

@boneskull
boneskull / README.md
Last active December 13, 2025 07:17
Asgard's Fall - Warpaint / Rune solver

This is a Python script for the bullet-heaven game, Asgard's Fall.

Given a list of nine large (hexomino) runes, it will tell you whether or not those runes will all fit in the Warpaint Grid, and print a solution.

image
@boneskull
boneskull / README.md
Last active November 19, 2025 06:03
Command for Cursor to execute Claude Code commands installed via Claude Code plugins

What is this?

This is a command that you can run in Cursor to execute commands installed via Claude Plugins.

Cursor doesn't have any direct support for Claude Code plugins, but this command provides a bridge between them.

Usage

Assuming you have some plugins installed:

@boneskull
boneskull / require-intrinsic-destructuring.mjs
Created September 24, 2025 05:17
ESLint rule to disallow direct use of static methods on intrinsics
/**
* ESLint rule to require static methods of intrinsics to be dereferenced before
* use
*
* This rule enforces that static methods of JavaScript intrinsics (like
* Object.keys, Array.from, etc.) should be destructured before use instead of
* being accessed directly. This can help with performance and bundle size by
* allowing these methods to be reused throughout a module.
*
* @example
@boneskull
boneskull / require-function-tag-in-arrow-functions.mjs
Last active September 24, 2025 04:54
ESLint rule to require @function in docstring of arrow function expressions
/**
* ESLint rule to require `@function` tag in JSDoc comments for arrow functions
*
* @packageDocumentation
*/
import {
AST_NODE_TYPES,
AST_TOKEN_TYPES,
ESLintUtils,
@boneskull
boneskull / README.md
Last active June 5, 2025 23:20
git: cleanup remote & local rebased branches (zsh)

git-cleanup

A Zsh script to clean up local and remote Git branches that have already been rebased (fully merged) onto a target branch.

Depends on branch name prefixes; for example, feature/, bugfix/, etc. I tend to use my username boneskull.

Features

  • Deletes local branches matching a prefix that have been rebased onto a target branch.
  • Deletes remote branches matching a prefix that have been rebased onto a target branch.
@boneskull
boneskull / README.md
Created June 3, 2025 22:40
oh-my-zsh: open manpages in Dash.app (macOS Sequoia)

This is a snippet for zsh you can add to a .zshrc to automatically open manpages in Dash if and only if the "Manpages" DocSet is installed. It's been tested with macOS Sequoia (v15.5).

It uses the omz_urlencode function provided by oh-my-zsh.

If you don't have oh-my-zsh installed, you can paste this into your .zshrc as a reasonable substitution:

omz_urlencode() {
  local string="${@}"
 local strlen=${#string}
@boneskull
boneskull / uninstall-foreign-fonts.sh
Created May 7, 2025 19:22 — forked from jm3/uninstall-foreign-fonts.sh
uninstall the 162 non-English fonts that Apple installs that clog up Photoshop's font menu.
#!/bin/sh
# jm3.net
# uninstall the 162 non-English fonts that Apple installs that clog up Photoshop's font menu.
# ========================
## RUN AT YOUR OWN RISK ##
# ========================
# if this formats your hard drive or deletes your fonts or changes the sex
# of your dog, I'm super sorry, but there's nothing I can do.
@boneskull
boneskull / lodash.template+4.5.0.patch
Created November 19, 2024 21:45
patch for CVE-2021-23337 against lodash.template@4.5.0
diff --git a/node_modules/lodash.template/index.js b/node_modules/lodash.template/index.js
index f051141..c4cb7e1 100644
--- a/node_modules/lodash.template/index.js
+++ b/node_modules/lodash.template/index.js
@@ -1519,9 +1519,29 @@ function template(string, options, guard) {
// Like with sourceURL, we take care to not check the option's prototype,
// as this configuration is a code injection vector.
var variable = hasOwnProperty.call(options, 'variable') && options.variable;
+
+ var INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';
diff --git a/node_modules/lodash.template/index.js b/node_modules/lodash.template/index.js
index f051141..c4cb7e1 100644
--- a/node_modules/lodash.template/index.js
+++ b/node_modules/lodash.template/index.js
@@ -1519,9 +1519,29 @@ function template(string, options, guard) {
// Like with sourceURL, we take care to not check the option's prototype,
// as this configuration is a code injection vector.
var variable = hasOwnProperty.call(options, 'variable') && options.variable;
+
+ var INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';