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()