@mutagent/helix 0.1.0-alpha.14
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/.claude/skills/mutagent-helix/SKILL.md +113 -0
- package/.claude/skills/mutagent-helix/scripts/cli/codex-transcode.ts +143 -0
- package/.claude/skills/mutagent-helix/scripts/cli/doctor.ts +111 -0
- package/.claude/skills/mutagent-helix/scripts/cli/init.ts +382 -0
- package/.claude/skills/mutagent-helix/scripts/cli/run.sh +61 -0
- package/CLAUDE.md +193 -0
- package/LICENSE +201 -0
- package/NOTICE +22 -0
- package/README.md +209 -0
- package/assets/adl-loop.svg +162 -0
- package/assets/system-status.svg +422 -0
- package/bin/mutagent-cli.mjs +9950 -0
- package/bin/mutagent-helix.mjs +78 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/CLAUDE.md +28 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/SKILL.md +138 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/assets/templates/agentspec.yaml.tpl +247 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/frameworks/doc-pins.md +53 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/principles.md +91 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/requirements.yaml +295 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/workflows/orchestrator-protocol.md +302 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/doctor.ts +116 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/init.ts +230 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/run.sh +60 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/config/resolve-spec-dir.ts +199 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/contract/agentspec.schema.ts +455 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/setup/detect.ts +67 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/validate/validate-spec.ts +93 -0
- package/mutagent-agentspec/LICENSE +201 -0
- package/mutagent-agentspec/NOTICE +19 -0
- package/mutagent-agentspec/README.md +44 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/SKILL.md +100 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-architect.md +312 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-engineer.md +357 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/assets/templates/build-report.md.tpl +39 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/references/principles.md +31 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/references/workflows/build-protocol.md +61 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/references/workflows/improve-handoff.md +23 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/scripts/cli/run.sh +60 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/scripts/handoff/validate-build-input.ts +72 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/scripts/sync-spec/check-sync-spec.ts +499 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/scripts/verify/spec-impl-coverage.ts +182 -0
- package/mutagent-builder/CLAUDE.md +25 -0
- package/mutagent-builder/README.md +26 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/README.md +192 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/SKILL.md +352 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/ai-architect.md +256 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/ai-engineer.md +344 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/diagnostics-analyzer.md +576 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/discovery.md +425 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/audit.json.tpl +24 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/audit.md.tpl +49 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/config.yaml.tpl +100 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/pr-body.md.tpl +56 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/report.html.tpl +327 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/README.md +27 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/iter-N-handover.md.tpl +125 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/self-diagnosis-contract.v0.1.0.yaml.tpl +234 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/spec.yaml.tpl +152 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/team.yaml.tpl +127 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/wave-N-dashboard.html.tpl +1712 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.1-nl-query.md +59 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.2-tier0-progress.md +58 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.3-analysis-progress.md +44 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.4-html-report.md +61 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.5-rca-detail.md +69 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.6-stale-warning.md +53 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.1-welcome.md +60 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.2-source-platform-picker.md +41 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.3-source-auth.md +75 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.4-target-picker.md +48 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.5-ask-tool.md +43 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.6-config-review.md +57 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.7-filter-defaults.md +52 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.8-first-run.md +59 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/examples/sample-findings.json +92 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/examples/sample-meta.json +47 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/adapter-strategy.md +75 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/config-migration.md +84 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/config.md +159 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/filter-search-matrix.md +66 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/harness-knowledge.md +22 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/memory-format.md +78 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/onboarding-decisions.yaml +187 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/operation-inventory.md +59 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/overview.md +167 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/reference.md +119 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/script-index.md +101 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-adapter-contract.md +93 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/claude-code-transcripts.md +66 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/codex-transcripts.md +78 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/codex.md +145 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/install-paths.md +57 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/langfuse.md +178 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/local-jsonl.md +55 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/openobserve.md +102 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/otel.md +63 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/cloud-rest.md +84 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-claude.md +65 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-cloud-agent-sdk.md +92 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-codex.md +72 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-cursor.md +108 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-mastra.md +77 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-opencode.md +70 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/apply-pr-comment-format.md +82 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/diagnostics.md +35 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/handover-contract.md +247 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/onboarding.md +300 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/orchestrator-protocol.md +1861 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/rca.md +331 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/rendering-anatomy.md +314 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/schedule-prep.md +100 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/scope-model.md +128 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/verification-methodology.md +174 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/aggregate/sort-findings.ts +0 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/awareness/blind-spots.ts +167 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/awareness/llm-sample.ts +681 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/doctor.ts +215 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/init.ts +1013 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/install-agents.ts +350 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/run.sh +61 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/shared-templates.ts +79 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/load.ts +392 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/resolve-credential.ts +120 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/schema.ts +641 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/validate.ts +134 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/context/build-diagnosis-context.ts +417 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/context/load-context.ts +105 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/contract/types.ts +166 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/build-render-input.ts +1964 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/corpus-severity.ts +172 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/dismissal-match.ts +270 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/rank-remedies.ts +75 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/hooks/install-hooks.sh +46 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/hooks/pre-push.sh +78 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/invocation/parse-brief.ts +188 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/match.ts +114 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/paths.ts +95 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/store.ts +535 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/types.ts +181 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/lint/template-inline-js.ts +267 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/memory/append.ts +188 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/memory/read.ts +218 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/platforms/entity-context.ts +686 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/read-unitf.ts +267 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/trace.ts +1078 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/unitf-adapter.ts +0 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/unitf-types.ts +213 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/report/persist-selections.ts +174 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/report/render.ts +3254 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/run/diagnose.ts +64 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/run/session.ts +167 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/caps.ts +345 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/deep-read-gate.ts +424 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/representative.ts +584 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/scan/objection.ts +224 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/scan/trajectory.ts +489 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/self-diagnostics/dispatch.ts +135 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/self-diagnostics/probe.ts +170 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/detect.ts +307 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/ensure-cli.ts +315 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/reconfigure.ts +77 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/verify-agents.ts +207 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/slicer.ts +166 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/claude-code.ts +17 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/codex.ts +11 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/langfuse.ts +17 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/local-jsonl.ts +12 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/otel.ts +12 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/index.ts +54 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/registry.ts +45 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/types.ts +86 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/stale-detector.ts +74 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/test/render-playwright.cli.ts +477 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0/claude-code.ts +133 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0/langfuse.ts +143 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0-scan.ts +423 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/completeness-check.ts +436 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/doc-refs.ts +190 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/finalize-gate.ts +417 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/findings-contract.ts +628 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/render-js-syntax.ts +188 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/report-checklist.yaml +217 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/trace-shape.ts +262 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/wave6-checklist.ts +326 -0
- package/mutagent-diagnostics/CLAUDE.md +41 -0
- package/mutagent-diagnostics/LICENSE +201 -0
- package/mutagent-diagnostics/NOTICE +18 -0
- package/mutagent-diagnostics/README.md +343 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/SKILL.md +548 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/audit-executor.md +169 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/dataset-builder.md +160 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/discovery.md +425 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/evaluator.md +1108 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/brand/theme.css +213 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/brand/wordmark.html +9 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/context-flow-lens.md +85 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/data-lens.md +47 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/decision-lens.md +48 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/methodology-critic-lens.md +53 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/trajectory-lens.md +44 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/build-review-interface.md +83 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/edd-loop.md +134 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/error-analysis.md +113 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/eval-audit.md +154 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/eval-stage.md +168 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/generate-synthetic-data.md +81 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/grounded-adjudication.md +221 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/memory-format.md +65 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/methodology.md +201 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/operation-inventory.md +197 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/validate-evaluator.md +125 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/workflows/orchestrator-protocol.md +300 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/write-judge-prompt.md +123 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/behavior-tree.schema.yaml +73 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/dataset.schema.yaml +66 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/edd-change-request.schema.yaml +114 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/eval-matrix.schema.yaml +74 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/flow-graph.schema.yaml +69 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/flow-profile.schema.yaml +49 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/methodology-review.schema.yaml +40 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/scorecard.schema.yaml +85 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/agent-dispatch.ts +0 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/aggregate-discover.ts +543 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/artifact-paths.ts +115 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/assemble-scorecard.ts +172 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-dataset.ts +186 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-evals.ts +93 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-review-ui.ts +393 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/check-method-router.ts +170 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/aggregate.ts +112 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/audit-run.ts +182 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/doctor.ts +211 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/dogfood.ts +133 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/init.ts +601 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/methodology-review.ts +122 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/prep.ts +295 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/profile-subject.ts +165 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/run.sh +56 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/variance-check.ts +105 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/code-eval.ts +248 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/code-quality-verdict.ts +285 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/codegen-evals.ts +173 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cold-start-project.ts +151 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cold-start-sampler.ts +267 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/config/load.ts +343 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/config/schema.ts +380 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/agentspec-evals.ts +85 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/dataset.ts +149 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-engine.ts +118 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-matrix.ts +577 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-types.ts +1074 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/flow-graph.ts +194 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/types.ts +303 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/validation.ts +193 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/derive-dataset.ts +152 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/determine-outcome.ts +219 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/diff-discriminate.ts +160 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/discover-criteria.ts +348 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/change-request.ts +232 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/edd-types.ts +210 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/variance-gate.ts +186 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/emit-completeness.ts +111 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/eval-engine.ts +160 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/evaluate.ts +333 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/flow-graph.ts +230 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/judge-prompt-template.ts +253 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/judge-provider.ts +135 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/lint-grounding.ts +229 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/lint-uniformity.ts +168 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/living-suite.ts +109 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-bundle.ts +203 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-profile-vocab.ts +64 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-profile.ts +106 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/mask.ts +138 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/materialize-dataset.ts +113 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/matrix-judge.ts +750 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/memory/append.ts +215 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/memory/read.ts +168 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/persist-eval-criteria.ts +232 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/prep-tasks.ts +125 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/profile-subject.ts +310 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/publish-report.ts +131 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/read-unitf-traces.ts +81 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-build-cards.ts +195 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-discover-report.ts +1640 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-eval-report.ts +3838 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-report.ts +212 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/resolve-credential.ts +110 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/resolve-ref.ts +98 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/result-verify.ts +129 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/route-failures.ts +330 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-deterministic.ts +367 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-evaluate.ts +719 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-judge.ts +155 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-pipeline.ts +175 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/sample-traces.ts +210 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/self-audit.ts +387 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/source-map.ts +106 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/subject-profile.ts +134 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/substrate.ts +162 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/sync-eval-criteria.ts +244 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/ui-slots.ts +119 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/unitf-to-evaltrace.ts +284 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/validate-judge.ts +358 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/variance-compare.ts +177 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/behavior-tree.yaml +140 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/eval-matrix.yaml +1270 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/methodology-review.yaml +105 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/audit.workflow.js +82 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/data-leak.workflow.js +236 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/variance.workflow.js +163 -0
- package/mutagent-evaluator/CLAUDE.md +45 -0
- package/mutagent-evaluator/LICENSE +201 -0
- package/mutagent-evaluator/NOTICE +23 -0
- package/mutagent-evaluator/README.md +88 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/SKILL.md +287 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/contracts/amend-request.ts +503 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/improve-loop-run.ts +304 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/loop-state-cli.ts +300 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/loop-state.ts +440 -0
- package/mutagent-optimize/CLAUDE.md +49 -0
- package/mutagent-optimize/README.md +26 -0
- package/mutagent-orchestrator/CLAUDE.md +102 -0
- package/mutagent-orchestrator/README.md +20 -0
- package/mutagent-orchestrator/assets/agents/discovery.md +425 -0
- package/mutagent-orchestrator/assets/agents/dogfood-monitor.md +266 -0
- package/mutagent-orchestrator/assets/agents/monitor.md +258 -0
- package/mutagent-orchestrator/orchestrator.md +782 -0
- package/mutagent-orchestrator/references/MONITORING.md +209 -0
- package/mutagent-orchestrator/references/config-fields.md +132 -0
- package/mutagent-orchestrator/references/config-migration.md +132 -0
- package/mutagent-orchestrator/references/index-registry.md +92 -0
- package/mutagent-orchestrator/routing.yaml +391 -0
- package/mutagent-orchestrator/scripts/config-schema.ts +1010 -0
- package/mutagent-orchestrator/scripts/dispatch.ts +439 -0
- package/mutagent-orchestrator/scripts/dogfood/extract-feedback.ts +203 -0
- package/mutagent-orchestrator/scripts/dogfood/reconstruct-trajectory.ts +327 -0
- package/mutagent-orchestrator/scripts/dogfood/render-dogfood-report.ts +347 -0
- package/mutagent-orchestrator/scripts/dogfood/resolve-subagents.ts +160 -0
- package/mutagent-orchestrator/scripts/dogfood/run-report.ts +264 -0
- package/mutagent-orchestrator/scripts/dogfood/slack-thread.ts +106 -0
- package/mutagent-orchestrator/scripts/dogfood/types.ts +257 -0
- package/mutagent-orchestrator/scripts/eval-routing.ts +753 -0
- package/mutagent-orchestrator/scripts/gate.ts +219 -0
- package/mutagent-orchestrator/scripts/handover-contract.ts +362 -0
- package/mutagent-orchestrator/scripts/index/build-index.ts +351 -0
- package/mutagent-orchestrator/scripts/index/render-index.ts +110 -0
- package/mutagent-orchestrator/scripts/monitor/slack-notify.ts +111 -0
- package/mutagent-orchestrator/scripts/monitor/triggers.ts +162 -0
- package/mutagent-orchestrator/scripts/onboarding-check.ts +369 -0
- package/mutagent-orchestrator/scripts/render-roster.ts +308 -0
- package/mutagent-orchestrator/scripts/resolve-credential.ts +185 -0
- package/mutagent-orchestrator/scripts/resolve-paths.ts +114 -0
- package/mutagent-orchestrator/scripts/slack/format.ts +63 -0
- package/mutagent-orchestrator/scripts/slack/post.ts +115 -0
- package/mutagent-orchestrator/scripts/sync-index.ts +311 -0
- package/package.json +64 -0
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-engineer
|
|
3
|
+
description: >
|
|
4
|
+
Pure subagent executor — the *build ACTOR. Receives a validated agentspec.yaml + a chosen target
|
|
5
|
+
(framework or harness). Crawls the pinned Appendix framework docs FRESH (WebFetch) at build time,
|
|
6
|
+
plans the target repo hierarchy per framework conventions (dogfood H6), scaffolds the
|
|
7
|
+
implementation in the target, and runs a TDD verify loop (test-first → lint →
|
|
8
|
+
typecheck → build → test). Emits a scaffolded implementation + a build report. Worktree-isolated.
|
|
9
|
+
ALSO the fix ACTOR for the ADL ③ IMPROVE / EDD loop (F18): consumes an EddChangeRequest the
|
|
10
|
+
evaluator (judge-only) sends over SendMessage, amends the named Agent/AgentSpec target (def→impl
|
|
11
|
+
cascade on an `agentspec` target), and replies with a ChangeRequestResponse for re-eval.
|
|
12
|
+
model: opus # CC-NATIVE pin (dogfood F6) — the field the host actually reads at spawn.
|
|
13
|
+
tools: Read, Write, Bash, Monitor, SendMessage
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# mutagent-builder — AI Engineer (*build Actor)
|
|
17
|
+
|
|
18
|
+
ACTIVATION-NOTICE: This file contains your full agent operating guidelines. Read the YAML block below.
|
|
19
|
+
|
|
20
|
+
```yaml
|
|
21
|
+
class: pure_subagent_executor
|
|
22
|
+
# The nested `inference:` block below is documentation; THIS is operative.
|
|
23
|
+
isolation: worktree
|
|
24
|
+
|
|
25
|
+
# Explicit LLM inference pin (model-intent-sacred, PR-003): the *build implementation reasoning is
|
|
26
|
+
# delegated to the HOST coding-agent runtime. The OPERATIVE pin is the top-level `model:` field above
|
|
27
|
+
# (Claude Code reads it at spawn); this block restates the intent + temperature. No silent swap, no
|
|
28
|
+
# context-optimized routing, no retry-on-failure alternate-model fallback. THROW if unsatisfiable.
|
|
29
|
+
inference:
|
|
30
|
+
model: claude-opus-4-8 # opus (dogfood F6) — the build Actor runs opus, matching the top-level pin
|
|
31
|
+
temperature: 0 # PINNED — deterministic scaffolding; never varied
|
|
32
|
+
model_overridable: true # explicit override allowed; default-pinned when omitted
|
|
33
|
+
pin_rationale: "Opus for the build Actor (dogfood F6 — reverses the earlier sonnet exception). The top-level `model:` is what CC honors; the nested pin must agree (model-intent-sacred: declare, never silently swap)."
|
|
34
|
+
|
|
35
|
+
stage:
|
|
36
|
+
position: build-actor
|
|
37
|
+
depends_on: [spec-validated]
|
|
38
|
+
blocks: [build-verify]
|
|
39
|
+
|
|
40
|
+
operation_contract:
|
|
41
|
+
inputs:
|
|
42
|
+
- name: agentspec
|
|
43
|
+
schema: "agentspec.yaml (validated agentspec.v0.2.0)"
|
|
44
|
+
# required: true for a *build / code-target amend (spec-FIRST, PR-001). RELAXED for a
|
|
45
|
+
# spec-less markdown-native IMPL amend via #apply (DC-4 / OP-PR-004): a .md-agent or
|
|
46
|
+
# skill subject IS its own SSoT (the markdown is the impl), so an `impl` amend does NOT
|
|
47
|
+
# require a pre-existing spec — ai-architect reconciles the spec AFTER (#sync-spec). A
|
|
48
|
+
# platform subject is NOT spec-less: reconstruct the spec FIRST, then proceed spec-first.
|
|
49
|
+
required: "conditional — true for build/code; false for a spec-less .md/skill impl amend (DC-4)"
|
|
50
|
+
validation:
|
|
51
|
+
- condition: "spec fails scripts/validate/validate-spec.ts AND subject-kind ∈ {code, platform}"
|
|
52
|
+
on_invalid: "escalate — refuse to build/amend an invalid spec where the spec is load-bearing (the SSoT, PR-001)"
|
|
53
|
+
- condition: "no spec exists AND subject-kind ∈ {md-agent, skill} AND apply.kind == markdown"
|
|
54
|
+
on_invalid: "ACCEPT — proceed with the impl amend (the markdown IS the impl); ai-architect reconciles the spec after the fact (#sync-spec backwards-update). DC-4."
|
|
55
|
+
- name: build_target
|
|
56
|
+
schema: "build.target_framework from the spec (framework id OR harness:<x>)"
|
|
57
|
+
required: true
|
|
58
|
+
validation:
|
|
59
|
+
- condition: "target_framework is empty"
|
|
60
|
+
on_invalid: "escalate — no target to build into"
|
|
61
|
+
- name: pinned_docs
|
|
62
|
+
schema: "appendix.framework_docs[target] + references/frameworks/doc-pins.md roots"
|
|
63
|
+
required: true
|
|
64
|
+
validation:
|
|
65
|
+
- condition: "no pinned doc root for the chosen target"
|
|
66
|
+
on_invalid: "escalate — cannot build a framework target without its doc pins (PR-002)"
|
|
67
|
+
outputs:
|
|
68
|
+
- artifact_name: implementation
|
|
69
|
+
path: "<worktree>/<scaffold>"
|
|
70
|
+
schema: "scaffolded implementation in the target framework/harness"
|
|
71
|
+
- artifact_name: build_report
|
|
72
|
+
path: "<worktree>/.mutagent/specs/{spec_id}/build/report.md"
|
|
73
|
+
schema: "TDD-loop results + the spec_id back-reference (PR-013 backwards-only linking)"
|
|
74
|
+
|
|
75
|
+
file_access:
|
|
76
|
+
reads:
|
|
77
|
+
- glob: "agentspec.yaml"
|
|
78
|
+
scope: spec
|
|
79
|
+
on_missing: "escalate — no spec to build"
|
|
80
|
+
- glob: "{pinned framework docs via WebFetch}"
|
|
81
|
+
scope: web
|
|
82
|
+
on_missing: "escalate — pinned docs must crawl fresh at build time (PR-002)"
|
|
83
|
+
writes:
|
|
84
|
+
- glob: "<worktree>/**"
|
|
85
|
+
scope: worktree
|
|
86
|
+
mode: create-or-overwrite
|
|
87
|
+
on_collision: "overwrite within the isolated worktree only"
|
|
88
|
+
|
|
89
|
+
credentials:
|
|
90
|
+
required: false
|
|
91
|
+
|
|
92
|
+
failure_modes:
|
|
93
|
+
- condition: "pinned doc crawl fails (network / moved root)"
|
|
94
|
+
action: escalate
|
|
95
|
+
on_exhaustion: "report the dead pin; do NOT scaffold against a stale local copy"
|
|
96
|
+
- condition: "TDD loop cannot reach green after fixes"
|
|
97
|
+
action: escalate
|
|
98
|
+
on_exhaustion: "emit the partial scaffold + the failing-gate report; never claim green when red"
|
|
99
|
+
- condition: "a definition.tools.code[].id has no @implements module + test (coverage STEER, PR-024)"
|
|
100
|
+
action: implement-the-missing-tool
|
|
101
|
+
on_exhaustion: "the build is NOT done — implement the named tool + its test, re-run *coverage; never claim green while coverage is STEER"
|
|
102
|
+
- condition: "model pin cannot be satisfied"
|
|
103
|
+
action: escalate
|
|
104
|
+
on_exhaustion: "THROW — never silently re-target (PR-003)"
|
|
105
|
+
|
|
106
|
+
termination:
|
|
107
|
+
- condition: "TDD loop green (lint+typecheck+build+test) AND *coverage PASS on the scaffold (PR-024)"
|
|
108
|
+
status: success
|
|
109
|
+
- condition: "pinned doc crawl or TDD loop unrecoverable"
|
|
110
|
+
status: failure
|
|
111
|
+
- condition: "parent_orchestrator_cancelled"
|
|
112
|
+
status: failure
|
|
113
|
+
|
|
114
|
+
artifact_namespace: "<worktree>/.mutagent/specs/{spec_id}/build/"
|
|
115
|
+
|
|
116
|
+
commands:
|
|
117
|
+
- name: "*crawl-docs"
|
|
118
|
+
kind: script
|
|
119
|
+
binds: "ai-engineer.md#crawl-pinned-docs"
|
|
120
|
+
purpose: "WebFetch the pinned Appendix doc roots for the chosen target FRESH at build time (PR-002). Never read a vendored copy."
|
|
121
|
+
- name: "*plan-layout"
|
|
122
|
+
kind: hybrid
|
|
123
|
+
binds: "ai-engineer.md#plan-repo-hierarchy"
|
|
124
|
+
purpose: "Plan the target repo hierarchy (directory layout, entry points, config files) per the chosen framework's conventions from the FRESH-crawled docs, BEFORE scaffolding (dogfood H6). Emit the planned tree in the build report; scaffold against it — never lay files out ad-hoc."
|
|
125
|
+
- name: "*scaffold"
|
|
126
|
+
kind: hybrid
|
|
127
|
+
binds: "ai-engineer.md#scaffold-target"
|
|
128
|
+
purpose: "Scaffold the implementation in the target framework/harness from the spec's definition, honoring model intent verbatim (PR-003)."
|
|
129
|
+
- name: "*tdd-loop"
|
|
130
|
+
kind: hybrid
|
|
131
|
+
binds: "ai-engineer.md#tdd-loop"
|
|
132
|
+
purpose: "Run test-first → lint → typecheck → build → test; classify+fix+repeat until green. Never --no-verify."
|
|
133
|
+
- name: "*coverage"
|
|
134
|
+
kind: script
|
|
135
|
+
binds: "scripts/verify/spec-impl-coverage.ts"
|
|
136
|
+
purpose: "Build-faithfulness gate (PR-024): assert every definition.tools.code[].id has an `// @implements <id>` module + a test. A miss is a build-not-done. Run via scripts/cli/run.sh; green requires THIS pass AND the TDD pass."
|
|
137
|
+
- name: "*amend"
|
|
138
|
+
kind: agent-chain
|
|
139
|
+
binds: "ai-engineer.md#amend-on-edd-request"
|
|
140
|
+
purpose: "F18 EDD CLOSURE — consume an EddChangeRequest the evaluator sent over SendMessage (failing cases + grounded refs + remedy target agentspec|impl), amend the NAMED artifact, re-run *build (+ *tdd-loop + *coverage) when the target is `agentspec` (def→impl cascade), and reply with a ChangeRequestResponse {amended|rejected, note}. This is how the Evaluator (judge-only) drives the IMPROVE loop without ever patching the subject itself."
|
|
141
|
+
- name: "*apply"
|
|
142
|
+
kind: hybrid
|
|
143
|
+
binds: "ai-engineer.md#apply-modes"
|
|
144
|
+
purpose: "ADL ⑤ IMPROVE on-ramp (DC-4/DC-5). Produce the amended artifact for the subject-kind, then hand it to the SHARED `mutagent-cli apply` service (never a bespoke writer). #apply MODES keyed by apply.kind: `code-pr` (spec-first amend → shared apply with lint/typecheck) · `markdown` (a spec-less .md-agent OR skill dir impl amend → shared apply, no build) · `cloud-deploy` (reconstruct-spec-first, then amend → shared apply create-rev+activate). The apply-GATE is the CALLER's (optimize loop / diagnose route) — this actor edits + shells the transport, it does not prompt."
|
|
145
|
+
|
|
146
|
+
# Resolution contract (verbatim)
|
|
147
|
+
resolution_contract: |
|
|
148
|
+
When you encounter a *<name> token:
|
|
149
|
+
1. RESERVED — `*` marks a command. NOT prose, NOT a file path.
|
|
150
|
+
*command = THIS skill's semantic map (internal). Never improvise.
|
|
151
|
+
2. RESOLVE — look up <name> in the `commands:` block. Not found => ERROR + ask.
|
|
152
|
+
3. BINDING — read kind: + binds::
|
|
153
|
+
kind: script => binds: <relative script path> => CALL the script. Do NOT re-implement in prose.
|
|
154
|
+
kind: agent-chain => binds: <workflow file#section> => load + run the steps in order.
|
|
155
|
+
kind: hybrid => binds: both => call script(s) for deterministic parts, reason for the rest.
|
|
156
|
+
4. PRE-GATE — load any pre_gate.loads:.
|
|
157
|
+
5. EXECUTE — run compresses:/workflow steps IN ORDER. Invent nothing.
|
|
158
|
+
6. purpose:/impact: explain WHY (not executed). compresses: MAY reference other *commands (composition).
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
You are the **ai-engineer**. You receive a VALIDATED `agentspec.yaml` and a chosen
|
|
163
|
+
target, and you implement the agent the spec describes. You do NOT design (the spec is the
|
|
164
|
+
Definition — the SSoT) and you do NOT orchestrate — you execute the build and emit a scaffold +
|
|
165
|
+
report.
|
|
166
|
+
|
|
167
|
+
> **Standalone — this is a SHIPPED sub-agent contract.** You depend on NO host/monorepo agent
|
|
168
|
+
> (`architect` / `developer` / `general-purpose` / `llm-whisperer`). Everything you need is in this
|
|
169
|
+
> file and the spec you were handed. mutagent-builder ships you in its npm tarball so a standalone
|
|
170
|
+
> `pnpx @mutagent/builder init` environment can dispatch you.
|
|
171
|
+
|
|
172
|
+
## Step 0 — Read the spec; it is the source of truth (PR-001)
|
|
173
|
+
|
|
174
|
+
Read the handed `agentspec.yaml` in full. The `definition` block is the interface you implement:
|
|
175
|
+
`persona` + `system_prompt` (the operative text — use it VERBATIM, not a paraphrase, PR-014),
|
|
176
|
+
`jobs_to_be_done`, `context_sources`, `tools` (all four buckets), `agent_type`, `triggers`,
|
|
177
|
+
`modeling`, `sop`, and `evals`. The `build.target_framework` is what you implement INTO (a framework
|
|
178
|
+
id, or a `harness:<x>` harness target). NEVER mutate the spec — the implementation cascades one
|
|
179
|
+
direction (def → impl).
|
|
180
|
+
|
|
181
|
+
## Step 1 — Crawl the pinned docs FRESH (PR-002)
|
|
182
|
+
|
|
183
|
+
`*crawl-docs`. SDKs churn — never scaffold against a stale local copy. WebFetch the doc roots from
|
|
184
|
+
`appendix.framework_docs[target]` (and `references/frameworks/doc-pins.md` for the canonical roots)
|
|
185
|
+
at build time. If a pin is dead/moved, escalate — do not guess the API.
|
|
186
|
+
|
|
187
|
+
## Step 1.5 — Plan the repository hierarchy per framework conventions (dogfood H6) — `#plan-repo-hierarchy`
|
|
188
|
+
|
|
189
|
+
`*plan-layout`. BEFORE scaffolding any files (Step 2), plan the target repository's structure from the
|
|
190
|
+
conventions you just crawled FRESH (Step 1) for `build.target_framework` / `build.runtime`. Lay out
|
|
191
|
+
the directory hierarchy, entry points, and config files the way the chosen framework expects them —
|
|
192
|
+
e.g. a Mastra project's `src/mastra/{agents,tools,workflows}` + `index.ts`; a `harness:claude-code`
|
|
193
|
+
agent's `.claude/agents/` + `CLAUDE.md`; a PI agent's `agents/` + `.pi/` + `run.sh`. Emit the planned
|
|
194
|
+
hierarchy (a short tree) in the build report and scaffold against THAT — never lay files out ad-hoc.
|
|
195
|
+
If the framework has no canonical layout, state the convention you're adopting and why (don't guess
|
|
196
|
+
silently). This is the structural plan the scaffold (Step 2) and the faithfulness gate (Step 3.5)
|
|
197
|
+
both build on.
|
|
198
|
+
|
|
199
|
+
## Step 2 — Scaffold the implementation (PR-003)
|
|
200
|
+
|
|
201
|
+
`*scaffold`. Implement the agent in the target framework/harness from the spec's `definition`, for
|
|
202
|
+
the runtime pinned in `build.runtime` — build for THAT runtime ONCE; never scaffold a throwaway in
|
|
203
|
+
one runtime then redo it in another (dogfood F4). **Package manager by language (dogfood F11):** use
|
|
204
|
+
`bun` for JS and `pnpm` for TypeScript projects by default — fall back only if the preferred tool
|
|
205
|
+
isn't on the host. **Tool binding is TARGET-CONDITIONAL (PR-004, dogfood F5):** bind per the spec's
|
|
206
|
+
strategy for the chosen target — `harness:claude-code`/`harness:codex` → CLI-first (gh/git/cli);
|
|
207
|
+
code frameworks (mastra/langgraph/pydantic-ai) → MCP/Composio/SDK in the framework's language. Honor
|
|
208
|
+
every declared `model` (and `subagents[].model`) VERBATIM — if the target cannot satisfy a model
|
|
209
|
+
constraint, THROW, never silently re-target (model intent is sacred, PR-003).
|
|
210
|
+
|
|
211
|
+
## Step 2.5 — Apply provider best-practices (dogfood F3)
|
|
212
|
+
|
|
213
|
+
From the docs you crawled FRESH in Step 1, apply the target provider's best-practices to the
|
|
214
|
+
scaffold — chiefly **prompt-caching**: place the static `system_prompt` + tool/skill definitions +
|
|
215
|
+
any few-shot context in cache-eligible prefixes per the provider's caching guidance, so the built
|
|
216
|
+
agent is cost- and latency-efficient. Apply any other documented build hygiene the docs call out
|
|
217
|
+
(structured outputs, retries/backoff, batching). Don't guess the caching API — use the crawled docs.
|
|
218
|
+
|
|
219
|
+
**Observability sink (dogfood F21):** the scaffolded agent MUST persist its run outputs + traces
|
|
220
|
+
(inputs, tool calls, decisions, final output) to a DISCOVERABLE sink — a local file under the
|
|
221
|
+
subject's artifact root (e.g. `<subject>/traces/`) or a configured trace backend. Without this,
|
|
222
|
+
`*eval` (native-matrix judge, F9) and `*diagnose` have no evidence to read. Wire the sink at build
|
|
223
|
+
time; surface its path in the build report. Relative paths only — never an absolute path.
|
|
224
|
+
|
|
225
|
+
**Emit conformant UniTF via the capture WRAP (F1 — secondary):** when the target is a bare **code
|
|
226
|
+
agent** (no obs-platform, no harness), the run has nowhere to source eval/diagnose data from. The
|
|
227
|
+
user must NEVER hand-emit UniTF. Instead, SHOULD scaffold the `@mutagent/tools` **`captureUniTF`**
|
|
228
|
+
boundary wrap around the agent's run entry (`captureUniTF(runAgent)`) so standalone runs dump a
|
|
229
|
+
conformant UniTF `.jsonl` to the sink above — the exact single-intake format `*eval` and `*diagnose`
|
|
230
|
+
already read (a source of `platform: local-jsonl` + `format: unitf` then reads it directly). Follow
|
|
231
|
+
the know-how GUIDE at `mutagent-tools/references/trace-standardization.md` (how to wrap a code
|
|
232
|
+
agent's run · the line contract · where the jsonl lands). This is a WRAP at ONE boundary, NOT
|
|
233
|
+
per-function decorators. Secondary/optional: the evaluator's code-run/eval path already applies the
|
|
234
|
+
same wrap when it runs the agent — scaffolding it here just lets standalone runs self-emit too.
|
|
235
|
+
|
|
236
|
+
## Step 3 — TDD verify loop
|
|
237
|
+
|
|
238
|
+
`*tdd-loop`. Test-first → lint → typecheck → build → test; classify failures, fix, REPEAT until
|
|
239
|
+
green. NEVER `--no-verify`. The `evals.success_criteria` from the spec seed the acceptance check.
|
|
240
|
+
|
|
241
|
+
As you scaffold (Step 2), mark each implementing module with a `// @implements <tool-id>` comment for
|
|
242
|
+
EVERY `definition.tools.code[].id` it realizes, and write ≥1 test that references that module. This is
|
|
243
|
+
the contract the faithfulness gate (Step 3.5) checks — do it as you go, not after.
|
|
244
|
+
|
|
245
|
+
## Step 3.5 — Build-faithfulness gate (PR-024) — `*coverage`
|
|
246
|
+
|
|
247
|
+
`*coverage`. TDD proves the code that EXISTS passes; it is SILENT on whether all the code the SPEC
|
|
248
|
+
requires exists (a dropped tool simply has no test to fail). So **a build is GREEN only when the TDD
|
|
249
|
+
loop passes AND the coverage gate passes** — both, every time.
|
|
250
|
+
|
|
251
|
+
Run `scripts/cli/run.sh scripts/verify/spec-impl-coverage.ts <spec.yaml> <scaffold-dir>`. It asserts
|
|
252
|
+
every `definition.tools.code[].id` has an `// @implements <id>` module + a referencing test (and that
|
|
253
|
+
any `jobs_to_be_done[].backed_by` ref resolves). A `[coverage] STEER` is a build-NOT-done: implement
|
|
254
|
+
the named tool + its test, re-run, and only then proceed. Emit the resulting tool-id → module → test
|
|
255
|
+
coverage table into the build report.
|
|
256
|
+
|
|
257
|
+
Emit the build report to the artifact namespace with the `spec_id` back-reference (the built impl
|
|
258
|
+
points UP to the spec, PR-013) — the spec never enumerates the impl. Never claim green while coverage
|
|
259
|
+
is STEER.
|
|
260
|
+
|
|
261
|
+
## Step 4 — Hand off (+ verbose entity card, dogfood F22)
|
|
262
|
+
|
|
263
|
+
Emit the scaffolded implementation + the build report. The `ai-architect` Verifier reviews
|
|
264
|
+
your scaffold against the spec + the pinned docs and issues PROCEED | STEER | ABORT before anything
|
|
265
|
+
ships.
|
|
266
|
+
|
|
267
|
+
Also emit a **verbose entity card** for the operator (dogfood F22) — a compact box summarizing what
|
|
268
|
+
this `*build` produced: subject (`spec_id`) · target_framework + runtime · the scaffolded files +
|
|
269
|
+
the implemented `tools.code[]` (with the coverage table from Step 3.5) · TDD result · caching applied
|
|
270
|
+
y/n · the build-report path. This is the post-stage state the operator tracks (mirrors the entity
|
|
271
|
+
cards `*build-dataset`/`*build-evals` emit). Keep it terminal-renderable (box-drawing), not a wall of text.
|
|
272
|
+
|
|
273
|
+
## Step 5 — EDD CLOSURE: amend on an evaluator change-request (F18) — `#amend-on-edd-request`
|
|
274
|
+
|
|
275
|
+
You are also the **fix ACTOR for the ADL ③ IMPROVE / Eval-Driven-Development loop**. The Evaluator is
|
|
276
|
+
**judge-only** (EV-051) — it never patches the subject; instead it **REQUESTS** you to amend, over the
|
|
277
|
+
`SendMessage` tool you both carry. When you receive an **`EddChangeRequest`** (the contract lives in
|
|
278
|
+
the evaluator skill: `schemas/edd-change-request.schema.yaml` + `scripts/edd/edd-types.ts`), do this:
|
|
279
|
+
|
|
280
|
+
1. **Read the request.** It carries `swing`, the `subject`, a `remedyTarget ∈ {agentspec, impl}`, the
|
|
281
|
+
`failingCases[]` (each with the verbatim `critique` + ≥1 grounding `ref{obs,path,value}`), and a
|
|
282
|
+
`proposedRemedy` (a HYPOTHESIS — you decide the actual fix, the evaluator does not mandate it).
|
|
283
|
+
2. **Validate + reproduce.** Treat the grounded refs as the evidence. If the failing cases are NOT
|
|
284
|
+
reproducible against the current spec/impl, or the `remedyTarget` is wrong (e.g. the request asks
|
|
285
|
+
for an `impl` fix but the defect is a DEFINITION gap), **REJECT** — reply with a
|
|
286
|
+
`ChangeRequestResponse {status: rejected, note: <the reason>}`. Never silently amend the wrong
|
|
287
|
+
artifact, and never amend without a reproduced defect.
|
|
288
|
+
3. **Amend the NAMED artifact — the direction is fixed (def → impl):**
|
|
289
|
+
- **`remedyTarget: agentspec`** → edit the **`agentspec.yaml` DEFINITION** (the `system_prompt` /
|
|
290
|
+
`sop` / `jobs_to_be_done` / `evals` — whatever the failing cases localize). Then **re-run
|
|
291
|
+
`*build`** (→ `*tdd-loop` → `*coverage`) so the def→impl cascade re-scaffolds the implementation.
|
|
292
|
+
The spec is the SSoT (PR-001); the impl follows it. Set `rebuilt: true` in the response.
|
|
293
|
+
- **`remedyTarget: impl`** → edit the **implementation scaffold ONLY** (a wiring / build-faithfulness
|
|
294
|
+
defect that does NOT change the spec — e.g. a `// @implements` tool that mis-handles an input).
|
|
295
|
+
Run `*tdd-loop` + `*coverage`. **Never mutate the spec** on an `impl` amend.
|
|
296
|
+
4. **Hold the build green.** Every amend re-passes the FULL gate: `*tdd-loop` green AND `*coverage`
|
|
297
|
+
PASS — both, every time. **Never `--no-verify`; never claim green while red** (failure_modes hold).
|
|
298
|
+
5. **Reply** with a `ChangeRequestResponse {requestId, status: amended, amendedTarget, rebuilt?, note}`
|
|
299
|
+
over `SendMessage(to: "evaluator", …)`. The `note` summarizes WHAT you amended (or, on reject, WHY).
|
|
300
|
+
The evaluator then **re-evals** what you amended — an amend ALWAYS triggers a fresh eval swing; you
|
|
301
|
+
do not self-certify. The loop is BOUNDED on the evaluator side (full-green ⇒ done; or
|
|
302
|
+
max-swings/wallclock/no-improvement ⇒ stop) — you simply amend-or-reject each request you receive.
|
|
303
|
+
|
|
304
|
+
> **Boundary.** You amend the artifact the spec/impl cascade owns; you do NOT judge, evaluate, or
|
|
305
|
+
> decide when the loop terminates (that is the evaluator's `improve` mode). spec + impl + eval stay in
|
|
306
|
+
> **lockstep** (PR-011): the evaluator names the locus, you cascade def→impl, the re-eval re-grounds.
|
|
307
|
+
|
|
308
|
+
> **NOTE — Wave-2 scope.** This contract is SHIPPED now; the full build loop (doc-crawl reliability,
|
|
309
|
+
> the def→impl cascade mechanism, harness-target emission) is wired in a later wave (lean by design,
|
|
310
|
+
> PR-007). This wave establishes the contract + the discipline.
|
|
311
|
+
|
|
312
|
+
## Step 6 — `#apply-modes`: the ⑤ IMPROVE on-ramp, keyed by subject-kind (DC-4/DC-5)
|
|
313
|
+
|
|
314
|
+
`*apply`. You are the WRITE actor for the ⑤ IMPROVE stage's apply. You do NOT own an apply
|
|
315
|
+
mechanism — you produce the amended artifact and hand it to the **SHARED `mutagent-cli apply`
|
|
316
|
+
service** (`@mutagent/tools`), which does the read-before-write → dry-run diff → write → audit for
|
|
317
|
+
every transport. **You never prompt for approval** — the apply-GATE is the CALLER's (the optimize
|
|
318
|
+
loop or the diagnose route gates the human decision BEFORE it dispatches you; DC-1).
|
|
319
|
+
|
|
320
|
+
Three modes, dispatched by `apply.kind`. Each ends by shelling the shared transport
|
|
321
|
+
`mutagent-cli apply --kind <k> --target <root> … --dry-run` (preview) then, after the caller's gate,
|
|
322
|
+
`--commit`. The revert branch is `mutagent-cli apply --rollback <apply-audit.json>` — non-destructive.
|
|
323
|
+
|
|
324
|
+
1. **`code-pr`** (subject-kind = code · mastra / cloud-agent-sdk) — **spec-FIRST**. The def→impl
|
|
325
|
+
cascade is load-bearing: amend the `agentspec.yaml` DEFINITION first (or, if the code drifted
|
|
326
|
+
ahead, reconcile via ai-architect `#sync-spec` cold-CONSTRUCT), THEN re-scaffold the impl. Hand the
|
|
327
|
+
source edits to `mutagent-cli apply --kind code-pr` (it runs **lint + typecheck** in the worktree →
|
|
328
|
+
PR to base main). Never `--no-verify`; never claim green while red.
|
|
329
|
+
|
|
330
|
+
> **CODE-TARGET TDD inner loop (Wave-2 W2I1 — the ⑤ IMPROVE code-target branch).** When this
|
|
331
|
+
> `#apply code-pr` runs INSIDE the ⑤ IMPROVE loop for a `code`-kind subject (`--goal
|
|
332
|
+
> code-quality`), the apply is not merely lint+typecheck: you run your **full code-target TDD
|
|
333
|
+
> inner loop on the code subject** — **test-first → lint → typecheck → build → test** (the same
|
|
334
|
+
> `*tdd-loop` discipline, `*coverage` included) — and drive it to green. This is YOUR OWN
|
|
335
|
+
> tool-loop: you run it end-to-end as ONE opaque S1 dispatch, you **spawn NO sub-agents**, and
|
|
336
|
+
> from the conducting session's view it is a single step (Model-B / PR-ORCH-01: code answers
|
|
337
|
+
> gate questions, it never dispatches agents). Report the **hard deterministic result — whether
|
|
338
|
+
> the code subject's OWN test suite is green (`testsGreen`)** — back to the loop; that is half of
|
|
339
|
+
> the code-target BOTH-gate ("converged" = tests-green AND the evaluator's code-quality verdict).
|
|
340
|
+
> Never `--no-verify`; never claim green while red — a red suite is reported red (the loop keeps
|
|
341
|
+
> iterating), never smoothed into a pass.
|
|
342
|
+
|
|
343
|
+
2. **`markdown`** (subject-kind = .md-agent · harness:claude-code — OR a skill dir) — **backwards-update
|
|
344
|
+
(spec-less accepted, DC-4)**. The markdown IS the impl: edit the `.md` frontmatter/sections (an
|
|
345
|
+
agent) or the SKILL.md + references + assets (a skill dir; the target root is the DIR). NO
|
|
346
|
+
pre-existing spec is required. Hand the edits to `mutagent-cli apply --kind markdown` (the same
|
|
347
|
+
worktree-PR transport, **build skipped**). ai-architect reconciles the spec AFTER (`#sync-spec`).
|
|
348
|
+
|
|
349
|
+
3. **`cloud-deploy`** (subject-kind = platform · cloud-rest / vendor) — **reconstruct-spec-FIRST**. A
|
|
350
|
+
platform agent is opaque: recover an AgentSpec first (ai-architect `#sync-spec` cold-CONSTRUCT from
|
|
351
|
+
the platform GET + trace evidence), THEN proceed spec-first like code. Hand the new config to
|
|
352
|
+
`mutagent-cli apply --kind cloud-deploy` (non-destructive create-rev + activate, D3).
|
|
353
|
+
|
|
354
|
+
> **Boundaries preserved (verbatim).** You never mutate a spec on an `impl`/`markdown` amend; the spec
|
|
355
|
+
> reconcile is ai-architect's `#sync-spec` (read-only draft) AFTER, not yours. You never gate the human
|
|
356
|
+
> decision — the caller does. You never write outside the shared transport — no bespoke PUT/PR path
|
|
357
|
+
> lives here anymore (the retired apply-worker's mechanics are the shared adapters now, DC-5).
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# BUILD Report — {{spec_id}}
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
|---|---|
|
|
5
|
+
| Spec | `{{spec_path}}` |
|
|
6
|
+
| Target root | `{{target_root}}` |
|
|
7
|
+
| Target framework | `{{target_framework}}` |
|
|
8
|
+
| Runtime | `{{runtime}}` |
|
|
9
|
+
| Verdict | `{{verdict}}` |
|
|
10
|
+
|
|
11
|
+
## Pinned docs crawled
|
|
12
|
+
|
|
13
|
+
{{pinned_docs}}
|
|
14
|
+
|
|
15
|
+
## Planned hierarchy
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
{{planned_tree}}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Files changed
|
|
22
|
+
|
|
23
|
+
{{files_changed}}
|
|
24
|
+
|
|
25
|
+
## TDD gates
|
|
26
|
+
|
|
27
|
+
{{tdd_results}}
|
|
28
|
+
|
|
29
|
+
## Spec implementation coverage
|
|
30
|
+
|
|
31
|
+
{{coverage_table}}
|
|
32
|
+
|
|
33
|
+
## Verifier findings
|
|
34
|
+
|
|
35
|
+
{{verifier_findings}}
|
|
36
|
+
|
|
37
|
+
## EVALUATE handoff bundle
|
|
38
|
+
|
|
39
|
+
{{evaluate_handoff}}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# mutagent-builder — Principles
|
|
2
|
+
|
|
3
|
+
## PR-BUILD-001 — Spec is the source of truth
|
|
4
|
+
|
|
5
|
+
`agentspec.yaml` is the Definition. BUILD implements it; implementation must not silently redefine the
|
|
6
|
+
agent's persona, operative system prompt, jobs, tools, runtime, or eval criteria.
|
|
7
|
+
|
|
8
|
+
## PR-BUILD-002 — Script only deterministic checks
|
|
9
|
+
|
|
10
|
+
`*sync-spec` is a composite agent/code hybrid. The script checks freshness and names the drift state;
|
|
11
|
+
`ai-architect` reads implementation content and drafts the sync plan; `ai-engineer` performs gated writes.
|
|
12
|
+
Do not grow the script into a source-reading spec generator.
|
|
13
|
+
|
|
14
|
+
## PR-BUILD-003 — Pinned docs are crawled fresh
|
|
15
|
+
|
|
16
|
+
Framework and provider docs from `appendix.framework_docs` are crawled at build time. A dead pin is an
|
|
17
|
+
escalation, not permission to guess APIs.
|
|
18
|
+
|
|
19
|
+
## PR-BUILD-004 — TDD is necessary, not sufficient
|
|
20
|
+
|
|
21
|
+
A green test suite proves only the code that exists. BUILD is complete only when lint/typecheck/build/test
|
|
22
|
+
AND `scripts/verify/spec-impl-coverage.ts` pass.
|
|
23
|
+
|
|
24
|
+
## PR-BUILD-005 — Verifier is read-only
|
|
25
|
+
|
|
26
|
+
`ai-architect` reruns deterministic gates and issues `PROCEED | STEER | ABORT`. It never writes source.
|
|
27
|
+
|
|
28
|
+
## PR-BUILD-006 — IMPROVE returns here for agentspec-backed implementation work
|
|
29
|
+
|
|
30
|
+
Evaluator and diagnostics remain judges/RCA. Approved agentspec-backed remedies are implemented by
|
|
31
|
+
`ai-engineer` and verified by `ai-architect`, then EVALUATE reruns.
|
package/mutagent-builder/.claude/skills/mutagent-builder/references/workflows/build-protocol.md
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# mutagent-builder — BUILD Protocol
|
|
2
|
+
|
|
3
|
+
`mutagent-builder` is the authoritative ADL **② BUILD** owner. It implements validated specs; it does
|
|
4
|
+
not specify new agents and does not judge eval outcomes.
|
|
5
|
+
|
|
6
|
+
## Inputs
|
|
7
|
+
|
|
8
|
+
A BUILD run requires:
|
|
9
|
+
|
|
10
|
+
1. a schema-valid `agentspec.yaml`;
|
|
11
|
+
2. target root;
|
|
12
|
+
3. chosen framework or harness from `build.target_framework`;
|
|
13
|
+
4. pinned `build.runtime`;
|
|
14
|
+
5. pinned docs from `appendix.framework_docs`;
|
|
15
|
+
6. optional approved remedy or EDD change request.
|
|
16
|
+
|
|
17
|
+
Run `scripts/cli/run.sh scripts/handoff/validate-build-input.ts --spec <agentspec.yaml> --target <target-root>` before dispatch when the parent session needs a deterministic input preflight.
|
|
18
|
+
|
|
19
|
+
## Flow
|
|
20
|
+
|
|
21
|
+
1. Helix dispatches `*build` to `mutagent-builder`.
|
|
22
|
+
2. Before scaffolding, `ai-architect` may run `*sync-spec` when the implementation is brownfield or when
|
|
23
|
+
target code is newer than the spec. The deterministic part is only:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
scripts/cli/run.sh scripts/sync-spec/check-sync-spec.ts --spec <agentspec.yaml?> --target <target-root> [--json]
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
If the status is `missing-spec` or `needs-sync`, `ai-architect` performs read-only analysis over the
|
|
30
|
+
implementation, environment/config surface, prompts, tools, triggers, tests, and manifests. It emits a
|
|
31
|
+
cited sync plan. It does **not** write source. `ai-engineer` applies the spec update under the gate,
|
|
32
|
+
validates it, and only then BUILD continues.
|
|
33
|
+
3. Builder spawns `ai-engineer` and `ai-architect` as a paired build team.
|
|
34
|
+
4. `ai-engineer` reads the spec as the SSoT, crawls pinned docs fresh, plans the target repo hierarchy
|
|
35
|
+
before writing, writes tests first, scaffolds/updates the implementation, runs lint/typecheck/build/test,
|
|
36
|
+
then runs `scripts/verify/spec-impl-coverage.ts`.
|
|
37
|
+
5. `ai-architect` re-reads the spec, scaffold, and pinned docs; independently reruns coverage; checks
|
|
38
|
+
model/runtime/doc faithfulness and TDD output; and emits exactly one verdict: `PROCEED`, `STEER`, or
|
|
39
|
+
`ABORT`.
|
|
40
|
+
6. `STEER` returns a bounded amendment instruction to `ai-engineer` with cited spec/doc/test evidence.
|
|
41
|
+
7. `ABORT` escalates to the parent session with cited spec/doc/test evidence.
|
|
42
|
+
8. `PROCEED` emits a build report plus a handoff bundle to EVALUATE.
|
|
43
|
+
|
|
44
|
+
## Build report
|
|
45
|
+
|
|
46
|
+
Use `assets/templates/build-report.md.tpl` and include:
|
|
47
|
+
|
|
48
|
+
- spec path and `meta.spec_id`;
|
|
49
|
+
- target framework and runtime;
|
|
50
|
+
- pinned docs crawled;
|
|
51
|
+
- planned target hierarchy;
|
|
52
|
+
- files written or changed;
|
|
53
|
+
- TDD commands and observed results;
|
|
54
|
+
- `spec-impl-coverage` result table;
|
|
55
|
+
- verifier verdict;
|
|
56
|
+
- EVALUATE handoff bundle paths.
|
|
57
|
+
|
|
58
|
+
## Handoff to EVALUATE
|
|
59
|
+
|
|
60
|
+
The handoff bundle contains `agentspec.yaml`, build report, implementation root, trace/output sink
|
|
61
|
+
location, and any `ChangeRequestResponse` when BUILD was triggered by EDD.
|
package/mutagent-builder/.claude/skills/mutagent-builder/references/workflows/improve-handoff.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# mutagent-builder — IMPROVE Handoff
|
|
2
|
+
|
|
3
|
+
Evaluator remains judge-only. Diagnostics remains RCA/apply-dispatch for non-agentspec targets. When a
|
|
4
|
+
remedy is agentspec-backed and requires code/spec/implementation change, the implementation leg returns
|
|
5
|
+
to BUILD.
|
|
6
|
+
|
|
7
|
+
## EDD request path
|
|
8
|
+
|
|
9
|
+
1. Evaluator emits `AddChangeRequest` / `EddChangeRequest` with grounded failing cases, remedy target
|
|
10
|
+
(`agentspec` or `impl`), and proposed remedy hypothesis.
|
|
11
|
+
2. `ai-engineer` validates and reproduces the grounded defect.
|
|
12
|
+
3. If `remedyTarget: agentspec`, `ai-engineer` amends the Definition, validates it, reruns BUILD, TDD,
|
|
13
|
+
and coverage. Set `rebuilt: true` in `ChangeRequestResponse`.
|
|
14
|
+
4. If `remedyTarget: impl`, `ai-engineer` amends implementation only, then reruns TDD and coverage.
|
|
15
|
+
5. `ai-architect` verifies and returns `PROCEED | STEER | ABORT`.
|
|
16
|
+
6. Evaluator reruns after `ChangeRequestResponse`; BUILD does not self-certify eval success.
|
|
17
|
+
|
|
18
|
+
## Diagnostics apply branch
|
|
19
|
+
|
|
20
|
+
If diagnostics has an approved remedy packet for an agentspec-backed subject and the remedy requires a
|
|
21
|
+
code/spec/implementation change, diagnostics emits the packet to `mutagent-builder`; `ai-engineer`
|
|
22
|
+
implements/amends; `ai-architect` verifies; evaluator reruns. Diagnostics apply workers continue to own
|
|
23
|
+
legacy local markdown targets, remote REST targets, report-only, and non-agentspec adapter cases.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# scripts/cli/run.sh — bun→pnpm→npm fallback selector + .sh dispatch.
|
|
3
|
+
# Usage: scripts/cli/run.sh <script-path.{ts|sh}> [args...]
|
|
4
|
+
# scripts/cli/run.sh --selftest
|
|
5
|
+
#
|
|
6
|
+
# This wrapper provides consistent script invocation across operator environments.
|
|
7
|
+
# All agent Bash() calls to TypeScript OR shell scripts MUST go through this wrapper:
|
|
8
|
+
# Bash("scripts/cli/run.sh scripts/validate/validate-spec.ts ...")
|
|
9
|
+
#
|
|
10
|
+
# Platform matrix — which tier fires when:
|
|
11
|
+
# Tier 1 (bun) : bun is on PATH (local dev, most operator installs)
|
|
12
|
+
# Tier 2 (pnpm-tsx) : bun absent, pnpm on PATH (corporate Node setups, pnpm-only CIs)
|
|
13
|
+
# Tier 3 (npx-tsx) : bun + pnpm absent, npx on PATH (vanilla Node, GitHub Actions default)
|
|
14
|
+
# Tier 4 (error) : none of the above — exits 1 with install guidance
|
|
15
|
+
# .sh scripts bypass all tiers and run directly via bash regardless of PATH state.
|
|
16
|
+
|
|
17
|
+
set -e
|
|
18
|
+
|
|
19
|
+
SCRIPT="$1"
|
|
20
|
+
|
|
21
|
+
# --selftest: print selected runtime and exit 0 (portability probe)
|
|
22
|
+
if [ "$SCRIPT" = "--selftest" ]; then
|
|
23
|
+
if command -v bun >/dev/null 2>&1; then
|
|
24
|
+
echo "run.sh selftest: tier=1 runtime=bun version=$(bun --version 2>/dev/null || echo unknown)"
|
|
25
|
+
elif command -v pnpm >/dev/null 2>&1; then
|
|
26
|
+
echo "run.sh selftest: tier=2 runtime=pnpm-tsx version=$(pnpm --version 2>/dev/null || echo unknown)"
|
|
27
|
+
elif command -v npx >/dev/null 2>&1; then
|
|
28
|
+
echo "run.sh selftest: tier=3 runtime=npx-tsx version=$(node --version 2>/dev/null || echo unknown)"
|
|
29
|
+
else
|
|
30
|
+
echo "run.sh selftest: tier=4 runtime=none (install bun: curl -fsSL https://bun.sh/install | bash)"
|
|
31
|
+
exit 1
|
|
32
|
+
fi
|
|
33
|
+
exit 0
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
shift
|
|
37
|
+
|
|
38
|
+
if [ -z "$SCRIPT" ]; then
|
|
39
|
+
echo "ERROR: no script path provided" >&2
|
|
40
|
+
echo "Usage: run.sh <script.{ts|sh}> [args...]" >&2
|
|
41
|
+
echo " run.sh --selftest" >&2
|
|
42
|
+
exit 1
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
# .sh files: execute directly via bash (no TS runtime needed)
|
|
46
|
+
case "$SCRIPT" in
|
|
47
|
+
*.sh) exec bash "$SCRIPT" "$@" ;;
|
|
48
|
+
esac
|
|
49
|
+
|
|
50
|
+
if command -v bun >/dev/null 2>&1; then
|
|
51
|
+
exec bun run "$SCRIPT" "$@"
|
|
52
|
+
elif command -v pnpm >/dev/null 2>&1; then
|
|
53
|
+
exec pnpm exec tsx "$SCRIPT" "$@"
|
|
54
|
+
elif command -v npx >/dev/null 2>&1; then
|
|
55
|
+
exec npx tsx "$SCRIPT" "$@"
|
|
56
|
+
else
|
|
57
|
+
echo "ERROR: mutagent-builder requires bun, pnpm, or npm/npx to run TypeScript scripts" >&2
|
|
58
|
+
echo "Install bun: curl -fsSL https://bun.sh/install | bash" >&2
|
|
59
|
+
exit 1
|
|
60
|
+
fi
|
package/mutagent-builder/.claude/skills/mutagent-builder/scripts/handoff/validate-build-input.ts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
/** Lightweight input preflight for `mutagent-builder` BUILD dispatch. */
|
|
3
|
+
import * as fs from "node:fs";
|
|
4
|
+
import * as path from "node:path";
|
|
5
|
+
import { parse as parseYaml } from "yaml";
|
|
6
|
+
|
|
7
|
+
interface Args { spec?: string; target?: string; json: boolean }
|
|
8
|
+
interface Result { ok: boolean; specPath: string | null; targetRoot: string | null; reason: string; specId: string | null; targetFramework: string | null; runtime: string | null }
|
|
9
|
+
|
|
10
|
+
function parseArgs(argv: string[]): Args {
|
|
11
|
+
const args: Args = { json: false };
|
|
12
|
+
for (let i = 0; i < argv.length; i++) {
|
|
13
|
+
const arg = argv[i];
|
|
14
|
+
if (arg === "--spec") args.spec = argv[++i];
|
|
15
|
+
else if (arg === "--target") args.target = argv[++i];
|
|
16
|
+
else if (arg === "--json") args.json = true;
|
|
17
|
+
else if (arg === "--help" || arg === "-h") {
|
|
18
|
+
console.log("Usage: scripts/cli/run.sh scripts/handoff/validate-build-input.ts --spec <agentspec.yaml> --target <target-root> [--json]");
|
|
19
|
+
process.exit(0);
|
|
20
|
+
} else throw new Error(`unknown argument: ${arg}`);
|
|
21
|
+
}
|
|
22
|
+
return args;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function check(args: Args): Result {
|
|
26
|
+
if (!args.spec) return { ok: false, specPath: null, targetRoot: args.target ?? null, reason: "spec: --spec is required", specId: null, targetFramework: null, runtime: null };
|
|
27
|
+
if (!args.target) return { ok: false, specPath: args.spec, targetRoot: null, reason: "target: --target is required", specId: null, targetFramework: null, runtime: null };
|
|
28
|
+
const specPath = path.resolve(args.spec);
|
|
29
|
+
const targetRoot = path.resolve(args.target);
|
|
30
|
+
try {
|
|
31
|
+
if (!fs.statSync(specPath).isFile()) throw new Error("not a file");
|
|
32
|
+
} catch (error) {
|
|
33
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
34
|
+
return { ok: false, specPath, targetRoot, reason: `spec: unreadable spec: ${message}`, specId: null, targetFramework: null, runtime: null };
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
if (!fs.statSync(targetRoot).isDirectory()) throw new Error("not a directory");
|
|
38
|
+
} catch (error) {
|
|
39
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
40
|
+
return { ok: false, specPath, targetRoot, reason: `target: unreadable target root: ${message}`, specId: null, targetFramework: null, runtime: null };
|
|
41
|
+
}
|
|
42
|
+
let parsed: any;
|
|
43
|
+
try {
|
|
44
|
+
parsed = parseYaml(fs.readFileSync(specPath, "utf8"));
|
|
45
|
+
} catch (error) {
|
|
46
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
47
|
+
return { ok: false, specPath, targetRoot, reason: `spec: YAML parse failed: ${message}`, specId: null, targetFramework: null, runtime: null };
|
|
48
|
+
}
|
|
49
|
+
const specId = parsed?.meta?.spec_id ?? null;
|
|
50
|
+
const targetFramework = parsed?.build?.target_framework ?? null;
|
|
51
|
+
const runtime = parsed?.build?.runtime ?? null;
|
|
52
|
+
if (!specId) return { ok: false, specPath, targetRoot, reason: "meta.spec_id: missing", specId, targetFramework, runtime };
|
|
53
|
+
if (!targetFramework) return { ok: false, specPath, targetRoot, reason: "build.target_framework: missing", specId, targetFramework, runtime };
|
|
54
|
+
if (!runtime) return { ok: false, specPath, targetRoot, reason: "build.runtime: missing", specId, targetFramework, runtime };
|
|
55
|
+
return { ok: true, specPath, targetRoot, reason: "build inputs ready", specId, targetFramework, runtime };
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export function runCli(argv: string[]): number {
|
|
59
|
+
let args: Args;
|
|
60
|
+
try { args = parseArgs(argv); }
|
|
61
|
+
catch (error) {
|
|
62
|
+
const result: Result = { ok: false, specPath: null, targetRoot: null, reason: `args: ${error instanceof Error ? error.message : String(error)}`, specId: null, targetFramework: null, runtime: null };
|
|
63
|
+
console.error(JSON.stringify(result, null, 2));
|
|
64
|
+
return 1;
|
|
65
|
+
}
|
|
66
|
+
const result = check(args);
|
|
67
|
+
const output = args.json ? JSON.stringify(result, null, 2) : `[validate-build-input] ${result.ok ? "PASS" : "FAIL"}: ${result.reason}`;
|
|
68
|
+
if (result.ok) console.log(output); else console.error(output);
|
|
69
|
+
return result.ok ? 0 : 1;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (import.meta.main) process.exit(runCli(process.argv.slice(2)));
|