Produces professional, Harvard-standard CVs and cover letters as .docx files.
DO NOT hallucinate, create, infer, or assume ANY information about the person's skills, experience, education, achievements, or background. ADHERE STRICTLY AND EXCLUSIVELY to the information explicitly provided by the person in this conversation. If information is missing, ask for it. Never fill in gaps with invented content.
This rule applies to every field: job titles, dates, company names, responsibilities, quantified results, skills, languages, education details — everything. Only use what the user has told you.
Before writing anything, determine what documents are needed and gather the necessary context. Ask only what you don't already have from the conversation.
If any critical information is missing, ask for it before proceeding. DO NOT hallucinate, create, infer, or assume ANY information to fill gaps.
Resume formats:
Ask the user which they prefer if not specified. Default to bullet style.
Read references/harvard-rules.md before generating any document. All documents must strictly follow those rules.
Key rules to enforce at all times:
Use the docx npm package (v9+) to produce .docx files via a Node.js script.
All necessary patterns are included below — this skill is self-contained, no external skill files need to be read.
Header:
text
[Bold, centered] FirstName LastName
[Centered] Street Address • City, State Zip • email@example.com • phone number
Section headings: Full-width, bold, with a horizontal line underneath (use paragraph border)
Education entry format:
text
[Bold left] Organization Name [Right-aligned] City, State
[Left] Degree, Concentration. GPA (optional) [Right-aligned] Graduation Date
[Left, italic optional] Thesis: ... (optional)
[Left] Relevant Coursework: ... (optional)
Experience entry format:
text
[Bold left] Organization Name [Right-aligned] City, State
[Bold left] Position Title [Right-aligned] Month Year – Month Year
• Bullet starting with action verb, describing accomplishment with quantified results where possible.
• No personal pronouns. Phrase, not full sentence.
Paragraph style alternative for experience:
text
[Bold left] Organization Name [Right-aligned] City, State
[Bold left] Position Title [Right-aligned] Month Year – Month Year
Short paragraph beginning with action verb. No personal pronouns. Avoid articles for flow.
Skills & Interests (optional):
text
Technical: [list]
Language: [list with fluency levels]
Interests: [list]
text
[Date]
[Recipient Name]
[Title]
[Organization]
[Address]
Dear [Name]:
[Opening paragraph — state who you are, position applying for, source of posting, enthusiasm]
[Body paragraph 1 — most relevant experience, specific to the organization's mission]
[Body paragraph 2 — additional experience or skill, quantified where possible]
[Closing paragraph — thank reader, express desire to discuss further]
Sincerely,
[Applicant Name]
Cover letter rules:
docx npm package#Check if already installed, install if not:
bash
npm list -g docx 2>/dev/null | grep docx || npm install -g docx
This skill requires docx v9+. No other runtime dependencies beyond Node.js.
javascript
properties: {
page: {
size: { width: 12240, height: 15840 },
margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 }
}
}
javascript
new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: "FirstName LastName", bold: true, size: 28, font: "Times New Roman" })]
})
javascript
new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: "Address • City, State • email • phone", size: 22, font: "Times New Roman" })]
})
javascript
new Paragraph({
border: { bottom: { style: BorderStyle.SINGLE, size: 6, color: "000000", space: 1 } },
spacing: { before: 240, after: 60 },
children: [new TextRun({ text: "EDUCATION", bold: true, size: 24, font: "Times New Roman" })]
})
javascript
new Paragraph({
tabStops: [{ type: TabStopType.RIGHT, position: 9360 }],
children: [
new TextRun({ text: "Organization Name", bold: true, size: 22, font: "Times New Roman" }),
new TextRun({ text: "\t", size: 22 }),
new TextRun({ text: "City, State", size: 22, font: "Times New Roman" })
]
})
javascript
numbering: {
config: [{
reference: "resume-bullets",
levels: [{
level: 0, format: LevelFormat.BULLET, text: "•", alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 360, hanging: 360 } } }
}]
}]
}
// Then in paragraphs:
new Paragraph({
numbering: { reference: "resume-bullets", level: 0 },
children: [new TextRun({ text: "Action verb + achievement.", size: 22, font: "Times New Roman" })]
})
.docx file(s) to /home/claude/ firstpython /mnt/skills/public/docx/scripts/office/validate.py output.docx (only if that path exists in the environment; skip otherwise)/mnt/user-data/outputs/present_filesDO NOT hallucinate, create, infer, or assume ANY information about the person's skills, experience, education, achievements, or background. If something wasn't explicitly stated by the person, do not include it. Ask if you need more information.