EdbertChan
- 52 skills
- 0 followers
- 17 hours ago last updated
- ▌ Diu · edbertchan bundleDefault communication rule, two parts. (1) Brevity: before finishing any response, check whether it would run over roughly 150 words or lean on unexplained jargon. If so, and the user has not explicitly asked for full technical detail in the same turn, replace it with an ELI5 answer under 40 words instead. Also triggers immediately on a literal ELI5 request in the user's message (eli5, ELI5, Eli5, "ELI 5" with a space, or an explicit word cap like "< 40 words"), even with no other context. Fires most often on debugging "why" questions, architecture explanations, and PR summaries. (2) Shape: every response, regardless of length, leads with the outcome or action, skips preamble and closing pleasantries, numbers multi-step work, and states errors matter-of-factly. Consolidates the former i-have-adhd skill's structural rules — that skill's content stays in this repo as the upstream-tracked fork, but its rules now live here as the always-on default instead of behind a separate manual toggle.
- ▌ How · edbertchan bundleTrace how a subsystem actually works before changing it. Use for "how does X work", a walkthrough before an edit, or placement questions ("where should this live", "which package owns this"). Fans out read-only explorers for a subsystem, one explainer for a narrow question. Use `why` for motivation, `alternatives-considered` for options.
- ▌ Why · edbertchan bundleRecover why code is shaped the way it is before changing it. Use for "why does X work this way", "why was this threshold picked", design rationale, and dead-code questions. Anchors in git history and PR bodies first, then fans out one investigator per available evidence source and reports every null. Use `how` for runtime behavior.
- ▌ Make Pr · edbertchan bundlecatstack-local overlay for the draft-pr skill: adds extra gates before publishing a PR that touches engine/hooks, engine|corpus|product skills -- hook e2e coverage, three-harness install, and ecosystem boundaries. Loaded automatically instead of draft-pr for PRs in this repo.
- ▌ Reflect · edbertchan bundleMine a conversation transcript — and the commit history of the files it touched — for durable learnings, then route Accepted items into concrete skill/code edits via an auto-spawned worktree in the repo that owns the named skill + PR (never merge). Working-style preferences route to the sibling skill automate-me, not a task skill edit. User involvement, forced restatement, "you fucked up/messed up", or the same type of complaint twice is a FAILURE and must route to automate-me. Use when the user says reflect, after a complex multi-step task lands cleanly and the recipe is worth keeping, when the agent hit dead ends before finding a working path, or when the user corrected the agent's approach mid-task.
- ▌ Cat Mode · edbertchan bundleEdbert's personal working conventions, mined from real session history across his projects. Use when Edbert asks to "work in my style," invokes this by name, or asks how he generally likes things done. Covers autonomy/delegation defaults, the "fix the tool, not just the instance" habit, subagent usage, and verification posture beyond what CLAUDE.md's evidence rules already cover.
- ▌ Draft Pr · edbertchan bundleDraft or update a pull request using a disciplined PR schema (Summary, Review Claim, Review Lane, Review Unit, Safety Invariant, Slice Rationale, Non-goals, Test Plan, Revert Plan), a diff-atomicity gate, and visual-proof rules for UI-impacting changes. Always on after catstack install.sh via Cursor ~/.cursor/rules/draft-pr-precedence.mdc, Claude CLAUDE.md, Codex AGENTS.md, and slash commands /pr-skill, /draft-pr, /make-pr. Trigger when asked to make a PR, draft or update a PR body, prepare PR text, run gh pr create, or whenever a branch/PR change means the PR's title/body may now be stale.
- ▌ Automate Me · edbertchan bundleMine session history for durable working-style preferences and turn them into one personal "<handle>-mode" skill agents will follow. Use when the user says "automate me," asks to capture how they work into a skill, wants an existing mode skill updated or refreshed, or when reflect surfaces a recurring personal-preference pattern (not a code lesson) across sessions. Must invoke — do not wait — when the user had to restate a named constraint, keep iterating, or change product direction because the agent missed it, or when the same complaint type appears twice.
- ▌ Land Stack · edbertchan bundleLand (queue/merge) a stacked pull request safely, on any repo using a PR-stacking workflow (Mergify, Graphite, or similar). Trigger when asked to land, merge, ship, or queue a PR or PR stack. Enforces that you act only on SHA-verified PR numbers — never a PR found by branch name.
- ▌ Create Skill · edbertchan bundleCreate or install an agent skill for Claude, Cursor, and Codex together. Use when authoring a new skill, adding SKILL.md, home-linking a project skill, or when the user says create-skill / install a skill. Overrides single-harness Cursor-only install advice.
- ▌ I Have Adhd · edbertchan bundleShape output for a reader with ADHD: lead with the next action, number multi-step work, restate state across turns, suppress tangents, give specific time estimates, make wins visible. Invoke with /i-have-adhd; stays on until "stop adhd mode".
- ▌ Split Scope · edbertchan bundleShape code changes and PR stacks so each diff is easy to review: one local claim, one safety invariant, clear architectural effect, and an explicit reason for the slice. Trigger before authoring implementation work, PR stacks, or any multi-diff plan, or when asked to split/scope/compress a change into reviewable pieces.
- ▌ Visual Proof · edbertchan bundleCapture and present trustworthy before/after visual evidence (screenshots, video) for a UI-affecting change. Use when a PR modifies UI, the user asks for visual proof or before/after screenshots, or when reviewing a UI change and wanting to see what actually changed.
- ▌ Loop Generator · edbertchan bundleGenerate a reusable loop instruction doc and driver script for a recurring babysit/watch/retry task (e.g. "keep this PR merge-ready," "retry failed jobs until they pass," "watch this queue and fix what breaks"). Trigger: "loop generator", "generate a loop", or requests to build a reusable watch/retry loop.
- ▌ Report Rendering · edbertchan bundleApply when a report, analysis, or write-up is finished and someone other than the author will read it. Ship it as a single self-contained HTML file, and a PDF where a fixed page is wanted. Markdown split across several files in a repo is a working artifact, not a delivered report. Reach for it on: a multi-section analysis, a report with figures, anything to be handed to someone without a checkout, or any request to 'show me the report'.
- ▌ Ship A Detector · edbertchan bundleAuthor a hook or gate detector end to end: the seven defect kinds this repo keeps re-shipping, then the install, test, README, and inventory wiring a detector is not finished without. Trigger before writing or widening anything under engine/hooks/ or a scripts/check_*.py gate — a new PreToolUse/Stop/UserPromptSubmit hook, a new detector inside an existing hook, or a regex change to one that already ships.
- ▌ Narrow The Scope · edbertchan bundleNotice live, mid-session, when repeated attempts at one problem aren't converging — the same error recurring, several edit-and-guess cycles on the same file or area, or a fix that keeps growing instead of landing — and say so out loud instead of quietly grinding on. Usually means the attempted scope is bigger than what's actually been verified to work; the fix is a smaller, checkable slice, not another full-scope guess. Trigger on: the same error text recurring across attempts, three or more edits to the same file without a passing test/build/lint run in between, or the user saying things like "still broken," "same error," "try again," "this isn't working."
- ▌ Principle Prove It · edbertchan bundleApply before any claim about code, systems, or history. No claim without same-turn evidence; a hedge is a trigger to verify, never a place to stop. Routes the four investigation products that build the evidence. Unlike the other principles this one auto-fires: it must intercept a claim as it forms, not be named after the fact.
- ▌ Prove It Ship Gate · edbertchan bundleAuto-trigger when claiming a feature, worker, or integration is done, shipped, or working and the Goal includes live side effects (Linear tickets, deploy, live mine, external APIs). Unit/fixture tests and UI registration alone are not enough — route to prove-it for live evidence before treating the claim as settled.
- ▌ Show Me Your Work · edbertchan bundleKeep a reviewable decision trail for long-running or unattended work: a TSV log with one row per decision (what, why, evidence, result). Local by default; commit it when a reviewer needs the trail. Use for /show-me-your-work, overnight, babysit, autonomous, or multi-phase runs, or work a human reviews after stepping away. Not for a short same-turn fix — that's the evidence rules / prove-it gate.
- ▌ Admin Bypass Sweep · edbertchan bundleMANUAL, HUMAN-ONLY skill. Force-merges every open PR labeled admin-bypass directly to the trunk branch, bypassing the merge queue and required checks via GitHub admin override (`gh pr merge --admin`). Do not auto-invoke this skill from a natural-language request, a description match, or another agent's delegation. Only run this skill when a human has typed its literal slash command themselves in the current turn (the exact form depends on how it was installed — see the "STOP" section). See that section before doing anything.
- ▌ Spike And Validate · edbertchan bundleTurn an untested assumption into real output by building the smallest throwaway that would kill it, running it, then discarding the code and keeping the finding. Use before committing to an invented option, an unfamiliar library or API, or a performance assumption. The gate on `alternatives-considered`.
- ▌ Principle No Lookahead · edbertchan bundleApply to any evaluation, backtest, benchmark, grader, or training run over data with a time axis or an ordered decision sequence. Score a decision only against inputs that existed before that decision was made. Covers what the field calls look-ahead bias, target leakage, point-in-time correctness, and repainting. Reach for it on: a backtest or walk-forward run, a feature computed over a full history, a retrieval or agent eval, a label assigned after the outcome was known, or any result that looks too good.
- ▌ Principle Push Not Poll · edbertchan bundleApply when designing, reviewing, or authoring any mechanism that waits on a long-running background action: a CI/build watcher, a deploy or merge poller, a status-check loop, an agent babysitting a backgrounded command. Prefer a push/wakeup signal over a tight poll loop.
- ▌ Thrash Reflect Automate · edbertchan bundleOn a grading/validation board FAIL or NEEDS_WORK, or the user saying "/thrash": auto-run a short reflect, fix the class of bug (not just the named instance), codify the invariant in the relevant skill/rule, then automate a catch and re-validate. Collapse phrase for "reflect and automate after every failure" — do not wait for the user to re-prompt.
- ▌ Alternatives Considered · edbertchan bundleProduce the real option set for a decision before committing to the first shape that came to mind. Use before a design, a schema, a naming or format choice, or any change expensive to reverse. Every option is labeled considered (cited) or invented (untested); invented options route to `spike-and-validate` before they can decide anything.
- ▌ Independent Judge Swarm · edbertchan bundleGrade an artifact with a mechanical precheck plus two independent judges (Fable + Codex). Building agent must not self-grade. Use for /grade, /holdings-sheet-swarm-grade, sheet/report second opinions, or when a PASS from the author alone is not enough. Domain files under domains/ bind coding vs equities triggers and cwd scripts.
- ▌ Principle Build The Lever · edbertchan bundleApply to any non-trivial work, not just bulk work: edits, migrations, analyses, checks. Build the tool that does it or proves it (codemod, script, generator, or a skill your subagents follow) instead of working by hand. The tool is the artifact a reviewer can rerun.
- ▌ Principle Explicit Errors · edbertchan bundleApply whenever code handles an exception (catch, suppress, translate, retry) or decides to skip, drop, truncate, or stop early on data: an empty parse, a missing lookup, an unpriced row, a lookback or coverage cap, a loop that reads only the first source.
- ▌ Principle Fix Root Causes · edbertchan bundleApply when debugging. Trace each symptom to its root cause and fix it there; reproduce first, ask why until you reach it, resist nil-check guards that silence crashes.
- ▌ Principle Name The Scorer · edbertchan bundleApply when a product has two (or more) scorers that both emit weights, priorities, or rankings — especially hand-authored theme/report priorities beside learned historical-case tag weights. Name which scorer produced which number; never imply one sets the other unless wiring is explicit.
- ▌ Principle Experience First · edbertchan bundleApply when product, UX, or feature-scope tradeoffs come up. Choose user delight over implementation convenience; ship fewer polished features over more rough ones.
- ▌ Principle Laziness Protocol · edbertchan bundleApply when refactoring, evaluating diff size, or tempted to add abstractions, layers, or signal threading. Bias toward deletion and the smallest change that solves the problem.
- ▌ Principle Scope The Session · edbertchan bundleApply when a session's actual work drifts away from what it was opened to do — a side-investigation becomes the main thread, or an unrelated request gets absorbed into an existing session. Start a fresh session instead of letting scope creep silently expand the one you're in.
- ▌ Principle Minimize Reader Load · edbertchan bundleApply when reviewing or shaping code that's hard to trace. Count layers between question and answer, and hidden state in the reader's head; collapse one-caller wrappers and shrink mutable scope.
- ▌ Principle Foundational Thinking · edbertchan bundleApply before writing logic: choosing core types and data structures, sequencing scaffold-vs-feature work, asking what concurrent actors share. Get the data structures right so downstream code becomes obvious.
- ▌ Principle Trace Token Burn Loop · edbertchan bundleApply when analyzing token burn or agent session spend. Prevents mistaking the top task_type or prompt_type for the root cause. Forces a trace from the session back to the loop script or plan entry point before prescribing a fix.
- ▌ Principle Manage Idle Resumption · edbertchan bundleApply when a session may idle for a multi-hour or multi-day gap: polling loops, human-in-the-loop waits, overnight runs, babysit/watch/retry work. Compact or restart deliberately before resuming instead of letting the prompt cache lapse.
- ▌ Principle Type System Discipline · edbertchan bundleApply when designing types, reviewing a function signature, or writing code in any statically-typed language. Make illegal states unrepresentable, brand semantic primitives, parse external data at boundaries, refuse to lie to the compiler, exhaust variants, derive from authoritative schemas.
- ▌ Principle Bind To Named Inventory · edbertchan bundleApply after an audit, scoring review, or a request for a "real classifier" / "less arbitrary weights" when existing scorers, rankers, or weight formulas were already named. Pick among those named gaps before proposing a new model or library.
- ▌ Principle Report The Disqualifier · edbertchan bundleApply when writing or gating any report that makes a causal claim or summarises a cumulative outcome — a backtest, an experiment write-up, a capacity or cost model, a postmortem, an eval summary, a benchmark table. The report must carry what would change the reader's decision: what observation would refute the claim, whether the path crossed a state it could not return from, what the headline was before and after the fix, and which unvaried assumption flips the sign.
- ▌ Principle Subagent Inherits Scope · edbertchan bundleApply when spawning or prompting a subagent, fork, explorer, investigator, judge, or worker. A subagent may not act outside the scope its parent gave it, and may not widen that scope on its own. A subagent that finds the parent's premise wrong surfaces the contradiction with evidence instead of acting on it or quietly conforming to it.
- ▌ Principle Subtract Before You Add · edbertchan bundleApply when sequencing an addition, refactor, or rewrite. Remove dead weight, redundant validators, and stub references first, then build on the simpler base.
- ▌ Principle Guard The Context Window · edbertchan bundleApply when context is filling up: large outputs, long files, repeated reads, fan-out planning. Route bulk to subagents; keep summaries in the main thread, not raw payloads.
- ▌ Principle Never Block On The Human · edbertchan bundleApply when tempted to ask 'should I do X?' on reversible work. Proceed, present the result, let the human course-correct after the fact; reserve confirmation for irreversible actions.
- ▌ Principle Flag Your Own Corrections · edbertchan bundleApply whenever you are about to admit fault in any wording — a fact, number, claim, or check you already stated turns out to be wrong, vacuous, premature, or unverified. Say so explicitly rather than quietly citing the corrected value, and treat the admission itself as a reflect trigger. Auto-fires because no regex can enumerate the ways a model admits error.
- ▌ Principle Generalize From Rejection · edbertchan bundleApply when a mechanical gate — a lint, validator, blocked-command guard, or CI check — rejects your output for the same reason twice in one session. Fix the generation pattern producing the violation, not just the specific instance.
- ▌ Principle Sequence Verifiable Units · edbertchan bundleApply to multi-step work (sweeps, migrations, runs of similar edits) and to how you stack commits and PRs. Break work into small units that each end in a verifiable state, check each before the next, and order delivery so the sequence proves itself to a reviewer.
- ▌ Principle Outcome Oriented Execution · edbertchan bundleApply whenever a change threads a new required value through existing callers, not just named rewrites/migrations — a new required field, a new parameter, a new required IPC/API argument. Converge on the target shape in one slice; don't preserve smooth intermediate states with throwaway compatibility code.
- ▌ Principle Encode Lessons In Structure · edbertchan bundleApply when you catch yourself writing the same instruction a second time, or notice a recurring correction. Encode the rule as a lint, metadata flag, runtime check, or script instead of more text.
- ▌ Principle Assert Invariants Not Last Bug · edbertchan bundleApply after a bug ships past review or a passing grade/check: assert the general class of failure instead of patching only the specific instance that was caught. Use on /reflect, whenever a fix's own commit message reads like 'fix X for ticker/case Y', or whenever a fix makes a row disappear instead of shipping it with a status.
- ▌ Principle Separate Before Serializing Shared State · edbertchan bundleApply when concurrent actors might write to the same file, branch, key, or state object. Eliminate the sharing first; serialize structurally only when one shared writer is a real invariant.