docs: update AGENTS.md hierarchy with latest structure and line counts

- Root: Add Prometheus/Metis/Momus agents, MCP architecture, 82 test files
- agents/: Document 7-section delegation and wisdom notepad
- auth/: Multi-account load balancing (10 accounts), endpoint fallback
- features/: Update background-agent 825 lines, builtin-skills 1230 lines
- hooks/: 22+ hooks with event timing details
- tools/: sisyphus-task 583 lines, LSP client 632 lines
- cli/: config-manager 725 lines, 17+ doctor checks
- shared/: Cross-cutting utilities with usage patterns
This commit is contained in:
YeonGyu-Kim
2026-01-13 21:00:00 +09:00
parent 7085bf01df
commit c8da697a10
8 changed files with 211 additions and 303 deletions
+8 -13
View File
@@ -1,11 +1,9 @@
# SHARED UTILITIES KNOWLEDGE BASE
## OVERVIEW
Cross-cutting utilities: path resolution, config management, text processing, Claude Code compatibility helpers.
Cross-cutting utilities for path resolution, config management, text processing, and Claude Code compatibility.
## STRUCTURE
```
shared/
├── index.ts # Barrel export
@@ -30,7 +28,6 @@ shared/
```
## WHEN TO USE
| Task | Utility |
|------|---------|
| Find ~/.claude | `getClaudeConfigDir()` |
@@ -43,21 +40,19 @@ shared/
| Legacy names | `migrateLegacyAgentNames()` |
## CRITICAL PATTERNS
```typescript
// Dynamic truncation
// Dynamic truncation with context budget
const output = dynamicTruncate(result, remainingTokens, 0.5)
// Deep merge priority
// Config resolution priority
const final = deepMerge(deepMerge(defaults, userConfig), projectConfig)
// Safe JSONC
// Safe JSONC parsing for user-edited files
const { config, error } = parseJsoncSafe(content)
```
## ANTI-PATTERNS
- Hardcoding paths (use getClaudeConfigDir, getUserConfigPath)
- JSON.parse for user files (use parseJsonc)
- Ignoring truncation (large outputs MUST use dynamicTruncate)
- Direct string concat for configs (use deepMerge)
- Hardcoding paths (use `getClaudeConfigDir`, `getUserConfigPath`)
- Using `JSON.parse` for user configs (always use `parseJsonc`)
- Ignoring output size (large tool outputs MUST use `dynamicTruncate`)
- Manual case conversion (use `toSnakeCase`, `normalizeToolName`)