Reusable AI agent configuration templates for opencode projects.
opencode-helpers ist eine zentrale Sammlung von wiederverwendbaren Skills, Kommandos und Konfigurationen für KI-gestützte Entwicklung mit opencode.
Das Repository richtet sich an:
- Lehrerkollegen der HTL Spengergasse — für Notengebung, Hausübungsgenerierung, Schularbeitserstellung und Issue-basiertes Arbeiten
- Schüler — die opencode in Projekten einsetzen und von fertigen Workflows profitieren
- die internationale opencode-Community — die Standard-Workflows sucht
Alle Skills und Kommandos werden von anderen Projekten mittels symbolischer Links eingebunden — kein Fork, kein Copy-Paste.
Die Suche hat eine Provider-Kette, die pro Host konfiguriert wird:
- DeepSeek Search API (primär, wo ein Key liegt) — strukturierte Treffer mit modelllesbarem
summary, Publikationsdatum und Authority-Stufe - Selbstgehosteter SearXNG-Metasuchserver als Fallback — Metasearch über Brave, Wikipedia, GitHub, Hacker News, ArXiv u.v.m., datenschutzfreundlich, keine Weitergabe an Google/Bing
- Skill
deepseek-search(das einzige beworbene Such-Skill) mit dem MCP-Serverskills/deepseek-search/scripts/opencode-deepseek-search→ Tooldeepseek_search - Ohne DeepSeek-Key (z. B. auf Schul-Hosts) läuft die Kette rein über SearXNG — strukturell, nicht per Zufall; Keys liegen ausschließlich in Host-Overlays
- Der
searxng-Skill bleibt als Backend-Handbuch (Engine-Kette, Instanz-Vertrag, Diagnose) und ist per@searxngladbar, aber nicht mehr beworben - Parameter: Trefferzahl (1–50),
need_content, Sprache, Zeitfilter (day/week/month/year),site:/after:/before:-Operatoren; SearXNG-only: Kategorie, Engine-Auswahl, Paginierung, Safe Search
scripts/oc-models-report— tabellarischer Modellvergleich (opencode models): Fähigkeiten, Modalitäten, Preise, Kontext. Der Dump wird unter~/.local/share/oc-models-report/gecacht und automatisch erneuert, sobald er älter als 12 Stunden ist (--refresherzwingt,--fileparst einen gegebenen Dump). Aufruf:oc-models-report [--provider ID] [--sort KEY] [-r] <substring> …— Substring-Filter matchen provider/id/name/family sowie den gerenderten Kostenwert (z. B.free);--providerschränkt exakt (case-insensitive) auf einen Provider ein und ist kombinierbar (--provider openrouter opus), unbekannte Provider sind ein Fehler.--sort KEYordnet die Treffer (Standardmodel; sonstprovider,in,out,cost/$/mtok,ctx,params/param/size) aufsteigend,-r/--reversekehrt um. DiePARAM-Spalte zeigt die Parameterzahl (70B,397B/17B,~275Bbei Schätzung,–unbekannt) aus der kuratiertenscripts/model-params.json(Override--params PATHoder$OC_MODELS_REPORT_PARAMS);--params-missinglistet Modelle ohne Eintrag,--sort paramssortiert Unbekannte ans Ende. Pflege über den repo-lokalen Skillmodel-params(via Symlink in~/bin).
dotfiles/bash_functions.sh ist die gemeinsame, hostneutrale Quelle der Shell-Funktionen und -Aliase (oc*, su-*, git-acp). Jede ~/.bash_aliases sourct sie mit Guard direkt aus dem Clone (Pfad via $HOME, damit er für georg und grafg passt):
[ -f "$HOME/repos/georgernstgraf/opencode-helpers/dotfiles/bash_functions.sh" ] && \
. "$HOME/repos/georgernstgraf/opencode-helpers/dotfiles/bash_functions.sh"Host-Spezifisches (lokale Aliase, abweichende Ports) bleibt in der jeweiligen ~/.bash_aliases; keine Secrets (Server-Passwörter aus service.json/pass). Updates verteilen sich über git pull im Clone.
opencode-helpers/
├── agents/ # Globale OpenCode-Agents (flache <name>.md)
├── commands/ # Slash-Kommandos (thin wrappers)
├── skills/ # Workflow-Skills (die eigentliche Logik)
├── docs/ai/ # Knowledge-Persistence-Dateien
├── scripts/ # Utility-Skripte (z.B. MCP-Server)
├── dotfiles/ # Gemeinsame Shell-Funktionen (alle Hosts, via ~/.bash_aliases)
├── tests/ # Hermetische Tests (stdlib unittest, lokaler Mock)
├── AGENTS.md # Agents-Konfiguration (dieses Projekt)
├── AGENTS.template.md # Vorlage für andere Projekte
├── IAM.md # Entwickler-Identität & Präferenzen
└── opencode.json # MCP-Server-Konfiguration
Globale Agents sind ebenfalls hier versioniert (agents/), verlinkt via
~/.config/opencode/agents — analog zur Skills-Symlink-Kette. Jede Agent-
Definition ist eine flache agents/<name>.md (Dateiname = Agent-Name).
| Agent | Beschreibung | Modell |
|---|---|---|
lehrplan-annotator |
Autorenschaft der Erläuterungs-Ebene (KM-Überblicke, Lernziel-/Lehrstoff-Erläuterungen als Blockquote-Annotationen) für HTL-Lehrplan-Extrakte nach den Qualitätskriterien des lehrplan-Skills |
glm-5.3 (non-flash) |
Die Datei IAM.md beschreibt die Entwickler-Identität (Name, Technologie-Stack, Lehrfächer) sowie Kommunikationspräferenzen. Sie wird vom opencode-Agenten automatisch beim Start eingelesen und hilft, Antworten konsistent an die Bedürfnisse des Entwicklers anzupassen.
| Skill | Beschreibung | Aufruf |
|---|---|---|
grading-shared |
Geteilte Protokolle: Adressstil, E-Mail-Formeln, DB-Lookup, Bulk-Konkurrenz | Referenziert von anderen Skills |
homework |
Generiert per-Lesson Hausübung.md aus Git-Historie |
Direkter Skill-Aufruf |
issue-workflow |
Issue-Awareness als Dauerzustand: proaktives Commit/Push (grüne Commits), Abschluss-Kriterien, Sub-Issue-Regeln, Pflicht-Duplicate-Check vor jeder Issue-Anlage | Dauerzustand + Sprachsteuerung als Override (s.u.) |
knowledge-assessment |
Bewertet Knowledge-Check-Abgaben, erstellt Berichte + E-Mail-JSON | /knowledge-assess |
knowledge-exam |
Generiert deutsche Mini-Schularbeiten + Lösungen aus Git-Historie | /knowledge-exam |
knowledge-persistence |
Persistiert Session-Kontext in docs/ai/ |
Sprachsteuerung (s.u.) |
projectgrade |
Bewertet Projekt-Repos ganzheitlich (Commits, Issues, PRs) | Direkter Skill-Aufruf |
repograde |
Benotet Schüler-Repos (einzeln oder Bulk) | Direkter Skill-Aufruf |
fork-policy |
Erzwingt Clean-Main-Branch-Policy auf Forks | On-Demand Skill-Aufruf |
orchestration |
Koordiniert große, sitzungsübergreifende Arbeit: Sub-Issues, Delegation an Sub-Agenten, hartes Test-Gate (scope-gated) | Sprachsteuerung / direkter Aufruf |
deepseek-search |
Websuche über die DeepSeek Search API mit SearXNG-Fallback (ohne Key: nur SearXNG) — das beworbene Such-Skill | Automatisch via available_skills geladen (kein Befehl nötig) |
searxng |
Backend-Handbuch der SearXNG-Engine-Kette (Instanzen, Tiers, Diagnose) | Nicht beworben; per @searxng ladbar |
grill-me |
Relentlesses Interview zum Schärfen eines Plans/Designs (stateless) | Sprachsteuerung: "grill me", "grill this plan" |
grilling |
Die wiederverwendbare Interview-Schleife hinter grill-me/grill-with-docs | Automatisch (model-invoked) |
grill-with-docs |
Wie grill-me, baut zusätzlich CONTEXT.md und ADRs auf |
Sprachsteuerung |
domain-modeling |
Aktive Domänenmodell-Disziplin: Glossar schärfen, ADRs erfassen | Automatisch (model-invoked) |
teach |
Mehrsession-Lern-Workspace mit Lessons, Referenzen, Lernjournal | Sprachsteuerung: "teach me …" |
code-review |
Zweiachsige Review (Standards + Spec) per paralleler Sub-Agenten | Automatisch (model-invoked) |
codebase-audit |
Ganz-Repo-Audit in einem Lauf über vier Achsen (Security in-depth, Struktur/Schichten, Kopplung/Verschränkung, Architektur/Deep Modules); parallele Sub-Agenten, interaktives Steuern, dann ein Epic + Sub-Issues | Sprachsteuerung: "audit the codebase", "Codebase-Audit" |
sync-upstream-skills |
Bringt transplantierte Skills auf den Stand des mattpocock-Upstreams | Sprachsteuerung: "sync skills" |
lehrplan |
Unterrichts-Repo nach lehrplan/-Konvention einrichten: Gegenstand identifizieren, RIS-Sync mit Novellen-Check, Lehrplan jahresweise extrahieren |
Sprachsteuerung: "Lehrplan auf Novellen prüfen", "RIS sync", "Lehrplan extrahieren" |
full-sync |
Synchronisiert alle konfigurierten Working Copies und den Host: Zustand sammeln (Skript), dann entscheidet der Agent, was committed und gepusht wird; danach Host-Schritte — apt update/upgrade, Restart von opencode.service + Telegram-Bots (die upgraden sich beim Restart selbst), Reboot wenn nötig |
Sprachsteuerung: "full sync", "repo sync", "morning sync", "Tagesstart", "commit and push everything" |
Sechs Skills (grill-me, grilling, grill-with-docs, domain-modeling, teach, code-review) wurden aus mattpocock/skills transplantiert und mit opencode-nativem Frontmatter versehen (Claude-spezifisches disable-model-invocation wird zu metadata.opencode/autoinvoke: false oder weggelassen — slash: true ist in OpenCode 2 wirkungslos; license: MIT für Attribution). Upstream-Provenienz steht in skills/sync-upstream-skills/mapping.json.
Single-Source-Regel: Dieses Repo ist die einzige globale Skill-Quelle (verlinkt via ~/.config/opencode/skills). Matts Repo (~/repos/mattpocock/skills) ist pull-only — nie live verlinkt, nie in der opencode-skills-Array-Konfiguration. Kein ~/.opencode/skills-Symlink (cwd-abhängig und nicht v2-stabil). So gibt es pro Skill-Namen genau eine Quelle, Kollisionen sind strukturell ausgeschlossen.
Sync-Ritual: git -C ~/repos/mattpocock/skills pull, dann den sync-upstream-skills-Skill ausführen. Er übernimmt upstream Content-Änderungen, erhält das opencode-Frontmatter, prüft auf Duplikatnamen und dangling Cross-References.
| Kommando | Beschreibung |
|---|---|
/improve |
Prüft Kommandos/Skills auf Inkonsistenzen (Read-only) |
/knowledge-assess |
Bewertet Knowledge-Check-Abgaben |
/knowledge-exam <klasse> <wochen> <prüfungsdatum> |
Generiert Mini-Schularbeit + Lösungen |
/knowledge-persist |
Persistiert Session-Wissen in docs/ai/ |
/nextprompt |
Führt aitranscribe -q aus und nutzt Output als nächste Anweisung |
/tmpissue |
Erstellt GitHub-Issue aus /tmp/issue.md |
Diese Workflows haben keine eigenen Slash-Kommandos. Der Agent erkennt sie an natürlichen Sprachmustern:
Issue Workflow:
- Gilt dauerhaft: Der Agent arbeitet stets unter einem Issue, committet und pusht proaktiv (grüne Commits,
(#N)-Referenz) und schließt das Issue bei erfüllten Kriterien (sieheAGENTS.global.md). - Die Sprachmuster sind manuelle Overrides:
- "issue start", "start issue", "begin issue", "neues issue", "ich arbeite an" → start
- "issue commit", "commit issue", "speichere issue", "checkpoint" → commit
- "issue commit and push", "finish issue", "issue done", "issue fertig", "schließe issue" → finish
Knowledge Persistence:
- "remember", "merke dir", "don't forget", "behalte das im Kopf", "merk dir das" → persistieren
- "save context", "persist knowledge" → persistieren
Unterricht:
- "Unterricht", "Vorbereitung prüfen" → Task A: Gegenstand identifizieren
- "Lehrplan auf Novellen prüfen", "RIS sync", "Gesetzesstand prüfen" → Task B: RIS-Sync
- "Lehrplan extrahieren", "Jahrespläne neu ziehen" → Task C: Extraktion
-
opencode-helpers klonen oder als Submodul einbinden:
git clone https://github.com/georgernstgraf/opencode-helpers.git # oder als Submodul: git submodule add https://github.com/georgernstgraf/opencode-helpers.git .opencode-helpers -
Symbolische Links im Zielprojekt anlegen:
# Skills (alle Agenten-Workflows) ln -s /pfad/zu/opencode-helpers/skills skills # Kommandos (Slash-Befehle) ln -s /pfad/zu/opencode-helpers/commands commands # Knowledge Persistence (docs/ai/ Vorlage) cp -r /pfad/zu/opencode-helpers/docs/ai docs/ai # AGENTS.md (Onboarding-Template verwenden) cp /pfad/zu/opencode-helpers/AGENTS.template.md AGENTS.md
-
AGENTS.mdanpassen: Platzhalter ausfüllen (<PROJECT_NAME>,<OWNER>, etc.) -
In opencode
/initausführen: Der Agent liestAGENTS.md, erkennt die Skill-Trigger und richtet den Rest ein.
Das docs/ai/-Verzeichnis erhält Session-Kontext über mehrere KI-Sitzungen hinweg:
| Datei | Zweck | Änderungsmodus |
|---|---|---|
HANDOFF.md |
Offene Aufgaben für nächste Session | Überschreiben |
CONVENTIONS.md |
Laufende Regeln und Patterns | Anhängen |
DECISIONS.md |
Architekturentscheidungen mit Begründung | Anhängen |
ARCHITECTURE.md |
Strukturelle Karte des Systems | Überschreiben |
PITFALLS.md |
Gelernte Lektionen und Fallstricke | Anhängen |
DOMAIN.md |
Geschäftslogik und Domänenregeln | Anhängen |
STATE.md |
Aktueller Projektstatus | Überschreiben |
opencode-helpers is a central collection of reusable skills, commands, and configurations for AI-assisted development with opencode.
Target audience:
- Teachers at HTL Spengergasse — for grading, homework generation, exam creation, and issue-based workflows
- Students — using opencode in projects who benefit from ready-made workflows
- The international opencode community — looking for standardized agent workflows
All skills and commands are consumed by other projects via symbolic links — no forking, no copy-paste.
Search is a provider chain configured per host:
- DeepSeek Search API (primary where a key is present) — structured hits with a model-readable
summary, publication date and authority tier - Self-hosted SearXNG metasearch as the fallback — Brave, Wikipedia, GitHub, Hacker News, ArXiv and more, privacy-friendly, nothing sent to Google/Bing
- Skill
deepseek-search(the only advertised search skill) with the MCP serverskills/deepseek-search/scripts/opencode-deepseek-search→ tooldeepseek_search - Without a DeepSeek key (e.g. on school hosts) the chain runs on SearXNG only — structurally, not by accident; keys live exclusively in host overlays
- The
searxngskill remains as the backend manual (engine chain, instance contract, diagnostics), loadable via@searxngbut no longer advertised - Parameters: result count (1–50),
need_content, language, time filter (day/week/month/year),site:/after:/before:operators; SearXNG-only: category, engine selection, pagination, safe search
scripts/oc-models-report— tabular model comparison (opencode models): capabilities, modalities, pricing, context. The dump is cached under~/.local/share/oc-models-report/and auto-regenerated when older than 12 hours (--refreshforces it,--fileparses a given dump). Usage:oc-models-report [--provider ID] [--sort KEY] [-r] <substring> …— substrings match provider/id/name/family plus the rendered cost value (e.g.free);--providerrestricts exactly (case-insensitive) to one provider and combines (--provider openrouter opus), unknown providers are an error.--sort KEYorders the hits (defaultmodel; alsoprovider,in,out,cost/$/mtok,ctx,params/param/size) ascending,-r/--reverseflips that. ThePARAMcolumn shows the parameter count (70B,397B/17B,~275Bwhen estimated,–unknown) from the curatedscripts/model-params.json(override--params PATHor$OC_MODELS_REPORT_PARAMS);--params-missinglists models without an entry and--sort paramssorts unknowns last. Maintained via the repo-localmodel-paramsskill (via symlink in~/bin).
dotfiles/bash_functions.sh is the shared, host-neutral source of the shell functions and aliases (oc*, su-*, git-acp). Every ~/.bash_aliases sources it with a guard straight from the clone (path via $HOME, so it fits both georg and grafg):
[ -f "$HOME/repos/georgernstgraf/opencode-helpers/dotfiles/bash_functions.sh" ] && \
. "$HOME/repos/georgernstgraf/opencode-helpers/dotfiles/bash_functions.sh"Host-specific bits (local aliases, different ports) stay in the respective ~/.bash_aliases; no secrets (server passwords come from service.json/pass). Updates propagate via git pull in the clone.
opencode-helpers/
├── agents/ # Global opencode agents (flat <name>.md)
├── commands/ # Slash commands (thin wrappers)
├── skills/ # Workflow skills (actual logic)
├── docs/ai/ # Knowledge persistence files
├── scripts/ # Utility scripts (e.g., MCP server)
├── dotfiles/ # Shared shell functions (all hosts, via ~/.bash_aliases)
├── tests/ # Hermetic tests (stdlib unittest, local mock)
├── AGENTS.md # Agent config (this project)
├── AGENTS.template.md # Template for other projects
├── IAM.md # Developer identity & preferences
└── opencode.json # MCP server configuration
Global agents are versioned here (agents/), linked via
~/.config/opencode/agents — mirroring the skills symlink chain. Each agent
is a flat agents/<name>.md file (filename = agent name).
| Agent | Description | Model |
|---|---|---|
lehrplan-annotator |
Authors the Erläuterungs-Ebene (KM overviews, learning-objective and curriculum-text explanations as blockquote annotations) for HTL curriculum extracts per the lehrplan skill's quality criteria |
glm-5.3 (non-flash) |
IAM.md describes the developer's identity (name, tech stack, teaching subjects) and communication preferences. It is read automatically by opencode on startup and helps tailor responses to the developer's needs.
| Skill | Description | Invocation |
|---|---|---|
grading-shared |
Shared protocols: address style, email formulas, DB lookup, bulk concurrency | Referenced by other skills |
homework |
Generate per-lesson Hausübung.md from Git history |
Direct skill invocation |
issue-workflow |
Continuous issue awareness: proactive commit/push (green commits), completion criteria, sub-issue rules, mandatory duplicate check before creating issues | Continuous + natural language overrides (see below) |
knowledge-assessment |
Grade knowledge-check submissions, produce reports + email JSON | /knowledge-assess |
knowledge-exam |
Generate German mini-exams + solutions from Git history | /knowledge-exam |
knowledge-persistence |
Persist session context into docs/ai/ |
Natural language (see below) |
projectgrade |
Holistic project repo grading (commits, issues, PRs) | Direct skill invocation |
repograde |
Grade student repos (single or bulk) | Direct skill invocation |
fork-policy |
Enforce clean-main branch policy on forks | On-demand skill invocation |
orchestration |
Scope-gated coordination for large work: sub-issues, sub-agent delegation, hard test gate | Natural language / direct invocation |
deepseek-search |
Web search via the DeepSeek Search API with a SearXNG fallback (no key: SearXNG only) — the advertised search skill | Loaded automatically via available_skills (no command needed) |
searxng |
Backend manual for the SearXNG engine chain (instances, tiers, diagnostics) | Not advertised; loadable via @searxng |
grill-me |
Relentless interview to sharpen a plan/design (stateless) | Natural language: "grill me", "grill this plan" |
grilling |
The reusable interview loop behind grill-me/grill-with-docs | Automatic (model-invoked) |
grill-with-docs |
Like grill-me, additionally builds CONTEXT.md and ADRs |
Natural language |
domain-modeling |
Active domain-model discipline: sharpen glossary, capture ADRs | Automatic (model-invoked) |
teach |
Multi-session learning workspace with lessons, references, learning journal | Natural language: "teach me …" |
code-review |
Two-axis review (Standards + Spec) via parallel sub-agents | Automatic (model-invoked) |
codebase-audit |
One-shot whole-repo audit across four axes (security in depth, structure/layers, coupling/entanglement, architecture/deep modules); parallel sub-agents, interactive steering, then an epic + sub-issues | Natural language: "audit the codebase", "codebase audit" |
sync-upstream-skills |
Bring transplanted skills up to date from the mattpocock upstream | Natural language: "sync skills" |
lehrplan |
Set up and maintain a teaching repo following the lehrplan/ convention: identify the subject, RIS sync with amendment check, year-wise curriculum extraction |
Natural language: "Lehrplan auf Novellen prüfen", "RIS sync", "Lehrplan extrahieren" |
full-sync |
Syncs all configured working copies and the host: the script collects repository state, then the agent decides what to commit and what to push; then host steps — apt update/upgrade, restart of opencode.service + the Telegram bots (they upgrade themselves on restart), reboot when required |
Natural language: "full sync", "repo sync", "morning sync", "Tagesstart", "commit and push everything" |
Six skills (grill-me, grilling, grill-with-docs, domain-modeling, teach, code-review) are transplanted from mattpocock/skills and given opencode-native frontmatter (Claude-specific disable-model-invocation becomes metadata.opencode/autoinvoke: false or is dropped — slash: true is inert in OpenCode 2; license: MIT for attribution). Upstream provenance is recorded in skills/sync-upstream-skills/mapping.json.
Single-source rule: This repo is the only global skill source (linked via ~/.config/opencode/skills). Matt's repo (~/repos/mattpocock/skills) is pull-only — never linked live, never listed in an opencode skills array. No ~/.opencode/skills symlink (cwd-dependent and not v2-stable). One source per skill name means collisions are structurally impossible.
Sync ritual: git -C ~/repos/mattpocock/skills pull, then run the sync-upstream-skills skill. It applies upstream content changes while preserving opencode frontmatter, and checks for duplicate names and dangling cross-references.
| Command | Description |
|---|---|
/improve |
Scan commands/skills for inconsistencies (read-only) |
/knowledge-assess |
Grade knowledge-check submissions |
/knowledge-exam <class> <weeks> <exam-date> |
Generate mini-exam + solutions |
/knowledge-persist |
Persist session knowledge into docs/ai/ |
/nextprompt |
Run aitranscribe -q and use output as next instruction |
/tmpissue |
Create GitHub issue from /tmp/issue.md |
These workflows have no dedicated slash commands. The agent recognizes them from natural language patterns:
Issue Workflow:
- Applies continuously: the agent always works under an issue, commits and pushes proactively (green commits,
(#N)reference), and closes the issue autonomously once the criteria are met, reporting the closure in its final message (seeAGENTS.global.md). - The language patterns are manual overrides:
- "issue start", "start issue", "begin issue", "neues issue", "ich arbeite an" → start
- "issue commit", "commit issue", "speichere issue", "checkpoint" → commit
- "issue commit and push", "finish issue", "issue done", "issue fertig", "schließe issue" → finish
Knowledge Persistence:
- "remember", "merke dir", "don't forget", "behalte das im Kopf", "merk dir das" → persist
- "save context", "persist knowledge" → persist
Unterricht:
- "Unterricht", "Vorbereitung prüfen" → Task A: identify subject
- "Lehrplan auf Novellen prüfen", "RIS sync", "Gesetzesstand prüfen" → Task B: RIS sync
- "Lehrplan extrahieren", "Jahrespläne neu ziehen" → Task C: extraction
-
Clone or add opencode-helpers as a submodule:
git clone https://github.com/georgernstgraf/opencode-helpers.git # or as submodule: git submodule add https://github.com/georgernstgraf/opencode-helpers.git .opencode-helpers -
Create symbolic links in your target project:
# Skills (all agent workflows) ln -s /path/to/opencode-helpers/skills skills # Commands (slash commands) ln -s /path/to/opencode-helpers/commands commands # Knowledge persistence (docs/ai/ template) cp -r /path/to/opencode-helpers/docs/ai docs/ai # AGENTS.md (use the onboarding template) cp /path/to/opencode-helpers/AGENTS.template.md AGENTS.md
-
Customize
AGENTS.md: Fill in placeholders (<PROJECT_NAME>,<OWNER>, etc.) -
Run
/initin opencode: The agent readsAGENTS.md, recognizes the skill triggers, and sets up the rest.
The docs/ai/ directory maintains context across AI sessions:
| File | Purpose | Update mode |
|---|---|---|
HANDOFF.md |
Open tasks for next session | Overwrite |
CONVENTIONS.md |
Ongoing rules and patterns | Append |
DECISIONS.md |
Architecture decisions with rationale | Append |
ARCHITECTURE.md |
Structural map of the system | Overwrite |
PITFALLS.md |
Hard-won lessons and pitfalls | Append |
DOMAIN.md |
Business logic and domain rules | Append |
STATE.md |
Current project status | Overwrite |
MIT
Issues and PRs welcome at github.com/georgernstgraf/opencode-helpers