@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.
- package/.claude/commands/clear-attention.md +63 -0
- package/.claude/commands/compact-context.md +52 -0
- package/.claude/commands/configure-vcs.md +102 -0
- package/.claude/commands/forge.md +171 -0
- package/.claude/commands/need-help.md +77 -0
- package/.claude/commands/update-status.md +64 -0
- package/.claude/commands/worker-loop.md +106 -0
- package/.claude/hooks/worker-loop.js +198 -0
- package/.claude/scripts/setup-worker-loop.sh +45 -0
- package/.claude/settings.local.json +46 -0
- package/LICENSE +21 -0
- package/README.md +238 -0
- package/agents/aegis/personality.md +294 -0
- package/agents/anvil/personality.md +276 -0
- package/agents/architect/personality.md +258 -0
- package/agents/crucible/personality.md +360 -0
- package/agents/ember/personality.md +291 -0
- package/agents/forge-master/capabilities.md +144 -0
- package/agents/forge-master/context-template.md +128 -0
- package/agents/forge-master/personality.md +138 -0
- package/agents/furnace/personality.md +340 -0
- package/agents/herald/personality.md +247 -0
- package/agents/loki/personality.md +108 -0
- package/agents/oracle/personality.md +283 -0
- package/agents/pixel/personality.md +113 -0
- package/agents/planning-hub/personality.md +320 -0
- package/agents/scribe/personality.md +251 -0
- package/agents/temper/personality.md +218 -0
- package/bin/cli.js +375 -0
- package/bin/dashboard/api/agents.js +333 -0
- package/bin/dashboard/api/dispatch.js +483 -0
- package/bin/dashboard/api/tasks.js +416 -0
- package/bin/dashboard/frontend/index.html +13 -0
- package/bin/dashboard/frontend/package.json +16 -0
- package/bin/dashboard/frontend/src/App.svelte +222 -0
- package/bin/dashboard/frontend/src/app.css +1777 -0
- package/bin/dashboard/frontend/src/lib/components/AgentCard.svelte +60 -0
- package/bin/dashboard/frontend/src/lib/components/AgentsPanel.svelte +57 -0
- package/bin/dashboard/frontend/src/lib/components/DispatchModal.svelte +180 -0
- package/bin/dashboard/frontend/src/lib/components/Footer.svelte +33 -0
- package/bin/dashboard/frontend/src/lib/components/Header.svelte +84 -0
- package/bin/dashboard/frontend/src/lib/components/IssueCard.svelte +33 -0
- package/bin/dashboard/frontend/src/lib/components/IssuesPanel.svelte +73 -0
- package/bin/dashboard/frontend/src/lib/components/KeyboardShortcutsModal.svelte +108 -0
- package/bin/dashboard/frontend/src/lib/components/MobileTabs.svelte +52 -0
- package/bin/dashboard/frontend/src/lib/components/NotificationCard.svelte +60 -0
- package/bin/dashboard/frontend/src/lib/components/NotificationsPanel.svelte +44 -0
- package/bin/dashboard/frontend/src/lib/components/TaskCard.svelte +63 -0
- package/bin/dashboard/frontend/src/lib/components/TasksPanel.svelte +82 -0
- package/bin/dashboard/frontend/src/lib/components/Toast.svelte +45 -0
- package/bin/dashboard/frontend/src/lib/stores/agents.js +34 -0
- package/bin/dashboard/frontend/src/lib/stores/issues.js +54 -0
- package/bin/dashboard/frontend/src/lib/stores/notifications.js +48 -0
- package/bin/dashboard/frontend/src/lib/stores/tasks.js +63 -0
- package/bin/dashboard/frontend/src/lib/stores/theme.js +33 -0
- package/bin/dashboard/frontend/src/lib/stores/toast.js +35 -0
- package/bin/dashboard/frontend/src/lib/stores/ui.js +25 -0
- package/bin/dashboard/frontend/src/lib/stores/voice.js +275 -0
- package/bin/dashboard/frontend/src/lib/stores/websocket.js +295 -0
- package/bin/dashboard/frontend/src/lib/utils/api.js +101 -0
- package/bin/dashboard/frontend/src/lib/utils/formatters.js +54 -0
- package/bin/dashboard/frontend/src/main.js +9 -0
- package/bin/dashboard/frontend/svelte.config.js +5 -0
- package/bin/dashboard/frontend/vite.config.js +20 -0
- package/bin/dashboard/public/assets/index-DnfVj9Ce.css +1 -0
- package/bin/dashboard/public/assets/index-Ze5h0kXQ.js +2 -0
- package/bin/dashboard/public/index.html +14 -0
- package/bin/dashboard/server.js +566 -0
- package/bin/forge-daemon.sh +463 -0
- package/bin/forge-setup.sh +645 -0
- package/bin/forge-spawn.sh +164 -0
- package/bin/forge.cmd +83 -0
- package/bin/forge.sh +533 -0
- package/bin/lib/agents.sh +177 -0
- package/bin/lib/colors.sh +44 -0
- package/bin/lib/config.sh +347 -0
- package/bin/lib/constants.sh +241 -0
- package/bin/lib/daemon/display.sh +128 -0
- package/bin/lib/daemon/notifications.sh +263 -0
- package/bin/lib/daemon/routing.sh +77 -0
- package/bin/lib/daemon/state.sh +115 -0
- package/bin/lib/daemon/sync.sh +95 -0
- package/bin/lib/database.sh +310 -0
- package/bin/lib/heimdall-setup.js +113 -0
- package/bin/lib/heimdall.js +265 -0
- package/bin/lib/json.sh +264 -0
- package/bin/lib/terminal.js +451 -0
- package/bin/lib/util.sh +126 -0
- package/bin/lib/vcs.js +349 -0
- package/config/agent-manifest.yaml +203 -0
- package/config/agents.json +168 -0
- package/config/task-template.md +159 -0
- package/config/task-types.yaml +106 -0
- package/context/agent-status/aegis.json +7 -0
- package/context/agent-status/anvil.json +7 -0
- package/context/agent-status/architect.json +7 -0
- package/context/agent-status/crucible.json +7 -0
- package/context/agent-status/ember.json +7 -0
- package/context/agent-status/furnace.json +7 -0
- package/context/agent-status/loki.json +7 -0
- package/context/agent-status/oracle.json +7 -0
- package/context/agent-status/pixel.json +7 -0
- package/context/agent-status/planning-hub.json +7 -0
- package/context/agent-status/scribe.json +7 -0
- package/context/agent-status/temper.json +7 -0
- package/context/feature-brainstorm.md +426 -0
- package/context/forge-state.yaml +19 -0
- package/context/modern-conventions.md +129 -0
- package/context/project-context-template.md +122 -0
- package/context/project-context.md +122 -0
- package/docs/TODO.md +150 -0
- package/docs/agents.md +409 -0
- package/docs/architecture/decisions/ADR-001-daemon-modularization.md +122 -0
- package/docs/architecture/vibe-lab-integration.md +684 -0
- package/docs/architecture.md +194 -0
- package/docs/bmad-gap-analysis-2026-03-31.md +444 -0
- package/docs/cleanup-workflow.md +329 -0
- package/docs/commands.md +451 -0
- package/docs/dashboard-mockup.html +989 -0
- package/docs/getting-started.md +261 -0
- package/docs/integration/forge-ownership-policy.md +112 -0
- package/docs/npm-publishing.md +132 -0
- package/docs/roadmap-2026.md +519 -0
- package/docs/security.md +144 -0
- package/docs/wireframes/dashboard-mvp.md +1164 -0
- package/docs/workflows/README.md +32 -0
- package/docs/workflows/azure-devops.md +108 -0
- package/docs/workflows/bitbucket.md +104 -0
- package/docs/workflows/git-only.md +130 -0
- package/docs/workflows/gitea.md +168 -0
- package/docs/workflows/github.md +103 -0
- package/docs/workflows/gitlab.md +105 -0
- package/docs/workflows.md +454 -0
- package/package.json +73 -0
- package/tasks/completed/ARCH-001-duplicate-agent-config.md +121 -0
- package/tasks/completed/ARCH-002-mixed-bash-node-implementation.md +88 -0
- package/tasks/completed/ARCH-003-worker-loop-hook-duplication.md +77 -0
- package/tasks/completed/ARCH-009-test-organization.md +78 -0
- package/tasks/completed/ARCH-011-jq-vs-nodejs-json.md +94 -0
- package/tasks/completed/ARCH-012-tmp-files-in-root.md +71 -0
- package/tasks/completed/ARCH-013-exit-code-constants.md +65 -0
- package/tasks/completed/ARCH-014-sed-incompatibility.md +96 -0
- package/tasks/completed/ARCH-015-docs-todo-tracking.md +83 -0
- package/tasks/completed/BUG-dash-001-tasks-filter-error.md +31 -0
- package/tasks/completed/BUG-dash-002-agents-unknown.md +41 -0
- package/tasks/completed/CLEAN-001.md +38 -0
- package/tasks/completed/CLEAN-002.md +43 -0
- package/tasks/completed/CLEAN-003.md +47 -0
- package/tasks/completed/CLEAN-004.md +56 -0
- package/tasks/completed/CLEAN-005.md +75 -0
- package/tasks/completed/CLEAN-006.md +47 -0
- package/tasks/completed/CLEAN-007.md +34 -0
- package/tasks/completed/CLEAN-008.md +49 -0
- package/tasks/completed/CLEAN-012.md +58 -0
- package/tasks/completed/CLEAN-013.md +45 -0
- package/tasks/completed/FEATURE-001a-dashboard-wireframes.md +162 -0
- package/tasks/completed/IMPL-007a-daemon-notifications-module.md +82 -0
- package/tasks/completed/IMPL-007b-daemon-sync-module.md +71 -0
- package/tasks/completed/IMPL-007c-daemon-state-module.md +80 -0
- package/tasks/completed/IMPL-007d-daemon-routing-module.md +77 -0
- package/tasks/completed/IMPL-007e-daemon-display-module.md +77 -0
- package/tasks/completed/IMPL-007f-daemon-integration.md +124 -0
- package/tasks/completed/PLAT-1-heimdall.md +420 -0
- package/tasks/completed/SEC-001-sql-injection-fix.md +58 -0
- package/tasks/completed/SEC-002-notification-injection-fix.md +45 -0
- package/tasks/completed/SEC-003-eval-injection-fix.md +54 -0
- package/tasks/completed/SEC-004-pid-race-condition-fix.md +49 -0
- package/tasks/completed/SEC-005-worker-loop-path-fix.md +51 -0
- package/tasks/completed/SEC-006-eval-agent-names.md +55 -0
- package/tasks/completed/SEC-007-spawn-escaping.md +67 -0
- package/tasks/completed/TASK-DASH-001-server-infrastructure.md +185 -0
- package/tasks/completed/TASK-anvil-001-dashboard-frontend.md +133 -0
- package/tasks/completed/review-bmad-aegis.md +89 -0
- package/tasks/completed/review-bmad-anvil.md +80 -0
- package/tasks/completed/review-bmad-crucible.md +81 -0
- package/tasks/completed/review-bmad-ember.md +90 -0
- package/tasks/completed/review-bmad-furnace.md +79 -0
- package/tasks/completed/review-bmad-pixel.md +82 -0
- package/tasks/completed/review-bmad-scribe.md +92 -0
- package/tasks/completed/review-bmad-sentinel.md +83 -0
- package/tasks/pending/ARCH-004-git-bash-detection-duplication.md +72 -0
- package/tasks/pending/ARCH-005-missing-src-directory.md +95 -0
- package/tasks/pending/ARCH-006-task-template-location.md +64 -0
- package/tasks/pending/ARCH-008-forge-master-vs-hub.md +81 -0
- package/tasks/pending/ARCH-010-missing-index-files.md +84 -0
- package/tasks/pending/CLEAN-009.md +31 -0
- package/tasks/pending/CLEAN-010.md +30 -0
- package/tasks/pending/CLEAN-011.md +30 -0
- package/tasks/pending/CLEAN-014.md +32 -0
- package/tasks/pending/DESIGN-dash-001-layout-review.md +45 -0
- package/tasks/pending/FEATURE-001-dashboard-mvp.md +268 -0
- package/tasks/review/ARCH-007-daemon-monolith.md +162 -0
- package/tasks/review/bmad-review-aegis.md +349 -0
- package/tasks/review/bmad-review-anvil.md +259 -0
- package/tasks/review/bmad-review-crucible.md +277 -0
- package/tasks/review/bmad-review-ember.md +307 -0
- package/tasks/review/bmad-review-furnace.md +285 -0
- package/tasks/review/bmad-review-pixel.md +329 -0
- package/tasks/review/bmad-review-scribe.md +361 -0
- package/tasks/review/bmad-review-sentinel.md +242 -0
- 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.
|