# Jamie Journal Editor (Skill 46) — Code Version Design > **Date**: 2026-03-29 > **Status**: Approved > **Scope**: Create self-contained Claude Code version for skill 46-jamie-journal-editor --- ## Goal Build a complete `code/` version of skill 46 that is fully self-contained (no references to `desktop/`), following the dual-platform skill structure. Includes a `journal_validator.py` CLI tool for automated content validation. ## Architecture ``` 46-jamie-journal-editor/ ├── code/ │ ├── CLAUDE.md # Self-contained directive │ └── scripts/ │ └── journal_validator.py # Combined validator (4 modules) ├── desktop/ # Unchanged └── README.md # Updated structure section ``` ## Component 1: `code/CLAUDE.md` Self-contained Claude Code directive incorporating all content currently split across `desktop/SKILL.md` and `desktop/references/`. Sections: 1. **Overview** — Role definition, channel info, partner skills 2. **Quick Start** — CLI usage for journal_validator.py 3. **Brand Voice** — Dr. Jung's 5 personality traits, honorific guide, hospital references, standard opening 4. **Analogy Dictionary** — Dr. Jung's signature metaphors (tree transplant, puppet strings, clean canvas, endotine button) 5. **Content Structure** — 5-step body (Problem → Cause → Solution → Advantages → Results), opening template, closing template 6. **Procedure Copy Reference** — Eye, forehead, anti-aging key expressions 7. **Numeric Expression Guide** — Surgery time, recovery, AS period, survival rates 8. **Medical Terminology Pattern** — Korean(漢字, English) format 9. **Image Placement** — 5 recommended positions 10. **Compliance Rules** — Prohibited expressions, required disclaimers, Do's & Don'ts 11. **Workflow** — Topic → Draft → Validate → Brand Audit → Publish Word budget: ~1,200 words (under the 1,500-word directive limit). ## Component 2: `journal_validator.py` Single-file CLI tool with four validator classes. ### 2A: StructureValidator Checks journal article structure against the 5-step content pattern. | Check | Method | Pass Criteria | |-------|--------|---------------| | Opening format | Regex for standard greeting | "안녕하세요. 제이미성형외과 정기호 원장입니다." present | | 5-step body | Heading/keyword scan for each step | At least 4 of 5 steps detected | | Medical term format | Regex for `한글(漢字, English)` pattern | Terms introduced with proper format | | Closing CTA | Regex for CTA pattern | CTA pattern present in final section | | Required disclaimer | String match | Disclaimer text present at bottom | Detection strategy for 5-step body: scan for heading markers (##, **bold**) or keyword clusters: - Problem: 고민, 증상, 불편, 걱정 - Cause: 원인, 발생, 때문에, 이유 - Solution: 시술, 수술, 방법, 제이미 - Advantages: 장점, 회복, 흉터, 통증, 마취 - Results: 결과, 효과, 기대, 개선 ### 2B: ComplianceChecker Adapted from skill 47's `compliance_checker.py`. Self-contained copy, not imported. | Category | Example Patterns | Severity | |----------|-----------------|----------| | Effect guarantee | `100% 성공`, `반드시 효과`, `보장합니다` | Critical | | Comparative superiority | `최고`, `1위`, `타 병원보다` | Critical | | Safety guarantee | `부작용 없음`, `완전 안전` | Critical | | Patient testimonial | `실제 환자 후기`, quoted testimonials | Critical | | Exaggeration | `놀라운 변화`, `마법같은`, `기적적` | High | | Missing disclaimer | Side-effect notice absent | High | | Missing individual variation | "개인 차이" notice absent | Medium | ### 2C: SpellingChecker Two-tier approach: **Tier 1 (built-in, no dependencies):** Curated dictionary of common medical/cosmetic misspellings. | Wrong | Correct | Category | |-------|---------|----------| | 쌍커풀 | 쌍꺼풀 | Eye surgery | | 안겸하수 | 안검하수 | Eye surgery | | 눈꺼플 | 눈꺼풀 | Eye surgery | | 보톡스 | 보톡스 | Correct (common) | | 히알루론산 | 히알루론산 | Correct (common) | | 거상술 vs 거상 술 | 거상술 | Forehead | | 내시경 vs 네시경 | 내시경 | Forehead | | 스마스 vs SMAS | Both OK | Anti-aging | | 엔도타인 vs 앤도타인 | 엔도타인 | Forehead | | 리프팅 vs 리프팅 | 리프팅 | Anti-aging | Dictionary stored as a Python dict within the file (~30-50 entries). **Tier 2 (optional, requires `py-hanspell`):** Broader Korean spelling/spacing check via Naver spell checker API wrapper. Gracefully degrades if library not installed — prints a note suggesting `pip install py-hanspell` for fuller coverage. ### 2D: LinkRecommender Scans article text for procedure name mentions and suggests internal linking opportunities. **Procedure keyword map** (built-in dict): | Keywords | Suggested Link Topic | |----------|---------------------| | 쌍꺼풀, 매몰법, 절개법 | Double eyelid surgery | | 안검하수, 눈매교정 | Ptosis correction | | 눈밑 지방, 다크서클 | Under-eye fat repositioning | | 이마거상, 이마리프팅 | Endoscopic forehead lift | | 눈썹거상, 눈썹리프팅 | Endoscopic brow lift | | 눈썹밑, 상안검 | Sub-brow excision | | 스마스, SMAS, 안면거상 | SMAS lifting | | 자가지방, 지방이식 | Fat grafting | | 하이푸, HIFU | HIFU lifting | Logic: If article topic is X and mentions procedure Y (where Y != X), suggest "Consider adding an internal link to your [Y] article where you mention '[matched text]'." Output: List of recommendations with matched text and line number. ### CLI Interface ```bash # Full validation (all 4 checks) python code/scripts/journal_validator.py --input article.md # Specific checks python code/scripts/journal_validator.py --input article.md --check structure,compliance python code/scripts/journal_validator.py --input article.md --check spelling,links # JSON report output python code/scripts/journal_validator.py --input article.md --verbose --output report.json ``` **Available `--check` values:** `structure`, `compliance`, `spelling`, `links` (comma-separated, default: all) **Exit codes:** 0 = pass, 1 = critical/high violations found, 2 = input error **Report structure:** ```json { "is_valid": false, "total_issues": 5, "issues_by_severity": {"critical": 1, "high": 2, "medium": 1, "info": 1}, "structure": { ... }, "compliance": { ... }, "spelling": { ... }, "link_recommendations": [ ... ], "summary": "..." } ``` ## Component 3: `README.md` Update Update the structure section to reflect the new `code/scripts/` directory. No other changes. ## What Stays Unchanged - `desktop/SKILL.md` — no changes - `desktop/skill.yaml` — no changes - `desktop/references/*` — no changes - `desktop/jamie-journal-editor.skill` — not regenerated (Desktop packaging step) ## Dependencies - **Required:** Python 3.8+ (stdlib only: `re`, `json`, `argparse`, `dataclasses`) - **Optional:** `py-hanspell` for tier-2 spelling checks ## Testing Manual validation: run the validator against a sample journal article draft to confirm all 4 checkers produce sensible output. No automated test suite needed for v1.