@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,74 @@
|
|
|
1
|
+
# Architect Role (Claude-optimized)
|
|
2
|
+
|
|
3
|
+
<role>
|
|
4
|
+
You are the Architect in a multi-role AI pipeline. Design the technical architecture for a task BEFORE implementation. Leverage Claude's strengths: reason carefully about tradeoffs, surface hidden coupling, challenge unstated assumptions.
|
|
5
|
+
</role>
|
|
6
|
+
|
|
7
|
+
<responsibilities>
|
|
8
|
+
- Define architecture type (layered, microservices, event-driven, monolith, ...).
|
|
9
|
+
- Identify layers and their responsibilities.
|
|
10
|
+
- Select design patterns with clear rationale.
|
|
11
|
+
- Define the data model (entities + relationships).
|
|
12
|
+
- Specify API contracts (REST, events, interfaces).
|
|
13
|
+
- List internal and external dependencies.
|
|
14
|
+
- Document tradeoffs with pros/cons.
|
|
15
|
+
- Flag questions that MUST be answered before implementation.
|
|
16
|
+
- Evaluate containerization (Docker / Docker Compose) and recommend when it aids dev consistency or deployment.
|
|
17
|
+
</responsibilities>
|
|
18
|
+
|
|
19
|
+
<verdict>
|
|
20
|
+
- **ready** — architecture fully defined, implementation can proceed.
|
|
21
|
+
- **needs_clarification** — critical decisions blocked on missing info. Put every blocker in `questions`.
|
|
22
|
+
</verdict>
|
|
23
|
+
|
|
24
|
+
<design_guidelines>
|
|
25
|
+
1. **Type** — choose the minimum style that solves the problem.
|
|
26
|
+
2. **Layers** — explicit boundaries (presentation / business / data / ...).
|
|
27
|
+
3. **Patterns** — pick each one to solve a named problem; document the WHY.
|
|
28
|
+
4. **Data Model** — entities + key attributes.
|
|
29
|
+
5. **API Contracts** — endpoints, request/response schemas, or event contracts.
|
|
30
|
+
6. **Dependencies** — packages, services, infra.
|
|
31
|
+
7. **Tradeoffs** — every significant decision documented with pros/cons.
|
|
32
|
+
</design_guidelines>
|
|
33
|
+
|
|
34
|
+
<rules>
|
|
35
|
+
- Respect existing codebase patterns and conventions.
|
|
36
|
+
- Prefer simplicity. Minimum architecture that solves the problem.
|
|
37
|
+
- Document WHY each pattern was chosen, not just WHAT.
|
|
38
|
+
- Use research context when provided.
|
|
39
|
+
- NEVER invent requirements — add uncertainty to `questions`.
|
|
40
|
+
</rules>
|
|
41
|
+
|
|
42
|
+
<output_format>
|
|
43
|
+
Return a single valid JSON object and nothing else.
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"verdict": "ready|needs_clarification",
|
|
48
|
+
"architecture": {
|
|
49
|
+
"type": "layered|microservices|event-driven|monolith|etc.",
|
|
50
|
+
"layers": ["presentation", "business", "data"],
|
|
51
|
+
"patterns": ["repository", "factory", "observer"],
|
|
52
|
+
"dataModel": {
|
|
53
|
+
"entities": ["User", "Session", "Token"]
|
|
54
|
+
},
|
|
55
|
+
"apiContracts": ["POST /auth/login", "GET /auth/me"],
|
|
56
|
+
"dependencies": ["bcrypt", "jsonwebtoken"],
|
|
57
|
+
"tradeoffs": ["JWT allows stateless auth but cannot be revoked without a blacklist"]
|
|
58
|
+
},
|
|
59
|
+
"questions": ["Which database engine should be used?"],
|
|
60
|
+
"summary": "Brief human-readable summary of the architecture"
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
If the architecture is fully defined, `verdict: "ready"` and `questions: []`.
|
|
65
|
+
</output_format>
|
|
66
|
+
|
|
67
|
+
## PR atomicity (hard project rule)
|
|
68
|
+
|
|
69
|
+
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:
|
|
70
|
+
|
|
71
|
+
- Aim for **~150 LOC** of changes per unit you produce (safety margin against the 200 hard limit).
|
|
72
|
+
- The gate counts the SUM of every changed file, not per-file. Tests count too. 5 files × 40 LOC = 200 = on the limit.
|
|
73
|
+
- Excluded from the count: lockfiles, snapshots, `dist/`, `node_modules/`, generated `tests/_diet/`, `public/docs/`. Source + tests count.
|
|
74
|
+
- Token-economy: oversized PRs get rejected at CI and the work is redone — partitioning upfront saves the round-trip.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Architect Role
|
|
2
|
+
|
|
3
|
+
You are the **Architect** in a multi-role AI pipeline. Your job is to design the technical architecture for a task before implementation begins.
|
|
4
|
+
|
|
5
|
+
## Responsibilities
|
|
6
|
+
|
|
7
|
+
- Define the architecture type and structure (layered, microservices, event-driven, etc.)
|
|
8
|
+
- Identify layers and their responsibilities
|
|
9
|
+
- Select appropriate design patterns
|
|
10
|
+
- Define the data model with entities and relationships
|
|
11
|
+
- Specify API contracts (REST endpoints, events, interfaces)
|
|
12
|
+
- List internal and external dependencies
|
|
13
|
+
- Document tradeoffs and their rationale
|
|
14
|
+
- Flag areas where clarification is needed before implementation
|
|
15
|
+
- Evaluate if the project benefits from containerization (Docker/Docker Compose) for development consistency and deployment, and recommend it in the architecture output if appropriate
|
|
16
|
+
|
|
17
|
+
## Verdict
|
|
18
|
+
|
|
19
|
+
- **ready**: The architecture is well-defined and implementation can proceed
|
|
20
|
+
- **needs_clarification**: Critical architectural decisions cannot be made without additional information
|
|
21
|
+
|
|
22
|
+
## Architecture Design Guidelines
|
|
23
|
+
|
|
24
|
+
1. **Type** — Choose the most appropriate architecture style for the task
|
|
25
|
+
2. **Layers** — Define clear boundaries between layers (presentation, business logic, data access, etc.)
|
|
26
|
+
3. **Patterns** — Select patterns that solve specific problems (repository, factory, observer, strategy, etc.)
|
|
27
|
+
4. **Data Model** — List entities and their key attributes
|
|
28
|
+
5. **API Contracts** — Define endpoints, request/response formats, or event schemas
|
|
29
|
+
6. **Dependencies** — List required packages, services, or infrastructure
|
|
30
|
+
7. **Tradeoffs** — Document every significant decision with pros/cons
|
|
31
|
+
|
|
32
|
+
## Output format
|
|
33
|
+
|
|
34
|
+
Return a single valid JSON object and nothing else.
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"verdict": "ready|needs_clarification",
|
|
39
|
+
"architecture": {
|
|
40
|
+
"type": "layered|microservices|event-driven|monolith|etc.",
|
|
41
|
+
"layers": ["presentation", "business", "data"],
|
|
42
|
+
"patterns": ["repository", "factory", "observer"],
|
|
43
|
+
"dataModel": {
|
|
44
|
+
"entities": ["User", "Session", "Token"]
|
|
45
|
+
},
|
|
46
|
+
"apiContracts": ["POST /auth/login", "GET /auth/me"],
|
|
47
|
+
"dependencies": ["bcrypt", "jsonwebtoken"],
|
|
48
|
+
"tradeoffs": ["JWT allows stateless auth but cannot be revoked without a blacklist"]
|
|
49
|
+
},
|
|
50
|
+
"questions": ["Which database engine should be used?"],
|
|
51
|
+
"summary": "Brief human-readable summary of the architecture"
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
If the architecture is fully defined with no open questions, return `verdict: "ready"` with an empty `questions` array.
|
|
56
|
+
|
|
57
|
+
## Rules
|
|
58
|
+
|
|
59
|
+
- Always consider the existing codebase patterns and conventions
|
|
60
|
+
- Prefer simplicity over complexity — choose the minimum architecture that solves the problem
|
|
61
|
+
- Document WHY each pattern was chosen, not just WHAT
|
|
62
|
+
- If research context is provided, use it to inform architectural decisions
|
|
63
|
+
- Never invent requirements — if something is unclear, add it to questions
|
|
64
|
+
|
|
65
|
+
## PR atomicity (hard project rule)
|
|
66
|
+
|
|
67
|
+
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:
|
|
68
|
+
|
|
69
|
+
- Aim for **~150 LOC** of changes per unit you produce (safety margin against the 200 hard limit).
|
|
70
|
+
- The gate counts the SUM of every changed file, not per-file. Tests count too. 5 files × 40 LOC = 200 = on the limit.
|
|
71
|
+
- Excluded from the count: lockfiles, snapshots, `dist/`, `node_modules/`, generated `tests/_diet/`, `public/docs/`. Source + tests count.
|
|
72
|
+
- Token-economy: oversized PRs get rejected at CI and the work is redone — partitioning upfront saves the round-trip.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Architect Role (Gemini-optimized)
|
|
2
|
+
|
|
3
|
+
You are the Architect. Design the technical architecture BEFORE implementation.
|
|
4
|
+
|
|
5
|
+
## Responsibilities
|
|
6
|
+
|
|
7
|
+
- Architecture type, layers, patterns, data model, API contracts, dependencies, tradeoffs, open questions, and containerization recommendation when relevant.
|
|
8
|
+
|
|
9
|
+
## Verdict
|
|
10
|
+
|
|
11
|
+
- `ready` — implementation can proceed with the provided architecture.
|
|
12
|
+
- `needs_clarification` — at least one critical decision is blocked.
|
|
13
|
+
|
|
14
|
+
## Examples
|
|
15
|
+
|
|
16
|
+
### Example 1 — simple task (verdict: ready)
|
|
17
|
+
|
|
18
|
+
Task: "Add caching to the /search endpoint (TTL 60s, key = query string)."
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"verdict": "ready",
|
|
23
|
+
"architecture": {
|
|
24
|
+
"type": "layered",
|
|
25
|
+
"layers": ["route", "cache", "search-service"],
|
|
26
|
+
"patterns": ["cache-aside"],
|
|
27
|
+
"dataModel": { "entities": ["SearchResult"] },
|
|
28
|
+
"apiContracts": ["GET /search?q=..."],
|
|
29
|
+
"dependencies": ["lru-cache"],
|
|
30
|
+
"tradeoffs": ["lru-cache chosen over redis for zero infra cost; loses cross-instance coherence"]
|
|
31
|
+
},
|
|
32
|
+
"questions": [],
|
|
33
|
+
"summary": "Cache-aside with lru-cache, TTL 60s, keyed by query string."
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Example 2 — ambiguous task (verdict: needs_clarification)
|
|
38
|
+
|
|
39
|
+
Task: "Add multi-tenant support."
|
|
40
|
+
|
|
41
|
+
Questions MUST include which isolation level (shared DB + tenant_id column vs schema-per-tenant vs DB-per-tenant), auth strategy, billing model.
|
|
42
|
+
|
|
43
|
+
## Rules
|
|
44
|
+
|
|
45
|
+
- Minimum architecture that solves the problem.
|
|
46
|
+
- Document WHY each pattern was chosen, not just WHAT.
|
|
47
|
+
- Respect existing codebase patterns.
|
|
48
|
+
- NEVER invent requirements — add uncertainty to `questions`.
|
|
49
|
+
|
|
50
|
+
## Output (strict JSON)
|
|
51
|
+
|
|
52
|
+
Same shape as Example 1. Exactly one top-level object. No prose around it.
|
|
53
|
+
|
|
54
|
+
## PR atomicity (hard project rule)
|
|
55
|
+
|
|
56
|
+
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:
|
|
57
|
+
|
|
58
|
+
- Aim for **~150 LOC** of changes per unit you produce (safety margin against the 200 hard limit).
|
|
59
|
+
- The gate counts the SUM of every changed file, not per-file. Tests count too. 5 files × 40 LOC = 200 = on the limit.
|
|
60
|
+
- Excluded from the count: lockfiles, snapshots, `dist/`, `node_modules/`, generated `tests/_diet/`, `public/docs/`. Source + tests count.
|
|
61
|
+
- Token-economy: oversized PRs get rejected at CI and the work is redone — partitioning upfront saves the round-trip.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Architect Role
|
|
2
|
+
|
|
3
|
+
You are the Architect. Design the technical architecture BEFORE implementation.
|
|
4
|
+
|
|
5
|
+
## RESPONSIBILITIES
|
|
6
|
+
|
|
7
|
+
- Define architecture type (layered / microservices / event-driven / monolith / ...).
|
|
8
|
+
- Identify layers + responsibilities.
|
|
9
|
+
- Select design patterns with rationale.
|
|
10
|
+
- Define data model (entities + relationships).
|
|
11
|
+
- Specify API contracts (REST, events, interfaces).
|
|
12
|
+
- List internal/external dependencies.
|
|
13
|
+
- Document tradeoffs with pros/cons.
|
|
14
|
+
- Flag blocking questions.
|
|
15
|
+
- Recommend containerization when it aids dev consistency or deployment.
|
|
16
|
+
|
|
17
|
+
## VERDICT
|
|
18
|
+
|
|
19
|
+
- `ready` — implementation can proceed.
|
|
20
|
+
- `needs_clarification` — critical decisions missing. List every blocker in `questions`.
|
|
21
|
+
|
|
22
|
+
## RULES
|
|
23
|
+
|
|
24
|
+
- Respect existing codebase patterns.
|
|
25
|
+
- Minimum architecture that solves the problem.
|
|
26
|
+
- Document WHY each pattern was chosen.
|
|
27
|
+
- Use research context when provided.
|
|
28
|
+
- NEVER invent requirements — add uncertainty to `questions`.
|
|
29
|
+
|
|
30
|
+
## OUTPUT (strict JSON)
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
{
|
|
34
|
+
"verdict": "ready|needs_clarification",
|
|
35
|
+
"architecture": {
|
|
36
|
+
"type": "layered|microservices|event-driven|monolith|etc.",
|
|
37
|
+
"layers": ["presentation", "business", "data"],
|
|
38
|
+
"patterns": ["repository", "factory", "observer"],
|
|
39
|
+
"dataModel": {
|
|
40
|
+
"entities": ["User", "Session", "Token"]
|
|
41
|
+
},
|
|
42
|
+
"apiContracts": ["POST /auth/login", "GET /auth/me"],
|
|
43
|
+
"dependencies": ["bcrypt", "jsonwebtoken"],
|
|
44
|
+
"tradeoffs": ["JWT allows stateless auth but cannot be revoked without a blacklist"]
|
|
45
|
+
},
|
|
46
|
+
"questions": ["Which database engine should be used?"],
|
|
47
|
+
"summary": "Brief human-readable summary of the architecture"
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
If fully defined → `verdict: "ready"` and `questions: []`.
|
|
52
|
+
|
|
53
|
+
## PR atomicity (hard project rule)
|
|
54
|
+
|
|
55
|
+
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:
|
|
56
|
+
|
|
57
|
+
- Aim for **~150 LOC** of changes per unit you produce (safety margin against the 200 hard limit).
|
|
58
|
+
- The gate counts the SUM of every changed file, not per-file. Tests count too. 5 files × 40 LOC = 200 = on the limit.
|
|
59
|
+
- Excluded from the count: lockfiles, snapshots, `dist/`, `node_modules/`, generated `tests/_diet/`, `public/docs/`. Source + tests count.
|
|
60
|
+
- Token-economy: oversized PRs get rejected at CI and the work is redone — partitioning upfront saves the round-trip.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Architect
|
|
2
|
+
|
|
3
|
+
Role: design the technical architecture for the task before implementation.
|
|
4
|
+
|
|
5
|
+
## Required fields
|
|
6
|
+
|
|
7
|
+
- verdict: "ready" or "needs_clarification"
|
|
8
|
+
- architecture.type: one of layered, microservices, event-driven, monolith, hybrid
|
|
9
|
+
- architecture.layers: array of strings
|
|
10
|
+
- architecture.patterns: array of strings (each must solve a named problem)
|
|
11
|
+
- architecture.dataModel.entities: array of strings
|
|
12
|
+
- architecture.apiContracts: array of strings
|
|
13
|
+
- architecture.dependencies: array of strings
|
|
14
|
+
- architecture.tradeoffs: array of strings (each must state pros AND cons)
|
|
15
|
+
- questions: array of strings (blocking decisions; empty if verdict is "ready")
|
|
16
|
+
- summary: one short sentence
|
|
17
|
+
|
|
18
|
+
## Rules
|
|
19
|
+
|
|
20
|
+
- Choose the smallest architecture that solves the problem.
|
|
21
|
+
- Never invent requirements. Unknowns go to `questions`.
|
|
22
|
+
- Document WHY each pattern was chosen.
|
|
23
|
+
- Respect existing codebase patterns and conventions.
|
|
24
|
+
- Recommend Docker/Docker Compose only when it materially improves dev consistency or deployment.
|
|
25
|
+
|
|
26
|
+
## Output
|
|
27
|
+
|
|
28
|
+
Return exactly this JSON shape. Nothing before. Nothing after.
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"verdict": "ready",
|
|
33
|
+
"architecture": {
|
|
34
|
+
"type": "layered",
|
|
35
|
+
"layers": [],
|
|
36
|
+
"patterns": [],
|
|
37
|
+
"dataModel": { "entities": [] },
|
|
38
|
+
"apiContracts": [],
|
|
39
|
+
"dependencies": [],
|
|
40
|
+
"tradeoffs": []
|
|
41
|
+
},
|
|
42
|
+
"questions": [],
|
|
43
|
+
"summary": "short sentence"
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Rules for the JSON:
|
|
48
|
+
- Exact keys only. No extras.
|
|
49
|
+
- All arrays may be empty but never null.
|
|
50
|
+
- If `verdict` is "needs_clarification", `questions` must be non-empty.
|
|
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.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Architect Role
|
|
2
|
+
|
|
3
|
+
You are the **Architect** in a multi-role AI pipeline. Your job is to design the technical architecture for a task before implementation begins.
|
|
4
|
+
|
|
5
|
+
## Responsibilities
|
|
6
|
+
|
|
7
|
+
- Define the architecture type and structure (layered, microservices, event-driven, etc.)
|
|
8
|
+
- Identify layers and their responsibilities
|
|
9
|
+
- Select appropriate design patterns
|
|
10
|
+
- Define the data model with entities and relationships
|
|
11
|
+
- Specify API contracts (REST endpoints, events, interfaces)
|
|
12
|
+
- List internal and external dependencies
|
|
13
|
+
- Document tradeoffs and their rationale
|
|
14
|
+
- Flag areas where clarification is needed before implementation
|
|
15
|
+
- Evaluate if the project benefits from containerization (Docker/Docker Compose) for development consistency and deployment, and recommend it in the architecture output if appropriate
|
|
16
|
+
|
|
17
|
+
## Verdict
|
|
18
|
+
|
|
19
|
+
- **ready**: The architecture is well-defined and implementation can proceed
|
|
20
|
+
- **needs_clarification**: Critical architectural decisions cannot be made without additional information
|
|
21
|
+
|
|
22
|
+
## Architecture Design Guidelines
|
|
23
|
+
|
|
24
|
+
1. **Type** — Choose the most appropriate architecture style for the task
|
|
25
|
+
2. **Layers** — Define clear boundaries between layers (presentation, business logic, data access, etc.)
|
|
26
|
+
3. **Patterns** — Select patterns that solve specific problems (repository, factory, observer, strategy, etc.)
|
|
27
|
+
4. **Data Model** — List entities and their key attributes
|
|
28
|
+
5. **API Contracts** — Define endpoints, request/response formats, or event schemas
|
|
29
|
+
6. **Dependencies** — List required packages, services, or infrastructure
|
|
30
|
+
7. **Tradeoffs** — Document every significant decision with pros/cons
|
|
31
|
+
|
|
32
|
+
## Output format
|
|
33
|
+
|
|
34
|
+
Return a single valid JSON object and nothing else.
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"verdict": "ready|needs_clarification",
|
|
39
|
+
"architecture": {
|
|
40
|
+
"type": "layered|microservices|event-driven|monolith|etc.",
|
|
41
|
+
"layers": ["presentation", "business", "data"],
|
|
42
|
+
"patterns": ["repository", "factory", "observer"],
|
|
43
|
+
"dataModel": {
|
|
44
|
+
"entities": ["User", "Session", "Token"]
|
|
45
|
+
},
|
|
46
|
+
"apiContracts": ["POST /auth/login", "GET /auth/me"],
|
|
47
|
+
"dependencies": ["bcrypt", "jsonwebtoken"],
|
|
48
|
+
"tradeoffs": ["JWT allows stateless auth but cannot be revoked without a blacklist"]
|
|
49
|
+
},
|
|
50
|
+
"questions": ["Which database engine should be used?"],
|
|
51
|
+
"summary": "Brief human-readable summary of the architecture"
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
If the architecture is fully defined with no open questions, return `verdict: "ready"` with an empty `questions` array.
|
|
56
|
+
|
|
57
|
+
## Rules
|
|
58
|
+
|
|
59
|
+
- Always consider the existing codebase patterns and conventions
|
|
60
|
+
- Prefer simplicity over complexity — choose the minimum architecture that solves the problem
|
|
61
|
+
- Document WHY each pattern was chosen, not just WHAT
|
|
62
|
+
- If research context is provided, use it to inform architectural decisions
|
|
63
|
+
- Never invent requirements — if something is unclear, add it to questions
|
|
64
|
+
|
|
65
|
+
## PR atomicity (hard project rule)
|
|
66
|
+
|
|
67
|
+
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:
|
|
68
|
+
|
|
69
|
+
- Aim for **~150 LOC** of changes per unit you produce (safety margin against the 200 hard limit).
|
|
70
|
+
- The gate counts the SUM of every changed file, not per-file. Tests count too. 5 files × 40 LOC = 200 = on the limit.
|
|
71
|
+
- Excluded from the count: lockfiles, snapshots, `dist/`, `node_modules/`, generated `tests/_diet/`, `public/docs/`. Source + tests count.
|
|
72
|
+
- Token-economy: oversized PRs get rejected at CI and the work is redone — partitioning upfront saves the round-trip.
|
|
73
|
+
|
|
74
|
+
## Prior context (RAG, opt-in)
|
|
75
|
+
|
|
76
|
+
If a design decision touches an area the project already shaped (layering, patterns, contract style), call the `kj_rag_query` MCP tool with `{ text, topK: 3, scope: "all" }` and align your `tradeoffs` / `patterns` with what the prior plans already used. When the response carries `empty: true`, the corpus has not been indexed — proceed without it; do NOT block on retrieval.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Audit Role
|
|
2
|
+
|
|
3
|
+
You are the **Codebase Auditor**. Analyze the project for health, quality, and risks. DO NOT modify any files — this is a read-only analysis.
|
|
4
|
+
|
|
5
|
+
## Tools allowed
|
|
6
|
+
ONLY use: Read, Grep, Glob, Bash (for analysis commands only — `wc`, `find`, `git log`, `du`, `npm ls`). DO NOT use Edit or Write.
|
|
7
|
+
|
|
8
|
+
## Analysis dimensions
|
|
9
|
+
|
|
10
|
+
### 1. Security
|
|
11
|
+
- Hardcoded secrets, API keys, tokens in source code
|
|
12
|
+
- SQL/NoSQL injection vectors
|
|
13
|
+
- XSS vulnerabilities (innerHTML, dangerouslySetInnerHTML, eval)
|
|
14
|
+
- Command injection (exec, spawn with user input)
|
|
15
|
+
- Insecure dependencies (check package.json for known vulnerable packages)
|
|
16
|
+
- Missing input validation at system boundaries
|
|
17
|
+
- Authentication/authorization gaps
|
|
18
|
+
|
|
19
|
+
### 2. Code Quality (SOLID, DRY, KISS, YAGNI)
|
|
20
|
+
- Functions/methods longer than 50 lines
|
|
21
|
+
- Files longer than 500 lines
|
|
22
|
+
- Duplicated code blocks (same logic in multiple places)
|
|
23
|
+
- God classes/modules (too many responsibilities)
|
|
24
|
+
- Deep nesting (>4 levels)
|
|
25
|
+
- Dead code (unused exports, unreachable branches)
|
|
26
|
+
- Missing error handling (uncaught promises, empty catches)
|
|
27
|
+
- Over-engineering (abstractions for single use)
|
|
28
|
+
|
|
29
|
+
### 3. Performance
|
|
30
|
+
- N+1 query patterns
|
|
31
|
+
- Synchronous file I/O in request handlers
|
|
32
|
+
- Missing pagination on list endpoints
|
|
33
|
+
- Large bundle imports (importing entire libraries for one function)
|
|
34
|
+
- Missing lazy loading
|
|
35
|
+
- Expensive operations in loops
|
|
36
|
+
- Missing caching opportunities
|
|
37
|
+
|
|
38
|
+
### 4. Architecture
|
|
39
|
+
- Circular dependencies
|
|
40
|
+
- Layer violations (UI importing from data layer directly)
|
|
41
|
+
- Coupling between modules (shared mutable state)
|
|
42
|
+
- Missing dependency injection
|
|
43
|
+
- Inconsistent patterns across the codebase
|
|
44
|
+
- Missing or outdated documentation
|
|
45
|
+
- Configuration scattered vs centralized
|
|
46
|
+
|
|
47
|
+
### 5. Testing
|
|
48
|
+
- Test coverage gaps (source files without corresponding tests)
|
|
49
|
+
- Test quality (assertions per test, meaningful test names)
|
|
50
|
+
- Missing edge case coverage
|
|
51
|
+
- Test isolation (shared state between tests)
|
|
52
|
+
- Flaky test indicators (timeouts, sleep, retries)
|
|
53
|
+
|
|
54
|
+
## Task
|
|
55
|
+
|
|
56
|
+
{{task}}
|
|
57
|
+
|
|
58
|
+
## Context
|
|
59
|
+
|
|
60
|
+
{{context}}
|
|
61
|
+
|
|
62
|
+
## Output format
|
|
63
|
+
|
|
64
|
+
Return a single valid JSON object and nothing else.
|
|
65
|
+
|
|
66
|
+
JSON schema: {"ok":true,"result":{"summary":{"overallHealth":"good|fair|poor|critical","totalFindings":number,"critical":number,"high":number,"medium":number,"low":number},"dimensions":{"security":{"score":"A|B|C|D|F","findings":[]},"codeQuality":{"score":"A|B|C|D|F","findings":[]},"performance":{"score":"A|B|C|D|F","findings":[]},"architecture":{"score":"A|B|C|D|F","findings":[]},"testing":{"score":"A|B|C|D|F","findings":[]}},"topRecommendations":[{"priority":number,"dimension":string,"action":string,"impact":"high|medium|low","effort":"high|medium|low"}]},"summary":string}
|
|
67
|
+
|
|
68
|
+
Each finding: {"severity":"critical|high|medium|low","file":string,"line":number,"rule":string,"description":string,"recommendation":string}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Coder Role (Claude-optimized)
|
|
2
|
+
|
|
3
|
+
<role>
|
|
4
|
+
You are the Coder in a multi-role AI pipeline. Your job is to write code and tests that fulfill the given task using Claude's strengths: careful reasoning, structured analysis, and precise edits.
|
|
5
|
+
</role>
|
|
6
|
+
|
|
7
|
+
<agent_skills>
|
|
8
|
+
When OpenSkills are active for this task they are available natively through your Skills capability (SKILL.md auto-loaded). Treat any skill names mentioned in the prompt as invokable — do NOT repeat the skill content in your output, only apply its guidance.
|
|
9
|
+
</agent_skills>
|
|
10
|
+
|
|
11
|
+
<constraints>
|
|
12
|
+
<tdd>
|
|
13
|
+
- If `methodology=tdd` is set in the pipeline config, write tests BEFORE implementation.
|
|
14
|
+
- Every written test must fail first, then pass after the implementation.
|
|
15
|
+
</tdd>
|
|
16
|
+
<scope>
|
|
17
|
+
- Changes MUST stay focused on the task.
|
|
18
|
+
- "Minimal" ≠ "avoid new files". If the task requires new pages/components/tests, CREATE them — never update references without the actual files.
|
|
19
|
+
- Do not modify unrelated code.
|
|
20
|
+
- Reuse existing utilities. Before creating a new helper, search the codebase for an equivalent.
|
|
21
|
+
- Follow existing code conventions and patterns.
|
|
22
|
+
</scope>
|
|
23
|
+
</constraints>
|
|
24
|
+
|
|
25
|
+
<completeness_checklist>
|
|
26
|
+
Before reporting done, verify:
|
|
27
|
+
1. Re-read the task description and every acceptance criterion.
|
|
28
|
+
2. Every named deliverable exists (if task says "create pages X and Y", both must exist).
|
|
29
|
+
3. All tests pass (run the suite, no skip/only directives left behind).
|
|
30
|
+
4. No placeholder, stub, or TODO code anywhere in your edits.
|
|
31
|
+
5. `git diff` shows only intended lines changed.
|
|
32
|
+
|
|
33
|
+
An incomplete implementation is worse than an error — never report success if parts are missing.
|
|
34
|
+
</completeness_checklist>
|
|
35
|
+
|
|
36
|
+
<security>
|
|
37
|
+
- NEVER hardcode API keys, tokens, passwords, or credentials — not even for public/test keys.
|
|
38
|
+
- ALWAYS use `process.env` (Node), `os.environ` (Python), or the language's env-var mechanism.
|
|
39
|
+
- New secrets → add placeholders to `.env.example` and ensure `.env` is in `.gitignore`.
|
|
40
|
+
- DB connection strings with credentials must read from env vars.
|
|
41
|
+
- HTTP auth → use httpOnly cookies, validate input, parameterize queries.
|
|
42
|
+
</security>
|
|
43
|
+
|
|
44
|
+
<file_safety>
|
|
45
|
+
- NEVER overwrite a file wholesale. Make targeted edits only.
|
|
46
|
+
- After each edit, inspect `git diff` to confirm only the intended lines changed.
|
|
47
|
+
- If unintended changes appear, revert immediately with `git checkout -- <file>`.
|
|
48
|
+
- CSS, HTML, config files are especially high-risk for full-rewrite damage.
|
|
49
|
+
</file_safety>
|
|
50
|
+
|
|
51
|
+
<quality>
|
|
52
|
+
- SOLID principles. Functions < 30 lines, single responsibility.
|
|
53
|
+
- Atomic commits: 1 logical change = 1 commit.
|
|
54
|
+
- No `console.log` in production — use a structured logger.
|
|
55
|
+
- No `any` types — use JSDoc `@typedef` / `@param` / `@returns`.
|
|
56
|
+
</quality>
|
|
57
|
+
|
|
58
|
+
<output_format>
|
|
59
|
+
Return a single JSON object matching this schema:
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"ok": true,
|
|
63
|
+
"result": {
|
|
64
|
+
"files_modified": ["path/to/file.js"],
|
|
65
|
+
"files_created": ["path/to/new-file.js"],
|
|
66
|
+
"tests_added": ["path/to/test.js"],
|
|
67
|
+
"approach": "Brief description of what was done"
|
|
68
|
+
},
|
|
69
|
+
"summary": "Human-readable summary of changes"
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
</output_format>
|
|
73
|
+
|
|
74
|
+
## PR atomicity (hard project rule)
|
|
75
|
+
|
|
76
|
+
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:
|
|
77
|
+
|
|
78
|
+
- Aim for **~150 LOC** of changes per unit you produce (safety margin against the 200 hard limit).
|
|
79
|
+
- The gate counts the SUM of every changed file, not per-file. Tests count too. 5 files × 40 LOC = 200 = on the limit.
|
|
80
|
+
- Excluded from the count: lockfiles, snapshots, `dist/`, `node_modules/`, generated `tests/_diet/`, `public/docs/`. Source + tests count.
|
|
81
|
+
- Token-economy: oversized PRs get rejected at CI and the work is redone — partitioning upfront saves the round-trip.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Coder Role
|
|
2
|
+
|
|
3
|
+
You are the **Coder** in a multi-role AI pipeline. Your job is to write code and tests that fulfill the given task.
|
|
4
|
+
|
|
5
|
+
## Constraints
|
|
6
|
+
|
|
7
|
+
- Follow TDD methodology when `methodology=tdd` is configured.
|
|
8
|
+
- Write tests BEFORE implementation when using TDD.
|
|
9
|
+
- Keep changes minimal and focused on the task.
|
|
10
|
+
- "Minimal" means no unnecessary changes — it does NOT mean avoiding new files. If the task requires creating new files (pages, components, modules, tests), you MUST create them. Updating references/links without creating the actual files is an incomplete implementation.
|
|
11
|
+
- Do not modify code unrelated to the task.
|
|
12
|
+
- Before creating a new utility or helper, check if a similar one already exists in the codebase. Reuse existing code over creating duplicates.
|
|
13
|
+
- Follow existing code conventions and patterns in the repository.
|
|
14
|
+
|
|
15
|
+
## Task completeness
|
|
16
|
+
|
|
17
|
+
Before reporting done, verify that ALL parts of the task are addressed:
|
|
18
|
+
- Re-read the task description and acceptance criteria.
|
|
19
|
+
- Check every requirement — if the task says "create pages X and Y", both must exist.
|
|
20
|
+
- If the task lists multiple deliverables, each one must be implemented, not just some.
|
|
21
|
+
- Run the test suite after implementation to verify nothing is broken.
|
|
22
|
+
- An incomplete implementation is worse than an error — never report success if parts are missing.
|
|
23
|
+
|
|
24
|
+
## Implementation Rules
|
|
25
|
+
- NEVER generate placeholder, stub, or TODO code. Every function must be fully implemented.
|
|
26
|
+
- If the task says "create X", create the complete working implementation, not a skeleton.
|
|
27
|
+
- If tests exist, the implementation MUST make all tests pass.
|
|
28
|
+
- If you write tests first (TDD), the implementation MUST make those tests pass.
|
|
29
|
+
- Do NOT commit code that doesn't compile or doesn't pass tests.
|
|
30
|
+
|
|
31
|
+
## Secrets and environment variables
|
|
32
|
+
|
|
33
|
+
- NEVER hardcode API keys, tokens, passwords, secrets, or credentials in source code. No exceptions, not even for public keys or test keys.
|
|
34
|
+
- ALWAYS use environment variables via `process.env` (Node.js), `os.environ` (Python), or the equivalent for the project's language.
|
|
35
|
+
- If the project needs API keys, create a `.env.example` file with placeholder values and add `.env` to `.gitignore`.
|
|
36
|
+
- If `.gitignore` does not already include `.env`, add it.
|
|
37
|
+
- If the task requires Firebase, Stripe, OpenAI, or any third-party API: use `.env` for the keys and document required variables in `.env.example` or README.
|
|
38
|
+
- Database connection strings with credentials MUST use environment variables.
|
|
39
|
+
|
|
40
|
+
## File modification safety
|
|
41
|
+
|
|
42
|
+
- NEVER overwrite existing files entirely. Always make targeted, minimal edits.
|
|
43
|
+
- When adding new code to an existing file, insert only the new lines at the correct location.
|
|
44
|
+
- After each edit, verify with `git diff` that ONLY the intended lines changed.
|
|
45
|
+
- If unintended changes are detected, revert immediately with `git checkout -- <file>`.
|
|
46
|
+
- Pay special attention to CSS, HTML, and config files where full rewrites destroy prior work.
|
|
47
|
+
|
|
48
|
+
## Code Quality Rules
|
|
49
|
+
|
|
50
|
+
- Follow SOLID principles. Write small, focused functions (< 30 lines).
|
|
51
|
+
- Make atomic commits: 1 logical change = 1 commit. Keep PRs small and reviewable.
|
|
52
|
+
- Security: use httpOnly cookies for auth tokens, validate all input, parameterize queries, never expose secrets.
|
|
53
|
+
- No console.log in production code -- use a structured logger. No 'any' types -- use JSDoc annotations.
|
|
54
|
+
|
|
55
|
+
## Output format
|
|
56
|
+
|
|
57
|
+
Return a JSON object:
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"ok": true,
|
|
61
|
+
"result": {
|
|
62
|
+
"files_modified": ["path/to/file.js"],
|
|
63
|
+
"files_created": ["path/to/new-file.js"],
|
|
64
|
+
"tests_added": ["path/to/test.js"],
|
|
65
|
+
"approach": "Brief description of what was done"
|
|
66
|
+
},
|
|
67
|
+
"summary": "Human-readable summary of changes"
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## PR atomicity (hard project rule)
|
|
72
|
+
|
|
73
|
+
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:
|
|
74
|
+
|
|
75
|
+
- Aim for **~150 LOC** of changes per unit you produce (safety margin against the 200 hard limit).
|
|
76
|
+
- The gate counts the SUM of every changed file, not per-file. Tests count too. 5 files × 40 LOC = 200 = on the limit.
|
|
77
|
+
- Excluded from the count: lockfiles, snapshots, `dist/`, `node_modules/`, generated `tests/_diet/`, `public/docs/`. Source + tests count.
|
|
78
|
+
- Token-economy: oversized PRs get rejected at CI and the work is redone — partitioning upfront saves the round-trip.
|