# skillgen platform manifest
#
# Build-time only. This file (and everything under tools/skillgen/) is NOT
# shipped in the wheel; it drives the render of the committed skill artifacts
# under graphify/. Run `python -m tools.skillgen` from the repo root to
# regenerate, `--check` to fail on drift, `--bless` to refresh expected/.
#
# Each [platform.<key>] table declares how that host's skill is assembled. Split
# platforms share one lean core template (fragments/core/core.md) with a handful
# of per-platform slots filled from the fields below; monoliths render a single
# inline body. The shared references are assembled automatically — a platform
# declares only its deltas.
#
# Keys:
#   bucket        split | monolith. split = lean core + references sidecar.
#   core          core template basename under fragments/core/ (split only).
#   skill_dst     rendered SKILL.md path, relative to the repo root.
#   refs_dst      rendered references/ dir, relative to the repo root (split only).
#   name          frontmatter name (default "graphify"; must equal the install folder name).
#   description   frontmatter description, PRESERVED VERBATIM per platform. Required.
#   dispatch      Part-B dispatch fragment basename under fragments/dispatch/.
#   extraction    verbose | compact. Selects the extraction-spec reference body.
#   shell         posix | powershell. Selects the Step 1 install fragment.
#   claude_md     bool. Whether the host gets an always-on block (installer-side).
#   hooks_variant claude-md | agents-md. Selects the hooks reference body and the
#                 lean-core hooks pointer target. Default claude-md (the host reads
#                 CLAUDE.md, `graphify claude install`). agents-md is for hosts that
#                 read AGENTS.md and wire always-on via `graphify <host> install`
#                 with the no-PreToolUse-hook caveat (trae, trae-cn).
#   extra_sections ordered list of extra tail fragments (under fragments/extra/),
#                 inserted before Honesty Rules.
#   monolith      core fragment basename for a monolith (monolith only).
#   roundtrip_ref git ref the monolith must match modulo the enum (monolith only).

[platform.claude]
bucket = "split"
core = "core"
skill_dst = "graphify/skill.md"
refs_dst = "graphify/skills/claude/references"
description = "Use for any question about a codebase, its architecture, file relationships, or project content — especially when graphify-out/ exists, where the question should be treated as a graphify query first. Turns any input (code, docs, papers, images, videos) into a persistent knowledge graph with god nodes, community detection, and query/path/explain tools."
dispatch = "agent-tool-disk"
extraction = "verbose"
shell = "posix"
claude_md = true

[platform.codex]
bucket = "split"
core = "core"
skill_dst = "graphify/skill-codex.md"
refs_dst = "graphify/skills/codex/references"
description = "Use for any question about a codebase, its architecture, file relationships, or project content — especially when graphify-out/ exists, where the question should be treated as a graphify query first. Turns any input (code, docs, papers, images, videos) into a persistent knowledge graph with god nodes, community detection, and query/path/explain tools."
dispatch = "codex-agenttask"
extraction = "compact"
shell = "posix"

[platform.windows]
bucket = "split"
core = "core"
skill_dst = "graphify/skill-windows.md"
refs_dst = "graphify/skills/windows/references"
# Must equal the install folder name (graphify). Claude Code requires the skill
# folder name to match the frontmatter `name`, and `graphify install` writes the
# windows variant to ~/.claude/skills/graphify/SKILL.md — a `graphify-windows`
# name broke discovery/validation (#1635). The variant is a packaging detail.
name = "graphify"
description = "Use for any question about a codebase, its architecture, file relationships, or project content — especially when graphify-out/ exists, where the question should be treated as a graphify query first. Turns any input (code, docs, papers, images, videos) into a persistent knowledge graph with god nodes, community detection, and query/path/explain tools."
dispatch = "agent-tool-disk-powershell"
extraction = "verbose"
shell = "powershell"
claude_md = true
extra_sections = ["powershell-troubleshooting"]

[platform.opencode]
bucket = "split"
core = "core"
skill_dst = "graphify/skill-opencode.md"
refs_dst = "graphify/skills/opencode/references"
description = "Use for any question about a codebase, its architecture, file relationships, or project content — especially when graphify-out/ exists, where the question should be treated as a graphify query first. Turns any input (code, docs, papers, images, videos) into a persistent knowledge graph with god nodes, community detection, and query/path/explain tools."
dispatch = "opencode-mention"
extraction = "verbose"

[platform.kilo]
bucket = "split"
core = "core"
skill_dst = "graphify/skill-kilo.md"
refs_dst = "graphify/skills/kilo/references"
description = "Use for any question about a codebase, its architecture, file relationships, or project content — especially when graphify-out/ exists, where the question should be treated as a graphify query first. Turns any input (code, docs, papers, images, videos) into a persistent knowledge graph with god nodes, community detection, and query/path/explain tools."
dispatch = "agent-tool-disk"
extraction = "verbose"
extra_sections = ["kilo-rules"]

[platform.copilot]
bucket = "split"
core = "core"
skill_dst = "graphify/skill-copilot.md"
refs_dst = "graphify/skills/copilot/references"
description = "Use for any question about a codebase, its architecture, file relationships, or project content — especially when graphify-out/ exists, where the question should be treated as a graphify query first. Turns any input (code, docs, papers, images, videos) into a persistent knowledge graph with god nodes, community detection, and query/path/explain tools."
dispatch = "agent-tool-disk"
extraction = "verbose"

[platform.claw]
bucket = "split"
core = "core"
skill_dst = "graphify/skill-claw.md"
refs_dst = "graphify/skills/claw/references"
description = "Use for any question about a codebase, its architecture, file relationships, or project content — especially when graphify-out/ exists, where the question should be treated as a graphify query first. Turns any input (code, docs, papers, images, videos) into a persistent knowledge graph with god nodes, community detection, and query/path/explain tools."
dispatch = "agent-tool-disk"
extraction = "compact"

[platform.droid]
bucket = "split"
core = "core"
skill_dst = "graphify/skill-droid.md"
refs_dst = "graphify/skills/droid/references"
description = "Use for any question about a codebase, its architecture, file relationships, or project content — especially when graphify-out/ exists, where the question should be treated as a graphify query first. Turns any input (code, docs, papers, images, videos) into a persistent knowledge graph with god nodes, community detection, and query/path/explain tools."
dispatch = "task-tool-disk"
extraction = "verbose"

[platform.amp]
bucket = "split"
core = "core"
skill_dst = "graphify/skill-amp.md"
refs_dst = "graphify/skills/amp/references"
description = "Use for any question about a codebase, its architecture, file relationships, or project content — especially when graphify-out/ exists, where the question should be treated as a graphify query first. Turns any input (code, docs, papers, images, videos) into a persistent knowledge graph with god nodes, community detection, and query/path/explain tools."
# Amp uses the Task tool with disk-collected results (the plain task-tool-disk
# dispatch — NOT the trae variant; amp's v8 never carried the no-PreToolUse
# caveat). It reads AGENTS.md and wires always-on via `graphify amp install`, so
# it uses the agents-md hooks variant with amp's own (caveat-free) wording.
dispatch = "task-tool-disk"
extraction = "verbose"
hooks_variant = "agents-md"

[platform.agents]
bucket = "split"
core = "core"
skill_dst = "graphify/skill-agents.md"
refs_dst = "graphify/skills/agents/references"
description = "Use for any question about a codebase, its architecture, file relationships, or project content — especially when graphify-out/ exists, where the question should be treated as a graphify query first. Turns any input (code, docs, papers, images, videos) into a persistent knowledge graph with god nodes, community detection, and query/path/explain tools."
# The generic cross-framework Agent-Skills target (~/.agents/skills and
# ./.agents/skills). Like amp, it reads AGENTS.md and wires always-on via
# `graphify agents install`, so it uses the plain task-tool-disk dispatch and the
# agents-md hooks variant. The rendered skill body is identical to amp's; only the
# hooks reference differs (its own caveat-free `graphify agents install` wording).
# It is a brand-new post-v8 platform, so its --audit-coverage baseline is amp's v8
# body (the body it re-homes); see _v8_baseline_ref in gen.py.
dispatch = "task-tool-disk"
extraction = "verbose"
hooks_variant = "agents-md"

[platform.trae]
bucket = "split"
core = "core"
skill_dst = "graphify/skill-trae.md"
refs_dst = "graphify/skills/trae/references"
description = "Use for any question about a codebase, its architecture, file relationships, or project content — especially when graphify-out/ exists, where the question should be treated as a graphify query first. Turns any input (code, docs, papers, images, videos) into a persistent knowledge graph with god nodes, community detection, and query/path/explain tools."
# Trae reads AGENTS.md, not CLAUDE.md, and has no PreToolUse hook. The dispatch
# block carries the no-PreToolUse caveat and the hooks reference wires
# `graphify trae install` -> AGENTS.md. trae-cn reuses this same bundle.
dispatch = "task-tool-disk-trae"
extraction = "verbose"
hooks_variant = "agents-md"

[platform.kiro]
bucket = "split"
core = "core"
skill_dst = "graphify/skill-kiro.md"
refs_dst = "graphify/skills/kiro/references"
description = "Use for any question about a codebase, its architecture, file relationships, or project content — especially when graphify-out/ exists, where the question should be treated as a graphify query first. Turns any input (code, docs, papers, images, videos) into a persistent knowledge graph with god nodes, community detection, and query/path/explain tools."
dispatch = "agent-tool-disk"
extraction = "compact"

[platform.pi]
bucket = "split"
core = "core"
skill_dst = "graphify/skill-pi.md"
refs_dst = "graphify/skills/pi/references"
description = "Use for any question about a codebase, its architecture, file relationships, or project content — especially when graphify-out/ exists, where the question should be treated as a graphify query first. Turns any input (code, docs, papers, images, videos) into a persistent knowledge graph with god nodes, community detection, and query/path/explain tools."
dispatch = "agent-tool-disk"
extraction = "compact"

[platform.vscode]
bucket = "split"
core = "core"
skill_dst = "graphify/skill-vscode.md"
refs_dst = "graphify/skills/vscode/references"
description = "Use for any question about a codebase, its architecture, file relationships, or project content — especially when graphify-out/ exists, where the question should be treated as a graphify query first. Turns any input (code, docs, papers, images, videos) into a persistent knowledge graph with god nodes, community detection, and query/path/explain tools."
dispatch = "manual-paste"
extraction = "verbose"

# Monoliths: rendered inline as a single body, no split, no references/. The
# render must be diff-clean against the v8 blob in roundtrip_ref except for the
# file_type enum unification (5-value -> 6-value superset). monolith-roundtrip
# guards that.

[platform.aider]
bucket = "monolith"
skill_dst = "graphify/skill-aider.md"
monolith = "aider"
roundtrip_ref = "47042beb05d1f6dd2186c0c499ae2840ce604ead:graphify/skill-aider.md"

[platform.devin]
bucket = "monolith"
skill_dst = "graphify/skill-devin.md"
monolith = "devin"
roundtrip_ref = "47042beb05d1f6dd2186c0c499ae2840ce604ead:graphify/skill-devin.md"
