Install
openclaw skills install @midnightstudioai/harvard-cv-coverletterExpert engine for creating Harvard-standard CVs (resumes) and cover letters following the official Harvard Office of Career Services guidelines. Use this skill when a user asks to create, write, build, draft, or improve a resume, CV, or cover letter. Relevant trigger phrases include: "write my resume", "help me with my CV", "draft a cover letter", "update my resume", "I need a CV for a job application", "create a professional resume", "I'm applying for a job and need a cover letter", or any explicit request involving job application documents. Also use when the user shares their background and asks for help getting it into document form. Produces .docx files matching Harvard's exact formatting guidelines, including bullet-format and paragraph-format resume variants.
openclaw skills install @midnightstudioai/harvard-cv-coverletterProduces 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:
[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:
[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:
[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:
[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):
Technical: [list]
Language: [list with fluency levels]
Interests: [list]
[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 packageCheck if already installed, install if not:
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.
properties: {
page: {
size: { width: 12240, height: 15840 },
margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 }
}
}
new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: "FirstName LastName", bold: true, size: 28, font: "Times New Roman" })]
})
new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: "Address • City, State • email • phone", size: 22, font: "Times New Roman" })]
})
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" })]
})
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" })
]
})
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.