@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.
314 lines (303 loc) • 13.8 kB
JSON
{
"description": "Expected goat-flow project structure. Source of truth for setup, audit, and upgrade paths. Not a JSON Schema - this is a manifest of what should exist on disk.",
"version": "1.12.1",
"required_files": [
".goat-flow/.gitignore",
".goat-flow/config.yaml",
".goat-flow/plans/.gitignore",
".goat-flow/plans/README.md",
".goat-flow/logs/quality/README.md",
".goat-flow/logs/events/README.md",
".goat-flow/logs/critiques/README.md",
".goat-flow/logs/review/README.md",
".goat-flow/logs/security/README.md",
".goat-flow/scratchpad/.gitignore",
".goat-flow/scratchpad/README.md",
".goat-flow/learning-loop/lessons/README.md",
".goat-flow/learning-loop/footguns/README.md",
".goat-flow/learning-loop/decisions/README.md",
".goat-flow/logs/sessions/.gitkeep",
".goat-flow/skill-docs/README.md",
".goat-flow/skill-docs/skill-preamble.md",
".goat-flow/skill-docs/skill-conventions.md",
".goat-flow/skill-docs/playbooks/README.md",
".goat-flow/skill-docs/playbooks/browser-use.md",
".goat-flow/skill-docs/playbooks/changelog.md",
".goat-flow/skill-docs/playbooks/code-comments.md",
".goat-flow/skill-docs/playbooks/gruff-code-quality.md",
".goat-flow/skill-docs/playbooks/observability.md",
".goat-flow/skill-docs/playbooks/page-capture.md",
".goat-flow/skill-docs/playbooks/release-notes.md",
".goat-flow/skill-docs/skill-quality-testing/README.md",
".goat-flow/skill-docs/skill-quality-testing/tdd-iteration.md",
".goat-flow/skill-docs/skill-quality-testing/adversarial-framing.md",
".goat-flow/skill-docs/skill-quality-testing/deployment.md",
".goat-flow/hooks/deny-dangerous.sh",
".goat-flow/hooks/gruff-code-quality.sh",
".goat-flow/hooks/post-turn-safety.sh",
".goat-flow/hooks/deny-dangerous/patterns-shell.sh",
".goat-flow/hooks/deny-dangerous/patterns-paths.sh",
".goat-flow/hooks/deny-dangerous/patterns-writes.sh",
".goat-flow/hooks/deny-dangerous/deny-dangerous-self-test.sh",
".goat-flow/architecture.md",
".goat-flow/code-map.md",
".goat-flow/glossary.md",
".goat-flow/learning-loop/patterns/README.md"
],
"required_dirs": [
".goat-flow/learning-loop/decisions/",
".goat-flow/learning-loop/footguns/",
".goat-flow/learning-loop/lessons/",
".goat-flow/learning-loop/patterns/",
".goat-flow/logs/sessions/",
".goat-flow/logs/quality/",
".goat-flow/logs/events/",
".goat-flow/logs/critiques/",
".goat-flow/logs/review/",
".goat-flow/logs/security/",
".goat-flow/scratchpad/",
".goat-flow/skill-docs/",
".goat-flow/skill-docs/playbooks/",
".goat-flow/skill-docs/skill-quality-testing/",
".goat-flow/hooks/",
".goat-flow/hooks/deny-dangerous/",
".goat-flow/plans/"
],
"directory_purposes": {
".goat-flow/learning-loop/decisions/": "Committed ADR history. Durable architectural, product-surface, and tooling decisions with context and rationale; part of the project's persistent knowledge, not session-scoped WIP.",
".goat-flow/learning-loop/footguns/": "Committed architectural trap records. Use for codebase or system footguns that exist independent of one agent mistake; entries should carry grep-friendly file evidence and remain part of durable project knowledge.",
".goat-flow/learning-loop/lessons/": "Committed behavioural mistake records. Use for real agent or workflow mistakes learned from incidents; these entries are durable project knowledge, not local session notes.",
".goat-flow/logs/sessions/": "Workspace-local, gitignored-by-design session logs. Continuity notes for the current checkout only; not part of committed project history. Only .gitkeep is committed.",
".goat-flow/logs/quality/": "Workspace-local, gitignored-by-design quality report history. Saved agent quality reports (JSON) and their captured prose companions (MD); feeds `goat-flow quality history`, `goat-flow quality diff`, and prior same-agent prompt context. Only README.md is committed.",
".goat-flow/logs/events/": "Workspace-local, gitignored-by-design evidence envelope event log. Dashboard and future runtime producers append redacted JSONL records for local continuity; durable project knowledge must be promoted to lessons/, footguns/, or decisions/. Only README.md is committed.",
".goat-flow/logs/critiques/": "Workspace-local, gitignored-by-design critique run history. Phase 3 snapshots from `/goat-critique` runs persisted before the Phase 4 blocking gate so work survives session interruptions. Only README.md is committed.",
".goat-flow/logs/review/": "Workspace-local, gitignored-by-design review artifact history. Refutation ledgers and cross-model refuter outputs from `/goat-review` runs are stored here so review integrity evidence survives session interruptions. Only README.md is committed.",
".goat-flow/logs/security/": "Workspace-local, gitignored-by-design security assessment history. Saved `/goat-security` run outputs for reference across sessions. Only README.md is committed.",
".goat-flow/scratchpad/": "Local, gitignored-by-design working notes. Session-scoped WIP; not a persistence gap. Durable project knowledge belongs in lessons/, footguns/, or decisions/. Transient continuity notes belong in logs/sessions/. Only README.md, .gitignore, and .gitkeep are committed.",
".goat-flow/skill-docs/": "Committed shared meta references composed into every goat-flow skill at scoring and runtime. Holds README.md, skill-preamble.md (Proof Gate, OBSERVED/INFERRED tagging, evidence discipline; loaded every skill invocation), skill-conventions.md (footgun/lesson entry shapes, frontmatter contracts; loaded on full-depth). These describe the universal contract every skill inherits - adding a new file here commits every skill to inherit it.",
".goat-flow/skill-docs/playbooks/": "Committed standalone playbooks for tools and capabilities available to coding agents. Holds README.md as the capability-playbook index, browser-use.md for browser evidence capture, changelog.md for CHANGELOG.md discipline, code-comments.md for inline-comment discipline, gruff-code-quality.md for gruff analyzer triage/fix/verification workflow across gruff-go/gruff-rs/gruff-ts/gruff-php/gruff-py, observability.md for instrumentation discipline, page-capture.md for Playwright page-capture usage tiers, and release-notes.md for per-release narrative discipline. Loaded on-demand by skills/agents - never composed into a skill at scoring time.",
".goat-flow/skill-docs/skill-quality-testing/": "Committed skill-authoring methodology pack. README.md indexes the pack; tdd-iteration.md, adversarial-framing.md, and deployment.md cover skill TDD, pressure-testing, and deployment discipline.",
".goat-flow/hooks/": "Committed central hook runtime. Holds deny-dangerous.sh, gruff-code-quality.sh, post-turn-safety.sh, and hook-specific policy modules under subdirectories.",
".goat-flow/hooks/deny-dangerous/": "Committed shared hook policy store sourced by each agent's deny-dangerous.sh dispatcher. Holds the destructive-shell, secret-path, repository-write policy modules and the central deny-dangerous self-test.",
".goat-flow/plans/": "Local, gitignored-by-design milestone files and plan subdirs. Session-scoped coordination state; not a persistence gap. Only README.md and .gitignore are committed."
},
"optional_files": {
"_note": "Optional files created when the project needs them, not during base setup.",
".cursorignore": "Excludes secret/sensitive paths from Cursor context."
},
"never_create": [],
"skills": {
"canonical": [
"goat",
"goat-debug",
"goat-plan",
"goat-review",
"goat-critique",
"goat-security",
"goat-qa"
],
"references": {
"goat-plan": [
"references/milestone-examples.md",
"references/issue-format.md"
],
"goat-critique": [
"references/rubric-examples.md",
"references/sub-agent-directives.md"
],
"goat-review": [
"references/examples.md",
"references/refuter-spec.md",
"references/automated-review.md"
],
"goat-security": [
"references/common-threats.md",
"references/identity-and-data.md",
"references/file-upload-and-paths.md",
"references/supply-chain-and-cicd.md",
"references/project-policy-template.md"
]
},
"stale_names": [
"goat-audit",
"goat-investigate",
"goat-onboard",
"goat-reflect",
"goat-resume",
"goat-context",
"goat-simplify",
"goat-refactor",
"goat-preflight",
"goat-research",
"goat-sbao",
"goat-test"
]
},
"hooks": {
"stale_names": [
"guard-common.sh",
"guard-destructive-shell.sh",
"guard-secret-paths.sh",
"guard-repository-writes.sh",
"guardrails-self-test.sh",
"deny-dangerous.self-test.sh",
"post-turn-validate.sh",
"plan-checkbox-guard.sh"
]
},
"agents": {
"claude": {
"name": "Claude Code",
"instruction_file": "CLAUDE.md",
"skills_dir": ".claude/skills/",
"capabilities": {
"terminal_binary": "claude",
"setup_surfaces": ["CLAUDE.md", ".claude/settings.json"],
"prompt_invocation_style": "slash",
"skill_source": "installed"
},
"hooks_dir": ".goat-flow/hooks/",
"settings": ".claude/settings.json",
"hook_config_file": ".claude/settings.json",
"deny_hook": ".goat-flow/hooks/deny-dangerous.sh",
"deny_mechanism": {
"type": "both",
"settings_path": ".claude/settings.json",
"script_path": ".goat-flow/hooks/deny-dangerous.sh"
},
"local_pattern": "*/CLAUDE.md",
"hook_events": {
"pre_tool": "PreToolUse",
"post_turn": "Stop"
},
"hooks": [
"deny-dangerous.sh",
"gruff-code-quality.sh",
"post-turn-safety.sh"
]
},
"codex": {
"name": "Codex",
"instruction_file": "AGENTS.md",
"skills_dir": ".agents/skills/",
"capabilities": {
"terminal_binary": "codex",
"setup_surfaces": [
"AGENTS.md",
".codex/config.toml",
".codex/hooks.json"
],
"prompt_invocation_style": "dollar",
"skill_source": "agent-mirror"
},
"hooks_dir": ".goat-flow/hooks/",
"settings": ".codex/config.toml",
"hook_config_file": ".codex/hooks.json",
"deny_hook": ".goat-flow/hooks/deny-dangerous.sh",
"deny_mechanism": {
"type": "both",
"settings_path": ".codex/config.toml",
"script_path": ".goat-flow/hooks/deny-dangerous.sh"
},
"local_pattern": ".github/instructions/*.md",
"hook_events": {
"pre_tool": "PreToolUse",
"post_turn": null
},
"hooks": ["deny-dangerous.sh"]
},
"antigravity": {
"name": "Antigravity",
"instruction_file": "AGENTS.md",
"skills_dir": ".agents/skills/",
"capabilities": {
"terminal_binary": "agy",
"setup_surfaces": [
"AGENTS.md",
".agents/skills/",
".agents/hooks.json",
".goat-flow/hooks/"
],
"prompt_invocation_style": "slash",
"skill_source": "agent-mirror"
},
"hooks_dir": ".goat-flow/hooks/",
"hook_config_file": ".agents/hooks.json",
"deny_hook": ".goat-flow/hooks/deny-dangerous.sh",
"deny_mechanism": {
"type": "deny-script",
"path": ".goat-flow/hooks/deny-dangerous.sh"
},
"local_pattern": "*/AGENTS.md",
"hook_events": {
"pre_tool": "PreToolUse",
"post_turn": null
},
"hooks": [
"deny-dangerous.sh",
"gruff-code-quality.sh"
]
},
"copilot": {
"name": "Copilot CLI",
"instruction_file": ".github/copilot-instructions.md",
"skills_dir": ".github/skills/",
"capabilities": {
"terminal_binary": "copilot",
"setup_surfaces": [
".github/copilot-instructions.md",
".github/instructions/**/*.instructions.md",
".github/hooks/hooks.json"
],
"prompt_invocation_style": "slash",
"skill_source": "github-mirror"
},
"hooks_dir": ".goat-flow/hooks/",
"hook_config_file": ".github/hooks/hooks.json",
"deny_hook": ".goat-flow/hooks/deny-dangerous.sh",
"deny_mechanism": {
"type": "deny-script",
"path": ".goat-flow/hooks/deny-dangerous.sh"
},
"local_pattern": ".github/instructions/**/*.instructions.md",
"hook_events": {
"pre_tool": "preToolUse",
"post_turn": null
},
"hooks": ["deny-dangerous.sh", "gruff-code-quality.sh"]
}
},
"instruction_file": {
"line_target": 125,
"line_limit": 150,
"required_sections": [
"Truth Order",
"Autonomy Tiers",
"Hard Rules",
"Key Resources",
"Essential Commands",
"Execution Loop",
"Definition of Done",
"Artifact Routing",
"Router Table"
],
"version_header_pattern": "# {FILE} - v{VERSION} ({DATE})"
},
"facts": {
"_note": "Static facts only. Derived facts (check counts, skill names, version, presets count) are computed by src/cli/manifest/manifest.ts at load time. `goat-flow manifest --check` validates static facts against observed state (src/dashboard/views/*.html).",
"dashboard_views": [
"about",
"coming-soon",
"home",
"hooks",
"projects",
"prompts",
"quality",
"settings",
"setup",
"skills",
"plans",
"workspace"
]
}
}