My Obsidian plugin ecosystem. Each plugin lives as an independent repository, linked here as submodules. Your tools should fit your thinking, not the other way around.
This repository is a submodule workspace and portfolio control plane, not a package monorepo.
- Plugin implementation and final releases live in child repos.
- Shared deterministic contracts live in
obsidian-boiler-template. - Portfolio visibility and release readiness live at the root.
| Plugin | Description |
|---|---|
| obsidian-eagle-plugin | Upload and manage images via Eagle integration |
| Metadata-Auto-Classifier | AI-powered automatic metadata generation for notes |
| open-connections | Semantic search and related notes using local embeddings |
| obsidian-bible-search | Bible verse search plugin |
| obsidian-qmd | QMD semantic search integration |
| youtube-note-playlist | YouTube music player via yt-dlp |
| obsidian-boiler-template | Seed template for new plugins — fork this to start |
| agent-skill-deploy | Deploy agent skills from a vault to provider repos |
The root repo owns:
- workspace plugin manifest
- workspace topology
- plugin architecture contract
- release architecture
- release note contract
- generated workspace catalog
The current root-level release gate is report-only. It validates portfolio metadata and emits a release readiness report without taking release authority away from child plugin repos.
The former root-local obsidian-skill-deploy incubator has been promoted into the independent agent-skill-deploy submodule.
git clone --recurse-submodules https://github.com/GoBeromsu/obsidian-workspace.git
cd obsidian-workspace
# Set your vault path
cp .env.example .env
# Edit .env → OBSIDIAN_VAULT_PATH=/path/to/your/vault
# Work on a specific plugin
cd obsidian-eagle-plugin
pnpm install
pnpm devpnpm dev # Watch mode + hot reload into vault
pnpm build # Production build
pnpm test # Vitest
pnpm lint # ESLint
pnpm run ci # build + lint + testThis workspace currently standardizes on user-scoped OMX.
- Active OMX config:
~/.codex/config.toml - User OMX orchestration contract:
~/.codex/AGENTS.md - Project-specific guidance:
./AGENTS.md - Persisted scope marker:
./.omx/setup-scope.json - Repo-local
./.codex/config.tomlis not authoritative unless setup is intentionally switched to--scope project
# launch Codex with OMX wiring
omx --madmax --high
# common in-session workflow surfaces
$deep-interview "clarify the task"
$ralplan "approve the implementation plan"
$team 3:executor "execute the approved plan in parallel"
$ralph "carry the approved plan to completion"omx setup --force --verbose
omx doctor
omx status
omx resume
omx cleanup
omx explore --prompt "find where team state is written"
omx sparkshell git status --shortomx sparkshell takes the command directly. Use omx sparkshell git status, not omx sparkshell -- git status.
- Fork the repository
- Create your branch (
git checkout -b feature/your-feature) - Commit with Conventional Commits (
git commit -m 'feat: add something') - Push and open a Pull Request against
main
Branch naming: feature/<name>, fix/<name>, refactor/<name> — no direct commits to main.
Releases are CI-only. Do not run git tag or gh release locally — this is enforced at the tooling level, not by convention.
Native-first. Every UI element uses Obsidian's own component system. No raw HTML, no external frameworks.
Structural over advisory. Rules that matter get enforced at the tooling level — hooks, permission deny lists, CI gates. Not just documented.
Minimal impact. Changes touch only what they need to. The right amount of code is the minimum that solves the problem.
Closed verification loop. After every code change: build → reload → error check → screenshot → eval. No manual testing cycle.
MIT — see LICENSE for details.