Major refactoring of ourdigital-custom-skills with new numbering system: ## Structure Changes - Each skill now has code/ (Claude Code) and desktop/ (Claude Desktop) versions - New progressive numbering: 01-09 General, 10-19 SEO, 20-29 GTM, 30-39 OurDigital, 40-49 Jamie ## Skill Reorganization - 01-notion-organizer (from 02) - 10-18: SEO tools split into focused skills (technical, on-page, local, schema, vitals, gsc, gateway) - 20-21: GTM audit and manager - 30-32: OurDigital designer, research, presentation - 40-41: Jamie brand editor and audit ## New Files - .claude/commands/: Slash command definitions for all skills - CLAUDE.md: Updated with new skill structure documentation - REFACTORING_PLAN.md: Migration documentation - COMPATIBILITY_REPORT.md, SKILLS_COMPARISON.md: Analysis docs ## Removed - Old skill directories (02-05, 10-14, 20-21 old numbering) - Consolidated into new structure with _archive/ for reference 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
90 lines
1.8 KiB
Markdown
90 lines
1.8 KiB
Markdown
# CLAUDE.md
|
|
|
|
## Overview
|
|
|
|
Notion workspace management toolkit for database organization, schema migration, and bulk operations.
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
pip install -r scripts/requirements.txt
|
|
|
|
# Schema migration
|
|
python scripts/schema_migrator.py --source [DB_ID] --target [DB_ID] --dry-run
|
|
|
|
# Async bulk operations
|
|
python scripts/async_organizer.py --database [DB_ID] --action cleanup
|
|
```
|
|
|
|
## Scripts
|
|
|
|
| Script | Purpose |
|
|
|--------|---------|
|
|
| `schema_migrator.py` | Migrate data between databases with property mapping |
|
|
| `async_organizer.py` | Async bulk operations (cleanup, restructure, archive) |
|
|
|
|
## Schema Migrator
|
|
|
|
```bash
|
|
# Dry run (preview changes)
|
|
python scripts/schema_migrator.py \
|
|
--source abc123 \
|
|
--target def456 \
|
|
--mapping mapping.json \
|
|
--dry-run
|
|
|
|
# Execute migration
|
|
python scripts/schema_migrator.py \
|
|
--source abc123 \
|
|
--target def456 \
|
|
--mapping mapping.json
|
|
```
|
|
|
|
### Mapping File Format
|
|
|
|
```json
|
|
{
|
|
"properties": {
|
|
"OldName": "NewName",
|
|
"Status": "Status"
|
|
},
|
|
"transforms": {
|
|
"Date": "date_to_iso"
|
|
}
|
|
}
|
|
```
|
|
|
|
## Async Organizer
|
|
|
|
```bash
|
|
# Cleanup empty/stale pages
|
|
python scripts/async_organizer.py --database [ID] --action cleanup
|
|
|
|
# Archive old pages
|
|
python scripts/async_organizer.py --database [ID] --action archive --days 90
|
|
|
|
# Restructure hierarchy
|
|
python scripts/async_organizer.py --database [ID] --action restructure
|
|
```
|
|
|
|
## Rate Limits
|
|
|
|
| Limit | Value |
|
|
|-------|-------|
|
|
| Requests/second | 3 max |
|
|
| Items per request | 100 max |
|
|
| Retry on 429 | Exponential backoff |
|
|
|
|
## Configuration
|
|
|
|
Environment variables:
|
|
```bash
|
|
NOTION_TOKEN=secret_xxx
|
|
```
|
|
|
|
## Notes
|
|
|
|
- Always use `--dry-run` first for destructive operations
|
|
- Large operations (1000+ pages) use async with progress reporting
|
|
- Scripts implement automatic rate limiting
|