Skip to content

Instantly share code, notes, and snippets.

View ericboehs's full-sized avatar

Eric Boehs ericboehs

  • Oddball
  • Enid, OK
  • 01:10 (UTC -06:00)
View GitHub Profile
@ericboehs
ericboehs / README-PS.md
Created December 16, 2025 00:06
Shai-Hulud PowerShell Detector

Shai-Hulud Detector - PowerShell Edition

A PowerShell-based security scanner that detects indicators of compromise (IOCs) from the Shai-Hulud npm supply chain attacks that occurred in September 2025 and November 2025. This tool specifically targets the "Shai-Hulud: The Second Coming" attack that used fake Bun runtime installations to harvest credentials.

📋 Table of Contents

@ericboehs
ericboehs / slack
Last active December 15, 2025 00:54
Slack CLI - status, presence, DND, and messages from the command line
#!/usr/bin/env bash
set -euo pipefail
VERSION="2.11.0"
SCRIPT_NAME="slack"
# XDG Base Directory support
CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/slack-cli"
CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/slack-cli"
TOKENS_FILE="$CONFIG_DIR/tokens.json"
@ericboehs
ericboehs / slack-status
Last active December 11, 2025 19:13
CLI tool to set Slack status from the command line (supports multiple workspaces, presets, age encryption)
#!/usr/bin/env bash
set -euo pipefail
VERSION="1.1.0"
SCRIPT_NAME="slack-status"
# XDG Base Directory support
CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/slack-status"
TOKENS_FILE="$CONFIG_DIR/tokens.json"
TOKENS_FILE_ENCRYPTED="$CONFIG_DIR/tokens.age"
@ericboehs
ericboehs / ios-safari-remote.js
Last active December 11, 2025 16:52
iOS Safari Remote Control - CLI tool to control Safari on iOS devices via USB. Requires ios_webkit_debug_proxy. Features: device selection by name (-d), list pages, navigate, get HTML/text, click links, eval JS.
#!/usr/bin/env node
const WebSocket = require('ws');
const http = require('http');
// Default ports to try for device discovery
const DEVICE_LIST_PORTS = [9221, 9100];
// Parse CLI arguments
const args = process.argv.slice(2);
@ericboehs
ericboehs / pbcopy-decrypt
Last active December 3, 2025 22:59
Share secrets from your clipboard over Slack/Teams/Email/etc with other devs
#!/usr/bin/env bash
set -euo pipefail
# pbcopy-decrypt - Decrypt age-encrypted clipboard contents
usage() {
cat >&2 <<EOF
Usage: pbcopy-decrypt [OPTIONS]
Decrypt age-encrypted clipboard contents using an SSH private key.
@ericboehs
ericboehs / scan-machine-shai-hulud.sh
Last active November 26, 2025 21:28
Shai-Hulud 2.0 Full Machine Scanner - Scans for npm supply chain attack indicators
#!/bin/bash
#
# Shai-Hulud 2.0 Full Machine Scanner
# ====================================
#
# Scans your machine for signs of the Shai-Hulud npm supply chain attack
# (November 2025). This attack compromised 796+ npm packages affecting
# 20+ million weekly downloads.
#
# WHAT THIS SCRIPT DOES:
@ericboehs
ericboehs / gh-pm
Created November 19, 2025 21:00
gh-pm: Interactive GitHub Project Manager with fzf - Cached issue list with edit, status update, and sorting capabilities
#! /usr/bin/env bash
set -e
set -u
set -o pipefail
export CACHE_FILE="${XDG_CACHE_HOME:-$HOME/.cache}/gh-pm-list.txt"
mkdir -p "$(dirname "$CACHE_FILE")"
# Only refresh if cache is older than 5 minutes, missing, or empty
#!/bin/bash
# claude-notify - Notification handler for Claude Code hooks
# Parse command line arguments
sender=""
while [[ $# -gt 0 ]]; do
case $1 in
--sender)
sender="$2"
shift 2
@ericboehs
ericboehs / parse_codeowners
Last active August 22, 2025 13:22
CODEOWNERS parser with CLI and comprehensive tests
#!/usr/bin/env ruby
# frozen_string_literal: true
# Parser for GitHub CODEOWNERS files that supports pattern matching and owner lookup
class CodeownersParser
def initialize(codeowners_file_path = '.github/CODEOWNERS')
@codeowners_file_path = codeowners_file_path
@rules = parse_codeowners_file
end
@ericboehs
ericboehs / list.md
Created August 12, 2025 17:07
AI Data Linking Summary

Summary

This Markdown pattern shows how to create an annotated summary that links directly to detailed items in a list.

It works by giving each list item a unique HTML anchor ID (<a id="..."></a>) and then referencing those IDs in the summary with clickable links.

The result is a compact, easy-to-scan summary where readers can jump straight to the full details of any item — useful for documentation, research notes, meeting summaries, or AI-generated outlines.

Prompt

Can you give me a list of 20 things and then summarize those 20 things in 3 sentences but links back to each of the 20 items in your summary as annotations?