Fix SEO skills 19-34, add global slash commands, update installer (#4)
* Fix SEO skill 34 bugs, Korean labels, and transition Ahrefs refs to our-seo-agent P0: Fix report_aggregator.py — wrong SKILL_REGISTRY[33] mapping, missing CATEGORY_WEIGHTS for 7 categories, and break bug in health score parsing that exited loop even on parse failure. P1: Remove VIEW tab references from skill 20, expand skill 32 docs, replace Ahrefs MCP references across all 16 skills (19-28, 31-34) with our-seo-agent CLI data source references. P2: Fix Korean labels in executive_report.py and dashboard_generator.py, add tenacity to base requirements, sync skill 34 base_client.py with canonical version from skill 12. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Add Claude Code slash commands for SEO skills 19-34 and fix stale paths Create 14 new slash command files for skills 19-28, 31-34 so they appear as /seo-* commands in Claude Code. Also fix stale directory paths in 8 existing commands (skills 12-18, 29-30) that referenced pre-renumbering skill directories. Update .gitignore to track .claude/commands/ while keeping other .claude/ files ignored. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Add 8 slash commands, enhance reference-curator with depth/output options - Add slash commands: ourdigital-brand-guide, notion-writer, notebooklm-agent, notebooklm-automation, notebooklm-studio, notebooklm-research, reference-curator, multi-agent-guide - Add --depth (light/standard/deep/full) with Firecrawl parameter mapping - Add --output with ~/Documents/reference-library/ default and user confirmation - Increase --max-sources default from 10 to 100 - Rename /reference-curator-pipeline to /reference-curator - Simplify web-crawler-orchestrator label to web-crawler in docs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Convert slash command script paths to absolute for global availability Symlinked all 39 project commands to ~/.claude/commands/ so they work from any project directory. Converted 126 relative custom-skills/ paths to absolute /Users/ourdigital/Projects/our-claude-skills/custom-skills/. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update installer to support global slash command installation Add symlink-based global command setup so all 39 custom skills work from any project directory. New --commands flag for quick re-sync, updated --validate/--update/--uninstall to handle symlinks, and expanded skill listing to cover all 7 domains. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Add user guides in English and Korean for all 52 custom skills Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -20,11 +20,11 @@ Lightweight Google Tag Manager audit tool.
|
||||
|
||||
```bash
|
||||
# Audit GTM container
|
||||
python custom-skills/20-gtm-audit/code/scripts/gtm_audit.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/20-gtm-audit/code/scripts/gtm_audit.py \
|
||||
--url https://example.com
|
||||
|
||||
# With detailed dataLayer check
|
||||
python custom-skills/20-gtm-audit/code/scripts/gtm_audit.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/20-gtm-audit/code/scripts/gtm_audit.py \
|
||||
--url https://example.com --check-datalayer --output report.json
|
||||
```
|
||||
|
||||
|
||||
@@ -20,15 +20,15 @@ Full GTM management with dataLayer injection and tag generation.
|
||||
|
||||
```bash
|
||||
# Full GTM management
|
||||
python custom-skills/21-gtm-manager/code/scripts/gtm_manager.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/21-gtm-manager/code/scripts/gtm_manager.py \
|
||||
--url https://example.com --full-audit
|
||||
|
||||
# Generate dataLayer tag
|
||||
python custom-skills/21-gtm-manager/code/scripts/gtm_manager.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/21-gtm-manager/code/scripts/gtm_manager.py \
|
||||
--generate-tag purchase --output purchase_tag.html
|
||||
|
||||
# Export to Notion
|
||||
python custom-skills/21-gtm-manager/code/scripts/gtm_manager.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/21-gtm-manager/code/scripts/gtm_manager.py \
|
||||
--url https://example.com --notion-export --database DATABASE_ID
|
||||
```
|
||||
|
||||
|
||||
@@ -21,15 +21,15 @@ Jamie Clinic content **generation** toolkit.
|
||||
|
||||
```bash
|
||||
# Check content compliance
|
||||
python custom-skills/40-jamie-brand-editor/code/scripts/compliance_checker.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/40-jamie-brand-editor/code/scripts/compliance_checker.py \
|
||||
--input draft.md
|
||||
|
||||
# With detailed report
|
||||
python custom-skills/40-jamie-brand-editor/code/scripts/compliance_checker.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/40-jamie-brand-editor/code/scripts/compliance_checker.py \
|
||||
--input draft.md --verbose --output report.json
|
||||
|
||||
# Batch check
|
||||
python custom-skills/40-jamie-brand-editor/code/scripts/compliance_checker.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/40-jamie-brand-editor/code/scripts/compliance_checker.py \
|
||||
--dir ./drafts --output compliance_report.json
|
||||
```
|
||||
|
||||
|
||||
@@ -67,5 +67,5 @@ Examples:
|
||||
3. Install pre-commit hooks: `pre-commit install` (optional)
|
||||
|
||||
## Source
|
||||
Full details: `custom-skills/91-multi-agent-guide/README.md`
|
||||
Related commands: `custom-skills/91-multi-agent-guide/commands/`
|
||||
Full details: `/Users/ourdigital/Projects/our-claude-skills/custom-skills/91-multi-agent-guide/README.md`
|
||||
Related commands: `/Users/ourdigital/Projects/our-claude-skills/custom-skills/91-multi-agent-guide/commands/`
|
||||
|
||||
@@ -59,4 +59,4 @@ notebooklm ask "Compare" -s source1 -s source2
|
||||
| Auth error | `notebooklm login` |
|
||||
|
||||
## Source
|
||||
Full details: `custom-skills/50-notebooklm-agent/code/CLAUDE.md`
|
||||
Full details: `/Users/ourdigital/Projects/our-claude-skills/custom-skills/50-notebooklm-agent/code/CLAUDE.md`
|
||||
|
||||
@@ -54,4 +54,4 @@ notebooklm artifact delete <id>
|
||||
**Ask first:** `delete`, `rename`
|
||||
|
||||
## Source
|
||||
Full details: `custom-skills/51-notebooklm-automation/code/CLAUDE.md`
|
||||
Full details: `/Users/ourdigital/Projects/our-claude-skills/custom-skills/51-notebooklm-automation/code/CLAUDE.md`
|
||||
|
||||
@@ -63,4 +63,4 @@ Task(
|
||||
**Ask first:** `source add-research`, `research wait --import-all`
|
||||
|
||||
## Source
|
||||
Full details: `custom-skills/53-notebooklm-research/code/CLAUDE.md`
|
||||
Full details: `/Users/ourdigital/Projects/our-claude-skills/custom-skills/53-notebooklm-research/code/CLAUDE.md`
|
||||
|
||||
@@ -70,4 +70,4 @@ notebooklm download mind-map ./mindmap.json
|
||||
**Ask first:** `generate *`, `download *`
|
||||
|
||||
## Source
|
||||
Full details: `custom-skills/52-notebooklm-studio/code/CLAUDE.md`
|
||||
Full details: `/Users/ourdigital/Projects/our-claude-skills/custom-skills/52-notebooklm-studio/code/CLAUDE.md`
|
||||
|
||||
@@ -20,15 +20,15 @@ Notion workspace management agent for organizing, restructuring, and maintaining
|
||||
|
||||
```bash
|
||||
# Analyze database schema
|
||||
python custom-skills/01-notion-organizer/code/scripts/schema_migrator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/01-notion-organizer/code/scripts/schema_migrator.py \
|
||||
--source-db DATABASE_ID --analyze
|
||||
|
||||
# Migrate with mapping
|
||||
python custom-skills/01-notion-organizer/code/scripts/schema_migrator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/01-notion-organizer/code/scripts/schema_migrator.py \
|
||||
--source-db SOURCE_ID --target-db TARGET_ID --mapping mapping.json
|
||||
|
||||
# Async bulk operations
|
||||
python custom-skills/01-notion-organizer/code/scripts/async_organizer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/01-notion-organizer/code/scripts/async_organizer.py \
|
||||
--database DATABASE_ID --operation archive --filter "Status=Done"
|
||||
```
|
||||
|
||||
|
||||
@@ -60,4 +60,4 @@ Headings, bulleted/numbered lists, to-do items, quotes, code blocks (with langua
|
||||
The script automatically batches large content.
|
||||
|
||||
## Source
|
||||
Full details: `custom-skills/32-notion-writer/code/CLAUDE.md`
|
||||
Full details: `/Users/ourdigital/Projects/our-claude-skills/custom-skills/32-notion-writer/code/CLAUDE.md`
|
||||
|
||||
@@ -66,4 +66,4 @@ Reference skill for OurDigital brand standards, writing style, and visual identi
|
||||
5. **Visual Consistency**: Uses approved color palette?
|
||||
|
||||
## Source
|
||||
Full details: `custom-skills/01-ourdigital-brand-guide/desktop/SKILL.md`
|
||||
Full details: `/Users/ourdigital/Projects/our-claude-skills/custom-skills/01-ourdigital-brand-guide/desktop/SKILL.md`
|
||||
|
||||
@@ -20,15 +20,15 @@ Visual storytelling toolkit for blog featured images.
|
||||
|
||||
```bash
|
||||
# Generate image prompt
|
||||
python custom-skills/30-ourdigital-designer/code/scripts/generate_prompt.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/30-ourdigital-designer/code/scripts/generate_prompt.py \
|
||||
--topic "AI identity" --mood "contemplative"
|
||||
|
||||
# From essay text
|
||||
python custom-skills/30-ourdigital-designer/code/scripts/generate_prompt.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/30-ourdigital-designer/code/scripts/generate_prompt.py \
|
||||
--input essay.txt --auto-extract
|
||||
|
||||
# Calibrate mood
|
||||
python custom-skills/30-ourdigital-designer/code/scripts/mood_calibrator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/30-ourdigital-designer/code/scripts/mood_calibrator.py \
|
||||
--input "essay excerpt" --style "minimalist"
|
||||
```
|
||||
|
||||
|
||||
@@ -20,13 +20,13 @@ Notion-to-presentation workflow for branded slides.
|
||||
|
||||
```bash
|
||||
# Full automated workflow
|
||||
python custom-skills/32-ourdigital-presentation/code/scripts/run_workflow.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/32-ourdigital-presentation/code/scripts/run_workflow.py \
|
||||
--notion-url [NOTION_URL] --output presentation.pptx
|
||||
|
||||
# Step-by-step
|
||||
python custom-skills/32-ourdigital-presentation/code/scripts/extract_notion.py [URL] > research.json
|
||||
python custom-skills/32-ourdigital-presentation/code/scripts/synthesize_content.py research.json > synthesis.json
|
||||
python custom-skills/32-ourdigital-presentation/code/scripts/apply_brand.py synthesis.json --output presentation.pptx
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/32-ourdigital-presentation/code/scripts/extract_notion.py [URL] > research.json
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/32-ourdigital-presentation/code/scripts/synthesize_content.py research.json > synthesis.json
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/32-ourdigital-presentation/code/scripts/apply_brand.py synthesis.json --output presentation.pptx
|
||||
```
|
||||
|
||||
## Pipeline
|
||||
|
||||
@@ -20,17 +20,17 @@ Research-to-publication workflow for OurDigital blogs.
|
||||
|
||||
```bash
|
||||
# Export to Ulysses
|
||||
python custom-skills/31-ourdigital-research/code/scripts/export_to_ulysses.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/31-ourdigital-research/code/scripts/export_to_ulysses.py \
|
||||
--input research.md --group "Blog Drafts"
|
||||
|
||||
# With tags
|
||||
python custom-skills/31-ourdigital-research/code/scripts/export_to_ulysses.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/31-ourdigital-research/code/scripts/export_to_ulysses.py \
|
||||
--input research.md \
|
||||
--group "Blog Drafts" \
|
||||
--tags "AI,research,draft"
|
||||
|
||||
# From Notion export
|
||||
python custom-skills/31-ourdigital-research/code/scripts/export_to_ulysses.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/31-ourdigital-research/code/scripts/export_to_ulysses.py \
|
||||
--notion-export notion_export.zip \
|
||||
--group "From Notion"
|
||||
```
|
||||
|
||||
@@ -225,9 +225,9 @@ firecrawl_crawl:
|
||||
|
||||
## Related Sub-commands
|
||||
|
||||
Individual stages available at: `custom-skills/90-reference-curator/commands/`
|
||||
Individual stages available at: `/Users/ourdigital/Projects/our-claude-skills/custom-skills/90-reference-curator/commands/`
|
||||
- `/reference-discovery`, `/web-crawler`, `/content-repository`
|
||||
- `/content-distiller`, `/quality-reviewer`, `/markdown-exporter`
|
||||
|
||||
## Source
|
||||
Full details: `custom-skills/90-reference-curator/README.md`
|
||||
Full details: `/Users/ourdigital/Projects/our-claude-skills/custom-skills/90-reference-curator/README.md`
|
||||
|
||||
@@ -22,35 +22,35 @@ Track brand visibility in AI-generated search answers with citation analysis and
|
||||
|
||||
```bash
|
||||
# AI visibility overview
|
||||
python custom-skills/27-seo-ai-visibility/code/scripts/ai_visibility_tracker.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/27-seo-ai-visibility/code/scripts/ai_visibility_tracker.py \
|
||||
--target example.com --json
|
||||
|
||||
# With competitor comparison
|
||||
python custom-skills/27-seo-ai-visibility/code/scripts/ai_visibility_tracker.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/27-seo-ai-visibility/code/scripts/ai_visibility_tracker.py \
|
||||
--target example.com --competitor comp1.com --competitor comp2.com --json
|
||||
|
||||
# Historical trend (impressions/mentions)
|
||||
python custom-skills/27-seo-ai-visibility/code/scripts/ai_visibility_tracker.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/27-seo-ai-visibility/code/scripts/ai_visibility_tracker.py \
|
||||
--target example.com --history --json
|
||||
|
||||
# Share of voice analysis
|
||||
python custom-skills/27-seo-ai-visibility/code/scripts/ai_visibility_tracker.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/27-seo-ai-visibility/code/scripts/ai_visibility_tracker.py \
|
||||
--target example.com --sov --json
|
||||
|
||||
# AI citation analysis
|
||||
python custom-skills/27-seo-ai-visibility/code/scripts/ai_citation_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/27-seo-ai-visibility/code/scripts/ai_citation_analyzer.py \
|
||||
--target example.com --json
|
||||
|
||||
# Cited domains analysis
|
||||
python custom-skills/27-seo-ai-visibility/code/scripts/ai_citation_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/27-seo-ai-visibility/code/scripts/ai_citation_analyzer.py \
|
||||
--target example.com --cited-domains --json
|
||||
|
||||
# Cited pages analysis
|
||||
python custom-skills/27-seo-ai-visibility/code/scripts/ai_citation_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/27-seo-ai-visibility/code/scripts/ai_citation_analyzer.py \
|
||||
--target example.com --cited-pages --json
|
||||
|
||||
# AI response content analysis
|
||||
python custom-skills/27-seo-ai-visibility/code/scripts/ai_citation_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/27-seo-ai-visibility/code/scripts/ai_citation_analyzer.py \
|
||||
--target example.com --responses --json
|
||||
```
|
||||
|
||||
|
||||
@@ -23,23 +23,23 @@ Competitor profiling, benchmarking, and threat scoring for comprehensive SEO com
|
||||
|
||||
```bash
|
||||
# Auto-discover and profile competitors
|
||||
python custom-skills/31-seo-competitor-intel/code/scripts/competitor_profiler.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/31-seo-competitor-intel/code/scripts/competitor_profiler.py \
|
||||
--target https://example.com --json
|
||||
|
||||
# Specify competitors manually
|
||||
python custom-skills/31-seo-competitor-intel/code/scripts/competitor_profiler.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/31-seo-competitor-intel/code/scripts/competitor_profiler.py \
|
||||
--target https://example.com --competitor https://comp1.com --competitor https://comp2.com --json
|
||||
|
||||
# Include Korean market analysis
|
||||
python custom-skills/31-seo-competitor-intel/code/scripts/competitor_profiler.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/31-seo-competitor-intel/code/scripts/competitor_profiler.py \
|
||||
--target https://example.com --korean-market --json
|
||||
|
||||
# 30-day competitive monitoring
|
||||
python custom-skills/31-seo-competitor-intel/code/scripts/competitive_monitor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/31-seo-competitor-intel/code/scripts/competitive_monitor.py \
|
||||
--target https://example.com --period 30 --json
|
||||
|
||||
# Traffic trend comparison (90 days)
|
||||
python custom-skills/31-seo-competitor-intel/code/scripts/competitive_monitor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/31-seo-competitor-intel/code/scripts/competitive_monitor.py \
|
||||
--target https://example.com --scope traffic --period 90 --json
|
||||
```
|
||||
|
||||
|
||||
@@ -23,27 +23,27 @@ Content inventory, performance scoring, decay detection, topic gap analysis, clu
|
||||
|
||||
```bash
|
||||
# Full content audit
|
||||
python custom-skills/23-seo-content-strategy/code/scripts/content_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/23-seo-content-strategy/code/scripts/content_auditor.py \
|
||||
--url https://example.com --json
|
||||
|
||||
# Detect decaying content
|
||||
python custom-skills/23-seo-content-strategy/code/scripts/content_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/23-seo-content-strategy/code/scripts/content_auditor.py \
|
||||
--url https://example.com --decay --json
|
||||
|
||||
# Filter by content type
|
||||
python custom-skills/23-seo-content-strategy/code/scripts/content_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/23-seo-content-strategy/code/scripts/content_auditor.py \
|
||||
--url https://example.com --type blog --json
|
||||
|
||||
# Content gap analysis with topic clusters
|
||||
python custom-skills/23-seo-content-strategy/code/scripts/content_gap_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/23-seo-content-strategy/code/scripts/content_gap_analyzer.py \
|
||||
--target https://example.com --competitor https://comp1.com --clusters --json
|
||||
|
||||
# Generate content brief for keyword
|
||||
python custom-skills/23-seo-content-strategy/code/scripts/content_brief_generator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/23-seo-content-strategy/code/scripts/content_brief_generator.py \
|
||||
--keyword "치과 임플란트 비용" --url https://example.com --json
|
||||
|
||||
# Brief with competitor analysis
|
||||
python custom-skills/23-seo-content-strategy/code/scripts/content_brief_generator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/23-seo-content-strategy/code/scripts/content_brief_generator.py \
|
||||
--keyword "dental implant cost" --url https://example.com --competitors 5 --json
|
||||
```
|
||||
|
||||
|
||||
@@ -22,27 +22,27 @@ Server access log analysis, bot profiling, and crawl budget waste identification
|
||||
|
||||
```bash
|
||||
# Parse Nginx access log
|
||||
python custom-skills/32-seo-crawl-budget/code/scripts/log_parser.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/32-seo-crawl-budget/code/scripts/log_parser.py \
|
||||
--log-file /var/log/nginx/access.log --json
|
||||
|
||||
# Parse Apache log, filter by Googlebot
|
||||
python custom-skills/32-seo-crawl-budget/code/scripts/log_parser.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/32-seo-crawl-budget/code/scripts/log_parser.py \
|
||||
--log-file /var/log/apache2/access.log --format apache --bot googlebot --json
|
||||
|
||||
# Parse gzipped log in streaming mode
|
||||
python custom-skills/32-seo-crawl-budget/code/scripts/log_parser.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/32-seo-crawl-budget/code/scripts/log_parser.py \
|
||||
--log-file access.log.gz --streaming --json
|
||||
|
||||
# Full crawl budget analysis with sitemap comparison
|
||||
python custom-skills/32-seo-crawl-budget/code/scripts/crawl_budget_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/32-seo-crawl-budget/code/scripts/crawl_budget_analyzer.py \
|
||||
--log-file access.log --sitemap https://example.com/sitemap.xml --json
|
||||
|
||||
# Waste identification only
|
||||
python custom-skills/32-seo-crawl-budget/code/scripts/crawl_budget_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/32-seo-crawl-budget/code/scripts/crawl_budget_analyzer.py \
|
||||
--log-file access.log --scope waste --json
|
||||
|
||||
# Orphan page detection
|
||||
python custom-skills/32-seo-crawl-budget/code/scripts/crawl_budget_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/32-seo-crawl-budget/code/scripts/crawl_budget_analyzer.py \
|
||||
--log-file access.log --sitemap https://example.com/sitemap.xml --scope orphans --json
|
||||
```
|
||||
|
||||
|
||||
@@ -23,27 +23,27 @@ Product page SEO audit, product schema validation, category taxonomy analysis, a
|
||||
|
||||
```bash
|
||||
# Full e-commerce SEO audit
|
||||
python custom-skills/24-seo-ecommerce/code/scripts/ecommerce_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/24-seo-ecommerce/code/scripts/ecommerce_auditor.py \
|
||||
--url https://example.com --json
|
||||
|
||||
# Product page audit only
|
||||
python custom-skills/24-seo-ecommerce/code/scripts/ecommerce_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/24-seo-ecommerce/code/scripts/ecommerce_auditor.py \
|
||||
--url https://example.com --scope products --json
|
||||
|
||||
# Category taxonomy analysis
|
||||
python custom-skills/24-seo-ecommerce/code/scripts/ecommerce_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/24-seo-ecommerce/code/scripts/ecommerce_auditor.py \
|
||||
--url https://example.com --scope categories --json
|
||||
|
||||
# Korean marketplace presence check
|
||||
python custom-skills/24-seo-ecommerce/code/scripts/ecommerce_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/24-seo-ecommerce/code/scripts/ecommerce_auditor.py \
|
||||
--url https://example.com --korean-marketplaces --json
|
||||
|
||||
# Validate product schema on single page
|
||||
python custom-skills/24-seo-ecommerce/code/scripts/product_schema_checker.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/24-seo-ecommerce/code/scripts/product_schema_checker.py \
|
||||
--url https://example.com/product/123 --json
|
||||
|
||||
# Batch validate from sitemap (sample 50 pages)
|
||||
python custom-skills/24-seo-ecommerce/code/scripts/product_schema_checker.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/24-seo-ecommerce/code/scripts/product_schema_checker.py \
|
||||
--sitemap https://example.com/product-sitemap.xml --sample 50 --json
|
||||
```
|
||||
|
||||
|
||||
@@ -20,11 +20,11 @@ Keyword strategy and content architecture for gateway pages.
|
||||
|
||||
```bash
|
||||
# Analyze keyword
|
||||
python custom-skills/29-seo-gateway-architect/code/scripts/keyword_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/29-seo-gateway-architect/code/scripts/keyword_analyzer.py \
|
||||
--topic "눈 성형"
|
||||
|
||||
# With location targeting
|
||||
python custom-skills/29-seo-gateway-architect/code/scripts/keyword_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/29-seo-gateway-architect/code/scripts/keyword_analyzer.py \
|
||||
--topic "눈 성형" --market "강남" --output strategy.json
|
||||
```
|
||||
|
||||
|
||||
@@ -20,10 +20,10 @@ Generate SEO-optimized gateway pages from templates.
|
||||
|
||||
```bash
|
||||
# Generate with sample data
|
||||
python custom-skills/30-seo-gateway-builder/code/scripts/generate_pages.py
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/30-seo-gateway-builder/code/scripts/generate_pages.py
|
||||
|
||||
# Custom configuration
|
||||
python custom-skills/30-seo-gateway-builder/code/scripts/generate_pages.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/30-seo-gateway-builder/code/scripts/generate_pages.py \
|
||||
--config config/services.json \
|
||||
--locations config/locations.json \
|
||||
--output ./pages
|
||||
|
||||
@@ -20,15 +20,15 @@ Google Search Console data retrieval and analysis.
|
||||
|
||||
```bash
|
||||
# Get search performance
|
||||
python custom-skills/15-seo-search-console/code/scripts/gsc_client.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/15-seo-search-console/code/scripts/gsc_client.py \
|
||||
--site https://example.com --days 28
|
||||
|
||||
# Query analysis
|
||||
python custom-skills/15-seo-search-console/code/scripts/gsc_client.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/15-seo-search-console/code/scripts/gsc_client.py \
|
||||
--site https://example.com --report queries --limit 100
|
||||
|
||||
# Page performance
|
||||
python custom-skills/15-seo-search-console/code/scripts/gsc_client.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/15-seo-search-console/code/scripts/gsc_client.py \
|
||||
--site https://example.com --report pages --output pages_report.json
|
||||
```
|
||||
|
||||
|
||||
@@ -22,31 +22,31 @@ Multi-language and multi-region SEO audit with hreflang validation and content p
|
||||
|
||||
```bash
|
||||
# Hreflang validation
|
||||
python custom-skills/26-seo-international/code/scripts/hreflang_validator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/26-seo-international/code/scripts/hreflang_validator.py \
|
||||
--url https://example.com --json
|
||||
|
||||
# With sitemap-based discovery
|
||||
python custom-skills/26-seo-international/code/scripts/hreflang_validator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/26-seo-international/code/scripts/hreflang_validator.py \
|
||||
--url https://example.com --sitemap https://example.com/sitemap.xml --json
|
||||
|
||||
# Check specific pages from file
|
||||
python custom-skills/26-seo-international/code/scripts/hreflang_validator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/26-seo-international/code/scripts/hreflang_validator.py \
|
||||
--urls-file pages.txt --json
|
||||
|
||||
# Full international audit
|
||||
python custom-skills/26-seo-international/code/scripts/international_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/26-seo-international/code/scripts/international_auditor.py \
|
||||
--url https://example.com --json
|
||||
|
||||
# URL structure analysis only
|
||||
python custom-skills/26-seo-international/code/scripts/international_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/26-seo-international/code/scripts/international_auditor.py \
|
||||
--url https://example.com --scope structure --json
|
||||
|
||||
# Content parity check only
|
||||
python custom-skills/26-seo-international/code/scripts/international_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/26-seo-international/code/scripts/international_auditor.py \
|
||||
--url https://example.com --scope parity --json
|
||||
|
||||
# Korean expansion focus
|
||||
python custom-skills/26-seo-international/code/scripts/international_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/26-seo-international/code/scripts/international_auditor.py \
|
||||
--url https://example.com --korean-expansion --json
|
||||
```
|
||||
|
||||
|
||||
@@ -22,23 +22,23 @@ Keyword expansion, intent classification, clustering, and competitor gap analysi
|
||||
|
||||
```bash
|
||||
# Basic keyword research
|
||||
python custom-skills/19-seo-keyword-strategy/code/scripts/keyword_researcher.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/19-seo-keyword-strategy/code/scripts/keyword_researcher.py \
|
||||
--keyword "치과 임플란트" --country kr --json
|
||||
|
||||
# Korean market with suffix expansion
|
||||
python custom-skills/19-seo-keyword-strategy/code/scripts/keyword_researcher.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/19-seo-keyword-strategy/code/scripts/keyword_researcher.py \
|
||||
--keyword "치과 임플란트" --country kr --korean-suffixes --json
|
||||
|
||||
# Volume comparison Korea vs global
|
||||
python custom-skills/19-seo-keyword-strategy/code/scripts/keyword_researcher.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/19-seo-keyword-strategy/code/scripts/keyword_researcher.py \
|
||||
--keyword "dental implant" --country kr --compare-global --json
|
||||
|
||||
# Keyword gap vs competitor
|
||||
python custom-skills/19-seo-keyword-strategy/code/scripts/keyword_gap_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/19-seo-keyword-strategy/code/scripts/keyword_gap_analyzer.py \
|
||||
--target https://example.com --competitor https://competitor.com --json
|
||||
|
||||
# Multiple competitors with minimum volume filter
|
||||
python custom-skills/19-seo-keyword-strategy/code/scripts/keyword_gap_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/19-seo-keyword-strategy/code/scripts/keyword_gap_analyzer.py \
|
||||
--target https://example.com --competitor https://comp1.com \
|
||||
--competitor https://comp2.com --min-volume 100 --json
|
||||
```
|
||||
|
||||
@@ -23,27 +23,27 @@ Entity SEO analysis for Knowledge Panel presence, People Also Ask monitoring, an
|
||||
|
||||
```bash
|
||||
# Knowledge Graph analysis
|
||||
python custom-skills/28-seo-knowledge-graph/code/scripts/knowledge_graph_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/28-seo-knowledge-graph/code/scripts/knowledge_graph_analyzer.py \
|
||||
--entity "Samsung Electronics" --json
|
||||
|
||||
# Korean entity check
|
||||
python custom-skills/28-seo-knowledge-graph/code/scripts/knowledge_graph_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/28-seo-knowledge-graph/code/scripts/knowledge_graph_analyzer.py \
|
||||
--entity "삼성전자" --language ko --json
|
||||
|
||||
# Include Wikipedia/Wikidata check
|
||||
python custom-skills/28-seo-knowledge-graph/code/scripts/knowledge_graph_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/28-seo-knowledge-graph/code/scripts/knowledge_graph_analyzer.py \
|
||||
--entity "Samsung" --wiki --json
|
||||
|
||||
# Full entity SEO audit
|
||||
python custom-skills/28-seo-knowledge-graph/code/scripts/entity_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/28-seo-knowledge-graph/code/scripts/entity_auditor.py \
|
||||
--url https://example.com --entity "Brand Name" --json
|
||||
|
||||
# PAA monitoring
|
||||
python custom-skills/28-seo-knowledge-graph/code/scripts/entity_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/28-seo-knowledge-graph/code/scripts/entity_auditor.py \
|
||||
--url https://example.com --entity "Brand Name" --paa --json
|
||||
|
||||
# FAQ rich result tracking
|
||||
python custom-skills/28-seo-knowledge-graph/code/scripts/entity_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/28-seo-knowledge-graph/code/scripts/entity_auditor.py \
|
||||
--url https://example.com --entity "Brand Name" --faq --json
|
||||
```
|
||||
|
||||
|
||||
@@ -22,35 +22,35 @@ Unified KPI aggregation across all SEO dimensions with health scores, baselines,
|
||||
|
||||
```bash
|
||||
# Aggregate KPIs
|
||||
python custom-skills/25-seo-kpi-framework/code/scripts/kpi_aggregator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/25-seo-kpi-framework/code/scripts/kpi_aggregator.py \
|
||||
--url https://example.com --json
|
||||
|
||||
# Set baseline
|
||||
python custom-skills/25-seo-kpi-framework/code/scripts/kpi_aggregator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/25-seo-kpi-framework/code/scripts/kpi_aggregator.py \
|
||||
--url https://example.com --set-baseline --json
|
||||
|
||||
# Compare against baseline
|
||||
python custom-skills/25-seo-kpi-framework/code/scripts/kpi_aggregator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/25-seo-kpi-framework/code/scripts/kpi_aggregator.py \
|
||||
--url https://example.com --baseline baseline.json --json
|
||||
|
||||
# With ROI estimation
|
||||
python custom-skills/25-seo-kpi-framework/code/scripts/kpi_aggregator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/25-seo-kpi-framework/code/scripts/kpi_aggregator.py \
|
||||
--url https://example.com --roi --json
|
||||
|
||||
# Monthly performance report
|
||||
python custom-skills/25-seo-kpi-framework/code/scripts/performance_reporter.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/25-seo-kpi-framework/code/scripts/performance_reporter.py \
|
||||
--url https://example.com --period monthly --json
|
||||
|
||||
# Quarterly report
|
||||
python custom-skills/25-seo-kpi-framework/code/scripts/performance_reporter.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/25-seo-kpi-framework/code/scripts/performance_reporter.py \
|
||||
--url https://example.com --period quarterly --json
|
||||
|
||||
# Custom date range
|
||||
python custom-skills/25-seo-kpi-framework/code/scripts/performance_reporter.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/25-seo-kpi-framework/code/scripts/performance_reporter.py \
|
||||
--url https://example.com --from 2025-01-01 --to 2025-03-31 --json
|
||||
|
||||
# Executive summary only
|
||||
python custom-skills/25-seo-kpi-framework/code/scripts/performance_reporter.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/25-seo-kpi-framework/code/scripts/performance_reporter.py \
|
||||
--url https://example.com --period monthly --executive --json
|
||||
```
|
||||
|
||||
|
||||
@@ -23,27 +23,27 @@ Backlink profile analysis, toxic link detection, competitor link gap identificat
|
||||
|
||||
```bash
|
||||
# Full backlink audit
|
||||
python custom-skills/22-seo-link-building/code/scripts/backlink_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/22-seo-link-building/code/scripts/backlink_auditor.py \
|
||||
--url https://example.com --json
|
||||
|
||||
# Check link velocity
|
||||
python custom-skills/22-seo-link-building/code/scripts/backlink_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/22-seo-link-building/code/scripts/backlink_auditor.py \
|
||||
--url https://example.com --velocity --json
|
||||
|
||||
# Find broken backlinks for recovery
|
||||
python custom-skills/22-seo-link-building/code/scripts/backlink_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/22-seo-link-building/code/scripts/backlink_auditor.py \
|
||||
--url https://example.com --broken --json
|
||||
|
||||
# Korean platform link analysis
|
||||
python custom-skills/22-seo-link-building/code/scripts/backlink_auditor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/22-seo-link-building/code/scripts/backlink_auditor.py \
|
||||
--url https://example.com --korean-platforms --json
|
||||
|
||||
# Link gap vs competitor
|
||||
python custom-skills/22-seo-link-building/code/scripts/link_gap_finder.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/22-seo-link-building/code/scripts/link_gap_finder.py \
|
||||
--target https://example.com --competitor https://comp1.com --json
|
||||
|
||||
# Multiple competitors with minimum DR filter
|
||||
python custom-skills/22-seo-link-building/code/scripts/link_gap_finder.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/22-seo-link-building/code/scripts/link_gap_finder.py \
|
||||
--target https://example.com --competitor https://comp1.com \
|
||||
--competitor https://comp2.com --min-dr 30 --json
|
||||
```
|
||||
|
||||
@@ -23,27 +23,27 @@ Pre-migration risk assessment, redirect mapping, and post-migration traffic/inde
|
||||
|
||||
```bash
|
||||
# Domain move planning
|
||||
python custom-skills/33-seo-migration-planner/code/scripts/migration_planner.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/33-seo-migration-planner/code/scripts/migration_planner.py \
|
||||
--domain https://example.com --type domain-move --new-domain https://new-example.com --json
|
||||
|
||||
# Platform migration (e.g., WordPress to headless)
|
||||
python custom-skills/33-seo-migration-planner/code/scripts/migration_planner.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/33-seo-migration-planner/code/scripts/migration_planner.py \
|
||||
--domain https://example.com --type platform --json
|
||||
|
||||
# URL restructuring
|
||||
python custom-skills/33-seo-migration-planner/code/scripts/migration_planner.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/33-seo-migration-planner/code/scripts/migration_planner.py \
|
||||
--domain https://example.com --type url-restructure --json
|
||||
|
||||
# HTTPS migration
|
||||
python custom-skills/33-seo-migration-planner/code/scripts/migration_planner.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/33-seo-migration-planner/code/scripts/migration_planner.py \
|
||||
--domain http://example.com --type https --json
|
||||
|
||||
# Post-launch traffic comparison
|
||||
python custom-skills/33-seo-migration-planner/code/scripts/migration_monitor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/33-seo-migration-planner/code/scripts/migration_monitor.py \
|
||||
--domain https://new-example.com --migration-date 2025-01-15 --baseline baseline.json --json
|
||||
|
||||
# Quick redirect health check
|
||||
python custom-skills/33-seo-migration-planner/code/scripts/migration_monitor.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/33-seo-migration-planner/code/scripts/migration_monitor.py \
|
||||
--domain https://new-example.com --migration-date 2025-01-15 --json
|
||||
```
|
||||
|
||||
|
||||
@@ -20,11 +20,11 @@ On-page SEO analysis for meta tags, headings, content, and links.
|
||||
|
||||
```bash
|
||||
# Full page analysis
|
||||
python custom-skills/13-seo-on-page-audit/code/scripts/page_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/13-seo-on-page-audit/code/scripts/page_analyzer.py \
|
||||
--url https://example.com/page
|
||||
|
||||
# Multiple pages
|
||||
python custom-skills/13-seo-on-page-audit/code/scripts/page_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/13-seo-on-page-audit/code/scripts/page_analyzer.py \
|
||||
--urls urls.txt --output report.json
|
||||
```
|
||||
|
||||
|
||||
@@ -22,27 +22,27 @@ Monitor keyword rankings, detect position changes with threshold alerts, and cal
|
||||
|
||||
```bash
|
||||
# Get current positions
|
||||
python custom-skills/21-seo-position-tracking/code/scripts/position_tracker.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/21-seo-position-tracking/code/scripts/position_tracker.py \
|
||||
--target https://example.com --json
|
||||
|
||||
# With change threshold alerts (flag moves of +-5 or more)
|
||||
python custom-skills/21-seo-position-tracking/code/scripts/position_tracker.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/21-seo-position-tracking/code/scripts/position_tracker.py \
|
||||
--target https://example.com --threshold 5 --json
|
||||
|
||||
# Filter by brand segment
|
||||
python custom-skills/21-seo-position-tracking/code/scripts/position_tracker.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/21-seo-position-tracking/code/scripts/position_tracker.py \
|
||||
--target https://example.com --segment brand --json
|
||||
|
||||
# Compare with competitor
|
||||
python custom-skills/21-seo-position-tracking/code/scripts/position_tracker.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/21-seo-position-tracking/code/scripts/position_tracker.py \
|
||||
--target https://example.com --competitor https://comp1.com --json
|
||||
|
||||
# 30-day ranking report
|
||||
python custom-skills/21-seo-position-tracking/code/scripts/ranking_reporter.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/21-seo-position-tracking/code/scripts/ranking_reporter.py \
|
||||
--target https://example.com --period 30 --json
|
||||
|
||||
# Quarterly report with competitor comparison
|
||||
python custom-skills/21-seo-position-tracking/code/scripts/ranking_reporter.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/21-seo-position-tracking/code/scripts/ranking_reporter.py \
|
||||
--target https://example.com --competitor https://comp1.com --period 90 --json
|
||||
```
|
||||
|
||||
|
||||
@@ -22,27 +22,27 @@ Aggregate all SEO skill outputs into executive reports and interactive HTML dash
|
||||
|
||||
```bash
|
||||
# Aggregate all skill outputs for a domain
|
||||
python custom-skills/34-seo-reporting-dashboard/code/scripts/report_aggregator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/34-seo-reporting-dashboard/code/scripts/report_aggregator.py \
|
||||
--domain https://example.com --json
|
||||
|
||||
# Aggregate with date range filter
|
||||
python custom-skills/34-seo-reporting-dashboard/code/scripts/report_aggregator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/34-seo-reporting-dashboard/code/scripts/report_aggregator.py \
|
||||
--domain https://example.com --from 2025-01-01 --to 2025-03-31 --json
|
||||
|
||||
# Generate HTML dashboard
|
||||
python custom-skills/34-seo-reporting-dashboard/code/scripts/dashboard_generator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/34-seo-reporting-dashboard/code/scripts/dashboard_generator.py \
|
||||
--report aggregated_report.json --output dashboard.html
|
||||
|
||||
# C-level executive summary (Korean)
|
||||
python custom-skills/34-seo-reporting-dashboard/code/scripts/executive_report.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/34-seo-reporting-dashboard/code/scripts/executive_report.py \
|
||||
--report aggregated_report.json --audience c-level --output report.md
|
||||
|
||||
# Marketing team report
|
||||
python custom-skills/34-seo-reporting-dashboard/code/scripts/executive_report.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/34-seo-reporting-dashboard/code/scripts/executive_report.py \
|
||||
--report aggregated_report.json --audience marketing --output report.md
|
||||
|
||||
# Technical team report
|
||||
python custom-skills/34-seo-reporting-dashboard/code/scripts/executive_report.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/34-seo-reporting-dashboard/code/scripts/executive_report.py \
|
||||
--report aggregated_report.json --audience technical --output report.md
|
||||
```
|
||||
|
||||
|
||||
@@ -19,11 +19,11 @@ Generate JSON-LD structured data markup from templates.
|
||||
|
||||
```bash
|
||||
# Generate from template
|
||||
python custom-skills/17-seo-schema-generator/code/scripts/schema_generator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/17-seo-schema-generator/code/scripts/schema_generator.py \
|
||||
--type LocalBusiness --output schema.json
|
||||
|
||||
# With custom data
|
||||
python custom-skills/17-seo-schema-generator/code/scripts/schema_generator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/17-seo-schema-generator/code/scripts/schema_generator.py \
|
||||
--type Article \
|
||||
--data '{"headline": "My Article", "author": "John Doe"}' \
|
||||
--output article-schema.json
|
||||
|
||||
@@ -20,15 +20,15 @@ JSON-LD structured data validation and analysis.
|
||||
|
||||
```bash
|
||||
# Validate page schema
|
||||
python custom-skills/16-seo-schema-validator/code/scripts/schema_validator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/16-seo-schema-validator/code/scripts/schema_validator.py \
|
||||
--url https://example.com
|
||||
|
||||
# Validate local file
|
||||
python custom-skills/16-seo-schema-validator/code/scripts/schema_validator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/16-seo-schema-validator/code/scripts/schema_validator.py \
|
||||
--file schema.json
|
||||
|
||||
# Batch validation
|
||||
python custom-skills/16-seo-schema-validator/code/scripts/schema_validator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/16-seo-schema-validator/code/scripts/schema_validator.py \
|
||||
--urls urls.txt --output validation_report.json
|
||||
```
|
||||
|
||||
|
||||
@@ -22,19 +22,19 @@ Detect SERP features, map competitor positions, and score feature opportunities
|
||||
|
||||
```bash
|
||||
# Google SERP analysis
|
||||
python custom-skills/20-seo-serp-analysis/code/scripts/serp_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/20-seo-serp-analysis/code/scripts/serp_analyzer.py \
|
||||
--keyword "치과 임플란트" --country kr --json
|
||||
|
||||
# Multiple keywords from file
|
||||
python custom-skills/20-seo-serp-analysis/code/scripts/serp_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/20-seo-serp-analysis/code/scripts/serp_analyzer.py \
|
||||
--keywords-file keywords.txt --country kr --json
|
||||
|
||||
# Naver SERP analysis
|
||||
python custom-skills/20-seo-serp-analysis/code/scripts/naver_serp_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/20-seo-serp-analysis/code/scripts/naver_serp_analyzer.py \
|
||||
--keyword "치과 임플란트" --json
|
||||
|
||||
# Naver multiple keywords
|
||||
python custom-skills/20-seo-serp-analysis/code/scripts/naver_serp_analyzer.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/20-seo-serp-analysis/code/scripts/naver_serp_analyzer.py \
|
||||
--keywords-file keywords.txt --json
|
||||
```
|
||||
|
||||
|
||||
@@ -19,15 +19,15 @@ Technical SEO audit for robots.txt and sitemap validation.
|
||||
|
||||
```bash
|
||||
# Check robots.txt
|
||||
python custom-skills/12-seo-technical-audit/code/scripts/robots_checker.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/12-seo-technical-audit/code/scripts/robots_checker.py \
|
||||
--url https://example.com
|
||||
|
||||
# Validate sitemap
|
||||
python custom-skills/12-seo-technical-audit/code/scripts/sitemap_validator.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/12-seo-technical-audit/code/scripts/sitemap_validator.py \
|
||||
--url https://example.com/sitemap.xml
|
||||
|
||||
# Crawl sitemap URLs
|
||||
python custom-skills/12-seo-technical-audit/code/scripts/sitemap_crawler.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/12-seo-technical-audit/code/scripts/sitemap_crawler.py \
|
||||
--sitemap https://example.com/sitemap.xml --output report.json
|
||||
```
|
||||
|
||||
|
||||
@@ -20,15 +20,15 @@ Google PageSpeed Insights and Core Web Vitals analysis.
|
||||
|
||||
```bash
|
||||
# Analyze single URL
|
||||
python custom-skills/14-seo-core-web-vitals/code/scripts/pagespeed_client.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/14-seo-core-web-vitals/code/scripts/pagespeed_client.py \
|
||||
--url https://example.com
|
||||
|
||||
# Mobile and desktop
|
||||
python custom-skills/14-seo-core-web-vitals/code/scripts/pagespeed_client.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/14-seo-core-web-vitals/code/scripts/pagespeed_client.py \
|
||||
--url https://example.com --strategy both
|
||||
|
||||
# Batch analysis
|
||||
python custom-skills/14-seo-core-web-vitals/code/scripts/pagespeed_client.py \
|
||||
python /Users/ourdigital/Projects/our-claude-skills/custom-skills/14-seo-core-web-vitals/code/scripts/pagespeed_client.py \
|
||||
--urls urls.txt --output vitals_report.json
|
||||
```
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ cd our-claude-skills/custom-skills/_ourdigital-shared
|
||||
./install.sh --update # Update existing installation
|
||||
./install.sh --uninstall # Remove installation
|
||||
./install.sh --validate # Check installation status
|
||||
./install.sh --commands # Only install/update global slash commands
|
||||
./install.sh --skip-creds # Skip credentials setup
|
||||
./install.sh --skip-venv # Skip virtual environment
|
||||
./install.sh --help # Show all options
|
||||
@@ -29,20 +30,59 @@ cd our-claude-skills/custom-skills/_ourdigital-shared
|
||||
|
||||
| Component | Location | Description |
|
||||
|-----------|----------|-------------|
|
||||
| Global slash commands | `~/.claude/commands/` | Symlinks to repo commands (work from any project) |
|
||||
| Environment file | `~/.env.ourdigital` | API keys and secrets |
|
||||
| Config directory | `~/.ourdigital/` | Configuration and credentials |
|
||||
| Virtual environment | `.venv-ourdigital/` | Python dependencies |
|
||||
|
||||
## Global Slash Commands
|
||||
|
||||
All custom skills are installed as **global slash commands** via symlinks. This means you can use them from any project directory in Claude Code:
|
||||
|
||||
```bash
|
||||
# These work from ANY project, not just our-claude-skills/
|
||||
/seo-technical https://example.com
|
||||
/reference-curator "Claude Code best practices"
|
||||
/ourdigital-research "topic"
|
||||
/notebooklm-agent
|
||||
/gtm-audit https://example.com
|
||||
```
|
||||
|
||||
### How It Works
|
||||
|
||||
The installer symlinks all `.md` files from `.claude/commands/` in the repo to `~/.claude/commands/`:
|
||||
|
||||
```
|
||||
~/.claude/commands/
|
||||
├── lint.md # Original global command
|
||||
├── test.md # Original global command
|
||||
├── seo-technical.md -> /path/to/our-claude-skills/.claude/commands/seo-technical.md
|
||||
├── seo-keyword-strategy.md -> ...
|
||||
├── reference-curator.md -> ...
|
||||
└── ... # ~40 symlinked commands
|
||||
```
|
||||
|
||||
Since they're symlinks, pulling repo updates automatically refreshes the commands.
|
||||
|
||||
### Updating Commands
|
||||
|
||||
After pulling new changes or adding new commands:
|
||||
|
||||
```bash
|
||||
./install.sh --commands # Re-scan and symlink any new commands
|
||||
```
|
||||
|
||||
## Directory Structure
|
||||
|
||||
```
|
||||
~/.claude/commands/ # Global slash commands (symlinks)
|
||||
~/.ourdigital/
|
||||
├── config.yaml # Global configuration
|
||||
├── credentials/ # Service account JSONs
|
||||
├── config.yaml # Global configuration
|
||||
├── credentials/ # Service account JSONs
|
||||
│ └── *.json
|
||||
└── logs/ # Installation logs
|
||||
└── logs/ # Installation logs
|
||||
|
||||
~/.env.ourdigital # Environment variables (chmod 600)
|
||||
~/.env.ourdigital # Environment variables (chmod 600)
|
||||
```
|
||||
|
||||
## Manual Setup
|
||||
@@ -53,21 +93,27 @@ If you prefer manual setup:
|
||||
```bash
|
||||
mkdir -p ~/.ourdigital/credentials
|
||||
chmod 700 ~/.ourdigital ~/.ourdigital/credentials
|
||||
mkdir -p ~/.claude/commands
|
||||
```
|
||||
|
||||
### 2. Copy environment template
|
||||
### 2. Symlink global commands
|
||||
```bash
|
||||
ln -s /path/to/our-claude-skills/.claude/commands/*.md ~/.claude/commands/
|
||||
```
|
||||
|
||||
### 3. Copy environment template
|
||||
```bash
|
||||
cp .env.ourdigital.template ~/.env.ourdigital
|
||||
chmod 600 ~/.env.ourdigital
|
||||
```
|
||||
|
||||
### 3. Edit credentials
|
||||
### 4. Edit credentials
|
||||
```bash
|
||||
nano ~/.env.ourdigital
|
||||
# Add your API keys
|
||||
```
|
||||
|
||||
### 4. Create virtual environment
|
||||
### 5. Create virtual environment
|
||||
```bash
|
||||
python3 -m venv .venv-ourdigital
|
||||
source .venv-ourdigital/bin/activate
|
||||
@@ -79,8 +125,8 @@ pip install -r requirements/base.txt
|
||||
| Service | Variable | How to Get |
|
||||
|---------|----------|------------|
|
||||
| Notion | `NOTION_API_TOKEN` | [Notion Integrations](https://www.notion.so/my-integrations) |
|
||||
| Ghost Blog | `GHOST_BLOG_ADMIN_KEY` | Ghost Admin → Integrations |
|
||||
| Ghost Journal | `GHOST_JOURNAL_ADMIN_KEY` | Ghost Admin → Integrations |
|
||||
| Ghost Blog | `GHOST_BLOG_ADMIN_KEY` | Ghost Admin > Integrations |
|
||||
| Ghost Journal | `GHOST_JOURNAL_ADMIN_KEY` | Ghost Admin > Integrations |
|
||||
| Figma | `FIGMA_ACCESS_TOKEN` | [Figma Settings](https://www.figma.com/developers/api#access-tokens) |
|
||||
|
||||
### Using 1Password CLI
|
||||
@@ -143,6 +189,15 @@ pyenv local 3.11
|
||||
python scripts/validate_install.py --verbose
|
||||
```
|
||||
|
||||
### Commands not showing in Claude Code
|
||||
```bash
|
||||
# Check symlinks are intact
|
||||
ls -la ~/.claude/commands/
|
||||
|
||||
# Re-install commands
|
||||
./install.sh --commands
|
||||
```
|
||||
|
||||
## File Reference
|
||||
|
||||
| File | Purpose |
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
# ./install.sh # Interactive install
|
||||
# ./install.sh --update # Update existing installation
|
||||
# ./install.sh --uninstall # Remove installation
|
||||
# ./install.sh --commands # Only install/update global slash commands
|
||||
# ./install.sh --help # Show help
|
||||
#
|
||||
|
||||
@@ -23,9 +24,12 @@ NC='\033[0m' # No Color
|
||||
# Configuration
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
SKILLS_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
REPO_DIR="$(dirname "$SKILLS_DIR")"
|
||||
ENV_FILE="$HOME/.env.ourdigital"
|
||||
CONFIG_DIR="$HOME/.ourdigital"
|
||||
VENV_DIR="$SKILLS_DIR/.venv-ourdigital"
|
||||
CLAUDE_COMMANDS_DIR="$HOME/.claude/commands"
|
||||
REPO_COMMANDS_DIR="$REPO_DIR/.claude/commands"
|
||||
|
||||
# Print banner
|
||||
print_banner() {
|
||||
@@ -70,6 +74,13 @@ check_prerequisites() {
|
||||
missing+=("git")
|
||||
fi
|
||||
|
||||
# Check Claude Code CLI
|
||||
if command -v claude &> /dev/null; then
|
||||
success "Claude Code CLI available"
|
||||
else
|
||||
warn "Claude Code CLI not found (slash commands require it)"
|
||||
fi
|
||||
|
||||
# Check 1Password CLI (optional)
|
||||
if command -v op &> /dev/null; then
|
||||
success "1Password CLI available"
|
||||
@@ -101,6 +112,92 @@ setup_directories() {
|
||||
mkdir -p "$CONFIG_DIR/logs"
|
||||
success "Created $CONFIG_DIR/logs/"
|
||||
|
||||
# Create Claude commands directory
|
||||
mkdir -p "$CLAUDE_COMMANDS_DIR"
|
||||
success "Created $CLAUDE_COMMANDS_DIR/"
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Install global slash commands via symlinks
|
||||
setup_global_commands() {
|
||||
info "Setting up global slash commands..."
|
||||
|
||||
if [[ ! -d "$REPO_COMMANDS_DIR" ]]; then
|
||||
error "Commands directory not found: $REPO_COMMANDS_DIR"
|
||||
echo " Make sure you're running from the our-claude-skills repository."
|
||||
return 1
|
||||
fi
|
||||
|
||||
mkdir -p "$CLAUDE_COMMANDS_DIR"
|
||||
|
||||
local linked=0
|
||||
local skipped=0
|
||||
local updated=0
|
||||
|
||||
for cmd_file in "$REPO_COMMANDS_DIR"/*.md; do
|
||||
[[ -f "$cmd_file" ]] || continue
|
||||
local filename
|
||||
filename=$(basename "$cmd_file")
|
||||
local target="$CLAUDE_COMMANDS_DIR/$filename"
|
||||
|
||||
if [[ -L "$target" ]]; then
|
||||
local current_link
|
||||
current_link=$(readlink "$target")
|
||||
if [[ "$current_link" == "$cmd_file" ]]; then
|
||||
((skipped++))
|
||||
else
|
||||
rm "$target"
|
||||
ln -s "$cmd_file" "$target"
|
||||
((updated++))
|
||||
fi
|
||||
elif [[ -f "$target" ]]; then
|
||||
warn "Skipping $filename (non-symlink file exists at $target)"
|
||||
((skipped++))
|
||||
else
|
||||
ln -s "$cmd_file" "$target"
|
||||
((linked++))
|
||||
fi
|
||||
done
|
||||
|
||||
[[ $linked -gt 0 ]] && success "Linked $linked new commands"
|
||||
[[ $updated -gt 0 ]] && success "Updated $updated existing symlinks"
|
||||
[[ $skipped -gt 0 ]] && info "Skipped $skipped (already current)"
|
||||
|
||||
# Count total symlinks pointing to our repo
|
||||
local total
|
||||
total=$(find "$CLAUDE_COMMANDS_DIR" -maxdepth 1 -type l -lname "$REPO_COMMANDS_DIR/*" 2>/dev/null | wc -l | tr -d ' ')
|
||||
success "Total global commands from this repo: $total"
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Remove global slash command symlinks
|
||||
remove_global_commands() {
|
||||
info "Removing global slash command symlinks..."
|
||||
|
||||
if [[ ! -d "$CLAUDE_COMMANDS_DIR" ]]; then
|
||||
info "No commands directory found, nothing to remove"
|
||||
return
|
||||
fi
|
||||
|
||||
local removed=0
|
||||
for link in "$CLAUDE_COMMANDS_DIR"/*.md; do
|
||||
[[ -L "$link" ]] || continue
|
||||
local link_target
|
||||
link_target=$(readlink "$link")
|
||||
if [[ "$link_target" == "$REPO_COMMANDS_DIR/"* ]]; then
|
||||
rm "$link"
|
||||
((removed++))
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ $removed -gt 0 ]]; then
|
||||
success "Removed $removed command symlinks"
|
||||
else
|
||||
info "No symlinks from this repo found"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
@@ -239,7 +336,7 @@ validate_installation() {
|
||||
info "Validating installation..."
|
||||
|
||||
local checks_passed=0
|
||||
local checks_total=6
|
||||
local checks_total=7
|
||||
|
||||
# Check directories
|
||||
[[ -d "$CONFIG_DIR" ]] && ((checks_passed++)) && success "Config directory exists" || warn "Config directory missing"
|
||||
@@ -255,6 +352,16 @@ validate_installation() {
|
||||
# Check skills directory
|
||||
[[ -d "$SKILLS_DIR/01-ourdigital-brand-guide" ]] && ((checks_passed++)) && success "Skills directory valid" || warn "Skills not found"
|
||||
|
||||
# Check global commands
|
||||
local cmd_count
|
||||
cmd_count=$(find "$CLAUDE_COMMANDS_DIR" -maxdepth 1 -type l -lname "$REPO_COMMANDS_DIR/*" 2>/dev/null | wc -l | tr -d ' ')
|
||||
if [[ $cmd_count -gt 0 ]]; then
|
||||
((checks_passed++))
|
||||
success "Global slash commands installed ($cmd_count commands)"
|
||||
else
|
||||
warn "No global slash commands found (run with --commands to install)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${CYAN}Validation: $checks_passed/$checks_total checks passed${NC}"
|
||||
echo ""
|
||||
@@ -262,17 +369,97 @@ validate_installation() {
|
||||
|
||||
# Show installed skills
|
||||
show_skills() {
|
||||
info "Installed OurDigital Skills:"
|
||||
info "Installed Skills:"
|
||||
echo ""
|
||||
|
||||
for dir in "$SKILLS_DIR"/0{1,2,3,4,5,6,7,8,9}-ourdigital-* "$SKILLS_DIR"/10-ourdigital-*; do
|
||||
if [[ -d "$dir" ]]; then
|
||||
name=$(basename "$dir")
|
||||
desc=$(grep -m1 "^name:" "$dir/desktop/SKILL.md" 2>/dev/null | cut -d':' -f2 | xargs || echo "")
|
||||
echo -e " ${GREEN}✓${NC} $name"
|
||||
local categories=(
|
||||
"OurDigital Core:0{1,2,3,4,5,6,7,8,9}-ourdigital-*,10-ourdigital-*"
|
||||
"SEO Tools:1{1,2,3,4,5,6,7,8,9}-seo-*,2{0,1,2,3,4,5,6,7,8,9}-seo-*,3{0,1,2,3,4}-seo-*"
|
||||
"Jamie Clinic:4{0,1,2,3,4,5}-jamie-*"
|
||||
"NotebookLM:5{0,1,2,3}-notebooklm-*"
|
||||
"GTM/GA:6{0,1,2}-gtm-*"
|
||||
"Notion:3{1,2}-notion-*"
|
||||
"Reference & Multi-Agent:9{0,1}-*"
|
||||
)
|
||||
|
||||
for category in "${categories[@]}"; do
|
||||
IFS=':' read -r label patterns <<< "$category"
|
||||
local count=0
|
||||
local names=()
|
||||
|
||||
IFS=',' read -ra pattern_arr <<< "$patterns"
|
||||
for pattern in "${pattern_arr[@]}"; do
|
||||
for dir in "$SKILLS_DIR"/$pattern; do
|
||||
if [[ -d "$dir" ]]; then
|
||||
((count++))
|
||||
names+=("$(basename "$dir")")
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
if [[ $count -gt 0 ]]; then
|
||||
echo -e " ${CYAN}$label${NC} ($count skills)"
|
||||
for name in "${names[@]}"; do
|
||||
echo -e " ${GREEN}✓${NC} $name"
|
||||
done
|
||||
echo ""
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Show global command summary
|
||||
show_global_commands() {
|
||||
info "Global Slash Commands (available from any project):"
|
||||
echo ""
|
||||
|
||||
if [[ ! -d "$CLAUDE_COMMANDS_DIR" ]]; then
|
||||
warn "No commands directory found"
|
||||
return
|
||||
fi
|
||||
|
||||
local cmd_count=0
|
||||
local categories=()
|
||||
|
||||
for link in "$CLAUDE_COMMANDS_DIR"/*.md; do
|
||||
[[ -L "$link" ]] || continue
|
||||
local link_target
|
||||
link_target=$(readlink "$link")
|
||||
if [[ "$link_target" == "$REPO_COMMANDS_DIR/"* ]]; then
|
||||
((cmd_count++))
|
||||
local name
|
||||
name=$(basename "$link" .md)
|
||||
categories+=("$name")
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ $cmd_count -eq 0 ]]; then
|
||||
warn "No commands symlinked from this repo"
|
||||
return
|
||||
fi
|
||||
|
||||
# Group by prefix
|
||||
local seo=0 gtm=0 jamie=0 notebooklm=0 notion=0 ourdigital=0 other=0
|
||||
for name in "${categories[@]}"; do
|
||||
case "$name" in
|
||||
seo-*) ((seo++)) ;;
|
||||
gtm-*) ((gtm++)) ;;
|
||||
jamie-*) ((jamie++)) ;;
|
||||
notebooklm-*) ((notebooklm++)) ;;
|
||||
notion-*) ((notion++)) ;;
|
||||
ourdigital-*) ((ourdigital++)) ;;
|
||||
*) ((other++)) ;;
|
||||
esac
|
||||
done
|
||||
|
||||
[[ $seo -gt 0 ]] && echo -e " ${GREEN}SEO${NC}: $seo commands (/seo-technical, /seo-keyword-strategy, ...)"
|
||||
[[ $gtm -gt 0 ]] && echo -e " ${GREEN}GTM${NC}: $gtm commands (/gtm-audit, /gtm-manager)"
|
||||
[[ $jamie -gt 0 ]] && echo -e " ${GREEN}Jamie${NC}: $jamie commands (/jamie-editor, /jamie-audit)"
|
||||
[[ $notebooklm -gt 0 ]] && echo -e " ${GREEN}NotebookLM${NC}: $notebooklm commands (/notebooklm-agent, ...)"
|
||||
[[ $notion -gt 0 ]] && echo -e " ${GREEN}Notion${NC}: $notion commands (/notion-writer, /notion-organizer)"
|
||||
[[ $ourdigital -gt 0 ]] && echo -e " ${GREEN}OurDigital${NC}: $ourdigital commands (/ourdigital-research, ...)"
|
||||
[[ $other -gt 0 ]] && echo -e " ${GREEN}Other${NC}: $other commands"
|
||||
echo ""
|
||||
echo -e " ${CYAN}Total: $cmd_count global commands${NC}"
|
||||
echo ""
|
||||
}
|
||||
|
||||
@@ -286,19 +473,20 @@ print_usage() {
|
||||
echo "2. Edit credentials if needed:"
|
||||
echo " nano $ENV_FILE"
|
||||
echo ""
|
||||
echo "3. Use skills with 'our' or 'ourdigital' prefix:"
|
||||
echo " - our blog [topic]"
|
||||
echo " - our research [topic]"
|
||||
echo " - our 견적서"
|
||||
echo "3. Use slash commands from any project (globally installed):"
|
||||
echo " /seo-technical https://example.com"
|
||||
echo " /reference-curator \"Claude Code best practices\""
|
||||
echo " /ourdigital-research \"topic\""
|
||||
echo " /notebooklm-agent"
|
||||
echo ""
|
||||
echo "4. Documentation:"
|
||||
echo " $SKILLS_DIR/OUR_SKILL_PROJECT_PLAN_v1.1.md"
|
||||
echo "4. Update commands after pulling repo changes:"
|
||||
echo " ./install.sh --commands"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Uninstall
|
||||
uninstall() {
|
||||
warn "This will remove OurDigital configuration (not skills)."
|
||||
warn "This will remove OurDigital configuration and global commands (not skill source files)."
|
||||
read -p "Continue? (y/N): " -n 1 -r
|
||||
echo
|
||||
|
||||
@@ -307,6 +495,9 @@ uninstall() {
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Remove global command symlinks
|
||||
remove_global_commands
|
||||
|
||||
# Backup before removing
|
||||
if [[ -f "$ENV_FILE" ]]; then
|
||||
cp "$ENV_FILE" "$ENV_FILE.uninstall.backup"
|
||||
@@ -334,16 +525,22 @@ show_help() {
|
||||
echo "Options:"
|
||||
echo " --help, -h Show this help message"
|
||||
echo " --update, -u Update existing installation"
|
||||
echo " --uninstall Remove installation (preserves skills)"
|
||||
echo " --uninstall Remove installation (preserves skill source files)"
|
||||
echo " --validate Only run validation checks"
|
||||
echo " --commands Only install/update global slash commands"
|
||||
echo " --skip-creds Skip credentials setup"
|
||||
echo " --skip-venv Skip virtual environment setup"
|
||||
echo ""
|
||||
echo "Examples:"
|
||||
echo " ./install.sh # Full interactive install"
|
||||
echo " ./install.sh --update # Update existing setup"
|
||||
echo " ./install.sh --commands # Just install/refresh global commands"
|
||||
echo " ./install.sh --skip-creds # Install without credentials"
|
||||
echo ""
|
||||
echo "Global Commands:"
|
||||
echo " Slash commands are symlinked to ~/.claude/commands/ so they"
|
||||
echo " work from any project directory in Claude Code."
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Main installation flow
|
||||
@@ -351,6 +548,7 @@ main_install() {
|
||||
print_banner
|
||||
check_prerequisites
|
||||
setup_directories
|
||||
setup_global_commands
|
||||
setup_environment
|
||||
|
||||
if [[ "$SKIP_CREDS" != true ]]; then
|
||||
@@ -364,6 +562,7 @@ main_install() {
|
||||
setup_config
|
||||
validate_installation
|
||||
show_skills
|
||||
show_global_commands
|
||||
print_usage
|
||||
|
||||
echo -e "${GREEN}╔═══════════════════════════════════════════════════════════╗${NC}"
|
||||
@@ -387,12 +586,21 @@ while [[ $# -gt 0 ]]; do
|
||||
;;
|
||||
--validate)
|
||||
validate_installation
|
||||
show_global_commands
|
||||
exit 0
|
||||
;;
|
||||
--commands)
|
||||
info "Installing/updating global slash commands..."
|
||||
setup_global_commands
|
||||
show_global_commands
|
||||
exit 0
|
||||
;;
|
||||
--update|-u)
|
||||
info "Updating installation..."
|
||||
setup_global_commands
|
||||
setup_python_env
|
||||
validate_installation
|
||||
show_global_commands
|
||||
exit 0
|
||||
;;
|
||||
--skip-creds)
|
||||
|
||||
1236
docs/USER-GUIDE-KO.md
Normal file
1236
docs/USER-GUIDE-KO.md
Normal file
File diff suppressed because it is too large
Load Diff
1289
docs/USER-GUIDE.md
Normal file
1289
docs/USER-GUIDE.md
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user