Ctf Writeup
by @gandli
Generates a single standardized submission-style CTF writeup for competition handoff and organizer review. Use after solving a CTF challenge to document the...
clawhub install ctf-writeupπ About This Skill
name: ctf-writeup description: Generates a single standardized submission-style CTF writeup for competition handoff and organizer review. Use after solving a CTF challenge to document the solution steps, tools used, and lessons learned in a structured format. license: MIT compatibility: Requires filesystem-based agent (Claude Code or similar) with bash and Python 3. allowed-tools: Bash Read Write Edit Glob Grep Task WebFetch WebSearch metadata: user-invocable: "true" argument-hint: "[challenge-name]"
CTF Write-up Generator
Generate a standardized submission-style CTF writeup for a solved challenge.
Default behavior:
submission-style writeupWorkflow
Step 1: Gather Information
Collect the following from the current session, challenge files, and user input:
1. Challenge metadata β name, CTF event, category, difficulty, points, flag format 2. Solution artifacts β exploit scripts, payloads, screenshots, command output 3. Timeline β key steps taken, dead ends, pivots
# 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
Step 2: Generate Write-up
Write the writeup file as writeup.md (or writeup-) using the submission template below.
Templates
Submission Format
---
title: ""
ctf: ""
date: YYYY-MM-DD
category: web|pwn|crypto|reverse|forensics|osint|malware|misc
difficulty: easy|medium|hard
points:
flag_format: "flag{...}"
author: ""
Summary
<1-2 sentences: what the challenge was and the core technique. Keep it direct.>
Solution
Step 1:
\\\python
\ \\
Step 2: (optional)
Step 3: (optional)
Flag
\\\
flag{example_flag_here}
\\\
Guidance:
Best Practices Checklist
Before finalizing the writeup, verify:
Quality Guidelines
DO:
python, bash, sql, etc.)DON'T:
Challenge
$ARGUMENTS