orbital-command 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +396 -0
  3. package/bin/orbital.js +362 -0
  4. package/dist/assets/WorkflowVisualizer-BZ21PIIF.js +84 -0
  5. package/dist/assets/WorkflowVisualizer-BZV40eAE.css +1 -0
  6. package/dist/assets/charts-D__PA1zp.js +72 -0
  7. package/dist/assets/index-D1G6i0nS.css +1 -0
  8. package/dist/assets/index-DpItvKpf.js +419 -0
  9. package/dist/assets/ui-BvF022GT.js +53 -0
  10. package/dist/assets/vendor-Dzv9lrRc.js +59 -0
  11. package/dist/index.html +19 -0
  12. package/dist/scanner-sweep.png +0 -0
  13. package/dist/server/server/adapters/index.js +34 -0
  14. package/dist/server/server/adapters/iterm2-adapter.js +29 -0
  15. package/dist/server/server/adapters/subprocess-adapter.js +21 -0
  16. package/dist/server/server/adapters/terminal-adapter.js +1 -0
  17. package/dist/server/server/config.js +156 -0
  18. package/dist/server/server/database.js +90 -0
  19. package/dist/server/server/index.js +372 -0
  20. package/dist/server/server/init.js +811 -0
  21. package/dist/server/server/parsers/event-parser.js +64 -0
  22. package/dist/server/server/parsers/scope-parser.js +188 -0
  23. package/dist/server/server/routes/config-routes.js +163 -0
  24. package/dist/server/server/routes/data-routes.js +461 -0
  25. package/dist/server/server/routes/dispatch-routes.js +215 -0
  26. package/dist/server/server/routes/git-routes.js +92 -0
  27. package/dist/server/server/routes/scope-routes.js +215 -0
  28. package/dist/server/server/routes/sprint-routes.js +116 -0
  29. package/dist/server/server/routes/version-routes.js +130 -0
  30. package/dist/server/server/routes/workflow-routes.js +185 -0
  31. package/dist/server/server/schema.js +90 -0
  32. package/dist/server/server/services/batch-orchestrator.js +253 -0
  33. package/dist/server/server/services/claude-session-service.js +352 -0
  34. package/dist/server/server/services/config-service.js +132 -0
  35. package/dist/server/server/services/deploy-service.js +51 -0
  36. package/dist/server/server/services/event-service.js +63 -0
  37. package/dist/server/server/services/gate-service.js +83 -0
  38. package/dist/server/server/services/git-service.js +309 -0
  39. package/dist/server/server/services/github-service.js +145 -0
  40. package/dist/server/server/services/readiness-service.js +184 -0
  41. package/dist/server/server/services/scope-cache.js +72 -0
  42. package/dist/server/server/services/scope-service.js +424 -0
  43. package/dist/server/server/services/sprint-orchestrator.js +312 -0
  44. package/dist/server/server/services/sprint-service.js +293 -0
  45. package/dist/server/server/services/workflow-service.js +397 -0
  46. package/dist/server/server/utils/cc-hooks-parser.js +49 -0
  47. package/dist/server/server/utils/dispatch-utils.js +305 -0
  48. package/dist/server/server/utils/logger.js +86 -0
  49. package/dist/server/server/utils/terminal-launcher.js +388 -0
  50. package/dist/server/server/utils/worktree-manager.js +98 -0
  51. package/dist/server/server/watchers/event-watcher.js +81 -0
  52. package/dist/server/server/watchers/scope-watcher.js +33 -0
  53. package/dist/server/shared/api-types.js +5 -0
  54. package/dist/server/shared/default-workflow.json +616 -0
  55. package/dist/server/shared/workflow-config.js +44 -0
  56. package/dist/server/shared/workflow-engine.js +353 -0
  57. package/index.html +15 -0
  58. package/package.json +110 -0
  59. package/postcss.config.js +6 -0
  60. package/schemas/orbital.config.schema.json +83 -0
  61. package/scripts/postinstall.js +24 -0
  62. package/scripts/start.sh +20 -0
  63. package/server/adapters/index.ts +41 -0
  64. package/server/adapters/iterm2-adapter.ts +37 -0
  65. package/server/adapters/subprocess-adapter.ts +25 -0
  66. package/server/adapters/terminal-adapter.ts +24 -0
  67. package/server/config.ts +234 -0
  68. package/server/database.ts +107 -0
  69. package/server/index.ts +452 -0
  70. package/server/init.ts +891 -0
  71. package/server/parsers/event-parser.ts +74 -0
  72. package/server/parsers/scope-parser.ts +240 -0
  73. package/server/routes/config-routes.ts +182 -0
  74. package/server/routes/data-routes.ts +548 -0
  75. package/server/routes/dispatch-routes.ts +275 -0
  76. package/server/routes/git-routes.ts +112 -0
  77. package/server/routes/scope-routes.ts +262 -0
  78. package/server/routes/sprint-routes.ts +142 -0
  79. package/server/routes/version-routes.ts +156 -0
  80. package/server/routes/workflow-routes.ts +198 -0
  81. package/server/schema.ts +90 -0
  82. package/server/services/batch-orchestrator.ts +286 -0
  83. package/server/services/claude-session-service.ts +441 -0
  84. package/server/services/config-service.ts +151 -0
  85. package/server/services/deploy-service.ts +98 -0
  86. package/server/services/event-service.ts +98 -0
  87. package/server/services/gate-service.ts +126 -0
  88. package/server/services/git-service.ts +391 -0
  89. package/server/services/github-service.ts +183 -0
  90. package/server/services/readiness-service.ts +250 -0
  91. package/server/services/scope-cache.ts +81 -0
  92. package/server/services/scope-service.ts +476 -0
  93. package/server/services/sprint-orchestrator.ts +361 -0
  94. package/server/services/sprint-service.ts +415 -0
  95. package/server/services/workflow-service.ts +461 -0
  96. package/server/utils/cc-hooks-parser.ts +70 -0
  97. package/server/utils/dispatch-utils.ts +395 -0
  98. package/server/utils/logger.ts +109 -0
  99. package/server/utils/terminal-launcher.ts +462 -0
  100. package/server/utils/worktree-manager.ts +104 -0
  101. package/server/watchers/event-watcher.ts +100 -0
  102. package/server/watchers/scope-watcher.ts +38 -0
  103. package/shared/api-types.ts +20 -0
  104. package/shared/default-workflow.json +616 -0
  105. package/shared/workflow-config.ts +170 -0
  106. package/shared/workflow-engine.ts +427 -0
  107. package/src/App.tsx +33 -0
  108. package/src/components/AgentBadge.tsx +40 -0
  109. package/src/components/BatchPreflightModal.tsx +115 -0
  110. package/src/components/CardDisplayToggle.tsx +74 -0
  111. package/src/components/ColumnHeaderActions.tsx +55 -0
  112. package/src/components/ColumnMenu.tsx +99 -0
  113. package/src/components/DeployHistory.tsx +141 -0
  114. package/src/components/DispatchModal.tsx +164 -0
  115. package/src/components/DispatchPopover.tsx +139 -0
  116. package/src/components/DragOverlay.tsx +25 -0
  117. package/src/components/DriftSidebar.tsx +140 -0
  118. package/src/components/EnvironmentStrip.tsx +88 -0
  119. package/src/components/ErrorBoundary.tsx +62 -0
  120. package/src/components/FilterChip.tsx +105 -0
  121. package/src/components/GateIndicator.tsx +33 -0
  122. package/src/components/IdeaDetailModal.tsx +190 -0
  123. package/src/components/IdeaFormDialog.tsx +113 -0
  124. package/src/components/KanbanColumn.tsx +201 -0
  125. package/src/components/MarkdownRenderer.tsx +114 -0
  126. package/src/components/NeonGrid.tsx +128 -0
  127. package/src/components/PromotionQueue.tsx +89 -0
  128. package/src/components/ScopeCard.tsx +234 -0
  129. package/src/components/ScopeDetailModal.tsx +255 -0
  130. package/src/components/ScopeFilterBar.tsx +152 -0
  131. package/src/components/SearchInput.tsx +102 -0
  132. package/src/components/SessionPanel.tsx +335 -0
  133. package/src/components/SprintContainer.tsx +303 -0
  134. package/src/components/SprintDependencyDialog.tsx +78 -0
  135. package/src/components/SprintPreflightModal.tsx +138 -0
  136. package/src/components/StatusBar.tsx +168 -0
  137. package/src/components/SwimCell.tsx +67 -0
  138. package/src/components/SwimLaneRow.tsx +94 -0
  139. package/src/components/SwimlaneBoardView.tsx +108 -0
  140. package/src/components/VersionBadge.tsx +139 -0
  141. package/src/components/ViewModeSelector.tsx +114 -0
  142. package/src/components/config/AgentChip.tsx +53 -0
  143. package/src/components/config/AgentCreateDialog.tsx +321 -0
  144. package/src/components/config/AgentEditor.tsx +175 -0
  145. package/src/components/config/DirectoryTree.tsx +582 -0
  146. package/src/components/config/FileEditor.tsx +550 -0
  147. package/src/components/config/HookChip.tsx +50 -0
  148. package/src/components/config/StageCard.tsx +198 -0
  149. package/src/components/config/TransitionZone.tsx +173 -0
  150. package/src/components/config/UnifiedWorkflowPipeline.tsx +216 -0
  151. package/src/components/config/WorkflowPipeline.tsx +161 -0
  152. package/src/components/source-control/BranchList.tsx +93 -0
  153. package/src/components/source-control/BranchPanel.tsx +105 -0
  154. package/src/components/source-control/CommitLog.tsx +100 -0
  155. package/src/components/source-control/CommitRow.tsx +47 -0
  156. package/src/components/source-control/GitHubPanel.tsx +110 -0
  157. package/src/components/source-control/GitHubSetupGuide.tsx +52 -0
  158. package/src/components/source-control/GitOverviewBar.tsx +101 -0
  159. package/src/components/source-control/PullRequestList.tsx +69 -0
  160. package/src/components/source-control/WorktreeList.tsx +80 -0
  161. package/src/components/ui/badge.tsx +41 -0
  162. package/src/components/ui/button.tsx +55 -0
  163. package/src/components/ui/card.tsx +78 -0
  164. package/src/components/ui/dialog.tsx +94 -0
  165. package/src/components/ui/popover.tsx +33 -0
  166. package/src/components/ui/scroll-area.tsx +54 -0
  167. package/src/components/ui/separator.tsx +28 -0
  168. package/src/components/ui/tabs.tsx +52 -0
  169. package/src/components/ui/toggle-switch.tsx +35 -0
  170. package/src/components/ui/tooltip.tsx +27 -0
  171. package/src/components/workflow/AddEdgeDialog.tsx +217 -0
  172. package/src/components/workflow/AddListDialog.tsx +201 -0
  173. package/src/components/workflow/ChecklistEditor.tsx +239 -0
  174. package/src/components/workflow/CommandPrefixManager.tsx +118 -0
  175. package/src/components/workflow/ConfigSettingsPanel.tsx +189 -0
  176. package/src/components/workflow/DirectionSelector.tsx +133 -0
  177. package/src/components/workflow/DispatchConfigPanel.tsx +180 -0
  178. package/src/components/workflow/EdgeDetailPanel.tsx +236 -0
  179. package/src/components/workflow/EdgePropertyEditor.tsx +251 -0
  180. package/src/components/workflow/EditToolbar.tsx +138 -0
  181. package/src/components/workflow/HookDetailPanel.tsx +250 -0
  182. package/src/components/workflow/HookExecutionLog.tsx +24 -0
  183. package/src/components/workflow/HookSourceModal.tsx +129 -0
  184. package/src/components/workflow/HooksDashboard.tsx +363 -0
  185. package/src/components/workflow/ListPropertyEditor.tsx +251 -0
  186. package/src/components/workflow/MigrationPreviewDialog.tsx +237 -0
  187. package/src/components/workflow/MovementRulesPanel.tsx +188 -0
  188. package/src/components/workflow/NodeDetailPanel.tsx +245 -0
  189. package/src/components/workflow/PresetSelector.tsx +414 -0
  190. package/src/components/workflow/SkillCommandBuilder.tsx +174 -0
  191. package/src/components/workflow/WorkflowEdgeComponent.tsx +145 -0
  192. package/src/components/workflow/WorkflowNode.tsx +147 -0
  193. package/src/components/workflow/graphLayout.ts +186 -0
  194. package/src/components/workflow/mergeHooks.ts +85 -0
  195. package/src/components/workflow/useEditHistory.ts +88 -0
  196. package/src/components/workflow/useWorkflowEditor.ts +262 -0
  197. package/src/components/workflow/validateConfig.ts +70 -0
  198. package/src/hooks/useActiveDispatches.ts +198 -0
  199. package/src/hooks/useBoardSettings.ts +170 -0
  200. package/src/hooks/useCardDisplay.ts +57 -0
  201. package/src/hooks/useCcHooks.ts +24 -0
  202. package/src/hooks/useConfigTree.ts +51 -0
  203. package/src/hooks/useEnforcementRules.ts +46 -0
  204. package/src/hooks/useEvents.ts +59 -0
  205. package/src/hooks/useFileEditor.ts +165 -0
  206. package/src/hooks/useGates.ts +57 -0
  207. package/src/hooks/useIdeaActions.ts +53 -0
  208. package/src/hooks/useKanbanDnd.ts +410 -0
  209. package/src/hooks/useOrbitalConfig.ts +54 -0
  210. package/src/hooks/usePipeline.ts +47 -0
  211. package/src/hooks/usePipelineData.ts +338 -0
  212. package/src/hooks/useReconnect.ts +25 -0
  213. package/src/hooks/useScopeFilters.ts +125 -0
  214. package/src/hooks/useScopeSessions.ts +44 -0
  215. package/src/hooks/useScopes.ts +67 -0
  216. package/src/hooks/useSearch.ts +67 -0
  217. package/src/hooks/useSettings.tsx +187 -0
  218. package/src/hooks/useSocket.ts +25 -0
  219. package/src/hooks/useSourceControl.ts +105 -0
  220. package/src/hooks/useSprintPreflight.ts +55 -0
  221. package/src/hooks/useSprints.ts +154 -0
  222. package/src/hooks/useStatusBarHighlight.ts +18 -0
  223. package/src/hooks/useSwimlaneBoardSettings.ts +104 -0
  224. package/src/hooks/useTheme.ts +9 -0
  225. package/src/hooks/useTransitionReadiness.ts +53 -0
  226. package/src/hooks/useVersion.ts +155 -0
  227. package/src/hooks/useViolations.ts +65 -0
  228. package/src/hooks/useWorkflow.tsx +125 -0
  229. package/src/hooks/useZoomModifier.ts +19 -0
  230. package/src/index.css +797 -0
  231. package/src/layouts/DashboardLayout.tsx +113 -0
  232. package/src/lib/collisionDetection.ts +20 -0
  233. package/src/lib/scope-fields.ts +61 -0
  234. package/src/lib/swimlane.ts +146 -0
  235. package/src/lib/utils.ts +15 -0
  236. package/src/main.tsx +19 -0
  237. package/src/socket.ts +11 -0
  238. package/src/types/index.ts +497 -0
  239. package/src/views/AgentFeed.tsx +339 -0
  240. package/src/views/DeployPipeline.tsx +59 -0
  241. package/src/views/EnforcementView.tsx +378 -0
  242. package/src/views/PrimitivesConfig.tsx +500 -0
  243. package/src/views/QualityGates.tsx +1012 -0
  244. package/src/views/ScopeBoard.tsx +454 -0
  245. package/src/views/SessionTimeline.tsx +516 -0
  246. package/src/views/Settings.tsx +183 -0
  247. package/src/views/SourceControl.tsx +95 -0
  248. package/src/views/WorkflowVisualizer.tsx +382 -0
  249. package/tailwind.config.js +161 -0
  250. package/templates/agents/AUTO-INVOKE.md +180 -0
  251. package/templates/agents/CONFLICT-RESOLUTION.md +128 -0
  252. package/templates/agents/QUICK-REFERENCE.md +122 -0
  253. package/templates/agents/README.md +188 -0
  254. package/templates/agents/SKILL-TRIGGERS.md +100 -0
  255. package/templates/agents/blue-team/frontend-designer.md +424 -0
  256. package/templates/agents/green-team/architect.md +526 -0
  257. package/templates/agents/green-team/rules-enforcer.md +131 -0
  258. package/templates/agents/red-team/attacker-learned.md +24 -0
  259. package/templates/agents/red-team/attacker.md +486 -0
  260. package/templates/agents/red-team/chaos.md +548 -0
  261. package/templates/agents/reference/component-registry.md +82 -0
  262. package/templates/agents/workflows/full-mode.md +218 -0
  263. package/templates/agents/workflows/quick-mode.md +118 -0
  264. package/templates/agents/workflows/security-mode.md +283 -0
  265. package/templates/anti-patterns/dangerous-shortcuts.md +427 -0
  266. package/templates/config/agent-triggers.json +92 -0
  267. package/templates/hooks/agent-team-gate.sh +31 -0
  268. package/templates/hooks/agent-trigger.sh +97 -0
  269. package/templates/hooks/block-push.sh +66 -0
  270. package/templates/hooks/block-workarounds.sh +61 -0
  271. package/templates/hooks/blocker-check.sh +28 -0
  272. package/templates/hooks/completion-checklist.sh +28 -0
  273. package/templates/hooks/decision-capture.sh +15 -0
  274. package/templates/hooks/dependency-check.sh +27 -0
  275. package/templates/hooks/end-session.sh +31 -0
  276. package/templates/hooks/exploration-logger.sh +37 -0
  277. package/templates/hooks/files-changed-summary.sh +37 -0
  278. package/templates/hooks/get-session-id.sh +49 -0
  279. package/templates/hooks/git-commit-guard.sh +34 -0
  280. package/templates/hooks/init-session.sh +93 -0
  281. package/templates/hooks/orbital-emit.sh +79 -0
  282. package/templates/hooks/orbital-report-deploy.sh +78 -0
  283. package/templates/hooks/orbital-report-gates.sh +40 -0
  284. package/templates/hooks/orbital-report-violation.sh +36 -0
  285. package/templates/hooks/orbital-scope-update.sh +53 -0
  286. package/templates/hooks/phase-verify-reminder.sh +26 -0
  287. package/templates/hooks/review-gate-check.sh +82 -0
  288. package/templates/hooks/scope-commit-logger.sh +37 -0
  289. package/templates/hooks/scope-create-cleanup.sh +36 -0
  290. package/templates/hooks/scope-create-gate.sh +80 -0
  291. package/templates/hooks/scope-create-tracker.sh +17 -0
  292. package/templates/hooks/scope-file-sync.sh +53 -0
  293. package/templates/hooks/scope-gate.sh +35 -0
  294. package/templates/hooks/scope-helpers.sh +188 -0
  295. package/templates/hooks/scope-lifecycle-gate.sh +139 -0
  296. package/templates/hooks/scope-prepare.sh +244 -0
  297. package/templates/hooks/scope-transition.sh +172 -0
  298. package/templates/hooks/session-enforcer.sh +143 -0
  299. package/templates/hooks/time-tracker.sh +33 -0
  300. package/templates/lessons-learned.md +15 -0
  301. package/templates/orbital.config.json +35 -0
  302. package/templates/presets/development.json +42 -0
  303. package/templates/presets/gitflow.json +712 -0
  304. package/templates/presets/minimal.json +23 -0
  305. package/templates/quick/rules.md +218 -0
  306. package/templates/scopes/_template.md +255 -0
  307. package/templates/settings-hooks.json +98 -0
  308. package/templates/skills/git-commit/SKILL.md +85 -0
  309. package/templates/skills/git-dev/SKILL.md +99 -0
  310. package/templates/skills/git-hotfix/SKILL.md +223 -0
  311. package/templates/skills/git-main/SKILL.md +84 -0
  312. package/templates/skills/git-production/SKILL.md +165 -0
  313. package/templates/skills/git-staging/SKILL.md +112 -0
  314. package/templates/skills/scope-create/SKILL.md +81 -0
  315. package/templates/skills/scope-fix-review/SKILL.md +168 -0
  316. package/templates/skills/scope-implement/SKILL.md +110 -0
  317. package/templates/skills/scope-post-review/SKILL.md +144 -0
  318. package/templates/skills/scope-pre-review/SKILL.md +211 -0
  319. package/templates/skills/scope-verify/SKILL.md +201 -0
  320. package/templates/skills/session-init/SKILL.md +62 -0
  321. package/templates/skills/session-resume/SKILL.md +201 -0
  322. package/templates/skills/test-checks/SKILL.md +171 -0
  323. package/templates/skills/test-code-review/SKILL.md +252 -0
  324. package/tsconfig.json +25 -0
  325. package/vite.config.ts +38 -0
@@ -0,0 +1,171 @@
1
+ ---
2
+ name: test-checks
3
+ description: Runs 13 quality gates including linting, type checking, rule verification, and stale scope detection. Use before commits, after making changes, or when checking code quality quickly.
4
+ user-invocable: true
5
+ ---
6
+
7
+ # /test-checks - Run All Quality Gates
8
+
9
+ ---
10
+ tokens: ~600
11
+ trigger: /test-checks
12
+ purpose: Run the complete 13-step quality gate pipeline before committing
13
+ ---
14
+
15
+ ## What This Does
16
+
17
+ Executes the full pre-commit quality pipeline - same checks the git hook runs.
18
+
19
+ ## The 13 Checks
20
+
21
+ | # | Check | Command (from orbital.config.json) | What It Catches |
22
+ |---|-------|--------------------------------------|-----------------|
23
+ | 1 | TypeScript | `commands.typeCheck` | Type errors |
24
+ | 2 | Lint | `commands.lint` | Code style violations |
25
+ | 3 | Build | `commands.build` | Compilation, imports |
26
+ | 4 | Templates | `commands.validateTemplates` | Template syntax |
27
+ | 5 | Doc Links | `commands.validateDocs` | Broken links |
28
+ | 6 | Doc Freshness | `commands.docFreshness` | Stale auto-docs |
29
+ | 7 | Enforcement | `commands.checkRules` | Rule violations |
30
+ | 8 | Workarounds | grep patterns | Bypass attempts |
31
+ | 9 | **Placeholders** | grep PLACEHOLDER/STUB | Incomplete implementations |
32
+ | 10 | **Mock Data** | grep mock/fake in prod | Test data in production |
33
+ | 11 | **Shortcuts** | grep "for now"/TODO | Unfinished work |
34
+ | 12 | **Default Secrets** | grep fallback secrets | Security vulnerabilities |
35
+ | 13 | **Stale Scopes** | grep completed scopes | Scopes needing move to completed/ |
36
+
37
+ ## Steps
38
+
39
+ ### Step 1: Run All Checks (with Orbital Gate Reporting)
40
+
41
+ Read `.claude/orbital.config.json` for project-specific commands. Run each check, capture timing, and report results to Orbital Command. If the Orbital server isn't running, reporting is silently skipped.
42
+
43
+ ```bash
44
+ HOOK_DIR="$(git rev-parse --show-toplevel)/.claude/hooks"
45
+ export ORBITAL_GATE_COMMIT_SHA=$(git rev-parse --short HEAD 2>/dev/null)
46
+
47
+ # Helper: run a gate check and report result
48
+ # Usage: run_gate <gate_name> <check_number> <total> <command...>
49
+ run_gate() {
50
+ local gate="$1" num="$2" total="$3"; shift 3
51
+ echo "[$num/$total] $gate..."
52
+ local start_ms=$(($(date +%s) * 1000))
53
+ if eval "$@" 2>&1; then
54
+ local end_ms=$(($(date +%s) * 1000))
55
+ "$HOOK_DIR/orbital-report-gates.sh" "$gate" "pass" "$(( end_ms - start_ms ))"
56
+ return 0
57
+ else
58
+ local end_ms=$(($(date +%s) * 1000))
59
+ "$HOOK_DIR/orbital-report-gates.sh" "$gate" "fail" "$(( end_ms - start_ms ))"
60
+ return 1
61
+ fi
62
+ }
63
+
64
+ # Checks 1-7: Read commands from orbital.config.json — skip any that are null
65
+ # Run commands.typeCheck (if configured, skip if null)
66
+ run_gate "type-check" 1 13 "<commands.typeCheck from orbital.config.json>"
67
+ # Run commands.lint (if configured, skip if null)
68
+ run_gate "lint" 2 13 "<commands.lint from orbital.config.json>"
69
+ # Run commands.build (if configured, skip if null)
70
+ run_gate "build" 3 13 "<commands.build from orbital.config.json>"
71
+ # Run commands.validateTemplates (if configured, skip if null)
72
+ run_gate "template-validation" 4 13 "<commands.validateTemplates from orbital.config.json>"
73
+ # Run commands.validateDocs (if configured, skip if null)
74
+ run_gate "doc-links" 5 13 "<commands.validateDocs from orbital.config.json>"
75
+ # Run commands.docFreshness (if configured, skip if null)
76
+ run_gate "doc-freshness" 6 13 "<commands.docFreshness from orbital.config.json>"
77
+
78
+ # Enforcement: capture output for violation reporting
79
+ # Run commands.checkRules (if configured, skip if null)
80
+ echo "[7/13] rule-enforcement..."
81
+ RULES_START=$(($(date +%s) * 1000))
82
+ RULES_OUTPUT=$(<commands.checkRules from orbital.config.json> 2>&1)
83
+ RULES_EXIT=$?
84
+ RULES_END=$(($(date +%s) * 1000))
85
+ if [ $RULES_EXIT -eq 0 ]; then
86
+ "$HOOK_DIR/orbital-report-gates.sh" "rule-enforcement" "pass" "$(( RULES_END - RULES_START ))"
87
+ else
88
+ "$HOOK_DIR/orbital-report-gates.sh" "rule-enforcement" "fail" "$(( RULES_END - RULES_START ))"
89
+ echo "$RULES_OUTPUT"
90
+ fi
91
+
92
+ # Checks 8-13: Generic code quality checks (not project-specific)
93
+ run_gate "no-placeholders" 8 13 '! grep -rEi "PLACEHOLDER|STUB_|DUMMY_" . --include="*.ts" --include="*.py" --include="*.js" | grep -v __tests__ | grep -v node_modules'
94
+ run_gate "no-mock-data" 9 13 '! grep -rEi "mockSignature|fakeUser|MOCK_DATA" . --include="*.ts" --include="*.py" --include="*.js" | grep -v __tests__ | grep -v node_modules'
95
+ run_gate "no-shortcuts" 10 13 'FOUND=$(grep -rc "for now\|// TODO:\|// FIXME:" . --include="*.ts" --include="*.py" --include="*.js" 2>/dev/null | grep -v node_modules | grep -v ":0$" | wc -l | tr -d " "); [ "$FOUND" -eq 0 ]'
96
+ run_gate "no-default-secrets" 11 13 '! grep -rE "\|\| ['\''\"]\.\*(secret|key|token)" . --include="*.ts" --include="*.py" --include="*.js" | grep -v __tests__ | grep -v node_modules'
97
+ run_gate "no-stale-scopes" 12 13 'STALE=$(grep -rl "^status: implementing" scopes/completed/ scopes/review/ 2>/dev/null | wc -l | tr -d " "); [ "$STALE" -eq 0 ]'
98
+ # Run commands.test (if configured, skip if null)
99
+ run_gate "tests" 13 13 "<commands.test from orbital.config.json>"
100
+ ```
101
+
102
+ ### Step 2: Report Results
103
+
104
+ Display the summary table (same format as before — the Orbital Command dashboard gets data automatically via the gate reports above).
105
+
106
+ ```
107
+ ╔═══════════════════════════════════════════════════════════════╗
108
+ ║ PRE-COMMIT QUALITY GATES ║
109
+ ╠═══════════════════════════════════════════════════════════════╣
110
+ ║ ║
111
+ ║ [1/13] TypeScript type-check ✅/❌ ║
112
+ ║ [2/13] ESLint ✅/❌ ║
113
+ ║ [3/13] Build ✅/❌ ║
114
+ ║ [4/13] Template validation ✅/❌ ║
115
+ ║ [5/13] Documentation links ✅/❌ ║
116
+ ║ [6/13] Doc freshness ✅/❌ ║
117
+ ║ [7/13] Enforcement rules ✅/❌ ║
118
+ ║ [8/13] No placeholders ✅/❌ ║
119
+ ║ [9/13] No mock data in prod ✅/❌ ║
120
+ ║ [10/13] No untracked shortcuts ✅/❌ ║
121
+ ║ [11/13] No default secrets ✅/❌ ║
122
+ ║ [12/13] No stale scopes ✅/❌ ║
123
+ ║ [13/13] Tests ✅/❌ ║
124
+ ║ ║
125
+ ╚═══════════════════════════════════════════════════════════════╝
126
+ ```
127
+
128
+ ### Step 3: On Failure
129
+
130
+ When a check fails:
131
+ 1. **Read the error** - It tells you what's wrong
132
+ 2. **Fix the issue** - Use Edit tool
133
+ 3. **Re-run that check** - Verify the fix
134
+ 4. **Continue** - Move to next check
135
+
136
+ ## Quick Fixes
137
+
138
+ | Check | Common Fix |
139
+ |-------|-----------|
140
+ | TypeScript | Add missing types, fix type mismatches |
141
+ | Lint | Run the lint fix command, remove any types |
142
+ | Build | Same as TypeScript, check imports |
143
+ | Templates | Fix placeholder syntax in template files |
144
+ | Doc Links | Update/remove broken links |
145
+ | Doc Freshness | Regenerate auto-docs |
146
+ | Enforcement | See enforcement rules for specific fixes |
147
+ | Workarounds | Use Write/Edit tools properly, not bash |
148
+ | **Placeholders** | Replace with real implementation or throw error |
149
+ | **Mock Data** | Move to `__tests__/fixtures/` or implement real logic |
150
+ | **Shortcuts** | Complete the TODO or link to tracking ticket |
151
+ | **Default Secrets** | Remove fallback, require env var with validation |
152
+ | **Stale Scopes** | Run `/git-commit` to commit and transition reviewed scopes |
153
+
154
+ ## File Size Check
155
+
156
+ Also verify no new files exceed the configured line limit (default: 400 lines). Check `orbital.config.json` for `maxFileLines` and `maxFileLinesExemptions`:
157
+
158
+ ```bash
159
+ # Adjust the path and extension to match your project structure
160
+ find src -name "*.ts" -o -name "*.py" -o -name "*.js" | xargs wc -l | awk '$1 > 400'
161
+ ```
162
+
163
+ Check `orbital.config.json` for any exempt files listed under `maxFileLinesExemptions`.
164
+
165
+ ## After All Pass
166
+
167
+ ```bash
168
+ git add -A && git commit -m "your message"
169
+ ```
170
+
171
+ The git hook will run these same checks automatically.
@@ -0,0 +1,252 @@
1
+ ---
2
+ name: test-code-review
3
+ description: Runs complete validation suite including pre-commit checks, pre-push verification, and code review agents. Use when preparing major commits, before creating PRs, or for comprehensive quality checks.
4
+ user-invocable: true
5
+ ---
6
+
7
+ # /test-code-review - Complete Validation Suite
8
+
9
+ ---
10
+ tokens: ~600
11
+ trigger: /test-code-review
12
+ purpose: Run the full validation pipeline: pre-commit checks, pre-push checks, and parallel code review
13
+ ---
14
+
15
+ ## What This Does
16
+
17
+ Combines all validation layers into one comprehensive check:
18
+
19
+ ```
20
+ ┌─────────────────────────────────────────────────────────────────────────┐
21
+ │ /test-code-review │
22
+ ├─────────────────────────────────────────────────────────────────────────┤
23
+ │ │
24
+ │ Phase 1: /test-checks (8 checks) │
25
+ │ ├── TypeScript, ESLint, Build, Templates │
26
+ │ └── Doc links, Doc freshness, Enforcement, Workarounds │
27
+ │ │
28
+ │ Phase 2: pre-push (3 checks) │
29
+ │ ├── Documentation sync │
30
+ │ ├── Auto-generated docs │
31
+ │ └── Code review scan │
32
+ │ │
33
+ │ Phase 3: code-review (6 agents in parallel) │
34
+ │ ├── code-reviewer, silent-failure-hunter, code-simplifier │
35
+ │ └── comment-analyzer, pr-test-analyzer, type-design-analyzer │
36
+ │ │
37
+ │ Phase 4: Synthesize Results │
38
+ │ └── Collect findings, categorize by severity │
39
+ │ │
40
+ │ Phase 5: Scope Completion Check (if all pass) │
41
+ │ └── Check if branch scopes can move to /scopes/completed/ │
42
+ │ │
43
+ │ Phase 6: Reflection Prompt (optional) │
44
+ │ └── Ask if user wants to capture learnings in lessons-learned.md │
45
+ │ │
46
+ └─────────────────────────────────────────────────────────────────────────┘
47
+ ```
48
+
49
+ ## Steps
50
+
51
+ ### Phase 1: Pre-Commit Checks
52
+
53
+ Run all 8 quality gates. Read commands from `.claude/orbital.config.json` — skip any that are null:
54
+
55
+ ```bash
56
+ echo "═══ PHASE 1: PRE-COMMIT ═══"
57
+ # Run commands.typeCheck from orbital.config.json (skip if null)
58
+ echo "[1/8] TypeScript..."
59
+ # Run commands.lint from orbital.config.json (skip if null)
60
+ echo "[2/8] Lint..."
61
+ # Run commands.build from orbital.config.json (skip if null)
62
+ echo "[3/8] Build..."
63
+ # Run commands.validateTemplates from orbital.config.json (skip if null)
64
+ echo "[4/8] Templates..."
65
+ # Run commands.validateDocs from orbital.config.json (skip if null)
66
+ echo "[5/8] Doc links..."
67
+ # Run commands.docFreshness from orbital.config.json (skip if null)
68
+ echo "[6/8] Doc freshness..."
69
+ # Run commands.checkRules from orbital.config.json (skip if null)
70
+ echo "[7/8] Enforcement..."
71
+ echo "[8/8] Workarounds..." && echo "✅ Check staged files manually"
72
+ ```
73
+
74
+ **Stop here if any check fails. Fix before proceeding.**
75
+
76
+ ### Phase 2: Pre-Push Checks
77
+
78
+ ```bash
79
+ echo "═══ PHASE 2: PRE-PUSH ═══"
80
+
81
+ # Check documentation sync
82
+ CHANGED=$(git diff --name-only HEAD~1..HEAD 2>/dev/null || git diff --name-only)
83
+
84
+ echo "Changed files:"
85
+ echo "$CHANGED"
86
+
87
+ # Check critical files from orbital.config.json criticalFiles list (if configured)
88
+ echo "Critical files needing docs:"
89
+ echo "$CHANGED" | grep -E "<criticalFiles pattern from orbital.config.json>" || echo "None"
90
+
91
+ # Run commands.docFreshness from orbital.config.json (skip if null)
92
+ echo "Auto-docs check..."
93
+ ```
94
+
95
+ ### Phase 3: Parallel Code Review
96
+
97
+ Launch ALL 6 review agents simultaneously using Task tool:
98
+
99
+ **You MUST send a single message with 6 parallel Task invocations:**
100
+
101
+ ```
102
+ Task: pr-review-toolkit:code-reviewer
103
+ Prompt: "Review current changes for bugs, security, conventions"
104
+
105
+ Task: pr-review-toolkit:silent-failure-hunter
106
+ Prompt: "Review for silent failures; swallowed errors, bad fallbacks"
107
+
108
+ Task: pr-review-toolkit:code-simplifier
109
+ Prompt: "Review for unnecessary complexity"
110
+
111
+ Task: pr-review-toolkit:comment-analyzer
112
+ Prompt: "Review comment accuracy and maintainability"
113
+
114
+ Task: pr-review-toolkit:pr-test-analyzer
115
+ Prompt: "Analyze test coverage gaps"
116
+
117
+ Task: pr-review-toolkit:type-design-analyzer
118
+ Prompt: "Review type design quality"
119
+ ```
120
+
121
+ ### Phase 4: Synthesize Results
122
+
123
+ Collect all findings and report:
124
+
125
+ ```
126
+ ╔═══════════════════════════════════════════════════════════════════════╗
127
+ ║ /test-code-review RESULTS ║
128
+ ╠═══════════════════════════════════════════════════════════════════════╣
129
+ ║ ║
130
+ ║ PHASE 1: Pre-Commit [8/8 passed] ✅ ║
131
+ ║ PHASE 2: Pre-Push [3/3 passed] ✅ ║
132
+ ║ PHASE 3: Code Review [findings below] ║
133
+ ║ ║
134
+ ║ ───────────────────────────────────────────────────────────────── ║
135
+ ║ 🚫 BLOCKERS (must fix): 0 ║
136
+ ║ ⚠️ WARNINGS (should fix): 2 ║
137
+ ║ 💡 SUGGESTIONS (consider): 5 ║
138
+ ║ ║
139
+ ╚═══════════════════════════════════════════════════════════════════════╝
140
+ ```
141
+
142
+ ### Phase 5: Scope Completion Check (Only If All Phases Pass)
143
+
144
+ **Only run this phase if Phases 1-3 pass with no blockers.**
145
+
146
+ This phase checks if any scope documents should be moved to the `/scopes/completed/` folder.
147
+
148
+ #### Step 1: Extract Scope Numbers from Branch Name
149
+
150
+ ```bash
151
+ # Get current branch name and extract scope numbers
152
+ BRANCH=$(git branch --show-current)
153
+ echo "Current branch: $BRANCH"
154
+
155
+ # Extract all 3-digit scope numbers from branch name
156
+ # Handles patterns like: feature/scopes-007-012, fix/scope-018, feature/024-dynamic-convergence
157
+ SCOPE_NUMS=$(echo "$BRANCH" | grep -oE '[0-9]{3}' | sort -u)
158
+ echo "Scope numbers found in branch: $SCOPE_NUMS"
159
+ ```
160
+
161
+ #### Step 2: Check for Matching Scope Files
162
+
163
+ ```bash
164
+ # For each scope number, check if a matching file exists in /scopes/ (not completed/)
165
+ for num in $SCOPE_NUMS; do
166
+ SCOPE_FILE=$(ls scopes/${num}-*.md 2>/dev/null)
167
+ if [ -n "$SCOPE_FILE" ]; then
168
+ echo "📋 Found scope file: $SCOPE_FILE"
169
+ fi
170
+ done
171
+ ```
172
+
173
+ #### Step 3: Prompt for Scope Completion
174
+
175
+ If matching scope files are found and all tests passed:
176
+
177
+ ```
178
+ ╔═══════════════════════════════════════════════════════════════════════╗
179
+ ║ 🎯 SCOPE COMPLETION CHECK ║
180
+ ╠═══════════════════════════════════════════════════════════════════════╣
181
+ ║ ║
182
+ ║ All validation phases PASSED! ✅ ║
183
+ ║ ║
184
+ ║ The following scope files match your branch and may be complete: ║
185
+ ║ ║
186
+ ║ 📋 scopes/018-feature-name.md ║
187
+ ║ ║
188
+ ║ ───────────────────────────────────────────────────────────────── ║
189
+ ║ Would you like to move completed scopes to /scopes/completed/? ║
190
+ ║ ║
191
+ ║ Before moving, verify: ║
192
+ ║ ✓ All acceptance criteria in the scope are met ║
193
+ ║ ✓ No remaining TODOs in the scope file ║
194
+ ║ ✓ Related code changes are committed ║
195
+ ║ ║
196
+ ╚═══════════════════════════════════════════════════════════════════════╝
197
+ ```
198
+
199
+ #### Step 4: Move Completed Scopes (If User Confirms)
200
+
201
+ ```bash
202
+ # Only after user confirmation (scopes are gitignored, use plain mv)
203
+ mv scopes/XXX-scope-name.md scopes/completed/
204
+ echo "✅ Moved scope XXX to completed folder"
205
+ ```
206
+
207
+ **Note:** Scopes are gitignored — use plain `mv`, not `git mv`.
208
+
209
+ ## Modes
210
+
211
+ | Command | What Runs |
212
+ |---------|-----------|
213
+ | `/test-code-review` | All 6 phases (full validation + scope check + reflect prompt) |
214
+ | `/test-code-review quick` | Phase 1 only (pre-commit checks) |
215
+ | `/test-code-review review` | Phase 3 only (parallel code review) |
216
+
217
+ ## On Failure
218
+
219
+ 1. Fix issues found in each phase before proceeding
220
+ 2. Re-run `/test-code-review` to verify fixes
221
+ 3. Only commit/push when all phases pass
222
+
223
+ ## On Success
224
+
225
+ When all phases pass with no blockers:
226
+ 1. Phase 5 automatically checks for scope files matching your branch
227
+ 2. If found, you'll be prompted to move them to `/scopes/completed/`
228
+ 3. Verify acceptance criteria are met before confirming the move
229
+ 4. Use plain `mv` when moving scope files (scopes are gitignored)
230
+
231
+ ### Phase 6: Reflection Prompt (Optional)
232
+
233
+ After successful validation, prompt for reflection:
234
+
235
+ ```
236
+ ╔═══════════════════════════════════════════════════════════════════════╗
237
+ ║ 🎯 ALL VALIDATION PASSED ║
238
+ ╠═══════════════════════════════════════════════════════════════════════╣
239
+ ║ ║
240
+ ║ Before you commit, consider capturing learnings: ║
241
+ ║ ║
242
+ ║ 📚 Record any lessons in .claude/lessons-learned.md ║
243
+ ║ 🪝 Note any hook/skill improvements for future sessions ║
244
+ ║ ║
245
+ ║ This helps improve the system for future work! ║
246
+ ║ ║
247
+ ║ Capture learnings now? (or skip and commit) ║
248
+ ║ ║
249
+ ╚═══════════════════════════════════════════════════════════════════════╝
250
+ ```
251
+
252
+ If user chooses to reflect, help them write an entry in `.claude/lessons-learned.md` before proceeding to commit.
package/tsconfig.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
5
+ "module": "ESNext",
6
+ "skipLibCheck": true,
7
+ "moduleResolution": "bundler",
8
+ "allowImportingTsExtensions": true,
9
+ "isolatedModules": true,
10
+ "moduleDetection": "force",
11
+ "noEmit": true,
12
+ "jsx": "react-jsx",
13
+ "strict": true,
14
+ "noUnusedLocals": true,
15
+ "noUnusedParameters": true,
16
+ "noFallthroughCasesInSwitch": true,
17
+ "forceConsistentCasingInFileNames": true,
18
+ "resolveJsonModule": true,
19
+ "baseUrl": ".",
20
+ "paths": {
21
+ "@/*": ["src/*"]
22
+ }
23
+ },
24
+ "include": ["src", "shared"]
25
+ }
package/vite.config.ts ADDED
@@ -0,0 +1,38 @@
1
+ import { defineConfig } from 'vite';
2
+ import react from '@vitejs/plugin-react';
3
+ import path from 'path';
4
+
5
+ const serverPort = process.env.ORBITAL_SERVER_PORT || '4444';
6
+
7
+ export default defineConfig({
8
+ plugins: [react()],
9
+ resolve: {
10
+ alias: {
11
+ '@': path.resolve(__dirname, './src'),
12
+ },
13
+ },
14
+ server: {
15
+ port: 4445,
16
+ proxy: {
17
+ '/api/orbital': {
18
+ target: `http://localhost:${serverPort}`,
19
+ changeOrigin: true,
20
+ },
21
+ '/socket.io': {
22
+ target: `http://localhost:${serverPort}`,
23
+ ws: true,
24
+ },
25
+ },
26
+ },
27
+ build: {
28
+ rollupOptions: {
29
+ output: {
30
+ manualChunks: {
31
+ vendor: ['react', 'react-dom', 'react-router-dom'],
32
+ charts: ['recharts'],
33
+ ui: ['@radix-ui/react-dialog', '@radix-ui/react-scroll-area', '@radix-ui/react-tabs', '@radix-ui/react-tooltip'],
34
+ },
35
+ },
36
+ },
37
+ },
38
+ });