Use reportlab's pre-defined styles from getSampleStyleSheet() correctly
61
71%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./benchmarks/gdpval/skills/reportlab-styles/SKILL.mdReportLab's reportlab.lib.styles.getSampleStyleSheet() provides a collection of pre-defined paragraph styles. Use these existing styles rather than redefining them to avoid KeyError exceptions.
The standard stylesheet includes these commonly-used styles:
| Style Name | Purpose |
|---|---|
Normal | Default body text |
Title | Document title (large, bold) |
Heading1 | Level 1 section heading |
Heading2 | Level 2 section heading |
Heading3 | Level 3 section heading |
Heading4 | Level 4 section heading |
Heading5 | Level 5 section heading |
Heading6 | Level 6 section heading |
Bullet | Bulleted list items |
Definition | Definition list terms |
Italic | Italicized text |
Code | Monospace code text |
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import Paragraph
# Get the stylesheet
styles = getSampleStyleSheet()
# Use existing styles directly (CORRECT)
title = Paragraph("My Document Title", styles['Title'])
heading = Paragraph("Section Header", styles['Heading1'])
body = Paragraph("Regular text content", styles['Normal'])# WRONG - Don't redefine existing style names
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
styles = getSampleStyleSheet()
# This will cause KeyError when you try to use 'Title' later
styles.add(ParagraphStyle(
name='Title', # Overwrites the pre-defined 'Title' style
fontSize=24,
# ... incomplete definition
))
# Later code expecting the full 'Title' style will fail
paragraph = Paragraph("Title Text", styles['Title']) # KeyError!MyCustomTitle, CustomHeading)from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
styles = getSampleStyleSheet()
# Create a NEW style with a unique name
custom_title = ParagraphStyle(
name='CustomTitle', # Unique name, doesn't conflict
parent=styles['Title'], # Base it on existing Title
fontSize=28,
spaceAfter=30
)
styles.add(custom_title)
# Now both styles are available
styles['Title'] # Original pre-defined style
styles['CustomTitle'] # Your custom variantgetSampleStyleSheet() from reportlab.lib.stylesstyles = getSampleStyleSheet() once at the startstyles['StyleName'] (case-sensitive)Normal, Title, Heading1-6, Bullet, Code, Italicc5a9c4b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.