Eric's personal skills for Claude Code, Codex, and
other coding agents. They ship as five independently installable plugins —
eng, comms, behavior, docs, and esond — so each bucket can be
toggled on and off independently, per project or context.
| Plugin | Bucket |
|---|---|
eng |
Writing software: review, git history, .NET hygiene, design, repo docs. |
comms |
External communications and human-facing writing. |
behavior |
Tweaks to the agent's behavior: output shaping. |
docs |
Documentation: Diátaxis-guided writing and auditing of docs. |
esond |
Personal to Eric: how he writes and works, not a general-purpose workflow. |
Two routes, depending on the agent. Pick one; installing through both leaves two copies of each skill.
Claude Code
From a terminal:
claude plugin marketplace add esond/skills
claude plugin install eng@esond
claude plugin install comms@esond
claude plugin install behavior@esond
claude plugin install docs@esond
claude plugin install esond@esondThe same commands work inside a Claude Code session as /plugin marketplace add esond/skills, /plugin install eng@esond, and so on.
The first line registers this repo as a marketplace; the rest install plugins from it. Install only the ones you want.
Codex and other agents
Install every skill with the skills.sh CLI:
npx skills@latest add esond/skillsOr one bucket at a time:
npx skills@latest add esond/skills/plugins/eng
npx skills@latest add esond/skills/plugins/comms
npx skills@latest add esond/skills/plugins/behavior
npx skills@latest add esond/skills/plugins/docs
npx skills@latest add esond/skills/plugins/esondCodex can also subscribe to the repo as a plugin marketplace with
codex plugin marketplace add esond/skills, then install buckets from
/plugins inside a Codex session.
Claude Code:
/plugin marketplace update esond
skills.sh:
npx skills updateEach plugin toggles independently in Claude Code:
/plugin disable eng@esond
/plugin enable eng@esond
/plugin uninstall eng@esond
A skills.sh install is plain files under .agents/skills/ (or
.claude/skills/); delete a skill's directory to remove it.
| Skill | What it does |
|---|---|
clean-unused-cpm-packages |
Removes unused <PackageVersion> entries from Directory.Packages.props files in a .NET CPM repo by scanning every .csproj/.props/.targets for PackageReference includes, then verifies via dotnet restore. |
inline-review |
Finds and addresses inline code-review comments left in the code, marked with a rev: prefix (// rev:, # rev:, etc.) — treats each like a GitHub review comment, makes the change or answers the question, then removes the ones it handled. |
pr-review-resolver |
Fetches unresolved GitHub PR review threads, submitted review bodies, and general comments, pushes back on the ones it disagrees with, fixes the rest, waits for CI, replies with the commit hash, resolves the threads, and re-requests review. It acts on its own and stops only for calls that need you; --ask shows the full triage for approval first. |
reorganize-branch-commits |
Rewrites a non-default branch's history into clean, logical commits — proposes groupings from the actual diffs, gets approval, backs up, then rebuilds via git reset + re-commit (or git rebase -i) and checks nothing was lost. |
righting-software-system-design |
Heavyweight, opt-in, interview-driven system design session faithful to Juval Löwy's Righting Software. Walks framing → use cases → interrogative volatility analysis → iDesign component mapping (Manager/Engine/ResourceAccess/Utility) → call-chain validation, surfacing unknown-unknowns along the way and producing a written recommendation report. |
sync-core-docs |
User-invoked router over sync-core-repo-docs: accepts --readme, --claude, --review (they combine; no flags runs all three) and hands off to that skill. Invoked by name (/eng:sync-core-docs in Claude Code), never auto-triggered. |
sync-core-repo-docs |
Creates or audits a repo's three core doc files — README.md, AGENTS.md (or CLAUDE.md), REVIEW.md — in that dependency order. Missing files are generated from the codebase; existing files are audited for accuracy and fixed after confirmation. README is checked for effective newcomer orientation, AGENTS.md defers to /init/claude-md-improver where available, and REVIEW.md holds reviewer guidance kept distinct from AGENTS.md. |
Each skill's description field enumerates the natural-language phrases that
trigger it — you don't invoke them by name, the agent picks them up from how
you phrase the request.
| Skill | What it does |
|---|---|
de-slop |
Deep-strips AI tells (claudisms) from a draft while preserving its meaning and the writer's voice. Sweeps the draft against a bundled snapshot of the living claudisms banlist, catches the constructions a text search misses, then re-sweeps its own rewrites. For writing that ships under your name. |
| Skill | What it does |
|---|---|
bro |
Restates the agent's last message in plain, jargon-free language. Explicit-only (disable-model-invocation: true) — invoked by name, not auto-triggered. |
durable-compact |
Before /compact, writes the session's goal, state, decisions, corrections, hard-won facts, and next step to a handoff file under ~/.claude/handoffs/, asks one question about borderline items, then prints a focused /compact line and a resume prompt. Explicit-only (disable-model-invocation: true). Claude Code only: not listed for skills.sh or Codex. |
| Hook | What it does |
|---|---|
SessionStart (compact) |
Runs load-handoff.sh, which loads the handoff durable-compact just wrote into the compacted context. It acts only in the session that ran the skill, and only within 30 minutes of it; other sessions and later compactions are untouched. The hook and the skill both delete pending pointers older than 30 minutes, such as one left behind by /clear. A copy of the skill used outside the plugin offers to add the same hook to settings.json. |
Skills for writing and auditing documentation with the
Diátaxis methodology: every piece of content is one of
four kinds — tutorial, how-to guide, reference, or explanation — and most
documentation problems come from one document trying to serve two needs at
once. The diataxis router applies the compass and hands off to the right
type skill; the four type skills each carry the craft rules for their kind.
| Skill | What it does |
|---|---|
diataxis |
The router: classifies what the user wants to write with the Diátaxis compass (action/cognition × acquisition/application) and loads the matching type skill. With --audit, assesses existing docs against the model and proposes relocations/splits without rewriting content. |
diataxis-explanation |
Writes or audits understanding-oriented discussion — architecture overviews, design rationale, concept docs. Consolidates the scattered "why", makes connections, admits opinion, keeps instruction and catalogs out. |
diataxis-how-to |
Writes or audits goal-oriented directions — runbooks, recipes, troubleshooting guides for competent practitioners. Names the goal in the title, omits the unnecessary, links out to reference and explanation. |
diataxis-reference |
Writes or audits information-oriented technical description — API/CLI/config docs. Austere and consistent, structured to mirror the machinery, describing without instructing or opining. |
diataxis-tutorial |
Writes or audits learning-oriented lessons — getting-started and onboarding walkthroughs. Single reliable path, visible results at every step, ruthlessly minimized explanation. |
Skills that encode how Eric specifically writes and works. Everything else in this marketplace is meant to be useful to anyone; this bucket is not. Enable it only where output should sound like him.
| Skill | What it does |
|---|---|
conversational-voice |
Writes Eric's side of a conversation with another person — Slack, DMs, email, PR and review comments — in his own voice. Direct and informal, in everyday words, with the answer up front for readers who skim. Applies to turns in an exchange, not to artifacts he authors like PR descriptions or commit messages. |
work-item-voice |
Writes issues in Eric's voice for any tracker — Jira, Linear, GitHub Issues — across the three kinds: features, tasks, and bugs. Never prescribes the implementation, so the developer keeps room to solve it. Features get behavior-driven framing (the "imagine it's 1922" test) with concrete domain detail; bugs get what happened / what was expected / how to see it. Language is written for non-native readers, and a sentence stays only if a developer needs it to start. Also covers editing an issue that already exists — inherit the voice, re-read the whole body after an append, and expect the tracker to rewrite your markdown. Drafts by default; filing a new issue is gated on confirmation, an edit at explicit request is not. |
Both voice skills read
writing-for-people.md
before they draft. conversational-voice owns the file and work-item-voice
reads it by relative path. It holds the rules that are not specific to either
one — the writer pays the compression cost, and how to hand the draft back.
Any voice skill added later reads the same file rather than restating the
rules.