All authors

Claude Skills by bendrucker
github.com/bendrucker111 skills1 installs202 views
- Save DedupeHere's the current logic and the change needed. **Current** (`src/save.ts`) — every call writes the file and notifies, unconditionally: ```ts export async function save(path: string, content: string) { await writeFile(path, content); const result = { path, bytes: content.length, savedAt: Date.now() }; notifyWatchers(result); return result; } ``` **Proposed change** — cache the last-saved content per path in memory, and short-circuit if the new content is identical: ```diff import { writeFile ...Votes: 0GitHub stars: 17
- Settings PageHere's how the settings page is put together — it's a scaffold (most leaves are stubs), but the structure is real: ```tsx fragment <SettingsPage> (src/routes/settings.tsx) useAccount() — src/hooks/useAccount.ts, stub: hardcoded account + no-op save <SettingsNav active="profile"> — src/components/SettingsNav.tsx (empty stub, no tabs wired up) <ProfileForm account onSave> — src/components/ProfileForm.tsx <AvatarPicker url> — src/compon...Votes: 0GitHub stars: 17
- Signature Lookup`parseDuration` is defined in `src/duration.ts:4`: ```typescript export function parseDuration(input: string, options: { allowNegative?: boolean } = {}): number ``` - `input: string` — the duration string to parse - `options.allowNegative?: boolean` — optional, defaults to `{}` - Returns `number`Votes: 0GitHub stars: 17
- Transport SplitHere's the proposed split, as a preview only — nothing has been changed. **File tree** ```diff src/ ├── commands/ │ └── send.ts -└── transport.ts +└── transport/ + ├── client.ts # request client: auth, post, get + └── event-stream.ts # SSE parsing, room to grow ``` **client.ts** — keeps everything unrelated to streaming: ```ts fragment export function setToken(value: string): void function headers(): Record<string, string> // stays private export async function post<T>(p...Votes: 0GitHub stars: 17
- Upload PipelineThis is a presigned-upload pattern with a queue decoupling the API from the worker, and SSE decoupling job completion from the request/response cycle. Here's the full path: ```mermaid sequenceDiagram participant Browser participant API participant S3 participant Queue participant Worker Browser->>API: POST /api/uploads API->>S3: signPut("raw/{jobId}") API-->>Browser: { jobId, uploadUrl } Browser->>Browser: watchJob(jobId) opens EventSource Browser->>API: GET /api/jobs/{jobId}/events (SSE) API...Votes: 0GitHub stars: 17
- Hill ClimbHill-climb a skill, agent, rule, or CLAUDE.md against its eval suite. Use when changing one to raise an eval score, when judging whether a score change beat noise, or when testing whether an instruction still earns its tokens.Votes: 0GitHub stars: 17
- CliType-safe CLI argument parsing with commander and @commander-js/extra-typings, the standard parser for this repo's Bun scripts. Use when writing or editing any script that takes arguments (flags, positional parameters, subcommands, nested subcommands, --help) instead of reading existing scripts for the pattern.Votes: 0GitHub stars: 17
- BenchmarkUse when timing a program or command, asking whether a change or version made it faster, or building a benchmark harness. For repeated optimization toward a target, use performance:hill-climb.Votes: 0GitHub stars: 17
- Hill ClimbUse when asked to make software faster or leaner (runtime, startup, throughput, memory, bundle size) through repeated measured changes. For prompts or skills scored by an eval suite, use prompting:hill-climb.Votes: 0GitHub stars: 17
- ProfileUse when asked why a program, script, or web page is slow or memory-heavy, or what dominates its runtime, before deciding what to change.Votes: 0GitHub stars: 17
- Watch SessionUse when the user asks you to watch a herdr pane or Claude session while they test a skill or do a task by hand, to fix that skill or draft a new one from what the session does. For writing a skill without a session to watch, use plugin:skill.Votes: 0GitHub stars: 17