ai-tools/rtf-creator/SKILL.md
Generate valid RTF (Rich Text Format) documents from scratch. Use when the user asks to create .rtf files, convert content to RTF, or produce formatted documents compatible with Word, LibreOffice, and other word processors.
npx skillsauth add randyhaylor/enhanceclaude rtf-creatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate valid Rich Text Format documents with correct structure, formatting, and encoding.
Every RTF document follows this skeleton:
{\rtf1\ansi\deff0
{\fonttbl{\f0 Times New Roman;}{\f1 Arial;}{\f2 Courier New;}}
{\colortbl;\red0\green0\blue0;\red255\green0\blue0;\red0\green0\blue255;}
{\info{\title Document Title}{\author Author Name}}
\margl1440\margr1440\margt1440\margb1440
{\pard\plain\f0\fs24
Body text here.\par}
}
{\rtf1\ansi\deff0 — RTF version 1, ANSI encoding, default font 0{\fonttbl ...} — font table declaring all fonts used} — every document must end with a brace matching the opening{\colortbl ...} — color table with RGB values, first entry is null (default){\info ...} — metadata: \title, \author, \subject, \keywords, \creatim, \revtim{\stylesheet ...} — named stylesAll measurements in RTF use twips (twentieth of a point):
\fs24 = 12pt, \fs40 = 20pt\plain — reset all character formatting
\b — bold on \b0 — bold off
\i — italic on \i0 — italic off
\ul — underline on \ul0 — underline off (or \ulnone)
\strike — strikethrough
\sub — subscript \super — superscript
\fN — select font N from font table
\fsN — font size in half-points
\cfN — foreground color N from color table
\cbN — background color N from color table
\caps — all caps \scaps — small caps
Formatting applied inside braces is scoped to that group:
This is normal {\b bold text} back to normal.
\pard — reset paragraph formatting (use at start of each paragraph)
\par — end paragraph / paragraph break
\line — line break within paragraph
\page — page break
\tab — tab character
\ql — align left (default)
\qc — align center
\qr — align right
\qj — justify
\liN — left indent (twips)
\riN — right indent (twips)
\fiN — first-line indent (twips, negative for hanging)
\sbN — space before paragraph (twips)
\saN — space after paragraph (twips)
\slN — line spacing (twips)
\paperw12240\paperh15840 — letter size (8.5 x 11 inches)
\paperw11906\paperh16838 — A4 size
\landscape — landscape orientation
\marglN — left margin \margrN — right margin
\margtN — top margin \margbN — bottom margin
Declare all fonts used in the document. Font families:
{\fonttbl
{\f0\froman Times New Roman;}
{\f1\fswiss Arial;}
{\f2\fmodern Courier New;}
{\f3\fscript Script;}
{\f4\fdecor Old English;}
}
Families: \froman (serif), \fswiss (sans-serif), \fmodern (monospace), \fscript, \fdecor, \ftech, \fbidi
First entry is always null (semicolon only). Colors referenced by index starting at 1:
{\colortbl;
\red0\green0\blue0;
\red255\green0\blue0;
\red0\green128\blue0;
\red0\green0\blue255;
}
Use \cf1 for black text, \cf2 for red, etc.
Tables are built row by row. Each row defines column positions, then fills cells:
{\trowd\trgaph108\trleft0
\cellx3000\cellx6000\cellx9000
\pard\intbl Header 1\cell
\pard\intbl Header 2\cell
\pard\intbl Header 3\cell
\row}
Key commands:
\trowd — start row definition\cellxN — right edge of each column in twips\intbl — content is inside a table cell\cell — end cell\row — end row\trgaphN — half the space between cells\trleftN — left offset of row\clbrdrt\brdrs, \clbrdrb\brdrs, \clbrdrl\brdrs, \clbrdrr\brdrs — cell borders (top, bottom, left, right){\header\pard\qc\plain\f0\fs20 Document Title\par}
{\footer\pard\qc\plain\f0\fs18 Page \chpgn\par}
\chpgn — current page number\header / \footer — applies to all pages\headerf / \footerf — first page only\headerl / \headerr — left/right pages (with \facingp){\field{\*\fldinst{HYPERLINK "https://example.com"}}{\fldrslt{\cf2\ul Link Text}}}
Text{\super\chftn}{\footnote\pard\plain\chftn. Footnote content here.}
\\ — literal backslash
\{ — literal opening brace
\} — literal closing brace
\~ — non-breaking space
\- — optional hyphen
\_ — non-breaking hyphen
\bullet — bullet character
\endash — en dash
\emdash — em dash
\lquote — left single quote
\rquote — right single quote
\ldblquote — left double quote
\rdblquote — right double quote
\'XX — hex character code (e.g., \'e9 for e with acute)
\uN — Unicode character (e.g., \u8212 for em dash)
RTF has no native list syntax. Simulate with indents and symbols:
{\pard\li720\fi-360\bullet\tab First item\par}
{\pard\li720\fi-360\bullet\tab Second item\par}
For numbered lists:
{\pard\li720\fi-360 1.\tab First item\par}
{\pard\li720\fi-360 2.\tab Second item\par}
\widowctrl — widow/orphan control
\deflangN — default language (1033 = US English)
\colsN — number of newspaper-style columns
\linebetcol — line between columns
\tab not literal tab characters\fs24 = 12pt, not 24pt\pard to reset inherited formattingAfter generating an RTF file, always validate it automatically:
python3 -c "import rtfparse" 2>/dev/nullpip install -d rtfparse (development dependency)pip install rtfparsepython3 .claude/skills/rtf-creator/validate_rtf.py <output_file.rtf>.claude/skills/rtf-creator/validate_rtf.pyThe validator parses the RTF structure and reports whether it is valid or identifies the specific parse error. This catches unbalanced braces, malformed control words, and structural issues that a text editor won't flag. If validation fails, fix the issue and re-validate before reporting completion.
{\rtf1\ansi\deff0
{\fonttbl{\f0\froman Times New Roman;}{\f1\fswiss Arial;}}
{\colortbl;\red0\green0\blue0;\red0\green51\blue102;}
{\info{\title Quarterly Report}{\author Policy Team}}
\paperw12240\paperh15840
\margl1440\margr1440\margt1440\margb1440
{\header\pard\qr\plain\f1\fs18\cf2 Quarterly Report\par}
{\footer\pard\qc\plain\f0\fs16 Page \chpgn\par}
{\pard\qc\plain\f1\fs48\b\cf2
Quarterly Report\par}
{\pard\qc\plain\f0\fs24
Policy Division \endash\ Q4 2025\par}
{\pard\sb360\sa120\plain\f1\fs32\b\cf2
Executive Summary\par}
{\pard\plain\f0\fs24\qj\fi360
This report summarizes policy review activities for the fourth quarter.
All compliance targets were met and three new policies were enacted.\par}
{\pard\sb360\sa120\plain\f1\fs32\b\cf2
Key Metrics\par}
{\trowd\trgaph108\trleft0
\clbrdrt\brdrs\clbrdrb\brdrs\clbrdrl\brdrs\clbrdrr\brdrs\cellx3000
\clbrdrt\brdrs\clbrdrb\brdrs\clbrdrl\brdrs\clbrdrr\brdrs\cellx6000
\clbrdrt\brdrs\clbrdrb\brdrs\clbrdrl\brdrs\clbrdrr\brdrs\cellx9000
\pard\intbl\b\f1\fs22 Metric\cell
\pard\intbl\b\f1\fs22 Target\cell
\pard\intbl\b\f1\fs22 Actual\cell
\row}
{\trowd\trgaph108\trleft0
\clbrdrt\brdrs\clbrdrb\brdrs\clbrdrl\brdrs\clbrdrr\brdrs\cellx3000
\clbrdrt\brdrs\clbrdrb\brdrs\clbrdrl\brdrs\clbrdrr\brdrs\cellx6000
\clbrdrt\brdrs\clbrdrb\brdrs\clbrdrl\brdrs\clbrdrr\brdrs\cellx9000
\pard\intbl\plain\f0\fs22 Policies Reviewed\cell
\pard\intbl\plain\f0\fs22 50\cell
\pard\intbl\plain\f0\fs22 53\cell
\row}
}
tools
# XState v5 Quick Reference ## How to Look Up API Details For complete function signatures, types, and interfaces, **grep `api-reference.md`** — do NOT read it in full (12k+ lines). Example: ``` Grep pattern="createActor" path="~/.claude/skills/xstate/api-reference.md" output_mode="content" -C 5 ``` Then use `Read` with `offset`/`limit` to get the full section. This is the primary way to get precise technical info when the quick reference below isn't enough. ## Design Workflow Recommended
tools
Workaround for agent teams in VS Code extension where TeamCreate teammates cannot execute tools. Uses an echo-back-and-resume pattern where agents return tool requests instead of executing them directly.
development
Format documentation, READMEs, and structured text using header hierarchy where each level stands alone. Use when creating docs, research notes, summaries, or when user requests 'scannable,' 'well-structured,' 'skimmable,' or 'readable at multiple depths' output. Applies to markdown, technical specs, and any hierarchical text formatting.
development
Enforce strict Test-Driven Development workflow: write one test, make it pass, verify, then proceed. Prevents over-implementation and ensures code matches requirements exactly. Use when implementing new features, adding settings, or building functionality incrementally.