원클릭으로
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