بنقرة واحدة
m365-docs
SharePoint Docs: Create, co-edit, convert, and share .md/.txt/.docx documents collaboratively in chat.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
SharePoint Docs: Create, co-edit, convert, and share .md/.txt/.docx documents collaboratively in chat.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
M365 CLI: Auth, config, global flags, and site/drive discovery. Prerequisite for all m365-* skills.
Microsoft 365 Mail: Read, send, reply to, and delete email messages; manage mail folders.
SharePoint Files: Upload, download, copy, move, rename, delete, and search files in SharePoint document libraries.
SharePoint Lists: Create and manage metadata lists, list items, and columns.
Microsoft 365 Calendar: Create, read, update, and delete events; RSVP to invitations; access shared calendars.
| name | m365-docs |
| version | 0.1.0 |
| description | SharePoint Docs: Create, co-edit, convert, and share .md/.txt/.docx documents collaboratively in chat. |
| metadata | {"openclaw":{"category":"productivity","requires":{"bins":["m365","pandoc"],"skills":["m365-shared","m365-files"]},"cliHelp":"m365 files --help"}} |
This skill enables a full document co-editing loop entirely in chat:
.md, .txt, or .docxFrom a topic (new doc):
User: "Make a new doc on topic Foo"
foo.md (slugify the topic, lowercase, hyphens)# Write draft to temp file
cat > /tmp/foo.md << 'EOF'
# Foo
...content...
EOF
# Upload and capture item ID
item_id=$(m365 files upload /tmp/foo.md --remote-path /foo.md | jq -r '.data.id')
From an existing file:
User: "Work with me on bar.md"
item_id=$(m365 files search "bar.md" | jq -r '.data[0].id')
content=$(m365 files read "$item_id")
Hold the current document content in context as a markdown string. Each turn:
Example prompts that trigger edits:
Do NOT save after every turn. Save only when asked, or when the user says "done", "looks good", "save it", etc.
As markdown (default — no conversion needed):
printf '%s' "$content" > /tmp/foo.md
m365 files upload /tmp/foo.md --remote-path /foo.md
As Word document (requires pandoc):
User: "Make it a Word doc"
printf '%s' "$content" > /tmp/foo.md
pandoc /tmp/foo.md -o /tmp/foo.docx
docx_item_id=$(m365 files upload /tmp/foo.docx --remote-path /foo.docx | jq -r '.data.id')
Use the docx item ID for any subsequent sharing steps.
Create a shareable link:
User: "Share it with me" / "Get me a link"
# View-only link, org-scoped (default)
m365 permissions create-link "$item_id" | jq -r '.data.link.webUrl'
# Editable link
m365 permissions create-link "$item_id" --type edit | jq -r '.data.link.webUrl'
# Anonymous link (anyone with the link)
m365 permissions create-link "$item_id" --scope anonymous | jq -r '.data.link.webUrl'
Return the URL to the user in chat.
Grant access to a specific person:
User: "Share it with alice@contoso.com"
m365 permissions grant "$item_id" --emails alice@contoso.com --role read
| Variable | What it holds |
|---|---|
$item_id | SharePoint item ID of the active document |
$remote_path | Path in the drive (e.g. /foo.md) |
$content | Current markdown content (in context) |
$format | md, txt, or docx |
# 1. Create
printf '%s' "$content" > /tmp/proposal.md
item_id=$(m365 files upload /tmp/proposal.md --remote-path /proposal.md | jq -r '.data.id')
# 2. (iterate in chat — no shell commands needed)
# 3. Export to Word
printf '%s' "$content" > /tmp/proposal.md
pandoc /tmp/proposal.md -o /tmp/proposal.docx
docx_id=$(m365 files upload /tmp/proposal.docx --remote-path /proposal.docx | jq -r '.data.id')
# 4. Share
m365 permissions create-link "$docx_id" --type edit | jq -r '.data.link.webUrl'
item_id=$(m365 files search "meeting-notes.md" | jq -r '.data[0].id')
content=$(m365 files read "$item_id")
# Now edit content in context, save back when done
.md and .txt round-trip perfectly — no conversion loss.docx via pandoc preserves headings, bold, italics, bullets, and tables; complex Word styles are not preservedpermissions create-link with --scope anonymous requires the SharePoint tenant to allow anonymous sharing (admin setting)files upload to the same --remote-path