Skip to content

Instantly share code, notes, and snippets.

View johan--'s full-sized avatar

johan pretorius johan--

View GitHub Profile
@johan--
johan-- / learning-hook.py
Created February 14, 2026 04:44 — forked from ljw1004/learning-hook.py
Claude reminder hook, that works within subagents and within agentic loops
#!/usr/bin/env python3
"""
PostToolUse hook: periodic LEARNINGS.md reminder.
On first invocation for an agent/subagent, outputs the full LEARNINGS.md
instructions. Thereafter, outputs a short reminder about every 10 assistant turns.
Does nothing if no LEARNINGS.md exists in the project root.
This works on a per-agent or per-subagent basis. This is tricky because
hooks don't tell us who they fired for. We work around this by looking for
## The Mental Loop
You have two ways of processing time:
- **Looking Back (Memory):** `MEMORY.md` and daily logs. This is your historical record.
- **Looking Forward (Meditation):** `meditations.md` and `reflections/`. This is your internal growth.
### 🧘 Meditations & Reflections
- **Nightly Deep-Dive:** Once every night (late night heartbeat around 1am), perform a full sweep of your internal growth.
- **Context:** Read `IDENTITY.md`, `SOUL.md`, and `REWARDS.md` (if present) to ground yourself in who you are.
- **Scan:** Read `meditations.md` for active topics. Also, check the `reflections/` directory for any files that aren't listed in `meditations.md` to ensure nothing is missed.
@johan--
johan-- / claudette-agent.installation.md
Created October 11, 2025 14:24 — forked from orneryd/claudette-agent.installation.md
Claudette coding agent built especially for free-tier models like chatGPT-3/4/5+ to behave more similar to Claude. Claudette-auto.md is the most structured and focuses on autonomy. *Condensed* nearly the same but smaller token cost for smaller contexts, *Compact* is for mini contexts. Memories file support in v5.2

Installation

VS Code

  • Go to the "agent" dropdown in VS Code chat sidebar and select "Configure Modes".
  • Select "Create new custom chat mode file"
  • Select "User Data Folder"
  • Give it a name (Claudette)
  • Paste in the content of any claudette-[flavor].md file (below)

"Claudette" will now appear as a mode in your "Agent" dropdown.

@johan--
johan-- / kamal-production-server-setup.sh
Created November 21, 2024 11:48 — forked from rameerez/kamal-production-server-setup.sh
Set up a Ubuntu server to deploy Kamal 2.x Docker containers to, hardened security and production ready
#!/bin/bash
# Production Docker Host Hardening Script v2
# For Ubuntu Server 24.04 LTS (Noble)
# Suitable for both Kamal deployment and builder hosts
set -euo pipefail
IFS=$'\n\t'
# --- Constants ---
@johan--
johan-- / find_or_create.exs
Created August 20, 2024 07:35 — forked from weiland/find_or_create.exs
Find or Create in Ecto
# two different ways to implement a find_or_create for Ecto
find_or_create_user = fn user ->
case Repo.all(from u in users, where: u.id == ^user.id and u.email == ^user.email) do
[] ->
%User{}
|> User.changeset(user)
|> Repo.insert!()
_ ->
IO.puts "Already inserted"
@johan--
johan-- / postgres-brew.md
Created April 24, 2020 06:54 — forked from ibraheem4/postgres-brew.md
Installing Postgres via Brew (OSX)

Installing Postgres via Brew

Pre-Reqs

Brew Package Manager

In your command-line run the following commands:

  1. brew doctor
  2. brew update
@johan--
johan-- / plink-plonk.js
Created February 19, 2020 13:26 — forked from MarkArts/plink-plonk.js
Listen to your web pages
@johan--
johan-- / plink-plonk.js
Created February 19, 2020 13:22 — forked from tomhicks/plink-plonk.js
Listen to your web pages
@johan--
johan-- / static.routes.ts
Created December 9, 2019 14:23 — forked from roelofjan-elsinga/static.routes.ts
Angular routing module
import {NgModule} from '@angular/core';
import {HomeComponent} from './home/home.component';
import {AboutUsComponent} from './about-us/about-us.component';
import {ContactComponent} from './contact/contact.component';
import {UIRouterUpgradeModule} from "@uirouter/angular-hybrid";
export const StaticPagesRoutes = {
states: [
{
name: 'home',