hammoc 1.3.0 → 1.5.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/README.md +422 -403
- package/bin/hammoc.js +0 -6
- package/package.json +100 -93
- package/packages/client/dist/assets/agentExampleHighlight-BgwTm15v.js +1 -0
- package/packages/client/dist/assets/commandTokenHighlight-BljHwnrK.js +1 -0
- package/packages/client/dist/assets/index-CjyjnXB8.css +32 -0
- package/packages/client/dist/assets/index-D3LxqW3f.js +2 -0
- package/packages/client/dist/assets/index-NqJdhlek.js +1498 -0
- package/packages/client/dist/assets/snippetTokenHighlight-DWsaQXX0.js +1 -0
- package/packages/client/dist/index.html +2 -2
- package/packages/client/dist/sw.js +1 -1
- package/packages/server/dist/app.d.ts.map +1 -1
- package/packages/server/dist/app.js +24 -24
- package/packages/server/dist/app.js.map +1 -1
- package/packages/server/dist/controllers/boardController.d.ts.map +1 -1
- package/packages/server/dist/controllers/boardController.js +0 -5
- package/packages/server/dist/controllers/boardController.js.map +1 -1
- package/packages/server/dist/controllers/claudeMdController.d.ts +26 -0
- package/packages/server/dist/controllers/claudeMdController.d.ts.map +1 -0
- package/packages/server/dist/controllers/claudeMdController.js +158 -0
- package/packages/server/dist/controllers/claudeMdController.js.map +1 -0
- package/packages/server/dist/controllers/fileSystemController.d.ts +4 -0
- package/packages/server/dist/controllers/fileSystemController.d.ts.map +1 -1
- package/packages/server/dist/controllers/fileSystemController.js +20 -2
- package/packages/server/dist/controllers/fileSystemController.js.map +1 -1
- package/packages/server/dist/controllers/harnessAgentController.d.ts +28 -0
- package/packages/server/dist/controllers/harnessAgentController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessAgentController.js +339 -0
- package/packages/server/dist/controllers/harnessAgentController.js.map +1 -0
- package/packages/server/dist/controllers/harnessCommandController.d.ts +28 -0
- package/packages/server/dist/controllers/harnessCommandController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessCommandController.js +382 -0
- package/packages/server/dist/controllers/harnessCommandController.js.map +1 -0
- package/packages/server/dist/controllers/harnessController.d.ts +21 -0
- package/packages/server/dist/controllers/harnessController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessController.js +176 -0
- package/packages/server/dist/controllers/harnessController.js.map +1 -0
- package/packages/server/dist/controllers/harnessHookController.d.ts +32 -0
- package/packages/server/dist/controllers/harnessHookController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessHookController.js +363 -0
- package/packages/server/dist/controllers/harnessHookController.js.map +1 -0
- package/packages/server/dist/controllers/harnessLintController.d.ts +18 -0
- package/packages/server/dist/controllers/harnessLintController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessLintController.js +72 -0
- package/packages/server/dist/controllers/harnessLintController.js.map +1 -0
- package/packages/server/dist/controllers/harnessMcpController.d.ts +28 -0
- package/packages/server/dist/controllers/harnessMcpController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessMcpController.js +310 -0
- package/packages/server/dist/controllers/harnessMcpController.js.map +1 -0
- package/packages/server/dist/controllers/harnessPluginController.d.ts +17 -0
- package/packages/server/dist/controllers/harnessPluginController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessPluginController.js +115 -0
- package/packages/server/dist/controllers/harnessPluginController.js.map +1 -0
- package/packages/server/dist/controllers/harnessShareScopeController.d.ts +15 -0
- package/packages/server/dist/controllers/harnessShareScopeController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessShareScopeController.js +73 -0
- package/packages/server/dist/controllers/harnessShareScopeController.js.map +1 -0
- package/packages/server/dist/controllers/harnessSkillController.d.ts +32 -0
- package/packages/server/dist/controllers/harnessSkillController.d.ts.map +1 -0
- package/packages/server/dist/controllers/harnessSkillController.js +453 -0
- package/packages/server/dist/controllers/harnessSkillController.js.map +1 -0
- package/packages/server/dist/controllers/projectController.d.ts.map +1 -1
- package/packages/server/dist/controllers/projectController.js +11 -0
- package/packages/server/dist/controllers/projectController.js.map +1 -1
- package/packages/server/dist/controllers/serverController.d.ts.map +1 -1
- package/packages/server/dist/controllers/serverController.js +84 -49
- package/packages/server/dist/controllers/serverController.js.map +1 -1
- package/packages/server/dist/controllers/snippetController.d.ts +35 -0
- package/packages/server/dist/controllers/snippetController.d.ts.map +1 -0
- package/packages/server/dist/controllers/snippetController.js +294 -0
- package/packages/server/dist/controllers/snippetController.js.map +1 -0
- package/packages/server/dist/handlers/websocket.d.ts +16 -0
- package/packages/server/dist/handlers/websocket.d.ts.map +1 -1
- package/packages/server/dist/handlers/websocket.js +221 -8
- package/packages/server/dist/handlers/websocket.js.map +1 -1
- package/packages/server/dist/index.js +66 -0
- package/packages/server/dist/index.js.map +1 -1
- package/packages/server/dist/locales/en/server.json +41 -6
- package/packages/server/dist/locales/es/server.json +3 -5
- package/packages/server/dist/locales/ja/server.json +3 -5
- package/packages/server/dist/locales/ko/server.json +4 -6
- package/packages/server/dist/locales/pt/server.json +3 -5
- package/packages/server/dist/locales/zh-CN/server.json +3 -5
- package/packages/server/dist/routes/account.d.ts +7 -0
- package/packages/server/dist/routes/account.d.ts.map +1 -0
- package/packages/server/dist/routes/account.js +35 -0
- package/packages/server/dist/routes/account.js.map +1 -0
- package/packages/server/dist/routes/debug.d.ts +1 -1
- package/packages/server/dist/routes/debug.d.ts.map +1 -1
- package/packages/server/dist/routes/debug.js +60 -1
- package/packages/server/dist/routes/debug.js.map +1 -1
- package/packages/server/dist/routes/harness.d.ts +8 -0
- package/packages/server/dist/routes/harness.d.ts.map +1 -0
- package/packages/server/dist/routes/harness.js +92 -0
- package/packages/server/dist/routes/harness.js.map +1 -0
- package/packages/server/dist/routes/preferences.d.ts.map +1 -1
- package/packages/server/dist/routes/preferences.js +11 -2
- package/packages/server/dist/routes/preferences.js.map +1 -1
- package/packages/server/dist/routes/projects.d.ts.map +1 -1
- package/packages/server/dist/routes/projects.js +5 -60
- package/packages/server/dist/routes/projects.js.map +1 -1
- package/packages/server/dist/routes/snippets.d.ts +14 -0
- package/packages/server/dist/routes/snippets.d.ts.map +1 -0
- package/packages/server/dist/routes/snippets.js +27 -0
- package/packages/server/dist/routes/snippets.js.map +1 -0
- package/packages/server/dist/services/accountInfoService.d.ts +38 -0
- package/packages/server/dist/services/accountInfoService.d.ts.map +1 -0
- package/packages/server/dist/services/accountInfoService.js +118 -0
- package/packages/server/dist/services/accountInfoService.js.map +1 -0
- package/packages/server/dist/services/bmadStatusService.d.ts +6 -2
- package/packages/server/dist/services/bmadStatusService.d.ts.map +1 -1
- package/packages/server/dist/services/bmadStatusService.js +88 -32
- package/packages/server/dist/services/bmadStatusService.js.map +1 -1
- package/packages/server/dist/services/chatService.d.ts +3 -0
- package/packages/server/dist/services/chatService.d.ts.map +1 -1
- package/packages/server/dist/services/chatService.js +36 -8
- package/packages/server/dist/services/chatService.js.map +1 -1
- package/packages/server/dist/services/claudeMdService.d.ts +48 -0
- package/packages/server/dist/services/claudeMdService.d.ts.map +1 -0
- package/packages/server/dist/services/claudeMdService.js +240 -0
- package/packages/server/dist/services/claudeMdService.js.map +1 -0
- package/packages/server/dist/services/commandService.d.ts +10 -0
- package/packages/server/dist/services/commandService.d.ts.map +1 -1
- package/packages/server/dist/services/commandService.js +129 -4
- package/packages/server/dist/services/commandService.js.map +1 -1
- package/packages/server/dist/services/fileSystemService.d.ts +7 -1
- package/packages/server/dist/services/fileSystemService.d.ts.map +1 -1
- package/packages/server/dist/services/fileSystemService.js +67 -8
- package/packages/server/dist/services/fileSystemService.js.map +1 -1
- package/packages/server/dist/services/fileWatcherService.d.ts +59 -0
- package/packages/server/dist/services/fileWatcherService.d.ts.map +1 -0
- package/packages/server/dist/services/fileWatcherService.js +329 -0
- package/packages/server/dist/services/fileWatcherService.js.map +1 -0
- package/packages/server/dist/services/gitService.d.ts.map +1 -1
- package/packages/server/dist/services/gitService.js +67 -7
- package/packages/server/dist/services/gitService.js.map +1 -1
- package/packages/server/dist/services/harnessAgentService.d.ts +79 -0
- package/packages/server/dist/services/harnessAgentService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessAgentService.js +933 -0
- package/packages/server/dist/services/harnessAgentService.js.map +1 -0
- package/packages/server/dist/services/harnessCommandService.d.ts +60 -0
- package/packages/server/dist/services/harnessCommandService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessCommandService.js +853 -0
- package/packages/server/dist/services/harnessCommandService.js.map +1 -0
- package/packages/server/dist/services/harnessHookService.d.ts +55 -0
- package/packages/server/dist/services/harnessHookService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessHookService.js +1060 -0
- package/packages/server/dist/services/harnessHookService.js.map +1 -0
- package/packages/server/dist/services/harnessLintService.d.ts +49 -0
- package/packages/server/dist/services/harnessLintService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessLintService.js +628 -0
- package/packages/server/dist/services/harnessLintService.js.map +1 -0
- package/packages/server/dist/services/harnessMcpService.d.ts +77 -0
- package/packages/server/dist/services/harnessMcpService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessMcpService.js +814 -0
- package/packages/server/dist/services/harnessMcpService.js.map +1 -0
- package/packages/server/dist/services/harnessPluginService.d.ts +66 -0
- package/packages/server/dist/services/harnessPluginService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessPluginService.js +559 -0
- package/packages/server/dist/services/harnessPluginService.js.map +1 -0
- package/packages/server/dist/services/harnessService.d.ts +40 -0
- package/packages/server/dist/services/harnessService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessService.js +222 -0
- package/packages/server/dist/services/harnessService.js.map +1 -0
- package/packages/server/dist/services/harnessShareScopeService.d.ts +31 -0
- package/packages/server/dist/services/harnessShareScopeService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessShareScopeService.js +93 -0
- package/packages/server/dist/services/harnessShareScopeService.js.map +1 -0
- package/packages/server/dist/services/harnessSkillService.d.ts +70 -0
- package/packages/server/dist/services/harnessSkillService.d.ts.map +1 -0
- package/packages/server/dist/services/harnessSkillService.js +636 -0
- package/packages/server/dist/services/harnessSkillService.js.map +1 -0
- package/packages/server/dist/services/historyParser.d.ts +4 -14
- package/packages/server/dist/services/historyParser.d.ts.map +1 -1
- package/packages/server/dist/services/historyParser.js +60 -5
- package/packages/server/dist/services/historyParser.js.map +1 -1
- package/packages/server/dist/services/issueService.d.ts.map +1 -1
- package/packages/server/dist/services/issueService.js +10 -2
- package/packages/server/dist/services/issueService.js.map +1 -1
- package/packages/server/dist/services/manualSyncService.d.ts +19 -0
- package/packages/server/dist/services/manualSyncService.d.ts.map +1 -0
- package/packages/server/dist/services/manualSyncService.js +110 -0
- package/packages/server/dist/services/manualSyncService.js.map +1 -0
- package/packages/server/dist/services/notificationService.d.ts.map +1 -1
- package/packages/server/dist/services/notificationService.js +34 -9
- package/packages/server/dist/services/notificationService.js.map +1 -1
- package/packages/server/dist/services/preferencesService.d.ts.map +1 -1
- package/packages/server/dist/services/preferencesService.js +8 -1
- package/packages/server/dist/services/preferencesService.js.map +1 -1
- package/packages/server/dist/services/projectService.d.ts +5 -0
- package/packages/server/dist/services/projectService.d.ts.map +1 -1
- package/packages/server/dist/services/projectService.js +42 -2
- package/packages/server/dist/services/projectService.js.map +1 -1
- package/packages/server/dist/services/ptyService.d.ts +1 -0
- package/packages/server/dist/services/ptyService.d.ts.map +1 -1
- package/packages/server/dist/services/ptyService.js +36 -5
- package/packages/server/dist/services/ptyService.js.map +1 -1
- package/packages/server/dist/services/queueService.d.ts.map +1 -1
- package/packages/server/dist/services/queueService.js +83 -14
- package/packages/server/dist/services/queueService.js.map +1 -1
- package/packages/server/dist/services/sessionBufferManager.d.ts.map +1 -1
- package/packages/server/dist/services/sessionBufferManager.js +26 -0
- package/packages/server/dist/services/sessionBufferManager.js.map +1 -1
- package/packages/server/dist/services/sessionService.d.ts +4 -3
- package/packages/server/dist/services/sessionService.d.ts.map +1 -1
- package/packages/server/dist/services/sessionService.js +5 -4
- package/packages/server/dist/services/sessionService.js.map +1 -1
- package/packages/server/dist/services/snippetService.d.ts +54 -0
- package/packages/server/dist/services/snippetService.d.ts.map +1 -0
- package/packages/server/dist/services/snippetService.js +371 -0
- package/packages/server/dist/services/snippetService.js.map +1 -0
- package/packages/server/dist/services/utils/applyYamlFrontmatterPatch.d.ts +46 -0
- package/packages/server/dist/services/utils/applyYamlFrontmatterPatch.d.ts.map +1 -0
- package/packages/server/dist/services/utils/applyYamlFrontmatterPatch.js +125 -0
- package/packages/server/dist/services/utils/applyYamlFrontmatterPatch.js.map +1 -0
- package/packages/server/dist/services/webPushService.d.ts.map +1 -1
- package/packages/server/dist/services/webPushService.js +8 -1
- package/packages/server/dist/services/webPushService.js.map +1 -1
- package/packages/server/dist/snippets/split-commit +9 -0
- package/packages/server/dist/utils/applySecretsPolicy.d.ts +53 -0
- package/packages/server/dist/utils/applySecretsPolicy.d.ts.map +1 -0
- package/packages/server/dist/utils/applySecretsPolicy.js +204 -0
- package/packages/server/dist/utils/applySecretsPolicy.js.map +1 -0
- package/packages/server/dist/utils/assertNoSecretOnShared.d.ts +40 -0
- package/packages/server/dist/utils/assertNoSecretOnShared.d.ts.map +1 -0
- package/packages/server/dist/utils/assertNoSecretOnShared.js +47 -0
- package/packages/server/dist/utils/assertNoSecretOnShared.js.map +1 -0
- package/packages/server/dist/utils/effortUtils.d.ts +21 -0
- package/packages/server/dist/utils/effortUtils.d.ts.map +1 -0
- package/packages/server/dist/utils/effortUtils.js +36 -0
- package/packages/server/dist/utils/effortUtils.js.map +1 -0
- package/packages/server/dist/utils/gitignoreFilter.d.ts +23 -0
- package/packages/server/dist/utils/gitignoreFilter.d.ts.map +1 -0
- package/packages/server/dist/utils/gitignoreFilter.js +42 -0
- package/packages/server/dist/utils/gitignoreFilter.js.map +1 -0
- package/packages/server/dist/utils/harnessBundleSchema.d.ts +105 -0
- package/packages/server/dist/utils/harnessBundleSchema.d.ts.map +1 -0
- package/packages/server/dist/utils/harnessBundleSchema.js +79 -0
- package/packages/server/dist/utils/harnessBundleSchema.js.map +1 -0
- package/packages/server/dist/utils/harnessPaths.d.ts +34 -0
- package/packages/server/dist/utils/harnessPaths.d.ts.map +1 -0
- package/packages/server/dist/utils/harnessPaths.js +124 -0
- package/packages/server/dist/utils/harnessPaths.js.map +1 -0
- package/packages/server/dist/utils/pathUtils.d.ts +3 -2
- package/packages/server/dist/utils/pathUtils.d.ts.map +1 -1
- package/packages/server/dist/utils/pathUtils.js +26 -2
- package/packages/server/dist/utils/pathUtils.js.map +1 -1
- package/packages/server/dist/utils/secretHeuristic.d.ts +72 -0
- package/packages/server/dist/utils/secretHeuristic.d.ts.map +1 -0
- package/packages/server/dist/utils/secretHeuristic.js +163 -0
- package/packages/server/dist/utils/secretHeuristic.js.map +1 -0
- package/packages/server/dist/utils/secretPlaceholderNamer.d.ts +41 -0
- package/packages/server/dist/utils/secretPlaceholderNamer.d.ts.map +1 -0
- package/packages/server/dist/utils/secretPlaceholderNamer.js +81 -0
- package/packages/server/dist/utils/secretPlaceholderNamer.js.map +1 -0
- package/packages/server/dist/utils/serverPathResolver.d.ts +29 -0
- package/packages/server/dist/utils/serverPathResolver.d.ts.map +1 -0
- package/packages/server/dist/utils/serverPathResolver.js +59 -0
- package/packages/server/dist/utils/serverPathResolver.js.map +1 -0
- package/packages/server/dist/utils/snippetPaths.d.ts +61 -0
- package/packages/server/dist/utils/snippetPaths.d.ts.map +1 -0
- package/packages/server/dist/utils/snippetPaths.js +123 -0
- package/packages/server/dist/utils/snippetPaths.js.map +1 -0
- package/packages/server/dist/utils/structuredEditor.d.ts +34 -0
- package/packages/server/dist/utils/structuredEditor.d.ts.map +1 -0
- package/packages/server/dist/utils/structuredEditor.js +111 -0
- package/packages/server/dist/utils/structuredEditor.js.map +1 -0
- package/packages/server/package.json +6 -2
- package/packages/server/resources/internals/INDEX.md +23 -0
- package/packages/server/resources/internals/harness-files.md +63 -0
- package/packages/server/resources/internals/image-storage.md +43 -0
- package/packages/server/resources/manual/01-getting-started.md +104 -0
- package/packages/server/resources/manual/02-chat.md +285 -0
- package/packages/server/resources/manual/03-sessions.md +48 -0
- package/packages/server/resources/manual/04-slash-commands-favorites.md +152 -0
- package/packages/server/resources/manual/05-projects.md +74 -0
- package/packages/server/resources/manual/06-file-explorer-editor.md +90 -0
- package/packages/server/resources/manual/07-git.md +94 -0
- package/packages/server/resources/manual/08-terminal.md +59 -0
- package/packages/server/resources/manual/09-queue-runner.md +262 -0
- package/packages/server/resources/manual/10-project-board.md +193 -0
- package/packages/server/resources/manual/11-bmad-method-integration.md +128 -0
- package/packages/server/resources/manual/12-harness-workbench.md +175 -0
- package/packages/server/resources/manual/13-settings.md +241 -0
- package/packages/server/resources/manual/14-keyboard-shortcuts.md +68 -0
- package/packages/server/resources/manual/15-environment-variables.md +28 -0
- package/packages/server/resources/manual/16-troubleshooting.md +110 -0
- package/packages/server/resources/manual/INDEX.md +60 -0
- package/packages/shared/dist/index.d.ts +3 -0
- package/packages/shared/dist/index.d.ts.map +1 -1
- package/packages/shared/dist/index.js +6 -0
- package/packages/shared/dist/index.js.map +1 -1
- package/packages/shared/dist/types/command.d.ts +3 -3
- package/packages/shared/dist/types/command.d.ts.map +1 -1
- package/packages/shared/dist/types/fileSystem.d.ts +19 -0
- package/packages/shared/dist/types/fileSystem.d.ts.map +1 -1
- package/packages/shared/dist/types/fileSystem.js +5 -0
- package/packages/shared/dist/types/fileSystem.js.map +1 -1
- package/packages/shared/dist/types/git.d.ts +6 -1
- package/packages/shared/dist/types/git.d.ts.map +1 -1
- package/packages/shared/dist/types/git.js.map +1 -1
- package/packages/shared/dist/types/harness.d.ts +1211 -0
- package/packages/shared/dist/types/harness.d.ts.map +1 -0
- package/packages/shared/dist/types/harness.js +107 -0
- package/packages/shared/dist/types/harness.js.map +1 -0
- package/packages/shared/dist/types/harnessBundle.d.ts +170 -0
- package/packages/shared/dist/types/harnessBundle.d.ts.map +1 -0
- package/packages/shared/dist/types/harnessBundle.js +18 -0
- package/packages/shared/dist/types/harnessBundle.js.map +1 -0
- package/packages/shared/dist/types/history.d.ts +7 -0
- package/packages/shared/dist/types/history.d.ts.map +1 -1
- package/packages/shared/dist/types/preferences.d.ts +4 -1
- package/packages/shared/dist/types/preferences.d.ts.map +1 -1
- package/packages/shared/dist/types/preferences.js +1 -0
- package/packages/shared/dist/types/preferences.js.map +1 -1
- package/packages/shared/dist/types/queue.d.ts +9 -0
- package/packages/shared/dist/types/queue.d.ts.map +1 -1
- package/packages/shared/dist/types/sdk.d.ts +42 -1
- package/packages/shared/dist/types/sdk.d.ts.map +1 -1
- package/packages/shared/dist/types/sdk.js +26 -2
- package/packages/shared/dist/types/sdk.js.map +1 -1
- package/packages/shared/dist/types/websocket.d.ts +24 -0
- package/packages/shared/dist/types/websocket.d.ts.map +1 -1
- package/packages/shared/dist/utils/markdownSections.d.ts +50 -0
- package/packages/shared/dist/utils/markdownSections.d.ts.map +1 -0
- package/packages/shared/dist/utils/markdownSections.js +111 -0
- package/packages/shared/dist/utils/markdownSections.js.map +1 -0
- package/packages/shared/dist/utils/queueParser.d.ts.map +1 -1
- package/packages/shared/dist/utils/queueParser.js +104 -0
- package/packages/shared/dist/utils/queueParser.js.map +1 -1
- package/scripts/build-manual-shards.mjs +100 -0
- package/scripts/mock-telegram.mjs +172 -0
- package/scripts/run-integration-test.mjs +362 -0
- package/packages/client/dist/assets/index-Bf0D9oVJ.css +0 -32
- package/packages/client/dist/assets/index-CRmzoqHy.js +0 -2
- package/packages/client/dist/assets/index-CszGQ29O.js +0 -1432
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
## 9. Queue Runner
|
|
2
|
+
|
|
3
|
+
The Queue Runner automates sequences of prompts for batch processing.
|
|
4
|
+
|
|
5
|
+
### 9.1 Queue Editor
|
|
6
|
+
|
|
7
|
+
The editor provides **syntax highlighting**:
|
|
8
|
+
|
|
9
|
+
- **Directives** (`@new`, `@pause`, etc.) — purple
|
|
10
|
+
- **Directive arguments** — teal
|
|
11
|
+
- **Multiline markers** (`@(`, `@)`) — blue
|
|
12
|
+
- **Comments** (`#`) — gray
|
|
13
|
+
- **Regular prompts** — default text color
|
|
14
|
+
|
|
15
|
+
A non-selectable **line-number gutter** runs down the left side, sticky during both vertical and horizontal scroll, so error messages like "parse error at line 47" become directly clickable without manual counting.
|
|
16
|
+
|
|
17
|
+
**Toolbar buttons:**
|
|
18
|
+
- **Run** (Play icon) — Start queue execution; also available via `Ctrl+Enter` / `Cmd+Enter`
|
|
19
|
+
- **Load File** (Upload icon) — Import a `.txt`, `.qlaude-queue`, or similar script file (max 1 MB). Useful for loading shipped sample templates such as the BMad story workflow (see §9.9)
|
|
20
|
+
- **Template** (FileText icon) — Open the template dialog (see §9.9)
|
|
21
|
+
- **Word Wrap** (WrapText icon) — Toggle line wrapping (persisted across sessions)
|
|
22
|
+
|
|
23
|
+
**Editor behavior:**
|
|
24
|
+
- **Validation warnings** displayed above the editor (e.g., missing arguments, unclosed multiline blocks, unknown directives). When more than one warning exists, only the **most recent** is shown with a `(+N)` count badge for the others — keeps the warning area from pushing the editor down on scripts with many issues
|
|
25
|
+
- **Empty state** shows a visual command reference overlay listing all available directives
|
|
26
|
+
- Editor is hidden during queue execution, replaced by the runner panel
|
|
27
|
+
|
|
28
|
+
Each line is one prompt. Special commands start with `@`. Empty lines are ignored.
|
|
29
|
+
|
|
30
|
+
### 9.2 Special Commands
|
|
31
|
+
|
|
32
|
+
| Command | Description |
|
|
33
|
+
|---------|-------------|
|
|
34
|
+
| `@new` | Start a new chat session before the next prompt |
|
|
35
|
+
| `@save <name>` | Save the current session with a name |
|
|
36
|
+
| `@load <name>` | Load a previously saved session |
|
|
37
|
+
| `@pause [reason]` | Pause execution; optional reason text shown in the pause banner |
|
|
38
|
+
| `@model <name>` | Switch Claude model (e.g., `@model opus`) |
|
|
39
|
+
| `@delay <ms>` | Wait before the next prompt (positive integer in ms, e.g., `@delay 5000`) |
|
|
40
|
+
| `@pauseword "<keyword>"` | Set a keyword that auto-pauses the queue when found in Claude's response. Use `@pauseword ""` to clear |
|
|
41
|
+
| `@loop max=N [until="TOKEN"] [on_exceed="pause\|continue"]` | Start a loop block that repeats up to N times (see §9.5) |
|
|
42
|
+
| `@end` | End a loop block |
|
|
43
|
+
| `@label <name>` | Define a forward jump target (see §9.6) |
|
|
44
|
+
| `@jumpif "<token>" <label>` | Jump to `<label>` if the previous prompt response contains `<token>` (see §9.6) |
|
|
45
|
+
| `@(` | Start a multiline prompt (all lines until `@)` are treated as one prompt) |
|
|
46
|
+
| `@)` | End a multiline prompt |
|
|
47
|
+
| `# comment` | Comment line (not sent to Claude) |
|
|
48
|
+
| `\@` | Escape: send literal `@` as a prompt (not treated as directive) |
|
|
49
|
+
|
|
50
|
+
- Missing required arguments (e.g., `@save` without a name) produce a validation warning
|
|
51
|
+
- Unknown directives (e.g., `@unknown`) produce a warning and are sent as regular prompts
|
|
52
|
+
|
|
53
|
+
### 9.3 Multiline Prompts
|
|
54
|
+
|
|
55
|
+
For prompts that span multiple lines, use `@(` and `@)`:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
@(
|
|
59
|
+
Please review this code and check for:
|
|
60
|
+
1. Security vulnerabilities
|
|
61
|
+
2. Performance issues
|
|
62
|
+
3. Code style violations
|
|
63
|
+
@)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
An unclosed multiline block (missing `@)`) produces a warning and is still sent as a single prompt.
|
|
67
|
+
|
|
68
|
+
### 9.4 Pauseword
|
|
69
|
+
|
|
70
|
+
The `@pauseword` directive lets you set a keyword that automatically pauses queue execution when found in Claude's response.
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
@pauseword "DONE"
|
|
74
|
+
Implement the login feature
|
|
75
|
+
Fix any remaining issues
|
|
76
|
+
@pauseword ""
|
|
77
|
+
This prompt runs without pauseword
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
- **Set** — `@pauseword "KEYWORD"` activates the keyword for all subsequent items
|
|
81
|
+
- **Clear** — `@pauseword ""` (empty string) removes the active pauseword
|
|
82
|
+
- When Claude's response contains the keyword, the queue pauses for review
|
|
83
|
+
- The pauseword is snapshotted at the start of each prompt execution
|
|
84
|
+
- Quotes are required around the keyword; mismatched or empty quotes produce a validation warning
|
|
85
|
+
|
|
86
|
+
### 9.5 Loop Blocks
|
|
87
|
+
|
|
88
|
+
The `@loop`/`@end` directives create iterative workflows that repeat a block of prompts.
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
@loop max=5 until="SUCCESS" on_exceed="pause"
|
|
92
|
+
Review the code for issues
|
|
93
|
+
Fix any problems found
|
|
94
|
+
@end
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Parameters:**
|
|
98
|
+
|
|
99
|
+
| Parameter | Required | Description |
|
|
100
|
+
|-----------|----------|-------------|
|
|
101
|
+
| `max=N` | Yes | Maximum number of iterations (positive integer) |
|
|
102
|
+
| `until="TOKEN"` | No | Stop looping when this token appears in Claude's response |
|
|
103
|
+
| `on_exceed="pause\|continue"` | No | Action when max iterations reached without the until token (default: `pause`) |
|
|
104
|
+
|
|
105
|
+
**Behavior:**
|
|
106
|
+
- Each iteration executes all prompts inside the block sequentially
|
|
107
|
+
- If `until` token is detected in a response, the loop exits early
|
|
108
|
+
- When `max` is reached without the `until` token: `pause` halts for review, `continue` moves to the next queue item
|
|
109
|
+
- During execution, the banner shows loop progress (e.g., "Loop 2/5") with inner item tracking
|
|
110
|
+
|
|
111
|
+
### 9.6 Conditional Jump
|
|
112
|
+
|
|
113
|
+
The `@label` and `@jumpif` directives let you skip a range of queue items based on the previous prompt response. They are designed for fast-paths such as "if the QA gate already passed, skip the fix loop".
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
%qa-review {story_num}
|
|
117
|
+
@(
|
|
118
|
+
If the QA gate is PASS, write exactly QA_GATE_PASS as the last line.
|
|
119
|
+
@)
|
|
120
|
+
@jumpif "QA_GATE_PASS" qa_done
|
|
121
|
+
|
|
122
|
+
@loop max=5 until="QA_GATE_PASS" on_exceed="pause"
|
|
123
|
+
%apply-qa-fixes {story_num}
|
|
124
|
+
%qa-review {story_num}
|
|
125
|
+
@(...QA_GATE_PASS check...@)
|
|
126
|
+
@end
|
|
127
|
+
|
|
128
|
+
@label qa_done
|
|
129
|
+
|
|
130
|
+
@new
|
|
131
|
+
%commit-and-done {story_num}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**`@label <name>`** — declares a jump target. The name must start with a letter or underscore and contain only letters, digits, underscore, or hyphen.
|
|
135
|
+
|
|
136
|
+
**`@jumpif "<token>" <label>`** — when reached, looks for `<token>` (substring match) in the response of the immediately preceding prompt. If found, the executor jumps directly to the matching `@label`, skipping every item in between. If not found, execution falls through to the next item.
|
|
137
|
+
|
|
138
|
+
**Rules:**
|
|
139
|
+
- **Forward only** — the target `@label` must appear later in the script than the `@jumpif`. Backward jumps are rejected with a parse warning.
|
|
140
|
+
- **Not allowed inside `@loop`** — both `@label` and `@jumpif` are rejected with a parse warning when nested inside a loop block. Use `until` for loop exit conditions instead.
|
|
141
|
+
- **Quoted token** — the token must be wrapped in double quotes and cannot contain spaces or be empty. Mismatched or missing quotes produce a parse warning.
|
|
142
|
+
- **Unique label names** — duplicate `@label` definitions emit a warning; only the first one is registered.
|
|
143
|
+
- **Missing target at parse time** — if the target label is never defined later in the script, a parse warning is emitted.
|
|
144
|
+
- **Missing target at runtime** — if the script is edited mid-run and the label disappears, the jump is silently skipped and execution falls through.
|
|
145
|
+
|
|
146
|
+
The token search uses a plain substring match against the previous prompt's complete response text, so prefer artificial single-word tokens like `QA_GATE_PASS` over natural phrases.
|
|
147
|
+
|
|
148
|
+
**Runner panel display** — In the queue runner item list, `@label` items show as `Label: <name>` and `@jumpif` items show as `Jump if: "<token>" → <target>`, so the control flow is easy to follow at a glance while the queue runs.
|
|
149
|
+
|
|
150
|
+
**`@new` boundary** — the "previous prompt response" buffer is **not** cleared by `@new`. It only updates when the next prompt actually runs. So a `@jumpif` placed immediately after `@new` (with no prompt in between) will still see the *previous* session's last prompt response. Place a real prompt between `@new` and `@jumpif` if you need a fresh evaluation.
|
|
151
|
+
|
|
152
|
+
**UI display of skipped items** — when a jump fires, the items between the `@jumpif` and its `@label` are not executed, but the runner panel currently shows them with the same green check icon as completed items. This is a cosmetic limitation; the items did not run and their session-link slots remain empty. The progress bar still advances correctly to the post-label position.
|
|
153
|
+
|
|
154
|
+
### 9.7 Running the Queue
|
|
155
|
+
|
|
156
|
+
1. Write your prompts in the queue editor
|
|
157
|
+
2. Click **"Run"** or press `Ctrl+Enter` to start
|
|
158
|
+
3. The editor switches to the **Runner Panel** showing:
|
|
159
|
+
- **Progress bar** — With percentage and count (completed / total)
|
|
160
|
+
- **Color coding** — Blue (running), amber (paused), green (completed), red (error)
|
|
161
|
+
- **Item list** with per-item status icons:
|
|
162
|
+
- Spinner (blue) — currently executing
|
|
163
|
+
- Pause icon (amber) — paused at this item
|
|
164
|
+
- Checkmark (green) — completed (shown with strikethrough text)
|
|
165
|
+
- X circle (red) — error
|
|
166
|
+
- Clock (gray) — pending
|
|
167
|
+
- **Auto-scroll** to the current item
|
|
168
|
+
4. **Controls:**
|
|
169
|
+
- **Pause** — Schedule a pause after the current item finishes. While an item is executing, this sets a "pause reservation" rather than pausing immediately. A **Cancel Pause** button appears to revoke the reservation before the item completes.
|
|
170
|
+
- **Resume** — Shown during paused state; resumes execution from the next pending item
|
|
171
|
+
- **Edit Script** — Shown during paused state; switches to the text editor with remaining items serialized as script text. Edit freely, then click **Apply** to replace pending items or **Cancel** to discard changes.
|
|
172
|
+
- **Abort** — Always available (running or paused); requires confirmation
|
|
173
|
+
- **"Go to Session"** link — Navigate to the active chat session
|
|
174
|
+
5. **Session links** — Completed items show a link icon to navigate to their associated session
|
|
175
|
+
6. **"Back to Editor"** button — Dismiss the runner panel after completion or error
|
|
176
|
+
|
|
177
|
+
**During execution (pending items only):**
|
|
178
|
+
- **Drag-and-drop reorder** — Drag pending items by the grip handle to reorder
|
|
179
|
+
- **Delete** — Click the trash icon to remove a pending item
|
|
180
|
+
- **Add** — Inline input at the bottom to add new items to the queue
|
|
181
|
+
|
|
182
|
+
### 9.8 Session Locking
|
|
183
|
+
|
|
184
|
+
While the queue is running, a **sticky banner** appears at the top of chat sessions:
|
|
185
|
+
|
|
186
|
+
- **Running** (blue) — Spinner + progress (current/total) + current prompt preview (desktop). Inside a `@loop` block, a loop badge shows iteration progress (e.g., "Loop 2/5")
|
|
187
|
+
- **Pause requested** (amber pulse) — Pause scheduled after current item finishes; cancel pause button shown
|
|
188
|
+
- **Waiting for input** (purple pulse) — Queue paused for permission approval or user question; respond in the session to continue
|
|
189
|
+
- **Paused** (amber) — Pause icon + progress; pause reason shown below if provided
|
|
190
|
+
- **Error-paused** (red) — Alert icon + error details
|
|
191
|
+
- **Completed** (green) — Checkmark + total count; dismissible with X button
|
|
192
|
+
- **Error-stopped** (red) — Error message + link to queue editor; dismissible
|
|
193
|
+
|
|
194
|
+
**Expandable item list:**
|
|
195
|
+
- When 2+ items exist, click the chevron to expand a scrollable list of all queue items with status indicators
|
|
196
|
+
- Currently executing items are highlighted; completed items appear with strikethrough text
|
|
197
|
+
|
|
198
|
+
**Banner controls:**
|
|
199
|
+
- **Pause / Cancel Pause / Resume / Abort** buttons directly in the banner (icon-only on mobile, icon+text on desktop)
|
|
200
|
+
- **"Queue Editor"** link — Navigate to the full queue editor (desktop only)
|
|
201
|
+
- **"Go to Session"** link — Navigate to the active queue session
|
|
202
|
+
|
|
203
|
+
**On other sessions:**
|
|
204
|
+
- A banner shows "Queue running in another session" with a link to navigate to it
|
|
205
|
+
- Other sessions remain fully accessible
|
|
206
|
+
|
|
207
|
+
### 9.9 Templates
|
|
208
|
+
|
|
209
|
+
Templates generate queue scripts by combining a template pattern with story selections from your project's PRD.
|
|
210
|
+
|
|
211
|
+
**Template Dialog** (opened via FileText icon in toolbar):
|
|
212
|
+
|
|
213
|
+
The dialog has two main sections:
|
|
214
|
+
|
|
215
|
+
**1. Template Source** — Three tabs:
|
|
216
|
+
- **Input** — Type template text directly in the editor with word wrap toggle; variable hint shown: `{story_num}, {epic_num}, {story_index}, {story_title}, {date}`
|
|
217
|
+
- **File** — Upload a `.txt` or `.qlaude-queue` file (max 100KB) via drag area
|
|
218
|
+
- **Saved** — Browse, select, edit, or delete previously saved templates
|
|
219
|
+
|
|
220
|
+
**2. Story Selection** — Stories extracted from your PRD:
|
|
221
|
+
- Grouped by epic with collapsible sections and checkbox selection
|
|
222
|
+
- **Select All / Deselect All** toggle
|
|
223
|
+
- **"Pause between epics"** checkbox — Inserts `@pause` between different epic groups
|
|
224
|
+
- Each epic header shows selected/total count
|
|
225
|
+
|
|
226
|
+
**Template Variables:**
|
|
227
|
+
|
|
228
|
+
| Variable | Description | Example |
|
|
229
|
+
|----------|-------------|---------|
|
|
230
|
+
| `{story_num}` | Full story number | `3.1` |
|
|
231
|
+
| `{epic_num}` | Epic number | `3` |
|
|
232
|
+
| `{story_index}` | Story index within epic | `1` |
|
|
233
|
+
| `{story_title}` | Story title (empty if not found) | `Login Page UI` |
|
|
234
|
+
| `{date}` | Execution date (YYYY-MM-DD) | `2026-03-18` |
|
|
235
|
+
|
|
236
|
+
```
|
|
237
|
+
@load epic-{epic_num}-base
|
|
238
|
+
Implement Story {story_num}: {story_title}
|
|
239
|
+
@save {date}/epic-{epic_num}/story-{story_index}-done
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
**Live Preview** — Shows the generated script with syntax highlighting below the template and story selection.
|
|
243
|
+
|
|
244
|
+
**Template Management:**
|
|
245
|
+
- **Save** — Save the current template with a name (inline form)
|
|
246
|
+
- **Update** — Overwrite a previously saved template
|
|
247
|
+
- **Delete** — Remove a saved template (with confirmation)
|
|
248
|
+
- Templates are saved per-project
|
|
249
|
+
|
|
250
|
+
**Bundled sample template:**
|
|
251
|
+
|
|
252
|
+
The Hammoc git repository ships a ready-to-use BMad story workflow template at `docs/queue-templates/bmad-story-workflow.qlaude-queue`. It drives a single story through Draft → Validate → Develop → QA Review → Commit and uses `@label` / `@jumpif` (see §9.6) so a first-pass QA PASS skips the fix loop entirely. To use it, download the file from the GitHub repository and import it via the **Load File** toolbar button, or paste its contents into the editor. The `{story_num}` placeholder must be replaced before running.
|
|
253
|
+
|
|
254
|
+
### 9.10 Queue Status Badge
|
|
255
|
+
|
|
256
|
+
A badge on the project card and session list shows queue status:
|
|
257
|
+
|
|
258
|
+
- **Running** — Blue badge with play icon
|
|
259
|
+
- **Paused** — Amber badge with pause icon
|
|
260
|
+
- **Error** — Red badge with alert icon
|
|
261
|
+
- **Idle** — No badge shown
|
|
262
|
+
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
## 10. Project Board
|
|
2
|
+
|
|
3
|
+
Visual task and issue management for your projects. The board displays three card types: Issues, Stories, and Epics.
|
|
4
|
+
|
|
5
|
+
### 10.1 Kanban Board
|
|
6
|
+
|
|
7
|
+
The default view is a scrollable Kanban board:
|
|
8
|
+
|
|
9
|
+
- **Columns** represent statuses — each with a colored top border, label, and item count badge
|
|
10
|
+
- **Cards** display issues, stories, and epics with type badges: **[I]** (amber), **[S]** (blue), **[E]** (purple)
|
|
11
|
+
- **Horizontal scroll** — overflow columns peek from the edge (no drag-and-drop between columns). On desktop, vertical mouse wheel scrolling in empty column areas is automatically converted to horizontal scroll
|
|
12
|
+
- Status changes are made via the card **context menu** (⋮), not by dragging
|
|
13
|
+
- Columns are fully customizable (see §10.11)
|
|
14
|
+
|
|
15
|
+
### 10.2 List View
|
|
16
|
+
|
|
17
|
+
Switch to an accordion-style list view:
|
|
18
|
+
|
|
19
|
+
- Items grouped by status column with chevron toggle
|
|
20
|
+
- **Item count** displayed next to each group header
|
|
21
|
+
- Only **non-empty columns** are shown (empty ones are hidden)
|
|
22
|
+
- On mobile, the last column auto-collapses to save space
|
|
23
|
+
- Compact card layout for browsing many items at once
|
|
24
|
+
|
|
25
|
+
### 10.3 Creating Issues
|
|
26
|
+
|
|
27
|
+
Click **"New Issue"** to create:
|
|
28
|
+
|
|
29
|
+
| Field | Details |
|
|
30
|
+
|-------|---------|
|
|
31
|
+
| **Title** | Required, max 200 characters |
|
|
32
|
+
| **Description** | Optional, supports markdown |
|
|
33
|
+
| **Type** | Bug, Improvement |
|
|
34
|
+
| **Severity** | Low, Medium, High, Critical |
|
|
35
|
+
| **Attachments** | Optional — drag-and-drop, click to browse, or paste from clipboard |
|
|
36
|
+
|
|
37
|
+
Status is automatically set to **Open** (not a user-editable field). Each issue is assigned a sequential ID in the **ISSUE-N** format (e.g., ISSUE-1, ISSUE-2) automatically.
|
|
38
|
+
|
|
39
|
+
### 10.4 Editing Issues
|
|
40
|
+
|
|
41
|
+
Click the context menu (⋮) → **Edit** on any issue card:
|
|
42
|
+
|
|
43
|
+
- Same fields as the create dialog (title, description, type, severity)
|
|
44
|
+
- **Existing attachments** are shown with a delete button to remove each one
|
|
45
|
+
- **Add new attachments** via drag-and-drop, click, or paste
|
|
46
|
+
|
|
47
|
+
### 10.5 Issue Types
|
|
48
|
+
|
|
49
|
+
- **Bug** — Something is broken and needs fixing
|
|
50
|
+
- **Improvement** — Enhancement to existing functionality
|
|
51
|
+
|
|
52
|
+
### 10.6 Severity Levels
|
|
53
|
+
|
|
54
|
+
Severity badges are color-coded on cards:
|
|
55
|
+
|
|
56
|
+
- **Critical** — Red badge, urgent, needs immediate attention
|
|
57
|
+
- **High** — Orange badge, important, prioritize soon
|
|
58
|
+
- **Medium** — Yellow badge, should be addressed in normal workflow
|
|
59
|
+
- **Low** — Gray badge, minor issue, no urgency
|
|
60
|
+
|
|
61
|
+
### 10.7 Status Workflow
|
|
62
|
+
|
|
63
|
+
Items follow this lifecycle. Issues and stories use overlapping but distinct subsets of these statuses:
|
|
64
|
+
|
|
65
|
+
**Issue statuses:**
|
|
66
|
+
```
|
|
67
|
+
Open → In Progress → Ready for Done → Done → Closed
|
|
68
|
+
↓
|
|
69
|
+
Promoted
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Story statuses (with QA gate):**
|
|
73
|
+
```
|
|
74
|
+
Draft → Approved → In Progress → Ready for Review → Done
|
|
75
|
+
↓
|
|
76
|
+
┌────────┴────────┐
|
|
77
|
+
QA Passed QA Failed
|
|
78
|
+
QA Waived QA Concerns
|
|
79
|
+
↓ ↓
|
|
80
|
+
Ready for Done QA Fixed → (re-review)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**QA gate badges** — When a story reaches "Ready for Review", the QA gate result determines the compound badge:
|
|
84
|
+
- **QA Passed** — Quality review passed
|
|
85
|
+
- **QA Waived** — Quality review waived/skipped
|
|
86
|
+
- **QA Failed** — Quality review failed, fixes needed
|
|
87
|
+
- **QA Concerns** — Quality review raised concerns
|
|
88
|
+
- **QA Fixed** — Fixes applied, ready for re-review
|
|
89
|
+
|
|
90
|
+
Not all statuses are required. Use the context menu to change status directly. **Promoted** indicates an issue that has been escalated to a story or epic.
|
|
91
|
+
|
|
92
|
+
### 10.8 File Attachments
|
|
93
|
+
|
|
94
|
+
Attach image files to issues:
|
|
95
|
+
|
|
96
|
+
- Up to **10 files** per issue
|
|
97
|
+
- Maximum **10MB** per file
|
|
98
|
+
- Supported formats: PNG, JPEG, GIF, WebP
|
|
99
|
+
- Upload methods: **drag-and-drop** onto the attachment zone, **click** to browse, or **paste** from clipboard
|
|
100
|
+
- Attachments are managed in the issue create/edit dialogs — they are not shown inline on board cards
|
|
101
|
+
- Preview thumbnails are shown in a grid with a remove button (×) for each
|
|
102
|
+
|
|
103
|
+
### 10.9 Card Context Menu
|
|
104
|
+
|
|
105
|
+
Click the **⋮** button on any card to open the context menu. Actions vary by card type:
|
|
106
|
+
|
|
107
|
+
**Issue actions (by status):**
|
|
108
|
+
- **Open:**
|
|
109
|
+
- **Quick Fix** — Marks the issue as Done and opens a dev session with the issue context
|
|
110
|
+
- **Promote to Story** — Convert an issue into a development story (disabled if already linked)
|
|
111
|
+
- **Promote to Epic** — Elevate an issue into an epic (disabled if already linked)
|
|
112
|
+
- **Edit** — Open the issue edit dialog
|
|
113
|
+
- **Close** — Close the issue
|
|
114
|
+
- **In Progress:**
|
|
115
|
+
- **Resume Dev** — Resume development session for this issue
|
|
116
|
+
- **Ready for Done:**
|
|
117
|
+
- **Commit and Mark Done** — Commit related changes and mark as Done
|
|
118
|
+
- **Mark Done** — Mark as Done without committing
|
|
119
|
+
- **Closed / Done / Promoted:**
|
|
120
|
+
- **Reopen** — Reopen the issue
|
|
121
|
+
- **Delete** — Permanently remove the issue (available in all states)
|
|
122
|
+
|
|
123
|
+
**Story actions (by status):**
|
|
124
|
+
- **Draft:**
|
|
125
|
+
- **Validate and Fix** — Validate the story draft and fix issues
|
|
126
|
+
- **Validate Only** — Validate the story draft without fix
|
|
127
|
+
- **Approved:**
|
|
128
|
+
- **Start Development** — Begin implementing the story
|
|
129
|
+
- **Validate and Fix** / **Validate Only** — Re-validate if needed
|
|
130
|
+
- **In Progress:**
|
|
131
|
+
- **Resume Development** — Continue implementing the story
|
|
132
|
+
- **QA Passed / QA Waived:**
|
|
133
|
+
- **Commit and Complete Story** — Commit related changes and mark as Done
|
|
134
|
+
- **Complete Story** — Mark as Done without committing
|
|
135
|
+
- **Request QA Review** — Re-request quality review
|
|
136
|
+
- **QA Failed / QA Concerns:**
|
|
137
|
+
- **Apply QA Fix** — Apply fixes for QA issues
|
|
138
|
+
- **QA Fixed:**
|
|
139
|
+
- **Review Story** — Request re-review after fixes
|
|
140
|
+
- **Ready for Review / Ready for Done (no QA gate):**
|
|
141
|
+
- **Review Story** — Request quality review
|
|
142
|
+
|
|
143
|
+
**Epic actions:**
|
|
144
|
+
- **View Sub-Stories** — Open a dialog showing all stories under the epic
|
|
145
|
+
- **Create Next Story** — Draft the next story for this epic with the SM agent (hidden when the epic is Done)
|
|
146
|
+
|
|
147
|
+
The menu supports keyboard navigation (Arrow Up/Down, Enter, Escape).
|
|
148
|
+
|
|
149
|
+
### 10.10 Card Behavior
|
|
150
|
+
|
|
151
|
+
Cards display information based on their type:
|
|
152
|
+
|
|
153
|
+
- **Type badge** — [I], [S], or [E] with color coding
|
|
154
|
+
- **Severity badge** — For issues only, color-coded by level
|
|
155
|
+
- **Status badge** — Color-coded status indicator (stories also show QA gate badges such as QA Passed, QA Failed, etc.)
|
|
156
|
+
- **Issue number prefix** — Issues now show a short `#N` prefix (e.g., `#1`, `#42`) in monospace gray immediately before the title, so a board card and a chat mention or filename like `ISSUE-42.md` can be matched at a glance. Legacy issues without an `ISSUE-N` ID do not get a prefix
|
|
157
|
+
- **Epic progress bar** — On epic cards, shows completion percentage with done/total count
|
|
158
|
+
- **Story epic number** — Shows the parent epic reference
|
|
159
|
+
- **Unmapped status warning** — ⚠ triangle icon when a card's status doesn't map to any column
|
|
160
|
+
|
|
161
|
+
**Click behavior:** Clicking a card navigates to its associated file in the development session.
|
|
162
|
+
|
|
163
|
+
### 10.11 Board Configuration
|
|
164
|
+
|
|
165
|
+
Customize the board layout via the gear icon:
|
|
166
|
+
|
|
167
|
+
**Columns:**
|
|
168
|
+
- Add, remove, and **reorder** columns (Arrow Up/Down buttons)
|
|
169
|
+
- Maximum **10 columns** allowed
|
|
170
|
+
- **Required columns** (mapped to essential statuses) cannot be deleted
|
|
171
|
+
- Each column has a name and an optional color
|
|
172
|
+
|
|
173
|
+
**Colors:**
|
|
174
|
+
- Pick from a preset **color palette** (swatches) or leave as default
|
|
175
|
+
- Colors appear as the column's top border
|
|
176
|
+
|
|
177
|
+
**Status Mapping:**
|
|
178
|
+
- Map statuses and QA gate badges (Open, Draft, Approved, In Progress, Blocked, Ready for Review, QA Passed, QA Waived, QA Failed, QA Concerns, QA Fixed, Ready for Done, Done, Closed, Promoted) to columns
|
|
179
|
+
- **Custom status mapping** — Define additional custom status strings and assign them to columns
|
|
180
|
+
|
|
181
|
+
**Reset:**
|
|
182
|
+
- **Reset to defaults** button restores the original column layout (with confirmation dialog)
|
|
183
|
+
|
|
184
|
+
### 10.12 Mobile Kanban
|
|
185
|
+
|
|
186
|
+
On small screens, the board uses a swipe carousel:
|
|
187
|
+
|
|
188
|
+
- **Swipe left/right** to navigate between columns
|
|
189
|
+
- **Rubber-band resistance** at the first and last columns (cannot swipe past edges)
|
|
190
|
+
- **Indicator dots** at the bottom show current position
|
|
191
|
+
- Smooth transition animation between columns
|
|
192
|
+
- Touch-optimized card layout
|
|
193
|
+
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
## 11. BMAD-METHOD Integration
|
|
2
|
+
|
|
3
|
+
Hammoc provides first-class support for the [BMAD-METHOD](https://github.com/bmad-code-org/BMAD-METHOD) (Breakthrough Method for Agile AI-Driven Development).
|
|
4
|
+
|
|
5
|
+
### 11.1 What is BMAD-METHOD?
|
|
6
|
+
|
|
7
|
+
BMAD-METHOD is an open-source framework that structures AI-driven software development. It defines:
|
|
8
|
+
|
|
9
|
+
- **Agents** — Specialized AI roles organized by workflow phase
|
|
10
|
+
- **Documents** — PRD, Architecture spec, Frontend spec, Stories, QA plans, and supplementary docs (brainstorming, market research, competitor analysis, project brief)
|
|
11
|
+
- **Workflows** — Phase-based processes from research through implementation to completion
|
|
12
|
+
|
|
13
|
+
### 11.2 Setting Up BMad in a Project
|
|
14
|
+
|
|
15
|
+
BMad can be set up in two ways:
|
|
16
|
+
|
|
17
|
+
**During project creation:**
|
|
18
|
+
1. In the **New Project** dialog, the **"Setup BMad"** checkbox is enabled by default
|
|
19
|
+
2. Select the BMAD-METHOD version from the dropdown (defaults to latest)
|
|
20
|
+
3. The `.bmad-core` folder is automatically created when the project is registered
|
|
21
|
+
|
|
22
|
+
**For existing projects:**
|
|
23
|
+
1. Open the project card's **kebab menu** (⋮) on the project list page
|
|
24
|
+
2. Click **"Setup BMad"** (only shown for non-BMad projects)
|
|
25
|
+
3. Confirm the version to install
|
|
26
|
+
4. The `.bmad-core` folder is created with the required files
|
|
27
|
+
|
|
28
|
+
The `.bmad-core` folder contains agents, tasks, templates, workflows, and configuration files including `core-config.yaml`.
|
|
29
|
+
|
|
30
|
+
### 11.3 BMad Agents
|
|
31
|
+
|
|
32
|
+
Click the **Agent Button** (Users icon, in the chat bottom bar right of the model selector) to open the agent dropdown:
|
|
33
|
+
|
|
34
|
+
**Planning group:**
|
|
35
|
+
|
|
36
|
+
| Agent | Role |
|
|
37
|
+
|-------|------|
|
|
38
|
+
| **Analyst** | Brainstorming, market research, competitor analysis, project brief |
|
|
39
|
+
| **PM** (Product Manager) | Defines PRD with epics and stories |
|
|
40
|
+
| **UX Expert** | Creates frontend specifications |
|
|
41
|
+
| **Architect** | Designs system architecture (backend, frontend, full-stack) |
|
|
42
|
+
|
|
43
|
+
**Implementation group:**
|
|
44
|
+
|
|
45
|
+
| Agent | Role |
|
|
46
|
+
|-------|------|
|
|
47
|
+
| **SM** (Scrum Master) | Drafts stories, orchestrates development |
|
|
48
|
+
| **PO** (Product Owner) | Validates story drafts against PRD |
|
|
49
|
+
| **Dev** (Developer) | Implements features, applies QA fixes |
|
|
50
|
+
| **QA** | Reviews and validates implementation quality |
|
|
51
|
+
|
|
52
|
+
**Agent dropdown features:**
|
|
53
|
+
- **Categorized groups** — Planning, Implementation, Other (with section labels)
|
|
54
|
+
- **Active agent checkmark** — Blue check icon next to the currently active agent
|
|
55
|
+
- **Agent icon & description** — Emoji icon and hover tooltip with role description
|
|
56
|
+
- **Keyboard navigation** — Arrow Up/Down to move, Enter to select, Escape to close
|
|
57
|
+
- Selecting an agent sends the agent command (e.g., `/BMad:agents:pm`) as the first prompt in the session
|
|
58
|
+
|
|
59
|
+
### 11.4 Project Overview Dashboard
|
|
60
|
+
|
|
61
|
+
For BMad projects, the overview page displays additional sections above the standard project overview (see §5.5):
|
|
62
|
+
|
|
63
|
+
**BMad Summary Card:**
|
|
64
|
+
- Overall **completion percentage** with a progress bar
|
|
65
|
+
- **Done/total epics** and **done/total stories** counts
|
|
66
|
+
- Background refresh indicator
|
|
67
|
+
|
|
68
|
+
**Next Step Recommender:**
|
|
69
|
+
- Detects the current **workflow phase** (Pre-PRD, Pre-Architecture, Implementation, Completed)
|
|
70
|
+
- Shows context-aware **action buttons** (primary/secondary) that navigate to the right agent + task command
|
|
71
|
+
- Quick links: New Session, Queue Runner, File Explorer
|
|
72
|
+
- See §11.5 for phase details
|
|
73
|
+
|
|
74
|
+
**Document Status Card:**
|
|
75
|
+
- Core documents: **PRD** and **Architecture** with exists/missing indicators
|
|
76
|
+
- Supplementary documents: Brainstorming, Market Research, Competitor Analysis, Project Brief, Frontend Spec, UI Architecture
|
|
77
|
+
- **"작성 필요"** (Required) badge for missing core documents; **"작성 권장"** (Recommended) for optional documents
|
|
78
|
+
- **Agent shortcut buttons** (→) to create missing documents with the appropriate agent
|
|
79
|
+
- **Sharded document support** — PRD and Architecture can be split into multiple files; expandable file tree view
|
|
80
|
+
- **Auxiliary documents** section — Stories and QA files with counts and expandable file trees
|
|
81
|
+
|
|
82
|
+
**Epic Progress Card:**
|
|
83
|
+
- Each epic shows a **color-coded progress bar** that reflects completion level
|
|
84
|
+
- **Done/planned** story count per epic
|
|
85
|
+
- Click to **expand** and see individual story statuses with color-coded badges
|
|
86
|
+
- Story file links to navigate directly to the story file
|
|
87
|
+
- Unwritten story count shown when planned > written
|
|
88
|
+
|
|
89
|
+
**Recent Issues Card** (replaces Quick Start for BMad projects):
|
|
90
|
+
- Last 5 issues with severity dot, title, and status badge
|
|
91
|
+
- Click to navigate to the project board
|
|
92
|
+
- Link to "View Board"
|
|
93
|
+
|
|
94
|
+
### 11.5 Workflow Phases & Recommendations
|
|
95
|
+
|
|
96
|
+
The Next Step Recommender analyzes the project state and suggests actions based on four phases:
|
|
97
|
+
|
|
98
|
+
**Phase 1: Pre-PRD** (PRD does not exist)
|
|
99
|
+
- **Primary:** Create PRD → PM agent
|
|
100
|
+
- **Secondary:** Brainstorming, Market Research, Competitor Analysis, Project Brief → Analyst agent
|
|
101
|
+
- Once a Project Brief already exists, the **Brainstorming** suggestion is hidden — the recommender treats the Brief as the brainstorm output and stops nagging
|
|
102
|
+
|
|
103
|
+
**Phase 2: Pre-Architecture** (PRD exists, Architecture does not)
|
|
104
|
+
- **Primary:** Create Backend / Frontend / Full-stack Architecture → Architect agent
|
|
105
|
+
- **Secondary:** Create Frontend Spec → UX Expert agent (if not exists)
|
|
106
|
+
|
|
107
|
+
**Phase 3: Implementation** (both PRD and Architecture exist)
|
|
108
|
+
|
|
109
|
+
Recommendations follow reverse workflow order (finish what's closest to done first):
|
|
110
|
+
|
|
111
|
+
- **Priority 1:** QA Passed/Waived stories → Commit and mark Done, or re-request QA review → Dev agent
|
|
112
|
+
- **Priority 2:** QA Fixed stories → Re-review → QA agent
|
|
113
|
+
- **Priority 3:** QA Failed/Concerns stories → Apply QA fixes → Dev agent
|
|
114
|
+
- **Priority 4:** Ready for Review stories (no QA gate) → Request QA review → QA agent
|
|
115
|
+
- **Priority 5:** In Progress stories → Continue development → Dev agent
|
|
116
|
+
- **Priority 6:** Approved stories → Start development (Dev), or re-validate with Validate and Fix / Validate Only → PO agent
|
|
117
|
+
- **Priority 7:** Draft stories → Validate and Fix / Validate Only → PO agent
|
|
118
|
+
- **Priority 8:** Create next story → SM agent (when no actionable stories)
|
|
119
|
+
|
|
120
|
+
**Phase 4: Completed** (all planned stories are Done)
|
|
121
|
+
- Brainstorm new features → Analyst agent
|
|
122
|
+
- Add new epic → PM agent
|
|
123
|
+
- Add story to existing epic → SM agent
|
|
124
|
+
|
|
125
|
+
### 11.6 Queue Templates from PRD
|
|
126
|
+
|
|
127
|
+
Queue templates automate story development in batch. For details, see §9.9 (Queue Templates).
|
|
128
|
+
|