@hivehub/rulebook 5.5.2 → 5.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/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-learn-capture.md +41 -48
- package/.claude/commands/rulebook-learn-list.md +13 -13
- 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 +418 -394
- 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/context-intelligence.d.ts +0 -1
- package/dist/cli/commands/context-intelligence.d.ts.map +1 -1
- package/dist/cli/commands/context-intelligence.js +12 -33
- package/dist/cli/commands/context-intelligence.js.map +1 -1
- package/dist/cli/commands/index.d.ts +4 -7
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +4 -7
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +58 -83
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts +0 -1
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +1 -7
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/memory.d.ts +7 -1
- package/dist/cli/commands/memory.d.ts.map +1 -1
- package/dist/cli/commands/memory.js +51 -57
- package/dist/cli/commands/memory.js.map +1 -1
- package/dist/cli/commands/misc.d.ts +1 -15
- package/dist/cli/commands/misc.d.ts.map +1 -1
- package/dist/cli/commands/misc.js +36 -215
- package/dist/cli/commands/misc.js.map +1 -1
- package/dist/cli/commands/plans.d.ts +0 -6
- package/dist/cli/commands/plans.d.ts.map +1 -1
- package/dist/cli/commands/plans.js +9 -77
- package/dist/cli/commands/plans.js.map +1 -1
- package/dist/cli/commands/skills.js +6 -6
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/task.js +4 -4
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +128 -53
- 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 +107 -78
- package/dist/cli/prompts.js.map +1 -1
- package/dist/core/{claude-mcp.d.ts → claude/claude-mcp.d.ts} +9 -0
- package/dist/core/claude/claude-mcp.d.ts.map +1 -0
- package/dist/core/{claude-mcp.js → claude/claude-mcp.js} +33 -3
- package/dist/core/claude/claude-mcp.js.map +1 -0
- package/dist/core/claude/claude-md-generator.d.ts.map +1 -0
- package/dist/core/{claude-md-generator.js → claude/claude-md-generator.js} +2 -2
- package/dist/core/claude/claude-md-generator.js.map +1 -0
- package/dist/core/{claude-settings-manager.d.ts → claude/claude-settings-manager.d.ts} +12 -0
- package/dist/core/claude/claude-settings-manager.d.ts.map +1 -0
- package/dist/core/{claude-settings-manager.js → claude/claude-settings-manager.js} +81 -22
- package/dist/core/claude/claude-settings-manager.js.map +1 -0
- package/dist/core/{cli-bridge.d.ts → console/cli-bridge.d.ts} +2 -2
- package/dist/core/console/cli-bridge.d.ts.map +1 -0
- package/dist/core/{cli-bridge.js → console/cli-bridge.js} +3 -3
- package/dist/core/console/cli-bridge.js.map +1 -0
- package/dist/core/{detector.d.ts → detect/detector.d.ts} +16 -1
- package/dist/core/detect/detector.d.ts.map +1 -0
- package/dist/core/detect/detector.js +766 -0
- package/dist/core/detect/detector.js.map +1 -0
- 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/docs/docs-generator.d.ts.map +1 -0
- package/dist/core/{docs-generator.js → docs/docs-generator.js} +1 -1
- package/dist/core/docs/docs-generator.js.map +1 -0
- package/dist/core/docs/mcp-reference-generator.d.ts.map +1 -0
- package/dist/core/{mcp-reference-generator.js → docs/mcp-reference-generator.js} +2 -2
- package/dist/core/docs/mcp-reference-generator.js.map +1 -0
- package/dist/core/{generator.d.ts → generators/generator.d.ts} +3 -4
- package/dist/core/generators/generator.d.ts.map +1 -0
- package/dist/core/{generator.js → generators/generator.js} +42 -157
- package/dist/core/generators/generator.js.map +1 -0
- package/dist/core/{gitignore-generator.d.ts → generators/gitignore-generator.d.ts} +1 -1
- package/dist/core/generators/gitignore-generator.d.ts.map +1 -0
- package/dist/core/{gitignore-generator.js → generators/gitignore-generator.js} +1 -1
- package/dist/core/generators/gitignore-generator.js.map +1 -0
- package/dist/core/generators/minimal-scaffolder.d.ts.map +1 -0
- package/dist/core/{minimal-scaffolder.js → generators/minimal-scaffolder.js} +2 -2
- package/dist/core/generators/minimal-scaffolder.js.map +1 -0
- package/dist/core/{rules-generator.d.ts → generators/rules-generator.d.ts} +2 -6
- package/dist/core/generators/rules-generator.d.ts.map +1 -0
- package/dist/core/{rules-generator.js → generators/rules-generator.js} +41 -2
- package/dist/core/generators/rules-generator.js.map +1 -0
- package/dist/core/{workflow-generator.d.ts → generators/workflow-generator.d.ts} +1 -1
- package/dist/core/generators/workflow-generator.d.ts.map +1 -0
- package/dist/core/{workflow-generator.js → generators/workflow-generator.js} +2 -3
- package/dist/core/generators/workflow-generator.js.map +1 -0
- package/dist/core/{multi-tool-generator.d.ts → ide/multi-tool-generator.d.ts} +1 -1
- package/dist/core/ide/multi-tool-generator.d.ts.map +1 -0
- package/dist/core/{multi-tool-generator.js → ide/multi-tool-generator.js} +1 -1
- package/dist/core/ide/multi-tool-generator.js.map +1 -0
- package/dist/core/ide/opencode-generator.d.ts +72 -0
- package/dist/core/ide/opencode-generator.d.ts.map +1 -0
- package/dist/core/ide/opencode-generator.js +450 -0
- package/dist/core/ide/opencode-generator.js.map +1 -0
- package/dist/core/merger.d.ts +1 -1
- package/dist/core/merger.d.ts.map +1 -1
- package/dist/core/merger.js +5 -5
- package/dist/core/merger.js.map +1 -1
- package/dist/core/migrator.d.ts +0 -1
- package/dist/core/migrator.d.ts.map +1 -1
- package/dist/core/migrator.js +4 -29
- package/dist/core/migrator.js.map +1 -1
- package/dist/core/quality/coverage-checker.d.ts.map +1 -0
- package/dist/core/{coverage-checker.js → quality/coverage-checker.js} +2 -2
- package/dist/core/quality/coverage-checker.js.map +1 -0
- package/dist/core/quality/dependency-checker.d.ts.map +1 -0
- package/dist/core/{dependency-checker.js → quality/dependency-checker.js} +1 -1
- package/dist/core/quality/dependency-checker.js.map +1 -0
- package/dist/core/quality/doctor.d.ts.map +1 -0
- package/dist/core/{doctor.js → quality/doctor.js} +1 -67
- package/dist/core/quality/doctor.js.map +1 -0
- package/dist/core/quality/validator.d.ts.map +1 -0
- package/dist/core/{validator.js → quality/validator.js} +1 -1
- package/dist/core/quality/validator.js.map +1 -0
- package/dist/core/{skills-manager.d.ts → skills/skills-manager.d.ts} +1 -1
- package/dist/core/skills/skills-manager.d.ts.map +1 -0
- package/dist/core/{skills-manager.js → skills/skills-manager.js} +1 -25
- package/dist/core/skills/skills-manager.js.map +1 -0
- package/dist/core/{config-manager.d.ts → state/config-manager.d.ts} +1 -1
- package/dist/core/state/config-manager.d.ts.map +1 -0
- package/dist/core/{config-manager.js → state/config-manager.js} +2 -61
- package/dist/core/state/config-manager.js.map +1 -0
- package/dist/core/state/override-manager.d.ts.map +1 -0
- package/dist/core/{override-manager.js → state/override-manager.js} +1 -1
- package/dist/core/state/override-manager.js.map +1 -0
- package/dist/core/{state-writer.d.ts → state/state-writer.d.ts} +2 -3
- package/dist/core/state/state-writer.d.ts.map +1 -0
- package/dist/core/{state-writer.js → state/state-writer.js} +6 -9
- package/dist/core/state/state-writer.js.map +1 -0
- package/dist/core/state/version-bumper.d.ts.map +1 -0
- package/dist/core/{version-bumper.js → state/version-bumper.js} +1 -1
- package/dist/core/state/version-bumper.js.map +1 -0
- package/dist/core/{decision-manager.d.ts → tasks/decision-manager.d.ts} +1 -1
- package/dist/core/tasks/decision-manager.d.ts.map +1 -0
- package/dist/core/{decision-manager.js → tasks/decision-manager.js} +1 -1
- package/dist/core/tasks/decision-manager.js.map +1 -0
- package/dist/core/{knowledge-manager.d.ts → tasks/knowledge-manager.d.ts} +1 -1
- package/dist/core/tasks/knowledge-manager.d.ts.map +1 -0
- package/dist/core/{knowledge-manager.js → tasks/knowledge-manager.js} +1 -1
- package/dist/core/tasks/knowledge-manager.js.map +1 -0
- package/dist/core/{learn-manager.d.ts → tasks/learn-manager.d.ts} +1 -3
- package/dist/core/tasks/learn-manager.d.ts.map +1 -0
- package/dist/core/{learn-manager.js → tasks/learn-manager.js} +1 -39
- package/dist/core/tasks/learn-manager.js.map +1 -0
- package/dist/core/tasks/plans-manager.d.ts.map +1 -0
- package/dist/core/{plans-manager.js → tasks/plans-manager.js} +1 -1
- package/dist/core/tasks/plans-manager.js.map +1 -0
- package/dist/core/tasks/task-manager.d.ts.map +1 -0
- package/dist/core/{task-manager.js → tasks/task-manager.js} +2 -2
- package/dist/core/tasks/task-manager.js.map +1 -0
- package/dist/core/workspace/project-worker.d.ts +6 -6
- package/dist/core/workspace/project-worker.d.ts.map +1 -1
- package/dist/core/workspace/project-worker.js +6 -6
- package/dist/core/workspace/project-worker.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -176
- package/dist/index.js.map +1 -1
- package/dist/mcp/rulebook-server.d.ts.map +1 -1
- package/dist/mcp/rulebook-server.js +16 -960
- package/dist/mcp/rulebook-server.js.map +1 -1
- package/dist/memory/file-search.d.ts +43 -0
- package/dist/memory/file-search.d.ts.map +1 -0
- package/dist/memory/file-search.js +228 -0
- package/dist/memory/file-search.js.map +1 -0
- package/dist/memory/file-store.d.ts +99 -0
- package/dist/memory/file-store.d.ts.map +1 -0
- package/dist/memory/file-store.js +615 -0
- package/dist/memory/file-store.js.map +1 -0
- package/dist/memory/legacy-migrator.d.ts +27 -0
- package/dist/memory/legacy-migrator.d.ts.map +1 -0
- package/dist/memory/legacy-migrator.js +185 -0
- package/dist/memory/legacy-migrator.js.map +1 -0
- package/dist/memory/memory-manager.d.ts +25 -24
- package/dist/memory/memory-manager.d.ts.map +1 -1
- package/dist/memory/memory-manager.js +97 -140
- package/dist/memory/memory-manager.js.map +1 -1
- package/dist/memory/memory-types.d.ts +1 -1
- package/dist/memory/memory-types.d.ts.map +1 -1
- package/dist/types.d.ts +20 -118
- package/dist/types.d.ts.map +1 -1
- package/package.json +23 -27
- 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/context-intelligence.md +50 -52
- 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 +215 -0
- package/templates/agents/quality-gatekeeper.md +205 -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 +118 -0
- package/templates/claude-workflows/rulebook-driver.js +343 -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/OPENCODE.md +85 -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-learn-capture.md +41 -48
- package/templates/commands/rulebook-learn-list.md +13 -13
- 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_LEAN.md +0 -14
- 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 +24 -16
- package/templates/hooks/enforce-pre-tool.sh +70 -0
- package/templates/hooks/terse-mode-tracker.sh +146 -143
- 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/OPENCODE.md +63 -0
- 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/cli/opencode/SKILL.md +82 -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/.claude/commands/ralph-config.md +0 -112
- package/.claude/commands/ralph-history.md +0 -110
- package/.claude/commands/ralph-init.md +0 -72
- package/.claude/commands/ralph-pause-resume.md +0 -105
- package/.claude/commands/ralph-run.md +0 -101
- package/.claude/commands/ralph-status.md +0 -76
- 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.map +0 -1
- package/dist/core/claude-mcp.js.map +0 -1
- package/dist/core/claude-md-generator.d.ts.map +0 -1
- package/dist/core/claude-md-generator.js.map +0 -1
- package/dist/core/claude-settings-manager.d.ts.map +0 -1
- package/dist/core/claude-settings-manager.js.map +0 -1
- package/dist/core/cli-bridge.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/core/config-manager.js.map +0 -1
- package/dist/core/coverage-checker.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/core/decision-manager.js.map +0 -1
- package/dist/core/dependency-checker.d.ts.map +0 -1
- package/dist/core/dependency-checker.js.map +0 -1
- 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.map +0 -1
- package/dist/core/docs-generator.js.map +0 -1
- package/dist/core/doctor.d.ts.map +0 -1
- package/dist/core/doctor.js.map +0 -1
- package/dist/core/generator.d.ts.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- package/dist/core/knowledge-manager.js.map +0 -1
- package/dist/core/learn-manager.d.ts.map +0 -1
- package/dist/core/learn-manager.js.map +0 -1
- package/dist/core/mcp-reference-generator.d.ts.map +0 -1
- package/dist/core/mcp-reference-generator.js.map +0 -1
- package/dist/core/minimal-scaffolder.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/core/multi-tool-generator.js.map +0 -1
- package/dist/core/override-manager.d.ts.map +0 -1
- package/dist/core/override-manager.js.map +0 -1
- package/dist/core/plans-manager.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/core/rules-generator.js.map +0 -1
- package/dist/core/skills-manager.d.ts.map +0 -1
- package/dist/core/skills-manager.js.map +0 -1
- package/dist/core/state-writer.d.ts.map +0 -1
- package/dist/core/state-writer.js.map +0 -1
- package/dist/core/task-manager.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/core/validator.js.map +0 -1
- package/dist/core/version-bumper.d.ts.map +0 -1
- 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.map +0 -1
- 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
- package/templates/core/RALPH.md +0 -471
- package/templates/frameworks/ANGULAR.md +0 -36
- package/templates/frameworks/DJANGO.md +0 -83
- package/templates/frameworks/ELECTRON.md +0 -147
- package/templates/frameworks/FLASK.md +0 -38
- package/templates/frameworks/FLUTTER.md +0 -55
- package/templates/frameworks/JQUERY.md +0 -32
- package/templates/frameworks/LARAVEL.md +0 -38
- package/templates/frameworks/NESTJS.md +0 -43
- package/templates/frameworks/NEXTJS.md +0 -127
- package/templates/frameworks/NUXT.md +0 -40
- package/templates/frameworks/RAILS.md +0 -66
- package/templates/frameworks/REACT.md +0 -38
- package/templates/frameworks/REACT_NATIVE.md +0 -47
- package/templates/frameworks/SPRING.md +0 -39
- package/templates/frameworks/SYMFONY.md +0 -36
- package/templates/frameworks/VUE.md +0 -36
- package/templates/frameworks/ZEND.md +0 -35
- package/templates/hooks/enforce-mcp-for-tasks.sh +0 -31
- package/templates/hooks/enforce-no-deferred.sh +0 -21
- package/templates/hooks/enforce-no-shortcuts.sh +0 -31
- package/templates/ides/COPILOT.md +0 -37
- package/templates/ides/CURSOR.md +0 -43
- package/templates/ides/JETBRAINS_AI.md +0 -35
- package/templates/ides/REPLIT.md +0 -36
- package/templates/ides/TABNINE.md +0 -29
- package/templates/ides/VSCODE.md +0 -40
- package/templates/ides/WINDSURF.md +0 -36
- package/templates/ides/ZED.md +0 -32
- package/templates/ides/cursor-mdc/go.mdc +0 -24
- package/templates/ides/cursor-mdc/python.mdc +0 -24
- package/templates/ides/cursor-mdc/quality.mdc +0 -25
- package/templates/ides/cursor-mdc/ralph.mdc +0 -39
- package/templates/ides/cursor-mdc/rulebook.mdc +0 -38
- package/templates/ides/cursor-mdc/rust.mdc +0 -24
- package/templates/ides/cursor-mdc/typescript.mdc +0 -25
- package/templates/ralph/ralph-history.bat +0 -4
- package/templates/ralph/ralph-history.sh +0 -5
- package/templates/ralph/ralph-init.bat +0 -5
- package/templates/ralph/ralph-init.sh +0 -5
- package/templates/ralph/ralph-pause.bat +0 -5
- package/templates/ralph/ralph-pause.sh +0 -5
- package/templates/ralph/ralph-run.bat +0 -5
- package/templates/ralph/ralph-run.sh +0 -5
- package/templates/ralph/ralph-status.bat +0 -4
- package/templates/ralph/ralph-status.sh +0 -5
- package/templates/services/AZURE_BLOB.md +0 -184
- package/templates/services/CASSANDRA.md +0 -239
- package/templates/services/DATADOG.md +0 -26
- package/templates/services/DOCKER.md +0 -124
- package/templates/services/DOCKER_COMPOSE.md +0 -168
- package/templates/services/DYNAMODB.md +0 -308
- package/templates/services/ELASTICSEARCH.md +0 -347
- package/templates/services/GCS.md +0 -178
- package/templates/services/HELM.md +0 -194
- package/templates/services/INFLUXDB.md +0 -265
- package/templates/services/KAFKA.md +0 -341
- package/templates/services/KUBERNETES.md +0 -208
- package/templates/services/MARIADB.md +0 -183
- package/templates/services/MEMCACHED.md +0 -242
- package/templates/services/MINIO.md +0 -201
- package/templates/services/MONGODB.md +0 -268
- package/templates/services/MYSQL.md +0 -358
- package/templates/services/NEO4J.md +0 -247
- package/templates/services/OPENTELEMETRY.md +0 -25
- package/templates/services/ORACLE.md +0 -290
- package/templates/services/PINO.md +0 -24
- package/templates/services/POSTGRESQL.md +0 -326
- package/templates/services/PROMETHEUS.md +0 -33
- package/templates/services/RABBITMQ.md +0 -286
- package/templates/services/REDIS.md +0 -292
- package/templates/services/S3.md +0 -298
- package/templates/services/SENTRY.md +0 -23
- package/templates/services/SQLITE.md +0 -294
- package/templates/services/SQLSERVER.md +0 -294
- package/templates/services/WINSTON.md +0 -30
- package/templates/skills/frameworks/angular/SKILL.md +0 -46
- package/templates/skills/frameworks/django/SKILL.md +0 -93
- package/templates/skills/frameworks/electron/SKILL.md +0 -157
- package/templates/skills/frameworks/flask/SKILL.md +0 -48
- package/templates/skills/frameworks/flutter/SKILL.md +0 -65
- package/templates/skills/frameworks/jquery/SKILL.md +0 -42
- package/templates/skills/frameworks/laravel/SKILL.md +0 -48
- package/templates/skills/frameworks/nestjs/SKILL.md +0 -53
- package/templates/skills/frameworks/nextjs/SKILL.md +0 -137
- package/templates/skills/frameworks/nuxt/SKILL.md +0 -50
- package/templates/skills/frameworks/rails/SKILL.md +0 -76
- package/templates/skills/frameworks/react/SKILL.md +0 -48
- package/templates/skills/frameworks/react-native/SKILL.md +0 -57
- package/templates/skills/frameworks/spring/SKILL.md +0 -49
- package/templates/skills/frameworks/symfony/SKILL.md +0 -46
- package/templates/skills/frameworks/vue/SKILL.md +0 -46
- package/templates/skills/frameworks/zend/SKILL.md +0 -45
- package/templates/skills/services/azure-blob/SKILL.md +0 -194
- package/templates/skills/services/cassandra/SKILL.md +0 -249
- package/templates/skills/services/dynamodb/SKILL.md +0 -318
- package/templates/skills/services/elasticsearch/SKILL.md +0 -357
- package/templates/skills/services/gcs/SKILL.md +0 -188
- package/templates/skills/services/influxdb/SKILL.md +0 -275
- package/templates/skills/services/kafka/SKILL.md +0 -351
- package/templates/skills/services/mariadb/SKILL.md +0 -193
- package/templates/skills/services/memcached/SKILL.md +0 -252
- package/templates/skills/services/minio/SKILL.md +0 -211
- package/templates/skills/services/mongodb/SKILL.md +0 -278
- package/templates/skills/services/mysql/SKILL.md +0 -368
- package/templates/skills/services/neo4j/SKILL.md +0 -257
- package/templates/skills/services/oracle/SKILL.md +0 -300
- package/templates/skills/services/postgresql/SKILL.md +0 -336
- package/templates/skills/services/rabbitmq/SKILL.md +0 -296
- package/templates/skills/services/redis/SKILL.md +0 -302
- package/templates/skills/services/s3/SKILL.md +0 -308
- package/templates/skills/services/sqlite/SKILL.md +0 -304
- package/templates/skills/services/sqlserver/SKILL.md +0 -304
- package/templates/skills/workflows/ralph/SETUP.md +0 -228
- package/templates/skills/workflows/ralph/SKILL.md +0 -309
- package/templates/skills/workflows/ralph/install.sh +0 -87
- package/templates/skills/workflows/ralph/manifest.json +0 -158
- /package/dist/core/{claude-md-generator.d.ts → claude/claude-md-generator.d.ts} +0 -0
- /package/dist/core/{docs-generator.d.ts → docs/docs-generator.d.ts} +0 -0
- /package/dist/core/{mcp-reference-generator.d.ts → docs/mcp-reference-generator.d.ts} +0 -0
- /package/dist/core/{minimal-scaffolder.d.ts → generators/minimal-scaffolder.d.ts} +0 -0
- /package/dist/core/{coverage-checker.d.ts → quality/coverage-checker.d.ts} +0 -0
- /package/dist/core/{dependency-checker.d.ts → quality/dependency-checker.d.ts} +0 -0
- /package/dist/core/{doctor.d.ts → quality/doctor.d.ts} +0 -0
- /package/dist/core/{validator.d.ts → quality/validator.d.ts} +0 -0
- /package/dist/core/{override-manager.d.ts → state/override-manager.d.ts} +0 -0
- /package/dist/core/{version-bumper.d.ts → state/version-bumper.d.ts} +0 -0
- /package/dist/core/{plans-manager.d.ts → tasks/plans-manager.d.ts} +0 -0
- /package/dist/core/{task-manager.d.ts → tasks/task-manager.d.ts} +0 -0
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
export const meta = {
|
|
2
|
+
name: 'rulebook-driver',
|
|
3
|
+
description:
|
|
4
|
+
'Drain the rulebook backlog in a loop: discover the next unchecked task item, implement it, gate it through an independent SDD+TDD opus reviewer (max 3 rounds), document it, then move to the next item — until none remain, a item fails review, the item cap is hit, or the token budget runs low.',
|
|
5
|
+
phases: [
|
|
6
|
+
{ title: 'Discover', detail: 'find first unchecked item (lowest phase)', model: 'haiku' },
|
|
7
|
+
{ title: 'Implement', detail: 'dev implements; independent opus reviewer gates; loop ≤3', model: 'sonnet' },
|
|
8
|
+
{ title: 'Review', detail: 'independent full SDD+TDD review', model: 'opus' },
|
|
9
|
+
{ title: 'Fanout', detail: 'review-fanout adversarial diff review per approved item' },
|
|
10
|
+
{ title: 'Document', detail: 'docs-writer updates README/CHANGELOG', model: 'haiku' },
|
|
11
|
+
{ title: 'Gate', detail: 'release-gate go/no-go once the backlog is drained' },
|
|
12
|
+
],
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// ---- Tunables (override via args) ------------------------------------------
|
|
16
|
+
// args: { once?: boolean, maxItems?: number, minBudget?: number, fanoutRounds?: number }
|
|
17
|
+
// once — process a single item then stop (legacy one-shot behavior)
|
|
18
|
+
// maxItems — hard cap on items processed in one run (default 25 safety stop)
|
|
19
|
+
// minBudget — stop before the next item if remaining tokens fall below this
|
|
20
|
+
// fanoutRounds — max review-fanout remediation rounds per completed task (default 2)
|
|
21
|
+
const opts = args && typeof args === 'object' ? args : {}
|
|
22
|
+
const ONCE = opts.once === true
|
|
23
|
+
const MAX_ITEMS = typeof opts.maxItems === 'number' ? opts.maxItems : 25
|
|
24
|
+
const MIN_BUDGET = typeof opts.minBudget === 'number' ? opts.minBudget : 60_000
|
|
25
|
+
const MAX_REVIEW_ROUNDS = 3
|
|
26
|
+
// Per-completed-task adversarial gate. Counted SEPARATELY from MAX_REVIEW_ROUNDS so a
|
|
27
|
+
// fanout finding never competes with the per-item SDD/TDD round budget.
|
|
28
|
+
const MAX_FANOUT_ROUNDS = typeof opts.fanoutRounds === 'number' ? opts.fanoutRounds : 2
|
|
29
|
+
|
|
30
|
+
// ---- Structured-output schemas --------------------------------------------
|
|
31
|
+
|
|
32
|
+
const TASK_SCHEMA = {
|
|
33
|
+
type: 'object',
|
|
34
|
+
additionalProperties: false,
|
|
35
|
+
required: ['found', 'taskId', 'phase', 'item', 'specPaths', 'summary'],
|
|
36
|
+
properties: {
|
|
37
|
+
found: { type: 'boolean', description: 'true if an unchecked checklist item was found' },
|
|
38
|
+
taskId: { type: 'string', description: 'task directory id; empty string if none' },
|
|
39
|
+
phase: { type: 'string', description: 'phase the item belongs to; empty if none' },
|
|
40
|
+
item: { type: 'string', description: 'exact text of the first unchecked "- [ ]" item' },
|
|
41
|
+
specPaths: {
|
|
42
|
+
type: 'array',
|
|
43
|
+
items: { type: 'string' },
|
|
44
|
+
description: 'paths to proposal.md, tasks.md and specs/**/spec.md for this task',
|
|
45
|
+
},
|
|
46
|
+
summary: { type: 'string', description: 'one-line description of what the item asks for' },
|
|
47
|
+
},
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const VERDICT_SCHEMA = {
|
|
51
|
+
type: 'object',
|
|
52
|
+
additionalProperties: false,
|
|
53
|
+
required: ['pass', 'sddCompliant', 'tddCompliant', 'issues', 'summary'],
|
|
54
|
+
properties: {
|
|
55
|
+
pass: {
|
|
56
|
+
type: 'boolean',
|
|
57
|
+
description: 'true ONLY if correct, well-implemented, and both SDD and TDD are satisfied',
|
|
58
|
+
},
|
|
59
|
+
sddCompliant: {
|
|
60
|
+
type: 'boolean',
|
|
61
|
+
description: 'implementation satisfies every SHALL/MUST scenario in the spec, nothing unspecified added',
|
|
62
|
+
},
|
|
63
|
+
tddCompliant: {
|
|
64
|
+
type: 'boolean',
|
|
65
|
+
description: 'tests exist for the new behavior, were written for it, and actually run and pass',
|
|
66
|
+
},
|
|
67
|
+
issues: {
|
|
68
|
+
type: 'array',
|
|
69
|
+
items: { type: 'string' },
|
|
70
|
+
description: 'concrete, actionable blocking problems; empty array when pass=true',
|
|
71
|
+
},
|
|
72
|
+
summary: { type: 'string', description: 'one-paragraph verdict rationale' },
|
|
73
|
+
},
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const FILES_SCHEMA = {
|
|
77
|
+
type: 'object',
|
|
78
|
+
additionalProperties: false,
|
|
79
|
+
required: ['files'],
|
|
80
|
+
properties: {
|
|
81
|
+
files: {
|
|
82
|
+
type: 'array',
|
|
83
|
+
items: { type: 'string' },
|
|
84
|
+
description: 'union of changed file paths from `git diff --name-only` and `--staged`',
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// ---- Per-item pipeline ----------------------------------------------------
|
|
90
|
+
|
|
91
|
+
async function driveItem(task, itemIndex) {
|
|
92
|
+
let verdict = null
|
|
93
|
+
let lastIssues = []
|
|
94
|
+
let passedRound = 0
|
|
95
|
+
|
|
96
|
+
for (let round = 1; round <= MAX_REVIEW_ROUNDS; round++) {
|
|
97
|
+
const devPrompt =
|
|
98
|
+
round === 1
|
|
99
|
+
? `Implement this rulebook task item with strict SDD and TDD discipline.
|
|
100
|
+
|
|
101
|
+
Task: ${task.taskId} / ${task.phase}
|
|
102
|
+
Item: ${task.item}
|
|
103
|
+
Specs to satisfy (READ THESE FIRST): ${task.specPaths.join(', ')}
|
|
104
|
+
|
|
105
|
+
TDD: write the failing test(s) first, then the minimum implementation that makes them pass.
|
|
106
|
+
SDD: every behavior you add must trace to a SHALL/MUST scenario in the spec. Do NOT add unspecified features.
|
|
107
|
+
Before finishing: run the type-checker, then the relevant tests. Both must be green.
|
|
108
|
+
Report exactly which files you created/changed and which tests you added.`
|
|
109
|
+
: `An independent reviewer REJECTED your previous attempt (round ${round - 1}). Fix ONLY these blocking issues; do not touch anything else:
|
|
110
|
+
|
|
111
|
+
${lastIssues.map((i, n) => `${n + 1}. ${i}`).join('\n')}
|
|
112
|
+
|
|
113
|
+
Re-run the type-checker and tests (both must pass). Report which files you changed and which tests you added or updated.`
|
|
114
|
+
|
|
115
|
+
const dev = await agent(devPrompt, {
|
|
116
|
+
label: `dev:item${itemIndex}:r${round}`,
|
|
117
|
+
phase: 'Implement',
|
|
118
|
+
agentType: 'typescript-implementer',
|
|
119
|
+
model: 'sonnet',
|
|
120
|
+
})
|
|
121
|
+
|
|
122
|
+
// Independent reviewer — fresh subagent, NO conversation context, opus for a
|
|
123
|
+
// thorough complete review. Sees only the git diff + the spec.
|
|
124
|
+
verdict = await agent(
|
|
125
|
+
`You are an INDEPENDENT senior reviewer with NO prior context. This is the FINAL quality gate — be exhaustive, judge ONLY from hard evidence, never trust the developer's claims without checking.
|
|
126
|
+
|
|
127
|
+
Steps:
|
|
128
|
+
1. Run \`git --no-pager diff\` and \`git --no-pager diff --staged\` to see exactly what changed.
|
|
129
|
+
2. Read the spec files: ${task.specPaths.join(', ')}
|
|
130
|
+
3. Judge on two axes:
|
|
131
|
+
- SDD: does the diff satisfy EVERY SHALL/MUST scenario in the spec, with nothing unspecified bolted on?
|
|
132
|
+
- TDD: are there tests covering the new behavior, and do they actually run and PASS? Run the test suite for the touched area to confirm.
|
|
133
|
+
4. Also verify correctness, edge cases, error paths, and that the type-checker passes.
|
|
134
|
+
|
|
135
|
+
The developer reported the following (verify it, do not take it at face value):
|
|
136
|
+
"""
|
|
137
|
+
${dev}
|
|
138
|
+
"""
|
|
139
|
+
|
|
140
|
+
Set pass=true ONLY when SDD and TDD are both fully satisfied and the code is correct. Otherwise return concrete, actionable blocking issues the developer can fix.`,
|
|
141
|
+
{
|
|
142
|
+
label: `review:item${itemIndex}:r${round}`,
|
|
143
|
+
phase: 'Review',
|
|
144
|
+
agentType: 'code-reviewer',
|
|
145
|
+
model: 'opus',
|
|
146
|
+
schema: VERDICT_SCHEMA,
|
|
147
|
+
}
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
if (verdict && verdict.pass) {
|
|
151
|
+
passedRound = round
|
|
152
|
+
break
|
|
153
|
+
}
|
|
154
|
+
lastIssues = (verdict && verdict.issues) || ['Reviewer returned no verdict']
|
|
155
|
+
log(`Item ${itemIndex} round ${round} rejected: ${lastIssues.length} issue(s).`)
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (!verdict || !verdict.pass) {
|
|
159
|
+
return { passed: false, issues: lastIssues, verdict: verdict && verdict.summary }
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const docs = await agent(
|
|
163
|
+
`A rulebook task item was just implemented and passed independent SDD+TDD review.
|
|
164
|
+
|
|
165
|
+
Task: ${task.taskId} / ${task.phase}
|
|
166
|
+
Item: ${task.item}
|
|
167
|
+
Specs: ${task.specPaths.join(', ')}
|
|
168
|
+
|
|
169
|
+
Update the application documentation to reflect what shipped:
|
|
170
|
+
1. Run \`git --no-pager diff\` to see exactly what changed.
|
|
171
|
+
2. Update CHANGELOG.md with a conventional-commit-style entry under the unreleased section.
|
|
172
|
+
3. Update README.md only if public/user-facing behavior changed.
|
|
173
|
+
Keep all docs in English. Do not document behavior that is not present in the diff.
|
|
174
|
+
Report which documentation files you updated.`,
|
|
175
|
+
{ label: `document:item${itemIndex}`, phase: 'Document', agentType: 'docs-writer', model: 'haiku' }
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
return { passed: true, passedRound, review: verdict.summary, docs }
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Snapshot the set of changed files (via git). Used to scope each task's review-fanout
|
|
182
|
+
// to only that task's changeset, since the driver does not commit between items/tasks.
|
|
183
|
+
async function gitChangedFiles() {
|
|
184
|
+
const r = await agent(
|
|
185
|
+
'Run `git --no-pager diff --name-only` and `git --no-pager diff --name-only --staged`. Return the de-duplicated union of file paths, one per entry. Return an empty list if there are no changes.',
|
|
186
|
+
{ label: 'git-files', phase: 'Discover', agentType: 'researcher', model: 'haiku', schema: FILES_SCHEMA }
|
|
187
|
+
)
|
|
188
|
+
return (r && Array.isArray(r.files) ? r.files : []).filter(Boolean)
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// ---- Per-task adversarial gate (review-fanout) -----------------------------
|
|
192
|
+
// Runs ONCE per completed task, not per item. Scoped (via paths) to that task's
|
|
193
|
+
// changeset. Blocking (blocker/major) findings are remediated by a dev agent and
|
|
194
|
+
// re-reviewed, up to MAX_FANOUT_ROUNDS. Returns { passed, rounds, blocking } —
|
|
195
|
+
// passed=false means the task could not be cleaned.
|
|
196
|
+
async function reviewFanoutGate(taskId, specPaths, paths) {
|
|
197
|
+
const scope = paths && paths.length ? { paths } : undefined
|
|
198
|
+
const scopeLabel = scope ? ` (scoped to ${paths.length} file(s))` : ''
|
|
199
|
+
for (let fround = 1; fround <= MAX_FANOUT_ROUNDS; fround++) {
|
|
200
|
+
phase('Fanout')
|
|
201
|
+
log(`Task ${taskId}: review-fanout round ${fround}/${MAX_FANOUT_ROUNDS}${scopeLabel}…`)
|
|
202
|
+
const fanout = await workflow('review-fanout', scope)
|
|
203
|
+
const blocking = (fanout && fanout.blocking) || []
|
|
204
|
+
|
|
205
|
+
if (blocking.length === 0) {
|
|
206
|
+
log(`Task ${taskId}: review-fanout clean (round ${fround}).`)
|
|
207
|
+
return { passed: true, rounds: fround, blocking: [] }
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
if (fround === MAX_FANOUT_ROUNDS) {
|
|
211
|
+
log(`Task ${taskId}: still ${blocking.length} blocking issue(s) after ${fround} fanout round(s) — escalating.`)
|
|
212
|
+
return { passed: false, rounds: fround, blocking }
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
const issues = blocking
|
|
216
|
+
.map((f) => `[${f.severity}] ${f.file || ''} — ${f.title}: ${f.detail || ''} (${f.dimension || 'review'})`)
|
|
217
|
+
.join('\n')
|
|
218
|
+
log(`Task ${taskId}: review-fanout flagged ${blocking.length} blocking issue(s); remediating.`)
|
|
219
|
+
await agent(
|
|
220
|
+
`An independent adversarial review of task ${taskId} found blocking issues in the current diff. Fix ONLY these; do not touch anything else, and do not weaken or delete tests to make them pass:
|
|
221
|
+
|
|
222
|
+
${issues}
|
|
223
|
+
|
|
224
|
+
Specs that still must hold: ${(specPaths || []).join(', ') || '(see task directory)'}
|
|
225
|
+
Re-run the type-checker and the relevant tests (both must pass). Report which files you changed.`,
|
|
226
|
+
{ label: `fanout-fix:${taskId}:r${fround}`, phase: 'Fanout', agentType: 'typescript-implementer', model: 'sonnet' }
|
|
227
|
+
)
|
|
228
|
+
}
|
|
229
|
+
return { passed: true, rounds: MAX_FANOUT_ROUNDS, blocking: [] }
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// ---- Backlog loop ---------------------------------------------------------
|
|
233
|
+
|
|
234
|
+
const processed = []
|
|
235
|
+
const taskGates = []
|
|
236
|
+
let stopReason = 'backlog-drained'
|
|
237
|
+
let currentTaskId = null
|
|
238
|
+
let currentSpecPaths = []
|
|
239
|
+
let currentTaskBaseline = []
|
|
240
|
+
let halted = false
|
|
241
|
+
|
|
242
|
+
// Run the per-task review-fanout gate once, scoped to the task's changeset, and record it.
|
|
243
|
+
async function gateCompletedTask(taskId, specPaths, baseline) {
|
|
244
|
+
const now = await gitChangedFiles()
|
|
245
|
+
const baseSet = new Set(baseline || [])
|
|
246
|
+
const paths = now.filter((f) => !baseSet.has(f))
|
|
247
|
+
const gate = await reviewFanoutGate(taskId, specPaths, paths)
|
|
248
|
+
taskGates.push({
|
|
249
|
+
taskId,
|
|
250
|
+
passed: gate.passed,
|
|
251
|
+
rounds: gate.rounds,
|
|
252
|
+
blockingCount: gate.blocking.length,
|
|
253
|
+
scopedFiles: paths.length,
|
|
254
|
+
})
|
|
255
|
+
return gate
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
for (let i = 1; i <= MAX_ITEMS; i++) {
|
|
259
|
+
if (budget.total && budget.remaining() < MIN_BUDGET) {
|
|
260
|
+
stopReason = 'budget-low'
|
|
261
|
+
log(`Stopping: ${Math.round(budget.remaining() / 1000)}k tokens left (< ${Math.round(MIN_BUDGET / 1000)}k).`)
|
|
262
|
+
break
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
phase('Discover')
|
|
266
|
+
const task = await agent(
|
|
267
|
+
`You are discovering the NEXT rulebook task item to execute. Follow the project rule "follow-task-sequence": pick the FIRST unchecked "- [ ]" item from the LOWEST-numbered phase. Never reorder, never cherry-pick.
|
|
268
|
+
|
|
269
|
+
Steps:
|
|
270
|
+
1. Read .rulebook/STATE.md to find the active task id.
|
|
271
|
+
2. Open .rulebook/tasks/<active-task>/tasks.md (fall back to the lowest-numbered task directory if STATE.md is stale or the active task is fully checked).
|
|
272
|
+
3. Find the first "- [ ]" item, top to bottom.
|
|
273
|
+
4. Collect that task's spec material: proposal.md, tasks.md, and every specs/**/spec.md under the task directory.
|
|
274
|
+
|
|
275
|
+
Set found=false (and leave the other string fields empty) if every item in every task is already checked.`,
|
|
276
|
+
{ label: `discover:${i}`, phase: 'Discover', agentType: 'researcher', model: 'haiku', schema: TASK_SCHEMA }
|
|
277
|
+
)
|
|
278
|
+
|
|
279
|
+
if (!task || !task.found) {
|
|
280
|
+
stopReason = processed.length ? 'backlog-drained' : 'no-pending-task'
|
|
281
|
+
break
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
// Task boundary: a new taskId means the previous task is fully checked → gate it once,
|
|
285
|
+
// then snapshot the new task's baseline file set so its gate is scoped to its own diff.
|
|
286
|
+
if (task.taskId !== currentTaskId) {
|
|
287
|
+
if (currentTaskId) {
|
|
288
|
+
const gate = await gateCompletedTask(currentTaskId, currentSpecPaths, currentTaskBaseline)
|
|
289
|
+
if (!gate.passed) {
|
|
290
|
+
stopReason = 'task-fanout-failed'
|
|
291
|
+
log(`Halting: task ${currentTaskId} failed the review-fanout gate.`)
|
|
292
|
+
halted = true
|
|
293
|
+
break
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
currentTaskId = task.taskId
|
|
297
|
+
currentSpecPaths = task.specPaths || []
|
|
298
|
+
currentTaskBaseline = await gitChangedFiles()
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
log(`[${i}/${MAX_ITEMS}] ${task.taskId} / ${task.phase}: ${task.item}`)
|
|
302
|
+
const result = await driveItem(task, i)
|
|
303
|
+
processed.push({ taskId: task.taskId, phase: task.phase, item: task.item, ...result })
|
|
304
|
+
|
|
305
|
+
if (!result.passed) {
|
|
306
|
+
stopReason = 'item-failed-review'
|
|
307
|
+
log(`Item ${i} failed after ${MAX_REVIEW_ROUNDS} rounds — halting loop (sequential tasks must not build on a broken item).`)
|
|
308
|
+
halted = true
|
|
309
|
+
break
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
if (ONCE) {
|
|
313
|
+
stopReason = 'once'
|
|
314
|
+
break
|
|
315
|
+
}
|
|
316
|
+
if (i === MAX_ITEMS) stopReason = 'max-items'
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
// Gate the final task only when the backlog drained cleanly (last task fully checked).
|
|
320
|
+
// Mid-task stops (once / max-items / budget-low) leave the task incomplete — skip the gate.
|
|
321
|
+
if (!halted && stopReason === 'backlog-drained' && currentTaskId) {
|
|
322
|
+
const gate = await gateCompletedTask(currentTaskId, currentSpecPaths, currentTaskBaseline)
|
|
323
|
+
if (!gate.passed) {
|
|
324
|
+
stopReason = 'task-fanout-failed'
|
|
325
|
+
halted = true
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
const passed = processed.filter((p) => p.passed).length
|
|
330
|
+
|
|
331
|
+
// FINAL: one release-gate pass over the work completed this run. Skipped when we halted on a
|
|
332
|
+
// failure (broken state) or when nothing passed.
|
|
333
|
+
let releaseGate = null
|
|
334
|
+
if (passed > 0 && !halted) {
|
|
335
|
+
phase('Gate')
|
|
336
|
+
log(`Running release-gate over ${passed} completed item(s)…`)
|
|
337
|
+
releaseGate = await workflow('release-gate')
|
|
338
|
+
log(`release-gate: ${releaseGate && releaseGate.go ? 'GO ✅' : 'NO-GO ⛔'}`)
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
log(`Done: ${passed}/${processed.length} item(s) passed. Stop reason: ${stopReason}.`)
|
|
342
|
+
|
|
343
|
+
return { stopReason, processedCount: processed.length, passedCount: passed, processed, taskGates, releaseGate }
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
export const meta = {
|
|
2
|
+
name: 'spec-author',
|
|
3
|
+
description:
|
|
4
|
+
'Help the user write a rulebook task spec: research the codebase + existing specs, draft a proposal + SHALL/MUST spec with Given/When/Then scenarios, then run an opus gap-critic that returns ranked clarifying questions and detected gaps for the user to answer. Iterates when prior answers are supplied via args.answers.',
|
|
5
|
+
phases: [
|
|
6
|
+
{ title: 'Research', model: 'haiku' },
|
|
7
|
+
{ title: 'Draft', model: 'opus' },
|
|
8
|
+
{ title: 'Critique', model: 'opus' },
|
|
9
|
+
],
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// args: { topic: string, answers?: Array<{ question: string, answer: string }> }
|
|
13
|
+
// NOTE: workflow subagents are non-interactive — this workflow cannot prompt the
|
|
14
|
+
// user mid-run. It RETURNS ranked questions/gaps; the main loop asks the user
|
|
15
|
+
// (e.g. via AskUserQuestion), then re-invokes this workflow with args.answers
|
|
16
|
+
// folded in. Repeat until `questions` comes back empty / `ready` is true.
|
|
17
|
+
const input = args && typeof args === 'object' ? args : {}
|
|
18
|
+
const topic = input.topic || (typeof args === 'string' ? args : null)
|
|
19
|
+
const priorAnswers = Array.isArray(input.answers) ? input.answers : []
|
|
20
|
+
|
|
21
|
+
if (!topic) {
|
|
22
|
+
log('No topic provided. Pass args: { topic: "...", answers?: [...] }.')
|
|
23
|
+
return { error: 'missing-topic' }
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const answersBlock = priorAnswers.length
|
|
27
|
+
? `\n\nThe user has already answered these clarifying questions — fold them into the draft as settled decisions:\n${priorAnswers
|
|
28
|
+
.map((a, i) => `${i + 1}. Q: ${a.question}\n A: ${a.answer}`)
|
|
29
|
+
.join('\n')}`
|
|
30
|
+
: ''
|
|
31
|
+
|
|
32
|
+
const CRITIQUE_SCHEMA = {
|
|
33
|
+
type: 'object',
|
|
34
|
+
additionalProperties: false,
|
|
35
|
+
required: ['ready', 'questions', 'gaps', 'missingScenarios'],
|
|
36
|
+
properties: {
|
|
37
|
+
ready: {
|
|
38
|
+
type: 'boolean',
|
|
39
|
+
description: 'true when the spec is complete enough to implement with no open questions',
|
|
40
|
+
},
|
|
41
|
+
questions: {
|
|
42
|
+
type: 'array',
|
|
43
|
+
description: 'ranked clarifying questions for the user; empty when ready=true',
|
|
44
|
+
items: {
|
|
45
|
+
type: 'object',
|
|
46
|
+
additionalProperties: false,
|
|
47
|
+
required: ['question', 'why', 'options'],
|
|
48
|
+
properties: {
|
|
49
|
+
question: { type: 'string' },
|
|
50
|
+
why: { type: 'string', description: 'what decision this unblocks / why it matters' },
|
|
51
|
+
options: {
|
|
52
|
+
type: 'array',
|
|
53
|
+
items: { type: 'string' },
|
|
54
|
+
description: 'plausible answers to offer the user (may be empty for free-form)',
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
gaps: {
|
|
60
|
+
type: 'array',
|
|
61
|
+
items: { type: 'string' },
|
|
62
|
+
description: 'requirements, edge cases, or constraints the draft omits',
|
|
63
|
+
},
|
|
64
|
+
missingScenarios: {
|
|
65
|
+
type: 'array',
|
|
66
|
+
items: { type: 'string' },
|
|
67
|
+
description: 'Given/When/Then scenarios that SHOULD exist but are absent',
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
phase('Research')
|
|
73
|
+
const research = await agent(
|
|
74
|
+
`Research context for authoring a rulebook task spec on: "${topic}".
|
|
75
|
+
Read-only. Gather:
|
|
76
|
+
1. Existing specs under .rulebook/specs/ and any related task specs in .rulebook/tasks/*/specs/ that overlap this topic.
|
|
77
|
+
2. The relevant source code, types, and conventions this spec will govern.
|
|
78
|
+
3. The required rulebook spec format (read .rulebook/specs/RULEBOOK.md if present): ## ADDED/MODIFIED/REMOVED headers, "### Requirement: <name>" with SHALL/MUST, "#### Scenario:" with Given/When/Then.
|
|
79
|
+
Report a concise map: what already exists, what this spec must cover, conventions to follow, and obvious risks.`,
|
|
80
|
+
{ label: 'research', phase: 'Research', agentType: 'researcher', model: 'haiku' }
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
phase('Draft')
|
|
84
|
+
const draft = await agent(
|
|
85
|
+
`Draft a complete rulebook task spec for: "${topic}".${answersBlock}
|
|
86
|
+
|
|
87
|
+
Ground every requirement in this codebase research:
|
|
88
|
+
"""
|
|
89
|
+
${research}
|
|
90
|
+
"""
|
|
91
|
+
|
|
92
|
+
Produce two artifacts as markdown:
|
|
93
|
+
1. proposal.md — a "## Why" section (≥20 chars, the motivation) and a "## What Changes" section.
|
|
94
|
+
2. spec.md — using "## ADDED Requirements" (and MODIFIED/REMOVED if relevant), each as
|
|
95
|
+
"### Requirement: <Name>\\nThe system SHALL/MUST <...>" followed by one or more
|
|
96
|
+
"#### Scenario: <Name>" blocks with Given / When / Then lines (4 hashtags for scenarios).
|
|
97
|
+
|
|
98
|
+
Be specific and testable. Do NOT invent requirements the topic/research/answers don't support — mark anything uncertain so the critic can turn it into a question. Do NOT write production code.`,
|
|
99
|
+
{ label: 'draft', phase: 'Draft', agentType: 'architect', model: 'opus' }
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
phase('Critique')
|
|
103
|
+
const critique = await agent(
|
|
104
|
+
`You are an exacting spec reviewer. Adversarially critique this draft spec for "${topic}" — your job is to find what is missing, ambiguous, or unverifiable so it does not reach implementation half-baked.
|
|
105
|
+
|
|
106
|
+
Draft:
|
|
107
|
+
"""
|
|
108
|
+
${draft}
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
Research context:
|
|
112
|
+
"""
|
|
113
|
+
${research}
|
|
114
|
+
"""
|
|
115
|
+
${answersBlock}
|
|
116
|
+
|
|
117
|
+
Identify:
|
|
118
|
+
- ranked clarifying QUESTIONS the user must answer (most decision-critical first); for each, say why it matters and offer plausible options.
|
|
119
|
+
- GAPS: requirements, constraints, error paths, or edge cases the draft omits.
|
|
120
|
+
- MISSING SCENARIOS: Given/When/Then cases that should exist but are absent.
|
|
121
|
+
Set ready=true ONLY if there are genuinely no open questions and the spec is implementation-ready.`,
|
|
122
|
+
{ label: 'critique', phase: 'Critique', agentType: 'architect', model: 'opus', schema: CRITIQUE_SCHEMA }
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
return {
|
|
126
|
+
topic,
|
|
127
|
+
draft,
|
|
128
|
+
ready: !!(critique && critique.ready),
|
|
129
|
+
questions: (critique && critique.questions) || [],
|
|
130
|
+
gaps: (critique && critique.gaps) || [],
|
|
131
|
+
missingScenarios: (critique && critique.missingScenarios) || [],
|
|
132
|
+
answeredSoFar: priorAnswers.length,
|
|
133
|
+
}
|
package/templates/cli/AIDER.md
CHANGED
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
<!-- AIDER:START -->
|
|
2
|
-
# Aider CLI Rules
|
|
3
|
-
|
|
4
|
-
**Tool**: AI pair programming in terminal (`pip install aider-chat`)
|
|
5
|
-
|
|
6
|
-
## Quick Start
|
|
7
|
-
|
|
8
|
-
```bash
|
|
9
|
-
# Always include AGENTS.md
|
|
10
|
-
aider AGENTS.md src/feature.ts tests/feature.test.ts
|
|
11
|
-
|
|
12
|
-
# In chat:
|
|
13
|
-
"Follow AGENTS.md standards. Implement [feature] with tests first."
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
## Essential Commands
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
/add file.ts # Add files to context
|
|
20
|
-
/drop file.ts # Remove from context
|
|
21
|
-
/run npm test # Run command
|
|
22
|
-
/commit "message" # Commit changes
|
|
23
|
-
/undo # Undo last change
|
|
24
|
-
/diff # Review changes
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Configuration (.aider.conf.yml)
|
|
28
|
-
|
|
29
|
-
```yaml
|
|
30
|
-
model: gpt-4
|
|
31
|
-
read: [AGENTS.md]
|
|
32
|
-
lint: true
|
|
33
|
-
lint-cmd: "npm run lint"
|
|
34
|
-
test-cmd: "npm test"
|
|
35
|
-
auto-commits: true
|
|
36
|
-
commit-prompt: true
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Workflow
|
|
40
|
-
|
|
41
|
-
1. Start session with `aider AGENTS.md [files]`
|
|
42
|
-
2. Request: "Follow AGENTS.md. Implement [feature] with tests first (95%+ coverage)"
|
|
43
|
-
3. Review diffs with `/diff`
|
|
44
|
-
4. Test with `/run npm test`
|
|
45
|
-
5. Commit with `/commit "feat: description"`
|
|
46
|
-
|
|
47
|
-
**Critical**: Always reference AGENTS.md in your requests for consistent standards.
|
|
48
|
-
|
|
49
|
-
<!-- AIDER:END -->
|
|
1
|
+
<!-- AIDER:START -->
|
|
2
|
+
# Aider CLI Rules
|
|
3
|
+
|
|
4
|
+
**Tool**: AI pair programming in terminal (`pip install aider-chat`)
|
|
5
|
+
|
|
6
|
+
## Quick Start
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
# Always include AGENTS.md
|
|
10
|
+
aider AGENTS.md src/feature.ts tests/feature.test.ts
|
|
11
|
+
|
|
12
|
+
# In chat:
|
|
13
|
+
"Follow AGENTS.md standards. Implement [feature] with tests first."
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Essential Commands
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
/add file.ts # Add files to context
|
|
20
|
+
/drop file.ts # Remove from context
|
|
21
|
+
/run npm test # Run command
|
|
22
|
+
/commit "message" # Commit changes
|
|
23
|
+
/undo # Undo last change
|
|
24
|
+
/diff # Review changes
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Configuration (.aider.conf.yml)
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
model: gpt-4
|
|
31
|
+
read: [AGENTS.md]
|
|
32
|
+
lint: true
|
|
33
|
+
lint-cmd: "npm run lint"
|
|
34
|
+
test-cmd: "npm test"
|
|
35
|
+
auto-commits: true
|
|
36
|
+
commit-prompt: true
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Workflow
|
|
40
|
+
|
|
41
|
+
1. Start session with `aider AGENTS.md [files]`
|
|
42
|
+
2. Request: "Follow AGENTS.md. Implement [feature] with tests first (95%+ coverage)"
|
|
43
|
+
3. Review diffs with `/diff`
|
|
44
|
+
4. Test with `/run npm test`
|
|
45
|
+
5. Commit with `/commit "feat: description"`
|
|
46
|
+
|
|
47
|
+
**Critical**: Always reference AGENTS.md in your requests for consistent standards.
|
|
48
|
+
|
|
49
|
+
<!-- AIDER:END -->
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
<!-- AMAZON_Q:START -->
|
|
2
|
-
# Amazon Q Developer Rules
|
|
3
|
-
|
|
4
|
-
**Tool**: AWS-focused AI assistant with security scanning
|
|
5
|
-
|
|
6
|
-
## Quick Start
|
|
7
|
-
|
|
8
|
-
Available in AWS IDE Toolkit or via AWS Console.
|
|
9
|
-
|
|
10
|
-
## Usage
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
"Follow @AGENTS.md standards. Implement [feature] with tests (95%+ coverage)."
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
## Workflow
|
|
17
|
-
|
|
18
|
-
1. Reference AGENTS.md in prompts
|
|
19
|
-
2. Leverage Q's security scanning for vulnerabilities
|
|
20
|
-
3. Review generated code
|
|
21
|
-
4. Run quality checks
|
|
22
|
-
|
|
23
|
-
**Critical**: Q excels at AWS/security - combine with AGENTS.md standards.
|
|
24
|
-
|
|
25
|
-
<!-- AMAZON_Q:END -->
|
|
1
|
+
<!-- AMAZON_Q:START -->
|
|
2
|
+
# Amazon Q Developer Rules
|
|
3
|
+
|
|
4
|
+
**Tool**: AWS-focused AI assistant with security scanning
|
|
5
|
+
|
|
6
|
+
## Quick Start
|
|
7
|
+
|
|
8
|
+
Available in AWS IDE Toolkit or via AWS Console.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
"Follow @AGENTS.md standards. Implement [feature] with tests (95%+ coverage)."
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Workflow
|
|
17
|
+
|
|
18
|
+
1. Reference AGENTS.md in prompts
|
|
19
|
+
2. Leverage Q's security scanning for vulnerabilities
|
|
20
|
+
3. Review generated code
|
|
21
|
+
4. Run quality checks
|
|
22
|
+
|
|
23
|
+
**Critical**: Q excels at AWS/security - combine with AGENTS.md standards.
|
|
24
|
+
|
|
25
|
+
<!-- AMAZON_Q:END -->
|