diff options
| author | Paul Buetow <paul@buetow.org> | 2026-02-14 13:46:29 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-02-14 13:46:29 +0200 |
| commit | 626cf8fb4219856953b918adbdb414bafc2fc2e9 (patch) | |
| tree | 942c634a6f2cf81e2629af91b3e87661f29c9c2e | |
| parent | 36227f09dd96ee54e13f581f2286e6594d8c2136 (diff) | |
Update content for html
| -rw-r--r-- | about/resources.html | 208 | ||||
| -rw-r--r-- | gemfeed/2026-02-14-meta-slash-commands-for-prompts-and-context.html | 252 | ||||
| -rw-r--r-- | gemfeed/atom.xml | 445 | ||||
| -rw-r--r-- | gemfeed/index.html | 1 | ||||
| -rw-r--r-- | index.html | 3 | ||||
| -rw-r--r-- | uptime-stats.html | 46 |
6 files changed, 626 insertions, 329 deletions
diff --git a/about/resources.html b/about/resources.html index 995042e5..fc8ac3a7 100644 --- a/about/resources.html +++ b/about/resources.html @@ -50,112 +50,112 @@ <span>In random order:</span><br /> <br /> <ul> -<li>100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications</li> -<li>Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner</li> -<li>Site Reliability Engineering; How Google runs production systems; O'Reilly</li> -<li>Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications</li> -<li>The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton</li> -<li>Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly</li> -<li>DNS and BIND; Cricket Liu; O'Reilly</li> -<li>The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional Pro Git; Scott Chacon, Ben Straub; Apress</li> -<li>Ultimate Go Notebook; Bill Kennedy</li> -<li>Concurrency in Go; Katherine Cox-Buday; O'Reilly</li> -<li>Terraform Cookbook; Mikael Krief; Packt Publishing</li> -<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</li> -<li>Effective Java; Joshua Bloch; Addison-Wesley Professional</li> -<li>Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers</li> -<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li> -<li>Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly</li> -<li>Effective awk programming; Arnold Robbins; O'Reilly</li> <li>Funktionale Programmierung; Peter Pepper; Springer</li> -<li>Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly</li> +<li>Terraform Cookbook; Mikael Krief; Packt Publishing</li> +<li>Raku Recipes; J.J. Merelo; Apress</li> +<li>Pro Puppet; James Turnbull, Jeffrey McCune; Apress</li> +<li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li> +<li>Raku Fundamentals; Moritz Lenz; Apress</li> +<li>97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly</li> <li>Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook</li> +<li>Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers</li> <li>Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press</li> +<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li> +<li>Ultimate Go Notebook; Bill Kennedy</li> +<li>Concurrency in Go; Katherine Cox-Buday; O'Reilly</li> +<li>Effective awk programming; Arnold Robbins; O'Reilly</li> +<li>21st Century C: C Tips from the New School; Ben Klemens; O'Reilly</li> +<li>Developing Games in Java; David Brackeen and others...; New Riders</li> +<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly</li> +<li>Seeking SRE: Conversations About Running Production Systems at Scale; David N. Blank-Edelman; eBook</li> +<li>Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner</li> +<li>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li> <li>Systemprogrammierung in Go; Frank Müller; dpunkt</li> -<li>Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf</li> -<li>C++ Programming Language; Bjarne Stroustrup;</li> +<li>Perl New Features; Joshua McAdams, brian d foy; Perl School</li> +<li>The Pragmatic Programmer; David Thomas; Addison-Wesley</li> <li>Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers </li> -<li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li> -<li>The Docker Book; James Turnbull; Kindle</li> -<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly</li> -<li>Seeking SRE: Conversations About Running Production Systems at Scale; David N. Blank-Edelman; eBook</li> -<li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</li> -<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly</li> +<li>Effective Java; Joshua Bloch; Addison-Wesley Professional</li> +<li>C++ Programming Language; Bjarne Stroustrup;</li> +<li>The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton</li> +<li>DNS and BIND; Cricket Liu; O'Reilly</li> <li>The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional</li> -<li>The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible</li> -<li>Developing Games in Java; David Brackeen and others...; New Riders</li> -<li>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li> -<li>Java ist auch eine Insel; Christian Ullenboom; </li> -<li>Modern Perl; Chromatic ; Onyx Neon Press</li> -<li>97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly</li> -<li>Raku Fundamentals; Moritz Lenz; Apress</li> +<li>Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications</li> +<li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</li> +<li>Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf</li> +<li>100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications</li> <li>Data Science at the Command Line; Jeroen Janssens; O'Reilly</li> -<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li> +<li>Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly</li> +<li>The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible</li> <li>Leanring eBPF; Liz Rice; O'Reilly</li> +<li>The Docker Book; James Turnbull; Kindle</li> +<li>Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly</li> +<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</li> +<li>Java ist auch eine Insel; Christian Ullenboom; </li> +<li>The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional Pro Git; Scott Chacon, Ben Straub; Apress</li> +<li>Site Reliability Engineering; How Google runs production systems; O'Reilly</li> <li>Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press</li> -<li>Raku Recipes; J.J. Merelo; Apress</li> -<li>The Pragmatic Programmer; David Thomas; Addison-Wesley</li> -<li>Perl New Features; Joshua McAdams, brian d foy; Perl School</li> -<li>Pro Puppet; James Turnbull, Jeffrey McCune; Apress</li> -<li>21st Century C: C Tips from the New School; Ben Klemens; O'Reilly</li> +<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly</li> +<li>Modern Perl; Chromatic ; Onyx Neon Press</li> +<li>Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly</li> +<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li> </ul><br /> <h2 style='display: inline' id='technical-references'>Technical references</h2><br /> <br /> <span>I didn't read them from the beginning to the end, but I am using them to look up things. The books are in random order:</span><br /> <br /> <ul> -<li>BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley</li> -<li>Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley</li> <li>Relayd and Httpd Mastery; Michael W Lucas</li> -<li>Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly</li> -<li>Implementing Service Level Objectives; Alex Hidalgo; O'Reilly</li> <li>Go: Design Patterns for Real-World Projects; Mat Ryer; Packt</li> +<li>Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly</li> <li>Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly</li> <li>The Linux Programming Interface; Michael Kerrisk; No Starch Press </li> +<li>Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley</li> +<li>BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley</li> +<li>Implementing Service Level Objectives; Alex Hidalgo; O'Reilly</li> </ul><br /> <h2 style='display: inline' id='self-development-and-soft-skills-books'>Self-development and soft-skills books</h2><br /> <br /> <span>In random order:</span><br /> <br /> <ul> -<li>Digital Minimalism; Cal Newport; Portofolio Penguin</li> -<li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li> -<li>So Good They Can't Ignore You; Cal Newport; Business Plus</li> -<li>The Good Enough Job; Simone Stolzoff; Ebury Edge</li> -<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li> -<li>Eat That Frog; Brian Tracy</li> -<li>Ultralearning; Scott Young; Thorsons</li> -<li>Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook</li> -<li>The Software Engineer's Guidebook: Navigating senior, tech lead, and staff engineer positions at tech companies and startups; Gergely Orosz; Audiobook </li> -<li>97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook</li> -<li>Atomic Habits; James Clear; Random House Business</li> -<li>Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly</li> -<li>The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books</li> -<li>The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)</li> -<li>101 Essays that change the way you think; Brianna Wiest; Audiobook</li> +<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li> <li>The Power of Now; Eckhard Tolle; Yellow Kite</li> +<li>Ultralearning; Anna Laurent; Self-published via Amazon</li> +<li>Influence without Authority; A. Cohen, D. Bradford; Wiley</li> <li>The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK</li> +<li>Eat That Frog; Brian Tracy</li> <li>Getting Things Done; David Allen</li> +<li>Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne</li> +<li>Slow Productivity; Cal Newport; Penguin Random House</li> +<li>97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook</li> +<li>Digital Minimalism; Cal Newport; Portofolio Penguin</li> +<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li> +<li>The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)</li> <li>The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select</li> -<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li> -<li>Soft Skills; John Sommez; Manning Publications</li> -<li>The Bullet Journal Method; Ryder Carroll; Fourth Estate</li> -<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</li> +<li>The Joy of Missing Out; Christina Crook; New Society Publishers</li> +<li>The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook</li> <li>Stop starting, start finishing; Arne Roock; Lean-Kanban University </li> -<li>Influence without Authority; A. Cohen, D. Bradford; Wiley</li> +<li>Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook</li> +<li>Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing</li> +<li>Eat That Frog!; Brian Tracy; Hodder Paperbacks</li> <li>Meditation for Mortals, Oliver Burkeman, Audiobook</li> +<li>The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books</li> +<li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li> <li>Deep Work; Cal Newport; Piatkus</li> -<li>The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook</li> -<li>Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing</li> -<li>The Joy of Missing Out; Christina Crook; New Society Publishers</li> +<li>101 Essays that change the way you think; Brianna Wiest; Audiobook</li> +<li>The Software Engineer's Guidebook: Navigating senior, tech lead, and staff engineer positions at tech companies and startups; Gergely Orosz; Audiobook </li> +<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</li> <li>The Courage to Be Disliked; Ichiro Kishimi and Fumitake Koga; Audiobook</li> -<li>Eat That Frog!; Brian Tracy; Hodder Paperbacks</li> -<li>Slow Productivity; Cal Newport; Penguin Random House</li> +<li>The Bullet Journal Method; Ryder Carroll; Fourth Estate</li> <li>Psycho-Cybernetics; Maxwell Maltz; Perigee Books</li> -<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li> -<li>Ultralearning; Anna Laurent; Self-published via Amazon</li> -<li>Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne</li> -<li>Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook</li> +<li>Ultralearning; Scott Young; Thorsons</li> +<li>The Good Enough Job; Simone Stolzoff; Ebury Edge</li> +<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li> +<li>So Good They Can't Ignore You; Cal Newport; Business Plus</li> +<li>Soft Skills; John Sommez; Manning Publications</li> +<li>Atomic Habits; James Clear; Random House Business</li> +<li>Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook</li> +<li>Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly</li> </ul><br /> <a class='textlink' href='../notes/index.html'>Here are notes of mine for some of the books</a><br /> <br /> @@ -164,30 +164,30 @@ <span>Some of these were in-person with exams; others were online learning lectures only. In random order:</span><br /> <br /> <ul> -<li>Apache Tomcat Best Practises; 3-day on-site training</li> -<li>Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training</li> -<li>Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need)</li> -<li>MySQL Deep Dive Workshop; 2-day on-site training</li> +<li>Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online</li> <li>Structure and Interpretation of Computer Programs; Harold Abelson and more...; </li> -<li>Functional programming lecture; Remote University of Hagen</li> <li>Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon</li> -<li>The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online</li> -<li>Protocol buffers; O'Reilly Online</li> -<li>AWS Immersion Day; Amazon; 1-day interactive online training </li> -<li>Ultimate Go Programming; Bill Kennedy; O'Reilly Online</li> +<li>Functional programming lecture; Remote University of Hagen</li> <li>Scripting Vim; Damian Conway; O'Reilly Online</li> -<li>The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online</li> <li>Developing IaC with Terraform (with Live Lessons); O'Reilly Online</li> -<li>Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online</li> +<li>Ultimate Go Programming; Bill Kennedy; O'Reilly Online</li> +<li>Apache Tomcat Best Practises; 3-day on-site training</li> +<li>Protocol buffers; O'Reilly Online</li> +<li>The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online</li> +<li>Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need)</li> +<li>The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online</li> <li>F5 Loadbalancers Training; 2-day on-site training; F5, Inc. </li> +<li>Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training</li> +<li>MySQL Deep Dive Workshop; 2-day on-site training</li> +<li>AWS Immersion Day; Amazon; 1-day interactive online training </li> </ul><br /> <h2 style='display: inline' id='technical-guides'>Technical guides</h2><br /> <br /> <span>These are not whole books, but guides (smaller or larger) which I found very useful. in random order:</span><br /> <br /> <ul> -<li>Raku Guide at https://raku.guide </li> <li>How CPUs work at https://cpu.land</li> +<li>Raku Guide at https://raku.guide </li> <li>Advanced Bash-Scripting Guide </li> </ul><br /> <h2 style='display: inline' id='podcasts'>Podcasts</h2><br /> @@ -197,20 +197,20 @@ <span>In random order:</span><br /> <br /> <ul> +<li>Modern Mentor</li> +<li>Deep Questions with Cal Newport</li> <li>The Pragmatic Engineer Podcast</li> +<li>The Changelog Podcast(s)</li> +<li>Fallthrough [Golang]</li> +<li>The ProdCast (Google SRE Podcast)</li> <li>BSD Now [BSD]</li> +<li>Cup o' Go [Golang]</li> +<li>Wednesday Wisdom</li> +<li>Fork Around And Find Out</li> <li>Pratical AI</li> <li>Backend Banter</li> -<li>Fallthrough [Golang]</li> -<li>Cup o' Go [Golang]</li> -<li>Dev Interrupted</li> -<li>The Changelog Podcast(s)</li> -<li>Modern Mentor</li> -<li>The ProdCast (Google SRE Podcast)</li> <li>Hidden Brain</li> -<li>Fork Around And Find Out</li> -<li>Wednesday Wisdom</li> -<li>Deep Questions with Cal Newport</li> +<li>Dev Interrupted</li> <li>Maintainable</li> </ul><br /> <h3 style='display: inline' id='podcasts-i-liked'>Podcasts I liked</h3><br /> @@ -219,9 +219,9 @@ <br /> <ul> <li>CRE: Chaosradio Express [german]</li> +<li>Modern Mentor</li> <li>Ship It (predecessor of Fork Around And Find Out)</li> <li>Java Pub House</li> -<li>Modern Mentor</li> <li>FLOSS weekly</li> <li>Go Time (predecessor of fallthrough)</li> </ul><br /> @@ -230,28 +230,28 @@ <span>This is a mix of tech and non-tech newsletters I am subscribed to. In random order:</span><br /> <br /> <ul> -<li>Monospace Mentor</li> -<li>Applied Go Weekly Newsletter</li> -<li>The Pragmatic Engineer</li> <li>Ruby Weekly</li> -<li>VK Newsletter</li> -<li>Changelog News</li> -<li>The Imperfectionist</li> +<li>Applied Go Weekly Newsletter</li> +<li>Andreas Brandhorst Newsletter (Sci-Fi author)</li> <li>The Valuable Dev</li> +<li>Changelog News</li> +<li>VK Newsletter</li> +<li>The Pragmatic Engineer</li> +<li>Monospace Mentor</li> +<li>Golang Weekly</li> <li>Register Spill</li> <li>byteSizeGo</li> -<li>Golang Weekly</li> -<li>Andreas Brandhorst Newsletter (Sci-Fi author)</li> +<li>The Imperfectionist</li> </ul><br /> <h2 style='display: inline' id='magazines-i-liked'>Magazines I like(d)</h2><br /> <br /> <span>This is a mix of tech I like(d). I may not be a current subscriber, but now and then, I buy an issue. In random order:</span><br /> <br /> <ul> -<li>Linux Magazine</li> <li>LWN (online only)</li> -<li>Linux User</li> +<li>Linux Magazine</li> <li>freeX (not published anymore)</li> +<li>Linux User</li> </ul><br /> <h1 style='display: inline' id='formal-education'>Formal education</h1><br /> <br /> diff --git a/gemfeed/2026-02-14-meta-slash-commands-for-prompts-and-context.html b/gemfeed/2026-02-14-meta-slash-commands-for-prompts-and-context.html new file mode 100644 index 00000000..3e086905 --- /dev/null +++ b/gemfeed/2026-02-14-meta-slash-commands-for-prompts-and-context.html @@ -0,0 +1,252 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> +<title>Meta slash-commands to manage prompts and context for coding agents</title> +<link rel="shortcut icon" type="image/gif" href="/favicon.ico" /> +<link rel="stylesheet" href="../style.css" /> +<link rel="stylesheet" href="style-override.css" /> +</head> +<body> +<p class="header"> +<a href="https://foo.zone">Home</a> | <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2026-02-14-meta-slash-commands-for-prompts-and-context.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2026-02-14-meta-slash-commands-for-prompts-and-context.gmi">Gemini</a> +</p> +<h1 style='display: inline' id='meta-slash-commands-to-manage-prompts-and-context-for-coding-agents'>Meta slash-commands to manage prompts and context for coding agents</h1><br /> +<br /> +<span class='quote'>Published at 2026-02-14T13:44:45+02:00</span><br /> +<br /> +<span>I work on many small, repeatable tasks. Instead of retyping the same instructions every time, I want to turn successful prompts into reusable slash-commands and keep background knowledge in loadable context files. This post describes a set of *meta* slash-commands: commands that create, update, and delete other commands and context files. They live as markdown in a dotfiles repo and work with any coding agent that supports slash-commands—Claude Code CLI, Cursor Agent, OpenCode, Ampcode, and others.</span><br /> +<br /> +<pre> + ┌─────────────────────────────────────────────────────────────┐ + │ Cursor Agent [~][□][X] │ + ├─────────────────────────────────────────────────────────────┤ + │ │ + │ → /load-context api-guidelines │ + │ │ + │ Context loaded: api-guidelines.md │ + │ Ready. Ask me to implement something. │ + │ │ + │ → /create-command review-pr │ + │ │ + │ Analyzing "review-pr"... │ + │ Generated: description + prompt. Save to commands/ ? [Y] │ + │ │ + │ ✓ Saved. Use /review-pr anytime. │ + │ │ + └─────────────────────────────────────────────────────────────┘ + │ + │ slash-commands + ▼ + ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ + │ /load- │ │ /create- │ │ /update- │ │ /review- │ + │ context │ │ command │ │ command │ │ pr │ + └──────────┘ └──────────┘ └──────────┘ └──────────┘ + │ │ │ │ + └──────────────┴──────────────┴──────────────┘ + │ + coding agent executes + your prompt library +</pre> +<br /> +<h2 style='display: inline' id='table-of-contents'>Table of Contents</h2><br /> +<br /> +<ul> +<li><a href='#meta-slash-commands-to-manage-prompts-and-context-for-coding-agents'>Meta slash-commands to manage prompts and context for coding agents</a></li> +<li>⇢ <a href='#motivation-collecting-prompts-for-later-re-use'>Motivation: collecting prompts for later re-use</a></li> +<li>⇢ <a href='#loading-whole-context-before-asking-the-agent-to-do-something'>Loading whole context before asking the agent to do something</a></li> +<li>⇢ <a href='#works-with-any-coding-agent-that-supports-slash-commands'>Works with any coding agent that supports slash-commands</a></li> +<li>⇢ <a href='#commands-that-manage-slash-commands'>Commands that manage slash-commands</a></li> +<li>⇢ ⇢ <a href='#create-command'><span class='inlinecode'>/create-command</span></a></li> +<li>⇢ ⇢ <a href='#update-command'><span class='inlinecode'>/update-command</span></a></li> +<li>⇢ ⇢ <a href='#delete-command'><span class='inlinecode'>/delete-command</span></a></li> +<li>⇢ <a href='#commands-that-manage-context-files'>Commands that manage context files</a></li> +<li>⇢ ⇢ <a href='#create-context'><span class='inlinecode'>/create-context</span></a></li> +<li>⇢ ⇢ <a href='#update-context'><span class='inlinecode'>/update-context</span></a></li> +<li>⇢ ⇢ <a href='#delete-context'><span class='inlinecode'>/delete-context</span></a></li> +<li>⇢ ⇢ <a href='#load-context'><span class='inlinecode'>/load-context</span></a></li> +<li>⇢ <a href='#summary'>Summary</a></li> +</ul><br /> +<h2 style='display: inline' id='motivation-collecting-prompts-for-later-re-use'>Motivation: collecting prompts for later re-use</h2><br /> +<br /> +<span>When I use a coding agent, I often find myself repeating the same kind of request: "review this function," "explain this error," "add tests for this module," "format this as a blog post" and may other cases. Typing long prompts from scratch is tedious, and ad-hoc prompts are easy to forget. I'd rather capture what works and reuse it.</span><br /> +<br /> +<span>The solution is to treat prompts as first-class artefacts: store them as markdown files (one file per slash-command or per context), and use a small set of *meta* commands to manage them. The agent then creates, updates, or deletes these files through conversation—no hand-editing of markdowns. I can say <span class='inlinecode'>/create-command review-code we just did a code review</span> and the agent generates the command file based on the current agent's context, shows a preview, and saves it. Later I run <span class='inlinecode'>/review-code</span> and get a consistent workflow every time.</span><br /> +<br /> +<span>Because everything is just markdown in a directory (e.g. <span class='inlinecode'>~/Notes/Prompts/commands/</span> for commands and <span class='inlinecode'>~/Notes/Prompts/context/</span> for context), I can version it in git, sync it across machines, and gradually build a library of prompts. If the number of commands grows too large, I might later split them into skills or expose them via a searchable MCP server—but for now, a flat directory of <span class='inlinecode'>.md</span> files is enough.</span><br /> +<br /> +<h2 style='display: inline' id='loading-whole-context-before-asking-the-agent-to-do-something'>Loading whole context before asking the agent to do something</h2><br /> +<br /> +<span>A separate but related need is *context*: background information the agent should have before I ask it to do anything. For example, I might have a document describing our Kubernetes setup, API conventions, or the architecture of a specific service. If I ask "add a new endpoint for X" without that context, the agent guesses and without having a reference to an existing project with an <span class='inlinecode'>AGENTS.md</span>. If I first load the relevant context file, the agent knows the naming conventions, the existing patterns, and the infrastructure—and its edits are more accurate.</span><br /> +<br /> +<span>So I keep two kinds of artefacts:</span><br /> +<br /> +<ul> +<li>Commands — Reusable workflows (e.g. "review code", "explain error"). They live as <span class='inlinecode'>.md</span> files in a <span class='inlinecode'>commands/</span> directory. Meta-commands create, update, and delete them.</li> +<li>Context — Reusable background (project rules, API notes, infrastructure docs, personas). They live as <span class='inlinecode'>.md</span> files in a <span class='inlinecode'>context/</span> directory. I can create, update, delete, and—importantly—*load* them. Loading a context file injects that content into the conversation so the agent has it in mind for subsequent requests.</li> +</ul><br /> +<span>The use case is: start a session, run <span class='inlinecode'>/load-context api-guidelines</span> (or whatever context name), then ask the agent to implement a feature or fix a bug. The agent already knows the guidelines. No need to paste a wall of text every time; the context is on demand (not implicit like with skills).</span><br /> +<br /> +<h2 style='display: inline' id='works-with-any-coding-agent-that-supports-slash-commands'>Works with any coding agent that supports slash-commands</h2><br /> +<br /> +<span>I use different agents depending on the task: Claude Code CLI, Cursor Agent (CLI), OpenCode, Ampcode and others. What they have in common is support for custom slash-commands (or the ability to read prompt files). My meta-commands and context files are just markdown; there is no lock-in. Point your agent at the same directories and you get the same prompts and context. I don't need an MCP server returning prompts right now—the files on disk are enough. If slash-commands ever become too many to manage in a flat list, I may later introduce an MCP server to expose them as skills or searchable prompts.</span><br /> +<br /> +<h2 style='display: inline' id='commands-that-manage-slash-commands'>Commands that manage slash-commands</h2><br /> +<br /> +<span>These meta-commands create, update, and delete other slash-commands. The target files live in <span class='inlinecode'>~/Notes/Prompts/commands/</span> (or your chosen path). Each command is one <span class='inlinecode'>.md</span> file. You can see the commands (and the context files) here:</span><br /> +<br /> +<a class='textlink' href='https://codeberg.org/snonux/dotfiles/src/branch/master/prompts/commands'>https://codeberg.org/snonux/dotfiles/src/branch/master/prompts/commands</a><br /> +<a class='textlink' href='https://codeberg.org/snonux/dotfiles/src/branch/master/prompts/context'>https://codeberg.org/snonux/dotfiles/src/branch/master/prompts/context</a><br /> +<br /> +<h3 style='display: inline' id='create-command'><span class='inlinecode'>/create-command</span></h3><br /> +<br /> +<span>Creates a new slash-command by inferring its purpose from the name you give.</span><br /> +<br /> +<ul> +<li>Parameter: <span class='inlinecode'>command_name</span> (e.g. <span class='inlinecode'>review-code</span>, <span class='inlinecode'>explain-error</span>, <span class='inlinecode'>optimize-function</span>)</li> +<li>What it does: The agent analyses the name, infers intent and parameters, writes a description and prompt, shows a preview, and saves <span class='inlinecode'>{{command_name}}.md</span> to the commands directory.</li> +<li>Good for: Turning the current task or a recurring need into a reusable command without editing files by hand.</li> +</ul><br /> +<span>Example usage:</span><br /> +<br /> +<pre> +/create-command review-code +/create-command explain-error +</pre> +<br /> +<h3 style='display: inline' id='update-command'><span class='inlinecode'>/update-command</span></h3><br /> +<br /> +<span>Updates an existing slash-command step by step.</span><br /> +<br /> +<ul> +<li>Parameter: <span class='inlinecode'>command_name</span> (e.g. <span class='inlinecode'>create-command</span>, <span class='inlinecode'>review-code</span>)</li> +<li>What it does: Reads the existing <span class='inlinecode'>.md</span> file, shows the current content, asks what to change (description, parameters, prompt text), applies edits, shows a preview, and saves.</li> +<li>Good for: Refining a command after you've used it a few times or when requirements change.</li> +</ul><br /> +<span>Example usage:</span><br /> +<br /> +<pre> +/update-command create-command +/update-command review-code +</pre> +<br /> +<h3 style='display: inline' id='delete-command'><span class='inlinecode'>/delete-command</span></h3><br /> +<br /> +<span>Removes a slash-command by deleting its definition file.</span><br /> +<br /> +<ul> +<li>Parameter: <span class='inlinecode'>command_name</span> (e.g. <span class='inlinecode'>testing</span>, <span class='inlinecode'>review-code</span>)</li> +<li>What it does: Verifies the file exists, shows what will be deleted, asks for confirmation, then deletes the file.</li> +<li>Good for: Cleaning up experiments or commands you no longer use.</li> +</ul><br /> +<span>Example usage:</span><br /> +<br /> +<pre> +/delete-command testing +/delete-command review-code +</pre> +<br /> +<h2 style='display: inline' id='commands-that-manage-context-files'>Commands that manage context files</h2><br /> +<br /> +<span>These meta-commands create, update, delete, and *load* context files. Context files live in <span class='inlinecode'>~/Notes/Prompts/context/</span>. Loading a context injects its content into the conversation so the agent can use it for subsequent requests.</span><br /> +<br /> +<h3 style='display: inline' id='create-context'><span class='inlinecode'>/create-context</span></h3><br /> +<br /> +<span>Creates a new context file.</span><br /> +<br /> +<ul> +<li>Parameter: <span class='inlinecode'>context_name</span> (without <span class='inlinecode'>.md</span>), e.g. <span class='inlinecode'>epimetheus</span>, <span class='inlinecode'>api-guidelines</span></li> +<li>What it does: Checks if the context already exists, asks what the context should contain (background, structure, sections), then writes <span class='inlinecode'>{{context_name}}.md</span> to the context directory.</li> +<li>Good for: Capturing project rules, API conventions, or infrastructure notes once and reusing them via <span class='inlinecode'>/load-context</span>.</li> +</ul><br /> +<span>Example usage:</span><br /> +<br /> +<pre> +/create-context epimetheus +/create-context api-guidelines +</pre> +<br /> +<h3 style='display: inline' id='update-context'><span class='inlinecode'>/update-context</span></h3><br /> +<br /> +<span>Updates an existing context file by adding, modifying, or removing content.</span><br /> +<br /> +<ul> +<li>Parameter: <span class='inlinecode'>context_name</span> (e.g. <span class='inlinecode'>epimetheus</span>, <span class='inlinecode'>api-guidelines</span>). If omitted, lists available context files.</li> +<li>What it does: Reads the existing file, asks what to change (add section, modify section, remove section, rewrite, or full overhaul), applies changes, and saves.</li> +<li>Good for: Keeping context up to date as the project or infrastructure evolves.</li> +</ul><br /> +<span>Example usage:</span><br /> +<br /> +<pre> +/update-context epimetheus +/update-context api-guidelines +/update-context +</pre> +<br /> +<h3 style='display: inline' id='delete-context'><span class='inlinecode'>/delete-context</span></h3><br /> +<br /> +<span>Deletes a context file after confirmation.</span><br /> +<br /> +<ul> +<li>Parameter: <span class='inlinecode'>context_name</span> (e.g. <span class='inlinecode'>epimetheus</span>, <span class='inlinecode'>old-api-guidelines</span>). If omitted, lists available context files.</li> +<li>What it does: Verifies the file exists, shows a preview or summary, asks for confirmation, then deletes the file.</li> +<li>Good for: Removing outdated or unused context.</li> +</ul><br /> +<span>Example usage:</span><br /> +<br /> +<pre> +/delete-context epimetheus +/delete-context old-api-guidelines +/delete-context +</pre> +<br /> +<h3 style='display: inline' id='load-context'><span class='inlinecode'>/load-context</span></h3><br /> +<br /> +<span>Loads a context file into the conversation so the agent has that background for subsequent requests.</span><br /> +<br /> +<ul> +<li>Parameter: <span class='inlinecode'>context_name</span> (e.g. <span class='inlinecode'>epimetheus</span>, <span class='inlinecode'>api-guidelines</span>). If omitted, lists available context files.</li> +<li>What it does: Reads the context file, displays its content, and confirms it is loaded. From then on, the agent can use that information when you ask it to implement features, fix bugs, or answer questions.</li> +<li>Good for: Starting a session with "load our API guidelines" or "load our Kubernetes runbook" so the agent knows the infrastructure and conventions before you ask it to do something.</li> +</ul><br /> +<span>Example usage:</span><br /> +<br /> +<pre> +/load-context epimetheus +/load-context api-guidelines +/load-context +</pre> +<br /> +<h2 style='display: inline' id='summary'>Summary</h2><br /> +<br /> +<pre> +| Meta-command | Purpose | Good for | +|--------------------|----------------------------------------------|---------------------------------------------------| +| /create-command | Create new slash-command from name | Turning current or recurring tasks into commands | +| /update-command | Edit existing slash-command | Refining commands over time | +| /delete-command | Remove slash-command file | Cleaning up unused commands | +| /create-context | Create new context file | Capturing project/infra knowledge once | +| /update-context | Edit existing context file | Keeping context up to date | +| /delete-context | Remove context file | Removing outdated context | +| /load-context | Load context into conversation | Giving the agent background before tasks | +</pre> +<br /> +<span>Context is what the agent *knows*; commands are what the agent *does*. Both are markdown files you can create, update, and delete on the fly through the same coding agent—Claude Code CLI, Cursor Agent, OpenCode, Ampcode, or any other that supports slash-commands or prompt files. That's why these meta-commands are useful for ad-hoc creation, updating, and deleting of prompts and context without leaving the conversation.</span><br /> +<br /> +<span>Other related posts:</span><br /> +<br /> +<a class='textlink' href='./2026-02-14-meta-slash-commands-for-prompts-and-context.html'>2026-02-14 Meta slash-commands to manage prompts and context (You are currently reading this)</a><br /> +<a class='textlink' href='./2026-02-02-tmux-popup-editor-for-cursor-agent-prompts.html'>2026-02-02 A tmux popup editor for Cursor Agent CLI prompts</a><br /> +<br /> +<span>E-Mail your comments to <span class='inlinecode'>paul@nospam.buetow.org</span> :-)</span><br /> +<br /> +<a class='textlink' href='../'>Back to the main site</a><br /> +<p class="footer"> + Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> | + served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> | + <a href="https://foo.zone/site-mirrors.html">Site Mirrors</a> + <br /> + Webring: <a href="https://shring.sh/foo.zone/previous">previous</a> | <a href="https://shring.sh">shring</a> | <a href="https://shring.sh/foo.zone/next">next</a> +</p> +</body> +</html> diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml index e3b7b285..78173b79 100644 --- a/gemfeed/atom.xml +++ b/gemfeed/atom.xml @@ -1,12 +1,255 @@ <?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> - <updated>2026-02-08T22:37:47+02:00</updated> + <updated>2026-02-14T13:44:46+02:00</updated> <title>foo.zone feed</title> <subtitle>To be in the .zone!</subtitle> <link href="https://foo.zone/gemfeed/atom.xml" rel="self" /> <link href="https://foo.zone/" /> <id>https://foo.zone/</id> <entry> + <title>Meta slash-commands to manage prompts and context for coding agents</title> + <link href="https://foo.zone/gemfeed/2026-02-14-meta-slash-commands-for-prompts-and-context.html" /> + <id>https://foo.zone/gemfeed/2026-02-14-meta-slash-commands-for-prompts-and-context.html</id> + <updated>2026-02-14T13:44:45+02:00</updated> + <author> + <name>Paul Buetow aka snonux</name> + <email>paul@dev.buetow.org</email> + </author> + <summary>I work on many small, repeatable tasks. Instead of retyping the same instructions every time, I want to turn successful prompts into reusable slash-commands and keep background knowledge in loadable context files. This post describes a set of *meta* slash-commands: commands that create, update, and delete other commands and context files. They live as markdown in a dotfiles repo and work with any coding agent that supports slash-commands—Claude Code CLI, Cursor Agent, OpenCode, Ampcode, and others.</summary> + <content type="xhtml"> + <div xmlns="http://www.w3.org/1999/xhtml"> + <h1 style='display: inline' id='meta-slash-commands-to-manage-prompts-and-context-for-coding-agents'>Meta slash-commands to manage prompts and context for coding agents</h1><br /> +<br /> +<span>I work on many small, repeatable tasks. Instead of retyping the same instructions every time, I want to turn successful prompts into reusable slash-commands and keep background knowledge in loadable context files. This post describes a set of *meta* slash-commands: commands that create, update, and delete other commands and context files. They live as markdown in a dotfiles repo and work with any coding agent that supports slash-commands—Claude Code CLI, Cursor Agent, OpenCode, Ampcode, and others.</span><br /> +<br /> +<pre> + ┌─────────────────────────────────────────────────────────────┐ + │ Cursor Agent [~][□][X] │ + ├─────────────────────────────────────────────────────────────┤ + │ │ + │ → /load-context api-guidelines │ + │ │ + │ Context loaded: api-guidelines.md │ + │ Ready. Ask me to implement something. │ + │ │ + │ → /create-command review-pr │ + │ │ + │ Analyzing "review-pr"... │ + │ Generated: description + prompt. Save to commands/ ? [Y] │ + │ │ + │ ✓ Saved. Use /review-pr anytime. │ + │ │ + └─────────────────────────────────────────────────────────────┘ + │ + │ slash-commands + ▼ + ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ + │ /load- │ │ /create- │ │ /update- │ │ /review- │ + │ context │ │ command │ │ command │ │ pr │ + └──────────┘ └──────────┘ └──────────┘ └──────────┘ + │ │ │ │ + └──────────────┴──────────────┴──────────────┘ + │ + coding agent executes + your prompt library +</pre> +<br /> +<h2 style='display: inline' id='table-of-contents'>Table of Contents</h2><br /> +<br /> +<ul> +<li><a href='#meta-slash-commands-to-manage-prompts-and-context-for-coding-agents'>Meta slash-commands to manage prompts and context for coding agents</a></li> +<li>⇢ <a href='#motivation-collecting-prompts-for-later-re-use'>Motivation: collecting prompts for later re-use</a></li> +<li>⇢ <a href='#loading-whole-context-before-asking-the-agent-to-do-something'>Loading whole context before asking the agent to do something</a></li> +<li>⇢ <a href='#works-with-any-coding-agent-that-supports-slash-commands'>Works with any coding agent that supports slash-commands</a></li> +<li>⇢ <a href='#commands-that-manage-slash-commands'>Commands that manage slash-commands</a></li> +<li>⇢ ⇢ <a href='#create-command'><span class='inlinecode'>/create-command</span></a></li> +<li>⇢ ⇢ <a href='#update-command'><span class='inlinecode'>/update-command</span></a></li> +<li>⇢ ⇢ <a href='#delete-command'><span class='inlinecode'>/delete-command</span></a></li> +<li>⇢ <a href='#commands-that-manage-context-files'>Commands that manage context files</a></li> +<li>⇢ ⇢ <a href='#create-context'><span class='inlinecode'>/create-context</span></a></li> +<li>⇢ ⇢ <a href='#update-context'><span class='inlinecode'>/update-context</span></a></li> +<li>⇢ ⇢ <a href='#delete-context'><span class='inlinecode'>/delete-context</span></a></li> +<li>⇢ ⇢ <a href='#load-context'><span class='inlinecode'>/load-context</span></a></li> +<li>⇢ <a href='#summary'>Summary</a></li> +</ul><br /> +<h2 style='display: inline' id='motivation-collecting-prompts-for-later-re-use'>Motivation: collecting prompts for later re-use</h2><br /> +<br /> +<span>When I use a coding agent, I often find myself repeating the same kind of request: "review this function," "explain this error," "add tests for this module," "format this as a blog post" and may other cases. Typing long prompts from scratch is tedious, and ad-hoc prompts are easy to forget. I'd rather capture what works and reuse it.</span><br /> +<br /> +<span>The solution is to treat prompts as first-class artefacts: store them as markdown files (one file per slash-command or per context), and use a small set of *meta* commands to manage them. The agent then creates, updates, or deletes these files through conversation—no hand-editing of markdowns. I can say <span class='inlinecode'>/create-command review-code we just did a code review</span> and the agent generates the command file based on the current agent's context, shows a preview, and saves it. Later I run <span class='inlinecode'>/review-code</span> and get a consistent workflow every time.</span><br /> +<br /> +<span>Because everything is just markdown in a directory (e.g. <span class='inlinecode'>~/Notes/Prompts/commands/</span> for commands and <span class='inlinecode'>~/Notes/Prompts/context/</span> for context), I can version it in git, sync it across machines, and gradually build a library of prompts. If the number of commands grows too large, I might later split them into skills or expose them via a searchable MCP server—but for now, a flat directory of <span class='inlinecode'>.md</span> files is enough.</span><br /> +<br /> +<h2 style='display: inline' id='loading-whole-context-before-asking-the-agent-to-do-something'>Loading whole context before asking the agent to do something</h2><br /> +<br /> +<span>A separate but related need is *context*: background information the agent should have before I ask it to do anything. For example, I might have a document describing our Kubernetes setup, API conventions, or the architecture of a specific service. If I ask "add a new endpoint for X" without that context, the agent guesses and without having a reference to an existing project with an <span class='inlinecode'>AGENTS.md</span>. If I first load the relevant context file, the agent knows the naming conventions, the existing patterns, and the infrastructure—and its edits are more accurate.</span><br /> +<br /> +<span>So I keep two kinds of artefacts:</span><br /> +<br /> +<ul> +<li>Commands — Reusable workflows (e.g. "review code", "explain error"). They live as <span class='inlinecode'>.md</span> files in a <span class='inlinecode'>commands/</span> directory. Meta-commands create, update, and delete them.</li> +<li>Context — Reusable background (project rules, API notes, infrastructure docs, personas). They live as <span class='inlinecode'>.md</span> files in a <span class='inlinecode'>context/</span> directory. I can create, update, delete, and—importantly—*load* them. Loading a context file injects that content into the conversation so the agent has it in mind for subsequent requests.</li> +</ul><br /> +<span>The use case is: start a session, run <span class='inlinecode'>/load-context api-guidelines</span> (or whatever context name), then ask the agent to implement a feature or fix a bug. The agent already knows the guidelines. No need to paste a wall of text every time; the context is on demand (not implicit like with skills).</span><br /> +<br /> +<h2 style='display: inline' id='works-with-any-coding-agent-that-supports-slash-commands'>Works with any coding agent that supports slash-commands</h2><br /> +<br /> +<span>I use different agents depending on the task: Claude Code CLI, Cursor Agent (CLI), OpenCode, Ampcode and others. What they have in common is support for custom slash-commands (or the ability to read prompt files). My meta-commands and context files are just markdown; there is no lock-in. Point your agent at the same directories and you get the same prompts and context. I don't need an MCP server returning prompts right now—the files on disk are enough. If slash-commands ever become too many to manage in a flat list, I may later introduce an MCP server to expose them as skills or searchable prompts.</span><br /> +<br /> +<h2 style='display: inline' id='commands-that-manage-slash-commands'>Commands that manage slash-commands</h2><br /> +<br /> +<span>These meta-commands create, update, and delete other slash-commands. The target files live in <span class='inlinecode'>~/Notes/Prompts/commands/</span> (or your chosen path). Each command is one <span class='inlinecode'>.md</span> file. You can see the commands (and the context files) here:</span><br /> +<br /> +<a class='textlink' href='https://codeberg.org/snonux/dotfiles/src/branch/master/prompts/commands'>https://codeberg.org/snonux/dotfiles/src/branch/master/prompts/commands</a><br /> +<a class='textlink' href='https://codeberg.org/snonux/dotfiles/src/branch/master/prompts/context'>https://codeberg.org/snonux/dotfiles/src/branch/master/prompts/context</a><br /> +<br /> +<h3 style='display: inline' id='create-command'><span class='inlinecode'>/create-command</span></h3><br /> +<br /> +<span>Creates a new slash-command by inferring its purpose from the name you give.</span><br /> +<br /> +<ul> +<li>Parameter: <span class='inlinecode'>command_name</span> (e.g. <span class='inlinecode'>review-code</span>, <span class='inlinecode'>explain-error</span>, <span class='inlinecode'>optimize-function</span>)</li> +<li>What it does: The agent analyses the name, infers intent and parameters, writes a description and prompt, shows a preview, and saves <span class='inlinecode'>{{command_name}}.md</span> to the commands directory.</li> +<li>Good for: Turning the current task or a recurring need into a reusable command without editing files by hand.</li> +</ul><br /> +<span>Example usage:</span><br /> +<br /> +<pre> +/create-command review-code +/create-command explain-error +</pre> +<br /> +<h3 style='display: inline' id='update-command'><span class='inlinecode'>/update-command</span></h3><br /> +<br /> +<span>Updates an existing slash-command step by step.</span><br /> +<br /> +<ul> +<li>Parameter: <span class='inlinecode'>command_name</span> (e.g. <span class='inlinecode'>create-command</span>, <span class='inlinecode'>review-code</span>)</li> +<li>What it does: Reads the existing <span class='inlinecode'>.md</span> file, shows the current content, asks what to change (description, parameters, prompt text), applies edits, shows a preview, and saves.</li> +<li>Good for: Refining a command after you've used it a few times or when requirements change.</li> +</ul><br /> +<span>Example usage:</span><br /> +<br /> +<pre> +/update-command create-command +/update-command review-code +</pre> +<br /> +<h3 style='display: inline' id='delete-command'><span class='inlinecode'>/delete-command</span></h3><br /> +<br /> +<span>Removes a slash-command by deleting its definition file.</span><br /> +<br /> +<ul> +<li>Parameter: <span class='inlinecode'>command_name</span> (e.g. <span class='inlinecode'>testing</span>, <span class='inlinecode'>review-code</span>)</li> +<li>What it does: Verifies the file exists, shows what will be deleted, asks for confirmation, then deletes the file.</li> +<li>Good for: Cleaning up experiments or commands you no longer use.</li> +</ul><br /> +<span>Example usage:</span><br /> +<br /> +<pre> +/delete-command testing +/delete-command review-code +</pre> +<br /> +<h2 style='display: inline' id='commands-that-manage-context-files'>Commands that manage context files</h2><br /> +<br /> +<span>These meta-commands create, update, delete, and *load* context files. Context files live in <span class='inlinecode'>~/Notes/Prompts/context/</span>. Loading a context injects its content into the conversation so the agent can use it for subsequent requests.</span><br /> +<br /> +<h3 style='display: inline' id='create-context'><span class='inlinecode'>/create-context</span></h3><br /> +<br /> +<span>Creates a new context file.</span><br /> +<br /> +<ul> +<li>Parameter: <span class='inlinecode'>context_name</span> (without <span class='inlinecode'>.md</span>), e.g. <span class='inlinecode'>epimetheus</span>, <span class='inlinecode'>api-guidelines</span></li> +<li>What it does: Checks if the context already exists, asks what the context should contain (background, structure, sections), then writes <span class='inlinecode'>{{context_name}}.md</span> to the context directory.</li> +<li>Good for: Capturing project rules, API conventions, or infrastructure notes once and reusing them via <span class='inlinecode'>/load-context</span>.</li> +</ul><br /> +<span>Example usage:</span><br /> +<br /> +<pre> +/create-context epimetheus +/create-context api-guidelines +</pre> +<br /> +<h3 style='display: inline' id='update-context'><span class='inlinecode'>/update-context</span></h3><br /> +<br /> +<span>Updates an existing context file by adding, modifying, or removing content.</span><br /> +<br /> +<ul> +<li>Parameter: <span class='inlinecode'>context_name</span> (e.g. <span class='inlinecode'>epimetheus</span>, <span class='inlinecode'>api-guidelines</span>). If omitted, lists available context files.</li> +<li>What it does: Reads the existing file, asks what to change (add section, modify section, remove section, rewrite, or full overhaul), applies changes, and saves.</li> +<li>Good for: Keeping context up to date as the project or infrastructure evolves.</li> +</ul><br /> +<span>Example usage:</span><br /> +<br /> +<pre> +/update-context epimetheus +/update-context api-guidelines +/update-context +</pre> +<br /> +<h3 style='display: inline' id='delete-context'><span class='inlinecode'>/delete-context</span></h3><br /> +<br /> +<span>Deletes a context file after confirmation.</span><br /> +<br /> +<ul> +<li>Parameter: <span class='inlinecode'>context_name</span> (e.g. <span class='inlinecode'>epimetheus</span>, <span class='inlinecode'>old-api-guidelines</span>). If omitted, lists available context files.</li> +<li>What it does: Verifies the file exists, shows a preview or summary, asks for confirmation, then deletes the file.</li> +<li>Good for: Removing outdated or unused context.</li> +</ul><br /> +<span>Example usage:</span><br /> +<br /> +<pre> +/delete-context epimetheus +/delete-context old-api-guidelines +/delete-context +</pre> +<br /> +<h3 style='display: inline' id='load-context'><span class='inlinecode'>/load-context</span></h3><br /> +<br /> +<span>Loads a context file into the conversation so the agent has that background for subsequent requests.</span><br /> +<br /> +<ul> +<li>Parameter: <span class='inlinecode'>context_name</span> (e.g. <span class='inlinecode'>epimetheus</span>, <span class='inlinecode'>api-guidelines</span>). If omitted, lists available context files.</li> +<li>What it does: Reads the context file, displays its content, and confirms it is loaded. From then on, the agent can use that information when you ask it to implement features, fix bugs, or answer questions.</li> +<li>Good for: Starting a session with "load our API guidelines" or "load our Kubernetes runbook" so the agent knows the infrastructure and conventions before you ask it to do something.</li> +</ul><br /> +<span>Example usage:</span><br /> +<br /> +<pre> +/load-context epimetheus +/load-context api-guidelines +/load-context +</pre> +<br /> +<h2 style='display: inline' id='summary'>Summary</h2><br /> +<br /> +<pre> +| Meta-command | Purpose | Good for | +|--------------------|----------------------------------------------|---------------------------------------------------| +| /create-command | Create new slash-command from name | Turning current or recurring tasks into commands | +| /update-command | Edit existing slash-command | Refining commands over time | +| /delete-command | Remove slash-command file | Cleaning up unused commands | +| /create-context | Create new context file | Capturing project/infra knowledge once | +| /update-context | Edit existing context file | Keeping context up to date | +| /delete-context | Remove context file | Removing outdated context | +| /load-context | Load context into conversation | Giving the agent background before tasks | +</pre> +<br /> +<span>Context is what the agent *knows*; commands are what the agent *does*. Both are markdown files you can create, update, and delete on the fly through the same coding agent—Claude Code CLI, Cursor Agent, OpenCode, Ampcode, or any other that supports slash-commands or prompt files. That's why these meta-commands are useful for ad-hoc creation, updating, and deleting of prompts and context without leaving the conversation.</span><br /> +<br /> +<span>Other related posts:</span><br /> +<br /> +<a class='textlink' href='./2026-02-14-meta-slash-commands-for-prompts-and-context.html'>2026-02-14 Meta slash-commands to manage prompts and context (You are currently reading this)</a><br /> +<a class='textlink' href='./2026-02-02-tmux-popup-editor-for-cursor-agent-prompts.html'>2026-02-02 A tmux popup editor for Cursor Agent CLI prompts</a><br /> +<br /> +<span>E-Mail your comments to <span class='inlinecode'>paul@nospam.buetow.org</span> :-)</span><br /> +<br /> +<a class='textlink' href='../'>Back to the main site</a><br /> + </div> + </content> + </entry> + <entry> <title>A tmux popup editor for Cursor Agent CLI prompts</title> <link href="https://foo.zone/gemfeed/2026-02-02-tmux-popup-editor-for-cursor-agent-prompts.html" /> <id>https://foo.zone/gemfeed/2026-02-02-tmux-popup-editor-for-cursor-agent-prompts.html</id> @@ -18249,204 +18492,4 @@ http://www.gnu.org/software/src-highlite --> </div> </content> </entry> - <entry> - <title>From `babylon5.buetow.org` to `*.buetow.cloud`</title> - <link href="https://foo.zone/gemfeed/2024-02-04-from-babylon5.buetow.org-to-.cloud.html" /> - <id>https://foo.zone/gemfeed/2024-02-04-from-babylon5.buetow.org-to-.cloud.html</id> - <updated>2024-02-04T00:50:50+02:00</updated> - <author> - <name>Paul Buetow aka snonux</name> - <email>paul@dev.buetow.org</email> - </author> - <summary>Recently, my employer sent me to a week-long AWS course. After the course, there wasn't any hands-on project I could dive into immediately, so I moved parts of my personal infrastructure to AWS to level up a bit through practical hands-on.</summary> - <content type="xhtml"> - <div xmlns="http://www.w3.org/1999/xhtml"> - <h1 style='display: inline' id='from-babylon5buetoworg-to-buetowcloud'>From <span class='inlinecode'>babylon5.buetow.org</span> to <span class='inlinecode'>*.buetow.cloud</span></h1><br /> -<br /> -<span class='quote'>Published at 2024-02-04T00:50:50+02:00</span><br /> -<br /> -<span>Recently, my employer sent me to a week-long AWS course. After the course, there wasn't any hands-on project I could dive into immediately, so I moved parts of my personal infrastructure to AWS to level up a bit through practical hands-on.</span><br /> -<br /> -<span>So, I migrated all of my Docker-based self-hosted services to AWS. Usually, I am not a big fan of big cloud providers and instead use smaller hosters or indie providers and self-made solutions. However, I also must go with the times and try out technologies currently hot on the job market. I don't want to become the old man who yells at cloud :D</span><br /> -<br /> -<a href='./from-.org-to-.cloud/old-man-yells-at-cloud.jpg'><img alt='Old man yells at cloud' title='Old man yells at cloud' src='./from-.org-to-.cloud/old-man-yells-at-cloud.jpg' /></a><br /> -<br /> -<h2 style='display: inline' id='table-of-contents'>Table of Contents</h2><br /> -<br /> -<ul> -<li><a href='#from-babylon5buetoworg-to-buetowcloud'>From <span class='inlinecode'>babylon5.buetow.org</span> to <span class='inlinecode'>*.buetow.cloud</span></a></li> -<li>⇢ <a href='#the-old-buetoworg-way'>The old <span class='inlinecode'>*.buetow.org</span> way</a></li> -<li>⇢ <a href='#i-kept-my-buetoworg-openbsd-boxes-alive'>I kept my <span class='inlinecode'>buetow.org</span> OpenBSD boxes alive</a></li> -<li>⇢ <a href='#the-new-buetowcloud-way'>The new <span class='inlinecode'>*.buetow.cloud</span> way</a></li> -<li>⇢ <a href='#the-container-apps'>The container apps</a></li> -<li>⇢ ⇢ <a href='#fluxbuetowcloud'><span class='inlinecode'>flux.buetow.cloud</span></a></li> -<li>⇢ ⇢ <a href='#audiobookshelfbuetowcloud'><span class='inlinecode'>audiobookshelf.buetow.cloud</span></a></li> -<li>⇢ ⇢ <a href='#syncthingbuetowcloud'><span class='inlinecode'>syncthing.buetow.cloud</span></a></li> -<li>⇢ ⇢ <a href='#radicalebuetowcloud'><span class='inlinecode'>radicale.buetow.cloud</span></a></li> -<li>⇢ ⇢ <a href='#bagbuetowcloud'><span class='inlinecode'>bag.buetow.cloud</span></a></li> -<li>⇢ ⇢ <a href='#ankibuetowcloud'><span class='inlinecode'>anki.buetow.cloud</span></a></li> -<li>⇢ ⇢ <a href='#vaultbuetowcloud'><span class='inlinecode'>vault.buetow.cloud</span></a></li> -<li>⇢ ⇢ <a href='#bastionbuetowcloud'><span class='inlinecode'>bastion.buetow.cloud</span></a></li> -<li>⇢ <a href='#conclusion'>Conclusion</a></li> -</ul><br /> -<h2 style='display: inline' id='the-old-buetoworg-way'>The old <span class='inlinecode'>*.buetow.org</span> way</h2><br /> -<br /> -<span>Before the migration, all those services were reachable through <span class='inlinecode'>buetow.org</span>-subdomains (Buetow is my last name) and ran on Docker containers on a single Rocky Linux 9 VM at Hetzner. And there was a Nginx reverse proxy with TLS offloading (with Let's Encrypt certificates). The Rocky Linux 9's hostname was <span class='inlinecode'>babylon5.buetow.org</span> (based on the Science Fiction series). </span><br /> -<br /> -<a class='textlink' href='https://en.wikipedia.org/wiki/Babylon_5'>https://en.wikipedia.org/wiki/Babylon_5</a><br /> -<br /> -<span>The downsides of this setup were:</span><br /> -<br /> -<ul> -<li>Not highly available. If the server goes down, no service is reachable until it's repaired. To be fair, the Hetzner cloud VM is redundant by itself and would have re-spawned on a different worker node, I suppose. </li> -<li>Manual installation.</li> -</ul><br /> -<span>About the manual installation part: I could have used a configuration management system like Rexify, Puppet, etc. But I decided against it back in time, as setting up Docker containers isn't so complicated through simple start scripts. And it's only a single Linux box where a manual installation is less painful. However, regular backups (which Hetzner can do automatically for you) were a must.</span><br /> -<br /> -<span>The benefits of this setup were:</span><br /> -<br /> -<ul> -<li>KISS (Keep it Simple Stupid)</li> -<li>Cheap</li> -</ul><br /> -<h2 style='display: inline' id='i-kept-my-buetoworg-openbsd-boxes-alive'>I kept my <span class='inlinecode'>buetow.org</span> OpenBSD boxes alive</h2><br /> -<br /> -<span>As pointed out, I only migrated the Docker-based self-hosted services (which run on the Babylon 5 Rocky Linux box) to AWS. Many self-hostable apps come with ready-to-use container images, making deploying them easy.</span><br /> -<br /> -<span>My other two OpenBSD VMs (<span class='inlinecode'>blowfish.buetow.org</span>, hosted at Hetzner, and <span class='inlinecode'>fishfinger.buetow.org</span>, hosted at OpenBSD Amsterdam) still run (and they will keep running) the following services:</span><br /> -<br /> -<ul> -<li>HTTP server for my websites (e.g. <span class='inlinecode'>https://foo.zone</span>, ...)</li> -<li>ACME for Let's Encrypt TLS certificate auto-renewal.</li> -<li>Gemini server for my capsules (e.g. <span class='inlinecode'>https://foo.zone</span>)</li> -<li>Authoritative DNS servers for my domains (but <span class='inlinecode'>buetow.cloud</span>, which is on Route 53 now)</li> -<li>Mail transfer agent (MTA)</li> -<li>My Gogios monitoring system.</li> -<li>My IRC bouncer.</li> -</ul><br /> -<span>It is all automated with Rex, aka Rexify. This OpenBSD setup is my "fun" or "for pleasure" setup. Whereas the Rocky Linux 9 one I always considered the "pratical means to the end"-setup to have 3rd party Docker containers up and running with as little work as possible.</span><br /> -<br /> -<a class='textlink' href='https://www.rexify.org'>(R)?ex, the friendly automation framework</a><br /> -<a class='textlink' href='./2023-06-01-kiss-server-monitoring-with-gogios.html'>KISS server monitoring with Gogios</a><br /> -<a class='textlink' href='./2022-07-30-lets-encrypt-with-openbsd-and-rex.html'>Let's encrypt with OpenBSD and Rex</a><br /> -<br /> -<h2 style='display: inline' id='the-new-buetowcloud-way'>The new <span class='inlinecode'>*.buetow.cloud</span> way</h2><br /> -<br /> -<span>With AWS, I decided to get myself a new domain name, as I could fully separate my AWS setup from my conventional setup and give Route 53 as an authoritative DNS a spin.</span><br /> -<br /> -<span>I decided to automate everything with Terraform, as I wanted to learn to use it as it appears standard now in the job market.</span><br /> -<br /> -<span>All services are installed automatically to AWS ECS Fargate. ECS is AWS's Elastic Container Service, and Fargate automatically manages the underlying hardware infrastructure (e.g., how many CPUs, RAM, etc.) for me. So I don't have to bother about having enough EC2 instances to serve my demands, for example.</span><br /> -<br /> -<span>The authoritative DNS for the <span class='inlinecode'>buetow.cloud</span> domain is AWS Route 53. TLS certificates are free here at AWS and offloaded through the AWS Application Load Balancer. The LB acts as a proxy to the ECS container instances of the services. A few services I run in ECS Fargate also require the AWS Network Load Balancer.</span><br /> -<br /> -<span>All services require some persistent storage. For that, I use an encrypted EFS file system, automatically replicated across all AZs (availability zones) of my region of choice, <span class='inlinecode'>eu-central-1</span>.</span><br /> -<br /> -<span>In case of an AZ outage, I could re-deploy all the failed containers in another AZ, and all the data would still be there.</span><br /> -<br /> -<span>The EFS automatically gets backed up by AWS for me following their standard Backup schedule. The daily backups are kept for 30 days. </span><br /> -<br /> -<span>Domain registration, TLS certificate configuration and configuration of the EFS backup were quickly done through the AWS web interface. These were only one-off tasks, so they weren't fully automated through Terraform. </span><br /> -<br /> -<span>You can find all Terraform manifests here:</span><br /> -<br /> -<a class='textlink' href='https://codeberg.org/snonux/terraform'>https://codeberg.org/snonux/terraform</a><br /> -<br /> -<span>Whereas:</span><br /> -<br /> -<ul> -<li><span class='inlinecode'>org-buetow-base</span> sets up the bare VPC (IPv4 and IPv6 subnets in 3 AZs, EFS, ECR (the AWS container registry for some self-built containers) and Route 53 zone. It's the requirement for most other Terraform manifests in this repository.</li> -<li><span class='inlinecode'>org-buetow-bastion</span> sets up a minimal Amazon Linux EC2 instance where I can manually SSH into and look at the EFS file system (if required).</li> -<li><span class='inlinecode'>org-buetow-elb</span> sets up the Elastic Load Balancer, a prerequisite for any service running in ECS Fargate.</li> -<li><span class='inlinecode'>org-buetow-ecs</span> finally sets up and deploys all the Docker apps mentioned above. Any apps can be turned on or off via the <span class='inlinecode'>variables.tf</span> file.</li> -</ul><br /> -<h2 style='display: inline' id='the-container-apps'>The container apps</h2><br /> -<br /> -<span>And here, finally, is the list of all the container apps my Terraform manifests deploy. The FQDNs here may not be reachable. I spin them up only on demand (for cost reasons). All services are fully dual-stacked (IPv4 & IPv6). </span><br /> -<br /> -<h3 style='display: inline' id='fluxbuetowcloud'><span class='inlinecode'>flux.buetow.cloud</span></h3><br /> -<br /> -<span>Miniflux is a minimalist and opinionated feed reader. With the move to AWS, I also retired my bloated instance of NextCloud. So, with Miniflux, I retired from NextCloud News.</span><br /> -<br /> -<span>Miniflux requires two ECS containers. One is the Miniflux app, and the other is the PostgreSQL DB.</span><br /> -<br /> -<a class='textlink' href='https://miniflux.app/'>https://miniflux.app/</a><br /> -<br /> -<br /> -<h3 style='display: inline' id='audiobookshelfbuetowcloud'><span class='inlinecode'>audiobookshelf.buetow.cloud</span></h3><br /> -<br /> -<span>Audiobookshelf was the first Docker app I installed. It is a Self-hosted audiobook and podcast server. It comes with a neat web interface, and there is also an Android app available, which works also in offline mode. This is great, as I only have the ECS instance sometimes running for cost savings.</span><br /> -<br /> -<span>With Audiobookshelf, I replaced my former Audible subscription and my separate Podcast app. For Podcast synchronisation I used to use the Gpodder NextCloud sync app. But that one I retired now with Audiobookshelf as well :-)</span><br /> -<br /> -<a class='textlink' href='https://www.audiobookshelf.org'>https://www.audiobookshelf.org</a><br /> -<br /> -<h3 style='display: inline' id='syncthingbuetowcloud'><span class='inlinecode'>syncthing.buetow.cloud</span></h3><br /> -<br /> -<span>Syncthing is a continuous file synchronisation program. In real-time, it synchronises files between two or more computers, safely protected from prying eyes. Your data is your own, and you deserve to choose where it is stored, whether it is shared with some third party, and how it's transmitted over the internet.</span><br /> -<br /> -<span>With Syncthing, I retired my old NextCloud Files and file sync client on all my devices. I also quit my NextCloud Notes setup. All my Notes are now plain Markdown files in a <span class='inlinecode'>Notes</span> directory. On Android, I can edit them with any text or Markdown editor (e.g. Obsidian), and they will be synchronised via Syncthing to my other computers, both forward and back.</span><br /> -<br /> -<span>I use Syncthing to synchronise some of my Phone's data (e.g. Notes, Pictures and other documents). Initially, I synced all of my pictures, videos, etc., with AWS. But that was pretty expensive. So for now, I use it only whilst travelling. Otherwise, I will use my Syncthing instance here on my LAN (I have a cheap cloud backup in AWS S3 Glacier Deep Archive, but that's for another blog post).</span><br /> -<br /> -<a class='textlink' href='https://syncthing.net/'>https://syncthing.net/</a><br /> -<br /> -<h3 style='display: inline' id='radicalebuetowcloud'><span class='inlinecode'>radicale.buetow.cloud</span></h3><br /> -<br /> -<span>Radicale is an excellent minimalist WebDAV calendar and contact synchronisation server. It was good enough to replace my NextCloud Calendar and NextCloud Contacts setup. Unfortunately, there wasn't a ready-to-use Docker image. So, I created my own.</span><br /> -<br /> -<span>On Android, it works great together with the DAVx5 client for synchronisation.</span><br /> -<br /> -<a class='textlink' href='https://radicale.org/'>https://radicale.org/</a><br /> -<a class='textlink' href='https://codeberg.org/snonux/docker-radicale-server'>https://codeberg.org/snonux/docker-radicale-server</a><br /> -<a class='textlink' href='https://www.davx5.com/'>https://www.davx5.com/</a><br /> -<br /> -<h3 style='display: inline' id='bagbuetowcloud'><span class='inlinecode'>bag.buetow.cloud</span></h3><br /> -<br /> -<span>Wallabag is a self-hostable "save now - read later" service, and it also comes with an Android app which also has an offline mode. Think of Getpocket, but open-source!</span><br /> -<br /> -<a class='textlink' href='https://wallabag.org/'>https://wallabag.org/</a><br /> -<a class='textlink' href='https://github.com/wallabag/wallabag'>https://github.com/wallabag/wallabag</a><br /> -<br /> -<h3 style='display: inline' id='ankibuetowcloud'><span class='inlinecode'>anki.buetow.cloud</span></h3><br /> -<br /> -<span>Anki is a great (the greatest) flash-card learning program. I am currently learning Bulgarian as my 3rd language. There is also an Android app that has an offline mode, and advanced users can also self-host the server <span class='inlinecode'>anki-sync-server</span>. For some reason (not going into the details here), I had to build my own Docker image for the server.</span><br /> -<br /> -<a class='textlink' href='https://apps.ankiweb.net/'>https://apps.ankiweb.net/</a><br /> -<a class='textlink' href='https://codeberg.org/snonux/docker-anki-sync-server'>https://codeberg.org/snonux/docker-anki-sync-server</a><br /> -<br /> -<h3 style='display: inline' id='vaultbuetowcloud'><span class='inlinecode'>vault.buetow.cloud</span></h3><br /> -<br /> -<span>Vaultwarden is an alternative implementation of the Bitwarden server API written in Rust and compatible with upstream Bitwarden clients, perfect for self-hosted deployment where running the official resource-heavy service might not be ideal. So, this is a great password manager server which can be used with any Bitwarden Android app.</span><br /> -<br /> -<span>I currently don't use it, but I may in the future. I made it available in my ECS Fargate setup anyway for now.</span><br /> -<br /> -<a class='textlink' href='https://github.com/dani-garcia/vaultwarden'>https://github.com/dani-garcia/vaultwarden</a><br /> -<br /> -<span>I currently use <span class='inlinecode'>geheim</span>, a Ruby command line tool I wrote, as my current password manager. You can read a little bit about it here under "More":</span><br /> -<br /> -<a class='textlink' href='./2022-06-15-sweating-the-small-stuff.html'>Sweating the small stuff </a><br /> -<br /> -<h3 style='display: inline' id='bastionbuetowcloud'><span class='inlinecode'>bastion.buetow.cloud</span></h3><br /> -<br /> -<span>This is a tiny ARM-based Amazon Linux EC2 instance, which I sometimes spin up for investigation or manual work on my EFS file system in AWS.</span><br /> -<br /> -<h2 style='display: inline' id='conclusion'>Conclusion</h2><br /> -<br /> -<span>I have learned a lot about AWS and Terraform during this migration. This was actually my first AWS hands-on project with practical use.</span><br /> -<br /> -<span>All of this was not particularly difficult (but at times a bit confusing). I see the use of Terraform managing more extensive infrastructures (it was even helpful for my small setup here). At least I know now what all the buzz is about :-). I don't think Terraform's HCL is a nice language. It get's it's job done, but it could be more elegant IMHO.</span><br /> -<br /> -<span>Deploying updates to AWS are much easier, and some of the manual maintenance burdens of my Rocky Linux 9 VM are no longer needed. So I will have more time for other projects! </span><br /> -<br /> -<span>Will I keep it in the cloud? I don't know yet. But maybe I won't renew the <span class='inlinecode'>buetow.cloud</span> domain and instead will use <span class='inlinecode'>*.cloud.buetow.org</span> or <span class='inlinecode'>*.aws.buetow.org</span> subdomains. </span><br /> -<br /> -<span>Will the AWS setup be cheaper than my old Rocky Linux setup? It might be more affordable as I only turn ECS and the load balancers on or off on-demand. Time will tell! The first forecasts suggest that it will be around the same costs.</span><br /> -<br /> -<span>E-Mail your comments to <span class='inlinecode'>paul@nospam.buetow.org</span> :-)</span><br /> -<br /> -<a class='textlink' href='../'>Back to the main site</a><br /> - </div> - </content> - </entry> </feed> diff --git a/gemfeed/index.html b/gemfeed/index.html index 7d71eeda..a6a508f4 100644 --- a/gemfeed/index.html +++ b/gemfeed/index.html @@ -15,6 +15,7 @@ <br /> <h2 style='display: inline' id='to-be-in-the-zone'>To be in the .zone!</h2><br /> <br /> +<a class='textlink' href='./2026-02-14-meta-slash-commands-for-prompts-and-context.html'>2026-02-14 - Meta slash-commands to manage prompts and context for coding agents</a><br /> <a class='textlink' href='./2026-02-02-tmux-popup-editor-for-cursor-agent-prompts.html'>2026-02-02 - A tmux popup editor for Cursor Agent CLI prompts</a><br /> <a class='textlink' href='./2026-01-01-using-supernote-nomad-offline.html'>2026-01-01 - Using Supernote Nomad offline</a><br /> <a class='textlink' href='./2026-01-01-posts-from-july-to-december-2025.html'>2026-01-01 - Posts from July to December 2025</a><br /> @@ -13,7 +13,7 @@ </p> <h1 style='display: inline' id='hello'>Hello!</h1><br /> <br /> -<span class='quote'>This site was generated at 2026-02-08T22:37:47+02:00 by <span class='inlinecode'>Gemtexter</span></span><br /> +<span class='quote'>This site was generated at 2026-02-14T13:44:46+02:00 by <span class='inlinecode'>Gemtexter</span></span><br /> <br /> <span>Welcome to the foo.zone!</span><br /> <br /> @@ -43,6 +43,7 @@ <br /> <h3 style='display: inline' id='posts'>Posts</h3><br /> <br /> +<a class='textlink' href='./gemfeed/2026-02-14-meta-slash-commands-for-prompts-and-context.html'>2026-02-14 - Meta slash-commands to manage prompts and context for coding agents</a><br /> <a class='textlink' href='./gemfeed/2026-02-02-tmux-popup-editor-for-cursor-agent-prompts.html'>2026-02-02 - A tmux popup editor for Cursor Agent CLI prompts</a><br /> <a class='textlink' href='./gemfeed/2026-01-01-using-supernote-nomad-offline.html'>2026-01-01 - Using Supernote Nomad offline</a><br /> <a class='textlink' href='./gemfeed/2026-01-01-posts-from-july-to-december-2025.html'>2026-01-01 - Posts from July to December 2025</a><br /> diff --git a/uptime-stats.html b/uptime-stats.html index ecce9b98..56f9885f 100644 --- a/uptime-stats.html +++ b/uptime-stats.html @@ -13,7 +13,7 @@ </p> <h1 style='display: inline' id='my-machine-uptime-stats'>My machine uptime stats</h1><br /> <br /> -<span class='quote'>This site was last updated at 2026-02-08T22:37:47+02:00</span><br /> +<span class='quote'>This site was last updated at 2026-02-14T13:44:46+02:00</span><br /> <br /> <span>The following stats were collected via <span class='inlinecode'>uptimed</span> on all of my personal computers over many years and the output was generated by <span class='inlinecode'>guprecords</span>, the global uptime records stats analyser of mine.</span><br /> <br /> @@ -35,7 +35,7 @@ | Pos | Host | Uptime | Last Kernel | +-----+----------------+-----------------------------+-----------------------------------+ | 1. | vulcan | 4 years, 5 months, 6 days | Linux 3.10.0-1160.81.1.el7.x86_64 | -| 2. | *earth | 4 years, 1 months, 15 days | Linux 6.18.8-200.fc43.x86_64 | +| 2. | *earth | 4 years, 1 months, 19 days | Linux 6.18.8-200.fc43.x86_64 | | 3. | *blowfish | 4 years, 1 months, 6 days | OpenBSD 7.7 | | 4. | sun | 3 years, 9 months, 26 days | FreeBSD 10.3-RELEASE-p24 | | 5. | uranus | 3 years, 9 months, 5 days | NetBSD 10.1 | @@ -46,7 +46,7 @@ | 10. | tauceti | 2 years, 3 months, 19 days | Linux 3.2.0-4-amd64 | | 11. | mega15289 | 1 years, 12 months, 17 days | Darwin 23.4.0 | | 12. | tauceti-f | 1 years, 9 months, 18 days | Linux 3.2.0-3-amd64 | -| 13. | *mega-m3-pro | 1 years, 8 months, 14 days | Darwin 24.6.0 | +| 13. | *mega-m3-pro | 1 years, 8 months, 18 days | Darwin 24.6.0 | | 14. | *t450 | 1 years, 7 months, 26 days | FreeBSD 14.2-RELEASE | | 15. | mega8477 | 1 years, 3 months, 25 days | Darwin 13.4.0 | | 16. | host0 | 1 years, 3 months, 9 days | FreeBSD 6.2-RELEASE-p5 | @@ -69,7 +69,7 @@ | 2. | dionysus | 8 years, 6 months, 17 days | FreeBSD 13.0-RELEASE-p11 | | 3. | alphacentauri | 6 years, 9 months, 13 days | FreeBSD 11.4-RELEASE-p7 | | 4. | makemake | 4 years, 10 months, 16 days | Linux 6.9.9-200.fc40.x86_64 | -| 5. | *earth | 4 years, 7 months, 15 days | Linux 6.18.8-200.fc43.x86_64 | +| 5. | *earth | 4 years, 7 months, 20 days | Linux 6.18.8-200.fc43.x86_64 | | 6. | vulcan | 4 years, 5 months, 6 days | Linux 3.10.0-1160.81.1.el7.x86_64 | | 7. | *blowfish | 4 years, 1 months, 7 days | OpenBSD 7.7 | | 8. | sun | 3 years, 10 months, 2 days | FreeBSD 10.3-RELEASE-p24 | @@ -84,7 +84,7 @@ | 17. | callisto | 2 years, 3 months, 13 days | Linux 4.0.4-303.fc22.x86_64 | | 18. | tauceti-e | 2 years, 1 months, 29 days | Linux 3.2.0-4-amd64 | | 19. | tauceti-f | 1 years, 9 months, 20 days | Linux 3.2.0-3-amd64 | -| 20. | *mega-m3-pro | 1 years, 9 months, 10 days | Darwin 24.6.0 | +| 20. | *mega-m3-pro | 1 years, 9 months, 14 days | Darwin 24.6.0 | +-----+----------------+-----------------------------+-----------------------------------+ </pre> <br /> @@ -110,7 +110,7 @@ | 12. | *f2 | 0 years, 8 months, 22 days | FreeBSD 14.3-RELEASE-p7 | | 13. | *f1 | 0 years, 8 months, 22 days | FreeBSD 14.3-RELEASE-p7 | | 14. | sirius | 0 years, 8 months, 20 days | Linux 2.6.32-042stab111.12 | -| 15. | *earth | 0 years, 6 months, 30 days | Linux 6.18.8-200.fc43.x86_64 | +| 15. | *earth | 0 years, 7 months, 1 days | Linux 6.18.8-200.fc43.x86_64 | | 16. | deimos | 0 years, 5 months, 15 days | Linux 4.4.5-300.fc23.x86_64 | | 17. | joghurt | 0 years, 2 months, 9 days | FreeBSD 7.0-PRERELEASE | | 18. | host0 | 0 years, 2 months, 1 days | FreeBSD 6.2-RELEASE-p5 | @@ -128,7 +128,7 @@ | Pos | Host | Boots | Last Kernel | +-----+----------------+-------+------------------------------+ | 1. | alphacentauri | 671 | FreeBSD 11.4-RELEASE-p7 | -| 2. | *earth | 228 | Linux 6.18.8-200.fc43.x86_64 | +| 2. | *earth | 230 | Linux 6.18.8-200.fc43.x86_64 | | 3. | mars | 207 | Linux 3.2.0-4-amd64 | | 4. | callisto | 153 | Linux 4.0.4-303.fc22.x86_64 | | 5. | dionysus | 136 | FreeBSD 13.0-RELEASE-p11 | @@ -139,8 +139,8 @@ | 10. | makemake | 81 | Linux 6.9.9-200.fc40.x86_64 | | 11. | uranus | 59 | NetBSD 10.1 | | 12. | pluto | 51 | Linux 3.2.0-4-amd64 | -| 13. | mega15289 | 50 | Darwin 23.4.0 | -| 14. | *mega-m3-pro | 50 | Darwin 24.6.0 | +| 13. | *mega-m3-pro | 50 | Darwin 24.6.0 | +| 14. | mega15289 | 50 | Darwin 23.4.0 | | 15. | *fishfinger | 50 | OpenBSD 7.7 | | 16. | *t450 | 46 | FreeBSD 14.2-RELEASE | | 17. | *blowfish | 45 | OpenBSD 7.7 | @@ -159,7 +159,7 @@ | Pos | Host | Score | Last Kernel | +-----+----------------+-------+-----------------------------------+ | 1. | uranus | 340 | NetBSD 10.1 | -| 2. | *earth | 284 | Linux 6.18.8-200.fc43.x86_64 | +| 2. | *earth | 285 | Linux 6.18.8-200.fc43.x86_64 | | 3. | vulcan | 275 | Linux 3.10.0-1160.81.1.el7.x86_64 | | 4. | *blowfish | 259 | OpenBSD 7.7 | | 5. | sun | 238 | FreeBSD 10.3-RELEASE-p24 | @@ -173,7 +173,7 @@ | 13. | tauceti | 141 | Linux 3.2.0-4-amd64 | | 14. | makemake | 137 | Linux 6.9.9-200.fc40.x86_64 | | 15. | *t450 | 128 | FreeBSD 14.2-RELEASE | -| 16. | *mega-m3-pro | 109 | Darwin 24.6.0 | +| 16. | *mega-m3-pro | 110 | Darwin 24.6.0 | | 17. | tauceti-f | 108 | Linux 3.2.0-3-amd64 | | 18. | tauceti-e | 96 | Linux 3.2.0-4-amd64 | | 19. | callisto | 86 | Linux 4.0.4-303.fc22.x86_64 | @@ -192,7 +192,7 @@ | 1. | FreeBSD 10... | 551 | | 2. | Linux 3... | 550 | | 3. | *FreeBSD 14... | 339 | -| 4. | *Linux 6... | 213 | +| 4. | *Linux 6... | 215 | | 5. | Linux 5... | 162 | | 6. | Linux 4... | 161 | | 7. | FreeBSD 11... | 153 | @@ -208,7 +208,7 @@ | 17. | Darwin 22... | 12 | | 18. | Darwin 18... | 11 | | 19. | FreeBSD 6... | 10 | -| 20. | FreeBSD 7... | 10 | +| 20. | OpenBSD 4... | 10 | +-----+----------------+-------+ </pre> <br /> @@ -224,14 +224,14 @@ | 2. | *OpenBSD 7... | 8 years, 1 months, 7 days | | 3. | FreeBSD 10... | 5 years, 9 months, 9 days | | 4. | Linux 5... | 4 years, 10 months, 21 days | -| 5. | *Linux 6... | 3 years, 4 months, 15 days | +| 5. | *Linux 6... | 3 years, 4 months, 20 days | | 6. | *FreeBSD 14... | 2 years, 11 months, 5 days | | 7. | Linux 4... | 2 years, 7 months, 22 days | | 8. | FreeBSD 11... | 2 years, 4 months, 28 days | | 9. | Linux 2... | 1 years, 11 months, 21 days | | 10. | Darwin 13... | 1 years, 3 months, 25 days | | 11. | FreeBSD 6... | 1 years, 3 months, 9 days | -| 12. | *Darwin 24... | 0 years, 12 months, 21 days | +| 12. | *Darwin 24... | 0 years, 12 months, 25 days | | 13. | Darwin 23... | 0 years, 11 months, 3 days | | 14. | OpenBSD 4... | 0 years, 8 months, 12 days | | 15. | Darwin 21... | 0 years, 8 months, 2 days | @@ -255,7 +255,7 @@ | 2. | *OpenBSD 7... | 517 | | 3. | FreeBSD 10... | 406 | | 4. | Linux 5... | 317 | -| 5. | *Linux 6... | 228 | +| 5. | *Linux 6... | 229 | | 6. | *FreeBSD 14... | 211 | | 7. | Linux 4... | 175 | | 8. | FreeBSD 11... | 159 | @@ -269,8 +269,8 @@ | 16. | Darwin 18... | 32 | | 17. | Darwin 22... | 30 | | 18. | Darwin 15... | 29 | -| 19. | FreeBSD 5... | 25 | -| 20. | FreeBSD 13... | 25 | +| 19. | FreeBSD 13... | 25 | +| 20. | FreeBSD 5... | 25 | +-----+----------------+-------+ </pre> <br /> @@ -283,7 +283,7 @@ | Pos | KernelName | Boots | +-----+------------+-------+ | 1. | *FreeBSD | 1204 | -| 2. | *Linux | 1108 | +| 2. | *Linux | 1110 | | 3. | *Darwin | 155 | | 4. | *OpenBSD | 115 | | 5. | NetBSD | 1 | @@ -298,10 +298,10 @@ +-----+------------+-----------------------------+ | Pos | KernelName | Uptime | +-----+------------+-----------------------------+ -| 1. | *Linux | 28 years, 5 months, 8 days | +| 1. | *Linux | 28 years, 5 months, 13 days | | 2. | *FreeBSD | 12 years, 10 months, 8 days | | 3. | *OpenBSD | 8 years, 8 months, 18 days | -| 4. | *Darwin | 5 years, 4 months, 4 days | +| 4. | *Darwin | 5 years, 4 months, 8 days | | 5. | NetBSD | 0 years, 1 months, 1 days | +-----+------------+-----------------------------+ </pre> @@ -314,10 +314,10 @@ +-----+------------+-------+ | Pos | KernelName | Score | +-----+------------+-------+ -| 1. | *Linux | 1887 | +| 1. | *Linux | 1888 | | 2. | *FreeBSD | 912 | | 3. | *OpenBSD | 557 | -| 4. | *Darwin | 347 | +| 4. | *Darwin | 348 | | 5. | NetBSD | 0 | +-----+------------+-------+ </pre> |
