- gantt-tasks: Replace Supabase REST with API calls using GANTT_MACHINE_TOKEN - mission-control-docs: Replace Supabase REST with API calls using MC_MACHINE_TOKEN - Both skills now follow API-centric architecture - Updated SKILL.md documentation for both This ensures consistency with the CLI auth pattern and provides single source of truth through API endpoints.
268 lines
5.9 KiB
Markdown
268 lines
5.9 KiB
Markdown
---
|
|
name: mission-control-docs
|
|
description: Full CRUD operations for Mission Control Documents. Create, read, update, delete documents. Uses Mission Control API with machine token authentication.
|
|
---
|
|
|
|
# mission-control-docs
|
|
|
|
**Module Skill** - Complete document management for Mission Control via API.
|
|
|
|
## Purpose
|
|
|
|
Provides all operations needed to work with Mission Control documents: create, read, update, delete, list, and search. Uses Mission Control API (not direct Supabase).
|
|
|
|
## Authentication
|
|
|
|
Uses **machine token** for server-to-server API calls:
|
|
|
|
```bash
|
|
export MC_MACHINE_TOKEN="50cd5e8fe3f895353f97c9ee64052c0b689b4eedf79259746413734d0a163cf8"
|
|
export MC_API_URL="https://mission-control-rho-pink.vercel.app/api"
|
|
```
|
|
|
|
**Architecture:** Skills → API (with machine token) → Database
|
|
|
|
This follows the API-centric pattern where all business logic lives in API routes.
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
source ~/.agents/skills/mission-control-docs/lib/docs.sh
|
|
|
|
# Create document
|
|
DOC_ID=$(mc_doc_create \
|
|
--title "Article Title" \
|
|
--content "$CONTENT" \
|
|
--folder "Research/AI & Agents/")
|
|
|
|
# Get document
|
|
mc_doc_get "$DOC_ID"
|
|
|
|
# List documents
|
|
mc_doc_list --folder "Research/"
|
|
```
|
|
|
|
## Functions
|
|
|
|
### Document CRUD
|
|
|
|
#### `mc_doc_create([options])`
|
|
|
|
Create a new document.
|
|
|
|
**Options:**
|
|
- `--title` - Document title (required)
|
|
- `--content` - Document content (required)
|
|
- `--folder` - Folder path (default: auto-detected)
|
|
- `--tags` - Tags as JSON array string (default: auto-detected)
|
|
- `--type` - Document type (default: markdown)
|
|
- `--description` - Description (optional)
|
|
|
|
**Returns:** Document ID on success
|
|
|
|
**Example:**
|
|
```bash
|
|
DOC_ID=$(mc_doc_create \
|
|
--title "API Design Patterns" \
|
|
--content "$SUMMARY_CONTENT" \
|
|
--folder "Research/Tools & Tech/" \
|
|
--tags '["api", "design", "reference"]')
|
|
```
|
|
|
|
**Auto-categorization:** If folder not specified, detects based on content keywords:
|
|
- `Research/AI & Agents/` - AI, agent, LLM, Claude, OpenClaw, GPT
|
|
- `Research/iOS Development/` - Swift, iOS, Xcode, Apple, SwiftUI
|
|
- `Research/Business & Marketing/` - SaaS, business, startup, marketing
|
|
- `Research/Tools & Tech/` - tool, library, API, SDK, framework
|
|
- `Research/Tutorials/` - tutorial, guide, how-to, walkthrough
|
|
- `Research/` - Default
|
|
|
|
#### `mc_doc_get(DOC_ID)`
|
|
|
|
Get document by ID.
|
|
|
|
**Returns:** Document JSON
|
|
|
|
**Example:**
|
|
```bash
|
|
DOC=$(mc_doc_get "a1b2c3d4-...")
|
|
echo "$DOC" | jq -r '.title'
|
|
```
|
|
|
|
#### `mc_doc_list([filters])`
|
|
|
|
List documents with optional filters.
|
|
|
|
**Filters:**
|
|
- `--folder` - Filter by folder path
|
|
- `--tags` - Filter by tag
|
|
- `--search` - Search in title/content
|
|
- `--limit` - Max results (default: 50)
|
|
- `--json` - Output as JSON
|
|
|
|
**Example:**
|
|
```bash
|
|
# List all in folder
|
|
mc_doc_list --folder "Research/AI & Agents/"
|
|
|
|
# Search
|
|
mc_doc_list --search "OpenClaw"
|
|
|
|
# Get JSON for processing
|
|
mc_doc_list --folder "Research/" --json
|
|
```
|
|
|
|
#### `mc_doc_update(DOC_ID, [options])`
|
|
|
|
Update document fields.
|
|
|
|
**Parameters:**
|
|
- `DOC_ID` - Document UUID
|
|
- `--title` - New title
|
|
- `--content` - New content
|
|
- `--folder` - New folder
|
|
- `--tags` - New tags (JSON array)
|
|
- `--description` - New description
|
|
|
|
**Example:**
|
|
```bash
|
|
mc_doc_update "$DOC_ID" \
|
|
--title "Updated Title" \
|
|
--tags '["research", "ai", "updated"]'
|
|
```
|
|
|
|
#### `mc_doc_delete(DOC_ID)`
|
|
|
|
Delete document permanently.
|
|
|
|
**Example:**
|
|
```bash
|
|
mc_doc_delete "$DOC_ID"
|
|
```
|
|
|
|
### Search & Discovery
|
|
|
|
#### `mc_doc_search(QUERY, [LIMIT])`
|
|
|
|
Search documents by title or content.
|
|
|
|
**Parameters:**
|
|
- `QUERY` - Search term
|
|
- `LIMIT` - Max results (default: 20)
|
|
|
|
**Example:**
|
|
```bash
|
|
# Search for OpenClaw
|
|
mc_doc_search "OpenClaw" 10
|
|
```
|
|
|
|
#### `mc_doc_folder_list()`
|
|
|
|
List all unique folders.
|
|
|
|
**Example:**
|
|
```bash
|
|
mc_doc_folder_list
|
|
```
|
|
|
|
### Auto-detection
|
|
|
|
#### `_detect_folder(CONTENT)`
|
|
|
|
Auto-detect folder based on content keywords.
|
|
|
|
**Example:**
|
|
```bash
|
|
FOLDER=$(_detect_folder "$CONTENT")
|
|
echo "Detected folder: $FOLDER"
|
|
```
|
|
|
|
#### `_detect_tags(CONTENT)`
|
|
|
|
Auto-detect tags based on content keywords.
|
|
|
|
**Returns:** JSON array of tags
|
|
|
|
**Example:**
|
|
```bash
|
|
TAGS=$(_detect_tags "$CONTENT")
|
|
echo "Detected tags: $TAGS"
|
|
```
|
|
|
|
## File Structure
|
|
|
|
```
|
|
~/.agents/skills/mission-control-docs/
|
|
├── SKILL.md # This documentation
|
|
└── lib/
|
|
└── docs.sh # All document functions
|
|
```
|
|
|
|
## Integration Example
|
|
|
|
Complete workflow:
|
|
|
|
```bash
|
|
# Set authentication
|
|
export MC_MACHINE_TOKEN="50cd5e8fe3f895353f97c9ee64052c0b689b4eedf79259746413734d0a163cf8"
|
|
export MC_API_URL="https://mission-control-rho-pink.vercel.app/api"
|
|
|
|
source ~/.agents/skills/mission-control-docs/lib/docs.sh
|
|
|
|
# Research summary from URL
|
|
SUMMARY=$(cat << 'EOF'
|
|
## Scrapling: Modern Web Scraping Framework
|
|
|
|
Scrapling is a Python web scraping framework with:
|
|
- Adaptive parsing
|
|
- Anti-bot bypass
|
|
- Full crawling capabilities
|
|
|
|
**Use Cases:**
|
|
- E-commerce monitoring
|
|
- Content aggregation
|
|
- SEO auditing
|
|
|
|
**Links:**
|
|
- GitHub: https://github.com/D4Vinci/Scrapling
|
|
- Docs: https://scrapling.readthedocs.io
|
|
EOF
|
|
)
|
|
|
|
# Create document with auto-detection
|
|
DOC_ID=$(mc_doc_create \
|
|
--title "Scrapling: Web Scraping Framework" \
|
|
--content "$SUMMARY" \
|
|
--description "Auto-research from URL: https://github.com/D4Vinci/Scrapling")
|
|
|
|
echo "Document created: $DOC_ID"
|
|
|
|
# Verify
|
|
echo "=== Document Created ==="
|
|
mc_doc_get "$DOC_ID" | jq -r '.title, .folder, .tags'
|
|
```
|
|
|
|
## CLI Alternative
|
|
|
|
For interactive/command-line use, use the Mission Control CLI:
|
|
|
|
```bash
|
|
# Set auth for CLI
|
|
export MC_MACHINE_TOKEN="50cd5e8fe3f895353f97c9ee64052c0b689b4eedf79259746413734d0a163cf8"
|
|
export MC_API_URL="https://mission-control-rho-pink.vercel.app/api"
|
|
|
|
cd /Users/mattbruce/Documents/Projects/OpenClaw/Web/mission-control
|
|
|
|
# List documents
|
|
./scripts/mc.sh document list
|
|
|
|
# Get specific document
|
|
./scripts/mc.sh document get $DOC_ID
|
|
```
|
|
|
|
**Note:** The skill library and CLI both use the same API endpoints with machine token authentication.
|
|
|
|
---
|
|
|
|
**Note:** This is a low-level module skill. Used by orchestrator skills like `url-research-to-documents-and-tasks`, not directly by users.
|