@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
|
@@ -1,391 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import { readFile, writeFile, ensureDir, fileExists } from '../utils/file-system.js';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
|
-
import { dirname } from 'path';
|
|
5
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
-
const __dirname = dirname(__filename);
|
|
7
|
-
function getTemplatesDir() {
|
|
8
|
-
return path.join(__dirname, '..', '..', 'templates');
|
|
9
|
-
}
|
|
10
|
-
export async function generateWorkflows(config, targetDir = process.cwd(), options = {}) {
|
|
11
|
-
const generatedFiles = [];
|
|
12
|
-
const workflowsDir = path.join(targetDir, '.github', 'workflows');
|
|
13
|
-
await ensureDir(workflowsDir);
|
|
14
|
-
const templatesDir = path.join(getTemplatesDir(), 'workflows');
|
|
15
|
-
const mode = options.mode ?? 'full';
|
|
16
|
-
// Generate language-specific workflows
|
|
17
|
-
for (const language of config.languages) {
|
|
18
|
-
if (language === 'rust') {
|
|
19
|
-
// Copy Rust workflows
|
|
20
|
-
const rustTest = await copyWorkflow(templatesDir, 'rust-test.yml', workflowsDir);
|
|
21
|
-
generatedFiles.push(rustTest);
|
|
22
|
-
if (mode === 'full') {
|
|
23
|
-
const rustLint = await copyWorkflow(templatesDir, 'rust-lint.yml', workflowsDir);
|
|
24
|
-
generatedFiles.push(rustLint);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
else if (language === 'typescript') {
|
|
28
|
-
// Copy TypeScript workflows
|
|
29
|
-
const tsTest = await copyWorkflow(templatesDir, 'typescript-test.yml', workflowsDir);
|
|
30
|
-
generatedFiles.push(tsTest);
|
|
31
|
-
if (mode === 'full') {
|
|
32
|
-
const tsLint = await copyWorkflow(templatesDir, 'typescript-lint.yml', workflowsDir);
|
|
33
|
-
generatedFiles.push(tsLint);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
else if (language === 'python') {
|
|
37
|
-
// Copy Python workflows
|
|
38
|
-
const pyTest = await copyWorkflow(templatesDir, 'python-test.yml', workflowsDir);
|
|
39
|
-
generatedFiles.push(pyTest);
|
|
40
|
-
if (mode === 'full') {
|
|
41
|
-
const pyLint = await copyWorkflow(templatesDir, 'python-lint.yml', workflowsDir);
|
|
42
|
-
generatedFiles.push(pyLint);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
else if (language === 'go') {
|
|
46
|
-
// Copy Go workflows
|
|
47
|
-
const goTest = await copyWorkflow(templatesDir, 'go-test.yml', workflowsDir);
|
|
48
|
-
generatedFiles.push(goTest);
|
|
49
|
-
if (mode === 'full') {
|
|
50
|
-
const goLint = await copyWorkflow(templatesDir, 'go-lint.yml', workflowsDir);
|
|
51
|
-
generatedFiles.push(goLint);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
else if (language === 'java') {
|
|
55
|
-
// Copy Java workflows
|
|
56
|
-
const javaTest = await copyWorkflow(templatesDir, 'java-test.yml', workflowsDir);
|
|
57
|
-
generatedFiles.push(javaTest);
|
|
58
|
-
if (mode === 'full') {
|
|
59
|
-
const javaLint = await copyWorkflow(templatesDir, 'java-lint.yml', workflowsDir);
|
|
60
|
-
generatedFiles.push(javaLint);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
if (mode === 'full') {
|
|
65
|
-
// Always add codespell in full mode
|
|
66
|
-
const codespell = await copyWorkflow(templatesDir, 'codespell.yml', workflowsDir);
|
|
67
|
-
generatedFiles.push(codespell);
|
|
68
|
-
}
|
|
69
|
-
return generatedFiles;
|
|
70
|
-
}
|
|
71
|
-
async function copyWorkflow(templatesDir, workflowFile, targetDir) {
|
|
72
|
-
const sourcePath = path.join(templatesDir, workflowFile);
|
|
73
|
-
const targetPath = path.join(targetDir, workflowFile);
|
|
74
|
-
// Check if workflow already exists
|
|
75
|
-
if (await fileExists(targetPath)) {
|
|
76
|
-
// Skip if exists, don't overwrite
|
|
77
|
-
return targetPath;
|
|
78
|
-
}
|
|
79
|
-
const content = await readFile(sourcePath);
|
|
80
|
-
await writeFile(targetPath, content);
|
|
81
|
-
return targetPath;
|
|
82
|
-
}
|
|
83
|
-
export async function generateIDEFiles(config, targetDir = process.cwd()) {
|
|
84
|
-
const generatedFiles = [];
|
|
85
|
-
for (const ide of config.ides) {
|
|
86
|
-
if (ide === 'cursor') {
|
|
87
|
-
const cursorRulesPath = await generateCursorRules(config, targetDir);
|
|
88
|
-
if (cursorRulesPath)
|
|
89
|
-
generatedFiles.push(cursorRulesPath);
|
|
90
|
-
// Generate Cursor commands
|
|
91
|
-
const cursorCommands = await generateCursorCommands(targetDir);
|
|
92
|
-
generatedFiles.push(...cursorCommands);
|
|
93
|
-
}
|
|
94
|
-
else if (ide === 'windsurf') {
|
|
95
|
-
const windsurfRulesPath = await generateWindsurfRules(config, targetDir);
|
|
96
|
-
if (windsurfRulesPath)
|
|
97
|
-
generatedFiles.push(windsurfRulesPath);
|
|
98
|
-
}
|
|
99
|
-
else if (ide === 'vscode') {
|
|
100
|
-
const vscodeFiles = await generateVSCodeConfig(config, targetDir);
|
|
101
|
-
generatedFiles.push(...vscodeFiles);
|
|
102
|
-
}
|
|
103
|
-
else if (ide === 'copilot') {
|
|
104
|
-
const copilotPath = await generateCopilotInstructions(config, targetDir);
|
|
105
|
-
if (copilotPath)
|
|
106
|
-
generatedFiles.push(copilotPath);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return generatedFiles;
|
|
110
|
-
}
|
|
111
|
-
async function generateCursorRules(config, targetDir) {
|
|
112
|
-
const targetPath = path.join(targetDir, '.cursorrules');
|
|
113
|
-
// Don't overwrite if exists
|
|
114
|
-
if (await fileExists(targetPath)) {
|
|
115
|
-
return null;
|
|
116
|
-
}
|
|
117
|
-
const content = `This project uses @hivellm/rulebook standards.
|
|
118
|
-
|
|
119
|
-
CRITICAL RULES:
|
|
120
|
-
1. Always reference @AGENTS.md before coding
|
|
121
|
-
2. Write tests first (${config.coverageThreshold}%+ coverage required)
|
|
122
|
-
3. Run quality checks before committing:
|
|
123
|
-
- Type check / Compiler check
|
|
124
|
-
- Linter (no warnings allowed)
|
|
125
|
-
- All tests (100% pass rate)
|
|
126
|
-
- Coverage check
|
|
127
|
-
4. Update docs/ when implementing features
|
|
128
|
-
5. Follow strict documentation structure
|
|
129
|
-
|
|
130
|
-
Language-specific rules are in @AGENTS.md.
|
|
131
|
-
Module-specific patterns are in @AGENTS.md.
|
|
132
|
-
|
|
133
|
-
When in doubt, ask to review @AGENTS.md first.
|
|
134
|
-
`;
|
|
135
|
-
await writeFile(targetPath, content);
|
|
136
|
-
return targetPath;
|
|
137
|
-
}
|
|
138
|
-
async function generateWindsurfRules(config, targetDir) {
|
|
139
|
-
const targetPath = path.join(targetDir, '.windsurfrules');
|
|
140
|
-
if (await fileExists(targetPath)) {
|
|
141
|
-
return null;
|
|
142
|
-
}
|
|
143
|
-
const content = `# Project Standards
|
|
144
|
-
|
|
145
|
-
This project uses @hivellm/rulebook for standardization.
|
|
146
|
-
|
|
147
|
-
## Critical Rules
|
|
148
|
-
|
|
149
|
-
1. **Always check @AGENTS.md** before generating code
|
|
150
|
-
2. **Tests first**: Minimum ${config.coverageThreshold}% coverage required
|
|
151
|
-
3. **Quality gates**: All must pass before commit
|
|
152
|
-
- Type checking
|
|
153
|
-
- Linting (zero warnings)
|
|
154
|
-
- All tests (100% pass)
|
|
155
|
-
- Coverage verification
|
|
156
|
-
4. **Documentation**: Update /docs/ with all changes
|
|
157
|
-
5. **Structure**: Follow strict documentation layout
|
|
158
|
-
|
|
159
|
-
## Language Rules
|
|
160
|
-
|
|
161
|
-
See @AGENTS.md for:
|
|
162
|
-
${config.languages.map((lang) => `- ${lang.charAt(0).toUpperCase() + lang.slice(1)}: Language-specific standards`).join('\n')}
|
|
163
|
-
|
|
164
|
-
## Module Patterns
|
|
165
|
-
|
|
166
|
-
${config.modules.length > 0 ? `See @AGENTS.md for:\n${config.modules.map((mod) => `- ${mod.charAt(0).toUpperCase() + mod.slice(1)}: Module-specific patterns`).join('\n')}` : 'No modules configured'}
|
|
167
|
-
`;
|
|
168
|
-
await writeFile(targetPath, content);
|
|
169
|
-
return targetPath;
|
|
170
|
-
}
|
|
171
|
-
async function generateVSCodeConfig(config, targetDir) {
|
|
172
|
-
const vscodeDir = path.join(targetDir, '.vscode');
|
|
173
|
-
await ensureDir(vscodeDir);
|
|
174
|
-
const generatedFiles = [];
|
|
175
|
-
// Generate settings.json
|
|
176
|
-
const settingsPath = path.join(vscodeDir, 'settings.json');
|
|
177
|
-
if (!(await fileExists(settingsPath))) {
|
|
178
|
-
const settings = {
|
|
179
|
-
'editor.formatOnSave': true,
|
|
180
|
-
'editor.codeActionsOnSave': {
|
|
181
|
-
'source.fixAll.eslint': true,
|
|
182
|
-
'source.organizeImports': true,
|
|
183
|
-
},
|
|
184
|
-
'editor.rulers': [100],
|
|
185
|
-
'files.eol': '\n',
|
|
186
|
-
'github.copilot.enable': {
|
|
187
|
-
'*': true,
|
|
188
|
-
},
|
|
189
|
-
};
|
|
190
|
-
await writeFile(settingsPath, JSON.stringify(settings, null, 2));
|
|
191
|
-
generatedFiles.push(settingsPath);
|
|
192
|
-
}
|
|
193
|
-
// Generate copilot-instructions.md
|
|
194
|
-
const copilotPath = path.join(vscodeDir, 'copilot-instructions.md');
|
|
195
|
-
if (!(await fileExists(copilotPath))) {
|
|
196
|
-
const instructions = `# GitHub Copilot Instructions
|
|
197
|
-
|
|
198
|
-
This project follows @hivellm/rulebook standards defined in AGENTS.md.
|
|
199
|
-
|
|
200
|
-
Read and follow AGENTS.md for all code generation.
|
|
201
|
-
|
|
202
|
-
Minimum test coverage: ${config.coverageThreshold}%
|
|
203
|
-
`;
|
|
204
|
-
await writeFile(copilotPath, instructions);
|
|
205
|
-
generatedFiles.push(copilotPath);
|
|
206
|
-
}
|
|
207
|
-
return generatedFiles;
|
|
208
|
-
}
|
|
209
|
-
async function generateCopilotInstructions(config, targetDir) {
|
|
210
|
-
const githubDir = path.join(targetDir, '.github');
|
|
211
|
-
await ensureDir(githubDir);
|
|
212
|
-
const targetPath = path.join(githubDir, 'copilot-instructions.md');
|
|
213
|
-
if (await fileExists(targetPath)) {
|
|
214
|
-
return null;
|
|
215
|
-
}
|
|
216
|
-
const content = `# GitHub Copilot Instructions
|
|
217
|
-
|
|
218
|
-
This project follows @hivellm/rulebook standards defined in AGENTS.md.
|
|
219
|
-
|
|
220
|
-
## Code Generation Rules
|
|
221
|
-
|
|
222
|
-
1. **Always follow AGENTS.md** for all code generation
|
|
223
|
-
2. **Tests required**: Minimum ${config.coverageThreshold}% coverage for all new code
|
|
224
|
-
3. **Quality checks**: Code must pass all checks before commit:
|
|
225
|
-
- Type checking / Compilation
|
|
226
|
-
- Linting (zero warnings)
|
|
227
|
-
- All tests passing
|
|
228
|
-
- Coverage threshold met
|
|
229
|
-
4. **Documentation**: Update /docs/ with all changes
|
|
230
|
-
5. **Structure**: Follow project structure from AGENTS.md
|
|
231
|
-
|
|
232
|
-
## Language-Specific Standards
|
|
233
|
-
|
|
234
|
-
${config.languages.map((lang) => `### ${lang.charAt(0).toUpperCase() + lang.slice(1)}\nSee AGENTS.md for ${lang} standards`).join('\n\n')}
|
|
235
|
-
|
|
236
|
-
## Testing Patterns
|
|
237
|
-
|
|
238
|
-
- Tests in /tests directory
|
|
239
|
-
- Test-driven development
|
|
240
|
-
- Edge cases and error paths
|
|
241
|
-
- Integration tests where appropriate
|
|
242
|
-
`;
|
|
243
|
-
await writeFile(targetPath, content);
|
|
244
|
-
return targetPath;
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Generate Cursor commands from templates
|
|
248
|
-
*/
|
|
249
|
-
export async function generateCursorCommands(targetDir) {
|
|
250
|
-
const commandsDir = path.join(targetDir, '.cursor', 'commands');
|
|
251
|
-
await ensureDir(commandsDir);
|
|
252
|
-
const templatesDir = path.join(getTemplatesDir(), 'commands');
|
|
253
|
-
const generatedFiles = [];
|
|
254
|
-
// List of command templates to copy
|
|
255
|
-
const commandTemplates = [
|
|
256
|
-
'rulebook-task-create.md',
|
|
257
|
-
'rulebook-task-list.md',
|
|
258
|
-
'rulebook-task-show.md',
|
|
259
|
-
'rulebook-task-validate.md',
|
|
260
|
-
'rulebook-task-archive.md',
|
|
261
|
-
'rulebook-task-apply.md',
|
|
262
|
-
];
|
|
263
|
-
for (const template of commandTemplates) {
|
|
264
|
-
const sourcePath = path.join(templatesDir, template);
|
|
265
|
-
const targetPath = path.join(commandsDir, template);
|
|
266
|
-
// Skip if already exists (don't overwrite user customizations)
|
|
267
|
-
if (await fileExists(targetPath)) {
|
|
268
|
-
continue;
|
|
269
|
-
}
|
|
270
|
-
// Check if template exists
|
|
271
|
-
if (await fileExists(sourcePath)) {
|
|
272
|
-
const content = await readFile(sourcePath);
|
|
273
|
-
await writeFile(targetPath, content);
|
|
274
|
-
generatedFiles.push(targetPath);
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
return generatedFiles;
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* Generate AI CLI configuration files (CLAUDE.md, CODEX.md, GEMINI.md, gemini-extension.json)
|
|
281
|
-
* These files help AI CLI tools understand project standards
|
|
282
|
-
*/
|
|
283
|
-
export async function generateAICLIFiles(config, targetDir = process.cwd()) {
|
|
284
|
-
const generatedFiles = [];
|
|
285
|
-
// CLAUDE.md is generated by `src/core/claude-md-generator.ts` (v5.3.0
|
|
286
|
-
// @import format) — no longer produced here.
|
|
287
|
-
// Generate CODEX.md for Codex CLI
|
|
288
|
-
const codexPath = path.join(targetDir, 'CODEX.md');
|
|
289
|
-
if (!(await fileExists(codexPath))) {
|
|
290
|
-
const codexContent = generateCodexMdContent(config);
|
|
291
|
-
await writeFile(codexPath, codexContent);
|
|
292
|
-
generatedFiles.push(codexPath);
|
|
293
|
-
}
|
|
294
|
-
// Generate GEMINI.md for Gemini CLI
|
|
295
|
-
const geminiPath = path.join(targetDir, 'GEMINI.md');
|
|
296
|
-
if (!(await fileExists(geminiPath))) {
|
|
297
|
-
const geminiContent = generateGeminiMdContent(config);
|
|
298
|
-
await writeFile(geminiPath, geminiContent);
|
|
299
|
-
generatedFiles.push(geminiPath);
|
|
300
|
-
}
|
|
301
|
-
// Generate gemini-extension.json for Gemini CLI extension
|
|
302
|
-
const geminiExtPath = path.join(targetDir, 'gemini-extension.json');
|
|
303
|
-
if (!(await fileExists(geminiExtPath))) {
|
|
304
|
-
const geminiExtContent = generateGeminiExtensionContent(config, targetDir);
|
|
305
|
-
await writeFile(geminiExtPath, JSON.stringify(geminiExtContent, null, 2));
|
|
306
|
-
generatedFiles.push(geminiExtPath);
|
|
307
|
-
}
|
|
308
|
-
return generatedFiles;
|
|
309
|
-
}
|
|
310
|
-
function generateCodexMdContent(config) {
|
|
311
|
-
const languages = config.languages.map((l) => l.charAt(0).toUpperCase() + l.slice(1)).join(', ');
|
|
312
|
-
return `# CODEX.md
|
|
313
|
-
|
|
314
|
-
Instructions for OpenAI Codex and compatible tools.
|
|
315
|
-
|
|
316
|
-
## Project Standards
|
|
317
|
-
|
|
318
|
-
This project uses @hivehub/rulebook. Follow AGENTS.md for all code generation.
|
|
319
|
-
|
|
320
|
-
**Languages**: ${languages || 'Not specified'}
|
|
321
|
-
**Test Coverage**: ${config.coverageThreshold}%+
|
|
322
|
-
|
|
323
|
-
## Rules
|
|
324
|
-
|
|
325
|
-
1. Read AGENTS.md before generating code
|
|
326
|
-
2. Write tests first (TDD approach)
|
|
327
|
-
3. Maintain ${config.coverageThreshold}%+ test coverage
|
|
328
|
-
4. Run quality checks before committing
|
|
329
|
-
5. Follow language-specific patterns from AGENTS.md
|
|
330
|
-
|
|
331
|
-
## Quick Reference
|
|
332
|
-
|
|
333
|
-
- Standards: See AGENTS.md
|
|
334
|
-
- Modular rules: See /rulebook/ directory
|
|
335
|
-
- Documentation: See /docs/ directory
|
|
336
|
-
- Tests: See /tests/ directory
|
|
337
|
-
|
|
338
|
-
Always reference AGENTS.md for consistent code generation.
|
|
339
|
-
`;
|
|
340
|
-
}
|
|
341
|
-
function generateGeminiMdContent(config) {
|
|
342
|
-
const languages = config.languages.map((l) => l.charAt(0).toUpperCase() + l.slice(1)).join(', ');
|
|
343
|
-
return `# GEMINI.md
|
|
344
|
-
|
|
345
|
-
Instructions for Google Gemini CLI and API.
|
|
346
|
-
|
|
347
|
-
## Project Configuration
|
|
348
|
-
|
|
349
|
-
This project uses @hivehub/rulebook standards defined in AGENTS.md.
|
|
350
|
-
|
|
351
|
-
**Languages**: ${languages || 'Not specified'}
|
|
352
|
-
**Coverage Requirement**: ${config.coverageThreshold}%
|
|
353
|
-
|
|
354
|
-
## Development Guidelines
|
|
355
|
-
|
|
356
|
-
1. **Check AGENTS.md first** - Contains all project standards
|
|
357
|
-
2. **Test-driven development** - Write tests before implementation
|
|
358
|
-
3. **Quality gates** - All code must pass:
|
|
359
|
-
- Type checking
|
|
360
|
-
- Linting (zero warnings)
|
|
361
|
-
- Tests (100% pass rate)
|
|
362
|
-
- Coverage (${config.coverageThreshold}%+)
|
|
363
|
-
4. **Documentation** - Update /docs/ for all features
|
|
364
|
-
|
|
365
|
-
## Project Structure
|
|
366
|
-
|
|
367
|
-
- \`AGENTS.md\` - AI agent directives and standards
|
|
368
|
-
- \`/rulebook/\` - Modular rule definitions
|
|
369
|
-
- \`/docs/\` - Documentation
|
|
370
|
-
- \`/tests/\` - Test files
|
|
371
|
-
|
|
372
|
-
For detailed standards, see AGENTS.md.
|
|
373
|
-
`;
|
|
374
|
-
}
|
|
375
|
-
function generateGeminiExtensionContent(config, targetDir) {
|
|
376
|
-
return {
|
|
377
|
-
name: path.basename(targetDir),
|
|
378
|
-
version: '1.0.0',
|
|
379
|
-
description: 'Gemini CLI extension for project standards',
|
|
380
|
-
main: 'GEMINI.md',
|
|
381
|
-
includes: ['AGENTS.md', '.rulebook/**/*.md', 'docs/**/*.md'],
|
|
382
|
-
excludes: ['node_modules/**', 'dist/**', '.git/**'],
|
|
383
|
-
settings: {
|
|
384
|
-
coverageThreshold: config.coverageThreshold,
|
|
385
|
-
languages: config.languages,
|
|
386
|
-
frameworks: config.frameworks || [],
|
|
387
|
-
strictMode: true,
|
|
388
|
-
},
|
|
389
|
-
};
|
|
390
|
-
}
|
|
391
|
-
//# sourceMappingURL=workflow-generator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-generator.js","sourceRoot":"","sources":["../../src/core/workflow-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Claude Code SessionStart hook for rulebook-terse.
|
|
3
|
-
*
|
|
4
|
-
* Runs once per session. Responsibilities:
|
|
5
|
-
*
|
|
6
|
-
* 1. Resolve the active intensity mode (env → project config →
|
|
7
|
-
* user-global config → tier default → `brief`).
|
|
8
|
-
* 2. Write the mode to `<project>/.rulebook/.terse-mode` using
|
|
9
|
-
* `safeWriteFlag`.
|
|
10
|
-
* 3. Read the invocable `rulebook-terse` SKILL.md, filter the
|
|
11
|
-
* intensity table + examples down to only the active level's
|
|
12
|
-
* rows, and emit the filtered body to stdout.
|
|
13
|
-
*
|
|
14
|
-
* Claude Code treats SessionStart stdout as hidden `additionalContext`
|
|
15
|
-
* — the user never sees the injection in their transcript, but the
|
|
16
|
-
* model's system context now carries the compression rules.
|
|
17
|
-
*
|
|
18
|
-
* Silent-fails on every filesystem error. A broken hook must NEVER
|
|
19
|
-
* prevent session start.
|
|
20
|
-
*/
|
|
21
|
-
import { type TerseMode } from './safe-flag-io.js';
|
|
22
|
-
/**
|
|
23
|
-
* Strip YAML frontmatter from a SKILL.md body. Returns the body as-is
|
|
24
|
-
* if no frontmatter is present.
|
|
25
|
-
*/
|
|
26
|
-
export declare function stripFrontmatter(content: string): string;
|
|
27
|
-
/**
|
|
28
|
-
* Filter the intensity table + worked-example rows to keep only the
|
|
29
|
-
* active level's row. The SKILL.md has six intensity-level rows but
|
|
30
|
-
* the model only needs the one it will use this session; keeping all
|
|
31
|
-
* six wastes context and invites cross-level confusion.
|
|
32
|
-
*
|
|
33
|
-
* Rows start with `| **<level>** |` for the table and `- **<level>**:`
|
|
34
|
-
* for the examples. The table header + separator rows pass through
|
|
35
|
-
* unchanged because they don't match the level-row pattern.
|
|
36
|
-
*/
|
|
37
|
-
export declare function filterSkillForLevel(body: string, level: TerseMode): string;
|
|
38
|
-
/**
|
|
39
|
-
* Build the full SessionStart stdout payload.
|
|
40
|
-
*/
|
|
41
|
-
export declare function buildSessionStartOutput(args: {
|
|
42
|
-
mode: TerseMode;
|
|
43
|
-
skillBody: string | null;
|
|
44
|
-
}): string;
|
|
45
|
-
/**
|
|
46
|
-
* Read the installed `rulebook-terse` SKILL.md. Returns the raw content
|
|
47
|
-
* on success, or null if no candidate path resolves.
|
|
48
|
-
*/
|
|
49
|
-
export declare function loadSkillBody(projectRoot: string): string | null;
|
|
50
|
-
/**
|
|
51
|
-
* CLI entry for the SessionStart hook. Always exits 0 — any failure
|
|
52
|
-
* silently falls back to a no-op so session start is never blocked.
|
|
53
|
-
*/
|
|
54
|
-
export declare function main(options?: {
|
|
55
|
-
projectRoot?: string;
|
|
56
|
-
env?: NodeJS.ProcessEnv;
|
|
57
|
-
stdout?: NodeJS.WriteStream;
|
|
58
|
-
}): void;
|
|
59
|
-
//# sourceMappingURL=terse-activate.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"terse-activate.d.ts","sourceRoot":"","sources":["../../src/hooks/terse-activate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAyBlE;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAoB1E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,GAAG,MAAM,CAOT;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAehE;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAClB,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;CACxB,GACL,IAAI,CA0BN"}
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Claude Code SessionStart hook for rulebook-terse.
|
|
3
|
-
*
|
|
4
|
-
* Runs once per session. Responsibilities:
|
|
5
|
-
*
|
|
6
|
-
* 1. Resolve the active intensity mode (env → project config →
|
|
7
|
-
* user-global config → tier default → `brief`).
|
|
8
|
-
* 2. Write the mode to `<project>/.rulebook/.terse-mode` using
|
|
9
|
-
* `safeWriteFlag`.
|
|
10
|
-
* 3. Read the invocable `rulebook-terse` SKILL.md, filter the
|
|
11
|
-
* intensity table + examples down to only the active level's
|
|
12
|
-
* rows, and emit the filtered body to stdout.
|
|
13
|
-
*
|
|
14
|
-
* Claude Code treats SessionStart stdout as hidden `additionalContext`
|
|
15
|
-
* — the user never sees the injection in their transcript, but the
|
|
16
|
-
* model's system context now carries the compression rules.
|
|
17
|
-
*
|
|
18
|
-
* Silent-fails on every filesystem error. A broken hook must NEVER
|
|
19
|
-
* prevent session start.
|
|
20
|
-
*/
|
|
21
|
-
import { existsSync, readFileSync, unlinkSync } from 'node:fs';
|
|
22
|
-
import { join } from 'node:path';
|
|
23
|
-
import { fileURLToPath } from 'node:url';
|
|
24
|
-
import { safeWriteFlag } from './safe-flag-io.js';
|
|
25
|
-
import { getDefaultMode, getFlagPath, } from './terse-config.js';
|
|
26
|
-
/**
|
|
27
|
-
* Minimal fallback ruleset emitted when SKILL.md cannot be found on
|
|
28
|
-
* disk — e.g. a standalone installer that did not copy the templates
|
|
29
|
-
* directory. Matches the Caveman precedent (see analysis report 06).
|
|
30
|
-
*/
|
|
31
|
-
const FALLBACK_RULES = `Respond tersely. All technical substance stays. Only fluff dies.
|
|
32
|
-
|
|
33
|
-
## Persistence
|
|
34
|
-
ACTIVE EVERY RESPONSE once set. Off only via "/rulebook-terse off", "normal mode", or session end.
|
|
35
|
-
|
|
36
|
-
## Rules
|
|
37
|
-
Drop filler (just, really, basically), pleasantries, hedging. Keep technical terms exact. Code blocks byte-for-byte unchanged.
|
|
38
|
-
|
|
39
|
-
## Auto-Clarity
|
|
40
|
-
Full prose for: security warnings, destructive-op confirmations, quality-gate failures, multi-step sequences, user confusion.
|
|
41
|
-
|
|
42
|
-
## Boundaries
|
|
43
|
-
Code/tests/commits/specs: unchanged.`;
|
|
44
|
-
/**
|
|
45
|
-
* Strip YAML frontmatter from a SKILL.md body. Returns the body as-is
|
|
46
|
-
* if no frontmatter is present.
|
|
47
|
-
*/
|
|
48
|
-
export function stripFrontmatter(content) {
|
|
49
|
-
const match = content.match(/^---\s*\n[\s\S]*?\n---\s*\n([\s\S]*)$/);
|
|
50
|
-
return match ? match[1] : content;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Filter the intensity table + worked-example rows to keep only the
|
|
54
|
-
* active level's row. The SKILL.md has six intensity-level rows but
|
|
55
|
-
* the model only needs the one it will use this session; keeping all
|
|
56
|
-
* six wastes context and invites cross-level confusion.
|
|
57
|
-
*
|
|
58
|
-
* Rows start with `| **<level>** |` for the table and `- **<level>**:`
|
|
59
|
-
* for the examples. The table header + separator rows pass through
|
|
60
|
-
* unchanged because they don't match the level-row pattern.
|
|
61
|
-
*/
|
|
62
|
-
export function filterSkillForLevel(body, level) {
|
|
63
|
-
const out = [];
|
|
64
|
-
const tableRow = /^\|\s*\*\*(\S+?)\*\*\s*\|/;
|
|
65
|
-
const exampleLine = /^-\s*\*\*(\S+?)\*\*\s*:/;
|
|
66
|
-
for (const line of body.split('\n')) {
|
|
67
|
-
const tMatch = line.match(tableRow);
|
|
68
|
-
if (tMatch) {
|
|
69
|
-
if (tMatch[1] === level)
|
|
70
|
-
out.push(line);
|
|
71
|
-
continue;
|
|
72
|
-
}
|
|
73
|
-
const eMatch = line.match(exampleLine);
|
|
74
|
-
if (eMatch) {
|
|
75
|
-
if (eMatch[1] === level)
|
|
76
|
-
out.push(line);
|
|
77
|
-
continue;
|
|
78
|
-
}
|
|
79
|
-
out.push(line);
|
|
80
|
-
}
|
|
81
|
-
return out.join('\n');
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Build the full SessionStart stdout payload.
|
|
85
|
-
*/
|
|
86
|
-
export function buildSessionStartOutput(args) {
|
|
87
|
-
const header = `RULEBOOK-TERSE MODE ACTIVE — level: ${args.mode}`;
|
|
88
|
-
if (args.skillBody === null) {
|
|
89
|
-
return `${header}\n\n${FALLBACK_RULES}`;
|
|
90
|
-
}
|
|
91
|
-
const filtered = filterSkillForLevel(args.skillBody, args.mode);
|
|
92
|
-
return `${header}\n\n${filtered}`.trimEnd() + '\n';
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Read the installed `rulebook-terse` SKILL.md. Returns the raw content
|
|
96
|
-
* on success, or null if no candidate path resolves.
|
|
97
|
-
*/
|
|
98
|
-
export function loadSkillBody(projectRoot) {
|
|
99
|
-
const candidates = [
|
|
100
|
-
join(projectRoot, '.claude', 'skills', 'rulebook-terse', 'SKILL.md'),
|
|
101
|
-
join(projectRoot, 'templates', 'skills', 'core', 'rulebook-terse', 'SKILL.md'),
|
|
102
|
-
];
|
|
103
|
-
for (const path of candidates) {
|
|
104
|
-
try {
|
|
105
|
-
if (existsSync(path)) {
|
|
106
|
-
return stripFrontmatter(readFileSync(path, 'utf8'));
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
catch {
|
|
110
|
-
/* try next candidate */
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
return null;
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* CLI entry for the SessionStart hook. Always exits 0 — any failure
|
|
117
|
-
* silently falls back to a no-op so session start is never blocked.
|
|
118
|
-
*/
|
|
119
|
-
export function main(options = {}) {
|
|
120
|
-
try {
|
|
121
|
-
const projectRoot = options.projectRoot ?? process.cwd();
|
|
122
|
-
const env = options.env ?? process.env;
|
|
123
|
-
const stdout = options.stdout ?? process.stdout;
|
|
124
|
-
const mode = getDefaultMode({ env, projectRoot, tier: env.RULEBOOK_AGENT_TIER });
|
|
125
|
-
const flagPath = getFlagPath(projectRoot);
|
|
126
|
-
if (mode === 'off') {
|
|
127
|
-
try {
|
|
128
|
-
unlinkSync(flagPath);
|
|
129
|
-
}
|
|
130
|
-
catch {
|
|
131
|
-
/* flag already absent — fine */
|
|
132
|
-
}
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
safeWriteFlag(flagPath, mode);
|
|
136
|
-
const skillBody = loadSkillBody(projectRoot);
|
|
137
|
-
const output = buildSessionStartOutput({ mode, skillBody });
|
|
138
|
-
stdout.write(output);
|
|
139
|
-
}
|
|
140
|
-
catch {
|
|
141
|
-
/* silent fail — never block session start */
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
// CLI guard — only auto-run when invoked as the entry script.
|
|
145
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
146
|
-
if (process.argv[1] === __filename) {
|
|
147
|
-
main();
|
|
148
|
-
}
|
|
149
|
-
//# sourceMappingURL=terse-activate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"terse-activate.js","sourceRoot":"","sources":["../../src/hooks/terse-activate.ts"],"names":[],"mappings":"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"}
|