Skip to content

Instantly share code, notes, and snippets.

@TeamDijon
TeamDijon / commit-msg.sh
Created April 19, 2026 11:05
Remove Anthropic fluff from commit messages → .git/hooks/commit-msg
#!/bin/sh
# Strip Anthropic Co-Authored-By trailers and the "Generated with Claude Code" line.
sed -i -e '/<noreply@anthropic\.com>/d' \
-e '/🤖 Generated with \[Claude Code\]/d' "$1"
# Trim trailing blank lines left behind.
sed -i -e :a -e '/^\s*$/{$d;N;ba' -e '}' "$1"
@TeamDijon
TeamDijon / context-worktree-pattern.md
Last active April 17, 2026 16:44
.context/ Worktree Pattern

.context/ Worktree Pattern

A git pattern for keeping markdown context files (docs, specs, decisions, notes) in the same repo as code but on a completely separate history.

What it is

An orphan git branch mounted as .context/ via git worktree. Context and code share the same repo but have fully separate histories. Markdown files on the context branch are accessible to both humans and AI agents alongside the codebase, without cluttering the main branch or polluting the code commit log.

Setup

@TeamDijon
TeamDijon / claude-code-context-guide.md
Created February 5, 2026 14:59
Claude Code Context Guide

Claude Code Context Management Guide

Context Loading Overview

SESSION START (always in context)
├── CLAUDE.md                    → Full content loaded
├── .claude/rules/*.md           → Full content loaded
├── Skill metadata               → Names + descriptions only
└── Subagent metadata → Names + descriptions only
@TeamDijon
TeamDijon / examples.liquid
Last active December 8, 2025 14:26
Liquid asset loader
{% liquid
# CSS only block/section
render 'utility--asset-loader', name: 'hero', js: false
# Regular block/section
render 'utility--asset-loader', name: 'featured-product'
%}
{% # Dynamic style %}
{% capture dynamic_style %}
@TeamDijon
TeamDijon / details-animation-support.css
Created June 28, 2025 15:56
<details> animation support
@media (prefers-reduced-motion: no-preference) {
details {
transition: 0.3s ease-in-out;
@supports (interpolate-size: allow-keywords) {
interpolate-size: allow-keywords;
&::details-content {
block-size: 0;
opacity: 0;
@TeamDijon
TeamDijon / gorgias-integration.js
Created June 24, 2025 08:12
Gorgias utility functions
/**
* Manages interface with the Gorgias third-party chat widget.
*/
window.mx.utils.gorgias = {
/**
* Gets the Gorgias chat container element.
* @returns {HTMLElement|null} The Gorgias chat container or null if not found.
*/
getContainer: () => {
try {
@TeamDijon
TeamDijon / dry-pagination.liquid
Last active February 25, 2025 14:04
Snippet showing a DRY paginated product grid using both collection and product_list source
{% liquid
# Using the collections object is necessary as we can't paginate collection settings, only collectionDrop objects
assign featured_collection = collections[section.settings.featured_collection]
assign product_list = section.settings.product_list
if featured_collection == null and product_list == blank
# Default behavior handling can go there
endif
assign pagination_size = section.settings.pagination_size
@TeamDijon
TeamDijon / test-case.liquid
Created August 29, 2024 21:56
Early performance testing of the `inline_asset_content` filter
{% comment %}
Findings:
- The filter works really good as far as I can tell
- Need to test with a bunch of SVGs (only one maybe hardly stress the performance) with effective caching
- If you use the SVG multiple times, do not hesitate to store the markup in a variable instead of using the filter multiple times
First batch : One SVG / no filter piped to the markup / 50k iterations
- Case #1, #2 and #3: around 350ms (no significant difference)
- Case #4: around 2500ms+
import { promises as fs } from 'fs';
import { extname, join, resolve } from 'path';
const DEFAULT_ASSETS_DIR = 'assets';
const CSS_EXTENSION = '.css';
const DISCLAIMER = '/* CAUTION: Source document was rebased from 10px to 16px rem root */';
const DRY_RUN = process.env.DRY_RUN === 'true';
let processedFiles = 0;
let skippedFiles = 0;
{%- comment -%}
Renders the template name based on the template object.
Accepts:
- template {Template object} - Template object
Usage:
<body class="{% render 'template-name', template: template -%}">...</body>
{%- endcomment -%}