feat: Add OurDigital custom skills package (10 skills)
Complete implementation of OurDigital skills with dual-platform support (Claude Desktop + Claude Code) following standardized structure. Skills created: - 01-ourdigital-brand-guide: Brand reference & style guidelines - 02-ourdigital-blog: Korean blog drafts (blog.ourdigital.org) - 03-ourdigital-journal: English essays (journal.ourdigital.org) - 04-ourdigital-research: Research prompts & workflows - 05-ourdigital-document: Notion-to-presentation pipeline - 06-ourdigital-designer: Visual/image prompt generation - 07-ourdigital-ad-manager: Ad copywriting & keyword research - 08-ourdigital-trainer: Training materials & workshop planning - 09-ourdigital-backoffice: Quotes, proposals, cost analysis - 10-ourdigital-skill-creator: Meta skill for creating new skills Features: - YAML frontmatter with "ourdigital" or "our" prefix triggers - Standardized directory structure (code/, desktop/, shared/, docs/) - Shared environment setup (_ourdigital-shared/) - Comprehensive reference documentation - Cross-skill integration support Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
69
custom-skills/_ourdigital-shared/.env.ourdigital.template
Normal file
69
custom-skills/_ourdigital-shared/.env.ourdigital.template
Normal file
@@ -0,0 +1,69 @@
|
||||
# OurDigital Skills Environment Variables Template
|
||||
# Copy this file to .env.ourdigital and fill in your values
|
||||
# IMPORTANT: Never commit the actual .env.ourdigital file to version control
|
||||
|
||||
# =============================================================================
|
||||
# Environment Settings
|
||||
# =============================================================================
|
||||
OURDIGITAL_ENV=development # development | production
|
||||
OURDIGITAL_CONFIG_PATH=~/.ourdigital/config.yaml
|
||||
OURDIGITAL_CREDENTIALS_PATH=~/.ourdigital/credentials/
|
||||
|
||||
# =============================================================================
|
||||
# Notion API
|
||||
# =============================================================================
|
||||
NOTION_API_TOKEN=secret_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
|
||||
# Working with AI Database (primary export destination)
|
||||
NOTION_WORKING_WITH_AI_DB=f8f19ede-32bd-43ac-9f60-0651f6f40afe
|
||||
|
||||
# OurDigital Channels Database
|
||||
NOTION_OURDIGITAL_CHANNELS_DB=9e958359535b495e863aba20d6c0a59b
|
||||
|
||||
# =============================================================================
|
||||
# Ghost CMS
|
||||
# =============================================================================
|
||||
# blog.ourdigital.org (Korean blog)
|
||||
GHOST_BLOG_URL=https://blog.ourdigital.org
|
||||
GHOST_BLOG_ADMIN_KEY=
|
||||
|
||||
# journal.ourdigital.org (English journal)
|
||||
GHOST_JOURNAL_URL=https://journal.ourdigital.org
|
||||
GHOST_JOURNAL_ADMIN_KEY=
|
||||
|
||||
# ourstory.day (Personal essays)
|
||||
GHOST_OURSTORY_URL=https://ourstory.day
|
||||
GHOST_OURSTORY_ADMIN_KEY=
|
||||
|
||||
# =============================================================================
|
||||
# Google APIs
|
||||
# =============================================================================
|
||||
GOOGLE_APPLICATION_CREDENTIALS=~/.ourdigital/credentials/google.json
|
||||
|
||||
# Google Search Console
|
||||
GSC_PROPERTY_URL=https://www.ourdigital.org
|
||||
|
||||
# Google Analytics 4
|
||||
GA4_PROPERTY_ID=
|
||||
|
||||
# =============================================================================
|
||||
# Figma
|
||||
# =============================================================================
|
||||
FIGMA_ACCESS_TOKEN=
|
||||
|
||||
# =============================================================================
|
||||
# n8n Workflow Automation
|
||||
# =============================================================================
|
||||
N8N_HOST_URL=https://n8n.dintelligence.co.kr
|
||||
N8N_API_KEY=
|
||||
|
||||
# =============================================================================
|
||||
# Optional: AI Services
|
||||
# =============================================================================
|
||||
# ANTHROPIC_API_KEY= # Usually set globally
|
||||
# OPENAI_API_KEY= # For DALL-E integration
|
||||
|
||||
# =============================================================================
|
||||
# Ulysses Export (macOS)
|
||||
# =============================================================================
|
||||
ULYSSES_EXPORT_PATH=~/Library/Mobile Documents/com~apple~CloudDocs/Ulysses/Blog Drafts/
|
||||
129
custom-skills/_ourdigital-shared/README.md
Normal file
129
custom-skills/_ourdigital-shared/README.md
Normal file
@@ -0,0 +1,129 @@
|
||||
# OurDigital Skills - Shared Environment
|
||||
|
||||
Shared configuration, dependencies, and environment setup for all OurDigital Claude Skills.
|
||||
|
||||
## Quick Setup
|
||||
|
||||
### 1. Create Virtual Environment
|
||||
|
||||
```bash
|
||||
cd /path/to/our-claude-skills/custom-skills
|
||||
python -m venv .venv-ourdigital
|
||||
source .venv-ourdigital/bin/activate # macOS/Linux
|
||||
```
|
||||
|
||||
### 2. Install Dependencies
|
||||
|
||||
```bash
|
||||
# For Claude Code environment
|
||||
pip install -r _ourdigital-shared/requirements/code.txt
|
||||
|
||||
# For Claude Desktop environment
|
||||
pip install -r _ourdigital-shared/requirements/desktop.txt
|
||||
|
||||
# Or install as package
|
||||
pip install -e _ourdigital-shared/
|
||||
```
|
||||
|
||||
### 3. Configure Environment Variables
|
||||
|
||||
```bash
|
||||
# Copy template
|
||||
cp _ourdigital-shared/.env.ourdigital.template ~/.env.ourdigital
|
||||
|
||||
# Edit with your credentials
|
||||
nano ~/.env.ourdigital
|
||||
```
|
||||
|
||||
### 4. Set Up Credentials Directory
|
||||
|
||||
```bash
|
||||
mkdir -p ~/.ourdigital/credentials
|
||||
# Add your credential files:
|
||||
# - ~/.ourdigital/credentials/notion.json
|
||||
# - ~/.ourdigital/credentials/ghost.json
|
||||
# - ~/.ourdigital/credentials/google.json
|
||||
```
|
||||
|
||||
## Directory Structure
|
||||
|
||||
```
|
||||
_ourdigital-shared/
|
||||
├── pyproject.toml # Package configuration
|
||||
├── .env.ourdigital.template # Environment variables template
|
||||
├── requirements/
|
||||
│ ├── base.txt # Common dependencies
|
||||
│ ├── desktop.txt # Desktop-specific
|
||||
│ └── code.txt # Code-specific
|
||||
├── config/
|
||||
│ └── ourdigital.yaml # Global configuration
|
||||
└── README.md # This file
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
### Environment Variables
|
||||
|
||||
Key variables in `.env.ourdigital`:
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `OURDIGITAL_ENV` | Environment (development/production) |
|
||||
| `NOTION_API_TOKEN` | Notion integration token |
|
||||
| `NOTION_WORKING_WITH_AI_DB` | Primary Notion database ID |
|
||||
| `GHOST_BLOG_ADMIN_KEY` | Ghost CMS admin API key |
|
||||
|
||||
### Config File
|
||||
|
||||
`config/ourdigital.yaml` contains:
|
||||
- Brand settings (name, tagline, values)
|
||||
- Channel configurations
|
||||
- Color palette
|
||||
- Typography settings
|
||||
- Skill numbering conventions
|
||||
- Export paths
|
||||
|
||||
## Usage in Skills
|
||||
|
||||
### Loading Configuration
|
||||
|
||||
```python
|
||||
import yaml
|
||||
from pathlib import Path
|
||||
|
||||
def load_config():
|
||||
config_path = Path(__file__).parent.parent / "_ourdigital-shared/config/ourdigital.yaml"
|
||||
with open(config_path) as f:
|
||||
return yaml.safe_load(f)
|
||||
|
||||
config = load_config()
|
||||
print(config['brand']['tagline'])
|
||||
```
|
||||
|
||||
### Loading Environment
|
||||
|
||||
```python
|
||||
from dotenv import load_dotenv
|
||||
import os
|
||||
|
||||
load_dotenv(os.path.expanduser("~/.env.ourdigital"))
|
||||
|
||||
notion_token = os.getenv("NOTION_API_TOKEN")
|
||||
```
|
||||
|
||||
## Skill Numbering
|
||||
|
||||
| Range | Category |
|
||||
|-------|----------|
|
||||
| 01-09 | OurDigital Core (brand, blog, journal, research, etc.) |
|
||||
| 10 | Meta (skill-creator) |
|
||||
| 11-19 | SEO Tools |
|
||||
| 20-29 | GTM/Analytics Tools |
|
||||
| 31-39 | Notion Tools |
|
||||
| 40-49 | Jamie Clinic Tools |
|
||||
|
||||
## Version
|
||||
|
||||
- Package Version: 1.0.0
|
||||
- Python Requirement: >= 3.11
|
||||
- Author: OurDigital (Andrew Yim)
|
||||
141
custom-skills/_ourdigital-shared/config/ourdigital.yaml
Normal file
141
custom-skills/_ourdigital-shared/config/ourdigital.yaml
Normal file
@@ -0,0 +1,141 @@
|
||||
# OurDigital Skills Configuration
|
||||
# Global settings for all ourdigital-* skills
|
||||
|
||||
# =============================================================================
|
||||
# Environment
|
||||
# =============================================================================
|
||||
environment: development # development | production
|
||||
|
||||
# =============================================================================
|
||||
# Brand Settings
|
||||
# =============================================================================
|
||||
brand:
|
||||
name: "OurDigital Clinic"
|
||||
tagline: "우리 디지털 클리닉 | Your Digital Health Partner"
|
||||
philosophy: "Precision + Empathy + Evidence"
|
||||
|
||||
values:
|
||||
- key: data-driven
|
||||
korean: 데이터 중심
|
||||
metaphor: 정밀 검사
|
||||
- key: in-action
|
||||
korean: 실행 지향
|
||||
metaphor: 실행 가능한 처방
|
||||
- key: marketing-science
|
||||
korean: 마케팅 과학
|
||||
metaphor: 근거 중심 의학
|
||||
|
||||
# =============================================================================
|
||||
# Channels
|
||||
# =============================================================================
|
||||
channels:
|
||||
main:
|
||||
domain: ourdigital.org
|
||||
purpose: "Business & Consulting Hub"
|
||||
tone: "Professional, Data-driven"
|
||||
|
||||
blog:
|
||||
domain: blog.ourdigital.org
|
||||
purpose: "Knowledge & Thought Leadership"
|
||||
tone: "Analytical, Educational"
|
||||
platform: ghost
|
||||
|
||||
journal:
|
||||
domain: journal.ourdigital.org
|
||||
purpose: "Creative Essays & Culture"
|
||||
tone: "Conversational, Poetic"
|
||||
platform: ghost
|
||||
|
||||
ourstory:
|
||||
domain: ourstory.day
|
||||
purpose: "Personal Narratives"
|
||||
tone: "Intimate, Authentic"
|
||||
platform: ghost
|
||||
|
||||
corporate:
|
||||
domain: dintelligence.co.kr
|
||||
purpose: "Corporate Partnership"
|
||||
tone: "Professional, B2B"
|
||||
|
||||
# =============================================================================
|
||||
# Color Palette
|
||||
# =============================================================================
|
||||
colors:
|
||||
primary:
|
||||
d-black: "#221814"
|
||||
d-olive: "#cedc00"
|
||||
d-green: "#287379"
|
||||
d-blue: "#0075c0"
|
||||
d-beige: "#f2f2de"
|
||||
d-gray: "#ebebeb"
|
||||
d-border: "#cdcac8"
|
||||
|
||||
hive:
|
||||
yellow: "#ffe100"
|
||||
orange: "#f1a615"
|
||||
skyblue: "#21a8bc"
|
||||
|
||||
text:
|
||||
black: "#000000"
|
||||
gray: "#7a7a7b"
|
||||
white: "#ffffff"
|
||||
|
||||
# =============================================================================
|
||||
# Typography
|
||||
# =============================================================================
|
||||
typography:
|
||||
korean: "Noto Sans KR"
|
||||
english:
|
||||
primary: "Noto Sans"
|
||||
emphasis: "Inter"
|
||||
grid_columns: 12
|
||||
|
||||
# =============================================================================
|
||||
# Notion Integration
|
||||
# =============================================================================
|
||||
notion:
|
||||
databases:
|
||||
working_with_ai:
|
||||
id: "f8f19ede-32bd-43ac-9f60-0651f6f40afe"
|
||||
url: "https://www.notion.so/f529bd7b67ce4033bb70ce951d65c9e8"
|
||||
|
||||
ourdigital_channels:
|
||||
id: "9e958359535b495e863aba20d6c0a59b"
|
||||
|
||||
default_properties:
|
||||
ai_used: "Claude Code"
|
||||
status: "In progress"
|
||||
|
||||
# =============================================================================
|
||||
# Skill Settings
|
||||
# =============================================================================
|
||||
skills:
|
||||
trigger_prefix: "ourdigital"
|
||||
|
||||
numbering:
|
||||
core: "01-09" # Brand, blog, journal, research, etc.
|
||||
meta: "10" # Skill creator
|
||||
seo: "11-19" # SEO tools
|
||||
gtm: "20-29" # GTM/Analytics
|
||||
notion: "31-39" # Notion tools
|
||||
jamie: "40-49" # Jamie Clinic
|
||||
|
||||
body_word_limit:
|
||||
min: 800
|
||||
max: 1200
|
||||
|
||||
directory_structure:
|
||||
- code/
|
||||
- desktop/
|
||||
- shared/references/
|
||||
- shared/templates/
|
||||
- shared/scripts/
|
||||
- docs/
|
||||
- docs/logs/
|
||||
|
||||
# =============================================================================
|
||||
# Export Paths
|
||||
# =============================================================================
|
||||
exports:
|
||||
ulysses: "~/Library/Mobile Documents/com~apple~CloudDocs/Ulysses/Blog Drafts/"
|
||||
local: "./output/"
|
||||
64
custom-skills/_ourdigital-shared/pyproject.toml
Normal file
64
custom-skills/_ourdigital-shared/pyproject.toml
Normal file
@@ -0,0 +1,64 @@
|
||||
[build-system]
|
||||
requires = ["setuptools>=61.0", "wheel"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "ourdigital-skills"
|
||||
version = "1.0.0"
|
||||
description = "OurDigital Custom Claude Skills Package"
|
||||
readme = "README.md"
|
||||
license = {text = "MIT"}
|
||||
authors = [
|
||||
{name = "Andrew Yim", email = "andrew@ourdigital.org"}
|
||||
]
|
||||
requires-python = ">=3.11"
|
||||
classifiers = [
|
||||
"Development Status :: 4 - Beta",
|
||||
"Intended Audience :: Developers",
|
||||
"License :: OSI Approved :: MIT License",
|
||||
"Programming Language :: Python :: 3",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
]
|
||||
|
||||
dependencies = [
|
||||
"requests>=2.31.0",
|
||||
"python-dotenv>=1.0.0",
|
||||
"pyyaml>=6.0",
|
||||
"notion-client>=2.0.0",
|
||||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
dev = [
|
||||
"pytest>=7.4.0",
|
||||
"black>=23.0.0",
|
||||
"ruff>=0.1.0",
|
||||
]
|
||||
desktop = [
|
||||
# Desktop-specific dependencies
|
||||
]
|
||||
code = [
|
||||
# Claude Code specific dependencies
|
||||
"anthropic>=0.18.0",
|
||||
]
|
||||
|
||||
[project.urls]
|
||||
Homepage = "https://www.ourdigital.org"
|
||||
Repository = "https://github.com/ourdigital/our-claude-skills"
|
||||
|
||||
[tool.setuptools.packages.find]
|
||||
where = ["."]
|
||||
include = ["ourdigital_skills*"]
|
||||
|
||||
[tool.black]
|
||||
line-length = 100
|
||||
target-version = ['py311']
|
||||
|
||||
[tool.ruff]
|
||||
line-length = 100
|
||||
select = ["E", "F", "I", "N", "W"]
|
||||
ignore = ["E501"]
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
testpaths = ["tests"]
|
||||
python_files = ["test_*.py"]
|
||||
29
custom-skills/_ourdigital-shared/requirements/base.txt
Normal file
29
custom-skills/_ourdigital-shared/requirements/base.txt
Normal file
@@ -0,0 +1,29 @@
|
||||
# OurDigital Skills - Base Requirements
|
||||
# Common dependencies for all ourdigital skills
|
||||
|
||||
# Core utilities
|
||||
requests>=2.31.0
|
||||
python-dotenv>=1.0.0
|
||||
pyyaml>=6.0.1
|
||||
|
||||
# Notion integration
|
||||
notion-client>=2.2.0
|
||||
|
||||
# Date/time handling
|
||||
python-dateutil>=2.8.2
|
||||
|
||||
# File handling
|
||||
pathlib2>=2.3.7;python_version<"3.12"
|
||||
|
||||
# JSON handling
|
||||
orjson>=3.9.0
|
||||
|
||||
# Markdown processing
|
||||
markdown>=3.5.0
|
||||
markdownify>=0.11.6
|
||||
|
||||
# HTTP client
|
||||
httpx>=0.25.0
|
||||
|
||||
# Data validation
|
||||
pydantic>=2.5.0
|
||||
23
custom-skills/_ourdigital-shared/requirements/code.txt
Normal file
23
custom-skills/_ourdigital-shared/requirements/code.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
# OurDigital Skills - Claude Code Requirements
|
||||
# Dependencies specific to Claude Code environment
|
||||
|
||||
-r base.txt
|
||||
|
||||
# Anthropic SDK (for programmatic Claude access)
|
||||
anthropic>=0.18.0
|
||||
|
||||
# Ghost CMS integration
|
||||
# ghost-admin-api>=0.1.0 # If available, or use requests
|
||||
|
||||
# SEO tools
|
||||
beautifulsoup4>=4.12.0
|
||||
lxml>=4.9.0
|
||||
|
||||
# Web scraping (for research skills)
|
||||
aiohttp>=3.9.0
|
||||
|
||||
# Data analysis
|
||||
pandas>=2.1.0
|
||||
|
||||
# Template rendering
|
||||
jinja2>=3.1.0
|
||||
13
custom-skills/_ourdigital-shared/requirements/desktop.txt
Normal file
13
custom-skills/_ourdigital-shared/requirements/desktop.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
# OurDigital Skills - Desktop Requirements
|
||||
# Dependencies specific to Claude Desktop environment
|
||||
|
||||
-r base.txt
|
||||
|
||||
# MCP integration (if building custom MCP servers)
|
||||
# mcp>=0.1.0
|
||||
|
||||
# Ulysses integration (macOS)
|
||||
pyobjc-framework-Cocoa>=10.0;sys_platform=="darwin"
|
||||
|
||||
# Clipboard handling
|
||||
pyperclip>=1.8.2
|
||||
Reference in New Issue
Block a user