Skip to content
Back to skills

Outline

ASecurity

Cheapest way to learn a large file's shape: prints signatures, type declarations and doc comments only — bodies elided, line numbers kept so a precise range can be read next. Measured on this repo at ~19% of the bytes (a 975-line, 38 kB file comes out 9 kB), so it is the difference between reading a module and skimming one. Use when a file is large and you only need to navigate it: finding a function, checking whether a type or command exists, seeing a module's public surface, or deciding whi...

  • 17 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 6, 2026
ai-agentsbash

Works with

  • cli

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 6, 2026

npx -y skills add vstaln/gray --skill outline --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Outline?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Outline
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vstaln-outline/badge)](https://www.skillsdirectory.com/skills/vstaln-outline)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: outline
description: >
  Cheapest way to learn a large file's shape: prints signatures, type
  declarations and doc comments only — bodies elided, line numbers kept so a
  precise range can be read next. Measured on this repo at ~19% of the bytes
  (a 975-line, 38 kB file comes out 9 kB), so it is the difference between
  reading a module and skimming one. Use when a file is large and you only
  need to navigate it: finding a function, checking whether a type or command
  exists, seeing a module's public surface, or deciding which range to read
  before editing. Especially worth it right after a failed read that
  truncated, or before touching a file you have never opened. Line-based, not
  a parse tree — it can miss a multi-line signature and can match a keyword
  inside a string literal, so read the range for anything exact.
---

# outline

Print a file's skeleton, then read only the range you need.

```bash
bash .agents/skills/outline/bin/outline.sh <file> [more files...]
```

`${SKILL_DIR}/bin/outline.sh` resolves too (braces required — a bare
`$SKILL_DIR` is not substituted), so the path works from any cwd.

## What you get

Every signature, type declaration and doc comment, with the line number it
came from, and nothing else. Comment lines ride with the signature that
follows them; a block of TODOs in the middle of a function never prints.

```text
=== crates/gray/src/plugin_cli.rs (975 lines) ===
     1  //! Native plugin command registration, help metadata and bounded UI requests.
    13  struct Catalog {
    33  fn catalog(name: &str) -> anyhow::Result<&'static Catalog> {
    63  pub fn home() -> anyhow::Result<PathBuf> {
```

## Then read the range

The line numbers exist so the next call is cheap. Page to the exact block
rather than re-reading the file:

```bash
sed -n '33,60p' crates/gray/src/plugin_cli.rs
```

## When not to use it

- You already know the line range — just read it.
- The file is small (under ~150 lines): reading it whole is cheaper than the
  two calls.
- You need exact semantics — a multi-line signature, a macro body, a trait
  bound. It is line-based, not a parse tree, and it can match a keyword
  inside a string literal.

Multiple files in one call is the intended use for "what does this crate
expose": `outline.sh crates/gray/src/repl/*.rs`.

Files in this skill

  • SKILL.md2.3 KB
  • bin/outline.sh2.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…