Files
cli-anything-codimd/cli_anything/codimd/skills/SKILL.md

197 lines
4.6 KiB
Markdown

---
name: codimd
description: CLI harness for CodiMD collaborative markdown notes
version: 0.1.0
categories:
- documentation
- markdown
- collaboration
entry_point: cli-anything-codimd
namespace: cli_anything.codimd
---
# CodiMD CLI Harness
A stateful CLI for CodiMD - collaborative markdown notes on all platforms.
## Installation
```bash
pip install cli-anything-codimd
```
## Quick Start
```bash
# Set server
cli-anything-codimd config set server https://your-codimd-server.com
# List your notes
cli-anything-codimd note list
# Create a new note
cli-anything-codimd note create --content "# My New Note\n\nHello world"
# Get note content
cli-anything-codimd note get <note-id>
# Export as markdown
cli-anything-codimd export markdown <note-id> --output note.md
# Export as PDF
cli-anything-codimd export pdf <note-id> --output note.pdf
# Get user info
cli-anything-codimd user me
# Interactive REPL mode
cli-anything-codimd repl
```
## Command Groups
### Note Commands (`note`)
| Command | Description |
|---------|-------------|
| `note list` | List user's notes |
| `note get <id>` | Get note content |
| `note create` | Create new note |
| `note update <id>` | Update note content |
| `note delete <id>` | Delete note |
| `note info <id>` | Get note metadata |
| `note publish <id>` | Get publish link |
### User Commands (`user`)
| Command | Description |
|---------|-------------|
| `user me` | Get current user info |
| `user login` | Login to server |
| `user logout` | Logout from session |
| `user export` | Export all user data |
| `user delete` | Delete user account |
### Export Commands (`export`)
| Command | Description |
|---------|-------------|
| `export markdown <id>` | Export as markdown |
| `export pdf <id>` | Export as PDF |
| `export html <id>` | Export as HTML |
| `export slide <id>` | Export as reveal.js slides |
### Revision Commands (`revision`)
| Command | Description |
|---------|-------------|
| `revision list <id>` | List note revisions |
| `revision get <id> <time>` | Get note at specific time |
### Config Commands (`config`)
| Command | Description |
|---------|-------------|
| `config get [key]` | Get configuration value |
| `config set <key> <value>` | Set configuration value |
## JSON Output Mode
All commands support `--json` flag for machine-readable output:
```bash
cli-anything-codimd --json note list
```
Response format:
```json
{
"status": "success|error",
"data": {...},
"error": "error message if status is error"
}
```
## Agent Integration Guide
### Authentication
The CLI stores session tokens in `~/.config/cli-anything-codimd/session.json`.
Agents should check authentication status before operations and handle `PermissionError` exceptions.
### Note ID Format
CodiMD uses multiple note ID formats:
- **UUID**: Full UUID (e.g., `12345678-1234-1234-1234-123456789012`)
- **Encoded**: base64url-encoded UUID (e.g., `VXDECB3HEXDPHWHGHFDGWEDFBM`)
- **Short ID**: Short identifier for sharing (e.g., `abc123`)
The CLI handles encoding/decoding automatically.
### Permission Model
| Permission | Description |
|------------|-------------|
| `freely` | Anyone can view and edit |
| `editable` | Anyone can view, logged-in users can edit |
| `limited` | Logged-in users can view and edit |
| `locked` | Anyone can view, only owner can edit |
| `protected` | Logged-in users can view, only owner can edit |
| `private` | Only owner can view and edit |
### Common Workflows
#### Create and Edit Note
```python
# Create note
result = subprocess.run(
["cli-anything-codimd", "--json", "note", "create", "--content", markdown],
capture_output=True, text=True
)
data = json.loads(result.stdout)
note_id = data["data"]["id"]
# Update note
subprocess.run(
["cli-anything-codimd", "note", "update", note_id, "--content", new_markdown]
)
```
#### Export Note
```python
# Export to file
subprocess.run(
["cli-anything-codimd", "export", "markdown", note_id, "-o", "output.md"]
)
```
#### List Notes with Filtering
```python
# Get notes as JSON
result = subprocess.run(
["cli-anything-codimd", "--json", "note", "list"],
capture_output=True, text=True
)
data = json.loads(result.stdout)
notes = data["data"]["notes"]
```
## Server Configuration
The CLI can connect to any CodiMD instance:
```bash
# Set server URL
cli-anything-codimd config set server https://codimd.example.com
# Disable SSL verification (for self-signed certs)
cli-anything-codimd config set verify_ssl false
# Set request timeout
cli-anything-codimd config set timeout 60
```
Environment variables:
- `CODIMD_SERVER`: Default server URL
- `CLI_ANYTHING_FORCE_INSTALLED`: Use installed command instead of module path