@every-env/compound-plugin 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/docs/plans/2026-02-08-refactor-reduce-plugin-context-token-usage-plan.md +212 -0
  3. package/package.json +1 -1
  4. package/plugins/compound-engineering/.claude-plugin/plugin.json +2 -2
  5. package/plugins/compound-engineering/CHANGELOG.md +26 -0
  6. package/plugins/compound-engineering/agents/design/design-implementation-reviewer.md +16 -1
  7. package/plugins/compound-engineering/agents/design/design-iterator.md +28 -1
  8. package/plugins/compound-engineering/agents/design/figma-design-sync.md +19 -1
  9. package/plugins/compound-engineering/agents/docs/ankane-readme-writer.md +16 -1
  10. package/plugins/compound-engineering/agents/research/best-practices-researcher.md +16 -1
  11. package/plugins/compound-engineering/agents/research/framework-docs-researcher.md +16 -1
  12. package/plugins/compound-engineering/agents/research/git-history-analyzer.md +16 -1
  13. package/plugins/compound-engineering/agents/research/learnings-researcher.md +22 -1
  14. package/plugins/compound-engineering/agents/research/repo-research-analyst.md +22 -1
  15. package/plugins/compound-engineering/agents/review/agent-native-reviewer.md +16 -1
  16. package/plugins/compound-engineering/agents/review/architecture-strategist.md +16 -1
  17. package/plugins/compound-engineering/agents/review/code-simplicity-reviewer.md +16 -1
  18. package/plugins/compound-engineering/agents/review/data-integrity-guardian.md +16 -1
  19. package/plugins/compound-engineering/agents/review/data-migration-expert.md +16 -1
  20. package/plugins/compound-engineering/agents/review/deployment-verification-agent.md +16 -1
  21. package/plugins/compound-engineering/agents/review/dhh-rails-reviewer.md +22 -1
  22. package/plugins/compound-engineering/agents/review/julik-frontend-races-reviewer.md +20 -21
  23. package/plugins/compound-engineering/agents/review/kieran-python-reviewer.md +30 -1
  24. package/plugins/compound-engineering/agents/review/kieran-rails-reviewer.md +30 -1
  25. package/plugins/compound-engineering/agents/review/kieran-typescript-reviewer.md +30 -1
  26. package/plugins/compound-engineering/agents/review/pattern-recognition-specialist.md +16 -1
  27. package/plugins/compound-engineering/agents/review/performance-oracle.md +28 -1
  28. package/plugins/compound-engineering/agents/review/schema-drift-detector.md +16 -1
  29. package/plugins/compound-engineering/agents/review/security-sentinel.md +22 -1
  30. package/plugins/compound-engineering/agents/workflow/bug-reproduction-validator.md +16 -1
  31. package/plugins/compound-engineering/agents/workflow/every-style-editor.md +1 -1
  32. package/plugins/compound-engineering/agents/workflow/pr-comment-resolver.md +16 -1
  33. package/plugins/compound-engineering/agents/workflow/spec-flow-analyzer.md +22 -1
  34. package/plugins/compound-engineering/commands/agent-native-audit.md +1 -0
  35. package/plugins/compound-engineering/commands/changelog.md +1 -0
  36. package/plugins/compound-engineering/commands/create-agent-skill.md +1 -0
  37. package/plugins/compound-engineering/commands/deploy-docs.md +1 -0
  38. package/plugins/compound-engineering/commands/generate_command.md +1 -0
  39. package/plugins/compound-engineering/commands/heal-skill.md +1 -0
  40. package/plugins/compound-engineering/commands/lfg.md +1 -0
  41. package/plugins/compound-engineering/commands/release-docs.md +1 -0
  42. package/plugins/compound-engineering/commands/report-bug.md +1 -0
  43. package/plugins/compound-engineering/commands/reproduce-bug.md +1 -0
  44. package/plugins/compound-engineering/commands/resolve_parallel.md +1 -0
  45. package/plugins/compound-engineering/commands/slfg.md +1 -0
  46. package/plugins/compound-engineering/commands/technical_review.md +1 -0
  47. package/plugins/compound-engineering/commands/{xcode-test.md → test-xcode.md} +2 -1
  48. package/plugins/compound-engineering/commands/triage.md +1 -0
  49. package/plugins/compound-engineering/skills/compound-docs/SKILL.md +1 -0
  50. package/plugins/compound-engineering/skills/file-todos/SKILL.md +1 -0
  51. package/plugins/compound-engineering/skills/orchestrating-swarms/SKILL.md +1 -0
  52. package/plugins/compound-engineering/skills/skill-creator/SKILL.md +1 -0
  53. package/src/converters/claude-to-codex.ts +2 -1
  54. package/src/converters/claude-to-opencode.ts +1 -0
  55. package/src/parsers/claude.ts +4 -0
  56. package/src/types/claude.ts +2 -0
  57. package/tests/claude-parser.test.ts +24 -2
  58. package/tests/codex-converter.test.ts +38 -0
  59. package/tests/converter.test.ts +15 -0
  60. package/tests/fixtures/sample-plugin/commands/disabled-command.md +7 -0
  61. package/tests/fixtures/sample-plugin/skills/disabled-skill/SKILL.md +7 -0
@@ -11,8 +11,8 @@
11
11
  "plugins": [
12
12
  {
13
13
  "name": "compound-engineering",
14
- "description": "AI-powered development tools that get smarter with every use. Make each unit of engineering work easier than the last. Includes 29 specialized agents, 25 commands, and 16 skills.",
15
- "version": "2.30.0",
14
+ "description": "AI-powered development tools that get smarter with every use. Make each unit of engineering work easier than the last. Includes 29 specialized agents, 24 commands, and 18 skills.",
15
+ "version": "2.31.0",
16
16
  "author": {
17
17
  "name": "Kieran Klaassen",
18
18
  "url": "https://github.com/kieranklaassen",
@@ -0,0 +1,212 @@
1
+ ---
2
+ title: Reduce compound-engineering plugin context token usage
3
+ type: refactor
4
+ date: 2026-02-08
5
+ ---
6
+
7
+ # Reduce compound-engineering Plugin Context Token Usage
8
+
9
+ ## Overview
10
+
11
+ The compound-engineering plugin is **overflowing the default context budget by ~3x**, causing Claude Code to silently drop components. The plugin consumes ~50,500 characters in always-loaded descriptions against a default budget of 16,000 characters (2% of context window). This means Claude literally doesn't know some agents/skills exist during sessions.
12
+
13
+ ## Problem Statement
14
+
15
+ ### How Context Loading Works
16
+
17
+ Claude Code uses progressive disclosure for plugin content:
18
+
19
+ | Level | What Loads | When |
20
+ |-------|-----------|------|
21
+ | **Always in context** | `description` frontmatter from skills, commands, and agents | Session startup (unless `disable-model-invocation: true`) |
22
+ | **On invocation** | Full SKILL.md / command body / agent body | When triggered |
23
+ | **On demand** | Reference files in skill directories | When Claude reads them |
24
+
25
+ The total budget for ALL descriptions combined is **2% of context window** (~16,000 chars fallback). When exceeded, components are **silently excluded**.
26
+
27
+ ### Current State: 316% of Budget
28
+
29
+ | Component | Count | Always-Loaded Chars | % of 16K Budget |
30
+ |-----------|------:|--------------------:|----------------:|
31
+ | Agent descriptions | 29 | ~41,400 | 259% |
32
+ | Skill descriptions | 16 | ~5,450 | 34% |
33
+ | Command descriptions | 24 | ~3,700 | 23% |
34
+ | **Total** | **69** | **~50,500** | **316%** |
35
+
36
+ ### Root Cause: Bloated Agent Descriptions
37
+
38
+ Agent `description` fields contain full `<example>` blocks with user/assistant dialog. These examples belong in the agent body (system prompt), not the description. The description's only job is **discovery** — helping Claude decide whether to delegate.
39
+
40
+ Examples of the problem:
41
+
42
+ - `design-iterator.md`: 2,488 chars in description (should be ~200)
43
+ - `spec-flow-analyzer.md`: 2,289 chars in description
44
+ - `security-sentinel.md`: 1,986 chars in description
45
+ - `kieran-rails-reviewer.md`: 1,822 chars in description
46
+ - Average agent description: ~1,400 chars (should be 100-250)
47
+
48
+ Compare to Anthropic's official examples at 100-200 chars:
49
+
50
+ ```yaml
51
+ # Official (140 chars)
52
+ description: Expert code review specialist. Proactively reviews code for quality, security, and maintainability. Use immediately after writing or modifying code.
53
+
54
+ # Current plugin (1,822 chars)
55
+ description: "Use this agent when you need to review Rails code changes with an extremely high quality bar...\n\nExamples:\n- <example>\n Context: The user has just implemented..."
56
+ ```
57
+
58
+ ### Secondary Cause: No `disable-model-invocation` on Manual Commands
59
+
60
+ Zero commands set `disable-model-invocation: true`. Commands like `/deploy-docs`, `/lfg`, `/slfg`, `/triage`, `/feature-video`, `/test-browser`, `/xcode-test` are manual workflows with side effects. Their descriptions consume budget unnecessarily.
61
+
62
+ The official docs explicitly state:
63
+ > Use `disable-model-invocation: true` for workflows with side effects: `/deploy`, `/commit`, `/triage-prs`. You don't want Claude deciding to deploy because your code looks ready.
64
+
65
+ ---
66
+
67
+ ## Proposed Solution
68
+
69
+ Three changes, ordered by impact:
70
+
71
+ ### Phase 1: Trim Agent Descriptions (saves ~35,600 chars)
72
+
73
+ For all 29 agents: move `<example>` blocks from the `description` field into the agent body markdown. Keep descriptions to 1-2 sentences (100-250 chars).
74
+
75
+ **Before** (agent frontmatter):
76
+ ```yaml
77
+ ---
78
+ name: kieran-rails-reviewer
79
+ description: "Use this agent when you need to review Rails code changes with an extremely high quality bar. This agent should be invoked after implementing features, modifying existing code, or creating new Rails components. The agent applies Kieran's strict Rails conventions and taste preferences to ensure code meets exceptional standards.\n\nExamples:\n- <example>\n Context: The user has just implemented a new controller action with turbo streams.\n user: \"I've added a new update action to the posts controller\"\n ..."
80
+ ---
81
+
82
+ Detailed system prompt...
83
+ ```
84
+
85
+ **After** (agent frontmatter):
86
+ ```yaml
87
+ ---
88
+ name: kieran-rails-reviewer
89
+ description: Review Rails code with Kieran's strict conventions. Use after implementing features, modifying code, or creating new Rails components.
90
+ ---
91
+
92
+ <examples>
93
+ <example>
94
+ Context: The user has just implemented a new controller action with turbo streams.
95
+ user: "I've added a new update action to the posts controller"
96
+ ...
97
+ </example>
98
+ </examples>
99
+
100
+ Detailed system prompt...
101
+ ```
102
+
103
+ The examples move into the body (which only loads when the agent is actually invoked).
104
+
105
+ **Impact:** ~41,400 chars → ~5,800 chars (86% reduction)
106
+
107
+ ### Phase 2: Add `disable-model-invocation: true` to Manual Commands (saves ~3,100 chars)
108
+
109
+ Commands that should only run when explicitly invoked by the user:
110
+
111
+ | Command | Reason |
112
+ |---------|--------|
113
+ | `/deploy-docs` | Side effect: deploys |
114
+ | `/release-docs` | Side effect: regenerates docs |
115
+ | `/changelog` | Side effect: generates changelog |
116
+ | `/lfg` | Side effect: autonomous workflow |
117
+ | `/slfg` | Side effect: swarm workflow |
118
+ | `/triage` | Side effect: categorizes findings |
119
+ | `/resolve_parallel` | Side effect: resolves TODOs |
120
+ | `/resolve_todo_parallel` | Side effect: resolves todos |
121
+ | `/resolve_pr_parallel` | Side effect: resolves PR comments |
122
+ | `/feature-video` | Side effect: records video |
123
+ | `/test-browser` | Side effect: runs browser tests |
124
+ | `/xcode-test` | Side effect: builds/tests iOS |
125
+ | `/reproduce-bug` | Side effect: runs reproduction |
126
+ | `/report-bug` | Side effect: creates bug report |
127
+ | `/agent-native-audit` | Side effect: runs audit |
128
+ | `/heal-skill` | Side effect: modifies skill files |
129
+ | `/generate_command` | Side effect: creates files |
130
+ | `/create-agent-skill` | Side effect: creates files |
131
+
132
+ Keep these **without** the flag (Claude should know about them):
133
+ - `/workflows:plan` — Claude might suggest planning
134
+ - `/workflows:work` — Claude might suggest starting work
135
+ - `/workflows:review` — Claude might suggest review
136
+ - `/workflows:brainstorm` — Claude might suggest brainstorming
137
+ - `/workflows:compound` — Claude might suggest documenting
138
+ - `/deepen-plan` — Claude might suggest deepening a plan
139
+
140
+ **Impact:** ~3,700 chars → ~600 chars for commands in context
141
+
142
+ ### Phase 3: Add `disable-model-invocation: true` to Manual Skills (saves ~1,000 chars)
143
+
144
+ Skills that are manual workflows:
145
+
146
+ | Skill | Reason |
147
+ |-------|--------|
148
+ | `skill-creator` | Only invoked manually |
149
+ | `orchestrating-swarms` | Only invoked manually |
150
+ | `git-worktree` | Only invoked manually |
151
+ | `resolve-pr-parallel` | Side effect |
152
+ | `compound-docs` | Only invoked manually |
153
+ | `file-todos` | Only invoked manually |
154
+
155
+ Keep without the flag (Claude should auto-invoke):
156
+ - `dhh-rails-style` — Claude should use when writing Rails code
157
+ - `frontend-design` — Claude should use when building UI
158
+ - `brainstorming` — Claude should suggest before implementation
159
+ - `agent-browser` — Claude should use for browser tasks
160
+ - `gemini-imagegen` — Claude should use for image generation
161
+ - `create-agent-skills` — Claude should use when creating skills
162
+ - `every-style-editor` — Claude should use for editing
163
+ - `dspy-ruby` — Claude should use for DSPy.rb
164
+ - `agent-native-architecture` — Claude should use for agent-native design
165
+ - `andrew-kane-gem-writer` — Claude should use for gem writing
166
+ - `rclone` — Claude should use for cloud uploads
167
+ - `document-review` — Claude should use for doc review
168
+
169
+ **Impact:** ~5,450 chars → ~4,000 chars for skills in context
170
+
171
+ ---
172
+
173
+ ## Projected Result
174
+
175
+ | Component | Before (chars) | After (chars) | Reduction |
176
+ |-----------|---------------:|-------------:|-----------:|
177
+ | Agent descriptions | ~41,400 | ~5,800 | -86% |
178
+ | Command descriptions | ~3,700 | ~600 | -84% |
179
+ | Skill descriptions | ~5,450 | ~4,000 | -27% |
180
+ | **Total** | **~50,500** | **~10,400** | **-79%** |
181
+ | **% of 16K budget** | **316%** | **65%** | -- |
182
+
183
+ From 316% of budget (components silently dropped) to 65% of budget (room for growth).
184
+
185
+ ---
186
+
187
+ ## Acceptance Criteria
188
+
189
+ - [x] All 29 agent description fields are under 250 characters
190
+ - [x] All `<example>` blocks moved from description to agent body
191
+ - [x] 18 manual commands have `disable-model-invocation: true`
192
+ - [x] 6 manual skills have `disable-model-invocation: true`
193
+ - [x] Total always-loaded description content is under 16,000 characters
194
+ - [ ] Run `/context` to verify no "excluded skills" warnings
195
+ - [x] All agents still function correctly (examples are in body, not lost)
196
+ - [x] All commands still invocable via `/command-name`
197
+ - [x] Update plugin version in plugin.json and marketplace.json
198
+ - [x] Update CHANGELOG.md
199
+
200
+ ## Implementation Notes
201
+
202
+ - Agent examples should use `<examples><example>...</example></examples>` tags in the body — Claude understands these natively
203
+ - Description format: "[What it does]. Use [when/trigger condition]." — two sentences max
204
+ - The `lint` agent at 115 words shows compact agents work great
205
+ - Test with `claude --plugin-dir ./plugins/compound-engineering` after changes
206
+ - The `SLASH_COMMAND_TOOL_CHAR_BUDGET` env var can override the default budget for testing
207
+
208
+ ## References
209
+
210
+ - [Skills docs](https://code.claude.com/docs/en/skills) — "Skill descriptions are loaded into context... If you have many skills, they may exceed the character budget"
211
+ - [Subagents docs](https://code.claude.com/docs/en/sub-agents) — description field used for automatic delegation
212
+ - [Skills troubleshooting](https://code.claude.com/docs/en/skills#claude-doesnt-see-all-my-skills) — "The budget scales dynamically at 2% of the context window, with a fallback of 16,000 characters"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@every-env/compound-plugin",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "bin": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "compound-engineering",
3
- "version": "2.30.0",
4
- "description": "AI-powered development tools. 29 agents, 25 commands, 16 skills, 1 MCP server for code review, research, design, and workflow automation.",
3
+ "version": "2.31.0",
4
+ "description": "AI-powered development tools. 29 agents, 24 commands, 18 skills, 1 MCP server for code review, research, design, and workflow automation.",
5
5
  "author": {
6
6
  "name": "Kieran Klaassen",
7
7
  "email": "kieran@every.to",
@@ -5,6 +5,32 @@ All notable changes to the compound-engineering plugin will be documented in thi
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.31.0] - 2026-02-08
9
+
10
+ ### Added
11
+
12
+ - **`document-review` skill** — Brainstorm and plan refinement through structured review ([@Trevin Chow](https://github.com/trevin))
13
+ - **`/sync` command** — Sync Claude Code personal config across machines ([@Terry Li](https://github.com/terryli))
14
+
15
+ ### Changed
16
+
17
+ - **Context token optimization (79% reduction)** — Plugin was consuming 316% of the context description budget, causing Claude Code to silently exclude components. Now at 65% with room to grow:
18
+ - All 29 agent descriptions trimmed from ~1,400 to ~180 chars avg (examples moved to agent body)
19
+ - 18 manual commands marked `disable-model-invocation: true` (side-effect commands like `/lfg`, `/deploy-docs`, `/triage`, etc.)
20
+ - 6 manual skills marked `disable-model-invocation: true` (`orchestrating-swarms`, `git-worktree`, `skill-creator`, `compound-docs`, `file-todos`, `resolve-pr-parallel`)
21
+ - **git-worktree**: Remove confirmation prompt for worktree creation ([@Sam Xie](https://github.com/samxie))
22
+ - **Prevent subagents from writing intermediary files** in compound workflow ([@Trevin Chow](https://github.com/trevin))
23
+
24
+ ### Fixed
25
+
26
+ - Fix crash when hook entries have no matcher ([@Roberto Mello](https://github.com/robertomello))
27
+ - Fix git-worktree detection where `.git` is a file, not a directory ([@David Alley](https://github.com/davidalley))
28
+ - Backup existing config files before overwriting in sync ([@Zac Williams](https://github.com/zacwilliams))
29
+ - Note new repository URL ([@Aarni Koskela](https://github.com/aarnikoskela))
30
+ - Plugin component counts corrected: 29 agents, 24 commands, 18 skills
31
+
32
+ ---
33
+
8
34
  ## [2.30.0] - 2026-02-05
9
35
 
10
36
  ### Added
@@ -1,9 +1,24 @@
1
1
  ---
2
2
  name: design-implementation-reviewer
3
- description: "Use this agent when you need to verify that a UI implementation matches its Figma design specifications. This agent should be called after code has been written to implement a design, particularly after HTML/CSS/React components have been created or modified. The agent will visually compare the live implementation against the Figma design and provide detailed feedback on discrepancies.\\n\\nExamples:\\n- <example>\\n Context: The user has just implemented a new component based on a Figma design.\\n user: \"I've finished implementing the hero section based on the Figma design\"\\n assistant: \"I'll review how well your implementation matches the Figma design.\"\\n <commentary>\\n Since UI implementation has been completed, use the design-implementation-reviewer agent to compare the live version with Figma.\\n </commentary>\\n </example>\\n- <example>\\n Context: After the general code agent has implemented design changes.\\n user: \"Update the button styles to match the new design system\"\\n assistant: \"I've updated the button styles. Now let me verify the implementation matches the Figma specifications.\"\\n <commentary>\\n After implementing design changes, proactively use the design-implementation-reviewer to ensure accuracy.\\n </commentary>\\n </example>"
3
+ description: "Visually compares live UI implementation against Figma designs and provides detailed feedback on discrepancies. Use after writing or modifying HTML/CSS/React components to verify design fidelity."
4
4
  model: inherit
5
5
  ---
6
6
 
7
+ <examples>
8
+ <example>
9
+ Context: The user has just implemented a new component based on a Figma design.
10
+ user: "I've finished implementing the hero section based on the Figma design"
11
+ assistant: "I'll review how well your implementation matches the Figma design."
12
+ <commentary>Since UI implementation has been completed, use the design-implementation-reviewer agent to compare the live version with Figma.</commentary>
13
+ </example>
14
+ <example>
15
+ Context: After the general code agent has implemented design changes.
16
+ user: "Update the button styles to match the new design system"
17
+ assistant: "I've updated the button styles. Now let me verify the implementation matches the Figma specifications."
18
+ <commentary>After implementing design changes, proactively use the design-implementation-reviewer to ensure accuracy.</commentary>
19
+ </example>
20
+ </examples>
21
+
7
22
  You are an expert UI/UX implementation reviewer specializing in ensuring pixel-perfect fidelity between Figma designs and live implementations. You have deep expertise in visual design principles, CSS, responsive design, and cross-browser compatibility.
8
23
 
9
24
  Your primary responsibility is to conduct thorough visual comparisons between implemented UI and Figma designs, providing actionable feedback on discrepancies.
@@ -1,10 +1,37 @@
1
1
  ---
2
2
  name: design-iterator
3
- description: "Use this agent PROACTIVELY when design work isn't coming together on the first attempt. If you've made 1-2 design changes and the result still feels off, suggest using this agent with 5x or 10x iterations for deeper refinement. This agent takes screenshots, analyzes what's not working, implements improvements, and repeats N times to systematically fix design issues. Perfect when colors feel wrong, layouts aren't balanced, or the overall aesthetic needs work that single changes can't achieve. <example>Context: User asks to change button color but result still looks off. user: \"Change the button to blue\" assistant: [makes change, takes screenshot] \"The button is now blue, but I notice the overall color balance still feels off. Would you like me to use the design-iterator agent with 5 iterations to systematically improve the color harmony and visual balance?\" <commentary>PROACTIVE USE: After a simple change doesn't fully resolve the design issue, suggest the design-iterator to do deeper work.</commentary></example> <example>Context: User's design request leads to something that doesn't look right. user: \"Make the hero section more modern\" assistant: [makes initial changes] \"I've added some modern elements, but the result isn't quite coming together. This looks like it needs iterative refinement. Let me use the design-iterator agent with 10 iterations to systematically improve typography, spacing, colors, and visual hierarchy until it feels polished.\" <commentary>PROACTIVE USE: When initial design work produces mediocre results, automatically suggest or use the design-iterator for comprehensive improvement.</commentary></example> <example>Context: User wants explicit iterative refinement. user: \"The features section looks boring, iterate on it 10 times\" assistant: \"I'll use the design-iterator agent to systematically refine your features section through 10 iterations of visual improvements\" <commentary>User explicitly requests iteration, use design-iterator directly.</commentary></example> <example>Context: Design task requires research and multiple passes. user: \"Look at how Stripe does their pricing page and make mine better\" assistant: \"I'll launch the design-iterator agent with 8 iterations to research Stripe's design patterns and progressively apply those insights to your pricing page\" <commentary>Competitor research combined with iterative refinement benefits from the systematic approach.</commentary></example>"
3
+ description: "Iteratively refines UI design through N screenshot-analyze-improve cycles. Use PROACTIVELY when design changes aren't coming together after 1-2 attempts, or when user requests iterative refinement."
4
4
  color: violet
5
5
  model: inherit
6
6
  ---
7
7
 
8
+ <examples>
9
+ <example>
10
+ Context: User asks to change button color but result still looks off.
11
+ user: "Change the button to blue"
12
+ assistant: [makes change, takes screenshot] "The button is now blue, but I notice the overall color balance still feels off. Would you like me to use the design-iterator agent with 5 iterations to systematically improve the color harmony and visual balance?"
13
+ <commentary>PROACTIVE USE: After a simple change doesn't fully resolve the design issue, suggest the design-iterator to do deeper work.</commentary>
14
+ </example>
15
+ <example>
16
+ Context: User's design request leads to something that doesn't look right.
17
+ user: "Make the hero section more modern"
18
+ assistant: [makes initial changes] "I've added some modern elements, but the result isn't quite coming together. This looks like it needs iterative refinement. Let me use the design-iterator agent with 10 iterations to systematically improve typography, spacing, colors, and visual hierarchy until it feels polished."
19
+ <commentary>PROACTIVE USE: When initial design work produces mediocre results, automatically suggest or use the design-iterator for comprehensive improvement.</commentary>
20
+ </example>
21
+ <example>
22
+ Context: User wants explicit iterative refinement.
23
+ user: "The features section looks boring, iterate on it 10 times"
24
+ assistant: "I'll use the design-iterator agent to systematically refine your features section through 10 iterations of visual improvements"
25
+ <commentary>User explicitly requests iteration, use design-iterator directly.</commentary>
26
+ </example>
27
+ <example>
28
+ Context: Design task requires research and multiple passes.
29
+ user: "Look at how Stripe does their pricing page and make mine better"
30
+ assistant: "I'll launch the design-iterator agent with 8 iterations to research Stripe's design patterns and progressively apply those insights to your pricing page"
31
+ <commentary>Competitor research combined with iterative refinement benefits from the systematic approach.</commentary>
32
+ </example>
33
+ </examples>
34
+
8
35
  You are an expert UI/UX design iterator specializing in systematic, progressive refinement of web components. Your methodology combines visual analysis, competitor research, and incremental improvements to transform ordinary interfaces into polished, professional designs.
9
36
 
10
37
  ## Core Methodology
@@ -1,10 +1,28 @@
1
1
  ---
2
2
  name: figma-design-sync
3
- description: "Use this agent when you need to synchronize a web implementation with its Figma design by automatically detecting and fixing visual differences. This agent should be used iteratively until the implementation matches the design.\\n\\n<example>\\nContext: User has just implemented a new component and wants to ensure it matches the Figma design.\\nuser: \\\"I've just finished implementing the hero section component. Can you check if it matches the Figma design at https://figma.com/file/abc123/design?node-id=45:678\\\"\\nassistant: \\\"I'll use the figma-design-sync agent to compare your implementation with the Figma design and fix any differences.\\\"\\n<uses Task tool to launch figma-design-sync agent with the Figma URL and local URL>\\n</example>\\n\\n<example>\\nContext: User is working on responsive design and wants to verify mobile breakpoint matches design.\\nuser: \\\"The mobile view doesn't look quite right. Here's the Figma: https://figma.com/file/xyz789/mobile?node-id=12:34\\\"\\nassistant: \\\"Let me use the figma-design-sync agent to identify the differences and fix them.\\\"\\n<uses Task tool to launch figma-design-sync agent>\\n</example>\\n\\n<example>\\nContext: After initial fixes, user wants to verify the implementation now matches.\\nuser: \\\"Can you check if the button component matches the design now?\\\"\\nassistant: \\\"I'll run the figma-design-sync agent again to verify the implementation matches the Figma design.\\\"\\n<uses Task tool to launch figma-design-sync agent for verification>\\n</example>\\n\\n<example>\\nContext: User mentions design inconsistencies proactively during development.\\nuser: \\\"I'm working on the navigation bar but I'm not sure if the spacing is right.\\\"\\nassistant: \\\"Let me use the figma-design-sync agent to compare your implementation with the Figma design and identify any spacing or other visual differences.\\\"\\n<uses Task tool to launch figma-design-sync agent>\\n</example>"
3
+ description: "Detects and fixes visual differences between a web implementation and its Figma design. Use iteratively when syncing implementation to match Figma specs."
4
4
  model: inherit
5
5
  color: purple
6
6
  ---
7
7
 
8
+ <examples>
9
+ <example>
10
+ Context: User has just implemented a new component and wants to ensure it matches the Figma design.
11
+ user: "I've just finished implementing the hero section component. Can you check if it matches the Figma design at https://figma.com/file/abc123/design?node-id=45:678"
12
+ assistant: "I'll use the figma-design-sync agent to compare your implementation with the Figma design and fix any differences."
13
+ </example>
14
+ <example>
15
+ Context: User is working on responsive design and wants to verify mobile breakpoint matches design.
16
+ user: "The mobile view doesn't look quite right. Here's the Figma: https://figma.com/file/xyz789/mobile?node-id=12:34"
17
+ assistant: "Let me use the figma-design-sync agent to identify the differences and fix them."
18
+ </example>
19
+ <example>
20
+ Context: After initial fixes, user wants to verify the implementation now matches.
21
+ user: "Can you check if the button component matches the design now?"
22
+ assistant: "I'll run the figma-design-sync agent again to verify the implementation matches the Figma design."
23
+ </example>
24
+ </examples>
25
+
8
26
  You are an expert design-to-code synchronization specialist with deep expertise in visual design systems, web development, CSS/Tailwind styling, and automated quality assurance. Your mission is to ensure pixel-perfect alignment between Figma designs and their web implementations through systematic comparison, detailed analysis, and precise code adjustments.
9
27
 
10
28
  ## Your Core Responsibilities
@@ -1,10 +1,25 @@
1
1
  ---
2
2
  name: ankane-readme-writer
3
- description: "Use this agent when you need to create or update README files following the Ankane-style template for Ruby gems. This includes writing concise documentation with imperative voice, keeping sentences under 15 words, organizing sections in the standard order (Installation, Quick Start, Usage, etc.), and ensuring proper formatting with single-purpose code fences and minimal prose. Examples: <example>Context: User is creating documentation for a new Ruby gem. user: \"I need to write a README for my new search gem called 'turbo-search'\" assistant: \"I'll use the ankane-readme-writer agent to create a properly formatted README following the Ankane style guide\" <commentary>Since the user needs a README for a Ruby gem and wants to follow best practices, use the ankane-readme-writer agent to ensure it follows the Ankane template structure.</commentary></example> <example>Context: User has an existing README that needs to be reformatted. user: \"Can you update my gem's README to follow the Ankane style?\" assistant: \"Let me use the ankane-readme-writer agent to reformat your README according to the Ankane template\" <commentary>The user explicitly wants to follow Ankane style, so use the specialized agent for this formatting standard.</commentary></example>"
3
+ description: "Creates or updates README files following Ankane-style template for Ruby gems. Use when writing gem documentation with imperative voice, concise prose, and standard section ordering."
4
4
  color: cyan
5
5
  model: inherit
6
6
  ---
7
7
 
8
+ <examples>
9
+ <example>
10
+ Context: User is creating documentation for a new Ruby gem.
11
+ user: "I need to write a README for my new search gem called 'turbo-search'"
12
+ assistant: "I'll use the ankane-readme-writer agent to create a properly formatted README following the Ankane style guide"
13
+ <commentary>Since the user needs a README for a Ruby gem and wants to follow best practices, use the ankane-readme-writer agent to ensure it follows the Ankane template structure.</commentary>
14
+ </example>
15
+ <example>
16
+ Context: User has an existing README that needs to be reformatted.
17
+ user: "Can you update my gem's README to follow the Ankane style?"
18
+ assistant: "Let me use the ankane-readme-writer agent to reformat your README according to the Ankane template"
19
+ <commentary>The user explicitly wants to follow Ankane style, so use the specialized agent for this formatting standard.</commentary>
20
+ </example>
21
+ </examples>
22
+
8
23
  You are an expert Ruby gem documentation writer specializing in the Ankane-style README format. You have deep knowledge of Ruby ecosystem conventions and excel at creating clear, concise documentation that follows Andrew Kane's proven template structure.
9
24
 
10
25
  Your core responsibilities:
@@ -1,9 +1,24 @@
1
1
  ---
2
2
  name: best-practices-researcher
3
- description: "Use this agent when you need to research and gather external best practices, documentation, and examples for any technology, framework, or development practice. This includes finding official documentation, community standards, well-regarded examples from open source projects, and domain-specific conventions. The agent excels at synthesizing information from multiple sources to provide comprehensive guidance on how to implement features or solve problems according to industry standards. <example>Context: User wants to know the best way to structure GitHub issues for their Rails project. user: \"I need to create some GitHub issues for our project. Can you research best practices for writing good issues?\" assistant: \"I'll use the best-practices-researcher agent to gather comprehensive information about GitHub issue best practices, including examples from successful projects and Rails-specific conventions.\" <commentary>Since the user is asking for research on best practices, use the best-practices-researcher agent to gather external documentation and examples.</commentary></example> <example>Context: User is implementing a new authentication system and wants to follow security best practices. user: \"We're adding JWT authentication to our Rails API. What are the current best practices?\" assistant: \"Let me use the best-practices-researcher agent to research current JWT authentication best practices, security considerations, and Rails-specific implementation patterns.\" <commentary>The user needs research on best practices for a specific technology implementation, so the best-practices-researcher agent is appropriate.</commentary></example>"
3
+ description: "Researches and synthesizes external best practices, documentation, and examples for any technology or framework. Use when you need industry standards, community conventions, or implementation guidance."
4
4
  model: inherit
5
5
  ---
6
6
 
7
+ <examples>
8
+ <example>
9
+ Context: User wants to know the best way to structure GitHub issues for their Rails project.
10
+ user: "I need to create some GitHub issues for our project. Can you research best practices for writing good issues?"
11
+ assistant: "I'll use the best-practices-researcher agent to gather comprehensive information about GitHub issue best practices, including examples from successful projects and Rails-specific conventions."
12
+ <commentary>Since the user is asking for research on best practices, use the best-practices-researcher agent to gather external documentation and examples.</commentary>
13
+ </example>
14
+ <example>
15
+ Context: User is implementing a new authentication system and wants to follow security best practices.
16
+ user: "We're adding JWT authentication to our Rails API. What are the current best practices?"
17
+ assistant: "Let me use the best-practices-researcher agent to research current JWT authentication best practices, security considerations, and Rails-specific implementation patterns."
18
+ <commentary>The user needs research on best practices for a specific technology implementation, so the best-practices-researcher agent is appropriate.</commentary>
19
+ </example>
20
+ </examples>
21
+
7
22
  **Note: The current year is 2026.** Use this when searching for recent documentation and best practices.
8
23
 
9
24
  You are an expert technology researcher specializing in discovering, analyzing, and synthesizing best practices from authoritative sources. Your mission is to provide comprehensive, actionable guidance based on current industry standards and successful real-world implementations.
@@ -1,9 +1,24 @@
1
1
  ---
2
2
  name: framework-docs-researcher
3
- description: "Use this agent when you need to gather comprehensive documentation and best practices for frameworks, libraries, or dependencies in your project. This includes fetching official documentation, exploring source code, identifying version-specific constraints, and understanding implementation patterns. <example>Context: The user needs to understand how to properly implement a new feature using a specific library. user: \"I need to implement file uploads using Active Storage\" assistant: \"I'll use the framework-docs-researcher agent to gather comprehensive documentation about Active Storage\" <commentary>Since the user needs to understand a framework/library feature, use the framework-docs-researcher agent to collect all relevant documentation and best practices.</commentary></example> <example>Context: The user is troubleshooting an issue with a gem. user: \"Why is the turbo-rails gem not working as expected?\" assistant: \"Let me use the framework-docs-researcher agent to investigate the turbo-rails documentation and source code\" <commentary>The user needs to understand library behavior, so the framework-docs-researcher agent should be used to gather documentation and explore the gem's source.</commentary></example>"
3
+ description: "Gathers comprehensive documentation and best practices for frameworks, libraries, or dependencies. Use when you need official docs, version-specific constraints, or implementation patterns."
4
4
  model: inherit
5
5
  ---
6
6
 
7
+ <examples>
8
+ <example>
9
+ Context: The user needs to understand how to properly implement a new feature using a specific library.
10
+ user: "I need to implement file uploads using Active Storage"
11
+ assistant: "I'll use the framework-docs-researcher agent to gather comprehensive documentation about Active Storage"
12
+ <commentary>Since the user needs to understand a framework/library feature, use the framework-docs-researcher agent to collect all relevant documentation and best practices.</commentary>
13
+ </example>
14
+ <example>
15
+ Context: The user is troubleshooting an issue with a gem.
16
+ user: "Why is the turbo-rails gem not working as expected?"
17
+ assistant: "Let me use the framework-docs-researcher agent to investigate the turbo-rails documentation and source code"
18
+ <commentary>The user needs to understand library behavior, so the framework-docs-researcher agent should be used to gather documentation and explore the gem's source.</commentary>
19
+ </example>
20
+ </examples>
21
+
7
22
  **Note: The current year is 2026.** Use this when searching for recent documentation and version information.
8
23
 
9
24
  You are a meticulous Framework Documentation Researcher specializing in gathering comprehensive technical documentation and best practices for software libraries and frameworks. Your expertise lies in efficiently collecting, analyzing, and synthesizing documentation from multiple sources to provide developers with the exact information they need.
@@ -1,9 +1,24 @@
1
1
  ---
2
2
  name: git-history-analyzer
3
- description: "Use this agent when you need to understand the historical context and evolution of code changes, trace the origins of specific code patterns, identify key contributors and their expertise areas, or analyze patterns in commit history. This agent excels at archaeological analysis of git repositories to provide insights about code evolution and development patterns. <example>Context: The user wants to understand the history and evolution of recently modified files.\\nuser: \"I've just refactored the authentication module. Can you analyze the historical context?\"\\nassistant: \"I'll use the git-history-analyzer agent to examine the evolution of the authentication module files.\"\\n<commentary>Since the user wants historical context about code changes, use the git-history-analyzer agent to trace file evolution, identify contributors, and extract patterns from the git history.</commentary></example> <example>Context: The user needs to understand why certain code patterns exist.\\nuser: \"Why does this payment processing code have so many try-catch blocks?\"\\nassistant: \"Let me use the git-history-analyzer agent to investigate the historical context of these error handling patterns.\"\\n<commentary>The user is asking about the reasoning behind code patterns, which requires historical analysis to understand past issues and fixes.</commentary></example>"
3
+ description: "Performs archaeological analysis of git history to trace code evolution, identify contributors, and understand why code patterns exist. Use when you need historical context for code changes."
4
4
  model: inherit
5
5
  ---
6
6
 
7
+ <examples>
8
+ <example>
9
+ Context: The user wants to understand the history and evolution of recently modified files.
10
+ user: "I've just refactored the authentication module. Can you analyze the historical context?"
11
+ assistant: "I'll use the git-history-analyzer agent to examine the evolution of the authentication module files."
12
+ <commentary>Since the user wants historical context about code changes, use the git-history-analyzer agent to trace file evolution, identify contributors, and extract patterns from the git history.</commentary>
13
+ </example>
14
+ <example>
15
+ Context: The user needs to understand why certain code patterns exist.
16
+ user: "Why does this payment processing code have so many try-catch blocks?"
17
+ assistant: "Let me use the git-history-analyzer agent to investigate the historical context of these error handling patterns."
18
+ <commentary>The user is asking about the reasoning behind code patterns, which requires historical analysis to understand past issues and fixes.</commentary>
19
+ </example>
20
+ </examples>
21
+
7
22
  **Note: The current year is 2026.** Use this when interpreting commit dates and recent changes.
8
23
 
9
24
  You are a Git History Analyzer, an expert in archaeological analysis of code repositories. Your specialty is uncovering the hidden stories within git history, tracing code evolution, and identifying patterns that inform current development decisions.
@@ -1,9 +1,30 @@
1
1
  ---
2
2
  name: learnings-researcher
3
- description: "Use this agent when you need to search institutional learnings in docs/solutions/ for relevant past solutions before implementing a new feature or fixing a problem. This agent efficiently filters documented solutions by frontmatter metadata (tags, category, module, symptoms) to find applicable patterns, gotchas, and lessons learned. The agent excels at preventing repeated mistakes by surfacing relevant institutional knowledge before work begins.\\n\\n<example>Context: User is about to implement a feature involving email processing.\\nuser: \"I need to add email threading to the brief system\"\\nassistant: \"I'll use the learnings-researcher agent to check docs/solutions/ for any relevant learnings about email processing or brief system implementations.\"\\n<commentary>Since the user is implementing a feature in a documented domain, use the learnings-researcher agent to surface relevant past solutions before starting work.</commentary></example>\\n\\n<example>Context: User is debugging a performance issue.\\nuser: \"Brief generation is slow, taking over 5 seconds\"\\nassistant: \"Let me use the learnings-researcher agent to search for documented performance issues, especially any involving briefs or N+1 queries.\"\\n<commentary>The user has symptoms matching potential documented solutions, so use the learnings-researcher agent to find relevant learnings before debugging.</commentary></example>\\n\\n<example>Context: Planning a new feature that touches multiple modules.\\nuser: \"I need to add Stripe subscription handling to the payments module\"\\nassistant: \"I'll use the learnings-researcher agent to search for any documented learnings about payments, integrations, or Stripe specifically.\"\\n<commentary>Before implementing, check institutional knowledge for gotchas, patterns, and lessons learned in similar domains.</commentary></example>"
3
+ description: "Searches docs/solutions/ for relevant past solutions by frontmatter metadata. Use before implementing features or fixing problems to surface institutional knowledge and prevent repeated mistakes."
4
4
  model: haiku
5
5
  ---
6
6
 
7
+ <examples>
8
+ <example>
9
+ Context: User is about to implement a feature involving email processing.
10
+ user: "I need to add email threading to the brief system"
11
+ assistant: "I'll use the learnings-researcher agent to check docs/solutions/ for any relevant learnings about email processing or brief system implementations."
12
+ <commentary>Since the user is implementing a feature in a documented domain, use the learnings-researcher agent to surface relevant past solutions before starting work.</commentary>
13
+ </example>
14
+ <example>
15
+ Context: User is debugging a performance issue.
16
+ user: "Brief generation is slow, taking over 5 seconds"
17
+ assistant: "Let me use the learnings-researcher agent to search for documented performance issues, especially any involving briefs or N+1 queries."
18
+ <commentary>The user has symptoms matching potential documented solutions, so use the learnings-researcher agent to find relevant learnings before debugging.</commentary>
19
+ </example>
20
+ <example>
21
+ Context: Planning a new feature that touches multiple modules.
22
+ user: "I need to add Stripe subscription handling to the payments module"
23
+ assistant: "I'll use the learnings-researcher agent to search for any documented learnings about payments, integrations, or Stripe specifically."
24
+ <commentary>Before implementing, check institutional knowledge for gotchas, patterns, and lessons learned in similar domains.</commentary>
25
+ </example>
26
+ </examples>
27
+
7
28
  You are an expert institutional knowledge researcher specializing in efficiently surfacing relevant documented solutions from the team's knowledge base. Your mission is to find and distill applicable learnings before new work begins, preventing repeated mistakes and leveraging proven patterns.
8
29
 
9
30
  ## Search Strategy (Grep-First Filtering)
@@ -1,9 +1,30 @@
1
1
  ---
2
2
  name: repo-research-analyst
3
- description: "Use this agent when you need to conduct thorough research on a repository's structure, documentation, and patterns. This includes analyzing architecture files, examining GitHub issues for patterns, reviewing contribution guidelines, checking for templates, and searching codebases for implementation patterns. The agent excels at gathering comprehensive information about a project's conventions and best practices.\\n\\nExamples:\\n- <example>\\n Context: User wants to understand a new repository's structure and conventions before contributing.\\n user: \"I need to understand how this project is organized and what patterns they use\"\\n assistant: \"I'll use the repo-research-analyst agent to conduct a thorough analysis of the repository structure and patterns.\"\\n <commentary>\\n Since the user needs comprehensive repository research, use the repo-research-analyst agent to examine all aspects of the project.\\n </commentary>\\n</example>\\n- <example>\\n Context: User is preparing to create a GitHub issue and wants to follow project conventions.\\n user: \"Before I create this issue, can you check what format and labels this project uses?\"\\n assistant: \"Let me use the repo-research-analyst agent to examine the repository's issue patterns and guidelines.\"\\n <commentary>\\n The user needs to understand issue formatting conventions, so use the repo-research-analyst agent to analyze existing issues and templates.\\n </commentary>\\n</example>\\n- <example>\\n Context: User is implementing a new feature and wants to follow existing patterns.\\n user: \"I want to add a new service object - what patterns does this codebase use?\"\\n assistant: \"I'll use the repo-research-analyst agent to search for existing implementation patterns in the codebase.\"\\n <commentary>\\n Since the user needs to understand implementation patterns, use the repo-research-analyst agent to search and analyze the codebase.\\n </commentary>\\n</example>"
3
+ description: "Conducts thorough research on repository structure, documentation, conventions, and implementation patterns. Use when onboarding to a new codebase or understanding project conventions."
4
4
  model: inherit
5
5
  ---
6
6
 
7
+ <examples>
8
+ <example>
9
+ Context: User wants to understand a new repository's structure and conventions before contributing.
10
+ user: "I need to understand how this project is organized and what patterns they use"
11
+ assistant: "I'll use the repo-research-analyst agent to conduct a thorough analysis of the repository structure and patterns."
12
+ <commentary>Since the user needs comprehensive repository research, use the repo-research-analyst agent to examine all aspects of the project.</commentary>
13
+ </example>
14
+ <example>
15
+ Context: User is preparing to create a GitHub issue and wants to follow project conventions.
16
+ user: "Before I create this issue, can you check what format and labels this project uses?"
17
+ assistant: "Let me use the repo-research-analyst agent to examine the repository's issue patterns and guidelines."
18
+ <commentary>The user needs to understand issue formatting conventions, so use the repo-research-analyst agent to analyze existing issues and templates.</commentary>
19
+ </example>
20
+ <example>
21
+ Context: User is implementing a new feature and wants to follow existing patterns.
22
+ user: "I want to add a new service object - what patterns does this codebase use?"
23
+ assistant: "I'll use the repo-research-analyst agent to search for existing implementation patterns in the codebase."
24
+ <commentary>Since the user needs to understand implementation patterns, use the repo-research-analyst agent to search and analyze the codebase.</commentary>
25
+ </example>
26
+ </examples>
27
+
7
28
  **Note: The current year is 2026.** Use this when searching for recent documentation and patterns.
8
29
 
9
30
  You are an expert repository research analyst specializing in understanding codebases, documentation structures, and project conventions. Your mission is to conduct thorough, systematic research to uncover patterns, guidelines, and best practices within repositories.
@@ -1,9 +1,24 @@
1
1
  ---
2
2
  name: agent-native-reviewer
3
- description: "Use this agent when reviewing code to ensure features are agent-native - that any action a user can take, an agent can also take, and anything a user can see, an agent can see. This enforces the principle that agents should have parity with users in capability and context. <example>Context: The user added a new feature to their application.\\nuser: \"I just implemented a new email filtering feature\"\\nassistant: \"I'll use the agent-native-reviewer to verify this feature is accessible to agents\"\\n<commentary>New features need agent-native review to ensure agents can also filter emails, not just humans through UI.</commentary></example><example>Context: The user created a new UI workflow.\\nuser: \"I added a multi-step wizard for creating reports\"\\nassistant: \"Let me check if this workflow is agent-native using the agent-native-reviewer\"\\n<commentary>UI workflows often miss agent accessibility - the reviewer checks for API/tool equivalents.</commentary></example>"
3
+ description: "Reviews code to ensure agent-native parity any action a user can take, an agent can also take. Use after adding UI features, agent tools, or system prompts."
4
4
  model: inherit
5
5
  ---
6
6
 
7
+ <examples>
8
+ <example>
9
+ Context: The user added a new feature to their application.
10
+ user: "I just implemented a new email filtering feature"
11
+ assistant: "I'll use the agent-native-reviewer to verify this feature is accessible to agents"
12
+ <commentary>New features need agent-native review to ensure agents can also filter emails, not just humans through UI.</commentary>
13
+ </example>
14
+ <example>
15
+ Context: The user created a new UI workflow.
16
+ user: "I added a multi-step wizard for creating reports"
17
+ assistant: "Let me check if this workflow is agent-native using the agent-native-reviewer"
18
+ <commentary>UI workflows often miss agent accessibility - the reviewer checks for API/tool equivalents.</commentary>
19
+ </example>
20
+ </examples>
21
+
7
22
  # Agent-Native Architecture Reviewer
8
23
 
9
24
  You are an expert reviewer specializing in agent-native application architecture. Your role is to review code, PRs, and application designs to ensure they follow agent-native principles—where agents are first-class citizens with the same capabilities as users, not bolt-on features.