@sugar-crash-studios/vibe-forge 0.4.0

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.
Files changed (201) hide show
  1. package/.claude/commands/clear-attention.md +63 -0
  2. package/.claude/commands/compact-context.md +52 -0
  3. package/.claude/commands/configure-vcs.md +102 -0
  4. package/.claude/commands/forge.md +171 -0
  5. package/.claude/commands/need-help.md +77 -0
  6. package/.claude/commands/update-status.md +64 -0
  7. package/.claude/commands/worker-loop.md +106 -0
  8. package/.claude/hooks/worker-loop.js +198 -0
  9. package/.claude/scripts/setup-worker-loop.sh +45 -0
  10. package/.claude/settings.local.json +46 -0
  11. package/LICENSE +21 -0
  12. package/README.md +238 -0
  13. package/agents/aegis/personality.md +294 -0
  14. package/agents/anvil/personality.md +276 -0
  15. package/agents/architect/personality.md +258 -0
  16. package/agents/crucible/personality.md +360 -0
  17. package/agents/ember/personality.md +291 -0
  18. package/agents/forge-master/capabilities.md +144 -0
  19. package/agents/forge-master/context-template.md +128 -0
  20. package/agents/forge-master/personality.md +138 -0
  21. package/agents/furnace/personality.md +340 -0
  22. package/agents/herald/personality.md +247 -0
  23. package/agents/loki/personality.md +108 -0
  24. package/agents/oracle/personality.md +283 -0
  25. package/agents/pixel/personality.md +113 -0
  26. package/agents/planning-hub/personality.md +320 -0
  27. package/agents/scribe/personality.md +251 -0
  28. package/agents/temper/personality.md +218 -0
  29. package/bin/cli.js +375 -0
  30. package/bin/dashboard/api/agents.js +333 -0
  31. package/bin/dashboard/api/dispatch.js +483 -0
  32. package/bin/dashboard/api/tasks.js +416 -0
  33. package/bin/dashboard/frontend/index.html +13 -0
  34. package/bin/dashboard/frontend/package.json +16 -0
  35. package/bin/dashboard/frontend/src/App.svelte +222 -0
  36. package/bin/dashboard/frontend/src/app.css +1777 -0
  37. package/bin/dashboard/frontend/src/lib/components/AgentCard.svelte +60 -0
  38. package/bin/dashboard/frontend/src/lib/components/AgentsPanel.svelte +57 -0
  39. package/bin/dashboard/frontend/src/lib/components/DispatchModal.svelte +180 -0
  40. package/bin/dashboard/frontend/src/lib/components/Footer.svelte +33 -0
  41. package/bin/dashboard/frontend/src/lib/components/Header.svelte +84 -0
  42. package/bin/dashboard/frontend/src/lib/components/IssueCard.svelte +33 -0
  43. package/bin/dashboard/frontend/src/lib/components/IssuesPanel.svelte +73 -0
  44. package/bin/dashboard/frontend/src/lib/components/KeyboardShortcutsModal.svelte +108 -0
  45. package/bin/dashboard/frontend/src/lib/components/MobileTabs.svelte +52 -0
  46. package/bin/dashboard/frontend/src/lib/components/NotificationCard.svelte +60 -0
  47. package/bin/dashboard/frontend/src/lib/components/NotificationsPanel.svelte +44 -0
  48. package/bin/dashboard/frontend/src/lib/components/TaskCard.svelte +63 -0
  49. package/bin/dashboard/frontend/src/lib/components/TasksPanel.svelte +82 -0
  50. package/bin/dashboard/frontend/src/lib/components/Toast.svelte +45 -0
  51. package/bin/dashboard/frontend/src/lib/stores/agents.js +34 -0
  52. package/bin/dashboard/frontend/src/lib/stores/issues.js +54 -0
  53. package/bin/dashboard/frontend/src/lib/stores/notifications.js +48 -0
  54. package/bin/dashboard/frontend/src/lib/stores/tasks.js +63 -0
  55. package/bin/dashboard/frontend/src/lib/stores/theme.js +33 -0
  56. package/bin/dashboard/frontend/src/lib/stores/toast.js +35 -0
  57. package/bin/dashboard/frontend/src/lib/stores/ui.js +25 -0
  58. package/bin/dashboard/frontend/src/lib/stores/voice.js +275 -0
  59. package/bin/dashboard/frontend/src/lib/stores/websocket.js +295 -0
  60. package/bin/dashboard/frontend/src/lib/utils/api.js +101 -0
  61. package/bin/dashboard/frontend/src/lib/utils/formatters.js +54 -0
  62. package/bin/dashboard/frontend/src/main.js +9 -0
  63. package/bin/dashboard/frontend/svelte.config.js +5 -0
  64. package/bin/dashboard/frontend/vite.config.js +20 -0
  65. package/bin/dashboard/public/assets/index-DnfVj9Ce.css +1 -0
  66. package/bin/dashboard/public/assets/index-Ze5h0kXQ.js +2 -0
  67. package/bin/dashboard/public/index.html +14 -0
  68. package/bin/dashboard/server.js +566 -0
  69. package/bin/forge-daemon.sh +463 -0
  70. package/bin/forge-setup.sh +645 -0
  71. package/bin/forge-spawn.sh +164 -0
  72. package/bin/forge.cmd +83 -0
  73. package/bin/forge.sh +533 -0
  74. package/bin/lib/agents.sh +177 -0
  75. package/bin/lib/colors.sh +44 -0
  76. package/bin/lib/config.sh +347 -0
  77. package/bin/lib/constants.sh +241 -0
  78. package/bin/lib/daemon/display.sh +128 -0
  79. package/bin/lib/daemon/notifications.sh +263 -0
  80. package/bin/lib/daemon/routing.sh +77 -0
  81. package/bin/lib/daemon/state.sh +115 -0
  82. package/bin/lib/daemon/sync.sh +95 -0
  83. package/bin/lib/database.sh +310 -0
  84. package/bin/lib/heimdall-setup.js +113 -0
  85. package/bin/lib/heimdall.js +265 -0
  86. package/bin/lib/json.sh +264 -0
  87. package/bin/lib/terminal.js +451 -0
  88. package/bin/lib/util.sh +126 -0
  89. package/bin/lib/vcs.js +349 -0
  90. package/config/agent-manifest.yaml +203 -0
  91. package/config/agents.json +168 -0
  92. package/config/task-template.md +159 -0
  93. package/config/task-types.yaml +106 -0
  94. package/context/agent-status/aegis.json +7 -0
  95. package/context/agent-status/anvil.json +7 -0
  96. package/context/agent-status/architect.json +7 -0
  97. package/context/agent-status/crucible.json +7 -0
  98. package/context/agent-status/ember.json +7 -0
  99. package/context/agent-status/furnace.json +7 -0
  100. package/context/agent-status/loki.json +7 -0
  101. package/context/agent-status/oracle.json +7 -0
  102. package/context/agent-status/pixel.json +7 -0
  103. package/context/agent-status/planning-hub.json +7 -0
  104. package/context/agent-status/scribe.json +7 -0
  105. package/context/agent-status/temper.json +7 -0
  106. package/context/feature-brainstorm.md +426 -0
  107. package/context/forge-state.yaml +19 -0
  108. package/context/modern-conventions.md +129 -0
  109. package/context/project-context-template.md +122 -0
  110. package/context/project-context.md +122 -0
  111. package/docs/TODO.md +150 -0
  112. package/docs/agents.md +409 -0
  113. package/docs/architecture/decisions/ADR-001-daemon-modularization.md +122 -0
  114. package/docs/architecture/vibe-lab-integration.md +684 -0
  115. package/docs/architecture.md +194 -0
  116. package/docs/bmad-gap-analysis-2026-03-31.md +444 -0
  117. package/docs/cleanup-workflow.md +329 -0
  118. package/docs/commands.md +451 -0
  119. package/docs/dashboard-mockup.html +989 -0
  120. package/docs/getting-started.md +261 -0
  121. package/docs/integration/forge-ownership-policy.md +112 -0
  122. package/docs/npm-publishing.md +132 -0
  123. package/docs/roadmap-2026.md +519 -0
  124. package/docs/security.md +144 -0
  125. package/docs/wireframes/dashboard-mvp.md +1164 -0
  126. package/docs/workflows/README.md +32 -0
  127. package/docs/workflows/azure-devops.md +108 -0
  128. package/docs/workflows/bitbucket.md +104 -0
  129. package/docs/workflows/git-only.md +130 -0
  130. package/docs/workflows/gitea.md +168 -0
  131. package/docs/workflows/github.md +103 -0
  132. package/docs/workflows/gitlab.md +105 -0
  133. package/docs/workflows.md +454 -0
  134. package/package.json +73 -0
  135. package/tasks/completed/ARCH-001-duplicate-agent-config.md +121 -0
  136. package/tasks/completed/ARCH-002-mixed-bash-node-implementation.md +88 -0
  137. package/tasks/completed/ARCH-003-worker-loop-hook-duplication.md +77 -0
  138. package/tasks/completed/ARCH-009-test-organization.md +78 -0
  139. package/tasks/completed/ARCH-011-jq-vs-nodejs-json.md +94 -0
  140. package/tasks/completed/ARCH-012-tmp-files-in-root.md +71 -0
  141. package/tasks/completed/ARCH-013-exit-code-constants.md +65 -0
  142. package/tasks/completed/ARCH-014-sed-incompatibility.md +96 -0
  143. package/tasks/completed/ARCH-015-docs-todo-tracking.md +83 -0
  144. package/tasks/completed/BUG-dash-001-tasks-filter-error.md +31 -0
  145. package/tasks/completed/BUG-dash-002-agents-unknown.md +41 -0
  146. package/tasks/completed/CLEAN-001.md +38 -0
  147. package/tasks/completed/CLEAN-002.md +43 -0
  148. package/tasks/completed/CLEAN-003.md +47 -0
  149. package/tasks/completed/CLEAN-004.md +56 -0
  150. package/tasks/completed/CLEAN-005.md +75 -0
  151. package/tasks/completed/CLEAN-006.md +47 -0
  152. package/tasks/completed/CLEAN-007.md +34 -0
  153. package/tasks/completed/CLEAN-008.md +49 -0
  154. package/tasks/completed/CLEAN-012.md +58 -0
  155. package/tasks/completed/CLEAN-013.md +45 -0
  156. package/tasks/completed/FEATURE-001a-dashboard-wireframes.md +162 -0
  157. package/tasks/completed/IMPL-007a-daemon-notifications-module.md +82 -0
  158. package/tasks/completed/IMPL-007b-daemon-sync-module.md +71 -0
  159. package/tasks/completed/IMPL-007c-daemon-state-module.md +80 -0
  160. package/tasks/completed/IMPL-007d-daemon-routing-module.md +77 -0
  161. package/tasks/completed/IMPL-007e-daemon-display-module.md +77 -0
  162. package/tasks/completed/IMPL-007f-daemon-integration.md +124 -0
  163. package/tasks/completed/PLAT-1-heimdall.md +420 -0
  164. package/tasks/completed/SEC-001-sql-injection-fix.md +58 -0
  165. package/tasks/completed/SEC-002-notification-injection-fix.md +45 -0
  166. package/tasks/completed/SEC-003-eval-injection-fix.md +54 -0
  167. package/tasks/completed/SEC-004-pid-race-condition-fix.md +49 -0
  168. package/tasks/completed/SEC-005-worker-loop-path-fix.md +51 -0
  169. package/tasks/completed/SEC-006-eval-agent-names.md +55 -0
  170. package/tasks/completed/SEC-007-spawn-escaping.md +67 -0
  171. package/tasks/completed/TASK-DASH-001-server-infrastructure.md +185 -0
  172. package/tasks/completed/TASK-anvil-001-dashboard-frontend.md +133 -0
  173. package/tasks/completed/review-bmad-aegis.md +89 -0
  174. package/tasks/completed/review-bmad-anvil.md +80 -0
  175. package/tasks/completed/review-bmad-crucible.md +81 -0
  176. package/tasks/completed/review-bmad-ember.md +90 -0
  177. package/tasks/completed/review-bmad-furnace.md +79 -0
  178. package/tasks/completed/review-bmad-pixel.md +82 -0
  179. package/tasks/completed/review-bmad-scribe.md +92 -0
  180. package/tasks/completed/review-bmad-sentinel.md +83 -0
  181. package/tasks/pending/ARCH-004-git-bash-detection-duplication.md +72 -0
  182. package/tasks/pending/ARCH-005-missing-src-directory.md +95 -0
  183. package/tasks/pending/ARCH-006-task-template-location.md +64 -0
  184. package/tasks/pending/ARCH-008-forge-master-vs-hub.md +81 -0
  185. package/tasks/pending/ARCH-010-missing-index-files.md +84 -0
  186. package/tasks/pending/CLEAN-009.md +31 -0
  187. package/tasks/pending/CLEAN-010.md +30 -0
  188. package/tasks/pending/CLEAN-011.md +30 -0
  189. package/tasks/pending/CLEAN-014.md +32 -0
  190. package/tasks/pending/DESIGN-dash-001-layout-review.md +45 -0
  191. package/tasks/pending/FEATURE-001-dashboard-mvp.md +268 -0
  192. package/tasks/review/ARCH-007-daemon-monolith.md +162 -0
  193. package/tasks/review/bmad-review-aegis.md +349 -0
  194. package/tasks/review/bmad-review-anvil.md +259 -0
  195. package/tasks/review/bmad-review-crucible.md +277 -0
  196. package/tasks/review/bmad-review-ember.md +307 -0
  197. package/tasks/review/bmad-review-furnace.md +285 -0
  198. package/tasks/review/bmad-review-pixel.md +329 -0
  199. package/tasks/review/bmad-review-scribe.md +361 -0
  200. package/tasks/review/bmad-review-sentinel.md +242 -0
  201. package/tasks/review/task-001.md +78 -0
@@ -0,0 +1,55 @@
1
+ ---
2
+ id: SEC-006
3
+ title: "Validate agent names to prevent shell injection via eval"
4
+ type: security
5
+ priority: medium
6
+ assigned_to: aegis
7
+ created_at: 2026-01-16T00:00:00Z
8
+ created_by: scribe-docs-migration
9
+ ---
10
+
11
+ ## Summary
12
+ The load_agents_from_json() function uses eval on agent data which could allow shell command execution if agents.json is compromised.
13
+
14
+ ## Current State
15
+ From docs/TODO.md (M-1 - Medium Priority):
16
+ > **eval() of external data in load_agents_from_json()**
17
+ > File: `bin/lib/config.sh` line 95
18
+ > Issue: If agents.json is compromised, malicious agent names could execute shell commands via `eval "$agent_data"`
19
+ > Fix: Add input validation in Node.js script to reject agent names containing shell metacharacters
20
+
21
+ ## Affected Files
22
+ - `bin/lib/config.sh` line 95
23
+
24
+ ## Proposed Fix
25
+ Add input validation in the Node.js script that processes agents.json to reject agent names containing:
26
+ - Shell metacharacters (`;`, `|`, `&`, `$`, backticks, etc.)
27
+ - Newlines
28
+ - Quotes
29
+
30
+ Alternatively, refactor to avoid eval entirely by using a safer approach to populate the agent data.
31
+
32
+ ## Acceptance Criteria
33
+ - [x] Agent names validated before eval
34
+ - [x] Shell metacharacters rejected with clear error message
35
+ - [x] No change to legitimate agent names
36
+ - [x] Test coverage for injection attempts
37
+
38
+ ## Resolution
39
+
40
+ **Status: Already Fixed**
41
+
42
+ The validation was implemented as part of SEC-001 security fixes:
43
+
44
+ 1. **`bin/lib/config.sh`** lines 47-86 contain:
45
+ - `isValidIdentifier()` function that validates against `^[a-z0-9_-]+$`
46
+ - Validation of all agent names before processing
47
+ - Validation of all aliases
48
+ - `escapeForShell()` for display names, roles, and other string values
49
+
50
+ 2. **Test coverage** exists in `tests/unit/agents.test.js`:
51
+ - `should reject command injection attempt` (line 89)
52
+ - `should reject backtick injection` (line 94)
53
+ - `should reject path traversal attempt` (line 84)
54
+
55
+ No additional changes required.
@@ -0,0 +1,67 @@
1
+ ---
2
+ id: SEC-007
3
+ title: "Escape variables in Windows Terminal spawn command"
4
+ type: security
5
+ priority: low
6
+ assigned_to: aegis
7
+ created_at: 2026-01-16T00:00:00Z
8
+ created_by: scribe-docs-migration
9
+ ---
10
+
11
+ ## Summary
12
+ Variables passed to Windows Terminal command are not properly escaped for nested shell invocation.
13
+
14
+ ## Current State
15
+ From docs/TODO.md (L-1 - Low Priority):
16
+ > **Windows Terminal command escaping**
17
+ > File: `bin/forge-spawn.sh` lines 55-57
18
+ > Issue: `$display_name` and `$FORGE_ROOT` not escaped for nested shell invocation
19
+ > Fix: Use `printf %q` for proper escaping
20
+
21
+ Current code:
22
+ ```bash
23
+ wt.exe "${wt_args[@]}" "$bash_path" -c "cd \"$win_forge_root\" && ./bin/forge.sh start \"$agent\""
24
+ ```
25
+
26
+ The `$win_forge_root` and other variables could contain characters that break the nested shell command.
27
+
28
+ ## Affected Files
29
+ - `bin/forge-spawn.sh` lines 55-57 (and nearby)
30
+
31
+ ## Proposed Fix
32
+ Use `printf %q` to properly escape variables before embedding in the command string:
33
+ ```bash
34
+ escaped_path=$(printf %q "$win_forge_root")
35
+ escaped_agent=$(printf %q "$agent")
36
+ wt.exe "${wt_args[@]}" "$bash_path" -c "cd $escaped_path && ./bin/forge.sh start $escaped_agent"
37
+ ```
38
+
39
+ ## Risk Assessment
40
+ Low risk because:
41
+ - $agent is already validated through resolve_agent whitelist
42
+ - $FORGE_ROOT is set from script directory, not user input
43
+
44
+ Still worth fixing for defense in depth.
45
+
46
+ ## Acceptance Criteria
47
+ - [x] Variables properly escaped with printf %q
48
+ - [x] Works with paths containing spaces
49
+ - [x] Works with paths containing special characters
50
+ - [ ] Test on Windows with various path types (manual testing required)
51
+
52
+ ## Resolution
53
+
54
+ **Status: Fixed**
55
+
56
+ Updated `bin/forge-spawn.sh` lines 76-87 to use `printf %q` for proper escaping:
57
+
58
+ ```bash
59
+ # SECURITY: Use printf %q to properly escape paths for nested shell invocation
60
+ local escaped_path escaped_agent
61
+ escaped_path=$(printf %q "$win_forge_root")
62
+ escaped_agent=$(printf %q "$agent")
63
+
64
+ wt.exe "${wt_args[@]}" "$bash_path" -c "cd $escaped_path && ./bin/forge.sh start $escaped_agent"
65
+ ```
66
+
67
+ This ensures paths with spaces, special characters, or shell metacharacters are properly escaped for the nested shell invocation.
@@ -0,0 +1,185 @@
1
+ ---
2
+ id: TASK-DASH-001
3
+ title: "Dashboard Server Infrastructure (Phase 1A)"
4
+ type: feature
5
+ priority: critical
6
+ status: completed
7
+ created_at: 2026-01-16T22:00:00Z
8
+ created_by: planning-hub
9
+ assigned_to: furnace
10
+ parent: FEATURE-001
11
+ completed_at: 2026-01-16T22:30:00Z
12
+ completed_by: furnace
13
+ ---
14
+
15
+ # Dashboard Server Infrastructure (Phase 1A)
16
+
17
+ ## Summary
18
+
19
+ Scaffold the dashboard server infrastructure as the first phase of FEATURE-001-dashboard-mvp.
20
+
21
+ ## Requirements
22
+
23
+ Create standalone HTTP + WebSocket server that can be tested independently:
24
+
25
+ 1. `bin/dashboard/server.js` - HTTP + WebSocket server using Node.js built-in http module + ws package
26
+ 2. `bin/dashboard/api/tasks.js` - API endpoint for listing tasks from tasks/ directory
27
+ 3. `bin/dashboard/api/agents.js` - API endpoint for agent status from context/agent-status/
28
+ 4. `bin/dashboard/api/dispatch.js` - API endpoint to create task files
29
+ 5. `bin/dashboard/public/index.html` - Basic placeholder
30
+ 6. Add `ws` to package.json devDependencies
31
+
32
+ ## Technical Details
33
+
34
+ ### Server Configuration
35
+ - Default port: 5555 (configurable via DASHBOARD_PORT env or config)
36
+ - Host: localhost (configurable)
37
+ - Serve static files from public/
38
+ - REST API at /api/*
39
+ - WebSocket at /ws for real-time updates
40
+
41
+ ### API Endpoints
42
+ ```
43
+ GET /api/tasks # List all tasks by status
44
+ GET /api/tasks/:id # Get task details
45
+ POST /api/tasks # Create new task (for dispatch)
46
+ GET /api/agents # List agents and their status
47
+ POST /api/dispatch # Dispatch agent for a task
48
+ WS /ws # Real-time updates
49
+ ```
50
+
51
+ ## Scope
52
+
53
+ - DO NOT integrate with daemon yet
54
+ - Standalone server for independent testing
55
+ - Read from existing SQLite database or task files
56
+
57
+ ## Acceptance Criteria
58
+
59
+ - [x] Server starts on port 5555
60
+ - [x] GET /api/tasks returns task list
61
+ - [x] GET /api/agents returns agent status
62
+ - [x] POST /api/dispatch creates task file
63
+ - [x] WebSocket connection established at /ws
64
+ - [x] Static files served from public/
65
+ - [x] ws package added to devDependencies
66
+
67
+ ---
68
+
69
+ ## Completion Summary
70
+
71
+ completed_by: furnace
72
+ completed_at: 2026-01-16T22:30:00Z
73
+ duration_minutes: 30
74
+
75
+ ### Files Created
76
+
77
+ - `bin/dashboard/server.js` - Main HTTP + WebSocket server (280 lines)
78
+ - `bin/dashboard/api/tasks.js` - Task listing and creation API (220 lines)
79
+ - `bin/dashboard/api/agents.js` - Agent status API (215 lines)
80
+ - `bin/dashboard/api/dispatch.js` - Task dispatch API (310 lines)
81
+ - `bin/dashboard/public/index.html` - Placeholder dashboard UI (370 lines)
82
+
83
+ ### Files Modified
84
+
85
+ - `package.json` - Added `ws` ^8.18.0 to devDependencies
86
+
87
+ ### API Endpoints Implemented
88
+
89
+ - `GET /api/health` - Server health check
90
+ - `GET /api/tasks` - List all tasks grouped by status (pending, in-progress, review, completed)
91
+ - `GET /api/tasks/:id` - Get single task details with full body
92
+ - `POST /api/tasks` - Create new task file
93
+ - `GET /api/agents` - List all agents with status, icon, role metadata
94
+ - `POST /api/dispatch` - Create task file for agent dispatch
95
+
96
+ ### Dispatch Types Supported
97
+
98
+ - `stale-docs` - Stale documentation detection
99
+ - `failing-test` - Test failure dispatch
100
+ - `security-issue` - Security vulnerability dispatch
101
+ - `low-coverage` - Low test coverage dispatch
102
+ - `todo-fixme` - TODO/FIXME marker dispatch
103
+ - `pending-review` - Pending PR review dispatch
104
+ - `custom` - Custom task dispatch
105
+
106
+ ### Features
107
+
108
+ 1. **HTTP Server**
109
+ - Static file serving with security (path traversal prevention)
110
+ - CORS headers for local development
111
+ - JSON request/response handling
112
+ - Request logging
113
+
114
+ 2. **WebSocket Server**
115
+ - Real-time connection at `/ws`
116
+ - Ping/pong support
117
+ - Broadcast function for real-time updates
118
+ - Graceful reconnection in client
119
+
120
+ 3. **Tasks API**
121
+ - Parses YAML frontmatter from markdown task files
122
+ - Groups tasks by directory (pending, in-progress, review, completed)
123
+ - Sorts by priority (critical > high > medium > low)
124
+ - Summary stats (total, by status)
125
+
126
+ 4. **Agents API**
127
+ - Reads from JSON status files in `context/agent-status/`
128
+ - Falls back to SQLite database if available
129
+ - Includes agent metadata (icon, role, color) from personality files
130
+ - Lists all known agents even if status file missing
131
+
132
+ 5. **Dispatch API**
133
+ - Creates properly formatted task files
134
+ - Auto-generates task IDs with type prefixes
135
+ - Suggests appropriate agent based on file type
136
+ - Broadcasts task creation via WebSocket
137
+
138
+ ### Usage
139
+
140
+ ```bash
141
+ # Start server (default port 5555)
142
+ node bin/dashboard/server.js
143
+
144
+ # Custom port
145
+ node bin/dashboard/server.js --port 3000
146
+ DASHBOARD_PORT=3000 node bin/dashboard/server.js
147
+
148
+ # Custom host
149
+ node bin/dashboard/server.js --host 0.0.0.0
150
+
151
+ # Help
152
+ node bin/dashboard/server.js --help
153
+ ```
154
+
155
+ ### Testing
156
+
157
+ Server can be tested independently:
158
+
159
+ ```bash
160
+ # Install ws dependency
161
+ npm install
162
+
163
+ # Start server
164
+ node bin/dashboard/server.js
165
+
166
+ # Test endpoints
167
+ curl http://localhost:5555/api/health
168
+ curl http://localhost:5555/api/tasks
169
+ curl http://localhost:5555/api/agents
170
+
171
+ # Test dispatch
172
+ curl -X POST http://localhost:5555/api/dispatch \
173
+ -H "Content-Type: application/json" \
174
+ -d '{"type": "stale-docs", "target": "README.md", "agent": "scribe"}'
175
+ ```
176
+
177
+ ### Notes
178
+
179
+ - Server uses Node.js built-in `http` module (no Express dependency)
180
+ - WebSocket gracefully degrades if `ws` package not installed
181
+ - Agents API tries SQLite first, falls back to JSON files
182
+ - All task files use standard YAML frontmatter format
183
+ - Placeholder UI includes dark mode styling per FEATURE-001 spec
184
+
185
+ ready_for_review: true
@@ -0,0 +1,133 @@
1
+ ---
2
+ id: TASK-anvil-001
3
+ title: "Dashboard Frontend MVP Implementation"
4
+ type: task
5
+ priority: critical
6
+ status: completed
7
+ created_at: 2026-01-16T21:30:00Z
8
+ created_by: planning-hub
9
+ assigned_to: anvil
10
+ parent_feature: FEATURE-001
11
+ completed_at: 2026-01-16T22:15:00Z
12
+ ---
13
+
14
+ # Dashboard Frontend MVP Implementation
15
+
16
+ ## Summary
17
+
18
+ Build the complete frontend UI for the Vibe Forge Dashboard based on Pixel's wireframes.
19
+
20
+ ## Acceptance Criteria
21
+
22
+ - [x] Three-panel layout: Tasks, Agents, Notifications
23
+ - [x] Issues panel with dispatch buttons (the killer feature)
24
+ - [x] Dark mode by default with light mode toggle
25
+ - [x] CSS variables for theming per Pixel's spec
26
+ - [x] WebSocket connection for real-time updates
27
+ - [x] Keyboard shortcuts (1-4 panels, j/k nav, d dispatch)
28
+ - [x] Responsive design (desktop, tablet, mobile)
29
+ - [x] Accessible (ARIA labels, focus indicators, keyboard nav)
30
+ - [x] Loading, empty, and error states
31
+ - [x] Dispatch confirmation modal
32
+ - [x] Toast notifications for feedback
33
+
34
+ ## Completion Summary
35
+
36
+ completed_by: anvil
37
+ completed_at: 2026-01-16T22:15:00Z
38
+ duration_minutes: 45
39
+
40
+ ### Files Created
41
+
42
+ - `bin/dashboard/public/index.html` (created - 335 lines)
43
+ - Semantic HTML5 structure with ARIA landmarks
44
+ - Skip links for accessibility
45
+ - Connection lost banner
46
+ - Header with logo and theme toggle
47
+ - Four panels: Tasks, Agents, Notifications, Issues
48
+ - Dispatch confirmation modal
49
+ - Keyboard shortcuts help modal
50
+ - Toast notification container
51
+ - Mobile tab bar navigation
52
+
53
+ - `bin/dashboard/public/style.css` (created - 1100+ lines)
54
+ - CSS custom properties for theming (dark mode default)
55
+ - Light mode color scheme
56
+ - Full WCAG AA compliant contrast ratios
57
+ - Agent-specific colors per Pixel's spec
58
+ - Issue category colors
59
+ - Card, panel, and modal styles
60
+ - Button variants (primary, secondary, dispatch)
61
+ - Loading skeletons with shimmer animation
62
+ - Empty and error states
63
+ - Toast notifications
64
+ - Responsive breakpoints (desktop, tablet, mobile)
65
+ - Focus indicators for keyboard navigation
66
+ - Print styles
67
+
68
+ - `bin/dashboard/public/app.js` (created - 900+ lines)
69
+ - WebSocket connection with auto-reconnect
70
+ - API fetch functions for tasks, agents, issues
71
+ - Dispatch flow implementation (POST /api/dispatch)
72
+ - Dynamic rendering of all panels
73
+ - Task filtering by status (pending, in-progress, review, done)
74
+ - Keyboard shortcuts (1-4 panel focus, j/k navigation, d dispatch, t theme, ? help)
75
+ - Theme toggle with localStorage persistence
76
+ - Toast notification system
77
+ - Focus trap for modals
78
+ - Mobile panel switching
79
+ - Mock issues data for demonstration
80
+
81
+ ### Key Features Implemented
82
+
83
+ 1. **Four-Panel Layout**
84
+ - Tasks panel with Kanban-style filters
85
+ - Agents panel with status indicators
86
+ - Notifications panel with grouping by date
87
+ - Issues panel (the killer feature) with dispatch buttons
88
+
89
+ 2. **Dispatch Flow**
90
+ - Click [Dispatch Agent] on any issue
91
+ - Confirmation modal shows task preview
92
+ - POST to /api/dispatch on confirm
93
+ - Success toast notification
94
+ - Issue removed from panel
95
+ - Task appears in Tasks panel via WebSocket
96
+
97
+ 3. **Dark Mode**
98
+ - Default theme per Pixel's spec
99
+ - CSS variables for all colors
100
+ - 200ms transition on theme change
101
+ - Theme persisted in localStorage
102
+
103
+ 4. **Keyboard Shortcuts**
104
+ - `1-4` to focus panels
105
+ - `j/k` to navigate items
106
+ - `Enter` to expand/select
107
+ - `d` to dispatch selected issue
108
+ - `r` to refresh current panel
109
+ - `t` to toggle theme
110
+ - `?` to show help modal
111
+ - `Escape` to close modals
112
+
113
+ 5. **Responsive Design**
114
+ - Desktop: 3-column top row, full-width issues
115
+ - Tablet: 2-column layout
116
+ - Mobile: Single panel with bottom tab bar
117
+
118
+ 6. **Accessibility**
119
+ - Skip links
120
+ - ARIA landmarks and labels
121
+ - Focus indicators
122
+ - Screen reader announcements
123
+ - Keyboard navigation throughout
124
+
125
+ ### Notes
126
+
127
+ - Mock issues data provided for demonstration since /api/issues endpoint may not exist yet
128
+ - WebSocket reconnects automatically with exponential backoff
129
+ - Connection banner shows after 3 failed reconnect attempts
130
+ - All animations follow Pixel's timing guidelines (150ms-300ms)
131
+ - Used vanilla JS to keep bundle lightweight per requirements
132
+
133
+ ready_for_review: true
@@ -0,0 +1,89 @@
1
+ ---
2
+ id: review-bmad-aegis
3
+ title: "BMAD vs Vibe Forge: Security Review"
4
+ type: review
5
+ priority: high
6
+ status: completed
7
+ assigned_to: aegis
8
+ blocked_by: []
9
+ depends_on: []
10
+ created: 2026-03-31T00:00:00-05:00
11
+ updated: 2026-03-31T00:00:00-05:00
12
+ estimated_complexity: medium
13
+ epic: BMAD-REVIEW
14
+ ---
15
+
16
+ # Context
17
+
18
+ ## Background
19
+ We are doing a comprehensive comparison of Vibe Forge (this framework) against BMAD-METHOD (https://github.com/bmad-code-org/BMAD-METHOD) to identify gaps and improvements to bring into Vibe Forge.
20
+
21
+ You are Aegis - the security specialist. Your job is to review BOTH frameworks through the lens of: security posture, agent authorization boundaries, prompt injection risks, secret handling, and how well each framework prevents agents from doing harmful things.
22
+
23
+ ## Your Review Focus
24
+ 1. **Agent authorization** - Does BMAD have a better model for what agents are/aren't allowed to do? How are boundaries enforced?
25
+ 2. **Prompt injection** - Are there prompt injection risks in either framework's agent design? Can a malicious task file compromise an agent?
26
+ 3. **Secret handling** - How does each framework handle secrets, tokens, API keys in agent context?
27
+ 4. **Shell script security** - Review Vibe Forge's bash scripts for injection vulnerabilities, unsafe evals, etc.
28
+ 5. **Task file trust** - Should agents trust task files completely? What validation exists?
29
+ 6. **Least privilege** - Does BMAD enforce least privilege for agents better than Vibe Forge?
30
+ 7. **Audit trail** - Does BMAD have better logging/auditing of agent actions?
31
+ 8. **Security agent design** - Compare your own personality to BMAD's security guidance. What's missing?
32
+
33
+ ## Files to Read
34
+ - /agents/aegis/personality.md (your own definition)
35
+ - /bin/forge-daemon.sh (check for security issues)
36
+ - /bin/lib/config.sh (already has security notes - evaluate them)
37
+ - /bin/forge-spawn.sh (validate security handling)
38
+ - /config/agents.json
39
+ - Then fetch and read BMAD: https://github.com/bmad-code-org/BMAD-METHOD
40
+
41
+ ---
42
+
43
+ # Acceptance Criteria
44
+
45
+ - [ ] Read all scripts with a security focus
46
+ - [ ] Fetch and review BMAD repo
47
+ - [ ] Identify any actual security vulnerabilities in Vibe Forge scripts
48
+ - [ ] Compare agent authorization models
49
+ - [ ] Write findings to tasks/review/bmad-review-aegis.md
50
+
51
+ ---
52
+
53
+ # Agent Instructions
54
+
55
+ Aegis: Assume breach. Question everything. Find the vulnerability that everyone else missed. Pay special attention to the eval in config.sh and any other dynamic execution.
56
+
57
+ **Boundaries:**
58
+ - DO read: all scripts, agent files, BMAD repo (via web fetch)
59
+ - DO write: tasks/review/bmad-review-aegis.md
60
+ - DO NOT modify: any framework files
61
+
62
+ **On Completion:**
63
+ 1. Write your findings to tasks/review/bmad-review-aegis.md
64
+ 2. Move this file to /tasks/completed/
65
+
66
+ ---
67
+
68
+ # Output Expected
69
+
70
+ - [ ] tasks/review/bmad-review-aegis.md created with findings
71
+ - [ ] Any actual vulnerabilities identified
72
+ - [ ] Agent authorization model comparison
73
+
74
+ ---
75
+
76
+ # Completion Summary
77
+ ```yaml
78
+ completed_by: aegis
79
+ completed_at: 2026-03-31T00:00:00Z
80
+ files_created:
81
+ - tasks/review/bmad-review-aegis.md
82
+ notes: >
83
+ 1 HIGH (CI script injection via github.head_ref), 1 MEDIUM (eval in config.sh),
84
+ 1 MEDIUM (dangerous eval example in json.sh comment), 3 LOW findings.
85
+ BMAD has no security specialist agent and minimal shell scripting.
86
+ Vibe Forge shell scripts are significantly more security-conscious than BMAD.
87
+ Both frameworks share the same fundamental weakness: agent authorization is
88
+ entirely behavioral (prompt-based), not technically enforced.
89
+ ```
@@ -0,0 +1,80 @@
1
+ ---
2
+ id: review-bmad-anvil
3
+ title: "BMAD vs Vibe Forge: Frontend/UI Tooling Review"
4
+ type: review
5
+ priority: high
6
+ status: completed
7
+ assigned_to: anvil
8
+ blocked_by: []
9
+ depends_on: []
10
+ created: 2026-03-31T00:00:00-05:00
11
+ updated: 2026-03-31T00:00:00-05:00
12
+ estimated_complexity: medium
13
+ epic: BMAD-REVIEW
14
+ ---
15
+
16
+ # Context
17
+
18
+ ## Background
19
+ We are doing a comprehensive comparison of Vibe Forge (this framework) against BMAD-METHOD (https://github.com/bmad-code-org/BMAD-METHOD) to identify gaps and improvements to bring into Vibe Forge.
20
+
21
+ You are Anvil - the frontend dev perspective. Your job is to review BOTH frameworks specifically through the lens of: developer experience, UI tooling, dashboard design, frontend agent capabilities, and how well each framework supports frontend-heavy projects.
22
+
23
+ ## Your Review Focus
24
+ 1. **Dashboard** - How does Vibe Forge's dashboard (bin/dashboard/) compare in concept/quality to anything BMAD provides for UI?
25
+ 2. **Frontend agent** - Compare Anvil's (your own) personality/capabilities vs BMAD's equivalent frontend agent. What does BMAD do better?
26
+ 3. **Frontend project support** - How well does each framework scaffold and support frontend projects (React, Vue, etc.)?
27
+ 4. **Developer UX** - Which framework has better DX for a frontend developer using it day-to-day?
28
+ 5. **Templates** - Are there frontend-specific templates in BMAD that Vibe Forge lacks?
29
+ 6. **Component/UI patterns** - Does BMAD have opinions on UI architecture that Vibe Forge should adopt?
30
+
31
+ ## Files to Read
32
+ - /agents/anvil/personality.md (your own definition)
33
+ - /agents/pixel/personality.md (if exists - UX agent)
34
+ - /bin/dashboard/ (current dashboard implementation)
35
+ - /config/agents.json (agent config)
36
+ - Then fetch and read BMAD: https://github.com/bmad-code-org/BMAD-METHOD
37
+
38
+ ---
39
+
40
+ # Acceptance Criteria
41
+
42
+ - [ ] Read your own personality file and BMAD's equivalent agent
43
+ - [ ] Fetch and review the BMAD repo
44
+ - [ ] Identify 3-5 specific improvements Vibe Forge should make for frontend support
45
+ - [ ] Call out anything BMAD does worse (so we don't copy mistakes)
46
+ - [ ] Write findings to tasks/review/bmad-review-anvil.md
47
+
48
+ ---
49
+
50
+ # Agent Instructions
51
+
52
+ Anvil: Review both frameworks from a frontend developer's perspective. Be specific - reference actual files and line numbers. Don't just say "BMAD is better at X" - show WHY with examples from the actual files.
53
+
54
+ **Boundaries:**
55
+ - DO read: all agent files, dashboard code, BMAD repo (via web fetch)
56
+ - DO write: tasks/review/bmad-review-anvil.md (your findings report)
57
+ - DO NOT modify: any framework files (read-only review)
58
+
59
+ **On Completion:**
60
+ 1. Write your findings to tasks/review/bmad-review-anvil.md
61
+ 2. Move this file to /tasks/completed/
62
+
63
+ ---
64
+
65
+ # Output Expected
66
+
67
+ - [ ] tasks/review/bmad-review-anvil.md created with findings
68
+ - [ ] Specific, actionable improvement recommendations
69
+ - [ ] Honest assessment of Vibe Forge weaknesses
70
+
71
+ ---
72
+
73
+ # Completion Summary
74
+ ```yaml
75
+ completed_by: anvil
76
+ completed_at: 2026-04-02T00:00:00-05:00
77
+ files_created:
78
+ - tasks/review/bmad-review-anvil.md
79
+ notes: "Dashboard code reviewed in full (27 files). BMAD UX designer agent (Sally) and create-ux-design skill fetched and compared. 5 actionable recommendations produced."
80
+ ```
@@ -0,0 +1,81 @@
1
+ ---
2
+ id: review-bmad-crucible
3
+ title: "BMAD vs Vibe Forge: Quality & Testing Framework Review"
4
+ type: review
5
+ priority: high
6
+ status: completed
7
+ assigned_to: crucible
8
+ blocked_by: []
9
+ depends_on: []
10
+ created: 2026-03-31T00:00:00-05:00
11
+ updated: 2026-03-31T00:00:00-05:00
12
+ estimated_complexity: medium
13
+ epic: BMAD-REVIEW
14
+ ---
15
+
16
+ # Context
17
+
18
+ ## Background
19
+ We are doing a comprehensive comparison of Vibe Forge (this framework) against BMAD-METHOD (https://github.com/bmad-code-org/BMAD-METHOD) to identify gaps and improvements to bring into Vibe Forge.
20
+
21
+ You are Crucible - the QA/testing specialist. Your job is to review BOTH frameworks through the lens of: quality gates, testing philosophy, validation mechanisms, acceptance criteria design, and how well each framework enforces quality.
22
+
23
+ ## Your Review Focus
24
+ 1. **QA agent** - Compare your own personality/capabilities vs BMAD's equivalent. What does BMAD's QA approach do that yours doesn't?
25
+ 2. **Quality gates** - Does BMAD have explicit quality gates or checkpoints that Vibe Forge lacks?
26
+ 3. **Acceptance criteria patterns** - How does BMAD structure acceptance criteria in tasks vs Vibe Forge's template? What makes BMAD's criteria more testable?
27
+ 4. **Test coverage enforcement** - Does BMAD have mechanisms to ensure agents write tests? How does it compare to Vibe Forge?
28
+ 5. **Review workflow** - How does Sentinel (code reviewer) compare to BMAD's review equivalent?
29
+ 6. **Definition of Done** - Does BMAD have a more rigorous "done" standard than Vibe Forge?
30
+ 7. **Bug tracking** - How does each framework handle bug reports, reproduction steps, and regression prevention?
31
+
32
+ ## Files to Read
33
+ - /agents/crucible/personality.md (your own definition)
34
+ - /agents/sentinel/personality.md (reviewer)
35
+ - /config/task-template.md (look at acceptance criteria section)
36
+ - /tests/ (existing tests for the framework itself)
37
+ - Then fetch and read BMAD: https://github.com/bmad-code-org/BMAD-METHOD
38
+
39
+ ---
40
+
41
+ # Acceptance Criteria
42
+
43
+ - [ ] Read your own personality file and BMAD's QA equivalent
44
+ - [ ] Fetch and review the BMAD repo
45
+ - [ ] Identify quality gate gaps in Vibe Forge
46
+ - [ ] Evaluate how acceptance criteria compares
47
+ - [ ] Write findings to tasks/review/bmad-review-crucible.md
48
+
49
+ ---
50
+
51
+ # Agent Instructions
52
+
53
+ Crucible: Be skeptical of both frameworks. Find the holes. What happens when an agent marks a task complete without writing tests? What prevents bad PRs from merging? Look for the absence of safeguards, not just their presence.
54
+
55
+ **Boundaries:**
56
+ - DO read: all agent files, task templates, tests/, BMAD repo (via web fetch)
57
+ - DO write: tasks/review/bmad-review-crucible.md
58
+ - DO NOT modify: any framework files
59
+
60
+ **On Completion:**
61
+ 1. Write your findings to tasks/review/bmad-review-crucible.md
62
+ 2. Move this file to /tasks/completed/
63
+
64
+ ---
65
+
66
+ # Output Expected
67
+
68
+ - [ ] tasks/review/bmad-review-crucible.md created with findings
69
+ - [ ] Quality gate gap analysis
70
+ - [ ] Specific recommendations for enforcement mechanisms
71
+
72
+ ---
73
+
74
+ # Completion Summary
75
+ ```yaml
76
+ completed_by: crucible
77
+ completed_at: 2026-03-31T00:00:00Z
78
+ files_created:
79
+ - tasks/review/bmad-review-crucible.md
80
+ notes: "Reviewed Crucible vs Quinn, Sentinel vs BMAD code review, DoD, test enforcement, adversarial review skills, automated gates. 10 gaps identified, ranked by severity. Critical gaps: no formal DoD, no automated quality gates."
81
+ ```