Skip to content

Instantly share code, notes, and snippets.

View ConnorGriffin's full-sized avatar

Connor Griffin ConnorGriffin

  • Phoenix, AZ
View GitHub Profile
@ConnorGriffin
ConnorGriffin / narration-contract.md
Created July 31, 2026 07:07
Narration contract for agent sessions — when an agent should speak while it works, hardened by adversarial self-review

Narration contract for agent sessions

Drop this into CLAUDE.md / AGENTS.md, or into a skill that wraps a long-running workflow. It governs how much the agent says while it works — not what it builds.

The failure mode it fixes: an agent that silently runs twenty tools and then emits a wall of summary. The reader can't tell what it checked, can't interrupt a wrong turn, and has to take the conclusion on faith.

Every rule below is written so the agent can check itself against it, rather than

@ConnorGriffin
ConnorGriffin / narration-contract.md
Created July 31, 2026 06:32
Narration contract for agent sessions — how much a coding agent should say while it works

Narration contract for agent sessions

Drop this into CLAUDE.md / AGENTS.md, or into a skill that wraps a long-running workflow. It governs how much the agent says while it works — not what it builds.

The failure mode it fixes: an agent that silently runs twenty tools and then emits a wall of summary. The reader can't tell what it checked, can't interrupt a wrong turn, and has to take the conclusion on faith.


@ConnorGriffin
ConnorGriffin / ciq-pr-358-evidence.md
Created July 13, 2026 23:07
CIQ Autotune PR 358 Day screenshot evidence

CIQ Autotune PR 358 screenshot evidence

Seeded test data only; no personal health information.

@ConnorGriffin
ConnorGriffin / guide-after.png
Last active July 11, 2026 09:34
ciq-autotune #353 before/after
guide-after.png
@ConnorGriffin
ConnorGriffin / ge_double_tap.yaml
Last active December 17, 2025 06:43
HomeAssistant Blueprint: GE Double Tap's for Connor's Light Modes
blueprint:
name: "ConnorGriffin's Light Switch Double Taps"
description: >
Supports GE/Jasco Basic CC (32) and UltraPro ZW3010 Central Scene (91).
Double-tap UP toggles Max ↔ Auto.
Double-tap DOWN toggles Min ↔ Auto.
domain: automation
input:
device:
@ConnorGriffin
ConnorGriffin / time_based_brightness.py
Last active December 17, 2025 04:52
HomeAssistant Plot for Brightness Curve
from datetime import datetime, timedelta
import matplotlib.pyplot as plt
def brightness_at_time(t, sunrise, sunset,
pre_sunrise=120, morning_ramp=90,
pre_sunset=60, evening_ramp=240,
min_brightness=20, max_brightness=100):
# Adjusted ramp times
ramp_up_start = sunrise - timedelta(minutes=pre_sunrise)
ramp_up_end = ramp_up_start + timedelta(minutes=morning_ramp)
@ConnorGriffin
ConnorGriffin / light_modes.yaml
Last active December 17, 2025 06:33
HomeAssistant Blueprint: ConnorGriffin's Light Modes
blueprint:
name: "ConnorGriffin's Light Modes"
description: "Controls light brightness at Off->On based on a configurable curve, as well as min/max bright modes based. Requires a dropdown (input-select) helper with modes: Auto, Min, Max."
domain: automation
input:
light:
name: Light
description: The light to control
selector:
entity:
@ConnorGriffin
ConnorGriffin / ynabZestimate.gs
Last active October 22, 2024 22:38
Automatically update your YNAB 'Home Value' tracking account with Zillow's Zestimate data
function updateYnabHomeZestimate() {
var accessToken = 'YNAB token goes here' // Your YNAB Personal Access Token
var zwsid = 'zwsid goes here' // Your Zillow ZWSID
var budgetName = 'budget name goes here' // The name of your budget
var accountName = 'home value account name goes here' // The name of your home value tracking account
var address = '1657 Notrealaddress Drive, Redding, CA 96001' // Home address
// YNAB API settings
var url = 'https://api.youneedabudget.com/v1'
var headers = {
@ConnorGriffin
ConnorGriffin / ynabReport-CategoryGroupSummary.gs
Last active October 22, 2024 22:38
YNAB Weekly Spending Report - Google Script (Standalone) - Using Totals from Category Groups
// YNAB Weekly Spending Report sending script
function sendYnabReport() {
// Set our options
var accessToken = 'token goes here' // Your YNAB Personal Access Token
var budgetName = "Connor's Budget" // Budget name to use, in case you have multiple budgets
var categories = ['Sports & Wellness', 'Food & Drink', 'Housing'] // Your desired category groups to monitor, in Javascript array syntax
var recipient = 'test@example.com, test2@example.com' // Email recipients, comma separated
// API stuff
var url = 'https://api.youneedabudget.com/v1'
@ConnorGriffin
ConnorGriffin / ynabReport-CategoryGroups.gs
Last active September 25, 2018 00:22
YNAB Weekly Spending Report - Google Script (Standalone) - Using Category Groups instead of Categories
// YNAB Weekly Spending Report sending script
function sendYnabReport() {
// Set our options
var accessToken = 'token goes here' // Your YNAB Personal Access Token
var budgetName = "Connor's Budget" // Budget name to use, in case you have multiple budgets
var categories = ['Sports & Wellness', 'Food & Drink', 'Housing'] // Your desired category groups to monitor, in Javascript array syntax
var recipient = 'test@example.com, test2@example.com' // Email recipients, comma separated
// API stuff
var url = 'https://api.youneedabudget.com/v1'