--- name: cv-content-generator description: Generate case studies, blog posts, experience updates, and variant content from the knowledge base. Use when user wants to create new CV content, write articles, or generate job-specific variants. --- # CV Content Generator Generate new content for the Universal CV portfolio by querying the knowledge base and producing structured output ready for the portfolio. Activate when the user: - Wants to write a new case study - Needs to create a blog post from experience - Wants to generate a job-specific variant (redirect to `generate-variant` for full workflow) - Needs to update experience highlights - Asks for content based on achievements or stories **Trigger phrases:** "create case study", "write blog post", "new content", "generate [content type]" | Scenario | Action | |----------|--------| | Full variant generation | Redirect to `generate-variant` skill for complete pipeline | | Missing knowledge base data | Run `cv-data-ingestion` first | | Content editing (not creation) | Use `cv-content-editor` instead | | Writing style needed | Invoke `dmitrii-writing-style` before generating prose | ## Knowledge Base Structure ``` content/knowledge/ ├── index.yaml # Entities and relationships graph ├── achievements/ # Atomic accomplishments (STAR format) ├── stories/ # Extended narratives ├── metrics/ # Quantified results └── raw/ # Unstructured source material ``` ## Content Generation Workflow ### Step 1: Understand the Request Determine output type: - `case-study` → Full markdown with frontmatter for `content/case-studies/` - `blog-post` → Markdown with frontmatter for `content/blog/` - `variant` → YAML overrides for `content/variants/` - `experience-update` → YAML additions for `content/experience/` ### Step 2: Query Knowledge Base **Use deterministic scripts first** — faster and more consistent: ```bash # Search by topic npm run search:evidence -- --terms "revenue,growth,api" # For variant generation with JD analysis npm run analyze:jd -- --file source-data/jd-{company}.txt --save npm run search:evidence -- --jd-analysis capstone/develop/jd-analysis/{slug}.yaml ``` **For deeper exploration:** 1. Read `content/knowledge/index.yaml` for entity definitions and relationships 2. Find relevant achievements in `content/knowledge/achievements/` 3. Find related stories in `content/knowledge/stories/` 4. Cross-reference themes and skills for comprehensive context ### Step 3: Generate Content #### For Case Studies Use this structure: ```markdown --- id: [next number] slug: [kebab-case-slug] title: [Title] company: [Company] year: [Year] tags: [relevant tags] duration: [duration] role: [role] hook: headline: [3-second grab] impactMetric: value: "[X]" label: [metric type] subMetrics: - value: "[Y]" label: [secondary metric] thumbnail: null cta: headline: [Call to action question] subtext: [Supporting text] action: calendly linkText: Let's talk → --- [Opening hook - why this matters, stakes involved] ## The Challenge [Problem statement with constraints] ## The Approach [Hypothesis and alternatives considered table] ## Key Decision [Critical decision point with trade-offs] ## Execution [Phases with specific actions] ## Results [Quantified outcomes] ## What I Learned [Reflections - what worked, what didn't, key quote] ``` #### For Blog Posts ```markdown --- slug: [slug] title: [Title] date: [YYYY-MM-DD] tags: [tags] excerpt: [1-2 sentence summary] --- [Content following narrative structure from stories] ``` #### For Variants ```yaml metadata: company: "[Company]" role: "[Role]" slug: "[company-role]" generatedAt: "[ISO timestamp]" jobDescription: "[JD summary]" overrides: hero: status: "[Customized status]" subheadline: "[Tailored pitch]" about: tagline: "[Role-specific tagline]" bio: [Customized paragraphs] stats: [Relevant stats] relevance: caseStudies: - slug: "[most relevant]" relevanceScore: 0.95 reasoning: "[Why this matters for role]" ``` ### Step 4: Validate Output - Check all required frontmatter fields - Ensure metrics are quantified - Verify skills/themes match knowledge base - Confirm narrative follows STAR format ## Examples ### Example 1: Generate Case Study **User**: "Create a case study about the Ankr revenue growth" **Action**: 1. Read `content/knowledge/achievements/ankr-15x-revenue.yaml` 2. Read `content/knowledge/index.yaml` for Ankr relationships 3. Generate full case study markdown 4. Output to `content/case-studies/` with proper frontmatter ### Example 2: Generate Variant **User**: "Create a variant for a Technical PM role at Stripe" **⚠️ For full variant workflow, use the `generate-variant` skill instead.** Quick variant with scripts: ```bash # 1. Analyze the JD npm run analyze:jd -- --file source-data/jd-stripe.txt --save # 2. Search for matching evidence npm run search:evidence -- --jd-analysis capstone/develop/jd-analysis/stripe.yaml # 3. Check bullet coverage npm run check:coverage ``` **Action** (manual): 1. Query achievements with themes: `[infrastructure, revenue-growth]` 2. Find skills: `[api-design, compliance]` 3. Customize hero/about with payments/fintech angle 4. Score case studies by relevance to Stripe's domain 5. Output YAML + JSON variant files ## Output Locations | Content Type | Output Path | Format | |-------------|-------------|--------| | Case Study | `content/case-studies/[##-slug].md` | Markdown | | Blog Post | `content/blog/[date-slug].md` | Markdown | | Variant | `content/variants/[company-role].yaml` | YAML + JSON | | Experience | `content/experience/index.yaml` | YAML (append) | ## Quality Checklist Before outputting content: - [ ] All metrics are specific and quantified - [ ] STAR format is complete (Situation, Task, Action, Result) - [ ] Key quote/insight is memorable - [ ] Tags align with knowledge base themes - [ ] Frontmatter validates against schema