Draft and produce formatted Word document (.docx) memos in Penn Carey Law style. Use this skill whenever the user asks to write, draft, or create a memo, memorandum, or formal internal document for faculty, committees, or the Dean's office. Trigger phrases include "write a memo", "draft a memo", "memo to faculty", "memo to EPC", "memorandum", or any request to produce a formal internal communication as a document. Always use this skill — do not attempt to format or draft memos freehand without consulting it first.
Produces fully formatted Penn Carey Law memos as .docx files, matching [Your Name]'s established style: Penn Carey Law letterhead, standard header block, Cambria body text. Voice baseline (tone, banned phrases, preferred expressions) is defined in CLAUDE.md — that always applies. This skill adds memo-specific formatting and structure.
This skill dispatches sub-agents for pre-delivery quality checks. Each call is guarded — the memo still produces without them, but factual and style verification are weaker.
factual-reviewer — extracts discrete factual claims for verification.fact-verifier — live web/source verification of specific claims.voice-style-checker — voice, style, and AI-tell scan.Install from the agents/ directory of this skill's repo into ~/.claude/agents/.
This skill works in both Claude Code CLI and Claude.ai / Cowork. Use whichever paths exist:
~/.claude/skills/ (CLI) or /mnt/skills/user/ (web)~/Downloads/ or user-specified path (CLI) or /mnt/user-data/outputs/ (web)~/.claude/skills/law-memo/law-memo_sample.docx (CLI) or /mnt/skills/user/law-memo/law-memo_sample.docx (web), clone it as the base for exact formattingw:after="200"PennCareyLaw_UPenn_Blue-WhiteBkrnd.png from ~/.claude/skills/law-memo/assets/ (CLI) or /mnt/skills/user/law-memo/assets/ (web)cx="2628900" cy="476250" (matches sample exactly)w:after="240", Cambria bold 12ptTO: [Recipient]
FROM: [Your Name], [Your Title]
DATE: [Full date — e.g. March 11, 2026. Always use the actual current date, never just month/year.]
RE: [Subject — bold]
Each header line paragraph:
<w:tabs><w:tab w:val="left" w:pos="1440"/></w:tabs>w:line="276" w:lineRule="auto" w:after="160"RE line specifically: add a hanging indent so long subjects wrap under the text, not under "RE:":
<w:ind w:left="1440" w:hanging="1440"/>
Paragraph with bottom border, w:after="240":
<w:pBdr><w:bottom w:val="single" w:color="000000" w:sz="6" w:space="1"/></w:pBdr>
w:line="276" w:lineRule="auto" w:after="160"w:before="200" w:after="80"Bullet character (•) with tab, hanging indent — never Word list bullets, never em-dash bullets:
<w:pPr>
<w:spacing w:line="276" w:lineRule="auto" w:after="120"/>
<w:ind w:left="720" w:hanging="360"/>
</w:pPr>
<w:r>...<w:t>• bullet text here</w:t></w:r>
For bold lead-in bullets, use separate runs: bullet+tab run, bold run (lead phrase), normal run (rest of text).
Tables must not split across pages. After building any table, apply cantSplit to every row and keepNext to all paragraphs in every row except the last. See the law-document skill for the prevent_table_split(table) helper function. Call it after populating every table.
Italic Cambria 10pt "Page x of y." centered. If cloning from sample, the footer is preserved automatically.
<w:sectPr>
<w:footerReference w:type="default" r:id="rId6"/>
<w:pgSz w:w="12240" w:h="15840" w:orient="portrait"/>
<w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="708" w:footer="708" w:gutter="0"/>
<w:pgNumType/>
<w:docGrid w:linePitch="360"/>
</w:sectPr>
Memos layer these conventions on top of the CLAUDE.md voice baseline:
FROM line: Always "[Your Name], [Your Title]" unless context clearly calls for a different title.
Before delivering any memo, scan the full text for common AI writing patterns and fix every instance. See the law-document skill for the complete checklist. The short version:
This check applies to every memo before delivery.
Automated review: After writing the memo file:
factual-reviewer agent is available, spawn it and pass it the file path. Fix any factual issues it flags.fact-verifier agent is available, spawn it with those claims. Correct any contradicted claims; flag unverifiable ones for the user.voice-style-checker agent is available, spawn it and pass it the file path. Fix any style issues it flags.
Complete all steps before delivering to the user.Memo_[Topic]_[YYYY-MM].docx (e.g., Memo_OCI-Calendar_2025-09.docx)
After generating any .docx file, run the validation script from the law-document
skill (~/.claude/skills/law-document/SKILL.md, "Post-Generation Validation"
section). This catches structural corruption (duplicate style IDs, misnamed images)
that prevents Word from opening the file.
If validation reports repairs, switch to python-docx and regenerate — the repair is a safety net, not a substitute for correct generation. Do not use Pandoc to generate .docx files.
w:left="1440" w:hanging="1440")