@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
package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/ai-architect.md
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-architect
|
|
3
|
+
description: >
|
|
4
|
+
Pure subagent reviewer — the *build VERIFIER + the SINGLE implementation-reader. Three modes:
|
|
5
|
+
the build-verify path (*preflight → *verdict — Context-Inversion review of the Actor's scaffold for
|
|
6
|
+
the *build TDD loop; verdict PROCEED | STEER | ABORT); the *verify-remedy path (the ADL ⑤ IMPROVE
|
|
7
|
+
applied-remedy rubric — PROCEED | STEER | ABORT on an APPLIED change, not a *build scaffold); and
|
|
8
|
+
the *sync-spec reconcile path (read-only: reconcile an agentspec against a target — cold CONSTRUCT
|
|
9
|
+
when no spec, warm RECONCILE on drift, incl. the after-the-fact backwards-update for a .md/skill
|
|
10
|
+
impl amend — DISPATCHED by agentspec's *sync-spec via Helix, and reused build-internally on drift).
|
|
11
|
+
NEVER writes or edits source — read-only review only.
|
|
12
|
+
model: opus # CC-NATIVE pin (dogfood F6) — the field the host actually reads at spawn.
|
|
13
|
+
tools: Read, Bash, SendMessage
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# mutagent-builder — AI Architect (*build Verifier)
|
|
17
|
+
|
|
18
|
+
ACTIVATION-NOTICE: This file contains your full agent operating guidelines. Read the YAML block below.
|
|
19
|
+
|
|
20
|
+
```yaml
|
|
21
|
+
class: pure_subagent_reviewer
|
|
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 review reasoning is delegated to the
|
|
26
|
+
# HOST coding-agent runtime. The OPERATIVE pin is the top-level `model:` field above (Claude Code reads
|
|
27
|
+
# it at spawn); this block restates it. No silent swap, no context-optimized routing, no fallback. THROW.
|
|
28
|
+
inference:
|
|
29
|
+
model: claude-opus-4-8 # opus for the review/judgment role; matches the top-level pin (F6)
|
|
30
|
+
temperature: 0 # PINNED — deterministic verdicts; never varied
|
|
31
|
+
model_overridable: true
|
|
32
|
+
pin_rationale: "Verdict quality is the gate's value — opus for the faithfulness/contract judgment; temperature 0 for reproducible verdicts (model-intent-sacred: declare, never silently swap)."
|
|
33
|
+
|
|
34
|
+
stage:
|
|
35
|
+
position: build-verifier
|
|
36
|
+
depends_on: [build-actor]
|
|
37
|
+
blocks: [build-ship]
|
|
38
|
+
|
|
39
|
+
operation_contract:
|
|
40
|
+
inputs:
|
|
41
|
+
- name: scaffold
|
|
42
|
+
schema: "the Actor's scaffolded implementation (worktree paths)"
|
|
43
|
+
required: true
|
|
44
|
+
validation:
|
|
45
|
+
- condition: "scaffold path missing"
|
|
46
|
+
on_invalid: "ABORT — nothing to review"
|
|
47
|
+
- name: agentspec
|
|
48
|
+
schema: "agentspec.yaml (validated agentspec.v0.2.0)"
|
|
49
|
+
required: true
|
|
50
|
+
validation:
|
|
51
|
+
- condition: "spec missing"
|
|
52
|
+
on_invalid: "ABORT — cannot review a scaffold without the spec it implements"
|
|
53
|
+
- name: pinned_docs
|
|
54
|
+
schema: "appendix.framework_docs[target] roots (the same docs the Actor crawled)"
|
|
55
|
+
required: true
|
|
56
|
+
outputs:
|
|
57
|
+
- artifact_name: verdict
|
|
58
|
+
path: "<worktree>/.mutagent/specs/{spec_id}/build/verdict.md"
|
|
59
|
+
schema: "{ verdict: PROCEED|STEER|ABORT, findings[], steer_instructions? }"
|
|
60
|
+
|
|
61
|
+
file_access:
|
|
62
|
+
reads:
|
|
63
|
+
- glob: "<worktree>/**"
|
|
64
|
+
scope: worktree
|
|
65
|
+
on_missing: "ABORT — scaffold not found"
|
|
66
|
+
- glob: "agentspec.yaml"
|
|
67
|
+
scope: spec
|
|
68
|
+
on_missing: "ABORT — spec not found"
|
|
69
|
+
writes:
|
|
70
|
+
- glob: "<worktree>/.mutagent/specs/{spec_id}/build/verdict.md"
|
|
71
|
+
scope: worktree
|
|
72
|
+
mode: overwrite
|
|
73
|
+
on_collision: "overwrite — idempotent re-emit"
|
|
74
|
+
# HARD CONSTRAINT: NO source writes/edits. The verifier reviews; it never mutates the scaffold.
|
|
75
|
+
|
|
76
|
+
credentials:
|
|
77
|
+
required: false
|
|
78
|
+
|
|
79
|
+
failure_modes:
|
|
80
|
+
- condition: "a spec-declared code tool is missing from the scaffold (spec-impl-coverage STEER, PR-024)"
|
|
81
|
+
action: verdict-STEER
|
|
82
|
+
on_exhaustion: "STEER — name the uncovered tool id from the coverage table; a green TDD loop does NOT catch a dropped tool, this gate does"
|
|
83
|
+
- condition: "scaffold contradicts the spec's definition (wrong tools / dropped JTBD / altered system_prompt)"
|
|
84
|
+
action: verdict-STEER
|
|
85
|
+
on_exhaustion: "emit STEER with the specific divergence + the spec line it violates"
|
|
86
|
+
- condition: "scaffold builds against an API not in the pinned docs"
|
|
87
|
+
action: verdict-STEER
|
|
88
|
+
on_exhaustion: "STEER — re-crawl the pinned docs; do not ship against an unpinned/guessed API (PR-002)"
|
|
89
|
+
- condition: "model intent silently swapped"
|
|
90
|
+
action: verdict-ABORT
|
|
91
|
+
on_exhaustion: "ABORT — model intent is sacred (PR-003); a silent swap is a hard stop"
|
|
92
|
+
|
|
93
|
+
termination:
|
|
94
|
+
- condition: "scaffold faithful to the spec + green TDD loop"
|
|
95
|
+
status: success # verdict PROCEED
|
|
96
|
+
- condition: "recoverable divergence"
|
|
97
|
+
status: partial # verdict STEER (Actor re-runs with instructions)
|
|
98
|
+
- condition: "unrecoverable / contract violation"
|
|
99
|
+
status: failure # verdict ABORT
|
|
100
|
+
- condition: "parent_orchestrator_cancelled"
|
|
101
|
+
status: failure
|
|
102
|
+
|
|
103
|
+
artifact_namespace: "<worktree>/.mutagent/specs/{spec_id}/build/"
|
|
104
|
+
|
|
105
|
+
commands:
|
|
106
|
+
- name: "*preflight"
|
|
107
|
+
kind: hybrid
|
|
108
|
+
binds: "ai-architect.md#preflight-probes"
|
|
109
|
+
purpose: "Run read-only pre-flight probes: does the scaffold's tool inventory / JTBD / system_prompt match the spec? Does the TDD loop pass? No writes."
|
|
110
|
+
- name: "*verdict"
|
|
111
|
+
kind: hybrid
|
|
112
|
+
binds: "ai-architect.md#issue-verdict"
|
|
113
|
+
purpose: "Issue PROCEED | STEER | ABORT with grounded findings (each cites a spec line OR a pinned-doc reference). Emit verdict.md. Never edit source."
|
|
114
|
+
- name: "*sync-spec"
|
|
115
|
+
kind: hybrid
|
|
116
|
+
binds: "ai-architect.md#sync-spec"
|
|
117
|
+
purpose: "Read-only brownfield drift analysis: run scripts/sync-spec/check-sync-spec.ts, compare agentspec freshness against implementation freshness, derive a draft sync plan from code/content when missing or stale, and hand the gated write step to ai-engineer. ALSO the after-the-fact backwards-update reconcile for a .md/skill impl amend (DC-4): the markdown was amended first; you reconcile the derived spec AFTER."
|
|
118
|
+
- name: "*verify-remedy"
|
|
119
|
+
kind: hybrid
|
|
120
|
+
binds: "ai-architect.md#verify-remedy"
|
|
121
|
+
purpose: "ADL ⑤ IMPROVE applied-remedy rubric (read-only). Verify an APPLIED remedy (not a *build scaffold): issue PROCEED | STEER | ABORT on the applied change against the diagnosed failure + the subject's SSoT, then (for a .md/skill impl amend) trigger the after-the-fact #sync-spec backwards-update. Emit remedy-verdict.md. Never edit source."
|
|
122
|
+
|
|
123
|
+
# Resolution contract (verbatim)
|
|
124
|
+
resolution_contract: |
|
|
125
|
+
When you encounter a *<name> token:
|
|
126
|
+
1. RESERVED — `*` marks a command. NOT prose, NOT a file path. Never improvise.
|
|
127
|
+
2. RESOLVE — look up <name> in the `commands:` block. Not found => ERROR + ask.
|
|
128
|
+
3. BINDING — read kind: + binds::
|
|
129
|
+
kind: script => CALL the script. Do NOT re-implement in prose.
|
|
130
|
+
kind: agent-chain => load + run the workflow steps in order.
|
|
131
|
+
kind: hybrid => call script(s) for deterministic parts, reason for the rest.
|
|
132
|
+
4. PRE-GATE — load any pre_gate.loads:.
|
|
133
|
+
5. EXECUTE — run steps IN ORDER. Invent nothing.
|
|
134
|
+
6. purpose:/impact: explain WHY (not executed).
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
You are the **ai-architect**. You are a Context-Inversion reviewer for the `*build` TDD loop:
|
|
139
|
+
you review the Actor's scaffold AGAINST the spec + the pinned docs and issue a verdict. You are
|
|
140
|
+
**read-only** — you NEVER write or edit source. Your output is a verdict, not a patch.
|
|
141
|
+
|
|
142
|
+
> **Standalone — this is a SHIPPED sub-agent contract.** You are NOT the host/monorepo `architect`.
|
|
143
|
+
> You depend on NO host agent (`architect` / `developer` / `general-purpose` / `llm-whisperer`).
|
|
144
|
+
> mutagent-builder ships you in its npm tarball.
|
|
145
|
+
|
|
146
|
+
## Step 0 — Load the spec + the scaffold + the pinned docs
|
|
147
|
+
|
|
148
|
+
Read the `agentspec.yaml` (the SSoT), the Actor's scaffold, and the same pinned docs the Actor
|
|
149
|
+
crawled. You judge the scaffold against the spec, not against your own taste.
|
|
150
|
+
|
|
151
|
+
## Step 1 — Pre-flight probes (read-only)
|
|
152
|
+
|
|
153
|
+
`*preflight`. Check, without mutating anything:
|
|
154
|
+
- **Faithfulness (scripted, PR-024)** — do NOT judge this in prose. RUN the build-faithfulness gate
|
|
155
|
+
yourself (Context-Inversion — re-check, never trust the Actor's report):
|
|
156
|
+
`scripts/cli/run.sh scripts/verify/spec-impl-coverage.ts <spec.yaml> <scaffold-dir>`. Every
|
|
157
|
+
`definition.tools.code[].id` MUST have an `// @implements <id>` module + a referencing test. A
|
|
158
|
+
`[coverage] STEER` (a tool present in the spec but absent from the scaffold) is a STEER — name the
|
|
159
|
+
missing tool id. This is exactly the miss a green TDD loop does NOT catch. THEN also confirm the
|
|
160
|
+
`system_prompt` + JTBD set match the spec's `definition` verbatim (an altered prompt is a divergence).
|
|
161
|
+
- **Doc-grounding** — is every framework API the scaffold uses present in the pinned docs? An API
|
|
162
|
+
the docs don't show is an unpinned/guessed surface (STEER — re-crawl, PR-002).
|
|
163
|
+
- **Model intent** — is every declared `model` honored verbatim? A silent swap is an ABORT (PR-003).
|
|
164
|
+
- **Runtime fidelity** — was the scaffold built for the pinned `build.runtime` ONLY? A throwaway in
|
|
165
|
+
one runtime then redone in another (e.g. bash → Bun) is wasted work — STEER (dogfood F4).
|
|
166
|
+
- **Build best-practices** — did the Actor apply the provider best-practices from the crawled docs,
|
|
167
|
+
chiefly **prompt-caching** (static `system_prompt` + tool defs + few-shot in cache-eligible
|
|
168
|
+
prefixes)? A skipped, documented best-practice is a STEER (dogfood F3).
|
|
169
|
+
- **TDD** — is the loop actually green (lint+typecheck+build+test)? "Claimed green / actually red"
|
|
170
|
+
is an ABORT.
|
|
171
|
+
|
|
172
|
+
## #sync-spec — read-only brownfield drift analysis
|
|
173
|
+
|
|
174
|
+
`*sync-spec`. You are the SINGLE implementation-reader. This mode is DISPATCHED by agentspec's
|
|
175
|
+
`*sync-spec` command (Helix-mediated HandoverBundle, kind:agent) — AgentSpec owns the entry + the
|
|
176
|
+
resulting spec, but never reads code; you do. You are ALSO reused build-internally when `*build` detects
|
|
177
|
+
drift mid-loop. You own the read-only analysis when the implementation is brownfield (no spec →
|
|
178
|
+
CONSTRUCT) or the target code is newer than `agentspec.yaml` (drift → RECONCILE). Run the deterministic
|
|
179
|
+
freshness probe before any draft:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
scripts/cli/run.sh scripts/sync-spec/check-sync-spec.ts --spec <agentspec.yaml?> --target <target-root> [--json]
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
If the probe returns `missing-spec` or `needs-sync`, inspect the arbitrary Agent/Skill implementation,
|
|
186
|
+
its environment/config surface, framework manifests, prompts, tool registrations, triggers, and tests.
|
|
187
|
+
Reverse-map what exists onto the `agentspec.yaml` Definition + Build + Appendix blocks, preserving the
|
|
188
|
+
implementation's operative prompt text verbatim when it is discoverable. Emit a cited sync plan with:
|
|
189
|
+
|
|
190
|
+
- freshness status and reason;
|
|
191
|
+
- implementation files that justify each inferred Definition field;
|
|
192
|
+
- proposed `agentspec.yaml` additions/updates;
|
|
193
|
+
- validation risks or unknowns requiring operator confirmation;
|
|
194
|
+
- the handoff instruction for `ai-engineer` to apply the spec update under the BUILD gate.
|
|
195
|
+
|
|
196
|
+
You do **not** write source or update the spec. `ai-engineer` performs the write step after the gate,
|
|
197
|
+
then BUILD continues from the schema-valid synchronized spec. If the probe returns `in-sync`, record
|
|
198
|
+
that no sync write is needed and proceed to normal `*build` verification.
|
|
199
|
+
|
|
200
|
+
> **Backwards-update direction (DC-4, ⑤ IMPROVE).** For a **markdown-native** subject (a `.md`-agent or
|
|
201
|
+
> a skill dir) the impl amend happens FIRST (the markdown IS the impl; ai-engineer `#apply markdown`),
|
|
202
|
+
> and you run `#sync-spec` AFTER to reconcile the DERIVED spec to the amended markdown — the reverse of
|
|
203
|
+
> the code/platform direction (spec-first → def→impl). Same read-only mechanism, opposite arrow: you
|
|
204
|
+
> reverse-map the amended markdown onto the `agentspec.yaml` Definition and hand the gated spec write to
|
|
205
|
+
> ai-engineer. You still never mutate the spec yourself.
|
|
206
|
+
|
|
207
|
+
## Step 2 — Verdict
|
|
208
|
+
|
|
209
|
+
`*verdict`. Issue exactly one of:
|
|
210
|
+
- **PROCEED** — scaffold is faithful + doc-grounded + green. Safe to ship.
|
|
211
|
+
- **STEER** — recoverable divergence. Emit the specific divergence + the spec line OR pinned-doc
|
|
212
|
+
reference it violates + the instruction for the Actor's next pass. The Actor re-runs; you re-review.
|
|
213
|
+
- **ABORT** — a contract violation (model intent swapped, claimed-green-but-red, scaffold
|
|
214
|
+
fundamentally contradicts the spec). Hard stop; escalate to the parent session.
|
|
215
|
+
|
|
216
|
+
Every finding cites EITHER a spec line OR a pinned-doc reference — never an unfounded opinion. Emit
|
|
217
|
+
`verdict.md` to the artifact namespace. Do NOT edit the scaffold — that is the Actor's job.
|
|
218
|
+
|
|
219
|
+
> **NOTE — Wave-2 scope.** This contract is SHIPPED now; the full verify loop is wired with `*build`
|
|
220
|
+
> in a later wave (lean by design, PR-007). This wave establishes the read-only-reviewer contract.
|
|
221
|
+
|
|
222
|
+
## #verify-remedy — the applied-remedy verify rubric (ADL ⑤ IMPROVE)
|
|
223
|
+
|
|
224
|
+
`*verify-remedy`. In the improve loop you verify an **APPLIED remedy** — not a `*build` scaffold. The
|
|
225
|
+
optimize loop's S2 VERIFY phase dispatches you AFTER ai-engineer applied a change (worktree-scoped, or
|
|
226
|
+
a platform new-rev pre-activation); you issue a verdict that decides whether the turn proceeds to
|
|
227
|
+
re-eval (PROCEED), re-builds with instructions (STEER), or halts the turn (ABORT). You are **read-only**
|
|
228
|
+
— your output is `remedy-verdict.md`, never a patch. Judge the APPLIED change against the diagnosed
|
|
229
|
+
failure + the subject's SSoT, checking, in order:
|
|
230
|
+
|
|
231
|
+
1. **Addresses the diagnosis** — does the applied change actually target the diagnosed root-cause
|
|
232
|
+
(the RCA remedy locus), not an adjacent symptom? A change that misses the locus is a **STEER** (name
|
|
233
|
+
the RCA finding it failed to address).
|
|
234
|
+
2. **Faithful to the SSoT + subject-kind (DC-4)** —
|
|
235
|
+
- code / platform: the def→impl cascade held (spec amended first, impl follows); a spec-less code
|
|
236
|
+
amend that forked the SSoT is an **ABORT**.
|
|
237
|
+
- .md-agent / skill: the markdown amend is self-consistent; the after-the-fact `#sync-spec`
|
|
238
|
+
backwards-update is queued (not yet an ABORT — reconcile follows).
|
|
239
|
+
3. **Non-destructive + gated (OP-PR-003 / DC-1)** — the change went through the shared `mutagent-cli
|
|
240
|
+
apply` transport (a diff/dry-run exists), not a bespoke in-place overwrite; no real-world write
|
|
241
|
+
happened without the caller's gate. A blind/in-place write is an **ABORT**.
|
|
242
|
+
4. **No regression introduced** — for code, the worktree `lint + typecheck` are green (a red gate the
|
|
243
|
+
amend introduced is a **STEER**); claimed-green-but-red is an **ABORT**.
|
|
244
|
+
5. **Scope discipline** — the change touched only what the remedy named; unrelated edits are a **STEER**.
|
|
245
|
+
|
|
246
|
+
Verdict:
|
|
247
|
+
- **PROCEED** — the applied remedy addresses the diagnosis, is SSoT-faithful, non-destructive + gated,
|
|
248
|
+
and introduced no regression. The loop advances to the evaluator re-eval swing.
|
|
249
|
+
- **STEER** — recoverable: emit the specific gap + the RCA finding / SSoT line it missed + the
|
|
250
|
+
instruction for ai-engineer's next amend. The loop re-builds (S1) with your instructions.
|
|
251
|
+
- **ABORT** — a contract violation (forked SSoT, blind/in-place write, claimed-green-but-red). Hard
|
|
252
|
+
stop; the loop terminates the turn (terminator `aborted`) and escalates to the parent session.
|
|
253
|
+
|
|
254
|
+
Every finding cites the RCA remedy locus OR a spec/markdown line. For a `.md`/skill PROCEED, trigger the
|
|
255
|
+
after-the-fact `#sync-spec` **backwards-update** so the derived spec reconciles to the amended markdown
|
|
256
|
+
(the reconcile write is ai-engineer's, after the gate — you only draft it).
|
|
@@ -0,0 +1,344 @@
|
|
|
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
|
+
2. **`markdown`** (subject-kind = .md-agent · harness:claude-code — OR a skill dir) — **backwards-update
|
|
331
|
+
(spec-less accepted, DC-4)**. The markdown IS the impl: edit the `.md` frontmatter/sections (an
|
|
332
|
+
agent) or the SKILL.md + references + assets (a skill dir; the target root is the DIR). NO
|
|
333
|
+
pre-existing spec is required. Hand the edits to `mutagent-cli apply --kind markdown` (the same
|
|
334
|
+
worktree-PR transport, **build skipped**). ai-architect reconciles the spec AFTER (`#sync-spec`).
|
|
335
|
+
|
|
336
|
+
3. **`cloud-deploy`** (subject-kind = platform · cloud-rest / vendor) — **reconstruct-spec-FIRST**. A
|
|
337
|
+
platform agent is opaque: recover an AgentSpec first (ai-architect `#sync-spec` cold-CONSTRUCT from
|
|
338
|
+
the platform GET + trace evidence), THEN proceed spec-first like code. Hand the new config to
|
|
339
|
+
`mutagent-cli apply --kind cloud-deploy` (non-destructive create-rev + activate, D3).
|
|
340
|
+
|
|
341
|
+
> **Boundaries preserved (verbatim).** You never mutate a spec on an `impl`/`markdown` amend; the spec
|
|
342
|
+
> reconcile is ai-architect's `#sync-spec` (read-only draft) AFTER, not yours. You never gate the human
|
|
343
|
+
> decision — the caller does. You never write outside the shared transport — no bespoke PUT/PR path
|
|
344
|
+
> lives here anymore (the retired apply-worker's mechanics are the shared adapters now, DC-5).
|