docmost
Docmost CLI skill for AI agents.
Install
Install this skill from GitHub:
npx skills add dapi/docmost-cli --skill docmost --agent '*' -g -y
Install CLI:
npm install -g github:dapi/docmost-cli
Set environment variables (recommended):
export DOCMOST_API_URL=https://docs.example.com/api
export DOCMOST_TOKEN=<token>
# or login with email/password:
export DOCMOST_EMAIL=<email>
export DOCMOST_PASSWORD=<password>
Quick check:
docmost workspace-public --format json
Command Naming: entity-action (NOT action-entity)
All commands use entity-action format: page-update, space-create, comment-delete.
NEVER use update-page, create-space, delete-comment — these commands do not exist and will fail.
Execution Rules
- No pre-flight checks. Run the needed command directly. If
docmostis not found, install it (npm install -g github:dapi/docmost-cli) and retry. - All
--format jsonoutput wrapped in envelope:{ "ok": true, "data": ... }for success,{ "ok": false, "error": ... }for errors. - Prefer
--format jsonfor agent workflows. - Use
--format tablewhen user explicitly wants human-readable tabular output. --format textis supported only by:page-info(returns markdown content)page-history-detail(returns markdown content)invite-link(returns raw link)
- Prefer environment variables for credentials; avoid
--passwordin command history/process list. - Auth precedence:
--token>DOCMOST_TOKEN>--email/--password>DOCMOST_EMAIL/DOCMOST_PASSWORD. - Use global pagination controls for list/history commands:
--limit <n>(1..100, default 100)--max-items <n>(stop after N total records)
- For markdown/prose content (
page-update,comment-create,comment-update), use:- literal string,
@path/to/file.md, or-(stdin)
- literal string,
- Binary export/download commands write bytes to stdout unless
--outputis provided:page-export,space-export,file-download
- Use
--quietwhen only exit status matters.
Output Format
All --format json responses use a predictable envelope:
Success (single object)
{ "ok": true, "data": { "id": "abc", "title": "Runbook" } }
Success (list)
{ "ok": true, "data": [{ "id": "abc" }], "meta": { "count": 2, "hasMore": false } }
Error (stderr)
{ "ok": false, "error": { "code": "NOT_FOUND", "message": "Page not found", "details": null } }
Parsing rules for agents
- Always check
okfield first - For lists: items in
dataarray, checkmeta.hasMorefor pagination - For mutations: created/updated object returned in
data - Errors include typed
code: AUTH_ERROR, NOT_FOUND, VALIDATION_ERROR, NETWORK_ERROR, INTERNAL_ERROR - Exit codes: 0=success, 1=internal, 2=auth, 3=not_found, 4=validation, 5=network
- Use
docmost commandsto discover all available commands and their options
Core Command Patterns
Discovery
docmost commands # list all commands with options as JSON
Workspace + Members
docmost workspace-info --format json
docmost workspace-public --format json
docmost workspace-update --name "Docs" --description "Team docs" --format json
docmost workspace-update --enforce-sso true --enforce-mfa true --format json
docmost member-list --format table
docmost member-role --user-id <userId> --role admin --format json
docmost member-remove --user-id <userId> --format json
Users
docmost user-me --format json
docmost user-update --name "Alice" --locale en --page-edit-mode edit --full-page-width true --format json
Spaces
docmost space-list --format table
docmost space-info --space-id <spaceId> --format json
docmost space-create --name "Engineering" --slug engineering --description "Tech docs" --format json
docmost space-update --space-id <spaceId> --name "Platform" --format json
docmost space-delete --space-id <spaceId> --format json
docmost space-member-list --space-id <spaceId> --format table
docmost space-member-add --space-id <spaceId> --role writer --user-ids "u1,u2" --format json
docmost space-member-add --space-id <spaceId> --role reader --group-ids "g1,g2" --format json
docmost space-member-remove --space-id <spaceId> --user-id <userId> --format json
docmost space-member-role --space-id <spaceId> --group-id <groupId> --role admin --format json
docmost space-export --space-id <spaceId> --export-format markdown --output ./space.zip --format json
docmost space-export --space-id <spaceId> --export-format html --include-attachments > ./space.zip
Pages
docmost page-list --format table
docmost page-list --space-id <spaceId> --format table
docmost page-info --page-id <pageId> --format json
docmost page-info --page-id <pageId> --format text
docmost page-create --space-id <spaceId> --title "Runbook" --icon "book" --format json
docmost page-create --space-id <spaceId> --title "Child" --parent-page-id <parentId> --format json
docmost page-update --page-id <pageId> --title "Runbook v2" --format json
docmost page-update --page-id <pageId> --content @./content.md --format json
echo "# Updated" | docmost page-update --page-id <pageId> --content - --format json
docmost page-move --page-id <pageId> --parent-page-id <parentId> --position a00000 --format json
docmost page-move --page-id <pageId> --root --format json
docmost page-move-to-space --page-id <pageId> --space-id <targetSpaceId> --format json
docmost page-delete --page-id <pageId> --format json
docmost page-delete --page-id <pageId> --permanently-delete --format json
docmost page-delete-bulk --page-ids "id1,id2,id3" --format json
docmost page-restore --page-id <pageId> --format json
docmost page-trash --space-id <spaceId> --format table
docmost page-duplicate --page-id <pageId> --format json
docmost page-duplicate --page-id <pageId> --space-id <targetSpaceId> --format json
docmost page-breadcrumbs --page-id <pageId> --format table
docmost page-tree --space-id <spaceId> --format json
docmost page-tree --page-id <pageId> --format json
docmost page-history --page-id <pageId> --limit 50 --max-items 200 --format table
docmost page-history-detail --history-id <historyId> --format json
docmost page-history-detail --history-id <historyId> --format text
Page Import/Export
docmost page-export --page-id <pageId> --export-format markdown --output ./page.zip
docmost page-export --page-id <pageId> --export-format html --include-children --include-attachments > ./page.zip
docmost page-import --file ./page.md --space-id <spaceId> --format json
docmost page-import-zip --file ./notion.zip --space-id <spaceId> --source notion --format json
page-import-zip --source supports: generic, notion, confluence.
Search
docmost search --query "onboarding" --format table
docmost search --query "oauth" --space-id <spaceId> --creator-id <userId> --format json
docmost search-suggest --query "auth" --format json
docmost search-suggest --query "auth" --space-id <spaceId> --include-pages --include-groups --max-results 20 --format json
Invites
docmost invite-list --format table
docmost invite-info --invitation-id <inviteId> --format json
docmost invite-create --emails "a@x.com,b@y.com" --role member --format json
docmost invite-create --emails "team@x.com" --role admin --group-ids "g1,g2" --format json
docmost invite-revoke --invitation-id <inviteId> --format json
docmost invite-resend --invitation-id <inviteId> --format json
docmost invite-link --invitation-id <inviteId> --format text
Groups
docmost group-list --format table
docmost group-info --group-id <groupId> --format json
docmost group-create --name "Tech Writers" --description "Docs team" --format json
docmost group-create --name "Maintainers" --user-ids "u1,u2" --format json
docmost group-update --group-id <groupId> --name "Platform Writers" --format json
docmost group-delete --group-id <groupId> --format json
docmost group-member-list --group-id <groupId> --format table
docmost group-member-add --group-id <groupId> --user-ids "u1,u2" --format json
docmost group-member-remove --group-id <groupId> --user-id <userId> --format json
Comments
docmost comment-list --page-id <pageId> --format table
docmost comment-info --comment-id <commentId> --format json
docmost comment-create --page-id <pageId> --content @./comment.md --format json
docmost comment-create --page-id <pageId> --content "Please clarify" --selection "Auth flow" --format json
docmost comment-create --page-id <pageId> --content "Reply text" --parent-comment-id <commentId> --format json
docmost comment-update --comment-id <commentId> --content "Updated comment" --format json
docmost comment-delete --comment-id <commentId> --format json
Shares
docmost share-list --format table
docmost share-info --share-id <shareId> --format json
docmost share-for-page --page-id <pageId> --format json
docmost share-create --page-id <pageId> --include-subpages true --search-indexing false --format json
docmost share-update --share-id <shareId> --include-subpages false --format json
docmost share-delete --share-id <shareId> --format json
Files
docmost file-upload --file ./diagram.png --page-id <pageId> --format json
docmost file-upload --file ./diagram-v2.png --page-id <pageId> --attachment-id <attachmentId> --format json
docmost file-download --file-id <fileId> --file-name diagram.png --output ./diagram.png
docmost file-download --file-id <fileId> --file-name report.pdf > ./report.pdf
Agent Workflows
Page CRUD (recommended default)
For requests like "create/update/move/delete doc page":
- Resolve workspace and target space:
docmost workspace-info --format json→ check.ok, use.datadocmost space-list --format json→ iterate.data[], check.meta.hasMore
- Inspect existing pages:
docmost page-list --space-id <spaceId> --format json→ iterate.data[]
- Read source page when modifying:
docmost page-info --page-id <pageId> --format text
- Apply mutation:
page-create/page-update/page-move/page-delete→ check.ok, get.data.id
- Verify:
docmost page-info --page-id <pageId> --format json→ check.ok
Search + History Investigation
For requests like "find where this was documented" or "who changed this":
docmost search --query "..." --format tabledocmost page-info --page-id <pageId> --format textdocmost page-history --page-id <pageId> --format tabledocmost page-history-detail --history-id <historyId> --format text
Access Control
For requests like "add/remove access":
- Workspace level:
member-list,member-role,member-remove,invite-*
- Space level:
space-member-list,space-member-add,space-member-remove,space-member-role
- Public page sharing:
share-for-page,share-create,share-update,share-delete
Export/Import and Attachments
- Export content:
page-export/space-export - Import content:
page-import/page-import-zip - Attach files:
file-upload - Download files:
file-download
Request Semantics
- "мой workspace / моё пространство" ->
docmost workspace-info - "spaces / разделы" ->
docmost space-list - "pages / страницы" ->
docmost page-list - "найди / search" ->
docmost search --query "..." - "история изменений" ->
docmost page-history - "удалённые страницы / корзина" ->
docmost page-trash - "доступ / access" ->
member-*/space-member-*/share-*
Trigger Examples
Should trigger
- "создай страницу в Docmost"
- "обнови страницу runbook"
- "найди в вики всё про oauth"
- "покажи историю изменений этой страницы"
- "восстанови удалённую страницу"
- "перенеси страницу в другой space"
- "экспортни space в markdown"
- "добавь пользователя в space как reader"
- "создай публичный share для страницы"
- "upload файл на страницу"
- "list all Docmost spaces"
- "invite new users to workspace"
- "change member role to admin"
- "import Notion zip into Docmost"
- "покажи дерево страниц"
- "продублируй страницу"
Should not trigger
- Editing local markdown files without Docmost API interaction
- Git/GitHub operations
- Slack/Telegram/email messaging tasks
- Non-Docmost web scraping or browser automation