Skill Commands
These commands are used by AI agents via the Open Agent Skills format. The skill is invoked as /workjournal from within an agent session (Claude Code, Cursor, GitHub Copilot, Gemini CLI, and many more).
For the terminal CLI, see CLI Commands.
/workjournal
Write a new journal entry. The agent reviews the conversation, summarizes the work, and creates an entry with an auto-generated title. If not initialized, runs the init flow first.
On Plus+ workspaces with tags assigned to the journal, the agent also fetches the assigned tag list, matches each tag’s name and description against the entry’s content, and includes the matching subset via --tags. Closed-enum: the agent only picks from tags already assigned to the journal — never invents names. If no tags clearly apply, or the workspace is Free, no tags are attached. See Tags below for managing the underlying vocabulary.
/workjournal <title>
Write a new entry with an explicit title instead of auto-generating one. Tag selection works the same way as the auto-title flow.
/workjournal search <query>
Search past journal entries for the given query. Returns matching entries with summaries and relevant excerpts.
/workjournal last [N]
Show the N most recent journal entries. Defaults to 1.
/workjournal check
Find journal entries relevant to the current conversation context. Analyzes the conversation for key topics, file paths, and technical terms, then searches for matching entries.
/workjournal login
Authenticate with the Workjournal API. The skill prints an authorize URL — open it in any browser, log in if needed, click Approve, copy the 8-character code shown on the page, and paste it back into the chat. Credentials are stored locally at ~/.config/workjournal/credentials.json (or the platform equivalent — see /docs/cli-tool-auth-workflow).
The flow uses OAuth with PKCE, so it works equally well in local terminals, SSH sessions, dev containers, and CI. No browser is needed on the same machine as the agent.
Under the hood, this runs npx --yes @workjournal/cli auth login start followed by npx --yes @workjournal/cli auth login finish <CODE>.
/workjournal init
Initialize Workjournal for the current session.
- If not logged in, runs the login flow first
- Lists your existing journals for selection
- Option to create a new journal
- Sets the selected journal as active for the session
/workjournal journals (picker)
Interactive journal picker. The skill fetches both the active workspace’s journals and the list of journals shared with you from other workspaces, then renders a numbered list. When the shared list is non-empty, a footer row appears:
Journals in acme:
[1] → engineering (Engineering Notes)
[2] product (Product Decisions)
[3] (shared with me — 2 journals)
Reply with a number to pick a journal, or type a substring to filter.
Picking a workspace-journal row opens a submenu with select, delete, rename, and change url actions. Picking the (shared with me) row pivots to a sub-picker showing <workspace>/<journal> pairs — only select is offered for shared journals since contributors can’t delete/rename/change url.
When a shared journal is picked, the skill runs workjournal journals select <real-workspace> <journal> using the workspace slug from the sub-picker row (e.g. acme engineering, not shared-with-me engineering). The picker already disambiguated by showing <ws>/<journal>, so there’s no slug-collision case to handle. After this, all other /workjournal commands work normally — they read the pinned slug from config.
shared-with-me is a discovery-only slug — accepted only by journals list. The picker is the recommended path for agents because it already disambiguates by showing <workspace>/<journal> pairs before selecting. Acceptance of invitations still happens in the web app — if a user pastes an invitation link, point them at it to accept, then run /workjournal journals to pick the now-accepted journal.
/workjournal tags
A Plus+ feature. Tags are a workspace-level vocabulary that can be attached to entries. A tag must first exist in the workspace registry (tags new) and then be assigned to a journal (tags assign) before it can appear on an entry in that journal. Editing or removing a tag cascades to every entry that referenced it across every assigned journal. Free workspaces can’t create tags, but they can clear leftover tags from existing entries.
The skill passes these subcommands through to the CLI:
/workjournal tags list <ws> [--journal <j>]— List the workspace registry. With--journal, each row is annotated withassigned: true|falsefor that journal./workjournal tags get <ws> <name> [--journal <j>]— Print one tag’s details./workjournal tags new <ws> <name> [-d <desc>]— Create a tag in the registry. Plus+-gated./workjournal tags update <ws> <name> [-n <newName>] [-d <desc>]— Rename and/or update description; cascades to all referenced entries./workjournal tags delete <ws> <name>— Remove the tag from the registry. Cascade-strips it from every entry across every assigned journal. Allowed at any tier./workjournal tags assign <ws> <j> <name>— Make a registry tag usable on entries in this journal. Plus+-gated./workjournal tags unassign <ws> <j> <name>— Remove the tag from this journal. Cascade-strips the tag’s name from every entry in this journal (other journals unaffected). Allowed at any tier.
Tags can also be attached to entries at write time or replaced on existing entries — the agent does this automatically in the auto-write flow above, but the underlying CLI flags work too:
/workjournal entries write <ws> <j> -t … -s … [-b … | -b - | --body-file <path>] --tags <a,b,c>— Write a new entry with tags (every name must already be assigned to the journal). The body comes from inline-b, stdin-b -, or--body-file <path>(mutually exclusive). Prefer--body-file/stdin for bodies that would exceed argv limits or contain shell-fragile characters./workjournal entries update <ws> <j> <idx> --tags <a,b,c>— Replace the entry’s tag set. Pass--tags ""to clear.
/workjournal help
Print the command reference.