skills/research-report/SKILL.md
Generates a structured technical research document about a codebase before building or modifying it. Use this skill whenever the user invokes /research-report, asks to "research the codebase", wants a technical map or overview of how a codebase works, or says things like "understand this codebase", "map out how X works", or "research before we build". This is a pre-build research phase skill — use it before implementation, not after. Do NOT trigger for general code review, debugging, or improvement requests.
npx skillsauth add aldengolab/lorist research-reportInstall 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.
Your job is to produce a purely descriptive technical map of a codebase. You are not reviewing code, suggesting improvements, or making recommendations — you are documenting what exists, where it lives, and how it connects.
path/to/file.py:123 references whenever pointing to specific logic.Look for ./research/[project_name]-research.md.
If the user mentioned specific files, read those first and follow their imports. If no files are specified, find the main entrypoint (e.g., main.py, index.ts, app.py, server.js, __init__.py of the primary package) and use it to navigate.
Based on your initial read, identify 2–5 distinct research areas (e.g., data models, API layer, authentication, background jobs, config system). These should reflect the actual structure of this codebase, not a generic template.
For each research area, launch a sub-agent using the Agent tool with
isolation: "worktree", tasked with reading the relevant files and reporting back:
Wait for all sub-agents to complete before proceeding.
Merge findings into a single research document saved at:
./research/[project_name]-research.md
Create the research/ directory if it doesn't exist. If the document already existed, patch it in place rather than replacing it wholesale.
# Research: [Topic]
## Research Question
[1 sentence summary of what was researched]
## Summary
[3–6 sentences of high-level findings — architecture, major patterns, key dependencies]
## Detailed Findings
### [Component 1]
- What exists, with `file:line` references
- How it connects to other components
### [Component 2]
- What exists, with `file:line` references
- How it connects to other components
[Continue for each research area]
## Open Questions
[Anything that couldn't be determined from the code alone — missing files, unclear ownership, ambiguous logic]
After saving the file, tell the user where it was written.
development
Build a UEFI Secure Boot PXE netboot server for Ubuntu autoinstall. Use when: designing or implementing network boot infrastructure for automated Ubuntu provisioning with Secure Boot enabled. Covers the complete chain: signed shim+GRUB selection, TFTP layout, kernel parameters, autoinstall config requirements, and post-install bootstrapping scripts. Also applicable when debugging an existing PXE setup that uses the wrong GRUB binary or config paths.
development
Design pattern for running a persistent PXE/TFTP server that safely coexists with already-installed nodes. Use when: building PXE infrastructure that should stay always-on, designing automated bare-metal provisioning in GitOps/Kubernetes environments, or any PXE setup where UEFI boot order has network boot first. Eliminates boot loops without requiring UEFI firmware changes.
development
This skill governs all prose output — Claude's own responses, documentation, PR descriptions, commit messages, README content, comments, and any text the user asks to draft or edit. It should also be used when the user asks to "review my writing", "edit this for clarity", "make this clearer", "simplify this text", "rewrite this", "check my prose", "tighten this up", or "make this more concise". Based on George Orwell's "Politics and the English Language" (1946).
development
Debug Kubernetes pods using hostNetwork: true that crash with "Address already in use" or "failed to create listening socket for port N". Use when: (1) a hostNetwork pod container is in CrashLoopBackOff and logs show a port bind failure, (2) the port works fine in non-hostNetwork pods but fails with hostNetwork, (3) you need to identify which host-level process holds a port from within Kubernetes (no SSH). Covers /proc/net/udp inspection and kubectl debug node with nsenter.