By sglyon
Spencer Lyon's personal development tools. Includes 5 specialized review agents (Elixir, Ash, LiveView, Python, TypeScript), 8 skills, and 5 hooks that power a persistent per-agent expertise system — agents accumulate codebase-specific knowledge in .expertise/models/ across sessions via SessionStart, SubagentStart, SubagentStop, PostToolUse, and PreCompact hooks.
Use this agent when you need to review Ash Framework code with an extremely high quality bar. This agent should be invoked after implementing or modifying Ash resources, policies, actions, or state machines. The agent applies sglyon's strict Ash conventions learned from dozens of production policy bugs, race conditions, and silent authorization failures. Examples: - <example> Context: The user has just added a new Ash resource with policies. user: "I've created a new Notification resource with read/create/destroy actions" assistant: "Let me have sglyon review the Ash policies and actions for correctness." <commentary> New Ash resources need policy review for actor_present gaps, missing negative tests, and create-action exists() traps. </commentary> </example> - <example> Context: The user has modified state-transition actions on an Ash resource. user: "I added approve and reject actions to the ApprovalRequest resource" assistant: "Let me have sglyon review these state transitions for guard clauses and race conditions." <commentary> State transitions without status guards and CAS patterns are a recurring source of bugs. </commentary> </example> - <example> Context: The user has implemented a load-or-create pattern. user: "I added a function that checks if a record exists and creates it if not" assistant: "Let me have sglyon review this for race conditions and upsert patterns." <commentary> Read-then-create without DB unique constraints is always racy. The reviewer will check for proper upsert patterns. </commentary> </example>
Use this agent when you need to review Elixir code changes with an extremely high quality bar focused on runtime safety, process correctness, and BEAM-specific pitfalls. This agent should be invoked after implementing features, modifying GenServers, writing async code, or any Elixir module that handles external input. The agent applies sglyon's strict Elixir conventions learned from dozens of production bugs. Examples: - <example> Context: The user has just implemented a GenServer with public API functions. user: "I've added a new GenServer to manage MCP connections" assistant: "I've implemented the GenServer. Now let me have sglyon review this code to ensure runtime safety." <commentary> Since new GenServer code was written, use the sglyon-elixir-reviewer agent to check for incomplete side effects, Task.start misuse, and process safety issues. </commentary> </example> - <example> Context: The user has written code that processes LLM or external API responses. user: "I added a function to parse the tool call JSON from the LLM" assistant: "Let me have sglyon review this for atom safety and input handling." <commentary> External input handling requires checking for String.to_atom on untrusted input, closure stale state, and error propagation patterns. </commentary> </example> - <example> Context: The user has created async processing with Task or Agent. user: "I've added a Task to handle the background sync" assistant: "Let me have sglyon review the task usage to ensure correctness." <commentary> Task.start vs Task.async is a critical distinction. Use the reviewer to verify the right primitive is chosen. </commentary> </example>
Use this agent when you need to review Phoenix LiveView code with an extremely high quality bar. This agent should be invoked after implementing LiveView pages, form handling, file uploads, PubSub handlers, or stream-based UIs. The agent applies sglyon's strict LiveView conventions learned from dozens of production bugs including silent data loss, stale state, and crashed processes. Examples: - <example> Context: The user has just implemented a new LiveView with form handling. user: "I've created a new LiveView for managing user preferences" assistant: "Let me have sglyon review this LiveView for form input patterns and error handling." <commentary> New LiveViews need review for raw HTML elements, bang functions, authorize?: false, and proper error handling. </commentary> </example> - <example> Context: The user has added file upload handling to a LiveView. user: "I added file upload to the document editor" assistant: "Let me have sglyon review the upload handling for consume_uploaded_entries patterns." <commentary> consume_uploaded_entries has a non-obvious envelope-stripping behavior that causes silent failures. </commentary> </example> - <example> Context: The user has implemented a stream-based list with delete functionality. user: "I added the ability to delete items from the stream list" assistant: "Let me have sglyon review the stream state management." <commentary> Stream mutations don't update the parent struct assign — empty state guards on @resource.assoc are always stale. </commentary> </example>
Use this agent when you need to review Python code changes with an extremely high quality bar. This agent should be invoked after implementing features, modifying existing code, or creating new Python modules. The agent applies sglyon's strict Python conventions and taste preferences to ensure code meets exceptional standards.\n\nExamples:\n- <example>\n Context: The user has just implemented a new FastAPI endpoint.\n user: "I've added a new user registration endpoint"\n assistant: "I've implemented the registration endpoint. Now let me have sglyon review this code to ensure it meets our quality standards."\n <commentary>\n Since new endpoint code was written, use the sglyon-python-reviewer agent to apply sglyon's strict Python conventions and quality checks.\n </commentary>\n</example>\n- <example>\n Context: The user has refactored an existing service class.\n user: "Please refactor the EmailService class to handle attachments"\n assistant: "I've refactored the EmailService to handle attachments."\n <commentary>\n After modifying existing code, especially services, use sglyon-python-reviewer to ensure the changes meet sglyon's high bar for code quality.\n </commentary>\n assistant: "Let me have sglyon review these changes to the EmailService."\n</example>\n- <example>\n Context: The user has created new utility functions.\n user: "Create a data validation module"\n assistant: "I've created the data validation module."\n <commentary>\n New modules should be reviewed by sglyon-python-reviewer to check Pythonic patterns, type hints, and best practices.\n </commentary>\n assistant: "I'll have sglyon review this module to ensure it follows our conventions."\n</example>
Use this agent when you need to review TypeScript code changes with an extremely high quality bar. This agent should be invoked after implementing features, modifying existing code, or creating new TypeScript components. The agent applies sglyon's strict TypeScript conventions and taste preferences to ensure code meets exceptional standards.\n\nExamples:\n- <example>\n Context: The user has just implemented a new React component with hooks.\n user: "I've added a new UserProfile component with state management"\n assistant: "I've implemented the UserProfile component. Now let me have sglyon review this code to ensure it meets our quality standards."\n <commentary>\n Since new component code was written, use the sglyon-typescript-reviewer agent to apply sglyon's strict TypeScript conventions and quality checks.\n </commentary>\n</example>\n- <example>\n Context: The user has refactored an existing service module.\n user: "Please refactor the EmailService to handle attachments"\n assistant: "I've refactored the EmailService to handle attachments."\n <commentary>\n After modifying existing code, especially services, use sglyon-typescript-reviewer to ensure the changes meet sglyon's high bar for code quality.\n </commentary>\n assistant: "Let me have sglyon review these changes to the EmailService."\n</example>\n- <example>\n Context: The user has created new utility functions.\n user: "Create a validation utility for user input"\n assistant: "I've created the validation utility functions."\n <commentary>\n New utilities should be reviewed by sglyon-typescript-reviewer to check type safety, naming conventions, and TypeScript best practices.\n </commentary>\n assistant: "I'll have sglyon review these utilities to ensure they follow our conventions."\n</example>
Create charts from data files using the chartroom CLI. Use when asked to visualize data, plot a bar/line/scatter/pie/histogram chart, or embed charts in Showboat demo documents. Accepts CSV, TSV, JSON, JSONL, or SQLite input. Designed to pair with showboat (embed output as markdown/HTML images) and rodney. Triggers on "create a chart", "plot this data", "visualize", "bar chart", "line chart", "scatter plot", "pie chart", "histogram".
Enforces concise, chat-appropriate response style for agents in multi-agent workflows. Auto-activates when agents respond in team-lead orchestration contexts. Keeps responses focused and avoids verbose output.
Expert guidance for creating, writing, and refining Claude Code Skills. Use when working with SKILL.md files, authoring new skills, improving existing skills, or understanding skill structure and best practices.
Shows the status of the agent expertise system for the current project. Displays mental model file sizes, last-modified dates, and top-level keys. Use when asking about expertise status, agent knowledge state, or mental model overview.
Defines the behavioral contract for reading, updating, and maintaining per-agent mental model files in .expertise/models/. Auto-activates when agents work with .expertise/ files, or when the user asks about mental models, agent knowledge, or expertise.
Modifies files
Hook triggers on file write and edit operations
Uses power tools
Uses Bash, Write, or Edit tools
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Spencer Lyon's Claude Code plugin marketplace.
# Add the marketplace
/plugin marketplace add sglyon/sglyon-claude-plugins
# add a plugin from the marketplace
/plugin install sgldev
Personal development tools with persistent per-agent expertise.
Agents (5 specialized code reviewers with persistent mental models):
sglyon-ash-reviewer — Ash Frameworksglyon-elixir-reviewer — Elixirsglyon-liveview-reviewer — Phoenix LiveViewsglyon-python-reviewer — Pythonsglyon-typescript-reviewer — TypeScriptSkills (8):
chartroom — Chart generationshowboat — Demo document creationteam-lead — Team lead workflowsrodney — Browser automation via Chrome CDPcreate-agent-skills — Skill authoring toolkitmental-model — Per-agent expertise lifecycle managementexpertise — Dashboard showing agent knowledge stateconversational-response — Concise response style for multi-agent workflowsHooks (5):
.expertise/ exists in a projectadditionalContextEach agent maintains a personal mental model file (.expertise/models/<agent>.yaml) that persists across sessions. Agents accumulate codebase-specific patterns, architectural observations, and learnings over time.
Designed to complement the compound-engineering plugin — sgldev owns per-agent expertise while compound-engineering owns institutional knowledge (docs/solutions/).
Requirements: uv (hook scripts use PEP 723 inline metadata to manage dependencies automatically via uv run)
Setup in a project:
bash $CLAUDE_PLUGIN_ROOT/scripts/init-expertise.sh
This creates .expertise/ with empty model files for each agent. Models are git-tracked and grow as agents work on the project.
The expertise system delivers instructions automatically via hooks — no manual setup in agent files needed:
Both hooks run the same script, so every agent — plugin-provided or project-defined, main session or subagent — gets the full instructions automatically.
Any project can define its own agents in .claude/agents/ and have them participate in the expertise system. No changes to the agent's .md file are needed — the SubagentStart hook handles instruction injection automatically.
.expertise/config.yaml:agents:
- ash-reviewer
- elixir-reviewer
- liveview-reviewer
- python-reviewer
- typescript-reviewer
- team-lead
- my-custom-agent # your agent
bash $CLAUDE_PLUGIN_ROOT/scripts/init-expertise.sh
That's it. The hooks handle the rest.
npx claudepluginhub sglyon/sglyon-claude-plugins --plugin sgldevNon-technical progress summaries for Claude Code work (hides diffs/log noise).
Complete collection of battle-tested Claude Code configs from an Anthropic hackathon winner - agents, skills, hooks, and rules evolved over 10+ months of intensive daily use
Expert agents for specific programming languages (Python, Go, Rust, etc.)
Curate auto-memory, promote learnings to CLAUDE.md and rules, extract proven patterns into reusable skills.
Harness for Claude Code — skills, /harness:* slash commands, persona subagents, lifecycle hooks, and MCP tools without per-repo `harness setup`. Sibling plugins exist for Cursor, Gemini CLI, and Codex.
Agentic engineering done right — 57 structured workflows, 17 specialist agent personas, persistent memory across sessions, integrated learning partner, and impeccable UI design system. Works with Claude Code, Windsurf, Cursor, Gemini CLI, OpenCode, and Codex.