compound-engineering
AI-powered development tools that get smarter with every use. Make each unit of engineering work easier than the last. Includes 28 specialized agents, 24 commands, and 15 skills.
View on GitHubTable of content
AI-powered development tools that get smarter with every use. Make each unit of engineering work easier than the last. Includes 28 specialized agents, 24 commands, and 15 skills.
Installation
npx claude-plugins install @EveryInc/every-marketplace/compound-engineering
Contents
Folders: agents, commands, skills
Files: CHANGELOG.md, CLAUDE.md, LICENSE, README.md
Documentation
AI-powered development tools that get smarter with every use. Make each unit of engineering work easier than the last.
Components
| Component | Count |
|---|---|
| Agents | 27 |
| Commands | 20 |
| Skills | 14 |
| MCP Servers | 1 |
Agents
Agents are organized into categories for easier discovery.
Review (14)
| Agent | Description |
|---|---|
agent-native-reviewer | Verify features are agent-native (action + context parity) |
architecture-strategist | Analyze architectural decisions and compliance |
code-simplicity-reviewer | Final pass for simplicity and minimalism |
data-integrity-guardian | Database migrations and data integrity |
data-migration-expert | Validate ID mappings match production, check for swapped values |
deployment-verification-agent | Create Go/No-Go deployment checklists for risky data changes |
dhh-rails-reviewer | Rails review from DHH’s perspective |
kieran-rails-reviewer | Rails code review with strict conventions |
kieran-python-reviewer | Python code review with strict conventions |
kieran-typescript-reviewer | TypeScript code review with strict conventions |
pattern-recognition-specialist | Analyze code for patterns and anti-patterns |
performance-oracle | Performance analysis and optimization |
security-sentinel | Security audits and vulnerability assessments |
julik-frontend-races-reviewer | Review JavaScript/Stimulus code for race conditions |
Research (4)
| Agent | Description |
|---|---|
best-practices-researcher | Gather external best practices and examples |
framework-docs-researcher | Research framework documentation and best practices |
git-history-analyzer | Analyze git history and code evolution |
repo-research-analyst | Research repository structure and conventions |
Design (3)
| Agent | Description |
|---|---|
design-implementation-reviewer | Verify UI implementations match Figma designs |
design-iterator | Iteratively refine UI through systematic design iterations |
figma-design-sync | Synchronize web implementations with Figma designs |
Workflow (5)
| Agent | Description |
|---|---|
bug-reproduction-validator | Systematically reproduce and validate bug reports |
every-style-editor | Edit content to conform to Every’s style guide |
lint | Run linting and code quality checks on Ruby and ERB files |
pr-comment-resolver | Address PR comments and implement fixes |
spec-flow-analyzer | Analyze user flows and identify gaps in specifications |
Docs (1)
| Agent | Description |
|---|---|
ankane-readme-writer | Create READMEs following Ankane-style template for Ruby gems |
Commands
Workflow Commands
Core workflow commands use workflows: prefix to avoid collisions with built-in commands:
| Command | Description |
|---|---|
/workflows:brainstorm | Explore requirements and approaches before planning |
/workflows:plan | Create implementation plans |
/workflows:review | Run comprehensive code reviews |
/workflows:work | Execute work items systematically |
/workflows:compound | Document solved problems to compound team knowledge |
Utility Commands
| Command | Description |
|---|---|
/deepen-plan | Enhance plans with parallel research agents for each section |
/changelog | Create engaging changelogs for recent merges |
/create-agent-skill | Create or edit Claude Code skills |
/generate_command | Generate new slash commands |
/heal-skill | Fix skill documentation issues |
/plan_review | Multi-agent plan review in parallel |
/report-bug | Report a bug in the plugin |
/reproduce-bug | Reproduce bugs using logs and console |
/resolve_parallel | Resolve TODO comments in parallel |
/resolve_pr_parallel | Resolve PR comments in parallel |
/resolve_todo_parallel | Resolve todos in parallel |
/triage | Triage and prioritize issues |
/test-browser | Run browser tests on PR-affected pages |
/xcode-test | Build and test iOS apps on simulator |
/feature-video | Record video walkthroughs and add to PR description |
Skills
Architecture & Design
| Skill | Description |
|---|---|
agent-native-architecture | Build AI agents using prompt-native architecture |
Development Tools
| Skill | Description |
|---|---|
andrew-kane-gem-writer | Write Ruby gems following Andrew Kane’s patterns |
compound-docs | Capture solved problems as categorized documentation |
create-agent-skills | Expert guidance for creating Claude Code skills |
dhh-rails-style | Write Ruby/Rails code in DHH’s 37signals style |
dspy-ruby | Build type-safe LLM applications with DSPy.rb |
frontend-design | Create production-grade frontend interfaces |
skill-creator | Guide for creating effective Claude Code skill |
…(truncated)
Included Skills
This plugin includes 5 skill definitions:
agent-browser
Browser automation using Vercel’s agent-browser CLI. Use when you need to interact with web pages, fill forms, take screenshots, or scrape data. Alternative to Playwright MCP - uses Bash commands with ref-based element selection. Triggers on “browse website”, “fill form”, “click button”, “take screenshot”, “scrape page”, “web automation”.
View skill definition
agent-browser: CLI Browser Automation
Vercel’s headless browser automation CLI designed for AI agents. Uses ref-based selection (@e1, @e2) from accessibility snapshots.
Setup Check
# Check installation
command -v agent-browser >/dev/null 2>&1 && echo "Installed" || echo "NOT INSTALLED - run: npm install -g agent-browser && agent-browser install"
Install if needed
npm install -g agent-browser
agent-browser install # Downloads Chromium
Core Workflow
The snapshot + ref pattern is optimal for LLMs:
- Navigate to URL
- Snapshot to get interactive elements with refs
- Interact using refs (@e1, @e2, etc.)
- Re-snapshot after navigation or DOM changes
# Step 1: Open URL
agent-browser open https://example.com
# Step 2: Get interactive elements with refs
agent-browser snapshot -i --json
# Step 3: Interact using refs
agent-browser click @e1
agent-browser fill @e2 "search query"
# Step 4: Re-snapshot after changes
agent-browser snapshot -i
Key Commands
Navigation
agent-browser open <url> # Navigate to URL
agent-browser back # Go back
agent-browser forward # Go forward
agent-browser reload # Reload page
agent-browser close # Close browser
Snapshots (Essential for AI)
agent-browser snapshot # Full accessibility tree
agent-browser snapshot -i # Interactive elements only (recommended)
agent-browser snap
...(truncated)
</details>
### agent-native-architecture
> Build applications where agents are first-class citizens. Use this skill when designing autonomous agents, creating MCP tools, implementing self-modifying systems, or building apps where features are outcomes achieved by agents operating in a loop.
<details>
<summary>View skill definition</summary>
<why_now>
## Why Now
Software agents work reliably now. Claude Code demonstrated that an LLM with access to bash and file tools, operating in a loop until an objective is achieved, can accomplish complex multi-step tasks autonomously.
The surprising discovery: **a really good coding agent is actually a really good general-purpose agent.** The same architecture that lets Claude Code refactor a codebase can let an agent organize your files, manage your reading list, or automate your workflows.
The Claude Code SDK makes this accessible. You can build applications where features aren't code you write—they're outcomes you describe, achieved by an agent with tools, operating in a loop until the outcome is reached.
This opens up a new field: software that works the way Claude Code works, applied to categories far beyond coding.
</why_now>
<core_principles>
## Core Principles
### 1. Parity
**Whatever the user can do through the UI, the agent should be able to achieve through tools.**
This is the foundational principle. Without it, nothing else matters.
Imagine you build a notes app with a beautiful interface for creating, organizing, and tagging notes. A user asks the agent: "Create a note summarizing my meeting and tag it as urgent."
If you built UI for creating notes but no agent capability to do the same, the agent is stuck. It might apologize or ask clarifying questions, but it can't help—even though the action is trivial for a human using the interface.
**The fix:** E
...(truncated)
</details>
### andrew-kane-gem-writer
> This skill should be used when writing Ruby gems following Andrew Kane's proven patterns and philosophy. It applies when creating new Ruby gems, refactoring existing gems, designing gem APIs, or when clean, minimal, production-ready Ruby library code is needed. Triggers on requests like "create a gem", "write a Ruby library", "design a gem API", or mentions of Andrew Kane's style.
<details>
<summary>View skill definition</summary>
# Andrew Kane Gem Writer
Write Ruby gems following Andrew Kane's battle-tested patterns from 100+ gems with 374M+ downloads (Searchkick, PgHero, Chartkick, Strong Migrations, Lockbox, Ahoy, Blazer, Groupdate, Neighbor, Blind Index).
## Core Philosophy
**Simplicity over cleverness.** Zero or minimal dependencies. Explicit code over metaprogramming. Rails integration without Rails coupling. Every pattern serves production use cases.
## Entry Point Structure
Every gem follows this exact pattern in `lib/gemname.rb`:
```ruby
# 1. Dependencies (stdlib preferred)
require "forwardable"
# 2. Internal modules
require_relative "gemname/model"
require_relative "gemname/version"
# 3. Conditional Rails (CRITICAL - never require Rails directly)
require_relative "gemname/railtie" if defined?(Rails)
# 4. Module with config and errors
module GemName
class Error < StandardError; end
class InvalidConfigError < Error; end
class << self
attr_accessor :timeout, :logger
attr_writer :client
end
self.timeout = 10 # Defaults set immediately
end
Class Macro DSL Pattern
The signature Kane pattern—single method call configures everything:
# Usage
class Product < ApplicationRecord
searchkick word_start: [:name]
end
# Implementation
module GemName
module Model
def gemname(**options)
unknown = options.keys - KNOWN_KEYWORDS
raise ArgumentError, "unknown keywords: #{unknown.join(", ")}" if unknown.any?
mod = Module.new
mod.module
...(truncated)
</details>
### brainstorming
> This skill should be used before implementing features, building components, or making changes. It guides exploring user intent, approaches, and design decisions before planning. Triggers on "let's brainstorm", "help me think through", "what should we build", "explore approaches", ambiguous feature requests, or when the user's request has multiple valid interpretations that need clarification.
<details>
<summary>View skill definition</summary>
# Brainstorming
This skill provides detailed process knowledge for effective brainstorming sessions that clarify **WHAT** to build before diving into **HOW** to build it.
## When to Use This Skill
Brainstorming is valuable when:
- Requirements are unclear or ambiguous
- Multiple approaches could solve the problem
- Trade-offs need to be explored with the user
- The user hasn't fully articulated what they want
- The feature scope needs refinement
Brainstorming can be skipped when:
- Requirements are explicit and detailed
- The user knows exactly what they want
- The task is a straightforward bug fix or well-defined change
## Core Process
### Phase 0: Assess Requirement Clarity
Before diving into questions, assess whether brainstorming is needed.
**Signals that requirements are clear:**
- User provided specific acceptance criteria
- User referenced existing patterns to follow
- User described exact behavior expected
- Scope is constrained and well-defined
**Signals that brainstorming is needed:**
- User used vague terms ("make it better", "add something like")
- Multiple reasonable interpretations exist
- Trade-offs haven't been discussed
- User seems unsure about the approach
If requirements are clear, suggest: "Your requirements seem clear. Consider proceeding directly to planning or implementation."
### Phase 1: Understand the Idea
Ask questions **one at a time** to understand the user's intent. Avoid overwhelming with multiple questions.
**Question Techniques:*
...(truncated)
</details>
### compound-docs
> Capture solved problems as categorized documentation with YAML frontmatter for fast lookup
<details>
<summary>View skill definition</summary>
# compound-docs Skill
**Purpose:** Automatically document solved problems to build searchable institutional knowledge with category-based organization (enum-validated problem types).
## Overview
This skill captures problem solutions immediately after confirmation, creating structured documentation that serves as a searchable knowledge base for future sessions.
**Organization:** Single-file architecture - each problem documented as one markdown file in its symptom category directory (e.g., `docs/solutions/performance-issues/n-plus-one-briefs.md`). Files use YAML frontmatter for metadata and searchability.
---
<critical_sequence name="documentation-capture" enforce_order="strict">
## 7-Step Process
<step number="1" required="true">
### Step 1: Detect Confirmation
**Auto-invoke after phrases:**
- "that worked"
- "it's fixed"
- "working now"
- "problem solved"
- "that did it"
**OR manual:** `/doc-fix` command
**Non-trivial problems only:**
- Multiple investigation attempts needed
- Tricky debugging that took time
- Non-obvious solution
- Future sessions would benefit
**Skip documentation for:**
- Simple typos
- Obvious syntax errors
- Trivial fixes immediately corrected
</step>
<step number="2" required="true" depends_on="1">
### Step 2: Gather Context
Extract from conversation history:
**Required information:**
- **Module name**: Which module or component had the problem
- **Symptom**: Observable error/behavior (exact error messages)
- **Investigation attempts
...(truncated)
</details>
## Source
[View on GitHub](https://github.com/EveryInc/compound-engineering-plugin)