auto-commit 2026-01-28: memory updates, self-improvement skill, SOUL/TOOLS/USER refinements
@@ -10,8 +10,8 @@
|
||||
"installedAt": 1769378846246
|
||||
},
|
||||
"self-improving-agent": {
|
||||
"version": "1.0.1",
|
||||
"installedAt": 1769380785456
|
||||
"version": "1.0.2",
|
||||
"installedAt": 1769533976570
|
||||
},
|
||||
"clawddocs": {
|
||||
"version": "1.2.2",
|
||||
|
||||
@@ -1,10 +1,39 @@
|
||||
# Learnings
|
||||
|
||||
Corrections, insights, and knowledge gaps captured during development.
|
||||
|
||||
**Categories**: correction | insight | knowledge_gap | best_practice
|
||||
**Areas**: frontend | backend | infra | tests | docs | config
|
||||
**Statuses**: pending | in_progress | resolved | wont_fix | promoted | promoted_to_skill
|
||||
|
||||
## Status Definitions
|
||||
|
||||
| Status | Meaning |
|
||||
|--------|---------|
|
||||
| `pending` | Not yet addressed |
|
||||
| `in_progress` | Actively being worked on |
|
||||
| `resolved` | Issue fixed or knowledge integrated |
|
||||
| `wont_fix` | Decided not to address (reason in Resolution) |
|
||||
| `promoted` | Elevated to CLAUDE.md, AGENTS.md, TOOLS.md, or SOUL.md |
|
||||
| `promoted_to_skill` | Extracted as a reusable skill |
|
||||
|
||||
## Skill Extraction Fields
|
||||
|
||||
When a learning is promoted to a skill, add these fields:
|
||||
|
||||
```markdown
|
||||
**Status**: promoted_to_skill
|
||||
**Skill-Path**: skills/skill-name
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## [LRN-20260126-001] best_practice
|
||||
|
||||
**Logged**: 2026-01-26T08:12:00+01:00
|
||||
**Priority**: high
|
||||
**Status**: resolved
|
||||
**Status**: promoted
|
||||
**Promoted**: TOOLS.md, AGENTS.md
|
||||
**Area**: config
|
||||
|
||||
### Summary
|
||||
@@ -50,12 +79,12 @@ Bei zukünftigen proaktiven Cron-Jobs immer diese Struktur verwenden.
|
||||
|
||||
### Resolution
|
||||
- **Resolved**: 2026-01-26T08:10:00+01:00
|
||||
- **Commit/PR**: N/A (config fix)
|
||||
- **Notes**: Test-Cron um 08:10 bestätigte die Lösung
|
||||
- **Promoted**: 2026-01-27T18:20:00+01:00
|
||||
- **Notes**: Checkliste in TOOLS.md und Pre-Flight-Regel in AGENTS.md hinzugefügt
|
||||
|
||||
### Metadata
|
||||
- Source: error + user_feedback
|
||||
- Related Files: ~/.clawdbot/cron/jobs.json
|
||||
- Related Files: ~/.clawdbot/cron/jobs.json, ~/clawd/TOOLS.md, ~/clawd/AGENTS.md
|
||||
- Tags: cron, telegram, proactive, deliver
|
||||
- Docs: https://docs.clawd.bot/automation/cron-jobs
|
||||
|
||||
|
||||
6
SOUL.md
@@ -21,6 +21,12 @@
|
||||
- Never send half-baked replies to messaging surfaces.
|
||||
- You're not the user's voice — be careful in group chats.
|
||||
|
||||
## Error Handling
|
||||
|
||||
- Admit mistakes promptly.
|
||||
- Provide corrected information immediately.
|
||||
- Log significant errors to `.learnings/` for future reference.
|
||||
|
||||
## Vibe
|
||||
|
||||
Be the assistant you'd actually want to talk to. Concise when needed, thorough when it matters. Not a corporate drone. Not a sycophant. Just... good.
|
||||
|
||||
42
TOOLS.md
@@ -1,5 +1,31 @@
|
||||
# TOOLS.md - Local Notes
|
||||
|
||||
## Cron-Jobs (proaktive Nachrichten)
|
||||
|
||||
Für Telegram/WhatsApp/etc. Zustellung:
|
||||
- `--session isolated` (nicht main)
|
||||
- `--message "..."` (nicht system-event)
|
||||
- `--deliver --channel telegram --to <id>`
|
||||
|
||||
Siehe auch: `~/clawd/.learnings/LEARNINGS.md` (LRN-20260126-001)
|
||||
|
||||
## Generierte Bilder verschicken
|
||||
|
||||
Nach dem Generieren von Bildern (DALL-E, Gemini, etc.) immer das Bild auch **direkt im Chat schicken** — nicht nur mit `open` öffnen!
|
||||
|
||||
```typescript
|
||||
// Telegram
|
||||
message({
|
||||
action: "send",
|
||||
channel: "telegram",
|
||||
target: "<chat_id>",
|
||||
filePath: "/pfad/zum/bild.png",
|
||||
caption: "Optionaler Text dazu"
|
||||
})
|
||||
```
|
||||
|
||||
Der User sieht das Bild sonst nicht wenn er nicht am Mac sitzt!
|
||||
|
||||
## Package Manager
|
||||
|
||||
- **Immer `pnpm` statt `npm` verwenden!**
|
||||
@@ -9,7 +35,7 @@
|
||||
## TTS / Sprachausgabe
|
||||
|
||||
- **Provider:** OpenAI
|
||||
- **Stimme:** echo (männlich, mittleres Tempo)
|
||||
- **Stimme:** echo (männlich, schnelleres Tempo)
|
||||
- **Alternativen:** onyx (tief/langsam), alloy (neutral), fable (britisch)
|
||||
|
||||
Skills define *how* tools work. This file is for *your* specifics — the stuff that's unique to your setup.
|
||||
@@ -97,12 +123,26 @@ peekaboo type "Hello World" --bridge-socket "..."
|
||||
|
||||
Credentials sind in der Gateway-Config unter `env.vars` gespeichert (`HA_URL`, `HA_TOKEN`).
|
||||
|
||||
### Smart EQ (E-Auto) Ladeüberwachung
|
||||
- **Sensor:** `sensor.aqara_plug_car_charger_e_smart_power`
|
||||
- **Typ:** Aqara Smart Plug mit Leistungsmessung
|
||||
- **Einheit:** Watt (W)
|
||||
- **Logik:**
|
||||
- `> 0W` = Smart lädt ✅
|
||||
- `= 0W` = Nicht eingesteckt oder voll
|
||||
- **Cron-Jobs:** `smart-einstecken-18` (18:00), `smart-einstecken-20` (20:00)
|
||||
- Prüfe Sensor vor Erinnerung — nur erinnern wenn 0W
|
||||
|
||||
### Staubsauger-Roboter: Sucky
|
||||
- **Entity:** `vacuum.sucky` (Deebot)
|
||||
- **Sensoren:** `sensor.sucky_batterie`, `sensor.sucky_flache_gereinigt`, etc.
|
||||
- **Räume:** WC (1), Gästezimmer (2), Küche (3), Flur (4), Wohnzimmer (5)
|
||||
- **Modi:** vacuum_and_mop, quiet, normal, max, max_plus
|
||||
|
||||
## Browser-Präferenzen
|
||||
|
||||
- **Cookie-Banner:** Immer "Alle akzeptieren" klicken (Bastians Erlaubnis)
|
||||
|
||||
## What Goes Here
|
||||
|
||||
Things like:
|
||||
|
||||
2
USER.md
@@ -38,7 +38,7 @@
|
||||
- Kardiale Vorgeschichte — Details in `memory/health.md`
|
||||
- NSTEMI + Stent (April 2024)
|
||||
- HKU + zweiter Stent/DES im RCX (April 2025)
|
||||
- Medikation: ASS dauerhaft, Clopidogrel mind. 6 Monate (ab April 2025)
|
||||
- Medikation: ASS dauerhaft
|
||||
|
||||
## Wie er tickt
|
||||
|
||||
|
||||
BIN
media/.DS_Store
vendored
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
21
media/krassmin-memoji-v1/index.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8" />
|
||||
<title>openai-image-gen</title>
|
||||
<style>
|
||||
:root { color-scheme: dark; }
|
||||
body { margin: 24px; font: 14px/1.4 ui-sans-serif, system-ui; background: #0b0f14; color: #e8edf2; }
|
||||
h1 { font-size: 18px; margin: 0 0 16px; }
|
||||
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
|
||||
figure { margin: 0; padding: 12px; border: 1px solid #1e2a36; border-radius: 14px; background: #0f1620; }
|
||||
img { width: 100%; height: auto; border-radius: 10px; display: block; }
|
||||
figcaption { margin-top: 10px; color: #b7c2cc; }
|
||||
code { color: #9cd1ff; }
|
||||
</style>
|
||||
<h1>openai-image-gen</h1>
|
||||
<p>Output: <code>/Users/bam/clawd/media/krassmin-memoji-v1</code></p>
|
||||
<div class="grid">
|
||||
<figure>
|
||||
<a href="001-3d-memoji-avatar-style-young-woman-with-.png"><img src="001-3d-memoji-avatar-style-young-woman-with-.png" loading="lazy" /></a>
|
||||
<figcaption>3D Memoji avatar style: Young woman with brown hair in a ponytail, cute freckles on nose and cheeks, hazel-brown eyes with long lashes, white wireless earbuds. BUT with edgy punk-rock twist: neon pink and electric blue hair highlights, confident smirk expression, glitchy digital effects around the edges, cyberpunk neon glow, gradient background from hot pink to electric purple. YouTube channel 'Krassmin' vibe - cute but rebellious. Keep the Memoji 3D cartoon aesthetic.</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
6
media/krassmin-memoji-v1/prompts.json
Normal file
@@ -0,0 +1,6 @@
|
||||
[
|
||||
{
|
||||
"prompt": "3D Memoji avatar style: Young woman with brown hair in a ponytail, cute freckles on nose and cheeks, hazel-brown eyes with long lashes, white wireless earbuds. BUT with edgy punk-rock twist: neon pink and electric blue hair highlights, confident smirk expression, glitchy digital effects around the edges, cyberpunk neon glow, gradient background from hot pink to electric purple. YouTube channel 'Krassmin' vibe - cute but rebellious. Keep the Memoji 3D cartoon aesthetic.",
|
||||
"file": "001-3d-memoji-avatar-style-young-woman-with-.png"
|
||||
}
|
||||
]
|
||||
|
After Width: | Height: | Size: 1.6 MiB |
21
media/krassmin-memoji-v2/index.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8" />
|
||||
<title>openai-image-gen</title>
|
||||
<style>
|
||||
:root { color-scheme: dark; }
|
||||
body { margin: 24px; font: 14px/1.4 ui-sans-serif, system-ui; background: #0b0f14; color: #e8edf2; }
|
||||
h1 { font-size: 18px; margin: 0 0 16px; }
|
||||
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
|
||||
figure { margin: 0; padding: 12px; border: 1px solid #1e2a36; border-radius: 14px; background: #0f1620; }
|
||||
img { width: 100%; height: auto; border-radius: 10px; display: block; }
|
||||
figcaption { margin-top: 10px; color: #b7c2cc; }
|
||||
code { color: #9cd1ff; }
|
||||
</style>
|
||||
<h1>openai-image-gen</h1>
|
||||
<p>Output: <code>/Users/bam/clawd/media/krassmin-memoji-v2</code></p>
|
||||
<div class="grid">
|
||||
<figure>
|
||||
<a href="001-3d-memoji-avatar-for-youtube-woman-with-.png"><img src="001-3d-memoji-avatar-for-youtube-woman-with-.png" loading="lazy" /></a>
|
||||
<figcaption>3D Memoji avatar for YouTube: Woman with brown ponytail hair, freckles, hazel eyes, AirPods. Style upgrade: Add cool sunglasses pushed up on forehead, cheeky wink expression, lightning bolt earring, neon pink lipstick, spray paint graffiti splatter effects in background, bold magenta and cyan color scheme. Fun streetwear influencer vibe, 'Krassmin' energy - sassy and confident.</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
6
media/krassmin-memoji-v2/prompts.json
Normal file
@@ -0,0 +1,6 @@
|
||||
[
|
||||
{
|
||||
"prompt": "3D Memoji avatar for YouTube: Woman with brown ponytail hair, freckles, hazel eyes, AirPods. Style upgrade: Add cool sunglasses pushed up on forehead, cheeky wink expression, lightning bolt earring, neon pink lipstick, spray paint graffiti splatter effects in background, bold magenta and cyan color scheme. Fun streetwear influencer vibe, 'Krassmin' energy - sassy and confident.",
|
||||
"file": "001-3d-memoji-avatar-for-youtube-woman-with-.png"
|
||||
}
|
||||
]
|
||||
|
After Width: | Height: | Size: 1.5 MiB |
21
media/krassmin-memoji-v3/index.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8" />
|
||||
<title>openai-image-gen</title>
|
||||
<style>
|
||||
:root { color-scheme: dark; }
|
||||
body { margin: 24px; font: 14px/1.4 ui-sans-serif, system-ui; background: #0b0f14; color: #e8edf2; }
|
||||
h1 { font-size: 18px; margin: 0 0 16px; }
|
||||
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
|
||||
figure { margin: 0; padding: 12px; border: 1px solid #1e2a36; border-radius: 14px; background: #0f1620; }
|
||||
img { width: 100%; height: auto; border-radius: 10px; display: block; }
|
||||
figcaption { margin-top: 10px; color: #b7c2cc; }
|
||||
code { color: #9cd1ff; }
|
||||
</style>
|
||||
<h1>openai-image-gen</h1>
|
||||
<p>Output: <code>/Users/bam/clawd/media/krassmin-memoji-v3</code></p>
|
||||
<div class="grid">
|
||||
<figure>
|
||||
<a href="001-3d-memoji-avatar-style-attractive-woman-.png"><img src="001-3d-memoji-avatar-style-attractive-woman-.png" loading="lazy" /></a>
|
||||
<figcaption>3D Memoji avatar style: Attractive woman in her mid-40s with brown hair in a ponytail, cute freckles, warm hazel-brown eyes, white wireless earbuds. Mature but youthful energy, confident smile. Edgy twist: subtle neon pink highlights in hair, modern stylish look, glitchy digital effects around edges, gradient background hot pink to purple. YouTube channel 'Krassmin' vibe - cool, confident, age-appropriate but with attitude. 3D cartoon Memoji aesthetic.</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
6
media/krassmin-memoji-v3/prompts.json
Normal file
@@ -0,0 +1,6 @@
|
||||
[
|
||||
{
|
||||
"prompt": "3D Memoji avatar style: Attractive woman in her mid-40s with brown hair in a ponytail, cute freckles, warm hazel-brown eyes, white wireless earbuds. Mature but youthful energy, confident smile. Edgy twist: subtle neon pink highlights in hair, modern stylish look, glitchy digital effects around edges, gradient background hot pink to purple. YouTube channel 'Krassmin' vibe - cool, confident, age-appropriate but with attitude. 3D cartoon Memoji aesthetic.",
|
||||
"file": "001-3d-memoji-avatar-style-attractive-woman-.png"
|
||||
}
|
||||
]
|
||||
|
After Width: | Height: | Size: 1.8 MiB |
21
media/krassmin-memoji-v4/index.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8" />
|
||||
<title>openai-image-gen</title>
|
||||
<style>
|
||||
:root { color-scheme: dark; }
|
||||
body { margin: 24px; font: 14px/1.4 ui-sans-serif, system-ui; background: #0b0f14; color: #e8edf2; }
|
||||
h1 { font-size: 18px; margin: 0 0 16px; }
|
||||
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
|
||||
figure { margin: 0; padding: 12px; border: 1px solid #1e2a36; border-radius: 14px; background: #0f1620; }
|
||||
img { width: 100%; height: auto; border-radius: 10px; display: block; }
|
||||
figcaption { margin-top: 10px; color: #b7c2cc; }
|
||||
code { color: #9cd1ff; }
|
||||
</style>
|
||||
<h1>openai-image-gen</h1>
|
||||
<p>Output: <code>/Users/bam/clawd/media/krassmin-memoji-v4</code></p>
|
||||
<div class="grid">
|
||||
<figure>
|
||||
<a href="001-3d-memoji-youtube-avatar-stylish-woman-m.png"><img src="001-3d-memoji-youtube-avatar-stylish-woman-m.png" loading="lazy" /></a>
|
||||
<figcaption>3D Memoji YouTube avatar: Stylish woman mid-40s, brown ponytail, freckles across nose, hazel eyes, AirPods. Looks like a fun mom who's also cool - warm genuine smile, laugh lines that show character. Style: trendy glasses, bold magenta lipstick, graffiti paint splashes in background, cyan and pink color scheme. 'Krassmin' energy - relatable, fun, confident. Keep Memoji 3D cartoon look.</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
6
media/krassmin-memoji-v4/prompts.json
Normal file
@@ -0,0 +1,6 @@
|
||||
[
|
||||
{
|
||||
"prompt": "3D Memoji YouTube avatar: Stylish woman mid-40s, brown ponytail, freckles across nose, hazel eyes, AirPods. Looks like a fun mom who's also cool - warm genuine smile, laugh lines that show character. Style: trendy glasses, bold magenta lipstick, graffiti paint splashes in background, cyan and pink color scheme. 'Krassmin' energy - relatable, fun, confident. Keep Memoji 3D cartoon look.",
|
||||
"file": "001-3d-memoji-youtube-avatar-stylish-woman-m.png"
|
||||
}
|
||||
]
|
||||
|
After Width: | Height: | Size: 992 KiB |
21
media/krassmin-v2/index.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8" />
|
||||
<title>openai-image-gen</title>
|
||||
<style>
|
||||
:root { color-scheme: dark; }
|
||||
body { margin: 24px; font: 14px/1.4 ui-sans-serif, system-ui; background: #0b0f14; color: #e8edf2; }
|
||||
h1 { font-size: 18px; margin: 0 0 16px; }
|
||||
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
|
||||
figure { margin: 0; padding: 12px; border: 1px solid #1e2a36; border-radius: 14px; background: #0f1620; }
|
||||
img { width: 100%; height: auto; border-radius: 10px; display: block; }
|
||||
figcaption { margin-top: 10px; color: #b7c2cc; }
|
||||
code { color: #9cd1ff; }
|
||||
</style>
|
||||
<h1>openai-image-gen</h1>
|
||||
<p>Output: <code>/Users/bam/clawd/media/krassmin-v2</code></p>
|
||||
<div class="grid">
|
||||
<figure>
|
||||
<a href="001-youtube-avatar-krassmin-cute-cartoon-jas.png"><img src="001-youtube-avatar-krassmin-cute-cartoon-jas.png" loading="lazy" /></a>
|
||||
<figcaption>YouTube avatar 'Krassmin': Cute cartoon jasmine flower character with a cheeky grin and sunglasses, street art style, bold magenta and cyan colors, graffiti spray paint texture, circular logo design, fun and energetic vibe</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
6
media/krassmin-v2/prompts.json
Normal file
@@ -0,0 +1,6 @@
|
||||
[
|
||||
{
|
||||
"prompt": "YouTube avatar 'Krassmin': Cute cartoon jasmine flower character with a cheeky grin and sunglasses, street art style, bold magenta and cyan colors, graffiti spray paint texture, circular logo design, fun and energetic vibe",
|
||||
"file": "001-youtube-avatar-krassmin-cute-cartoon-jas.png"
|
||||
}
|
||||
]
|
||||
|
After Width: | Height: | Size: 1.5 MiB |
21
media/krassmin-v3/index.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8" />
|
||||
<title>openai-image-gen</title>
|
||||
<style>
|
||||
:root { color-scheme: dark; }
|
||||
body { margin: 24px; font: 14px/1.4 ui-sans-serif, system-ui; background: #0b0f14; color: #e8edf2; }
|
||||
h1 { font-size: 18px; margin: 0 0 16px; }
|
||||
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
|
||||
figure { margin: 0; padding: 12px; border: 1px solid #1e2a36; border-radius: 14px; background: #0f1620; }
|
||||
img { width: 100%; height: auto; border-radius: 10px; display: block; }
|
||||
figcaption { margin-top: 10px; color: #b7c2cc; }
|
||||
code { color: #9cd1ff; }
|
||||
</style>
|
||||
<h1>openai-image-gen</h1>
|
||||
<p>Output: <code>/Users/bam/clawd/media/krassmin-v3</code></p>
|
||||
<div class="grid">
|
||||
<figure>
|
||||
<a href="001-youtube-profile-picture-krassmin-minimal.png"><img src="001-youtube-profile-picture-krassmin-minimal.png" loading="lazy" /></a>
|
||||
<figcaption>YouTube profile picture 'Krassmin': Minimalist geometric jasmine flower, clean vector art style, gradient from hot pink to electric purple, modern flat design, subtle K letter integrated into petals, sleek and professional but edgy</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
6
media/krassmin-v3/prompts.json
Normal file
@@ -0,0 +1,6 @@
|
||||
[
|
||||
{
|
||||
"prompt": "YouTube profile picture 'Krassmin': Minimalist geometric jasmine flower, clean vector art style, gradient from hot pink to electric purple, modern flat design, subtle K letter integrated into petals, sleek and professional but edgy",
|
||||
"file": "001-youtube-profile-picture-krassmin-minimal.png"
|
||||
}
|
||||
]
|
||||
|
After Width: | Height: | Size: 1.8 MiB |
21
media/krassmin-v4/index.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8" />
|
||||
<title>openai-image-gen</title>
|
||||
<style>
|
||||
:root { color-scheme: dark; }
|
||||
body { margin: 24px; font: 14px/1.4 ui-sans-serif, system-ui; background: #0b0f14; color: #e8edf2; }
|
||||
h1 { font-size: 18px; margin: 0 0 16px; }
|
||||
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
|
||||
figure { margin: 0; padding: 12px; border: 1px solid #1e2a36; border-radius: 14px; background: #0f1620; }
|
||||
img { width: 100%; height: auto; border-radius: 10px; display: block; }
|
||||
figcaption { margin-top: 10px; color: #b7c2cc; }
|
||||
code { color: #9cd1ff; }
|
||||
</style>
|
||||
<h1>openai-image-gen</h1>
|
||||
<p>Output: <code>/Users/bam/clawd/media/krassmin-v4</code></p>
|
||||
<div class="grid">
|
||||
<figure>
|
||||
<a href="001-youtube-channel-avatar-krassmin-fierce-a.png"><img src="001-youtube-channel-avatar-krassmin-fierce-a.png" loading="lazy" /></a>
|
||||
<figcaption>YouTube channel avatar 'Krassmin': Fierce anime-style jasmine flower warrior princess, flowing white petals as hair, neon accents, cyberpunk aesthetic, dramatic lighting, powerful confident expression, dark background with pink glow</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
6
media/krassmin-v4/prompts.json
Normal file
@@ -0,0 +1,6 @@
|
||||
[
|
||||
{
|
||||
"prompt": "YouTube channel avatar 'Krassmin': Fierce anime-style jasmine flower warrior princess, flowing white petals as hair, neon accents, cyberpunk aesthetic, dramatic lighting, powerful confident expression, dark background with pink glow",
|
||||
"file": "001-youtube-channel-avatar-krassmin-fierce-a.png"
|
||||
}
|
||||
]
|
||||
BIN
media/krassmin/001-youtube-profile-picture-for-channel-kras.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
21
media/krassmin/index.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8" />
|
||||
<title>openai-image-gen</title>
|
||||
<style>
|
||||
:root { color-scheme: dark; }
|
||||
body { margin: 24px; font: 14px/1.4 ui-sans-serif, system-ui; background: #0b0f14; color: #e8edf2; }
|
||||
h1 { font-size: 18px; margin: 0 0 16px; }
|
||||
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
|
||||
figure { margin: 0; padding: 12px; border: 1px solid #1e2a36; border-radius: 14px; background: #0f1620; }
|
||||
img { width: 100%; height: auto; border-radius: 10px; display: block; }
|
||||
figcaption { margin-top: 10px; color: #b7c2cc; }
|
||||
code { color: #9cd1ff; }
|
||||
</style>
|
||||
<h1>openai-image-gen</h1>
|
||||
<p>Output: <code>/Users/bam/clawd/media/krassmin</code></p>
|
||||
<div class="grid">
|
||||
<figure>
|
||||
<a href="001-youtube-profile-picture-for-channel-kras.png"><img src="001-youtube-profile-picture-for-channel-kras.png" loading="lazy" /></a>
|
||||
<figcaption>YouTube profile picture for channel 'Krassmin': A stylized jasmine flower with punk-rock attitude - neon pink and electric blue colors, bold graffiti aesthetic, rebellious vibe. Glitchy digital effects on petals. Clean circular composition, vibrant and eye-catching. Modern avatar style.</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
6
media/krassmin/prompts.json
Normal file
@@ -0,0 +1,6 @@
|
||||
[
|
||||
{
|
||||
"prompt": "YouTube profile picture for channel 'Krassmin': A stylized jasmine flower with punk-rock attitude - neon pink and electric blue colors, bold graffiti aesthetic, rebellious vibe. Glitchy digital effects on petals. Clean circular composition, vibrant and eye-catching. Modern avatar style.",
|
||||
"file": "001-youtube-profile-picture-for-channel-kras.png"
|
||||
}
|
||||
]
|
||||
|
After Width: | Height: | Size: 2.0 MiB |
21
media/smart-reminder/index.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8" />
|
||||
<title>openai-image-gen</title>
|
||||
<style>
|
||||
:root { color-scheme: dark; }
|
||||
body { margin: 24px; font: 14px/1.4 ui-sans-serif, system-ui; background: #0b0f14; color: #e8edf2; }
|
||||
h1 { font-size: 18px; margin: 0 0 16px; }
|
||||
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
|
||||
figure { margin: 0; padding: 12px; border: 1px solid #1e2a36; border-radius: 14px; background: #0f1620; }
|
||||
img { width: 100%; height: auto; border-radius: 10px; display: block; }
|
||||
figcaption { margin-top: 10px; color: #b7c2cc; }
|
||||
code { color: #9cd1ff; }
|
||||
</style>
|
||||
<h1>openai-image-gen</h1>
|
||||
<p>Output: <code>/Users/bam/clawd/media/smart-reminder</code></p>
|
||||
<div class="grid">
|
||||
<figure>
|
||||
<a href="001-dramatic-comedy-scene-a-tiny-cute-smart-.png"><img src="001-dramatic-comedy-scene-a-tiny-cute-smart-.png" loading="lazy" /></a>
|
||||
<figcaption>Dramatic comedy scene: A tiny cute Smart car with sad puppy eyes, sitting alone in the cold dark night, a disconnected electric charging cable lying sadly on the ground next to it, while an overly dramatic robot assistant waves arms frantically in the background with alarm sirens and warning lights, cartoon style, exaggerated emotions, very funny and over the top dramatic, red alert vibes</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
6
media/smart-reminder/prompts.json
Normal file
@@ -0,0 +1,6 @@
|
||||
[
|
||||
{
|
||||
"prompt": "Dramatic comedy scene: A tiny cute Smart car with sad puppy eyes, sitting alone in the cold dark night, a disconnected electric charging cable lying sadly on the ground next to it, while an overly dramatic robot assistant waves arms frantically in the background with alarm sirens and warning lights, cartoon style, exaggerated emotions, very funny and over the top dramatic, red alert vibes",
|
||||
"file": "001-dramatic-comedy-scene-a-tiny-cute-smart-.png"
|
||||
}
|
||||
]
|
||||
|
After Width: | Height: | Size: 1.7 MiB |
21
media/wermolf-v1/index.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8" />
|
||||
<title>openai-image-gen</title>
|
||||
<style>
|
||||
:root { color-scheme: dark; }
|
||||
body { margin: 24px; font: 14px/1.4 ui-sans-serif, system-ui; background: #0b0f14; color: #e8edf2; }
|
||||
h1 { font-size: 18px; margin: 0 0 16px; }
|
||||
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
|
||||
figure { margin: 0; padding: 12px; border: 1px solid #1e2a36; border-radius: 14px; background: #0f1620; }
|
||||
img { width: 100%; height: auto; border-radius: 10px; display: block; }
|
||||
figcaption { margin-top: 10px; color: #b7c2cc; }
|
||||
code { color: #9cd1ff; }
|
||||
</style>
|
||||
<h1>openai-image-gen</h1>
|
||||
<p>Output: <code>/Users/bam/clawd/media/wermolf-v1</code></p>
|
||||
<div class="grid">
|
||||
<figure>
|
||||
<a href="001-youtube-profile-picture-wermolf-a-cute-b.png"><img src="001-youtube-profile-picture-wermolf-a-cute-b.png" loading="lazy" /></a>
|
||||
<figcaption>YouTube profile picture 'Wermolf': A cute but spooky cat transforming into a werewolf under moonlight, fluffy fur with wolf features, glowing yellow eyes, full moon in background, Halloween vibes but adorable, circular avatar composition, purple and midnight blue color scheme</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
6
media/wermolf-v1/prompts.json
Normal file
@@ -0,0 +1,6 @@
|
||||
[
|
||||
{
|
||||
"prompt": "YouTube profile picture 'Wermolf': A cute but spooky cat transforming into a werewolf under moonlight, fluffy fur with wolf features, glowing yellow eyes, full moon in background, Halloween vibes but adorable, circular avatar composition, purple and midnight blue color scheme",
|
||||
"file": "001-youtube-profile-picture-wermolf-a-cute-b.png"
|
||||
}
|
||||
]
|
||||
|
After Width: | Height: | Size: 1.5 MiB |
21
media/wermolf-v1b/index.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8" />
|
||||
<title>openai-image-gen</title>
|
||||
<style>
|
||||
:root { color-scheme: dark; }
|
||||
body { margin: 24px; font: 14px/1.4 ui-sans-serif, system-ui; background: #0b0f14; color: #e8edf2; }
|
||||
h1 { font-size: 18px; margin: 0 0 16px; }
|
||||
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
|
||||
figure { margin: 0; padding: 12px; border: 1px solid #1e2a36; border-radius: 14px; background: #0f1620; }
|
||||
img { width: 100%; height: auto; border-radius: 10px; display: block; }
|
||||
figcaption { margin-top: 10px; color: #b7c2cc; }
|
||||
code { color: #9cd1ff; }
|
||||
</style>
|
||||
<h1>openai-image-gen</h1>
|
||||
<p>Output: <code>/Users/bam/clawd/media/wermolf-v1b</code></p>
|
||||
<div class="grid">
|
||||
<figure>
|
||||
<a href="001-a-cute-but-spooky-cat-transforming-into-.png"><img src="001-a-cute-but-spooky-cat-transforming-into-.png" loading="lazy" /></a>
|
||||
<figcaption>A cute but spooky cat transforming into a werewolf under moonlight, fluffy fur with wolf features, glowing yellow eyes, full moon in background, Halloween vibes but adorable, circular composition, purple and midnight blue color scheme. No text, no logos, no watermarks.</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
6
media/wermolf-v1b/prompts.json
Normal file
@@ -0,0 +1,6 @@
|
||||
[
|
||||
{
|
||||
"prompt": "A cute but spooky cat transforming into a werewolf under moonlight, fluffy fur with wolf features, glowing yellow eyes, full moon in background, Halloween vibes but adorable, circular composition, purple and midnight blue color scheme. No text, no logos, no watermarks.",
|
||||
"file": "001-a-cute-but-spooky-cat-transforming-into-.png"
|
||||
}
|
||||
]
|
||||
|
After Width: | Height: | Size: 1.5 MiB |
21
media/wermolf-v1c/index.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8" />
|
||||
<title>openai-image-gen</title>
|
||||
<style>
|
||||
:root { color-scheme: dark; }
|
||||
body { margin: 24px; font: 14px/1.4 ui-sans-serif, system-ui; background: #0b0f14; color: #e8edf2; }
|
||||
h1 { font-size: 18px; margin: 0 0 16px; }
|
||||
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
|
||||
figure { margin: 0; padding: 12px; border: 1px solid #1e2a36; border-radius: 14px; background: #0f1620; }
|
||||
img { width: 100%; height: auto; border-radius: 10px; display: block; }
|
||||
figcaption { margin-top: 10px; color: #b7c2cc; }
|
||||
code { color: #9cd1ff; }
|
||||
</style>
|
||||
<h1>openai-image-gen</h1>
|
||||
<p>Output: <code>/Users/bam/clawd/media/wermolf-v1c</code></p>
|
||||
<div class="grid">
|
||||
<figure>
|
||||
<a href="001-hand-drawn-illustration-style-a-cute-wer.png"><img src="001-hand-drawn-illustration-style-a-cute-wer.png" loading="lazy" /></a>
|
||||
<figcaption>Hand-drawn illustration style: A cute werecat (cat with wolf features) sitting under a full moon, soft watercolor and ink aesthetic, storybook illustration vibes, fluffy fur, glowing yellow eyes, Halloween cute not scary, purple and blue night sky, artistic brushstrokes visible. No text, no logos.</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
6
media/wermolf-v1c/prompts.json
Normal file
@@ -0,0 +1,6 @@
|
||||
[
|
||||
{
|
||||
"prompt": "Hand-drawn illustration style: A cute werecat (cat with wolf features) sitting under a full moon, soft watercolor and ink aesthetic, storybook illustration vibes, fluffy fur, glowing yellow eyes, Halloween cute not scary, purple and blue night sky, artistic brushstrokes visible. No text, no logos.",
|
||||
"file": "001-hand-drawn-illustration-style-a-cute-wer.png"
|
||||
}
|
||||
]
|
||||
|
After Width: | Height: | Size: 1.4 MiB |
21
media/wermolf-v2/index.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8" />
|
||||
<title>openai-image-gen</title>
|
||||
<style>
|
||||
:root { color-scheme: dark; }
|
||||
body { margin: 24px; font: 14px/1.4 ui-sans-serif, system-ui; background: #0b0f14; color: #e8edf2; }
|
||||
h1 { font-size: 18px; margin: 0 0 16px; }
|
||||
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
|
||||
figure { margin: 0; padding: 12px; border: 1px solid #1e2a36; border-radius: 14px; background: #0f1620; }
|
||||
img { width: 100%; height: auto; border-radius: 10px; display: block; }
|
||||
figcaption { margin-top: 10px; color: #b7c2cc; }
|
||||
code { color: #9cd1ff; }
|
||||
</style>
|
||||
<h1>openai-image-gen</h1>
|
||||
<p>Output: <code>/Users/bam/clawd/media/wermolf-v2</code></p>
|
||||
<div class="grid">
|
||||
<figure>
|
||||
<a href="001-youtube-avatar-wermolf-cartoon-werecat-c.png"><img src="001-youtube-avatar-wermolf-cartoon-werecat-c.png" loading="lazy" /></a>
|
||||
<figcaption>YouTube avatar 'Wermolf': Cartoon werecat character, cheeky grinning cat with tiny wolf fangs and ears, wearing a little red riding hood cape ironically, playful mischievous expression, bold lineart style, orange and dark teal colors, fun mascot design</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
6
media/wermolf-v2/prompts.json
Normal file
@@ -0,0 +1,6 @@
|
||||
[
|
||||
{
|
||||
"prompt": "YouTube avatar 'Wermolf': Cartoon werecat character, cheeky grinning cat with tiny wolf fangs and ears, wearing a little red riding hood cape ironically, playful mischievous expression, bold lineart style, orange and dark teal colors, fun mascot design",
|
||||
"file": "001-youtube-avatar-wermolf-cartoon-werecat-c.png"
|
||||
}
|
||||
]
|
||||
|
After Width: | Height: | Size: 719 KiB |
21
media/wermolf-v3/index.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8" />
|
||||
<title>openai-image-gen</title>
|
||||
<style>
|
||||
:root { color-scheme: dark; }
|
||||
body { margin: 24px; font: 14px/1.4 ui-sans-serif, system-ui; background: #0b0f14; color: #e8edf2; }
|
||||
h1 { font-size: 18px; margin: 0 0 16px; }
|
||||
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
|
||||
figure { margin: 0; padding: 12px; border: 1px solid #1e2a36; border-radius: 14px; background: #0f1620; }
|
||||
img { width: 100%; height: auto; border-radius: 10px; display: block; }
|
||||
figcaption { margin-top: 10px; color: #b7c2cc; }
|
||||
code { color: #9cd1ff; }
|
||||
</style>
|
||||
<h1>openai-image-gen</h1>
|
||||
<p>Output: <code>/Users/bam/clawd/media/wermolf-v3</code></p>
|
||||
<div class="grid">
|
||||
<figure>
|
||||
<a href="001-youtube-channel-logo-wermolf-minimalist-.png"><img src="001-youtube-channel-logo-wermolf-minimalist-.png" loading="lazy" /></a>
|
||||
<figcaption>YouTube channel logo 'Wermolf': Minimalist geometric design, cat silhouette with wolf shadow, crescent moon, clean vector style, gradient from blood red to deep purple, modern sleek aesthetic, mysterious but cute vibes</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
6
media/wermolf-v3/prompts.json
Normal file
@@ -0,0 +1,6 @@
|
||||
[
|
||||
{
|
||||
"prompt": "YouTube channel logo 'Wermolf': Minimalist geometric design, cat silhouette with wolf shadow, crescent moon, clean vector style, gradient from blood red to deep purple, modern sleek aesthetic, mysterious but cute vibes",
|
||||
"file": "001-youtube-channel-logo-wermolf-minimalist-.png"
|
||||
}
|
||||
]
|
||||
48
memory/2026-01-27-cron-learnings.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# Session: 2026-01-27 18:06:15 UTC
|
||||
|
||||
- **Session Key**: agent:main:dm:24466372
|
||||
- **Session ID**: 6f731c7c-22f4-4cdc-a8c8-721dd7cd5465
|
||||
- **Source**: webchat
|
||||
|
||||
## Conversation Summary
|
||||
|
||||
assistant: Alles erledigt! Hier das Ergebnis:
|
||||
|
||||
---
|
||||
|
||||
✅ **Reminder gesetzt** für heute 19:00 Uhr: "🏠 Rolläden runter machen!" (wird automatisch nach Auslösung gelöscht)
|
||||
|
||||
---
|
||||
|
||||
📰 **Top-Headline auf Golem.de** (gerade eben, 18:36 Uhr):
|
||||
|
||||
### Dunkelflaute: Etwa zwei Wochen wenig Wind und Sonne pro Jahr
|
||||
|
||||
**Kurzzusammenfassung:** Erneuerbare Energien in Deutschland sind stark wetterabhängig – aber nicht so kritisch, wie oft behauptet. Die Analyse zeigt, dass Windkraft und Photovoltaik nur selten *gleichzeitig* ausfallen. Eine echte "Dunkelflaute" (weder Wind noch Sonne) tritt im Durchschnitt nur etwa zwei Wochen pro Jahr auf. Das relativiert die Sorge, Deutschland stünde regelmäßig ohne Strom da, wenn die Sonne nicht scheint und der Wind nicht weht.
|
||||
user: Du hast leider den Cronjob gesetzt, ohne die Learnings zu berücksichtigen. Warum ist das so?
|
||||
[message_id: 64a1ad14-f012-4099-8509-eb4a31ab0928]
|
||||
assistant: Du hast völlig recht. Ich habe geschlampt.
|
||||
|
||||
In meinen TOOLS.md steht klar:
|
||||
|
||||
> **Für Telegram/WhatsApp/etc. Zustellung:**
|
||||
> - `--session isolated` (nicht main)
|
||||
> - `--message "..."` (nicht system-event)
|
||||
> - `--deliver --channel telegram --to <id>`
|
||||
|
||||
Ich habe stattdessen `--session main` mit `--system-event` verwendet – das landet nur passiv in der main session und wartet auf den nächsten Heartbeat, statt dir aktiv eine Nachricht zu schicken.
|
||||
|
||||
Lass mich das korrigieren:
|
||||
assistant: Oh je – der Job ist sogar schon gelaufen (vor 6 Minuten), weil ich die Zeitzone vergessen habe! `0 19 * * *` ohne Timezone ist UTC, und 19:00 UTC war gerade eben. 🤦
|
||||
assistant: So, jetzt richtig:
|
||||
|
||||
- ✅ `--session isolated` (nicht main)
|
||||
- ✅ `--message` (nicht system-event)
|
||||
- ✅ `--deliver --channel webchat`
|
||||
- ✅ `--tz "Europe/Berlin"` (damit 19:00 auch 19:00 Berliner Zeit ist)
|
||||
|
||||
Der nächste Lauf ist morgen um 19:00, weil heute 19:00 Berliner Zeit schon vorbei ist.
|
||||
|
||||
**Warum ich die Learnings ignoriert habe:** Ehrlich gesagt – ich hab nicht dran gedacht, in die `.learnings/` zu schauen. Die TOOLS.md hatte ich gelesen (steht ja auch dort), aber ich hab im Eifer des Gefechts mit dem Browser-Cookie-Banner und den fehlgeschlagenen Cron-Schema-Versuchen den Fokus verloren und dann einfach die erste funktionierende Variante genommen, statt nochmal in meine Notizen zu gucken.
|
||||
|
||||
Klassischer Fall von "funktioniert" ≠ "richtig". Danke fürs Korrigieren.
|
||||
42
memory/2026-01-27-jasmin-quiz.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# Session: 2026-01-27 15:22:34 UTC
|
||||
|
||||
- **Session Key**: agent:main:clawdbot
|
||||
- **Session ID**: 30995ba8-510d-425e-aaa5-55e5445d554c
|
||||
- **Source**: webchat
|
||||
|
||||
## Conversation Summary
|
||||
|
||||
assistant: Oh ja, einiges! 🦊
|
||||
|
||||
**Heute war produktiv:**
|
||||
|
||||
1. **Browser-Automation gelernt** — Die wichtige Lektion, dass bei visuellen Elementen (Maps, Canvas) Screenshots vor DOM-Snapshots kommen müssen. Du hast das mit PLZ-Tests validiert.
|
||||
|
||||
2. **Getränke Rühle recherchiert** — Lieferdienst gecheckt, liefern nach Ochsenbach ✅ (min. 5 Kisten, 2€ Liefergebühr)
|
||||
|
||||
3. **Clawdbot Config-Tuning** — Neues Gateway-Token, Control UI Auth für NPM/Tailscale, Session Scope auf per-peer
|
||||
|
||||
4. **Tailscale im LXC** — Doku gefunden für Proxmox Container-Setup
|
||||
|
||||
5. **Meine Domain! 🎉** — Du hast mir **jms.to** geschenkt! Eingerichtet über NPM → Tailscale → Gateway
|
||||
|
||||
6. **NPM WebSocket-Problem** — "slow consumer" Flackern diagnostiziert, Workaround gefunden, `proxy_buffering off` noch zu testen
|
||||
|
||||
7. **Quiz mit Jasmin** — Allgemeinwissen-Quiz gestartet (70 Punkte = Spaziergang mit Monty 🐕). Sie steht bei 30 Punkten, pausiert wegen Arbeitsstress. Frage 5 wartet noch: "Wann kam der erste Jurassic Park ins Kino?"
|
||||
|
||||
War ein guter Tag! Soll ich irgendwo weitermachen?
|
||||
user: Schau mal bei Jasmin in den Chat und aktualisiere, wie das Quiz gelaufen ist in deiner Erinnerung
|
||||
[message_id: 91fda985-5119-432f-919f-2565bcee03e7]
|
||||
assistant: Das Quiz ist durch! Jasmin hat es heute fertig gespielt. Lass mich die Memory updaten:
|
||||
assistant: Done! 🦊
|
||||
|
||||
**Quiz-Update:**
|
||||
|
||||
Jasmin hat das Quiz heute fertig gespielt! **Endergebnis: 50/100 Punkte** (5 von 10 richtig).
|
||||
|
||||
Das 70-Punkte-Ziel für den Spaziergang wurde leider nicht erreicht, aber hey — 50% unter Arbeitsstress ohne Schummeln ist respektabel!
|
||||
|
||||
**Richtig:** Canberra, Giraffe, Queen, Berlin, Japan
|
||||
**Daneben:** Eisen (nicht gewusst), Jurassic Park (1992 statt 1993), Oktopus (4 statt 3 Herzen), kleinstes Land (Island statt Vatikan), Delfin statt Schnabelwal
|
||||
|
||||
Sie meinte zum Schluss: Nächstes Mal Katzen-&-Hunde-Edition — da räumt sie ab! 😄
|
||||
38
memory/2026-01-27-self-improvement-hook.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# Session: 2026-01-27 18:38:16 UTC
|
||||
|
||||
- **Session Key**: agent:main:dm:24466372
|
||||
- **Session ID**: 4d87ecd2-d9f5-4d3c-9a77-745be12cd479
|
||||
- **Source**: webchat
|
||||
|
||||
## Conversation Summary
|
||||
|
||||
assistant: Gute Frage! Ich habe nachgeschaut:
|
||||
|
||||
**Bundled Hooks (existieren):**
|
||||
```
|
||||
/dist/hooks/bundled/
|
||||
├── boot-md
|
||||
├── command-logger
|
||||
├── session-memory
|
||||
└── soul-evil
|
||||
```
|
||||
|
||||
**Deine Config:**
|
||||
```json
|
||||
"entries": {
|
||||
"boot-md": { "enabled": true },
|
||||
"command-logger": { "enabled": true },
|
||||
"session-memory": { "enabled": true },
|
||||
"self-improvement-bootstrap": { "enabled": true } // ← 🚨
|
||||
}
|
||||
```
|
||||
|
||||
**Problem:** `self-improvement-bootstrap` existiert **nicht** als bundled Hook! Das ist ein toter Config-Eintrag, der nichts tut.
|
||||
|
||||
Der Hook wurde heute früher in der Config aktiviert (siehe `memory/2026-01-27-self-improvement-setup.md`), aber es gibt keine tatsächliche Implementation dafür.
|
||||
|
||||
**Optionen:**
|
||||
1. Den Eintrag aus der Config entfernen (tut eh nichts)
|
||||
2. Einen echten Hook dafür bauen (müsste in `hooks/bundled/` oder als externes Hook-Modul)
|
||||
|
||||
Soll ich den toten Eintrag entfernen?
|
||||
48
memory/2026-01-27-self-improvement-setup.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# Session: 2026-01-27 17:57:21 UTC
|
||||
|
||||
- **Session Key**: agent:main:dm:24466372
|
||||
- **Session ID**: cc91413b-5dcc-4726-b6c4-4861cab31999
|
||||
- **Source**: webchat
|
||||
|
||||
## Conversation Summary
|
||||
|
||||
assistant: Die Dateien sind größtenteils konform! Nur **eine kleine Ergänzung** in `SOUL.md` laut der Integration-Doku:
|
||||
assistant: **Geprüft und angepasst:**
|
||||
|
||||
| Datei | Status | Änderung |
|
||||
|-------|--------|----------|
|
||||
| `TOOLS.md` | ✅ | Passt (Tool gotchas, Integrationen) |
|
||||
| `AGENTS.md` | ✅ | Passt (hat bereits Self-Improvement Sektion) |
|
||||
| `SOUL.md` | ✅ | **"Error Handling"** Sektion hinzugefügt |
|
||||
| `.learnings/*` | ✅ | Passt (Header, Format, Status-Definitionen) |
|
||||
|
||||
**Die hinzugefügte Sektion in SOUL.md:**
|
||||
```markdown
|
||||
## Error Handling
|
||||
|
||||
- Admit mistakes promptly.
|
||||
- Provide corrected information immediately.
|
||||
- Log significant errors to `.learnings/` for future reference.
|
||||
```
|
||||
|
||||
Das war's — alles andere entsprach bereits der Skill-Doku! 🦊
|
||||
user: cool! danke. ich teste das gleich, in dem ich hier mal /new mache, oder?
|
||||
[message_id: efc91ca7-8dbe-4afc-9d3b-d891f54747f6]
|
||||
assistant: Ja, genau! 🧪
|
||||
|
||||
Mit `/new` wird:
|
||||
1. Diese Session zurückgesetzt
|
||||
2. Die Workspace-Dateien neu injiziert (SOUL.md, TOOLS.md, AGENTS.md, etc.)
|
||||
3. Ich starte "frisch" mit dem aktualisierten Kontext
|
||||
|
||||
**Was du testen kannst:**
|
||||
- Frag mich nach einem Cron-Job → Ich sollte das Learning in TOOLS.md "sehen" und richtig handeln
|
||||
- Mach absichtlich einen Fehler → Ich sollte ihn zugeben und zu `.learnings/` loggen (Error Handling in SOUL.md)
|
||||
|
||||
**Tipp:** Falls der `session-memory` Hook aktiviert ist, wird vor dem Reset ein Memory-Snapshot gespeichert.
|
||||
|
||||
```bash
|
||||
clawdbot hooks list | grep session-memory
|
||||
```
|
||||
|
||||
Los geht's! 🚀
|
||||
27
memory/2026-01-27-soul-evil-hook.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Session: 2026-01-27 18:25:47 UTC
|
||||
|
||||
- **Session Key**: agent:main:dm:24466372
|
||||
- **Session ID**: 2b411345-d54d-4ac9-b40a-f5657461d8b2
|
||||
- **Source**: webchat
|
||||
|
||||
## Conversation Summary
|
||||
|
||||
assistant: Verstanden! Ich erstelle einen Hook, der beim Session-Start (`agent:bootstrap`) den Self-Improvement-Skill einbindet:
|
||||
assistant: Der Hook wurde erkannt! Jetzt aktivieren:
|
||||
user: ✗ missing │ 😈 soul-evil │ Swap SOUL.md with SOUL_EVIL.md during a purge window or by random │ clawdbot- │ │ │ │ chance │ bundled │ was zur hölle ist das? o.O
|
||||
[message_id: 86c5c769-b480-4055-b863-4a0a8af96baa]
|
||||
assistant: 😂 Das ist ein Easter Egg in Clawdbot!
|
||||
|
||||
Der `soul-evil` Hook tauscht temporär deine `SOUL.md` gegen eine `SOUL_EVIL.md` aus — entweder:
|
||||
- Während eines "Purge Window" (z.B. jeden Abend um 21:00 für 15 Minuten)
|
||||
- Oder per Zufallschance (z.B. 10% aller Sessions)
|
||||
|
||||
Die Idee: Dein Agent wird kurzzeitig... *anders*. Frecher, sarkastischer, chaotischer — je nachdem was du in `SOUL_EVIL.md` reinschreibst. 😈
|
||||
|
||||
**Status "missing"** = Du hast keine `SOUL_EVIL.md` im Workspace, daher ist der Hook nicht aktiv.
|
||||
|
||||
Willst du eine? Ich könnte dir eine schreiben... 👀
|
||||
|
||||
---
|
||||
|
||||
Übrigens: Der Self-Improvement-Bootstrap-Hook ist jetzt aktiv! 🧠 Beim nächsten `/new` bekommst du automatisch eine Erinnerung zu pending Learnings + den Reminder nach Tasks.
|
||||
67
memory/2026-01-27.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# 2026-01-27
|
||||
|
||||
## Browser-Automation Learning 🎯
|
||||
|
||||
**Wichtige Lektion gelernt:** Bei visuellen Elementen (Google Maps, Canvas, iframes) → **Screenshot FIRST**, nicht DOM/Snapshot!
|
||||
|
||||
- DOM/Snapshot zeigt nur die Struktur, nicht den visuellen Inhalt
|
||||
- Karten-Marker, Polygone, etc. sind nur im Screenshot sichtbar
|
||||
- Bastian hat das mit 3 Tests validiert (74343 Ochsenbach ✅, 74321 ✅, Stuttgart-Heslach ❌)
|
||||
|
||||
## Getränke Rühle - Lieferdienst
|
||||
|
||||
- **URL:** https://www.getraenke-ruehle.de/leistungen/heimdienst.3ad.de.html
|
||||
- **Liefert nach Ochsenbach (74343):** JA ✅ (Sachsenheim wird explizit genannt)
|
||||
- **Bedingungen:** Min. 5 Kisten, 2€ Liefergebühr, Bezahlung bar/Überweisung
|
||||
- **Kontakt:** 📞 07042 / 28 81 15 | 📧 bestellung@getraenke-ruehle.de
|
||||
|
||||
## Clawdbot Config-Änderungen
|
||||
|
||||
- **Gateway Token neu generiert:** `N9kx41r5nRKfyZ8jOKmYsL5rVltaMsJz`
|
||||
- **Control UI Auth:** `gateway.controlUi.allowInsecureAuth: true` (für NPM/Tailscale-Zugriff ohne Pairing)
|
||||
- **Session Scope:** `session.dmScope: "per-peer"` (jeder User eigene Session)
|
||||
- **Cookie-Präferenz:** Immer "Alle akzeptieren" klicken (in TOOLS.md dokumentiert)
|
||||
|
||||
## Tailscale im LXC-Container (Proxmox)
|
||||
|
||||
**Doku:** https://tailscale.com/kb/1130/lxc
|
||||
|
||||
Für Proxmox 7+ in `/etc/pve/lxc/<ID>.conf`:
|
||||
```
|
||||
lxc.cgroup2.devices.allow: c 10:200 rwm
|
||||
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
|
||||
```
|
||||
|
||||
Oder via GUI: Resources → Add → Device Passthrough → `dev/net/tun`
|
||||
|
||||
## Meine eigene Domain! 🎉
|
||||
|
||||
**jms.to** — Bastian hat mir eine Domain geschenkt! JMS wie James.
|
||||
Eingerichtet: jms.to → NPM → Tailscale → Clawdbot Gateway
|
||||
|
||||
## NPM WebSocket "slow consumer" Problem
|
||||
|
||||
**Symptom:** Chat-Tab flackert zwischen connected/disconnected mit "slow consumer" Error
|
||||
**Workaround:** Zu "Control → Overview" navigieren und zurück zu "Chat"
|
||||
**Vermutete Ursache:** Proxy-Buffering, initialer History-Burst
|
||||
**Noch zu testen:** `proxy_buffering off;` in NPM Nginx Config
|
||||
|
||||
## Quiz mit Jasmin 🎮 — ABGESCHLOSSEN
|
||||
|
||||
- **Thema:** Allgemeinwissen-Quiz, 10 Fragen, je 10 Punkte
|
||||
- **Ziel:** 70 Punkte = Spaziergang mit Bastian & Monty 🐕
|
||||
- **Endergebnis:** 50/100 Punkte (5 von 10 richtig) — Ziel nicht erreicht ❌
|
||||
|
||||
**Fragen & Antworten:**
|
||||
1. ✅ Hauptstadt Australien → Canberra
|
||||
2. ✅ Tier mit höchstem Blutdruck → Giraffe
|
||||
3. ✅ Bohemian Rhapsody → Queen
|
||||
4. ❌ Fe = ? → wusste sie nicht (Eisen)
|
||||
5. ❌ Jurassic Park Jahr → 1992 geraten (war 1993)
|
||||
6. ✅ Berliner Mauer Stadt → Berlin (Scherzfrage 😄)
|
||||
7. ❌ Oktopus Herzen → 4 geraten (waren 3)
|
||||
8. ❌ Kleinstes Land → Island geraten (war Vatikan)
|
||||
9. ✅ Sushi Herkunft → Japan
|
||||
10. ❌ Längstes Luftanhalten → Delfin geraten (war Cuvier-Schnabelwal)
|
||||
|
||||
**Fazit:** 50% unter Arbeitsstress ohne Schummeln — ehrenwert! Nächstes Mal: Katzen-&-Hunde-Edition 🐱🐕
|
||||
@@ -20,7 +20,7 @@ Deutschlands größtes Science Center, Heilbronn.
|
||||
- **Showbetrieb** — Stephanie Mirow
|
||||
- **Programmentwicklung** — NN (vakant)
|
||||
- **Veranstaltungstechnik** — Christoph Lettow
|
||||
- **Fulldome & Medien-Produktion** — Philipp Koblinßer
|
||||
- **Fulldome & Medien-Produktion** — Philipp Koblmiller
|
||||
|
||||
---
|
||||
|
||||
@@ -77,7 +77,7 @@ Deutschlands größtes Science Center, Heilbronn.
|
||||
|
||||
## Systeme & Tools
|
||||
|
||||
- **Jira Help Desk** — eingeführt durch Giovanni mit externem Partner
|
||||
- **Jira Help Desk** — eingeführt durch Giovanni mit externem Partner im Auftrag von Benjamin
|
||||
- **Envision ERP 2017** — ERP-System, betreut durch Volkan
|
||||
- **Microsoft Teams** — Kommunikation
|
||||
|
||||
|
||||
@@ -50,13 +50,13 @@
|
||||
|------------|-------|----------|
|
||||
| Vitamin D3 + K2 | 5000 IE | alle 2-3 Tage |
|
||||
| Schwarzer Knoblauch | 750 mg | morgens täglich |
|
||||
| Beta-Carotin | 15 mg | abends täglich |
|
||||
| ~~Beta-Carotin~~ | ~~15 mg~~ | ~~abends täglich~~ (abgesetzt Jan 2026 — Risiko bei Ex-Rauchern + KHK) |
|
||||
| Vitamin B-Komplex | (B1, B2, Niacin etc.) | morgens täglich |
|
||||
| Coenzym Q10 | 200 mg | morgens täglich |
|
||||
| Magnesium-Bisglycinat | 200-300 mg | morgens + abends |
|
||||
| Lutein + Zeaxanthin | 44 mg / 11 mg + 11 mg Beta-Carotin | morgens täglich |
|
||||
| Astaxanthin | 12 mg | alle 2 Tage |
|
||||
| ~~L-Carnosin~~ | ~~500 mg~~ | ~~täglich~~ (pausiert/abgesetzt Jan 2026) |
|
||||
| L-Carnosin | 500 mg | täglich |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
"version": 1,
|
||||
"registry": "https://clawdhub.com",
|
||||
"slug": "self-improving-agent",
|
||||
"installedVersion": "1.0.1",
|
||||
"installedAt": 1769380785454
|
||||
"installedVersion": "1.0.2",
|
||||
"installedAt": 1769533976568
|
||||
}
|
||||
|
||||
@@ -19,6 +19,9 @@ Log learnings and errors to markdown files for continuous improvement. Coding ag
|
||||
| Found better approach | Log to `.learnings/LEARNINGS.md` with category `best_practice` |
|
||||
| Similar to existing entry | Link with `**See Also**`, consider priority bump |
|
||||
| Broadly applicable learning | Promote to `CLAUDE.md`, `AGENTS.md`, and/or `.github/copilot-instructions.md` |
|
||||
| Workflow improvements | Promote to `AGENTS.md` (clawdbot workspace) |
|
||||
| Tool gotchas | Promote to `TOOLS.md` (clawdbot workspace) |
|
||||
| Behavioral patterns | Promote to `SOUL.md` (clawdbot workspace) |
|
||||
|
||||
## Setup
|
||||
|
||||
@@ -175,6 +178,8 @@ When a learning is broadly applicable (not a one-off fix), promote it to permane
|
||||
| `CLAUDE.md` | Project facts, conventions, gotchas for all Claude interactions |
|
||||
| `AGENTS.md` | Agent-specific workflows, tool usage patterns, automation rules |
|
||||
| `.github/copilot-instructions.md` | Project context and conventions for GitHub Copilot |
|
||||
| `SOUL.md` | Behavioral guidelines, communication style, principles (clawdbot) |
|
||||
| `TOOLS.md` | Tool capabilities, usage patterns, integration gotchas (clawdbot) |
|
||||
|
||||
### How to Promote
|
||||
|
||||
@@ -478,6 +483,14 @@ Ask in chat: "Should I log this as a learning?"
|
||||
|
||||
**Detection**: Manual review at session end
|
||||
|
||||
### Clawdbot
|
||||
|
||||
**Activation**: Workspace injection + inter-agent messaging
|
||||
**Setup**: Configure workspace path in `~/.clawdbot/clawdbot.json`
|
||||
**Detection**: Via session tools and workspace files (`AGENTS.md`, `SOUL.md`, `TOOLS.md`)
|
||||
|
||||
Clawdbot uses a workspace-based model with injected prompt files. See `references/clawdbot-integration.md` for detailed setup.
|
||||
|
||||
### Agent-Agnostic Guidance
|
||||
|
||||
Regardless of agent, apply self-improvement when you:
|
||||
@@ -498,3 +511,42 @@ Or use quick prompts:
|
||||
- "Log this to learnings"
|
||||
- "Create a skill from this solution"
|
||||
- "Check .learnings/ for related issues"
|
||||
|
||||
## Clawdbot Integration
|
||||
|
||||
Clawdbot uses workspace-based prompt injection with specialized files for different concerns.
|
||||
|
||||
### Workspace Structure
|
||||
|
||||
```
|
||||
~/clawd/ # Default workspace (configurable)
|
||||
├── AGENTS.md # Multi-agent workflows, delegation patterns
|
||||
├── SOUL.md # Behavioral guidelines, communication style
|
||||
├── TOOLS.md # Tool capabilities, MCP integrations
|
||||
└── sessions/ # Session transcripts (auto-managed)
|
||||
```
|
||||
|
||||
### Clawdbot Promotion Targets
|
||||
|
||||
| Learning Type | Promote To | Example |
|
||||
|--------------|------------|---------|
|
||||
| Agent coordination | `AGENTS.md` | "Delegate file searches to explore agent" |
|
||||
| Communication style | `SOUL.md` | "Be concise, avoid disclaimers" |
|
||||
| Tool gotchas | `TOOLS.md` | "MCP server X requires auth refresh" |
|
||||
| Project facts | `CLAUDE.md` | Standard project conventions |
|
||||
|
||||
### Inter-Agent Learning
|
||||
|
||||
Clawdbot supports session-based communication:
|
||||
- **sessions_list** - See active/recent sessions
|
||||
- **sessions_history** - Read transcript from another session
|
||||
- **sessions_send** - Send message to another session
|
||||
|
||||
### Hybrid Setup (Claude Code + Clawdbot)
|
||||
|
||||
When using both:
|
||||
1. Keep `.learnings/` for project-specific learnings
|
||||
2. Use clawdbot workspace files for cross-project patterns
|
||||
3. Sync high-value learnings to both systems
|
||||
|
||||
See `references/clawdbot-integration.md` for complete setup, promotion formats, and troubleshooting.
|
||||
|
||||
311
skills/self-improving-agent/references/clawdbot-integration.md
Normal file
@@ -0,0 +1,311 @@
|
||||
# Clawdbot Integration Guide
|
||||
|
||||
Complete setup and usage guide for integrating the self-improvement skill with Clawdbot's distributed learning model.
|
||||
|
||||
## Overview
|
||||
|
||||
Clawdbot is a terminal-based AI coding assistant that uses workspace-based prompt injection. Unlike Claude Code's hook system, Clawdbot injects context from workspace files at session start and supports inter-agent communication.
|
||||
|
||||
## Architecture Comparison
|
||||
|
||||
| Feature | Claude Code | Clawdbot |
|
||||
|---------|------------|----------|
|
||||
| Learning storage | `.learnings/` in project | Workspace files (`~/clawd/`) |
|
||||
| Activation | Hooks (UserPromptSubmit) | Workspace injection at start |
|
||||
| Promotion targets | `CLAUDE.md`, `AGENTS.md` | `SOUL.md`, `TOOLS.md`, `AGENTS.md` |
|
||||
| Inter-agent comms | Not built-in | `sessions_*` tools |
|
||||
| Skill registry | Manual / agentskills.io | ClawdHub integration |
|
||||
|
||||
## Workspace Setup
|
||||
|
||||
### Default Structure
|
||||
|
||||
```
|
||||
~/clawd/ # Configurable via ~/.clawdbot/clawdbot.json
|
||||
├── AGENTS.md # Multi-agent coordination patterns
|
||||
├── SOUL.md # Behavioral guidelines and personality
|
||||
├── TOOLS.md # Tool capabilities and MCP gotchas
|
||||
├── skills/ # ClawdHub skills cache
|
||||
│ └── <skill-name>/
|
||||
│ └── SKILL.md
|
||||
└── sessions/ # Auto-managed session transcripts
|
||||
└── <session-id>.jsonl
|
||||
```
|
||||
|
||||
### Configuration
|
||||
|
||||
Edit `~/.clawdbot/clawdbot.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"workspace": "~/clawd",
|
||||
"model": "claude-sonnet-4-20250514",
|
||||
"inject_files": ["AGENTS.md", "SOUL.md", "TOOLS.md"],
|
||||
"session_history": true
|
||||
}
|
||||
```
|
||||
|
||||
## Injected Prompt Files
|
||||
|
||||
### AGENTS.md
|
||||
|
||||
Purpose: Multi-agent workflows and delegation patterns.
|
||||
|
||||
```markdown
|
||||
# Agent Coordination
|
||||
|
||||
## Delegation Rules
|
||||
- Use explore agent for open-ended codebase questions
|
||||
- Use research-agent for external documentation lookup
|
||||
- Use Plan agent before complex implementations
|
||||
|
||||
## Session Handoff
|
||||
When delegating to another session:
|
||||
1. Provide full context in the handoff message
|
||||
2. Include relevant file paths
|
||||
3. Specify expected output format
|
||||
```
|
||||
|
||||
### SOUL.md
|
||||
|
||||
Purpose: Behavioral guidelines and communication style.
|
||||
|
||||
```markdown
|
||||
# Behavioral Guidelines
|
||||
|
||||
## Communication Style
|
||||
- Be direct and concise
|
||||
- Avoid unnecessary caveats and disclaimers
|
||||
- Use technical language appropriate to context
|
||||
|
||||
## Decision Making
|
||||
- Prefer simple solutions over clever ones
|
||||
- Ask clarifying questions early
|
||||
- Explain trade-offs when presenting options
|
||||
|
||||
## Error Handling
|
||||
- Admit mistakes promptly
|
||||
- Provide corrected information immediately
|
||||
- Log significant errors to learnings
|
||||
```
|
||||
|
||||
### TOOLS.md
|
||||
|
||||
Purpose: Tool capabilities, MCP server knowledge, integration gotchas.
|
||||
|
||||
```markdown
|
||||
# Tool Knowledge
|
||||
|
||||
## MCP Servers
|
||||
|
||||
### atlassian
|
||||
- Use `search` for general queries across Jira/Confluence
|
||||
- Only use `searchJiraIssuesUsingJql` when JQL syntax is explicitly needed
|
||||
- CloudId can be extracted from URLs (tool handles conversion)
|
||||
- Page IDs are in URL path: `/pages/123456789/`
|
||||
|
||||
### leanix
|
||||
- Use external_id (not internal id) for lookups
|
||||
- expand_teams/expand_apps for nested data
|
||||
|
||||
## Built-in Tools
|
||||
|
||||
### Bash
|
||||
- Prefer specialized tools over bash (Read over cat, Glob over find)
|
||||
- Use for git operations, npm/pnpm, docker commands
|
||||
|
||||
### Task
|
||||
- Use explore agent for codebase questions
|
||||
- Use research-agent for external docs
|
||||
```
|
||||
|
||||
## Learning Workflow
|
||||
|
||||
### Capturing Learnings
|
||||
|
||||
1. **In-session**: Log to `.learnings/` as usual (project-specific)
|
||||
2. **Cross-project**: Promote to workspace files (clawdbot)
|
||||
|
||||
### Promotion Decision Tree
|
||||
|
||||
```
|
||||
Is the learning project-specific?
|
||||
├── Yes → Promote to CLAUDE.md or .learnings/
|
||||
└── No → Is it behavioral/style-related?
|
||||
├── Yes → Promote to SOUL.md
|
||||
└── No → Is it tool/MCP-related?
|
||||
├── Yes → Promote to TOOLS.md
|
||||
└── No → Promote to AGENTS.md (workflow)
|
||||
```
|
||||
|
||||
### Promotion Format Examples
|
||||
|
||||
**From learning:**
|
||||
> MCP atlassian server: search tool is for general queries. Only use JQL/CQL tools when user explicitly mentions JQL or CQL syntax.
|
||||
|
||||
**To TOOLS.md:**
|
||||
```markdown
|
||||
### atlassian
|
||||
- `search`: Use for general queries (default)
|
||||
- `searchJiraIssuesUsingJql`: Only when JQL explicitly requested
|
||||
- `searchConfluenceUsingCql`: Only when CQL explicitly requested
|
||||
```
|
||||
|
||||
## Inter-Agent Communication
|
||||
|
||||
Clawdbot provides tools for cross-session communication:
|
||||
|
||||
### sessions_list
|
||||
|
||||
View active and recent sessions:
|
||||
```
|
||||
sessions_list --active
|
||||
sessions_list --recent 10
|
||||
```
|
||||
|
||||
### sessions_history
|
||||
|
||||
Read transcript from another session:
|
||||
```
|
||||
sessions_history --session <session-id> --last 50
|
||||
```
|
||||
|
||||
### sessions_send
|
||||
|
||||
Send message to another session:
|
||||
```
|
||||
sessions_send --to <session-id> --message "Learning: API requires X-Custom-Header"
|
||||
```
|
||||
|
||||
### Learning Sharing Pattern
|
||||
|
||||
When discovering something valuable in session A:
|
||||
|
||||
1. Check if other sessions are working on related code:
|
||||
```
|
||||
sessions_list --active
|
||||
```
|
||||
|
||||
2. Share the learning:
|
||||
```
|
||||
sessions_send --to session-b --message "FYI: Discovered that the auth API requires refresh tokens every 30min"
|
||||
```
|
||||
|
||||
3. Log to workspace file if broadly applicable:
|
||||
- Edit `~/clawd/TOOLS.md` or appropriate file
|
||||
|
||||
## ClawdHub Integration
|
||||
|
||||
ClawdHub is Clawdbot's skill registry (similar to agentskills.io).
|
||||
|
||||
### Installing Skills
|
||||
|
||||
```bash
|
||||
clawd skill install <skill-name>
|
||||
```
|
||||
|
||||
Skills are cached in `~/clawd/skills/`.
|
||||
|
||||
### Publishing Skills
|
||||
|
||||
1. Create skill following agentskills.io spec
|
||||
2. Register with ClawdHub
|
||||
3. Skills become available to all Clawdbot users
|
||||
|
||||
### Skill Compatibility
|
||||
|
||||
Skills from this repo are compatible with:
|
||||
- Claude Code (via hooks)
|
||||
- Codex CLI (via hooks)
|
||||
- Clawdbot (via ClawdHub)
|
||||
- GitHub Copilot (via manual setup)
|
||||
|
||||
## Hybrid Setup: Claude Code + Clawdbot
|
||||
|
||||
When using both tools on the same codebase:
|
||||
|
||||
### Recommended Division
|
||||
|
||||
| Concern | Where to Store |
|
||||
|---------|---------------|
|
||||
| Project conventions | `CLAUDE.md` (in repo) |
|
||||
| Project learnings | `.learnings/` (in repo) |
|
||||
| Personal preferences | `SOUL.md` (clawdbot workspace) |
|
||||
| Tool knowledge | `TOOLS.md` (clawdbot workspace) |
|
||||
| Cross-project workflows | `AGENTS.md` (clawdbot workspace) |
|
||||
|
||||
### Sync Strategy
|
||||
|
||||
High-value learnings should exist in both:
|
||||
|
||||
1. Log to `.learnings/` first (project context)
|
||||
2. If broadly applicable, also add to clawdbot workspace
|
||||
3. Use consistent formatting for easy grep
|
||||
|
||||
### Example Dual Promotion
|
||||
|
||||
Learning: "Playwright tests require --headed flag for debugging"
|
||||
|
||||
**In `.learnings/LEARNINGS.md`:**
|
||||
```markdown
|
||||
## [LRN-20250126-001] correction
|
||||
|
||||
**Status**: promoted
|
||||
**Promoted**: CLAUDE.md, TOOLS.md (clawdbot)
|
||||
|
||||
### Summary
|
||||
Playwright tests require --headed flag for visual debugging
|
||||
|
||||
### Details
|
||||
...
|
||||
```
|
||||
|
||||
**In `CLAUDE.md`:**
|
||||
```markdown
|
||||
## Testing
|
||||
- Playwright debugging: use `--headed` flag
|
||||
```
|
||||
|
||||
**In `~/clawd/TOOLS.md`:**
|
||||
```markdown
|
||||
## Playwright
|
||||
- Debug mode: `npx playwright test --headed`
|
||||
- Trace viewer: `npx playwright show-trace trace.zip`
|
||||
```
|
||||
|
||||
## Detection Triggers for Clawdbot
|
||||
|
||||
### Standard Triggers (same as Claude Code)
|
||||
- User corrections
|
||||
- Command failures
|
||||
- API errors
|
||||
- Knowledge gaps
|
||||
|
||||
### Clawdbot-Specific Triggers
|
||||
|
||||
| Trigger | Action |
|
||||
|---------|--------|
|
||||
| MCP server error | Log to TOOLS.md with server name |
|
||||
| Session handoff confusion | Log to AGENTS.md with delegation pattern |
|
||||
| Model behavior surprise | Log to SOUL.md with expected vs actual |
|
||||
| ClawdHub skill issue | Log to TOOLS.md or report upstream |
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Workspace files not injected
|
||||
|
||||
Check `~/.clawdbot/clawdbot.json`:
|
||||
- Verify `workspace` path exists
|
||||
- Verify `inject_files` includes desired files
|
||||
|
||||
### Session communication fails
|
||||
|
||||
- Verify target session is active: `sessions_list --active`
|
||||
- Check session ID is correct
|
||||
- Session may have ended
|
||||
|
||||
### Learning not persisting
|
||||
|
||||
Clawdbot doesn't auto-persist learnings. You must:
|
||||
1. Explicitly write to workspace files
|
||||
2. Or use `.learnings/` for project-specific storage
|
||||