{
  "name": "culmat/avanti-luanti — 2 hooks",
  "slug": "source-hooks-b13724aa6111c8ac0f2d398e",
  "type": "hooks",
  "category": "developer-tools",
  "example": false,
  "evidence_state": "pinned_source_listing",
  "stamp": "Pinned source listing — machine-checked",
  "summary": "Pinned source declarations and file hashes were listed.",
  "outcome": "Listed 2 hook declarations. Ran 67 git commands; each one's exit status and output hash is in commands.json. Scope: acquisition and static inspection.",
  "rule_results": [
    "The retained source tree matches its acquisition manifest.",
    "Declared hook names (listing.json): PostToolUse; SessionStart"
  ],
  "task": "What declarations and files are present in this pinned source?",
  "setup": "Git blob acquisition followed by static source inspection.",
  "limitations": "Scope: acquisition and static inspection. Command results: commands.json.",
  "source_url": "https://github.com/culmat/avanti-luanti",
  "documentation_url": "https://github.com/culmat/avanti-luanti",
  "commit": "e0c79bb3df14c1c129fc3e03524aacc318d84fb2",
  "tree_sha256": "da45ed66ea8b5468d4976eeea7071061936203ace0cfc77aef0fb07285e74f85",
  "file_sha256": {
    ".claude-plugin/marketplace.json": "37a64fcf4537f9fdfb72242c5614bed83fd5a9bffa9e2639e1a2ad7730108263",
    ".github/workflows/ci.yml": "95e8686b5f39eed1676cac1ad6d9413d348aaf5bb632137a4cdba3bef3adda1b",
    ".github/workflows/mod-ci.yml": "d7ad719c7cfc979a8cff0139d547ad28dfe971a0a4489d2da4ceeba49bd1d635",
    ".github/workflows/mod-release.yml": "cfcbd011872fc7d1713eb029fb057973681e17ed0d7dc4b8c8f870870d801dd5",
    ".gitignore": "560b6b55e47a0b349218fd241a233b01e806172cdbefbaf30a9063aeeccdc512",
    ".shellcheckrc": "7267330748297b2e01be4f0dc8738d233dfb1e6c6c0f606846a9f927e8f39c36",
    "AGENTS.md": "18a67b76485c3fe44c73f775ef55bf658208cc739c15089eb3be2756110b638e",
    "CLAUDE.md": "336cc4fbf19beaada7ccf9986414fa91851a8d7a07dfb3ccbe800a69eed0ab49",
    "CONTRIBUTING.md": "25752436d6170c4cf0c24ab982d7e5848f69852e816fb0b04f35dc58e19c3408",
    "LICENSE": "201c86feb44b64dae21e21551816f24b396bf0d701c1f129f4523884b1014f26",
    "README.md": "bdc29f2c41a313d813c4e124d8fee381b1f6029770a910b0a01dfbb6b1471ce2",
    "docs/ai-policy.md": "cb5b191e46965e4a99fc403dfc89761ed09be3289cf8113a6732a05280bfa521",
    "docs/contentdb.md": "90eff4b3f3292f62ad5d5ff6983bfc37582de1cc18c6eb747381399fc6b31e03",
    "docs/default-dependency.md": "a288eba9e902ca53674e791c129ccf426edadf6885497c64a39144ec1175e1a4",
    "docs/luanti-primer.md": "5f5ed54e1a3c4766a13408980051e959a8616d44e4f1bb63d5ad9e93188c22d3",
    "docs/upstream.md": "84b4183a818afc9bf16ad9f6288d09292264423369fe2d1ac0118549528c24c5",
    "plugins/avanti/.claude-plugin/plugin.json": "be4dc4c3f3ff5f8c580708abadf134835f90af172fed4482726551aff71df56f",
    "plugins/avanti/.mcp.json": "15b7786ef4b1ed244a1b574a9d37a2780fdf792fd2a0ca1a14ddf00bac8fa5f7",
    "plugins/avanti/agents/compat-investigator.md": "21ebb8fa6380934fef9f8ea2138512dc7db4db57649a47eec6769094d16fdf90",
    "plugins/avanti/agents/mod-builder.md": "4df990bbcaa3fe8257c7432d15933cc4632f051094f1c7e962e36ff237bc4d3b",
    "plugins/avanti/agents/mod-reviewer.md": "13d455aca62fe86e6cb0225aab8bc132b6de2041a55a9e93a1b630f43d94bb4d",
    "plugins/avanti/bin/avanti": "aca0637a4ac8d40438414bc33b158f9db99f05cd334d8d68b718a592d55eeefe",
    "plugins/avanti/hooks/hooks.json": "63877fa2b53498050e6f531c2f354a2a00a821daf62a669a28268005579fbfcb",
    "plugins/avanti/hooks/post-edit.sh": "706cfa36d77a32155ac581b156ca5075811ebd2c2e0bf36dd80da3d69b2a020f",
    "plugins/avanti/hooks/session-start.sh": "ba7f2e75b0706db83a982aa07e0ed6e8435a589359ddf702b4158cf59034f47d",
    "plugins/avanti/lib/avanti_camera/init.lua": "97b60574e0a51c4f7b1c775d5dde1857e98cb71a5ee4d6535f3d076e4e3503e1",
    "plugins/avanti/lib/avanti_camera/mod.conf": "4777749957039e598f51815fec8c458cdcd88626b80b3d8def7fee5cb1c91f1e",
    "plugins/avanti/lib/avanti_showcase/init.lua": "3940178afe348f20e820a483ac8440bea6bb0a469d3af8381ce38c37533afa11",
    "plugins/avanti/lib/avanti_showcase/mod.conf": "d909e8d17352b5490ac673147a3c37fb6783022d0c3ece5a6fde22c9e4d4b7c9",
    "plugins/avanti/lib/avanti_smoke/init.lua": "14ab0df7f8fd9ac38f170a049da1bcf4c10ce73cac71f9541879471022ec0122",
    "plugins/avanti/lib/avanti_smoke/mod.conf": "3bfa30a763d6c80a4da40525ff0aa76886d80a5e59dbe41bc1c6be343ff37ff6",
    "plugins/avanti/lib/common.sh": "7eb135a0525f9ef19732b2a62aff57ef17a024b5f4e06c418dcbddf886aada38",
    "plugins/avanti/lib/games.tsv": "3b65fd39f6125a3eefe9cc031db8598cde4799886abf8a909d2ca9252600f78e",
    "plugins/avanti/lib/screenshot/cropbottom.swift": "6f2b3e5a74895ece086c0b3aa4842ccb2414893bd2ce9e56da6ece3a69c817d3",
    "plugins/avanti/lib/screenshot/winid.swift": "f7953f4404a8f2e60b376b908d24d4120c279f453184c8460c4c6dcd3503604d",
    "plugins/avanti/lib/screenshot/winvideo.swift": "fcfd7b540ef9d5f8b38b00cbae9f45bf55b8bcb44ce58b1c1eedb8f29bd87e28",
    "plugins/avanti/lib/secrets.sh": "34e852f3a9b80264a142426130c5ee8ac484d9ac15d083148e00ce26bf02e759",
    "plugins/avanti/skills/compat/SKILL.md": "1790d3892f9fb5b2b6ac44f64744d9d242a80d0b889bb3b10ecd9a6ede5482c3",
    "plugins/avanti/skills/contentdb-publishing/SKILL.md": "31b7c001ab1d72e637ee0055446f40555a69d807513522897406a682da88a9d7",
    "plugins/avanti/skills/deps/SKILL.md": "13cb315d2eeb95ef2e7e6014353bc5c377df60158d4d8640a64eb1e20a706a2c",
    "plugins/avanti/skills/give-back/SKILL.md": "a0c6c23634241ef60041b5a5ac86cf1aab9d4d2c279835c0e452751080236698",
    "plugins/avanti/skills/luanti-dependencies/SKILL.md": "9531ecb10fc3f81f1ec76c08cda44efe7dd44ea3dfe420a46769148389f9c4d9",
    "plugins/avanti/skills/luanti-dependencies/xcompat-porting.md": "cb62d83be7d4f8c86fa84891cf46e5bc3ff16a4903d4e47f2f17f65fa9ebdedc",
    "plugins/avanti/skills/luanti-modding/SKILL.md": "a4acc65cbff926e197e4168e9ee746f9935d060f72edc66ada560231847a659b",
    "plugins/avanti/skills/luanti-testing/SKILL.md": "71b1875f6f811a6cdc47a8c56947dfecfac839a0fa15912c7534f5f271b15f72",
    "plugins/avanti/skills/new-mod/SKILL.md": "707bac8510bb1fa5058a7fdd1b45baff538a1193907c68b85ce5c249b620594a",
    "plugins/avanti/skills/release/SKILL.md": "aa0a16873a7945f215870c3bfc9fccfea36c4a84790a71c781635c2285cee8e0",
    "plugins/avanti/skills/test/SKILL.md": "fc95499f0a003b1aa149ba8c27095feec4180f4905460e5b2570c459b980794a",
    "plugins/avanti/templates/mod/.cdb.json": "8f4474164c0d007d3630d78037a3e175172ad33420d7f61c1a79e342e6916802",
    "plugins/avanti/templates/mod/.gitattributes": "9f25ae62e0a1219155facd6acfcb2a0a28b2f4bc546f953cbb146ba68806a083",
    "plugins/avanti/templates/mod/.github/workflows/ci.yml": "7ed0d96ef222abb6243d11c49a4bb0e00e4132a032974c7fd0f790e01aa37b78",
    "plugins/avanti/templates/mod/.github/workflows/release.yml": "5d2e1b2be3d1197297fcaef395cb958cd7c724c3031001eb1cd1502d540534a0",
    "plugins/avanti/templates/mod/.gitignore": "00facd1fe217ef1785ec90a29ba093666918f93830c63bc57005252ea5c14e44",
    "plugins/avanti/templates/mod/.luacheckrc": "e1afd2f37231c59b715caeaef6dbd36c0413fb16cf3bbc57dfe7ad8256d3478c",
    "plugins/avanti/templates/mod/.stylua.toml": "e59efaaf0ed3bb0c8563bc137012f7a233a429aab2422c7c7ee3a0aa925def58",
    "plugins/avanti/templates/mod/LICENSE": "fe9bca086d7f721cb40c05107aad55b21d6c63f681da12639466f8b13176a718",
    "plugins/avanti/templates/mod/README.md": "47441acd3b3569b9cbfcaac3f951bb3e6a8fc35fa6deff5ea111dfa79b5c67d1",
    "plugins/avanti/templates/mod/init.lua": "94cf0338e12782883f411465673da6ae8e45d4b9e1ff2fab9a71e75dc96dc196",
    "plugins/avanti/templates/mod/locale/template.txt": "4e298130f91ed0f79bb5adc0374856feb9cfb7d51aa6a00c90995fc59026bf86",
    "plugins/avanti/templates/mod/mod.conf": "67aa5d69b109c13a6f3b1ada138d58c4c00143d06ca72d2ea411412c16e198e0",
    "plugins/avanti/templates/mod/test/mtt.lua": "86d4699d62ad62ae0ebe51af5a8b8928a1d955e8cca6e8af99a0f29a5d4c7490",
    "setup.sh": "cf61d7284ada468f1dca181e12172f6422029e9a627a7d75dba63780758a97ba"
  },
  "lockfiles": [
    "LOCK.json"
  ],
  "utc_date": "2026-10-23T03:23:33Z",
  "source_date": "2026-10-16",
  "discovered_date": "2026-10-16",
  "retested_date": "2026-10-23",
  "reviewed_date": "2026-10-23",
  "published_date": "2026-10-23",
  "modified_date": "2026-10-23",
  "reviewer": "machine pipeline",
  "harness_version": "toolwitness harness at commit a83c164149f42882acdd8d2c9d37da6195aca107",
  "claude_code_version": "Not applicable: static source inspection (commands.json).",
  "model_id": "Not applicable: static source inspection (commands.json).",
  "scanner_version": "Not applicable: static source inspection.",
  "rulepack_version": "Not applicable: static source inspection.",
  "agents": [],
  "disclaimer": "This record lists declarations and file hashes from a pinned source tree. Git command results from acquisition and static inspection are retained in commands.json. Scope: acquisition and static inspection. It is not a security or quality verdict. Changed bytes are outside this record.",
  "commands": [
    "Ran 67 git commands; each one's exit status and output hash is in commands.json. Scope: acquisition and static inspection."
  ],
  "prompt_list": [
    "Not applicable: static source inspection (commands.json)."
  ],
  "history": [
    "2026-10-23T03:23:33Z: pinned source inspection"
  ],
  "application": {
    "name": "culmat/avanti-luanti — 2 hooks",
    "softwareVersion": "e0c79bb3df14c1c129fc3e03524aacc318d84fb2",
    "applicationCategory": "DeveloperApplication",
    "operatingSystem": "Not exercised"
  },
  "artifacts": {
    "transcript": "Ran 67 git commands; each one's exit status and output hash is in commands.json. Scope: acquisition and static inspection.",
    "sinkhole_log": "Not applicable: static source inspection (commands.json).",
    "canary_log": "Not applicable: static source inspection (commands.json).",
    "scanner_output": "Not applicable: static source inspection (commands.json).",
    "normalized_text": "{\n  \"listing\": {\n    \"skills\": [\n      {\n        \"path\": \"plugins/avanti/skills/compat/SKILL.md\",\n        \"name\": \"compat\",\n        \"description\": \"Check and improve cross-game compatibility of a Luanti mod - static analysis (ldg compat/lint) plus headless runs in each game, then concrete code changes to make failing games work.\",\n        \"files\": {\n          \"plugins/avanti/skills/compat/SKILL.md\": \"1790d3892f9fb5b2b6ac44f64744d9d242a80d0b889bb3b10ecd9a6ede5482c3\"\n        }\n      },\n      {\n        \"path\": \"plugins/avanti/skills/contentdb-publishing/SKILL.md\",\n        \"name\": \"contentdb-publishing\",\n        \"description\": \"Prepare and publish Luanti (Minetest) packages on ContentDB (content.luanti.org) - policy checklist (licenses, right to a name, game prefixes, screenshots, AI disclosure), .cdb.json fields, release methods (webhooks, API, polling), and community etiquette. Use before any release or when preparing a mod for the community.\",\n        \"files\": {\n          \"plugins/avanti/skills/contentdb-publishing/SKILL.md\": \"31b7c001ab1d72e637ee0055446f40555a69d807513522897406a682da88a9d7\"\n        }\n      },\n      {\n        \"path\": \"plugins/avanti/skills/deps/SKILL.md\",\n        \"name\": \"deps\",\n        \"description\": \"Explain the dependency situation of a Luanti mod, modpack or ContentDB package in plain language - what each dependency stands for, who provides it, which games satisfy it, and what to change.\",\n        \"files\": {\n          \"plugins/avanti/skills/deps/SKILL.md\": \"13cb315d2eeb95ef2e7e6014353bc5c377df60158d4d8640a64eb1e20a706a2c\"\n        }\n      },\n      {\n        \"path\": \"plugins/avanti/skills/give-back/SKILL.md\",\n        \"name\": \"give-back\",\n        \"description\": \"Turn findings (undeclared dependencies in other mods, game load-order bugs, ContentDB data issues, missing xcompat coverage, tooling gaps) into well-evidenced upstream reports - collected locally for a human to file in their own words. Never posts anything.\",\n        \"files\": {\n          \"plugins/avanti/skills/give-back/SKILL.md\": \"a0c6c23634241ef60041b5a5ac86cf1aab9d4d2c279835c0e452751080236698\"\n        }\n      },\n      {\n        \"path\": \"plugins/avanti/skills/luanti-dependencies/SKILL.md\",\n        \"name\": \"luanti-dependencies\",\n        \"description\": \"Reason correctly about dependencies between Luanti (Minetest) mods, modpacks and games, and make mods work across games. Covers how the engine resolves mod names, why `depends = default` means \\\"Minetest Game-like games only\\\", the ldg/luanti-depgraph tools (providers, deps, resolve, compat, lint, rdeps), and cross-game patterns (optional_depends + guards, xcompat, aliases, groups, supported_games).\",\n        \"files\": {\n          \"plugins/avanti/skills/luanti-dependencies/SKILL.md\": \"9531ecb10fc3f81f1ec76c08cda44efe7dd44ea3dfe420a46769148389f9c4d9\",\n          \"plugins/avanti/skills/luanti-dependencies/xcompat-porting.md\": \"cb62d83be7d4f8c86fa84891cf46e5bc3ff16a4903d4e47f2f17f65fa9ebdedc\"\n        }\n      },\n      {\n        \"path\": \"plugins/avanti/skills/luanti-modding/SKILL.md\",\n        \"name\": \"luanti-modding\",\n        \"description\": \"How to write correct, idiomatic Luanti (formerly Minetest) mods in Lua - mod layout, mod.conf, the core.* API, namespacing, translations, storage, security, performance and common mistakes - and how to look up the real API instead of guessing. Use whenever writing, changing or reviewing Luanti/Minetest mod, modpack or game code.\",\n        \"files\": {\n          \"plugins/avanti/skills/luanti-modding/SKILL.md\": \"a4acc65cbff926e197e4168e9ee746f9935d060f72edc66ada560231847a659b\"\n        }\n      },\n      {\n        \"path\": \"plugins/avanti/skills/luanti-testing/SKILL.md\",\n        \"name\": \"luanti-testing\",\n        \"description\": \"Test Luanti (Minetest) mods - luacheck config, ldg lint, writing mtt integration tests, running `avanti test` headlessly across games and engine versions (native or Docker), reading results and server logs, and play-testing with `avanti serve`.\",\n        \"files\": {\n          \"plugins/avanti/skills/luanti-testing/SKILL.md\": \"71b1875f6f811a6cdc47a8c56947dfecfac839a0fa15912c7534f5f271b15f72\"\n        }\n      },\n      {\n        \"path\": \"plugins/avanti/skills/new-mod/SKILL.md\",\n        \"name\": \"new-mod\",\n        \"description\": \"Create a new Luanti mod with the avanti template - checks the name on ContentDB, scaffolds mod.conf/init.lua/tests/CI/LICENSE/.cdb.json, and optionally creates its GitHub repo.\",\n        \"files\": {\n          \"plugins/avanti/skills/new-mod/SKILL.md\": \"707bac8510bb1fa5058a7fdd1b45baff538a1193907c68b85ce5c249b620594a\"\n        }\n      },\n      {\n        \"path\": \"plugins/avanti/skills/release/SKILL.md\",\n        \"name\": \"release\",\n        \"description\": \"Release a Luanti mod - runs the ContentDB readiness checklist (license, AI disclosure, metadata, lint, tests in every supported game), then tags, pushes and creates the ContentDB release, asking for confirmation before every external step.\",\n        \"files\": {\n          \"plugins/avanti/skills/release/SKILL.md\": \"aa0a16873a7945f215870c3bfc9fccfea36c4a84790a71c781635c2285cee8e0\"\n        }\n      },\n      {\n        \"path\": \"plugins/avanti/skills/test/SKILL.md\",\n        \"name\": \"test\",\n        \"description\": \"Run the avanti test pipeline for a Luanti mod (luacheck, ldg lint, headless server runs per game and engine) and interpret the results, fixing what is clearly the mod's fault.\",\n        \"files\": {\n          \"plugins/avanti/skills/test/SKILL.md\": \"fc95499f0a003b1aa149ba8c27095feec4180f4905460e5b2570c459b980794a\"\n        }\n      }\n    ],\n    \"hooks\": [\n      {\n        \"path\": \"plugins/avanti/hooks/hooks.json\",\n        \"sha256\": \"63877fa2b53498050e6f531c2f354a2a00a821daf62a669a28268005579fbfcb\",\n        \"event\": \"PostToolUse\",\n        \"matcher\": \"Edit|Write|MultiEdit\",\n        \"declaration\": {\n          \"type\": \"command\",\n          \"command\": \"\\\"${CLAUDE_PLUGIN_ROOT}\\\"/hooks/post-edit.sh\",\n          \"timeout\": 60\n        },\n        \"executed\": false\n      },\n      {\n        \"path\": \"plugins/avanti/hooks/hooks.json\",\n        \"sha256\": \"63877fa2b53498050e6f531c2f354a2a00a821daf62a669a28268005579fbfcb\",\n        \"event\": \"SessionStart\",\n        \"matcher\": null,\n        \"declaration\": {\n          \"type\": \"command\",\n          \"command\": \"\\\"${CLAUDE_PLUGIN_ROOT}\\\"/hooks/session-start.sh\",\n          \"timeout\": 30\n        },\n        \"executed\": false\n      }\n    ],\n    \"executions\": []\n  }\n}"
  },
  "review_input": {
    "identity_artifact": "identity.json",
    "evidence_sha256": {
      "LOCK.json": "06ef8ce4f0b03849b7570d538a2181868f2102155a5545a06735d98d7a8793c5",
      "commands.json": "2f1a748b7a79fe29d5192bcca07fa18dc0c892b7c8612aa71d443ecd6e42d13f",
      "complete.json": "91b504b43905fdc009504d516c45eea831f39a1995b9e7d69987c9756c936d6f",
      "identity.json": "59529ad444fb5440bf6a4ca4135c91598c395823b8e755aa2b5aec06fbe2c478",
      "listing.json": "beece8e1a5b682c77af5089706e82a65fea098f9a4b99414caaed95e8a189c21",
      "selection.json": "41766fd4a9c6175d70545cb5ea218f02b12fe89c6528308986313c43799abc62"
    },
    "claims": [
      {
        "id": "acquired",
        "field": "summary",
        "text": "Pinned source declarations and file hashes were listed.",
        "sources": [
          "LOCK.json",
          "listing.json",
          "commands.json"
        ]
      },
      {
        "id": "listed",
        "field": "outcome",
        "text": "Listed 2 hook declarations. Ran 67 git commands; each one's exit status and output hash is in commands.json. Scope: acquisition and static inspection.",
        "sources": [
          "LOCK.json",
          "listing.json",
          "commands.json"
        ]
      },
      {
        "id": "tree",
        "field": "rule_results.0",
        "text": "The retained source tree matches its acquisition manifest.",
        "sources": [
          "LOCK.json",
          "listing.json",
          "commands.json"
        ]
      },
      {
        "id": "declared",
        "field": "rule_results.1",
        "text": "Declared hook names (listing.json): PostToolUse; SessionStart",
        "sources": [
          "LOCK.json",
          "listing.json",
          "commands.json"
        ]
      }
    ]
  },
  "review": {
    "kind": "machine-checked",
    "date": "2026-10-23",
    "reviewed_sha256": "61f37f8abc122d5591e1e53e06a680c98e5a3f191d33fbcb706df8318764e6de",
    "gates": "ac101fa2e138a59baf65319407be49df72396d5c59166a3a7977d0da53d2045f",
    "codex": "443f62cc898ab1663758a22f8eac8b49a57e73f2229f6a64619ca6009cc18b43",
    "grok": "b66ede40e37b21241d295c7e279cce32f03ee9ee1e98b68262839f0378b18ac6",
    "summary": "Deterministic gates passed; every claim rebuilt from evidence with a reviewed template; Grok reported no standing refutation."
  }
}
