search
Navigate the agnt codebase — find where features live, how subsystems connect, and which files own what
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Navigate the agnt codebase — find where features live, how subsystems connect, and which files own what
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Coordinate alert/event delivery to AI agents — single-queue rule, layered gates (dedup, batch, activity-defer, outage-hold), and the forbidden parallel-path pattern that causes spam
Diagnose autostart, proxy, and process issues — why things aren't starting, connecting, or recovering
Design and implement health check, doctor command, and reconciliation logic for the daemon
| name | search |
| description | Navigate the agnt codebase — find where features live, how subsystems connect, and which files own what |
Use this skill when you need to find where something is implemented, understand how subsystems connect, or orient yourself before making changes.
| Package | Owns |
|---|---|
cmd/agnt/ | CLI entry points, PTY wrapper, MCP server bootstrap |
internal/daemon/ | Background service, session/process/proxy lifecycle, IPC hub |
internal/proxy/ | Reverse HTTP proxy, traffic logging, JS injection, WebSocket |
internal/tools/ | All MCP tool implementations and schemas |
internal/overlay/ | Terminal status bar, popup menus, ANSI output filtering |
internal/chromedp/ | Browser automation sessions (CDP) |
internal/browser/ | Chrome/Chromium process lifecycle |
internal/tunnel/ | Cloudflare/ngrok tunnel management |
internal/snapshot/ | Visual regression: baseline capture, image diffing |
internal/aichannel/ | AI agent CLI/API abstraction (Claude, Gemini, Copilot…) |
internal/automation/ | Prompt-driven task processing via claude-go |
internal/project/ | Project type detection (Go/Node/Python) |
internal/config/ | .agnt.kdl parsing, proxy/script config |
internal/protocol/ | IPC verb definitions and request/response types |
internal/store/ | Persistent key-value storage (global/folder/page scopes) |
internal/debug/ | Debug logging to ~/.cache/agnt/logs/ |
grep -r "Register.*Tools\|mcp.NewTool" internal/tools/internal/tools/daemon_tools.go — handleProxy*, handleProc*grep "json:\"" internal/tools/*.gointernal/tools/get_errors.gointernal/tools/responsive_audit.gointernal/tools/daemon_tools.gointernal/daemon/daemon.go — StartScript, autostartScript, CleanupSessionResourcesdaemon.go — RunAutostart, startAutostartScriptsinternal/daemon/process_readiness.go — ProcessReadiness, MarkReady/Failed/Exited, Wait
docs/plans/2026-03-15-process-dependency-ordering-design.mdinternal/daemon/daemon.go + go-cli-server/processgo-cli-server/script.Registry
CleanupSessionResources clears it on last session disconnectinternal/daemon/auto_restart.gointernal/daemon/port_preflight.gointernal/overlay/alerts.go → internal/daemon/alert_store.gointernal/daemon/proxy_events.go
handleURLDetected — URL in script output → find matching proxy config → create proxyhandleFallbackPortCheck — fallback-port used when URL detection failshandleScriptStopped — cleans up proxies linked to a script.claude/rules/proxy-events.mdinternal/daemon/daemon.go — autostartProxyscriptProxies map + trackScriptProxyinternal/daemon/hub_handlers.go
internal/daemon/daemon.go — handleSessionRegistergo-cli-server/session.Registryinternal/protocol/commands.gointernal/daemon/client.gointernal/daemon/doctor.go
checkProcessHealth, checkProxyHealth, checkMissingProxies, checkRunningWithErrors, checkSessionHealth, checkStartupErrors, checkProcessTreeinternal/daemon/startup_log_store.gointernal/daemon/alert_store.gohub_handlers.go — detectRogueProcess.claude/rules/daemon-architecture.mdinternal/proxy/server.gointernal/proxy/manager.go
GetWithPathFilter — project-scoped lookupErrProxyAmbiguous — multiple fuzzy matchesinternal/proxy/logger.gointernal/proxy/injector.gointernal/proxy/websocket.gointernal/daemon/urltracker.gointernal/daemon/urlmatcher.gocmd/agnt/run.go — runCommandinternal/overlay/filter.gointernal/overlay/gate.gointernal/overlay/summarizer.gointernal/overlay/alerts.gocmd/agnt/pty_common.go — wires scanner → daemon alert pushinternal/chromedp/manager.go, session.gointernal/chromedp/session.go — CaptureScreenshotinternal/browser/browser.go.agnt.kdl parsing: internal/config/agnt.gointernal/config/agnt.go — ProxyConfiginternal/config/agnt.go — ScriptConfiginternal/config/agnt_deps.go.claude/rules/config-contracts.mdinternal/platform/wsl.go — IsWSL(), ShouldUseWindowsShell(path)runtime.GOOS directly in WSL-aware code — always use platform package.claude/rules/daemon-architecture.mdBefore changing anything in internal/daemon/ read:
.claude/rules/daemon-architecture.md — personas, source of truth, silent failure rules.claude/rules/daemon-lifecycle.md — process/proxy state machines, session ownership.claude/rules/proxy-events.md — event pipeline, known silent failure pointsBefore changing anything in internal/proxy/ or internal/config/ read:
.claude/rules/config-contracts.md — fields that are parsed must be acted onImport cycle constraint:
daemon cannot import overlay (overlay imports daemon via status types)cmd/agnt/pty_common.go# Find where a specific IPC verb is handled
grep -n "VerbProxy\|\"PROXY\"" internal/daemon/hub_handlers.go internal/protocol/commands.go
# Find all places a ProxyEvent type is used
grep -n "URLDetected\|ScriptStopped\|FallbackPortCheck\|ExplicitStart" internal/daemon/
# Find all MCP tool input/output structs
grep -n "type.*Input\|type.*Output" internal/tools/*.go
# Find all places ProcessReadiness is called (dependency coordination)
grep -n "MarkReady\|MarkFailed\|MarkExited\|MarkStarting\|\.Wait(" internal/daemon/daemon.go
# Find all places the script registry is touched
grep -rn "scriptRegistry\." internal/daemon/daemon.go
# Find where a specific config field is read vs. acted on
grep -rn "FallbackPort\|fallback.port" internal/
# Find all hub handler functions (IPC verb implementations)
grep -n "^func (d \*Daemon) hubHandle" internal/daemon/hub_handlers.go
# Find all doctor check functions
grep -n "^func check" internal/daemon/doctor.go
Process stdout → URLTracker.Scan()
→ url-matchers (or regex scan)
→ onURLDetected(processID, url)
→ processReadiness.MarkReady(processID)
→ proxyEvents <- URLDetected{...}
→ handleURLDetected()
→ load .agnt.kdl
→ find ProxyConfig where Script == scriptName
→ proxym.Create(proxyID, targetURL)
ProcessManager removes process
→ URLTracker.cleanupRemovedProcesses()
→ onProcessStopped(processID)
→ processReadiness.MarkExited(processID) ← unblocks all waiters immediately
→ proxyEvents <- ScriptStopped{...}
→ handleScriptStopped() → stop linked proxies
AI Agent calls MCP tool (e.g. proc {action:"list"})
→ internal/tools/daemon_tools.go handler
→ DaemonTools.client.SendCommand("PROC LIST", filter)
→ Unix socket → daemon hub_handlers.go
→ hubHandleProcList() → ProcessManager.List()
→ JSON response → tool output
agnt run / Claude Code session
→ daemon.handleSessionRegister()
→ session added to registry
→ RunAutostart(projectPath)
→ load .agnt.kdl
→ port conflict pre-flight
→ TopologicalSort(scripts) → layers
→ for each layer: startAutostartScripts()
→ processReadiness.MarkStarting(pid)
→ waitForDependencies() → processReadiness.Wait(depPid)
→ autostartScript() → StartScript()