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
5 changes: 5 additions & 0 deletions .changeset/command-frontmatter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"grok-bot-cli": patch
---

Add `description` frontmatter to the `codex-send`, `codex-threads`, and `codex-wait` plugin commands so `claude plugin validate --strict` and `gbot-install doctor` no longer report AB6020 "No frontmatter block found".
2 changes: 1 addition & 1 deletion artifact/agent-bundle.manifest.json

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion artifact/commands/codex-send.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@

---
description: Send a message to a Codex thread on the user's machine with gbot
---
Use the local `gbot codex send` CLI command to send $ARGUMENTS. Include `--expected-cwd` when the destination directory matters. Show the delivery receipt and distinguish acceptance from completion. If Codex is on another machine, use Grok Bot Shell with that machineId to run gbot there.
4 changes: 3 additions & 1 deletion artifact/commands/codex-threads.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@

---
description: List local Codex threads with gbot
---
Run `gbot codex list-threads --json` locally and summarize the thread IDs, directories, and statuses. If Codex runs on another machine, use Grok Bot Shell with that machineId to run gbot there.
4 changes: 3 additions & 1 deletion artifact/commands/codex-wait.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@

---
description: Wait for a Codex turn to finish with gbot
---
Run `gbot codex wait $ARGUMENTS --json` on the same machine as Codex. Report the execution state and final reply. For long turns, pass `--timeout-ms` with a suitable duration, up to 7200000 milliseconds.
4 changes: 3 additions & 1 deletion src/commands/codex-send.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---
targets: [claude, cursor]
---

---
description: Send a message to a Codex thread on the user's machine with gbot
---
Use the local `gbot codex send` CLI command to send $ARGUMENTS. Include `--expected-cwd` when the destination directory matters. Show the delivery receipt and distinguish acceptance from completion. If Codex is on another machine, use Grok Bot Shell with that machineId to run gbot there.
4 changes: 3 additions & 1 deletion src/commands/codex-threads.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---
targets: [claude, cursor]
---

---
description: List local Codex threads with gbot
---
Run `gbot codex list-threads --json` locally and summarize the thread IDs, directories, and statuses. If Codex runs on another machine, use Grok Bot Shell with that machineId to run gbot there.
4 changes: 3 additions & 1 deletion src/commands/codex-wait.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---
targets: [claude, cursor]
---

---
description: Wait for a Codex turn to finish with gbot
---
Run `gbot codex wait $ARGUMENTS --json` on the same machine as Codex. Report the execution state and final reply. For long turns, pass `--timeout-ms` with a suitable duration, up to 7200000 milliseconds.
13 changes: 13 additions & 0 deletions test/codex-commands.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,16 @@ test('Claude and Cursor plugin commands are generated from source', () => {
assert.match(emitted, /gbot codex/);
}
});

test('emitted plugin commands carry description frontmatter for every host (AB6020)', () => {
// agent-bundle's Cursor commands surface is frontmatter-free and the Claude
// and Cursor projections must emit identical bytes into the shared commands/
// directory (AB4103), so the description block is authored as the body's own
// leading frontmatter after the `targets` block, which agent-bundle peels.
for (const name of ['codex-send', 'codex-threads', 'codex-wait']) {
const emitted = readFileSync(join('artifact/commands', `${name}.md`), 'utf8');
assert.match(emitted, /^---\ndescription: [^\n]+\n---\n/);
assert.doesNotMatch(emitted, /targets:/);
assert.match(emitted, /gbot codex/);
}
});