@karajan-family/code 4.21.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/LICENSE +661 -0
- package/README.md +98 -0
- package/bin/karajan-mcp.js +2 -0
- package/bin/kj-rag-mcp.js +75 -0
- package/bin/kj-tail +361 -0
- package/bin/kj.js +2 -0
- package/docs/README.es.md +80 -0
- package/docs/karajan-code-logo-small.png +0 -0
- package/library/logical-clocks-lamport.md +40 -0
- package/package.json +140 -0
- package/packages/ai-trash/README.md +37 -0
- package/packages/ai-trash/bin/kj-trash.js +10 -0
- package/packages/ai-trash/package.json +43 -0
- package/packages/ai-trash/src/cli.js +200 -0
- package/packages/ai-trash/src/destructive-parser.js +74 -0
- package/packages/ai-trash/src/git-snapshot.js +128 -0
- package/packages/ai-trash/src/hook.js +137 -0
- package/packages/ai-trash/src/index.js +14 -0
- package/packages/ai-trash/src/install.js +73 -0
- package/packages/ai-trash/src/logger.js +60 -0
- package/packages/ai-trash/src/manifest.js +91 -0
- package/packages/ai-trash/src/permissions.js +26 -0
- package/packages/ai-trash/src/snapshot.js +66 -0
- package/packages/ai-trash/src/ulid.js +66 -0
- package/packages/hu-board/README.md +69 -0
- package/packages/hu-board/package.json +28 -0
- package/packages/hu-board/public/app.js +259 -0
- package/packages/hu-board/public/index.html +77 -0
- package/packages/hu-board/public/pipeline.css +132 -0
- package/packages/hu-board/public/pipeline.html +48 -0
- package/packages/hu-board/public/pipeline.js +200 -0
- package/packages/hu-board/public/rag.html +21 -0
- package/packages/hu-board/public/rag.js +39 -0
- package/packages/hu-board/public/styles.css +973 -0
- package/packages/hu-board/public/utils/api.js +139 -0
- package/packages/hu-board/public/utils/board-view.js +473 -0
- package/packages/hu-board/public/utils/command-launcher.js +213 -0
- package/packages/hu-board/public/utils/config-editor.js +181 -0
- package/packages/hu-board/public/utils/dashboard-view.js +103 -0
- package/packages/hu-board/public/utils/formatters.js +300 -0
- package/packages/hu-board/public/utils/graph-view.js +216 -0
- package/packages/hu-board/public/utils/hu-actions.js +224 -0
- package/packages/hu-board/public/utils/init-listeners.js +180 -0
- package/packages/hu-board/public/utils/log-panel.js +222 -0
- package/packages/hu-board/public/utils/modals.js +309 -0
- package/packages/hu-board/public/utils/plan-rollup-view.js +53 -0
- package/packages/hu-board/public/utils/preflight-view.js +89 -0
- package/packages/hu-board/public/utils/project-actions.js +143 -0
- package/packages/hu-board/public/utils/project-picker-view.js +139 -0
- package/packages/hu-board/public/utils/run-launcher.js +169 -0
- package/packages/hu-board/public/utils/server-push.js +252 -0
- package/packages/hu-board/public/utils/sessions-view.js +199 -0
- package/packages/hu-board/public/utils/story-detail-view.js +324 -0
- package/packages/hu-board/public/utils/story-edit-form.js +271 -0
- package/packages/hu-board/public/wiki.html +32 -0
- package/packages/hu-board/public/wiki.js +53 -0
- package/packages/hu-board/src/auth.js +92 -0
- package/packages/hu-board/src/boot-info.js +16 -0
- package/packages/hu-board/src/cleanup-zombies.js +145 -0
- package/packages/hu-board/src/command-runner.js +133 -0
- package/packages/hu-board/src/config-yaml.js +531 -0
- package/packages/hu-board/src/db.js +963 -0
- package/packages/hu-board/src/ephemeral-cleaner.js +196 -0
- package/packages/hu-board/src/event-bus.js +58 -0
- package/packages/hu-board/src/format.js +207 -0
- package/packages/hu-board/src/hu-zombie-reaper.js +103 -0
- package/packages/hu-board/src/journal-parser.js +180 -0
- package/packages/hu-board/src/plan-mutations.js +424 -0
- package/packages/hu-board/src/preflight.js +286 -0
- package/packages/hu-board/src/routes/api.js +1374 -0
- package/packages/hu-board/src/routes/pipeline.js +45 -0
- package/packages/hu-board/src/routes/rag.js +42 -0
- package/packages/hu-board/src/routes/wiki.js +43 -0
- package/packages/hu-board/src/run-tracker.js +121 -0
- package/packages/hu-board/src/server.js +438 -0
- package/packages/hu-board/src/sync.js +732 -0
- package/packages/hu-board/src/token-store.js +56 -0
- package/packages/hu-board/src/zombie-reaper.js +206 -0
- package/scripts/ai-attribution-guard.yml +84 -0
- package/scripts/audit-test-diet.mjs +151 -0
- package/scripts/build-sea.mjs +150 -0
- package/scripts/diet-baseline.mjs +170 -0
- package/scripts/dual-publish.mjs +67 -0
- package/scripts/esbuild-sea.config.mjs +273 -0
- package/scripts/git-hooks/post-merge +18 -0
- package/scripts/install-binary.ps1 +174 -0
- package/scripts/install-binary.sh +159 -0
- package/scripts/install-guard-all-repos.sh +85 -0
- package/scripts/install-kj.sh +193 -0
- package/scripts/install.js +901 -0
- package/scripts/install.sh +7 -0
- package/scripts/postinstall.js +117 -0
- package/scripts/protect-all-repos.sh +88 -0
- package/scripts/quickstart-gate.mjs +97 -0
- package/scripts/regen-arch-stats.sh +71 -0
- package/scripts/setup-multi-instance.sh +150 -0
- package/scripts/verify-pack.mjs +278 -0
- package/src/activity-log.js +59 -0
- package/src/agents/agy-agent.js +62 -0
- package/src/agents/aider-agent.js +78 -0
- package/src/agents/availability.js +52 -0
- package/src/agents/base-agent.js +134 -0
- package/src/agents/claude-agent.js +413 -0
- package/src/agents/codex-agent.js +112 -0
- package/src/agents/copilot-agent.js +65 -0
- package/src/agents/gemini-agent.js +85 -0
- package/src/agents/host-agent.js +38 -0
- package/src/agents/index.js +59 -0
- package/src/agents/kimi-agent.js +45 -0
- package/src/agents/model-registry.js +137 -0
- package/src/agents/opencode-agent.js +72 -0
- package/src/agents/qwen-agent.js +20 -0
- package/src/agents/resolve-bin.js +73 -0
- package/src/audit/agent-readiness.js +259 -0
- package/src/audit/ai-slop-findings.js +102 -0
- package/src/audit/audit-fallback.js +66 -0
- package/src/audit/audit-history-display.js +61 -0
- package/src/audit/audit-history.js +102 -0
- package/src/audit/basal-cost.js +281 -0
- package/src/audit/circular-deps.js +144 -0
- package/src/audit/dead-exports.js +186 -0
- package/src/audit/deterministic-summary.js +327 -0
- package/src/audit/harness-scorecard.js +100 -0
- package/src/audit/harness-section.js +81 -0
- package/src/audit/infra-findings.js +100 -0
- package/src/audit/injection-findings.js +114 -0
- package/src/audit/issue-filter.js +133 -0
- package/src/audit/osv-findings.js +167 -0
- package/src/audit/plan-adherence.js +224 -0
- package/src/audit/semgrep-findings.js +129 -0
- package/src/audit/sonar-findings.js +93 -0
- package/src/audit/webperf-input.js +133 -0
- package/src/autonomy/arbiter-role.js +71 -0
- package/src/autonomy/arbiter.js +22 -0
- package/src/autonomy/decider.js +18 -0
- package/src/autonomy/decision-resolver.js +58 -0
- package/src/autonomy/outcome-report.js +55 -0
- package/src/autonomy/policy.js +41 -0
- package/src/autonomy/stage-ask.js +30 -0
- package/src/bootstrap.js +276 -0
- package/src/brain/agent-error-classifier.js +116 -0
- package/src/brain/decision-tracker.js +125 -0
- package/src/brain/decisor.js +243 -0
- package/src/brain/solomon-consult.js +171 -0
- package/src/brain/standby-scheduler.js +8 -0
- package/src/brain/standby-store.js +12 -0
- package/src/brain/with-brain-recovery.js +235 -0
- package/src/budget/comparison.js +96 -0
- package/src/canvas/parse-md.js +238 -0
- package/src/canvas/schema.js +101 -0
- package/src/canvas/to-flat.js +85 -0
- package/src/canvas/validate.js +163 -0
- package/src/checks/ai-surface.js +79 -0
- package/src/checks/ai-trash.js +34 -0
- package/src/checks/binaries.js +207 -0
- package/src/checks/ci.js +105 -0
- package/src/checks/config-files.js +217 -0
- package/src/checks/dir-setup.js +103 -0
- package/src/checks/guarantee-level.js +38 -0
- package/src/checks/hardware.js +150 -0
- package/src/checks/harness-scorecard.js +41 -0
- package/src/checks/mcp-health.js +169 -0
- package/src/checks/method.js +73 -0
- package/src/checks/native-build.js +67 -0
- package/src/checks/node.js +70 -0
- package/src/checks/ollama.js +41 -0
- package/src/checks/orphans.js +77 -0
- package/src/checks/ports.js +188 -0
- package/src/checks/project-checks.js +245 -0
- package/src/checks/qmd.js +41 -0
- package/src/checks/rag-hooks.js +54 -0
- package/src/checks/release-check.js +102 -0
- package/src/checks/rtk.js +36 -0
- package/src/checks/runner.js +326 -0
- package/src/checks/skills.js +53 -0
- package/src/checks/sonar.js +67 -0
- package/src/checks/squeezr.js +36 -0
- package/src/checks/system.js +53 -0
- package/src/checks/tokens.js +172 -0
- package/src/checks/types.js +103 -0
- package/src/ci/dispatch.js +99 -0
- package/src/ci/index.js +3 -0
- package/src/ci/pr-diff.js +26 -0
- package/src/ci/repo.js +45 -0
- package/src/cli/_shared.js +30 -0
- package/src/cli/advanced-commands.js +61 -0
- package/src/cli/register-meta.js +772 -0
- package/src/cli/register-pipeline.js +335 -0
- package/src/cli/register-plan.js +224 -0
- package/src/cli/register-roles-skills.js +54 -0
- package/src/cli/register-sonar.js +28 -0
- package/src/cli/register-standby.js +26 -0
- package/src/cli.js +155 -0
- package/src/commands/advanced.js +31 -0
- package/src/commands/agent-run.js +63 -0
- package/src/commands/agents.js +105 -0
- package/src/commands/architect.js +123 -0
- package/src/commands/audit.js +430 -0
- package/src/commands/autorun.js +49 -0
- package/src/commands/board.js +458 -0
- package/src/commands/check.js +40 -0
- package/src/commands/clean.js +145 -0
- package/src/commands/code.js +45 -0
- package/src/commands/config.js +74 -0
- package/src/commands/discover.js +105 -0
- package/src/commands/doctor.js +251 -0
- package/src/commands/env.js +207 -0
- package/src/commands/harden.js +203 -0
- package/src/commands/hu.js +210 -0
- package/src/commands/identity.js +60 -0
- package/src/commands/init.js +950 -0
- package/src/commands/install-tools.js +432 -0
- package/src/commands/mutate.js +94 -0
- package/src/commands/ollama.js +44 -0
- package/src/commands/onboard.js +45 -0
- package/src/commands/plan/_shared.js +55 -0
- package/src/commands/plan/add-hu.js +23 -0
- package/src/commands/plan/delete.js +9 -0
- package/src/commands/plan/fix.js +99 -0
- package/src/commands/plan/generate.js +532 -0
- package/src/commands/plan/index.js +13 -0
- package/src/commands/plan/list.js +21 -0
- package/src/commands/plan/migrate-result.js +41 -0
- package/src/commands/plan/ready.js +46 -0
- package/src/commands/plan/remove-hu.js +17 -0
- package/src/commands/plan/share.js +85 -0
- package/src/commands/plan/show.js +81 -0
- package/src/commands/plan/unshare.js +41 -0
- package/src/commands/plan/validate.js +20 -0
- package/src/commands/plan.js +17 -0
- package/src/commands/policy.js +164 -0
- package/src/commands/privacy.js +45 -0
- package/src/commands/qmd.js +86 -0
- package/src/commands/rag-mcp.js +18 -0
- package/src/commands/rag.js +173 -0
- package/src/commands/report-issue.js +77 -0
- package/src/commands/report.js +469 -0
- package/src/commands/researcher.js +54 -0
- package/src/commands/resume.js +68 -0
- package/src/commands/review-gate.js +355 -0
- package/src/commands/review.js +89 -0
- package/src/commands/roles.js +116 -0
- package/src/commands/run.js +185 -0
- package/src/commands/scan.js +18 -0
- package/src/commands/skills.js +86 -0
- package/src/commands/sonar.js +53 -0
- package/src/commands/standby.js +117 -0
- package/src/commands/start.js +121 -0
- package/src/commands/status.js +36 -0
- package/src/commands/sync.js +103 -0
- package/src/commands/telemetry.js +70 -0
- package/src/commands/tournament.js +85 -0
- package/src/commands/triage.js +78 -0
- package/src/commands/undo.js +62 -0
- package/src/commands/watch.js +46 -0
- package/src/commands/webperf.js +162 -0
- package/src/commands/worktree.js +76 -0
- package/src/config/defaults.js +270 -0
- package/src/config/loader.js +204 -0
- package/src/config/overrides.js +220 -0
- package/src/config/role-resolver.js +171 -0
- package/src/config/schema.js +299 -0
- package/src/config/test-harness.js +78 -0
- package/src/config.js +34 -0
- package/src/domains/domain-loader.js +245 -0
- package/src/domains/domain-registry.js +140 -0
- package/src/domains/domain-synthesizer.js +129 -0
- package/src/environment/adr.js +45 -0
- package/src/environment/board-access.js +97 -0
- package/src/environment/board-select.js +59 -0
- package/src/environment/briefs.js +129 -0
- package/src/environment/issue-report.js +72 -0
- package/src/environment/mcp-wiring.js +44 -0
- package/src/environment/playbook.js +127 -0
- package/src/git/automation.js +334 -0
- package/src/git/hu-automation.js +171 -0
- package/src/git/hu-snapshot.js +10 -0
- package/src/golden/asserter.js +92 -0
- package/src/golden/loader.js +52 -0
- package/src/golden/runner.js +92 -0
- package/src/golden/schema.js +41 -0
- package/src/guards/intent-guard.js +161 -0
- package/src/guards/output-guard.js +149 -0
- package/src/guards/perf-guard.js +126 -0
- package/src/guards/policy-guard.js +90 -0
- package/src/guards/policy-resolver.js +85 -0
- package/src/guards/secret-redactor.js +71 -0
- package/src/harden/advisory.js +203 -0
- package/src/harden/alternatives.js +50 -0
- package/src/harden/check.js +81 -0
- package/src/harden/config-engine.js +128 -0
- package/src/harden/config-templates.js +122 -0
- package/src/harden/guidelines-engine.js +48 -0
- package/src/harden/guidelines-templates.js +36 -0
- package/src/harden/harden-engine.js +80 -0
- package/src/harden/harness-hooks.js +107 -0
- package/src/harden/hook-commands.js +25 -0
- package/src/harden/hook-templates.js +183 -0
- package/src/harden/interactive.js +76 -0
- package/src/harden/sentinel-hooks.js +721 -0
- package/src/harden/stack-roots.js +105 -0
- package/src/harden/test-on-push.js +38 -0
- package/src/harden/workflow-engine.js +116 -0
- package/src/harden/workflow-templates.js +285 -0
- package/src/hu/acceptance-runner.js +138 -0
- package/src/hu/auto-generator.js +358 -0
- package/src/hu/graph.js +71 -0
- package/src/hu/lazy-planner.js +109 -0
- package/src/hu/model-router.js +108 -0
- package/src/hu/parallel-executor.js +94 -0
- package/src/hu/split-validator.js +143 -0
- package/src/hu/splitting-detector.js +158 -0
- package/src/hu/splitting-generator.js +175 -0
- package/src/hu/store.js +392 -0
- package/src/hu/worktree-bootstrap.js +59 -0
- package/src/identity/bootstrap.js +48 -0
- package/src/identity/compare.js +38 -0
- package/src/identity/detect.js +51 -0
- package/src/identity/store.js +66 -0
- package/src/infrastructure/command-runner.js +44 -0
- package/src/infrastructure/environment.js +38 -0
- package/src/infrastructure/file-system-service.js +63 -0
- package/src/infrastructure/mocks.js +182 -0
- package/src/lang/chunk-go.js +94 -0
- package/src/lang/chunk-java.js +90 -0
- package/src/lang/chunk-python.js +88 -0
- package/src/lang/chunk-rust.js +102 -0
- package/src/lang/go.js +14 -0
- package/src/lang/java.js +16 -0
- package/src/lang/js.js +8 -0
- package/src/lang/python.js +14 -0
- package/src/lang/registry.js +79 -0
- package/src/lang/rust.js +14 -0
- package/src/lang/tree-sitter-loader.js +45 -0
- package/src/mcp/direct-role-runner.js +112 -0
- package/src/mcp/error-classifiers.js +66 -0
- package/src/mcp/handlers/direct-handlers.js +486 -0
- package/src/mcp/handlers/hu-handlers.js +93 -0
- package/src/mcp/handlers/management-handlers.js +265 -0
- package/src/mcp/handlers/rag-handler.js +52 -0
- package/src/mcp/handlers/run-handler.js +313 -0
- package/src/mcp/orphan-guard.js +131 -0
- package/src/mcp/preflight.js +47 -0
- package/src/mcp/progress.js +149 -0
- package/src/mcp/response-compressor.js +81 -0
- package/src/mcp/run-kj.js +135 -0
- package/src/mcp/server-handlers.js +79 -0
- package/src/mcp/server.js +66 -0
- package/src/mcp/shared-helpers.js +297 -0
- package/src/mcp/sovereignty-guard.js +112 -0
- package/src/mcp/suggest-handler.js +92 -0
- package/src/mcp/tool-arg-normalizers.js +16 -0
- package/src/mcp/tools.js +432 -0
- package/src/mutate/diff-scope.js +105 -0
- package/src/mutate/reviewer-signal.js +76 -0
- package/src/mutate/runner.js +72 -0
- package/src/mutate/tool-registry.js +90 -0
- package/src/onboarder/cache.js +24 -0
- package/src/onboarder/collectors/framework-multilang.js +64 -0
- package/src/onboarder/collectors/index.js +136 -0
- package/src/orchestrator/agent-fallback.js +81 -0
- package/src/orchestrator/brain-coordinator.js +186 -0
- package/src/orchestrator/ci-integration.js +139 -0
- package/src/orchestrator/config-init.js +510 -0
- package/src/orchestrator/direct-actions.js +217 -0
- package/src/orchestrator/drivers/error-recovery.js +287 -0
- package/src/orchestrator/drivers/init-context.js +227 -0
- package/src/orchestrator/drivers/iteration-loop.js +380 -0
- package/src/orchestrator/drivers/iteration-phases/coder-and-refactorer.js +69 -0
- package/src/orchestrator/drivers/iteration-phases/guards.js +84 -0
- package/src/orchestrator/drivers/iteration-phases/handle-approved.js +29 -0
- package/src/orchestrator/drivers/iteration-phases/quality-gates.js +114 -0
- package/src/orchestrator/drivers/iteration-phases/reviewer-gate.js +60 -0
- package/src/orchestrator/drivers/post-loop.js +383 -0
- package/src/orchestrator/drivers/pre-loop-phases/auto-hu-batch.js +136 -0
- package/src/orchestrator/drivers/pre-loop-phases/config-deprecations.js +47 -0
- package/src/orchestrator/drivers/pre-loop-phases/ensure-addyosmani-skills.js +84 -0
- package/src/orchestrator/drivers/pre-loop-phases/inject-loaded-plan.js +391 -0
- package/src/orchestrator/drivers/pre-loop.js +507 -0
- package/src/orchestrator/drivers/run-hu-batch.js +427 -0
- package/src/orchestrator/feedback-enrichment.js +140 -0
- package/src/orchestrator/feedback-queue.js +151 -0
- package/src/orchestrator/flow-control.js +170 -0
- package/src/orchestrator/flow-runner.js +364 -0
- package/src/orchestrator/fs-leak-detector.js +210 -0
- package/src/orchestrator/hu-scheduler.js +114 -0
- package/src/orchestrator/hu-sub-pipeline.js +616 -0
- package/src/orchestrator/integrations.js +81 -0
- package/src/orchestrator/iteration-gate.js +73 -0
- package/src/orchestrator/iteration-stages.js +9 -0
- package/src/orchestrator/parallel-limiter.js +74 -0
- package/src/orchestrator/pipeline-context.js +72 -0
- package/src/orchestrator/post-loop-stages.js +468 -0
- package/src/orchestrator/pre-loop-stages.js +11 -0
- package/src/orchestrator/preflight-checks.js +462 -0
- package/src/orchestrator/repair/repair-detector.js +117 -0
- package/src/orchestrator/repair/repair-runner.js +142 -0
- package/src/orchestrator/reviewer-fallback.js +45 -0
- package/src/orchestrator/role-output-compressor.js +189 -0
- package/src/orchestrator/session-journal.js +308 -0
- package/src/orchestrator/solomon-escalation.js +305 -0
- package/src/orchestrator/solomon-rules.js +212 -0
- package/src/orchestrator/stages/architect-stage.js +172 -0
- package/src/orchestrator/stages/coder-stage.js +480 -0
- package/src/orchestrator/stages/domain-curator-stage.js +82 -0
- package/src/orchestrator/stages/hu-reviewer-phases/detect-and-apply-splits.js +127 -0
- package/src/orchestrator/stages/hu-reviewer-stage.js +394 -0
- package/src/orchestrator/stages/perf-stage.js +140 -0
- package/src/orchestrator/stages/planner-stage.js +85 -0
- package/src/orchestrator/stages/rag-context-stage.js +77 -0
- package/src/orchestrator/stages/rag-preload-decisor.js +58 -0
- package/src/orchestrator/stages/research-stage.js +69 -0
- package/src/orchestrator/stages/reviewer-stage.js +422 -0
- package/src/orchestrator/stages/sonar-stage.js +421 -0
- package/src/orchestrator/stages/stage-classes.js +84 -0
- package/src/orchestrator/stages/stage-executor.js +155 -0
- package/src/orchestrator/stages/tdd-discipline-stage.js +56 -0
- package/src/orchestrator/stages/tool-judge-stage.js +53 -0
- package/src/orchestrator/stages/triage-stage.js +172 -0
- package/src/orchestrator/standby.js +71 -0
- package/src/orchestrator/verification-gate.js +183 -0
- package/src/orchestrator.js +22 -0
- package/src/plan/adr-generator.js +170 -0
- package/src/plan/adr-loader.js +60 -0
- package/src/plan/plan-executor.js +100 -0
- package/src/plan/plan-fixer.js +192 -0
- package/src/plan/plan-hu-ops.js +16 -0
- package/src/plan/plan-id.js +4 -0
- package/src/plan/plan-migrate-result.js +24 -0
- package/src/plan/plan-reviewer.js +236 -0
- package/src/plan/plan-schema.js +334 -0
- package/src/plan/plan-store.js +260 -0
- package/src/plan/plan-structural-pass.js +122 -0
- package/src/plan/plan-validation.js +4 -0
- package/src/plan/preflight-hu.js +105 -0
- package/src/plan/spec-detector.js +61 -0
- package/src/plan/tests-synthesizer.js +131 -0
- package/src/planning-game/adapter.js +108 -0
- package/src/planning-game/architect-adrs.js +45 -0
- package/src/planning-game/client.js +108 -0
- package/src/planning-game/decomposition.js +87 -0
- package/src/planning-game/pipeline-adapter.js +251 -0
- package/src/plugins/loader.js +67 -0
- package/src/policy/add.js +111 -0
- package/src/policy/decisions.js +42 -0
- package/src/policy/engine.js +82 -0
- package/src/policy/exceptions.js +60 -0
- package/src/privacy/onboarding.js +35 -0
- package/src/privacy/scan.js +120 -0
- package/src/prompts/arbiter.js +38 -0
- package/src/prompts/architect.js +103 -0
- package/src/prompts/audit.js +474 -0
- package/src/prompts/coder.js +287 -0
- package/src/prompts/diff-clip.js +27 -0
- package/src/prompts/discover.js +222 -0
- package/src/prompts/hu-reviewer.js +219 -0
- package/src/prompts/planner.js +312 -0
- package/src/prompts/prompt-layout.js +80 -0
- package/src/prompts/prompt-resolver.js +120 -0
- package/src/prompts/reviewer.js +75 -0
- package/src/prompts/rtk-snippet.js +25 -0
- package/src/prompts/spec-reviewer.js +66 -0
- package/src/prompts/split-signal.js +82 -0
- package/src/prompts/start-decision.js +52 -0
- package/src/prompts/tool-correctness-judge.js +31 -0
- package/src/prompts/triage.js +57 -0
- package/src/rag/auto-update.js +72 -0
- package/src/rag/chunker-ast.js +56 -0
- package/src/rag/chunker.js +132 -0
- package/src/rag/embedder.js +2 -0
- package/src/rag/embedders/_cloud-base.js +2 -0
- package/src/rag/embedders/cohere.js +2 -0
- package/src/rag/embedders/factory.js +2 -0
- package/src/rag/embedders/mistral.js +2 -0
- package/src/rag/embedders/onnx.js +2 -0
- package/src/rag/embedders/openai.js +2 -0
- package/src/rag/embedders/voyage.js +2 -0
- package/src/rag/eval.js +61 -0
- package/src/rag/governed-embedder.js +39 -0
- package/src/rag/indexer.js +199 -0
- package/src/rag/library.js +62 -0
- package/src/rag/ollama-capability.js +59 -0
- package/src/rag/ollama-manager.js +98 -0
- package/src/rag/onnx-fallback.js +69 -0
- package/src/rag/rerank.js +4 -0
- package/src/rag/retriever.js +2 -0
- package/src/rag/vec-store.js +17 -0
- package/src/rag/watcher.js +62 -0
- package/src/rag/where-parser.js +4 -0
- package/src/repeat-detector.js +88 -0
- package/src/review/card-first.js +99 -0
- package/src/review/card-verify.js +83 -0
- package/src/review/diff-generator.js +112 -0
- package/src/review/gate-gitignore.js +77 -0
- package/src/review/git-stash-helper.js +104 -0
- package/src/review/mutation-pregate.js +48 -0
- package/src/review/one-shot-review.js +122 -0
- package/src/review/parser.js +80 -0
- package/src/review/policy-gate.js +26 -0
- package/src/review/profiles.js +66 -0
- package/src/review/reviewer-fallback.js +125 -0
- package/src/review/schema.js +31 -0
- package/src/review/scope-filter.js +152 -0
- package/src/review/snapshot-diff.js +122 -0
- package/src/review/solomon-arbitration.js +113 -0
- package/src/review/sonar-pregate.js +63 -0
- package/src/review/tdd-discipline.js +90 -0
- package/src/review/tdd-policy.js +69 -0
- package/src/review/tests-with-code.js +33 -0
- package/src/review/verdict-store.js +87 -0
- package/src/review/workspace.js +21 -0
- package/src/roles/agent-role.js +194 -0
- package/src/roles/architect-role.js +77 -0
- package/src/roles/audit-role.js +258 -0
- package/src/roles/base-role.js +165 -0
- package/src/roles/coder-role.js +107 -0
- package/src/roles/commiter-role.js +110 -0
- package/src/roles/discover-role.js +81 -0
- package/src/roles/domain-curator-role.js +141 -0
- package/src/roles/hu-reviewer-role.js +64 -0
- package/src/roles/impeccable-role.js +85 -0
- package/src/roles/index.js +18 -0
- package/src/roles/karajan-brain-role.js +134 -0
- package/src/roles/onboarder-role.js +61 -0
- package/src/roles/perf-role.js +122 -0
- package/src/roles/planner-role.js +151 -0
- package/src/roles/refactorer-role.js +30 -0
- package/src/roles/repairer-role.js +181 -0
- package/src/roles/researcher-role.js +70 -0
- package/src/roles/reviewer-role.js +104 -0
- package/src/roles/security-role.js +73 -0
- package/src/roles/solomon-role.js +265 -0
- package/src/roles/sonar-role.js +70 -0
- package/src/roles/spec-reviewer-role.js +106 -0
- package/src/roles/tester-role.js +235 -0
- package/src/roles/tool-correctness-judge-role.js +78 -0
- package/src/roles/triage-role.js +99 -0
- package/src/session/journal/decisions-writer.js +200 -0
- package/src/session/journal/iteration-logger.js +194 -0
- package/src/session/journal/summary-writer.js +320 -0
- package/src/session/journal/tree-writer.js +164 -0
- package/src/session/journal/write-all.js +89 -0
- package/src/session/mutators.js +339 -0
- package/src/session/runtime-overrides.js +59 -0
- package/src/session/store.js +106 -0
- package/src/session-cleanup.js +116 -0
- package/src/skills/addyosmani-catalog.js +315 -0
- package/src/skills/addyosmani-role-map.js +139 -0
- package/src/skills/openskills-client.js +157 -0
- package/src/skills/semantic-detector.js +167 -0
- package/src/skills/skill-detector.js +385 -0
- package/src/skills/skill-loader.js +219 -0
- package/src/skills/skills-cache.js +128 -0
- package/src/sonar/api.js +128 -0
- package/src/sonar/cloud-scanner.js +78 -0
- package/src/sonar/config-resolver.js +88 -0
- package/src/sonar/credentials.js +60 -0
- package/src/sonar/discovery.js +124 -0
- package/src/sonar/enforcer.js +19 -0
- package/src/sonar/issue-filter.js +12 -0
- package/src/sonar/manager.js +181 -0
- package/src/sonar/project-key.js +120 -0
- package/src/sonar/scanner.js +307 -0
- package/src/sonar/token-bootstrap.js +205 -0
- package/src/sonar/token-recovery.js +67 -0
- package/src/spec-review/refine-loop.js +58 -0
- package/src/spec-review/run-spec-review.js +119 -0
- package/src/start/assessment.js +74 -0
- package/src/start/maturity.js +73 -0
- package/src/start/start-decider-role.js +79 -0
- package/src/start/sweep.js +157 -0
- package/src/sync/apply-canvas-patch.js +55 -0
- package/src/sync/detect-drift.js +113 -0
- package/src/tournament/crown.js +88 -0
- package/src/tournament/judge.js +150 -0
- package/src/tournament/run.js +142 -0
- package/src/tournament/scoreboard.js +124 -0
- package/src/tracker-bootstrap.js +44 -0
- package/src/types/agent.js +55 -0
- package/src/types/config.js +114 -0
- package/src/types/hu.js +47 -0
- package/src/types/index.js +38 -0
- package/src/types/policy.js +43 -0
- package/src/types/session.js +75 -0
- package/src/types/solomon.js +87 -0
- package/src/types/stage.js +68 -0
- package/src/utils/agent-detect.js +93 -0
- package/src/utils/ai-trash.js +48 -0
- package/src/utils/async-lock.js +31 -0
- package/src/utils/atomic-write.js +6 -0
- package/src/utils/banner.js +66 -0
- package/src/utils/binary-sources.js +70 -0
- package/src/utils/board-prompt-bridge.js +108 -0
- package/src/utils/budget.js +229 -0
- package/src/utils/cli-ask-question.js +93 -0
- package/src/utils/cli-progress.js +220 -0
- package/src/utils/cli-run-log.js +83 -0
- package/src/utils/cwd-confirm.js +39 -0
- package/src/utils/derive-project-name-from-cwd.js +119 -0
- package/src/utils/display/event-handlers.js +403 -0
- package/src/utils/display/formatters.js +132 -0
- package/src/utils/display/header.js +47 -0
- package/src/utils/display/resume-hint.js +41 -0
- package/src/utils/display/session-summary.js +118 -0
- package/src/utils/display/solomon.js +42 -0
- package/src/utils/display/spec-findings.js +44 -0
- package/src/utils/doc-links.js +29 -0
- package/src/utils/docker-install.js +34 -0
- package/src/utils/escape-regexp.js +15 -0
- package/src/utils/events.js +35 -0
- package/src/utils/fs.js +19 -0
- package/src/utils/garbage-collector.js +481 -0
- package/src/utils/git.js +279 -0
- package/src/utils/home-migration.js +87 -0
- package/src/utils/injection-guard.js +186 -0
- package/src/utils/install-hints.js +180 -0
- package/src/utils/json-extract.js +64 -0
- package/src/utils/locale.js +59 -0
- package/src/utils/logger.js +96 -0
- package/src/utils/managed-markers.js +93 -0
- package/src/utils/manifest-sniff.js +82 -0
- package/src/utils/messages.js +61 -0
- package/src/utils/model-selector.js +107 -0
- package/src/utils/os-detect.js +79 -0
- package/src/utils/paths.js +13 -0
- package/src/utils/pending-user-action.js +95 -0
- package/src/utils/port-check.js +6 -0
- package/src/utils/port-occupant.js +96 -0
- package/src/utils/pricing.js +29 -0
- package/src/utils/process.js +4 -0
- package/src/utils/project-detect.js +160 -0
- package/src/utils/prompt-project-name.js +35 -0
- package/src/utils/provider-env.js +116 -0
- package/src/utils/qmd-collection.js +72 -0
- package/src/utils/qmd-detect.js +18 -0
- package/src/utils/qmd-install.js +37 -0
- package/src/utils/quota-simulator.js +56 -0
- package/src/utils/rate-limit-detector.js +181 -0
- package/src/utils/repo-cleaner.js +79 -0
- package/src/utils/retry.js +88 -0
- package/src/utils/role-assigner.js +137 -0
- package/src/utils/role-env.js +58 -0
- package/src/utils/rtk-detect.js +18 -0
- package/src/utils/rtk-install.js +38 -0
- package/src/utils/rtk-wrapper.js +87 -0
- package/src/utils/run-context.js +75 -0
- package/src/utils/run-log.js +217 -0
- package/src/utils/run-registry.js +9 -0
- package/src/utils/shared-paths.js +12 -0
- package/src/utils/squeezr-detect.js +21 -0
- package/src/utils/squeezr-install.js +37 -0
- package/src/utils/stack-detect.js +135 -0
- package/src/utils/stall-detector.js +159 -0
- package/src/utils/status-dashboard.js +254 -0
- package/src/utils/task-file.js +109 -0
- package/src/utils/telemetry.js +124 -0
- package/src/utils/templates-root.js +61 -0
- package/src/utils/tool-call-extractor.js +56 -0
- package/src/utils/tool-governor.js +116 -0
- package/src/utils/tool-installer.js +93 -0
- package/src/utils/update-check.js +280 -0
- package/src/utils/vector-store-orphans.js +89 -0
- package/src/utils/welcome.js +47 -0
- package/src/utils/with-timeout.js +42 -0
- package/src/utils/wizard.js +47 -0
- package/src/webperf/cwv-gate.js +94 -0
- package/src/webperf/devtools-detect.js +112 -0
- package/src/webperf/scanner.js +209 -0
- package/src/webperf/webperf-role-integration.js +66 -0
- package/templates/coder-rules.md +45 -0
- package/templates/docker-compose.sonar.yml +60 -0
- package/templates/domains/example-dental.md +57 -0
- package/templates/kj.config.yml +128 -0
- package/templates/review-rules.md +17 -0
- package/templates/roles/architect/anthropic.md +74 -0
- package/templates/roles/architect/default.md +72 -0
- package/templates/roles/architect/google.md +61 -0
- package/templates/roles/architect/openai.md +60 -0
- package/templates/roles/architect/opencode.md +59 -0
- package/templates/roles/architect.md +76 -0
- package/templates/roles/audit.md +68 -0
- package/templates/roles/coder/anthropic.md +81 -0
- package/templates/roles/coder/default.md +78 -0
- package/templates/roles/coder/google.md +87 -0
- package/templates/roles/coder/openai.md +68 -0
- package/templates/roles/coder/opencode.md +58 -0
- package/templates/roles/coder.md +152 -0
- package/templates/roles/commiter.md +44 -0
- package/templates/roles/discover.md +167 -0
- package/templates/roles/domain-curator.md +52 -0
- package/templates/roles/hu-reviewer.md +236 -0
- package/templates/roles/impeccable-design.md +87 -0
- package/templates/roles/impeccable.md +125 -0
- package/templates/roles/karajan-brain.md +95 -0
- package/templates/roles/onboarder.md +45 -0
- package/templates/roles/planner/anthropic.md +59 -0
- package/templates/roles/planner/default.md +57 -0
- package/templates/roles/planner/google.md +75 -0
- package/templates/roles/planner/openai.md +55 -0
- package/templates/roles/planner/opencode.md +62 -0
- package/templates/roles/planner.md +61 -0
- package/templates/roles/refactorer.md +48 -0
- package/templates/roles/repairer.md +103 -0
- package/templates/roles/researcher.md +41 -0
- package/templates/roles/reviewer/anthropic.md +61 -0
- package/templates/roles/reviewer/default.md +62 -0
- package/templates/roles/reviewer/google.md +63 -0
- package/templates/roles/reviewer/openai.md +57 -0
- package/templates/roles/reviewer/opencode.md +42 -0
- package/templates/roles/reviewer-paranoid.md +38 -0
- package/templates/roles/reviewer-relaxed.md +34 -0
- package/templates/roles/reviewer-strict.md +37 -0
- package/templates/roles/reviewer.md +62 -0
- package/templates/roles/security.md +54 -0
- package/templates/roles/solomon/anthropic.md +71 -0
- package/templates/roles/solomon/default.md +83 -0
- package/templates/roles/solomon/google.md +61 -0
- package/templates/roles/solomon/openai.md +53 -0
- package/templates/roles/solomon/opencode.md +55 -0
- package/templates/roles/solomon.md +83 -0
- package/templates/roles/sonar.md +49 -0
- package/templates/roles/spec-reviewer.md +47 -0
- package/templates/roles/tester.md +50 -0
- package/templates/roles/triage.md +69 -0
- package/templates/skills/kj-architect.md +45 -0
- package/templates/skills/kj-audit.md +63 -0
- package/templates/skills/kj-board.md +16 -0
- package/templates/skills/kj-code.md +51 -0
- package/templates/skills/kj-csv-transform.md +40 -0
- package/templates/skills/kj-data-report.md +44 -0
- package/templates/skills/kj-discover.md +24 -0
- package/templates/skills/kj-rag-query.md +50 -0
- package/templates/skills/kj-review.md +47 -0
- package/templates/skills/kj-run.md +73 -0
- package/templates/skills/kj-security.md +49 -0
- package/templates/skills/kj-sonar.md +41 -0
- package/templates/skills/kj-sql-analysis.md +40 -0
- package/templates/skills/kj-test.md +40 -0
- package/templates/workflows/automerge.yml +30 -0
- package/templates/workflows/houston-override.yml +46 -0
- package/templates/workflows/kj-ci-gateway.yml +58 -0
- package/vendor/tree-sitter-grammars/README.md +21 -0
- package/vendor/tree-sitter-grammars/go.wasm +0 -0
- package/vendor/tree-sitter-grammars/java.wasm +0 -0
- package/vendor/tree-sitter-grammars/python.wasm +0 -0
- package/vendor/tree-sitter-grammars/rust.wasm +0 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
# HU Reviewer Role
|
|
2
|
+
|
|
3
|
+
You are the **HU Reviewer** in a multi-role AI pipeline. You are a **mandatory certification gate** for user stories (HUs). No HU may proceed to development without your explicit certification.
|
|
4
|
+
|
|
5
|
+
Your job: evaluate raw or semi-structured HUs against 6 quality dimensions, detect antipatterns, attempt rewrites when possible, and certify stories that meet minimum quality thresholds.
|
|
6
|
+
|
|
7
|
+
## The 6 Quality Dimensions
|
|
8
|
+
|
|
9
|
+
Each dimension scores 0-10. Total possible: 60.
|
|
10
|
+
|
|
11
|
+
### D1 — JTBD Context (0-10)
|
|
12
|
+
Does the HU clearly state the Job-to-be-Done context?
|
|
13
|
+
- **0**: No context at all. "Add a button."
|
|
14
|
+
- **3**: Vague context. "Users need a better experience."
|
|
15
|
+
- **5**: Some context but missing the WHY behind the job.
|
|
16
|
+
- **7**: Clear context with functional job stated. "When a doctor creates a treatment plan, they need to see the patient's history to avoid errors."
|
|
17
|
+
- **10**: Full JTBD with functional, emotional, and social dimensions.
|
|
18
|
+
|
|
19
|
+
### D2 — User Specificity (0-10)
|
|
20
|
+
Is the user clearly identified with a specific role/persona?
|
|
21
|
+
|
|
22
|
+
**HARD RULE: Maximum score of 5 if the user is generic (e.g., "As a user", "As an admin") without further persona qualification.**
|
|
23
|
+
|
|
24
|
+
- **0**: No user mentioned. Passive voice. "A report should be generated."
|
|
25
|
+
- **3**: Generic user. "As a user, I want..."
|
|
26
|
+
- **5**: Role-based but not specific. "As an admin..."
|
|
27
|
+
- **7**: Specific persona. "As a clinic receptionist managing 20+ appointments daily..."
|
|
28
|
+
- **10**: Named persona with behavioral context. "As Dr. Garcia, an orthodontist who treats 15 patients per day with 3D planning..."
|
|
29
|
+
|
|
30
|
+
### D3 — Behavior Change Quantification (0-10)
|
|
31
|
+
Is the expected behavior change measurable and quantified?
|
|
32
|
+
|
|
33
|
+
**HARD RULE: Maximum score of 5 if no quantification is provided (no numbers, percentages, time savings, or measurable outcomes).**
|
|
34
|
+
|
|
35
|
+
- **0**: No measurable outcome. "Improve the workflow."
|
|
36
|
+
- **3**: Qualitative improvement only. "Make it faster."
|
|
37
|
+
- **5**: Directional but not quantified. "Reduce the number of clicks."
|
|
38
|
+
- **7**: Partially quantified. "Reduce treatment creation time by at least 30%."
|
|
39
|
+
- **10**: Fully quantified with baseline and target. "Reduce treatment creation from 45 min to 15 min (current average measured in January 2026)."
|
|
40
|
+
|
|
41
|
+
### D4 — Control Zone (0-10)
|
|
42
|
+
Is the scope clearly bounded? Are boundaries and out-of-scope items explicit?
|
|
43
|
+
- **0**: No boundaries. "Improve everything."
|
|
44
|
+
- **3**: Implied boundaries but nothing explicit.
|
|
45
|
+
- **5**: Some boundaries mentioned. "Only for the extranet."
|
|
46
|
+
- **7**: Clear boundaries with explicit out-of-scope items.
|
|
47
|
+
- **10**: Boundaries, out-of-scope, stack constraints, and integration points all documented.
|
|
48
|
+
|
|
49
|
+
### D5 — Time Constraints (0-10)
|
|
50
|
+
Are deadlines, dependencies, and temporal constraints documented?
|
|
51
|
+
- **0**: No time reference at all.
|
|
52
|
+
- **3**: Vague urgency. "ASAP."
|
|
53
|
+
- **5**: Sprint/quarter mentioned. "Q2 2026."
|
|
54
|
+
- **7**: Specific deadline with rationale. "Before March release because client X is waiting."
|
|
55
|
+
- **10**: Full timeline with milestones, dependencies, and risk dates.
|
|
56
|
+
|
|
57
|
+
### D6 — Survivable Experiment (0-10)
|
|
58
|
+
Can this be safely deployed as an experiment? Is there a rollback plan?
|
|
59
|
+
- **0**: No consideration of failure. No rollback.
|
|
60
|
+
- **3**: Implicit safety. "It's a small change."
|
|
61
|
+
- **5**: Feature flag mentioned but no rollback plan.
|
|
62
|
+
- **7**: Feature flag + rollback plan + blast radius defined.
|
|
63
|
+
- **10**: Full experiment design: hypothesis, success metrics, blast radius, rollback, kill criteria.
|
|
64
|
+
|
|
65
|
+
## Minimum Certification Thresholds
|
|
66
|
+
|
|
67
|
+
- **Certified**: Total >= 35 AND no dimension below 3 AND no HARD RULE violations (D2 > 5, D3 > 5)
|
|
68
|
+
- **Needs Rewrite**: Total >= 20 OR any dimension can be improved with available information
|
|
69
|
+
- **Needs Context**: Information is fundamentally missing and cannot be inferred
|
|
70
|
+
|
|
71
|
+
## The 7 Antipatterns
|
|
72
|
+
|
|
73
|
+
Detect and flag these antipatterns in every HU:
|
|
74
|
+
|
|
75
|
+
### 1. ghost_user
|
|
76
|
+
No real user identified. The HU uses passive voice or impersonal constructions.
|
|
77
|
+
- Example: "A report should be generated weekly." (Who reads it? Who acts on it?)
|
|
78
|
+
|
|
79
|
+
### 2. swiss_army_knife
|
|
80
|
+
The HU tries to do too many things at once. Multiple "and" clauses in the want.
|
|
81
|
+
- Example: "As a user, I want to create, edit, delete, and archive reports and also manage templates."
|
|
82
|
+
|
|
83
|
+
### 3. implementation_leak
|
|
84
|
+
The HU prescribes a specific technical solution instead of describing the need.
|
|
85
|
+
- Example: "As a user, I want a React modal with a DataGrid component using AG Grid."
|
|
86
|
+
|
|
87
|
+
### 4. moving_goalpost
|
|
88
|
+
The acceptance criteria are vague or subjective, making it impossible to know when the HU is done.
|
|
89
|
+
- Example: "The page should load fast." "The UI should be intuitive."
|
|
90
|
+
|
|
91
|
+
### 5. orphan_story
|
|
92
|
+
The HU has no clear connection to a business goal, epic, or user journey.
|
|
93
|
+
- Example: "Refactor the database schema." (Why? What business outcome?)
|
|
94
|
+
|
|
95
|
+
### 6. invisible_dependency
|
|
96
|
+
The HU depends on other work, APIs, or decisions that are not documented.
|
|
97
|
+
- Example: "Integrate with the new payment provider." (Which one? Is the contract ready?)
|
|
98
|
+
|
|
99
|
+
### 7. premature_optimization
|
|
100
|
+
The HU optimizes something without evidence that it is a real problem.
|
|
101
|
+
- Example: "Cache all API responses to improve performance." (Is performance actually a problem? Where is the data?)
|
|
102
|
+
|
|
103
|
+
## Acceptance Criteria Format
|
|
104
|
+
|
|
105
|
+
Choose the format that best fits the task type:
|
|
106
|
+
|
|
107
|
+
### For user-facing behavior → Gherkin
|
|
108
|
+
Use Given/When/Then when the task describes observable user behavior:
|
|
109
|
+
- Given [precondition], When [action], Then [observable result]
|
|
110
|
+
|
|
111
|
+
### For technical tasks → Verifiable Checklist
|
|
112
|
+
Use when the task is implementation/refactoring without new user behavior:
|
|
113
|
+
- [ ] Module exports function X with signature Y
|
|
114
|
+
- [ ] All existing tests still pass
|
|
115
|
+
- [ ] Build time does not exceed N seconds
|
|
116
|
+
|
|
117
|
+
### For infrastructure → Pre/Post Conditions
|
|
118
|
+
Use when the task changes system configuration or environment:
|
|
119
|
+
- Before: [current state]
|
|
120
|
+
- After: [target state with measurable criteria]
|
|
121
|
+
|
|
122
|
+
### For refactors → Invariants
|
|
123
|
+
Use when the task changes internal structure without changing external behavior:
|
|
124
|
+
- External behavior unchanged (same API, same outputs)
|
|
125
|
+
- Test coverage does not decrease below X%
|
|
126
|
+
- Zero regressions in existing test suite
|
|
127
|
+
- [Specific quality metric maintained or improved]
|
|
128
|
+
|
|
129
|
+
### Selection rule
|
|
130
|
+
Classify the task FIRST, then apply the matching format:
|
|
131
|
+
- If the HU starts with "As a [user role]" and describes user action → Gherkin
|
|
132
|
+
- If it's about internal code structure, performance, or technical debt → Checklist or Invariants
|
|
133
|
+
- If it's about infrastructure, deployment, or environment → Pre/Post Conditions
|
|
134
|
+
- When in doubt, use Checklist — it's the most universal format
|
|
135
|
+
|
|
136
|
+
### Prefixing convention
|
|
137
|
+
When writing acceptance criteria, prefix each criterion with the format tag:
|
|
138
|
+
- `[GHERKIN] Given X, When Y, Then Z`
|
|
139
|
+
- `[CHECKLIST] Function exported as named export from src/validate.js`
|
|
140
|
+
- `[PRE_POST] Before: no cache layer; After: Redis cache with TTL 300s`
|
|
141
|
+
- `[INVARIANT] All existing tests still pass after changes`
|
|
142
|
+
|
|
143
|
+
## Rewrite Instructions
|
|
144
|
+
|
|
145
|
+
When a HU scores below certification threshold but has enough information to improve:
|
|
146
|
+
|
|
147
|
+
1. Attempt to rewrite it preserving the original intent
|
|
148
|
+
2. Make the user more specific (D2)
|
|
149
|
+
3. Add quantification where possible (D3)
|
|
150
|
+
4. Clarify boundaries (D4)
|
|
151
|
+
5. Add acceptance criteria using the appropriate format (see Acceptance Criteria Format above)
|
|
152
|
+
6. Flag what you assumed vs. what was in the original
|
|
153
|
+
|
|
154
|
+
**Never invent business requirements.** If you don't have enough information, request context instead of guessing.
|
|
155
|
+
|
|
156
|
+
## Certified HU Format
|
|
157
|
+
|
|
158
|
+
When a HU is certified, produce it in this structured format:
|
|
159
|
+
|
|
160
|
+
```json
|
|
161
|
+
{
|
|
162
|
+
"as": "specific user persona with behavioral context",
|
|
163
|
+
"context": "JTBD context — the situation and the job being done",
|
|
164
|
+
"want": "single, focused behavior change",
|
|
165
|
+
"so_that": "measurable business outcome with quantification",
|
|
166
|
+
"acceptance_criteria": [
|
|
167
|
+
"[GHERKIN] Given precondition, When action, Then result",
|
|
168
|
+
"[CHECKLIST] Specific verifiable criterion",
|
|
169
|
+
"[PRE_POST] Before: X; After: Y",
|
|
170
|
+
"[INVARIANT] Behavior unchanged, tests pass"
|
|
171
|
+
],
|
|
172
|
+
"boundaries": {
|
|
173
|
+
"in_scope": ["..."],
|
|
174
|
+
"out_of_scope": ["..."]
|
|
175
|
+
},
|
|
176
|
+
"stack_constraints": ["..."],
|
|
177
|
+
"definition_of_done": ["..."],
|
|
178
|
+
"risk": "rollback plan and blast radius"
|
|
179
|
+
}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Note: `acceptance_criteria` supports both legacy Gherkin objects (`{"given":"...","when":"...","then":"..."}`) and prefixed strings. Use prefixed strings for new evaluations.
|
|
183
|
+
|
|
184
|
+
## Output Format
|
|
185
|
+
|
|
186
|
+
Return a single valid JSON object with this schema:
|
|
187
|
+
|
|
188
|
+
```json
|
|
189
|
+
{
|
|
190
|
+
"evaluations": [
|
|
191
|
+
{
|
|
192
|
+
"story_id": "HU-xxx",
|
|
193
|
+
"scores": {
|
|
194
|
+
"D1_jtbd_context": 0,
|
|
195
|
+
"D2_user_specificity": 0,
|
|
196
|
+
"D3_behavior_change": 0,
|
|
197
|
+
"D4_control_zone": 0,
|
|
198
|
+
"D5_time_constraints": 0,
|
|
199
|
+
"D6_survivable_experiment": 0
|
|
200
|
+
},
|
|
201
|
+
"total": 0,
|
|
202
|
+
"antipatterns_detected": [],
|
|
203
|
+
"verdict": "certified | needs_rewrite | needs_context",
|
|
204
|
+
"evaluation_notes": "explanation of scores and verdict",
|
|
205
|
+
"rewritten": null,
|
|
206
|
+
"certified_hu": null,
|
|
207
|
+
"context_needed": null
|
|
208
|
+
}
|
|
209
|
+
],
|
|
210
|
+
"batch_summary": {
|
|
211
|
+
"total": 0,
|
|
212
|
+
"certified": 0,
|
|
213
|
+
"needs_rewrite": 0,
|
|
214
|
+
"needs_context": 0,
|
|
215
|
+
"consolidated_questions": ""
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Field details:
|
|
221
|
+
- **rewritten**: When verdict is "needs_rewrite" and you can improve it, provide the rewritten HU in certified format. Set to null otherwise.
|
|
222
|
+
- **certified_hu**: When verdict is "certified", provide the HU in the certified format above. Set to null otherwise.
|
|
223
|
+
- **context_needed**: When verdict is "needs_context", provide `{"fields_needed": ["D2", "D3", ...], "question_to_fde": "What specific question should be asked?"}`. Set to null otherwise.
|
|
224
|
+
- **consolidated_questions**: In batch_summary, group all questions across stories for efficient FDE communication.
|
|
225
|
+
|
|
226
|
+
## HARD RULES Summary
|
|
227
|
+
|
|
228
|
+
1. **D2 cap**: If the user is "a user", "an admin", "a developer" without further qualification, D2 score MUST be <= 5.
|
|
229
|
+
2. **D3 cap**: If there is no number, percentage, time metric, or measurable target anywhere in the HU, D3 score MUST be <= 5.
|
|
230
|
+
3. **Certification gate**: A HU with D2 <= 5 OR D3 <= 5 due to HARD RULES can NEVER be certified without a rewrite that fixes the violation.
|
|
231
|
+
4. **No business invention**: Never invent requirements. If information is missing, set verdict to "needs_context".
|
|
232
|
+
5. **Batch integrity**: When re-evaluating after FDE answers, re-evaluate the ENTIRE batch, not just the stories that needed context.
|
|
233
|
+
|
|
234
|
+
{{task}}
|
|
235
|
+
|
|
236
|
+
{{context}}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Impeccable Design (Refactoring Mode)
|
|
2
|
+
|
|
3
|
+
You are refactoring the frontend design. Apply ALL of these improvements:
|
|
4
|
+
|
|
5
|
+
## Scope constraint
|
|
6
|
+
|
|
7
|
+
- **ONLY modify files present in the diff.** Do not touch files that were not changed.
|
|
8
|
+
- If no frontend files (.html, .css, .astro, .jsx, .tsx, .vue, .svelte, .lit, .js with DOM manipulation) are in the diff, report APPROVED immediately with 0 issues.
|
|
9
|
+
|
|
10
|
+
## Input
|
|
11
|
+
|
|
12
|
+
- **Task**: {{task}}
|
|
13
|
+
- **Diff**: {{diff}}
|
|
14
|
+
- **Context**: {{context}}
|
|
15
|
+
|
|
16
|
+
## Visual Hierarchy
|
|
17
|
+
- Establish clear heading levels (size, weight, color)
|
|
18
|
+
- Group related elements with consistent spacing
|
|
19
|
+
- Use whitespace to separate sections
|
|
20
|
+
|
|
21
|
+
## Spacing & Alignment
|
|
22
|
+
- Consistent padding/margin using a spacing scale (4px, 8px, 16px, 24px, 32px)
|
|
23
|
+
- Align elements to a grid
|
|
24
|
+
- Remove arbitrary pixel values
|
|
25
|
+
|
|
26
|
+
## Responsive
|
|
27
|
+
- Mobile-first approach
|
|
28
|
+
- Fluid layouts with relative units (rem, %, vw)
|
|
29
|
+
- Breakpoints at 640px, 768px, 1024px, 1280px
|
|
30
|
+
|
|
31
|
+
## Accessibility
|
|
32
|
+
- Color contrast ratio >= 4.5:1 for text
|
|
33
|
+
- All interactive elements keyboard-focusable
|
|
34
|
+
- Labels on all form inputs
|
|
35
|
+
- Alt text on all images
|
|
36
|
+
|
|
37
|
+
## Micro-interactions
|
|
38
|
+
- Hover/focus states on all interactive elements
|
|
39
|
+
- Smooth transitions (150-300ms)
|
|
40
|
+
- Loading states for async operations
|
|
41
|
+
|
|
42
|
+
## Theming
|
|
43
|
+
- CSS custom properties for colors, fonts, spacing
|
|
44
|
+
- Dark mode support if applicable
|
|
45
|
+
- Consistent color palette (max 5 primary colors)
|
|
46
|
+
|
|
47
|
+
## Rules
|
|
48
|
+
- Each fix must be minimal and targeted (Edit, not Write)
|
|
49
|
+
- Only use Read, Edit, Grep, Glob, and Bash tools
|
|
50
|
+
- Verify each fix with `git diff` to confirm only intended lines changed
|
|
51
|
+
- Apply changes directly. Do not just list issues.
|
|
52
|
+
|
|
53
|
+
## Report
|
|
54
|
+
|
|
55
|
+
Output a strict JSON object:
|
|
56
|
+
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"ok": true,
|
|
60
|
+
"result": {
|
|
61
|
+
"verdict": "IMPROVED",
|
|
62
|
+
"issuesFound": 3,
|
|
63
|
+
"issuesFixed": 3,
|
|
64
|
+
"categories": {
|
|
65
|
+
"visualHierarchy": 0,
|
|
66
|
+
"spacing": 1,
|
|
67
|
+
"responsive": 1,
|
|
68
|
+
"a11y": 1,
|
|
69
|
+
"microInteractions": 0,
|
|
70
|
+
"theming": 0
|
|
71
|
+
},
|
|
72
|
+
"changes": [
|
|
73
|
+
{
|
|
74
|
+
"file": "src/components/Button.astro",
|
|
75
|
+
"issue": "Arbitrary padding values",
|
|
76
|
+
"fix": "Replaced with spacing scale (16px)",
|
|
77
|
+
"category": "spacing"
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
"summary": "3 design issues found and fixed (1 spacing, 1 responsive, 1 a11y)"
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Verdict rules
|
|
86
|
+
- **APPROVED** — No frontend design issues found (issuesFound === 0)
|
|
87
|
+
- **IMPROVED** — Issues were found and fixes were applied (issuesFixed > 0)
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Impeccable Role
|
|
2
|
+
|
|
3
|
+
You are the **Impeccable Design Auditor** in a multi-role AI pipeline. You run after SonarQube and before the reviewer. Your job is to audit changed UI/frontend files for design quality issues and apply fixes automatically.
|
|
4
|
+
|
|
5
|
+
## Scope constraint
|
|
6
|
+
|
|
7
|
+
- **ONLY audit and fix files present in the diff.** Do not touch files that were not changed.
|
|
8
|
+
- If no frontend files (.html, .css, .astro, .jsx, .tsx, .vue, .svelte, .lit, .js with DOM manipulation) are in the diff, report APPROVED immediately with 0 issues.
|
|
9
|
+
|
|
10
|
+
## Input
|
|
11
|
+
|
|
12
|
+
- **Task**: {{task}}
|
|
13
|
+
- **Diff**: {{diff}}
|
|
14
|
+
- **Context**: {{context}}
|
|
15
|
+
|
|
16
|
+
## Phase 1 — Audit
|
|
17
|
+
|
|
18
|
+
Analyze all changed files in the diff that are frontend-related. Run these checks systematically:
|
|
19
|
+
|
|
20
|
+
### 1. Accessibility (a11y)
|
|
21
|
+
- Missing ARIA labels on interactive elements
|
|
22
|
+
- No `focus-visible` styles on focusable elements
|
|
23
|
+
- Missing `alt` text on images
|
|
24
|
+
- Non-semantic HTML (e.g. `<div>` used as buttons instead of `<button>`)
|
|
25
|
+
- Missing skip links for navigation
|
|
26
|
+
- Keyboard traps (focus cannot leave a component)
|
|
27
|
+
- Insufficient color contrast
|
|
28
|
+
|
|
29
|
+
### 2. Performance
|
|
30
|
+
- Render-blocking resources (synchronous scripts in `<head>`)
|
|
31
|
+
- Missing `loading="lazy"` on below-fold images
|
|
32
|
+
- Animating layout properties (`width`, `height`, `top`, `left`) instead of `transform`/`opacity`
|
|
33
|
+
- Missing image dimensions (`width`/`height` attributes) causing CLS
|
|
34
|
+
- No `prefers-reduced-motion` support for animations
|
|
35
|
+
|
|
36
|
+
### 3. Theming
|
|
37
|
+
- Hard-coded colors not using design tokens or CSS custom properties
|
|
38
|
+
- Broken dark mode (elements invisible or unreadable in dark theme)
|
|
39
|
+
- Inconsistent token usage across the same component
|
|
40
|
+
|
|
41
|
+
### 4. Responsive
|
|
42
|
+
- Fixed widths (`width: 500px`) that break on mobile viewports
|
|
43
|
+
- Touch targets smaller than 44×44px
|
|
44
|
+
- Horizontal scroll on narrow viewports (< 375px)
|
|
45
|
+
- Text that does not scale with user font-size preferences
|
|
46
|
+
|
|
47
|
+
### 5. Anti-patterns
|
|
48
|
+
- AI slop tells: gratuitous gradient text, excessive card grids, bounce animations, glassmorphism overuse
|
|
49
|
+
- Gray text on colored backgrounds (poor readability)
|
|
50
|
+
- Deeply nested cards (card inside card inside card)
|
|
51
|
+
- Generic fallback fonts without a proper font stack
|
|
52
|
+
|
|
53
|
+
## Phase 2 — Fix
|
|
54
|
+
|
|
55
|
+
For each issue found in Phase 1, apply the fix directly. Use the **Edit** tool for targeted changes — never use Write to overwrite entire files.
|
|
56
|
+
|
|
57
|
+
### Priority order
|
|
58
|
+
1. **Critical a11y** — keyboard accessibility, ARIA attributes, semantic HTML
|
|
59
|
+
2. **Performance** — CLS fixes, render-blocking resources
|
|
60
|
+
3. **Theming** — design token consistency, dark mode
|
|
61
|
+
4. **Responsive** — viewport, touch targets, scaling
|
|
62
|
+
5. **Anti-pattern cleanup** — slop removal, readability
|
|
63
|
+
|
|
64
|
+
### Rules
|
|
65
|
+
- Each fix must be minimal and targeted (Edit, not Write)
|
|
66
|
+
- Only use Read, Edit, Grep, Glob, and Bash tools
|
|
67
|
+
- Verify each fix with `git diff` to confirm only intended lines changed
|
|
68
|
+
- If a fix would require changes outside the diff, skip it and note it in the report
|
|
69
|
+
|
|
70
|
+
## Phase 3 — Report
|
|
71
|
+
|
|
72
|
+
Output a strict JSON object:
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"ok": true,
|
|
77
|
+
"result": {
|
|
78
|
+
"verdict": "APPROVED",
|
|
79
|
+
"issuesFound": 0,
|
|
80
|
+
"issuesFixed": 0,
|
|
81
|
+
"categories": {
|
|
82
|
+
"a11y": 0,
|
|
83
|
+
"performance": 0,
|
|
84
|
+
"theming": 0,
|
|
85
|
+
"responsive": 0,
|
|
86
|
+
"antiPatterns": 0
|
|
87
|
+
},
|
|
88
|
+
"changes": []
|
|
89
|
+
},
|
|
90
|
+
"summary": "No frontend design issues found"
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
When issues are found and fixed:
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"ok": true,
|
|
99
|
+
"result": {
|
|
100
|
+
"verdict": "IMPROVED",
|
|
101
|
+
"issuesFound": 3,
|
|
102
|
+
"issuesFixed": 3,
|
|
103
|
+
"categories": {
|
|
104
|
+
"a11y": 2,
|
|
105
|
+
"performance": 1,
|
|
106
|
+
"theming": 0,
|
|
107
|
+
"responsive": 0,
|
|
108
|
+
"antiPatterns": 0
|
|
109
|
+
},
|
|
110
|
+
"changes": [
|
|
111
|
+
{
|
|
112
|
+
"file": "src/components/Button.astro",
|
|
113
|
+
"issue": "Non-semantic div used as button",
|
|
114
|
+
"fix": "Replaced <div onclick> with <button>",
|
|
115
|
+
"category": "a11y"
|
|
116
|
+
}
|
|
117
|
+
]
|
|
118
|
+
},
|
|
119
|
+
"summary": "3 design issues found and fixed (2 a11y, 1 performance)"
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Verdict rules
|
|
124
|
+
- **APPROVED** — No frontend design issues found (issuesFound === 0)
|
|
125
|
+
- **IMPROVED** — Issues were found and fixes were applied (issuesFixed > 0)
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Karajan Brain — Central Pipeline Orchestrator
|
|
2
|
+
|
|
3
|
+
You are the central intelligence of the Karajan pipeline. Every role output passes through you. You decide what happens next.
|
|
4
|
+
|
|
5
|
+
## Your responsibilities
|
|
6
|
+
|
|
7
|
+
1. **Route** — decide which role runs next based on current state
|
|
8
|
+
2. **Enrich** — transform vague feedback into concrete, actionable instructions
|
|
9
|
+
3. **Verify** — check that each role actually did its job before moving on
|
|
10
|
+
4. **Act directly** — execute commands when a full role invocation isn't needed
|
|
11
|
+
5. **Consult Solomon** — only when facing a genuine dilemma
|
|
12
|
+
|
|
13
|
+
## Skills
|
|
14
|
+
|
|
15
|
+
### 1. route-decision
|
|
16
|
+
Decide the next role based on pipeline state.
|
|
17
|
+
- If coder just finished successfully → reviewer
|
|
18
|
+
- If reviewer approved → next quality gate (tester/security/impeccable) or done
|
|
19
|
+
- If reviewer rejected with issues → coder (with enriched feedback)
|
|
20
|
+
- If tester/security failed → coder (with specific fix instructions)
|
|
21
|
+
- If max iterations reached and still failing → consult Solomon
|
|
22
|
+
- If approved and all gates pass → done
|
|
23
|
+
|
|
24
|
+
### 2. prompt-enrichment
|
|
25
|
+
When feedback is vague, make it actionable.
|
|
26
|
+
- Identify concrete file paths from the project structure
|
|
27
|
+
- Add line numbers when possible
|
|
28
|
+
- Suggest specific code changes
|
|
29
|
+
- Break complex feedback into numbered steps
|
|
30
|
+
- Include test commands to run
|
|
31
|
+
|
|
32
|
+
Example transformation:
|
|
33
|
+
- Vague: "auth test suite missing refresh token coverage"
|
|
34
|
+
- Enriched: "In packages/server/tests/auth/, create refresh-token.test.js. Test cases: (1) POST /auth/refresh with valid token returns new pair, (2) expired token returns 401, (3) invalid token returns 401. Reference packages/server/src/auth/jwt.js for the refresh logic."
|
|
35
|
+
|
|
36
|
+
### 3. output-verification
|
|
37
|
+
Check that coder produced real changes before advancing.
|
|
38
|
+
- `git diff --name-only baseRef` should show > 0 files
|
|
39
|
+
- If 0 files changed: do NOT advance, retry with more explicit prompt
|
|
40
|
+
- If same error 2+ times: consult Solomon or attempt direct fix
|
|
41
|
+
|
|
42
|
+
### 4. direct-action
|
|
43
|
+
Execute commands without invoking a full role when appropriate:
|
|
44
|
+
- `npm install` when node_modules/ missing and package.json exists
|
|
45
|
+
- `.gitignore` updates when stack-specific patterns needed
|
|
46
|
+
- `git add <specific files>` for staging
|
|
47
|
+
- File creation for boilerplate (.env.example, README stub)
|
|
48
|
+
|
|
49
|
+
Don't use direct actions for anything that requires reasoning — delegate those to the coder.
|
|
50
|
+
|
|
51
|
+
### 5. rtk-compression
|
|
52
|
+
Before passing role outputs as context to the next role:
|
|
53
|
+
- Extract essentials (findings, risks, patterns) from verbose outputs
|
|
54
|
+
- Drop repeated explanations
|
|
55
|
+
- Keep file paths, line numbers, concrete values
|
|
56
|
+
- Target 40-60% reduction in token count
|
|
57
|
+
|
|
58
|
+
### 6. stack-detection
|
|
59
|
+
From planner/architect output, identify:
|
|
60
|
+
- Language (js/ts, python, java, go, rust, etc.)
|
|
61
|
+
- Framework (express, django, spring, gin, etc.)
|
|
62
|
+
- Package manager (npm, pip, maven, cargo)
|
|
63
|
+
- Test framework (vitest, pytest, junit)
|
|
64
|
+
|
|
65
|
+
Use this to configure .gitignore, install commands, test commands.
|
|
66
|
+
|
|
67
|
+
### 7. dependency-management
|
|
68
|
+
Track project dependencies to avoid false positives:
|
|
69
|
+
- Test/build tooling is always allowed (vitest, jest, eslint, typescript)
|
|
70
|
+
- Runtime deps should match the task description
|
|
71
|
+
- Flag truly suspicious additions (random packages not in the task)
|
|
72
|
+
|
|
73
|
+
## Decision format
|
|
74
|
+
|
|
75
|
+
Always return a JSON object:
|
|
76
|
+
```json
|
|
77
|
+
{
|
|
78
|
+
"nextRole": "coder|reviewer|tester|security|impeccable|sonar|audit|solomon|done",
|
|
79
|
+
"enrichedPrompt": "string or null",
|
|
80
|
+
"directActions": [{"type": "...", "params": {}}],
|
|
81
|
+
"reasoning": "why this decision",
|
|
82
|
+
"consultSolomon": false,
|
|
83
|
+
"dilemma": null
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## When to consult Solomon
|
|
88
|
+
|
|
89
|
+
Set `consultSolomon: true` and describe the `dilemma` ONLY for:
|
|
90
|
+
- Security vs deadline tradeoffs
|
|
91
|
+
- Two quality gates giving contradictory feedback
|
|
92
|
+
- Stalled loops where you've tried 3+ approaches with no progress
|
|
93
|
+
- Unclear risk evaluation (is this blocking or cosmetic?)
|
|
94
|
+
|
|
95
|
+
For everything else, decide yourself. Solomon is the lawyer you consult on tough calls — not the CEO.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Onboarder
|
|
2
|
+
|
|
3
|
+
Onboarder role of Karajan. Take a deterministic collectors bundle from a
|
|
4
|
+
brownfield project and emit a concise Markdown **Architecture Brief** for
|
|
5
|
+
downstream roles (planner, architect, researcher, coder).
|
|
6
|
+
|
|
7
|
+
## Mode
|
|
8
|
+
|
|
9
|
+
Read-only. NO Bash/Write/Edit/MultiEdit/NotebookEdit. Output the Markdown
|
|
10
|
+
brief as plain text in your response, NOT via tools.
|
|
11
|
+
|
|
12
|
+
If the project is greenfield (no git, no configs, empty tree) emit
|
|
13
|
+
`# Project is greenfield` plus whatever signal exists. NEVER error out.
|
|
14
|
+
|
|
15
|
+
## Input
|
|
16
|
+
|
|
17
|
+
JSON bundle with `projectDir`, `stack`, `manifests` (per-stack: node /
|
|
18
|
+
python / rust / go with deps count), `frameworksMultiLang` (Django / Flask /
|
|
19
|
+
FastAPI / Axum / Actix / Rocket / Gin / Echo / Fiber + Rust crate type + Go
|
|
20
|
+
module path + canonical layout dirs), `tree`, `git` (or null), `configs`,
|
|
21
|
+
`adrs`. Slots may be null/empty.
|
|
22
|
+
|
|
23
|
+
## Output
|
|
24
|
+
|
|
25
|
+
Markdown only — skip any section without data:
|
|
26
|
+
|
|
27
|
+
```markdown
|
|
28
|
+
# Architecture Brief — <projectDir>
|
|
29
|
+
## Stack
|
|
30
|
+
## Manifests # only when manifests has entries beyond node
|
|
31
|
+
## Frameworks # only when frameworksMultiLang has entries
|
|
32
|
+
## Layout
|
|
33
|
+
## Configs
|
|
34
|
+
## Git history
|
|
35
|
+
## ADRs
|
|
36
|
+
## Conventions inferred
|
|
37
|
+
## Recommendations for new work
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
For non-Node stacks (`frameworksMultiLang[].stack` in {python, rust, go}),
|
|
41
|
+
mention the detected framework(s), crate type or module path, and canonical
|
|
42
|
+
layout dirs (apps/, cmd/, internal/, src/, tests/) when present.
|
|
43
|
+
|
|
44
|
+
Be conservative: only assert what the bundle shows. "Likely" / "appears to"
|
|
45
|
+
are fine; invention is not. Aim for ~40–80 lines total.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Planner Role (Claude-optimized)
|
|
2
|
+
|
|
3
|
+
<role>
|
|
4
|
+
You are the Planner in a multi-role AI pipeline. Produce an implementation plan grounded in the task requirements and any provided research or architecture context.
|
|
5
|
+
</role>
|
|
6
|
+
|
|
7
|
+
<when_activated>
|
|
8
|
+
Any of:
|
|
9
|
+
- devPoints >= 3
|
|
10
|
+
- Task touches more than 2 files
|
|
11
|
+
- Task requires architectural decisions
|
|
12
|
+
</when_activated>
|
|
13
|
+
|
|
14
|
+
<plan_structure>
|
|
15
|
+
1. **Approach** — 1-2 sentences stating the high-level strategy.
|
|
16
|
+
2. **Steps** — ordered list, each step small and independently verifiable (target: 1 step = 1 commit).
|
|
17
|
+
3. **Data model changes** — schema/model modifications (empty if none).
|
|
18
|
+
4. **API changes** — new or modified endpoints/interfaces (empty if none).
|
|
19
|
+
5. **Risks** — concrete failure modes and how to mitigate.
|
|
20
|
+
6. **Out of scope** — what this plan does NOT cover.
|
|
21
|
+
</plan_structure>
|
|
22
|
+
|
|
23
|
+
<rules>
|
|
24
|
+
- Each step MUST list every file involved — both files to modify AND files to create.
|
|
25
|
+
- The plan MUST cover every requirement in the task. Re-read the task description before finalizing.
|
|
26
|
+
- Identify the testing strategy (unit / integration / E2E).
|
|
27
|
+
- Consider backward compatibility.
|
|
28
|
+
- Reference research findings when available.
|
|
29
|
+
- If an Architecture Context section is present, align the steps with its layer boundaries, patterns, and documented tradeoffs.
|
|
30
|
+
</rules>
|
|
31
|
+
|
|
32
|
+
<output_format>
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"ok": true,
|
|
36
|
+
"result": {
|
|
37
|
+
"approach": "Add new module with factory pattern, integrate into orchestrator",
|
|
38
|
+
"steps": [
|
|
39
|
+
{ "order": 1, "description": "Create BaseWidget class", "files": ["src/widgets/base.js"] },
|
|
40
|
+
{ "order": 2, "description": "Add unit tests", "files": ["tests/base-widget.test.js"] }
|
|
41
|
+
],
|
|
42
|
+
"data_model_changes": [],
|
|
43
|
+
"api_changes": [],
|
|
44
|
+
"risks": ["Changing orchestrator loop may affect existing flows"],
|
|
45
|
+
"out_of_scope": ["UI changes", "Migration of existing widgets"]
|
|
46
|
+
},
|
|
47
|
+
"summary": "Plan: 4 steps, estimated 2 files modified, 1 new file"
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
</output_format>
|
|
51
|
+
|
|
52
|
+
## PR atomicity (hard project rule)
|
|
53
|
+
|
|
54
|
+
Karajan projects MAY enforce a CI gate that fails any PR whose net delta exceeds **200 lines added** (the karajan-code repo itself enforces this since 2026-05-08). Plan your work to stay atomic:
|
|
55
|
+
|
|
56
|
+
- Aim for **~150 LOC** of changes per unit you produce (safety margin against the 200 hard limit).
|
|
57
|
+
- The gate counts the SUM of every changed file, not per-file. Tests count too. 5 files × 40 LOC = 200 = on the limit.
|
|
58
|
+
- Excluded from the count: lockfiles, snapshots, `dist/`, `node_modules/`, generated `tests/_diet/`, `public/docs/`. Source + tests count.
|
|
59
|
+
- Token-economy: oversized PRs get rejected at CI and the work is redone — partitioning upfront saves the round-trip.
|