Skip to content

Instantly share code, notes, and snippets.

View adham90's full-sized avatar
🤖
running...

Adham EL-Deeb adham90

🤖
running...
View GitHub Profile

Interview me about this plan until we reach a shared understanding of exactly what needs to be done. Walk down each branch of the design tree, resolving dependencies between decisions one by one. For each question, provide your recommended answer.

Plan file

Before asking the first question, create or update a Markdown plan file at .plans/<context-based-name>.md. Create the .plans/ directory if it does not exist. Name the file based on the task context using a short, stable, kebab-case filename such as .plans/inbox-search.md or .plans/billing-webhook-retry.md. If the project root is unclear, use the current working directory. Choose the filename once, state it explicitly, and treat that file as the source of truth throughout the conversation.

The plan file must always include:

  • A short objective / problem statement
  • The current understanding of the work
  • Out of scope / non-goals
@adham90
adham90 / claude.md
Created February 28, 2026 00:02
Claude_v2.md

AI Coding Agent Guide: Rails Best Practices

Compact guide for AI agents working on Rails applications. Focus on existing patterns, keep changes minimal, and preserve security/performance.

Core Principles

DO: Follow existing architecture (concerns, scopes, jobs, Turbo Streams, Stimulus). Keep diffs minimal. Optimize for clarity. Write tests for all new code. Preserve security/performance. Design deep modules.

DON'T: Introduce new frameworks. Mix refactors with behavior changes. Over-abstract. Bypass security checks. Log secrets. Create shallow wrappers or pass-through layers.

@adham90
adham90 / riff.md
Last active January 10, 2026 09:46
Riffing on Rails: AI Agent Planning Guide

Riffing on Rails: AI Agent Planning Guide

A code-based design technique for exploring, validating, and communicating domain models in Rails applications.

What is Riffing?

Riffing is a low-fidelity, high-speed design technique where you write nearly-runnable Ruby code in a single scratch file to explore and prove out your domain model design before committing to full implementation.

Riffing is to development what wireframing is to UI design.

@adham90
adham90 / CLAUDE.md
Last active January 8, 2026 10:18
Compact guide for AI agents working on Rails applications.

AI Coding Agent Guide: Rails Best Practices

Compact guide for AI agents working on Rails applications. Focus on existing patterns, keep changes minimal, and preserve security/performance.

Core Principles

DO: Follow existing architecture (concerns, scopes, jobs, Turbo Streams, Stimulus). Keep diffs minimal. Optimize for clarity. Write tests for all new code. Preserve security/performance.

DON'T: Introduce new frameworks. Mix refactors with behavior changes. Over-abstract. Bypass security checks. Log secrets.

api_key = "API_KEY" # from https://dash.bunny.net/stream/128158/security
video_id = 'VIDEO_ID'
timestamp = 1.hour.from_now.to_i
token = OpenSSL::Digest::SHA256.hexdigest("#{api_key}#{video_id}#{timestamp}")
# URL
# https://iframe.mediadelivery.net/embed/[Video_Library_ID]/[VIDEO_ID]?token=[TOKEN]&expires=[timestamp]
{
"order_id": "String",
"total_price": "String",
"seller_id": "String",
"notes": "String",
"order_items": [
{
"item_id": "String",
"unit_price": "String",
"quantity": "Number",
{
"payload":{
"first_name":"String",
"last_name":"String",
"email":"String",
"phone":"String",
"address":[
{
"city_name":"String",
"state_name":"String",
@adham90
adham90 / abbreviations.vim
Last active July 8, 2021 02:48
My vim and nvim(neovim) configurations
iabbrev myid adham90
@adham90
adham90 / rewrite-commit
Created June 25, 2017 02:30
rewrite commit message by id
git filter-branch -f --msg-filter '
if [ "$GIT_COMMIT" = "ddbe6b0d2561566aa91733c98cce086bdd50bdd5" ];
then
echo new message;
else
cat
fi' HEAD
@adham90
adham90 / 0_reuse_code.js
Created June 2, 2017 22:29
Here are some things you can do with Gists in GistBox.
// Use Gists to store code you would like to remember later on
console.log(window); // log the "window" object to the console