Skip to content

Instantly share code, notes, and snippets.

View rruhlen's full-sized avatar

Ricky Ruhlen rruhlen

  • San Francisco, CA
View GitHub Profile
@rruhlen
rruhlen / AGENTS.md
Created October 11, 2025 05:18 — forked from dctmfoo/AGENTS.md

AGENTS.md - Guide for AI Agents

Copy this template to new repositories and customize for your project.

Documentation Structure

Keep documentation minimal and focused:

  1. AGENTS.md (this file) - HOW to work on this codebase
  2. PROJECT_STATUS.md - WHAT's done, what's next, current blockers
@rruhlen
rruhlen / seo-best-practices.md
Created May 1, 2025 04:27
SEO rules for vibe coding

SEO rules for vibe coding

These rules guide AI agents in building SEO-friendly web applications, especially for non-technical vibe coding with AI tools.

While many AI-generated apps default to client-side rendering (CSR), server-side rendering (SSR) is strongly preferred for optimal SEO performance. If SSR is not possible, adhering strictly to these guidelines becomes even more critical.

Rendering strategy

  • Prioritize Server-Side Rendering (SSR)
  • Whenever feasible, configure the application to use SSR. This ensures search engines can easily crawl and index content without relying on JavaScript execution.
@rruhlen
rruhlen / cursor-rules.mdc
Last active May 1, 2025 04:29
This rule explains how to work with AI APIs like OpenAI and Anthropic.
---
description: This rule explains exactly how to structure new Cursor rules and where to add them
globs:
alwaysApply: false
---
# Creating new Cursor rules
This rule explains exactly how to create new Cursor rules for this project.
## Cursor rules location

Keybase proof

I hereby claim:

  • I am rruhlen on github.
  • I am ruhlen (https://keybase.io/ruhlen) on keybase.
  • I have a public key ASDcqnIAZXmbuHyjRtGBjEGx1WmFmJTVzdL93ZWBnhrC_Qo

To claim this, I am signing this object:

@rruhlen
rruhlen / article.css
Created February 21, 2019 17:53
hide extra fields in article of community, need to adjust the 4 in the 2nd line.
.selfServiceArticleLayout .forcePageBlockSectionRow.full { display: none;}
.selfServiceArticleLayout .forcePageBlockSectionRow.full:nth-of-type(4) { display: block;}
.selfServiceArticleLayout.zoom .article-summary { display: none;}
.slds-form_stacked .slds-form-element .slds-form-element__label {display: none;}
@rruhlen
rruhlen / article-lang
Created January 24, 2019 07:37
detect language and display link if page loaded is the article page
{% case system.language %}
{% when 'en_au' %}
{% if page == 'page_article' %}
AU tag
{% endif %}
{% when 'en_nz' %}
{% if page == 'page_article' %}
NZ tag
{% endif %}
{% endcase %}
@rruhlen
rruhlen / lang-liquid
Created January 23, 2019 23:41
insert case language liquid into hard-coded url
https://service.1cover.com.au/customer/{{system.language}}/portal/articles/2926233-volcanic-eruptions-
@rruhlen
rruhlen / case_theme_liquid
Created August 1, 2018 22:38
capture a case custom field and display it when a specific value is saved in at least one of two case custom fields
{% capture feedback %}{{ custom_feedback }}{% endcapture %}
{% if case.custom_feedback == "A comment" or case.custom_feedback == "A question" %}
<div class="agent_ticket_section">
{{ feedback }}
</div>
{% endif %}
@rruhlen
rruhlen / liquid_article_body
Last active July 26, 2018 19:04
detect article and assign meta tag in header.
{% if article.body contains 'id="unique-value-1' %}
<meta property="og:image" content="jpg"/>
{% elsif article.body contains 'id="unique-value-2' %}
<meta property="og:image" content="jpg"/>
{% endif %}
@rruhlen
rruhlen / gist:ee9954c6f26fbd10496d84e77d439994
Created July 11, 2018 05:52
Post JSON to /api/v2/customers to create a customer record in your Desk account
{
"first_name": "Ricky",
"last_name": "Ruhlen",
"emails": [{
"type": "work",
"value": "[email protected]"
},
{
"type": "home",
"value": "[email protected]"