@hivehub/rulebook 5.7.0 → 5.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/analysis.md +35 -35
- package/.claude/commands/continue.md +33 -33
- package/.claude/commands/rulebook-decision-create.md +55 -55
- package/.claude/commands/rulebook-decision-list.md +15 -15
- package/.claude/commands/rulebook-knowledge-add.md +41 -41
- package/.claude/commands/rulebook-knowledge-list.md +15 -15
- package/.claude/commands/rulebook-memory-save.md +48 -48
- package/.claude/commands/rulebook-memory-search.md +47 -47
- package/.claude/commands/rulebook-task-apply.md +67 -67
- package/.claude/commands/rulebook-task-archive.md +94 -94
- package/.claude/commands/rulebook-task-create.md +93 -93
- package/.claude/commands/rulebook-task-list.md +42 -42
- package/.claude/commands/rulebook-task-show.md +52 -52
- package/.claude/commands/rulebook-task-validate.md +53 -53
- package/.claude-plugin/marketplace.json +28 -28
- package/.claude-plugin/plugin.json +8 -8
- package/README.md +86 -0
- package/dist/cli/commands/claude.d.ts +17 -0
- package/dist/cli/commands/claude.d.ts.map +1 -0
- package/dist/cli/commands/claude.js +56 -0
- package/dist/cli/commands/claude.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +18 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +6 -1
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/prompts.d.ts +13 -0
- package/dist/cli/prompts.d.ts.map +1 -1
- package/dist/cli/prompts.js +106 -0
- package/dist/cli/prompts.js.map +1 -1
- package/dist/core/claude/claude-mcp.d.ts +10 -1
- package/dist/core/claude/claude-mcp.d.ts.map +1 -1
- package/dist/core/claude/claude-mcp.js +48 -2
- package/dist/core/claude/claude-mcp.js.map +1 -1
- package/dist/core/claude/claude-settings-manager.d.ts +12 -0
- package/dist/core/claude/claude-settings-manager.d.ts.map +1 -1
- package/dist/core/claude/claude-settings-manager.js +59 -3
- package/dist/core/claude/claude-settings-manager.js.map +1 -1
- package/dist/core/detect/detector.d.ts +8 -1
- package/dist/core/detect/detector.d.ts.map +1 -1
- package/dist/core/detect/detector.js +225 -0
- package/dist/core/detect/detector.js.map +1 -1
- package/dist/core/detect/library-registry.d.ts +40 -0
- package/dist/core/detect/library-registry.d.ts.map +1 -0
- package/dist/core/detect/library-registry.js +239 -0
- package/dist/core/detect/library-registry.js.map +1 -0
- package/dist/core/generators/generator.d.ts +2 -1
- package/dist/core/generators/generator.d.ts.map +1 -1
- package/dist/core/generators/generator.js +38 -1
- package/dist/core/generators/generator.js.map +1 -1
- package/dist/core/generators/rules-generator.d.ts +1 -5
- package/dist/core/generators/rules-generator.d.ts.map +1 -1
- package/dist/core/generators/rules-generator.js +40 -1
- package/dist/core/generators/rules-generator.js.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/rulebook-server.js +0 -0
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +23 -22
- package/templates/agents/accessibility-reviewer.md +43 -43
- package/templates/agents/api-designer.md +42 -42
- package/templates/agents/architect.md +51 -51
- package/templates/agents/build-engineer.md +36 -36
- package/templates/agents/code-reviewer.md +47 -47
- package/templates/agents/compiler/codegen-debugger.md +34 -34
- package/templates/agents/compiler/stdlib-engineer.md +28 -28
- package/templates/agents/compiler/test-coverage-guardian.md +31 -31
- package/templates/agents/database-architect.md +41 -41
- package/templates/agents/devops-engineer.md +42 -42
- package/templates/agents/docs-writer.md +38 -38
- package/templates/agents/game-engine/cpp-core-expert.md +35 -35
- package/templates/agents/game-engine/render-engineer.md +22 -22
- package/templates/agents/game-engine/shader-engineer.md +38 -38
- package/templates/agents/game-engine/systems-integration.md +43 -43
- package/templates/agents/generic/code-reviewer.md +41 -41
- package/templates/agents/generic/docs-writer.md +25 -25
- package/templates/agents/generic/project-manager.md +36 -36
- package/templates/agents/generic/researcher.md +34 -34
- package/templates/agents/generic/test-engineer.md +41 -41
- package/templates/agents/i18n-engineer.md +42 -42
- package/templates/agents/implementer.md +42 -42
- package/templates/agents/migration-engineer.md +42 -42
- package/templates/agents/mobile/platform-specialist.md +22 -22
- package/templates/agents/mobile/ui-engineer.md +22 -22
- package/templates/agents/performance-engineer.md +49 -49
- package/templates/agents/project-manager.md +217 -0
- package/templates/agents/quality-gatekeeper.md +208 -0
- package/templates/agents/refactoring-agent.md +41 -41
- package/templates/agents/researcher.md +38 -38
- package/templates/agents/security-reviewer.md +40 -40
- package/templates/agents/team-lead.md +37 -37
- package/templates/agents/tester.md +48 -48
- package/templates/agents/ux-reviewer.md +43 -43
- package/templates/agents/web-app/api-designer.md +22 -22
- package/templates/agents/web-app/backend-engineer.md +30 -30
- package/templates/agents/web-app/database-engineer.md +22 -22
- package/templates/agents/web-app/frontend-engineer.md +29 -29
- package/templates/agents/web-app/security-reviewer.md +32 -32
- package/templates/ci/rulebook-review.yml +26 -26
- package/templates/claude-workflows/bugfix.js +94 -0
- package/templates/claude-workflows/feature-pipeline.js +88 -0
- package/templates/claude-workflows/release-gate.js +64 -0
- package/templates/claude-workflows/review-fanout.js +125 -0
- package/templates/claude-workflows/rulebook-driver.js +382 -0
- package/templates/claude-workflows/spec-author.js +133 -0
- package/templates/cli/AIDER.md +49 -49
- package/templates/cli/AMAZON_Q.md +25 -25
- package/templates/cli/AUGGIE.md +32 -32
- package/templates/cli/CLAUDE.md +117 -117
- package/templates/cli/CLINE.md +99 -99
- package/templates/cli/CODEBUDDY.md +20 -20
- package/templates/cli/CODEIUM.md +20 -20
- package/templates/cli/CODEX.md +21 -21
- package/templates/cli/CONTINUE.md +34 -34
- package/templates/cli/CURSOR_CLI.md +62 -62
- package/templates/cli/FACTORY.md +18 -18
- package/templates/cli/GEMINI.md +35 -35
- package/templates/cli/KILOCODE.md +18 -18
- package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
- package/templates/commands/rulebook-decision-create.md +55 -55
- package/templates/commands/rulebook-decision-list.md +15 -15
- package/templates/commands/rulebook-knowledge-add.md +41 -41
- package/templates/commands/rulebook-knowledge-list.md +15 -15
- package/templates/commands/rulebook-memory-save.md +48 -48
- package/templates/commands/rulebook-memory-search.md +47 -47
- package/templates/commands/rulebook-task-apply.md +67 -67
- package/templates/commands/rulebook-task-archive.md +94 -94
- package/templates/commands/rulebook-task-create.md +93 -93
- package/templates/commands/rulebook-task-list.md +42 -42
- package/templates/commands/rulebook-task-show.md +52 -52
- package/templates/commands/rulebook-task-validate.md +53 -53
- package/templates/compact-context/_default.md +23 -23
- package/templates/compact-context/cpp.md +26 -26
- package/templates/compact-context/go.md +26 -26
- package/templates/compact-context/python.md +26 -26
- package/templates/compact-context/rust.md +28 -28
- package/templates/compact-context/typescript.md +29 -29
- package/templates/core/AGENTS_OVERRIDE.md +16 -16
- package/templates/core/AGENT_AUTOMATION.md +296 -296
- package/templates/core/CLAUDE_MD_v2.md +90 -90
- package/templates/core/DAG.md +304 -304
- package/templates/core/DECISIONS.md +38 -38
- package/templates/core/DOCUMENTATION_RULES.md +36 -36
- package/templates/core/KNOWLEDGE.md +49 -49
- package/templates/core/MULTI_AGENT.md +74 -74
- package/templates/core/PLANS.md +28 -28
- package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
- package/templates/core/RULEBOOK.md +1947 -1947
- package/templates/core/TIER1_PROHIBITIONS.md +154 -154
- package/templates/core/TOKEN_OPTIMIZATION.md +49 -49
- package/templates/git/CI_CD_PATTERNS.md +661 -661
- package/templates/git/GITHUB_ACTIONS.md +728 -728
- package/templates/git/GITLAB_CI.md +730 -730
- package/templates/git/GIT_WORKFLOW.md +1192 -1192
- package/templates/git/SECRETS_MANAGEMENT.md +585 -585
- package/templates/hooks/COMMIT_MSG.md +530 -530
- package/templates/hooks/POST_CHECKOUT.md +546 -546
- package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
- package/templates/hooks/PRE_COMMIT.md +414 -414
- package/templates/hooks/PRE_PUSH.md +601 -601
- package/templates/hooks/check-context-and-handoff.sh +16 -6
- package/templates/hooks/update-check.ps1 +84 -0
- package/templates/hooks/update-check.sh +103 -0
- package/templates/ides/CONTINUE_RULES.md +16 -16
- package/templates/ides/COPILOT_INSTRUCTIONS.md +23 -23
- package/templates/ides/GEMINI_RULES.md +17 -17
- package/templates/ides/WINDSURF_RULES.md +14 -14
- package/templates/languages/C.md +333 -333
- package/templates/languages/CPP.md +743 -743
- package/templates/languages/CSHARP.md +417 -417
- package/templates/languages/ELIXIR.md +454 -454
- package/templates/languages/ERLANG.md +361 -361
- package/templates/languages/GO.md +645 -645
- package/templates/languages/HASKELL.md +177 -177
- package/templates/languages/JAVA.md +607 -607
- package/templates/languages/JAVASCRIPT.md +631 -631
- package/templates/languages/JULIA.md +97 -97
- package/templates/languages/KOTLIN.md +511 -511
- package/templates/languages/LISP.md +100 -100
- package/templates/languages/LUA.md +74 -74
- package/templates/languages/OBJECTIVEC.md +90 -90
- package/templates/languages/PHP.md +416 -416
- package/templates/languages/PYTHON.md +682 -682
- package/templates/languages/RUBY.md +421 -421
- package/templates/languages/RUST.md +477 -477
- package/templates/languages/SAS.md +73 -73
- package/templates/languages/SCALA.md +348 -348
- package/templates/languages/SOLIDITY.md +580 -580
- package/templates/languages/SQL.md +137 -137
- package/templates/languages/SWIFT.md +466 -466
- package/templates/languages/TYPESCRIPT.md +591 -591
- package/templates/languages/ZIG.md +265 -265
- package/templates/libraries/go/ECHO.md +18 -0
- package/templates/libraries/go/GIN.md +18 -0
- package/templates/libraries/go/GORM.md +18 -0
- package/templates/libraries/python/DJANGO.md +18 -0
- package/templates/libraries/python/FASTAPI.md +18 -0
- package/templates/libraries/python/FLASK.md +17 -0
- package/templates/libraries/python/PYDANTIC.md +17 -0
- package/templates/libraries/python/PYTEST.md +17 -0
- package/templates/libraries/python/SQLALCHEMY.md +17 -0
- package/templates/libraries/rust/ACTIX.md +17 -0
- package/templates/libraries/rust/AXUM.md +18 -0
- package/templates/libraries/rust/SERDE.md +16 -0
- package/templates/libraries/rust/SQLX.md +17 -0
- package/templates/libraries/rust/TOKIO.md +16 -0
- package/templates/libraries/typescript/ANGULAR.md +17 -0
- package/templates/libraries/typescript/DRIZZLE.md +16 -0
- package/templates/libraries/typescript/EXPRESS.md +17 -0
- package/templates/libraries/typescript/HEROUI.md +16 -0
- package/templates/libraries/typescript/JEST.md +17 -0
- package/templates/libraries/typescript/NESTJS.md +17 -0
- package/templates/libraries/typescript/NEXT.md +18 -0
- package/templates/libraries/typescript/PRISMA.md +16 -0
- package/templates/libraries/typescript/RADIX.md +16 -0
- package/templates/libraries/typescript/REACT.md +18 -0
- package/templates/libraries/typescript/SHADCN.md +16 -0
- package/templates/libraries/typescript/SVELTE.md +16 -0
- package/templates/libraries/typescript/TAILWIND.md +16 -0
- package/templates/libraries/typescript/TRPC.md +16 -0
- package/templates/libraries/typescript/VITEST.md +17 -0
- package/templates/libraries/typescript/VUE.md +17 -0
- package/templates/libraries/typescript/ZOD.md +17 -0
- package/templates/modules/ATLASSIAN.md +255 -255
- package/templates/modules/CONTEXT7.md +54 -54
- package/templates/modules/FIGMA.md +267 -267
- package/templates/modules/GITHUB_MCP.md +64 -64
- package/templates/modules/GRAFANA.md +328 -328
- package/templates/modules/MEMORY.md +126 -126
- package/templates/modules/NOTION.md +247 -247
- package/templates/modules/PLAYWRIGHT.md +90 -90
- package/templates/modules/RULEBOOK_MCP.md +208 -208
- package/templates/modules/SERENA.md +337 -337
- package/templates/modules/SUPABASE.md +223 -223
- package/templates/modules/SYNAP.md +69 -69
- package/templates/modules/VECTORIZER.md +63 -63
- package/templates/modules/sequential-thinking.md +42 -42
- package/templates/rules/consult-analysis-before-implementing.md +23 -23
- package/templates/rules/cpp.md +46 -46
- package/templates/rules/csharp.md +44 -44
- package/templates/rules/diagnostic-first.md +39 -39
- package/templates/rules/fail-twice-escalate.md +46 -46
- package/templates/rules/follow-task-sequence.md +36 -36
- package/templates/rules/git-safety.md +29 -29
- package/templates/rules/go.md +40 -40
- package/templates/rules/incremental-implementation.md +56 -56
- package/templates/rules/incremental-tests.md +29 -29
- package/templates/rules/java.md +43 -43
- package/templates/rules/javascript.md +39 -39
- package/templates/rules/knowledge-base-usage.md +41 -41
- package/templates/rules/multi-agent-teams.md +75 -75
- package/templates/rules/no-deferred.md +31 -31
- package/templates/rules/no-shortcuts.md +30 -30
- package/templates/rules/python.md +43 -43
- package/templates/rules/research-first.md +30 -30
- package/templates/rules/respect-handoff-trigger.md +41 -41
- package/templates/rules/rust.md +40 -40
- package/templates/rules/sequential-editing.md +21 -21
- package/templates/rules/session-workflow.md +24 -24
- package/templates/rules/task-decomposition.md +32 -32
- package/templates/rules/typescript.md +40 -40
- package/templates/skills/cli/aider/SKILL.md +59 -59
- package/templates/skills/cli/amazon-q/SKILL.md +35 -35
- package/templates/skills/cli/auggie/SKILL.md +42 -42
- package/templates/skills/cli/claude/SKILL.md +42 -42
- package/templates/skills/cli/cline/SKILL.md +42 -42
- package/templates/skills/cli/codebuddy/SKILL.md +30 -30
- package/templates/skills/cli/codeium/SKILL.md +30 -30
- package/templates/skills/cli/codex/SKILL.md +31 -31
- package/templates/skills/cli/continue/SKILL.md +44 -44
- package/templates/skills/cli/cursor-cli/SKILL.md +38 -38
- package/templates/skills/cli/factory/SKILL.md +28 -28
- package/templates/skills/cli/gemini/SKILL.md +45 -45
- package/templates/skills/cli/kilocode/SKILL.md +28 -28
- package/templates/skills/core/agent-automation/SKILL.md +194 -194
- package/templates/skills/core/dag/SKILL.md +314 -314
- package/templates/skills/core/documentation-rules/SKILL.md +46 -46
- package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
- package/templates/skills/core/rulebook/SKILL.md +176 -176
- package/templates/skills/core/rulebook-terse/SKILL.md +116 -116
- package/templates/skills/core/rulebook-terse-commit/SKILL.md +96 -96
- package/templates/skills/core/rulebook-terse-review/SKILL.md +112 -112
- package/templates/skills/dev/accessibility/SKILL.md +17 -17
- package/templates/skills/dev/analysis/SKILL.md +19 -19
- package/templates/skills/dev/api-design/SKILL.md +15 -15
- package/templates/skills/dev/architect/SKILL.md +17 -17
- package/templates/skills/dev/build-fix/SKILL.md +17 -17
- package/templates/skills/dev/db-design/SKILL.md +15 -15
- package/templates/skills/dev/debug/SKILL.md +16 -16
- package/templates/skills/dev/deploy/SKILL.md +17 -17
- package/templates/skills/dev/docs/SKILL.md +17 -17
- package/templates/skills/dev/handoff/SKILL.md +27 -27
- package/templates/skills/dev/migrate/SKILL.md +15 -15
- package/templates/skills/dev/perf/SKILL.md +17 -17
- package/templates/skills/dev/refactor/SKILL.md +17 -17
- package/templates/skills/dev/research/SKILL.md +14 -14
- package/templates/skills/dev/review/SKILL.md +18 -18
- package/templates/skills/dev/security-audit/SKILL.md +17 -17
- package/templates/skills/dev/spec/SKILL.md +65 -0
- package/templates/skills/ides/copilot/SKILL.md +47 -47
- package/templates/skills/ides/cursor/SKILL.md +53 -53
- package/templates/skills/ides/jetbrains-ai/SKILL.md +45 -45
- package/templates/skills/ides/replit/SKILL.md +46 -46
- package/templates/skills/ides/tabnine/SKILL.md +39 -39
- package/templates/skills/ides/vscode/SKILL.md +50 -50
- package/templates/skills/ides/windsurf/SKILL.md +46 -46
- package/templates/skills/ides/zed/SKILL.md +42 -42
- package/templates/skills/languages/c/SKILL.md +343 -343
- package/templates/skills/languages/cpp/SKILL.md +753 -753
- package/templates/skills/languages/csharp/SKILL.md +427 -427
- package/templates/skills/languages/elixir/SKILL.md +464 -464
- package/templates/skills/languages/erlang/SKILL.md +371 -371
- package/templates/skills/languages/go/SKILL.md +655 -655
- package/templates/skills/languages/haskell/SKILL.md +187 -187
- package/templates/skills/languages/java/SKILL.md +617 -617
- package/templates/skills/languages/javascript/SKILL.md +641 -641
- package/templates/skills/languages/julia/SKILL.md +107 -107
- package/templates/skills/languages/kotlin/SKILL.md +521 -521
- package/templates/skills/languages/lisp/SKILL.md +110 -110
- package/templates/skills/languages/lua/SKILL.md +84 -84
- package/templates/skills/languages/objectivec/SKILL.md +100 -100
- package/templates/skills/languages/php/SKILL.md +426 -426
- package/templates/skills/languages/python/SKILL.md +692 -692
- package/templates/skills/languages/ruby/SKILL.md +431 -431
- package/templates/skills/languages/rust/SKILL.md +487 -487
- package/templates/skills/languages/sas/SKILL.md +83 -83
- package/templates/skills/languages/scala/SKILL.md +358 -358
- package/templates/skills/languages/solidity/SKILL.md +590 -590
- package/templates/skills/languages/sql/SKILL.md +147 -147
- package/templates/skills/languages/swift/SKILL.md +476 -476
- package/templates/skills/languages/typescript/SKILL.md +302 -302
- package/templates/skills/languages/zig/SKILL.md +275 -275
- package/templates/skills/modules/atlassian/SKILL.md +265 -265
- package/templates/skills/modules/context7/SKILL.md +64 -64
- package/templates/skills/modules/figma/SKILL.md +277 -277
- package/templates/skills/modules/github-mcp/SKILL.md +74 -74
- package/templates/skills/modules/grafana/SKILL.md +338 -338
- package/templates/skills/modules/memory/SKILL.md +73 -73
- package/templates/skills/modules/notion/SKILL.md +257 -257
- package/templates/skills/modules/playwright/SKILL.md +100 -100
- package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
- package/templates/skills/modules/serena/SKILL.md +347 -347
- package/templates/skills/modules/supabase/SKILL.md +233 -233
- package/templates/skills/modules/synap/SKILL.md +79 -79
- package/templates/skills/modules/vectorizer/SKILL.md +73 -73
- package/templates/workflows/typescript-test.yml +9 -3
- package/dist/agents/ralph-parser.d.ts +0 -91
- package/dist/agents/ralph-parser.d.ts.map +0 -1
- package/dist/agents/ralph-parser.js +0 -415
- package/dist/agents/ralph-parser.js.map +0 -1
- package/dist/cli/commands/analysis.d.ts +0 -8
- package/dist/cli/commands/analysis.d.ts.map +0 -1
- package/dist/cli/commands/analysis.js +0 -78
- package/dist/cli/commands/analysis.js.map +0 -1
- package/dist/cli/commands/compress.d.ts +0 -18
- package/dist/cli/commands/compress.d.ts.map +0 -1
- package/dist/cli/commands/compress.js +0 -100
- package/dist/cli/commands/compress.js.map +0 -1
- package/dist/cli/commands/ralph.d.ts +0 -45
- package/dist/cli/commands/ralph.d.ts.map +0 -1
- package/dist/cli/commands/ralph.js +0 -694
- package/dist/cli/commands/ralph.js.map +0 -1
- package/dist/cli/docs-prompts.d.ts +0 -3
- package/dist/cli/docs-prompts.d.ts.map +0 -1
- package/dist/cli/docs-prompts.js +0 -45
- package/dist/cli/docs-prompts.js.map +0 -1
- package/dist/core/agent-manager.d.ts +0 -69
- package/dist/core/agent-manager.d.ts.map +0 -1
- package/dist/core/agent-manager.js +0 -476
- package/dist/core/agent-manager.js.map +0 -1
- package/dist/core/agent-template-engine.d.ts +0 -51
- package/dist/core/agent-template-engine.d.ts.map +0 -1
- package/dist/core/agent-template-engine.js +0 -291
- package/dist/core/agent-template-engine.js.map +0 -1
- package/dist/core/analysis-manager.d.ts +0 -56
- package/dist/core/analysis-manager.d.ts.map +0 -1
- package/dist/core/analysis-manager.js +0 -218
- package/dist/core/analysis-manager.js.map +0 -1
- package/dist/core/auto-fixer.d.ts +0 -14
- package/dist/core/auto-fixer.d.ts.map +0 -1
- package/dist/core/auto-fixer.js +0 -207
- package/dist/core/auto-fixer.js.map +0 -1
- package/dist/core/changelog-generator.d.ts +0 -44
- package/dist/core/changelog-generator.d.ts.map +0 -1
- package/dist/core/changelog-generator.js +0 -222
- package/dist/core/changelog-generator.js.map +0 -1
- package/dist/core/claude-mcp.d.ts +0 -59
- package/dist/core/claude-mcp.d.ts.map +0 -1
- package/dist/core/claude-mcp.js +0 -220
- package/dist/core/claude-mcp.js.map +0 -1
- package/dist/core/claude-md-generator.d.ts +0 -52
- package/dist/core/claude-md-generator.d.ts.map +0 -1
- package/dist/core/claude-md-generator.js +0 -104
- package/dist/core/claude-md-generator.js.map +0 -1
- package/dist/core/claude-settings-manager.d.ts +0 -44
- package/dist/core/claude-settings-manager.d.ts.map +0 -1
- package/dist/core/claude-settings-manager.js +0 -191
- package/dist/core/claude-settings-manager.js.map +0 -1
- package/dist/core/cli-bridge.d.ts +0 -113
- package/dist/core/cli-bridge.d.ts.map +0 -1
- package/dist/core/cli-bridge.js +0 -1094
- package/dist/core/cli-bridge.js.map +0 -1
- package/dist/core/compact-context-manager.d.ts +0 -34
- package/dist/core/compact-context-manager.d.ts.map +0 -1
- package/dist/core/compact-context-manager.js +0 -60
- package/dist/core/compact-context-manager.js.map +0 -1
- package/dist/core/complexity-detector.d.ts +0 -36
- package/dist/core/complexity-detector.d.ts.map +0 -1
- package/dist/core/complexity-detector.js +0 -334
- package/dist/core/complexity-detector.js.map +0 -1
- package/dist/core/compress/compressor.d.ts +0 -60
- package/dist/core/compress/compressor.d.ts.map +0 -1
- package/dist/core/compress/compressor.js +0 -232
- package/dist/core/compress/compressor.js.map +0 -1
- package/dist/core/compress/discover.d.ts +0 -19
- package/dist/core/compress/discover.d.ts.map +0 -1
- package/dist/core/compress/discover.js +0 -100
- package/dist/core/compress/discover.js.map +0 -1
- package/dist/core/compress/validator.d.ts +0 -47
- package/dist/core/compress/validator.d.ts.map +0 -1
- package/dist/core/compress/validator.js +0 -131
- package/dist/core/compress/validator.js.map +0 -1
- package/dist/core/config-manager.d.ts +0 -86
- package/dist/core/config-manager.d.ts.map +0 -1
- package/dist/core/config-manager.js +0 -621
- package/dist/core/config-manager.js.map +0 -1
- package/dist/core/coverage-checker.d.ts +0 -14
- package/dist/core/coverage-checker.d.ts.map +0 -1
- package/dist/core/coverage-checker.js +0 -176
- package/dist/core/coverage-checker.js.map +0 -1
- package/dist/core/cursor-mdc-generator.d.ts +0 -30
- package/dist/core/cursor-mdc-generator.d.ts.map +0 -1
- package/dist/core/cursor-mdc-generator.js +0 -98
- package/dist/core/cursor-mdc-generator.js.map +0 -1
- package/dist/core/decision-manager.d.ts +0 -25
- package/dist/core/decision-manager.d.ts.map +0 -1
- package/dist/core/decision-manager.js +0 -183
- package/dist/core/decision-manager.js.map +0 -1
- package/dist/core/dependency-checker.d.ts +0 -21
- package/dist/core/dependency-checker.d.ts.map +0 -1
- package/dist/core/dependency-checker.js +0 -247
- package/dist/core/dependency-checker.js.map +0 -1
- package/dist/core/detector.d.ts +0 -27
- package/dist/core/detector.d.ts.map +0 -1
- package/dist/core/detector.js +0 -1763
- package/dist/core/detector.js.map +0 -1
- package/dist/core/docs-generator.d.ts +0 -9
- package/dist/core/docs-generator.d.ts.map +0 -1
- package/dist/core/docs-generator.js +0 -531
- package/dist/core/docs-generator.js.map +0 -1
- package/dist/core/doctor.d.ts +0 -19
- package/dist/core/doctor.d.ts.map +0 -1
- package/dist/core/doctor.js +0 -229
- package/dist/core/doctor.js.map +0 -1
- package/dist/core/generator.d.ts +0 -56
- package/dist/core/generator.d.ts.map +0 -1
- package/dist/core/generator.js +0 -1193
- package/dist/core/generator.js.map +0 -1
- package/dist/core/github-issues-importer.d.ts +0 -82
- package/dist/core/github-issues-importer.d.ts.map +0 -1
- package/dist/core/github-issues-importer.js +0 -161
- package/dist/core/github-issues-importer.js.map +0 -1
- package/dist/core/gitignore-generator.d.ts +0 -13
- package/dist/core/gitignore-generator.d.ts.map +0 -1
- package/dist/core/gitignore-generator.js +0 -307
- package/dist/core/gitignore-generator.js.map +0 -1
- package/dist/core/health-scorer.d.ts +0 -61
- package/dist/core/health-scorer.d.ts.map +0 -1
- package/dist/core/health-scorer.js +0 -638
- package/dist/core/health-scorer.js.map +0 -1
- package/dist/core/iteration-tracker.d.ts +0 -85
- package/dist/core/iteration-tracker.d.ts.map +0 -1
- package/dist/core/iteration-tracker.js +0 -295
- package/dist/core/iteration-tracker.js.map +0 -1
- package/dist/core/knowledge-manager.d.ts +0 -24
- package/dist/core/knowledge-manager.d.ts.map +0 -1
- package/dist/core/knowledge-manager.js +0 -173
- package/dist/core/knowledge-manager.js.map +0 -1
- package/dist/core/learn-manager.d.ts +0 -29
- package/dist/core/learn-manager.d.ts.map +0 -1
- package/dist/core/learn-manager.js +0 -159
- package/dist/core/learn-manager.js.map +0 -1
- package/dist/core/mcp-reference-generator.d.ts +0 -13
- package/dist/core/mcp-reference-generator.d.ts.map +0 -1
- package/dist/core/mcp-reference-generator.js +0 -66
- package/dist/core/mcp-reference-generator.js.map +0 -1
- package/dist/core/minimal-scaffolder.d.ts +0 -8
- package/dist/core/minimal-scaffolder.d.ts.map +0 -1
- package/dist/core/minimal-scaffolder.js +0 -51
- package/dist/core/minimal-scaffolder.js.map +0 -1
- package/dist/core/modern-console.d.ts +0 -98
- package/dist/core/modern-console.d.ts.map +0 -1
- package/dist/core/modern-console.js +0 -556
- package/dist/core/modern-console.js.map +0 -1
- package/dist/core/multi-tool-generator.d.ts +0 -59
- package/dist/core/multi-tool-generator.d.ts.map +0 -1
- package/dist/core/multi-tool-generator.js +0 -157
- package/dist/core/multi-tool-generator.js.map +0 -1
- package/dist/core/override-manager.d.ts +0 -23
- package/dist/core/override-manager.d.ts.map +0 -1
- package/dist/core/override-manager.js +0 -82
- package/dist/core/override-manager.js.map +0 -1
- package/dist/core/plans-manager.d.ts +0 -46
- package/dist/core/plans-manager.d.ts.map +0 -1
- package/dist/core/plans-manager.js +0 -158
- package/dist/core/plans-manager.js.map +0 -1
- package/dist/core/prd-generator.d.ts +0 -48
- package/dist/core/prd-generator.d.ts.map +0 -1
- package/dist/core/prd-generator.js +0 -233
- package/dist/core/prd-generator.js.map +0 -1
- package/dist/core/ralph-manager.d.ts +0 -163
- package/dist/core/ralph-manager.d.ts.map +0 -1
- package/dist/core/ralph-manager.js +0 -555
- package/dist/core/ralph-manager.js.map +0 -1
- package/dist/core/ralph-parallel.d.ts +0 -55
- package/dist/core/ralph-parallel.d.ts.map +0 -1
- package/dist/core/ralph-parallel.js +0 -201
- package/dist/core/ralph-parallel.js.map +0 -1
- package/dist/core/ralph-plan-checkpoint.d.ts +0 -58
- package/dist/core/ralph-plan-checkpoint.d.ts.map +0 -1
- package/dist/core/ralph-plan-checkpoint.js +0 -154
- package/dist/core/ralph-plan-checkpoint.js.map +0 -1
- package/dist/core/ralph-scripts.d.ts +0 -12
- package/dist/core/ralph-scripts.d.ts.map +0 -1
- package/dist/core/ralph-scripts.js +0 -50
- package/dist/core/ralph-scripts.js.map +0 -1
- package/dist/core/review-manager.d.ts +0 -74
- package/dist/core/review-manager.d.ts.map +0 -1
- package/dist/core/review-manager.js +0 -371
- package/dist/core/review-manager.js.map +0 -1
- package/dist/core/rules-generator.d.ts +0 -73
- package/dist/core/rules-generator.d.ts.map +0 -1
- package/dist/core/rules-generator.js +0 -202
- package/dist/core/rules-generator.js.map +0 -1
- package/dist/core/skills-manager.d.ts +0 -126
- package/dist/core/skills-manager.d.ts.map +0 -1
- package/dist/core/skills-manager.js +0 -654
- package/dist/core/skills-manager.js.map +0 -1
- package/dist/core/state-writer.d.ts +0 -35
- package/dist/core/state-writer.d.ts.map +0 -1
- package/dist/core/state-writer.js +0 -81
- package/dist/core/state-writer.js.map +0 -1
- package/dist/core/task-manager.d.ts +0 -127
- package/dist/core/task-manager.d.ts.map +0 -1
- package/dist/core/task-manager.js +0 -607
- package/dist/core/task-manager.js.map +0 -1
- package/dist/core/telemetry.d.ts +0 -29
- package/dist/core/telemetry.d.ts.map +0 -1
- package/dist/core/telemetry.js +0 -57
- package/dist/core/telemetry.js.map +0 -1
- package/dist/core/validator.d.ts +0 -21
- package/dist/core/validator.d.ts.map +0 -1
- package/dist/core/validator.js +0 -177
- package/dist/core/validator.js.map +0 -1
- package/dist/core/version-bumper.d.ts +0 -19
- package/dist/core/version-bumper.d.ts.map +0 -1
- package/dist/core/version-bumper.js +0 -180
- package/dist/core/version-bumper.js.map +0 -1
- package/dist/core/watcher.d.ts +0 -9
- package/dist/core/watcher.d.ts.map +0 -1
- package/dist/core/watcher.js +0 -22
- package/dist/core/watcher.js.map +0 -1
- package/dist/core/workflow-generator.d.ts +0 -15
- package/dist/core/workflow-generator.d.ts.map +0 -1
- package/dist/core/workflow-generator.js +0 -391
- package/dist/core/workflow-generator.js.map +0 -1
- package/dist/hooks/terse-activate.d.ts +0 -59
- package/dist/hooks/terse-activate.d.ts.map +0 -1
- package/dist/hooks/terse-activate.js +0 -149
- package/dist/hooks/terse-activate.js.map +0 -1
- package/dist/hooks/terse-config.d.ts +0 -51
- package/dist/hooks/terse-config.d.ts.map +0 -1
- package/dist/hooks/terse-config.js +0 -130
- package/dist/hooks/terse-config.js.map +0 -1
- package/dist/hooks/terse-mode-tracker.d.ts +0 -78
- package/dist/hooks/terse-mode-tracker.d.ts.map +0 -1
- package/dist/hooks/terse-mode-tracker.js +0 -213
- package/dist/hooks/terse-mode-tracker.js.map +0 -1
- package/dist/memory/hnsw-index.d.ts +0 -68
- package/dist/memory/hnsw-index.d.ts.map +0 -1
- package/dist/memory/hnsw-index.js +0 -544
- package/dist/memory/hnsw-index.js.map +0 -1
- package/dist/memory/memory-cache.d.ts +0 -33
- package/dist/memory/memory-cache.d.ts.map +0 -1
- package/dist/memory/memory-cache.js +0 -85
- package/dist/memory/memory-cache.js.map +0 -1
- package/dist/memory/memory-search.d.ts +0 -42
- package/dist/memory/memory-search.d.ts.map +0 -1
- package/dist/memory/memory-search.js +0 -180
- package/dist/memory/memory-search.js.map +0 -1
- package/dist/memory/memory-store.d.ts +0 -84
- package/dist/memory/memory-store.d.ts.map +0 -1
- package/dist/memory/memory-store.js +0 -566
- package/dist/memory/memory-store.js.map +0 -1
- package/dist/memory/memory-vectorizer.d.ts +0 -29
- package/dist/memory/memory-vectorizer.d.ts.map +0 -1
- package/dist/memory/memory-vectorizer.js +0 -199
- package/dist/memory/memory-vectorizer.js.map +0 -1
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
export const meta = {
|
|
2
|
+
name: 'bugfix',
|
|
3
|
+
description:
|
|
4
|
+
'Research-first bug fix: root-cause the bug, write a regression test then fix it (TDD), and gate through a quality-gatekeeper verdict (loop max 2). Pass the bug report via args.',
|
|
5
|
+
phases: [
|
|
6
|
+
{ title: 'Diagnose', model: 'haiku' },
|
|
7
|
+
{ title: 'Fix', model: 'sonnet' },
|
|
8
|
+
{ title: 'Verify', model: 'opus' },
|
|
9
|
+
],
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const bug =
|
|
13
|
+
args && typeof args === 'object' && args.bug
|
|
14
|
+
? args.bug
|
|
15
|
+
: typeof args === 'string' && args.trim()
|
|
16
|
+
? args
|
|
17
|
+
: null
|
|
18
|
+
|
|
19
|
+
if (!bug) {
|
|
20
|
+
log('No bug description provided. Pass args: { bug: "..." } or a plain string.')
|
|
21
|
+
return { error: 'missing-bug' }
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const VERDICT_SCHEMA = {
|
|
25
|
+
type: 'object',
|
|
26
|
+
additionalProperties: false,
|
|
27
|
+
required: ['pass', 'regressionTestPresent', 'issues', 'summary'],
|
|
28
|
+
properties: {
|
|
29
|
+
pass: { type: 'boolean', description: 'true only if the bug is fixed at the root cause and covered by a passing regression test' },
|
|
30
|
+
regressionTestPresent: { type: 'boolean' },
|
|
31
|
+
issues: { type: 'array', items: { type: 'string' } },
|
|
32
|
+
summary: { type: 'string' },
|
|
33
|
+
},
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
phase('Diagnose')
|
|
37
|
+
const diagnosis = await agent(
|
|
38
|
+
`Root-cause this bug. Research-first: do not guess. Read the relevant code, reproduce mentally, and cite the exact file:line where the defect lives and why it produces the symptom. Read-only.
|
|
39
|
+
Bug report: "${bug}"`,
|
|
40
|
+
{ label: 'diagnose', phase: 'Diagnose', agentType: 'researcher', model: 'haiku' }
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
const MAX_ROUNDS = 2
|
|
44
|
+
let verdict = null
|
|
45
|
+
let lastIssues = []
|
|
46
|
+
|
|
47
|
+
for (let round = 1; round <= MAX_ROUNDS; round++) {
|
|
48
|
+
const fixPrompt =
|
|
49
|
+
round === 1
|
|
50
|
+
? `Fix this bug at its root cause (TDD: write a FAILING regression test that reproduces the bug first, then fix until it passes).
|
|
51
|
+
Bug: "${bug}"
|
|
52
|
+
Root-cause analysis:
|
|
53
|
+
"""
|
|
54
|
+
${diagnosis}
|
|
55
|
+
"""
|
|
56
|
+
Do not mask the symptom — fix the cause. Run type-check + tests before finishing. Report files changed and the regression test added.`
|
|
57
|
+
: `The quality gatekeeper REJECTED your fix. Address ONLY these issues:
|
|
58
|
+
${lastIssues.map((i, n) => `${n + 1}. ${i}`).join('\n')}
|
|
59
|
+
Re-run type-check + tests. Report what you changed.`
|
|
60
|
+
|
|
61
|
+
const fix = await agent(fixPrompt, {
|
|
62
|
+
label: `fix:round-${round}`,
|
|
63
|
+
phase: 'Fix',
|
|
64
|
+
agentType: 'implementer',
|
|
65
|
+
model: 'sonnet',
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
phase('Verify')
|
|
69
|
+
verdict = await agent(
|
|
70
|
+
`Independently verify this bug fix. NO prior context — judge from evidence.
|
|
71
|
+
1. Run \`git --no-pager diff\` to see the change.
|
|
72
|
+
2. Confirm a regression test exists that fails WITHOUT the fix and passes WITH it (run the suite).
|
|
73
|
+
3. Confirm the fix targets the root cause, not the symptom, and introduces no regressions (type-check + full relevant tests).
|
|
74
|
+
Bug: "${bug}"
|
|
75
|
+
Developer report (verify, don't trust): """${fix}"""
|
|
76
|
+
Set pass=true only if the root cause is fixed and covered by a passing regression test.`,
|
|
77
|
+
{ label: `verify:round-${round}`, phase: 'Verify', agentType: 'quality-gatekeeper', model: 'opus', schema: VERDICT_SCHEMA }
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
if (verdict && verdict.pass) {
|
|
81
|
+
log(`Fix verified on round ${round}.`)
|
|
82
|
+
break
|
|
83
|
+
}
|
|
84
|
+
lastIssues = (verdict && verdict.issues) || ['Gatekeeper returned no verdict']
|
|
85
|
+
log(`Round ${round} rejected: ${lastIssues.length} issue(s).`)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return {
|
|
89
|
+
bug,
|
|
90
|
+
diagnosis,
|
|
91
|
+
passed: !!(verdict && verdict.pass),
|
|
92
|
+
issues: verdict && verdict.pass ? [] : lastIssues,
|
|
93
|
+
verdict: verdict && verdict.summary,
|
|
94
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
export const meta = {
|
|
2
|
+
name: 'feature-pipeline',
|
|
3
|
+
description:
|
|
4
|
+
'End-to-end feature delivery: research → architect → implement → test → review → document. Sequential because each stage depends on the previous one. Pass the feature description via args.',
|
|
5
|
+
phases: [
|
|
6
|
+
{ title: 'Research', model: 'haiku' },
|
|
7
|
+
{ title: 'Design', model: 'opus' },
|
|
8
|
+
{ title: 'Implement', model: 'sonnet' },
|
|
9
|
+
{ title: 'Test', model: 'sonnet' },
|
|
10
|
+
{ title: 'Review', model: 'opus' },
|
|
11
|
+
{ title: 'Document', model: 'haiku' },
|
|
12
|
+
],
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const feature =
|
|
16
|
+
args && typeof args === 'object' && args.feature
|
|
17
|
+
? args.feature
|
|
18
|
+
: typeof args === 'string' && args.trim()
|
|
19
|
+
? args
|
|
20
|
+
: null
|
|
21
|
+
|
|
22
|
+
if (!feature) {
|
|
23
|
+
log('No feature description provided. Pass args: { feature: "..." } or a plain string.')
|
|
24
|
+
return { error: 'missing-feature' }
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const VERDICT_SCHEMA = {
|
|
28
|
+
type: 'object',
|
|
29
|
+
additionalProperties: false,
|
|
30
|
+
required: ['pass', 'issues', 'summary'],
|
|
31
|
+
properties: {
|
|
32
|
+
pass: { type: 'boolean' },
|
|
33
|
+
issues: { type: 'array', items: { type: 'string' } },
|
|
34
|
+
summary: { type: 'string' },
|
|
35
|
+
},
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
phase('Research')
|
|
39
|
+
const research = await agent(
|
|
40
|
+
`Research the codebase to inform building this feature: "${feature}".
|
|
41
|
+
Identify the relevant files, existing patterns/conventions, reusable utilities, and risks. Read-only — do not modify anything. Report a concise, actionable map.`,
|
|
42
|
+
{ label: 'research', phase: 'Research', agentType: 'researcher', model: 'haiku' }
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
phase('Design')
|
|
46
|
+
const design = await agent(
|
|
47
|
+
`Design the architecture for: "${feature}".
|
|
48
|
+
Use this codebase research as ground truth:
|
|
49
|
+
"""
|
|
50
|
+
${research}
|
|
51
|
+
"""
|
|
52
|
+
Produce a concrete implementation blueprint: files to create/modify, component/data design, and the build sequence. Follow existing conventions; flag trade-offs. Do not write production code yet.`,
|
|
53
|
+
{ label: 'design', phase: 'Design', agentType: 'architect', model: 'opus' }
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
phase('Implement')
|
|
57
|
+
const impl = await agent(
|
|
58
|
+
`Implement this feature following the design blueprint below. SDD: trace every behavior to the design; add nothing unspecified. TDD: write tests first where practical.
|
|
59
|
+
Feature: "${feature}"
|
|
60
|
+
Blueprint:
|
|
61
|
+
"""
|
|
62
|
+
${design}
|
|
63
|
+
"""
|
|
64
|
+
Run the type-checker before finishing. Report the files you created/changed.`,
|
|
65
|
+
{ label: 'implement', phase: 'Implement', agentType: 'typescript-implementer', model: 'sonnet' }
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
phase('Test')
|
|
69
|
+
const tests = await agent(
|
|
70
|
+
`Write/extend tests for the feature just implemented ("${feature}"). Cover the new behavior and its edge cases with meaningful assertions (no boilerplate). Run \`git --no-pager diff\` to see what was implemented, write the tests, and run them until green. Report coverage of the new code.`,
|
|
71
|
+
{ label: 'test', phase: 'Test', agentType: 'tester', model: 'sonnet' }
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
phase('Review')
|
|
75
|
+
const review = await agent(
|
|
76
|
+
`Independently review the full diff for feature "${feature}". Run \`git --no-pager diff\`. Judge correctness, adherence to the design, edge cases, and test adequacy. Run type-check and tests to confirm green. Return pass=true only if it is genuinely ready to merge.
|
|
77
|
+
Implementation report: """${impl}"""
|
|
78
|
+
Test report: """${tests}"""`,
|
|
79
|
+
{ label: 'review', phase: 'Review', agentType: 'code-reviewer', model: 'opus', schema: VERDICT_SCHEMA }
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
phase('Document')
|
|
83
|
+
const docs = await agent(
|
|
84
|
+
`Document the feature "${feature}". Run \`git --no-pager diff\` to see what shipped. Update README.md (if user-facing) and add a conventional-commit CHANGELOG.md entry under the unreleased section. English only; document only what exists in the diff.`,
|
|
85
|
+
{ label: 'document', phase: 'Document', agentType: 'docs-writer', model: 'haiku' }
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
return { feature, design, review, passed: !!(review && review.pass), docs }
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export const meta = {
|
|
2
|
+
name: 'release-gate',
|
|
3
|
+
description:
|
|
4
|
+
'Pre-release go/no-go gate. Runs build/type-check, full test suite + coverage, security audit, and docs freshness in parallel, then reports a single go/no-go verdict.',
|
|
5
|
+
phases: [{ title: 'Checks' }, { title: 'Report' }],
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const GATE_SCHEMA = {
|
|
9
|
+
type: 'object',
|
|
10
|
+
additionalProperties: false,
|
|
11
|
+
required: ['pass', 'detail'],
|
|
12
|
+
properties: {
|
|
13
|
+
pass: { type: 'boolean' },
|
|
14
|
+
detail: { type: 'string', description: 'concise evidence: command output summary, numbers, or the blocking reason' },
|
|
15
|
+
},
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const GATES = [
|
|
19
|
+
{
|
|
20
|
+
key: 'build',
|
|
21
|
+
agentType: 'build-engineer',
|
|
22
|
+
model: 'sonnet',
|
|
23
|
+
prompt:
|
|
24
|
+
'Run the project type-checker and build (e.g. `npm run type-check` then `npm run build`). pass=true only if both succeed with zero errors. Report the outcome.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
key: 'tests',
|
|
28
|
+
agentType: 'tester',
|
|
29
|
+
model: 'sonnet',
|
|
30
|
+
prompt:
|
|
31
|
+
'Run the full test suite with coverage (e.g. `npm run test:coverage`). pass=true only if 100% of tests pass AND coverage meets the project threshold (≥95%). Report pass rate and coverage %.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: 'security',
|
|
35
|
+
agentType: 'security-reviewer',
|
|
36
|
+
model: 'haiku',
|
|
37
|
+
prompt:
|
|
38
|
+
'Run a production dependency audit (e.g. `npm audit --production`) and scan the diff for committed secrets. pass=true only if there are no high/critical vulnerabilities and no leaked secrets. Report findings.',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
key: 'docs',
|
|
42
|
+
agentType: 'docs-writer',
|
|
43
|
+
model: 'haiku',
|
|
44
|
+
prompt:
|
|
45
|
+
'Verify release docs are current: CHANGELOG.md has entries for the unreleased changes and README reflects any public API changes. pass=true only if docs are up to date. Report gaps.',
|
|
46
|
+
},
|
|
47
|
+
]
|
|
48
|
+
|
|
49
|
+
phase('Checks')
|
|
50
|
+
const results = await parallel(
|
|
51
|
+
GATES.map((g) => () =>
|
|
52
|
+
agent(g.prompt, { label: `gate:${g.key}`, phase: 'Checks', agentType: g.agentType, model: g.model, schema: GATE_SCHEMA }).then(
|
|
53
|
+
(r) => ({ key: g.key, pass: !!(r && r.pass), detail: (r && r.detail) || 'no result' })
|
|
54
|
+
)
|
|
55
|
+
)
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
const gates = results.filter(Boolean)
|
|
59
|
+
const go = gates.length === GATES.length && gates.every((g) => g.pass)
|
|
60
|
+
|
|
61
|
+
phase('Report')
|
|
62
|
+
log(go ? '✅ GO — all gates passed.' : `⛔ NO-GO — failing: ${gates.filter((g) => !g.pass).map((g) => g.key).join(', ')}`)
|
|
63
|
+
|
|
64
|
+
return { go, gates }
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
export const meta = {
|
|
2
|
+
name: 'review-fanout',
|
|
3
|
+
description:
|
|
4
|
+
'Adversarial multi-dimension review of the current git diff (correctness, security, performance, tests). Each finding is independently verified before it survives, then synthesized into a prioritized report.',
|
|
5
|
+
phases: [{ title: 'Review' }, { title: 'Verify' }, { title: 'Synthesize', model: 'opus' }],
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const FINDINGS_SCHEMA = {
|
|
9
|
+
type: 'object',
|
|
10
|
+
additionalProperties: false,
|
|
11
|
+
required: ['findings'],
|
|
12
|
+
properties: {
|
|
13
|
+
findings: {
|
|
14
|
+
type: 'array',
|
|
15
|
+
items: {
|
|
16
|
+
type: 'object',
|
|
17
|
+
additionalProperties: false,
|
|
18
|
+
required: ['title', 'file', 'severity', 'detail'],
|
|
19
|
+
properties: {
|
|
20
|
+
title: { type: 'string' },
|
|
21
|
+
file: { type: 'string', description: 'path:line of the issue' },
|
|
22
|
+
severity: { type: 'string', enum: ['blocker', 'major', 'minor', 'nit'] },
|
|
23
|
+
detail: { type: 'string', description: 'what is wrong and why it matters' },
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const VERDICT_SCHEMA = {
|
|
31
|
+
type: 'object',
|
|
32
|
+
additionalProperties: false,
|
|
33
|
+
required: ['real', 'reason'],
|
|
34
|
+
properties: {
|
|
35
|
+
real: { type: 'boolean', description: 'true only if the finding is a genuine, reproducible problem' },
|
|
36
|
+
reason: { type: 'string' },
|
|
37
|
+
},
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const DIMENSIONS = [
|
|
41
|
+
{
|
|
42
|
+
key: 'correctness',
|
|
43
|
+
agentType: 'code-reviewer',
|
|
44
|
+
model: 'sonnet',
|
|
45
|
+
focus: 'logic errors, broken edge cases, incorrect error handling, and regressions',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
key: 'security',
|
|
49
|
+
agentType: 'security-reviewer',
|
|
50
|
+
model: 'haiku',
|
|
51
|
+
focus: 'injection, secret leakage, unsafe deserialization, missing authz/validation, vulnerable patterns',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
key: 'performance',
|
|
55
|
+
agentType: 'performance-engineer',
|
|
56
|
+
model: 'sonnet',
|
|
57
|
+
focus: 'N+1 patterns, accidental quadratic work, unnecessary allocations, blocking I/O on hot paths',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
key: 'tests',
|
|
61
|
+
agentType: 'tester',
|
|
62
|
+
model: 'sonnet',
|
|
63
|
+
focus: 'missing test coverage for changed behavior, weak assertions, and untested edge cases',
|
|
64
|
+
},
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
// Scoping, in priority order:
|
|
68
|
+
// args.baseRef — review everything committed since this ref (`git diff <ref>..HEAD`).
|
|
69
|
+
// Preferred when the caller commits each unit of work (rulebook-driver).
|
|
70
|
+
// args.paths — review only these files in the uncommitted working-tree diff.
|
|
71
|
+
// (neither) — review the full uncommitted diff.
|
|
72
|
+
const baseRef = args && typeof args.baseRef === 'string' && args.baseRef ? args.baseRef : null
|
|
73
|
+
const scopePaths = !baseRef && args && Array.isArray(args.paths) && args.paths.length ? args.paths : null
|
|
74
|
+
const diffCmd = baseRef
|
|
75
|
+
? `git --no-pager diff ${baseRef}..HEAD`
|
|
76
|
+
: scopePaths
|
|
77
|
+
? `git --no-pager diff -- ${scopePaths.join(' ')} ; git --no-pager diff --staged -- ${scopePaths.join(' ')}`
|
|
78
|
+
: 'git --no-pager diff ; git --no-pager diff --staged'
|
|
79
|
+
const scopeNote = baseRef
|
|
80
|
+
? `Review ONLY the changes committed since ${baseRef} (this task's changeset). Ignore anything before that ref.`
|
|
81
|
+
: scopePaths
|
|
82
|
+
? `Review ONLY these files (the caller's changeset): ${scopePaths.join(', ')}. Ignore changes in any other file.`
|
|
83
|
+
: 'Review the full current diff.'
|
|
84
|
+
|
|
85
|
+
// Pipeline: each dimension's findings verify as soon as that dimension finishes —
|
|
86
|
+
// no barrier, so the fast haiku security pass is not blocked by the slower lenses.
|
|
87
|
+
const results = await pipeline(
|
|
88
|
+
DIMENSIONS,
|
|
89
|
+
(d) =>
|
|
90
|
+
agent(
|
|
91
|
+
`Review the current git diff for ${d.key} issues. Focus on: ${d.focus}.
|
|
92
|
+
${scopeNote}
|
|
93
|
+
Run \`${diffCmd}\` to see the changes. Report only issues introduced or exposed by this diff — not pre-existing debt.`,
|
|
94
|
+
{ label: `review:${d.key}`, phase: 'Review', agentType: d.agentType, model: d.model, schema: FINDINGS_SCHEMA }
|
|
95
|
+
),
|
|
96
|
+
(review, d) =>
|
|
97
|
+
parallel(
|
|
98
|
+
(review.findings || []).map((f) => () =>
|
|
99
|
+
agent(
|
|
100
|
+
`Adversarially verify this ${d.key} finding. Try to REFUTE it. Read the relevant code at ${f.file}. Default to real=false if you cannot concretely confirm the problem.
|
|
101
|
+
Finding: ${f.title}
|
|
102
|
+
Detail: ${f.detail}`,
|
|
103
|
+
{ label: `verify:${d.key}`, phase: 'Verify', model: 'haiku', schema: VERDICT_SCHEMA }
|
|
104
|
+
).then((v) => ({ ...f, dimension: d.key, verdict: v }))
|
|
105
|
+
)
|
|
106
|
+
)
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
const confirmed = results
|
|
110
|
+
.flat()
|
|
111
|
+
.filter(Boolean)
|
|
112
|
+
.filter((f) => f.verdict && f.verdict.real)
|
|
113
|
+
|
|
114
|
+
// blocking = verified findings severe enough to fail a gate (blocker/major).
|
|
115
|
+
// Consumers (e.g. rulebook-driver) feed these back to the implementer.
|
|
116
|
+
const blocking = confirmed.filter((f) => /^(blocker|major)$/i.test(f.severity || ''))
|
|
117
|
+
|
|
118
|
+
phase('Synthesize')
|
|
119
|
+
const report = await agent(
|
|
120
|
+
`Synthesize a prioritized code-review report from these confirmed findings (already verified as real). Group by severity, give each a one-line fix recommendation, and lead with blockers.
|
|
121
|
+
${JSON.stringify(confirmed, null, 2)}`,
|
|
122
|
+
{ label: 'synthesize', phase: 'Synthesize', model: 'opus' }
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
return { confirmedCount: confirmed.length, confirmed, blocking, report }
|