@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,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Clear an attention signal after helping a worker
|
|
3
|
+
argument-hint: [agent-name | all]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Clear Attention Command
|
|
7
|
+
|
|
8
|
+
Use this command to clear attention signals after you've helped a blocked worker.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
/clear-attention anvil # Clear Anvil's attention signal
|
|
14
|
+
/clear-attention all # Clear all attention signals
|
|
15
|
+
/clear-attention # List current attention signals
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Implementation
|
|
19
|
+
|
|
20
|
+
Based on `$ARGUMENTS`:
|
|
21
|
+
|
|
22
|
+
### If no argument or empty
|
|
23
|
+
|
|
24
|
+
List all current attention signals from `tasks/attention/`:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
🔔 Current Attention Signals:
|
|
28
|
+
|
|
29
|
+
1. Anvil (5 min ago): Need clarification on auth implementation
|
|
30
|
+
2. Crucible (2 min ago): Tests failing, unsure of expected behavior
|
|
31
|
+
|
|
32
|
+
Use /clear-attention <agent> to resolve.
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### If argument is "all"
|
|
36
|
+
|
|
37
|
+
Remove all files from `tasks/attention/` and confirm:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
✅ Cleared all attention signals (2 resolved)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### If argument is an agent name
|
|
44
|
+
|
|
45
|
+
1. Find and remove files matching that agent in `tasks/attention/`
|
|
46
|
+
2. Confirm removal:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
✅ Cleared attention signal for Anvil
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
If no matching signal found:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
No attention signal found for Anvil
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Notes
|
|
59
|
+
|
|
60
|
+
- Attention files are created by workers using `/need-help`
|
|
61
|
+
- The daemon watches this folder and sends notifications
|
|
62
|
+
- Clearing signals is a way to acknowledge you've responded
|
|
63
|
+
- Workers can also clear their own signals when unblocked
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Compact Context
|
|
2
|
+
|
|
3
|
+
Compress the current conversation to free up context window space while preserving all essential information.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
Use this when:
|
|
8
|
+
- You notice response quality degrading (repetitive, forgetting earlier decisions)
|
|
9
|
+
- A task is running long and you want to continue without starting fresh
|
|
10
|
+
- The conversation history is getting unwieldy
|
|
11
|
+
- Before picking up a new task in the same session
|
|
12
|
+
|
|
13
|
+
## How to Compact
|
|
14
|
+
|
|
15
|
+
Summarize the current conversation into a dense brief using this format:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
## Context Compact — [timestamp]
|
|
19
|
+
|
|
20
|
+
### Work In Progress
|
|
21
|
+
- Task: [task ID and title]
|
|
22
|
+
- Status: [what's done, what's not]
|
|
23
|
+
- Files touched: [list]
|
|
24
|
+
|
|
25
|
+
### Key Decisions Made
|
|
26
|
+
- [decision 1 and the reason behind it]
|
|
27
|
+
- [decision 2 and the reason behind it]
|
|
28
|
+
|
|
29
|
+
### Architecture Constraints Discovered
|
|
30
|
+
- [any patterns, restrictions, or conventions learned from reading code]
|
|
31
|
+
|
|
32
|
+
### Tests Written
|
|
33
|
+
- [test file: X tests passing]
|
|
34
|
+
|
|
35
|
+
### Blockers / Open Questions
|
|
36
|
+
- [anything unresolved]
|
|
37
|
+
|
|
38
|
+
### Next Step
|
|
39
|
+
[Exactly what to do next when work resumes]
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
After writing the summary, respond with:
|
|
43
|
+
|
|
44
|
+
> Context compacted. Summary above replaces prior conversation history.
|
|
45
|
+
> Ready to continue with: [next step].
|
|
46
|
+
|
|
47
|
+
## Rules
|
|
48
|
+
|
|
49
|
+
- Never lose acceptance criteria state -- list any unchecked ACs explicitly
|
|
50
|
+
- Never lose test counts -- the DoD requires accurate numbers
|
|
51
|
+
- Keep the summary under 400 words -- longer defeats the purpose
|
|
52
|
+
- If mid-task: the summary IS the handoff. Make it complete enough to resume cold.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Configure or re-detect version control system settings
|
|
3
|
+
argument-hint: [detect|set <type>]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Configure VCS Command
|
|
7
|
+
|
|
8
|
+
Configure or re-detect the version control system for this project. This affects how agents handle branching, PRs, and CI workflows.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
/configure-vcs # Interactive configuration
|
|
14
|
+
/configure-vcs detect # Auto-detect from project structure
|
|
15
|
+
/configure-vcs set github # Manually set to GitHub
|
|
16
|
+
/configure-vcs set gitlab # Manually set to GitLab
|
|
17
|
+
/configure-vcs set gitea # Manually set to Gitea (self-hosted)
|
|
18
|
+
/configure-vcs set azure-devops # Manually set to Azure DevOps
|
|
19
|
+
/configure-vcs set bitbucket # Manually set to Bitbucket
|
|
20
|
+
/configure-vcs set git-only # Git without platform
|
|
21
|
+
/configure-vcs set none # No version control
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Supported Platforms
|
|
25
|
+
|
|
26
|
+
| Type | Platform | PR Command | CI Config |
|
|
27
|
+
|------|----------|------------|-----------|
|
|
28
|
+
| `github` | GitHub | `gh pr create` | `.github/workflows/` |
|
|
29
|
+
| `gitlab` | GitLab | `git push -o merge_request.create` | `.gitlab-ci.yml` |
|
|
30
|
+
| `gitea` | Gitea/Codeberg | `tea pr create` | `.gitea/workflows/` |
|
|
31
|
+
| `azure-devops` | Azure DevOps | `az repos pr create` | `azure-pipelines.yml` |
|
|
32
|
+
| `bitbucket` | Bitbucket | Manual via UI | `bitbucket-pipelines.yml` |
|
|
33
|
+
| `git-only` | Git (no platform) | N/A | N/A |
|
|
34
|
+
| `none` | No VCS | N/A | N/A |
|
|
35
|
+
|
|
36
|
+
## Implementation
|
|
37
|
+
|
|
38
|
+
Based on `$ARGUMENTS`:
|
|
39
|
+
|
|
40
|
+
### If no arguments (interactive mode):
|
|
41
|
+
|
|
42
|
+
1. Run detection: `node bin/lib/vcs.js detect`
|
|
43
|
+
2. Show current setting and detected type
|
|
44
|
+
3. Ask user to confirm or change
|
|
45
|
+
4. Run `node bin/lib/vcs.js init <type>` to create folders
|
|
46
|
+
5. Report configuration saved
|
|
47
|
+
|
|
48
|
+
### If `detect`:
|
|
49
|
+
|
|
50
|
+
1. Run: `node bin/lib/vcs.js detect`
|
|
51
|
+
2. Display detected type and confidence
|
|
52
|
+
3. If confident detection, ask to apply
|
|
53
|
+
4. Run `node bin/lib/vcs.js set <type>` to save
|
|
54
|
+
|
|
55
|
+
### If `set <type>`:
|
|
56
|
+
|
|
57
|
+
1. Validate type is one of: github, gitlab, azure-devops, bitbucket, git-only, none
|
|
58
|
+
2. Run: `node bin/lib/vcs.js init <type>`
|
|
59
|
+
3. Report folders created (if any)
|
|
60
|
+
4. Confirm configuration saved
|
|
61
|
+
|
|
62
|
+
## Detection Logic
|
|
63
|
+
|
|
64
|
+
The VCS detector checks (in order of priority):
|
|
65
|
+
|
|
66
|
+
1. **Platform folders**: `.github/`, `.gitlab/`, `.gitea/`, `.azure/`
|
|
67
|
+
2. **CI config files**: `.gitlab-ci.yml`, `azure-pipelines.yml`, `bitbucket-pipelines.yml`
|
|
68
|
+
3. **Git remote URL**: Parses `.git/config` for github.com, gitlab.com, gitea, codeberg.org, etc.
|
|
69
|
+
4. **Fallback**: `git-only` if `.git/` exists, `none` otherwise
|
|
70
|
+
|
|
71
|
+
## Impact on Agents
|
|
72
|
+
|
|
73
|
+
When VCS is configured, agents will:
|
|
74
|
+
|
|
75
|
+
- **github**: Use `gh pr create`, reference GitHub Actions
|
|
76
|
+
- **gitlab**: Use merge request workflow, reference GitLab CI
|
|
77
|
+
- **azure-devops**: Use `az repos pr create`, reference Azure Pipelines
|
|
78
|
+
- **bitbucket**: Provide manual PR instructions, reference Bitbucket Pipelines
|
|
79
|
+
- **git-only**: Use branch workflow without PR commands
|
|
80
|
+
- **none**: Skip all git-related instructions
|
|
81
|
+
|
|
82
|
+
## Configuration File
|
|
83
|
+
|
|
84
|
+
VCS config is stored in `.forge/config.json`:
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"vcs": {
|
|
89
|
+
"type": "github",
|
|
90
|
+
"name": "GitHub",
|
|
91
|
+
"autoDetected": false,
|
|
92
|
+
"lastUpdated": "2026-01-16T12:00:00Z"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## When to Use
|
|
98
|
+
|
|
99
|
+
- **Initial setup**: Automatically run during `forge init`
|
|
100
|
+
- **Adding git later**: Run `/configure-vcs detect` after `git init`
|
|
101
|
+
- **Switching platforms**: Run `/configure-vcs set <type>` when migrating
|
|
102
|
+
- **Troubleshooting**: Run `/configure-vcs` if agents give wrong git instructions
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Vibe Forge - multi-agent development orchestration
|
|
3
|
+
argument-hint: [status|spawn <agent>|task [desc]|help]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Vibe Forge Command Router
|
|
7
|
+
|
|
8
|
+
**Command:** `/forge $ARGUMENTS`
|
|
9
|
+
|
|
10
|
+
## Route the Command
|
|
11
|
+
|
|
12
|
+
Based on the first argument, do ONE of the following:
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
### If `$1` is empty OR `$1` is "plan" → Start Planning Hub
|
|
17
|
+
|
|
18
|
+
You are now the **Vibe Forge Planning Hub** - a multi-expert planning team.
|
|
19
|
+
|
|
20
|
+
#### Your Identity
|
|
21
|
+
|
|
22
|
+
@_vibe-forge/agents/planning-hub/personality.md
|
|
23
|
+
|
|
24
|
+
#### Project Context
|
|
25
|
+
|
|
26
|
+
@context/project-context.md
|
|
27
|
+
|
|
28
|
+
#### Modern Tooling Reference (avoid outdated suggestions)
|
|
29
|
+
|
|
30
|
+
@_vibe-forge/context/modern-conventions.md
|
|
31
|
+
|
|
32
|
+
**Startup:** Display the team assembly welcome:
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
🔥 VIBE FORGE - Planning Hub
|
|
36
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
37
|
+
|
|
38
|
+
The forge council assembles...
|
|
39
|
+
|
|
40
|
+
🔥 Forge Master - Orchestration & Tasks
|
|
41
|
+
🏛️ Architect - Technical Design
|
|
42
|
+
🛡️ Aegis - Security
|
|
43
|
+
⚙️ Ember - DevOps & Infrastructure
|
|
44
|
+
🎨 Pixel - User Experience
|
|
45
|
+
📊 Oracle - Product & Requirements
|
|
46
|
+
🧪 Crucible - Quality & Testing
|
|
47
|
+
|
|
48
|
+
Ready to plan, review, or coordinate.
|
|
49
|
+
Use /forge status to check current tasks.
|
|
50
|
+
|
|
51
|
+
What's on the anvil today?
|
|
52
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Do NOT automatically scan task folders - wait for user to ask or use `/forge status`.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
### If `$1` is "status" → Show Status Dashboard
|
|
60
|
+
|
|
61
|
+
Display a formatted status dashboard.
|
|
62
|
+
|
|
63
|
+
#### Forge State
|
|
64
|
+
|
|
65
|
+
@_vibe-forge/context/forge-state.yaml
|
|
66
|
+
|
|
67
|
+
#### Task Counts
|
|
68
|
+
|
|
69
|
+
Use the Glob tool to count .md files in each task folder:
|
|
70
|
+
|
|
71
|
+
- `_vibe-forge/tasks/pending/*.md` - Pending
|
|
72
|
+
- `_vibe-forge/tasks/in-progress/*.md` - In Progress
|
|
73
|
+
- `_vibe-forge/tasks/completed/*.md` - Completed
|
|
74
|
+
- `_vibe-forge/tasks/review/*.md` - In Review
|
|
75
|
+
- `_vibe-forge/tasks/needs-changes/*.md` - Needs Changes
|
|
76
|
+
- `_vibe-forge/tasks/approved/*.md` - Approved
|
|
77
|
+
|
|
78
|
+
Format output like:
|
|
79
|
+
|
|
80
|
+
```text
|
|
81
|
+
🔥 VIBE FORGE - Status Dashboard
|
|
82
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
83
|
+
[Task counts and state summary]
|
|
84
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### If `$1` is "spawn" → Spawn Worker Agent
|
|
90
|
+
|
|
91
|
+
**Agent requested:** `$2`
|
|
92
|
+
|
|
93
|
+
Available agents (with aliases):
|
|
94
|
+
|
|
95
|
+
| Agent | Aliases | Role |
|
|
96
|
+
| -------- | -------------------- | ----------------- |
|
|
97
|
+
| anvil | frontend, ui, fe | Frontend Developer |
|
|
98
|
+
| furnace | backend, api, be | Backend Developer |
|
|
99
|
+
| crucible | test, testing, qa | Tester / QA |
|
|
100
|
+
| sentinel | review, reviewer, cr | Code Reviewer |
|
|
101
|
+
| scribe | docs, documentation | Documentation |
|
|
102
|
+
| herald | release, deploy | Release Manager |
|
|
103
|
+
| ember | devops, ops, infra | DevOps |
|
|
104
|
+
| aegis | security, sec, appsec | Security |
|
|
105
|
+
|
|
106
|
+
If `$2` is empty, show the table above and ask which agent to spawn.
|
|
107
|
+
|
|
108
|
+
If `$2` is provided, run:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
./_vibe-forge/bin/forge-spawn.sh $2
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Confirm the spawn. If an alias was used (e.g., "frontend"), mention the resolved name: "Spawning **Anvil** (frontend)..."
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
### If `$1` is "task" → Create Task
|
|
119
|
+
|
|
120
|
+
**Task description:** `$2` `$3` `$4` (remaining arguments)
|
|
121
|
+
|
|
122
|
+
#### Task Template
|
|
123
|
+
|
|
124
|
+
@_vibe-forge/config/task-template.md
|
|
125
|
+
|
|
126
|
+
#### Existing Tasks
|
|
127
|
+
|
|
128
|
+
Use the Glob tool to list files in `_vibe-forge/tasks/pending/*.md`
|
|
129
|
+
|
|
130
|
+
If no description provided, ask:
|
|
131
|
+
|
|
132
|
+
- What needs to be done?
|
|
133
|
+
- Which agent? (anvil, furnace, crucible, sentinel, scribe, herald, ember, aegis)
|
|
134
|
+
- Priority? (high, medium, low)
|
|
135
|
+
|
|
136
|
+
Generate task ID as `task-XXX` (next sequential number), create file at `_vibe-forge/tasks/pending/task-XXX.md`.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
### If `$1` is "help" → Show Help
|
|
141
|
+
|
|
142
|
+
Display:
|
|
143
|
+
|
|
144
|
+
```text
|
|
145
|
+
🔥 VIBE FORGE - Commands
|
|
146
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
147
|
+
|
|
148
|
+
/forge Start the Planning Hub (default)
|
|
149
|
+
/forge status Show status dashboard
|
|
150
|
+
/forge spawn <agent> Spawn worker in new terminal
|
|
151
|
+
/forge task [desc] Create a new task
|
|
152
|
+
/forge help Show this help
|
|
153
|
+
|
|
154
|
+
Agents (with aliases):
|
|
155
|
+
anvil (frontend, ui, fe) - Frontend Developer
|
|
156
|
+
furnace (backend, api, be) - Backend Developer
|
|
157
|
+
crucible (test, testing, qa) - Tester / QA
|
|
158
|
+
sentinel (review, reviewer, cr) - Code Reviewer
|
|
159
|
+
scribe (docs, documentation) - Documentation
|
|
160
|
+
herald (release, deploy) - Release Manager
|
|
161
|
+
ember (devops, ops, infra) - DevOps
|
|
162
|
+
aegis (security, sec, appsec) - Security
|
|
163
|
+
|
|
164
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
### Otherwise → Unknown Command
|
|
170
|
+
|
|
171
|
+
Tell the user: "Unknown command: $1. Run `/forge help` for available commands."
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Signal that you need human attention/input
|
|
3
|
+
argument-hint: <brief reason>
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Need Help Command
|
|
7
|
+
|
|
8
|
+
Use this command when you're blocked and need human input. This will:
|
|
9
|
+
|
|
10
|
+
1. Create an attention file in `tasks/attention/`
|
|
11
|
+
2. Ring the terminal bell for immediate notification
|
|
12
|
+
3. Trigger a system toast notification (if daemon is running)
|
|
13
|
+
4. Show in the Planning Hub's status display
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
/need-help Need clarification on auth implementation approach
|
|
19
|
+
/need-help Blocked on API design decision - REST vs GraphQL?
|
|
20
|
+
/need-help Tests failing, need guidance on expected behavior
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Implementation
|
|
24
|
+
|
|
25
|
+
Based on `$ARGUMENTS`:
|
|
26
|
+
|
|
27
|
+
1. Determine your agent identity from your system prompt or context
|
|
28
|
+
2. Create an attention file at `tasks/attention/<agent>-<timestamp>.md`:
|
|
29
|
+
|
|
30
|
+
```markdown
|
|
31
|
+
---
|
|
32
|
+
agent: <your-agent-name>
|
|
33
|
+
created: <ISO timestamp>
|
|
34
|
+
status: pending
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
# Attention Needed
|
|
38
|
+
|
|
39
|
+
**Agent:** <icon> <display-name>
|
|
40
|
+
**Time:** <human-readable time>
|
|
41
|
+
|
|
42
|
+
## Issue
|
|
43
|
+
|
|
44
|
+
$ARGUMENTS
|
|
45
|
+
|
|
46
|
+
## Context
|
|
47
|
+
|
|
48
|
+
<Brief context about what you were working on>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
3. Ring the terminal bell:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
printf '\a'
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
4. Announce that you've signaled for help and will wait.
|
|
58
|
+
|
|
59
|
+
## Resolving Attention
|
|
60
|
+
|
|
61
|
+
When a human responds (via Hub or directly), they can:
|
|
62
|
+
- Delete the attention file to clear the flag
|
|
63
|
+
- Move it to a resolved folder
|
|
64
|
+
- Or just respond - the worker can delete their own attention file once unblocked
|
|
65
|
+
|
|
66
|
+
## Example Output
|
|
67
|
+
|
|
68
|
+
After running `/need-help Need decision on caching strategy`:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
🔔 Attention signal sent!
|
|
72
|
+
|
|
73
|
+
I've created tasks/attention/anvil-20240115-143022.md
|
|
74
|
+
The Planning Hub and daemon have been notified.
|
|
75
|
+
|
|
76
|
+
I'll wait for guidance. You can respond here or via the Hub.
|
|
77
|
+
```
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Update your agent status for the forge dashboard
|
|
3
|
+
argument-hint: <status> [task-id]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Update Status Command
|
|
7
|
+
|
|
8
|
+
Report your current status to the forge daemon and Planning Hub. This enables real-time visibility into what each worker is doing.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
/update-status working TASK-001 # Working on a specific task
|
|
14
|
+
/update-status idle # Waiting for tasks
|
|
15
|
+
/update-status blocked # Stuck, may need help
|
|
16
|
+
/update-status reviewing PR-123 # Reviewing something
|
|
17
|
+
/update-status testing TASK-001 # Running tests
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Status Values
|
|
21
|
+
|
|
22
|
+
| Status | Meaning |
|
|
23
|
+
|--------|---------|
|
|
24
|
+
| `idle` | No current task, ready for work |
|
|
25
|
+
| `working` | Actively working on a task |
|
|
26
|
+
| `blocked` | Stuck, needs input (consider `/need-help`) |
|
|
27
|
+
| `reviewing` | Reviewing code or PR |
|
|
28
|
+
| `testing` | Running tests |
|
|
29
|
+
| `waiting` | Waiting for external dependency |
|
|
30
|
+
|
|
31
|
+
## Implementation
|
|
32
|
+
|
|
33
|
+
Based on `$ARGUMENTS`:
|
|
34
|
+
|
|
35
|
+
1. Parse the status and optional task ID from arguments
|
|
36
|
+
2. Determine your agent identity from your system prompt
|
|
37
|
+
3. Write status file to `context/agent-status/<agent>.json`:
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"agent": "anvil",
|
|
42
|
+
"status": "working",
|
|
43
|
+
"task": "TASK-001",
|
|
44
|
+
"message": "Implementing user authentication",
|
|
45
|
+
"updated": "2026-01-15T14:30:22Z" // ISO 8601 timestamp (auto-generated)
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
4. The daemon reads these files and includes them in `forge-state.yaml`
|
|
50
|
+
5. The Planning Hub sees your status in the dashboard
|
|
51
|
+
|
|
52
|
+
## Auto-Status Updates
|
|
53
|
+
|
|
54
|
+
Workers should update their status at these key moments:
|
|
55
|
+
|
|
56
|
+
1. **On startup**: `/update-status idle` (or working if picking up a task)
|
|
57
|
+
2. **When picking up a task**: `/update-status working TASK-XXX`
|
|
58
|
+
3. **When completing a task**: `/update-status idle`
|
|
59
|
+
4. **When blocked**: `/update-status blocked` (then `/need-help` if needed)
|
|
60
|
+
5. **Before exiting**: Status file can remain (daemon marks stale after timeout)
|
|
61
|
+
|
|
62
|
+
## Stale Status
|
|
63
|
+
|
|
64
|
+
The daemon considers a status stale if not updated for 5+ minutes. Stale statuses are shown with a warning indicator in the dashboard.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Start a persistent worker loop (Ralph-style)
|
|
3
|
+
argument-hint: <agent> [--max-idle 10] | stop
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Worker Loop Command
|
|
7
|
+
|
|
8
|
+
Start a persistent worker loop for the specified agent. The worker will:
|
|
9
|
+
1. Check for assigned tasks
|
|
10
|
+
2. Work on tasks until complete
|
|
11
|
+
3. Loop back and check for more tasks
|
|
12
|
+
4. Only exit after N idle checks with no work found
|
|
13
|
+
|
|
14
|
+
## Activation Modes
|
|
15
|
+
|
|
16
|
+
Worker Loop can be activated in two ways:
|
|
17
|
+
|
|
18
|
+
### 1. Config-based (Recommended)
|
|
19
|
+
|
|
20
|
+
Enable during `forge init` or toggle anytime:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
forge config worker-loop on # Enable for all workers
|
|
24
|
+
forge config worker-loop off # Disable
|
|
25
|
+
forge config worker-loop # Check status
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
When enabled, ALL workers will automatically stay running and check for new tasks.
|
|
29
|
+
|
|
30
|
+
### 2. Runtime (Per-session)
|
|
31
|
+
|
|
32
|
+
Use this command for fine-grained control:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
/worker-loop anvil # Start Anvil in persistent loop
|
|
36
|
+
/worker-loop furnace --max-idle 20 # Custom idle limit
|
|
37
|
+
/worker-loop stop # Stop the current loop
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Arguments
|
|
41
|
+
|
|
42
|
+
- `$1` - Agent name (anvil, furnace, crucible, etc.) or "stop"
|
|
43
|
+
- `--max-idle N` - Exit after N checks with no tasks (default: 10)
|
|
44
|
+
|
|
45
|
+
## Implementation
|
|
46
|
+
|
|
47
|
+
Based on `$ARGUMENTS`:
|
|
48
|
+
|
|
49
|
+
### If first argument is "stop"
|
|
50
|
+
|
|
51
|
+
Remove the worker loop state file and confirm:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
rm -f "${CLAUDE_LOCAL_DIR:-$HOME/.claude}/forge-worker-loop.json"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Output: "Worker loop stopped."
|
|
58
|
+
|
|
59
|
+
### Otherwise, start a loop
|
|
60
|
+
|
|
61
|
+
1. Resolve the agent name to canonical form
|
|
62
|
+
2. Create state file at `${CLAUDE_LOCAL_DIR}/forge-worker-loop.json`:
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"agent": "<resolved-agent>",
|
|
67
|
+
"max_idle_checks": 10,
|
|
68
|
+
"idle_count": 0,
|
|
69
|
+
"poll_interval": 5,
|
|
70
|
+
"started_at": "<ISO timestamp>"
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
3. Load the agent's personality file
|
|
75
|
+
4. Start working with this system prompt addition:
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
You are in PERSISTENT WORKER MODE. After completing each task:
|
|
79
|
+
1. Check for more tasks assigned to you in tasks/pending/ and tasks/needs-changes/
|
|
80
|
+
2. If tasks found, immediately begin working
|
|
81
|
+
3. If no tasks, announce you are idle and waiting
|
|
82
|
+
|
|
83
|
+
Do NOT ask permission to continue - work autonomously until no tasks remain.
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
5. The stop hook (hooks/worker-loop.js) will intercept exit attempts and:
|
|
87
|
+
- If tasks exist: feed prompt to continue working
|
|
88
|
+
- If no tasks: increment idle counter
|
|
89
|
+
- If max idle reached: allow exit
|
|
90
|
+
|
|
91
|
+
## How It Works
|
|
92
|
+
|
|
93
|
+
The Worker Loop uses Claude Code's **Stop Hook** feature:
|
|
94
|
+
|
|
95
|
+
1. When a worker tries to exit, the hook script runs
|
|
96
|
+
2. It checks for pending tasks in `tasks/pending/` and `tasks/needs-changes/`
|
|
97
|
+
3. If tasks found: blocks exit and feeds a prompt to continue working
|
|
98
|
+
4. If no tasks: allows exit (or waits, depending on config)
|
|
99
|
+
|
|
100
|
+
## Benefits
|
|
101
|
+
|
|
102
|
+
- Workers stay active and pick up new tasks automatically
|
|
103
|
+
- No need to manually respawn workers
|
|
104
|
+
- Tasks can be added to pending/ and workers will find them
|
|
105
|
+
- Config-based mode requires zero per-session setup
|
|
106
|
+
- Configurable idle timeout prevents infinite waiting
|