Skip to content

Instantly share code, notes, and snippets.

View jackmcpickle's full-sized avatar

Jack McNicol jackmcpickle

View GitHub Profile
@jackmcpickle
jackmcpickle / SKILL.md
Created August 6, 2026 01:27
Claude Code skill: e2e-presentation — record Playwright e2e runs as an HTML presentation (screenshots + video)
name e2e-presentation
description Use when the user asks to run, write, or record end-to-end browser tests — including Playwright e2e specs, demo walkthroughs, screenshot capture, or video recordings of UI flows against a local web app.

E2E Presentation Tests (Playwright)

Record deterministic Playwright e2e tests with step screenshots, session video, and an HTML presentation. Each workflow gets its own subfolder under the e2e test root.

Core principle: Never start environment setup or test authoring until the user confirms user type and user stories.

@jackmcpickle
jackmcpickle / CLAUDE.md
Last active December 16, 2025 21:42
My user claude file

In all interaction and commit messages be extremely concise and sacrifice grammar for the sake of concision.

PR Comments

When I say to add a comment to a PR with a TODO on it use the 'checkbox' markdown format to add the TODO. For instance: - [ ] A description of the todo goes here.
@jackmcpickle
jackmcpickle / input.scss
Created January 4, 2021 22:41
Generated by SassMeister.com.
@import "include-media";
@mixin screen-media($query) {
@include media('screen', $query) {
@content
}
}
@include screen-media('>desktop') {
@jackmcpickle
jackmcpickle / input.scss
Last active December 19, 2020 22:47
Playing with orientation in include-media - Generated by SassMeister.com.
@import "include-media";
.thing {
@include media( '>phone', 'landscape') {
padding: 0 1.5em;
}
@include media( '>phone', 'portrait' ) {
padding: 2em 3em 1em 3em;
}
}
@jackmcpickle
jackmcpickle / .inputrc
Created March 16, 2020 23:03
My inputrc config
# Make Tab autocomplete regardless of filename case
set completion-ignore-case on
# List all matches in case multiple possible completions are possible
set show-all-if-ambiguous on
# Immediately add a trailing slash when autocompleting symlinks to directories
set mark-symlinked-directories on
# Use the text that has already been typed as the prefix for searching through

Keybase proof

I hereby claim:

  • I am jackmcpickle on github.
  • I am jackmcpickle (https://keybase.io/jackmcpickle) on keybase.
  • I have a public key ASA6l_H5wRrcj_wNXT9I9lGKy80urTP9usBAcZMIFCXjLwo

To claim this, I am signing this object:

{
init: function(elevators, floors) {
this.elevator = elevators[0]; // Let's use the first elevator
this.setupListeners(floors)
},
update: function(dt, elevators, floors) {
this.checkIndicators()
@jackmcpickle
jackmcpickle / attach_to_post.php
Created March 18, 2018 06:02
attach media that was uploaded in post as thumbnails
<?php
add_action('init', 'update_business_thumbnails');
function update_business_thumbnails()
{
if (!isset($_GET['update_thumbnails'])) return ;
$args = [
'post_type' => 'attachment',
@jackmcpickle
jackmcpickle / scrollSpy.ts
Created October 17, 2017 23:36
an working but buggy attempt at using IntersectionObserver to scrollSpy
import throttle from 'lodash/throttle';
import map from 'lodash/map';
class ScrollSpy
{
$targets: Element[];
$navItems: JQuery<HTMLElement>;
observer: IntersectionObserver;
threshold: number;
activeClass: string;
@jackmcpickle
jackmcpickle / .sass-lint.yml
Created May 17, 2016 02:19
My Sass Lint config
files:
include: '**/*.scss'
options:
formatter: stylish
merge-default-rules: falserailing-semicolon
rules:
bem-depth:
- 0
- max-depth: 1
border-zero: