KS
Killer-Skills

compare-erb-js — how to use compare-erb-js how to use compare-erb-js, compare-erb-js setup guide, erb vs javascript template comparison, compare-erb-js alternative, compare-erb-js install, what is compare-erb-js, compare-erb-js template rendering, erb template comparison tool, javascript template verification

v1.0.0
GitHub

About this Skill

Perfect for Ruby-based AI Agents needing ERB template comparison and validation for offline scoring SPAs. compare-erb-js is a technical skill that compares ERB templates with their JavaScript-converted equivalents, verifying matching output for accurate rendering.

Features

Compares ERB templates with JavaScript-converted equivalents using scripts/render_erb_and_js.rb
Verifies matching output for offline scoring SPAs
Supports rendering of heat lists and individual heats
Utilizes Ruby scripts for template comparison
Works with SQLite3 databases, such as db/2025-barcelona-november.sqlite3
Enables verification of template output using bundle exec ruby commands

# Core Topics

rubys rubys
[0]
[0]
Updated: 3/7/2026

Quality Score

Top 5%
54
Excellent
Based on code quality & docs
Installation
SYS Universal Install (Auto-Detect)
Cursor IDE Windsurf IDE VS Code IDE
> npx killer-skills add rubys/showcase/compare-erb-js

Agent Capability Analysis

The compare-erb-js MCP Server by rubys is an open-source Categories.community integration for Claude and other AI agents, enabling seamless task automation and capability expansion. Optimized for how to use compare-erb-js, compare-erb-js setup guide, erb vs javascript template comparison.

Ideal Agent Persona

Perfect for Ruby-based AI Agents needing ERB template comparison and validation for offline scoring SPAs.

Core Value

Empowers agents to verify matching output between ERB templates and their JavaScript-converted equivalents using Ruby scripts like render_erb_and_js.rb, ensuring data consistency for auto-converted ERB templates in SQLite3 databases.

Capabilities Granted for compare-erb-js MCP Server

Comparing heat list outputs
Validating individual heat renderings
Debugging ERB to JavaScript conversions

! Prerequisites & Limits

  • Requires Ruby environment
  • SQLite3 database access needed
  • Limited to ERB and JavaScript template comparisons
Project
SKILL.md
4.3 KB
.cursorrules
1.2 KB
package.json
240 B
Ready
UTF-8

# Tags

[No tags]
SKILL.md
Readonly

Compare ERB vs JavaScript Template Output

Use scripts/render_erb_and_js.rb to verify that ERB templates and their JavaScript-converted equivalents produce matching output. This is essential for the offline scoring SPA which uses auto-converted ERB templates.

Basic Usage

bash
1# Compare heat list 2bundle exec ruby scripts/render_erb_and_js.rb db/2025-barcelona-november.sqlite3 83 3 4# Compare individual heat 5bundle exec ruby scripts/render_erb_and_js.rb db/2025-barcelona-november.sqlite3 83 1 6 7# With style parameter 8bundle exec ruby scripts/render_erb_and_js.rb db/2025-barcelona-november.sqlite3 83 1 radio

Or using environment variable:

bash
1RAILS_APP_DB=2025-barcelona-november bundle exec ruby scripts/render_erb_and_js.rb 83 1

What It Does

  1. Renders the ERB template via Rails routing (extracts <main> content)
  2. Fetches converted JavaScript templates from /templates/scoring.js
  3. Fetches normalized data from /scores/:judge/heats/data
  4. Hydrates the data using heat_hydrator.js (for individual heats)
  5. Renders using the JavaScript template
  6. Compares row counts and saves both outputs for diff analysis

Output Files

All files are saved to /tmp/ for analysis:

  • /tmp/erb_rendered.html - ERB template output (main content only)
  • /tmp/js_rendered.html - JavaScript template output
  • /tmp/scoring_templates.js - Converted templates from /templates/scoring.js
  • /tmp/heats_data.json - Raw normalized data from server
  • /tmp/js_template_data.json - Hydrated data passed to JS template

Analyzing Differences

bash
1# Quick diff 2diff /tmp/erb_rendered.html /tmp/js_rendered.html 3 4# Side-by-side comparison 5diff -y /tmp/erb_rendered.html /tmp/js_rendered.html | less 6 7# Compare specific attributes 8diff <(grep -o 'href="[^"]*"' /tmp/erb_rendered.html | sort) \ 9 <(grep -o 'href="[^"]*"' /tmp/js_rendered.html | sort)

Common Differences

Some differences are expected due to ERB-to-JS conversion limitations:

  • HTML entity encoding: ERB uses &quot; while JS uses "
  • link_to blocks: Block form of link_to may render differently
  • Whitespace: Minor whitespace differences are normal

Architecture

This tool supports the "Server computes, hydration joins, templates filter" principle:

  • Server: Computes derived values and paths (respects RAILS_APP_SCOPE)
  • Hydration: heat_hydrator.js joins normalized data by resolving IDs
  • Templates: ERB and JS templates filter/format data identically

Key Source Files

Server-side (Rails)

  • app/controllers/scores_controller.rb

    • heats_data action: Returns normalized JSON data for SPA
    • heat action: Sets instance variables for ERB templates
    • Computes paths: hash with server-computed URLs
  • app/controllers/templates_controller.rb

    • scoring action: Converts ERB templates to JavaScript on-the-fly
    • Defines path helper stubs for JS templates
    • Uses ErbPrismConverter for conversion
  • lib/erb_prism_converter.rb

    • Converts ERB templates to JavaScript functions using Ruby's Prism parser
    • Handles Ruby-to-JS translation (loops, conditionals, method calls)

Client-side (JavaScript)

  • app/javascript/lib/heat_hydrator.js

    • buildLookupTables(): Creates Maps for O(1) entity lookup
    • hydrateHeat(): Resolves IDs to full objects
    • buildHeatTemplateData(): Prepares complete data for templates
  • app/javascript/controllers/heat_app_controller.js

    • Main Stimulus controller for the offline scoring SPA
    • Loads templates and data, handles navigation
    • Manages offline/online state transitions

ERB Templates (source of truth)

  • app/views/scores/heat.html.erb - Main heat view
  • app/views/scores/heatlist.html.erb - Heat list view
  • app/views/scores/_heat_header.html.erb - Heat header partial
  • app/views/scores/_info_box.html.erb - Info box with feedback errors
  • app/views/scores/_navigation_footer.html.erb - Prev/next navigation
  • app/views/scores/_table_heat.html.erb - Standard heat table
  • app/views/scores/_rank_heat.html.erb - Finals ranking view
  • app/views/scores/_solo_heat.html.erb - Solo heat view
  • app/views/scores/_cards_heat.html.erb - Card-based scoring view

Scripts

  • scripts/render_erb_and_js.rb - This comparison tool
  • scripts/hydrate_heats.mjs - Node.js script for hydrating data (used by comparison tool)

Related Skills

Looking for an alternative to compare-erb-js or building a Categories.community AI Agent? Explore these related open-source MCP Servers.

View All

widget-generator

Logo of f
f

widget-generator is an open-source AI agent skill for creating widget plugins that are injected into prompt feeds on prompts.chat. It supports two rendering modes: standard prompt widgets using default PromptCard styling and custom render widgets built as full React components.

149.6k
0
Design

chat-sdk

Logo of lobehub
lobehub

chat-sdk is a unified TypeScript SDK for building chat bots across multiple platforms, providing a single interface for deploying bot logic.

73.0k
0
Communication

zustand

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
Communication

data-fetching

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
Communication