UNPKG

@blundergoat/goat-flow

Version:

AI coding agent harness and local dashboard for Claude Code, OpenAI Codex, Google Antigravity, and GitHub Copilot - setup audits, guardrails, structured skills, deny hooks, and persistent learning loops.

92 lines 8.36 kB
import { getAgentProfile } from "../agents/registry.js"; import { appendFocusedReportContract, formatLocalDate, qualityModeLabel, qualityModeTargetScope, renderBoundedLearningLoopContext, renderPriorReportContext, } from "./compose-quality-common.js"; function focusedQualityModePrompt(mode, agent) { if (mode === "process") { const agentAuditCmd = agent ? `node --import tsx src/cli/cli.ts audit . --agent ${agent} --harness --check-drift --format json` : "node --import tsx src/cli/cli.ts audit . --check-drift --format json"; return [ "REPORTING-ONLY ASSESSMENT MODE. Do not edit tracked files. Do not use /goat-review or any goat skill as the wrapper for this assessment; this prompt is the full assessment contract. You may read files, run read-only validation commands, and write normal gitignored reporting/local-state artifacts if the runner requires them. In this contract, gitignored logs, scratchpad notes, critique snapshots, quality reports, and task-local state do not count as writes; do not report them as read-only violations.", "", "Assess the goat-flow framework process in the controlling workspace: instruction files, .goat-flow/config.yaml, .goat-flow/architecture.md, .goat-flow/code-map.md, .goat-flow/skill-docs/, .goat-flow/skill-docs/playbooks/, workflow/setup/, workflow/manifest.json, installed skill mirrors, hooks, quality prompt modes, and validation scripts.", "", `Grounding commands to run or explicitly mark skipped: git status --short --untracked-files=all; node --import tsx src/cli/cli.ts stats . --check; ${agentAuditCmd}; node --import tsx src/cli/cli.ts audit . --check-content --format json; bash scripts/preflight-checks.sh. Command output wins over prose.`, "", "Use INDEX-first retrieval for .goat-flow/learning-loop/{footguns,lessons,patterns,decisions}/INDEX.md. Do not broad-load those directories.", "", "Assessment checklist: Pre-check Results; Findings ordered by severity; What works; What is weak or ceremonial; Contradictions and false paths; Top 5 improvements; What was not verified. Use this checklist to decide the saved JSON scores and findings. Each saved finding's detail/evidence fields must include action type, exact file or semantic-anchor evidence, why it matters, and a verification command that would prove the fix.", ].join("\n"); } if (mode === "skills") { return [ "REPORTING-ONLY ASSESSMENT MODE. Do not edit tracked files. Do not use /goat-critique, /goat-review, or any other goat skill as the wrapper for this assessment; this prompt is the full assessment contract. You may read files, run read-only commands, and write normal gitignored reporting/local-state artifacts if the runner requires them. In this contract, gitignored logs, scratchpad notes, critique snapshots, quality reports, and task-local state do not count as writes; do not report them as read-only violations.", "", "Assess all seven goat-flow skills: /goat, /goat-debug, /goat-plan, /goat-review, /goat-critique, /goat-security, and /goat-qa. Use .goat-flow/skill-docs/skill-quality-testing/README.md plus the relevant files under .goat-flow/skill-docs/skill-quality-testing/. Read the workflow template SKILL.md files and installed mirrors under .claude/skills/, .agents/skills/, and .github/skills/ where relevant.", "", "Method rule: prefer live skill invocation only when the runner supports it safely. If live invocation or delegated/sub-agent calls are unavailable, perform a file-grounded protocol run against SKILL.md and label the evidence limit. Never imply a dry run is bulletproof TDD evidence.", "", "For each skill, output exactly these fields: Method used; Evidence limit; Worked; Failed/confusing; Useless ceremony; RED scenario; GREEN result; minimal REFACTOR; Verification command or grep that would prove the fix. Do not stop after one skill and do not ask which skill.", "", "After the seven sections, output: Cross-skill patterns; Top 5 skill/system improvements with file or semantic-anchor evidence and expected impact; What was not tested. Prioritize actionable improvements over praise.", ].join("\n"); } return [ "REPORTING-ONLY ASSESSMENT MODE. Do not edit tracked files. Do not use /goat-review or any goat skill as the wrapper for this assessment; this prompt is the full assessment contract. You may read files, run read-only validation commands, and write normal gitignored reporting/local-state artifacts if the runner requires them. In this contract, gitignored logs, scratchpad notes, critique snapshots, quality reports, and task-local state do not count as writes; do not report them as read-only violations.", "", "Assess whether the selected target project's agent harness is actually usable, not only structurally present. Focus on context loading, constraint safety, verification evidence, recovery paths, feedback-loop durability, and whether instructions distinguish the controlling goat-flow workspace from the selected target.", "", "Grounding commands to run or explicitly mark skipped: git status --short --untracked-files=all; node --import tsx src/cli/cli.ts audit . --harness --format json from the controlling workspace when applicable; node --import tsx src/cli/cli.ts stats . --check when the selected target is a goat-flow installation. Command output wins over prose.", "", "Read next: target instruction files, local agent settings/hooks, .goat-flow/config.yaml when present, .goat-flow/skill-docs/ and .goat-flow/skill-docs/playbooks/ when present, controlling-workspace harness code under src/cli/audit/harness/, and any dashboard terminal/runner context text that affects selected-target execution.", "", "Output sections: Harness Scorecard; Findings ordered by severity; Concern-by-concern analysis; False positive and false negative risks; Top 5 improvements; What was not verified. For each deterministic harness concern (Context, Constraints, Verification, Recovery, Feedback Loop), state what works, what fails or is weak, exact file or semantic-anchor evidence, and a verification command that would prove the fix.", "", "Do not treat a structural PASS as quality PASS. If a score or check claims completeness, verify what behavior it actually proves.", ].join("\n"); } export function composeFocusedQuality(input, qualityMode) { const { agent, projectPath, auditReport, priorReport = null, selectedProjectPath, runDate = formatLocalDate(), } = input; const profile = getAgentProfile(agent); const auditStatus = auditReport ? auditReport.status : "unavailable"; const label = qualityModeLabel(qualityMode); const lines = []; lines.push(`# GOAT Flow ${label} Assessment - ${profile.name}`); lines.push(""); lines.push(focusedQualityModePrompt(qualityMode, agent)); lines.push(""); lines.push("Quality mode scope:"); lines.push(`- Mode: ${label}`); lines.push(`- Project path: \`${projectPath}\``); if (selectedProjectPath && selectedProjectPath !== projectPath) { lines.push(`- Selected target project: \`${selectedProjectPath}\``); } lines.push(`- Scope rule: ${qualityModeTargetScope(qualityMode)}`); lines.push(`- Selected quality target agent: ${agent}`); lines.push("- Keep this assessment read-only unless the user explicitly asks for edits."); lines.push(""); lines.push(renderPriorReportContext(priorReport, qualityMode)); lines.push(""); const learningLoopContext = renderBoundedLearningLoopContext(input.sharedFacts, qualityMode); if (learningLoopContext) { lines.push(learningLoopContext); lines.push(""); } appendFocusedReportContract(lines, { agent, projectPath, auditStatus, qualityMode, priorReport, runDate, }); return { command: "quality", agent, auditStatus, auditSummary: `${label}: ${qualityModeTargetScope(qualityMode)}`, prompt: lines.join("\n"), }; } //# sourceMappingURL=compose-quality-focused.js.map