think-in-code
SkillFiles & storageUse 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.
No other account needed.
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