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:
2026-01-31 16:50:17 +07:00
parent 7d20abe811
commit 0bc24d00b9
169 changed files with 9970 additions and 741 deletions

View 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/

View 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)

View 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/"

View 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"]

View 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

View 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

View 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