Sync the AGENTS.md hierarchy to current code state:
Drift fixes in 11 existing files
- Root: 2026-05-20 commit 39aadbf9f, ~2167 TS files, 120 barrel index.ts,
57 src/hooks dirs, 297 (179 non-test) src/shared files, 11 OpenCode hook
handlers in plugin-interface.ts, packages list adds ast-grep-mcp + rules-core,
first-prompt-watchdog 206 LOC, parent-wake-notifier 587 LOC
- src/AGENTS.md: file counts, plugin-interface handler count
- src/shared/AGENTS.md: title + counts 278/170 -> 297/179
- src/hooks/AGENTS.md: 57 dirs, note unwired WIP (task-reminder,
hashline-edit-diff-enhancer)
- src/features/AGENTS.md: module map with NON-TEST counts + sub-AGENTS.md
column, 7 modules without sub-doc
- src/features/background-agent/AGENTS.md: add 12 newer files (parent-wake-
notifier 587 LOC, loop-detector, error-classifier, fallback-retry-handler,
process-cleanup, subagent-spawn-limits, session-status-classifier,
compaction-aware-message-resolver, etc.)
- src/plugin/AGENTS.md: 11 handlers, add system-transform.ts + command-
execute-before.ts + build-team-idle-wake-hint-client.ts
- src/config/AGENTS.md: note schema/internal/permission.ts
- src/cli/AGENTS.md: 8 commands including 'version'
- src/plugin-handlers/AGENTS.md, packages/web/AGENTS.md: date bump
New AGENTS.md in 4 directories
- packages/AGENTS.md: index of 15 packages (11 platform binaries + 2 MCP
packages + rules-core + web), role map, conventions
- docs/AGENTS.md: WHERE TO LOOK table for 19 docs across 6 subdirs
- .opencode/AGENTS.md: 5 skills + 4 slash commands + relationship to .agents/
- .agents/AGENTS.md: superset migration target (9 skills + 4 commands)
3.8 KiB
packages/ — Monorepo Packages
Generated: 2026-05-20
OVERVIEW
15 sibling packages across 4 roles. None of these are published as part of the main oh-my-opencode / oh-my-openagent npm dist (root package.json files only ships dist/, bin/, postinstall.mjs). They are sibling packages with their own publication / deployment targets.
ROLE MAP
| Role | Count | Packages |
|---|---|---|
| Platform binaries | 11 | One per (OS × arch × variant). Uniform layout: bin/ + package.json only. Selected at install time by bin/ shim + postinstall.mjs. |
| MCP packages | 2 | lsp-tools-mcp (git submodule), ast-grep-mcp |
| Utility | 1 | rules-core |
| Web | 1 | web |
PLATFORM BINARIES (11)
oh-my-opencode-darwin-arm64, oh-my-opencode-darwin-x64, oh-my-opencode-darwin-x64-baseline, oh-my-opencode-linux-arm64, oh-my-opencode-linux-arm64-musl, oh-my-opencode-linux-x64, oh-my-opencode-linux-x64-baseline, oh-my-opencode-linux-x64-musl, oh-my-opencode-linux-x64-musl-baseline, oh-my-opencode-windows-x64, oh-my-opencode-windows-x64-baseline.
Each contains only a bin/<binary> and a package.json. Built by script/build-binaries.ts via bun compile. Published by the publish-platform.yml workflow.
-baseline variants are pure x86_64 (no AVX2) for older CPUs. -musl variants link against musl libc for Alpine. Runtime selection happens in bin/ and postinstall.mjs.
MCP PACKAGES
| Package | Layout | Purpose |
|---|---|---|
lsp-tools-mcp/ |
Full standalone project (own .git submodule, .github/, CHANGELOG.md, LICENSE, src/, test/, biome.json, vitest.config.ts) |
Serves lsp_diagnostics, lsp_goto_definition, lsp_find_references, lsp_symbols, lsp_prepare_rename, lsp_rename, lsp_status tools via stdio MCP. Registered as tier-1 MCP lsp in src/mcp/. |
ast-grep-mcp/ |
Internal package (src/, dist/, tsconfig.json) |
Serves ast_grep_search + ast_grep_replace tools via stdio MCP. Registered as tier-1 MCP ast_grep. |
UTILITY
| Package | Layout | Purpose |
|---|---|---|
rules-core/ |
src/, index.d.ts, tsconfig.json |
Shared rules-injector core logic published independently for reuse outside the plugin. |
WEB
| Package | Sub-AGENTS.md | Purpose |
|---|---|---|
web/ |
yes (packages/web/AGENTS.md) | Marketing site. Next.js 15 + Cloudflare Workers via @opennextjs/cloudflare. Independent bun.lock + tsconfig.json. Only place in the repo where @/* path aliases are allowed. |
CONVENTIONS
- No new package without explicit need. Adding a sibling package complicates publish + CI. Justify the boundary first.
- Platform binaries are generated. Do NOT edit by hand. Modify
script/build-binaries.ts. lsp-tools-mcpis a git submodule. Initialize withgit submodule update --init --recursiveafter fresh clone.packages/web/is excluded from rootbun testviabunfig.toml. It has its ownweb-ci.ymlworkflow.- CI builds for non-platform packages run as part of the root
ci.yml. Platform binaries build only viapublish-platform.ymlwhen triggered bypublish.yml.
ANTI-PATTERNS
- Never publish a sibling package manually. Use the GitHub Actions workflows.
- Never copy code between packages by hand. Either share via
rules-core(or a new utility package) or accept the duplication and document it. - Never modify
bin/<binary>inside a platform package — those are compiled artifacts.