Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/plugins/onebrain/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "onebrain",
"version": "3.0.1",
"version": "3.0.2",
"description": "OneBrain — Where human and AI thinking become one. A powerful thinking partner powered by AI synergy.",
"author": {
"name": "OneBrain Contributors"
Expand Down
6 changes: 3 additions & 3 deletions .claude/plugins/onebrain/skills/update/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Update OneBrain system files from GitHub to the latest version.
where `{branch}` is the mapped branch from step 2.
Parse the `version` field from the JSON response. (⚠️ JSON parsing — see Known Gotchas: WebFetch may summarize; use `curl -fsSL` if a version mismatch is suspected.)
4. If equal → say: ✅ Already up to date — v{X.X.X}. and stop
5. If newer → WebFetch `https://raw.githubusercontent.com/onebrain-ai/onebrain/{branch}/PLUGIN-CHANGELOG.md`; display before proceeding (do not skip or summarize — and if the fetched content already looks paraphrased, re-fetch via `curl -fsSL`; see Known Gotchas):
5. If newer → WebFetch `https://raw.githubusercontent.com/onebrain-ai/onebrain/{branch}/CHANGELOG.md`; display before proceeding (do not skip or summarize — and if the fetched content already looks paraphrased, re-fetch via `curl -fsSL`; see Known Gotchas):

```
──────────────────────────────────────────────────────────────
Expand Down Expand Up @@ -195,10 +195,10 @@ Dry run complete — {N} files would be created, {M} modified, {P} deleted.

- **Harness file merge is vault-primary.** If a user removed a plugin `@` import from CLAUDE.md/GEMINI.md/AGENTS.md (e.g., `@.claude/plugins/onebrain/INSTRUCTIONS.md`), `/update` will re-inject it on the next run because the script cannot distinguish intentional deletion from never having had it. If a specific import should stay absent, re-remove it after updating.

- **Root files live at the repo root, not the plugin folder.** `onebrain vault-sync` handles all seven root-level files: README.md, CONTRIBUTING.md, CHANGELOG.md, PLUGIN-CHANGELOG.md (simple overwrite) and CLAUDE.md, GEMINI.md, AGENTS.md (merge — preserves user `@` imports). Never copy any of these into the plugin folder.
- **Root files live at the repo root, not the plugin folder.** `onebrain vault-sync` handles all six root-level files: README.md, CONTRIBUTING.md, CHANGELOG.md (simple overwrite) and CLAUDE.md, GEMINI.md, AGENTS.md (merge — preserves user `@` imports). Never copy any of these into the plugin folder. (Pre-v3.0.2 vaults also had `PLUGIN-CHANGELOG.md` — renamed to `CHANGELOG.md` in the plugin-only trim; `vault-sync` cleans up the stale `PLUGIN-CHANGELOG.md` on the next run.)

- **Failure recovery path:** If interrupted before step 3d (plugin.json bump), re-running /update will retry from step 1. The early bootstrap (download SKILL.md) is idempotent — safe to repeat.

- **CLI update delegates to `onebrain update`.** Do not call `npm install -g @onebrain-ai/cli` or `bun install -g @onebrain-ai/cli` from this skill — `onebrain update` is the single source of truth for the CLI bump (version check, package-manager choice, validation). Raw npm/bun is reserved for first-time CLI bootstrap, which is a README/install-script concern, not a `/update` concern.

- **WebFetch may return summarized markdown — use `curl -fsSL` when raw content is required.** WebFetch can post-process content even with `raw.githubusercontent.com` URLs and explicit "return verbatim" prompts. Anywhere `/update` parses JSON (`plugin.json`, `settings.json`) or downloads/displays files verbatim (`PLUGIN-CHANGELOG.md`, `SKILL.md`), prefer `curl -fsSL <raw-url>` via the Bash tool instead. Symptoms of a summarized fetch: version mismatch on `plugin.json`, truncated/paraphrased changelog display, corrupted SKILL.md after self-update bootstrap.
- **WebFetch may return summarized markdown — use `curl -fsSL` when raw content is required.** WebFetch can post-process content even with `raw.githubusercontent.com` URLs and explicit "return verbatim" prompts. Anywhere `/update` parses JSON (`plugin.json`, `settings.json`) or downloads/displays files verbatim (`CHANGELOG.md`, `SKILL.md`), prefer `curl -fsSL <raw-url>` via the Bash tool instead. Symptoms of a summarized fetch: version mismatch on `plugin.json`, truncated/paraphrased changelog display, corrupted SKILL.md after self-update bootstrap.
706 changes: 448 additions & 258 deletions CHANGELOG.md

Large diffs are not rendered by default.

21 changes: 10 additions & 11 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -358,11 +358,11 @@ MEMORY-INDEX.md must be kept in sync at all times. Every skill that creates, upd

Vault setup is owned by the `onebrain` CLI binary (`src/`), **not** by shell scripts in this repo. The user flow is:

1. `npm install -g @onebrain-ai/cli` — installs the CLI globally
1. Install the CLI from any path — `brew install onebrain-ai/onebrain/onebrain` (macOS) or `npm install -g @onebrain-ai/cli` or direct download from [onebrain-ai/onebrain-cli/releases](https://github.com/onebrain-ai/onebrain-cli/releases/latest)
2. `onebrain init` — in a new or existing folder, writes `vault.yml`, scaffolds the 8 standard folders, downloads the latest plugin bundle, installs the recommended Obsidian community plugins, and registers the `Stop` hook (plus a `PostToolUse` qmd-reindex hook when `qmd_collection` is set). Aborts safely if a `vault.yml` already exists
3. `/onboarding` — inside the chosen harness, personalises identity + active projects

There are no `install.sh` or `install.ps1` scripts to maintain — the equivalent logic lives in the CLI's `init` and `update` commands and ships with each release. Bug fixes for vault bootstrap belong in `src/commands/init.ts` and `src/commands/update.ts`.
There are no `install.sh` or `install.ps1` scripts to maintain — the equivalent logic lives in the CLI's `init` and `update` commands. Bug fixes for vault bootstrap belong in the [`onebrain-ai/onebrain-cli`](https://github.com/onebrain-ai/onebrain-cli) repo, not this one.

## Pull Request Guidelines

Expand All @@ -375,20 +375,19 @@ There are no `install.sh` or `install.ps1` scripts to maintain — the equivalen

## Versioning

Two independent version tracks — bump only the track that changed:
This repo is plugin-only. Bump `plugin.json` for any vault-deployed content change.

| Track | Files | Bump when |
|---|---|---|
| **Plugin** | `plugin.json` · `PLUGIN-CHANGELOG.md` | ANY vault-deployed content changes — `.claude/plugins/onebrain/` (Claude plugin), `.gemini/` (Gemini config), or any future harness config. "Plugin" here means OneBrain content shipped to the vault, regardless of which harness reads it. |
| **CLI** | `package.json` · `CHANGELOG.md` | TypeScript source changes (`src/`) only — the `@onebrain-ai/cli` binary. |
| File | Bump when |
|---|---|
| `plugin.json` · `CHANGELOG.md` | ANY vault-deployed content changes — `.claude/plugins/onebrain/` (Claude plugin), `.gemini/` (Gemini config), or any future harness config. "Plugin" here means OneBrain content shipped to the vault, regardless of which harness reads it. |

**Bump rules**

- **Plugin:** patch for fixes/docs, minor for new content (skills, commands, hooks, harness configs), major for breaking schema changes.
- **CLI:** patch for bug fixes, minor for new commands, major for breaking changes.
- patch for fixes/docs
- minor for new content (skills, commands, hooks, harness configs)
- major for breaking schema changes or `requires.cli` floor bumps

After merging a CLI change → push tag `v{cli-version}` to trigger release workflow (builds binaries + publishes npm).
The Plugin track has its own changelog (`PLUGIN-CHANGELOG.md`) but no separate git tag — `plugin.json` is the source of truth and `vault-sync` reads it on every `/update` to detect drift.
The plugin has its own changelog (`CHANGELOG.md`) but no GitHub Release / git tag — `plugin.json` is the source of truth and `vault-sync` reads it on every `/update` to detect drift. The OneBrain CLI is versioned and released separately at [`onebrain-ai/onebrain-cli`](https://github.com/onebrain-ai/onebrain-cli).

## Reporting Issues

Expand Down
Loading
Loading