@gobi-ai/cli 1.3.8 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/.claude-plugin/marketplace.json +5 -6
  2. package/.claude-plugin/plugin.json +3 -4
  3. package/README.md +174 -82
  4. package/commands/space-explore.md +10 -10
  5. package/commands/space-share.md +13 -7
  6. package/dist/attachments.js +2 -1
  7. package/dist/commands/draft.js +2 -3
  8. package/dist/commands/global.js +212 -72
  9. package/dist/commands/init.js +5 -5
  10. package/dist/commands/{notes.js → saved.js} +115 -23
  11. package/dist/commands/space.js +121 -111
  12. package/dist/commands/sync.js +2 -56
  13. package/dist/commands/update.js +14 -8
  14. package/dist/commands/utils.js +6 -0
  15. package/dist/commands/vault.js +113 -0
  16. package/dist/main.js +4 -8
  17. package/package.json +2 -2
  18. package/skills/gobi-core/SKILL.md +19 -15
  19. package/skills/gobi-core/references/space.md +18 -19
  20. package/skills/gobi-draft/SKILL.md +3 -3
  21. package/skills/gobi-homepage/SKILL.md +21 -19
  22. package/skills/gobi-media/SKILL.md +2 -2
  23. package/skills/gobi-saved/SKILL.md +59 -0
  24. package/skills/gobi-saved/references/saved.md +52 -0
  25. package/skills/gobi-sense/SKILL.md +8 -4
  26. package/skills/gobi-space/SKILL.md +55 -38
  27. package/skills/gobi-space/references/global.md +87 -26
  28. package/skills/gobi-space/references/space.md +49 -61
  29. package/skills/gobi-vault/SKILL.md +92 -0
  30. package/skills/{gobi-core/references/sync.md → gobi-vault/references/vault.md} +41 -2
  31. package/dist/commands/brain.js +0 -141
  32. package/dist/commands/feed.js +0 -148
  33. package/skills/gobi-brain/SKILL.md +0 -100
  34. package/skills/gobi-brain/references/brain.md +0 -66
  35. package/skills/gobi-feed/SKILL.md +0 -43
  36. package/skills/gobi-feed/references/feed.md +0 -80
  37. package/skills/gobi-notes/SKILL.md +0 -52
  38. package/skills/gobi-notes/references/notes.md +0 -82
package/dist/main.js CHANGED
@@ -6,12 +6,10 @@ import { registerAuthCommand } from "./commands/auth.js";
6
6
  import { registerInitCommand, printContext } from "./commands/init.js";
7
7
  import { registerSpaceCommand } from "./commands/space.js";
8
8
  import { registerGlobalCommand } from "./commands/global.js";
9
- import { registerBrainCommand } from "./commands/brain.js";
10
- import { registerFeedCommand } from "./commands/feed.js";
11
- import { registerNotesCommand } from "./commands/notes.js";
9
+ import { registerVaultCommand } from "./commands/vault.js";
10
+ import { registerSavedCommand } from "./commands/saved.js";
12
11
  import { registerSessionsCommand } from "./commands/sessions.js";
13
12
  import { registerSenseCommand } from "./commands/sense.js";
14
- import { registerSyncCommand } from "./commands/sync.js";
15
13
  import { registerUpdateCommand } from "./commands/update.js";
16
14
  import { registerMediaCommand } from "./commands/media.js";
17
15
  import { registerDraftCommand } from "./commands/draft.js";
@@ -37,12 +35,10 @@ export async function cli() {
37
35
  registerInitCommand(program);
38
36
  registerSpaceCommand(program);
39
37
  registerGlobalCommand(program);
40
- registerBrainCommand(program);
41
- registerFeedCommand(program);
42
- registerNotesCommand(program);
38
+ registerVaultCommand(program);
39
+ registerSavedCommand(program);
43
40
  registerSessionsCommand(program);
44
41
  registerSenseCommand(program);
45
- registerSyncCommand(program);
46
42
  registerUpdateCommand(program);
47
43
  registerMediaCommand(program);
48
44
  registerDraftCommand(program);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gobi-ai/cli",
3
- "version": "1.3.8",
3
+ "version": "2.0.1",
4
4
  "description": "CLI client for the Gobi collaborative knowledge platform",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -15,7 +15,7 @@
15
15
  "keywords": [
16
16
  "gobi",
17
17
  "cli",
18
- "second-brain",
18
+ "vault",
19
19
  "knowledge"
20
20
  ],
21
21
  "publishConfig": {
@@ -2,19 +2,19 @@
2
2
  name: gobi-core
3
3
  description: >-
4
4
  Core Gobi CLI: authentication (login/logout/status), vault initialization
5
- (gobi init), space selection (gobi space warp/list), file sync (gobi sync),
6
- CLI updates (gobi update), and session management (list/get/reply to
7
- conversations). Use when the user needs to set up Gobi, authenticate,
8
- sync files, manage sessions, or update the CLI.
5
+ (gobi init), space selection (gobi space warp/list), CLI updates (gobi
6
+ update), and session management (list/get/reply to conversations). Use when
7
+ the user needs to set up Gobi, authenticate, manage sessions, or update the
8
+ CLI. File sync is in the gobi-vault skill.
9
9
  allowed-tools: Bash(gobi:*)
10
10
  metadata:
11
11
  author: gobi-ai
12
- version: "0.8.0"
12
+ version: "2.0.0"
13
13
  ---
14
14
 
15
15
  # gobi-core
16
16
 
17
- Core CLI commands for the Gobi collaborative knowledge platform (v0.8.0).
17
+ Core CLI commands for the Gobi collaborative knowledge platform (v2.0.0).
18
18
 
19
19
  ## Prerequisites
20
20
 
@@ -38,9 +38,11 @@ brew tap gobi-ai/tap && brew install gobi
38
38
 
39
39
  ## Key Concepts
40
40
 
41
- - **Space**: A shared space for a group or community. A logged-in user can be a member of one or more spaces. A space contains threads, sessions, brain updates, and connected vaults.
42
- - **Vault**: A filetree storage of information and knowledge. A local directory becomes a vault when it contains `.gobi/settings.yaml` with a vault slug and a space slug. Each vault is identified by a slug (e.g. `brave-path-zr962w`).
43
- - **Brain**: Another name for a vault when referring to its AI-searchable knowledge. You can search brains, ask them questions, and publish a `BRAIN.md` document to configure your vault's brain.
41
+ - **Vault**: A filetree-backed knowledge home. A local directory becomes a vault when it contains `.gobi/settings.yaml` with a `vaultSlug`. Each vault has a slug (e.g. `brave-path-zr962w`); public profile is configured by a `PUBLISH.md` document at the vault root and pushed via `gobi vault publish`.
42
+ - **Personal Post**: A post on the author's profile that surfaces in the public global feed. Same `Post` data model as a Space Post only the scope differs.
43
+ - **Space Post**: A post inside a community space.
44
+ - **Space**: A shared community knowledge area. A user can be a member of one or more spaces; each space contains posts, replies, sessions, and connected vaults.
45
+ - **Draft**: A unit of standing guidance authored by an agent during chat. Each draft carries 0–3 AI-suggested actions the user picks from. The top 5 pending drafts feed the agent's system prompt every turn.
44
46
 
45
47
  ## First-Time Setup
46
48
 
@@ -56,7 +58,7 @@ This is an **interactive** command that:
56
58
  1. Logs in automatically if not already authenticated (opens a browser URL for Google OAuth)
57
59
  2. Prompts the user to select an existing vault or create a new one
58
60
  3. Writes `.gobi/settings.yaml` in the current directory with the chosen vault slug
59
- 4. Creates a `BRAIN.md` file if one doesn't exist
61
+ 4. Creates a `PUBLISH.md` file if one doesn't exist
60
62
 
61
63
  ### Step 2: Select a Space
62
64
 
@@ -86,7 +88,7 @@ Check auth status anytime:
86
88
  gobi auth status
87
89
  ```
88
90
 
89
- **Important for agents**: Before running any `space` command, check if `.gobi/settings.yaml` exists in the current directory with both `vaultSlug` and `selectedSpaceSlug`. If the vault is missing, guide the user through `gobi init`. If only the space is missing, guide the user through `gobi space warp`. These commands require user input (interactive prompts), so the agent cannot run them silently.
91
+ **Important for agents**: Before running any `space` command, check whether `.gobi/settings.yaml` exists in the current directory with both `vaultSlug` and `selectedSpaceSlug`. If the vault is missing, guide the user through `gobi init`. If only the space is missing, guide the user through `gobi space warp`. These commands require user input (interactive prompts), so the agent cannot run them silently. For one-off calls, every command also accepts an explicit `--vault-slug` / `--space-slug` override.
90
92
 
91
93
  ## Important: JSON Mode
92
94
 
@@ -96,7 +98,7 @@ For programmatic/agent usage, always pass `--json` as a **global** option (befor
96
98
  gobi --json session list
97
99
  ```
98
100
 
99
- JSON responses have the shape `{ "success": true, "data": ... }` on success or `{ "success": false, "error": "..." }` on failure.
101
+ JSON responses have the shape `{ "success": true, "data": ... }` on success or `{ "success": false, "error": "..." }` on failure. Pagination metadata (`pagination: { hasMore, nextCursor }`) ships alongside `data` on list endpoints.
100
102
 
101
103
  ## Available Commands
102
104
 
@@ -111,16 +113,17 @@ JSON responses have the shape `{ "success": true, "data": ... }` on success or `
111
113
  - `gobi session get` — Get a session and its messages (paginated).
112
114
  - `gobi session list` — List all sessions you are part of, sorted by most recent activity.
113
115
  - `gobi session reply` — Send a human reply to a session you are a member of.
114
- - `gobi sync` — Sync local vault files with Gobi Webdrive.
115
116
  - `gobi update` — Update gobi-cli to the latest version.
116
117
 
118
+ > File sync (`gobi vault sync`) lives in the **gobi-vault** skill.
119
+
117
120
  ## Reference Documentation
118
121
 
119
122
  - [gobi auth](references/auth.md)
120
123
  - [gobi init](references/init.md)
121
124
  - [gobi session](references/session.md)
122
- - [gobi sync](references/sync.md)
123
125
  - [gobi update](references/update.md)
126
+ - [gobi space (list/warp)](references/space.md)
124
127
 
125
128
  ## Configuration Files
126
129
 
@@ -128,7 +131,7 @@ JSON responses have the shape `{ "success": true, "data": ... }` on success or `
128
131
  |------|-------------|
129
132
  | `~/.gobi/credentials.json` | Stored authentication tokens (auto-managed) |
130
133
  | `.gobi/settings.yaml` | Per-project vault and space configuration |
131
- | `BRAIN.md` | Brain document with YAML frontmatter, published via `gobi brain publish` |
134
+ | `PUBLISH.md` | Vault profile document with YAML frontmatter, published via `gobi vault publish` |
132
135
 
133
136
  ## Environment Variables
134
137
 
@@ -136,3 +139,4 @@ JSON responses have the shape `{ "success": true, "data": ... }` on success or `
136
139
  |----------|---------|-------------|
137
140
  | `GOBI_BASE_URL` | `https://api.joingobi.com` | API server URL |
138
141
  | `GOBI_WEBDRIVE_BASE_URL` | `https://webdrive.joingobi.com` | File storage URL |
142
+ | `GOBI_SESSION_ID` | — | Default `--session` for `gobi draft add` (set automatically inside agent runs) |
@@ -3,29 +3,28 @@
3
3
  ```
4
4
  Usage: gobi space [options] [command]
5
5
 
6
- Space commands (threads, replies). Space and member admin is web-UI only.
6
+ Space commands (posts, replies). Space and member admin is web-UI only.
7
7
 
8
8
  Options:
9
- --space-slug <slug> Space slug (overrides .gobi/settings.yaml)
10
- -h, --help display help for command
9
+ --space-slug <slug> Space slug (overrides .gobi/settings.yaml)
10
+ -h, --help display help for command
11
11
 
12
12
  Commands:
13
- list List spaces you are a member of.
14
- get [spaceSlug] Get details for a space. Pass a slug or omit to use the current space (from .gobi/settings.yaml or --space-slug).
15
- warp [spaceSlug] Select the active space. Pass a slug to warp directly, or omit for interactive selection.
16
- list-topics [options] List topics in a space, ordered by most recent content linkage.
17
- list-topic-threads [options] <topicSlug> List threads tagged with a topic in a space (cursor-paginated).
18
- messages [options] List the unified message feed (threads and replies, newest first) in a space.
19
- ancestors <threadId> Show the ancestor lineage of a thread or reply (root → immediate parent).
20
- get-thread [options] <threadId> Get a thread and its replies (paginated).
21
- list-threads [options] List threads in a space (paginated).
22
- create-thread [options] Create a thread in a space.
23
- edit-thread [options] <threadId> Edit a thread. You must be the author.
24
- delete-thread <threadId> Delete a thread. You must be the author.
25
- create-reply [options] <threadId> Create a reply to a thread in a space.
26
- edit-reply [options] <replyId> Edit a reply. You must be the author.
27
- delete-reply <replyId> Delete a reply. You must be the author.
28
- help [command] display help for command
13
+ list List spaces you are a member of.
14
+ get [spaceSlug] Get details for a space. Pass a slug or omit to use the current space (from .gobi/settings.yaml or --space-slug).
15
+ warp [spaceSlug] Select the active space. Pass a slug to warp directly, or omit for interactive selection.
16
+ list-topics [options] List topics in a space, ordered by most recent content linkage.
17
+ list-topic-posts [options] <topicSlug> List posts tagged with a topic in a space (cursor-paginated).
18
+ feed [options] List the unified feed (posts and replies, newest first) in a space.
19
+ get-post [options] <postId> Get a post with its ancestors and replies (paginated).
20
+ list-posts [options] List posts in a space (paginated).
21
+ create-post [options] Create a post in a space.
22
+ edit-post [options] <postId> Edit a post. You must be the author.
23
+ delete-post <postId> Delete a post. You must be the author.
24
+ create-reply [options] <postId> Create a reply to a post in a space.
25
+ edit-reply [options] <replyId> Edit a reply. You must be the author.
26
+ delete-reply <replyId> Delete a reply. You must be the author.
27
+ help [command] display help for command
29
28
  ```
30
29
 
31
30
  ## list
@@ -10,12 +10,12 @@ description: >-
10
10
  allowed-tools: Bash(gobi:*)
11
11
  metadata:
12
12
  author: gobi-ai
13
- version: "1.4.0"
13
+ version: "2.0.0"
14
14
  ---
15
15
 
16
16
  # gobi-draft
17
17
 
18
- Gobi draft commands for managing agent-authored drafts (v1.4.0).
18
+ Gobi draft commands for managing agent-authored drafts (v2.0.0).
19
19
 
20
20
  Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
21
21
 
@@ -52,7 +52,7 @@ For programmatic/agent usage, always pass `--json` as a **global** option (befor
52
52
 
53
53
  ```bash
54
54
  gobi --json draft list --limit 20
55
- gobi --json draft add "Concise titles" "Prefer concise titles for brain updates." --action "Apply" --action "Skip" --priority 50
55
+ gobi --json draft add "Concise titles" "Prefer concise titles for personal posts." --action "Apply" --action "Skip" --priority 50
56
56
  gobi --json draft action <draftId> 0
57
57
  ```
58
58
 
@@ -8,7 +8,7 @@ description: >-
8
8
 
9
9
  # Gobi Homepage Developer Guide
10
10
 
11
- A **Gobi Homepage** is a custom HTML page hosted on a vault's webdrive and served as its public homepage at `https://gobispace.com/@{vaultSlug}`. Gobi injects a `window.gobi` bridge before any scripts run, giving the homepage access to vault data, files, brain updates, and chat.
11
+ A **Gobi Homepage** is a custom HTML page hosted on a vault's webdrive and served as its public homepage at `https://gobispace.com/@{vaultSlug}`. Gobi injects a `window.gobi` bridge before any scripts run, giving the homepage access to vault data, files, personal posts, and chat.
12
12
 
13
13
  > **Sandbox:** The homepage runs in a sandboxed iframe with `origin: null`. Direct `fetch()` / `XMLHttpRequest` calls are blocked by CORS. All data access must go through `window.gobi.*`.
14
14
 
@@ -18,9 +18,9 @@ A **Gobi Homepage** is a custom HTML page hosted on a vault's webdrive and serve
18
18
 
19
19
  1. Create an HTML file in the vault (e.g. `app/home.html`) and upload:
20
20
  ```bash
21
- gobi sync
21
+ gobi vault sync
22
22
  ```
23
- 2. Set `homepage` in BRAIN.md (homepage property):
23
+ 2. Set `homepage` in PUBLISH.md (homepage property):
24
24
  - `homepage: "[[app/home.html]]"` — Gobi sidebars visible alongside the homepage
25
25
  - `homepage: "[[app/home.html?nav=false]]"` — full-screen, no Gobi chrome
26
26
 
@@ -67,10 +67,12 @@ function getFileUrl(path) {
67
67
  }
68
68
  ```
69
69
 
70
- ### Brain Updates
70
+ ### Personal posts
71
+
72
+ > `listVaultPosts` is still accepted as a deprecated alias for back-compat with older homepages — existing applets won't break, but new code should use `listPersonalPosts`.
71
73
 
72
74
  ```js
73
- const { data: updates, pagination } = await gobi.listBrainUpdates({ limit: 10, cursor: null });
75
+ const { data: updates, pagination } = await gobi.listPersonalPosts({ limit: 10, cursor: null });
74
76
  // updates[i] → {
75
77
  // id: 42,
76
78
  // title: 'New insights',
@@ -88,7 +90,7 @@ for (const u of updates) {
88
90
  // Pagination — load the next page using the cursor
89
91
  if (pagination.hasMore) {
90
92
  const { data: moreUpdates, pagination: nextPage } =
91
- await gobi.listBrainUpdates({ limit: 10, cursor: pagination.nextCursor });
93
+ await gobi.listPersonalPosts({ limit: 10, cursor: pagination.nextCursor });
92
94
  }
93
95
  ```
94
96
 
@@ -119,7 +121,7 @@ const { messages, hasMore, nextCursor } = await gobi.loadMessages('sess_abc', {
119
121
  // sendMessage(sessionId, text, options, onDelta) → Promise<{ content }>
120
122
  //
121
123
  // options.context tells the AI what the user is looking at:
122
- // { brainUpdateId?: number, brainUpdateTitle?: string, filePath?: string }
124
+ // { postId?: number, postTitle?: string, filePath?: string }
123
125
 
124
126
  let reply = '';
125
127
  await gobi.sendMessage(sessionId, 'Hello', (delta) => {
@@ -129,7 +131,7 @@ await gobi.sendMessage(sessionId, 'Hello', (delta) => {
129
131
 
130
132
  // With context
131
133
  await gobi.sendMessage(sessionId, 'Tell me more', {
132
- context: { brainUpdateId: 42, brainUpdateTitle: 'New insights' }
134
+ context: { postId: 42, postTitle: 'New insights' }
133
135
  }, (delta) => { reply += delta; renderReply(reply); });
134
136
 
135
137
  await gobi.sendMessage(sessionId, 'Explain this', {
@@ -144,7 +146,7 @@ sessionId = crypto.randomUUID();
144
146
 
145
147
  ## Rendering Markdown
146
148
 
147
- Brain update `content` and any markdown read via `readFile` may contain Obsidian-style wiki embeds (`![[path|width]]`). Resolve them before passing to a renderer.
149
+ Post `content` and any markdown read via `readFile` may contain Obsidian-style wiki embeds (`![[path|width]]`). Resolve them before passing to a renderer.
148
150
 
149
151
  The examples below use [marked](https://cdn.jsdelivr.net/npm/marked/marked.min.js) — include it in your `<head>`:
150
152
 
@@ -175,7 +177,7 @@ renderer.link = (href, title, text) =>
175
177
  marked.setOptions({ renderer });
176
178
  ```
177
179
 
178
- **Plain-text previews.** For BU list cards, render a truncated preview with `escapeHtml(content.substring(0, 200))` — don't run markdown on a random substring, it produces broken HTML. Use `marked.parse(resolveWikiImages(content))` only for the full expanded view. Same for chat: `marked.parse(content)` for assistant messages, `escapeHtml(content)` for human messages.
180
+ **Plain-text previews.** For post list cards, render a truncated preview with `escapeHtml(content.substring(0, 200))` — don't run markdown on a random substring, it produces broken HTML. Use `marked.parse(resolveWikiImages(content))` only for the full expanded view. Same for chat: `marked.parse(content)` for assistant messages, `escapeHtml(content)` for human messages.
179
181
 
180
182
  ---
181
183
 
@@ -202,9 +204,9 @@ Centralize colors and spacing in CSS custom properties so restyling is a one-lin
202
204
 
203
205
  Pair with Google Fonts (e.g. Space Grotesk for headings, IBM Plex Mono for meta, Inter for body) via CDN `<link>`.
204
206
 
205
- ### Knowledge Graph from BU topics
207
+ ### Knowledge Graph from post topics
206
208
 
207
- Brain updates carry a `topics` array. Treat each topic as a node and any two topics co-occurring in the same BU as an edge — you get a force-directed graph of the vault's themes for free. Use [d3](https://cdn.jsdelivr.net/npm/d3@7/dist/d3.min.js).
209
+ Personal posts carry a `topics` array. Treat each topic as a node and any two topics co-occurring in the same post as an edge — you get a force-directed graph of the vault's themes for free. Use [d3](https://cdn.jsdelivr.net/npm/d3@7/dist/d3.min.js).
208
210
 
209
211
  ```js
210
212
  // Separate data-building from rendering so the same graph can be drawn at multiple sizes.
@@ -246,7 +248,7 @@ function drawGraph(containerId, w, h, data, opts = {}) {
246
248
  ```
247
249
 
248
250
  Tips:
249
- - **Enrich the data.** One page of 8 BUs makes a sparse graph. Paginate 3–4 times (cap at ~32 BUs) before building.
251
+ - **Enrich the data.** One page of 8 posts makes a sparse graph. Paginate 3–4 times (cap at ~32 posts) before building.
250
252
  - **Cache the built data** in a module-level variable so the full-screen overlay can reuse it without refetching.
251
253
  - **Mini vs full presets.** Pass different `opts` — e.g. mini `{nodeRange:[4,16], fontSize:'9px', distance:60, charge:-80}`, full `{nodeRange:[8,32], fontSize:'12px', distance:120, charge:-200}`.
252
254
  - Run a **separate simulation** for the full-scale instance — copy the nodes/links rather than sharing references, otherwise both graphs fight over the same positions.
@@ -272,7 +274,7 @@ function openOverlay(renderInto) {
272
274
 
273
275
  Always restore `body.overflow` on close, and always remove the `keydown` listener.
274
276
 
275
- ### Brain update card — preview/full toggle
277
+ ### Personal post card — preview/full toggle
276
278
 
277
279
  Show a truncated card that expands in place on click:
278
280
 
@@ -292,7 +294,7 @@ card.onclick = (event) => {
292
294
  Empty chat looks dead. Show clickable prompt chips until the first message is sent:
293
295
 
294
296
  ```js
295
- const prompts = ['What is this brain about?', 'Summarize the latest update', 'What topics come up most?'];
297
+ const prompts = ['What is this vault about?', 'Summarize the latest post', 'What topics come up most?'];
296
298
  chips.innerHTML = prompts.map(p => `<button class="chip">${escapeHtml(p)}</button>`).join('');
297
299
  chips.querySelectorAll('.chip').forEach((btn, i) => {
298
300
  btn.onclick = () => { input.value = prompts[i]; chips.remove(); input.focus(); };
@@ -361,7 +363,7 @@ Single breakpoint at `768px` is enough for most homepages:
361
363
  </div>
362
364
 
363
365
  <script>
364
- document.title = gobi.vault.title || 'Brain';
366
+ document.title = gobi.vault.title || 'Vault';
365
367
 
366
368
  // ── Helpers ──────────────────────────────────────
367
369
 
@@ -389,11 +391,11 @@ Single breakpoint at `768px` is enough for most homepages:
389
391
  `https://gobispace.com/login?redirect_uri=${encodeURIComponent(window.location.href)}`;
390
392
  }
391
393
 
392
- // ── Brain updates ────────────────────────────────
394
+ // ── Personal posts ───────────────────────────────
393
395
 
394
396
  async function loadUpdates() {
395
397
  try {
396
- const { data: updates } = await gobi.listBrainUpdates({ limit: 5 });
398
+ const { data: updates } = await gobi.listPersonalPosts({ limit: 5 });
397
399
  const el = document.getElementById('updates');
398
400
  for (const u of updates) {
399
401
  const div = document.createElement('div');
@@ -402,7 +404,7 @@ Single breakpoint at `768px` is enough for most homepages:
402
404
  el.appendChild(div);
403
405
  }
404
406
  } catch (err) {
405
- console.error('Failed to load brain updates:', err);
407
+ console.error('Failed to load personal posts:', err);
406
408
  }
407
409
  }
408
410
 
@@ -10,12 +10,12 @@ description: >-
10
10
  allowed-tools: Bash(gobi:*)
11
11
  metadata:
12
12
  author: gobi-ai
13
- version: "0.8.0"
13
+ version: "2.0.0"
14
14
  ---
15
15
 
16
16
  # gobi-media
17
17
 
18
- Gobi media generation commands (v0.8.0).
18
+ Gobi media generation commands (v2.0.0).
19
19
 
20
20
  Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
21
21
 
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: gobi-saved
3
+ description: >-
4
+ Gobi saved commands for the user's personal saved-knowledge collection:
5
+ saved notes (create/list/get/edit/delete) and saved posts (snapshot a
6
+ post/reply you bookmarked from feed/space; list/get/delete). Use when the
7
+ user wants to capture their own notes or bookmark/manage posts they've
8
+ saved.
9
+ allowed-tools: Bash(gobi:*)
10
+ metadata:
11
+ author: gobi-ai
12
+ version: "2.0.0"
13
+ ---
14
+
15
+ # gobi-saved
16
+
17
+ Gobi saved-knowledge commands (v2.0.0).
18
+
19
+ Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
20
+
21
+ ## What is "saved"?
22
+
23
+ `gobi saved` is the user's personal saved-knowledge collection. It has two subgroups:
24
+
25
+ - **`gobi saved note`** — User-authored notes (private, dated entries).
26
+ - **`gobi saved post`** — Snapshots of posts (or replies) that the user has bookmarked from a space or the global feed.
27
+
28
+ Both are user-private — only the author can see/edit/delete their own items.
29
+
30
+ ## Timezone
31
+
32
+ `gobi saved note list` and `gobi saved note create` need a timezone to compute the calendar day. The CLI auto-detects your system timezone via `Intl.DateTimeFormat().resolvedOptions().timeZone`. Override with `--timezone <iana-name>` (e.g. `America/Los_Angeles`).
33
+
34
+ ## Important: JSON Mode
35
+
36
+ For programmatic/agent usage, always pass `--json` as a **global** option (before the subcommand):
37
+
38
+ ```bash
39
+ gobi --json saved note list --date 2026-04-27
40
+ ```
41
+
42
+ ## Available Commands
43
+
44
+ ### Notes
45
+ - `gobi saved note list` — List your notes. Without `--date`, returns recent notes via cursor pagination. With `--date YYYY-MM-DD`, returns all notes for that day.
46
+ - `gobi saved note get <noteId>` — Get a single note by id.
47
+ - `gobi saved note create --content <md>` — Create a note. Use `'-'` for stdin.
48
+ - `gobi saved note edit <noteId>` — Edit a note. Provide `--content` and/or `--agent-id`.
49
+ - `gobi saved note delete <noteId>` — Delete a note you authored.
50
+
51
+ ### Posts
52
+ - `gobi saved post list` — List posts you have saved (paginated). Filter with `--type all|article|space-post`.
53
+ - `gobi saved post get <postId>` — Get a saved post snapshot by post id.
54
+ - `gobi saved post create --source <id>` — Save a post or reply by id. Records a snapshot in your saved-posts collection.
55
+ - `gobi saved post delete <postId>` — Remove a post from your saved-posts collection.
56
+
57
+ ## Reference Documentation
58
+
59
+ - [gobi saved](references/saved.md)
@@ -0,0 +1,52 @@
1
+ # gobi saved
2
+
3
+ ```
4
+ Usage: gobi saved [options] [command]
5
+
6
+ Saved-knowledge commands (notes and posts).
7
+
8
+ Options:
9
+ -h, --help display help for command
10
+
11
+ Commands:
12
+ note Personal saved notes (create, list, get, edit, delete).
13
+ post Saved posts (snapshots of posts and replies you bookmark).
14
+ help [command] display help for command
15
+ ```
16
+
17
+ ## note
18
+
19
+ ```
20
+ Usage: gobi saved note [options] [command]
21
+
22
+ Personal saved notes (create, list, get, edit, delete).
23
+
24
+ Options:
25
+ -h, --help display help for command
26
+
27
+ Commands:
28
+ list [options] List your notes. Without --date, returns recent notes via cursor pagination. With --date, returns all notes for that day.
29
+ get <noteId> Get a single note by id.
30
+ create [options] Create a note. Provide --content (use '-' for stdin) and/or attachments.
31
+ edit [options] <noteId> Edit a note. Provide --content and/or --agent-id.
32
+ delete <noteId> Delete a note you authored.
33
+ help [command] display help for command
34
+ ```
35
+
36
+ ## post
37
+
38
+ ```
39
+ Usage: gobi saved post [options] [command]
40
+
41
+ Saved posts (snapshots of posts and replies you bookmark).
42
+
43
+ Options:
44
+ -h, --help display help for command
45
+
46
+ Commands:
47
+ list [options] List posts you have saved.
48
+ get <postId> Get a saved post snapshot by post id.
49
+ create [options] Save a post or reply. Records a snapshot in your saved-posts collection.
50
+ delete <postId> Remove a post from your saved-posts collection.
51
+ help [command] display help for command
52
+ ```
@@ -7,23 +7,27 @@ description: >-
7
7
  allowed-tools: Bash(gobi:*)
8
8
  metadata:
9
9
  author: gobi-ai
10
- version: "0.8.0"
10
+ version: "2.0.0"
11
11
  ---
12
12
 
13
13
  # gobi-sense
14
14
 
15
- Gobi sense commands for activity and transcription data (v0.8.0).
15
+ Gobi sense commands for activity and transcription data (v2.0.0).
16
16
 
17
- Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
17
+ Requires gobi-cli installed and authenticated. See the **gobi-core** skill for setup.
18
+
19
+ Activities and transcriptions are captured by Gobi Sense (the wearable) and the mobile app, then ingested via the cloud pipeline. The CLI surface is read-only — fetch records in a time range and feed them to whatever analysis you want to run.
18
20
 
19
21
  ## Important: JSON Mode
20
22
 
21
23
  For programmatic/agent usage, always pass `--json` as a **global** option (before the subcommand):
22
24
 
23
25
  ```bash
24
- gobi --json sense activities --from 2024-01-01 --to 2024-01-31
26
+ gobi --json sense activities --start-time 2026-04-01T00:00:00Z --end-time 2026-04-08T00:00:00Z
25
27
  ```
26
28
 
29
+ Times are ISO 8601 UTC.
30
+
27
31
  ## Available Commands
28
32
 
29
33
  - `gobi sense activities` — Fetch activity records within a time range.