@every-env/compound-plugin 2.34.6 → 2.35.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.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  Release numbering now follows the repository `v*` tag line. Starting at `v2.34.0`, the root CLI package and this changelog stay on that shared version stream. Older entries below retain the previous `0.x` CLI numbering.
9
9
 
10
+ # [2.35.0](https://github.com/EveryInc/compound-engineering-plugin/compare/v2.34.7...v2.35.0) (2026-03-10)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **test-browser:** detect dev server port from project config ([94aedd5](https://github.com/EveryInc/compound-engineering-plugin/commit/94aedd5a7b6da4ce48de994b5a137953c0fd21c3)), closes [#164](https://github.com/EveryInc/compound-engineering-plugin/issues/164)
16
+
17
+
18
+ ### Features
19
+
20
+ * **compound:** add context budget precheck and compact-safe mode ([7266062](https://github.com/EveryInc/compound-engineering-plugin/commit/726606286873c4059261a8c5f1b75c20fe11ac77)), closes [#198](https://github.com/EveryInc/compound-engineering-plugin/issues/198)
21
+ * **plan:** add daily sequence number to plan filenames ([4fc6ddc](https://github.com/EveryInc/compound-engineering-plugin/commit/4fc6ddc5db3e2b4b398c0ffa0c156e1177b35d05)), closes [#135](https://github.com/EveryInc/compound-engineering-plugin/issues/135)
22
+
23
+ ## [2.34.7](https://github.com/EveryInc/compound-engineering-plugin/compare/v2.34.6...v2.34.7) (2026-03-10)
24
+
25
+
26
+ ### Bug Fixes
27
+
28
+ * **test-browser:** detect dev server port from project config ([50cb89e](https://github.com/EveryInc/compound-engineering-plugin/commit/50cb89efde7cee7d6dcd42008e6060e1bec44fcc)), closes [#164](https://github.com/EveryInc/compound-engineering-plugin/issues/164)
29
+
10
30
  ## [2.34.6](https://github.com/EveryInc/compound-engineering-plugin/compare/v2.34.5...v2.34.6) (2026-03-10)
11
31
 
12
32
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@every-env/compound-plugin",
3
- "version": "2.34.6",
3
+ "version": "2.35.0",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "bin": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "compound-engineering",
3
3
  "version": "2.38.1",
4
- "description": "AI-powered development tools. 29 agents, 22 commands, 20 skills, 1 MCP server for code review, research, design, and workflow automation.",
4
+ "description": "AI-powered development tools. 28 agents, 22 commands, 20 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",
@@ -2,7 +2,7 @@
2
2
  "name": "compound-engineering",
3
3
  "displayName": "Compound Engineering",
4
4
  "version": "2.33.0",
5
- "description": "AI-powered development tools. 29 agents, 22 commands, 19 skills, 1 MCP server for code review, research, design, and workflow automation.",
5
+ "description": "AI-powered development tools. 28 agents, 22 commands, 19 skills, 1 MCP server for code review, research, design, and workflow automation.",
6
6
  "author": {
7
7
  "name": "Kieran Klaassen",
8
8
  "email": "kieran@every.to",
@@ -138,8 +138,11 @@ Think like a product manager - what would make this issue clear and actionable?
138
138
 
139
139
  - [ ] Draft clear, searchable issue title using conventional format (e.g., `feat: Add user authentication`, `fix: Cart total calculation`)
140
140
  - [ ] Determine issue type: enhancement, bug, refactor
141
- - [ ] Convert title to filename: add today's date prefix, strip prefix colon, kebab-case, add `-plan` suffix
142
- - Example: `feat: Add User Authentication` `2026-01-21-feat-add-user-authentication-plan.md`
141
+ - [ ] Convert title to filename: add today's date prefix, determine daily sequence number, strip prefix colon, kebab-case, add `-plan` suffix
142
+ - Scan `docs/plans/` for files matching today's date pattern `YYYY-MM-DD-\d{3}-`
143
+ - Find the highest existing sequence number for today
144
+ - Increment by 1, zero-padded to 3 digits (001, 002, etc.)
145
+ - Example: `feat: Add User Authentication` → `2026-01-21-001-feat-add-user-authentication-plan.md`
143
146
  - Keep it descriptive (3-5 words after prefix) so plans are findable by context
144
147
 
145
148
  **Stakeholder Analysis:**
@@ -538,9 +541,13 @@ Before finalizing, re-read the brainstorm document and verify:
538
541
 
539
542
  ```bash
540
543
  mkdir -p docs/plans/
544
+ # Determine daily sequence number
545
+ today=$(date +%Y-%m-%d)
546
+ last_seq=$(ls docs/plans/${today}-*-plan.md 2>/dev/null | grep -oP "${today}-\K\d{3}" | sort -n | tail -1)
547
+ next_seq=$(printf "%03d" $(( ${last_seq:-0} + 1 )))
541
548
  ```
542
549
 
543
- Use the Write tool to save the complete plan to `docs/plans/YYYY-MM-DD-<type>-<descriptive-name>-plan.md`. This step is mandatory and cannot be skipped — even when running as part of LFG/SLFG or other automated pipelines.
550
+ Use the Write tool to save the complete plan to `docs/plans/YYYY-MM-DD-NNN-<type>-<descriptive-name>-plan.md` (where NNN is `$next_seq` from the bash command above). This step is mandatory and cannot be skipped — even when running as part of LFG/SLFG or other automated pipelines.
544
551
 
545
552
  Confirm: "Plan written to docs/plans/[filename]"
546
553
 
@@ -548,26 +555,26 @@ Confirm: "Plan written to docs/plans/[filename]"
548
555
 
549
556
  ## Output Format
550
557
 
551
- **Filename:** Use the date and kebab-case filename from Step 2 Title & Categorization.
558
+ **Filename:** Use the date, daily sequence number, and kebab-case filename from Step 2 Title & Categorization.
552
559
 
553
560
  ```
554
- docs/plans/YYYY-MM-DD-<type>-<descriptive-name>-plan.md
561
+ docs/plans/YYYY-MM-DD-NNN-<type>-<descriptive-name>-plan.md
555
562
  ```
556
563
 
557
564
  Examples:
558
- - ✅ `docs/plans/2026-01-15-feat-user-authentication-flow-plan.md`
559
- - ✅ `docs/plans/2026-02-03-fix-checkout-race-condition-plan.md`
560
- - ✅ `docs/plans/2026-03-10-refactor-api-client-extraction-plan.md`
561
- - ❌ `docs/plans/2026-01-15-feat-thing-plan.md` (not descriptive - what "thing"?)
562
- - ❌ `docs/plans/2026-01-15-feat-new-feature-plan.md` (too vague - what feature?)
563
- - ❌ `docs/plans/2026-01-15-feat: user auth-plan.md` (invalid characters - colon and space)
564
- - ❌ `docs/plans/feat-user-auth-plan.md` (missing date prefix)
565
+ - ✅ `docs/plans/2026-01-15-001-feat-user-authentication-flow-plan.md`
566
+ - ✅ `docs/plans/2026-02-03-001-fix-checkout-race-condition-plan.md`
567
+ - ✅ `docs/plans/2026-03-10-002-refactor-api-client-extraction-plan.md`
568
+ - ❌ `docs/plans/2026-01-15-feat-thing-plan.md` (missing sequence number, not descriptive)
569
+ - ❌ `docs/plans/2026-01-15-001-feat-new-feature-plan.md` (too vague - what feature?)
570
+ - ❌ `docs/plans/2026-01-15-001-feat: user auth-plan.md` (invalid characters - colon and space)
571
+ - ❌ `docs/plans/feat-user-auth-plan.md` (missing date prefix and sequence number)
565
572
 
566
573
  ## Post-Generation Options
567
574
 
568
575
  After writing the plan file, use the **AskUserQuestion tool** to present these options:
569
576
 
570
- **Question:** "Plan ready at `docs/plans/YYYY-MM-DD-<type>-<name>-plan.md`. What would you like to do next?"
577
+ **Question:** "Plan ready at `docs/plans/YYYY-MM-DD-NNN-<type>-<name>-plan.md`. What would you like to do next?"
571
578
 
572
579
  **Options:**
573
580
  1. **Open plan in editor** - Open the plan file for review
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: test-browser
3
3
  description: Run browser tests on pages affected by current PR or branch
4
- argument-hint: "[PR number, branch name, or 'current' for current branch]"
4
+ argument-hint: "[PR number, branch name, 'current', or --port PORT]"
5
5
  ---
6
6
 
7
7
  # Browser Test Command
@@ -122,31 +122,82 @@ Build a list of URLs to test based on the mapping.
122
122
 
123
123
  </file_to_route_mapping>
124
124
 
125
- ### 4. Verify Server is Running
125
+ ### 4. Detect Dev Server Port
126
+
127
+ <detect_port>
128
+
129
+ Determine the dev server port using this priority order:
130
+
131
+ **Priority 1: Explicit argument**
132
+ If the user passed a port number (e.g., `/test-browser 5000` or `/test-browser --port 5000`), use that port directly.
133
+
134
+ **Priority 2: CLAUDE.md / project instructions**
135
+ ```bash
136
+ # Check CLAUDE.md for port references
137
+ grep -Eio '(port\s*[:=]\s*|localhost:)([0-9]{4,5})' CLAUDE.md 2>/dev/null | grep -Eo '[0-9]{4,5}' | head -1
138
+ ```
139
+
140
+ **Priority 3: package.json scripts**
141
+ ```bash
142
+ # Check dev/start scripts for --port flags
143
+ grep -Eo '\-\-port[= ]+[0-9]{4,5}' package.json 2>/dev/null | grep -Eo '[0-9]{4,5}' | head -1
144
+ ```
145
+
146
+ **Priority 4: Environment files**
147
+ ```bash
148
+ # Check .env, .env.local, .env.development for PORT=
149
+ grep -h '^PORT=' .env .env.local .env.development 2>/dev/null | tail -1 | cut -d= -f2
150
+ ```
151
+
152
+ **Priority 5: Default fallback**
153
+ If none of the above yields a port, default to `3000`.
154
+
155
+ Store the result in a `PORT` variable for use in all subsequent steps.
156
+
157
+ ```bash
158
+ # Combined detection (run this)
159
+ PORT="${EXPLICIT_PORT:-}"
160
+ if [ -z "$PORT" ]; then
161
+ PORT=$(grep -Eio '(port\s*[:=]\s*|localhost:)([0-9]{4,5})' CLAUDE.md 2>/dev/null | grep -Eo '[0-9]{4,5}' | head -1)
162
+ fi
163
+ if [ -z "$PORT" ]; then
164
+ PORT=$(grep -Eo '\-\-port[= ]+[0-9]{4,5}' package.json 2>/dev/null | grep -Eo '[0-9]{4,5}' | head -1)
165
+ fi
166
+ if [ -z "$PORT" ]; then
167
+ PORT=$(grep -h '^PORT=' .env .env.local .env.development 2>/dev/null | tail -1 | cut -d= -f2)
168
+ fi
169
+ PORT="${PORT:-3000}"
170
+ echo "Using dev server port: $PORT"
171
+ ```
172
+
173
+ </detect_port>
174
+
175
+ ### 5. Verify Server is Running
126
176
 
127
177
  <check_server>
128
178
 
129
- Before testing, verify the local server is accessible:
179
+ Before testing, verify the local server is accessible using the detected port:
130
180
 
131
181
  ```bash
132
- agent-browser open http://localhost:3000
182
+ agent-browser open http://localhost:${PORT}
133
183
  agent-browser snapshot -i
134
184
  ```
135
185
 
136
186
  If server is not running, inform user:
137
187
  ```markdown
138
- **Server not running**
188
+ **Server not running on port ${PORT}**
139
189
 
140
190
  Please start your development server:
141
191
  - Rails: `bin/dev` or `rails server`
142
192
  - Node/Next.js: `npm run dev`
193
+ - Custom port: `/test-browser --port <your-port>`
143
194
 
144
195
  Then run `/test-browser` again.
145
196
  ```
146
197
 
147
198
  </check_server>
148
199
 
149
- ### 5. Test Each Affected Page
200
+ ### 6. Test Each Affected Page
150
201
 
151
202
  <test_pages>
152
203
 
@@ -154,13 +205,13 @@ For each affected route, use agent-browser CLI commands (NOT Chrome MCP):
154
205
 
155
206
  **Step 1: Navigate and capture snapshot**
156
207
  ```bash
157
- agent-browser open "http://localhost:3000/[route]"
208
+ agent-browser open "http://localhost:${PORT}/[route]"
158
209
  agent-browser snapshot -i
159
210
  ```
160
211
 
161
212
  **Step 2: For headed mode (visual debugging)**
162
213
  ```bash
163
- agent-browser --headed open "http://localhost:3000/[route]"
214
+ agent-browser --headed open "http://localhost:${PORT}/[route]"
164
215
  agent-browser --headed snapshot -i
165
216
  ```
166
217
 
@@ -185,7 +236,7 @@ agent-browser screenshot --full page-name-full.png # Full page
185
236
 
186
237
  </test_pages>
187
238
 
188
- ### 6. Human Verification (When Required)
239
+ ### 7. Human Verification (When Required)
189
240
 
190
241
  <human_verification>
191
242
 
@@ -214,7 +265,7 @@ Did it work correctly?
214
265
 
215
266
  </human_verification>
216
267
 
217
- ### 7. Handle Failures
268
+ ### 8. Handle Failures
218
269
 
219
270
  <failure_handling>
220
271
 
@@ -253,7 +304,7 @@ When a test fails:
253
304
 
254
305
  </failure_handling>
255
306
 
256
- ### 8. Test Summary
307
+ ### 9. Test Summary
257
308
 
258
309
  <test_summary>
259
310
 
@@ -263,7 +314,7 @@ After all tests complete, present summary:
263
314
  ## Browser Test Results
264
315
 
265
316
  **Test Scope:** PR #[number] / [branch name]
266
- **Server:** http://localhost:3000
317
+ **Server:** http://localhost:${PORT}
267
318
 
268
319
  ### Pages Tested: [count]
269
320
 
@@ -295,7 +346,7 @@ After all tests complete, present summary:
295
346
  ## Quick Usage Examples
296
347
 
297
348
  ```bash
298
- # Test current branch changes
349
+ # Test current branch changes (auto-detects port)
299
350
  /test-browser
300
351
 
301
352
  # Test specific PR
@@ -303,6 +354,9 @@ After all tests complete, present summary:
303
354
 
304
355
  # Test specific branch
305
356
  /test-browser feature/new-dashboard
357
+
358
+ # Test on a specific port
359
+ /test-browser --port 5000
306
360
  ```
307
361
 
308
362
  ## agent-browser CLI Reference
@@ -202,6 +202,107 @@ Returns:
202
202
  }
203
203
  ```
204
204
 
205
+ ## Inspection & Debugging
206
+
207
+ ### JavaScript Evaluation
208
+
209
+ ```bash
210
+ agent-browser eval "document.title" # Evaluate JS expression
211
+ agent-browser eval "JSON.stringify(localStorage)" # Return serialized data
212
+ agent-browser eval "document.querySelectorAll('a').length" # Count elements
213
+ ```
214
+
215
+ ### Console & Errors
216
+
217
+ ```bash
218
+ agent-browser console # Show browser console output
219
+ agent-browser console --clear # Show and clear console
220
+ agent-browser errors # Show JavaScript errors only
221
+ agent-browser errors --clear # Show and clear errors
222
+ ```
223
+
224
+ ## Network
225
+
226
+ ```bash
227
+ agent-browser network requests # List captured requests
228
+ agent-browser network requests --filter "api" # Filter by URL pattern
229
+ agent-browser route "**/*.png" abort # Block matching requests
230
+ agent-browser route "https://api.example.com/*" fulfill --status 200 --body '{"mock":true}' # Mock response
231
+ agent-browser unroute "**/*.png" # Remove route handler
232
+ ```
233
+
234
+ ## Storage
235
+
236
+ ### Cookies
237
+
238
+ ```bash
239
+ agent-browser cookies get # Get all cookies
240
+ agent-browser cookies get --name "session" # Get specific cookie
241
+ agent-browser cookies set --name "token" --value "abc" # Set cookie
242
+ agent-browser cookies clear # Clear all cookies
243
+ ```
244
+
245
+ ### Local & Session Storage
246
+
247
+ ```bash
248
+ agent-browser storage local # Get all localStorage
249
+ agent-browser storage local --key "theme" # Get specific key
250
+ agent-browser storage session # Get all sessionStorage
251
+ agent-browser storage session --key "cart" # Get specific key
252
+ ```
253
+
254
+ ## Device & Settings
255
+
256
+ ```bash
257
+ agent-browser set viewport 1920 1080 # Set viewport size
258
+ agent-browser set device "iPhone 14" # Emulate device
259
+ agent-browser set geo --lat 47.6 --lon -122.3 # Set geolocation
260
+ agent-browser set offline true # Enable offline mode
261
+ agent-browser set offline false # Disable offline mode
262
+ agent-browser set media "prefers-color-scheme" "dark" # Set media feature
263
+ agent-browser set headers '{"X-Custom":"value"}' # Set extra HTTP headers
264
+ agent-browser set credentials "user" "pass" # Set HTTP auth credentials
265
+ ```
266
+
267
+ ## Element Debugging
268
+
269
+ ```bash
270
+ agent-browser highlight @e1 # Highlight element visually
271
+ agent-browser get box @e1 # Get bounding box (x, y, width, height)
272
+ agent-browser get styles @e1 # Get computed styles
273
+ agent-browser is visible @e1 # Check if element is visible
274
+ agent-browser is enabled @e1 # Check if element is enabled
275
+ agent-browser is checked @e1 # Check if checkbox/radio is checked
276
+ ```
277
+
278
+ ## Recording & Tracing
279
+
280
+ ```bash
281
+ agent-browser trace start # Start recording trace
282
+ agent-browser trace stop trace.zip # Stop and save trace file
283
+ agent-browser record start # Start recording video
284
+ agent-browser record stop video.webm # Stop and save recording
285
+ ```
286
+
287
+ ## Tabs & Windows
288
+
289
+ ```bash
290
+ agent-browser tab list # List open tabs
291
+ agent-browser tab new https://example.com # Open URL in new tab
292
+ agent-browser tab close # Close current tab
293
+ agent-browser tab 2 # Switch to tab by index
294
+ ```
295
+
296
+ ## Advanced Mouse
297
+
298
+ ```bash
299
+ agent-browser mouse move 100 200 # Move mouse to coordinates
300
+ agent-browser mouse down # Press mouse button
301
+ agent-browser mouse up # Release mouse button
302
+ agent-browser mouse wheel 0 500 # Scroll (deltaX, deltaY)
303
+ agent-browser drag @e1 @e2 # Drag from element to element
304
+ ```
305
+
205
306
  ## vs Playwright MCP
206
307
 
207
308
  | Feature | agent-browser (CLI) | Playwright MCP |
@@ -1,64 +0,0 @@
1
- ---
2
- name: every-style-editor
3
- description: "Reviews and edits text content to conform to Every's editorial style guide. Use when written content needs style compliance checks for headlines, punctuation, voice, and formatting."
4
- tools: Task, Glob, Grep, LS, ExitPlanMode, Read, Edit, MultiEdit, Write, NotebookRead, NotebookEdit, WebFetch, TodoWrite, WebSearch
5
- model: inherit
6
- ---
7
-
8
- You are an expert copy editor specializing in Every's house style guide. Your role is to meticulously review text content and suggest edits to ensure compliance with Every's specific editorial standards.
9
-
10
- When reviewing content, you will:
11
-
12
- 1. **Systematically check each style rule** - Go through the style guide items one by one, checking the text against each rule
13
- 2. **Provide specific edit suggestions** - For each issue found, quote the problematic text and provide the corrected version
14
- 3. **Explain the rule being applied** - Reference which style guide rule necessitates each change
15
- 4. **Maintain the author's voice** - Make only the changes necessary for style compliance while preserving the original tone and meaning
16
-
17
- **Every Style Guide Rules to Apply:**
18
-
19
- - Headlines use title case; everything else uses sentence case
20
- - Companies are singular ("it" not "they"); teams/people within companies are plural
21
- - Remove unnecessary "actually," "very," or "just"
22
- - Hyperlink 2-4 words when linking to sources
23
- - Cut adverbs where possible
24
- - Use active voice instead of passive voice
25
- - Spell out numbers one through nine (except years at sentence start); use numerals for 10+
26
- - Use italics for emphasis (never bold or underline)
27
- - Image credits: _Source: X/Name_ or _Source: Website name_
28
- - Don't capitalize job titles
29
- - Capitalize after colons only if introducing independent clauses
30
- - Use Oxford commas (x, y, and z)
31
- - Use commas between independent clauses only
32
- - No space after ellipsis...
33
- - Em dashes—like this—with no spaces (max 2 per paragraph)
34
- - Hyphenate compound adjectives except with adverbs ending in "ly"
35
- - Italicize titles of books, newspapers, movies, TV shows, games
36
- - Full names on first mention, last names thereafter (first names in newsletters/social)
37
- - Percentages: "7 percent" (numeral + spelled out)
38
- - Numbers over 999 take commas: 1,000
39
- - Punctuation outside parentheses (unless full sentence inside)
40
- - Periods and commas inside quotation marks
41
- - Single quotes for quotes within quotes
42
- - Comma before quote if introduced; no comma if text leads directly into quote
43
- - Use "earlier/later/previously" instead of "above/below"
44
- - Use "more/less/fewer" instead of "over/under" for quantities
45
- - Avoid slashes; use hyphens when needed
46
- - Don't start sentences with "This" without clear antecedent
47
- - Avoid starting with "We have" or "We get"
48
- - Avoid clichés and jargon
49
- - "Two times faster" not "2x" (except for the common "10x" trope)
50
- - Use "$1 billion" not "one billion dollars"
51
- - Identify people by company/title (except well-known figures like Mark Zuckerberg)
52
- - Button text is always sentence case -- "Complete setup"
53
-
54
- **Output Format:**
55
-
56
- Provide your review as a numbered list of suggested edits, grouping related changes when logical. For each edit:
57
-
58
- - Quote the original text
59
- - Provide the corrected version
60
- - Briefly explain which style rule applies
61
-
62
- If the text is already compliant with the style guide, acknowledge this and highlight any particularly well-executed style choices.
63
-
64
- Be thorough but constructive, focusing on helping the content shine while maintaining Every's professional standards.