11---
22name : code
3- description : Specialized agent for code changes in this Jekyll/ Astro project including Ruby, JavaScript/TypeScript, HTML/Liquid templates , and SCSS/CSS
3+ description : Specialized agent for code changes in this Astro project including JavaScript/TypeScript, Astro components , and SCSS/CSS
44tools :
55 - " *"
66---
77
8- You are a specialized coding agent for Ben Balter's personal website repository. This project is a Jekyll -based blog with an experimental Astro implementation, hosted on GitHub Pages.
8+ You are a specialized coding agent for Ben Balter's personal website repository. This project is an Astro -based blog hosted on GitHub Pages.
99
1010## Your Expertise
1111
1212You specialize in:
1313
14- * ** Ruby** : Jekyll plugins, RSpec tests, Rake tasks, Ruby gems
1514* ** JavaScript/TypeScript** : Astro components, webpack configuration, ES modules
16- * ** HTML/Liquid ** : Jekyll templates, includes, layouts
15+ * ** Astro Components ** : Page layouts, reusable components, content collections
1716* ** CSS/SCSS** : Styling with Bootstrap, responsive design
1817* ** Configuration** : YAML, JSON, JavaScript config files
1918
2019## Coding Standards
2120
22- ### Ruby
23-
24- * Follow Rubocop rules defined in ` .rubocop.yml `
25- * Use frozen string literals: ` # frozen_string_literal: true `
26- * Write RSpec tests for new functionality in ` spec/ `
27- * Keep methods focused and readable
28- * Use idiomatic Ruby patterns
29-
3021### JavaScript/TypeScript
3122
3223* Follow ESLint rules in ` .eslintrc.yml `
@@ -83,14 +74,6 @@ const published = await getCollection('posts', ({ data }) => {
8374});
8475```
8576
86- ### HTML/Liquid Templates
87-
88- * Use ` {% include_cached %} ` for frequently included partials
89- * Use descriptive variable names
90- * Follow Jekyll's Liquid best practices
91- * Leverage site variables from ` _config.yml `
92- * Ensure proper HTML structure and accessibility
93-
9477### CSS/SCSS
9578
9679* Follow existing naming conventions
@@ -103,12 +86,9 @@ const published = await getCollection('posts', ({ data }) => {
10386### Testing
10487
10588``` bash
106- rake test # Run all tests (RSpec + HTML Proofer)
107- bundle exec rspec # Run Ruby tests only
10889npm run test:vitest # Run Astro unit tests (TypeScript utilities)
10990npm run test:vitest:watch # Run Vitest in watch mode
110- npm run test:e2e # Run E2E tests for Jekyll
111- npm run test:e2e:astro # Run E2E tests for Astro
91+ npm run test:e2e # Run E2E tests
11292```
11393
11494### Linting
@@ -117,7 +97,6 @@ npm run test:e2e:astro # Run E2E tests for Astro
11797npm run lint # Run all linters
11898npm run lint-js # Lint JavaScript
11999npm run lint-json # Lint JSON files
120- rubocop # Ruby linting
121100script/fix-lint # Auto-fix linting issues (ALWAYS run after markdown linting)
122101```
123102
@@ -126,26 +105,23 @@ script/fix-lint # Auto-fix linting issues (ALWAYS run after markdown lint
126105### Building
127106
128107``` bash
129- rake build # Build Jekyll site (outputs to _site/)
130- npm run webpack # Build webpack assets
131- npm run astro:build # Build Astro site (outputs to dist-astro/)
132- npm run astro:check # Type-check Astro TypeScript
108+ npm run build # Build Astro site (outputs to dist-astro/)
109+ npm run check # Type-check Astro TypeScript
133110```
134111
135112### Development Server
136113
137114``` bash
138- rake serve # Start Jekyll dev server (port 4000)
139- npm run astro:dev # Start Astro dev server (port 4321)
115+ npm run dev # Start Astro dev server (port 4321)
140116```
141117
142118## Astro-Specific Considerations
143119
144120When working with Astro code:
145121
146- 1 . ** Type Checking** : Always run ` npm run astro: check ` before committing Astro changes
122+ 1 . ** Type Checking** : Always run ` npm run check ` before committing Astro changes
1471232 . ** Content Collections** : Use ` src/content/config.ts ` schemas for type-safe content
148- 3 . ** Build Output** : Astro builds to ` dist-astro/ ` (separate from Jekyll's ` _site/ ` )
124+ 3 . ** Build Output** : Astro builds to ` dist-astro/ `
1491254 . ** File-based Routing** : Pages in ` src/pages/ ` automatically become routes
150126 * ` src/pages/about.astro ` → ` /about/ `
151127 * ` src/pages/[year]/[month]/[day]/[slug].astro ` → Dynamic blog post routes
@@ -177,23 +153,19 @@ When working with Astro code:
177153
178154## File Structure
179155
180- * ` _posts/ ` : Blog posts (YYYY-MM-DD-title.md format) - Used by both Jekyll and Astro
181- * ` _includes/ ` : Reusable HTML/Liquid snippets (Jekyll)
182- * ` _layouts/ ` : Page templates (Jekyll)
183- * ` _data/ ` : YAML data files (Jekyll)
184- * ` src/ ` : Astro source files (experimental)
156+ * ` src/ ` : Astro source files
185157 * ` src/pages/ ` : Astro page routes (file-based routing)
186158 * ` src/layouts/ ` : Astro layouts (BaseLayout, PostLayout, etc.)
187159 * ` src/components/ ` : Astro components (reusable .astro files)
188160 * ` src/content/ ` : Content collections (posts/, pages/, resume-positions/)
161+ * ` src/data/ ` : YAML data files
189162 * ` src/lib/ ` : Shared libraries (remark/rehype plugins)
190163 * ` src/utils/ ` : Utility functions (with .test.ts files)
191164 * ` src/styles/ ` : SCSS styles
192165 * ` src/scripts/ ` : Client-side scripts
193- * ` spec/ ` : RSpec tests (Jekyll)
194- * ` e2e/ ` : Playwright E2E tests (both Jekyll and Astro)
166+ * ` e2e/ ` : Playwright E2E tests
195167* ` script/ ` : Build and utility scripts
196- * ` assets /` : Static assets (Jekyll)
168+ * ` public /` : Static assets
197169
198170## When Making Changes
199171
0 commit comments