Skip to content

Latest commit

History

History
85 lines (64 loc) · 2.57 KB

File metadata and controls

85 lines (64 loc) · 2.57 KB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

VanRuby is the website for Vancouver's Ruby community (vanruby.org), built with Jekyll static site generator. The site showcases events, sponsors, and community information.

Development Commands

Local Development

bundle install # Install dependencies
bundle exec jekyll serve --watch # Start development server at http://localhost:4000

Linting

bundle exec rubocop # Run RuboCop linter

Architecture

Jekyll Static Site

  • Uses rdiscount markdown processor with smart extensions
  • Layouts in _layouts/: layout.html (main), post.html (blog posts)
  • Data files in _data/: companies.csv
  • Generated site output in _site/ (excluded from git)

Frontend Stack

  • Bootstrap 5 for styling
  • Custom SVG logos for sponsors (Clio, NorthEast, GitHub, Zayzoon)
  • Responsive design with mobile-first approach
  • Luma calendar integration for upcoming events

Key Pages

  • index.html - Homepage with hero, sponsors, stats, and event calendar
  • companies.html - Companies using Ruby in Vancouver
  • 2014-heroes.html - Historical tribute page

Ruby Version

Ruby 3.4.6 (see .ruby-version)

Git Commit Standards

Follow the Conventional Commits specification for all commit messages.

IMPORTANT: Do not include AI tools (Claude, ChatGPT, etc.) as co-authors or mention them in commit messages. All commits should be attributed to human authors only.

Format

<type>(<scope>): <subject>
[optional body]
[optional footer]

Types

  • feat: A new feature
  • fix: A bug fix
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, etc)
  • refactor: A code change that neither fixes a bug nor adds a feature
  • perf: A code change that improves performance
  • test: Adding missing tests or correcting existing tests
  • build: Changes that affect the build system or external dependencies
  • ci: Changes to CI configuration files and scripts
  • chore: Other changes that don't modify src or test files

Scopes (optional)

  • sponsors: Sponsor-related changes
  • content: Website content updates
  • deps: Dependency updates

Examples

fix(sponsors): correct logo alignment on mobile
feat(content): add new community section
docs: update README with deployment instructions
chore(deps): update jekyll to 4.3.0

Important Notes

  • Sponsor logos are SVG files in images/sponsors/
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
vanruby.github.io/CLAUDE.md at main · vanruby/vanruby.github.io · GitHub
Skip to content

Latest commit

History

History
85 lines (64 loc) · 2.57 KB

File metadata and controls

85 lines (64 loc) · 2.57 KB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

VanRuby is the website for Vancouver's Ruby community (vanruby.org), built with Jekyll static site generator. The site showcases events, sponsors, and community information.

Development Commands

Local Development

bundle install # Install dependencies
bundle exec jekyll serve --watch # Start development server at http://localhost:4000

Linting

bundle exec rubocop # Run RuboCop linter

Architecture

Jekyll Static Site

  • Uses rdiscount markdown processor with smart extensions
  • Layouts in _layouts/: layout.html (main), post.html (blog posts)
  • Data files in _data/: companies.csv
  • Generated site output in _site/ (excluded from git)

Frontend Stack

  • Bootstrap 5 for styling
  • Custom SVG logos for sponsors (Clio, NorthEast, GitHub, Zayzoon)
  • Responsive design with mobile-first approach
  • Luma calendar integration for upcoming events

Key Pages

  • index.html - Homepage with hero, sponsors, stats, and event calendar
  • companies.html - Companies using Ruby in Vancouver
  • 2014-heroes.html - Historical tribute page

Ruby Version

Ruby 3.4.6 (see .ruby-version)

Git Commit Standards

Follow the Conventional Commits specification for all commit messages.

IMPORTANT: Do not include AI tools (Claude, ChatGPT, etc.) as co-authors or mention them in commit messages. All commits should be attributed to human authors only.

Format

<type>(<scope>): <subject>
[optional body]
[optional footer]

Types

  • feat: A new feature
  • fix: A bug fix
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, etc)
  • refactor: A code change that neither fixes a bug nor adds a feature
  • perf: A code change that improves performance
  • test: Adding missing tests or correcting existing tests
  • build: Changes that affect the build system or external dependencies
  • ci: Changes to CI configuration files and scripts
  • chore: Other changes that don't modify src or test files

Scopes (optional)

  • sponsors: Sponsor-related changes
  • content: Website content updates
  • deps: Dependency updates

Examples

fix(sponsors): correct logo alignment on mobile
feat(content): add new community section
docs: update README with deployment instructions
chore(deps): update jekyll to 4.3.0

Important Notes

  • Sponsor logos are SVG files in images/sponsors/
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' vanruby.github.io/CLAUDE.md at main · vanruby/vanruby.github.io · GitHub
Skip to content

Latest commit

History

History
85 lines (64 loc) · 2.57 KB

File metadata and controls

85 lines (64 loc) · 2.57 KB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

VanRuby is the website for Vancouver's Ruby community (vanruby.org), built with Jekyll static site generator. The site showcases events, sponsors, and community information.

Development Commands

Local Development

bundle install # Install dependencies
bundle exec jekyll serve --watch # Start development server at http://localhost:4000

Linting

bundle exec rubocop # Run RuboCop linter

Architecture

Jekyll Static Site

  • Uses rdiscount markdown processor with smart extensions
  • Layouts in _layouts/: layout.html (main), post.html (blog posts)
  • Data files in _data/: companies.csv
  • Generated site output in _site/ (excluded from git)

Frontend Stack

  • Bootstrap 5 for styling
  • Custom SVG logos for sponsors (Clio, NorthEast, GitHub, Zayzoon)
  • Responsive design with mobile-first approach
  • Luma calendar integration for upcoming events

Key Pages

  • index.html - Homepage with hero, sponsors, stats, and event calendar
  • companies.html - Companies using Ruby in Vancouver
  • 2014-heroes.html - Historical tribute page

Ruby Version

Ruby 3.4.6 (see .ruby-version)

Git Commit Standards

Follow the Conventional Commits specification for all commit messages.

IMPORTANT: Do not include AI tools (Claude, ChatGPT, etc.) as co-authors or mention them in commit messages. All commits should be attributed to human authors only.

Format

<type>(<scope>): <subject>
[optional body]
[optional footer]

Types

  • feat: A new feature
  • fix: A bug fix
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, etc)
  • refactor: A code change that neither fixes a bug nor adds a feature
  • perf: A code change that improves performance
  • test: Adding missing tests or correcting existing tests
  • build: Changes that affect the build system or external dependencies
  • ci: Changes to CI configuration files and scripts
  • chore: Other changes that don't modify src or test files

Scopes (optional)

  • sponsors: Sponsor-related changes
  • content: Website content updates
  • deps: Dependency updates

Examples

fix(sponsors): correct logo alignment on mobile
feat(content): add new community section
docs: update README with deployment instructions
chore(deps): update jekyll to 4.3.0

Important Notes

  • Sponsor logos are SVG files in images/sponsors/
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' vanruby.github.io/CLAUDE.md at main · vanruby/vanruby.github.io · GitHub
Skip to content

Latest commit

History

History
85 lines (64 loc) · 2.57 KB

File metadata and controls

85 lines (64 loc) · 2.57 KB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

VanRuby is the website for Vancouver's Ruby community (vanruby.org), built with Jekyll static site generator. The site showcases events, sponsors, and community information.

Development Commands

Local Development

bundle install # Install dependencies
bundle exec jekyll serve --watch # Start development server at http://localhost:4000

Linting

bundle exec rubocop # Run RuboCop linter

Architecture

Jekyll Static Site

  • Uses rdiscount markdown processor with smart extensions
  • Layouts in _layouts/: layout.html (main), post.html (blog posts)
  • Data files in _data/: companies.csv
  • Generated site output in _site/ (excluded from git)

Frontend Stack

  • Bootstrap 5 for styling
  • Custom SVG logos for sponsors (Clio, NorthEast, GitHub, Zayzoon)
  • Responsive design with mobile-first approach
  • Luma calendar integration for upcoming events

Key Pages

  • index.html - Homepage with hero, sponsors, stats, and event calendar
  • companies.html - Companies using Ruby in Vancouver
  • 2014-heroes.html - Historical tribute page

Ruby Version

Ruby 3.4.6 (see .ruby-version)

Git Commit Standards

Follow the Conventional Commits specification for all commit messages.

IMPORTANT: Do not include AI tools (Claude, ChatGPT, etc.) as co-authors or mention them in commit messages. All commits should be attributed to human authors only.

Format

<type>(<scope>): <subject>
[optional body]
[optional footer]

Types

  • feat: A new feature
  • fix: A bug fix
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, etc)
  • refactor: A code change that neither fixes a bug nor adds a feature
  • perf: A code change that improves performance
  • test: Adding missing tests or correcting existing tests
  • build: Changes that affect the build system or external dependencies
  • ci: Changes to CI configuration files and scripts
  • chore: Other changes that don't modify src or test files

Scopes (optional)

  • sponsors: Sponsor-related changes
  • content: Website content updates
  • deps: Dependency updates

Examples

fix(sponsors): correct logo alignment on mobile
feat(content): add new community section
docs: update README with deployment instructions
chore(deps): update jekyll to 4.3.0

Important Notes

  • Sponsor logos are SVG files in images/sponsors/
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' vanruby.github.io/CLAUDE.md at main · vanruby/vanruby.github.io · GitHub
Skip to content

Latest commit

History

History
85 lines (64 loc) · 2.57 KB

File metadata and controls

85 lines (64 loc) · 2.57 KB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

VanRuby is the website for Vancouver's Ruby community (vanruby.org), built with Jekyll static site generator. The site showcases events, sponsors, and community information.

Development Commands

Local Development

bundle install # Install dependencies
bundle exec jekyll serve --watch # Start development server at http://localhost:4000

Linting

bundle exec rubocop # Run RuboCop linter

Architecture

Jekyll Static Site

  • Uses rdiscount markdown processor with smart extensions
  • Layouts in _layouts/: layout.html (main), post.html (blog posts)
  • Data files in _data/: companies.csv
  • Generated site output in _site/ (excluded from git)

Frontend Stack

  • Bootstrap 5 for styling
  • Custom SVG logos for sponsors (Clio, NorthEast, GitHub, Zayzoon)
  • Responsive design with mobile-first approach
  • Luma calendar integration for upcoming events

Key Pages

  • index.html - Homepage with hero, sponsors, stats, and event calendar
  • companies.html - Companies using Ruby in Vancouver
  • 2014-heroes.html - Historical tribute page

Ruby Version

Ruby 3.4.6 (see .ruby-version)

Git Commit Standards

Follow the Conventional Commits specification for all commit messages.

IMPORTANT: Do not include AI tools (Claude, ChatGPT, etc.) as co-authors or mention them in commit messages. All commits should be attributed to human authors only.

Format

<type>(<scope>): <subject>
[optional body]
[optional footer]

Types

  • feat: A new feature
  • fix: A bug fix
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, etc)
  • refactor: A code change that neither fixes a bug nor adds a feature
  • perf: A code change that improves performance
  • test: Adding missing tests or correcting existing tests
  • build: Changes that affect the build system or external dependencies
  • ci: Changes to CI configuration files and scripts
  • chore: Other changes that don't modify src or test files

Scopes (optional)

  • sponsors: Sponsor-related changes
  • content: Website content updates
  • deps: Dependency updates

Examples

fix(sponsors): correct logo alignment on mobile
feat(content): add new community section
docs: update README with deployment instructions
chore(deps): update jekyll to 4.3.0

Important Notes

  • Sponsor logos are SVG files in images/sponsors/
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' vanruby.github.io/CLAUDE.md at main · vanruby/vanruby.github.io · GitHub
Skip to content

Latest commit

History

History
85 lines (64 loc) · 2.57 KB

File metadata and controls

85 lines (64 loc) · 2.57 KB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

VanRuby is the website for Vancouver's Ruby community (vanruby.org), built with Jekyll static site generator. The site showcases events, sponsors, and community information.

Development Commands

Local Development

bundle install # Install dependencies
bundle exec jekyll serve --watch # Start development server at http://localhost:4000

Linting

bundle exec rubocop # Run RuboCop linter

Architecture

Jekyll Static Site

  • Uses rdiscount markdown processor with smart extensions
  • Layouts in _layouts/: layout.html (main), post.html (blog posts)
  • Data files in _data/: companies.csv
  • Generated site output in _site/ (excluded from git)

Frontend Stack

  • Bootstrap 5 for styling
  • Custom SVG logos for sponsors (Clio, NorthEast, GitHub, Zayzoon)
  • Responsive design with mobile-first approach
  • Luma calendar integration for upcoming events

Key Pages

  • index.html - Homepage with hero, sponsors, stats, and event calendar
  • companies.html - Companies using Ruby in Vancouver
  • 2014-heroes.html - Historical tribute page

Ruby Version

Ruby 3.4.6 (see .ruby-version)

Git Commit Standards

Follow the Conventional Commits specification for all commit messages.

IMPORTANT: Do not include AI tools (Claude, ChatGPT, etc.) as co-authors or mention them in commit messages. All commits should be attributed to human authors only.

Format

<type>(<scope>): <subject>
[optional body]
[optional footer]

Types

  • feat: A new feature
  • fix: A bug fix
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, etc)
  • refactor: A code change that neither fixes a bug nor adds a feature
  • perf: A code change that improves performance
  • test: Adding missing tests or correcting existing tests
  • build: Changes that affect the build system or external dependencies
  • ci: Changes to CI configuration files and scripts
  • chore: Other changes that don't modify src or test files

Scopes (optional)

  • sponsors: Sponsor-related changes
  • content: Website content updates
  • deps: Dependency updates

Examples

fix(sponsors): correct logo alignment on mobile
feat(content): add new community section
docs: update README with deployment instructions
chore(deps): update jekyll to 4.3.0

Important Notes

  • Sponsor logos are SVG files in images/sponsors/
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' vanruby.github.io/CLAUDE.md at main · vanruby/vanruby.github.io · GitHub
Skip to content

Latest commit

History

History
85 lines (64 loc) · 2.57 KB

File metadata and controls

85 lines (64 loc) · 2.57 KB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

VanRuby is the website for Vancouver's Ruby community (vanruby.org), built with Jekyll static site generator. The site showcases events, sponsors, and community information.

Development Commands

Local Development

bundle install # Install dependencies
bundle exec jekyll serve --watch # Start development server at http://localhost:4000

Linting

bundle exec rubocop # Run RuboCop linter

Architecture

Jekyll Static Site

  • Uses rdiscount markdown processor with smart extensions
  • Layouts in _layouts/: layout.html (main), post.html (blog posts)
  • Data files in _data/: companies.csv
  • Generated site output in _site/ (excluded from git)

Frontend Stack

  • Bootstrap 5 for styling
  • Custom SVG logos for sponsors (Clio, NorthEast, GitHub, Zayzoon)
  • Responsive design with mobile-first approach
  • Luma calendar integration for upcoming events

Key Pages

  • index.html - Homepage with hero, sponsors, stats, and event calendar
  • companies.html - Companies using Ruby in Vancouver
  • 2014-heroes.html - Historical tribute page

Ruby Version

Ruby 3.4.6 (see .ruby-version)

Git Commit Standards

Follow the Conventional Commits specification for all commit messages.

IMPORTANT: Do not include AI tools (Claude, ChatGPT, etc.) as co-authors or mention them in commit messages. All commits should be attributed to human authors only.

Format

<type>(<scope>): <subject>
[optional body]
[optional footer]

Types

  • feat: A new feature
  • fix: A bug fix
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, etc)
  • refactor: A code change that neither fixes a bug nor adds a feature
  • perf: A code change that improves performance
  • test: Adding missing tests or correcting existing tests
  • build: Changes that affect the build system or external dependencies
  • ci: Changes to CI configuration files and scripts
  • chore: Other changes that don't modify src or test files

Scopes (optional)

  • sponsors: Sponsor-related changes
  • content: Website content updates
  • deps: Dependency updates

Examples

fix(sponsors): correct logo alignment on mobile
feat(content): add new community section
docs: update README with deployment instructions
chore(deps): update jekyll to 4.3.0

Important Notes

  • Sponsor logos are SVG files in images/sponsors/
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); vanruby.github.io/CLAUDE.md at main · vanruby/vanruby.github.io · GitHub
Skip to content

Latest commit

History

History
85 lines (64 loc) · 2.57 KB

File metadata and controls

85 lines (64 loc) · 2.57 KB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

VanRuby is the website for Vancouver's Ruby community (vanruby.org), built with Jekyll static site generator. The site showcases events, sponsors, and community information.

Development Commands

Local Development

bundle install # Install dependencies
bundle exec jekyll serve --watch # Start development server at http://localhost:4000

Linting

bundle exec rubocop # Run RuboCop linter

Architecture

Jekyll Static Site

  • Uses rdiscount markdown processor with smart extensions
  • Layouts in _layouts/: layout.html (main), post.html (blog posts)
  • Data files in _data/: companies.csv
  • Generated site output in _site/ (excluded from git)

Frontend Stack

  • Bootstrap 5 for styling
  • Custom SVG logos for sponsors (Clio, NorthEast, GitHub, Zayzoon)
  • Responsive design with mobile-first approach
  • Luma calendar integration for upcoming events

Key Pages

  • index.html - Homepage with hero, sponsors, stats, and event calendar
  • companies.html - Companies using Ruby in Vancouver
  • 2014-heroes.html - Historical tribute page

Ruby Version

Ruby 3.4.6 (see .ruby-version)

Git Commit Standards

Follow the Conventional Commits specification for all commit messages.

IMPORTANT: Do not include AI tools (Claude, ChatGPT, etc.) as co-authors or mention them in commit messages. All commits should be attributed to human authors only.

Format

<type>(<scope>): <subject>
[optional body]
[optional footer]

Types

  • feat: A new feature
  • fix: A bug fix
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, etc)
  • refactor: A code change that neither fixes a bug nor adds a feature
  • perf: A code change that improves performance
  • test: Adding missing tests or correcting existing tests
  • build: Changes that affect the build system or external dependencies
  • ci: Changes to CI configuration files and scripts
  • chore: Other changes that don't modify src or test files

Scopes (optional)

  • sponsors: Sponsor-related changes
  • content: Website content updates
  • deps: Dependency updates

Examples

fix(sponsors): correct logo alignment on mobile
feat(content): add new community section
docs: update README with deployment instructions
chore(deps): update jekyll to 4.3.0

Important Notes

  • Sponsor logos are SVG files in images/sponsors/