# Version only the skills and plugins trees.
#
# This directory is the OpenCode config root. OpenCode scans exactly two
# subdirectories for content:
#
#   ~/.config/opencode/skills/     -> agent skills
#   ~/.config/opencode/plugins/   -> server plugins (auto-discovered)
#   ~/.config/opencode/memory/    -> memory store written by the memory plugin
#
# A .git directory inside either of those gets picked up as a plugin and fails
# to load, so the repository lives one level up, here, and everything that is
# not skills/ or plugins/ is ignored.
#
# Ignore every top-level entry, then re-admit only the two content trees and
# this file. A bare /* is not enough: git will not descend into an ignored
# directory, so the un-ignore rules are required.

/*
!/skills/
!/plugins/
!/memory/
!/.gitignore

# Per-memory hit counters. Derived data: regenerating it costs one recall, and
# committing it would rewrite the file on every retrieval and create merge
# conflicts across devices.
memory/**/.state.json

# UTF-8 shell launcher (see https://www.xsinfo.vip/windows/01-opencode-utf8.html).
# Portable: it only calls chcp and pwsh.exe from PATH, so it is safe to share.
!/pwsh.cmd

# opencode.json is intentionally NOT tracked: its "shell" field holds an absolute
# per-user Windows path (C:\Users\<name>\...), which breaks OpenCode on Linux/macOS.
# Each machine keeps its own opencode.json and points "shell" at its own pwsh.cmd.

# npm manifest for the sqlite plugin's better-sqlite3 dependency; without it the
# plugin fails to load with "Cannot find package 'better-sqlite3'".
!/package.json

# Belt and braces, in case a path is ever added from the parent side.
node_modules/
*.log
