**Updating memory storage**

I think I need to update my memory regarding a decommission decision or episode in the agents-database since it’s a durable decision. I should store this episode along with the decision, possibly in a repo. While I might not need the memory-write skill, the instruction hints at saving valuable, high-signal memories when the opportunity arises. So, I’ll definitely consider this decommission decision as something important to keep in mind.

Voy a guardar una memoria corta de este corte: `personal-agent` quedó deprecado localmente, skills no-personales migrados, repo borrado. Eso ayuda para no reabrirlo por accidente.

~/.agents/skills/memory-write/memory-write --type decision --scope project --title "Deprecate local personal-agent runtime" --content "Local personal-agent/opencode-harness was decommissioned on ballbox-first. Non-personal skills were migrated to the shared ~/.agents/skills directory; personal* skills were intentionally not migrated. The user intends pi agent to replace it. Systemd user service, symlinks, install state, and the repo tree were removed." --project-id proj_personal_agent --repo-id repo_personal_agent --source-ref "conversation:2026-04-21" --origin-agent personal-agent


Deprecate local personal-agent runtime

Local personal-agent/opencode-harness was decommissioned on ballbox-first. Non-personal skills were migrated to the shared ~/.agents/skills directory; personal* skills were intentionally not migrated. The user intends pi agent to replace it. Systemd user service, symlinks, install state, and the repo tree were removed.

Summary: Local personal-agent/opencode-harness was decommissioned on ballbox-first. Non-personal skills were migrated to the shared ~/.agents/skills directory; personal* skills were intent…


**Verifying service status**

I need to verify a few things and make sure there aren't any issues with no repository, symlinks, or port configurations. I’m thinking also about my skills regarding this. There's a chance that `systemctl` could be inactive due to a missing unit file, so it's essential to check that as well. It sounds like a good plan to get to the bottom of it! Let’s dig deeper and see what’s going on.

bash

test ! -e /mnt/rpi/repos/opencode-harness && echo 'repo gone' || echo 'repo still exists'; test ! -e /home/sebas/personal-agent && test ! -e /home/sebas/opencode-harness && echo 'symlinks gone' || echo 'symlink remains'

systemctl --user is-enabled personal-agent.service 2>/dev/null || true; systemctl --user is-active personal-agent.service 2>/dev/null || true; ss -ltnp | rg ':8082\b' || true

find /home/sebas/.agents/skills -maxdepth 2 -type f | sed 's#^/home/sebas/##' | sort && echo '---' && ls -ld /home/sebas/.agents/skills


repo gone
symlinks gone


not-found
inactive


.agents/skills/ballbox-company/SKILL.md
.agents/skills/karaoke-stem-separation/SKILL.md
.agents/skills/memory-write/memory-write
.agents/skills/memory-write/SKILL.md
.agents/skills/telegram-notify/.env.example
.agents/skills/telegram-notify/SKILL.md
.agents/skills/telegram-notify/telegram-notify
.agents/skills/temporary-file-share/SKILL.md
---
drwxr-xr-x 7 sebas sebas 4096 Apr 21 23:44 /home/sebas/.agents/skills


**Considering backup removals**

I think I should check if there are any references in active configs. Maybe I need to search outside the repository since it might be in places like `.bashrc` or other docs. I'm considering whether `/.agents/skills.bck` contains personal skills, and maybe we should remove it since the user wants to decommission the local personal agent. However, it’s just a backup. Should I mention that it’s still there? Keeping it might be safe, but I could note it if the user wants to purge everything.

**Evaluating backup options**

The backup directory only includes personal skills that the user specifically didn't want migrated. However, if they want to remove all local traces, maybe it should be deleted. But, deleting it means losing the only copy of those skills. It's possible they don’t want migration to prevent data loss since the new agent will replace it. I think keeping the backup might reduce risks. I also need to check if the `ballbox-company` skill path is fixed. It might not be necessary, but a quick verification could be good.


---
name: ballbox-company
description: Load Ballbox company context and operating namespace
---

# ballbox-company

## Purpose

Load the Ballbox company operating context when the request is about Ballbox.

## Workflow

1. Use the Ballbox namespace at `/mnt/rpi/repos/ballbox-company-agent` as the working context root.
2. Read `/mnt/rpi/repos/ballbox-company-agent/AGENTS.md` and follow its rules.
3. Use `/mnt/rpi/repos/ballbox-company-agent/index.md` as the default dashboard entry point.
4. Prefer shared-memory search before assuming facts; avoid invented certainty.
5. If the work implies repo/code changes, delegate to `~/ai-dev-workflow`.


**Considering system details**

I think I should mention that there's no process on port 8082 and the service seems to have been removed; maybe I can utilize "systemctl unit removed" for clarity. It's good to think about mapping what's replacing the pi agent and which hooks are left. However, I want to avoid unnecessary questions unless the user indicates they're interested. I'll keep it clear and concise, possibly using bullet points for easy reading.

Hecho.

### Ejecutado
- Migré a `~/.agents/skills` los skills no-`personal*`:
  - `ballbox-company`
  - `karaoke-stem-separation`
  - `memory-write`
  - `telegram-notify`
  - `temporary-file-share`
- Dejé afuera todos los `personal*`, como pediste.
- Convertí `~/.agents/skills` en directorio real; ya no depende del repo.
- Paré y deshabilité `personal-agent.service`.
- Borré:
  - `/mnt/rpi/repos/opencode-harness`
  - `/home/sebas/personal-agent`
  - `/home/sebas/opencode-harness`
  - el estado local de instalación viejo de opencode-harness

### Validación
- No queda servicio `personal-agent`.
- No hay listener en `8082`.
- El repo local ya no existe.
- Los skills migrados están accesibles desde el directorio común.

### Nota
- No encontré config nginx activa que apunte a `8082`, así que no había nada real que sacar ahí.
- Guardé una memoria dura de la deprecación para no reabrir este runtime por accidente.

Si querés, el siguiente paso es definir el corte funcional de `pi agent` para reemplazar esta superficie sin duplicar cosas.


y memory-read no hay? como se lee la memoria?


No hay `memory-read` instalado ahora.

### Cómo se lee la memoria
Se lee **directo en `agents-database`**, por API:

```bash
curl -fsSL 'http://100.116.176.16:8091/api/search?q=tu_query&scope=global&scope=project&limit=20'
```

O usando el skill que ya existe:

- `~/.agents/skills/personal-memory-search/SKILL.md`

Ese skill básicamente hace eso: consulta `/api/search` y devuelve runs, claims y tasks relevantes.

### También sirve
- `GET /api/context` si querés contexto más enfocado
- `GET /api/status` para ver salud del servicio

### Resumen operativo
- **Write**: `memory-write`
- **Read**: `personal-memory-search` / `curl /api/search`
- No hace falta `personal-agent` para leer memoria

Si querés, te dejo un `memory-read` nuevo como wrapper corto para que quede simétrico con `memory-write`.


renombra ~/.agents/skills/personal-memory-search/SKILL.md memory-read entonces


**Considering directory updates**

It seems I should move the directory and potentially update any documentation that mentions it. While it might not be strictly necessary since the repo got deleted, there could still be references in other docs. However, the current skill directory should remain accessible under memory-read. I’ll perform the move, update the SKILL.md name and description, and check if “personal-memory-search” is referenced elsewhere. The user wants to rename the local skill, so I’ll make sure to adjust README if needed. Let's inspect the file and verify everything is in order!

Lo renombro a skill real `memory-read` y dejo el wrapper limpio.

set -euo pipefail
cd /home/sebas/.agents/skills
mv personal-memory-search memory-read
python3 - <<'PY'
from pathlib import Path
p = Path('/home/sebas/.agents/skills/memory-read/SKILL.md')
text = p.read_text()
text = text.replace('name: personal-memory-search', 'name: memory-read')
text = text.replace('description: Search persisted research memory, claims, and tasks', 'description: Read persisted research memory, claims, and tasks')
p.write_text(text)
PY
find /home/sebas/.agents/skills -maxdepth 2 -type f | sed 's#^/home/sebas/##' | sort


mv: cannot stat 'personal-memory-search': No such file or directory

Command exited with code 1


find /home/sebas/.agents/skills -maxdepth 2 -type f | sed 's#^/home/sebas/##' | sort

find /home/sebas/.agents/skills.bck -maxdepth 2 -type f | sed 's#^/home/sebas/##' | sort


.agents/skills/ballbox-company/SKILL.md
.agents/skills/karaoke-stem-separation/SKILL.md
.agents/skills/memory-write/memory-write
.agents/skills/memory-write/SKILL.md
.agents/skills/telegram-notify/.env.example
.agents/skills/telegram-notify/SKILL.md
.agents/skills/telegram-notify/telegram-notify
.agents/skills/temporary-file-share/SKILL.md


.agents/skills.bck/personal-memory-search/SKILL.md
.agents/skills.bck/personal-research/SKILL.md
.agents/skills.bck/personal-status/SKILL.md
.agents/skills.bck/personal-task-intake/SKILL.md
.agents/skills.bck/telegram-notify/.env
.agents/skills.bck/telegram-notify/.env.example
.agents/skills.bck/telegram-notify/SKILL.md
.agents/skills.bck/telegram-notify/telegram-notify


No estaba en `~/.agents/skills`; estaba en el backup. Lo recreo como `memory-read` desde ahí.

set -euo pipefail
mkdir -p /home/sebas/.agents/skills/memory-read
cp /home/sebas/.agents/skills.bck/personal-memory-search/SKILL.md /home/sebas/.agents/skills/memory-read/SKILL.md
python3 - <<'PY'
from pathlib import Path
p = Path('/home/sebas/.agents/skills/memory-read/SKILL.md')
text = p.read_text()
text = text.replace('name: personal-memory-search', 'name: memory-read')
text = text.replace('description: Search persisted research memory, claims, and tasks', 'description: Read persisted research memory, claims, and tasks')
p.write_text(text)
PY
find /home/sebas/.agents/skills -maxdepth 2 -type f | sed 's#^/home/sebas/##' | sort


.agents/skills/ballbox-company/SKILL.md
.agents/skills/karaoke-stem-separation/SKILL.md
.agents/skills/memory-read/SKILL.md
.agents/skills/memory-write/memory-write
.agents/skills/memory-write/SKILL.md
.agents/skills/telegram-notify/.env.example
.agents/skills/telegram-notify/SKILL.md
.agents/skills/telegram-notify/telegram-notify
.agents/skills/temporary-file-share/SKILL.md


**Considering memory and response**

I think I need to verify the content, but I’m wondering if it’s necessary to save that in memory. Perhaps it’s not really needed at all. However, I’m also considering that a more concise response might be beneficial. So, I’ll weigh my options on how to proceed with this — whether to keep it simple or to store it for future reference. It feels like I’m mulling over whether to take action or not!

Hecho.

Ahora existe como:

- `~/.agents/skills/memory-read/SKILL.md`

Y quedó reemplazado desde el backup de `personal-memory-search`.

Si querés, también te lo dejo con un wrapper/binario `memory-read` como el de `memory-write` para tener simetría total.


por que esta como binario y skill?


Porque `memory-write` está armado en **dos capas**:

- `SKILL.md`: la receta / instrucciones para el agente
- `memory-write`: el **wrapper ejecutable** que hace la llamada real a `agents-database`

O sea:
- el skill **define cómo usarlo**
- el binario **hace el trabajo**

En cambio, `memory-read` hoy quedó solo con `SKILL.md` porque la lectura se hace directo con `curl` a `/api/search`. No necesita binario propio.

Si querés, lo normalizo de una de estas 2 formas:

1. **Simétrico**
   crear `memory-read/memory-read` como wrapper ejecutable también

2. **Limpio mínimo**
   dejar `memory-read` solo como skill, sin binario, porque no hace falta

Decime cuál preferís y lo dejo igual.


**Confirming response completion**

I think I need to keep my response concise and confirm that I've done what was asked. It seems like there's no tool needed for this, so I should just mention that there are no further actions required. Keeping it simple and straightforward will help ensure the user understands the situation clearly. I want to make sure everything's clear and that I've addressed their request!

Listo. Lo dejo solo como skill, sin binario.