From a84fe5c8e8fa3eb0ac2bdedf89ebc018b704a7bc Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Fri, 3 Apr 2026 17:06:13 +0200 Subject: [PATCH] Reorganize OpenCode context initialization --- dotfiles/desktop/.config/opencode/AGENTS.md | 10 +++++++++- dotfiles/desktop/.config/opencode/bootstrap.md | 2 +- dotfiles/desktop/.config/opencode/infra.md | 9 --------- .../.config/opencode/knowledge/architecture.md | 7 +++++++ dotfiles/desktop/.config/opencode/knowledge/cli.md | 5 +++++ .../desktop/.config/opencode/knowledge/desktop.md | 5 +++++ .../desktop/.config/opencode/knowledge/dotfiles.md | 5 +++++ .../desktop/.config/opencode/knowledge/emacs.md | 5 +++++ .../desktop/.config/opencode/knowledge/infra.md | 6 ++++++ .../desktop/.config/opencode/knowledge/kernel.md | 5 +++++ .../desktop/.config/opencode/knowledge/os_setup.md | 13 +++++++++++++ .../.config/opencode/knowledge/philosophy.md | 6 ++++++ .../desktop/.config/opencode/knowledge/server.md | 5 +++++ .../opencode/knowledge/system_programming.md | 5 +++++ dotfiles/desktop/.config/opencode/opencode.json | 4 +--- .../.config/opencode/patterns/ansible_role.md | 5 +++++ .../.config/opencode/patterns/dotfiles_layering.md | 5 +++++ .../.config/opencode/patterns/project_structure.md | 8 ++++++++ .../.config/opencode/patterns/service_setup.md | 5 +++++ dotfiles/desktop/.config/opencode/philosophy.md | 6 ------ dotfiles/desktop/.config/opencode/rules/ansible.md | 6 ++++++ dotfiles/desktop/.config/opencode/rules/dotfiles.md | 5 +++++ dotfiles/desktop/.config/opencode/rules/safety.md | 8 ++++++++ dotfiles/desktop/.config/opencode/rules/workflow.md | 5 +++++ dotfiles/desktop/.config/opencode/workflow.md | 6 ------ 25 files changed, 125 insertions(+), 26 deletions(-) delete mode 100644 dotfiles/desktop/.config/opencode/infra.md create mode 100644 dotfiles/desktop/.config/opencode/knowledge/architecture.md create mode 100644 dotfiles/desktop/.config/opencode/knowledge/cli.md create mode 100644 dotfiles/desktop/.config/opencode/knowledge/desktop.md create mode 100644 dotfiles/desktop/.config/opencode/knowledge/dotfiles.md create mode 100644 dotfiles/desktop/.config/opencode/knowledge/emacs.md create mode 100644 dotfiles/desktop/.config/opencode/knowledge/infra.md create mode 100644 dotfiles/desktop/.config/opencode/knowledge/kernel.md create mode 100644 dotfiles/desktop/.config/opencode/knowledge/os_setup.md create mode 100644 dotfiles/desktop/.config/opencode/knowledge/philosophy.md create mode 100644 dotfiles/desktop/.config/opencode/knowledge/server.md create mode 100644 dotfiles/desktop/.config/opencode/knowledge/system_programming.md create mode 100644 dotfiles/desktop/.config/opencode/patterns/ansible_role.md create mode 100644 dotfiles/desktop/.config/opencode/patterns/dotfiles_layering.md create mode 100644 dotfiles/desktop/.config/opencode/patterns/project_structure.md create mode 100644 dotfiles/desktop/.config/opencode/patterns/service_setup.md delete mode 100644 dotfiles/desktop/.config/opencode/philosophy.md create mode 100644 dotfiles/desktop/.config/opencode/rules/ansible.md create mode 100644 dotfiles/desktop/.config/opencode/rules/dotfiles.md create mode 100644 dotfiles/desktop/.config/opencode/rules/safety.md create mode 100644 dotfiles/desktop/.config/opencode/rules/workflow.md delete mode 100644 dotfiles/desktop/.config/opencode/workflow.md diff --git a/dotfiles/desktop/.config/opencode/AGENTS.md b/dotfiles/desktop/.config/opencode/AGENTS.md index 2e4a749..6cf0cf3 100644 --- a/dotfiles/desktop/.config/opencode/AGENTS.md +++ b/dotfiles/desktop/.config/opencode/AGENTS.md @@ -1,7 +1,15 @@ # AGENTS.md — Global Context -Rules: +Always follow: - minimal, targeted edits - preserve layering - avoid duplication - validate before applying changes + +Task-specific file loading: +- For infra or Ansible work, read `~/.config/opencode/knowledge/infra.md` and `~/.config/opencode/rules/ansible.md` +- For desktop work, read `~/.config/opencode/knowledge/desktop.md` +- For dotfiles work, read `~/.config/opencode/knowledge/dotfiles.md` and `~/.config/opencode/patterns/dotfiles_layering.md` +- For system programming work, read `~/.config/opencode/knowledge/system_programming.md` + +Do not preemptively load all task-specific files. Load only the files relevant to the current task. diff --git a/dotfiles/desktop/.config/opencode/bootstrap.md b/dotfiles/desktop/.config/opencode/bootstrap.md index d92fc25..db90a03 100644 --- a/dotfiles/desktop/.config/opencode/bootstrap.md +++ b/dotfiles/desktop/.config/opencode/bootstrap.md @@ -25,6 +25,6 @@ common → OS → profile → host ## Agent Behavior - make minimal changes -- avoid refactors +- avoid unnecessary refactors - preserve architecture - never break existing systems diff --git a/dotfiles/desktop/.config/opencode/infra.md b/dotfiles/desktop/.config/opencode/infra.md deleted file mode 100644 index 1f7b989..0000000 --- a/dotfiles/desktop/.config/opencode/infra.md +++ /dev/null @@ -1,9 +0,0 @@ -# infra.md - -Layering: -common → OS → profile → host - -Rules: -- no host logic in shared layers -- reuse over duplication -- incremental evolution diff --git a/dotfiles/desktop/.config/opencode/knowledge/architecture.md b/dotfiles/desktop/.config/opencode/knowledge/architecture.md new file mode 100644 index 0000000..7f2b796 --- /dev/null +++ b/dotfiles/desktop/.config/opencode/knowledge/architecture.md @@ -0,0 +1,7 @@ +# Architecture + +core system → user environment + +- Keep separation strict +- Avoid mixing concerns +- Systems must remain understandable diff --git a/dotfiles/desktop/.config/opencode/knowledge/cli.md b/dotfiles/desktop/.config/opencode/knowledge/cli.md new file mode 100644 index 0000000..6d4566d --- /dev/null +++ b/dotfiles/desktop/.config/opencode/knowledge/cli.md @@ -0,0 +1,5 @@ +# CLI + +- Bash + tmux + fzf +- Keyboard-driven workflow +- Minimal and efficient diff --git a/dotfiles/desktop/.config/opencode/knowledge/desktop.md b/dotfiles/desktop/.config/opencode/knowledge/desktop.md new file mode 100644 index 0000000..f050261 --- /dev/null +++ b/dotfiles/desktop/.config/opencode/knowledge/desktop.md @@ -0,0 +1,5 @@ +# Desktop + +- i3 primary +- XFCE components selectively +- Hyprland experimental diff --git a/dotfiles/desktop/.config/opencode/knowledge/dotfiles.md b/dotfiles/desktop/.config/opencode/knowledge/dotfiles.md new file mode 100644 index 0000000..1f53907 --- /dev/null +++ b/dotfiles/desktop/.config/opencode/knowledge/dotfiles.md @@ -0,0 +1,5 @@ +# Dotfiles + +- Managed via stow +- Layering: common → profile → host +- Must remain portable diff --git a/dotfiles/desktop/.config/opencode/knowledge/emacs.md b/dotfiles/desktop/.config/opencode/knowledge/emacs.md new file mode 100644 index 0000000..e6deb25 --- /dev/null +++ b/dotfiles/desktop/.config/opencode/knowledge/emacs.md @@ -0,0 +1,5 @@ +# Emacs + +- Primary editor +- LSP for C, Go, Python +- Modular configuration diff --git a/dotfiles/desktop/.config/opencode/knowledge/infra.md b/dotfiles/desktop/.config/opencode/knowledge/infra.md new file mode 100644 index 0000000..3a8ec74 --- /dev/null +++ b/dotfiles/desktop/.config/opencode/knowledge/infra.md @@ -0,0 +1,6 @@ +# Infrastructure + +- Tool: Ansible +- Layering: common → OS → profile → host +- Idempotency is mandatory +- Single-host validation before rollout diff --git a/dotfiles/desktop/.config/opencode/knowledge/kernel.md b/dotfiles/desktop/.config/opencode/knowledge/kernel.md new file mode 100644 index 0000000..8dd7cd5 --- /dev/null +++ b/dotfiles/desktop/.config/opencode/knowledge/kernel.md @@ -0,0 +1,5 @@ +# Kernel + +- Learning kernel modules +- Debugging with GDB +- Understanding internals diff --git a/dotfiles/desktop/.config/opencode/knowledge/os_setup.md b/dotfiles/desktop/.config/opencode/knowledge/os_setup.md new file mode 100644 index 0000000..e3f5a36 --- /dev/null +++ b/dotfiles/desktop/.config/opencode/knowledge/os_setup.md @@ -0,0 +1,13 @@ +# OS Setup + +- Preferred: + - Arch (reference) + - Void (minimal) + - Debian/Ubuntu (work) + +- Disk: + - EFI + LUKS2 + btrfs + +- Init: + - runit (Void) + - systemd (others) diff --git a/dotfiles/desktop/.config/opencode/knowledge/philosophy.md b/dotfiles/desktop/.config/opencode/knowledge/philosophy.md new file mode 100644 index 0000000..4da5d8e --- /dev/null +++ b/dotfiles/desktop/.config/opencode/knowledge/philosophy.md @@ -0,0 +1,6 @@ +# Philosophy + +- UNIX +- Minimalism +- Reproducibility +- Control over convenience diff --git a/dotfiles/desktop/.config/opencode/knowledge/server.md b/dotfiles/desktop/.config/opencode/knowledge/server.md new file mode 100644 index 0000000..0b6e5b5 --- /dev/null +++ b/dotfiles/desktop/.config/opencode/knowledge/server.md @@ -0,0 +1,5 @@ +# Server + +- Ubuntu minimal server +- Self-hosting services +- Low attack surface diff --git a/dotfiles/desktop/.config/opencode/knowledge/system_programming.md b/dotfiles/desktop/.config/opencode/knowledge/system_programming.md new file mode 100644 index 0000000..2bab5bf --- /dev/null +++ b/dotfiles/desktop/.config/opencode/knowledge/system_programming.md @@ -0,0 +1,5 @@ +# System Programming + +- Language: C +- Focus: UNIX APIs +- Practice: small tools and exercises diff --git a/dotfiles/desktop/.config/opencode/opencode.json b/dotfiles/desktop/.config/opencode/opencode.json index 80beaf9..38c088f 100644 --- a/dotfiles/desktop/.config/opencode/opencode.json +++ b/dotfiles/desktop/.config/opencode/opencode.json @@ -2,8 +2,6 @@ "$schema": "https://opencode.ai/config.json", "instructions": [ "~/.config/opencode/bootstrap.md", - "~/.config/opencode/infra.md", - "~/.config/opencode/philosophy.md", - "~/.config/opencode/workflow.md" + "~/.config/opencode/rules/safety.md" ] } diff --git a/dotfiles/desktop/.config/opencode/patterns/ansible_role.md b/dotfiles/desktop/.config/opencode/patterns/ansible_role.md new file mode 100644 index 0000000..9464aa6 --- /dev/null +++ b/dotfiles/desktop/.config/opencode/patterns/ansible_role.md @@ -0,0 +1,5 @@ +# Ansible Role Pattern + +- Create roles for reusable logic +- Keep structure clean +- Use handlers for services diff --git a/dotfiles/desktop/.config/opencode/patterns/dotfiles_layering.md b/dotfiles/desktop/.config/opencode/patterns/dotfiles_layering.md new file mode 100644 index 0000000..fb816e2 --- /dev/null +++ b/dotfiles/desktop/.config/opencode/patterns/dotfiles_layering.md @@ -0,0 +1,5 @@ +# Dotfiles Layering Pattern + +common → profile → host + +Avoid duplication and keep overrides minimal diff --git a/dotfiles/desktop/.config/opencode/patterns/project_structure.md b/dotfiles/desktop/.config/opencode/patterns/project_structure.md new file mode 100644 index 0000000..0c9f00b --- /dev/null +++ b/dotfiles/desktop/.config/opencode/patterns/project_structure.md @@ -0,0 +1,8 @@ +# Project Structure Pattern + +infra/ + ansible/ + dotfiles/ + scripts/ + +Keep structure predictable diff --git a/dotfiles/desktop/.config/opencode/patterns/service_setup.md b/dotfiles/desktop/.config/opencode/patterns/service_setup.md new file mode 100644 index 0000000..fc7cb26 --- /dev/null +++ b/dotfiles/desktop/.config/opencode/patterns/service_setup.md @@ -0,0 +1,5 @@ +# Service Setup Pattern + +- Define service +- Enable via init system +- Use handler for restart diff --git a/dotfiles/desktop/.config/opencode/philosophy.md b/dotfiles/desktop/.config/opencode/philosophy.md deleted file mode 100644 index c0b7e0f..0000000 --- a/dotfiles/desktop/.config/opencode/philosophy.md +++ /dev/null @@ -1,6 +0,0 @@ -# philosophy.md - -- UNIX first -- simple > complex -- explicit > implicit -- control > convenience diff --git a/dotfiles/desktop/.config/opencode/rules/ansible.md b/dotfiles/desktop/.config/opencode/rules/ansible.md new file mode 100644 index 0000000..1c37f99 --- /dev/null +++ b/dotfiles/desktop/.config/opencode/rules/ansible.md @@ -0,0 +1,6 @@ +# Ansible Rules + +- Prefer modules over shell +- Keep tasks idempotent +- Use group_vars and host_vars properly +- Avoid duplication diff --git a/dotfiles/desktop/.config/opencode/rules/dotfiles.md b/dotfiles/desktop/.config/opencode/rules/dotfiles.md new file mode 100644 index 0000000..a4bfd5e --- /dev/null +++ b/dotfiles/desktop/.config/opencode/rules/dotfiles.md @@ -0,0 +1,5 @@ +# Dotfiles Rules + +- No system logic inside dotfiles +- Keep them portable +- Follow layering diff --git a/dotfiles/desktop/.config/opencode/rules/safety.md b/dotfiles/desktop/.config/opencode/rules/safety.md new file mode 100644 index 0000000..cffc532 --- /dev/null +++ b/dotfiles/desktop/.config/opencode/rules/safety.md @@ -0,0 +1,8 @@ +# Safety Rules + +Never break an existing host. + +- Identify host, layer, risk +- Always test with --limit +- Use dry-run (--check --diff) +- Avoid destructive changes diff --git a/dotfiles/desktop/.config/opencode/rules/workflow.md b/dotfiles/desktop/.config/opencode/rules/workflow.md new file mode 100644 index 0000000..8bce669 --- /dev/null +++ b/dotfiles/desktop/.config/opencode/rules/workflow.md @@ -0,0 +1,5 @@ +# Workflow Rules + +- Small incremental changes +- Validate on one host +- Expand gradually diff --git a/dotfiles/desktop/.config/opencode/workflow.md b/dotfiles/desktop/.config/opencode/workflow.md deleted file mode 100644 index d219de5..0000000 --- a/dotfiles/desktop/.config/opencode/workflow.md +++ /dev/null @@ -1,6 +0,0 @@ -# workflow.md - -- small changes -- test on one host -- use dry-run (--check --diff) -- keep idempotency