About agents-md-optimizer
agents-md-optimizer is a skill for refining agent context files, intended for developers maintaining project guidance such as CLAUDE.md and AGENTS.md. It removes information discoverable from code, retains operational knowledge, and scans source files for undocumented gotchas.
Key features
- 01Detect and select a target context file
- 02Classify discoverable and operational content
- 03Mine source for undocumented gotchas
- 04Preview diffs or produce report-only output
- 05Generate and verify an optimized file
Use cases
- 01Trim an AGENTS.md file in a project
- 02Review CLAUDE.md for redundant information
- 03Find source-level gotchas missing from guidance
- 04Inspect an analysis report before editing
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ caesiumy/ agents-md-optimizer --skill agents-md-optimizerAfter installing, type/agents-md-optimizerin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
references/anti-patterns.mdgotcha-mining.mdmethodology.mdscripts/line-count.mjsDetails
From the project READMEAgents-MD Optimizer
Optimize agent context files (CLAUDE.md, AGENTS.md, .cursorrules, etc.) by applying the discoverability filter: remove information agents can discover from code, keep only non-discoverable operational knowledge (gotchas, landmines, non-standard conventions), and mine source code for undocumented gotchas.
Research shows redundant context (directory trees, data flow diagrams) degrades agent performance by 15-20%, while human-authored operational knowledge reduces runtime by ~28%.
Flag Parsing
Parse $ARGUMENTS for optional flags:
| Flag | Effect |
|---|---|
--dry-run | Analyze and show diff without modifying the file |
--report-only | Output statistics and classification table only |
--path <path> | Target file path (see auto-detection below) |
--help | Display usage and exit |
If --help is present, display available flags and a brief description of the workflow, then stop.
Workflow
Phase 0: Setup
Language Detection: Detect the user's language from conversation history. Present all analysis results and messages in the user's language.
Target File Resolution (when --path is not specified):
Search for the first existing file in this priority order:
AGENTS.mdCLAUDE.md.cursorrulesCURSOR.md.github/copilot-instructions.md.windsurfrulescodex.md
If none found, ask the user to specify the target file path.
Small File Check: If the target file has fewer than 20 lines, inform the user that the file is already minimal and optimization is unnecessary. Stop unless the user explicitly requests to proceed.
Step 1: Baseline Analysis
Read the target file. Collect line statistics.
Script Location: Find the line-count script by searching for it:
# Search in common skill installation paths
SCRIPT_PATH=$(find ~/.claude/skills ~/.codex/skills ~/.cursor/skills ~/skills 2>/dev/null -path "*/agents-md-optimizer/scripts/line-count.mjs" | head -1)
if [ -z "$SCRIPT_PATH" ]; then
# Fallback: search in current directory
SCRIPT_PATH=$(find . -path "*/agents-md-optimizer/scripts/line-count.mjs" 2>/dev/null | head -1)
fi
Run the script if found:
node "$SCRIPT_PATH" '<TARGET_PATH>'
Fallback (if script not found): Count lines manually using Bash:
wc -l '<TARGET_PATH>'
grep -c '^##' '<TARGET_PATH>'
Then classify each ##/### section into one of three categories:
| Category | Meaning | Action |
|---|---|---|
discoverable | Agent can find this via Glob/Grep/Read within 10 seconds | Remove |
operational | Non-discoverable, operationally significant | Keep |
verbose | Operational knowledge but overly detailed | Compress |
To classify, actually read the source files referenced in each section. Verify whether the information is truly discoverable. Detailed classification criteria are in references/methodology.md.
Present results as a table:
## Baseline Analysis — <filename>
Total: XXX lines (YY sections)
| Section | Lines | Category | Rationale |
|---------|-------|----------|-----------|
| Directory Structure | 63 | discoverable | Glob **/* reveals this instantly |
| Design Rules | 8 | operational | Non-standard constraints, not in code |
| Config & State | 24 | verbose | Operational but compressible to ~6 lines |
Removal candidates: XX lines (XX%)
If --report-only, stop here.
Step 2: Gotcha Mining
Scan project source code to find non-obvious operational knowledge missing from the target file. Use the systematic checklist in references/gotcha-mining.md.
Key Grep patterns to run on the codebase:
MUST|WARNING|HACK|TODO|FIXME → developer-flagged gotchas
catch.*exit\(0\)|process\.exit → error exit policies
setTimeout|setInterval|deadline → timing constraints
=== null|== null|delete result → implicit semantics
process\.platform|/proc/version → platform detection quirks
cooldown|throttle|lastNotified → rate limiting scope
Present findings:
## Discovered Gotchas
| # | Category | Description | Source | Already documented? |
|---|----------|-------------|--------|---------------------|
| 1 | Timing | 5s→4s→2s budget | _common.mjs:21,52 | No → Add |
| 2 | Implicit | null = key deletion | config.mjs:157 | No → Add |
Step 3: Generate Optimized File
Use AskUserQuestion to confirm before modifying:
Based on the analysis:
- Remove: X lines of discoverable content (Y sections)
- Compress: X lines → ~Y lines (Z sections)
- Add: X new gotcha items
Options:
- Apply all — Remove discoverable, compress verbose, add gotchas
- Item by item — Review each change individually
- Cancel — No changes
Apply the selected changes using Edit (prefer surgical edits over full rewrite).
If --dry-run, show the diff but do not write.
Structure for optimized file (recommended section order):
- Project description (1-2 lines)
- Development Commands
- Design Rules (non-negotiable constraints)
- Gotchas & Landmines (categorized subsections)
- Conventions (non-standard project patterns)
- Version/Release Management
- Testing
Detailed anti-pattern examples with before/after are in references/anti-patterns.md.
Step 4: Verification
Re-run statistics (using the same script or fallback method from Step 1) and present before/after comparison:
## Optimization Results
| Metric | Before | After | Change |
|--------|--------|-------|--------|
| Total lines | 182 | 90 | -51% |
| Discoverable lines | 80 | 0 | Removed |
| Operational lines | 60 | 55 | Kept |
| Gotcha items | 0 | 25 | Added |
Discoverability filter: all remaining lines pass "not discoverable from code" check.
Reference Files
references/methodology.md— Discoverability filter decision tree, category classification criteria, compression techniques, efficiency research datareferences/anti-patterns.md— 6 anti-pattern catalog with real before/after examplesreferences/gotcha-mining.md— 8-category mining checklist with Grep patterns and source code analysis techniques