devglide 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +338 -0
- package/bin/claude-md-template.js +94 -0
- package/bin/devglide.js +387 -0
- package/package.json +85 -0
- package/pnpm-workspace.yaml +3 -0
- package/src/apps/coder/.turbo/turbo-lint.log +5 -0
- package/src/apps/coder/package.json +16 -0
- package/src/apps/coder/public/favicon.svg +7 -0
- package/src/apps/coder/public/page.css +275 -0
- package/src/apps/coder/public/page.js +528 -0
- package/src/apps/coder/server.js +3 -0
- package/src/apps/documentation/public/page.css +597 -0
- package/src/apps/documentation/public/page.js +609 -0
- package/src/apps/kanban/.turbo/turbo-lint.log +97 -0
- package/src/apps/kanban/.turbo/turbo-typecheck.log +5 -0
- package/src/apps/kanban/package.json +32 -0
- package/src/apps/kanban/public/favicon.svg +7 -0
- package/src/apps/kanban/public/page.css +1010 -0
- package/src/apps/kanban/public/page.js +1730 -0
- package/src/apps/kanban/public/vendor/marked.min.js +6 -0
- package/src/apps/kanban/public/vendor/sortable.min.js +2 -0
- package/src/apps/kanban/src/db.ts +319 -0
- package/src/apps/kanban/src/index.ts +14 -0
- package/src/apps/kanban/src/mcp-helpers.test.ts +88 -0
- package/src/apps/kanban/src/mcp-helpers.ts +60 -0
- package/src/apps/kanban/src/mcp.ts +59 -0
- package/src/apps/kanban/src/routes/attachments.ts +161 -0
- package/src/apps/kanban/src/routes/features.ts +233 -0
- package/src/apps/kanban/src/routes/issues.ts +373 -0
- package/src/apps/kanban/src/tools/feature-tools.ts +164 -0
- package/src/apps/kanban/src/tools/item-tools.ts +307 -0
- package/src/apps/kanban/src/tools/versioned-entry-tools.ts +72 -0
- package/src/apps/kanban/tsconfig.check.json +9 -0
- package/src/apps/kanban/tsconfig.json +9 -0
- package/src/apps/keymap/.turbo/turbo-lint.log +5 -0
- package/src/apps/keymap/package.json +16 -0
- package/src/apps/keymap/public/page.css +275 -0
- package/src/apps/keymap/public/page.js +294 -0
- package/src/apps/keymap/server.js +25 -0
- package/src/apps/log/.turbo/turbo-build.log +5 -0
- package/src/apps/log/.turbo/turbo-lint.log +45 -0
- package/src/apps/log/.turbo/turbo-typecheck.log +5 -0
- package/src/apps/log/node_modules/.bin/tsc +21 -0
- package/src/apps/log/node_modules/.bin/tsserver +21 -0
- package/src/apps/log/node_modules/.bin/tsx +21 -0
- package/src/apps/log/package.json +36 -0
- package/src/apps/log/public/console-sniffer.js +221 -0
- package/src/apps/log/public/favicon.svg +7 -0
- package/src/apps/log/public/page.css +322 -0
- package/src/apps/log/public/page.js +463 -0
- package/src/apps/log/src/index.ts +9 -0
- package/src/apps/log/src/mcp.ts +122 -0
- package/src/apps/log/src/routes/log.ts +333 -0
- package/src/apps/log/src/routes/status.ts +25 -0
- package/src/apps/log/src/server-sniffer.ts +118 -0
- package/src/apps/log/src/services/file-patterns.ts +39 -0
- package/src/apps/log/src/services/file-tailer.ts +228 -0
- package/src/apps/log/src/services/line-parser.ts +94 -0
- package/src/apps/log/src/services/log-writer.ts +39 -0
- package/src/apps/log/tsconfig.json +8 -0
- package/src/apps/prompts/.turbo/turbo-build.log +5 -0
- package/src/apps/prompts/.turbo/turbo-lint.log +24 -0
- package/src/apps/prompts/.turbo/turbo-typecheck.log +5 -0
- package/src/apps/prompts/mcp.ts +175 -0
- package/src/apps/prompts/node_modules/.bin/tsc +21 -0
- package/src/apps/prompts/node_modules/.bin/tsserver +21 -0
- package/src/apps/prompts/node_modules/.bin/tsx +21 -0
- package/src/apps/prompts/package.json +25 -0
- package/src/apps/prompts/public/page.css +315 -0
- package/src/apps/prompts/public/page.js +541 -0
- package/src/apps/prompts/services/prompt-store.ts +212 -0
- package/src/apps/prompts/src/index.ts +9 -0
- package/src/apps/prompts/tsconfig.json +8 -0
- package/src/apps/prompts/types.ts +27 -0
- package/src/apps/shell/.turbo/turbo-build.log +5 -0
- package/src/apps/shell/.turbo/turbo-lint.log +34 -0
- package/src/apps/shell/.turbo/turbo-typecheck.log +5 -0
- package/src/apps/shell/package.json +35 -0
- package/src/apps/shell/public/favicon.svg +7 -0
- package/src/apps/shell/public/page.css +407 -0
- package/src/apps/shell/public/page.js +1577 -0
- package/src/apps/shell/src/index.ts +150 -0
- package/src/apps/shell/src/mcp.ts +398 -0
- package/src/apps/shell/src/shell-types.ts +41 -0
- package/src/apps/shell/tsconfig.json +8 -0
- package/src/apps/test/.turbo/turbo-build.log +5 -0
- package/src/apps/test/.turbo/turbo-lint.log +27 -0
- package/src/apps/test/.turbo/turbo-typecheck.log +5 -0
- package/src/apps/test/node_modules/.bin/tsc +21 -0
- package/src/apps/test/node_modules/.bin/tsserver +21 -0
- package/src/apps/test/node_modules/.bin/tsx +21 -0
- package/src/apps/test/node_modules/.bin/uuid +21 -0
- package/src/apps/test/package.json +35 -0
- package/src/apps/test/public/favicon.svg +7 -0
- package/src/apps/test/public/page.css +499 -0
- package/src/apps/test/public/page.js +417 -0
- package/src/apps/test/public/scenario-runner.js +450 -0
- package/src/apps/test/src/index.ts +9 -0
- package/src/apps/test/src/mcp.ts +192 -0
- package/src/apps/test/src/routes/trigger.ts +285 -0
- package/src/apps/test/src/services/scenario-broadcaster.ts +60 -0
- package/src/apps/test/src/services/scenario-manager.ts +361 -0
- package/src/apps/test/src/services/scenario-store.ts +145 -0
- package/src/apps/test/tsconfig.json +8 -0
- package/src/apps/vocabulary/.turbo/turbo-build.log +5 -0
- package/src/apps/vocabulary/.turbo/turbo-lint.log +25 -0
- package/src/apps/vocabulary/.turbo/turbo-typecheck.log +5 -0
- package/src/apps/vocabulary/mcp.ts +173 -0
- package/src/apps/vocabulary/node_modules/.bin/tsc +21 -0
- package/src/apps/vocabulary/node_modules/.bin/tsserver +21 -0
- package/src/apps/vocabulary/node_modules/.bin/tsx +21 -0
- package/src/apps/vocabulary/package.json +25 -0
- package/src/apps/vocabulary/public/page.css +247 -0
- package/src/apps/vocabulary/public/page.js +444 -0
- package/src/apps/vocabulary/services/vocabulary-store.ts +179 -0
- package/src/apps/vocabulary/src/index.ts +10 -0
- package/src/apps/vocabulary/tsconfig.json +8 -0
- package/src/apps/vocabulary/types.ts +22 -0
- package/src/apps/voice/.turbo/turbo-build.log +5 -0
- package/src/apps/voice/.turbo/turbo-lint.log +43 -0
- package/src/apps/voice/.turbo/turbo-typecheck.log +5 -0
- package/src/apps/voice/node_modules/.bin/openai +21 -0
- package/src/apps/voice/node_modules/.bin/tsc +21 -0
- package/src/apps/voice/node_modules/.bin/tsserver +21 -0
- package/src/apps/voice/node_modules/.bin/tsx +21 -0
- package/src/apps/voice/package.json +35 -0
- package/src/apps/voice/public/favicon.svg +7 -0
- package/src/apps/voice/public/page.css +388 -0
- package/src/apps/voice/public/page.js +718 -0
- package/src/apps/voice/src/index.ts +10 -0
- package/src/apps/voice/src/mcp.ts +70 -0
- package/src/apps/voice/src/providers/index.ts +85 -0
- package/src/apps/voice/src/providers/openai-compatible.ts +94 -0
- package/src/apps/voice/src/providers/types.ts +27 -0
- package/src/apps/voice/src/routes/config.ts +118 -0
- package/src/apps/voice/src/routes/transcribe.ts +90 -0
- package/src/apps/voice/src/services/config-store.ts +129 -0
- package/src/apps/voice/src/services/stats.ts +108 -0
- package/src/apps/voice/src/transcribe.ts +11 -0
- package/src/apps/voice/src/utils/mime.ts +16 -0
- package/src/apps/voice/tsconfig.json +8 -0
- package/src/apps/workflow/.turbo/turbo-build.log +5 -0
- package/src/apps/workflow/.turbo/turbo-lint.log +96 -0
- package/src/apps/workflow/.turbo/turbo-typecheck.log +5 -0
- package/src/apps/workflow/engine/executors/decision-executor.ts +87 -0
- package/src/apps/workflow/engine/executors/file-executor.ts +90 -0
- package/src/apps/workflow/engine/executors/git-executor.ts +137 -0
- package/src/apps/workflow/engine/executors/http-executor.ts +65 -0
- package/src/apps/workflow/engine/executors/index.ts +28 -0
- package/src/apps/workflow/engine/executors/kanban-executor.ts +154 -0
- package/src/apps/workflow/engine/executors/llm-executor.ts +46 -0
- package/src/apps/workflow/engine/executors/log-executor.ts +62 -0
- package/src/apps/workflow/engine/executors/loop-executor.ts +14 -0
- package/src/apps/workflow/engine/executors/shell-executor.ts +107 -0
- package/src/apps/workflow/engine/executors/sub-workflow-executor.ts +61 -0
- package/src/apps/workflow/engine/executors/test-executor.ts +73 -0
- package/src/apps/workflow/engine/executors/trigger-executor.ts +39 -0
- package/src/apps/workflow/engine/expression-evaluator.ts +117 -0
- package/src/apps/workflow/engine/graph-runner.ts +438 -0
- package/src/apps/workflow/engine/node-executor.ts +104 -0
- package/src/apps/workflow/engine/node-registry.ts +15 -0
- package/src/apps/workflow/engine/variable-resolver.ts +109 -0
- package/src/apps/workflow/mcp.ts +223 -0
- package/src/apps/workflow/node_modules/.bin/tsc +21 -0
- package/src/apps/workflow/node_modules/.bin/tsserver +21 -0
- package/src/apps/workflow/node_modules/.bin/tsx +21 -0
- package/src/apps/workflow/package.json +25 -0
- package/src/apps/workflow/public/editor/canvas.js +366 -0
- package/src/apps/workflow/public/editor/drag-manager.js +326 -0
- package/src/apps/workflow/public/editor/edge-renderer.js +235 -0
- package/src/apps/workflow/public/editor/history-manager.js +147 -0
- package/src/apps/workflow/public/editor/layout-engine.js +159 -0
- package/src/apps/workflow/public/editor/node-renderer.js +199 -0
- package/src/apps/workflow/public/editor/selection-manager.js +193 -0
- package/src/apps/workflow/public/favicon.svg +7 -0
- package/src/apps/workflow/public/models/node-types.js +300 -0
- package/src/apps/workflow/public/models/workflow-model.js +257 -0
- package/src/apps/workflow/public/page.css +406 -0
- package/src/apps/workflow/public/page.js +658 -0
- package/src/apps/workflow/public/panels/inspector.js +360 -0
- package/src/apps/workflow/public/panels/palette.js +106 -0
- package/src/apps/workflow/public/panels/run-view.js +275 -0
- package/src/apps/workflow/public/panels/toolbar.js +232 -0
- package/src/apps/workflow/public/panels/workflow-list.js +237 -0
- package/src/apps/workflow/public/state/store.js +47 -0
- package/src/apps/workflow/services/custom-node-loader.ts +48 -0
- package/src/apps/workflow/services/legacy-converter.ts +72 -0
- package/src/apps/workflow/services/run-manager.ts +190 -0
- package/src/apps/workflow/services/workflow-store.ts +424 -0
- package/src/apps/workflow/services/workflow-validator.test.ts +103 -0
- package/src/apps/workflow/services/workflow-validator.ts +98 -0
- package/src/apps/workflow/src/index.ts +10 -0
- package/src/apps/workflow/templates/ci-pipeline.json +18 -0
- package/src/apps/workflow/templates/code-review.json +22 -0
- package/src/apps/workflow/templates/kanban-testing.json +24 -0
- package/src/apps/workflow/tsconfig.json +8 -0
- package/src/apps/workflow/types.ts +268 -0
- package/src/packages/auth-middleware.ts +14 -0
- package/src/packages/design-tokens/.turbo/turbo-build.log +10 -0
- package/src/packages/design-tokens/STYLEGUIDE.md +414 -0
- package/src/packages/design-tokens/build.js +413 -0
- package/src/packages/design-tokens/demo/index.html +1367 -0
- package/src/packages/design-tokens/demo/proposition-a.html +717 -0
- package/src/packages/design-tokens/demo/proposition-b.html +1239 -0
- package/src/packages/design-tokens/demo/proposition-c.html +1049 -0
- package/src/packages/design-tokens/dist/tailwind-preset.js +115 -0
- package/src/packages/design-tokens/dist/tokens.css +345 -0
- package/src/packages/design-tokens/dist/tokens.d.ts +229 -0
- package/src/packages/design-tokens/dist/tokens.js +386 -0
- package/src/packages/design-tokens/package.json +25 -0
- package/src/packages/design-tokens/tokens.json +228 -0
- package/src/packages/devtools-middleware.ts +22 -0
- package/src/packages/eslint-config/index.js +63 -0
- package/src/packages/eslint-config/node_modules/.bin/eslint +21 -0
- package/src/packages/eslint-config/package.json +18 -0
- package/src/packages/json-file-store.ts +232 -0
- package/src/packages/mcp-utils/.turbo/turbo-build.log +5 -0
- package/src/packages/mcp-utils/dist/index.d.ts +33 -0
- package/src/packages/mcp-utils/dist/index.d.ts.map +1 -0
- package/src/packages/mcp-utils/dist/index.js +126 -0
- package/src/packages/mcp-utils/dist/index.js.map +1 -0
- package/src/packages/mcp-utils/node_modules/.bin/tsc +21 -0
- package/src/packages/mcp-utils/node_modules/.bin/tsserver +21 -0
- package/src/packages/mcp-utils/package.json +32 -0
- package/src/packages/mcp-utils/src/index.ts +171 -0
- package/src/packages/mcp-utils/tsconfig.json +9 -0
- package/src/packages/paths.ts +18 -0
- package/src/packages/project-context/index.js +55 -0
- package/src/packages/project-context/package.json +13 -0
- package/src/packages/project-store.ts +127 -0
- package/src/packages/server-sniffer.ts +132 -0
- package/src/packages/shared-assets/favicon.svg +7 -0
- package/src/packages/shared-assets/keymap-registry.js +512 -0
- package/src/packages/shared-assets/logo.svg +6 -0
- package/src/packages/shared-assets/package.json +11 -0
- package/src/packages/shared-assets/ui-utils.js +48 -0
- package/src/packages/shared-assets/voice-widget.d.ts +37 -0
- package/src/packages/shared-assets/voice-widget.js +695 -0
- package/src/packages/shared-types/.turbo/turbo-build.log +5 -0
- package/src/packages/shared-types/dist/index.d.ts +39 -0
- package/src/packages/shared-types/dist/index.d.ts.map +1 -0
- package/src/packages/shared-types/node_modules/.bin/tsc +21 -0
- package/src/packages/shared-types/node_modules/.bin/tsserver +21 -0
- package/src/packages/shared-types/package.json +25 -0
- package/src/packages/shared-types/src/index.ts +41 -0
- package/src/packages/shared-types/tsconfig.json +11 -0
- package/src/packages/tsconfig/base.json +15 -0
- package/src/packages/tsconfig/next.json +14 -0
- package/src/packages/tsconfig/node.json +11 -0
- package/src/packages/tsconfig/package.json +10 -0
- package/turbo.json +25 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Daniel Kutyla
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="assets/screenshots/dashboard.png" alt="DevGlide Dashboard" width="800" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">devglide</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<strong>AI-native development environment for Claude Code</strong><br/>
|
|
9
|
+
A modular toolkit that gives your AI coding assistant project management, browser testing,<br/>
|
|
10
|
+
workflow automation, and more — all through MCP tools and a unified dashboard.
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<p align="center">
|
|
14
|
+
<a href="#quick-start">Quick Start</a> •
|
|
15
|
+
<a href="#modules">Modules</a> •
|
|
16
|
+
<a href="#architecture">Architecture</a> •
|
|
17
|
+
<a href="#mcp-tools">MCP Tools</a> •
|
|
18
|
+
<a href="#license">License</a>
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
<p align="center">
|
|
22
|
+
<img src="https://img.shields.io/badge/MCP_Tools-51-22c55e" alt="51 MCP Tools" />
|
|
23
|
+
<img src="https://img.shields.io/badge/MCP_Servers-8-3b82f6" alt="8 MCP Servers" />
|
|
24
|
+
<img src="https://img.shields.io/badge/App_Modules-10-f59e0b" alt="10 App Modules" />
|
|
25
|
+
<img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License" />
|
|
26
|
+
<img src="https://img.shields.io/badge/node-%3E%3D22-brightgreen" alt="Node.js >= 22" />
|
|
27
|
+
</p>
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## What is DevGlide?
|
|
32
|
+
|
|
33
|
+
Claude Code is powerful on its own, but it operates in a text-only terminal. DevGlide gives it **eyes, hands, and memory** — a browser dashboard with visual tools that Claude controls through [MCP](https://modelcontextprotocol.io/).
|
|
34
|
+
|
|
35
|
+
**Plan** — Kanban boards with features, tasks, bugs, work logs, and review feedback. Claude picks up tasks, updates progress, and records what was done.
|
|
36
|
+
|
|
37
|
+
**Test** — Browser automation that runs UI scenarios against your live app. Build regression suites that Claude executes before every commit.
|
|
38
|
+
|
|
39
|
+
**Automate** — Visual DAG workflows with shell commands, decisions, loops, and integrations. Define processes once, trigger them by prompt or event.
|
|
40
|
+
|
|
41
|
+
## Quick Start
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Install globally
|
|
45
|
+
npm install -g devglide
|
|
46
|
+
|
|
47
|
+
# Set up MCP servers and Claude Code integration
|
|
48
|
+
devglide setup
|
|
49
|
+
|
|
50
|
+
# Start the dashboard
|
|
51
|
+
devglide dev
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Open **http://localhost:7000** — that's it. Claude Code can now use all 51 MCP tools.
|
|
55
|
+
|
|
56
|
+
> **Requirements:** Node.js >= 22, [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI
|
|
57
|
+
>
|
|
58
|
+
> **Platforms:** Linux and macOS. Windows users should run devglide under WSL or Git Bash.
|
|
59
|
+
|
|
60
|
+
## Modules
|
|
61
|
+
|
|
62
|
+
DevGlide ships 10 integrated modules. Eight expose MCP servers that Claude Code calls directly; two are dashboard-only tools.
|
|
63
|
+
|
|
64
|
+
### Kanban — Task Management
|
|
65
|
+
|
|
66
|
+
Organize work into features with full kanban boards. Columns flow from Backlog through Done. Claude picks up tasks, moves them through stages, appends work logs, and records review feedback — all via MCP.
|
|
67
|
+
|
|
68
|
+
<img src="assets/screenshots/kanban.png" alt="Kanban board with task cards across columns" width="800" />
|
|
69
|
+
|
|
70
|
+
### Shell — Terminal Multiplexer
|
|
71
|
+
|
|
72
|
+
Multi-pane terminal dashboard with PTY emulation and 200KB scrollback per pane. Claude can create panes, run commands, and read output. Supports bash and embedded browser views.
|
|
73
|
+
|
|
74
|
+
<img src="assets/screenshots/shell.png" alt="Four terminal panes with an embedded browser view" width="800" />
|
|
75
|
+
|
|
76
|
+
### Test — Browser UI Automation
|
|
77
|
+
|
|
78
|
+
LLM-driven browser automation with a saved scenario library. Write test sequences using commands like `click`, `type`, `assertText`, and `waitFor`. Claude runs them before every commit to catch regressions.
|
|
79
|
+
|
|
80
|
+
<img src="assets/screenshots/test.png" alt="Test runner with saved scenarios and run history" width="800" />
|
|
81
|
+
|
|
82
|
+
### Workflow — Visual DAG Builder
|
|
83
|
+
|
|
84
|
+
Define multi-step processes as directed acyclic graphs. Node types include shell commands, kanban ops, git ops, decisions, loops, HTTP calls, and sub-workflows. Claude matches user prompts to workflows automatically.
|
|
85
|
+
|
|
86
|
+
<img src="assets/screenshots/workflow.png" alt="Visual workflow editor with connected nodes" width="800" />
|
|
87
|
+
|
|
88
|
+
### Coder — In-Browser Editor
|
|
89
|
+
|
|
90
|
+
File tree viewer and editor for navigating your monorepo directly in the dashboard. Browse, read, and edit files without leaving the browser.
|
|
91
|
+
|
|
92
|
+
<img src="assets/screenshots/coder.png" alt="File tree with package.json open in the editor" width="800" />
|
|
93
|
+
|
|
94
|
+
### Voice — Speech-to-Text
|
|
95
|
+
|
|
96
|
+
Configurable speech-to-text transcription with provider selection, model configuration, and usage statistics. Drop audio files or record directly for transcription.
|
|
97
|
+
|
|
98
|
+
<img src="assets/screenshots/voice.png" alt="Voice configuration with transcription statistics" width="800" />
|
|
99
|
+
|
|
100
|
+
### Documentation
|
|
101
|
+
|
|
102
|
+
Product docs and guides served directly in the dashboard with navigation, module reference, and API documentation.
|
|
103
|
+
|
|
104
|
+
<img src="assets/screenshots/documentation.png" alt="Documentation viewer with module cards" width="800" />
|
|
105
|
+
|
|
106
|
+
### And More
|
|
107
|
+
|
|
108
|
+
| Module | Type | What it does |
|
|
109
|
+
|--------|------|-------------|
|
|
110
|
+
| **Vocabulary** | MCP | Domain-specific term dictionary for consistent AI interpretation |
|
|
111
|
+
| **Log** | MCP | Browser console capture, log streaming, and session tracking |
|
|
112
|
+
| **Prompts** | MCP | Reusable prompt template library with `{{variable}}` interpolation |
|
|
113
|
+
| **Keymap** | UI | Keyboard shortcut configuration dashboard |
|
|
114
|
+
|
|
115
|
+
## Architecture
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
┌─────────────────────────────────────────────────────────┐
|
|
119
|
+
│ Claude Code (CLI) │
|
|
120
|
+
│ │
|
|
121
|
+
│ "create a kanban task" "run the smoke tests" │
|
|
122
|
+
│ "check the logs" "match a workflow" │
|
|
123
|
+
└────────────┬────────────────────────┬───────────────────┘
|
|
124
|
+
│ stdio (MCP) │ stdio (MCP)
|
|
125
|
+
▼ ▼
|
|
126
|
+
┌────────────────────────────────────────────────────────┐
|
|
127
|
+
│ DevGlide MCP Servers (x8) │
|
|
128
|
+
│ │
|
|
129
|
+
│ kanban shell test workflow vocab voice log prompts │
|
|
130
|
+
└────────────────────────┬───────────────────────────────┘
|
|
131
|
+
│
|
|
132
|
+
shared state
|
|
133
|
+
│
|
|
134
|
+
▼
|
|
135
|
+
┌────────────────────────────────────────────────────────┐
|
|
136
|
+
│ Unified HTTP Server (:7000) │
|
|
137
|
+
│ │
|
|
138
|
+
│ REST API Socket.io Static Assets MCP/HTTP │
|
|
139
|
+
│ /api/* real-time /app/* /mcp/* │
|
|
140
|
+
└────────────────────────┬───────────────────────────────┘
|
|
141
|
+
│
|
|
142
|
+
▼
|
|
143
|
+
┌────────────────────────────────────────────────────────┐
|
|
144
|
+
│ Browser Dashboard │
|
|
145
|
+
│ │
|
|
146
|
+
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │
|
|
147
|
+
│ │ Kanban │ │ Shell │ │ Test │ │ Log │ ... │
|
|
148
|
+
│ └────────┘ └────────┘ └────────┘ └────────┘ │
|
|
149
|
+
└────────────────────────────────────────────────────────┘
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**How it works:** `devglide setup` registers 8 MCP servers with Claude Code. Each server runs as an isolated stdio process. The same tools are also available via HTTP on the unified server, so the browser dashboard and Claude Code always share the same state.
|
|
153
|
+
|
|
154
|
+
## MCP Tools
|
|
155
|
+
|
|
156
|
+
51 tools across 8 servers. Expand each section for the full reference.
|
|
157
|
+
|
|
158
|
+
<details>
|
|
159
|
+
<summary><strong>Kanban</strong> — 15 tools</summary>
|
|
160
|
+
|
|
161
|
+
| Tool | Description |
|
|
162
|
+
|------|-------------|
|
|
163
|
+
| `kanban_list_features` | List all features with pagination |
|
|
164
|
+
| `kanban_create_feature` | Create a new feature board |
|
|
165
|
+
| `kanban_get_feature` | Get feature details with columns and tasks |
|
|
166
|
+
| `kanban_update_feature` | Update feature name, description, or color |
|
|
167
|
+
| `kanban_delete_feature` | Delete a feature and its tasks |
|
|
168
|
+
| `kanban_list_items` | List tasks/bugs with filtering and pagination |
|
|
169
|
+
| `kanban_create_item` | Create a new task or bug |
|
|
170
|
+
| `kanban_get_item` | Get full item details |
|
|
171
|
+
| `kanban_update_item` | Update item fields |
|
|
172
|
+
| `kanban_move_item` | Move item to a different column |
|
|
173
|
+
| `kanban_delete_item` | Delete a task or bug |
|
|
174
|
+
| `kanban_append_work_log` | Record work done (append-only, versioned) |
|
|
175
|
+
| `kanban_get_work_log` | Read full work log history |
|
|
176
|
+
| `kanban_append_review` | Add review feedback (append-only, versioned) |
|
|
177
|
+
| `kanban_get_review_history` | Read review history |
|
|
178
|
+
|
|
179
|
+
</details>
|
|
180
|
+
|
|
181
|
+
<details>
|
|
182
|
+
<summary><strong>Shell</strong> — 5 tools</summary>
|
|
183
|
+
|
|
184
|
+
| Tool | Description |
|
|
185
|
+
|------|-------------|
|
|
186
|
+
| `shell_list_panes` | List active terminal panes with CWD |
|
|
187
|
+
| `shell_create_pane` | Create a new terminal pane |
|
|
188
|
+
| `shell_close_pane` | Close a terminal pane |
|
|
189
|
+
| `shell_run_command` | Execute a command and capture output |
|
|
190
|
+
| `shell_get_scrollback` | Get recent terminal buffer |
|
|
191
|
+
|
|
192
|
+
</details>
|
|
193
|
+
|
|
194
|
+
<details>
|
|
195
|
+
<summary><strong>Test</strong> — 7 tools</summary>
|
|
196
|
+
|
|
197
|
+
| Tool | Description |
|
|
198
|
+
|------|-------------|
|
|
199
|
+
| `test_commands` | List available automation commands |
|
|
200
|
+
| `test_run_scenario` | Execute an ad-hoc test scenario |
|
|
201
|
+
| `test_save_scenario` | Save a scenario to the library |
|
|
202
|
+
| `test_list_saved` | List saved scenarios |
|
|
203
|
+
| `test_run_saved` | Run a saved scenario by ID |
|
|
204
|
+
| `test_delete_saved` | Remove a saved scenario |
|
|
205
|
+
| `test_get_result` | Check execution results and timing |
|
|
206
|
+
|
|
207
|
+
</details>
|
|
208
|
+
|
|
209
|
+
<details>
|
|
210
|
+
<summary><strong>Workflow</strong> — 6 tools</summary>
|
|
211
|
+
|
|
212
|
+
| Tool | Description |
|
|
213
|
+
|------|-------------|
|
|
214
|
+
| `workflow_list` | List all workflows |
|
|
215
|
+
| `workflow_get` | Get full workflow graph |
|
|
216
|
+
| `workflow_create` | Create a new workflow |
|
|
217
|
+
| `workflow_get_instructions` | Compile instructions from enabled workflows |
|
|
218
|
+
| `workflow_match` | Match user prompt to relevant workflows |
|
|
219
|
+
| `workflow_toggle` | Enable or disable a workflow |
|
|
220
|
+
|
|
221
|
+
</details>
|
|
222
|
+
|
|
223
|
+
<details>
|
|
224
|
+
<summary><strong>Vocabulary</strong> — 6 tools</summary>
|
|
225
|
+
|
|
226
|
+
| Tool | Description |
|
|
227
|
+
|------|-------------|
|
|
228
|
+
| `vocabulary_list` | List all term definitions |
|
|
229
|
+
| `vocabulary_lookup` | Look up a term by name or alias |
|
|
230
|
+
| `vocabulary_add` | Add a new term definition |
|
|
231
|
+
| `vocabulary_update` | Update an existing term |
|
|
232
|
+
| `vocabulary_remove` | Delete a term |
|
|
233
|
+
| `vocabulary_context` | Get all terms as compiled markdown |
|
|
234
|
+
|
|
235
|
+
</details>
|
|
236
|
+
|
|
237
|
+
<details>
|
|
238
|
+
<summary><strong>Voice</strong> — 2 tools</summary>
|
|
239
|
+
|
|
240
|
+
| Tool | Description |
|
|
241
|
+
|------|-------------|
|
|
242
|
+
| `voice_transcribe` | Transcribe audio to text |
|
|
243
|
+
| `voice_status` | Check service status and stats |
|
|
244
|
+
|
|
245
|
+
</details>
|
|
246
|
+
|
|
247
|
+
<details>
|
|
248
|
+
<summary><strong>Log</strong> — 4 tools</summary>
|
|
249
|
+
|
|
250
|
+
| Tool | Description |
|
|
251
|
+
|------|-------------|
|
|
252
|
+
| `log_write` | Append a log entry |
|
|
253
|
+
| `log_read` | Read recent log entries |
|
|
254
|
+
| `log_clear` | Clear a specific log file |
|
|
255
|
+
| `log_clear_all` | Clear all tracked session logs |
|
|
256
|
+
|
|
257
|
+
</details>
|
|
258
|
+
|
|
259
|
+
<details>
|
|
260
|
+
<summary><strong>Prompts</strong> — 6 tools</summary>
|
|
261
|
+
|
|
262
|
+
| Tool | Description |
|
|
263
|
+
|------|-------------|
|
|
264
|
+
| `prompts_list` | List prompts with filtering |
|
|
265
|
+
| `prompts_get` | Get full prompt with detected variables |
|
|
266
|
+
| `prompts_render` | Render template with variable substitution |
|
|
267
|
+
| `prompts_add` | Save a new prompt template |
|
|
268
|
+
| `prompts_update` | Update prompt content or metadata |
|
|
269
|
+
| `prompts_remove` | Delete a prompt |
|
|
270
|
+
|
|
271
|
+
</details>
|
|
272
|
+
|
|
273
|
+
## CLI Reference
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
devglide dev # Run server in foreground (recommended)
|
|
277
|
+
devglide start # Start as background daemon
|
|
278
|
+
devglide stop # Stop the server
|
|
279
|
+
devglide restart # Restart the server
|
|
280
|
+
devglide status # Show running status
|
|
281
|
+
devglide logs # Tail server logs
|
|
282
|
+
devglide setup # Register MCP servers with Claude Code
|
|
283
|
+
devglide teardown # Unregister MCP servers
|
|
284
|
+
devglide mcp <name> # Launch a single MCP server on stdio
|
|
285
|
+
devglide list # Show available MCP servers
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
## Tech Stack
|
|
289
|
+
|
|
290
|
+
| Layer | Technology |
|
|
291
|
+
|-------|-----------|
|
|
292
|
+
| Runtime | Node.js >= 22 (ES Modules) |
|
|
293
|
+
| Language | TypeScript 5.8 |
|
|
294
|
+
| Server | Express 5, Socket.io 4 |
|
|
295
|
+
| MCP | @modelcontextprotocol/sdk |
|
|
296
|
+
| Database | better-sqlite3 (embedded) |
|
|
297
|
+
| Terminal | node-pty |
|
|
298
|
+
| Monorepo | pnpm workspaces + Turborepo |
|
|
299
|
+
| Validation | Zod |
|
|
300
|
+
| Testing | Vitest |
|
|
301
|
+
|
|
302
|
+
## Project Structure
|
|
303
|
+
|
|
304
|
+
```
|
|
305
|
+
devglide/
|
|
306
|
+
├── bin/devglide.js # CLI entry point
|
|
307
|
+
├── src/
|
|
308
|
+
│ ├── server.ts # Unified HTTP server (:7000)
|
|
309
|
+
│ ├── apps/
|
|
310
|
+
│ │ ├── kanban/ # Task management
|
|
311
|
+
│ │ ├── shell/ # Terminal multiplexer
|
|
312
|
+
│ │ ├── test/ # Browser automation
|
|
313
|
+
│ │ ├── workflow/ # DAG workflow engine
|
|
314
|
+
│ │ ├── vocabulary/ # Domain terminology
|
|
315
|
+
│ │ ├── voice/ # Speech-to-text
|
|
316
|
+
│ │ ├── log/ # Console capture
|
|
317
|
+
│ │ ├── prompts/ # Prompt templates
|
|
318
|
+
│ │ ├── coder/ # In-browser editor
|
|
319
|
+
│ │ └── keymap/ # Keyboard shortcuts
|
|
320
|
+
│ └── packages/
|
|
321
|
+
│ ├── mcp-utils/ # MCP server factory
|
|
322
|
+
│ ├── design-tokens/ # UI design system
|
|
323
|
+
│ ├── shared-types/ # TypeScript types
|
|
324
|
+
│ └── ...
|
|
325
|
+
└── ~/.devglide/ # Runtime state (DB, logs, PIDs)
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
## Why DevGlide?
|
|
329
|
+
|
|
330
|
+
AI coding assistants are constrained by their interface. Claude Code runs in a terminal — it can read and write files, but it can't manage a project board, watch browser logs, run visual test suites, or follow repeatable workflows.
|
|
331
|
+
|
|
332
|
+
DevGlide bridges that gap. Instead of building one monolithic tool, it composes **small, focused MCP servers** that each do one thing well. Claude Code discovers them automatically and uses them as naturally as it uses `git` or `npm`.
|
|
333
|
+
|
|
334
|
+
The result: your AI assistant doesn't just write code — it **plans** work, **tests** the UI, **automates** processes, and **remembers** domain context. All while you watch it happen in a live dashboard.
|
|
335
|
+
|
|
336
|
+
## License
|
|
337
|
+
|
|
338
|
+
[MIT](LICENSE) © 2026 Daniel Kutyla
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// Managed CLAUDE.md section for DevGlide onboarding instructions.
|
|
2
|
+
// Installed by `devglide setup`, removed by `devglide teardown`.
|
|
3
|
+
|
|
4
|
+
const VERSION = "0.1.0";
|
|
5
|
+
const BEGIN = `<!-- DEVGLIDE:BEGIN v${VERSION} -->`;
|
|
6
|
+
const END = "<!-- DEVGLIDE:END -->";
|
|
7
|
+
|
|
8
|
+
export function getClaudeMdContent() {
|
|
9
|
+
return `${BEGIN}
|
|
10
|
+
# DevGlide — AI Workflow Toolkit
|
|
11
|
+
|
|
12
|
+
DevGlide gives you MCP tools for kanban boards, shell automation, test runners,
|
|
13
|
+
workflows, vocabulary, voice, prompts, logging, and documentation — all wired
|
|
14
|
+
into your coding assistant. Follow the rules below so the tools work together.
|
|
15
|
+
|
|
16
|
+
## Priority Rules
|
|
17
|
+
|
|
18
|
+
1. **Always call \`workflow_match\`** with the user's prompt before responding.
|
|
19
|
+
If a workflow matches, follow its instructions exactly.
|
|
20
|
+
2. **Call \`vocabulary_lookup\`** when you encounter unfamiliar or ambiguous terms
|
|
21
|
+
that could be domain jargon, project names, or abbreviations.
|
|
22
|
+
3. **Update kanban status** — move items to In Progress when starting work,
|
|
23
|
+
to In Review / Testing when done. Never move items to Done (only the user can).
|
|
24
|
+
4. **Append a work log** via \`kanban_append_work_log\` after completing work
|
|
25
|
+
on any kanban task.
|
|
26
|
+
5. **Pick tasks from the Todo column** by default unless told otherwise.
|
|
27
|
+
|
|
28
|
+
## MCP Servers
|
|
29
|
+
|
|
30
|
+
| Server | Purpose |
|
|
31
|
+
|-----------------|----------------------------------------------|
|
|
32
|
+
| devglide-kanban | Task boards — features, items, reviews, logs |
|
|
33
|
+
| devglide-shell | Terminal pane management and command execution|
|
|
34
|
+
| devglide-test | Browser automation test scenarios |
|
|
35
|
+
| devglide-workflow | Reusable workflow templates and matching |
|
|
36
|
+
| devglide-vocabulary | Domain term definitions and lookups |
|
|
37
|
+
| devglide-voice | Voice transcription |
|
|
38
|
+
| devglide-log | Structured logging |
|
|
39
|
+
| devglide-prompts | Prompt templates |
|
|
40
|
+
|
|
41
|
+
## Common Patterns
|
|
42
|
+
|
|
43
|
+
### Creating a feature
|
|
44
|
+
1. \`kanban_create_feature\` — create the feature board
|
|
45
|
+
2. \`kanban_create_item\` — add tasks to the feature's Todo column
|
|
46
|
+
3. Start working on items one by one
|
|
47
|
+
|
|
48
|
+
### Starting work on a task
|
|
49
|
+
1. \`workflow_match\` — check for an applicable workflow
|
|
50
|
+
2. \`kanban_move_item\` to In Progress
|
|
51
|
+
3. Implement changes
|
|
52
|
+
4. \`kanban_append_work_log\` — record what was done
|
|
53
|
+
5. \`kanban_move_item\` to In Review or Testing
|
|
54
|
+
|
|
55
|
+
### Running tests
|
|
56
|
+
1. \`test_list_saved\` — see existing test scenarios
|
|
57
|
+
2. \`test_run_saved\` — run a saved scenario, or \`test_run_scenario\` for ad-hoc
|
|
58
|
+
3. \`test_get_result\` — check results
|
|
59
|
+
${END}`;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const SECTION_RE = new RegExp(
|
|
63
|
+
`${escapeRegex("<!-- DEVGLIDE:BEGIN")}[^>]*-->[\\s\\S]*?${escapeRegex(END)}`,
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
function escapeRegex(str) {
|
|
67
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** Returns true if the managed section exists in content. */
|
|
71
|
+
export function hasSection(content) {
|
|
72
|
+
return SECTION_RE.test(content);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** Idempotent insert or replace of the managed section. */
|
|
76
|
+
export function injectSection(existingContent, newSection) {
|
|
77
|
+
if (hasSection(existingContent)) {
|
|
78
|
+
return existingContent.replace(SECTION_RE, newSection.trim());
|
|
79
|
+
}
|
|
80
|
+
// Append with separator
|
|
81
|
+
const separator = existingContent.length > 0 && !existingContent.endsWith("\n\n")
|
|
82
|
+
? existingContent.endsWith("\n") ? "\n" : "\n\n"
|
|
83
|
+
: "";
|
|
84
|
+
return existingContent + separator + newSection.trim() + "\n";
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** Remove the managed section cleanly. */
|
|
88
|
+
export function removeSection(existingContent) {
|
|
89
|
+
if (!hasSection(existingContent)) return existingContent;
|
|
90
|
+
return existingContent
|
|
91
|
+
.replace(SECTION_RE, "")
|
|
92
|
+
.replace(/\n{3,}/g, "\n\n")
|
|
93
|
+
.trim() + (existingContent.trim().length > 0 ? "\n" : "");
|
|
94
|
+
}
|