Shared OpenCode commands, rules, and skills intended to be reused across
multiple repositories via a checked-out .opencode/ directory.
- keep a small reusable command set for common repository workflows
- keep durable rules that guide editing, documentation, testing, and git usage
- provide shared skills for targeted workflows such as GitHub CLI
- leave project-specific behavior to local overlays instead of baking it into the shared core
ai-scripts/- repo-local helper scripts for repeated AI workflowscommands/- shared slash-command definitionsrules/- shared durable workflow and editing rulesskills/- shared reusable skillsdocs/tasks/- local task guide and implementation specifications for accepted repository workCONTRIBUTING.md- repository-specific source contribution workflowLICENSE- Zero-Clause BSD license for Codegeist-owned materialREADME.md- this source repository's contributor and maintainer guide; it is not copied into the generated releaseREADME_release.md- release consumer guide copied toREADME.mdin the generated.opencodebundleINDEX.md- root agent navigation index for this source repository; it is not copied into the generated.opencoderelease submoduleopencode.json- OpenCode config for loading the shared rule setplaywright-mcp.json- Playwright MCP browser launch configuration copied into the generated.opencoderelease submodule
- This repository is designed to be used as a git submodule or checked-out
workspace directory mounted at
.opencode/inside a consuming repository. - The instruction paths in
opencode.jsonintentionally use the.opencode/...prefix and should stay that way. - Project-specific extensions should live beside it in a local overlay such as
@.oc_local/rather than being added to the shared core.
Consuming repositories should add the generated release branch as their
.opencode submodule. The release branch contains only the files needed at
runtime: .gitignore, LICENSE, README.md, opencode.json,
playwright-mcp.json, ai-scripts/, commands/, rules/, skills/, and
plugin/.
git submodule add -b release <repository-url> .opencode
git submodule update --init --recursiveTo update an existing consuming repository to the latest release branch commit:
git submodule update --remote .opencodeAfter source review, maintainers build and push the release branch from this repository with:
task release-buildSource work starts from main and a topic branch, never from the generated
release branch or a consuming repository's .opencode/ checkout. Read the
local contribution guide, find public work in
Issues and the
Codegeist roadmap, and use the
local task guide for accepted implementation
specifications.
The canonical normal check is non-publishing:
task testEffective account-wide guidance is provided by the shared contribution policy, Code of Conduct, security policy, and support guide. Codegeist-owned material is available under the 0BSD license.
The visible Codegeist account profile is
sourced from codegeist-ai/codegeist-ai.
The separate codegeist-ai/.github
repository remains the source of shared community defaults.
Keep this repository repo-agnostic.
Project-specific workflows, paths, deployment steps, product conventions, and analysis flows should live in local overlays such as:
@.oc_local/commands/*.md@.oc_local/rules/*.md@.oc_local/skills/*/SKILL.md
- Commands: see
commands/README.md - Rules: see
rules/README.md - Skills: currently
skills/gh-auth/SKILL.md,skills/commit-message-guard/SKILL.md, andskills/graphify/SKILL.md - Directory indexes:
rules/directory-index.mddefines agent-ownedINDEX.mdfiles for navigable local context in large directories. A repository-rootINDEX.mdlists known directory indexes and is loaded byopencode.jsonwhen present outside the.opencodesubmodule. - Release boundary:
opencode.jsonintentionally referencesINDEX.mdso a consuming repository can own that root file. Never addINDEX.mdtoRELEASE_PATHSor create.opencode/INDEX.mdin the generated release.
- Run
task testafter source changes. It validates a temporary release copy without creating or publishing a release branch. - Release publication is maintainer-only after review.
node_modules/is ignored.package.jsonandpackage-lock.jsonare local-only plugin files and are ignored because consuming workspaces do not require pinned plugin versions.