feat: Claude Code Monitor — lanes, pipelines and a merged workspace

Internal SmartGift build of a Claude Code monitoring dashboard.

Lanes: a durable unit of parallel agent work, one per working directory,
tracked across session restarts. Managed lanes are git worktrees the
dashboard provisions and can reset or remove behind a three-check destroy
guard and a counted preflight; adopted lanes are directories you already
own and are never destroyable.

Pipelines: a lane moves through pipeline stages. A stage the agent declares
with evidence renders green; a stage inferred from the tool-event stream
renders dashed amber and never counts as done. Detection is forward-only
within a 30-minute window, and never writes the declared stage.

Workspace: one page at /run with a lane grid, the selected lane's pipeline,
and a full Claude console behind a disclosure.
This commit is contained in:
2026-07-29 17:07:45 +07:00
commit 57dc91585d
783 changed files with 221743 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
---
paths:
- "server/**/*.js"
- "scripts/**/*.js"
---
# Backend and Hook Rules
- Keep API responses backward-compatible unless a breaking change is explicitly requested.
- Maintain deterministic, non-blocking hook ingestion behavior.
- Preserve transaction boundaries and data integrity in event processing logic.
- For route changes, validate input thoroughly and return structured errors.
- Prefer prepared-statement usage patterns already established in `server/db.js`.
- If touching status transitions, verify session and agent lifecycle state machines still make sense.
+12
View File
@@ -0,0 +1,12 @@
---
paths:
- "**/*.md"
---
# Documentation Rules
- Keep command examples executable and aligned with actual scripts.
- Use absolute or clearly rooted paths when discussing project files.
- When adding architecture claims, reflect current code behavior.
- Update all affected docs together (`README`, `ARCHITECTURE`, `SETUP`, `INSTALL`, `mcp/README`) when workflows change.
- Prefer concise sections and concrete troubleshooting steps.
+6
View File
@@ -0,0 +1,6 @@
# File Header Rules (binding for every coding agent)
- Every applicable source file (`.js/.ts/.tsx/.cjs/.mjs/.py/.sh/.css` — excluding `node_modules/`, `dist/`, `data/`, minified/vendored, snapshots) MUST start with the header comment: a truthful file overview plus the exact line `@author Nguyễn Ngọc Trí Vĩ <vinnt@smartgift.vn>`.
- Creating a new applicable file → write the header before any code (after the shebang in scripts).
- Editing a file that lacks the header → add it in the same change; if the edit changes the file's purpose, update the overview.
- Formats and the repo-wide audit script live in `.claude/skills/file-headers/` (`bash .claude/skills/file-headers/scripts/check-headers.sh` must exit 0).
+14
View File
@@ -0,0 +1,14 @@
---
paths:
- "client/src/**/*.{ts,tsx,css}"
- "client/public/**/*.tsx"
---
# Frontend Rules
- Preserve existing UI information hierarchy unless redesign is requested.
- Keep component props and API typing explicit; avoid implicit `any`.
- Match existing page/component patterns for loading, empty, and error states.
- When adding UI behavior, ensure it degrades safely if websocket updates are delayed.
- Keep routes consistent with current navigation model.
- Prefer focused UI diffs over broad stylistic rewrites.
+17
View File
@@ -0,0 +1,17 @@
---
paths:
- "mcp/src/**/*.ts"
- "mcp/package.json"
- "mcp/tsconfig.json"
- "mcp/.env.example"
- "mcp/README.md"
---
# MCP Server Rules
- Keep MCP tool names stable and descriptive.
- Keep destructive operations behind explicit guardrails.
- Route all logs to stderr only; never write protocol logs to stdout.
- Keep tool input schemas strict and bounded.
- Preserve loopback-only API target enforcement unless security posture changes by request.
- Verify MCP with `npm run mcp:typecheck` and `npm run mcp:build` after code edits.