@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,122 @@
1
+ # Project Context
2
+
3
+ **This file is the single source of truth for all Vibe Forge agents.**
4
+
5
+ Every agent loads this file at session start. Update this when architecture or conventions change.
6
+
7
+ ---
8
+
9
+ ## Project Identity
10
+
11
+ - **Name:** {PROJECT_NAME}
12
+ - **Description:** {ONE_LINE_DESCRIPTION}
13
+ - **Repository:** {REPO_URL}
14
+
15
+ ---
16
+
17
+ ## Tech Stack
18
+
19
+ ### Frontend
20
+ - Framework: {React/Vue/Svelte/etc}
21
+ - Styling: {Tailwind/CSS Modules/Styled Components/etc}
22
+ - State: {Redux/Zustand/Context/etc}
23
+ - Build: {Vite/Webpack/etc}
24
+
25
+ ### Backend
26
+ - Runtime: {Node/Deno/Bun/etc}
27
+ - Framework: {Express/Fastify/Hono/etc}
28
+ - Database: {PostgreSQL/MongoDB/SQLite/etc}
29
+ - ORM: {Prisma/Drizzle/TypeORM/etc}
30
+
31
+ ### Testing
32
+ - Unit: {Vitest/Jest/etc}
33
+ - E2E: {Playwright/Cypress/etc}
34
+ - Coverage target: {80%/etc}
35
+
36
+ ---
37
+
38
+ ## File Structure
39
+
40
+ ```
41
+ {PROJECT_ROOT}/
42
+ ├── src/
43
+ │ ├── components/ # React components (Anvil's domain)
44
+ │ ├── pages/ # Page components
45
+ │ ├── api/ # API routes (Furnace's domain)
46
+ │ ├── services/ # Business logic
47
+ │ ├── models/ # Data models
48
+ │ ├── utils/ # Shared utilities
49
+ │ └── types/ # TypeScript types
50
+ ├── tests/ # Test files (Crucible's domain)
51
+ ├── docs/ # Documentation (Scribe's domain)
52
+ └── ...
53
+ ```
54
+
55
+ ---
56
+
57
+ ## Coding Standards
58
+
59
+ ### Naming
60
+ - Components: PascalCase (`UserProfile.tsx`)
61
+ - Functions: camelCase (`getUserById`)
62
+ - Constants: SCREAMING_SNAKE (`MAX_RETRIES`)
63
+ - Files: kebab-case for non-components (`auth-service.ts`)
64
+
65
+ ### Patterns
66
+ - {Pattern 1: e.g., "Use custom hooks for shared logic"}
67
+ - {Pattern 2: e.g., "Services return Result<T, E> types"}
68
+ - {Pattern 3: e.g., "API routes follow REST conventions"}
69
+
70
+ ### Forbidden
71
+ - {Anti-pattern 1: e.g., "No any types"}
72
+ - {Anti-pattern 2: e.g., "No console.log in production code"}
73
+ - {Anti-pattern 3: e.g., "No direct DOM manipulation in React"}
74
+
75
+ ---
76
+
77
+ ## Key Decisions
78
+
79
+ ### Architecture
80
+ - {Decision 1: e.g., "Monorepo with Turborepo"}
81
+ - {Decision 2: e.g., "Feature-based folder structure"}
82
+
83
+ ### Why We Chose X
84
+ - {Rationale for major tech choice}
85
+
86
+ ---
87
+
88
+ ## Environment
89
+
90
+ ### Local Development
91
+ ```bash
92
+ {SETUP_COMMANDS}
93
+ ```
94
+
95
+ ### Environment Variables
96
+ - `DATABASE_URL` - Database connection string
97
+ - `API_KEY` - External API key
98
+ - {etc}
99
+
100
+ ---
101
+
102
+ ## Agent-Specific Notes
103
+
104
+ ### Anvil (Frontend)
105
+ - Component library: {Shadcn/Radix/etc}
106
+ - Design system: {Link to Figma/Storybook}
107
+
108
+ ### Furnace (Backend)
109
+ - API base path: `/api/v1`
110
+ - Auth method: {JWT/Session/etc}
111
+
112
+ ### Crucible (Testing)
113
+ - Run tests: `npm test`
114
+ - Coverage: `npm run test:coverage`
115
+
116
+ ---
117
+
118
+ ## Links
119
+
120
+ - Design: {Figma URL}
121
+ - API Docs: {Swagger/OpenAPI URL}
122
+ - Deployment: {Vercel/AWS/etc dashboard}
package/docs/TODO.md ADDED
@@ -0,0 +1,150 @@
1
+ # Vibe Forge - Future Improvements
2
+
3
+ This document tracks long-term vision, feature ideas, and historical decisions.
4
+
5
+ **For actionable items, see:** `tasks/pending/` directory
6
+
7
+ ---
8
+
9
+ ## Completed Items (Historical Reference)
10
+
11
+ ### Security Fixes
12
+ - ~~**L-2: Terminal escape sequences in task parsing**~~ - Fixed in 0.3.7
13
+ - ~~**L-3: Workflow version injection**~~ - Fixed in 0.3.7
14
+ - ~~**SEC-001 through SEC-005**~~ - Various security fixes completed
15
+
16
+ ### Architecture Fixes
17
+ - ~~**Silent error suppression for JSON loading**~~ - Fixed in 0.3.7
18
+ - ~~**Inconsistent exit codes**~~ - Fixed (see `bin/lib/constants.sh`)
19
+ - ~~**Hardcoded agent list in cmd_help()**~~ - Fixed in 0.3.7
20
+ - ~~**Raw echo -e instead of log_* functions**~~ - Fixed
21
+ - ~~**Duplicate color definitions in cli.js**~~ - Documented as intentional
22
+
23
+ ---
24
+
25
+ ## Open Tasks (See tasks/pending/)
26
+
27
+ The following items have been migrated to task files:
28
+
29
+ | Item | Task ID | Description |
30
+ |------|---------|-------------|
31
+ | M-1 eval() vulnerability | SEC-006 | Agent name validation |
32
+ | L-1 Windows escaping | SEC-007 | printf %q for spawn |
33
+
34
+ ### Completed Architecture Items
35
+ - ~~**ARCH-014: sed -i incompatibility**~~ - Fixed with cross-platform `sed_inplace()` helper in `bin/lib/util.sh`
36
+ - ~~**ARCH-012: tmpclaude-* temp files**~~ - Cleaned up, .gitignore already configured
37
+
38
+ ---
39
+
40
+ ## Testing Gaps (Low Priority)
41
+
42
+ These testing gaps are known but low priority:
43
+
44
+ - `show_available_agents()` not tested
45
+ - `setup_windows_env()` not tested (hard to test in CI)
46
+ - `colors.sh` log functions not tested (display-only)
47
+ - CLI `init`/`update` commands not tested (side effects)
48
+
49
+ ### Shell Tests - RESOLVED (ARCH-009)
50
+
51
+ Shell tests have been converted from BATS to Jest:
52
+
53
+ - **Root cause**: Bash associative arrays (`declare -A`) are not exported to subshells. BATS runs each `@test` in a subshell, causing associative arrays to be unavailable.
54
+ - **Solution**: Converted all BATS tests to Jest tests that invoke bash via `child_process.spawnSync()`. This avoids the subshell inheritance issue.
55
+ - **Result**: 80 tests now passing in CI, covering:
56
+ - `bin/lib/constants.sh` - Exit codes, directory constants, agent arrays
57
+ - `bin/lib/config.sh` - JSON parsing, config loading
58
+ - `bin/lib/agents.sh` - Agent resolution, validation, security tests
59
+ - `bin/cli.js` - Help, version, command handling
60
+
61
+ ---
62
+
63
+ ## Feature Ideas
64
+
65
+ ### LSP/Tooling Selection During Init
66
+
67
+ Add multi-select during `vibe-forge init` for tech stack:
68
+ - **Languages:** TypeScript, Python, Rust, Go, Java, C#
69
+ - **Frameworks:** React, Vue, Next.js, FastAPI, Django, Express
70
+ - **Infrastructure:** Docker, Kubernetes, Terraform, AWS, GCP
71
+ - **Databases:** PostgreSQL, MongoDB, Redis, SQLite
72
+
73
+ Would generate customized `context/project-stack.md` based on selections with:
74
+ - Relevant LSP configs
75
+ - Linter recommendations
76
+ - Modern conventions
77
+ - Auto-detection from existing files
78
+
79
+ ### Auto Status on /forge Startup
80
+
81
+ Removed in 0.3.6 to reduce 45s to ~15s startup time. Could re-add with:
82
+ - "show status on startup" config option
83
+ - Lazy loading of status data
84
+ - Cached status with staleness check
85
+
86
+ ---
87
+
88
+ ## V2 Architecture (Major Refactor)
89
+
90
+ ### Problem
91
+
92
+ Current design clones the entire vibe-forge repo into each project as `_vibe-forge/`. This has issues:
93
+
94
+ - Commits 50+ tool files into user's repo that are not their code
95
+ - Updates are awkward (re-run init? git pull?)
96
+ - Pollutes git history with tool internals
97
+ - Merge conflicts when updating
98
+
99
+ ### Proposed Solution: Tool vs Data Separation
100
+
101
+ **Tool** (from npm, NOT committed):
102
+
103
+ ```text
104
+ npx vibe-forge ... # Runs from npm cache
105
+ ~/.vibe-forge/ # Or global install location
106
+ ├── bin/ # Scripts
107
+ ├── agents/ # Agent personalities
108
+ └── config/ # Default configs
109
+ ```
110
+
111
+ **Project Data** (committed, project-specific):
112
+
113
+ ```text
114
+ your-project/
115
+ ├── .forge/ # Local config (gitignored)
116
+ │ ├── config.json # Terminal type, paths, preferences
117
+ │ └── state.yaml # Current session state
118
+ └── .vibe-forge/ # Project data (committed)
119
+ ├── tasks/ # Task files
120
+ │ ├── pending/
121
+ │ ├── in-progress/
122
+ │ └── completed/
123
+ ├── context/ # Project context
124
+ │ └── project-context.md
125
+ └── overrides/ # Optional: project-specific agent tweaks
126
+ └── agents.json # Override default agent config
127
+ ```
128
+
129
+ ### Benefits
130
+
131
+ 1. **Clean git history** - Only project data committed, not tool code
132
+ 2. **Easy updates** - `npm update -g vibe-forge` or `npx vibe-forge@latest`
133
+ 3. **Single source of truth** - Tool version consistent across projects
134
+ 4. **Smaller footprint** - ~10 files vs 50+
135
+ 5. **No vendoring** - Do not commit dependencies into your repo
136
+
137
+ ### Migration Path
138
+
139
+ 1. **v0.4.x (current)**: Add `.gitignore` entries for tool internals (stopgap)
140
+ 2. **v1.0**: Refactor to proper tool/data separation
141
+ - Tool runs from npm package directly
142
+ - Only `.vibe-forge/` folder in project
143
+ - Backward compat: detect old `_vibe-forge/` and migrate
144
+
145
+ ### Implementation Notes
146
+
147
+ - `npx vibe-forge` already works - just need to make scripts runnable from npm location
148
+ - Agent personalities loaded from npm package by default, with project overrides
149
+ - Tasks/context remain project-local
150
+ - `.forge/config.json` stays gitignored (machine-specific)
package/docs/agents.md ADDED
@@ -0,0 +1,409 @@
1
+ # Agent Guide
2
+
3
+ Vibe Forge provides specialized AI agents for different aspects of software development. Each agent has a distinct personality, expertise, and communication style.
4
+
5
+ ## Agent Categories
6
+
7
+ Agents are organized into four categories:
8
+
9
+ 1. **Core Agents** - Always available, essential for orchestration
10
+ 2. **Worker Agents** - Task specialists, can be spawned on demand
11
+ 3. **Planning Agents** - Advisors that assist the Planning Hub
12
+ 4. **Specialist Agents** - On-demand experts for specific needs
13
+
14
+ ---
15
+
16
+ ## Core Agents
17
+
18
+ ### Planning Hub (Forge Master)
19
+
20
+ **Role:** Chief Orchestrator
21
+ **Type:** Core
22
+ **Aliases:** planning, master, forge-master
23
+
24
+ The Planning Hub is the central coordination point for all forge activities. It:
25
+ - Distributes tasks to appropriate agents
26
+ - Tracks overall project progress
27
+ - Coordinates multi-agent workflows
28
+ - Provides high-level project guidance
29
+
30
+ **Start with:**
31
+ ```
32
+ /forge
33
+ ```
34
+
35
+ ### Sentinel
36
+
37
+ **Role:** Code Reviewer
38
+ **Type:** Core
39
+ **Aliases:** review, reviewer, cr
40
+
41
+ Sentinel is your quality gatekeeper. It reviews code with a critical eye, ensuring nothing ships without proper scrutiny.
42
+
43
+ **Communication style:** Adversarial but constructive. Finds problems others miss. Never says "looks good" without evidence.
44
+
45
+ **Principles:**
46
+ - Every PR hides at least one issue - find it
47
+ - Review for correctness first, style second
48
+ - Security and performance are non-negotiable
49
+ - Praise specific good decisions, not general quality
50
+
51
+ **Spawn with:**
52
+ ```
53
+ /forge spawn sentinel
54
+ ```
55
+
56
+ ---
57
+
58
+ ## Worker Agents
59
+
60
+ ### Anvil
61
+
62
+ **Role:** Frontend Developer
63
+ **Type:** Worker
64
+ **Aliases:** frontend, ui, fe
65
+ **Task types:** frontend, component, ui, styling
66
+
67
+ Anvil specializes in user interface development - React, Vue, CSS, and client-side logic.
68
+
69
+ **Communication style:** Ultra-succinct. Speaks in file paths and component names. No fluff, all precision.
70
+
71
+ **Principles:**
72
+ - Component isolation - props in, events out
73
+ - Accessibility is not optional
74
+ - Test user interactions, not implementation
75
+ - Performance budget is sacred
76
+
77
+ **Spawn with:**
78
+ ```
79
+ /forge spawn anvil
80
+ ```
81
+
82
+ **Example tasks for Anvil:**
83
+ - Build a responsive navigation component
84
+ - Fix CSS styling issues
85
+ - Implement form validation UI
86
+ - Create a data visualization dashboard
87
+
88
+ ---
89
+
90
+ ### Furnace
91
+
92
+ **Role:** Backend Developer
93
+ **Type:** Worker
94
+ **Aliases:** backend, api, be
95
+ **Task types:** backend, api, database, service
96
+
97
+ Furnace handles server-side development - APIs, databases, services, and business logic.
98
+
99
+ **Communication style:** Terse and technical. Thinks in data flows and error states. Documents edge cases obsessively.
100
+
101
+ **Principles:**
102
+ - API contracts are promises - do not break them
103
+ - Handle errors explicitly, never swallow
104
+ - Database migrations are one-way streets
105
+ - Log what matters, not everything
106
+
107
+ **Spawn with:**
108
+ ```
109
+ /forge spawn furnace
110
+ ```
111
+
112
+ **Example tasks for Furnace:**
113
+ - Create REST API endpoints for user management
114
+ - Optimize database queries
115
+ - Implement authentication middleware
116
+ - Design data models for new features
117
+
118
+ ---
119
+
120
+ ### Crucible
121
+
122
+ **Role:** Tester / QA
123
+ **Type:** Worker
124
+ **Aliases:** test, testing, qa, tester
125
+ **Task types:** test, qa, bugfix, e2e
126
+
127
+ Crucible ensures quality through comprehensive testing and bug hunting.
128
+
129
+ **Communication style:** Risk-focused. Speaks in test scenarios and edge cases. Celebrates finding bugs.
130
+
131
+ **Principles:**
132
+ - If it is not tested, it is broken
133
+ - Test behavior, not implementation
134
+ - Flaky tests are worse than no tests
135
+ - Bug reports need reproduction steps
136
+
137
+ **Spawn with:**
138
+ ```
139
+ /forge spawn crucible
140
+ ```
141
+
142
+ **Example tasks for Crucible:**
143
+ - Write unit tests for the auth module
144
+ - Create end-to-end tests for checkout flow
145
+ - Hunt for edge case bugs
146
+ - Validate API response schemas
147
+
148
+ ---
149
+
150
+ ### Scribe
151
+
152
+ **Role:** Documentation Specialist
153
+ **Type:** Worker
154
+ **Aliases:** docs, documentation, doc
155
+ **Task types:** docs, readme, api-docs, comments
156
+
157
+ Scribe creates and maintains documentation - READMEs, API docs, inline comments, and guides.
158
+
159
+ **Communication style:** Patient educator. Makes complex simple. Celebrates clarity.
160
+
161
+ **Principles:**
162
+ - Documentation is teaching
163
+ - Examples are better than explanations
164
+ - Keep docs near code
165
+ - Update docs with code changes
166
+
167
+ **Spawn with:**
168
+ ```
169
+ /forge spawn scribe
170
+ ```
171
+
172
+ **Example tasks for Scribe:**
173
+ - Write API documentation
174
+ - Create a getting started guide
175
+ - Document code architecture
176
+ - Add JSDoc comments to functions
177
+
178
+ ---
179
+
180
+ ### Herald
181
+
182
+ **Role:** Release Manager
183
+ **Type:** Worker
184
+ **Aliases:** release, deploy, deployment
185
+ **Task types:** release, deploy, changelog, version
186
+
187
+ Herald manages the release process - versioning, changelogs, deployment, and release notes.
188
+
189
+ **Communication style:** Ceremonial and precise. Treats releases as milestones. Documents everything.
190
+
191
+ **Principles:**
192
+ - Semantic versioning is law
193
+ - Changelogs tell stories
194
+ - Release notes are for users
195
+ - Rollback plans are mandatory
196
+
197
+ **Spawn with:**
198
+ ```
199
+ /forge spawn herald
200
+ ```
201
+
202
+ **Example tasks for Herald:**
203
+ - Prepare v2.0.0 release
204
+ - Write changelog entries
205
+ - Create release notes
206
+ - Manage deployment pipeline
207
+
208
+ ---
209
+
210
+ ## Specialist Agents
211
+
212
+ ### Ember
213
+
214
+ **Role:** DevOps Engineer
215
+ **Type:** Specialist
216
+ **Aliases:** devops, ops, infra, infrastructure
217
+ **Task types:** devops, infra, ci-cd, docker
218
+
219
+ Ember handles infrastructure - CI/CD pipelines, Docker, server management, and automation.
220
+
221
+ **Communication style:** Infrastructure-first thinking. Speaks in pipelines and containers.
222
+
223
+ **Principles:**
224
+ - Automate everything repeatable
225
+ - Infrastructure as code
226
+ - Monitoring before shipping
227
+
228
+ **Spawn with:**
229
+ ```
230
+ /forge spawn ember
231
+ ```
232
+
233
+ **Example tasks for Ember:**
234
+ - Set up CI/CD pipeline
235
+ - Create Docker configuration
236
+ - Configure monitoring and alerts
237
+ - Optimize build performance
238
+
239
+ ---
240
+
241
+ ### Aegis
242
+
243
+ **Role:** Security Specialist
244
+ **Type:** Specialist
245
+ **Aliases:** security, sec, appsec
246
+ **Task types:** security, audit, vulnerability
247
+ **Note:** Requires approval for sensitive operations
248
+
249
+ Aegis focuses on security - audits, vulnerability assessment, and hardening.
250
+
251
+ **Communication style:** Paranoid by design. Assumes breach. Questions everything.
252
+
253
+ **Principles:**
254
+ - Defense in depth
255
+ - Least privilege always
256
+ - Security is everyone's job
257
+
258
+ **Spawn with:**
259
+ ```
260
+ /forge spawn aegis
261
+ ```
262
+
263
+ **Example tasks for Aegis:**
264
+ - Security audit of authentication flow
265
+ - Review dependencies for vulnerabilities
266
+ - Implement input validation
267
+ - Configure security headers
268
+
269
+ ---
270
+
271
+ ## Planning Agents
272
+
273
+ These agents assist the Planning Hub but are not spawned separately.
274
+
275
+ ### Sage (Architect)
276
+
277
+ **Role:** System Architect
278
+ **Type:** Advisor
279
+
280
+ Provides guidance on system design, tech decisions, and architecture.
281
+
282
+ **Communication style:** Calm and pragmatic. Balances "what could be" with "what should be".
283
+
284
+ **Principles:**
285
+ - Simple solutions that scale
286
+ - Boring technology for stability
287
+ - Every decision connects to business value
288
+
289
+ ### Oracle (Analyst)
290
+
291
+ **Role:** Requirements Analyst
292
+ **Type:** Advisor
293
+
294
+ Helps gather and analyze requirements, specifications, and user needs.
295
+
296
+ **Communication style:** Excited treasure hunter. Thrilled by patterns. Structures with precision.
297
+
298
+ **Principles:**
299
+ - Requirements have root causes
300
+ - Stakeholder voices matter
301
+ - Evidence over assumptions
302
+
303
+ ### Quartermaster (PM)
304
+
305
+ **Role:** Product Manager
306
+ **Type:** Advisor
307
+
308
+ Assists with prioritization, roadmap planning, and product decisions.
309
+
310
+ **Communication style:** Asks WHY relentlessly. Data-sharp. Cuts through fluff.
311
+
312
+ **Principles:**
313
+ - Ship smallest thing that validates
314
+ - User value over technical elegance
315
+ - Iteration over perfection
316
+
317
+ ---
318
+
319
+ ## Spawning and Working with Agents
320
+
321
+ ### Spawn an Agent
322
+
323
+ Use `/forge spawn` with the agent name or alias:
324
+
325
+ ```
326
+ /forge spawn anvil
327
+ /forge spawn frontend # Same as anvil
328
+ /forge spawn furnace
329
+ /forge spawn backend # Same as furnace
330
+ ```
331
+
332
+ ### Check Agent Status
333
+
334
+ See which agents are active:
335
+
336
+ ```
337
+ /forge status
338
+ ```
339
+
340
+ ### Assign Tasks
341
+
342
+ The Planning Hub assigns tasks based on agent specialization:
343
+
344
+ ```
345
+ /forge task Add login form validation
346
+ ```
347
+
348
+ Tasks are placed in `tasks/pending/` and picked up by appropriate agents.
349
+
350
+ ### Worker Loop Mode
351
+
352
+ Keep agents running continuously:
353
+
354
+ ```
355
+ /worker-loop anvil --max-idle 10
356
+ ```
357
+
358
+ Workers in loop mode:
359
+ 1. Check for assigned tasks
360
+ 2. Work on tasks until complete
361
+ 3. Loop back and check for more
362
+ 4. Exit after N idle checks
363
+
364
+ ### Agent Communication
365
+
366
+ Agents communicate through:
367
+ - **Task files** in `tasks/` directories
368
+ - **Status files** in `context/agent-status/`
369
+ - **Attention signals** in `tasks/attention/`
370
+
371
+ ### Getting Help from Agents
372
+
373
+ When an agent is blocked:
374
+
375
+ ```
376
+ /need-help Need clarification on API design
377
+ ```
378
+
379
+ This creates an attention signal visible in the Planning Hub.
380
+
381
+ ---
382
+
383
+ ## Agent Selection Guide
384
+
385
+ | Scenario | Recommended Agent |
386
+ |----------|-------------------|
387
+ | Build UI components | Anvil |
388
+ | Create API endpoints | Furnace |
389
+ | Write tests | Crucible |
390
+ | Review code | Sentinel |
391
+ | Write documentation | Scribe |
392
+ | Prepare a release | Herald |
393
+ | Set up CI/CD | Ember |
394
+ | Security review | Aegis |
395
+ | Architecture decisions | Planning Hub (Sage) |
396
+ | Requirements gathering | Planning Hub (Oracle) |
397
+ | Prioritization | Planning Hub (Quartermaster) |
398
+
399
+ ---
400
+
401
+ ## Customizing Agents
402
+
403
+ Agent personalities are defined in `config/agent-manifest.yaml`. You can:
404
+
405
+ 1. **Modify communication styles** - Adjust how agents communicate
406
+ 2. **Update principles** - Change guiding principles
407
+ 3. **Add task types** - Expand what tasks an agent handles
408
+
409
+ For major customizations, create overrides in your project rather than modifying the source files directly.