| name | docmost |
| description | Use when user wants to manage Docmost documentation via docmost-cli: pages, spaces, workspace, members, groups, invites, comments, shares, files, search, and export/import. Trigger on requests about wiki/docs pages, knowledge base, page history/trash, page organization, access control, public sharing, file attachments, and workspace administration from terminal.
|
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>
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
docmost is not found, install it (npm install -g github:dapi/docmost-cli) and retry.
- All
--format json output wrapped in envelope: { "ok": true, "data": ... } for success, { "ok": false, "error": ... } for errors.
- Prefer
--format json for agent workflows.
- Use
--format table when user explicitly wants human-readable tabular output.
--format text is 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
--password in 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)
- Binary export/download commands write bytes to stdout unless
--output is provided:
page-export, space-export, file-download
- Use
--quiet when 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
ok field first
- For lists: items in
data array, check meta.hasMore for 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 commands to discover all available commands and their options
Core Command Patterns
Discovery
docmost commands
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 .data
docmost 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 table
docmost page-info --page-id <pageId> --format text
docmost page-history --page-id <pageId> --format table
docmost 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