Verify that hl_lines attributes in markdown code blocks correctly highlight the intended lines. Use when reviewing documentation with code examples, especially Before/After comparisons, or when highlights seem incorrect.
Content & Writing
210 Stars
263 Forks
Updated Jan 18, 2026, 06:34 PM
Why Use This
This skill provides specialized capabilities for nextflow-io's codebase.
Use Cases
Developing new features in the nextflow-io repository
Refactoring existing code to follow nextflow-io standards
Understanding and working with nextflow-io's codebase structure
---
name: Check Code Block Highlights
description: Verify that hl_lines attributes in markdown code blocks correctly highlight the intended lines. Use when reviewing documentation with code examples, especially Before/After comparisons, or when highlights seem incorrect.
---
# Check Code Block Highlights
Verify that `hl_lines` attributes in markdown code blocks are correctly set to highlight the intended lines.
See [../shared/repo-conventions.md](../shared/repo-conventions.md) for file conventions.
## Critical Understanding
**`hl_lines` is snippet-relative, NOT related to `linenums`**:
- `linenums="21"` sets the _displayed_ starting line number
- `hl_lines="3"` highlights the _3rd line of the snippet_ (which displays as line 23)
- These are completely independent attributes
Example:
```markdown
`groovy linenums="21" hl_lines="3"
process FOO { <- displayed as line 21 (snippet line 1)
input: <- displayed as line 22 (snippet line 2)
val x <- displayed as line 23 (snippet line 3) - HIGHLIGHTED
}
`
```
## How to Check
For each code block with `hl_lines`:
1. **Identify the code block** - Find blocks with `hl_lines="..."` attribute
2. **Count snippet lines** - Number each line of the code block starting from 1:
```
1: #!/usr/bin/env nextflow
2: (blank line)
3: process FOO {
4: publishDir 'results' <- if this should be highlighted, hl_lines should include "4"
...
```
3. **Verify intent** - For Before/After blocks:
- "After" should highlight the NEW or CHANGED lines
- "Before" should highlight the lines that WILL change (same content positions)
- Both blocks should highlight corresponding lines showing the difference
4. **Check for common errors**:
- Off-by-one errors (highlighting blank lines instead of code)
- Confusing `linenums` with `hl_lines` (thinking hl_lines="21" highlights displayed line 21)
- Highlighting section headers (`input:`, `output:`) instead of the actual values
## Fixing Issues
When you find incorrect highlights:
1. Count the actual line positions in the snippet (1-indexed)
2. Identify which lines contain the meaningful changes
3. Update `hl_lines` to reference those snippet line numbers
4. Verify Before/After blocks highlight corresponding positions
## Output Format
For each file checked, report:
```
## [filename]
### Block at line [N]: [description]
- Current: hl_lines="X Y Z"
- Lines X, Y, Z contain: [what's on those lines]
- Issue: [description of problem, if any]
- Suggested fix: hl_lines="A B C" (highlighting [what those lines contain])
### Summary
- Blocks checked: N
- Issues found: M
- [List of fixes needed]
```
## Example Analysis
Given this code block:
```markdown
`groovy title="example.nf" linenums="1" hl_lines="8 11 14"
#!/usr/bin/env nextflow <- snippet line 1
<- snippet line 2 (blank)
process SAY_HELLO { <- snippet line 3
<- snippet line 4 (blank)
publishDir 'results' <- snippet line 5
<- snippet line 6 (blank)
input: <- snippet line 7
val greeting <- snippet line 8 - HIGHLIGHTED
<- snippet line 9 (blank)
output: <- snippet line 10
path "*.txt" <- snippet line 11 - HIGHLIGHTED
<- snippet line 12 (blank)
script: <- snippet line 13
"""echo hi""" <- snippet line 14 - HIGHLIGHTED
}
`
```
Analysis: `hl_lines="8 11 14"` correctly highlights the input value (line 8), output value (line 11), and script content (line 14).
## Notes
- Blank lines count! They're common sources of off-by-one errors
- In Before/After comparisons, both blocks should highlight the same conceptual elements
- When in doubt, count every line including blanks and comments