diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 4e22718b..ce7904d1 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -11,8 +11,8 @@ "plugins": [ { "name": "compound-engineering", - "description": "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.", - "version": "2.28.0", + "description": "AI-powered development tools that get smarter with every use. Make each unit of engineering work easier than the last. Includes 36 specialized agents, 24 commands, and 15 skills.", + "version": "2.29.0", "author": { "name": "Kieran Klaassen", "url": "https://github.com/kieranklaassen", diff --git a/CLAUDE.md b/CLAUDE.md index 92ec03d5..a2e89356 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -17,9 +17,9 @@ every-marketplace/ └── compound-engineering/ # The actual plugin ├── .claude-plugin/ │ └── plugin.json # Plugin metadata - ├── agents/ # 24 specialized AI agents - ├── commands/ # 13 slash commands - ├── skills/ # 11 skills + ├── agents/ # 36 specialized AI agents + ├── commands/ # 24 slash commands + ├── skills/ # 15 skills ├── mcp-servers/ # 2 MCP servers (playwright, context7) ├── README.md # Plugin documentation └── CHANGELOG.md # Version history diff --git a/plugins/compound-engineering/.claude-plugin/plugin.json b/plugins/compound-engineering/.claude-plugin/plugin.json index 97ea7426..9875c307 100644 --- a/plugins/compound-engineering/.claude-plugin/plugin.json +++ b/plugins/compound-engineering/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "compound-engineering", - "version": "2.28.0", - "description": "AI-powered development tools. 28 agents, 24 commands, 15 skills, 1 MCP server for code review, research, design, and workflow automation.", + "version": "2.29.0", + "description": "AI-powered development tools. 36 agents, 24 commands, 15 skills, 1 MCP server for code review, research, design, and workflow automation.", "author": { "name": "Kieran Klaassen", "email": "kieran@every.to", diff --git a/plugins/compound-engineering/CHANGELOG.md b/plugins/compound-engineering/CHANGELOG.md index dd1c7f9e..3607e50d 100644 --- a/plugins/compound-engineering/CHANGELOG.md +++ b/plugins/compound-engineering/CHANGELOG.md @@ -5,6 +5,25 @@ All notable changes to the compound-engineering plugin will be documented in thi The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.29.0] - 2026-01-30 + +### Added + +- **New Agent: `skill-architect`** - Expert guidance for designing and creating Claude Code Skills +- **New Agent: `frontend-design`** - Create production-grade frontend interfaces with high design quality +- **New Agent: `gemini-imagegen`** - Generate and edit images using the Gemini API (Gemini 2.0 Pro) +- **New Agent: `compound-docs`** - Capture solved problems as documentation with YAML frontmatter +- **New Agent: `agent-browser`** - Browser automation using Vercel's agent-browser CLI +- **New Agent: `brainstorming`** - Guided ideation flow to clarify intent before implementation +- **New Agent: `dspy-ruby`** - Build type-safe LLM applications with DSPy.rb +- **New Agent: `file-todos`** - Manage the file-based todo tracking system + +### Summary + +- 36 agents, 24 commands, 15 skills, 1 MCP server + +--- + ## [2.28.0] - 2026-01-21 ### Added diff --git a/plugins/compound-engineering/README.md b/plugins/compound-engineering/README.md index b1a710d3..a09354d7 100644 --- a/plugins/compound-engineering/README.md +++ b/plugins/compound-engineering/README.md @@ -6,9 +6,9 @@ AI-powered development tools that get smarter with every use. Make each unit of | Component | Count | |-----------|-------| -| Agents | 27 | -| Commands | 20 | -| Skills | 14 | +| Agents | 36 | +| Commands | 24 | +| Skills | 15 | | MCP Servers | 1 | ## Agents @@ -34,38 +34,47 @@ Agents are organized into categories for easier discovery. | `security-sentinel` | Security audits and vulnerability assessments | | `julik-frontend-races-reviewer` | Review JavaScript/Stimulus code for race conditions | -### Research (4) +### Research (5) | 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 | +| `learnings-researcher` | Research and extract key learnings from previous tasks | | `repo-research-analyst` | Research repository structure and conventions | -### Design (3) +### Design (5) | 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 | +| `frontend-design` | Create distinctive, production-grade frontend interfaces | +| `gemini-imagegen` | Generate and edit images using the Gemini API | -### Workflow (5) +### Workflow (10) | Agent | Description | |-------|-------------| +| `agent-browser` | Browser automation using Vercel's agent-browser CLI | +| `brainstorming` | Clarify requirements and explore approaches before implementation | | `bug-reproduction-validator` | Systematically reproduce and validate bug reports | +| `dspy-ruby` | Expert in DSPy.rb for building type-safe LLM applications | | `every-style-editor` | Edit content to conform to Every's style guide | +| `file-todos` | Manage the file-based todo tracking system | | `lint` | Run linting and code quality checks on Ruby and ERB files | | `pr-comment-resolver` | Address PR comments and implement fixes | +| `skill-architect` | Expert guidance for designing and creating Claude Code Skills | | `spec-flow-analyzer` | Analyze user flows and identify gaps in specifications | -### Docs (1) +### Docs (2) | Agent | Description | |-------|-------------| | `ankane-readme-writer` | Create READMEs following Ankane-style template for Ruby gems | +| `compound-docs` | Capture solved problems as categorized documentation | ## Commands @@ -85,12 +94,16 @@ Core workflow commands use `workflows:` prefix to avoid collisions with built-in | Command | Description | |---------|-------------| +| `/agent-native-audit` | Comprehensive agent-native architecture review | | `/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 | +| `/deploy-docs` | Deploy documentation to the production site | | `/generate_command` | Generate new slash commands | | `/heal-skill` | Fix skill documentation issues | +| `/lfg` | Full autonomous engineering workflow | | `/plan_review` | Multi-agent plan review in parallel | +| `/release-docs` | Release updated documentation to staging/production | | `/report-bug` | Report a bug in the plugin | | `/reproduce-bug` | Reproduce bugs using logs and console | | `/resolve_parallel` | Resolve TODO comments in parallel | diff --git a/plugins/compound-engineering/agents/design/frontend-design.md b/plugins/compound-engineering/agents/design/frontend-design.md new file mode 100644 index 00000000..a7aff095 --- /dev/null +++ b/plugins/compound-engineering/agents/design/frontend-design.md @@ -0,0 +1,33 @@ +--- +name: frontend-design +description: This agent should be used when creating distinctive, production-grade frontend interfaces with high design quality. It applies when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics. +color: indigo +model: inherit +--- + +You are an expert Frontend Design Specialist. Your goal is to create distinctive, production-grade interfaces that avoid "AI slop" aesthetics. You prioritize intentionality, bold creative choices, and meticulous detail. + +## Design Thinking + +Before coding, you must understand the context and commit to a BOLD aesthetic direction: +- **Purpose**: What problem does this interface solve? Who uses it? +- **Tone**: Pick an extreme: brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian, etc. +- **Differentiation**: What makes this UNFORGETTABLE? + +## Aesthetics Guidelines + +- **Typography**: Choose fonts that are beautiful, unique, and interesting. Pair a distinctive display font with a refined body font. +- **Color & Theme**: Commit to a cohesive aesthetic using CSS variables. Dominant colors with sharp accents. +- **Motion**: Prioritize CSS-only solutions for HTML. Focus on high-impact moments like staggered reveals. +- **Spatial Composition**: Use unexpected layouts, asymmetry, overlap, and generous negative space. +- **Backgrounds**: Create depth with gradient meshes, noise textures, or geometric patterns. + +## Implementation Standard + +Implement working code (HTML/CSS/JS, React, Vue, etc.) that is: +- Production-grade and functional +- Visually striking and memorable +- Cohesive with a clear aesthetic point-of-view +- Meticulously refined in every detail + +**CRITICAL**: NEVER use generic AI-generated aesthetics (Inter/Roboto fonts, purple gradients on white, cookie-cutter layouts). Interpret creatively and make unexpected choices genuinely designed for the context. diff --git a/plugins/compound-engineering/agents/design/gemini-imagegen.md b/plugins/compound-engineering/agents/design/gemini-imagegen.md new file mode 100644 index 00000000..f584fa0c --- /dev/null +++ b/plugins/compound-engineering/agents/design/gemini-imagegen.md @@ -0,0 +1,30 @@ +--- +name: gemini-imagegen +description: This agent should be used when generating and editing images using the Gemini API. It applies when creating images from text prompts, editing existing images, applying style transfers, or generating logos and mockups. Supports text-to-image, image editing, and multi-turn refinement. +color: blue +model: inherit +--- + +You are a Gemini Image Generation Expert. You specialize in using the Gemini API (Gemini 2.0 Pro) to generate, edit, and refine high-quality visual assets. + +## Core Capabilities + +- **Text-to-Image**: Generate images from detailed text prompts. +- **Image Editing**: Modify existing images by passing them along with text instructions. +- **Multi-Turn Refinement**: Use chat history to iteratively polish and adjust images. +- **Grounding**: Generate images based on real-time data using Google Search grounding. + +## Model & Settings + +- **Model**: Always use `gemini-3-pro-image-preview` unless explicitly requested otherwise. +- **Resolution**: Default to `1K` for speed; use `2K` or `4K` for critical quality. +- **Aspect Ratios**: Supports `1:1`, `16:9`, `9:16`, `21:9`, `4:3`, etc. + +## Best Practices + +- **Photorealism**: Include camera details (lens, lighting, angle, mood). +- **Stylization**: Specify art styles explicitly (cel-shaded, kawaii, minimal). +- **Text**: Be explicit about font style and placement for logos. +- **Format**: Always save as `.jpg` by default as the API returns JPEG data. Use `.png` only if explicitly requested and performing an internal conversion. + +**CRITICAL**: Verify image formats using the `file` command after saving. Never save a JPEG with a `.png` extension as it causes media type errors. diff --git a/plugins/compound-engineering/agents/docs/compound-docs.md b/plugins/compound-engineering/agents/docs/compound-docs.md new file mode 100644 index 00000000..815f6531 --- /dev/null +++ b/plugins/compound-engineering/agents/docs/compound-docs.md @@ -0,0 +1,25 @@ +--- +name: compound-docs +description: This agent should be used to capture solved problems as categorized documentation with YAML frontmatter for fast lookup. It applies when a problem has been solved and verified to build institutional knowledge. +color: green +model: inherit +--- + +You are a Documentation Architect specializing in building institutional knowledge. Your mission is to capture technical solutions immediately after they are verified, ensuring they are searchable, structured, and permanent. + +## Workflow + +1. **Detect Confirmation**: Activate when a user confirms a fix ("that worked", "fixed now"). +2. **Gather Context**: Extract module names, exact error messages, symptoms, root causes, and the final solution. +3. **Verify Existing**: Search `docs/solutions/` to avoid duplicates or to cross-reference. +4. **Generate**: Create a markdown file with a sanitized name: `[symptom]-[module]-[date].md`. +5. **Validate**: Ensure YAML frontmatter strictly follows the project schema (enum-validated problem types). + +## Quality Standards + +- **Precision**: Include exact error messages and specific file/line references. +- **Reasoning**: Document not just what was fixed, but WHY it happened and what failed during investigation. +- **Prevention**: Always include a section on how to prevent this specific issue in the future. +- **Examples**: Include before/after code blocks for clarity. + +**GOAL**: Every document you create should serve as a "Required Reading" lesson for future agents or human developers working on this module. diff --git a/plugins/compound-engineering/agents/workflow/agent-browser.md b/plugins/compound-engineering/agents/workflow/agent-browser.md new file mode 100644 index 00000000..f97dd195 --- /dev/null +++ b/plugins/compound-engineering/agents/workflow/agent-browser.md @@ -0,0 +1,24 @@ +--- +name: agent-browser +description: This agent should be used for browser automation using Vercel's agent-browser CLI. It applies when the user needs to interact with web pages, fill forms, take screenshots, or scrape data. Alternative to Playwright MCP. +color: blue +model: inherit +--- + +You are a Browser Automation Specialist. You use the `agent-browser` CLI to navigate the web, interact with pages, and extract data with high precision. + +## Core Workflow + +1. **Navigate**: Use `agent-browser open [url]` to start. +2. **Snapshot**: Use `agent-browser snapshot -i` to see interactive elements with refs (@e1, @e2). +3. **Interact**: Use `agent-browser click`, `fill`, and `type` with those refs. +4. **Iterate**: Re-snapshot after any page change or navigation. + +## Best Practices + +- **Ref-Based Selection**: Always use @refs from snapshots for reliability. +- **Wait for Load**: Use `agent-browser wait` when elements are dynamic. +- **Visual Audit**: Use `agent-browser screenshot` to verify the state of the page visually. +- **Parallelism**: Use named sessions (`--session [name]`) if you need to manage multiple sites simultaneously. + +**GOAL**: Execute complex multi-step web tasks (logins, form submissions, data scraping) autonomously and return structured results. diff --git a/plugins/compound-engineering/agents/workflow/brainstorming.md b/plugins/compound-engineering/agents/workflow/brainstorming.md new file mode 100644 index 00000000..c269cf19 --- /dev/null +++ b/plugins/compound-engineering/agents/workflow/brainstorming.md @@ -0,0 +1,23 @@ +--- +name: brainstorming +description: This agent should be used before implementing features or making significant changes. It guides exploring user intent, architectural approaches, and design decisions. Use this to clarify "WHAT" before "HOW". +color: orange +model: inherit +--- + +You are a Strategic Brainstorming Partner. Your goal is to clarify requirements and explore approaches BEFORE implementation begins. You prevent over-engineering by applying YAGNI (You Ain't Gonna Need It) principles. + +## Process + +1. **Assess Clarity**: Determine if requirements are already clear. If not, start the session. +2. **Understand Intent**: Ask targeted, one-at-a-time questions to uncover the core purpose, users, and constraints. +3. **Explore Approaches**: Propose 2-3 concrete approaches with explicit trade-offs (pros/cons). +4. **Capture Design**: Summarize decisions in a structured brainstorm document in `docs/brainstorms/`. + +## Questioning Techniques + +- **One at a time**: Never overwhelm the user with a list of questions. +- **Multiple Choice**: Provide clear options (a, b, c) when possible. +- **Start Broad**: Purpose first, implementation details last. + +**GOAL**: Arrive at a recommendation that is the simplest possible solution to the user's problem. diff --git a/plugins/compound-engineering/agents/workflow/dspy-ruby.md b/plugins/compound-engineering/agents/workflow/dspy-ruby.md new file mode 100644 index 00000000..8a35433b --- /dev/null +++ b/plugins/compound-engineering/agents/workflow/dspy-ruby.md @@ -0,0 +1,24 @@ +--- +name: dspy-ruby +description: This agent should be used for expert guidance on DSPy.rb for building type-safe, composable LLM applications. It applies when implementing AI features, signatures, and modules in Ruby. +color: red +model: inherit +--- + +You are a DSPy.rb Expert. You help developers "program LLMs, not prompt them" by using type-safe Ruby modules and signatures. + +## Core Expertise + +- **Signatures**: Defining clear input/output contracts with runtime type checking. +- **Modules**: Building composable, chainable predictors (Predict, ChainOfThought, ReAct). +- **Optimization**: Improving prompts automatically through MIPROv2 and metrics. +- **Providers**: Configuring OpenAI, Anthropic, Gemini, Ollama, and OpenRouter. + +## Best Practices + +- **Type Safety**: Use enums and specific types over generic Strings. +- **Reasoning**: Default to `ChainOfThought` for complex analysis. +- **Observability**: Integrate with Langfuse or OpenTelemetry for production monitoring. +- **Rails Integration**: Organize code in `app/llm/` and use standard initializers. + +**GOAL**: Replace manual prompt engineering with predictable, testable, and optimized Ruby code. diff --git a/plugins/compound-engineering/agents/workflow/file-todos.md b/plugins/compound-engineering/agents/workflow/file-todos.md new file mode 100644 index 00000000..9bce9bff --- /dev/null +++ b/plugins/compound-engineering/agents/workflow/file-todos.md @@ -0,0 +1,23 @@ +--- +name: file-todos +description: This agent should be used to manage the file-based todo tracking system in the todos/ directory. It applies when creating todos, managing lifecycle (pending -> ready -> complete), and triaging work. +color: yellow +model: inherit +--- + +You are a Project Work Manager. You maintain the structured `todos/` directory to track code review feedback, technical debt, and feature requests. + +## Workflow + +1. **Creation**: Create new todos using the kebab-case pattern: `{id}-{status}-{priority}-{desc}.md`. +2. **Triage**: Use the `/triage` command to approve pending items and move them to `ready`. +3. **Execution**: Add dated work log entries to todos while working on them. +4. **Completion**: Move todos to `complete` once all acceptance criteria are met. + +## Key Standards + +- **Templates**: Always start from the `todo-template.md` asset. +- **Dependencies**: Explicitly track blockers in the YAML frontmatter. +- **Persistence**: Unlike in-memory tasks, these todos are source-controlled and persist across sessions. + +**GOAL**: Ensure no feedback or technical debt is lost by converting every non-trivial finding into a tracked work item. diff --git a/plugins/compound-engineering/agents/workflow/skill-architect.md b/plugins/compound-engineering/agents/workflow/skill-architect.md new file mode 100644 index 00000000..71fab743 --- /dev/null +++ b/plugins/compound-engineering/agents/workflow/skill-architect.md @@ -0,0 +1,32 @@ +--- +name: skill-architect +description: This agent should be used for expert guidance when designing, creating, and refining Claude Code Skills. It applies when authoring new skills, modularizing capabilities, or ensuring adherence to official specifications and best practices. +color: purple +model: inherit +--- + +You are a Skill Architect. You specialize in the creation, optimization, and systematic design of Claude Code Skills following the official Anthropic specification. + +## Core Principles + +- **Skills are Prompts**: Apply all prompting best practices. Be clear and direct. +- **Progressive Disclosure**: Keep `SKILL.md` under 500 lines. Use `references/` for depth. +- **Discovery**: Descriptions must include both WHAT it does and WHEN to trigger it. +- **Modularity**: Help users extract general capabilities into self-contained "Skill" packages. + +## Anatomy of a Skill + +- **SKILL.md**: The entry point containing metadata and instructions. +- **scripts/**: Executable code for deterministic reliability. +- **references/**: Contextual docs loaded as needed. +- **assets/**: Files like templates or icons used in output. + +## Process + +1. **Discovery & Planning**: Understand concrete examples of how the skill will be used. +2. **Initialization**: Use utility scripts (like `init_skill.py`) to generate the template structure. +3. **Refinement**: Edit the instructions using imperative, objective language and standard headings. +4. **Structure**: Use names like `processing-pdfs` or `reviewing-code` (gerund naming). +5. **Packaging & Validation**: Validate references and package the skill for distribution. + +**GOAL**: Transform general capabilities into specialized, modular agent skills that are token-efficient, highly reliable, and easy to maintain. diff --git a/plugins/compound-engineering/commands/workflows/compound.md b/plugins/compound-engineering/commands/workflows/compound.md index 40426855..e9e71639 100644 --- a/plugins/compound-engineering/commands/workflows/compound.md +++ b/plugins/compound-engineering/commands/workflows/compound.md @@ -66,7 +66,7 @@ This command launches multiple specialized subagents IN PARALLEL to maximize eff - **performance_issue** → `performance-oracle` - **security_issue** → `security-sentinel` - **database_issue** → `data-integrity-guardian` - - **test_failure** → `cora-test-reviewer` + - **test_failure** → `test-quality-reviewer` - Any code-heavy issue → `kieran-rails-reviewer` + `code-simplicity-reviewer` ## What It Captures @@ -184,7 +184,7 @@ Based on problem type, these agents can enhance documentation: ### Specific Domain Experts - **performance-oracle**: Analyzes performance_issue category solutions - **security-sentinel**: Reviews security_issue solutions for vulnerabilities -- **cora-test-reviewer**: Creates test cases for prevention strategies +- **test-quality-reviewer**: Creates test cases for prevention strategies - **data-integrity-guardian**: Reviews database_issue migrations and queries ### Enhancement & Documentation diff --git a/plugins/compound-engineering/commands/workflows/work.md b/plugins/compound-engineering/commands/workflows/work.md index 36f95ae7..7b2e3a53 100644 --- a/plugins/compound-engineering/commands/workflows/work.md +++ b/plugins/compound-engineering/commands/workflows/work.md @@ -181,7 +181,7 @@ This command takes a work document (plan, specification, or todo file) and execu - **kieran-rails-reviewer**: Verify Rails conventions (Rails projects) - **performance-oracle**: Check for performance issues - **security-sentinel**: Scan for security vulnerabilities - - **cora-test-reviewer**: Review test quality (Rails projects with comprehensive test coverage) + - **test-quality-reviewer**: Review test quality (Rails projects with comprehensive test coverage) Run reviewers in parallel with Task tool: diff --git a/plugins/compound-engineering/scripts/verify_plugin_metadata.py b/plugins/compound-engineering/scripts/verify_plugin_metadata.py new file mode 100644 index 00000000..f032c89d --- /dev/null +++ b/plugins/compound-engineering/scripts/verify_plugin_metadata.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python3 +import os +import json +import re +import sys + +def count_md_files(directory): + count = 0 + for root, dirs, files in os.walk(directory): + for file in files: + if file.endswith(".md"): + count += 1 + return count + +def count_directories(directory): + if not os.path.exists(directory): + return 0 + return len([d for d in os.listdir(directory) if os.path.isdir(os.path.join(directory, d))]) + +def main(): + plugin_dir = "plugins/compound-engineering" + agents_dir = os.path.join(plugin_dir, "agents") + commands_dir = os.path.join(plugin_dir, "commands") + skills_dir = os.path.join(plugin_dir, "skills") + + actual_agents = count_md_files(agents_dir) + actual_commands = count_md_files(commands_dir) + actual_skills = count_directories(skills_dir) + + print(f"Actual counts: Agents={actual_agents}, Commands={actual_commands}, Skills={actual_skills}") + + # Check plugin.json + with open(os.path.join(plugin_dir, ".claude-plugin/plugin.json"), "r") as f: + plugin_json = json.load(f) + description = plugin_json.get("description", "") + + # Match "X agents, Y commands, Z skills" + match = re.search(r"(\d+) agents, (\d+) commands, (\d+) skills", description) + if match: + json_agents, json_commands, json_skills = map(int, match.groups()) + if json_agents != actual_agents or json_commands != actual_commands or json_skills != actual_skills: + print(f"❌ plugin.json counts MISMATCH: {json_agents}, {json_commands}, {json_skills}") + else: + print("✅ plugin.json counts match actual files.") + else: + print("⚠️ Could not find counts in plugin.json description.") + + # Check marketplace.json + with open(".claude-plugin/marketplace.json", "r") as f: + m_json = json.load(f) + for p in m_json.get("plugins", []): + if p["name"] == "compound-engineering": + m_desc = p.get("description", "") + m_match = re.search(r"(\d+) specialized agents, (\d+) commands, and (\d+) skills", m_desc) + if m_match: + m_agents, m_commands, m_skills = map(int, m_match.groups()) + if m_agents != actual_agents or m_commands != actual_commands or m_skills != actual_skills: + print(f"❌ marketplace.json counts MISMATCH: {m_agents}, {m_commands}, {m_skills}") + else: + print("✅ marketplace.json counts match actual files.") + else: + print("⚠️ Could not find counts in marketplace.json description.") + + # Check README.md + with open(os.path.join(plugin_dir, "README.md"), "r") as f: + readme = f.read() + # Find the table rows + agents_match = re.search(r"\| Agents \| (\d+) \|", readme) + commands_match = re.search(r"\| Commands \| (\d+) \|", readme) + skills_match = re.search(r"\| Skills \| (\d+) \|", readme) + + if agents_match and commands_match and skills_match: + r_agents = int(agents_match.group(1)) + r_commands = int(commands_match.group(1)) + r_skills = int(skills_match.group(1)) + + if r_agents != actual_agents or r_commands != actual_commands or r_skills != actual_skills: + print(f"❌ README.md table counts MISMATCH: {r_agents}, {r_commands}, {r_skills}") + else: + print("✅ README.md table counts match actual files.") + else: + print("⚠️ Could not find component count table in README.md.") + +if __name__ == "__main__": + main() diff --git a/plugins/compound-engineering/skills/compound-docs/SKILL.md b/plugins/compound-engineering/skills/compound-docs/SKILL.md index a7dde63f..e9508f14 100644 --- a/plugins/compound-engineering/skills/compound-docs/SKILL.md +++ b/plugins/compound-engineering/skills/compound-docs/SKILL.md @@ -186,7 +186,7 @@ DOC_PATH="docs/solutions/${CATEGORY}/${FILENAME}" # Create directory if needed mkdir -p "docs/solutions/${CATEGORY}" -# Write documentation using template from assets/resolution-template.md +# Write documentation using template from [resolution-template.md](./assets/resolution-template.md) # (Content populated with Step 2 context and validated YAML frontmatter) ``` @@ -194,7 +194,7 @@ mkdir -p "docs/solutions/${CATEGORY}" - Single file in category directory - Enum validation ensures consistent categorization -**Create documentation:** Populate the structure from `assets/resolution-template.md` with context gathered in Step 2 and validated YAML frontmatter from Step 5. +**Create documentation:** Populate the structure from [resolution-template.md](./assets/resolution-template.md) with context gathered in Step 2 and validated YAML frontmatter from Step 5. @@ -249,7 +249,7 @@ But **NEVER auto-promote**. User decides via decision menu (Option 2). **Template for critical pattern addition:** -When user selects Option 2 (Add to Required Reading), use the template from `assets/critical-pattern-template.md` to structure the pattern entry. Number it sequentially based on existing patterns in `docs/solutions/patterns/critical-patterns.md`. +When user selects Option 2 (Add to Required Reading), use the template from [critical-pattern-template.md](./assets/critical-pattern-template.md) to structure the pattern entry. Number it sequentially based on existing patterns in `docs/solutions/patterns/critical-patterns.md`. diff --git a/plugins/compound-engineering/skills/compound-docs/schema.yaml b/plugins/compound-engineering/skills/compound-docs/schema.yaml index 0396b14d..c69a5b3e 100644 --- a/plugins/compound-engineering/skills/compound-docs/schema.yaml +++ b/plugins/compound-engineering/skills/compound-docs/schema.yaml @@ -1,10 +1,10 @@ -# CORA Documentation Schema +# Documentation Schema # This schema MUST be validated before writing any documentation file required_fields: module: type: string - description: "Module/area of CORA (e.g., 'Email Processing', 'Brief System', 'Authentication')" + description: "Module/area (e.g., 'Email Processing', 'Brief System', 'Authentication')" examples: - "Email Processing" - "Brief System" @@ -54,7 +54,7 @@ required_fields: - testing_framework # Test setup, fixtures, VCR - documentation # README, guides, inline docs - tooling # Scripts, generators, CLI tools - description: "CORA component involved" + description: "Component involved" symptoms: type: array[string] @@ -133,7 +133,7 @@ optional_fields: - "turbo-stream" validation_rules: - - "module must be a valid CORA module name" + - "module must be a valid module name" - "date must be in YYYY-MM-DD format" - "problem_type must match one of the enum values" - "component must match one of the enum values" diff --git a/plugins/compound-engineering/skills/dspy-ruby/SKILL.md b/plugins/compound-engineering/skills/dspy-ruby/SKILL.md index 359a642d..12dbd7bd 100644 --- a/plugins/compound-engineering/skills/dspy-ruby/SKILL.md +++ b/plugins/compound-engineering/skills/dspy-ruby/SKILL.md @@ -42,7 +42,7 @@ class EmailClassificationSignature < DSPy::Signature end ``` -**Templates**: See `assets/signature-template.rb` for comprehensive examples including: +**Templates**: See [signature-template.rb](./assets/signature-template.rb) for comprehensive examples including: - Basic signatures with multiple field types - Vision signatures for multimodal tasks - Sentiment analysis signatures @@ -54,7 +54,7 @@ end - Include field descriptions with `desc:` parameter - Prefer specific types over generic String when possible -**Full documentation**: See `references/core-concepts.md` sections on Signatures and Type Safety. +**Full documentation**: See [core-concepts.md](./references/core-concepts.md) sections on Signatures and Type Safety. ### 2. Composable Modules @@ -79,7 +79,7 @@ class EmailProcessor < DSPy::Module end ``` -**Templates**: See `assets/module-template.rb` for comprehensive examples including: +**Templates**: See [module-template.rb](./assets/module-template.rb) for comprehensive examples including: - Basic modules with single predictors - Multi-step pipelines that chain modules - Modules with conditional logic @@ -105,7 +105,7 @@ class Pipeline < DSPy::Module end ``` -**Full documentation**: See `references/core-concepts.md` sections on Modules and Module Composition. +**Full documentation**: See [core-concepts.md](./references/core-concepts.md) sections on Modules and Module Composition. ### 3. Multiple Predictor Types @@ -145,7 +145,7 @@ result = predictor.forward(task: "Calculate factorial of 5") - **ReAct**: Tasks requiring external tools (search, calculation, API calls) - **CodeAct**: Tasks best solved with generated code -**Full documentation**: See `references/core-concepts.md` section on Predictors. +**Full documentation**: See [core-concepts.md](./references/core-concepts.md) section on Predictors. ### 4. LLM Provider Configuration @@ -177,7 +177,7 @@ DSPy.configure do |c| end ``` -**Templates**: See `assets/config-template.rb` for comprehensive examples including: +**Templates**: See [config-template.rb](./assets/config-template.rb) for comprehensive examples including: - Environment-based configuration - Multi-model setups for different tasks - Configuration with observability (OpenTelemetry, Langfuse) @@ -200,7 +200,7 @@ end - Production simple tasks: gpt-4o-mini, claude-3-haiku, gemini-1.5-flash - Production complex tasks: gpt-4o, claude-3-5-sonnet, gemini-1.5-pro -**Full documentation**: See `references/providers.md` for all configuration options, provider-specific features, and troubleshooting. +**Full documentation**: See [providers.md](./references/providers.md) for all configuration options, provider-specific features, and troubleshooting. ### 5. Multimodal & Vision Support @@ -245,7 +245,7 @@ DSPy::Image.from_base64(base64_data, mime_type: "image/jpeg") - Anthropic, Gemini: Base64 or file loading only - Ollama: Limited multimodal depending on model -**Full documentation**: See `references/core-concepts.md` section on Multimodal Support. +**Full documentation**: See [core-concepts.md](./references/core-concepts.md) section on Multimodal Support. ### 6. Testing LLM Applications @@ -281,7 +281,7 @@ end - Test edge cases (empty inputs, special characters, long texts) - Integration test complete workflows -**Full documentation**: See `references/optimization.md` section on Testing. +**Full documentation**: See [optimization.md](./references/optimization.md) section on Testing. ### 7. Optimization & Improvement @@ -324,7 +324,7 @@ approach_a_score = evaluate_approach(ChainOfThoughtModule, test_set) approach_b_score = evaluate_approach(ReActModule, test_set) ``` -**Full documentation**: See `references/optimization.md` section on Optimization. +**Full documentation**: See [optimization.md](./references/optimization.md) section on Optimization. ### 8. Observability & Monitoring @@ -361,7 +361,7 @@ end - Error rate tracking - Custom logging -**Full documentation**: See `references/optimization.md` section on Observability. +**Full documentation**: See [optimization.md](./references/optimization.md) section on Observability. ## Quick Start Workflow @@ -372,7 +372,7 @@ end gem install dspy dspy-openai # or dspy-anthropic, dspy-gemini ``` -2. **Configure LLM provider** (see `assets/config-template.rb`): +2. **Configure LLM provider** (see [config-template.rb](./assets/config-template.rb)): ```ruby require 'dspy' @@ -382,7 +382,7 @@ DSPy.configure do |c| end ``` -3. **Create a signature** (see `assets/signature-template.rb`): +3. **Create a signature** (see [signature-template.rb](./assets/signature-template.rb)): ```ruby class MySignature < DSPy::Signature description "Clear description of task" @@ -397,7 +397,7 @@ class MySignature < DSPy::Signature end ``` -4. **Create a module** (see `assets/module-template.rb`): +4. **Create a module** (see [module-template.rb](./assets/module-template.rb)): ```ruby class MyModule < DSPy::Module def initialize @@ -418,7 +418,7 @@ result = module_instance.forward(input_field: "test") puts result[:output_field] ``` -6. **Add tests** (see `references/optimization.md`): +6. **Add tests** (see [optimization.md](./references/optimization.md)): ```ruby RSpec.describe MyModule do it 'produces expected output' do @@ -436,7 +436,7 @@ gem 'dspy' gem 'dspy-openai' # or other provider ``` -2. **Create initializer** at `config/initializers/dspy.rb` (see `assets/config-template.rb` for full example): +2. **Create initializer** at `config/initializers/dspy.rb` (see [config-template.rb](./assets/config-template.rb) for full example): ```ruby require 'dspy' diff --git a/plugins/compound-engineering/skills/gemini-imagegen/SKILL.md b/plugins/compound-engineering/skills/gemini-imagegen/SKILL.md index e9e54b82..6367220d 100644 --- a/plugins/compound-engineering/skills/gemini-imagegen/SKILL.md +++ b/plugins/compound-engineering/skills/gemini-imagegen/SKILL.md @@ -1,9 +1,9 @@ --- name: gemini-imagegen -description: This skill should be used when generating and editing images using the Gemini API (Nano Banana Pro). It applies when creating images from text prompts, editing existing images, applying style transfers, generating logos with text, creating stickers, product mockups, or any image generation/manipulation task. Supports text-to-image, image editing, multi-turn refinement, and composition from multiple reference images. +description: This skill should be used when generating and editing images using the Gemini API (Gemini 2.0 Pro). It applies when creating images from text prompts, editing existing images, applying style transfers, generating logos with text, creating stickers, product mockups, or any image generation/manipulation task. Supports text-to-image, image editing, multi-turn refinement, and composition from multiple reference images. --- -# Gemini Image Generation (Nano Banana Pro) +# Gemini Image Generation (Gemini 2.0 Pro) Generate and edit images using Google's Gemini API. The environment variable `GEMINI_API_KEY` must be set. diff --git a/plugins/compound-engineering/skills/skill-creator/SKILL.md b/plugins/compound-engineering/skills/skill-creator/SKILL.md index 40699358..5e0198fb 100644 --- a/plugins/compound-engineering/skills/skill-creator/SKILL.md +++ b/plugins/compound-engineering/skills/skill-creator/SKILL.md @@ -50,7 +50,7 @@ skill-name/ Executable code (Python/Bash/etc.) for tasks that require deterministic reliability or are repeatedly rewritten. - **When to include**: When the same code is being rewritten repeatedly or deterministic reliability is needed -- **Example**: `scripts/rotate_pdf.py` for PDF rotation tasks +- **Example**: [rotate_pdf.py](./scripts/rotate_pdf.py) for PDF rotation tasks - **Benefits**: Token efficient, deterministic, may be executed without loading into context - **Note**: Scripts may still need to be read by Claude for patching or environment-specific adjustments @@ -59,7 +59,7 @@ Executable code (Python/Bash/etc.) for tasks that require deterministic reliabil Documentation and reference material intended to be loaded as needed into context to inform Claude's process and thinking. - **When to include**: For documentation that Claude should reference while working -- **Examples**: `references/finance.md` for financial schemas, `references/mnda.md` for company NDA template, `references/policies.md` for company policies, `references/api_docs.md` for API specifications +- **Examples**: [finance.md](./references/finance.md) for financial schemas, [mnda.md](./references/mnda.md) for company NDA template, [policies.md](./references/policies.md) for company policies, [api_docs.md](./references/api_docs.md) for API specifications - **Use cases**: Database schemas, API documentation, domain knowledge, company policies, detailed workflow guides - **Benefits**: Keeps SKILL.md lean, loaded only when Claude determines it's needed - **Best practice**: If files are large (>10k words), include grep search patterns in SKILL.md @@ -70,7 +70,7 @@ Documentation and reference material intended to be loaded as needed into contex Files not intended to be loaded into context, but rather used within the output Claude produces. - **When to include**: When the skill needs files that will be used in the final output -- **Examples**: `assets/logo.png` for brand assets, `assets/slides.pptx` for PowerPoint templates, `assets/frontend-template/` for HTML/React boilerplate, `assets/font.ttf` for typography +- **Examples**: [logo.png](./assets/logo.png) for brand assets, [slides.pptx](./assets/slides.pptx) for PowerPoint templates, [frontend-template/](./assets/frontend-template/) for HTML/React boilerplate, [font.ttf](./assets/font.ttf) for typography - **Use cases**: Templates, images, icons, boilerplate code, fonts, sample documents that get copied or modified - **Benefits**: Separates output resources from documentation, enables Claude to use files without loading them into context @@ -115,17 +115,17 @@ To turn concrete examples into an effective skill, analyze each example by: Example: When building a `pdf-editor` skill to handle queries like "Help me rotate this PDF," the analysis shows: 1. Rotating a PDF requires re-writing the same code each time -2. A `scripts/rotate_pdf.py` script would be helpful to store in the skill +2. A [rotate_pdf.py](./scripts/rotate_pdf.py) script would be helpful to store in the skill Example: When designing a `frontend-webapp-builder` skill for queries like "Build me a todo app" or "Build me a dashboard to track my steps," the analysis shows: 1. Writing a frontend webapp requires the same boilerplate HTML/React each time -2. An `assets/hello-world/` template containing the boilerplate HTML/React project files would be helpful to store in the skill +2. An [hello-world/](./assets/hello-world/) template containing the boilerplate HTML/React project files would be helpful to store in the skill Example: When building a `big-query` skill to handle queries like "How many users have logged in today?" the analysis shows: 1. Querying BigQuery requires re-discovering the table schemas and relationships each time -2. A `references/schema.md` file documenting the table schemas would be helpful to store in the skill +2. A [schema.md](./references/schema.md) file documenting the table schemas would be helpful to store in the skill To establish the skill's contents, analyze each concrete example to create a list of the reusable resources to include: scripts, references, and assets.