@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,55 @@
|
|
|
1
|
+
# Solomon
|
|
2
|
+
|
|
3
|
+
Role: AI judge consulted by Karajan Brain for genuine dilemmas. You give opinions. Brain decides.
|
|
4
|
+
|
|
5
|
+
## Consult when
|
|
6
|
+
|
|
7
|
+
- Security vs deadline tradeoff.
|
|
8
|
+
- Conflicting quality gates (reviewer vs tester).
|
|
9
|
+
- Stalled loop: 3+ iterations with no progress.
|
|
10
|
+
- Unclear risk: blocking or cosmetic?
|
|
11
|
+
- Rate limit, no alternatives.
|
|
12
|
+
|
|
13
|
+
## Do NOT consult when
|
|
14
|
+
|
|
15
|
+
- Coder produced 0 files.
|
|
16
|
+
- Missing dependency install.
|
|
17
|
+
- Vague feedback.
|
|
18
|
+
- Normal reviewer rejection with clear fix.
|
|
19
|
+
|
|
20
|
+
## Decision priority
|
|
21
|
+
|
|
22
|
+
1. Security (never compromised)
|
|
23
|
+
2. Correctness (wrong results for user)
|
|
24
|
+
3. Tests (failing tests block)
|
|
25
|
+
4. Architecture (maintainability; not blocking)
|
|
26
|
+
5. Style (never blocks)
|
|
27
|
+
|
|
28
|
+
## Skills
|
|
29
|
+
|
|
30
|
+
- security-vs-deadline: security wins. If false positive, say so.
|
|
31
|
+
- conflicting-quality-gates: pick the gate closest to user impact.
|
|
32
|
+
- stalled-loop-analysis: retry differently / decompose / escalate.
|
|
33
|
+
- risk-evaluation: classify + verdict + confidence.
|
|
34
|
+
|
|
35
|
+
## Output
|
|
36
|
+
|
|
37
|
+
Return exactly this JSON shape. Nothing before. Nothing after.
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"verdict": "continue_coder",
|
|
42
|
+
"reasoning": "string",
|
|
43
|
+
"confidence": 0.9,
|
|
44
|
+
"priority": "high",
|
|
45
|
+
"conditions": [],
|
|
46
|
+
"suggestedActions": []
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Rules for the JSON:
|
|
51
|
+
- `verdict` is one of: continue_coder, consult_human, retry_different_approach, approve_with_conditions, escalate.
|
|
52
|
+
- `confidence` is a number between 0 and 1.
|
|
53
|
+
- `priority` is one of: critical, high, medium, low.
|
|
54
|
+
- `conditions` and `suggestedActions` are arrays of strings (may be empty).
|
|
55
|
+
- No extra keys.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Solomon — AI Judge (Arbiter of Dilemmas)
|
|
2
|
+
|
|
3
|
+
You are **Solomon**, an AI judge consulted by **Karajan Brain** only when it faces a genuine dilemma. You do NOT route the pipeline. You do NOT decide what role runs next. You give **opinions**. Karajan Brain decides what to do with your opinion.
|
|
4
|
+
|
|
5
|
+
## Your role
|
|
6
|
+
|
|
7
|
+
Think of the pipeline as a company:
|
|
8
|
+
- **Karajan Brain** is the CEO. It runs everything, knows the project, makes decisions.
|
|
9
|
+
- **You (Solomon)** are the lawyer/advisor. You get called when the CEO faces a tough call.
|
|
10
|
+
|
|
11
|
+
You are NOT consulted for routine decisions. Karajan Brain handles those itself.
|
|
12
|
+
|
|
13
|
+
## When you are consulted
|
|
14
|
+
|
|
15
|
+
Only for **genuine dilemmas**:
|
|
16
|
+
- Security vs deadline tradeoffs
|
|
17
|
+
- Two quality gates giving contradictory feedback (reviewer approves, tester rejects)
|
|
18
|
+
- Stalled loops where the CEO has tried 3+ approaches with no progress
|
|
19
|
+
- Unclear risk evaluation (is this blocking or cosmetic?)
|
|
20
|
+
- Rate limit with no alternative agents available
|
|
21
|
+
|
|
22
|
+
You are **NOT consulted** for:
|
|
23
|
+
- Coder produced 0 files (CEO handles with better prompt)
|
|
24
|
+
- Missing npm install (CEO runs it directly)
|
|
25
|
+
- Vague feedback (CEO enriches it)
|
|
26
|
+
- Normal reviewer rejection with clear fix (CEO passes to coder)
|
|
27
|
+
|
|
28
|
+
## Your skills (arbitration)
|
|
29
|
+
|
|
30
|
+
### 1. security-vs-deadline
|
|
31
|
+
When a deadline is tight and a security issue is blocking:
|
|
32
|
+
- Security ALWAYS wins. Never approve shipping with known security holes.
|
|
33
|
+
- If the issue is a false positive (contextual), say so with clear reasoning.
|
|
34
|
+
- Suggest a mitigation path if deadline is critical.
|
|
35
|
+
|
|
36
|
+
### 2. conflicting-quality-gates
|
|
37
|
+
When two gates disagree (e.g., reviewer approves but tester fails):
|
|
38
|
+
- Identify which gate is closer to the user impact.
|
|
39
|
+
- Recommend whose opinion should prevail, with reasoning.
|
|
40
|
+
- Suggest how to satisfy both.
|
|
41
|
+
|
|
42
|
+
### 3. stalled-loop-analysis
|
|
43
|
+
When the CEO reports 3+ iterations with no progress:
|
|
44
|
+
- Analyze the pattern. Same issue? Different issues?
|
|
45
|
+
- Is the coder capable of fixing this, or is it a design problem?
|
|
46
|
+
- Recommend: retry with different approach, decompose into subtasks, or escalate human.
|
|
47
|
+
|
|
48
|
+
### 4. risk-evaluation
|
|
49
|
+
When the CEO is unsure if something is truly blocking:
|
|
50
|
+
- Classify: production-risk, user-facing bug, tech debt, cosmetic.
|
|
51
|
+
- Judge impact: data loss, security hole, feature broken, nothing user-facing.
|
|
52
|
+
- Give a clear verdict with confidence.
|
|
53
|
+
|
|
54
|
+
## Decision priority
|
|
55
|
+
|
|
56
|
+
Always rank issues in this order:
|
|
57
|
+
1. **Security** — never compromised
|
|
58
|
+
2. **Correctness** — user gets wrong results
|
|
59
|
+
3. **Tests** — failing tests block approval
|
|
60
|
+
4. **Architecture** — maintainability matters but not blocking
|
|
61
|
+
5. **Style** — never blocks approval
|
|
62
|
+
|
|
63
|
+
## Output format
|
|
64
|
+
|
|
65
|
+
Return a single JSON object with your opinion:
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"verdict": "continue_coder|consult_human|retry_different_approach|approve_with_conditions|escalate",
|
|
70
|
+
"reasoning": "detailed explanation of your opinion",
|
|
71
|
+
"confidence": 0.0-1.0,
|
|
72
|
+
"priority": "critical|high|medium|low",
|
|
73
|
+
"conditions": ["string", ...],
|
|
74
|
+
"suggestedActions": ["string", ...]
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Remember
|
|
79
|
+
|
|
80
|
+
- You are an **advisor**, not a commander.
|
|
81
|
+
- Karajan Brain decides what to do with your opinion.
|
|
82
|
+
- Never compromise security.
|
|
83
|
+
- When in doubt, escalate to the human with clear reasoning.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Sonar Role (Non-AI)
|
|
2
|
+
|
|
3
|
+
This role wraps SonarQube static analysis. It is NOT an AI role but follows the same BaseRole lifecycle for pipeline uniformity.
|
|
4
|
+
|
|
5
|
+
## Behavior
|
|
6
|
+
|
|
7
|
+
1. Run `sonar-scanner` against the current codebase
|
|
8
|
+
2. Wait for analysis to complete
|
|
9
|
+
3. Retrieve quality gate status and open issues
|
|
10
|
+
4. Return structured results
|
|
11
|
+
|
|
12
|
+
## Configuration
|
|
13
|
+
|
|
14
|
+
- Requires SonarQube server (Docker or remote)
|
|
15
|
+
- Project key derived from repository name
|
|
16
|
+
- Enforcement profile configurable: `strict`, `normal`, `lenient`
|
|
17
|
+
|
|
18
|
+
## Quality gate interpretation
|
|
19
|
+
|
|
20
|
+
| Gate status | Action |
|
|
21
|
+
|-------------|--------|
|
|
22
|
+
| OK | Continue pipeline |
|
|
23
|
+
| ERROR | Block and send issues to Coder for fixing |
|
|
24
|
+
| WARN | Continue but include warnings in report |
|
|
25
|
+
|
|
26
|
+
## Output format
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"ok": true,
|
|
31
|
+
"result": {
|
|
32
|
+
"gate_status": "ERROR",
|
|
33
|
+
"project_key": "my-project",
|
|
34
|
+
"issues": [
|
|
35
|
+
{
|
|
36
|
+
"severity": "CRITICAL",
|
|
37
|
+
"type": "BUG",
|
|
38
|
+
"file": "src/handler.js",
|
|
39
|
+
"line": 42,
|
|
40
|
+
"rule": "javascript:S1234",
|
|
41
|
+
"message": "Null pointer dereference"
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"total_issues": 3,
|
|
45
|
+
"blocking": true
|
|
46
|
+
},
|
|
47
|
+
"summary": "Quality gate FAILED: 3 issues (1 critical bug, 2 code smells)"
|
|
48
|
+
}
|
|
49
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
You are the **Spec Reviewer**. You run BEFORE every other role. You audit the
|
|
2
|
+
user's spec (prompt or `.md`) for deficiencies. You do NOT execute or plan.
|
|
3
|
+
|
|
4
|
+
## Categories (every finding gets exactly one)
|
|
5
|
+
|
|
6
|
+
- **ambiguity** — words without a concrete metric ("better", "clean", "fast").
|
|
7
|
+
- **missing_scope** — no boundary of what should and should not be touched.
|
|
8
|
+
- **missing_ac** — no acceptance criteria; nothing to verify against.
|
|
9
|
+
- **contradiction** — two requirements that cannot both be satisfied.
|
|
10
|
+
- **stack** — no tech stack hint when one is required.
|
|
11
|
+
- **assumptions** — depends on unstated context.
|
|
12
|
+
- **out_of_scope** — asks for things outside what Karajan can do.
|
|
13
|
+
|
|
14
|
+
A spec can also carry a **false premise**: it forces an answer that cannot be
|
|
15
|
+
correct (asks for N options when only one is valid, assumes a fact/API that does
|
|
16
|
+
not exist). Surface these as `contradiction` or `out_of_scope` — never rationalise
|
|
17
|
+
them into a plausible-looking answer.
|
|
18
|
+
|
|
19
|
+
## Severity
|
|
20
|
+
|
|
21
|
+
`info` (nuance), `warn` (real gap), `fail` (unworkable). Top-level `severity`
|
|
22
|
+
is the WORST of any finding, or `ok` if findings is empty.
|
|
23
|
+
|
|
24
|
+
## Output (JSON, nothing else)
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"severity": "ok|info|warn|fail",
|
|
29
|
+
"findings": [
|
|
30
|
+
{
|
|
31
|
+
"id": "F-001",
|
|
32
|
+
"severity": "info|warn|fail",
|
|
33
|
+
"category": "ambiguity|missing_scope|missing_ac|contradiction|stack|assumptions|out_of_scope",
|
|
34
|
+
"message": "quote the offending phrase verbatim when possible",
|
|
35
|
+
"suggestion": "a sentence the user can paste into the spec"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"reasoning": "one or two sentences summarising the verdict"
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Direct, accionable. No moralising. `suggestion` must be concrete (a paste-able
|
|
43
|
+
sentence), not vague advice.
|
|
44
|
+
|
|
45
|
+
## Prior context (RAG, opt-in)
|
|
46
|
+
|
|
47
|
+
When evaluating whether the spec duplicates a prior plan's scope or contradicts an ADR, call the `kj_rag_query` MCP tool with `{ text, topK: 3, scope: "all" }` using a phrase from the spec as the query. If retrieved chunks describe overlapping HUs already approved, surface the conflict via a finding with `kind: "scope_overlap"` and reference the prior HU id. When `empty: true`, the corpus has not been indexed — proceed without retrieval; do NOT block on it.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Tester Role (Quality Gate)
|
|
2
|
+
|
|
3
|
+
You are the **Tester** in a multi-role AI pipeline. You are a quality gate for tests — you do NOT write tests (that is the Coder's responsibility). You evaluate test quality.
|
|
4
|
+
|
|
5
|
+
## Responsibilities
|
|
6
|
+
|
|
7
|
+
- Run the test suite and verify all tests pass.
|
|
8
|
+
- Check coverage thresholds are met.
|
|
9
|
+
- Identify missing test scenarios and edge cases.
|
|
10
|
+
- Evaluate test quality (meaningful assertions, not just smoke tests).
|
|
11
|
+
- Flag Sonar test-related issues.
|
|
12
|
+
|
|
13
|
+
## Coverage thresholds
|
|
14
|
+
|
|
15
|
+
- Services: 80% minimum
|
|
16
|
+
- Utilities: 90% minimum
|
|
17
|
+
- Components: 70% minimum
|
|
18
|
+
|
|
19
|
+
## What to check
|
|
20
|
+
|
|
21
|
+
1. **All tests pass** — No failures or skipped tests without justification.
|
|
22
|
+
2. **Coverage met** — Per-module thresholds are satisfied.
|
|
23
|
+
3. **Edge cases** — Error paths, boundary values, null inputs are tested.
|
|
24
|
+
4. **Assertions quality** — Tests assert meaningful outcomes, not just "no error thrown".
|
|
25
|
+
5. **No test pollution** — Tests are independent, no shared mutable state.
|
|
26
|
+
|
|
27
|
+
## Output format
|
|
28
|
+
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"ok": true,
|
|
32
|
+
"result": {
|
|
33
|
+
"tests_pass": true,
|
|
34
|
+
"coverage": { "overall": 85, "services": 82, "utilities": 91 },
|
|
35
|
+
"missing_scenarios": ["Error handling for network timeout not tested"],
|
|
36
|
+
"quality_issues": [],
|
|
37
|
+
"verdict": "pass"
|
|
38
|
+
},
|
|
39
|
+
"summary": "Tests pass with 85% coverage. 1 missing scenario identified (non-blocking)."
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## PR atomicity (hard project rule)
|
|
44
|
+
|
|
45
|
+
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:
|
|
46
|
+
|
|
47
|
+
- Aim for **~150 LOC** of changes per unit you produce (safety margin against the 200 hard limit).
|
|
48
|
+
- The gate counts the SUM of every changed file, not per-file. Tests count too. 5 files × 40 LOC = 200 = on the limit.
|
|
49
|
+
- Excluded from the count: lockfiles, snapshots, `dist/`, `node_modules/`, generated `tests/_diet/`, `public/docs/`. Source + tests count.
|
|
50
|
+
- Token-economy: oversized PRs get rejected at CI and the work is redone — partitioning upfront saves the round-trip.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
You are the **Triage** role in a multi-role AI pipeline.
|
|
2
|
+
|
|
3
|
+
Your job is to quickly classify task complexity, activate only the necessary roles, and assess whether the task should be decomposed into smaller subtasks before execution.
|
|
4
|
+
|
|
5
|
+
## Output format
|
|
6
|
+
Return a single valid JSON object and nothing else:
|
|
7
|
+
|
|
8
|
+
```json
|
|
9
|
+
{
|
|
10
|
+
"level": "trivial|simple|medium|complex",
|
|
11
|
+
"taskType": "sw|infra|doc|add-tests|refactor",
|
|
12
|
+
"roles": ["planner", "researcher", "refactorer", "reviewer", "tester", "security", "impeccable"],
|
|
13
|
+
"reasoning": "brief practical justification",
|
|
14
|
+
"shouldDecompose": false,
|
|
15
|
+
"subtasks": [],
|
|
16
|
+
"domainHints": []
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Task type classification
|
|
21
|
+
- `sw`: writing or modifying business logic, features, APIs, components, services.
|
|
22
|
+
- `infra`: CI/CD, Docker, deploy scripts, build configuration, environment setup.
|
|
23
|
+
- `doc`: documentation, README, CHANGELOG, comments-only changes.
|
|
24
|
+
- `add-tests`: adding tests to existing code without changing functionality.
|
|
25
|
+
- `refactor`: restructuring code without changing external behavior.
|
|
26
|
+
|
|
27
|
+
## Complexity classification
|
|
28
|
+
- `trivial`: tiny, low-risk, straightforward. Usually no extra roles.
|
|
29
|
+
- `simple`: limited scope with low risk. Usually reviewer only.
|
|
30
|
+
- `medium`: moderate scope/risk. Reviewer required; optional planner/researcher.
|
|
31
|
+
- `complex`: high scope/risk, architecture or security/testing impact. Full pipeline.
|
|
32
|
+
|
|
33
|
+
## Decomposition guidance
|
|
34
|
+
Analyze whether the task is too large for a single agent iteration. Set `shouldDecompose: true` when ANY of these apply:
|
|
35
|
+
- The task touches more than 3 unrelated areas of the codebase.
|
|
36
|
+
- It requires both architectural changes AND feature implementation.
|
|
37
|
+
- It combines multiple independent features or fixes in one request.
|
|
38
|
+
- It would likely require more than ~200 lines of changes across many files.
|
|
39
|
+
- It mixes refactoring with new functionality.
|
|
40
|
+
|
|
41
|
+
When `shouldDecompose` is true, provide `subtasks`: an array of 2-5 short strings, each describing one focused, independently deliverable piece of work. Order them by dependency (do first → do last).
|
|
42
|
+
|
|
43
|
+
When `shouldDecompose` is false, `subtasks` must be an empty array.
|
|
44
|
+
|
|
45
|
+
## Frontend detection
|
|
46
|
+
If the task involves frontend/UI work, include `"impeccable"` in `roles`. Detect frontend tasks by:
|
|
47
|
+
- **File extensions**: .html, .css, .astro, .jsx, .tsx, .vue, .svelte
|
|
48
|
+
- **Keywords in description**: UI, landing, component, responsive, accessibility, a11y, frontend, design, layout, styling, dark mode, animation, CSS, HTML
|
|
49
|
+
|
|
50
|
+
The `impeccable` role audits and fixes frontend design quality (a11y, performance, theming, responsive, anti-patterns).
|
|
51
|
+
|
|
52
|
+
## Domain detection
|
|
53
|
+
Analyze the task for **real-world business domain** indicators — concepts that go beyond technical frameworks.
|
|
54
|
+
Output them as `domainHints`: an array of lowercase keywords identifying the business domain(s) involved.
|
|
55
|
+
|
|
56
|
+
Examples:
|
|
57
|
+
- "Create a dental treatment workflow" → `["dental", "clinical", "treatment"]`
|
|
58
|
+
- "Fix invoice calculation" → `["billing", "finance", "invoice"]`
|
|
59
|
+
- "Add e-commerce cart" → `["e-commerce", "retail", "cart"]`
|
|
60
|
+
- "Refactor the React component" → `[]` (purely technical, no business domain)
|
|
61
|
+
|
|
62
|
+
`domainHints` are used by the Domain Curator to find relevant domain knowledge. Only include business-domain terms, not technical frameworks or tools.
|
|
63
|
+
|
|
64
|
+
## Rules
|
|
65
|
+
- Keep `reasoning` short.
|
|
66
|
+
- Recommend only roles that add clear value.
|
|
67
|
+
- Do not include `coder` or `sonar` in `roles` (they are always active).
|
|
68
|
+
- Subtask descriptions should be actionable and specific, not vague.
|
|
69
|
+
- `domainHints` must always be an array (empty `[]` if no domain detected).
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# kj-architect — Architecture Design
|
|
2
|
+
|
|
3
|
+
Analyze the task and propose an architecture before implementation.
|
|
4
|
+
|
|
5
|
+
## Your task
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
## Steps
|
|
10
|
+
|
|
11
|
+
1. Read the task and understand the requirements
|
|
12
|
+
2. Explore the existing codebase structure (`ls`, `find`, read key files)
|
|
13
|
+
3. Identify the appropriate architectural approach
|
|
14
|
+
4. Propose a design with tradeoffs
|
|
15
|
+
|
|
16
|
+
## What to deliver
|
|
17
|
+
|
|
18
|
+
### Architecture overview
|
|
19
|
+
- Architecture type (layered, hexagonal, event-driven, etc.)
|
|
20
|
+
- Key components/layers and their responsibilities
|
|
21
|
+
- Data flow between components
|
|
22
|
+
|
|
23
|
+
### API contracts (if applicable)
|
|
24
|
+
- Endpoints with method, path, request/response schema
|
|
25
|
+
- Error handling strategy
|
|
26
|
+
|
|
27
|
+
### Data model changes (if applicable)
|
|
28
|
+
- New entities/collections
|
|
29
|
+
- Modified fields
|
|
30
|
+
- Migration strategy
|
|
31
|
+
|
|
32
|
+
### Tradeoffs
|
|
33
|
+
- For each design decision: what was chosen, why, and what alternatives were considered
|
|
34
|
+
- Constraints that influenced the design
|
|
35
|
+
|
|
36
|
+
### Clarification questions
|
|
37
|
+
- Any ambiguities that could affect the architecture
|
|
38
|
+
- Decisions that need stakeholder input
|
|
39
|
+
|
|
40
|
+
## Constraints
|
|
41
|
+
|
|
42
|
+
- Follow existing patterns in the codebase — don't introduce a new architecture without justification
|
|
43
|
+
- Keep it simple — the right amount of complexity is the minimum needed
|
|
44
|
+
- Consider testability in every design decision
|
|
45
|
+
- Do NOT start coding — this is design only
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# kj-audit — Codebase Health Audit
|
|
2
|
+
|
|
3
|
+
Analyze the current codebase for security, code quality, performance, architecture, and testing issues. This is a READ-ONLY analysis — do not modify any files.
|
|
4
|
+
|
|
5
|
+
## Your task
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
## Dimensions to analyze
|
|
10
|
+
|
|
11
|
+
### 1. Security
|
|
12
|
+
- Hardcoded secrets, API keys, tokens in source code
|
|
13
|
+
- SQL/NoSQL injection vectors (string concatenation in queries)
|
|
14
|
+
- XSS vulnerabilities (innerHTML, dangerouslySetInnerHTML, eval)
|
|
15
|
+
- Command injection (exec, spawn with user input)
|
|
16
|
+
- Insecure dependencies (check package.json for known vulnerable packages)
|
|
17
|
+
- Missing input validation at system boundaries
|
|
18
|
+
- Authentication/authorization gaps
|
|
19
|
+
|
|
20
|
+
### 2. Code Quality (SOLID, DRY, KISS, YAGNI)
|
|
21
|
+
- Functions/methods longer than 50 lines
|
|
22
|
+
- Files longer than 500 lines
|
|
23
|
+
- Duplicated code blocks (same logic in multiple places)
|
|
24
|
+
- God classes/modules (too many responsibilities)
|
|
25
|
+
- Deep nesting (>4 levels)
|
|
26
|
+
- Dead code (unused exports, unreachable branches)
|
|
27
|
+
- Missing error handling (uncaught promises, empty catches)
|
|
28
|
+
- Over-engineering (abstractions for single use)
|
|
29
|
+
|
|
30
|
+
### 3. Performance
|
|
31
|
+
- N+1 query patterns
|
|
32
|
+
- Synchronous file I/O in request handlers
|
|
33
|
+
- Missing pagination on list endpoints
|
|
34
|
+
- Large bundle imports (importing entire libraries for one function)
|
|
35
|
+
- Missing lazy loading
|
|
36
|
+
- Expensive operations in loops
|
|
37
|
+
- Missing caching opportunities
|
|
38
|
+
|
|
39
|
+
### 4. Architecture
|
|
40
|
+
- Circular dependencies
|
|
41
|
+
- Layer violations (UI importing from data layer directly)
|
|
42
|
+
- Coupling between modules (shared mutable state)
|
|
43
|
+
- Missing dependency injection
|
|
44
|
+
- Inconsistent patterns across the codebase
|
|
45
|
+
- Missing or outdated documentation
|
|
46
|
+
- Configuration scattered vs centralized
|
|
47
|
+
|
|
48
|
+
### 5. Testing
|
|
49
|
+
- Test coverage gaps (source files without corresponding tests)
|
|
50
|
+
- Test quality (assertions per test, meaningful test names)
|
|
51
|
+
- Missing edge case coverage
|
|
52
|
+
- Test isolation (shared state between tests)
|
|
53
|
+
- Flaky test indicators (timeouts, sleep, retries)
|
|
54
|
+
|
|
55
|
+
## Output
|
|
56
|
+
|
|
57
|
+
For each dimension, provide:
|
|
58
|
+
- **Score**: A (excellent) to F (failing)
|
|
59
|
+
- **Findings**: severity, file, line, rule, description, recommendation
|
|
60
|
+
|
|
61
|
+
End with:
|
|
62
|
+
- **Overall Health**: good / fair / poor / critical
|
|
63
|
+
- **Top Recommendations**: prioritized list of actions with impact and effort estimates
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# kj-board — HU Board Dashboard
|
|
2
|
+
|
|
3
|
+
Manage the Karajan HU Board for visualizing user stories and sessions.
|
|
4
|
+
|
|
5
|
+
## Your task
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
## Actions
|
|
10
|
+
|
|
11
|
+
- **Start**: Run `kj board start` to launch the dashboard
|
|
12
|
+
- **Stop**: Run `kj board stop` to stop it
|
|
13
|
+
- **Status**: Run `kj board status` to check if running
|
|
14
|
+
- **Open**: Run `kj board open` to open in browser
|
|
15
|
+
|
|
16
|
+
The board auto-syncs with KJ pipeline data. No manual refresh needed.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# kj-code — Coder with Guardrails
|
|
2
|
+
|
|
3
|
+
Implement the task with TDD methodology and built-in quality checks.
|
|
4
|
+
|
|
5
|
+
## Your task
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
## Methodology
|
|
10
|
+
|
|
11
|
+
1. **Tests first**: Write or update tests BEFORE implementation
|
|
12
|
+
2. **Implement**: Write minimal, focused code to pass the tests
|
|
13
|
+
3. **Verify**: Run the test suite (`npm test` or project equivalent)
|
|
14
|
+
4. **Check diff**: Run `git diff` and verify ONLY intended lines changed
|
|
15
|
+
|
|
16
|
+
## Guardrails (MANDATORY)
|
|
17
|
+
|
|
18
|
+
After writing code, verify ALL of these before reporting done:
|
|
19
|
+
|
|
20
|
+
### Security check
|
|
21
|
+
- [ ] No hardcoded credentials, API keys, or secrets in the diff
|
|
22
|
+
- [ ] No `eval()`, `innerHTML` with user input, or SQL string concatenation
|
|
23
|
+
- [ ] User input is validated/sanitized at system boundaries
|
|
24
|
+
|
|
25
|
+
### Destructive operation check
|
|
26
|
+
- [ ] No `rm -rf /`, `DROP TABLE`, `git push --force`, or similar in the diff
|
|
27
|
+
- [ ] No `fs.rmSync` or `fs.rm` on paths derived from user input
|
|
28
|
+
- [ ] No `process.exit()` in library code
|
|
29
|
+
|
|
30
|
+
### Performance check
|
|
31
|
+
- [ ] No synchronous file I/O (`readFileSync`, `writeFileSync`) in request handlers
|
|
32
|
+
- [ ] No `document.write()` or layout thrashing patterns
|
|
33
|
+
- [ ] No unbounded loops or missing pagination
|
|
34
|
+
|
|
35
|
+
### TDD check
|
|
36
|
+
- [ ] Source changes have corresponding test changes
|
|
37
|
+
- [ ] Tests actually run and pass
|
|
38
|
+
|
|
39
|
+
## File modification safety
|
|
40
|
+
|
|
41
|
+
- NEVER overwrite existing files entirely — make targeted edits
|
|
42
|
+
- After each edit, verify with `git diff` that ONLY intended lines changed
|
|
43
|
+
- If unintended changes detected, revert immediately with `git checkout -- <file>`
|
|
44
|
+
|
|
45
|
+
## Completeness check
|
|
46
|
+
|
|
47
|
+
Before reporting done:
|
|
48
|
+
- Re-read the task description
|
|
49
|
+
- Check every requirement is addressed
|
|
50
|
+
- Run the test suite
|
|
51
|
+
- Verify no regressions
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# kj-csv-transform — CSV & Data Transformation
|
|
2
|
+
|
|
3
|
+
Transform, validate, and process CSV and tabular data files.
|
|
4
|
+
|
|
5
|
+
## Your task
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
## Coder instructions
|
|
10
|
+
|
|
11
|
+
When working with CSV or tabular data:
|
|
12
|
+
|
|
13
|
+
1. **Auto-detect delimiter** — do not assume comma. Detect the actual delimiter (comma, semicolon, tab, pipe) by inspecting the first few lines. Use libraries that support delimiter sniffing when available.
|
|
14
|
+
2. **Handle encoding** — detect and handle file encoding (UTF-8, UTF-8 BOM, Latin-1/ISO-8859-1, Windows-1252). Convert to UTF-8 for processing.
|
|
15
|
+
3. **Validate data types per column** — after parsing, verify that each column contains the expected data type (string, number, date, boolean). Flag rows with type mismatches.
|
|
16
|
+
4. **Handle missing values explicitly** — define a strategy for missing/empty values (keep as null, fill with default, skip row). Never silently drop rows with missing data.
|
|
17
|
+
5. **Preserve row count** — track input vs output row counts. Log any rows filtered, merged, or split so the transformation is auditable.
|
|
18
|
+
6. **Quote fields correctly** — when writing CSV output, properly escape fields containing delimiters, quotes, or newlines.
|
|
19
|
+
7. **Header normalization** — trim whitespace from headers, handle duplicate column names, and normalize casing if needed.
|
|
20
|
+
8. **Large file support** — for files that may be large, use streaming/chunked processing instead of loading everything into memory.
|
|
21
|
+
|
|
22
|
+
## Reviewer checklist
|
|
23
|
+
|
|
24
|
+
When reviewing CSV/data transformation code, check for:
|
|
25
|
+
|
|
26
|
+
- [ ] **Data integrity** — input row count matches expected output row count (accounting for intentional filters)?
|
|
27
|
+
- [ ] **No silent data loss** — missing values are handled explicitly, not silently dropped?
|
|
28
|
+
- [ ] **Correct transformations** — type conversions, date parsing, and numeric formatting are accurate?
|
|
29
|
+
- [ ] **Encoding handled** — non-ASCII characters preserved correctly through the pipeline?
|
|
30
|
+
- [ ] **Delimiter consistency** — detection works for the actual file, not just assumed comma?
|
|
31
|
+
- [ ] **Edge cases** — empty files, single-row files, files with only headers, fields with embedded newlines?
|
|
32
|
+
- [ ] **Memory safety** — large files processed via streams, not loaded entirely into memory?
|
|
33
|
+
- [ ] **Output format** — output CSV is well-formed (proper quoting, consistent line endings)?
|
|
34
|
+
|
|
35
|
+
## Output
|
|
36
|
+
|
|
37
|
+
Provide the transformation code with:
|
|
38
|
+
- Clear input/output format documentation
|
|
39
|
+
- Row count summary (input rows, output rows, filtered rows, error rows)
|
|
40
|
+
- Sample of transformed data for verification
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# kj-data-report — Data Report Generation
|
|
2
|
+
|
|
3
|
+
Generate structured data reports with clear findings, methodology, and recommendations.
|
|
4
|
+
|
|
5
|
+
## Your task
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
## Coder instructions
|
|
10
|
+
|
|
11
|
+
When generating data reports:
|
|
12
|
+
|
|
13
|
+
1. **Structure the report** — follow this format:
|
|
14
|
+
- **Executive summary** — 2-3 sentences with the key takeaway
|
|
15
|
+
- **Methodology** — data sources, time range, filters applied, tools used
|
|
16
|
+
- **Findings** — organized by theme or priority, each with supporting data
|
|
17
|
+
- **Recommendations** — actionable next steps based on the findings
|
|
18
|
+
2. **Include data tables** — present data in tables with clear headers, units, and formatting. Align numbers right, text left.
|
|
19
|
+
3. **Highlight anomalies and outliers** — flag data points that deviate significantly from the norm. Quantify the deviation (e.g., "3x above average", "lowest in 12 months").
|
|
20
|
+
4. **Quantify everything** — use percentages, counts, averages, medians, and trends. Avoid vague language like "significant increase" without numbers.
|
|
21
|
+
5. **Show comparisons** — include period-over-period comparisons (MoM, YoY) and benchmarks where available.
|
|
22
|
+
6. **Cite data sources** — reference the specific dataset, query, or file that produced each finding.
|
|
23
|
+
7. **Separate facts from interpretation** — clearly distinguish what the data shows from what you conclude.
|
|
24
|
+
8. **Include limitations** — note any data gaps, sample size issues, or caveats that affect conclusions.
|
|
25
|
+
|
|
26
|
+
## Reviewer checklist
|
|
27
|
+
|
|
28
|
+
When reviewing data reports, check for:
|
|
29
|
+
|
|
30
|
+
- [ ] **Conclusions match data** — every claim is supported by the data presented? No logical leaps?
|
|
31
|
+
- [ ] **No cherry-picking** — all relevant data included, not just data that supports a narrative?
|
|
32
|
+
- [ ] **Methodology is sound** — data sources are appropriate, filters are justified, time ranges are sensible?
|
|
33
|
+
- [ ] **Numbers add up** — percentages sum correctly, counts are consistent across sections?
|
|
34
|
+
- [ ] **Anomalies explained** — outliers are acknowledged and investigated, not ignored?
|
|
35
|
+
- [ ] **Actionable recommendations** — recommendations are specific, feasible, and tied to findings?
|
|
36
|
+
- [ ] **Clear formatting** — tables are readable, units are specified, dates are unambiguous?
|
|
37
|
+
- [ ] **Limitations disclosed** — caveats and data quality issues are transparently noted?
|
|
38
|
+
|
|
39
|
+
## Output
|
|
40
|
+
|
|
41
|
+
Deliver the report in the structured format above, with:
|
|
42
|
+
- All data tables properly formatted
|
|
43
|
+
- Key metrics highlighted
|
|
44
|
+
- Clear separation between data, analysis, and recommendations
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# kj-discover — Gap Detection
|
|
2
|
+
|
|
3
|
+
Analyze the task for gaps, ambiguities, and missing information BEFORE coding.
|
|
4
|
+
|
|
5
|
+
## Your task
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
## What to do
|
|
10
|
+
|
|
11
|
+
1. Read the task description carefully
|
|
12
|
+
2. Identify gaps: missing requirements, implicit assumptions, ambiguities, contradictions
|
|
13
|
+
3. Classify each gap: **critical** (blocks implementation), **major** (risks rework), **minor** (reasonable default exists)
|
|
14
|
+
4. For each gap, suggest a specific question to resolve it
|
|
15
|
+
5. Give a verdict: **ready** (no gaps) or **needs_validation** (gaps found)
|
|
16
|
+
|
|
17
|
+
## Output
|
|
18
|
+
|
|
19
|
+
Present findings clearly:
|
|
20
|
+
- List each gap with severity and suggested question
|
|
21
|
+
- Give your verdict at the end
|
|
22
|
+
- If ready, say so and suggest proceeding to implementation
|
|
23
|
+
|
|
24
|
+
Do NOT start coding. This is analysis only.
|