Skip to content

Instantly share code, notes, and snippets.

View htlin222's full-sized avatar
🦎

Hsieh-Ting Lin (林協霆) htlin222

🦎
View GitHub Profile
@htlin222
htlin222 / github-repo-seo-playbook.md
Created June 19, 2026 11:55
GitHub Repo SEO & Discoverability — field-tested playbook (descriptions/topics/homepage at scale, multi-agent workflow, gotchas: 20-topic cap, no-API-for-pins, await/parallel precedence)

GitHub Repo SEO & Discoverability — Field-Tested Playbook

How to make an entire GitHub account's worth of repos findable — by GitHub search, Google, and AI assistants — and how to do it at scale with a multi-agent workflow. Distilled from polishing 110+ public repos in one pass.


Part 1 — What actually drives discoverability (beyond topics)

@htlin222
htlin222 / gh-release-gotchas.md
Created June 17, 2026 15:35
GitHub Actions release gotchas: tag-push trigger vs release:published, tag/version guard, and gpg-signed tag failures (--no-sign rescue)

GitHub Actions release gotchas (hard-won)

Three traps that made a "release" silently do nothing — and the fixes.

1. on: release: [published] is NOT triggered by pushing a tag

on:
  release:
 types: [published]
@htlin222
htlin222 / ultrathink.sh
Created June 12, 2026 19:11
Recreate Claude Code's 'ultrathink' rainbow shimmer animation in pure bash (reverse-engineered from the CLI bundle)
#!/usr/bin/env bash
#
# ultrathink.sh — recreate Claude Code's "ultrathink" rainbow shimmer animation
#
# How the real thing works (reverse-engineered from the Claude Code v2.1.175 bundle):
#
# 1. The input editor matches /\bultrathink\b/gi on your prompt text.
# 2. Each character i of the match gets a static color: palette[i % 7],
# a 7-color ROYGBIV palette defined in the dark theme, rendered bold
# with 24-bit ANSI escapes (\e[38;2;R;G;Bm).
@htlin222
htlin222 / building-anki-addons-with-cicd.md
Created June 3, 2026 16:45
Building & shipping an Anki add-on with CI/CD — a battle-tested playbook (hooks, the undocumented AnkiWeb protobuf upload API, images, badges, GitHub Actions release)

Building & shipping an Anki add-on with CI/CD — a battle-tested playbook

A curated, heuristic guide distilled from actually building and publishing one (anki-openevidence-addon, AnkiWeb 43671435). It focuses on the parts that are undocumented or surprising — especially automating AnkiWeb uploads, which has no official API.


@htlin222
htlin222 / llm-clinical-workshop-lessons.md
Last active May 28, 2026 16:41
Hard Lessons: Building an LLM-Assisted, Newbie-Friendly Data Workshop for Clinical Staff (distilled from a clinical RWE Quarto workbook's iteration history)

Hard Lessons: Building an LLM-Assisted, Newbie-Friendly Data Workshop for Clinical Staff

Distilled from the iteration history of a hands-on Quarto workbook — a half-day workshop teaching clinical staff (no prior coding experience) to reproduce a published paper's analyses in R, using a free-tier LLM (ChatGPT / Claude / Gemini) as their coding assistant. The lessons are deliberately written topic-agnostic so they transfer to any "non-coders + LLM + data" workshop.

The meta-lesson first: almost every commit in this project was a friction point discovered in practice, not predicted in advance. You cannot armchair your way to a newbie-friendly workshop. Ship a v1, watch where clinical staff actually trip, and remove that exact stone. The changelog is the curriculum-design document. Treat "where did a learner get stuck for >2 min?" as your only real backlog.


1. The install cliff is where you lose half the room — engineer it to near-zero

@htlin222
htlin222 / Makefile
Created April 28, 2026 16:43
Build a cross-device English-writing coach over your Claude Code prompt history. Captures every prompt via UserPromptSubmit hook, syncs across devices via Turso, polishes hourly with claude -p as an English teacher (grammar, register, native phrasing, vocab, drills), auto-commits to a private GitHub repo.
# polish-prompt
# Run `make help` for the menu.
ROOT := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
LABEL := com.example.polish-prompt
PLIST := $(ROOT)/$(LABEL).plist
LAUNCHAGENT := $(HOME)/Library/LaunchAgents/$(LABEL).plist
DOMAIN := gui/$(shell id -u)
ENV_FILE := $(HOME)/.config/polish-prompt/env
@htlin222
htlin222 / calendar-ops-notes.md
Created April 22, 2026 07:43
Calendar Ops Notes — querying Apple Calendar.sqlitedb, Google Calendar MCP, AppleScript write-back (macOS)

Calendar Ops Notes (macOS + Google + Apple)

在 Claude Code / 一般 shell 裡查詢、管理行事曆的操作手冊。 下次不用從頭摸。


TL;DR — 帳號 / 工具對照

| 帳號類型 | 讀取 | 寫入(建議) | 寫入(不建議) |

@htlin222
htlin222 / todoist-skill-writeup.md
Created April 22, 2026 04:02
Building a Global Todoist CRUD Skill for Claude Code — 設計決策、完整程式碼、踩坑記錄 (soft-delete) 與可重跑 smoke test

打造一個 Global Todoist CRUD Skill for Claude Code

把常用的 Todoist 操作包成 Claude Code 的 global skill,從此在任何專案裡對 Claude 說一句中文,他就能幫你 CRUD 待辦事項。


TL;DR

  • 做了什麼:在 ~/.claude/skills/todoist/ 下打造一個 global skill,包住 Todoist REST API v1 的 CRUD。
  • 怎麼觸發:對 Claude 說「加個『買牛奶』明天早上九點到 Todoist」、「看我今天待辦」、「把運動那件事改到下午五點」——skill 的 description 已經布好中文觸發詞,Claude 會自己載入。
@htlin222
htlin222 / post-transplant-fever-management.md
Created April 22, 2026 02:41
移植後發燒抗生素階段性處理流程 — 住院醫師無腦流程圖 (based on NCCN v1.2026)

移植後發燒抗生素階段性處理流程

住院醫師的移植後發燒處理無腦流程圖,依時間和抗生素使用狀況分階段處理

NCCN Guidelines® References (v1.2026):

  • FEV-5: Initial Inpatient Empiric Therapy for Fever and Neutropenia (p. 33)
  • FEV-A-2: Antibacterial Agents - Anti-Pseudomonal (p. 42)
  • INF-1: Antimicrobial Prophylaxis Based on Overall Infection Risk (p. 7)
  • FEV-8: Evaluation and Treatment Modifications for Specific Clinical Presentations — Day 0 (p. 36)
@htlin222
htlin222 / mail-triage-gist.md
Last active April 23, 2026 13:31
Claude Code mail triage reference — Gmail + enterprise Outlook (even OAuth-blocked tenants), triggered from your phone via Telegram, running in tmux. Includes himalaya + patchright/OWA + Haiku classification + JWT-exp session freshness.

Claude Code mail triage — Gmail + enterprise Outlook, driven from your phone

A practical reference for wiring up end-to-end mail triage in Claude Code. What you get at the end:

  • One natural-language command ("process my mail" / "24 小時 actionable") triages Gmail personal + Gmail work + enterprise Outlook in a single pass.
  • Enterprise Outlook works even if your tenant has disabled OAuth consent (AADSTS65002 / need admin approval) — scraping OWA via a stealth Chromium session instead of IMAP/Graph.
  • Trigger it from your phone via a Telegram bridge. Claude runs headless in tmux on your Mac; you text from bed, a prioritized digest comes back.
  • Read-only Outlook tenant is still actionable — instead of moving items, Claude creates macOS Reminders and keeps an append-only action log as the only source of truth.

Who this is for. You use Claude Code as your daily driver, you're comfortable with shell + Python, and at least one of your accounts is on a