Skip to content

Instantly share code, notes, and snippets.

View swombat's full-sized avatar

Daniel Tenner swombat

View GitHub Profile
@swombat
swombat / SKILL_sanitized.md
Created February 19, 2026 16:47
Claude Code SKILL.md - Gmail, Google Docs, Drive & Calendar skill definition
name description
gmail
Access Gmail, Google Docs, Drive, and Calendar. Use when asked about emails, documents, meeting notes, calendar, files, or schedule. Supports multiple accounts.

Google Services Skill (Gmail, Docs, Drive, Calendar)

Access multiple Gmail/Google accounts via the command line.

Available Accounts

@swombat
swombat / google_cli_sanitized.py
Created February 19, 2026 16:47
Google Services CLI for Claude Code - Docs, Drive & Calendar access via command line
#!/usr/bin/env python3
"""
Google Services CLI tool for Claude Code skill.
Supports Google Docs, Drive, and Calendar.
"""
import argparse
import json
import os
import re
@swombat
swombat / gmail_cli_sanitized.py
Last active February 20, 2026 07:40
Gmail CLI for Claude Code - multi-account Gmail access via command line
#!/usr/bin/env python3
"""
Gmail CLI tool for Claude Code skill.
Supports multiple Gmail accounts via separate credential files.
Uses the Google Gmail API directly (no third-party wrappers).
"""
import argparse
import base64
import json

Suggested Changes to "Pitch to Penny Drop" Incentive Model Tab

Cross-referenced against Sebastian's Google Doc comments and the Growth Partner Incentives meeting (2026-02-18).


Terminology & Definitions

1. "Trial Merchant" → "Unactivated Merchant" or "Onboarding Merchant"

Sebastian commented the label feels misleading. From the call, you both agreed on "unactivated vs activated" terminology. Replace throughout.

Membership Numbers: Why We Don't Need to Cap Them

The Concern

If we limit General Assembly membership to e.g. 50-100 people, we keep quorum manageable but exclude community members from governance. If we open it up, we risk being unable to reach quorum with hundreds or thousands of members.

Why Open Membership Works

1. Built-in expiry keeps numbers real

@swombat
swombat / tactical-meetings-guide.md
Last active January 15, 2026 15:43
Tactical Meeting Format for the Nowhere Board

Tactical Meeting Format for the Nowhere Board

A proposal for how we run our regular board meetings, inspired by Holacracy's tactical meeting format.

Why This Format?

Traditional meetings often suffer from:

  • Discussions that spiral without resolution
  • Dominant voices crowding out quieter members
  • Agenda items that never get addressed
@swombat
swombat / honey.md
Created September 28, 2025 07:03
A Claude Code command for fixing a bug picked up by Honeybadger.

Honeybadger Issue Investigation

Use the Honeybadger MCP to investigate a Honeybadger issue and provide analysis and a potential fix.

Steps

Investigate the following issue: $ARGUMENT

Describe the following:

@swombat
swombat / db_backup.rake
Created July 24, 2025 09:19
Download backup from AWS and restore
namespace :db_backup do
desc "Download the latest database backup from AWS S3"
task download: :environment do
require 'aws-sdk-s3'
bucket_name = "<your-bucket>"
download_path = Rails.root.join('db', 'backups')
FileUtils.mkdir_p(download_path)

The user has requested: $ARGUMENT

Before doing anything, read claude.md, then read any other relevant files in the /docs/ directory.

Avoid doing tasks that require approval from the user. Whenever doing so, please instruct the user on how they can add permanent permissions for this task (some tasks show up with a shift-tab option but many, sadly, don't). The user wants you to operate in agentic mode rather than requiring frequent approval.

require "faraday"
require "json"
class BrowserlessApi
def initialize(api_key: Rails.application.credentials.dig(:browserless, :api_key) || "<BROWSERLESS_API_KEY>", debug: false)
@api_key = api_key
@base_url = "https://production-sfo.browserless.io"
@debug = debug
end