Spits out a clean, submission-ready CTF writeup after you've solved a challenge. It scans your workspace for exploit scripts and artifacts, pulls together the timeline, then generates a markdown file using a tight template: challenge metadata, 1-3 short solution steps, and one complete solving script that goes from challenge data to flag. The format is optimized for speed during active competitions, so teammates or organizers can validate your solve without wading through dead ends or fragmented code snippets. It defaults to keeping the real flag unless you ask for redaction, checks for reproducibility, and keeps everything concise enough that you're not writing an essay when you should be moving to the next challenge.
npx -y skills add ljagiello/ctf-skills --skill ctf-writeup --agent claude-codeInstalls into .claude/skills of the current project.
Generate a standardized submission-style CTF writeup for a solved challenge.
Default behavior:
submission-style writeupCollect the following from the current session, challenge files, and user input:
# Scan for exploit scripts and artifacts
find . -name '*.py' -o -name '*.sh' -o -name 'exploit*' -o -name 'solve*' | head -20
# Check for flags in output files
grep -rniE '(flag|ctf|eno|htb|pico)\{' . 2>/dev/null
Write the writeup file as writeup.md (or writeup-<challenge-name>.md) using the submission template below.
---
title: "<Challenge Name>"
ctf: "<CTF Event Name>"
date: YYYY-MM-DD
category: web|pwn|crypto|reverse|forensics|osint|malware|misc
difficulty: easy|medium|hard
points: <number>
flag_format: "flag{...}"
author: "<your name or team>"
---
# <Challenge Name>
## Summary
<1-2 sentences: what the challenge was and the core technique. Keep it direct.>
## Solution
### Step 1: <Action>
<Explain the key observation in 3-8 short lines. Keep it direct.>
\`\`\`python
<one complete solving script from provided challenge data to printing the final flag>
\`\`\`
### Step 2: <Action> (optional)
<Only add this when a second short step genuinely helps readability, such as separating the core observation from final verification.>
### Step 3: <Action> (optional)
<Use only if the challenge really needs it. Keep the total number of steps small.>
## Flag
\`\`\`
flag{example_flag_here}
\`\`\`
Guidance:
Before finalizing the writeup, verify:
DO:
python, bash, sql, etc.)DON'T:
$ARGUMENTS
juliusbrussee/caveman
mattpocock/skills
shadcn/improve
obra/superpowers
forrestchang/andrej-karpathy-skills
vercel-labs/skills