@orkastery/cli 0.5.6 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapters/README.md +18 -0
- package/adapters/claude-code/.claude-plugin/plugin.json +1 -0
- package/adapters/claude-code/README.md +37 -5
- package/adapters/claude-code/agents/ork-check.md +1 -0
- package/adapters/claude-code/agents/ork-go.md +1 -0
- package/adapters/claude-code/agents/ork-goal.md +1 -0
- package/adapters/claude-code/agents/ork-master.md +1 -0
- package/adapters/claude-code/agents/ork-plan.md +1 -0
- package/adapters/claude-code/agents/ork-ship.md +1 -0
- package/adapters/claude-code/hooks/hooks.json +2 -1
- package/adapters/claude-code/hooks/ork-guard.js +15 -1
- package/adapters/claude-code/hooks/ork-resposta.js +91 -0
- package/adapters/claude-code/hooks/ork-sensor.js +18 -2
- package/adapters/claude-code/hooks/quota-signal.js +14 -0
- package/adapters/claude-code/mods/ork-mensageiro/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-mensageiro/hooks/caixa.ts +215 -0
- package/adapters/claude-code/mods/ork-mensageiro/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-mensageiro/hooks/painel.tsx +165 -0
- package/adapters/claude-code/mods/ork-mensageiro/hooks/recepcao.ts +256 -0
- package/adapters/claude-code/mods/ork-mensageiro/hooks/register.tsx +481 -0
- package/adapters/claude-code/mods/ork-mensageiro/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-mensageiro/types/index.d.ts +85 -0
- package/adapters/claude-code/mods/ork-pista/hooks/ci.ts +9 -5
- package/adapters/claude-code/mods/ork-ritual/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-ritual/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-ritual/hooks/nota.ts +88 -0
- package/adapters/claude-code/mods/ork-ritual/hooks/register.tsx +494 -0
- package/adapters/claude-code/mods/ork-ritual/hooks/replay.tsx +271 -0
- package/adapters/claude-code/mods/ork-ritual/hooks/ritual.ts +218 -0
- package/adapters/claude-code/mods/ork-ritual/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-ritual/types/index.d.ts +106 -0
- package/adapters/claude-code/mods/ork-sentinela/hooks/vigia.ts +1 -1
- package/adapters/codex/skills/ork/SKILL.md +2 -0
- package/adapters/hermes/README.md +64 -1
- package/adapters/hermes/bin/ork-conhecimento-colecoes.sh +14 -0
- package/adapters/hermes/bin/ork-conhecimento-listar.sh +15 -0
- package/adapters/hermes/bin/ork-conhecimento-mostrar.sh +16 -0
- package/adapters/hermes/bin/ork-conhecimento-verificar.sh +15 -0
- package/adapters/hermes/bin/ork-vigia-batida.py +127 -0
- package/adapters/hermes/hermes.plugin.json +4 -0
- package/adapters/hermes/hitl-ingress/__init__.py +101 -8
- package/adapters/hermes/skills/orkastery-devmaster/SKILL.md +2 -2
- package/adapters/openclaw/README.md +81 -9
- package/adapters/openclaw/bin/ork-vigia-batida.js +86 -0
- package/adapters/openclaw/dist/hitl-ingress.js +106 -9
- package/adapters/openclaw/dist/index.js +86 -0
- package/adapters/openclaw/openclaw.plugin.json +34 -4
- package/adapters/openclaw/package.json +2 -2
- package/adapters/openclaw/src/hitl-ingress.ts +103 -9
- package/adapters/openclaw/src/index.ts +94 -0
- package/assets/adapters-en/claude-code/README.md +403 -0
- package/assets/adapters-en/claude-code/agents/ork-check.md +33 -0
- package/assets/adapters-en/claude-code/agents/ork-go.md +33 -0
- package/assets/adapters-en/claude-code/agents/ork-goal.md +34 -0
- package/assets/adapters-en/claude-code/agents/ork-master.md +35 -0
- package/assets/adapters-en/claude-code/agents/ork-plan.md +33 -0
- package/assets/adapters-en/claude-code/agents/ork-ship.md +33 -0
- package/assets/adapters-en/claude-code/commands/check.md +46 -0
- package/assets/adapters-en/claude-code/commands/go.md +46 -0
- package/assets/adapters-en/claude-code/commands/goal.md +55 -0
- package/assets/adapters-en/claude-code/commands/master.md +54 -0
- package/assets/adapters-en/claude-code/commands/onboarding.md +22 -0
- package/assets/adapters-en/claude-code/commands/ork.md +126 -0
- package/assets/adapters-en/claude-code/commands/plan.md +47 -0
- package/assets/adapters-en/claude-code/commands/ship.md +45 -0
- package/assets/adapters-en/codex/skills/ork/SKILL.md +85 -0
- package/assets/adapters-en/hermes/README.md +273 -0
- package/assets/adapters-en/hermes/skills/orkastery-devmaster/SKILL.md +169 -0
- package/assets/references-en/README.md +25 -0
- package/assets/references-en/code-review-axes.md +82 -0
- package/assets/references-en/definition-of-done.md +74 -0
- package/assets/references-en/performance-checklist.md +53 -0
- package/assets/references-en/security-checklist.md +101 -0
- package/assets/references-en/testing-patterns.md +51 -0
- package/assets/security-scan/defaults/.golangci.yml +2 -0
- package/assets/security-scan/defaults/eslint.config.mjs +11 -0
- package/assets/security-scan/defaults/gitleaks.toml +3 -0
- package/assets/security-scan/defaults/ruff.toml +1 -0
- package/assets/security-scan/tools-agil.json +87 -0
- package/assets/security-scan/tools.json +625 -0
- package/assets/skills-en/core/onboarding/SKILL.md +58 -0
- package/assets/skills-en/core/orkastery-bootstrap/SKILL.md +119 -0
- package/assets/skills-en/core/thread-state/SKILL.md +88 -0
- package/assets/skills-en/governance/decision-triage/SKILL.md +65 -0
- package/assets/skills-en/governance/narrative-guardian/SKILL.md +66 -0
- package/assets/skills-en/governance/roadmap-keeper/SKILL.md +60 -0
- package/assets/skills-en/governance/scope-check-capability-map/SKILL.md +71 -0
- package/assets/skills-en/observability/thread-tracing/SKILL.md +63 -0
- package/assets/skills-en/phases/check-quality/SKILL.md +103 -0
- package/assets/skills-en/phases/go-implementation/SKILL.md +78 -0
- package/assets/skills-en/phases/goal-definition/SKILL.md +69 -0
- package/assets/skills-en/phases/master-metrics/SKILL.md +72 -0
- package/assets/skills-en/phases/plan-specification/SKILL.md +67 -0
- package/assets/skills-en/phases/security-remediation/SKILL.md +70 -0
- package/assets/skills-en/phases/ship-release/SKILL.md +71 -0
- package/assets/skills-en/reviewers/code-reviewer/SKILL.md +61 -0
- package/assets/skills-en/reviewers/security-auditor/SKILL.md +93 -0
- package/assets/skills-en/reviewers/test-engineer/SKILL.md +66 -0
- package/assets/skills-en/reviewers/web-performance-auditor/SKILL.md +63 -0
- package/dist/adapters/claude-bg.js +123 -9
- package/dist/adapters/codex-controller-worker.js +12 -5
- package/dist/adapters/codex-events.js +16 -4
- package/dist/adapters/codex.js +3 -1
- package/dist/adapters/grok-events.js +227 -0
- package/dist/adapters/grok-mcp-servidor.js +612 -0
- package/dist/adapters/grok-mcp.js +178 -0
- package/dist/adapters/grok.js +686 -0
- package/dist/agendador-cpu.js +92 -0
- package/dist/atualizar-branch.js +245 -0
- package/dist/auditoria.js +13 -11
- package/dist/auditrun.js +51 -46
- package/dist/autorizacao-duravel.js +327 -0
- package/dist/board.js +94 -40
- package/dist/branch-de-estado.js +23 -10
- package/dist/busca-semantica.js +7 -5
- package/dist/catalogo.js +2 -1
- package/dist/changelog-reconciliacao.js +290 -0
- package/dist/check-agil.js +528 -0
- package/dist/check-modo.js +41 -0
- package/dist/check-paralelo.js +238 -0
- package/dist/ci.js +248 -45
- package/dist/ciclos.js +8 -6
- package/dist/claim-lint.js +12 -8
- package/dist/claims-conferir.js +47 -39
- package/dist/claims.js +10 -9
- package/dist/company-brain-client.js +10 -3
- package/dist/company-brain-migration.js +11 -5
- package/dist/conducao-batida.js +759 -0
- package/dist/conducao-sentinela.js +25 -8
- package/dist/conducao.js +89 -29
- package/dist/conhecimento-consulta.js +270 -0
- package/dist/conhecimento.js +111 -87
- package/dist/conta-esgotada.js +127 -0
- package/dist/dado-privado.js +816 -0
- package/dist/decisao-autonoma.js +5 -4
- package/dist/demo.js +14 -12
- package/dist/dependencias-da-worktree.js +25 -0
- package/dist/divida.js +38 -36
- package/dist/docs.js +89 -89
- package/dist/doctor-forja.js +343 -0
- package/dist/doctor-pulse-cron.js +113 -1
- package/dist/doctor.js +164 -6
- package/dist/dsn-da-memoria.js +417 -0
- package/dist/entrega-por-mod.js +503 -0
- package/dist/entrega-pr.js +154 -54
- package/dist/esgotamentos.js +13 -11
- package/dist/estado-thread.js +21 -18
- package/dist/evalrunner.js +35 -32
- package/dist/fabrica-batida.js +34 -21
- package/dist/fabrica-estado.js +33 -21
- package/dist/fix.js +21 -19
- package/dist/forja/adaptador.js +6 -0
- package/dist/forja/ambiente-de-ci.js +27 -0
- package/dist/forja/api.js +256 -0
- package/dist/forja/cache.js +89 -0
- package/dist/forja/cli.js +60 -0
- package/dist/forja/contrato.js +9 -0
- package/dist/forja/endereco.js +43 -0
- package/dist/forja/estado.js +22 -0
- package/dist/forja/executor.js +73 -0
- package/dist/forja/github/ci.js +95 -0
- package/dist/forja/github/dono-da-rede.js +18 -0
- package/dist/forja/github/metadados.js +15 -0
- package/dist/forja/github/pedidos.js +200 -0
- package/dist/forja/gitlab/ci.js +141 -0
- package/dist/forja/gitlab/consultas.js +59 -0
- package/dist/forja/gitlab/dono-da-rede.js +43 -0
- package/dist/forja/gitlab/metadados.js +15 -0
- package/dist/forja/gitlab/pedidos-abertos.js +158 -0
- package/dist/forja/gitlab/pedidos.js +141 -0
- package/dist/forja/produtor.js +32 -0
- package/dist/forja/registro.js +31 -0
- package/dist/forja/resolver.js +121 -0
- package/dist/forja/texto.js +13 -0
- package/dist/forja/versao.js +71 -0
- package/dist/forja.js +123 -80
- package/dist/handoff.js +23 -13
- package/dist/hitl-contract.js +46 -43
- package/dist/hitl-curto.js +37 -25
- package/dist/hitl-gates.js +13 -11
- package/dist/hitl-local-receipt.js +51 -0
- package/dist/hitl-local.js +11 -2
- package/dist/hitl-lock.js +5 -11
- package/dist/hitl-public-receipt.js +11 -0
- package/dist/hitl-resumo.js +44 -1
- package/dist/hitl-sessions.js +62 -9
- package/dist/hitl-texto-livre.js +7 -4
- package/dist/hitl.js +34 -31
- package/dist/horario.js +20 -1
- package/dist/hosts.js +104 -134
- package/dist/index.js +864 -554
- package/dist/indice-vetorial.js +14 -12
- package/dist/init.js +11 -2
- package/dist/integracoes-locais.js +4 -0
- package/dist/intelligence-graph-cli.js +123 -69
- package/dist/intelligence-graph-query.js +37 -22
- package/dist/leases.js +19 -18
- package/dist/ledger-stats.js +17 -16
- package/dist/ledger.js +31 -1
- package/dist/licoes.js +12 -11
- package/dist/locale-accounts.js +228 -0
- package/dist/locale-adapter.js +291 -0
- package/dist/locale-ajuda.js +86 -10
- package/dist/locale-audit.js +199 -0
- package/dist/locale-claims.js +213 -0
- package/dist/locale-conducao.js +138 -0
- package/dist/locale-conhecimento.js +181 -0
- package/dist/locale-decisao.js +205 -0
- package/dist/locale-docs.js +230 -0
- package/dist/locale-estado.js +101 -0
- package/dist/locale-forja.js +288 -0
- package/dist/locale-gerados.js +5 -0
- package/dist/locale-grafo.js +129 -0
- package/dist/locale-master.js +83 -0
- package/dist/locale-network.js +524 -0
- package/dist/locale-operacao-restante.js +931 -0
- package/dist/locale-projetos.js +100 -0
- package/dist/locale-prompts.js +194 -0
- package/dist/locale-pulse.js +140 -2
- package/dist/locale-reservas.js +87 -0
- package/dist/locale-retry.js +183 -6
- package/dist/locale-security-scan.js +69 -0
- package/dist/locale-setup.js +192 -0
- package/dist/locale-ship.js +177 -66
- package/dist/locale-thread.js +149 -5
- package/dist/locale-verify.js +80 -4
- package/dist/locale-worktree.js +246 -0
- package/dist/locale.js +553 -9
- package/dist/maestro-runtime.js +22 -3
- package/dist/manifest.js +293 -12
- package/dist/maquina-ociosa.js +211 -0
- package/dist/maquina.js +10 -5
- package/dist/master-nota-local.js +200 -0
- package/dist/master-nota.js +10 -2
- package/dist/master.js +118 -41
- package/dist/mcp-conhecimento.js +52 -0
- package/dist/mcp-experiencia.js +26 -5
- package/dist/mcp-install.js +90 -15
- package/dist/mcp-noctum.js +101 -0
- package/dist/mcp-server.js +116 -22
- package/dist/mcp-ship-transporte.js +977 -0
- package/dist/mcp-ship.js +68 -24
- package/dist/mcp-transportes.js +17 -0
- package/dist/memoria.js +63 -58
- package/dist/merge-da-entrega.js +85 -0
- package/dist/modos-migracao.js +8 -6
- package/dist/modos.js +17 -18
- package/dist/network-roadmap.js +94 -54
- package/dist/noctum-aceite.js +929 -0
- package/dist/noctum-arco.js +540 -33
- package/dist/noctum-capacidade.js +3 -3
- package/dist/noctum-changelog.js +399 -0
- package/dist/noctum-cli.js +539 -0
- package/dist/noctum-coordenacao.js +1225 -0
- package/dist/noctum-entrega.js +1217 -0
- package/dist/noctum-envelope.js +253 -17
- package/dist/noctum-execucao.js +100 -24
- package/dist/noctum-fechamento.js +416 -0
- package/dist/noctum-fila.js +49 -10
- package/dist/noctum-guarda.js +333 -0
- package/dist/noctum-integracao.js +507 -0
- package/dist/noctum-maquinas.js +387 -0
- package/dist/noctum-medicao.js +450 -0
- package/dist/noctum-modo.js +390 -0
- package/dist/noctum-pergunta-canal.js +96 -0
- package/dist/noctum-pergunta.js +115 -0
- package/dist/noctum-provas.js +838 -0
- package/dist/noctum-reconciliacao.js +594 -0
- package/dist/noctum-rede.js +102 -0
- package/dist/noctum-registro.js +215 -0
- package/dist/noctum-relatorio.js +861 -0
- package/dist/noctum-resposta.js +207 -0
- package/dist/noctum-retomada-rede.js +71 -0
- package/dist/noctum-sessoes-em-voo.js +93 -0
- package/dist/noctum-supervisao.js +649 -0
- package/dist/noctum-terminal.js +459 -0
- package/dist/noctum-transporte.js +655 -0
- package/dist/noctum-vigia.js +679 -0
- package/dist/ocupacao.js +3 -1
- package/dist/onboarding.js +16 -5
- package/dist/orkmind.js +39 -23
- package/dist/orquestracao.js +31 -35
- package/dist/parado-no-condutor.js +160 -139
- package/dist/phase.js +96 -42
- package/dist/policies.js +33 -0
- package/dist/postura-local.js +11 -6
- package/dist/preflight.js +2 -1
- package/dist/procedencia.js +9 -14
- package/dist/projeto-alvo.js +59 -20
- package/dist/prompts.js +136 -42
- package/dist/prova-minima.js +5 -6
- package/dist/pulse-cadencia.js +5 -4
- package/dist/pulse-consentimento.js +53 -1
- package/dist/pulse-delivery.js +143 -27
- package/dist/pulse-resposta.js +368 -4
- package/dist/pulse.js +136 -3
- package/dist/ratelimit.js +13 -4
- package/dist/recall.js +14 -13
- package/dist/rede-adesao.js +13 -8
- package/dist/rede-forja.js +108 -24
- package/dist/rede-status.js +63 -45
- package/dist/rede.js +86 -46
- package/dist/retomada-checkpoint.js +101 -0
- package/dist/retry.js +326 -78
- package/dist/roadmap-reservas.js +32 -32
- package/dist/runtime-ambiente.js +5 -0
- package/dist/runtime-context.js +279 -85
- package/dist/runtime-escada.js +429 -0
- package/dist/runtime-profiles.js +130 -63
- package/dist/runtimes.js +42 -5
- package/dist/saida-segura.js +3 -2
- package/dist/security-scan/agil.js +366 -0
- package/dist/security-scan/cli.js +76 -0
- package/dist/security-scan/compare.js +149 -0
- package/dist/security-scan/config.js +93 -0
- package/dist/security-scan/detect.js +97 -0
- package/dist/security-scan/executor.js +196 -0
- package/dist/security-scan/guard.js +180 -0
- package/dist/security-scan/imagem-de-lint.js +96 -0
- package/dist/security-scan/normalize/actionlint.js +12 -0
- package/dist/security-scan/normalize/eslint.js +12 -0
- package/dist/security-scan/normalize/gitleaks.js +13 -0
- package/dist/security-scan/normalize/golangci-lint.js +13 -0
- package/dist/security-scan/normalize/govulncheck.js +36 -0
- package/dist/security-scan/normalize/index.js +25 -0
- package/dist/security-scan/normalize/npm-audit.js +30 -0
- package/dist/security-scan/normalize/osv-scanner.js +32 -0
- package/dist/security-scan/normalize/oxlint.js +51 -0
- package/dist/security-scan/normalize/pip-audit.js +16 -0
- package/dist/security-scan/normalize/ruff.js +12 -0
- package/dist/security-scan/normalize/semgrep.js +20 -0
- package/dist/security-scan/normalize/trivy.js +33 -0
- package/dist/security-scan/normalize/util.js +204 -0
- package/dist/security-scan/normalize/zizmor.js +19 -0
- package/dist/security-scan/report.js +156 -0
- package/dist/security-scan/run.js +448 -0
- package/dist/security-scan/tools.js +62 -0
- package/dist/security-scan/trabalhador.js +74 -0
- package/dist/security-scan/types.js +15 -0
- package/dist/session-events.js +19 -2
- package/dist/session-watcher-claude.js +74 -19
- package/dist/session-watcher-grok.js +425 -0
- package/dist/session-watcher.js +174 -13
- package/dist/sessoes-contas.js +42 -5
- package/dist/sessoes-inventario.js +1 -1
- package/dist/sessoes.js +25 -23
- package/dist/setup.js +67 -66
- package/dist/ship-publicar.js +263 -92
- package/dist/ship.js +160 -17
- package/dist/superficie.js +14 -11
- package/dist/thread-close.js +9 -9
- package/dist/thread.js +121 -18
- package/dist/tokens.js +15 -11
- package/dist/trabalho-thread.js +297 -0
- package/dist/transporte-do-canal.js +189 -0
- package/dist/types.js +12 -1
- package/dist/util.js +5 -2
- package/dist/varredura-acoes.js +500 -0
- package/dist/verify.js +491 -32
- package/dist/worktree-local.js +12 -10
- package/dist/worktree.js +81 -85
- package/eval/casos/check-quality.json +77 -0
- package/eval/casos/security-auditor.json +148 -0
- package/eval/casos/security-remediation.json +161 -0
- package/eval/fixtures/security-scan/README.md +8 -0
- package/eval/fixtures/security-scan/go/.github/workflows/ci.yml +12 -0
- package/eval/fixtures/security-scan/go/Dockerfile +4 -0
- package/eval/fixtures/security-scan/go/README.md +4 -0
- package/eval/fixtures/security-scan/go/config.go +4 -0
- package/eval/fixtures/security-scan/go/go.mod +5 -0
- package/eval/fixtures/security-scan/go/go.sum +2 -0
- package/eval/fixtures/security-scan/go/main.go +31 -0
- package/eval/fixtures/security-scan/js/.github/workflows/ci.yml +12 -0
- package/eval/fixtures/security-scan/js/Dockerfile +3 -0
- package/eval/fixtures/security-scan/js/README.md +4 -0
- package/eval/fixtures/security-scan/js/package-lock.json +844 -0
- package/eval/fixtures/security-scan/js/package.json +10 -0
- package/eval/fixtures/security-scan/js/src/config.js +4 -0
- package/eval/fixtures/security-scan/js/src/server.js +17 -0
- package/eval/fixtures/security-scan/js/src/util.ts +4 -0
- package/eval/fixtures/security-scan/js/tsconfig.json +4 -0
- package/eval/fixtures/security-scan/python/.github/workflows/ci.yml +12 -0
- package/eval/fixtures/security-scan/python/Dockerfile +3 -0
- package/eval/fixtures/security-scan/python/README.md +4 -0
- package/eval/fixtures/security-scan/python/app/__init__.py +0 -0
- package/eval/fixtures/security-scan/python/app/config.py +2 -0
- package/eval/fixtures/security-scan/python/app/main.py +19 -0
- package/eval/fixtures/security-scan/python/requirements.txt +1 -0
- package/package.json +10 -5
- package/references/security-checklist.md +3 -3
- package/skills/README.md +1 -0
- package/skills/core/orkastery-bootstrap/SKILL.md +2 -2
- package/skills/phases/check-quality/SKILL.md +16 -0
- package/skills/phases/go-implementation/SKILL.md +6 -0
- package/skills/phases/security-remediation/SKILL.md +70 -0
- package/skills/reviewers/security-auditor/SKILL.md +25 -0
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
# Claude Code Adapter
|
|
2
|
+
|
|
3
|
+
Orkastery reaches Claude Code as a **plugin**: the catalog's 18 thin skills, six phase
|
|
4
|
+
subagents, the slash commands `/goal` ... `/master` and a `PreToolUse` guard.
|
|
5
|
+
|
|
6
|
+
## Installation
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
ork adapter install claude-code --dry-run
|
|
10
|
+
ork adapter install claude-code # prepara <projeto>/.claude/plugins/orkastery
|
|
11
|
+
claude plugin validate .claude/plugins/orkastery
|
|
12
|
+
claude plugin marketplace add "$PWD/.claude/plugins/orkastery" --scope project
|
|
13
|
+
claude plugin install orkastery@orkastery --scope project
|
|
14
|
+
claude plugin details orkastery
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The installer copies the single catalog from `skills/` and `references/`, renders the plugin manifest
|
|
18
|
+
with the paths declared one by one, and writes `INSTALADO.json` with the source and the sha256 of each
|
|
19
|
+
file. That file is what later lets you detect that someone edited the installed copy instead of the
|
|
20
|
+
catalog.
|
|
21
|
+
|
|
22
|
+
Copying the adapter does not enable the plugin in Claude. The native commands above register
|
|
23
|
+
the marketplace and enable the plugin in the current project. First confirm that the name
|
|
24
|
+
`orkastery` does not belong to another marketplace, and preserve the existing settings.
|
|
25
|
+
The manifest uses the default discovery of `agents/` and `hooks/hooks.json`: declaring the
|
|
26
|
+
directory as `agents` is invalid in Claude 2.1.263; declaring the default file again
|
|
27
|
+
in `hooks` causes a loading error due to duplication.
|
|
28
|
+
|
|
29
|
+
The scope must be proven in each worktree. In the Claude 2.1.263 trials,
|
|
30
|
+
`--scope project` enabled the explicitly configured directories, while
|
|
31
|
+
`--scope local` on main also reached an unconfigured worktree. Do not use that
|
|
32
|
+
last mechanism to exclude threads. The [activation plan](ACTIVATION.md) describes
|
|
33
|
+
preservation, exclusions, dispatch proof and rollback before operational use.
|
|
34
|
+
|
|
35
|
+
Native validation, installation and startup without a model:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm --prefix core run build
|
|
39
|
+
npm --prefix core run build:test
|
|
40
|
+
node adapters/claude-code/test/native-plugin.cjs
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The test creates the project and worktrees through the `ork` API, isolates cache/configuration with
|
|
44
|
+
`CLAUDE_CONFIG_DIR` and checks the CLI startup as well as the inventory. A worktree
|
|
45
|
+
that is not enabled and another project must load zero hooks. The explicit test
|
|
46
|
+
`node adapters/claude-code/test/native-plugin.cjs --smoke` also opens two real
|
|
47
|
+
sessions and requires `PermissionRequest` in the canonical ledger, without approving Bash. That smoke
|
|
48
|
+
test requires Linux, Python 3/pexpect and subscription OAuth in `ANTHROPIC_TOKEN` in the file
|
|
49
|
+
`~/.hermes/.env`; it uses no API key and no fallback. The global configuration
|
|
50
|
+
stays out of the fixture. The temporary sessions and ledgers are discarded;
|
|
51
|
+
keep the JSON output as a receipt before declaring the proof complete.
|
|
52
|
+
|
|
53
|
+
**Maestro activation proof (RM-032).** `node core/scripts/prova-ativacao.cjs claude-code`
|
|
54
|
+
installs the plugin and the `.mcp.json` from this copy in a throwaway project and opens a new session
|
|
55
|
+
`claude -p "orkastery maestro"` with `--plugin-dir`, `--mcp-config --strict-mcp-config`,
|
|
56
|
+
`--setting-sources project` and `--no-session-persistence`. It uses the CLI's native login, without copying
|
|
57
|
+
credentials and without writing to the global plugin registry. It passes only when the model calls
|
|
58
|
+
`mcp__orkastery__ork_maestro` (`ork maestro` through Bash is a detour) and the snapshot is from the throwaway
|
|
59
|
+
project; the receipt carries the sha256 of the global files before and after. Default model: `sonnet`
|
|
60
|
+
(`--modelo` changes it). Details in the [snapshot contract](../../docs/referencia/contratos/maestro-i32.md).
|
|
61
|
+
|
|
62
|
+
## What you get
|
|
63
|
+
|
|
64
|
+
| You type | You get |
|
|
65
|
+
|---|---|
|
|
66
|
+
| `/goal <pedido com #TAG>` | Opens the thread in the tag's mode and conducts the GOAL phase |
|
|
67
|
+
| `/plan <thread>` | PLAN: tasks with verify, `touch_paths`, locked decisions |
|
|
68
|
+
| `/go <thread>` | GO: worktree ensured, baseline recorded, one commit per task |
|
|
69
|
+
| `/check <thread>` | CHECK: verification against the baseline, five axes, one verdict |
|
|
70
|
+
| `/ship <thread>` | SHIP: merge serialized by lease and proven push |
|
|
71
|
+
| `/master <thread>` | MASTER: typed POSTMORTEM and the human score from 0 to 5 |
|
|
72
|
+
| `/ork` | Panel: doctor, board, scheduler, modos, score queue |
|
|
73
|
+
|
|
74
|
+
Plus six subagents (`ork-goal`, `ork-plan`, `ork-go`, `ork-check`, `ork-ship`, `ork-master`) to
|
|
75
|
+
isolate the context of each phase, the `PreToolUse` guard and the `UserPromptSubmit` hook for the owner's short answer.
|
|
76
|
+
|
|
77
|
+
## The PreToolUse guard
|
|
78
|
+
|
|
79
|
+
One hook, on `Bash`, calling `hooks/ork-guard.js`. It blocks seven classes of command:
|
|
80
|
+
|
|
81
|
+
| Block | Why |
|
|
82
|
+
|---|---|
|
|
83
|
+
| `git add -A`, `git add --all`, `git add .` | Swallow files from another thread in the same tree |
|
|
84
|
+
| `git commit -a` | Commits whatever is tracked, not the task |
|
|
85
|
+
| `git push --force` | Rewrites public history and erases someone else's delivery |
|
|
86
|
+
| `git push` | A manual push is not proven: delivery goes through `ork ship` |
|
|
87
|
+
| `git reset --hard`, `git clean -fd`, `git checkout -- .` | Mass discard without a trace |
|
|
88
|
+
| `rm -rf` with a broad or variable target | Deletes what nobody asked for |
|
|
89
|
+
| `ork noctum terminal` and the answer hook called by the tool | The owner's answer in the terminal comes from the hook of the owner's own session; the agent that calls this ingress poses as the owner (RM-057) |
|
|
90
|
+
|
|
91
|
+
**The guard has no business rule.** It does not read the ledger, does not know who authorized what and does not
|
|
92
|
+
know any thread: it recognizes the shape of the command and sends the agent down the path that `ork`
|
|
93
|
+
verifies. A command that starts with `ork` goes straight through, because the one that proves the push and serializes the merge is
|
|
94
|
+
the core; the exception is the owner's answer ingress (`ork noctum terminal`), blocked before that
|
|
95
|
+
pass-through. And if the guard itself breaks, it **fails open**: a hook that takes down the session over its own bug
|
|
96
|
+
is worse than no hook. The block on the answer ingress is a speed bump, not proof: whoever runs as the
|
|
97
|
+
same system user gets around it, and the limit is stated below.
|
|
98
|
+
|
|
99
|
+
## The owner's short answer in the terminal (RM-057)
|
|
100
|
+
|
|
101
|
+
**Turned off.** Since GO-FIX 2 of RM-057, the core records nothing through the terminal. In an interactive
|
|
102
|
+
Claude Code session, when the owner types the short answer to a question waiting for them (`sim`, `a` or
|
|
103
|
+
`<código> a`), the `UserPromptSubmit` hook (`hooks/ork-resposta.js`) takes the event to the core through
|
|
104
|
+
`ork noctum terminal --hook-stdin`, and the core only returns the refusal `noctum.terminal.desligado`: with someone
|
|
105
|
+
present, the owner sees a notice (`systemMessage`) to answer on Telegram, in reply to the question's
|
|
106
|
+
message or with the code and the letter, or through the Claude Code confirmation window (the native dialog, one
|
|
107
|
+
click). The prompt goes on to the model, and nothing is recorded or forwarded, not even an answer to a gate. Ordinary
|
|
108
|
+
conversation does not even call the core, and neither does a prompt the machine wrote (the event's `source` field other than
|
|
109
|
+
`user`).
|
|
110
|
+
|
|
111
|
+
**Why it is off:** the installed Claude Code (2.1.306) does not send the event's `source` yet, and without it
|
|
112
|
+
nothing from the owner would be recorded. And the agent of the owner's own session, through the Bash tool, swaps the shell for the
|
|
113
|
+
core with `exec`, drops the `AI_AGENT` mark and forges the event with `source` equal to `user`: the process
|
|
114
|
+
chain and the guard are speed bumps, not proof. Turned on, the ingress would not serve the owner and would serve whoever
|
|
115
|
+
forges the event.
|
|
116
|
+
|
|
117
|
+
**What is missing to turn it back on**, in a dedicated slice: Claude Code sending the human origin of the event
|
|
118
|
+
(`source`); a proof that the event came from the harness hook, and not from a process of the same user; and,
|
|
119
|
+
for the bare word, the question shown required to be the line the core builds for it, or only the code
|
|
120
|
+
with the letter. The ingress code stays in the core behind the `TERMINAL_LIGADO` switch, off; only the
|
|
121
|
+
tests turn it on, and the CLI and the hook never do.
|
|
122
|
+
|
|
123
|
+
**Limit:** the boundary is the system account. In the native dialog, any MCP client of the same user that
|
|
124
|
+
declares the form gets through, without a key. To separate the core from the agents, run the agents under another account
|
|
125
|
+
or sandbox. The notice only shows after reinstalling the plugin (`ork adapter install claude-code`) and with an
|
|
126
|
+
`ork` that has `noctum terminal`.
|
|
127
|
+
|
|
128
|
+
## Session sensors
|
|
129
|
+
|
|
130
|
+
`PermissionRequest`, `Notification`, `Stop`, `SubagentStop` and `PostToolUse` call
|
|
131
|
+
`ork sessions event` with the session and the directory provided by Claude. The session must
|
|
132
|
+
be registered in a project thread. `ORK_SENSOR_CLI` can point to the installed ork
|
|
133
|
+
executable; the default is `ork` in the PATH. Each call has a three-second timeout.
|
|
134
|
+
|
|
135
|
+
The sensor leaves stdout empty and exits with code zero, even on failure. It observes the
|
|
136
|
+
block without deciding the permission. `PermissionRequest` captures the immediate request;
|
|
137
|
+
`Notification` with `permission_prompt` only fires after about six seconds, according to the
|
|
138
|
+
[hooks reference](https://code.claude.com/docs/en/hooks#permissionrequest).
|
|
139
|
+
|
|
140
|
+
The ledger receives timestamps and identifiers, without prompts, commands or transcripts.
|
|
141
|
+
`PostToolUse` records progress; for Bash, a commit receipt is only emitted when the
|
|
142
|
+
result contains the HEAD SHA confirmed in Git. The received command is never executed.
|
|
143
|
+
`Stop` and `SubagentStop` are separate observations and do not approve a phase.
|
|
144
|
+
|
|
145
|
+
Isolated integration test: `npm --prefix core run build && npm --prefix core run build:test && node --test core/dist-test/test/claude-sensors.test.js`.
|
|
146
|
+
|
|
147
|
+
The canary `node core/dist/index.js eval --so-canarios --canario fx-sensores-runtime`
|
|
148
|
+
integrates hook, CLI, supervisor and watcher in a temporary repository. Its Codex events
|
|
149
|
+
are synthetic; the output states that limit and measures ingestion, death and duplicates.
|
|
150
|
+
|
|
151
|
+
For acceptance testing with the authenticated subscriptions, run explicitly:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
node core/scripts/smoke-sensores.cjs --runtime claude
|
|
155
|
+
node core/scripts/smoke-sensores.cjs --runtime codex
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
The harness requires a regular user; Claude requires Python 3 with `pexpect`. It creates a temporary
|
|
159
|
+
project and accepts trust only in that project it has just created. Claude runs
|
|
160
|
+
in a PTY with a mandatory Bash permission: the test observes the real dialog, the moment of the
|
|
161
|
+
hook and the ingestion in the ledger, and ends the session without approving the tool. The output includes
|
|
162
|
+
the code/signal of that controlled shutdown, without claiming a human answer or approval.
|
|
163
|
+
Codex runs a short command and the harness checks the produced file, tokens, rollout
|
|
164
|
+
and supervised receipt. Rollout discovery is redone at the end because its creation
|
|
165
|
+
can happen after `thread.started`. The sandbox comes from `runtime.sandbox` in the manifest
|
|
166
|
+
of the execution directory, with no override from the harness. The write proof under `read-only`
|
|
167
|
+
fails, which preserves the configured mode.
|
|
168
|
+
|
|
169
|
+
Each command emits JSON and returns code 1 when the proof is missing. Credential variables
|
|
170
|
+
and paid API redirection are removed; there is no fallback. HOME, CODEX_HOME,
|
|
171
|
+
CLAUDE_CONFIG_DIR, XDG and temporary files stay inside the attempt, along with the ledgers.
|
|
172
|
+
The receipt lists the native files and confirms the cleanup of those resources only.
|
|
173
|
+
Claude uses subscription OAuth only in the environment. Codex reads its native cache through a sealed Linux
|
|
174
|
+
`memfd`, without a persistent copy of credentials or writing to the source.
|
|
175
|
+
A refresh that needs to write to the cache makes the proof unavailable. See the limits
|
|
176
|
+
and the handling of the legacy T9 rollout in the [activation plan](ACTIVATION.md).
|
|
177
|
+
Keep the JSON in the evidence directory of the conductor
|
|
178
|
+
thread. The harness contract test neither launches runtimes nor replaces these smokes.
|
|
179
|
+
The sandbox network permission prompt has a separate flow, described in the
|
|
180
|
+
[PermissionRequest reference](https://code.claude.com/docs/en/hooks#permissionrequest).
|
|
181
|
+
|
|
182
|
+
Without `tool_use_id`, each hook invocation receives an occurrence identity. The size
|
|
183
|
+
of the transcript does not identify an occurrence; events from a new permission episode
|
|
184
|
+
can arrive without any change to the file. Replays with `tool_use_id` remain idempotent.
|
|
185
|
+
|
|
186
|
+
## Mods in phase sessions (RM-059)
|
|
187
|
+
|
|
188
|
+
A mod is a *function hooks* plugin for Claude Code 2.1.287 or newer. Each Orkastery mod lives
|
|
189
|
+
in `adapters/claude-code/mods/<mod>/`, with its own `.claude-plugin/plugin.json`, and declares its
|
|
190
|
+
role in `orkastery-mod.json`:
|
|
191
|
+
|
|
192
|
+
```json
|
|
193
|
+
{"formato":"ork.mod/v1","papeis":["fase"],"claudeCodeMinimo":"2.1.287"}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
The `dono` (owner) role runs in the session of whoever conducts; the `fase` (phase) role, in the phase sessions that `ork`
|
|
197
|
+
dispatches. `ork adapter install claude-code` copies the mods with the rest of the adapter and records every
|
|
198
|
+
file of theirs in `INSTALADO.json`. In the `claude-bg` dispatch, each `fase` role mod goes in with its
|
|
199
|
+
own `--plugin-dir`, right after the Orkastery plugin, when:
|
|
200
|
+
|
|
201
|
+
- the mod's installed folder has exactly the files in the receipt, with the same bytes and no link;
|
|
202
|
+
the types that Claude Code itself writes in `.claude-plugin/types/` (`*.d.ts` and
|
|
203
|
+
`tsconfig.json`) are left out of the count;
|
|
204
|
+
- `claude --version` meets the mod's `claudeCodeMinimo` and the 2.1.287 required by the mods API.
|
|
205
|
+
|
|
206
|
+
A mod that asks for a newer version is left out of the command, and the dispatch goes on: the core does not depend on
|
|
207
|
+
mods. A mod whose dependency was left out (because of the version, or because it is `dono` role only) is left out too.
|
|
208
|
+
An invalid declaration, a manifest outside the receipt or an extra file in the folder refuses the dispatch with
|
|
209
|
+
`runtime.context.installation`, just like a mismatched byte. A mod file that left the catalog leaves the
|
|
210
|
+
copy on reinstall: `ork adapter install claude-code` removes what it installed itself and nobody
|
|
211
|
+
edited. A file edited or added by hand stays, and the refusal names the path to delete. The dependency (`dependencies` in the mod's
|
|
212
|
+
`plugin.json`) goes in before the mod that depends on it; the rest go in name order. The mods that went in are kept in the
|
|
213
|
+
command recorded in the `phase_dispatch` event of the thread ledger.
|
|
214
|
+
|
|
215
|
+
The shared file at the root of `mods/`, such as the authority list that the bridge reads at `../autoridade.json`
|
|
216
|
+
before its own folder, follows the same rule when there is a phase mod in the dispatch: outside the receipt, a link
|
|
217
|
+
or a special file means refusal, and what left the catalog leaves the copy on reinstall.
|
|
218
|
+
|
|
219
|
+
To take a mod out of phase sessions, change the role in the catalog's `orkastery-mod.json`, or remove the
|
|
220
|
+
mod, and run `ork adapter install claude-code` again.
|
|
221
|
+
|
|
222
|
+
A `dono` role mod does not go into the dispatch: it runs in the session of whoever conducts. In a project with the
|
|
223
|
+
adapter installed, its copy is already at `.claude/plugins/orkastery/mods/<mod>`, with every
|
|
224
|
+
file recorded in `INSTALADO.json` and the shared files from the root of `mods/` next to it. When it is
|
|
225
|
+
loaded this way, nobody checks the bytes: the check against the receipt runs at dispatch, for phase
|
|
226
|
+
mods. Load it in the session with:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
claude --plugin-dir .claude/plugins/orkastery/mods/<mod>
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Without the local adapter, each mod has an entry in the repository's own marketplace
|
|
233
|
+
(`.claude-plugin/marketplace.json`, generated by `node core/scripts/gerar-marketplaces.cjs`), which points
|
|
234
|
+
to a generated copy in `marketplaces/claude-code/mods/<mod>/`. Installed through the marketplace, the plugin
|
|
235
|
+
is only its own folder, so the shared file at the root of `adapters/claude-code/mods/` (the bridge's
|
|
236
|
+
authority list, for example) goes inside each copy. Installation is at project scope:
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
claude plugin marketplace add orkastery/orkastery
|
|
240
|
+
claude plugin install <mod>@orkastery --scope project
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
Both marketplaces are named `orkastery`, and the local one, registered by the installation above from
|
|
244
|
+
`.claude/plugins/orkastery`, does not list the mods. Do not swap one for the other in a project that uses the
|
|
245
|
+
adapter plugin: removing a marketplace uninstalls the plugins that came from it (measured on
|
|
246
|
+
Claude Code 2.1.296), and the plugin from the repository marketplace brings neither the `PreToolUse` guard nor the
|
|
247
|
+
adapter's MCP.
|
|
248
|
+
|
|
249
|
+
### Batch Brake (`ork-freio`)
|
|
250
|
+
|
|
251
|
+
The first `fase` role mod. In the phase session, after each batch of tools, it:
|
|
252
|
+
|
|
253
|
+
- finds the files the batch touched: the paths from `Edit`, `Write`, `MultiEdit` and `NotebookEdit` and the
|
|
254
|
+
difference in `git status` between one batch and the next, which also catches edits made through `Bash`;
|
|
255
|
+
- finds the thread's claims that cite those files, by `arquivo` or by the command text, and warns
|
|
256
|
+
when the batch touched files outside the plan's `touch_paths`;
|
|
257
|
+
- asks the core, in the background, to check those claims with
|
|
258
|
+
`ork claims conferir <thread> --claims ... --json`, in the verify sandbox, one round at a time;
|
|
259
|
+
- returns to the model, in the next batch of the main loop, what broke: the claim id, the command and the
|
|
260
|
+
tail of the output. A batch with no affected claim passes with no text, and the status line shows the claims at risk.
|
|
261
|
+
A subagent's batch counts the touched files, but does not get the delivery or the warning.
|
|
262
|
+
|
|
263
|
+
The Brake never runs a claim's command, never writes claim state and never stops the loop: the one that
|
|
264
|
+
really verifies is still `ork verify`. It reads the role and the thread through the bridge's `$.ork`, and
|
|
265
|
+
the claims and the plan through the read tools `ork_claims_list` and `ork_artifact_read`, never from the
|
|
266
|
+
disk in `.orkastery/`. It needs an `ork` with `ork claims conferir` in the session's `PATH`; without it, or
|
|
267
|
+
without the verify sandbox, it warns once that the check is unavailable and goes on. A test that creates a
|
|
268
|
+
process can fail in the sandbox and pass in `ork verify`, and the warning says so along with the failure. The
|
|
269
|
+
result arrives in the next batch: if the session ends before that, the last check is left
|
|
270
|
+
undelivered. A claim failure whose file was touched again during the check is not delivered, because
|
|
271
|
+
a new check has already been requested. A failed `Edit` also counts as a touch and can request an
|
|
272
|
+
extra check.
|
|
273
|
+
|
|
274
|
+
### Task Gate (`ork-portao`)
|
|
275
|
+
|
|
276
|
+
The second `fase` role mod. The board gates act only in the phase session whose current block includes GO
|
|
277
|
+
(by the block slug in the core snapshot) and whose thread has a plan with at least one `T<n>` task that
|
|
278
|
+
fits the board: with `touch_paths` (backticked paths, with a slash, dot or wildcard) and a verify with a single
|
|
279
|
+
backticked command, the rule of `ork claims conferir --tarefa`. A plan with no such task gets no
|
|
280
|
+
gate, so the GO board does not lock up. With the gate on:
|
|
281
|
+
|
|
282
|
+
- **creation:** `TaskCreated` refuses a task whose subject does not carry the id of a plan task
|
|
283
|
+
(`T2.1 ...`), or whose plan task does not fit the board. The refusal goes back to the model with the reason and the
|
|
284
|
+
plan tasks that fit;
|
|
285
|
+
- **completion:** `TaskCompleted` for the task recorded at creation, or for one whose subject cites a plan
|
|
286
|
+
task that fits, asks the core for `ork claims conferir <thread> --tarefa T2.1 --prazo 540 --json`, in the
|
|
287
|
+
verify sandbox, and only lets the task close with the item approved. A failure comes back with the command, the
|
|
288
|
+
exit code and the tail of the output; no verdict, a typed refusal, another conduction in the thread, a check that does not run
|
|
289
|
+
or a failure of the Gate itself also block, always with the way out: fix and complete again, or return
|
|
290
|
+
the task to `pending` and move on. The recorded task is still checked even if the plan is unreadable at the
|
|
291
|
+
time, because the core reads the plan on its own. One check at a time: a completion that arrives in the
|
|
292
|
+
middle of another is refused right away. From the third identical failure on, the text says to leave the task
|
|
293
|
+
open;
|
|
294
|
+
- **idle teammate:** with agent teams in the pilot (below), `TeammateIdle` hands the teammate the next
|
|
295
|
+
plan task that fits, has not closed in this session and whose region is free: no active `path:` lease,
|
|
296
|
+
from any thread, crosses its `touch_paths`, and it does not cross the other teammates' tasks. The leases
|
|
297
|
+
come from the snapshot of all threads through the bridge's `maestro` query
|
|
298
|
+
(`ork maestro --json --section leases --offset N`), following the `nextOffset` of the pages that the snapshot's byte
|
|
299
|
+
cap cuts off, up to 10 pages, because the phase session's MCP server only shows those of its own
|
|
300
|
+
thread. The Gate neither takes nor releases a lease: `ork_git_commit` takes the `path:` of each file at
|
|
301
|
+
commit time and refuses the commit with any lease on the path. A teammate that goes idle without completing returns the task,
|
|
302
|
+
which leaves this session's automatic distribution. Without the full lease list (section unavailable,
|
|
303
|
+
gap, conflicting snapshot or more than 10 pages), at the cost cap or with no free task, the teammate
|
|
304
|
+
stays idle.
|
|
305
|
+
|
|
306
|
+
The Gate never runs verify on its own: the one that really verifies is still `ork verify`.
|
|
307
|
+
It reads the role through the bridge's `$.ork.contexto`, the state and the block through `$.ork.retrato`, the leases through the
|
|
308
|
+
bridge's `maestro` query and the plan through `ork_artifact_read`, never from the disk in `.orkastery/`. A test that
|
|
309
|
+
creates a process can fail in the sandbox and pass in `ork verify`, and the block says so.
|
|
310
|
+
|
|
311
|
+
Agent teams in the phase session only run in the pilot, off by default. Whoever conducts turns it on in the root
|
|
312
|
+
manifest:
|
|
313
|
+
|
|
314
|
+
```yaml
|
|
315
|
+
runtime:
|
|
316
|
+
agent_teams:
|
|
317
|
+
ligado: true
|
|
318
|
+
teammates: 2 # teto de teammates vivos, de 1 a 8
|
|
319
|
+
custo_usd: 10 # teto do custo da sessão, como o /cost soma, até 500
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
With the switch on, GO in the current phase block and the Gate among the mods that go to the session, the
|
|
323
|
+
`claude-bg` dispatch adds to `--settings` the variable `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS`, the two caps
|
|
324
|
+
(`ORK_AGENT_TEAMS_TEAMMATES` and `ORK_AGENT_TEAMS_CUSTO_USD`) and `teammateMode` `in-process`, because the background
|
|
325
|
+
session has no `tmux`. An invalid cap becomes a manifest warning and leaves it off. In every phase session,
|
|
326
|
+
with or without the board gate, the Gate refuses to spawn a teammate without the caps, at the live teammate
|
|
327
|
+
cap or with the session cost at the cap, and at the cost cap it hands out no new task.
|
|
328
|
+
|
|
329
|
+
Known limits:
|
|
330
|
+
|
|
331
|
+
- the Gate's board holds for the session: in a redispatched GO session, a task closed in the previous one can
|
|
332
|
+
be handed to the teammate again, who finds it done on the board and in git;
|
|
333
|
+
- the lead gets no warning when a teammate returns a task; it sees it open on the board;
|
|
334
|
+
- the Brake's check, in the background, and the Gate's, at completion, can run at the same time in the
|
|
335
|
+
same worktree; each mod only serializes its own;
|
|
336
|
+
- the caps depend on the Gate actually loading: the dispatch decides by `--plugin-dir`, and if the mod does not
|
|
337
|
+
register in the session, agent teams stays on with nobody enforcing the caps;
|
|
338
|
+
- if the turn is interrupted in the middle of the check, Claude Code goes on without the hook's answer;
|
|
339
|
+
- a lease name that the snapshot redacts (an absolute path or text that looks like a secret) arrives unrecognizable and
|
|
340
|
+
crosses no region;
|
|
341
|
+
- the behavior of these events in a real `claude --bg` session with agent teams has not been measured yet; the
|
|
342
|
+
kit and core tests cover the mod and the dispatch.
|
|
343
|
+
|
|
344
|
+
## The conduction #TAG
|
|
345
|
+
|
|
346
|
+
The `/goal` command extracts the mode from the request itself, without reimplementing anything:
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
MODO=$(ork modos --do-pedido "$ARGUMENTS")
|
|
350
|
+
ork thread new "<nome>" --mode "$MODO" --worktree auto
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
`ork modos --do-pedido` uses the same `extrairTagDoPedido` as the core. Without a tag in the text, the manifest's
|
|
354
|
+
`conduction.default_mode` applies. **Validation against `conduction.allowed_modes` belongs to the
|
|
355
|
+
core**, inside `ork thread new`: the host carries the tag and never decides whether it is valid.
|
|
356
|
+
|
|
357
|
+
## The 3 installation pitfalls
|
|
358
|
+
|
|
359
|
+
These are the three known ways for the installation to "succeed" and not work. The installer checks all
|
|
360
|
+
three, and `--dry-run` shows what it will do about each one.
|
|
361
|
+
|
|
362
|
+
1. **A manifest without the skill paths installs cleanly and exposes nothing.** A Claude
|
|
363
|
+
Code plugin auto-discovers `skills/<nome>/SKILL.md` and stops there: it does not descend into the bucket directories
|
|
364
|
+
(`core/`, `phases/`, `reviewers/`, ...) that this catalog uses. That is why `plugin.json` declares the
|
|
365
|
+
paths one by one. The test compares those paths with the source catalog and requires
|
|
366
|
+
`onboarding`, added by I15. In this catalog, `claude plugin details orkastery`
|
|
367
|
+
must report 29 entries: 21 skills and 8 commands (the `Skills (29)` line). Startup registers
|
|
368
|
+
skills and commands separately. The earlier proofs, with 17 and 18 skills, are historical.
|
|
369
|
+
Also check the six agents and six hook events, with no loading errors.
|
|
370
|
+
|
|
371
|
+
2. **Two copies of the catalog diverge, and the divergence only shows up when it has already cost a delivery.**
|
|
372
|
+
The single source is `skills/` at the product root. The installer copies from there and records the source and the
|
|
373
|
+
sha256 of each file in `INSTALADO.json`; reinstalling with `--force` resyncs. Editing the
|
|
374
|
+
installed copy is a red flag: the fix goes back to the catalog and comes down again through the
|
|
375
|
+
installer.
|
|
376
|
+
|
|
377
|
+
3. **A hook with a relative path silently fails to run, and the guard becomes decoration.** The
|
|
378
|
+
`hooks.json` calls `node "${CLAUDE_PLUGIN_ROOT}/hooks/ork-guard.js"`, never a path relative
|
|
379
|
+
to the working directory, which changes with each thread worktree. After installing, prove that the
|
|
380
|
+
guard script works in isolation:
|
|
381
|
+
|
|
382
|
+
```bash
|
|
383
|
+
echo '{"tool_name":"Bash","tool_input":{"command":"git add -A"}}' \
|
|
384
|
+
| node <plugin>/hooks/ork-guard.js ; echo "codigo: $?"
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
Exit code 2 and a `deny` decision in the output: the guard is alive. Exit code 0: the hook is not blocking anything.
|
|
388
|
+
|
|
389
|
+
## Do not confuse the two layers
|
|
390
|
+
|
|
391
|
+
Claude Code appears twice in the Orkastery architecture. **Here it is Layer 1**, the podium: the
|
|
392
|
+
host where the builder talks and where the `ork` calls come from. It is also **Layer 3**, the
|
|
393
|
+
orchestra, when `ork` dispatches `claude --bg` to write code, and that runtime adapter
|
|
394
|
+
lives in `core/src/adapters/claude-bg.ts`, called by the core. They are different roles in the same
|
|
395
|
+
program, and mixing the two is how the original Orkastery ended up promising an engine it never had.
|
|
396
|
+
# Maestro Entry Point
|
|
397
|
+
|
|
398
|
+
In a new session with the plugin enabled, say `orkastery maestro`. The entry point queries
|
|
399
|
+
`mcp__orkastery__ork_maestro` and presents sources, gaps and available actions.
|
|
400
|
+
The fixture installation proves the files/routing; activation and a real conversation
|
|
401
|
+
depend on the post-SHIP receipt. HITL prioritizes a recommendation, clear options and a native
|
|
402
|
+
question in the conductor. Telegram is optional. An authentication failure does not authorize switching
|
|
403
|
+
provider, runtime or permissions.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ork-check
|
|
3
|
+
description: "Conducts the CHECK phase: re-runs the verification against the baseline, goes through the five axes and consolidates a single verdict. Does not fix what it finds."
|
|
4
|
+
tools: Bash(ork:*), Bash(git:*), Read, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You conduct the CHECK phase of an Orkastery thread, and only that phase.
|
|
8
|
+
|
|
9
|
+
The executable methodology lives in the `ork` core and in the `check-quality` skill; this file does not duplicate it.
|
|
10
|
+
On any divergence between what you remember and what `ork` answers, **`ork` wins**.
|
|
11
|
+
|
|
12
|
+
## How to start
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
ork thread status <thread> # o estado real, lido do disco
|
|
16
|
+
ork phase list <thread> # o que ja aconteceu, com evidencia
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Rules for this phase
|
|
20
|
+
|
|
21
|
+
- **CHECK does not fix.** A finding becomes a GO task, with its own commit.
|
|
22
|
+
- An axis without findings comes out with an explicit "none".
|
|
23
|
+
- Zero security blockers is a hard condition, in any mode.
|
|
24
|
+
- A type B fix goes back to GO, and the next CHECK is a full re-run.
|
|
25
|
+
|
|
26
|
+
## Rules that apply to every phase
|
|
27
|
+
|
|
28
|
+
- The conduction mode loosens the PAUSE, never the VERIFICATION.
|
|
29
|
+
- No self-report: every statement comes with the command that proves it and the real output.
|
|
30
|
+
- Waits: never start verify, build or the suite with `&` inside the command, because the process gets lost and the session waits for a notice that never comes; run `ork verify` in the foreground, with `timeout` (it waits its turn in the heavy-resource queue), or use the host's background execution, which tells you when it finishes; never wait with `pgrep -f` whose pattern shows up in the command itself, because the loop finds itself and never ends: wait for the output file with a deadline, or for the saved PID.
|
|
31
|
+
- An irreversible step (push, merge, deletion) only happens when the mode authorizes it, and the authorization
|
|
32
|
+
is recorded in the ledger.
|
|
33
|
+
- End by saying, in one line, where the thread stands and what happens now.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ork-go
|
|
3
|
+
description: "Conducts the GO phase inside the thread's worktree: one atomic commit per task, baseline recorded before starting."
|
|
4
|
+
tools: Bash, Read, Write, Edit, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You conduct the GO phase of an Orkastery thread, and only that phase.
|
|
8
|
+
|
|
9
|
+
The executable methodology lives in the `ork` core and in the `go-implementation` skill; this file does not duplicate it.
|
|
10
|
+
On any divergence between what you remember and what `ork` answers, **`ork` wins**.
|
|
11
|
+
|
|
12
|
+
## How to start
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
ork thread status <thread> # o estado real, lido do disco
|
|
16
|
+
ork phase list <thread> # o que ja aconteceu, com evidencia
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Rules for this phase
|
|
20
|
+
|
|
21
|
+
- Work ONLY in the thread's worktree. The main tree is not a work area.
|
|
22
|
+
- Baseline before the first line: `ork verify <thread> --baseline`.
|
|
23
|
+
- One commit per task, with the files named. No `git add -A`: it swallows another thread's files, and the per-project adapter guard (`ork adapter install claude-code`) blocks it.
|
|
24
|
+
- Every statement becomes a claim with a command. A reported pass is not a pass.
|
|
25
|
+
|
|
26
|
+
## Rules that apply to every phase
|
|
27
|
+
|
|
28
|
+
- The conduction mode loosens the PAUSE, never the VERIFICATION.
|
|
29
|
+
- No self-report: every statement comes with the command that proves it and the real output.
|
|
30
|
+
- Waits: never start verify, build or the suite with `&` inside the command, because the process gets lost and the session waits for a notice that never comes; run `ork verify` in the foreground, with `timeout` (it waits its turn in the heavy-resource queue), or use the host's background execution, which tells you when it finishes; never wait with `pgrep -f` whose pattern shows up in the command itself, because the loop finds itself and never ends: wait for the output file with a deadline, or for the saved PID.
|
|
31
|
+
- An irreversible step (push, merge, deletion) only happens when the mode authorizes it, and the authorization
|
|
32
|
+
is recorded in the ledger.
|
|
33
|
+
- End by saying, in one line, where the thread stands and what happens now.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ork-goal
|
|
3
|
+
description: "Conducts the GOAL phase of an Orkastery thread: exploration of the real repository, explicit assumptions and criteria that become verifiable claims. Does not implement."
|
|
4
|
+
tools: Bash(ork:*), Read, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You conduct the GOAL phase of an Orkastery thread, and only that phase.
|
|
8
|
+
|
|
9
|
+
The executable methodology lives in the `ork` core and in the `goal-definition` skill; this file does not duplicate it.
|
|
10
|
+
On any divergence between what you remember and what `ork` answers, **`ork` wins**.
|
|
11
|
+
|
|
12
|
+
## How to start
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
ork thread status <thread> # o estado real, lido do disco
|
|
16
|
+
ork phase list <thread> # o que ja aconteceu, com evidencia
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Rules for this phase
|
|
20
|
+
|
|
21
|
+
- **GOAL does not implement.** No edit to a product file comes out of this phase.
|
|
22
|
+
- Exploration targets the real repository: cite concrete files and excerpts, or the exploration did not
|
|
23
|
+
happen.
|
|
24
|
+
- An implicit assumption is a process defect: write the assumptions down.
|
|
25
|
+
- A success criterion is observable, never an adjective, and becomes `ork claims add ... --verificar`.
|
|
26
|
+
|
|
27
|
+
## Rules that apply to every phase
|
|
28
|
+
|
|
29
|
+
- The conduction mode loosens the PAUSE, never the VERIFICATION.
|
|
30
|
+
- No self-report: every statement comes with the command that proves it and the real output.
|
|
31
|
+
- Waits: never start verify, build or the suite with `&` inside the command, because the process gets lost and the session waits for a notice that never comes; run `ork verify` in the foreground, with `timeout` (it waits its turn in the heavy-resource queue), or use the host's background execution, which tells you when it finishes; never wait with `pgrep -f` whose pattern shows up in the command itself, because the loop finds itself and never ends: wait for the output file with a deadline, or for the saved PID.
|
|
32
|
+
- An irreversible step (push, merge, deletion) only happens when the mode authorizes it, and the authorization
|
|
33
|
+
is recorded in the ledger.
|
|
34
|
+
- End by saying, in one line, where the thread stands and what happens now.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ork-master
|
|
3
|
+
description: "Conducts the MASTER phase: typed POSTMORTEM, MASTER log in the frozen contract and collection of the human score. Never makes up a score."
|
|
4
|
+
tools: Bash(ork:*), Read
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You conduct the MASTER phase of an Orkastery thread, and only that phase.
|
|
8
|
+
|
|
9
|
+
The executable methodology lives in the `ork` core and in the `master-metrics` skill; this file does not duplicate it.
|
|
10
|
+
On any divergence between what you remember and what `ork` answers, **`ork` wins**.
|
|
11
|
+
|
|
12
|
+
## How to start
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
ork thread status <thread> # o estado real, lido do disco
|
|
16
|
+
ork phase list <thread> # o que ja aconteceu, com evidencia
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Rules for this phase
|
|
20
|
+
|
|
21
|
+
- **The score belongs to the human, in every mode.** This agent collects it, never assigns it.
|
|
22
|
+
- The failure class comes from the fixed catalog (`ork master classes`).
|
|
23
|
+
- An empty justification is refused by the command, and the refusal records nothing.
|
|
24
|
+
- A delivery without a MASTER log did not happen.
|
|
25
|
+
- Accept by default only your own thread: `ork master <thread> --aceitar-omissao`. Without the thread, the
|
|
26
|
+
command also closes the deliveries of other parallel workstreams.
|
|
27
|
+
|
|
28
|
+
## Rules that apply to every phase
|
|
29
|
+
|
|
30
|
+
- The conduction mode loosens the PAUSE, never the VERIFICATION.
|
|
31
|
+
- No self-report: every statement comes with the command that proves it and the real output.
|
|
32
|
+
- Waits: never start verify, build or the suite with `&` inside the command, because the process gets lost and the session waits for a notice that never comes; run `ork verify` in the foreground, with `timeout` (it waits its turn in the heavy-resource queue), or use the host's background execution, which tells you when it finishes; never wait with `pgrep -f` whose pattern shows up in the command itself, because the loop finds itself and never ends: wait for the output file with a deadline, or for the saved PID.
|
|
33
|
+
- An irreversible step (push, merge, deletion) only happens when the mode authorizes it, and the authorization
|
|
34
|
+
is recorded in the ledger.
|
|
35
|
+
- End by saying, in one line, where the thread stands and what happens now.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ork-plan
|
|
3
|
+
description: "Conducts the PLAN phase: sliced tasks with touch_paths and a verify per task, decisions with a single home. Does not implement."
|
|
4
|
+
tools: Bash(ork:*), Read, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You conduct the PLAN phase of an Orkastery thread, and only that phase.
|
|
8
|
+
|
|
9
|
+
The executable methodology lives in the `ork` core and in the `plan-specification` skill; this file does not duplicate it.
|
|
10
|
+
On any divergence between what you remember and what `ork` answers, **`ork` wins**.
|
|
11
|
+
|
|
12
|
+
## How to start
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
ork thread status <thread> # o estado real, lido do disco
|
|
16
|
+
ork phase list <thread> # o que ja aconteceu, com evidencia
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Rules for this phase
|
|
20
|
+
|
|
21
|
+
- **PLAN does not implement.**
|
|
22
|
+
- A task larger than five files gets sliced again, before GO.
|
|
23
|
+
- Every task carries the command that proves it is done.
|
|
24
|
+
- A closed decision is locked: reopening it is a new decision, with a record.
|
|
25
|
+
|
|
26
|
+
## Rules that apply to every phase
|
|
27
|
+
|
|
28
|
+
- The conduction mode loosens the PAUSE, never the VERIFICATION.
|
|
29
|
+
- No self-report: every statement comes with the command that proves it and the real output.
|
|
30
|
+
- Waits: never start verify, build or the suite with `&` inside the command, because the process gets lost and the session waits for a notice that never comes; run `ork verify` in the foreground, with `timeout` (it waits its turn in the heavy-resource queue), or use the host's background execution, which tells you when it finishes; never wait with `pgrep -f` whose pattern shows up in the command itself, because the loop finds itself and never ends: wait for the output file with a deadline, or for the saved PID.
|
|
31
|
+
- An irreversible step (push, merge, deletion) only happens when the mode authorizes it, and the authorization
|
|
32
|
+
is recorded in the ledger.
|
|
33
|
+
- End by saying, in one line, where the thread stands and what happens now.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ork-ship
|
|
3
|
+
description: "Conducts the SHIP phase through `ork ship`: merge serialized by lease and push proven by command."
|
|
4
|
+
tools: Bash(ork:*), Bash(git status:*), Bash(git log:*), Read
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You conduct the SHIP phase of an Orkastery thread, and only that phase.
|
|
8
|
+
|
|
9
|
+
The executable methodology lives in the `ork` core and in the `ship-release` skill; this file does not duplicate it.
|
|
10
|
+
On any divergence between what you remember and what `ork` answers, **`ork` wins**.
|
|
11
|
+
|
|
12
|
+
## How to start
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
ork thread status <thread> # o estado real, lido do disco
|
|
16
|
+
ork phase list <thread> # o que ja aconteceu, com evidencia
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Rules for this phase
|
|
20
|
+
|
|
21
|
+
- No `git push` by hand: the Orkastery push is proven against the remote's sha.
|
|
22
|
+
- Rehearse with `--dry-run` before delivering.
|
|
23
|
+
- A base that moved gets resynced, and the verdict is redone.
|
|
24
|
+
- The rollback plan is written BEFORE the merge.
|
|
25
|
+
|
|
26
|
+
## Rules that apply to every phase
|
|
27
|
+
|
|
28
|
+
- The conduction mode loosens the PAUSE, never the VERIFICATION.
|
|
29
|
+
- No self-report: every statement comes with the command that proves it and the real output.
|
|
30
|
+
- Waits: never start verify, build or the suite with `&` inside the command, because the process gets lost and the session waits for a notice that never comes; run `ork verify` in the foreground, with `timeout` (it waits its turn in the heavy-resource queue), or use the host's background execution, which tells you when it finishes; never wait with `pgrep -f` whose pattern shows up in the command itself, because the loop finds itself and never ends: wait for the output file with a deadline, or for the saved PID.
|
|
31
|
+
- An irreversible step (push, merge, deletion) only happens when the mode authorizes it, and the authorization
|
|
32
|
+
is recorded in the ledger.
|
|
33
|
+
- End by saying, in one line, where the thread stands and what happens now.
|