kengash-ai 0.1.0__tar.gz
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.
- kengash_ai-0.1.0/.antigravity-plugin/plugin.json +5 -0
- kengash_ai-0.1.0/.claude-plugin/marketplace.json +14 -0
- kengash_ai-0.1.0/.claude-plugin/plugin.json +10 -0
- kengash_ai-0.1.0/.gitignore +16 -0
- kengash_ai-0.1.0/AGENTS.md +41 -0
- kengash_ai-0.1.0/CHANGELOG.md +27 -0
- kengash_ai-0.1.0/CLAUDE.md +5 -0
- kengash_ai-0.1.0/GEMINI.md +1 -0
- kengash_ai-0.1.0/LICENSE +21 -0
- kengash_ai-0.1.0/Makefile +50 -0
- kengash_ai-0.1.0/PKG-INFO +151 -0
- kengash_ai-0.1.0/README.md +113 -0
- kengash_ai-0.1.0/docs/README.md +14 -0
- kengash_ai-0.1.0/docs/architecture.md +85 -0
- kengash_ai-0.1.0/docs/conventions/instruction-files.md +62 -0
- kengash_ai-0.1.0/docs/conventions/memory-files.md +50 -0
- kengash_ai-0.1.0/docs/conventions/skills.md +68 -0
- kengash_ai-0.1.0/docs/modules/adapters/README.md +42 -0
- kengash_ai-0.1.0/docs/modules/cli/README.md +49 -0
- kengash_ai-0.1.0/docs/modules/gitops/README.md +33 -0
- kengash_ai-0.1.0/docs/modules/journal/README.md +24 -0
- kengash_ai-0.1.0/docs/modules/memory/README.md +28 -0
- kengash_ai-0.1.0/docs/modules/model/README.md +53 -0
- kengash_ai-0.1.0/docs/modules/ops/README.md +116 -0
- kengash_ai-0.1.0/docs/modules/roles/README.md +22 -0
- kengash_ai-0.1.0/docs/modules/scheduler/README.md +24 -0
- kengash_ai-0.1.0/docs/modules/settings/README.md +29 -0
- kengash_ai-0.1.0/docs/modules/store/README.md +49 -0
- kengash_ai-0.1.0/docs/modules/ui/README.md +49 -0
- kengash_ai-0.1.0/docs/modules/worker/README.md +28 -0
- kengash_ai-0.1.0/docs/modules/workflow/README.md +29 -0
- kengash_ai-0.1.0/docs/releasing.md +30 -0
- kengash_ai-0.1.0/docs/superpowers/plans/2026-10-22-foundation.md +914 -0
- kengash_ai-0.1.0/docs/superpowers/plans/2026-10-22-sp2-m1-store-core.md +2278 -0
- kengash_ai-0.1.0/docs/superpowers/plans/2026-10-22-sp2-m2-settings-memory-journal.md +1378 -0
- kengash_ai-0.1.0/docs/superpowers/plans/2026-10-22-sp2-m3-plans-tickets.md +1973 -0
- kengash_ai-0.1.0/docs/superpowers/plans/2026-10-22-sp3-m1-engine-rules.md +1721 -0
- kengash_ai-0.1.0/docs/superpowers/plans/2026-10-23-sp3-m2-providers-git.md +1350 -0
- kengash_ai-0.1.0/docs/superpowers/plans/2026-10-23-sp3-m3-workers-controls.md +1279 -0
- kengash_ai-0.1.0/docs/superpowers/plans/2026-10-23-sp3-m4-review-compaction-live.md +303 -0
- kengash_ai-0.1.0/docs/superpowers/plans/2026-10-23-sp4-m1-skill-toolkit.md +99 -0
- kengash_ai-0.1.0/docs/superpowers/plans/2026-10-23-sp4-m2-eval-runner.md +66 -0
- kengash_ai-0.1.0/docs/superpowers/plans/2026-10-23-sp4-m3-installed-skills.md +40 -0
- kengash_ai-0.1.0/docs/superpowers/plans/2026-10-23-sp5-m1-server-monitor.md +55 -0
- kengash_ai-0.1.0/docs/superpowers/plans/2026-10-23-sp5-m2-inspect-configure.md +73 -0
- kengash_ai-0.1.0/docs/superpowers/plans/2026-10-24-sp5-m3-open-ui-parity.md +40 -0
- kengash_ai-0.1.0/docs/superpowers/plans/2026-10-24-sp5-ui-parity.md +68 -0
- kengash_ai-0.1.0/docs/superpowers/plans/2026-10-26-sp6-custom-agents.md +145 -0
- kengash_ai-0.1.0/docs/superpowers/plans/2026-10-26-sp7-production.md +83 -0
- kengash_ai-0.1.0/docs/superpowers/specs/2026-10-22-sp2-store-cli-design.md +93 -0
- kengash_ai-0.1.0/docs/superpowers/specs/2026-10-22-sp3-engine-design.md +227 -0
- kengash_ai-0.1.0/docs/superpowers/specs/2026-10-22-super-harness-design.md +558 -0
- kengash_ai-0.1.0/docs/superpowers/specs/2026-10-23-sp4-skills-design.md +72 -0
- kengash_ai-0.1.0/docs/superpowers/specs/2026-10-23-sp5-ui-design.md +79 -0
- kengash_ai-0.1.0/docs/superpowers/specs/2026-10-26-sp6-custom-agents-design.md +54 -0
- kengash_ai-0.1.0/docs/superpowers/specs/2026-10-26-sp7-production-design.md +49 -0
- kengash_ai-0.1.0/evals/README.md +32 -0
- kengash_ai-0.1.0/evals/harness-memory/preference.yaml +13 -0
- kengash_ai-0.1.0/evals/open-ui/opens.yaml +12 -0
- kengash_ai-0.1.0/evals/to-loop/one-ticket.yaml +40 -0
- kengash_ai-0.1.0/evals/to-plan/direct.yaml +19 -0
- kengash_ai-0.1.0/evals/to-plan-with-grill/grill.yaml +20 -0
- kengash_ai-0.1.0/evals/to-ticket/slices.yaml +32 -0
- kengash_ai-0.1.0/pyproject.toml +181 -0
- kengash_ai-0.1.0/scripts/__init__.py +1 -0
- kengash_ai-0.1.0/scripts/bench_views.py +37 -0
- kengash_ai-0.1.0/scripts/check_dist.py +73 -0
- kengash_ai-0.1.0/scripts/check_docs_sync.py +62 -0
- kengash_ai-0.1.0/scripts/check_md_caps.py +41 -0
- kengash_ai-0.1.0/scripts/demo_store.py +356 -0
- kengash_ai-0.1.0/skills/README.md +16 -0
- kengash_ai-0.1.0/skills/harness-memory/SKILL.md +26 -0
- kengash_ai-0.1.0/skills/open-ui/SKILL.md +26 -0
- kengash_ai-0.1.0/skills/to-loop/SKILL.md +27 -0
- kengash_ai-0.1.0/skills/to-plan/SKILL.md +49 -0
- kengash_ai-0.1.0/skills/to-plan-with-grill/SKILL.md +45 -0
- kengash_ai-0.1.0/skills/to-ticket/SKILL.md +38 -0
- kengash_ai-0.1.0/skills/to-ticket/references/importance.md +11 -0
- kengash_ai-0.1.0/src/kengash_ai/__init__.py +3 -0
- kengash_ai-0.1.0/src/kengash_ai/adapters/__init__.py +27 -0
- kengash_ai-0.1.0/src/kengash_ai/adapters/antigravity.py +130 -0
- kengash_ai-0.1.0/src/kengash_ai/adapters/base.py +161 -0
- kengash_ai-0.1.0/src/kengash_ai/adapters/claude.py +146 -0
- kengash_ai-0.1.0/src/kengash_ai/adapters/codex.py +148 -0
- kengash_ai-0.1.0/src/kengash_ai/adapters/env.py +22 -0
- kengash_ai-0.1.0/src/kengash_ai/adapters/process.py +87 -0
- kengash_ai-0.1.0/src/kengash_ai/adapters/shell.py +50 -0
- kengash_ai-0.1.0/src/kengash_ai/cli.py +1033 -0
- kengash_ai-0.1.0/src/kengash_ai/gitops.py +212 -0
- kengash_ai-0.1.0/src/kengash_ai/journal.py +75 -0
- kengash_ai-0.1.0/src/kengash_ai/memory.py +230 -0
- kengash_ai-0.1.0/src/kengash_ai/model/__init__.py +136 -0
- kengash_ai-0.1.0/src/kengash_ai/model/core.py +42 -0
- kengash_ai-0.1.0/src/kengash_ai/model/documents.py +155 -0
- kengash_ai-0.1.0/src/kengash_ai/model/errors.py +29 -0
- kengash_ai-0.1.0/src/kengash_ai/model/evals.py +47 -0
- kengash_ai-0.1.0/src/kengash_ai/model/events.py +23 -0
- kengash_ai-0.1.0/src/kengash_ai/model/registry.py +20 -0
- kengash_ai-0.1.0/src/kengash_ai/model/runtime.py +103 -0
- kengash_ai-0.1.0/src/kengash_ai/model/settings.py +304 -0
- kengash_ai-0.1.0/src/kengash_ai/model/skills.py +18 -0
- kengash_ai-0.1.0/src/kengash_ai/model/steps.py +179 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/__init__.py +1 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/agent_config.py +180 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/agents.py +60 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/calls.py +117 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/changes.py +97 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/compaction.py +155 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/configure.py +31 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/controls.py +348 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/evals.py +394 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/jobs.py +190 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/lifecycle.py +99 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/merging.py +152 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/plans.py +172 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/projects.py +302 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/prompts.py +207 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/providers.py +146 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/queue.py +119 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/records.py +165 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/reviews.py +381 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/skills.py +340 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/slots.py +104 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/status.py +40 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/steps.py +662 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/tickets.py +438 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/ui_server.py +119 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/views.py +1224 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/waiting.py +230 -0
- kengash_ai-0.1.0/src/kengash_ai/ops/workspace.py +121 -0
- kengash_ai-0.1.0/src/kengash_ai/py.typed +0 -0
- kengash_ai-0.1.0/src/kengash_ai/roles/implement/SKILL.md +15 -0
- kengash_ai-0.1.0/src/kengash_ai/roles/plan/SKILL.md +21 -0
- kengash_ai-0.1.0/src/kengash_ai/roles/review-code/SKILL.md +16 -0
- kengash_ai-0.1.0/src/kengash_ai/roles/review-plan/SKILL.md +19 -0
- kengash_ai-0.1.0/src/kengash_ai/roles/review-security/SKILL.md +14 -0
- kengash_ai-0.1.0/src/kengash_ai/roles/run-tests/SKILL.md +13 -0
- kengash_ai-0.1.0/src/kengash_ai/roles/sync-docs/SKILL.md +14 -0
- kengash_ai-0.1.0/src/kengash_ai/scheduler.py +143 -0
- kengash_ai-0.1.0/src/kengash_ai/settings.py +278 -0
- kengash_ai-0.1.0/src/kengash_ai/store/__init__.py +5 -0
- kengash_ai-0.1.0/src/kengash_ai/store/defaults/DECISIONS.md +3 -0
- kengash_ai-0.1.0/src/kengash_ai/store/defaults/MEMORY.md +11 -0
- kengash_ai-0.1.0/src/kengash_ai/store/defaults/PROCESS.md +5 -0
- kengash_ai-0.1.0/src/kengash_ai/store/defaults/SETTINGS.md +70 -0
- kengash_ai-0.1.0/src/kengash_ai/store/documents.py +118 -0
- kengash_ai-0.1.0/src/kengash_ai/store/files.py +20 -0
- kengash_ai-0.1.0/src/kengash_ai/store/frontmatter.py +113 -0
- kengash_ai-0.1.0/src/kengash_ai/store/ids.py +18 -0
- kengash_ai-0.1.0/src/kengash_ai/store/links.py +87 -0
- kengash_ai-0.1.0/src/kengash_ai/store/locks.py +25 -0
- kengash_ai-0.1.0/src/kengash_ai/store/memo.py +38 -0
- kengash_ai-0.1.0/src/kengash_ai/store/paths.py +127 -0
- kengash_ai-0.1.0/src/kengash_ai/store/redact.py +27 -0
- kengash_ai-0.1.0/src/kengash_ai/store/registry.py +39 -0
- kengash_ai-0.1.0/src/kengash_ai/store/runtime.py +200 -0
- kengash_ai-0.1.0/src/kengash_ai/store/seed.py +75 -0
- kengash_ai-0.1.0/src/kengash_ai/store/storegit.py +54 -0
- kengash_ai-0.1.0/src/kengash_ai/store/yamledit.py +267 -0
- kengash_ai-0.1.0/src/kengash_ai/store/yamlio.py +39 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/__init__.py +2 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/__main__.py +27 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/app.py +314 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/api.js +45 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/app.css +780 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/app.js +189 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/favicon.svg +1 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/fonts/OFL.txt +89 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/fonts/inter.woff2 +0 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/fonts/jetbrains-mono.woff2 +0 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/format.js +54 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/graph.js +113 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/html.js +39 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/icons.js +57 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/index.html +20 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/scope.js +169 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/views/agents.js +290 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/views/board.js +237 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/views/memory.js +226 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/views/overview.js +242 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/views/settings.js +234 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/views/ticket.js +313 -0
- kengash_ai-0.1.0/src/kengash_ai/ui/static/views/workflow.js +269 -0
- kengash_ai-0.1.0/src/kengash_ai/worker/__init__.py +1 -0
- kengash_ai-0.1.0/src/kengash_ai/worker/__main__.py +88 -0
- kengash_ai-0.1.0/src/kengash_ai/workflow.py +236 -0
- kengash_ai-0.1.0/tests/conftest.py +311 -0
- kengash_ai-0.1.0/tests/fakes/bin/agy +3 -0
- kengash_ai-0.1.0/tests/fakes/bin/claude +3 -0
- kengash_ai-0.1.0/tests/fakes/bin/codex +3 -0
- kengash_ai-0.1.0/tests/fakes/fake_cli.py +86 -0
- kengash_ai-0.1.0/tests/fakes/fixtures/README.md +33 -0
- kengash_ai-0.1.0/tests/fakes/fixtures/agy/denied.json +1 -0
- kengash_ai-0.1.0/tests/fakes/fixtures/agy/error.json +1 -0
- kengash_ai-0.1.0/tests/fakes/fixtures/agy/review_new.json +1 -0
- kengash_ai-0.1.0/tests/fakes/fixtures/agy/stale_output.json +1 -0
- kengash_ai-0.1.0/tests/fakes/fixtures/agy/work_resume.json +1 -0
- kengash_ai-0.1.0/tests/fakes/fixtures/claude/auth_error.json +1 -0
- kengash_ai-0.1.0/tests/fakes/fixtures/claude/review_new.json +1 -0
- kengash_ai-0.1.0/tests/fakes/fixtures/claude/usage_limit.json +1 -0
- kengash_ai-0.1.0/tests/fakes/fixtures/claude/work_resume.json +1 -0
- kengash_ai-0.1.0/tests/fakes/fixtures/codex/review_new.jsonl +5 -0
- kengash_ai-0.1.0/tests/fakes/fixtures/codex/usage_limit.jsonl +4 -0
- kengash_ai-0.1.0/tests/fakes/fixtures/codex/work_resume.jsonl +4 -0
- kengash_ai-0.1.0/tests/live/test_live_evals.py +67 -0
- kengash_ai-0.1.0/tests/live/test_live_plugin.py +28 -0
- kengash_ai-0.1.0/tests/live/test_live_smoke.py +221 -0
- kengash_ai-0.1.0/tests/test_adapters_antigravity.py +114 -0
- kengash_ai-0.1.0/tests/test_adapters_claude.py +163 -0
- kengash_ai-0.1.0/tests/test_adapters_codex.py +103 -0
- kengash_ai-0.1.0/tests/test_adapters_core.py +180 -0
- kengash_ai-0.1.0/tests/test_check_dist.py +71 -0
- kengash_ai-0.1.0/tests/test_check_docs_sync.py +80 -0
- kengash_ai-0.1.0/tests/test_check_md_caps.py +42 -0
- kengash_ai-0.1.0/tests/test_cli.py +42 -0
- kengash_ai-0.1.0/tests/test_cli_agents.py +52 -0
- kengash_ai-0.1.0/tests/test_cli_controls.py +74 -0
- kengash_ai-0.1.0/tests/test_cli_plans.py +125 -0
- kengash_ai-0.1.0/tests/test_cli_projects.py +81 -0
- kengash_ai-0.1.0/tests/test_cli_queue.py +53 -0
- kengash_ai-0.1.0/tests/test_cli_skills.py +103 -0
- kengash_ai-0.1.0/tests/test_cli_tickets.py +81 -0
- kengash_ai-0.1.0/tests/test_cli_workspace.py +146 -0
- kengash_ai-0.1.0/tests/test_documents.py +65 -0
- kengash_ai-0.1.0/tests/test_fakes.py +35 -0
- kengash_ai-0.1.0/tests/test_frontmatter.py +71 -0
- kengash_ai-0.1.0/tests/test_gitops.py +160 -0
- kengash_ai-0.1.0/tests/test_journal.py +54 -0
- kengash_ai-0.1.0/tests/test_lifecycle.py +88 -0
- kengash_ai-0.1.0/tests/test_links.py +49 -0
- kengash_ai-0.1.0/tests/test_memo.py +79 -0
- kengash_ai-0.1.0/tests/test_memory.py +237 -0
- kengash_ai-0.1.0/tests/test_model.py +111 -0
- kengash_ai-0.1.0/tests/test_model_settings.py +182 -0
- kengash_ai-0.1.0/tests/test_model_steps.py +94 -0
- kengash_ai-0.1.0/tests/test_ops_agent_config.py +204 -0
- kengash_ai-0.1.0/tests/test_ops_agents.py +42 -0
- kengash_ai-0.1.0/tests/test_ops_calls.py +122 -0
- kengash_ai-0.1.0/tests/test_ops_changes.py +39 -0
- kengash_ai-0.1.0/tests/test_ops_compaction.py +50 -0
- kengash_ai-0.1.0/tests/test_ops_configure.py +35 -0
- kengash_ai-0.1.0/tests/test_ops_controls.py +159 -0
- kengash_ai-0.1.0/tests/test_ops_evals.py +275 -0
- kengash_ai-0.1.0/tests/test_ops_jobs.py +115 -0
- kengash_ai-0.1.0/tests/test_ops_merging.py +78 -0
- kengash_ai-0.1.0/tests/test_ops_plans.py +172 -0
- kengash_ai-0.1.0/tests/test_ops_projects.py +243 -0
- kengash_ai-0.1.0/tests/test_ops_prompts.py +95 -0
- kengash_ai-0.1.0/tests/test_ops_providers.py +87 -0
- kengash_ai-0.1.0/tests/test_ops_queue.py +69 -0
- kengash_ai-0.1.0/tests/test_ops_reviews.py +227 -0
- kengash_ai-0.1.0/tests/test_ops_skills.py +209 -0
- kengash_ai-0.1.0/tests/test_ops_slots.py +38 -0
- kengash_ai-0.1.0/tests/test_ops_status.py +32 -0
- kengash_ai-0.1.0/tests/test_ops_steps.py +337 -0
- kengash_ai-0.1.0/tests/test_ops_tickets.py +235 -0
- kengash_ai-0.1.0/tests/test_ops_ui_server.py +90 -0
- kengash_ai-0.1.0/tests/test_ops_views.py +494 -0
- kengash_ai-0.1.0/tests/test_ops_waiting.py +152 -0
- kengash_ai-0.1.0/tests/test_ops_workspace.py +53 -0
- kengash_ai-0.1.0/tests/test_plugin.py +17 -0
- kengash_ai-0.1.0/tests/test_redact.py +54 -0
- kengash_ai-0.1.0/tests/test_runtime.py +78 -0
- kengash_ai-0.1.0/tests/test_scheduler.py +94 -0
- kengash_ai-0.1.0/tests/test_settings.py +88 -0
- kengash_ai-0.1.0/tests/test_settings_write.py +239 -0
- kengash_ai-0.1.0/tests/test_store_basics.py +91 -0
- kengash_ai-0.1.0/tests/test_ui_app.py +318 -0
- kengash_ai-0.1.0/tests/test_ui_static.py +187 -0
- kengash_ai-0.1.0/tests/test_worker.py +93 -0
- kengash_ai-0.1.0/tests/test_workflow.py +202 -0
- kengash_ai-0.1.0/uv.lock +1030 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "kengash-ai",
|
|
3
|
+
"description": "kengash_ai: plan, ticket and run many projects with your coding-agent subscriptions.",
|
|
4
|
+
"owner": {
|
|
5
|
+
"name": "normatov13"
|
|
6
|
+
},
|
|
7
|
+
"plugins": [
|
|
8
|
+
{
|
|
9
|
+
"name": "kengash-ai",
|
|
10
|
+
"source": "./",
|
|
11
|
+
"description": "Plan, ticket and run many projects at once with the coding-agent subscriptions you already have, through the harness CLI."
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "kengash-ai",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Plan, ticket and run many projects at once with the coding-agent subscriptions you already have, through the harness CLI.",
|
|
5
|
+
"author": { "name": "normatov13" },
|
|
6
|
+
"homepage": "https://github.com/normatov07/kengash-ai",
|
|
7
|
+
"repository": "https://github.com/normatov07/kengash-ai",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"keywords": ["planning", "tickets", "multi-agent", "orchestration"]
|
|
10
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# local agent folders: Claude Code settings and worktrees, plan workspaces
|
|
2
|
+
.claude/
|
|
3
|
+
.superpowers/
|
|
4
|
+
|
|
5
|
+
# Python and tooling
|
|
6
|
+
__pycache__/
|
|
7
|
+
*.py[cod]
|
|
8
|
+
.venv/
|
|
9
|
+
.mypy_cache/
|
|
10
|
+
.pytest_cache/
|
|
11
|
+
.ruff_cache/
|
|
12
|
+
.import_linter_cache/
|
|
13
|
+
.coverage
|
|
14
|
+
build/
|
|
15
|
+
dist/
|
|
16
|
+
*.egg-info/
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
Kengash AI lets one developer run many projects at once with the coding-agent subscriptions they already have (Claude Code, Codex, Antigravity `agy`, which also serves Google's plans), driven through the official CLIs, never API keys. Skills installed into the user's agent conduct the work, the deterministic `harness` CLI does every mechanical step, and a local UI monitors it all.
|
|
4
|
+
|
|
5
|
+
Status: all 7 sub-projects done (Foundation; Store + `harness` CLI; Engine; Skills; Web UI; Custom agents; Production readiness): `harness init|doctor|link|adopt|settings|memory|context|plan|ticket|status|next|run|wait|approve|park|stop|pause|resume|merge|skills|agent|ui` work, with detached workers, plan review, memory compaction, role skills, six installed skills (`skills/`, proven by `evals/`), the local web UI (`harness ui open`, seven screens matching the canvas), user-defined agents (`harness agent new` or the UI's New agent), and release tooling (`make dist`, `make audit`, `docs/releasing.md`). `docs/architecture.md` tracks what is built.
|
|
6
|
+
|
|
7
|
+
## Commands
|
|
8
|
+
|
|
9
|
+
- `make setup`: install the uv environment and git hooks
|
|
10
|
+
- `make check`: everything CI runs (format, lint, types, tests, docs checks)
|
|
11
|
+
- `make fmt`: format and auto-fix
|
|
12
|
+
- `make live`: live smoke on the real provider CLIs (spends subscription quota; never in `make check`)
|
|
13
|
+
- `make evals`: every skill scenario on every installed agent (spends quota; never in `make check`)
|
|
14
|
+
- `make dist`: build the release artifacts and check them; `make audit`: known vulnerabilities in the locked dependencies
|
|
15
|
+
- One test: `uv run pytest tests/test_cli.py::test_version_names_the_package`
|
|
16
|
+
- `make docs DOCS_BASE=origin/main`: docs checks against another base
|
|
17
|
+
|
|
18
|
+
## Hard rules
|
|
19
|
+
|
|
20
|
+
1. The spec `docs/superpowers/specs/2026-10-22-super-harness-design.md` is the contract. Where it differs from `full prompt of app.md` (the original request), the spec wins. Change the spec before changing a contract.
|
|
21
|
+
2. A change to `src/kengash_ai/<module>` updates `docs/modules/<module>/README.md` in the same commit; `make docs` and the pre-commit hook enforce it.
|
|
22
|
+
3. Each project links to the store through one directory symlink. Never use hard links: they cannot link directories and break on status-folder moves and atomic saves.
|
|
23
|
+
4. Only `harness` writes store files; agents never hand-edit plan or ticket state.
|
|
24
|
+
5. Tickets reference their plan by id; never copy the full prompt into tickets.
|
|
25
|
+
6. Providers run only through their official binaries under the user's login: never read or reuse OAuth tokens, never use `claude --bare` (it skips subscription login), and strip provider API-key variables from worker environments.
|
|
26
|
+
7. No always-on daemon: workers are short-lived detached processes, one per job.
|
|
27
|
+
8. Instruction files stay within caps: this file ≤ 100 lines, files under `docs/` ≤ 150 lines (specs and plans exempt).
|
|
28
|
+
9. Each sub-project goes spec → plan → build → critical review of every change against the requirements before the next one starts.
|
|
29
|
+
|
|
30
|
+
## Read when
|
|
31
|
+
|
|
32
|
+
- `docs/architecture.md`: adding or moving a module, or changing module dependencies
|
|
33
|
+
- `docs/conventions/instruction-files.md`: writing AGENTS.md, CLAUDE.md, GEMINI.md or any doc
|
|
34
|
+
- `docs/conventions/skills.md`: writing a skill or role skill
|
|
35
|
+
- `docs/conventions/memory-files.md`: touching MEMORY.md, DECISIONS.md, PROCESS.md, SETTINGS.md, plan or ticket formats
|
|
36
|
+
- `docs/modules/<module>/README.md`: changing that module
|
|
37
|
+
- `docs/superpowers/plans/`: implementing a sub-project step by step
|
|
38
|
+
|
|
39
|
+
## UI design source
|
|
40
|
+
|
|
41
|
+
The UI implements the Claude Design canvas https://claude.ai/artifact/JiMGMkbaw8qhafeaNbqU7d. In Claude Code, read it with the Artifact tool (`list_files`, then `read_file` on `project/canvas.json` and `project/*.dc.html`), not WebFetch.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are written here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and versions follow [Semantic Versioning](https://semver.org/).
|
|
4
|
+
|
|
5
|
+
## [0.1.0] - 2026-10-26
|
|
6
|
+
|
|
7
|
+
The first release.
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- `harness` CLI: projects and the store (`init`, `doctor`, `link`, `adopt`), plans and tickets, settings and memory, the engine controls (`next`, `run`, `wait`, `approve`, `park`, `stop`, `pause`, `resume`, `merge`), skills (`install`, `lint`, `eval`) and the UI (`ui open`, `ui stop`).
|
|
12
|
+
- An engine that runs each ticket through an importance-based workflow on `claude`, `codex` and `agy` under the user's login, one detached worker per job, one git worktree per ticket, with loop caps, token caps, stall detection, plan review and memory compaction.
|
|
13
|
+
- Installed skills: `to-plan`, `to-plan-with-grill`, `to-ticket`, `to-loop`, `harness-memory`, `open-ui`; seven role skills.
|
|
14
|
+
- A local web UI: overview, task board, ticket sheet with changes and timeline, workflow editor, agents and providers, settings and memory, live over server-sent events.
|
|
15
|
+
- Custom agents: `steps.<name>: {role, kind, does}` in SETTINGS.md, `harness agent new|remove`, and the UI's New agent dialog.
|
|
16
|
+
- Log retention (`logs.keep_days`, default 30).
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- The app is named **Kengash AI** and installs as `kengash-ai` (PyPI refused `super-harness` as too similar to `superharness`). The `harness` and `hrn` commands, `~/.harness` and every file format stay; an `kengash_ai` command is added.
|
|
21
|
+
- Antigravity replaces Gemini CLI: Google moved Gemini CLI's subscription plans to Antigravity CLI, so `gemini` is no longer a provider; a setting naming it says to use `antigravity`.
|
|
22
|
+
|
|
23
|
+
### Security
|
|
24
|
+
|
|
25
|
+
- The UI checks Host, Origin, a per-run token and an `X-Harness` header on changes, and sends a strict Content Security Policy with framing, sniffing and referrer protections.
|
|
26
|
+
|
|
27
|
+
[0.1.0]: https://github.com/normatov07/kengash-ai/releases/tag/v0.1.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@AGENTS.md
|
kengash_ai-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 normatov13
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
DOCS_BASE ?= main
|
|
2
|
+
MAKEFLAGS += --silent
|
|
3
|
+
|
|
4
|
+
.PHONY: setup fmt lint type test live evals docs check dist audit
|
|
5
|
+
|
|
6
|
+
setup:
|
|
7
|
+
uv sync
|
|
8
|
+
uv run pre-commit install
|
|
9
|
+
|
|
10
|
+
fmt:
|
|
11
|
+
uv run ruff format .
|
|
12
|
+
uv run ruff check --fix .
|
|
13
|
+
|
|
14
|
+
lint:
|
|
15
|
+
uv run ruff format --check --quiet .
|
|
16
|
+
uv run ruff check --quiet .
|
|
17
|
+
out=$$(uv run lint-imports 2>&1) || { echo "$$out"; exit 1; }
|
|
18
|
+
uv run harness skills lint
|
|
19
|
+
|
|
20
|
+
type:
|
|
21
|
+
uv run mypy --no-error-summary
|
|
22
|
+
|
|
23
|
+
test:
|
|
24
|
+
uv run pytest
|
|
25
|
+
|
|
26
|
+
# real provider CLIs on a scratch repo (SP3 spec §11); spends subscription quota
|
|
27
|
+
live:
|
|
28
|
+
uv run pytest -m live -v
|
|
29
|
+
|
|
30
|
+
# every skill scenario on every installed agent (SP4 spec §2.17); spends subscription quota
|
|
31
|
+
evals:
|
|
32
|
+
uv run harness skills eval --all
|
|
33
|
+
|
|
34
|
+
docs:
|
|
35
|
+
uv run python scripts/check_md_caps.py
|
|
36
|
+
uv run python scripts/check_docs_sync.py --base $(DOCS_BASE)
|
|
37
|
+
|
|
38
|
+
check: lint type test docs
|
|
39
|
+
|
|
40
|
+
# release artifacts, checked: the product and nothing local (SP7 spec decision 8)
|
|
41
|
+
dist:
|
|
42
|
+
rm -rf dist
|
|
43
|
+
uv build --quiet
|
|
44
|
+
uv run python scripts/check_dist.py dist
|
|
45
|
+
|
|
46
|
+
# known vulnerabilities in the locked dependencies
|
|
47
|
+
audit:
|
|
48
|
+
uv lock --check
|
|
49
|
+
uv export --format requirements-txt --all-extras --no-emit-project --quiet > .audit-requirements.txt
|
|
50
|
+
uvx pip-audit@2.10.1 -r .audit-requirements.txt --disable-pip --require-hashes; status=$$?; rm -f .audit-requirements.txt; exit $$status
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: kengash-ai
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Run many projects at once with subscription coding-agent CLIs (Claude Code, Codex, Antigravity).
|
|
5
|
+
Project-URL: Homepage, https://github.com/normatov07/kengash-ai
|
|
6
|
+
Project-URL: Repository, https://github.com/normatov07/kengash-ai
|
|
7
|
+
Project-URL: Issues, https://github.com/normatov07/kengash-ai/issues
|
|
8
|
+
Project-URL: Changelog, https://github.com/normatov07/kengash-ai/blob/main/CHANGELOG.md
|
|
9
|
+
Project-URL: Documentation, https://github.com/normatov07/kengash-ai#readme
|
|
10
|
+
Author: normatov13
|
|
11
|
+
License-Expression: MIT
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Keywords: agents,ai,antigravity,claude-code,cli,codex,harness,kanban
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
15
|
+
Classifier: Environment :: Console
|
|
16
|
+
Classifier: Environment :: Web Environment
|
|
17
|
+
Classifier: Intended Audience :: Developers
|
|
18
|
+
Classifier: Operating System :: MacOS
|
|
19
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
20
|
+
Classifier: Programming Language :: Python :: 3
|
|
21
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
25
|
+
Classifier: Topic :: Software Development
|
|
26
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
27
|
+
Classifier: Typing :: Typed
|
|
28
|
+
Requires-Python: >=3.12
|
|
29
|
+
Requires-Dist: filelock>=3.16
|
|
30
|
+
Requires-Dist: pydantic>=2.9
|
|
31
|
+
Requires-Dist: ruamel-yaml-clib>=0.2.12; platform_python_implementation == 'CPython'
|
|
32
|
+
Requires-Dist: ruamel-yaml>=0.18
|
|
33
|
+
Requires-Dist: typer>=0.12
|
|
34
|
+
Provides-Extra: ui
|
|
35
|
+
Requires-Dist: fastapi>=0.115; extra == 'ui'
|
|
36
|
+
Requires-Dist: uvicorn>=0.32; extra == 'ui'
|
|
37
|
+
Description-Content-Type: text/markdown
|
|
38
|
+
|
|
39
|
+
# Kengash AI
|
|
40
|
+
|
|
41
|
+
[](https://github.com/normatov07/kengash-ai/actions/workflows/ci.yml)
|
|
42
|
+
|
|
43
|
+
A council of coding agents (*kengash* is Uzbek for council) that works many projects at once with the subscriptions you already pay for (Claude Code, Codex, Antigravity), through their official CLIs, never API keys.
|
|
44
|
+
|
|
45
|
+
You talk to your usual agent. Skills installed into it turn a prompt into a reviewed plan and small tickets, then run each ticket through an agent loop sized to its importance (plan, review, implement, review, security), in parallel across projects, each ticket in its own git worktree. A deterministic `harness` CLI does every mechanical step, a shared memory store keeps decisions across sessions, and a local web UI shows and steers it all.
|
|
46
|
+
|
|
47
|
+
## Features
|
|
48
|
+
|
|
49
|
+
- **Subscriptions, not API keys.** Drives `claude`, `codex` and `agy` headless under your own login, reuses one CLI session per ticket and role, and strips provider API-key variables from every worker.
|
|
50
|
+
- **Importance-based loops.** Simple, standard and critical workflows with loop caps, token caps, stall detection and send-back edges; you approve extra loops.
|
|
51
|
+
- **Parallel and safe.** Tickets that touch the same paths run one at a time; the rest run side by side, each in its own worktree, merged when you say so.
|
|
52
|
+
- **Your own agents.** Add a role and its step (`read`, `edit` or `review`) from the CLI or the UI, with a starter skill you can edit.
|
|
53
|
+
- **Memory that lasts.** One store at `~/.harness`, linked into every project by a folder link: MEMORY.md and DECISIONS.md for all projects, PROCESS.md and SETTINGS.md per project, compacted when they grow.
|
|
54
|
+
- **A local control room.** Overview, task board, ticket sheets with every change, a workflow editor, agents and providers, settings and memory, live over server-sent events.
|
|
55
|
+
|
|
56
|
+
## Requirements
|
|
57
|
+
|
|
58
|
+
- Linux or macOS (on Windows, use WSL), Python 3.12 or newer, git.
|
|
59
|
+
- [uv](https://docs.astral.sh/uv/) to install.
|
|
60
|
+
- At least one signed-in agent CLI: Claude Code (`claude`), Codex (`codex`) or Antigravity (`agy`).
|
|
61
|
+
|
|
62
|
+
## Install
|
|
63
|
+
|
|
64
|
+
uv tool install 'kengash-ai[ui] @ git+https://github.com/normatov07/kengash-ai'
|
|
65
|
+
harness skills install --agent claude,codex,antigravity --global
|
|
66
|
+
harness doctor
|
|
67
|
+
|
|
68
|
+
Once a release is on PyPI: `uv tool install 'kengash-ai[ui]'` or `pipx install 'kengash-ai[ui]'`. Leave out `[ui]` for the CLI alone.
|
|
69
|
+
|
|
70
|
+
The skills can also come from Claude Code's plugin marketplace (`/plugin install kengash-ai --marketplace normatov07/kengash-ai`) or `npx skills add normatov07/kengash-ai`.
|
|
71
|
+
|
|
72
|
+
## Quick start
|
|
73
|
+
|
|
74
|
+
cd ~/code/my-app
|
|
75
|
+
harness init # registers the project and links .harness to the store
|
|
76
|
+
|
|
77
|
+
Then, in your agent:
|
|
78
|
+
|
|
79
|
+
1. `/to-plan` (or `/to-plan-with-grill` to be interviewed first): a plan, reviewed by an agent on another provider.
|
|
80
|
+
2. `/to-ticket`: the plan becomes tickets with importance, dependencies and touched paths.
|
|
81
|
+
3. `/to-loop`: tickets run in their loops; the agent waits, reports gates and asks before granting loops or merging.
|
|
82
|
+
4. `/open-ui` (or `harness ui open`): the web UI on 127.0.0.1 behind a private link.
|
|
83
|
+
|
|
84
|
+
## Commands
|
|
85
|
+
|
|
86
|
+
| Command | Does |
|
|
87
|
+
|---|---|
|
|
88
|
+
| `harness init`, `link`, `adopt`, `doctor [--fix]` | register projects, repair links, check everything |
|
|
89
|
+
| `harness plan …`, `ticket …` | plans and tickets (agents use these; they never edit store files) |
|
|
90
|
+
| `harness next`, `run`, `wait`, `status` | what can start, start it, wait for gates, a summary |
|
|
91
|
+
| `harness approve`, `park`, `stop`, `pause`, `resume`, `merge` | steer running work |
|
|
92
|
+
| `harness settings show\|get\|check`, `memory …`, `context` | settings, memory and the conductor's digest |
|
|
93
|
+
| `harness agent new\|remove` | your own roles and steps |
|
|
94
|
+
| `harness skills install\|lint\|eval`, `ui open\|stop` | skills and the web UI |
|
|
95
|
+
|
|
96
|
+
Every command takes `--help`, and most take `--json`. Exit codes: 0 done, 1 a problem, 3 timed out, 4 setup needed, 5 your decision needed.
|
|
97
|
+
|
|
98
|
+
## Configuration
|
|
99
|
+
|
|
100
|
+
Settings live in SETTINGS.md files: the package defaults, then `~/.harness/defaults/SETTINGS.md`, then each project's own copy (written by `harness init` and never overwritten). Edit them in the UI's Settings, Workflow and Agents screens, which change only the lines you touch, or by hand and check them with `harness settings check`. Common keys:
|
|
101
|
+
|
|
102
|
+
loop_max.critical: 6
|
|
103
|
+
agents:
|
|
104
|
+
implementer: {on: true, cli: codex, skill: implement, fallback: [claude/sonnet]}
|
|
105
|
+
sessions.per_provider: {claude: 3, codex: 3, antigravity: 2}
|
|
106
|
+
logs.keep_days: 30 # worker logs untouched this long are removed; 0 keeps all
|
|
107
|
+
|
|
108
|
+
Add your own agent to a workflow, for example a performance reviewer that sends failing work back:
|
|
109
|
+
|
|
110
|
+
harness agent new perf-reviewer --kind review --does "Flag N+1 queries and hot loops." \
|
|
111
|
+
--cli claude/sonnet --workflow critical --after review_code
|
|
112
|
+
|
|
113
|
+
## Security model
|
|
114
|
+
|
|
115
|
+
- Providers run only through their official binaries under your login; harness never reads or reuses OAuth tokens and removes provider API-key variables from worker environments.
|
|
116
|
+
- The UI binds to 127.0.0.1, checks Host and Origin, needs a fresh per-run token (kept in an `HttpOnly`, `SameSite=Strict` cookie), requires an `X-Harness` header on every change, and sends a strict Content Security Policy.
|
|
117
|
+
- The store is a private git repository; text written to memory, tickets and the journal is redacted for common secret shapes.
|
|
118
|
+
- Workers are short-lived processes, one per job; nothing runs in the background between jobs.
|
|
119
|
+
|
|
120
|
+
Report vulnerabilities privately: see [SECURITY.md](SECURITY.md).
|
|
121
|
+
|
|
122
|
+
## Troubleshooting
|
|
123
|
+
|
|
124
|
+
- `harness doctor` names each problem and its fix; `harness doctor --fix` repairs links, exclude entries and dead workers, and prunes old logs.
|
|
125
|
+
- A provider shows "signed out": run the sign-in command the Agents screen or `doctor` prints, then "Check sign-in again".
|
|
126
|
+
- A ticket is stalled or at a loop cap: open it on the board; the sheet shows the findings and the approve or park actions.
|
|
127
|
+
- Worker logs are in `~/.harness/runtime/logs/`.
|
|
128
|
+
|
|
129
|
+
## Uninstall
|
|
130
|
+
|
|
131
|
+
harness ui stop
|
|
132
|
+
uv tool uninstall kengash-ai
|
|
133
|
+
|
|
134
|
+
Your store stays in `~/.harness`; remove it and each project's `.harness` link by hand if you want them gone.
|
|
135
|
+
|
|
136
|
+
## Develop
|
|
137
|
+
|
|
138
|
+
Requires uv and GNU make. See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
139
|
+
|
|
140
|
+
make setup # environment and git hooks
|
|
141
|
+
make check # format, lint, types, tests, docs and skill checks
|
|
142
|
+
make dist # build and check the release artifacts
|
|
143
|
+
make audit # known vulnerabilities in the locked dependencies
|
|
144
|
+
make live # live smoke on the real CLIs (spends quota)
|
|
145
|
+
make evals # skill evals on the real CLIs (spends quota)
|
|
146
|
+
|
|
147
|
+
Design: [docs/superpowers/specs/](docs/superpowers/specs/). Agent instructions: [AGENTS.md](AGENTS.md). Changes: [CHANGELOG.md](CHANGELOG.md).
|
|
148
|
+
|
|
149
|
+
## License
|
|
150
|
+
|
|
151
|
+
MIT
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Kengash AI
|
|
2
|
+
|
|
3
|
+
[](https://github.com/normatov07/kengash-ai/actions/workflows/ci.yml)
|
|
4
|
+
|
|
5
|
+
A council of coding agents (*kengash* is Uzbek for council) that works many projects at once with the subscriptions you already pay for (Claude Code, Codex, Antigravity), through their official CLIs, never API keys.
|
|
6
|
+
|
|
7
|
+
You talk to your usual agent. Skills installed into it turn a prompt into a reviewed plan and small tickets, then run each ticket through an agent loop sized to its importance (plan, review, implement, review, security), in parallel across projects, each ticket in its own git worktree. A deterministic `harness` CLI does every mechanical step, a shared memory store keeps decisions across sessions, and a local web UI shows and steers it all.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- **Subscriptions, not API keys.** Drives `claude`, `codex` and `agy` headless under your own login, reuses one CLI session per ticket and role, and strips provider API-key variables from every worker.
|
|
12
|
+
- **Importance-based loops.** Simple, standard and critical workflows with loop caps, token caps, stall detection and send-back edges; you approve extra loops.
|
|
13
|
+
- **Parallel and safe.** Tickets that touch the same paths run one at a time; the rest run side by side, each in its own worktree, merged when you say so.
|
|
14
|
+
- **Your own agents.** Add a role and its step (`read`, `edit` or `review`) from the CLI or the UI, with a starter skill you can edit.
|
|
15
|
+
- **Memory that lasts.** One store at `~/.harness`, linked into every project by a folder link: MEMORY.md and DECISIONS.md for all projects, PROCESS.md and SETTINGS.md per project, compacted when they grow.
|
|
16
|
+
- **A local control room.** Overview, task board, ticket sheets with every change, a workflow editor, agents and providers, settings and memory, live over server-sent events.
|
|
17
|
+
|
|
18
|
+
## Requirements
|
|
19
|
+
|
|
20
|
+
- Linux or macOS (on Windows, use WSL), Python 3.12 or newer, git.
|
|
21
|
+
- [uv](https://docs.astral.sh/uv/) to install.
|
|
22
|
+
- At least one signed-in agent CLI: Claude Code (`claude`), Codex (`codex`) or Antigravity (`agy`).
|
|
23
|
+
|
|
24
|
+
## Install
|
|
25
|
+
|
|
26
|
+
uv tool install 'kengash-ai[ui] @ git+https://github.com/normatov07/kengash-ai'
|
|
27
|
+
harness skills install --agent claude,codex,antigravity --global
|
|
28
|
+
harness doctor
|
|
29
|
+
|
|
30
|
+
Once a release is on PyPI: `uv tool install 'kengash-ai[ui]'` or `pipx install 'kengash-ai[ui]'`. Leave out `[ui]` for the CLI alone.
|
|
31
|
+
|
|
32
|
+
The skills can also come from Claude Code's plugin marketplace (`/plugin install kengash-ai --marketplace normatov07/kengash-ai`) or `npx skills add normatov07/kengash-ai`.
|
|
33
|
+
|
|
34
|
+
## Quick start
|
|
35
|
+
|
|
36
|
+
cd ~/code/my-app
|
|
37
|
+
harness init # registers the project and links .harness to the store
|
|
38
|
+
|
|
39
|
+
Then, in your agent:
|
|
40
|
+
|
|
41
|
+
1. `/to-plan` (or `/to-plan-with-grill` to be interviewed first): a plan, reviewed by an agent on another provider.
|
|
42
|
+
2. `/to-ticket`: the plan becomes tickets with importance, dependencies and touched paths.
|
|
43
|
+
3. `/to-loop`: tickets run in their loops; the agent waits, reports gates and asks before granting loops or merging.
|
|
44
|
+
4. `/open-ui` (or `harness ui open`): the web UI on 127.0.0.1 behind a private link.
|
|
45
|
+
|
|
46
|
+
## Commands
|
|
47
|
+
|
|
48
|
+
| Command | Does |
|
|
49
|
+
|---|---|
|
|
50
|
+
| `harness init`, `link`, `adopt`, `doctor [--fix]` | register projects, repair links, check everything |
|
|
51
|
+
| `harness plan …`, `ticket …` | plans and tickets (agents use these; they never edit store files) |
|
|
52
|
+
| `harness next`, `run`, `wait`, `status` | what can start, start it, wait for gates, a summary |
|
|
53
|
+
| `harness approve`, `park`, `stop`, `pause`, `resume`, `merge` | steer running work |
|
|
54
|
+
| `harness settings show\|get\|check`, `memory …`, `context` | settings, memory and the conductor's digest |
|
|
55
|
+
| `harness agent new\|remove` | your own roles and steps |
|
|
56
|
+
| `harness skills install\|lint\|eval`, `ui open\|stop` | skills and the web UI |
|
|
57
|
+
|
|
58
|
+
Every command takes `--help`, and most take `--json`. Exit codes: 0 done, 1 a problem, 3 timed out, 4 setup needed, 5 your decision needed.
|
|
59
|
+
|
|
60
|
+
## Configuration
|
|
61
|
+
|
|
62
|
+
Settings live in SETTINGS.md files: the package defaults, then `~/.harness/defaults/SETTINGS.md`, then each project's own copy (written by `harness init` and never overwritten). Edit them in the UI's Settings, Workflow and Agents screens, which change only the lines you touch, or by hand and check them with `harness settings check`. Common keys:
|
|
63
|
+
|
|
64
|
+
loop_max.critical: 6
|
|
65
|
+
agents:
|
|
66
|
+
implementer: {on: true, cli: codex, skill: implement, fallback: [claude/sonnet]}
|
|
67
|
+
sessions.per_provider: {claude: 3, codex: 3, antigravity: 2}
|
|
68
|
+
logs.keep_days: 30 # worker logs untouched this long are removed; 0 keeps all
|
|
69
|
+
|
|
70
|
+
Add your own agent to a workflow, for example a performance reviewer that sends failing work back:
|
|
71
|
+
|
|
72
|
+
harness agent new perf-reviewer --kind review --does "Flag N+1 queries and hot loops." \
|
|
73
|
+
--cli claude/sonnet --workflow critical --after review_code
|
|
74
|
+
|
|
75
|
+
## Security model
|
|
76
|
+
|
|
77
|
+
- Providers run only through their official binaries under your login; harness never reads or reuses OAuth tokens and removes provider API-key variables from worker environments.
|
|
78
|
+
- The UI binds to 127.0.0.1, checks Host and Origin, needs a fresh per-run token (kept in an `HttpOnly`, `SameSite=Strict` cookie), requires an `X-Harness` header on every change, and sends a strict Content Security Policy.
|
|
79
|
+
- The store is a private git repository; text written to memory, tickets and the journal is redacted for common secret shapes.
|
|
80
|
+
- Workers are short-lived processes, one per job; nothing runs in the background between jobs.
|
|
81
|
+
|
|
82
|
+
Report vulnerabilities privately: see [SECURITY.md](SECURITY.md).
|
|
83
|
+
|
|
84
|
+
## Troubleshooting
|
|
85
|
+
|
|
86
|
+
- `harness doctor` names each problem and its fix; `harness doctor --fix` repairs links, exclude entries and dead workers, and prunes old logs.
|
|
87
|
+
- A provider shows "signed out": run the sign-in command the Agents screen or `doctor` prints, then "Check sign-in again".
|
|
88
|
+
- A ticket is stalled or at a loop cap: open it on the board; the sheet shows the findings and the approve or park actions.
|
|
89
|
+
- Worker logs are in `~/.harness/runtime/logs/`.
|
|
90
|
+
|
|
91
|
+
## Uninstall
|
|
92
|
+
|
|
93
|
+
harness ui stop
|
|
94
|
+
uv tool uninstall kengash-ai
|
|
95
|
+
|
|
96
|
+
Your store stays in `~/.harness`; remove it and each project's `.harness` link by hand if you want them gone.
|
|
97
|
+
|
|
98
|
+
## Develop
|
|
99
|
+
|
|
100
|
+
Requires uv and GNU make. See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
101
|
+
|
|
102
|
+
make setup # environment and git hooks
|
|
103
|
+
make check # format, lint, types, tests, docs and skill checks
|
|
104
|
+
make dist # build and check the release artifacts
|
|
105
|
+
make audit # known vulnerabilities in the locked dependencies
|
|
106
|
+
make live # live smoke on the real CLIs (spends quota)
|
|
107
|
+
make evals # skill evals on the real CLIs (spends quota)
|
|
108
|
+
|
|
109
|
+
Design: [docs/superpowers/specs/](docs/superpowers/specs/). Agent instructions: [AGENTS.md](AGENTS.md). Changes: [CHANGELOG.md](CHANGELOG.md).
|
|
110
|
+
|
|
111
|
+
## License
|
|
112
|
+
|
|
113
|
+
MIT
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Docs index
|
|
2
|
+
|
|
3
|
+
One line per doc: what it holds and when to read it.
|
|
4
|
+
|
|
5
|
+
| Doc | Read when |
|
|
6
|
+
|---|---|
|
|
7
|
+
| `architecture.md` | adding or moving a module, or changing module dependencies |
|
|
8
|
+
| `releasing.md` | publishing a version to PyPI and GitHub, or setting that up |
|
|
9
|
+
| `conventions/instruction-files.md` | writing AGENTS.md, CLAUDE.md, GEMINI.md or anything under `docs/` |
|
|
10
|
+
| `conventions/skills.md` | writing a skill or role skill |
|
|
11
|
+
| `conventions/memory-files.md` | touching MEMORY.md, DECISIONS.md, PROCESS.md, SETTINGS.md, plan or ticket formats |
|
|
12
|
+
| `modules/<module>/README.md` | changing that module (one per module under `src/kengash_ai/`) |
|
|
13
|
+
| `superpowers/specs/` | the design contract of each sub-project |
|
|
14
|
+
| `superpowers/plans/` | step-by-step implementation plans |
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
System map of Kengash AI. The contract is the spec, `docs/superpowers/specs/2026-10-22-super-harness-design.md`; this page records what exists now. Update the Status columns whenever a module or sub-project lands.
|
|
4
|
+
|
|
5
|
+
## Flow
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
You ──prompt──▶ CONDUCTOR: your claude | codex | agy session, running installed skills
|
|
9
|
+
│ shell calls, compact output
|
|
10
|
+
▼
|
|
11
|
+
harness CLI (deterministic) ──starts──▶ detached workers, one per job
|
|
12
|
+
│ │ one CLI session per ticket×role, resumed
|
|
13
|
+
▼ ▼
|
|
14
|
+
store ~/.harness claude -p · codex exec · agy -p
|
|
15
|
+
(Markdown + JSONL, a git repo) (official binaries, the user's login)
|
|
16
|
+
▲
|
|
17
|
+
UI: harness ui → FastAPI + SSE on 127.0.0.1, through the same `ops` layer as the CLI
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Modules
|
|
21
|
+
|
|
22
|
+
| Module | Responsibility | May import | Status |
|
|
23
|
+
|---|---|---|---|
|
|
24
|
+
| `cli` | Typer command surface, output formatting | `ops`, `model` | `--version`, `init`, `doctor`, `link`, `adopt`, `settings`, `memory` (incl. `compact`), `context`, `plan` (incl. `review`), `ticket` (incl. `changes`, `attach`), `status`, `next`, `run`, `wait`, `approve`, `park`, `stop`, `pause`, `resume`, `merge`, `skills lint|install|eval` |
|
|
25
|
+
| `model` | Pydantic schemas: Plan, Ticket, Settings, Event, StepRequest, StepResult, Verdict | — | Plan, Ticket, TicketInput, Registry, Settings, Event, errors (SP2 M1–M3); runtime files, provider options (SP3 M1); step contract, provider status, trust file (SP3 M2); worker, ticket-state, cursor files (SP3 M3); job kinds, `WaitTimeout` (SP3 M4); custom steps, `role_of`/`kind_of` (SP6) |
|
|
26
|
+
| `store` | Paths, frontmatter, atomic writes, locks, status moves, registry, links, store commits | `model` | built (SP2 M1); runtime slots, claims, pause flags (SP3 M1); repo trust digests (SP3 M2); UI record, `yamledit` (SP5) |
|
|
27
|
+
| `settings` | Seed, load, validate, resolve; comment-preserving edits | `model`, `store` | built (SP2 M2); comment-preserving writes, overrides (SP5 M2) |
|
|
28
|
+
| `memory` | MEMORY/DECISIONS/PROCESS writes and caps | `model`, `store`, `journal`, `settings` | built (SP2 M2): MEMORY and DECISIONS writes; compaction checks and writes, DECISIONS archive (SP3 M4) |
|
|
29
|
+
| `journal` | Append-only JSONL events, follow, usage aggregates | `model`, `store` | built (SP2 M2): append, read; positions (SP3 M3); day files (SP5 M2) |
|
|
30
|
+
| `ops` | Use cases shared by CLI, UI and workers | all units above; starts workers as processes | `projects`, `workspace`, `records`, `plans`, `tickets`, `status` (SP2 M1–M3); `queue` (SP3 M1); `providers` (SP3 M2); `slots`, `agents`, `prompts`, `lifecycle`, `steps`, `controls`, `merging`, `waiting`, `changes` (SP3 M3); `calls`, `jobs`, `reviews`, `compaction` (SP3 M4); `skills` (SP4 M1); `evals` (SP4 M2); `views`, `ui_server` (SP5 M1); `configure`, the screen views (SP5 M2); `agent_config` (SP6) |
|
|
31
|
+
| `scheduler` | Runnable set: dependencies, `touches` overlap, provider slots, fairness | `model` | built (SP3 M1) |
|
|
32
|
+
| `workflow` | Step graph per importance, routing, loop and budget caps, stalls | `model` | built (SP3 M1) |
|
|
33
|
+
| `adapters` | One driver per provider CLI behind the `Provider` protocol | `model` | built (SP3 M2): claude, codex, antigravity, shell |
|
|
34
|
+
| `gitops` | Worktrees, commits with trailers, diffs, rebase, merge | `model` | built (SP3 M2) |
|
|
35
|
+
| `worker` | Runs one job through `ops`; heartbeats; handles signals | `ops`, `model` | built (SP3 M3–M4): `ticket`, `plan-review` and `compact` jobs |
|
|
36
|
+
| `roles` | Packaged role skill files (data only) | — | built (SP4 M1): seven role skills, seeded into `defaults/roles/` |
|
|
37
|
+
| `ui` | FastAPI app, SSE, static assets | `ops`, `model` | built (SP5 M1–M2, canvas parity): token auth, Host, Origin and `X-Harness` checks, journal SSE, the seven screens matching the canvas, settings saves; New agent (SP6) |
|
|
38
|
+
|
|
39
|
+
`adapters` and `gitops` never touch the store. Import-linter (`make lint`) enforces the layers `cli | worker | ui > ops > memory > journal | settings > store > model` (`journal` and `settings` independent of each other) and keeps `cli`, `worker` and `ui` from importing `store`, `settings`, `memory` or `journal` directly; `workflow`, `scheduler`, `adapters` and `gitops` import only `model`; each new module adds its contract.
|
|
40
|
+
|
|
41
|
+
## Store (built in SP2 M1)
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
~/.harness/ canonical store, a git repo (mode 0700)
|
|
45
|
+
├── registry.yaml slug → repo path, base branch
|
|
46
|
+
├── memory/ MEMORY.md, DECISIONS.md (global), archive/
|
|
47
|
+
├── defaults/ SETTINGS.md, PROCESS.md, roles/ (seeds)
|
|
48
|
+
├── projects/<slug>/ SETTINGS.md, PROCESS.md, memory -> ../../memory,
|
|
49
|
+
│ plans/, tasks/{in_queue,in_process,done}/
|
|
50
|
+
├── journal/YYYY-MM-DD.jsonl events
|
|
51
|
+
├── worktrees/<slug>/hrn-<id8>/ ticket worktrees (git-ignored)
|
|
52
|
+
└── runtime/ locks, pids, heartbeats, logs (git-ignored)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Each registered repo gets one directory symlink, `<repo>/.harness -> ~/.harness/projects/<slug>`, listed in its `.git/info/exclude`.
|
|
56
|
+
|
|
57
|
+
## Repository layout
|
|
58
|
+
|
|
59
|
+
- `src/kengash_ai/`: the package; each module has `docs/modules/<module>/README.md`
|
|
60
|
+
- `scripts/`: repository checks (`check_md_caps.py`, `check_docs_sync.py`), run by `make docs`, pre-commit and CI
|
|
61
|
+
- `evals/`: skill eval scenarios (`make evals`, never in `make check`)
|
|
62
|
+
- `tests/`: the pytest suite (`make test`); `tests/live/` runs the real CLIs (`make live`, never in `make check`)
|
|
63
|
+
- `docs/`: index in `docs/README.md`
|
|
64
|
+
- `skills/`: installed skills (data; force-included in the wheel); `.claude-plugin/` and `.antigravity-plugin/`: plugin manifests
|
|
65
|
+
|
|
66
|
+
## Sub-projects
|
|
67
|
+
|
|
68
|
+
| # | Sub-project | Status |
|
|
69
|
+
|---|---|---|
|
|
70
|
+
| 1 | Foundation | done: `docs/superpowers/plans/2026-10-22-foundation.md`; CI runs after the first push |
|
|
71
|
+
| 2 | Store + `harness` CLI | done: M1 store core, M2 settings, memory, journal, M3 plans and tickets; plans in `docs/superpowers/plans/` |
|
|
72
|
+
| 3 | Engine | done: spec `docs/superpowers/specs/2026-10-22-sp3-engine-design.md`; M1 engine rules, M2 providers and git, M3 workers and controls, M4 plan review, compaction and live smoke (green for claude and agy on 2026-10-23; codex once installed) |
|
|
73
|
+
| 4 | Skills | done: spec `docs/superpowers/specs/2026-10-23-sp4-skills-design.md`; M1 skill toolkit and role skills, M2 eval runner, M3 the five installed skills (evals green on claude and agy on 2026-10-23; codex once installed) |
|
|
74
|
+
| 5 | Web UI | done: spec `docs/superpowers/specs/2026-10-23-sp5-ui-design.md`; M1 server and monitor screens, M2 inspect and configure screens, canvas parity, M3 the `open-ui` skill (eval green on claude and agy on 2026-10-24) and the parity checklist |
|
|
75
|
+
| 6 | Custom agents | done: spec `docs/superpowers/specs/2026-10-26-sp6-custom-agents-design.md`; custom steps of kind read, edit or review, `harness agent new\|remove`, the New agent dialog, CI fixed for GitHub runners and macOS, canvas follow-ups; Antigravity serves Google's subscription plans (SP7 replaced the gemini provider) |
|
|
76
|
+
| 7 | Production readiness | done: spec `docs/superpowers/specs/2026-10-26-sp7-production-design.md`; content-keyed parse caches (views 24 s → under 1 s on 1,500 tickets), UI security headers, ruff security rules, log retention, Windows guard, clean artifacts with `scripts/check_dist.py`, CI on 3.12–3.14 with package and audit jobs, a tag-driven PyPI release with attestations, Dependabot, accessibility (axe clean), community docs; Antigravity replaces the gemini provider |
|
|
77
|
+
|
|
78
|
+
## Agent context files
|
|
79
|
+
|
|
80
|
+
| Agent | Reads | Verified |
|
|
81
|
+
|---|---|---|
|
|
82
|
+
| Claude Code | `CLAUDE.md`, which imports `AGENTS.md` with `@AGENTS.md` | documented import syntax |
|
|
83
|
+
| Codex | `AGENTS.md` natively | documentation only; Codex CLI is not installed on the dev machine |
|
|
84
|
+
| Gemini CLI | `GEMINI.md`, which imports `AGENTS.md` with `@AGENTS.md` | documentation only; Gemini CLI is not installed |
|
|
85
|
+
| Antigravity `agy` | `AGENTS.md` (legacy `GEMINI.md` also supported) | 2026-10-22, agy 1.4.5: a headless run quoted hard rule 3 from `AGENTS.md` with `GEMINI.md` present |
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Writing instruction files
|
|
2
|
+
|
|
3
|
+
How to write the files agents read: `AGENTS.md`, `CLAUDE.md`, `GEMINI.md` and everything under `docs/`. Read this before adding or editing any of them.
|
|
4
|
+
|
|
5
|
+
## Layers
|
|
6
|
+
|
|
7
|
+
1. **Entry file** `AGENTS.md`: what the project is, the commands, at most 15 hard rules, and "Read when" links. Every agent loads it in every session, so each line costs tokens every time.
|
|
8
|
+
2. **Topic docs** under `docs/`: one subject each, loaded only when a "Read when" trigger fires.
|
|
9
|
+
3. **Code layer**: types, docstrings and config comments. Agents see these while reading code; never repeat them in docs.
|
|
10
|
+
|
|
11
|
+
## Caps
|
|
12
|
+
|
|
13
|
+
`scripts/check_md_caps.py` enforces these through `make docs` and the pre-commit hook:
|
|
14
|
+
|
|
15
|
+
| File | Cap |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `AGENTS.md` | 100 lines |
|
|
18
|
+
| `docs/**/*.md` | 150 lines; aim for 50–150 for topic docs |
|
|
19
|
+
| `docs/superpowers/**` | exempt (specs and plans) |
|
|
20
|
+
|
|
21
|
+
When a doc reaches its cap, split it by subject and link the parts; never raise the cap.
|
|
22
|
+
|
|
23
|
+
## Pointer files
|
|
24
|
+
|
|
25
|
+
- `CLAUDE.md`: the `/init` prefix plus `@AGENTS.md`, which Claude Code imports.
|
|
26
|
+
- `GEMINI.md`: `@AGENTS.md`, which Gemini CLI imports.
|
|
27
|
+
- Codex and Antigravity `agy` read `AGENTS.md` directly (see `docs/architecture.md`, Agent context files).
|
|
28
|
+
|
|
29
|
+
Pointer files hold no content of their own; put it in `AGENTS.md` or a topic doc.
|
|
30
|
+
|
|
31
|
+
## Writing rules
|
|
32
|
+
|
|
33
|
+
1. Every link says what it holds and when to read it, trigger word first: "`docs/conventions/skills.md`: writing a skill".
|
|
34
|
+
2. Every rule that is not obvious says why and when it applies. Delete it when the why expires.
|
|
35
|
+
3. Phrase instructions positively: say what to do.
|
|
36
|
+
4. Give the shape of an output as a template. Keep "never" for discipline rules an agent might skip under pressure, and put the reason next to it.
|
|
37
|
+
5. Put the most important rules at the top or the bottom; the middle of a long file gets the least attention.
|
|
38
|
+
6. Keep one source of truth: link to it instead of copying, and never restate what code or config already says.
|
|
39
|
+
7. Commands you reference are quiet on success and print only failures, so agents see signal, not noise.
|
|
40
|
+
8. Prune on every edit: delete stale lines and lines that change nothing.
|
|
41
|
+
|
|
42
|
+
## Module docs
|
|
43
|
+
|
|
44
|
+
Every module under `src/kengash_ai/` has `docs/modules/<module>/README.md` with four sections:
|
|
45
|
+
|
|
46
|
+
- **Purpose**: one or two sentences.
|
|
47
|
+
- **Interface**: what users and other modules call.
|
|
48
|
+
- **Invariants**: what must stay true.
|
|
49
|
+
- **Changes**: newest first, at most 20 lines; older history lives in git.
|
|
50
|
+
|
|
51
|
+
The doc changes in the same commit as the module. `scripts/check_docs_sync.py` enforces this: `make docs` checks the range `DOCS_BASE...HEAD`, the pre-commit hook checks staged files. A top-level `.py` file counts as a module; package dunder files such as `__init__.py` do not.
|
|
52
|
+
|
|
53
|
+
## Who reads and writes what
|
|
54
|
+
|
|
55
|
+
| File | Read by | Written by |
|
|
56
|
+
|---|---|---|
|
|
57
|
+
| `AGENTS.md` | every agent, every session | humans and agents, reviewed in pull requests |
|
|
58
|
+
| `docs/modules/*` | agents changing that module | whoever changes the module |
|
|
59
|
+
| `docs/conventions/*` | anyone writing that kind of file | humans |
|
|
60
|
+
| `docs/superpowers/specs/`, `plans/` | anyone working on that sub-project | the brainstorming and writing-plans workflows |
|
|
61
|
+
|
|
62
|
+
Sources: walkinglabs learn-harness-engineering, lecture 4; HumanLayer, "Skill issue: harness engineering for coding agents"; Matt Pocock, `writing-for-agents`.
|