@gobi-ai/cli 2.0.26 → 2.0.28
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.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +15 -18
- package/commands/space-share.md +1 -1
- package/dist/commands/global.js +3 -19
- package/dist/commands/personal.js +2 -8
- package/dist/commands/vault.js +3 -19
- package/package.json +1 -1
- package/skills/gobi-artifact/SKILL.md +2 -2
- package/skills/gobi-core/SKILL.md +4 -12
- package/skills/gobi-homepage/SKILL.md +1 -1
- package/skills/gobi-media/SKILL.md +2 -2
- package/skills/gobi-sense/SKILL.md +2 -2
- package/skills/gobi-space/SKILL.md +18 -19
- package/skills/gobi-space/references/global.md +4 -5
- package/skills/gobi-vault/SKILL.md +6 -9
- package/skills/gobi-vault/references/vault.md +3 -15
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
"name": "gobi-ai"
|
|
5
5
|
},
|
|
6
6
|
"description": "Claude Code plugin for the Gobi collaborative knowledge platform CLI",
|
|
7
|
-
"version": "2.0.
|
|
7
|
+
"version": "2.0.28",
|
|
8
8
|
"plugins": [
|
|
9
9
|
{
|
|
10
10
|
"name": "gobi",
|
|
11
11
|
"description": "Manage the Gobi collaborative knowledge platform from the command line. Publish vault profiles, create posts and replies, generate images and videos.",
|
|
12
|
-
"version": "2.0.
|
|
12
|
+
"version": "2.0.28",
|
|
13
13
|
"author": {
|
|
14
14
|
"name": "gobi-ai"
|
|
15
15
|
},
|
package/README.md
CHANGED
|
@@ -138,10 +138,9 @@ If `.gobi/settings.yaml` is missing, `gobi vault init` and `gobi space warp` are
|
|
|
138
138
|
|
|
139
139
|
| Command | Description |
|
|
140
140
|
|---------|-------------|
|
|
141
|
-
| `gobi vault create <slug> --name <n>` | Create a new vault. Does not change the configured vault — run `gobi vault init`
|
|
141
|
+
| `gobi vault create <slug> --name <n>` | Create a new vault. Does not change the configured vault — run `gobi vault init` afterwards if you want to anchor to it. |
|
|
142
142
|
| `gobi vault rename <newName> [--vault-slug <slug>]` | Rename a vault. Defaults to the configured vault. Local display name only — does not affect `PUBLISH.md` frontmatter. |
|
|
143
143
|
| `gobi vault delete <slug>` | Delete a vault. Irreversible. The API rejects if the vault still owns content; clean up posts, members, and files first. |
|
|
144
|
-
| `gobi vault set-primary <slug>` | Mark a vault as your primary. Unsets primary on the others. |
|
|
145
144
|
| `gobi vault publish` | Upload `PUBLISH.md` to your vault. Triggers profile/metadata refresh. |
|
|
146
145
|
| `gobi vault unpublish` | Remove `PUBLISH.md` from your vault. |
|
|
147
146
|
| `gobi vault status [--vault-slug <slug>]` | Show the configured vault's publish state (`isPublished`), profile fields, file count, and public profile URL. Useful as a pre-flight check before authoring a markdown artifact with `--auto-attachments`. |
|
|
@@ -178,31 +177,29 @@ A *Space* is a community knowledge area. A *Space Post* lives in one space. The
|
|
|
178
177
|
| `gobi space list-topic-posts <topicSlug>` | List posts tagged with a topic |
|
|
179
178
|
| `gobi space list-posts` | List posts in the space |
|
|
180
179
|
| `gobi space get-post <postId> [--full]` | Get a post with its ancestors and replies. `--full` shows reply content without truncation. |
|
|
181
|
-
| `gobi space create-post [--title <t>] (--content <c> \| --rich-text <json>) [--
|
|
182
|
-
| `gobi space edit-post <postId> [--title <t>] [--content <c>]
|
|
180
|
+
| `gobi space create-post [--title <t>] (--content <c> \| --rich-text <json>) [--artifact <artifactId>]… [--repost-post-id <id>] [--attach <file>]…` | Create a space post. Must provide content via `--content` or `--rich-text`. `--artifact` attaches an existing artifact to the post (repeatable). `--repost-post-id` reposts an existing post (sets `repostPostId` on the new post). `--attach` uploads local media to render inline in-feed (repeatable; X-style mix rule — up to 4 photos OR 1 GIF OR 1 video). |
|
|
181
|
+
| `gobi space edit-post <postId> [--title <t>] [--content <c>]` | Edit a space post. |
|
|
183
182
|
| `gobi space delete-post <postId>` | Delete a space post |
|
|
184
|
-
| `gobi space create-reply <postId> (--content <c> \| --rich-text <json>) [--
|
|
185
|
-
| `gobi space edit-reply <replyId> [--content <c>] [--rich-text <json>]
|
|
183
|
+
| `gobi space create-reply <postId> (--content <c> \| --rich-text <json>) [--attach <file>]…` | Create a reply to a space post. `--attach` works the same as on `create-post`. |
|
|
184
|
+
| `gobi space edit-reply <replyId> [--content <c>] [--rich-text <json>]` | Edit a reply you authored. |
|
|
186
185
|
| `gobi space delete-reply <replyId>` | Delete a reply you authored |
|
|
187
186
|
|
|
188
187
|
### Global feed (personal posts)
|
|
189
188
|
|
|
190
|
-
A *Personal Post* surfaces in the public global feed.
|
|
189
|
+
A *Personal Post* surfaces in the public global feed. Same `Post` model as a Space Post, scoped to the user instead of a space.
|
|
191
190
|
|
|
192
191
|
| Command | Description |
|
|
193
192
|
|---------|-------------|
|
|
194
193
|
| `gobi global feed [--following]` | List the global public feed (posts + replies, newest first). `--following` limits to authors you follow. |
|
|
195
|
-
| `gobi global list-posts [--mine]
|
|
194
|
+
| `gobi global list-posts [--mine]` | List personal posts; filter to your own |
|
|
196
195
|
| `gobi global get-post <postId> [--full]` | Get a personal post with its ancestors and replies. `--full` shows reply content without truncation. |
|
|
197
|
-
| `gobi global create-post [--title <t>] (--content <c> \| --rich-text <json>) [--
|
|
198
|
-
| `gobi global edit-post <postId> [--title <t>] [--content <c>]
|
|
196
|
+
| `gobi global create-post [--title <t>] (--content <c> \| --rich-text <json>) [--artifact <artifactId>]… [--repost-post-id <id>] [--attach <file>]…` | Create a personal post. `--artifact` attaches an existing artifact to the post (repeatable). `--repost-post-id` reposts an existing post. `--attach` uploads local media for inline rendering (see `gobi space create-post` above for the mix rule). |
|
|
197
|
+
| `gobi global edit-post <postId> [--title <t>] [--content <c>]` | Edit a personal post you authored. |
|
|
199
198
|
| `gobi global delete-post <postId>` | Delete a personal post you authored |
|
|
200
|
-
| `gobi global create-reply <postId> (--content <c> \| --rich-text <json>) [--
|
|
201
|
-
| `gobi global edit-reply <replyId> [--content <c>] [--rich-text <json>]
|
|
199
|
+
| `gobi global create-reply <postId> (--content <c> \| --rich-text <json>) [--attach <file>]…` | Create a reply to a personal post |
|
|
200
|
+
| `gobi global edit-reply <replyId> [--content <c>] [--rich-text <json>]` | Edit a reply you authored. |
|
|
202
201
|
| `gobi global delete-reply <replyId>` | Delete a reply you authored |
|
|
203
202
|
|
|
204
|
-
`--vault-slug` requires that the caller hold `role: 'owner'` on the target vault. When set, it becomes the post's `authorVaultSlug`.
|
|
205
|
-
|
|
206
203
|
### Personal space (private posts)
|
|
207
204
|
|
|
208
205
|
> Naming note: a **Personal Post** (under `gobi global`, above) is the public-feed kind — it lives on your vault profile and surfaces on the global feed. A **personal-space post** (this section, under `gobi personal`) is the private kind — same `Post` data model, but scoped via `personalSpaceUserId` so only you can see it.
|
|
@@ -214,11 +211,11 @@ Private posts and replies visible only to you. Same `Post` data model and subcom
|
|
|
214
211
|
| `gobi personal feed` | Your personal-space feed (posts + replies, newest first) |
|
|
215
212
|
| `gobi personal list-posts` | List personal-space posts |
|
|
216
213
|
| `gobi personal get-post <postId> [--full]` | Get a personal-space post with its ancestors and replies |
|
|
217
|
-
| `gobi personal create-post [--title <t>] (--content <c> \| --rich-text <json>) [--
|
|
218
|
-
| `gobi personal edit-post <postId> [--title <t>] [--content <c>]
|
|
214
|
+
| `gobi personal create-post [--title <t>] (--content <c> \| --rich-text <json>) [--artifact <artifactId>]… [--repost-post-id <id>] [--attach <file>]…` | Create a private post in your personal space. `--artifact` attaches an existing artifact to the post (repeatable). `--attach` works the same as on `gobi global create-post`. |
|
|
215
|
+
| `gobi personal edit-post <postId> [--title <t>] [--content <c>]` | Edit a personal-space post you authored |
|
|
219
216
|
| `gobi personal delete-post <postId>` | Delete a personal-space post you authored |
|
|
220
|
-
| `gobi personal create-reply <postId> (--content <c> \| --rich-text <json>) [--
|
|
221
|
-
| `gobi personal edit-reply <replyId> [--content <c>] [--rich-text <json>]
|
|
217
|
+
| `gobi personal create-reply <postId> (--content <c> \| --rich-text <json>) [--attach <file>]…` | Reply to a personal-space post (inherits the parent's private scope) |
|
|
218
|
+
| `gobi personal edit-reply <replyId> [--content <c>] [--rich-text <json>]` | Edit a reply you authored |
|
|
222
219
|
| `gobi personal delete-reply <replyId>` | Delete a reply you authored |
|
|
223
220
|
|
|
224
221
|
### Sense
|
package/commands/space-share.md
CHANGED
|
@@ -14,7 +14,7 @@ First, verify the user is set up:
|
|
|
14
14
|
gobi --json auth status
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
Check that `.gobi/settings.yaml` exists. If you plan to publish to a Space (`gobi space create-post`), it must contain `selectedSpaceSlug` — otherwise stop and ask the user to run `gobi space warp` first.
|
|
17
|
+
Check that `.gobi/settings.yaml` exists. If you plan to publish to a Space (`gobi space create-post`), it must contain `selectedSpaceSlug` — otherwise stop and ask the user to run `gobi space warp` first.
|
|
18
18
|
|
|
19
19
|
## Draft a personal post
|
|
20
20
|
|
package/dist/commands/global.js
CHANGED
|
@@ -8,14 +8,7 @@ function readContent(value) {
|
|
|
8
8
|
return value;
|
|
9
9
|
}
|
|
10
10
|
function buildPersonalPostUrl(post) {
|
|
11
|
-
|
|
12
|
-
const vaultSlug = post.vault?.vaultSlug ||
|
|
13
|
-
post.authorVault?.vaultSlug ||
|
|
14
|
-
post.authorVaultSlug ||
|
|
15
|
-
undefined;
|
|
16
|
-
return vaultSlug
|
|
17
|
-
? `${WEB_BASE_URL}/@${vaultSlug}?postId=${id}`
|
|
18
|
-
: `${WEB_BASE_URL}/posts/${id}`;
|
|
11
|
+
return `${WEB_BASE_URL}/posts/${post.id}`;
|
|
19
12
|
}
|
|
20
13
|
function formatFeedLine(m) {
|
|
21
14
|
const isReply = m.parentPostId != null ||
|
|
@@ -79,7 +72,6 @@ export function registerGlobalCommand(program) {
|
|
|
79
72
|
.option("--limit <number>", "Items per page", "20")
|
|
80
73
|
.option("--cursor <string>", "Pagination cursor from previous response")
|
|
81
74
|
.option("--mine", "Only include posts authored by you")
|
|
82
|
-
.option("--vault-slug <vaultSlug>", "Filter by author vault slug")
|
|
83
75
|
.action(async (opts) => {
|
|
84
76
|
const params = {
|
|
85
77
|
limit: parseInt(opts.limit, 10),
|
|
@@ -88,8 +80,6 @@ export function registerGlobalCommand(program) {
|
|
|
88
80
|
params.cursor = opts.cursor;
|
|
89
81
|
if (opts.mine)
|
|
90
82
|
params.mine = "true";
|
|
91
|
-
if (opts.vaultSlug)
|
|
92
|
-
params.vaultSlug = opts.vaultSlug;
|
|
93
83
|
const resp = (await apiGet(`/posts`, params));
|
|
94
84
|
if (isJsonMode(global)) {
|
|
95
85
|
jsonOut({
|
|
@@ -108,10 +98,7 @@ export function registerGlobalCommand(program) {
|
|
|
108
98
|
for (const t of items) {
|
|
109
99
|
const author = t.author?.name ||
|
|
110
100
|
`User ${t.authorId}`;
|
|
111
|
-
|
|
112
|
-
t.authorVault?.vaultSlug ||
|
|
113
|
-
"?";
|
|
114
|
-
lines.push(`- [${t.id}] "${t.title}" by ${author} (vault: ${vaultSlug}, ${t.replyCount ?? 0} replies, ${t.createdAt})`);
|
|
101
|
+
lines.push(`- [${t.id}] "${t.title}" by ${author} (${t.replyCount ?? 0} replies, ${t.createdAt})`);
|
|
115
102
|
}
|
|
116
103
|
const footer = pagination.hasMore ? `\n Next cursor: ${pagination.nextCursor}` : "";
|
|
117
104
|
console.log(`Posts (${items.length} items):\n` + lines.join("\n") + footer);
|
|
@@ -146,9 +133,6 @@ export function registerGlobalCommand(program) {
|
|
|
146
133
|
const replies = (data.replies || []);
|
|
147
134
|
const author = post.author?.name ||
|
|
148
135
|
`User ${post.authorId}`;
|
|
149
|
-
const vault = post.vault?.vaultSlug ||
|
|
150
|
-
post.authorVault?.vaultSlug ||
|
|
151
|
-
"?";
|
|
152
136
|
const ancestorLines = [];
|
|
153
137
|
if (ancestors.length) {
|
|
154
138
|
ancestors.forEach((a, i) => {
|
|
@@ -169,7 +153,7 @@ export function registerGlobalCommand(program) {
|
|
|
169
153
|
: `Post: ${post.title || "(no title)"}`;
|
|
170
154
|
const output = [
|
|
171
155
|
heading,
|
|
172
|
-
`By: ${author}
|
|
156
|
+
`By: ${author} on ${post.createdAt}`,
|
|
173
157
|
...(ancestorLines.length
|
|
174
158
|
? ["", `Ancestors (${ancestors.length} items, root first):`, ...ancestorLines]
|
|
175
159
|
: []),
|
|
@@ -93,10 +93,7 @@ export function registerPersonalCommand(program) {
|
|
|
93
93
|
}
|
|
94
94
|
const lines = [];
|
|
95
95
|
for (const t of items) {
|
|
96
|
-
|
|
97
|
-
t.authorVault?.vaultSlug ||
|
|
98
|
-
"—";
|
|
99
|
-
lines.push(`- [${t.id}] "${t.title ?? "(no title)"}" (vault: ${vaultSlug}, ${t.replyCount ?? 0} replies, ${t.createdAt})`);
|
|
96
|
+
lines.push(`- [${t.id}] "${t.title ?? "(no title)"}" (${t.replyCount ?? 0} replies, ${t.createdAt})`);
|
|
100
97
|
}
|
|
101
98
|
const footer = pagination.hasMore ? `\n Next cursor: ${pagination.nextCursor}` : "";
|
|
102
99
|
console.log(`Personal-space posts (${items.length} of ${allItems.length} feed items):\n` +
|
|
@@ -138,9 +135,6 @@ export function registerPersonalCommand(program) {
|
|
|
138
135
|
const replies = (data.replies || []);
|
|
139
136
|
const author = post.author?.name ||
|
|
140
137
|
`User ${post.authorId}`;
|
|
141
|
-
const vault = post.vault?.vaultSlug ||
|
|
142
|
-
post.authorVault?.vaultSlug ||
|
|
143
|
-
"—";
|
|
144
138
|
const ancestorLines = [];
|
|
145
139
|
if (ancestors.length) {
|
|
146
140
|
ancestors.forEach((a, i) => {
|
|
@@ -161,7 +155,7 @@ export function registerPersonalCommand(program) {
|
|
|
161
155
|
: `Post: ${post.title || "(no title)"} (private)`;
|
|
162
156
|
const output = [
|
|
163
157
|
heading,
|
|
164
|
-
`By: ${author}
|
|
158
|
+
`By: ${author} on ${post.createdAt}`,
|
|
165
159
|
...(ancestorLines.length
|
|
166
160
|
? ["", `Ancestors (${ancestors.length} items, root first):`, ...ancestorLines]
|
|
167
161
|
: []),
|
package/dist/commands/vault.js
CHANGED
|
@@ -20,7 +20,7 @@ export function registerVaultCommand(program) {
|
|
|
20
20
|
});
|
|
21
21
|
vault
|
|
22
22
|
.command("create <slug>")
|
|
23
|
-
.description("Create a new vault. <slug> must be unique (use 'gobi vault list' to see existing slugs); --name sets the display name. Does not change the configured vault — run 'gobi vault init'
|
|
23
|
+
.description("Create a new vault. <slug> must be unique (use 'gobi vault list' to see existing slugs); --name sets the display name. Does not change the configured vault — run 'gobi vault init' afterwards if you want to anchor to it.")
|
|
24
24
|
.requiredOption("--name <name>", "Display name for the new vault")
|
|
25
25
|
.action(async (slug, opts) => {
|
|
26
26
|
const resp = (await apiPost("/vault", {
|
|
@@ -61,20 +61,6 @@ export function registerVaultCommand(program) {
|
|
|
61
61
|
}
|
|
62
62
|
console.log(`Deleted vault [${slug}].`);
|
|
63
63
|
});
|
|
64
|
-
vault
|
|
65
|
-
.command("set-primary <slug>")
|
|
66
|
-
.description("Mark a vault as your primary. Unsets primary on the other vaults you own. Slug must be passed explicitly.")
|
|
67
|
-
.action(async (slug) => {
|
|
68
|
-
const resp = (await apiPatch(`/vault/${slug}`, {
|
|
69
|
-
isPrimary: true,
|
|
70
|
-
}));
|
|
71
|
-
const v = unwrapResp(resp);
|
|
72
|
-
if (isJsonMode(vault)) {
|
|
73
|
-
jsonOut(v);
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
console.log(`Set [${slug}] as primary vault.`);
|
|
77
|
-
});
|
|
78
64
|
vault
|
|
79
65
|
.command("list")
|
|
80
66
|
.description("List vaults you own.")
|
|
@@ -96,8 +82,7 @@ export function registerVaultCommand(program) {
|
|
|
96
82
|
const lines = [];
|
|
97
83
|
for (const v of items) {
|
|
98
84
|
const slug = (v.vaultId || v.slug);
|
|
99
|
-
|
|
100
|
-
lines.push(`- [${slug}] ${v.name}${isPrimary}`);
|
|
85
|
+
lines.push(`- [${slug}] ${v.name}`);
|
|
101
86
|
}
|
|
102
87
|
console.log(`Vaults (${items.length}):\n` + lines.join("\n"));
|
|
103
88
|
});
|
|
@@ -122,7 +107,6 @@ export function registerVaultCommand(program) {
|
|
|
122
107
|
const status = {
|
|
123
108
|
vaultSlug: slug,
|
|
124
109
|
name: v.name,
|
|
125
|
-
isPrimary: !!v.isPrimary,
|
|
126
110
|
isPublished,
|
|
127
111
|
title: v.title ?? null,
|
|
128
112
|
description: v.description ?? null,
|
|
@@ -140,7 +124,7 @@ export function registerVaultCommand(program) {
|
|
|
140
124
|
return;
|
|
141
125
|
}
|
|
142
126
|
const lines = [
|
|
143
|
-
`Vault: [${slug}] ${v.name}
|
|
127
|
+
`Vault: [${slug}] ${v.name}`,
|
|
144
128
|
` Published: ${isPublished ? "yes" : "no"}`,
|
|
145
129
|
];
|
|
146
130
|
if (!isPublished) {
|
package/package.json
CHANGED
|
@@ -9,12 +9,12 @@ description: >-
|
|
|
9
9
|
allowed-tools: Bash(gobi:*)
|
|
10
10
|
metadata:
|
|
11
11
|
author: gobi-ai
|
|
12
|
-
version: "2.0.
|
|
12
|
+
version: "2.0.28"
|
|
13
13
|
---
|
|
14
14
|
|
|
15
15
|
# gobi-artifact
|
|
16
16
|
|
|
17
|
-
Gobi artifact commands for versioned, post-attachable creations (v2.0.
|
|
17
|
+
Gobi artifact commands for versioned, post-attachable creations (v2.0.28).
|
|
18
18
|
|
|
19
19
|
Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
|
|
20
20
|
|
|
@@ -8,12 +8,12 @@ description: >-
|
|
|
8
8
|
allowed-tools: Bash(gobi:*)
|
|
9
9
|
metadata:
|
|
10
10
|
author: gobi-ai
|
|
11
|
-
version: "2.0.
|
|
11
|
+
version: "2.0.28"
|
|
12
12
|
---
|
|
13
13
|
|
|
14
14
|
# gobi-core
|
|
15
15
|
|
|
16
|
-
Core CLI commands for the Gobi collaborative knowledge platform (v2.0.
|
|
16
|
+
Core CLI commands for the Gobi collaborative knowledge platform (v2.0.28).
|
|
17
17
|
|
|
18
18
|
## Prerequisites
|
|
19
19
|
|
|
@@ -77,16 +77,8 @@ gobi auth status
|
|
|
77
77
|
| `vault init` | no (it sets it up) | no | – |
|
|
78
78
|
| `space list` / `warp [slug]` / `get [slug]` | no | no | – |
|
|
79
79
|
| `space list-topics` / `feed` / `list-posts` / `get-post` / `create-post` / `edit-post` / `delete-post` / `create-reply` / `edit-reply` / `delete-reply` / `list-topic-posts` | no | **yes** | parent `--space-slug <slug>` |
|
|
80
|
-
| `global feed` / `list-posts` / `get-post` / `delete-post` / `create-reply` / `edit-reply` / `delete-reply` | no | no | – |
|
|
81
|
-
| `
|
|
82
|
-
| `global edit-post` | optional² | no | command-level `--vault-slug <slug>` |
|
|
83
|
-
| `personal feed` / `list-posts` / `get-post` / `delete-post` / `create-reply` / `edit-reply` / `delete-reply` | no | no | – |
|
|
84
|
-
| `personal create-post` | optional¹ | no | command-level `--vault-slug <slug>` |
|
|
85
|
-
| `personal edit-post` | optional² | no | command-level `--vault-slug <slug>` |
|
|
86
|
-
|
|
87
|
-
¹ `global create-post` accepts `--vault-slug`, optional. With no flag and no `vaultSlug` in `.gobi`, the post is created with no `authorVaultSlug` (vault-less personal post) — same as a Space post that isn't attributed to any vault. Set `--vault-slug` to attribute it.
|
|
88
|
-
|
|
89
|
-
² `global edit-post` only consults `--vault-slug` when you pass it explicitly. Use `--vault-slug ""` to detach an existing attribution; non-empty re-attaches.
|
|
80
|
+
| `global feed` / `list-posts` / `get-post` / `create-post` / `edit-post` / `delete-post` / `create-reply` / `edit-reply` / `delete-reply` | no | no | – |
|
|
81
|
+
| `personal feed` / `list-posts` / `get-post` / `create-post` / `edit-post` / `delete-post` / `create-reply` / `edit-reply` / `delete-reply` | no | no | – |
|
|
90
82
|
|
|
91
83
|
When a command needs vault or space and neither `.gobi` nor an override flag provides it, the CLI prints a one-line warning before the command runs (e.g. `Vault not set. Run 'gobi vault init' first, or pass --vault-slug.`). The warning is suppressed under `--json`.
|
|
92
84
|
|
|
@@ -10,12 +10,12 @@ description: >-
|
|
|
10
10
|
allowed-tools: Bash(gobi:*)
|
|
11
11
|
metadata:
|
|
12
12
|
author: gobi-ai
|
|
13
|
-
version: "2.0.
|
|
13
|
+
version: "2.0.28"
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# gobi-media
|
|
17
17
|
|
|
18
|
-
Gobi media generation commands (v2.0.
|
|
18
|
+
Gobi media generation commands (v2.0.28).
|
|
19
19
|
|
|
20
20
|
Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
|
|
21
21
|
|
|
@@ -7,12 +7,12 @@ description: >-
|
|
|
7
7
|
allowed-tools: Bash(gobi:*)
|
|
8
8
|
metadata:
|
|
9
9
|
author: gobi-ai
|
|
10
|
-
version: "2.0.
|
|
10
|
+
version: "2.0.28"
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# gobi-sense
|
|
14
14
|
|
|
15
|
-
Gobi sense commands for activity and transcription data (v2.0.
|
|
15
|
+
Gobi sense commands for activity and transcription data (v2.0.28).
|
|
16
16
|
|
|
17
17
|
Requires gobi-cli installed and authenticated. See the **gobi-core** skill for setup.
|
|
18
18
|
|
|
@@ -11,12 +11,12 @@ description: >-
|
|
|
11
11
|
allowed-tools: Bash(gobi:*)
|
|
12
12
|
metadata:
|
|
13
13
|
author: gobi-ai
|
|
14
|
-
version: "2.0.
|
|
14
|
+
version: "2.0.28"
|
|
15
15
|
---
|
|
16
16
|
|
|
17
17
|
# gobi-space
|
|
18
18
|
|
|
19
|
-
Gobi space, global, and personal-space posts (v2.0.
|
|
19
|
+
Gobi space, global, and personal-space posts (v2.0.28).
|
|
20
20
|
|
|
21
21
|
Requires gobi-cli installed and authenticated. See the **gobi-core** skill for setup.
|
|
22
22
|
|
|
@@ -25,10 +25,10 @@ Requires gobi-cli installed and authenticated. See the **gobi-core** skill for s
|
|
|
25
25
|
The same `Post` data type drives all three surfaces — the difference is **scope**:
|
|
26
26
|
|
|
27
27
|
- **Space Post** — `gobi space …` — lives in a community space's feed.
|
|
28
|
-
- **Personal Post** — `gobi global …` —
|
|
28
|
+
- **Personal Post** — `gobi global …` — lives on the public global feed.
|
|
29
29
|
- **Personal-space Post** — `gobi personal …` — private posts and replies visible only to the author. Same shape as `gobi global`, scoped via `personalSpaceUserId` so they never surface on the public feed.
|
|
30
30
|
|
|
31
|
-
Anything you can do to a Space Post (reply, edit, delete
|
|
31
|
+
Anything you can do to a Space Post (reply, edit, delete) you can do to a Personal Post or a Personal-space Post.
|
|
32
32
|
|
|
33
33
|
- When the user wants to explore or catch up on what's happening in their space, invoke `/gobi:space-explore`.
|
|
34
34
|
- When the user wants to share or post learnings from the current session, invoke `/gobi:space-share`.
|
|
@@ -45,9 +45,9 @@ Anything you can do to a Space Post (reply, edit, delete, attribute to a vault)
|
|
|
45
45
|
|
|
46
46
|
The same applies to replies: a reply has only `--content` (no title), so do not synthesize a title-like heading at the top of a reply either.
|
|
47
47
|
|
|
48
|
-
##
|
|
48
|
+
## Attaching artifacts (`--artifact`)
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
Posts have no vault attribution. `create-post` across all three scopes (`gobi space`, `gobi global`, `gobi personal`) accepts `--artifact <artifactId>` (repeatable) to attach existing artifacts to the post. To author a vault-anchored document, create a markdown artifact (`gobi artifact create --kind markdown --vault-slug <slug>`) and attach it via `--artifact`. See the **gobi-artifact** skill.
|
|
51
51
|
|
|
52
52
|
> **Wiki-link uploads moved to artifacts.** The `--auto-attachments` flag that used to upload `[[wiki-linked files]]` from a post body now lives on `gobi artifact create` / `gobi artifact revise` (markdown kinds). To publish a markdown creation with resolvable wikilinks, create a markdown artifact with `--vault-slug` + `--auto-attachments` and attach it to the post (`--post-id`). See the **gobi-artifact** skill. Before relying on wikilink resolution, confirm the anchor vault is published: `gobi --json vault status --vault-slug <slug>` should report `isPublished: true`.
|
|
53
53
|
|
|
@@ -63,13 +63,12 @@ Use `--attach` for media you want shown in the post itself; use a markdown **art
|
|
|
63
63
|
|
|
64
64
|
Once a post is created, you can build a shareable URL from the response:
|
|
65
65
|
|
|
66
|
-
- **Personal post
|
|
67
|
-
- **Personal post without a vault** (created with no `--vault-slug`) — use `https://gobispace.com/posts/{id}` as a direct fallback.
|
|
66
|
+
- **Personal post** — `https://gobispace.com/posts/{id}` (e.g. `https://gobispace.com/posts/144869`). This is the canonical share link for `gobi global` posts.
|
|
68
67
|
- **Space post** — `https://gobispace.com/spaces/{spaceSlug}?postId={id}` (overlay on the space feed) or `https://gobispace.com/spaces/{spaceSlug}/posts/{id}` (dedicated page).
|
|
69
68
|
- **Vault profile** — `https://gobispace.com/@{vaultSlug}`.
|
|
70
69
|
- **Vault file** — `https://gobispace.com/file/{vaultSlug}?path={path}` (e.g. `https://gobispace.com/file/jyk?path=notes/intro.md`). First-class URL for linking to a single file from a published vault — renders in the main feed chrome (not the vault homepage). Use this when a post body or reply needs to point readers at a specific vault file. URL-encode each path segment. See **gobi-vault** skill for full semantics.
|
|
71
70
|
|
|
72
|
-
When you echo a "Post created!" line (or the JSON response is consumed by another agent), include the assembled URL using the fields actually returned
|
|
71
|
+
When you echo a "Post created!" line (or the JSON response is consumed by another agent), include the assembled URL using the fields actually returned — `id` for global posts, `spaceSlug` + `id` for space posts. Don't fabricate slugs.
|
|
73
72
|
|
|
74
73
|
## Prerequisites & space slug
|
|
75
74
|
|
|
@@ -84,7 +83,7 @@ When you echo a "Post created!" line (or the JSON response is consumed by anothe
|
|
|
84
83
|
|
|
85
84
|
If `.gobi/settings.yaml` has no `selectedSpaceSlug` and `--space-slug` isn't passed, the command will error.
|
|
86
85
|
|
|
87
|
-
`gobi global` commands target the public global feed and have no space requirement and no `.gobi` requirement. `gobi global create-post` is symmetric with `gobi space create-post`:
|
|
86
|
+
`gobi global` commands target the public global feed and have no space requirement and no `.gobi` requirement. `gobi global create-post` is symmetric with `gobi space create-post`: attach existing artifacts with `--artifact <artifactId>` (repeatable).
|
|
88
87
|
|
|
89
88
|
## Important: JSON Mode
|
|
90
89
|
|
|
@@ -112,8 +111,8 @@ gobi --json space list-posts
|
|
|
112
111
|
### Space posts
|
|
113
112
|
- `gobi space list-posts` — List posts in a space (paginated).
|
|
114
113
|
- `gobi space get-post <postId>` — Get a post with its ancestors and replies (paginated). Ancestors and replies are returned together; there is no separate `ancestors` or `list-replies` command.
|
|
115
|
-
- `gobi space create-post` — Create a space post. `--
|
|
116
|
-
- `gobi space edit-post <postId>` — Edit a space post. You must be the author.
|
|
114
|
+
- `gobi space create-post` — Create a space post. `--artifact <artifactId>` (repeatable) attaches existing artifacts.
|
|
115
|
+
- `gobi space edit-post <postId>` — Edit a space post. You must be the author.
|
|
117
116
|
- `gobi space delete-post <postId>` — Delete a space post. You must be the author.
|
|
118
117
|
|
|
119
118
|
### Space replies
|
|
@@ -126,25 +125,25 @@ gobi --json space list-posts
|
|
|
126
125
|
`gobi global` is the same surface for Personal Posts — posts that live on the author's profile and surface in the public global feed.
|
|
127
126
|
|
|
128
127
|
- `gobi global feed` — List the public global feed (posts and replies, newest first).
|
|
129
|
-
- `gobi global list-posts` — List personal posts. `--mine` for your own
|
|
128
|
+
- `gobi global list-posts` — List personal posts. `--mine` for your own.
|
|
130
129
|
- `gobi global get-post <postId>` — Get a personal post with its ancestors and replies.
|
|
131
|
-
- `gobi global create-post` — Create a personal post. `--
|
|
132
|
-
- `gobi global edit-post <postId>` — Edit a personal post you authored.
|
|
130
|
+
- `gobi global create-post` — Create a personal post. `--artifact <artifactId>` (repeatable) attaches existing artifacts.
|
|
131
|
+
- `gobi global edit-post <postId>` — Edit a personal post you authored.
|
|
133
132
|
- `gobi global delete-post <postId>` — Delete a personal post you authored.
|
|
134
133
|
- `gobi global create-reply <postId>` — Reply to a personal post.
|
|
135
|
-
- `gobi global edit-reply <replyId>` — Edit a reply you authored.
|
|
134
|
+
- `gobi global edit-reply <replyId>` — Edit a reply you authored.
|
|
136
135
|
- `gobi global delete-reply <replyId>` — Delete a reply you authored.
|
|
137
136
|
|
|
138
137
|
### Personal-space posts (private)
|
|
139
138
|
|
|
140
139
|
`gobi personal` mirrors `gobi global`'s subcommand and write-flag shape, but every row is scoped to a private personal space (`personalSpaceUserId`). Nothing here surfaces on the public global feed — these posts are visible only to you. Use for private notes-as-posts, scratch drafts, or any post you want to author against your vault without making it public.
|
|
141
140
|
|
|
142
|
-
A couple of read-side flags don't mirror — `personal feed` has no `--following` (there's no follow graph in a private space), and `personal list-posts` has no `--mine`
|
|
141
|
+
A couple of read-side flags don't mirror — `personal feed` has no `--following` (there's no follow graph in a private space), and `personal list-posts` has no `--mine` (everything in the personal space is already yours).
|
|
143
142
|
|
|
144
143
|
- `gobi personal feed` — Your personal-space feed (posts and replies, newest first).
|
|
145
144
|
- `gobi personal list-posts` — List your personal-space posts.
|
|
146
145
|
- `gobi personal get-post <postId>` — Get a personal-space post with its ancestors and replies.
|
|
147
|
-
- `gobi personal create-post` — Create a private personal-space post. Same flags as `gobi global create-post` (`--
|
|
146
|
+
- `gobi personal create-post` — Create a private personal-space post. Same flags as `gobi global create-post` (`--artifact`, `--repost-post-id`, `--attach`).
|
|
148
147
|
- `gobi personal edit-post <postId>` — Edit a personal-space post you authored.
|
|
149
148
|
- `gobi personal delete-post <postId>` — Delete a personal-space post you authored.
|
|
150
149
|
- `gobi personal create-reply <postId>` — Reply to a personal-space post (inherits the parent's private scope).
|
|
@@ -153,7 +152,7 @@ A couple of read-side flags don't mirror — `personal feed` has no `--following
|
|
|
153
152
|
|
|
154
153
|
## Confirm before mutating
|
|
155
154
|
|
|
156
|
-
Most posts and replies are publicly visible — in a community space (`gobi space …`) or in the global feed (`gobi global …`). `gobi personal …` is the exception: those rows are private to the author. Either way, before running any write, confirm with the user — show the exact command and the resolved title, content (or a short preview), and
|
|
155
|
+
Most posts and replies are publicly visible — in a community space (`gobi space …`) or in the global feed (`gobi global …`). `gobi personal …` is the exception: those rows are private to the author. Either way, before running any write, confirm with the user — show the exact command and the resolved title, content (or a short preview), and any attached artifact ids. This applies even when running autonomously.
|
|
157
156
|
|
|
158
157
|
- `create-post` / `create-reply` — content goes live on submission.
|
|
159
158
|
- `edit-post` / `edit-reply` — confirm the *new* content; people who already saw the original may re-see it.
|
|
@@ -43,11 +43,10 @@ Usage: gobi global list-posts [options]
|
|
|
43
43
|
List posts in the global feed (paginated). Pass --mine to limit to your own posts.
|
|
44
44
|
|
|
45
45
|
Options:
|
|
46
|
-
--limit <number>
|
|
47
|
-
--cursor <string>
|
|
48
|
-
--mine
|
|
49
|
-
|
|
50
|
-
-h, --help display help for command
|
|
46
|
+
--limit <number> Items per page (default: "20")
|
|
47
|
+
--cursor <string> Pagination cursor from previous response
|
|
48
|
+
--mine Only include posts authored by you
|
|
49
|
+
-h, --help display help for command
|
|
51
50
|
```
|
|
52
51
|
|
|
53
52
|
## get-post
|
|
@@ -8,12 +8,12 @@ description: >-
|
|
|
8
8
|
allowed-tools: Bash(gobi:*)
|
|
9
9
|
metadata:
|
|
10
10
|
author: gobi-ai
|
|
11
|
-
version: "2.0.
|
|
11
|
+
version: "2.0.28"
|
|
12
12
|
---
|
|
13
13
|
|
|
14
14
|
# gobi-vault
|
|
15
15
|
|
|
16
|
-
Gobi vault commands for publishing your vault profile and syncing files (v2.0.
|
|
16
|
+
Gobi vault commands for publishing your vault profile and syncing files (v2.0.28).
|
|
17
17
|
|
|
18
18
|
Requires gobi-cli installed and authenticated. See gobi-core skill for setup.
|
|
19
19
|
|
|
@@ -23,7 +23,7 @@ Most `gobi vault …` commands resolve the target vault from the current directo
|
|
|
23
23
|
|
|
24
24
|
Exceptions:
|
|
25
25
|
- `vault init`, `vault list`, `vault create <slug>` — no `.gobi` required.
|
|
26
|
-
- `vault delete <slug
|
|
26
|
+
- `vault delete <slug>` — slug is a positional, no `.gobi` fallback.
|
|
27
27
|
- `vault rename <newName>`, `vault status` — accept an optional `--vault-slug <slug>` to target a vault other than the one in `.gobi`.
|
|
28
28
|
|
|
29
29
|
## Gobi Vault
|
|
@@ -41,11 +41,10 @@ gobi --json vault publish
|
|
|
41
41
|
## Available Commands
|
|
42
42
|
|
|
43
43
|
- `gobi vault init` — Interactive: select an existing vault or create a new one. Writes `vaultSlug` to `.gobi/settings.yaml` in the current directory and seeds `PUBLISH.md`. Requires the user to be logged in (`gobi auth login`).
|
|
44
|
-
- `gobi vault list` — List vaults you own.
|
|
44
|
+
- `gobi vault list` — List vaults you own.
|
|
45
45
|
- `gobi vault status` — Show the configured vault's publish state (`isPublished`), profile fields (`title`, `description`, `tags`), referenced files (`thumbnailPath`, `homepagePath`, `promptPath`), file count, and the public profile URL. Use this as a diagnostic before authoring a markdown artifact with `--auto-attachments` (see gobi-artifact skill) to confirm the vault is public — files uploaded to a non-public vault are stored on webdrive but are not visible at `gobispace.com/@{vaultSlug}` until you run `gobi vault publish`.
|
|
46
|
-
- `gobi vault create <slug> --name <name>` — Create a new vault with the given slug and display name. Slug must be unique (use `vault list` to see what's taken). Does not change the configured vault — run `vault init` here
|
|
46
|
+
- `gobi vault create <slug> --name <name>` — Create a new vault with the given slug and display name. Slug must be unique (use `vault list` to see what's taken). Does not change the configured vault — run `vault init` here afterwards if you want to anchor to it.
|
|
47
47
|
- `gobi vault rename <newName>` — Rename the configured vault's display name. Pass `--vault-slug <slug>` to target another vault. Local handle only — the public profile title comes from `PUBLISH.md` frontmatter and is unaffected.
|
|
48
|
-
- `gobi vault set-primary <slug>` — Mark a vault as your primary. Unsets primary on the others. Required arg, no `.gobi` fallback (avoids accidental promotion).
|
|
49
48
|
- `gobi vault delete <slug>` — Delete a vault. Irreversible. Required arg, no `.gobi` fallback. The API will reject if the vault still owns content; clean up posts, members, and files first.
|
|
50
49
|
- `gobi vault publish` — Upload `PUBLISH.md` to the vault root on webdrive. Triggers post-processing (vault profile sync, metadata update).
|
|
51
50
|
- `gobi vault unpublish` — Delete `PUBLISH.md` from the vault on webdrive.
|
|
@@ -56,11 +55,10 @@ gobi --json vault publish
|
|
|
56
55
|
Once a vault is published (i.e. `gobi vault status` reports `isPublished: yes`), it is reachable at predictable URLs:
|
|
57
56
|
|
|
58
57
|
- **Vault profile** — `https://gobispace.com/@{vaultSlug}` (e.g. `https://gobispace.com/@jyk`).
|
|
59
|
-
- **Direct link to a personal post on the vault** — `https://gobispace.com/@{vaultSlug}?postId={postId}` (e.g. `https://gobispace.com/@jyk?postId=144869`). Open in the vault profile with that post focused.
|
|
60
58
|
- **Direct link to a vault file** — `https://gobispace.com/file/{vaultSlug}?path={path}` (e.g. `https://gobispace.com/file/jyk?path=notes/intro.md`). This is the first-class URL for sharing a single file from a vault — use it whenever you want a reader to land on one specific file. The page renders inside the main feed chrome (sidebar + header), so readers stay in `gobispace.com` instead of pivoting to the vault homepage. Paths without an extension are treated as markdown (the same wikilink-stem resolution webdrive uses), so `?path=intro` and `?path=intro.md` both resolve. URL-encode each path segment when assembling.
|
|
61
59
|
- **Custom homepage** — when `homepage` is set in `PUBLISH.md` frontmatter, the vault profile URL renders that HTML file. See **gobi-homepage** skill.
|
|
62
60
|
|
|
63
|
-
When linking
|
|
61
|
+
When linking to a vault file, assemble the URL from concrete fields (the vault's `vaultSlug` + the file's path) rather than guessing.
|
|
64
62
|
|
|
65
63
|
## Confirm before mutating
|
|
66
64
|
|
|
@@ -70,7 +68,6 @@ Every command in this skill writes external state — webdrive files and the pub
|
|
|
70
68
|
- `vault unpublish` — removes the live profile. Always confirm.
|
|
71
69
|
- `vault sync` — can overwrite remote or local files. Run `--dry-run` first and show the user the plan before re-running without `--dry-run`. With `--conflict server` or `--conflict client`, name which side is going to be overwritten.
|
|
72
70
|
- `vault delete <slug>` — irreversible; cannot undo. Confirm the slug and that the user actually means to delete *that* vault before running.
|
|
73
|
-
- `vault set-primary <slug>` — flips which vault is treated as primary across the user's account. Confirm the target.
|
|
74
71
|
- `vault create` / `vault rename` — creating spends a slug permanently; renaming is reversible but visible. Show the user the resolved slug + name before running.
|
|
75
72
|
|
|
76
73
|
## PUBLISH.md Frontmatter Reference
|
|
@@ -11,12 +11,11 @@ Options:
|
|
|
11
11
|
Commands:
|
|
12
12
|
init Select or create the vault for the current directory. Writes .gobi/settings.yaml and seeds PUBLISH.md.
|
|
13
13
|
create [options] <slug> Create a new vault. <slug> must be unique (use 'gobi vault list' to see existing slugs); --name sets the display name. Does not change the configured vault — run 'gobi
|
|
14
|
-
vault init'
|
|
14
|
+
vault init' afterwards if you want to anchor to it.
|
|
15
15
|
rename [options] <newName> Rename a vault. Defaults to the configured vault (.gobi/settings.yaml); pass --vault-slug to target another. Does not affect PUBLISH.md frontmatter (which controls the
|
|
16
16
|
public profile title) — this is the local display name only.
|
|
17
17
|
delete <slug> Delete a vault. Irreversible. Slug must be passed explicitly (no .gobi fallback). The API will reject if the vault still owns content; clean up posts, members, and files
|
|
18
18
|
first.
|
|
19
|
-
set-primary <slug> Mark a vault as your primary. Unsets primary on the other vaults you own. Slug must be passed explicitly.
|
|
20
19
|
list List vaults you own.
|
|
21
20
|
status [options] Show the configured vault's publish state and metadata (use before authoring a markdown artifact with --auto-attachments to confirm the vault is public).
|
|
22
21
|
publish Upload PUBLISH.md to the vault root on webdrive. Triggers post-processing (vault sync, metadata update).
|
|
@@ -41,8 +40,8 @@ Options:
|
|
|
41
40
|
```
|
|
42
41
|
Usage: gobi vault create [options] <slug>
|
|
43
42
|
|
|
44
|
-
Create a new vault. <slug> must be unique (use 'gobi vault list' to see existing slugs); --name sets the display name. Does not change the configured vault — run 'gobi vault init'
|
|
45
|
-
|
|
43
|
+
Create a new vault. <slug> must be unique (use 'gobi vault list' to see existing slugs); --name sets the display name. Does not change the configured vault — run 'gobi vault init' afterwards if you
|
|
44
|
+
want to anchor to it.
|
|
46
45
|
|
|
47
46
|
Options:
|
|
48
47
|
--name <name> Display name for the new vault
|
|
@@ -73,17 +72,6 @@ Options:
|
|
|
73
72
|
-h, --help display help for command
|
|
74
73
|
```
|
|
75
74
|
|
|
76
|
-
## set-primary
|
|
77
|
-
|
|
78
|
-
```
|
|
79
|
-
Usage: gobi vault set-primary [options] <slug>
|
|
80
|
-
|
|
81
|
-
Mark a vault as your primary. Unsets primary on the other vaults you own. Slug must be passed explicitly.
|
|
82
|
-
|
|
83
|
-
Options:
|
|
84
|
-
-h, --help display help for command
|
|
85
|
-
```
|
|
86
|
-
|
|
87
75
|
## list
|
|
88
76
|
|
|
89
77
|
```
|