Skip to content

Instantly share code, notes, and snippets.

View markwallsgrove's full-sized avatar

Mark Wallsgrove markwallsgrove

View GitHub Profile
# Installed Tools
## Homebrew formulae
### Shell / CLI
- bash, fzf, zoxide, eza, bat, fd, ripgrep, entr, tree
### Git
- git, git-absorb, git-fixup, git-lfs, git-workspace
@markwallsgrove
markwallsgrove / tmux-claude-workflow.md
Last active May 21, 2026 19:02
Tmux + Claude Code + Jira worktree workflow — per-ticket sessions, attention tracking, broadcast, and full issue-to-merge lifecycle

My Dev Workflow: Tmux + Claude Code + Jira + Git Worktrees

I run multiple Claude Code instances in parallel — one per Jira ticket — each in its own tmux session with a dedicated git worktree. A custom attention system tracks which Claude needs me. Here's how it fits together.

The Loop

  1. Ctrl-i — pick a Jira issue, pick a repo, name a branch. A git worktree and tmux session are created. Claude Code launches in a split pane with the Jira ticket context, and we discuss the ticket first (no implementation). When done, Claude writes a YAML outcome file, updates Jira, then restarts in implementation mode.

  2. Work — Claude writes tests first, implements, runs checks, creates a PR. Meanwhile I'm already on another ticket in another session.

@markwallsgrove
markwallsgrove / setup_ngrok.sh
Last active March 15, 2019 10:24
Publically Accessible SSH Port With Ngrok (Ubuntu)
#!/bin/bash
# Create a account at https://ngrok.com/ to use ngrok
if [ -z "$NGROK_AUTHTOKEN" ] && [ ! -f ~/.ngrok2/ngrok.yml ]; then
1>&2 echo "ngrok authentication token missing"
exit 1
fi
apt-get install -y unzip openssh-server
service ssh start
@markwallsgrove
markwallsgrove / gist:94169332da50592e3f4a8e2195b07d01
Created February 24, 2017 12:19
Summarise SSL signature hash type used by providers within SAML federation
#!/usr/bin/python2.7
import lxml.etree as etree
from cryptography import x509
from cryptography.hazmat.backends import default_backend
def chunkstring(string, length):
return (string[0+i:length+i] for i in range(0, len(string), length))
def main():
with open('fed.xml', 'r') as myfile:
### Keybase proof
I hereby claim:
* I am markwallsgrove on github.
* I am smoky (https://keybase.io/smoky) on keybase.
* I have a public key whose fingerprint is C34B 376D F5DB 5394 7E65 4C19 4971 0850 3D50 AC92
To claim this, I am signing this object:
@markwallsgrove
markwallsgrove / go-update.go
Created February 18, 2016 20:21
go-update tutorial, fast start
package main
// https://godoc.org/github.com/inconshreveable/go-update
// This gist documents go-install using a SHA-256 checksum,
// elliptic curve (prime 256) encrypted signature & bsdiff
// formatted patch.
// These steps took me over a hour to figure. go-install currently
// doesn't include a tutorial or quick start guide, so I created this
@markwallsgrove
markwallsgrove / jshintrc.js
Created September 24, 2015 13:41
JSHint Strict Configuration
{
// JSHint Default Configuration File (as on JSHint website)
// See http://jshint.com/docs/ for more details
"maxerr" : 50, // {int} Maximum error before stopping
// Enforcing
"bitwise" : true, // true: Prohibit bitwise operators (&, |, ^, etc.)
"camelcase" : false, // true: Identifiers must be in camelCase
"curly" : true, // true: Require {} for every new block or scope
@markwallsgrove
markwallsgrove / timeouts-resque.rb
Created July 30, 2015 09:57
Sensu check for Resque jobs that are taking too long
#! /usr/bin/env ruby
#
# resque-timeouts
#
# DESCRIPTION:
# Monitor Resque queues for jobs that are taking too long
#
# OUTPUT:
# List of jobs that are taking too long
#