think-in-code

SkillFiles & storage

Use when analyzing multiple files, auditing a codebase, scanning dependencies, or counting lines -- one Bash pipeline beats N sequential Read calls.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the think-in-code skill

What this skill tells your AI

The instructions your AI receives, as published by fusengine/agents in plugins/ai-pilot/skills/think-in-code/SKILL.md and read by ahel’s review.

The reduction is typically ~60x in tokens consumed versus reading each file individually and tallying manually.

Think-in-Code Skill

Principle

1 Bash script = N Read calls avoided.

When you'd read 10 files sequentially to extract a summary, you waste tokens loading full contents into context. Instead: 1 shell pipeline returns the compact aggregated result.

Heuristic: if your task is "for each file in set, compute/extract X, then aggregate" → write the script. Reserve Read for targeted inspection of a specific file you already know matters.

5 Runnable Patterns

1. File size audit (> 100 lines violations)

find . -type f \( -name "*.ts" -o -name "*.tsx" -o -name "*.py" -o -name "*.php" \) \
  -not -path "*/node_modules/*" -not -path "*/vendor/*" \
  | xargs wc -l 2>/dev/null \
  | awk '$1 > 100 && $2 != "total" {print $1, $2}' \
  | sort -rn | head -20

2. Multi-grep symbols (compact JSON)

rg --json -g '*.ts' -g '*.tsx' 'export (function|class|const) (\w+)' src/ \
  | jq -r 'select(.type=="match") | "\(.data.path.text):\(.data.line_number) \(.data.lines.text)"' \
  | head -50

3. Dependencies with versions

# Node
jq -r '.dependencies, .devDependencies | to_entries[] | "\(.key)@\(.value)"' package.json 2>/dev/null

# PHP
jq -r '.require, ."require-dev" | to_entries[] | "\(.key)@\(.value)"' composer.json 2>/dev/null

4. Error log scan

grep -rEn 'ERROR|FATAL|Exception|panic:|stack trace' \
  --include="*.log" logs/ 2>/dev/null \
  | tail -30

5. Lines of code by extension

find . -type f \( -name "*.ts" -o -name "*.tsx" -o -name "*.js" -o -name "*.py" -o -name "*.php" \) \
  -not -path "*/node_modules/*" -not -path "*/vendor/*" -not -path "*/.git/*" \
  -exec wc -l {} + \
  | awk '{ext=$2; sub(/.*\./,"",ext); sum[ext]+=$1} END {for (e in sum) print sum[e], e}' \
  | sort -rn

Anti-Pattern

Do NOT Read 10 files sequentially to count their lines, list their exports, or check their size. That is ~6KB context per file = ~60KB wasted for a result that fits in 1KB.

WRONG: Read(f1.ts) → Read(f2.ts) → ... → Read(f10.ts) → manual tally
RIGHT: Bash(find ... | xargs wc -l | awk ...) → 1 compact table

Before / After

Task: "Find files > 100 lines in src/."

  • Before: 10 × Read full file → ~60KB tokens consumed, then mental wc.
  • After: 1 × find src -name '*.ts' | xargs wc -l | awk '$1>100' → ~1KB result.

~60× reduction. Use the script.

Signals

GitHub stars
25
Forks
4
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
think-in-code
Source
github.com/fusengine/agents