cv-content-manager
CV Content Manager
<when_to_activate> Activate when the user:
- Wants to create, edit, or update portfolio content
- Needs case studies, blog posts, experience updates, or variants
- Asks to sync knowledge base with presentation files
- Wants to improve or expand existing content
Trigger phrases: "create", "edit", "update", "modify", "write", "improve", "sync", "new case study", "new blog post" </when_to_activate>
| Mode | When to Use | Trigger |
|---|---|---|
| create | New content from scratch | "create", "write", "new", "generate" |
| edit | Modify existing content | "edit", "update", "modify", "improve", "fix" |
| sync | Knowledge base → presentation | "sync", "refresh", "regenerate" |
<edge_cases>
| Scenario | Action |
|---|---|
| Full variant generation | Redirect to generate-variant for complete pipeline |
| Missing knowledge base data | Run cv-data-ingestion first |
| Writing style needed | Invoke dmitrii-writing-style before generating prose |
| Complex editing | Use ultrathink for trade-off analysis |
| </edge_cases> |
Architecture
Knowledge Base (Source of Truth) Presentation Layer (Output)
───────────────────────────────── ──────────────────────────
content/knowledge/ content/case-studies/
├── achievements/ content/experience/
├── stories/ content/variants/
└── metrics/ content/blog/
↓ generates ↑ informs
↓ ↑
[Content Manager: create | edit | sync]
Create Mode
Step 1: Determine Output Type
| Output | Location | Format |
|---|---|---|
| Case Study | content/case-studies/[##-slug].md |
Markdown |
| Blog Post | content/blog/[date-slug].md |
Markdown |
| Variant | content/variants/[company-role].yaml |
YAML |
| Experience | content/experience/index.yaml |
YAML (append) |
Step 2: Query Knowledge Base
# Search by topic
npm run search:evidence -- --terms "revenue,growth,api"
Or read directly:
content/knowledge/index.yaml— Entity relationshipscontent/knowledge/achievements/*.yaml— Source achievementscontent/knowledge/stories/*.yaml— Narratives
Step 3: Generate Content
For Case Studies:
---
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] }
cta:
headline: [Call to action]
action: calendly
linkText: Let's talk →
---
[Opening hook]
## The Challenge
## The Approach
## Key Decision
## Execution
## Results
## What I Learned
For Blog Posts:
---
slug: [slug]
title: [Title]
date: [YYYY-MM-DD]
tags: [tags]
excerpt: [1-2 sentence summary]
---
[Content]
Edit Mode
Step 1: Identify Edit Scope
| Edit Type | Scope | Files to Update |
|---|---|---|
| Factual correction | Knowledge base | Achievement → regenerate presentation |
| Messaging refinement | Presentation only | Case study/variant directly |
| New achievement | Knowledge base first | Achievement → update presentation |
| Metric update | Knowledge base | Achievement → sync to presentation |
Step 2: Execute Edit
Knowledge Base Updates:
- Edit source file in
content/knowledge/achievements/orstories/ - Update
content/knowledge/index.yamlif relationships changed - Regenerate affected presentation files
Presentation-Only Updates:
- Read current file
- Apply targeted edits (preserve structure)
- Validate against schema
Common Edit Patterns
| User Says | Action |
|---|---|
| "Update the numbers" | Edit achievement → sync presentation |
| "Make it more compelling" | Edit presentation narrative |
| "Add this achievement" | Create achievement → update presentation |
| "Fix inconsistency" | Identify source of truth → sync all |
Sync Mode
When knowledge base has changed, sync to presentation:
# Validate all content
npm run validate
# For variants
npm run variants:sync -- --slug {slug}
Consistency Checks
- Achievement metrics match case study metrics
- Experience highlights reflect achievements
- Variant relevance scores are justified
- Tags match knowledge base themes
Output Format
After any operation, report:
Mode: [create | edit | sync]
Files updated:
- path/to/file.yaml (description)
- path/to/file.md (description)
Knowledge base modified: Yes/No
Run validation: npm run validate
Quality Gate
See Quality Gate Template for universal checks.
Content-specific:
- All metrics specific and quantified
- STAR format complete for case studies
- Key quote/insight memorable
- Frontmatter validates against schema
<skill_compositions>
Works Well With
- dmitrii-writing-style — Invoke before generating prose
- generate-variant — For full variant pipeline (JD analysis, eval, redteam)
- cv-knowledge-query — Search knowledge base before creating
- ultrathink — For complex editing decisions </skill_compositions>
More from fotescodev/portfolio
linkedin
Create LinkedIn content using service-based authority principles. Use when drafting posts, profile sections, or comments that build trust through teaching rather than self-promotion.
3generate-variant
Generate job-targeted CV variants with built-in quality gates. Queries knowledge base, customizes content, runs eval/redteam pipeline.
2serghei-qa
Sarcastic QA Lead who audits codebases for code smells, anti-patterns, and WTF moments. Provides best-practice fixes with cutting wit. Use for code reviews and quality audits.
2generate-resume
Generate a print-optimized, ATS-friendly single-page resume PDF from portfolio content. Use when user wants to create or regenerate their resume. (project)
2cv-knowledge-query
Query the CV knowledge base to find achievements, stories, and metrics by theme, skill, company, or keyword. Use when user asks about experience, wants to find specific accomplishments, or needs data for content generation.
2first-time-user-ucv-cli
Simulate a first-time UCV-CLI user experience. Tests if documentation enables new users to use the interactive variant management dashboard. Generates UX audit reports with friction points.
2