Files
2026-06-06 05:21:10 +00:00

21 KiB
Executable File
Raw Permalink Blame History

Scene: Resume / CV

Goal

Generate a complete, authentic, well-structured, position-targeted resume with stable Word formatting. Must simultaneously meet:

  • Authentic and credible content, clear position targeting
  • ATS-friendly, stable Word layout
  • Clean structure, professional visual design, easy to scan

Execution priority (when conflicting): Position relevance > Information readability > ATS compatibility > Visual decoration

Forbidden: Producing advice-only / fragments / half-finished drafts; outputting chat-style explanations.

→ Font profile: B (Visual) — see references/common-rules.md → Placeholder convention & universal prohibitions — see references/common-rules.md


Scope

Default: generate a position-oriented general resume. Switch to English resume, academic CV, international format, or design portfolio style only when explicitly requested by the user.


Resume Type Routing

Auto-select module order based on user background and target:

General Resume (default)

Name & Contact → Target Position → Profile Summary (optional) → Core Skills → Work Experience → Projects → Education → Certifications / Awards

New Graduate Resume

Name & Contact → Target Position → Education → Internship Experience → Projects → Campus Activities / Competitions / Awards → Skills & Certifications

Technical Role Resume

Name & Contact → Target Direction → Profile Summary (optional) → Tech Stack / Core Skills → Work Experience → Projects → Education → Open Source / Papers / Patents / Competitions

Academic CV

Name & Contact → Research Direction / Target → Education → Research Experience → Papers / Patents / Projects / Grants → Teaching / Academic Service → Awards / Skills / Languages


Input Processing Rules

  1. If user provides a target position or JD → must reorganize and rewrite content around position requirements
  2. If user provides a raw draft → prioritize restructuring, phrasing refinement, and priority reordering; do not rewrite into an unfamiliar career
  3. Never fabricate companies, positions, degrees, projects, certifications, awards, papers, patents, data results, or achievements
  4. If critical data is missing → use conservative expressions or placeholder 【Please fill in: ______】; never fabricate precise numbers
  5. A single resume should generally serve only one primary career direction

Content Quality Constraints

Core Principles

  1. Resume must revolve around the target position — do not spread all experiences equally
  2. Most relevant experiences, projects, and skills must be placed first and detailed
  3. Terminology, company names, position titles, date formats, and skill names must be consistent
  4. Must demonstrate: personal positioning → capability tags → relevant experience → provable results
  5. No piling of vague self-praise; no inspirational writing or chronological dumps

Experience Writing Standards

Each experience bullet should demonstrate: Action + Object/Context + Method + Result/Impact

Recommended verbs: Led, built, drove, optimized, refactored, designed, delivered, coordinated, improved, reduced, achieved

Rules:

  • "Responsible for" / "participated in" are not absolutely forbidden, but must include scope and results
  • Each bullet is concise — one core contribution per bullet
  • Quantify when possible, but do not force-bold all numbers
  • Recent experience gets detail; low-relevance/low-value experience gets compressed or removed
  • Reverse chronological order — most recent and relevant first
  • Expand the most recent 2 experiences; compress earlier ones

Profile Summary / Self-Assessment

  1. Not mandatory
  2. If included, frame as "Profile Summary" — 34 lines max
  3. Focus on: years of experience, career direction, core capabilities, representative achievements, position fit
  4. Forbidden as main content: "hardworking", "strong sense of responsibility", "team player", "quick learner", "outgoing personality"

Truthfulness & Risk Control

  1. Never fabricate experiences, achievements, education, awards, or certifications
  2. Never upgrade "participated in" to "led" unless user information supports it
  3. Never attribute team results entirely to the individual
  4. Never fabricate revenue, conversion rates, headcount, budgets, or technical metrics
  5. If no data available, use restrained expressions: "improved delivery efficiency", "shortened processing cycle", "supported core business launch"

Length Control

Candidate Type Target Pages
New graduate / <3 years experience 1 page
310 years experience 12 pages
Senior manager / researcher / academic CV May exceed 2 pages, but must maintain information density

Compression rules:

  • Experiences >5 years old with low relevance should be compressed
  • Experiences >10 years old and irrelevant may be omitted
  • Never pad low-value experiences just to "look comprehensive"

ATS & Structure Constraints

  1. Core information must be plain text — never rely on images, icons, text boxes, or headers/footers for key content
  2. No embedded charts, objects, SmartArt, or WordArt
  3. Experience descriptions use consistent bullet symbols — no complex auto-numbering
  4. Bullets within the same position should be compact — no excess blank lines

Table layout vs. ATS balance: The 3 visual templates (A/B/C) use Table-based layouts for Word visual quality. In strict ATS scenarios (user explicitly says "ATS priority"), prefer Template B (single-column) with reduced table dependency. Default: visual quality first.


Module Naming

Use only standard, universal, recruiter-familiar names:

  • Personal Info, Target Position, Profile Summary, Core Skills, Work Experience, Projects, Education, Certifications, Awards, Languages

Forbidden fancy names: "My Growth Journey", "Self-Appreciation", "Shining Moments", "Life Motto"


Template Disease Prevention

  1. Do not include irrelevant identity tags (political affiliation, hometown, etc.) unless user explicitly requests
  2. Do not place low-priority modules (hobbies, languages, personality traits) before work experience
  3. Do not combine cover letter and resume in one document (unless user explicitly requests)
  4. Do not let template feel overpower actual personal information
  5. Do not let "self-assessment" occupy the golden area of the page (should come after core skills/experience)

Template Selection

Three templates are provided, auto-selected based on user needs:

Template Layout Best For Color Style
A Left sidebar + right body General purpose, tech roles Dark grey sidebar + blue bar headings
B Dark header banner + single column Content-heavy / senior candidates Dark blue header + underline headings
C Left sidebar + vertical-line headings International / bilingual / foreign companies Blue sidebar + left-border headings

Selection logic:

  • Default: Template A
  • Lots of content (expected > 1 page) → Template B (no sidebar, better space utilization)
  • User explicitly requests bilingual / English → Template C

Industry Color Suggestions

Career Direction Sidebar BG Accent Color Recommended Template
Tech / Internet #1A1F36 (deep blue-purple) #667eea (amethyst) A or C
Finance / Consulting #0F2027 (deep sea blue) #D4AF37 (gold) A or B
Design / Creative #2D1B30 (deep purple) #f5576c (coral pink) A or C
Education / Training #1A3A3A (dark green) #3CB4A0 (mint green) A
Medical / Health #0E2030 (dark cyan) #3888A8 (medical blue) B
General / Default #303030 (warm dark neutral) #B89870 (warm accent) A

When industry is unspecified, use default warm neutral palette. This aligns with the Visual Profile warm-neutral guidance in design-system.md.

Key Rules

  • NO cover page / NO TOC
  • Target: 1 page (2 pages max for senior roles)
  • Compact spacing: line: 276 (1.15x)
  • All templates use bilingual section headings (e.g., "Work Experience 工作经历")

Template A: Left Sidebar + Color Bar Headings

Color Palette

const S = {
  bg: "3B4F5C",      // sidebar background (dark grey-blue)
  text: "D8E2E8",    // sidebar text
  label: "8BA0AD",   // sidebar secondary text
  accent: "2F97B8",  // accent color (blue-cyan)
  title: "1A2D38",   // body heading
  body: "2C3E4A",    // body content
  sec: "6B8592",     // secondary info (dates etc.)
};

Layout Structure

┌──────────┬──────────────────────┐
│ [Photo]  │ ██ Profile ██        │  ← Blue bar heading
│          │ Summary text...      │
│ Name     │                      │
│ Title    │ ██ Work Experience ██│
│          │ Company  Role  Date  │
│ ──────── │ ▸ Achievement...     │
│ Basic    │ ▸ Achievement...     │
│ Info     │                      │
│          │ ██ Projects ██       │
│ ──────── │ ...                  │
│ Contact  │                      │
│          │ ██ Education ██      │
│ ──────── │ ...                  │
│ Skills   │                      │
│ Java ●●●●○│                     │
│ Go   ●●●○○│                     │
│          │                      │
│ ──────── │                      │
│ Certs    │                      │
└──────────┴──────────────────────┘
     30%             70%

Implementation Notes

Page setup:

page: { margin: { top: 0, bottom: 0, left: 0, right: 0 } }
// Use Table to simulate columns: columnWidths: [3400, 8506]
// ⚠️ Row height must use "exact" with safety margin to prevent overflow blank pages
// Row height: height: { value: 16038, rule: "exact" }
// 16038 = 16838(A4 height) - 1200(safety margin for cross-engine compatibility)

Sidebar element order:

  1. Photo placeholder (rectangle + border, width 2400 DXA, height 1800)
  2. Name (32pt bold white SimHei) + Title (18pt accent)
  3. Basic info (DOB / degree / school)
  4. Contact info (phone / email / address)
  5. Skill ratings (name + ●○ dot rating, 5 levels each)
  6. Certificates list

Right-side section headings (color bar style):

// Full-width bar background + white Chinese text + lighter English text
new Table({ columnWidths:[7600], rows:[new TableRow({ children:[
  new TableCell({
    shading: { fill: S.accent, type: ShadingType.CLEAR },
    margins: { top:40, bottom:40, left:200, right:100 },
    children: [new Paragraph({ children: [
      new TextRun({ text: "Work Experience  ", size:22, bold:true, color:"FFFFFF", font:"SimHei" }),
      new TextRun({ text: "Experience", size:18, color:"C8E8F0", font:"Times New Roman", italics:true }),
    ] })],
  })
] })] });

Experience entry format:

// Line 1: Company(bold) + Title(accent) + Date(right-aligned)
new Paragraph({
  tabStops: [{ type: TabStopType.RIGHT, position: 7200 }],
  children: [
    new TextRun({ text: "Company Name", size:22, bold:true, color:S.title }),
    new TextRun({ text: "    Role Title", size:20, color:S.accent }),
    new TextRun({ text: "\t2023.06 — Present", size:17, color:S.sec }),
  ]
});
// Line 2+: ▸ bullet points

Template B: Dark Header Banner + Single Column

Color Palette

const C = {
  dark: "1A3352",    // header background (dark blue)
  accent: "2980B9",  // accent color
  title: "1A2636",   // heading
  body: "2C3E50",    // body text
  sec: "6B8599",     // secondary info
  light: "E8EFF5",   // light background
};

Layout Structure

┌────────────────────────────────┐
│ ██████████████████████████████ │  ← Dark blue background banner
│ █  Name    Title             █ │    Contains name / title /
│ █  Phone | Email | Location  █ │    contact / basic info
│ █  DOB | Degree | School     █ │
│ ██████████████████████████████ │
│                                │
│ Profile                        │  ← Underline heading
│ ─────────────────────────────  │
│ Summary text...                │
│                                │
│ Work Experience                │
│ ─────────────────────────────  │
│ Company | Role        Date     │
│ • Achievement...               │
│ ...                            │
│                                │
│ Skills                         │
│ ─────────────────────────────  │
│ Programming ●●●●○  Java/Go/...│  ← Rating + details
└────────────────────────────────┘

Implementation Notes

Header banner:

// Table single row single column, dark background, height 2400 DXA
new Table({ columnWidths:[11906], rows:[new TableRow({
  height: { value:2400, rule:"exact" },
  children:[new TableCell({
    shading: { fill: C.dark },
    margins: { top:300, bottom:200, left:800, right:800 },
    verticalAlign: VerticalAlign.TOP, // Never use CENTER in exact-height rows (WPS incompatible)
    children: [
      // Line 1: Name(48pt white) + Title
      // Line 2: Phone | Email | Location
      // Line 3: DOB | Degree | School
    ]
  })]
})] });

Section headings (underline style):

new Paragraph({
  borders: { bottom: { style: BorderStyle.SINGLE, size: 2, color: C.accent } },
  children: [
    new TextRun({ text: "Work Experience", size:24, bold:true, color:C.accent, font:"SimHei" }),
    new TextRun({ text: "  Experience", size:18, color:C.sec, italics:true }),
  ]
});

Skills display (rating + details):

// Name(bold) + ●○ rating + specific tools list
new Paragraph({ children: [
  new TextRun({ text: "Programming  ", size:19, bold:true, color:C.title }),
  new TextRun({ text: "●●●●○  ", size:13, color:C.accent }),
  new TextRun({ text: "Java / Go / Python / TypeScript", size:18, color:C.sec }),
] });

Template C: Blue Sidebar + Vertical-Line Headings

Color Palette

const C = {
  side: "4A7C8F",     // sidebar background (teal-blue)
  text: "FFFFFF",     // sidebar text
  label: "A0C4D0",   // sidebar secondary text
  accent: "357A8F",   // accent color
  dot: "2F8FAD",      // skill dot fill color
  dotDim: "B8D4DE",   // skill dot empty color
  title: "1A3040",    // body heading
  body: "2C4050",     // body content
  sec: "6B8A98",      // secondary info
};

Sidebar-Specific Elements

Circular photo placeholder:

new Paragraph({ alignment: AlignmentType.CENTER,
  children: [new TextRun({ text: "◯", size:80, color:C.label })]
});

Language proficiency matrix:

"English  ● ● ● ● ○"
"Japanese ● ● ○ ○ ○"

Right-side section headings (left-border style):

new Paragraph({
  borders: { left: { style: BorderStyle.SINGLE, size:8, color:C.accent, space:8 } },
  indent: { left: 120 },
  children: [
    new TextRun({ text: "Work Experience", size:24, bold:true, color:C.title, font:"SimHei" }),
    new TextRun({ text: "  Experience", size:18, color:C.sec, italics:true }),
  ]
});

Experience entry format (differs from A):

// Line 1: Company name (bold)
// Line 2: Role (accent color) + Date
// Line 3+: ▸ bullet points

Universal Rules

Font Specifications

Element Font Size Style
Name (sidebar) SimHei 32pt (size:64) Bold, white
Name (header) SimHei 24pt (size:48) Bold, white
Section heading SimHei 11pt (size:22) Bold
Company / School Microsoft YaHei 11pt (size:22) Bold
Role title Microsoft YaHei 10pt (size:20) accent color
Date range Microsoft YaHei 8.5pt (size:17) sec color
Bullet description Microsoft YaHei 9.5pt (size:19) body color
Skill dots Default 6.5pt (size:13) accent / dimColor

Bullet Symbols

  • Template A / C: (small triangle)
  • Template B: (round dot)

Skill Rating Rules

  • 15 levels using filled ● and empty ○ dots
  • One skill per line, name on the left, dots on the right
  • Filled dot color: accent; empty dot color: dimColor

JD Matching Logic

When user provides a job description:

  1. Extract key requirements (skills, experience, education)
  2. Prioritize matching experience items to the top
  3. Naturally incorporate JD keywords into descriptions
  4. Highlight relevant skills

Multi-Page Handling

  • 1 page content: Sidebar templates (A/C) or single-column template (B)
  • Over 1 page: Prefer Template B; if using A/C, switch page 2 to full-width layout with a name bar at the top (Name | Title)

⚠️ Multi-page resumes must use multi-section structure:

Page 1 and Page 2 must be different sections for independent margin and layout control:

sections: [
  {
    // Page 1 section — margin 0 (sidebar layout needs full-page)
    properties: { page: { margin: { top: 0, bottom: 0, left: 0, right: 0 } } },
    children: [page1Table],
  },
  {
    // Page 2 section — normal margins with header bar
    properties: { page: { margin: { top: 800, bottom: 600, left: 800, right: 800 } } },
    children: [pageHeader(name, title), ...page2Content],
  },
]

⚠️ Template B multi-page handling:

Template B header banner uses Table simulation:

  1. Banner columnWidths must equal page content area width (pageWidth - marginLeft - marginRight), not full page width
  2. If banner needs full page width → set page 1 section margin to 0, banner columnWidths to 11906
  3. Page 2+ must be independent sections, margin.top ≥ 800

⚠️ Page 2+ top spacing rules (mandatory):

  1. Page margin.top must be ≥ 800 twips (~1.4 cm), never 0
  2. Page 2+ needs a header info bar: concise Name | Title bar, height ~400600 twips, separated from body with light background or bottom line
  3. 200300 twips spacing between header bar and body content
  4. Forbidden: content touching the very top of page 2
// Concise header bar for page 2+
function pageHeader(name, title) {
  return new Table({
    width: { size: 100, type: WidthType.PERCENTAGE },
    borders: { top: NB, left: NB, right: NB, insideHorizontal: NB, insideVertical: NB,
               bottom: { style: BorderStyle.SINGLE, size: 1, color: "D0D0D0" } },
    rows: [new TableRow({
      cantSplit: true,
      height: { value: 500, rule: "atLeast" },
      children: [new TableCell({
        margins: { top: 60, bottom: 60, left: 200, right: 200 },
        borders: { top: NB, left: NB, right: NB, bottom: NB },
        children: [new Paragraph({
          children: [
            new TextRun({ text: name, size: 20, bold: true, color: S.title || C.title }),
            new TextRun({ text: `  |  ${title}`, size: 18, color: S.sec || C.sec }),
          ]
        })],
      })],
    })],
  });
}

Scene-Specific Quality Checks

In addition to universal checks (see references/common-rules.md):

Format

  • Fits within 1 page (senior ≤ 2 pages)
  • Single-page fill rate ≥ 85% (bottom whitespace ≤ 15%, ~2500 twips)
  • Section headings are bilingual
  • Skill rating dots correct (●○)
  • Experience in reverse chronological order
  • No cover page, no TOC
  • Line spacing 1.15x (line: 276)
  • No extra blank pages
  • Table row height uses rule: "exact" with value ≤ 16038 (prevent overflow blank pages)
  • Multi-page: page 2+ has header info bar + proper top spacing

Content

  • Clearly organized around target position
  • No vague self-assessments ("hardworking", "responsible", "team player")
  • No fabricated data or exaggerated results
  • Most relevant experience placed first and detailed
  • Each bullet demonstrates action + object + method + result
  • No long narrative blocks / excessive long sentences / information density imbalance
  • Module names are standardized
  • Contact info is plain text, clearly positioned
  • Header area forms visual center
  • Work experience and projects are the visual main body
  • Page count matches candidate seniority

Single-Page Fill Rules

Single-page resumes must fully utilize page space — large bottom whitespace is forbidden:

  1. If content is insufficient → proactively expand:
    • Add project details, skill keywords, achievement data
    • Add supplementary modules: profile summary, interests, awards
  2. Use section spacing (spacing.before/after) to distribute content evenly
  3. Sidebar templates (A/C): sidebar height should approach full page
    • If sidebar content is sparse, increase element spacing
    • Or add supplementary modules: "Languages", "Interests"
  4. Assessment: after generation, check last content element position; if >2500 twips from page bottom, adjust