Skip to content

Instantly share code, notes, and snippets.

View soderlind's full-sized avatar

Per Søderlind soderlind

View GitHub Profile
@soderlind
soderlind / wp_ai_client_prompt.md
Created May 13, 2026 08:27
How to use wp_ai_client_prompt( $prompt )

Below are complete WordPress-style examples that extend your snippets with basic WP_Error handling, sanitization, escaping, and flexible handling for common return shapes.

I’m assuming:

  • wp_ai_client_prompt( $prompt ) returns a prompt object.
  • generate_text() returns a string or WP_Error.
  • generate_image() returns an image URL, attachment ID, array like ['url' => ...], or WP_Error.
  • convert_text_to_speech() returns an audio URL, attachment ID, array like ['url' => ...], or WP_Error.
@soderlind
soderlind / benchmark-report-64863.md
Created April 29, 2026 11:03
WordPress #64863 benchmark: Eliminate switch_to_blog() from multisite option/post functions

Benchmark report: WordPress ticket #64863

Branch: benchmark/64863
PR: #11257Eliminate switch_to_blog() from multisite option/post functions
Environment: PHP 8.3.30 · WordPress 7.0-beta5-61991-src · MySQL 8.4 · Docker (linux/amd64 via Rosetta on arm64)
Method: 200 iterations × 3 runs per function, median taken. Cold = cache flushed before each run. Warm = cache intact.


Cold cache

@soderlind
soderlind / .zshrc
Created March 9, 2026 11:11
.zshrc with less noise in VSCode Copilot
# ── Oh My Zsh ────────────────────────────────────────────────
export ZSH="$HOME/.oh-my-zsh"
IS_VSCODE=$([[ "$TERM_PROGRAM" == "vscode" ]] && echo true || echo false)
if [[ "$IS_VSCODE" == "true" ]]; then
ZSH_THEME=""
# Reduce title/prompt noise before Oh My Zsh initializes.
DISABLE_AUTO_TITLE=true
COMPLETION_WAITING_DOTS=false
DISABLE_UNTRACKED_FILES_DIRTY=true

How I do vibe coding in 3 steps (plus a Step 0)

  1. Start with domain expertise
    Vibe coding works best when you have enough domain expertise to set direction, ask precise questions, and validate the output.

  2. Jam with an AI chat — then “lock in” a single strong prompt
    I start by brainstorming with ChatGPT (or another chat model): goals, constraints, edge cases, and what “done” looks like.
    I end by asking the AI to produce one clean prompt that includes:

    • problem statement + scope (what to do / not do)
  • assumptions and constraints
@soderlind
soderlind / README.md
Last active April 11, 2026 15:59
Ralph loop wrapper for GitHub Copilot CLI (programmatic mode)
⠀⠀⠀⠀⠀⠀⣀⣤⣶⡶⢛⠟⡿⠻⢻⢿⢶⢦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⢀⣠⡾⡫⢊⠌⡐⢡⠊⢰⠁⡎⠘⡄⢢⠙⡛⡷⢤⡀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢠⢪⢋⡞⢠⠃⡜⠀⠎⠀⠉⠀⠃⠀⠃⠀⠃⠙⠘⠊⢻⠦⠀⠀⠀⠀⠀⠀
⠀⠀⢇⡇⡜⠀⠜⠀⠁⠀⢀⠔⠉⠉⠑⠄⠀⠀⡰⠊⠉⠑⡄⡇⠀⠀⠀⠀⠀⠀
⠀⠀⡸⠧⠄⠀⠀⠀⠀⠀⠘⡀⠾⠀⠀⣸⠀⠀⢧⠀⠛⠀⠌⡇⠀⠀⠀⠀⠀⠀
⠀⠘⡇⠀⠀⠀⠀⠀⠀⠀⠀⠙⠒⠒⠚⠁⠈⠉⠲⡍⠒⠈⠀⡇⠀⠀⠀⠀⠀⠀
⠀⠀⠈⠲⣆⠀⠀⠀⠀⠀⠀⠀⠀⣠⠖⠉⡹⠤⠶⠁⠀⠀⠀⠈⢦⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠈⣦⡀⠀⠀⠀⠀⠧⣴⠁⠀⠘⠓⢲⣄⣀⣀⣀⡤⠔⠃⠀⠀⠀⠀⠀
⠀⠀⠀⠀⣜⠀⠈⠓⠦⢄⣀⣀⣸⠀⠀⠀⠀⠁⢈⢇⣼⡁⠀⠀⠀⠀⠀⠀⠀⠀
@soderlind
soderlind / redis-config.php
Last active November 26, 2025 22:10
Object Cache Pro config for Azure Managed Redis (enterpriseCluster)
<?php
$redis_config = [
'token' => '••••••••',
'host' => 'tls://MY-REDIS.norwayeast.redis.azure.net', // enterpriseCluster = host mode
'port' => '10000',
'username' => 'default',
'password' => '••••••••',
'database' => 0,
'client' => 'phpredis',
'serializer' => 'igbinary',
@soderlind
soderlind / constitution.md
Created October 29, 2025 09:26
Constitution: Spec‑Driven Development for WordPress Projects

Constitution: Spec‑Driven Development for WordPress Projects

Non‑negotiable principles that every specification, plan, task, and implementation MUST follow. Words MUST/SHOULD/MAY are to be interpreted per RFC 2119 semantics.


1) Purpose & Scope

  • This constitution governs WordPress plugins, themes, blocks, and headless integrations developed in this repository.
  • It constrains the /speckit.specify, /speckit.plan, /speckit.tasks, and /speckit.implement outputs. When in doubt, follow this constitution over any generated content.

To make this the default in Local, please vote

Local (localwp.com) + direnv + VS Code

This guide wires up Local (localwp.com) with direnv so your terminal & VS Code always use the correct WordPress environment for each Local site. It includes:

  • Installing the Local direnv add‑on from the 1.0.0 release tarball.
  • Shell hook instructions for macOS, Windows, and Linux.
  • Configure VS Code to inherit environment variables from the current Local shell session

Contents

@soderlind
soderlind / prompt.md
Last active July 15, 2025 07:06
Prompt creating Plausible Stats Aggregator

prompt

I want to create a script that retrives all stats from all site at my plausible account:

APIs:
   https://plausible.io/docs/sites-api
   https://plausible.io/docs/stats-api

1. Find all sites in my plausible account using the site api