diff --git a/.claude/audit/source-state.json b/.claude/audit/source-state.json index 9f83afc..e469ecd 100644 --- a/.claude/audit/source-state.json +++ b/.claude/audit/source-state.json @@ -1,7 +1,7 @@ { "version": 1, - "captured_at": "2026-05-09T00:00:00Z", - "gaia_commit": "c08efa5ba1a9b6b55515c97741ef1a0749163f77", + "captured_at": "2026-06-05T00:00:00Z", + "gaia_commit": "1984425dc43037b16ef43585b08f9180a9de5c08", "items": [ { "kind": "agent", @@ -9,7 +9,7 @@ "name": "code-review-audit", "description": "Comprehensive code review, security audit, performance analysis, and architectural assessment. Goes beyond linting and type-checking to identify vulnerabilities, bottlenecks, code smells, anti-patterns, and refactoring opportunities. Mandatory before PR merge.", "audience": "adopter", - "content_hash": "2c654065221923ad503f41f7dfe24742b6fa2788f55a23759b718337e0ffc4ee", + "content_hash": "f8213e8f533b507a57a863bf303029aead4df981bc2b658f4ebafa4c4f9631a2", "excluded_from_docs": false }, { @@ -18,16 +18,160 @@ "name": "_internal-fetch-coaching", "description": null, "audience": "adopter", - "content_hash": "6e1e2f5f468a7722f268850cafe5f5e3f29f67d6fb3b5a6595863f1a53d35345", + "content_hash": "3886ec4d8870e4562bd9fa75e03d8d993248d20b638838c8bc5a414a26a4e9d7", "excluded_from_docs": true }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/automation/index.ts", + "name": "gaia automation bump-state", + "description": null, + "audience": "adopter", + "content_hash": "857982b438a4a16fdcedcf7ae1b7bafccc61865115923357f6365235c402cb7f", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/automation/index.ts", + "name": "gaia automation clear-overage", + "description": null, + "audience": "adopter", + "content_hash": "857982b438a4a16fdcedcf7ae1b7bafccc61865115923357f6365235c402cb7f", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/automation/index.ts", + "name": "gaia automation cron-decide", + "description": null, + "audience": "adopter", + "content_hash": "857982b438a4a16fdcedcf7ae1b7bafccc61865115923357f6365235c402cb7f", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/automation/index.ts", + "name": "gaia automation init-state", + "description": null, + "audience": "adopter", + "content_hash": "857982b438a4a16fdcedcf7ae1b7bafccc61865115923357f6365235c402cb7f", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/automation/index.ts", + "name": "gaia automation install-audit-workflow", + "description": null, + "audience": "adopter", + "content_hash": "857982b438a4a16fdcedcf7ae1b7bafccc61865115923357f6365235c402cb7f", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/automation/index.ts", + "name": "gaia automation read-config", + "description": null, + "audience": "adopter", + "content_hash": "857982b438a4a16fdcedcf7ae1b7bafccc61865115923357f6365235c402cb7f", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/automation/index.ts", + "name": "gaia automation read-state", + "description": null, + "audience": "adopter", + "content_hash": "857982b438a4a16fdcedcf7ae1b7bafccc61865115923357f6365235c402cb7f", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/automation/index.ts", + "name": "gaia automation record-overage", + "description": null, + "audience": "adopter", + "content_hash": "857982b438a4a16fdcedcf7ae1b7bafccc61865115923357f6365235c402cb7f", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/automation/index.ts", + "name": "gaia automation record-run", + "description": null, + "audience": "adopter", + "content_hash": "857982b438a4a16fdcedcf7ae1b7bafccc61865115923357f6365235c402cb7f", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/automation/index.ts", + "name": "gaia automation render-workflows", + "description": null, + "audience": "adopter", + "content_hash": "857982b438a4a16fdcedcf7ae1b7bafccc61865115923357f6365235c402cb7f", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/ci/revert.ts", + "name": "gaia ci-revert is-cap-reached", + "description": null, + "audience": "adopter", + "content_hash": "1b40e5de09233d2b24379eb7c88fc61c8e3a865a870e1cd04532185995ac2cf0", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/ci/revert.ts", + "name": "gaia ci-revert mark-failed", + "description": null, + "audience": "adopter", + "content_hash": "1b40e5de09233d2b24379eb7c88fc61c8e3a865a870e1cd04532185995ac2cf0", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/ci/revert.ts", + "name": "gaia ci-revert open", + "description": null, + "audience": "adopter", + "content_hash": "1b40e5de09233d2b24379eb7c88fc61c8e3a865a870e1cd04532185995ac2cf0", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/ci/stale-check.ts", + "name": "gaia ci-stale-check", + "description": null, + "audience": "adopter", + "content_hash": "6b594dd06af11192d62c211f96ef329fa9a798b7ec71d6c4063694a533a5e38d", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/init/index.ts", + "name": "gaia init bootstrap-env", + "description": null, + "audience": "adopter", + "content_hash": "42f340b01338586fa31e78f313971c111f55b1c2c8954ace4d54a7d08e95d9c3", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/init/index.ts", + "name": "gaia init configure-automation", + "description": null, + "audience": "adopter", + "content_hash": "42f340b01338586fa31e78f313971c111f55b1c2c8954ace4d54a7d08e95d9c3", + "excluded_from_docs": false + }, { "kind": "cli-subcommand", "path": ".gaia/cli/src/init/index.ts", "name": "gaia init configure-i18n", "description": null, "audience": "adopter", - "content_hash": "5f143760e7658d86f15f00e2a25b1a35636dd8757bd29619976b789acea039bd", + "content_hash": "42f340b01338586fa31e78f313971c111f55b1c2c8954ace4d54a7d08e95d9c3", "excluded_from_docs": false }, { @@ -36,7 +180,7 @@ "name": "gaia init finalize", "description": null, "audience": "adopter", - "content_hash": "5f143760e7658d86f15f00e2a25b1a35636dd8757bd29619976b789acea039bd", + "content_hash": "42f340b01338586fa31e78f313971c111f55b1c2c8954ace4d54a7d08e95d9c3", "excluded_from_docs": false }, { @@ -45,7 +189,7 @@ "name": "gaia init rename", "description": null, "audience": "adopter", - "content_hash": "5f143760e7658d86f15f00e2a25b1a35636dd8757bd29619976b789acea039bd", + "content_hash": "42f340b01338586fa31e78f313971c111f55b1c2c8954ace4d54a7d08e95d9c3", "excluded_from_docs": false }, { @@ -54,7 +198,7 @@ "name": "gaia init resume", "description": null, "audience": "adopter", - "content_hash": "5f143760e7658d86f15f00e2a25b1a35636dd8757bd29619976b789acea039bd", + "content_hash": "42f340b01338586fa31e78f313971c111f55b1c2c8954ace4d54a7d08e95d9c3", "excluded_from_docs": false }, { @@ -63,7 +207,7 @@ "name": "gaia init strip-branding", "description": null, "audience": "adopter", - "content_hash": "5f143760e7658d86f15f00e2a25b1a35636dd8757bd29619976b789acea039bd", + "content_hash": "42f340b01338586fa31e78f313971c111f55b1c2c8954ace4d54a7d08e95d9c3", "excluded_from_docs": false }, { @@ -72,7 +216,7 @@ "name": "gaia init wire-statusline", "description": null, "audience": "adopter", - "content_hash": "5f143760e7658d86f15f00e2a25b1a35636dd8757bd29619976b789acea039bd", + "content_hash": "42f340b01338586fa31e78f313971c111f55b1c2c8954ace4d54a7d08e95d9c3", "excluded_from_docs": false }, { @@ -81,7 +225,7 @@ "name": "gaia mentorship _internal-assert-memory-rules", "description": null, "audience": "adopter", - "content_hash": "9282671c084574dd1cf7c39f92bd04a3e1d091cc1b44077895eab30f47a60de4", + "content_hash": "d5236a4ddefbb75db80b44320ae640e238a52d8d4eaab61eaf29a00c9ff6d0d6", "excluded_from_docs": true }, { @@ -90,7 +234,7 @@ "name": "gaia mentorship _internal-provision-dirs", "description": null, "audience": "adopter", - "content_hash": "9282671c084574dd1cf7c39f92bd04a3e1d091cc1b44077895eab30f47a60de4", + "content_hash": "d5236a4ddefbb75db80b44320ae640e238a52d8d4eaab61eaf29a00c9ff6d0d6", "excluded_from_docs": true }, { @@ -99,7 +243,7 @@ "name": "gaia mentorship _internal-write-config", "description": null, "audience": "adopter", - "content_hash": "9282671c084574dd1cf7c39f92bd04a3e1d091cc1b44077895eab30f47a60de4", + "content_hash": "d5236a4ddefbb75db80b44320ae640e238a52d8d4eaab61eaf29a00c9ff6d0d6", "excluded_from_docs": true }, { @@ -108,7 +252,7 @@ "name": "gaia mentorship analytics disable", "description": null, "audience": "adopter", - "content_hash": "9282671c084574dd1cf7c39f92bd04a3e1d091cc1b44077895eab30f47a60de4", + "content_hash": "d5236a4ddefbb75db80b44320ae640e238a52d8d4eaab61eaf29a00c9ff6d0d6", "excluded_from_docs": true }, { @@ -117,7 +261,7 @@ "name": "gaia mentorship analytics dry-run", "description": null, "audience": "adopter", - "content_hash": "9282671c084574dd1cf7c39f92bd04a3e1d091cc1b44077895eab30f47a60de4", + "content_hash": "d5236a4ddefbb75db80b44320ae640e238a52d8d4eaab61eaf29a00c9ff6d0d6", "excluded_from_docs": true }, { @@ -126,7 +270,7 @@ "name": "gaia mentorship analytics enable", "description": null, "audience": "adopter", - "content_hash": "9282671c084574dd1cf7c39f92bd04a3e1d091cc1b44077895eab30f47a60de4", + "content_hash": "d5236a4ddefbb75db80b44320ae640e238a52d8d4eaab61eaf29a00c9ff6d0d6", "excluded_from_docs": true }, { @@ -135,7 +279,7 @@ "name": "gaia mentorship disable", "description": null, "audience": "adopter", - "content_hash": "9282671c084574dd1cf7c39f92bd04a3e1d091cc1b44077895eab30f47a60de4", + "content_hash": "d5236a4ddefbb75db80b44320ae640e238a52d8d4eaab61eaf29a00c9ff6d0d6", "excluded_from_docs": true }, { @@ -144,7 +288,7 @@ "name": "gaia mentorship enable", "description": null, "audience": "adopter", - "content_hash": "9282671c084574dd1cf7c39f92bd04a3e1d091cc1b44077895eab30f47a60de4", + "content_hash": "d5236a4ddefbb75db80b44320ae640e238a52d8d4eaab61eaf29a00c9ff6d0d6", "excluded_from_docs": true }, { @@ -153,7 +297,7 @@ "name": "gaia mentorship purge", "description": null, "audience": "adopter", - "content_hash": "9282671c084574dd1cf7c39f92bd04a3e1d091cc1b44077895eab30f47a60de4", + "content_hash": "d5236a4ddefbb75db80b44320ae640e238a52d8d4eaab61eaf29a00c9ff6d0d6", "excluded_from_docs": true }, { @@ -162,7 +306,7 @@ "name": "gaia mentorship status", "description": null, "audience": "adopter", - "content_hash": "9282671c084574dd1cf7c39f92bd04a3e1d091cc1b44077895eab30f47a60de4", + "content_hash": "d5236a4ddefbb75db80b44320ae640e238a52d8d4eaab61eaf29a00c9ff6d0d6", "excluded_from_docs": true }, { @@ -171,7 +315,7 @@ "name": "gaia release bump", "description": null, "audience": "adopter", - "content_hash": "3fde38adc09b341916baea8ff8a4df1cbd4419295378a7b6c185545425f40db8", + "content_hash": "93fb423af244f3e3487ed9379dcb7ae45a6cc5cc967cd95e0f9b414e5c6a1546", "excluded_from_docs": true }, { @@ -180,7 +324,7 @@ "name": "gaia release changelog", "description": null, "audience": "adopter", - "content_hash": "3fde38adc09b341916baea8ff8a4df1cbd4419295378a7b6c185545425f40db8", + "content_hash": "93fb423af244f3e3487ed9379dcb7ae45a6cc5cc967cd95e0f9b414e5c6a1546", "excluded_from_docs": true }, { @@ -189,7 +333,7 @@ "name": "gaia release commit-and-tag", "description": null, "audience": "adopter", - "content_hash": "3fde38adc09b341916baea8ff8a4df1cbd4419295378a7b6c185545425f40db8", + "content_hash": "93fb423af244f3e3487ed9379dcb7ae45a6cc5cc967cd95e0f9b414e5c6a1546", "excluded_from_docs": true }, { @@ -198,7 +342,7 @@ "name": "gaia release manifest", "description": null, "audience": "adopter", - "content_hash": "3fde38adc09b341916baea8ff8a4df1cbd4419295378a7b6c185545425f40db8", + "content_hash": "93fb423af244f3e3487ed9379dcb7ae45a6cc5cc967cd95e0f9b414e5c6a1546", "excluded_from_docs": true }, { @@ -207,7 +351,7 @@ "name": "gaia release preflight", "description": null, "audience": "adopter", - "content_hash": "3fde38adc09b341916baea8ff8a4df1cbd4419295378a7b6c185545425f40db8", + "content_hash": "93fb423af244f3e3487ed9379dcb7ae45a6cc5cc967cd95e0f9b414e5c6a1546", "excluded_from_docs": true }, { @@ -216,7 +360,7 @@ "name": "gaia release runtime-deps", "description": null, "audience": "adopter", - "content_hash": "3fde38adc09b341916baea8ff8a4df1cbd4419295378a7b6c185545425f40db8", + "content_hash": "93fb423af244f3e3487ed9379dcb7ae45a6cc5cc967cd95e0f9b414e5c6a1546", "excluded_from_docs": true }, { @@ -225,7 +369,7 @@ "name": "gaia release scrub", "description": null, "audience": "adopter", - "content_hash": "3fde38adc09b341916baea8ff8a4df1cbd4419295378a7b6c185545425f40db8", + "content_hash": "93fb423af244f3e3487ed9379dcb7ae45a6cc5cc967cd95e0f9b414e5c6a1546", "excluded_from_docs": true }, { @@ -234,7 +378,7 @@ "name": "gaia release scrub-wiki", "description": null, "audience": "adopter", - "content_hash": "3fde38adc09b341916baea8ff8a4df1cbd4419295378a7b6c185545425f40db8", + "content_hash": "93fb423af244f3e3487ed9379dcb7ae45a6cc5cc967cd95e0f9b414e5c6a1546", "excluded_from_docs": true }, { @@ -243,7 +387,7 @@ "name": "gaia scaffold component", "description": null, "audience": "adopter", - "content_hash": "13534bd4dbe632c85c6953004115029cb5c6d1201b8c86b34de1681f51bb25eb", + "content_hash": "a9aa34fd6eabba7edab569cacce5d87b9aeec4870097e77a642533efcaaa0843", "excluded_from_docs": false }, { @@ -252,7 +396,7 @@ "name": "gaia scaffold hook", "description": null, "audience": "adopter", - "content_hash": "13534bd4dbe632c85c6953004115029cb5c6d1201b8c86b34de1681f51bb25eb", + "content_hash": "a9aa34fd6eabba7edab569cacce5d87b9aeec4870097e77a642533efcaaa0843", "excluded_from_docs": false }, { @@ -261,7 +405,7 @@ "name": "gaia scaffold route", "description": null, "audience": "adopter", - "content_hash": "13534bd4dbe632c85c6953004115029cb5c6d1201b8c86b34de1681f51bb25eb", + "content_hash": "a9aa34fd6eabba7edab569cacce5d87b9aeec4870097e77a642533efcaaa0843", "excluded_from_docs": false }, { @@ -270,7 +414,7 @@ "name": "gaia scaffold service", "description": null, "audience": "adopter", - "content_hash": "13534bd4dbe632c85c6953004115029cb5c6d1201b8c86b34de1681f51bb25eb", + "content_hash": "a9aa34fd6eabba7edab569cacce5d87b9aeec4870097e77a642533efcaaa0843", "excluded_from_docs": false }, { @@ -279,7 +423,7 @@ "name": "gaia setup finalize", "description": null, "audience": "adopter", - "content_hash": "5c1c4a691aa4e902e38215ada43493b203e0809e2360a25ee90f751090787559", + "content_hash": "dba0b03854eb27cabb18937b7e965d8c8c57b508c7f34a5164e569f2f8d37055", "excluded_from_docs": false }, { @@ -288,7 +432,7 @@ "name": "gaia setup link-worktree", "description": null, "audience": "adopter", - "content_hash": "5c1c4a691aa4e902e38215ada43493b203e0809e2360a25ee90f751090787559", + "content_hash": "dba0b03854eb27cabb18937b7e965d8c8c57b508c7f34a5164e569f2f8d37055", "excluded_from_docs": false }, { @@ -297,7 +441,7 @@ "name": "gaia setup mark-step", "description": null, "audience": "adopter", - "content_hash": "5c1c4a691aa4e902e38215ada43493b203e0809e2360a25ee90f751090787559", + "content_hash": "dba0b03854eb27cabb18937b7e965d8c8c57b508c7f34a5164e569f2f8d37055", "excluded_from_docs": false }, { @@ -306,7 +450,124 @@ "name": "gaia setup status", "description": null, "audience": "adopter", - "content_hash": "5c1c4a691aa4e902e38215ada43493b203e0809e2360a25ee90f751090787559", + "content_hash": "dba0b03854eb27cabb18937b7e965d8c8c57b508c7f34a5164e569f2f8d37055", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/setup-ci/index.ts", + "name": "gaia setup-ci check-admin", + "description": null, + "audience": "adopter", + "content_hash": "6d316819d5b5c695c6dfe12a861a6640a42bfb79f2b1910b52c9066a2133c892", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/setup-ci/index.ts", + "name": "gaia setup-ci check-audit-drift", + "description": null, + "audience": "adopter", + "content_hash": "6d316819d5b5c695c6dfe12a861a6640a42bfb79f2b1910b52c9066a2133c892", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/setup-ci/index.ts", + "name": "gaia setup-ci check-drift", + "description": null, + "audience": "adopter", + "content_hash": "6d316819d5b5c695c6dfe12a861a6640a42bfb79f2b1910b52c9066a2133c892", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/setup-ci/index.ts", + "name": "gaia setup-ci detect-remote", + "description": null, + "audience": "adopter", + "content_hash": "6d316819d5b5c695c6dfe12a861a6640a42bfb79f2b1910b52c9066a2133c892", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/setup-ci/index.ts", + "name": "gaia setup-ci dismiss-personal", + "description": null, + "audience": "adopter", + "content_hash": "6d316819d5b5c695c6dfe12a861a6640a42bfb79f2b1910b52c9066a2133c892", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/setup-ci/index.ts", + "name": "gaia setup-ci enable-delete-branch", + "description": null, + "audience": "adopter", + "content_hash": "6d316819d5b5c695c6dfe12a861a6640a42bfb79f2b1910b52c9066a2133c892", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/setup-ci/index.ts", + "name": "gaia setup-ci finalize", + "description": null, + "audience": "adopter", + "content_hash": "6d316819d5b5c695c6dfe12a861a6640a42bfb79f2b1910b52c9066a2133c892", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/setup-ci/index.ts", + "name": "gaia setup-ci opt-out-team", + "description": null, + "audience": "adopter", + "content_hash": "6d316819d5b5c695c6dfe12a861a6640a42bfb79f2b1910b52c9066a2133c892", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/setup-ci/index.ts", + "name": "gaia setup-ci set-secret", + "description": null, + "audience": "adopter", + "content_hash": "6d316819d5b5c695c6dfe12a861a6640a42bfb79f2b1910b52c9066a2133c892", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/setup-ci/index.ts", + "name": "gaia setup-ci status", + "description": null, + "audience": "adopter", + "content_hash": "6d316819d5b5c695c6dfe12a861a6640a42bfb79f2b1910b52c9066a2133c892", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/setup-ci/index.ts", + "name": "gaia setup-ci verify-run", + "description": null, + "audience": "adopter", + "content_hash": "6d316819d5b5c695c6dfe12a861a6640a42bfb79f2b1910b52c9066a2133c892", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/setup-ci/index.ts", + "name": "gaia setup-ci warn-existing-tools", + "description": null, + "audience": "adopter", + "content_hash": "6d316819d5b5c695c6dfe12a861a6640a42bfb79f2b1910b52c9066a2133c892", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/setup-ci/index.ts", + "name": "gaia setup-ci write-tool-mode", + "description": null, + "audience": "adopter", + "content_hash": "6d316819d5b5c695c6dfe12a861a6640a42bfb79f2b1910b52c9066a2133c892", "excluded_from_docs": false }, { @@ -315,7 +576,7 @@ "name": "gaia telemetry compute-profile", "description": null, "audience": "adopter", - "content_hash": "87e07a573a092a4b43f05e1624a7ded2baa1d57993ca79baa97cf8c16e523207", + "content_hash": "02ebb343549c98377e3c20c7ce6585f1c69b85bdad2f3547e9184c45bb50dfee", "excluded_from_docs": true }, { @@ -324,7 +585,7 @@ "name": "gaia telemetry emit", "description": null, "audience": "adopter", - "content_hash": "87e07a573a092a4b43f05e1624a7ded2baa1d57993ca79baa97cf8c16e523207", + "content_hash": "02ebb343549c98377e3c20c7ce6585f1c69b85bdad2f3547e9184c45bb50dfee", "excluded_from_docs": true }, { @@ -333,7 +594,7 @@ "name": "gaia telemetry parse-stdin", "description": null, "audience": "adopter", - "content_hash": "87e07a573a092a4b43f05e1624a7ded2baa1d57993ca79baa97cf8c16e523207", + "content_hash": "02ebb343549c98377e3c20c7ce6585f1c69b85bdad2f3547e9184c45bb50dfee", "excluded_from_docs": true }, { @@ -342,7 +603,16 @@ "name": "gaia update merge", "description": null, "audience": "adopter", - "content_hash": "0c36fb07642d4fc76c5657b659cd53dd2375766b4e2508bed6b7a8f0181a1205", + "content_hash": "9d198d9321c2406822a6b7f1afc0b9c01b8ea84c0aba8745b3a8ae0e2b0cd40a", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/update-deps/index.ts", + "name": "gaia update-deps run", + "description": null, + "audience": "adopter", + "content_hash": "69aa708eedc87b999fa9036020d8d02722f5ba203f441e7663f4de624c8ff2ec", "excluded_from_docs": false }, { @@ -351,7 +621,7 @@ "name": "gaia wiki commit-classify", "description": null, "audience": "adopter", - "content_hash": "95e6f47bffac27eabc4fcb1ba90e99686b044aa3968a0c50f7da90b4333d9514", + "content_hash": "b4a4165ad2c28a7a80fa0b8eb47f38bb12832c09821c56739be27bba5555b27b", "excluded_from_docs": false }, { @@ -360,7 +630,34 @@ "name": "gaia wiki dead-paths", "description": null, "audience": "adopter", - "content_hash": "95e6f47bffac27eabc4fcb1ba90e99686b044aa3968a0c50f7da90b4333d9514", + "content_hash": "b4a4165ad2c28a7a80fa0b8eb47f38bb12832c09821c56739be27bba5555b27b", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/wiki/index.ts", + "name": "gaia wiki diff-size", + "description": null, + "audience": "adopter", + "content_hash": "b4a4165ad2c28a7a80fa0b8eb47f38bb12832c09821c56739be27bba5555b27b", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/wiki/index.ts", + "name": "gaia wiki empty-sections", + "description": "Headings with no content before the next heading.", + "audience": "adopter", + "content_hash": "b4a4165ad2c28a7a80fa0b8eb47f38bb12832c09821c56739be27bba5555b27b", + "excluded_from_docs": false + }, + { + "kind": "cli-subcommand", + "path": ".gaia/cli/src/wiki/index.ts", + "name": "gaia wiki frontmatter", + "description": "Pages missing required frontmatter (type, status).", + "audience": "adopter", + "content_hash": "b4a4165ad2c28a7a80fa0b8eb47f38bb12832c09821c56739be27bba5555b27b", "excluded_from_docs": false }, { @@ -369,7 +666,7 @@ "name": "gaia wiki log-prepend", "description": null, "audience": "adopter", - "content_hash": "95e6f47bffac27eabc4fcb1ba90e99686b044aa3968a0c50f7da90b4333d9514", + "content_hash": "b4a4165ad2c28a7a80fa0b8eb47f38bb12832c09821c56739be27bba5555b27b", "excluded_from_docs": false }, { @@ -378,7 +675,7 @@ "name": "gaia wiki near-collisions", "description": null, "audience": "adopter", - "content_hash": "95e6f47bffac27eabc4fcb1ba90e99686b044aa3968a0c50f7da90b4333d9514", + "content_hash": "b4a4165ad2c28a7a80fa0b8eb47f38bb12832c09821c56739be27bba5555b27b", "excluded_from_docs": false }, { @@ -387,7 +684,7 @@ "name": "gaia wiki orphans", "description": null, "audience": "adopter", - "content_hash": "95e6f47bffac27eabc4fcb1ba90e99686b044aa3968a0c50f7da90b4333d9514", + "content_hash": "b4a4165ad2c28a7a80fa0b8eb47f38bb12832c09821c56739be27bba5555b27b", "excluded_from_docs": false }, { @@ -396,7 +693,7 @@ "name": "gaia wiki page-index", "description": null, "audience": "adopter", - "content_hash": "95e6f47bffac27eabc4fcb1ba90e99686b044aa3968a0c50f7da90b4333d9514", + "content_hash": "b4a4165ad2c28a7a80fa0b8eb47f38bb12832c09821c56739be27bba5555b27b", "excluded_from_docs": false }, { @@ -405,7 +702,7 @@ "name": "gaia wiki state", "description": null, "audience": "adopter", - "content_hash": "95e6f47bffac27eabc4fcb1ba90e99686b044aa3968a0c50f7da90b4333d9514", + "content_hash": "b4a4165ad2c28a7a80fa0b8eb47f38bb12832c09821c56739be27bba5555b27b", "excluded_from_docs": false }, { @@ -414,7 +711,7 @@ "name": "gaia wiki state-bump", "description": null, "audience": "adopter", - "content_hash": "95e6f47bffac27eabc4fcb1ba90e99686b044aa3968a0c50f7da90b4333d9514", + "content_hash": "b4a4165ad2c28a7a80fa0b8eb47f38bb12832c09821c56739be27bba5555b27b", "excluded_from_docs": false }, { @@ -423,7 +720,7 @@ "name": "gaia wiki state-init", "description": null, "audience": "adopter", - "content_hash": "95e6f47bffac27eabc4fcb1ba90e99686b044aa3968a0c50f7da90b4333d9514", + "content_hash": "b4a4165ad2c28a7a80fa0b8eb47f38bb12832c09821c56739be27bba5555b27b", "excluded_from_docs": false }, { @@ -432,214 +729,295 @@ "name": "gaia wiki sync land", "description": null, "audience": "adopter", - "content_hash": "95e6f47bffac27eabc4fcb1ba90e99686b044aa3968a0c50f7da90b4333d9514", + "content_hash": "b4a4165ad2c28a7a80fa0b8eb47f38bb12832c09821c56739be27bba5555b27b", + "excluded_from_docs": false + }, + { + "kind": "command", + "path": ".claude/commands/gaia-audit.md", + "name": "gaia-audit", + "description": "Audit memory, wiki, and auto-loaded files for duplication, conflicting instructions, and stale content, then apply fixes. Pass --apply to re-run the apply stage against the most recent report.", + "audience": "adopter", + "content_hash": "a4646f13e799bd01c0c23b4dc5164d6c4d7f27d8495c6fd600105f60525d4e97", + "excluded_from_docs": false + }, + { + "kind": "command", + "path": ".claude/commands/gaia-fitness.md", + "name": "gaia-fitness", + "description": "Health-check and auto-heal this project's Claude integration, triage, heal, verify, and report an F-to-A+ grade.", + "audience": "adopter", + "content_hash": "1314279c64a80509a1ef0183215874ac50de1b2af83eb5591f66f21208cad0ae", + "excluded_from_docs": false + }, + { + "kind": "command", + "path": ".claude/commands/gaia-forensics.md", + "name": "gaia-forensics", + "description": "Turn a GAIA workflow misfire into a redacted, classified, filing-ready bug report in one read-only pass. Self-diagnoses config issues inline; files probable bugs upstream on confirmation.", + "audience": "adopter", + "content_hash": "5e1f8b2f81a0a152c753456d6ff5d979c422121d4a4edbe026aa56e1e9e2589c", "excluded_from_docs": false }, { "kind": "command", "path": ".claude/commands/gaia-init.md", "name": "gaia-init", - "description": "Initialize a new project from the GAIA React template \u2014 renames, strips GAIA branding, configures i18n, installs Claude skills/plugins.", + "description": "Initialize a new project from the GAIA React template, renames, strips GAIA branding, configures i18n, installs Claude skills/plugins.", + "audience": "adopter", + "content_hash": "3883456aaf563f83fa0651ae9e71390a9f6f95ad32c186624db08df080f2e0fc", + "excluded_from_docs": false + }, + { + "kind": "command", + "path": ".claude/commands/gaia-plan.md", + "name": "gaia-plan", + "description": "Plan a complex feature using GAIA's task-orchestration pattern, structures the work into fresh-context subagent phases for your approval. Does not implement.", "audience": "adopter", - "content_hash": "782cda410656c0edca408d4d6757877c07dc8a3b4f4fdb0f45693130aaf6286d", + "content_hash": "fd49c7aae8e3c13db64291b116e00eecee4ca1dc0b599d3b045675dc8b652542", "excluded_from_docs": false }, { "kind": "command", "path": ".claude/commands/gaia-release.md", "name": "gaia-release", - "description": "Cut a new GAIA release \u2014 bump version, graduate CHANGELOG, regenerate manifest, open release PR, then tag on merge. Maintainer-only.", + "description": "Cut a new GAIA release, bump version, graduate CHANGELOG, regenerate manifest, open release PR, then tag on merge. Maintainer-only.", "audience": "contributor", - "content_hash": "dff68ad2172fe7434ab248aa89067176e94375422f4e691a542bc263bd2ef5c6", + "content_hash": "72fe327eacf6e2d9572611d368a6bd9bb60a65610d97c0c6a8626afb356d9c25", + "excluded_from_docs": false + }, + { + "kind": "command", + "path": ".claude/commands/gaia-spec.md", + "name": "gaia-spec", + "description": "Author an immutable SPEC artifact through Socratic discovery (spec-kit wrapper), then chain into /gaia-plan. Pass `auto ` for non-interactive mode that answers its own questions and mirrors to a GitHub issue.", + "audience": "adopter", + "content_hash": "16dd745d478238f35739e390406a049d45b2f2943f95a74589911cd20af127fa", "excluded_from_docs": false }, { "kind": "command", "path": ".claude/commands/health-audit.md", "name": "health-audit", - "description": "Maintainer-only autonomous health audit + auto-heal loop. Runs N=3 fresh-team audit-fix-audit cycles with circuit breakers, reports A+/A/A\u2212 verdict or escalates.", + "description": "Maintainer-only autonomous health audit + auto-heal loop. Runs N=3 fresh-team audit-fix-audit cycles with circuit breakers, reports an F-to-A+ verdict (folding in the shared Claude-integration fitness grade) or escalates.", "audience": "contributor", - "content_hash": "94f6d1544083df20378d70c56082ba0352ec4239d71063ce93344eb89c3da881", + "content_hash": "a8eabea49f36f803747e63a52f5504bc0899503f8d49699076668914b003b61c", + "excluded_from_docs": false + }, + { + "kind": "command", + "path": ".claude/commands/setup-cloned-gaia-project.md", + "name": "setup-cloned-gaia-project", + "description": "One-shot per-machine setup for a cloned GAIA project. Installs tools, plugins, spec-kit; bootstraps .env; opts into mentorship. Idempotent, safe to re-run.", + "audience": "adopter", + "content_hash": "8f55331ad7893e3fa243ffb7042885ac8fd960b2177587b85c43a6faa5e37ee5", "excluded_from_docs": false }, { "kind": "command", - "path": ".claude/commands/setup-gaia.md", - "name": "setup-gaia", - "description": "One-shot per-machine setup for a cloned GAIA project. Installs tools, plugins, spec-kit; bootstraps .env; opts into mentorship. Idempotent \u2014 safe to re-run.", + "path": ".claude/commands/setup-gaia-ci.md", + "name": "setup-gaia-ci", + "description": "Wire up GAIA CI workflows on GitHub. Run after first git push origin main. Idempotent, re-runs short-circuit; --reconfigure rotates tokens and re-selects tools.", "audience": "adopter", - "content_hash": "b65a46ee5169428febc4b21125f19d9991dbd4818d0fd7c8f1c729778665527f", + "content_hash": "2038be7b5ee4b4ad74b5c5e65ef33abb62b02c4025a8a936a68f41e54d202c95", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/audit-stamp-trailer.sh", "name": "audit-stamp-trailer.sh", - "description": "audit-stamp-trailer.sh \u2014 write the GAIA-Audit commit trailer on HEAD.", + "description": null, "audience": "adopter", - "content_hash": "c7ef9dac85a7ca69d5d7d7ddaa5b94a58ef70b0157e227c257e24142c8472517", + "content_hash": "baeae3b6e0007c555acb0d85aa28e6b13198dbcded47d454f72db594c4c4ad07", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/block-bare-test.sh", "name": "block-bare-test.sh", - "description": "Block bare `pnpm test` / `npm test` (and `run test` variants) without `--run` \u2014", + "description": null, "audience": "adopter", - "content_hash": "cf00fa92c5fb256a093db5014af13cb0723192b46d7afc14b861fb4a2b2e29d6", + "content_hash": "bc63cfdf17bd8a7d6712e726dd8937e08a89823ba87d71af4ba3cddd9310dafd", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/block-env-write.sh", "name": "block-env-write.sh", - "description": "PreToolUse Edit/Write hook: deny writes targeting `.env` files.", + "description": null, "audience": "adopter", - "content_hash": "7c092ca4ccf4a025537c4e2e296422cea207445af9f9d8e05a0a15c4e10910fc", + "content_hash": "678a58957998a1e0c22c0e785bb9d933eb73f0712bcc5fc9f655d547aa3361b2", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/block-eslint-config-edit.sh", "name": "block-eslint-config-edit.sh", - "description": "Block modifications to eslint.config.{js,cjs,mjs,ts} at any path.", + "description": null, "audience": "adopter", - "content_hash": "a20cb9ff28f8651b2c0a7448c0b56e20b03d1e816149433f728dbfacccd6fbc0", + "content_hash": "e6675b7cb26af1cae095fe1b57991252887c3ea0a1a4fead77c80a015c27181f", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/block-lockfile-edit.sh", "name": "block-lockfile-edit.sh", - "description": "PreToolUse Edit/Write hook: deny direct edits to package lockfiles.", + "description": null, "audience": "adopter", - "content_hash": "c15be2bba7c058e0917a6c47cba553f09d5788b40a4f55f6c19bd46875ffbc73", + "content_hash": "5059a03ae4e3a362522703f8738b2b13aa5c45e49cce6b83362c6b88755d9570", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/block-main-destructive-git.sh", "name": "block-main-destructive-git.sh", - "description": "PreToolUse Bash hook: block commits to main/master and force-push to main/master.", + "description": null, + "audience": "adopter", + "content_hash": "763dd1b32cfac206e54558e6bd00a4dd119513a5be182a9bba62e08d101d5f40", + "excluded_from_docs": false + }, + { + "kind": "hook", + "path": ".claude/hooks/block-no-verify.sh", + "name": "block-no-verify.sh", + "description": null, "audience": "adopter", - "content_hash": "87461a3cb35d906498ee6d6b732fa2147a376514d5148c94445ea0700b152a5a", + "content_hash": "8224cc4e2e7b8fd49846eebf4ffa075187704cbcbd8d1ec9b97c554e6f938d8d", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/block-rm-rf.sh", "name": "block-rm-rf.sh", - "description": "PreToolUse Bash hook: deny dangerous `rm -rf` invocations.", + "description": null, "audience": "adopter", - "content_hash": "f9f366a66905dba9f9a90465474f31302356a8146a7ef39af1e7bce3a71f8164", + "content_hash": "876d755adf60c5659255f43cbcd9b872eb04a24f549c4a87357bfc1764fb5e3b", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/block-secrets-write.sh", "name": "block-secrets-write.sh", - "description": "PreToolUse Edit/Write hook: deny writes that contain obvious secrets.", + "description": null, "audience": "adopter", - "content_hash": "52800bf52a0c92dcf707846ad42ce85c95f3f87f1697e59aba0e39658089d8de", + "content_hash": "9cd17699fd43a9cd00d2d32f5f50e3c2b0b998bc17d515eddc082257ae1eaa08", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/block-vitest-globals-tsconfig.sh", "name": "block-vitest-globals-tsconfig.sh", - "description": "Block adding vitest/globals to tsconfig.json", + "description": null, + "audience": "adopter", + "content_hash": "0a9e235b114393fbc49d35a775c4762dfeac7be56060f1083e0a3ec0a10e3672", + "excluded_from_docs": false + }, + { + "kind": "hook", + "path": ".claude/hooks/capture-red-observations.sh", + "name": "capture-red-observations.sh", + "description": null, "audience": "adopter", - "content_hash": "b554cf5a5e5fe961f74b7da0007a9ec38f508f5dcc9bdf5f904fc3cc79b03bbd", + "content_hash": "e2c33f23e9ac9a3c7f1dcb5d64ea32db7ba4904bb4d278a3e603b40f112f8f6f", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/check-i18n-strings.sh", "name": "check-i18n-strings.sh", - "description": "Advisory check: warn about potential hardcoded strings in JSX.", + "description": null, "audience": "adopter", - "content_hash": "fae62d18f5ec6ad55c9be999bfbd321b32e2d9c9601c8dc658690598fcdd6574", + "content_hash": "7620e140933c8739ca56bbac111f3f9b4820a9bcdbc9e33696a1265da3824c72", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/check-story-exists.sh", "name": "check-story-exists.sh", - "description": "Advisory check: remind to add Storybook story for new components", + "description": null, "audience": "adopter", - "content_hash": "aafaf02b560d8095bc781505a508fdbb32beb79c27064abed4147864d3d7ed58", + "content_hash": "7e2dd46c8e8ccbb605e2064879a4893e71f442bb6f1149d98584bc8290f602cb", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/intercept-init.sh", "name": "intercept-init.sh", - "description": "Redirect the built-in /init command to /gaia-init on this template.", + "description": null, "audience": "adopter", - "content_hash": "bee4266d7a06e3b1e7a0f965ef7df4faf40fd89e26a9160052e93e161c6e608e", + "content_hash": "91befea795ab9311a80c740f11af3ea69ae405ba75195ccda2ed1ad5b455b202", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/pr-merge-audit-check.sh", "name": "pr-merge-audit-check.sh", - "description": "PreToolUse Bash hook: BLOCK `gh pr merge` until a code-review-audit marker", + "description": null, "audience": "adopter", - "content_hash": "e3930156e7ece9ae8d2e98bff74079a9a0f56fe219dcd567f6871baf68259e00", + "content_hash": "ad83f3970d641f26c177511b85475cb0147febe767a6604c7ad219d655cc177a", + "excluded_from_docs": false + }, + { + "kind": "hook", + "path": ".claude/hooks/red-verify-commit-check.sh", + "name": "red-verify-commit-check.sh", + "description": null, + "audience": "adopter", + "content_hash": "45c18d0120d286d9557a67551c50ed621c8fca7cef6c4dde5dd83b5e517c05f3", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/telemetry-task-postuse.sh", "name": "telemetry-task-postuse.sh", - "description": "PostToolUse Task hook: extract structured-trailer events from the agent's", + "description": null, "audience": "adopter", - "content_hash": "0a8258ad361b7d3f6a3eaffe8ca2ab906ce4c423f9d9f08a45f2c14da8c59377", + "content_hash": "12f64685fdfaf273b47d3dc96d4773faa922a661a84fbcdb15cb9f059e94645d", "excluded_from_docs": true }, { "kind": "hook", "path": ".claude/hooks/wiki-commit-nudge.sh", "name": "wiki-commit-nudge.sh", - "description": "PostToolUse hook on Bash matching `git commit`. Inject a one-line nudge", + "description": null, "audience": "adopter", - "content_hash": "6e20bdeadf0ec91fb8f8cd9919d63931772ada102319b0f6326efe42ecf8d66b", + "content_hash": "ae9b39f5b54a8cf5afd1c586c58b8494e793da84a6c7bf2375122caadbdb3b49", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/wiki-drift-check.sh", "name": "wiki-drift-check.sh", - "description": "UserPromptSubmit hook: detect drift between wiki/.state.json and HEAD,", + "description": null, "audience": "adopter", - "content_hash": "b690ae0290e3b01cffa1d1ff1c8f67ab56fe9ab687ffe4de1ca8d0159675b237", + "content_hash": "bb0ed860b83522f74d599969cb7346ba349891139a1f7e5c41cfb6d6d0f22908", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/wiki-session-start.sh", "name": "wiki-session-start.sh", - "description": "GAIA-owned wiki hook. Upstream contract: claude-obsidian/hooks/hooks.json::SessionStart", + "description": null, "audience": "adopter", - "content_hash": "2825c894b44a75b332f35de2523e193b577289c326938adc7ab0d0f86ead648e", + "content_hash": "52d96a0714471784c50a71796f7729699b035df100ef00bc9cbe63f9358ecc63", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/wiki-session-stop.sh", "name": "wiki-session-stop.sh", - "description": "GAIA-owned Stop hook (merged: session-stop + safety-net).", + "description": null, "audience": "adopter", - "content_hash": "8e1ce59d612dbc06352e9574f2b48876251821e2de2a73cfa85695e1ef9d280c", + "content_hash": "9118a931cd15ef635e5bff82baf83487b9dc9c70e313b859d1a63fd6fbf66436", "excluded_from_docs": false }, { "kind": "hook", "path": ".claude/hooks/wiki-squash-autocommits.sh", "name": "wiki-squash-autocommits.sh", - "description": "GAIA-owned wiki hook. Upstream contract: claude-obsidian/hooks/hooks.json::PostToolUse (auto-commit per Write|Edit)", + "description": null, "audience": "adopter", - "content_hash": "1aca0d807e7023d637b17c3db03b6c08789c24fdb96328af4260aa1a315cf8bb", + "content_hash": "714323b380e18f2b72da97ae412b1e5dc06666148b5af325c05909d0448b44d3", "excluded_from_docs": false }, { @@ -648,7 +1026,7 @@ "name": "accessibility", "description": "Accessibility", "audience": "adopter", - "content_hash": "89f5e20e5c451b73e3af8c5979da467e022e26c7744383a29972a7e1ce1d382b", + "content_hash": "1b577e2a8ff122371b10a3fbe714650b51c2d0a8a3ebd7dfdd658120163a4875", "excluded_from_docs": false }, { @@ -657,7 +1035,7 @@ "name": "api-service", "description": "API Service Pattern", "audience": "adopter", - "content_hash": "e89cd84388867108950f2b17a8c9bf758994eaea2454678d89eb29eb746857a7", + "content_hash": "59da00063ba256aa7f61b4461691884c662fc1b7218b52222df4de2725d63d53", "excluded_from_docs": false }, { @@ -666,7 +1044,7 @@ "name": "code-search", "description": "Code Search", "audience": "adopter", - "content_hash": "536ec7192095816e38a854e87998a8572d236fa58d4b7f1adfc4a9a7d8efea0e", + "content_hash": "27006e808f53716a7cf07ef6e3b9bbda767b57735f826c90cced24686a764629", "excluded_from_docs": false }, { @@ -675,7 +1053,16 @@ "name": "coding-guidelines", "description": "Coding Guidelines", "audience": "adopter", - "content_hash": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b", + "content_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "excluded_from_docs": false + }, + { + "kind": "rule", + "path": ".claude/rules/dep-audit.md", + "name": "dep-audit", + "description": "Dependency-CVE Advisory, pnpm audit", + "audience": "adopter", + "content_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "excluded_from_docs": false }, { @@ -684,7 +1071,7 @@ "name": "i18n", "description": "Internationalization (i18n)", "audience": "adopter", - "content_hash": "ed131d2ef25cd93d7db1dff55d17ff23650a0b2605a81aa4f038709b7884531f", + "content_hash": "44c79ba4d5fb3659eba0b3806b1c5493b90ce5efdc2f262af68674d2e437f448", "excluded_from_docs": false }, { @@ -693,16 +1080,16 @@ "name": "instruction-files", "description": "Template-Distributed File Paths", "audience": "adopter", - "content_hash": "9a5b4efe4fde62eee2c6ca96de66b398fc623c25b5d1b7951fb75177bd5d8ccc", + "content_hash": "ef4c174a976750b03731084885920336754b9adddf33db8868de533e51922575", "excluded_from_docs": false }, { "kind": "rule", "path": ".claude/rules/knip.md", "name": "knip", - "description": "Knip \u2014 Dead Code Detection", + "description": "Knip, Dead Code Detection", "audience": "adopter", - "content_hash": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b", + "content_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "excluded_from_docs": false }, { @@ -711,7 +1098,16 @@ "name": "playwright", "description": "Playwright E2E Conventions", "audience": "adopter", - "content_hash": "076f10294a0619ef4a061b25c00772def37d4556f55f5eb5e231d7267b3d5f60", + "content_hash": "1d30ba9ac80cde4532e4a078ba05705b436d1adbfd0d9287a5effd877529c73c", + "excluded_from_docs": false + }, + { + "kind": "rule", + "path": ".claude/rules/pr-merge.md", + "name": "pr-merge", + "description": "PR Merge", + "audience": "adopter", + "content_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "excluded_from_docs": false }, { @@ -720,7 +1116,7 @@ "name": "quality-gate", "description": "Quality Gate", "audience": "adopter", - "content_hash": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b", + "content_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "excluded_from_docs": false }, { @@ -729,7 +1125,7 @@ "name": "routes", "description": "Route & Page Conventions", "audience": "adopter", - "content_hash": "3bad5675aa7c207dffcbe4215b052f1267c2b840fdc867de095abba21bed3fbf", + "content_hash": "61ccf39a698ad10b0ecf144adf79be83816717a83e16cdc326aa292e28689645", "excluded_from_docs": false }, { @@ -738,7 +1134,7 @@ "name": "shell-cwd", "description": "Shell CWD", "audience": "adopter", - "content_hash": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b", + "content_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "excluded_from_docs": false }, { @@ -747,7 +1143,7 @@ "name": "state-pattern", "description": "State Pattern", "audience": "adopter", - "content_hash": "4d0dd9b541f88c4cd165610bc44dffe90129d24b14ba6a54b8bb9472d796ce32", + "content_hash": "467614e6c023147cedf77e183989f70c88d07bc4d168e4ad677f0cfdda466300", "excluded_from_docs": false }, { @@ -756,7 +1152,7 @@ "name": "storybook", "description": "Storybook Conventions", "audience": "adopter", - "content_hash": "73fb760cdf4209d65712374da1e71fe4143a1ae85288ea53ede9550c80278601", + "content_hash": "4f30188aada01f63759dbe7c7538cf9c7a4a8474d274791bef3d7103901fe69e", "excluded_from_docs": false }, { @@ -765,7 +1161,7 @@ "name": "tailwind", "description": "Tailwind Conventions", "audience": "adopter", - "content_hash": "d86ab326bf4dea4807f01db0844485414baa23d9544cd801dd4798b924867763", + "content_hash": "5221a14aa0e03071718299f9c0465ef63c848d44e16f630da0b31ed7f697c8f0", "excluded_from_docs": false }, { @@ -774,7 +1170,16 @@ "name": "wiki-style", "description": "Wiki & Comment Style", "audience": "adopter", - "content_hash": "bf54b6efbc32509c8e7d4309aad61a3eeb4c4c73df89cc59f24432f414f70f6b", + "content_hash": "4e3158c571842b8765b0817d7e5bf92118599d149992896f9cf0bc1310bfa9bc", + "excluded_from_docs": false + }, + { + "kind": "skill", + "path": ".claude/skills/a11y-fixes/SKILL.md", + "name": "a11y-fixes", + "description": "Resolve axe-core accessibility violations reported by Vitest (test/a11y.ts), Playwright (.playwright/a11y.ts), or the code-review-audit agent's a11y bucket. Use when fixing violations like color-contrast, label, label-title-only, image-alt, button-name, link-name, region, landmark-one-main, heading-order, aria-allowed-attr, aria-required-attr, aria-required-children, aria-required-parent, aria-valid-attr-value, focus-trap, tabindex, html-has-lang, document-title, duplicate-id, listitem, definition-list. Trigger on any axe rule id appearing in test output.", + "audience": "adopter", + "content_hash": "d68afa8fa14598fb1fee9194a280c0b76dbcfb17e2ce5d71ad5326630cfc5938", "excluded_from_docs": false }, { @@ -783,16 +1188,34 @@ "name": "eslint-fixes", "description": "Resolve specific ESLint errors and warnings that appear in this project. Use when fixing lint failures, ESLint reported issues, or autofix conflicts (e.g. no-void, canonical/export-specifier-newline vs prettier, no-shadow trailing underscores, sonarjs/deprecation, you-dont-need-lodash-underscore, testing-library/prefer-screen-queries, testing-library/await-async-events, jest-dom/prefer-*).", "audience": "adopter", - "content_hash": "83d6f2e23cf1090676385c81a419dddc875faa183c8ec80ab5ab8d209b53b134", + "content_hash": "8524b87eea0cfb624fdd4cb7585791fc66c3a36e1483b606a5aca6f1289463c0", "excluded_from_docs": false }, { "kind": "skill", - "path": ".claude/skills/gaia/SKILL.md", - "name": "gaia", - "description": "GAIA workflow router. Dispatches to the user-invoked GAIA workflows - plan (task orchestration), spec (Socratic SPEC artifact), handoff (session handoff doc), pickup (resume from handoff), audit (knowledge audit), forensics (bug report bridge), wiki (sync/consolidate/lint chain). Trigger on `/gaia ` or natural-language asks like \"kick off a plan\", \"write a handoff\", \"pick up where we left off\", \"audit the knowledge stores\", \"sync the wiki\".", + "path": ".claude/skills/gaia-handoff/SKILL.md", + "name": "gaia-handoff", + "description": "Generate a comprehensive GAIA session handoff document, accomplishments, decisions, current state, open questions, so context can be cleared or compacted without losing anything. Trigger on `/gaia-handoff` or natural-language asks like \"write a handoff\", \"hand off this session\", or \"document where we are before I clear context\".", "audience": "adopter", - "content_hash": "e516fe6be42e43eaf4af430f5e8a7c23f8f3a74616775f74d4b7eb1ac5f0291d", + "content_hash": "b31612ba40de0a7e921c07e7f2e0bf79b6e944afb863bf40a42e9f7b50206de6", + "excluded_from_docs": false + }, + { + "kind": "skill", + "path": ".claude/skills/gaia-pickup/SKILL.md", + "name": "gaia-pickup", + "description": "Restore context from the most recent GAIA session handoff and suggest the next action. Trigger on `/gaia-pickup` or natural-language asks like \"pick up where we left off\", \"resume from the handoff\", or \"continue the last session\".", + "audience": "adopter", + "content_hash": "7f5d86c8c16a0d86aa07dc9108cc4222013fab6f10ac6b91421b4214ba6cb946", + "excluded_from_docs": false + }, + { + "kind": "skill", + "path": ".claude/skills/gaia-wiki/SKILL.md", + "name": "gaia-wiki", + "description": "GAIA wiki maintenance, sync, consolidate, lint. Runs the full chain with no sub-arg, or a single stage when named (sync | consolidate | lint); append --force to override drift gating. Trigger on `/gaia-wiki ` or natural-language asks like \"sync the wiki\", \"run the wiki maintenance chain\", \"consolidate the wiki\", or \"lint the wiki\".", + "audience": "adopter", + "content_hash": "e001f586793a0fd425cccdd7fb31b3ee953142d333597753c9e718101def4b13", "excluded_from_docs": false }, { @@ -801,7 +1224,7 @@ "name": "new-component", "description": "Scaffold a new React component with optional Storybook story and Vitest test files. Use this skill whenever the user asks to \"create a component\", \"make a button\", \"scaffold a card\", \"add a new component\", or asks for a new file under `app/components/` following the project's component pattern (PascalCase folder, index.tsx, tests/).", "audience": "adopter", - "content_hash": "a25ce53accf439464122f1cc63e174eada33c07183b6a4ef4ae9df3fdf4d30c9", + "content_hash": "5575989b1bd84fa2a88a8ff28645c1e7aeb78f2915ed9a953bec893871776997", "excluded_from_docs": false }, { @@ -810,7 +1233,7 @@ "name": "new-hook", "description": "Scaffold a new custom React hook with a Vitest test file. Use this skill whenever the user asks to \"create a hook\", \"make a useFoo hook\", \"scaffold a custom React hook\", \"add a hook under app/hooks\", or describes a piece of reusable React state/effect logic that warrants extraction into a named `use*` hook.", "audience": "adopter", - "content_hash": "7982468af5d92db8cff68b8652006196feb2b6375e177010080e2f3af0cc3972", + "content_hash": "11f513ba72eefa4d43bf2d3f57a5a251ed3d6687a3878259a3fc82acc09e1b25", "excluded_from_docs": false }, { @@ -819,7 +1242,7 @@ "name": "new-route", "description": "Scaffold a new route with its page component, test, story, and optional i18n keys. Use this skill whenever the user asks to \"create a route\", \"add a new page\", \"scaffold /dashboard\", \"wire up a new route under _public+ or _session+\", or anything that implies adding a file under `app/routes/` with a matching `app/pages/{Group}/{PageName}/` folder.", "audience": "adopter", - "content_hash": "6684cbbf9ae3271902bca2f06cd2853b568c45d47c01265ffb5f0df0802f424a", + "content_hash": "a7be8023411be4cf8146230aa5715e3967f99c5dc9e0229d69d02418d1a0e8e1", "excluded_from_docs": false }, { @@ -828,7 +1251,7 @@ "name": "new-service", "description": "Scaffold a new API service with request functions, Zod schemas, URL constants, and optional MSW mock handlers. Use this skill whenever the user asks to \"add a service\", \"create the projects API\", \"scaffold a new GAIA service\", \"wire up CRUD for users\", or anything implying a new folder under `app/services/gaia/{name}/` with parsers/types/requests + matching `test/mocks/{name}/` collections.", "audience": "adopter", - "content_hash": "f70b515a9f2daa361b2bd5e1231f81a7f2a573a9b675c283d67c9c31da2d659c", + "content_hash": "5c8074bb65a11449e57f95c516ed46fe1a3973d0dffa82ed63b19b404d9b41b4", "excluded_from_docs": false }, { @@ -837,7 +1260,7 @@ "name": "playwright-cli", "description": "Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages.", "audience": "adopter", - "content_hash": "ad14eca4bd0d8b01b0257e77b1f2226271cc5098616da66f296670672616f6f8", + "content_hash": "aa3fc734d7e1d5fe54a6b1f6aa7a1511a2719089680abfa5ceb005a5e94be360", "excluded_from_docs": false }, { @@ -846,7 +1269,16 @@ "name": "react-code", "description": "Patterns and conventions for writing and editing React code, including components and hooks. Use this skill whenever writing or reviewing React components, hooks (useEffect, useCallback, useState), event handlers, or component extraction decisions. Also trigger when debugging stale closures, infinite re-renders, or unnecessary re-renders caused by memoization issues.", "audience": "adopter", - "content_hash": "fa1c1984ef2074953f1b080c8494ba585fb26f75464707eb12f12aea51e85904", + "content_hash": "9847f31a309569a9dfa84c558e288a4ad06f29ed017f5056aae486e0ab7f822b", + "excluded_from_docs": false + }, + { + "kind": "skill", + "path": ".claude/skills/release-notes/SKILL.md", + "name": "release-notes", + "description": "Maintainer-only. Translate a version's GAIA CHANGELOG entries into plain-language public release notes for the marketing site (gaiareact.com). Writes a release-data `.ts` file under `../website/src/pages/changelog/releases/` plus an editorial-decisions report for human review. Use whenever the maintainer wants the adopter-facing notes for a version, e.g. \"write release notes\", \"generate the changelog page entry\", \"translate the CHANGELOG for the website\", \"what's new on the site for v1.5.0\", \"public notes for 1.4.0\", or right after cutting a release, and for one-time backfill of historical `## [x.y.z]` blocks. This is the website-notes step only. It does NOT edit `CHANGELOG.md`, it is not how you cut a release (version bump, manifest, and tag are `/gaia-release`), and it is not for an adopter's own app's release notes.", + "audience": "contributor", + "content_hash": "c64a67ec438a7bd31c004338d9e8037c9929b1401ef65ac008a926136999f78c", "excluded_from_docs": false }, { @@ -855,7 +1287,7 @@ "name": "skeleton-loaders", "description": "For building skeleton loading states that are pixel-perfect matches of real content. Use this skill whenever adding loading states to components, building skeletons for async data, handling pending loader states in route transitions, or implementing the shimmer animation pattern. Also trigger when the user asks about preventing layout shift during data fetching.", "audience": "adopter", - "content_hash": "c34f3838166a2838526a7e4865468c81c34a232d40a7161b5a6e4b45d6eb7ed3", + "content_hash": "53d4021e2ec3b39a441900994726bc75df38adfaec2e7e328ab9471fe512044b", "excluded_from_docs": false }, { @@ -864,7 +1296,7 @@ "name": "tailwind", "description": "Patterns and conventions for all Tailwind styling. Use this skill whenever writing Tailwind class names, combining conditional classes, building component variants, or choosing between twJoin and twMerge. Also trigger when the user asks about custom values, defining @theme tokens or CSS variables, naming color/spacing tokens, rem vs px, responsive breakpoints, or avoiding template literal class strings.", "audience": "adopter", - "content_hash": "63c2f4378b05b08f70d16425204062b36a725ca4fb24ae6a6c1151944783f7ce", + "content_hash": "5e2273874b8a1e246e8ed7c80ff7844ad54872c9ff2db10c723de92c0b3e5193", "excluded_from_docs": false }, { @@ -873,25 +1305,25 @@ "name": "tdd", "description": "Test-driven development with red-green-refactor loop. Use when user wants to build features or fix bugs using TDD, mentions \"red-green-refactor\", wants integration tests, or asks for test-first development.", "audience": "adopter", - "content_hash": "82d0b02600f97f8666bad7abfeec60beb25da61dc855cb882b330b917400094f", + "content_hash": "fd3aa0eb3390d9b9ecd1f67a8214277042e35afb211af7f11db7143f273bcc07", "excluded_from_docs": false }, { "kind": "skill", "path": ".claude/skills/typescript/SKILL.md", "name": "typescript", - "description": "Patterns and conventions for all TypeScript code. Use this skill whenever writing or reviewing TypeScript \u2014 naming identifiers, typing exports, choosing between type and interface, using Zod schemas, structuring function parameters, or enforcing code patterns like avoiding switch statements and enums.", + "description": "Patterns and conventions for all TypeScript code. Use this skill whenever writing or reviewing TypeScript, naming identifiers, typing exports, choosing between type and interface, using Zod schemas, structuring function parameters, or enforcing code patterns like avoiding switch statements and enums.", "audience": "adopter", - "content_hash": "b393f5bf5c7b8225adcee6c4fccd22851ff127402138621f9a112681b90a18cf", + "content_hash": "39c9811862464bae0a3d47a8ab7510402808aa276a8255fc0df04570dbf54bac", "excluded_from_docs": false }, { "kind": "skill", - "path": ".claude/skills/sharpen/SKILL.md", - "name": "sharpen", - "description": "Autonomous Dependabot - auto-discover outdated packages, audit overrides, apply migrations for major bumps, resolve conflicts, run quality gate. Trigger when the user clicks the statusline `Run /sharpen` indicator or asks \"update dependencies\", \"bump deps\", \"run dependabot\".", + "path": ".claude/skills/update-deps/SKILL.md", + "name": "update-deps", + "description": "Autonomous Dependabot, auto-discover outdated packages, audit overrides, apply migrations for major bumps, resolve conflicts, run quality gate. Trigger when the user clicks the statusline `Run /update-deps` indicator or asks \"update dependencies\", \"bump deps\", \"run dependabot\".", "audience": "adopter", - "content_hash": "f727cf7a3f625af33f10ce92ed723b23c926daf43eae0ea27da8ac9098792945", + "content_hash": "6c31163f5316748ff65805fcec88207ac4307dae1a9eb8c13824ff2a76677869", "excluded_from_docs": false }, { @@ -900,61 +1332,61 @@ "name": "update-gaia", "description": "Pull the latest GAIA release into this project without clobbering customizations. Three-way merge per file using .gaia/manifest.json classes. Trigger when the user clicks the statusline `Run /update-gaia` indicator or asks \"update GAIA\", \"pull the latest GAIA\", \"apply the new GAIA release\".", "audience": "adopter", - "content_hash": "ee8ca841bf8941b2bf5a3f349d749dbba49c496d58bbd97e0e2399b397f49f65", + "content_hash": "881306337605ec3abddc614844cbea1b5030f199c0134f5bb3d280bfc4923915", "excluded_from_docs": false }, { "kind": "spec-kit-cmd", "path": ".specify/extensions/gaia/commands/constitution-check.md", "name": "speckit.gaia.constitution-check", - "description": "Verify .specify/memory/constitution.md has no placeholder text before /speckit.specify runs.", + "description": "GAIA before_specify hook: constitution placeholder check + spec-kit version-pin drift detection.", "audience": "adopter", - "content_hash": "c27e449ca22d255de77775ac82111e0c7d51e85852ea6f91a0656f9017ecca01", + "content_hash": "88ab004fc467cd49df1cd091a0b8701ac139dd5283e32f3b56d022fe90df36aa", "excluded_from_docs": false }, { "kind": "spec-kit-cmd", "path": ".specify/extensions/gaia/commands/lint.md", "name": "speckit.gaia.lint", - "description": "Immutability lint over a saved SPEC artifact: frontmatter, frozen UAT-NNN ids, no placeholders.", + "description": "GAIA after_specify hook: immutability lint over the just-written SPEC artifact.", "audience": "adopter", - "content_hash": "591535fc4bbb75d7ca462861a097e38ff1fd023025703128fa3c5332d95166d1", + "content_hash": "05b8c2cee7097a38833e0ee7cf158c7cfb120026a46e72d9d6e3df00db2b94eb", "excluded_from_docs": false }, { "kind": "spec-kit-cmd", "path": ".specify/extensions/gaia/commands/self-review.md", "name": "speckit.gaia.self-review", - "description": "Pre-gate-2 self-review pass; surfaces drift, ambiguity, and pending clarifications before save.", + "description": "GAIA after_clarify hook: pre-gate-2 self-review pass on the in-progress SPEC draft.", "audience": "adopter", - "content_hash": "4b2e53da05557ec529af7d86b6b9ebd78d25c728094e218e21284ccacfb2bad9", + "content_hash": "02973f87cbfc2375e4fa52e9be7d000e6096b359e3b9a46000d9fa7bbb9250f9", "excluded_from_docs": false }, { "kind": "spec-kit-cmd", "path": ".specify/extensions/gaia/commands/spec.md", "name": "speckit.gaia.spec", - "description": "GAIA Socratic discovery wrapper around /speckit.specify and /speckit.clarify.", + "description": "GAIA Socratic discovery wrapper around /speckit-specify and /speckit-clarify.", "audience": "adopter", - "content_hash": "570a6bbca95c88674405a54937229e7754009032415888d0c83311238c7b089f", + "content_hash": "41123447df9a84aedcef19e7a136674e6c1e85b86d37a2b4de3446f511a80ec4", "excluded_from_docs": false }, { "kind": "spec-kit-cmd", "path": ".specify/extensions/gaia/commands/spec-close.md", "name": "speckit.gaia.spec-close", - "description": "Close a SPEC after implementation+merge: optional drain of deferred wiki-promote, then archive/delete/keep prompt for the local SPEC artifact.", + "description": "Close a SPEC after implementation+merge. Optional drain of deferred wiki-promote, then disposition prompt (archive / delete / keep) for the local SPEC artifact.", "audience": "adopter", - "content_hash": "215a96ee13baa8946118f9016f003acb390f9b14bd4a59de6735d711a19714a1", + "content_hash": "501b1b27693e54369cab6339c39c102c2976012c9da7bd74c685ada5181ceacb", "excluded_from_docs": false }, { "kind": "spec-kit-cmd", "path": ".specify/extensions/gaia/commands/uat-write.md", "name": "speckit.gaia.uat-write", - "description": "before_implement hook: render PO-authored UATs into Playwright e2e specs at .playwright/e2e/spec-NNN/.", + "description": "GAIA before_implement hook: render PO-authored UATs into Playwright e2e specs at .playwright/e2e/spec-NNN/.", "audience": "adopter", - "content_hash": "7ad11049e522ffdcaa34edbd3378603b92304e5d4662cbfa46c43cba077db09f", + "content_hash": "73682b988bac6e56bcd49c45a36e4b7b14ad57dfe00c487dd57ce4a56f45e641", "excluded_from_docs": false }, { @@ -963,70 +1395,79 @@ "name": "speckit.gaia.wiki-promote", "description": "Promote merged SPEC content into the GAIA wiki.", "audience": "adopter", - "content_hash": "a49b11dbc4445930c0e93411578d765076ecd079861507779bdfb616ce9533bb", + "content_hash": "0d813e6b39a7b96bfd0f902ee1bd7c42985c4c7e90ba95675bac5cf8669596fa", "excluded_from_docs": false }, { "kind": "sub-route", "path": ".claude/skills/gaia/references/audit.md", "name": "/gaia audit", - "description": "/gaia audit", + "description": "/gaia-audit", + "audience": "adopter", + "content_hash": "bf1ff5d5d44e0ae23c174a206cf8d7e7e48fc2d754d1ef55f2ae7d4f7c5be5c8", + "excluded_from_docs": false + }, + { + "kind": "sub-route", + "path": ".claude/skills/gaia/references/fitness.md", + "name": "/gaia fitness", + "description": "/gaia-fitness", "audience": "adopter", - "content_hash": "95f9b65aeb85c7c9813eefdab2b924a9072a96c637e8fcc93d84c25b656f09ab", + "content_hash": "a3c17c54b41d52657d1e89630d42b70cbfda3e0a77fc883866d9375d8428d717", "excluded_from_docs": false }, { "kind": "sub-route", "path": ".claude/skills/gaia/references/forensics.md", "name": "/gaia forensics", - "description": "/gaia forensics", + "description": "/gaia-forensics", "audience": "adopter", - "content_hash": "44e08a25ef3840d6b23160ef10043b6f0379e4a2f0e5de958f20d07fc9926aaa", + "content_hash": "f234c2eebd9c07b7755963b4dfe8b5ec63320c411d76b923520e600ebf740260", "excluded_from_docs": false }, { "kind": "sub-route", "path": ".claude/skills/gaia/references/handoff.md", "name": "/gaia handoff", - "description": "/gaia handoff", + "description": "/gaia-handoff", "audience": "adopter", - "content_hash": "61c4a17d330cfa3e6bd3ac13af3608907705ce13a02505af7dae01f5a4688bdb", + "content_hash": "6770dde315f94105a81bb0a7f0a751f806e7a40822b112a1374e7d170ab34910", "excluded_from_docs": false }, { "kind": "sub-route", "path": ".claude/skills/gaia/references/pickup.md", "name": "/gaia pickup", - "description": "/gaia pickup", + "description": "/gaia-pickup", "audience": "adopter", - "content_hash": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b", + "content_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "excluded_from_docs": false }, { "kind": "sub-route", "path": ".claude/skills/gaia/references/plan.md", "name": "/gaia plan", - "description": "/gaia plan", + "description": "/gaia-plan", "audience": "adopter", - "content_hash": "9e63177bdfea74493d8ed5a3ca9672a8ee8b812710f02697f96187615ccbabe4", + "content_hash": "6ca5e93bd38331dc979c8e2bc355b1b77557d90fc6ca68c1d436002ae9d9d2bb", "excluded_from_docs": false }, { "kind": "sub-route", "path": ".claude/skills/gaia/references/spec.md", "name": "/gaia spec", - "description": "/gaia spec", + "description": "/gaia-spec", "audience": "adopter", - "content_hash": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b", + "content_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "excluded_from_docs": false }, { "kind": "sub-route", "path": ".claude/skills/gaia/references/wiki.md", "name": "/gaia wiki", - "description": "/gaia wiki", + "description": "/gaia-wiki", "audience": "adopter", - "content_hash": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b", + "content_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "excluded_from_docs": false }, { @@ -1035,7 +1476,7 @@ "name": "/gaia wiki consolidate", "description": "wiki-consolidate playbook", "audience": "adopter", - "content_hash": "497ef750d4b5b084de0f92c5c22495c8554d60fee9bb34c081423d9d5050b1f2", + "content_hash": "22f078744907fd72456da8be2a44802b7446743bfdfa5fac5e07355ba658ffb9", "excluded_from_docs": false }, { @@ -1044,7 +1485,7 @@ "name": "/gaia wiki lint", "description": "wiki-lint playbook", "audience": "adopter", - "content_hash": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b", + "content_hash": "5d1ba52cf9420bc7a92cf27238281f3bc55cec25faf15a2fafa8f083c7dd4501", "excluded_from_docs": false }, { @@ -1053,7 +1494,7 @@ "name": "/gaia wiki sync", "description": "wiki-sync playbook", "audience": "adopter", - "content_hash": "bbd089f8ab70238286a7169012cf2b8b3e618dd3aa55360f9fff6018505d73c3", + "content_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "excluded_from_docs": false }, { @@ -1062,8 +1503,18 @@ "name": "wiki/README.md", "description": "GAIA React: LLM Wiki", "audience": "mixed", - "content_hash": "888bc745837f9f70f0a6a9d4406b9960fd4a50c42376290e84c433e2e8949582", - "excluded_from_docs": false + "content_hash": "80cb6e533001ddd511b44667a32d0cbea7ea52a49bd251b6bc1c383d488a48c7", + "excluded_from_docs": false, + "marker_blocks": [ + [ + 30, + 32 + ], + [ + 34, + 36 + ] + ] }, { "kind": "wiki-page", @@ -1071,7 +1522,7 @@ "name": "wiki/components/Form Choices.md", "description": "Form Choices", "audience": "adopter", - "content_hash": "f3645fa47d96cc51d01b09512100e6d6488272c08925fb2b07ed7f73ac3814f9", + "content_hash": "2fb7ac49ada39e573af47872a5617674013a26e85229688689c8e094fb3b792a", "excluded_from_docs": false }, { @@ -1080,7 +1531,7 @@ "name": "wiki/components/Form Field.md", "description": "Form Field", "audience": "adopter", - "content_hash": "b4047e5342cdd042deb2ba567d3279ab0c563f1aa120924edcd8c4c009893897", + "content_hash": "bb4bc8d2e73096ed14f9e8261ed6ad9cb52d1d4036c9fc3d201fe18b0045e4a6", "excluded_from_docs": false }, { @@ -1089,7 +1540,7 @@ "name": "wiki/components/Form Layout.md", "description": "Form Layout", "audience": "adopter", - "content_hash": "7a2949cd1f6415a4c494df6dd07924f3086b719065d3c26551b1947462e97fd2", + "content_hash": "7657eb728be5e1441b96945618666fdc810a48b80ac499b5c2822595ed5d702f", "excluded_from_docs": false }, { @@ -1098,7 +1549,7 @@ "name": "wiki/components/Form Select.md", "description": "Form Select", "audience": "adopter", - "content_hash": "bf7ae57b864f61e9e0c2453fc2ade1acb519f2c0588ec3030e9ddaa8b1c267c2", + "content_hash": "506fc7a5c17cf2d029a0040a0676987ab5399d7ae1053c1558ae95ebdfa10636", "excluded_from_docs": false }, { @@ -1107,7 +1558,7 @@ "name": "wiki/components/Form Text Inputs.md", "description": "Form Text Inputs", "audience": "adopter", - "content_hash": "761d49fa3c8807c423357fc6eba0e88a08fcefdc67c238258bf98bf1d073dc82", + "content_hash": "2e09a7c16350afae039a6f1a0f91821c4739ac5d5c5af880cbe2089bbace19d2", "excluded_from_docs": false }, { @@ -1116,7 +1567,7 @@ "name": "wiki/components/Form YearMonthDay.md", "description": "Form YearMonthDay", "audience": "adopter", - "content_hash": "284fefe3daec323dc5f220ee4339534a2730c0e0caa8260216ad091e7b52b4de", + "content_hash": "f090729bb4564fcf754e9c16f4a17de58e63989a6874d3607f634fb941a244b3", "excluded_from_docs": false }, { @@ -1125,7 +1576,7 @@ "name": "wiki/concepts/API Service Pattern.md", "description": "API Service Pattern", "audience": "adopter", - "content_hash": "fe87920a39a95dcdcb08b70696117134015a3283e3a20e3913a867989a5eca1b", + "content_hash": "b1dff6ec95645fe5789119890a955bda6bbfdd7acd07bc4ce76672def211f782", "excluded_from_docs": false }, { @@ -1134,7 +1585,7 @@ "name": "wiki/concepts/Accessibility.md", "description": "Accessibility", "audience": "adopter", - "content_hash": "6436fe3f12aeb0dc15bd554905050cf4706566d25b2dc7d567cc64caf86e62fe", + "content_hash": "c7e49fdca13cefdedd430edcb28a8aa0873d32d14cf17b54dcad3a352145dfac", "excluded_from_docs": false }, { @@ -1143,7 +1594,7 @@ "name": "wiki/concepts/Agentic Design.md", "description": "Agentic Design", "audience": "adopter", - "content_hash": "882c1432a36f053705caa2b6cca23fa48b14e3a11b6294c14d98226483d78dcd", + "content_hash": "5cbf27f3ac4b7d161259b99a6156340f90811f641fc4f134f14d17c4d059df87", "excluded_from_docs": false }, { @@ -1152,7 +1603,7 @@ "name": "wiki/concepts/Chromatic Opt-Out.md", "description": "Chromatic Opt-Out", "audience": "adopter", - "content_hash": "eb9b3e3d7c2d59e88ae6a5a47245fe955e56cfad4afcd9c261646aca1f7186b8", + "content_hash": "eceb0c501eb60a2ccd88a9ee8eb9b151b2df19f71d1a6dc25741a29070f174b3", "excluded_from_docs": false }, { @@ -1161,7 +1612,7 @@ "name": "wiki/concepts/Claude Hooks.md", "description": "Claude Hooks", "audience": "adopter", - "content_hash": "cb6dc6a0267c027627dfea3fbc1d2ce3eaa287ef2dd9ced8453c0d40509a9f93", + "content_hash": "f4aee5f3b165dddc44ea4c18f66c4fd29a09789c8c3741cc9b80a3af473c5fed", "excluded_from_docs": false }, { @@ -1170,7 +1621,7 @@ "name": "wiki/concepts/Claude Integration Conventions.md", "description": "Claude Integration Conventions", "audience": "adopter", - "content_hash": "1272c7b260d49281606bae8f597e0264fb6657d1a16620a856de1395d9fabb57", + "content_hash": "baad4c0fb45f3917a1b80920219e23393b5e55e6015220dd26e868960b10e6e1", "excluded_from_docs": false }, { @@ -1179,7 +1630,7 @@ "name": "wiki/concepts/Claude Skills.md", "description": "Claude Skills", "audience": "adopter", - "content_hash": "c97f7f29ce15ef3a687190c34512aeaf2c9ee6f291e5dd6bc092a535c5ec43f0", + "content_hash": "c4e3b933e8f6a8687c219e5ae95233aae6937b14ce3a6e032afea4173029f4ac", "excluded_from_docs": false }, { @@ -1188,7 +1639,7 @@ "name": "wiki/concepts/Code Review Audit Agent.md", "description": "Code Review Audit Agent", "audience": "adopter", - "content_hash": "11812fd4a972392d378870d0f2c52d381eb43b06ba68917c8a04c7f2f42fb4dc", + "content_hash": "10ea4793919e047b4e796e2b1b49b33b59ee87e1511fa1475be8bdc2d69e2214", "excluded_from_docs": false }, { @@ -1197,7 +1648,7 @@ "name": "wiki/concepts/Code Review Audit CI.md", "description": "Code Review Audit CI", "audience": "adopter", - "content_hash": "984bba6393bc85c7e13af4c19de5628d2f4f6f3609fdc6a1b855c11869a105f6", + "content_hash": "c5e252bee9f81b03defde0bed498192aac1dea2c950f2ef2a3a79f472729f6ee", "excluded_from_docs": false }, { @@ -1206,7 +1657,7 @@ "name": "wiki/concepts/Coding Guidelines.md", "description": "Coding Guidelines", "audience": "adopter", - "content_hash": "3b8b8f6e925226e1ae9cc87109a11220149da4818c812f5b2e45c0a999ae68d4", + "content_hash": "9e54983e53abf58302878f53bb61459d1de0b2045746410ed35c49695eb6a1f5", "excluded_from_docs": false }, { @@ -1215,7 +1666,7 @@ "name": "wiki/concepts/Component Testing.md", "description": "Component Testing", "audience": "adopter", - "content_hash": "1392b847332804f50916720f06a82c45995d992bd7b10f9fa7cb9b78f8e9d87e", + "content_hash": "ca035aeef658522533b498916580485edde7f38b0fe11cd63aeca65a8b49b358", "excluded_from_docs": false }, { @@ -1224,7 +1675,7 @@ "name": "wiki/concepts/ESLint Fixes.md", "description": "ESLint Fixes", "audience": "adopter", - "content_hash": "67bcc33bad9a828c9079fa9044f866993a83a459d9550f487e07a19de7f6e593", + "content_hash": "af57b4f79fe5f66fed41c8be3b2850a19ea4d18cdaf0d0388bba6acfa7fbb778", "excluded_from_docs": false }, { @@ -1233,7 +1684,7 @@ "name": "wiki/concepts/Forensics.md", "description": "Forensics", "audience": "adopter", - "content_hash": "c0712894a6cb7cf5c3dac3f4ae402c10142ea4901f4d4a0524bf7c80a5a8b890", + "content_hash": "779762f8075f188bb410cd0684d77b1212ca3d51be4e2ac4a89a082179a0189c", "excluded_from_docs": false }, { @@ -1242,7 +1693,7 @@ "name": "wiki/concepts/GAIA Audit.md", "description": "GAIA Audit", "audience": "adopter", - "content_hash": "fc1206baedca1d47fe808540b162bc9efbde59abec03f3d299d841154e8d60e6", + "content_hash": "42af1d0c9b2785d7bbb5874c205f02c705eb7c4599692622ab96ade9380eb135", "excluded_from_docs": false }, { @@ -1251,7 +1702,16 @@ "name": "wiki/concepts/GAIA Handoff.md", "description": "GAIA Handoff", "audience": "adopter", - "content_hash": "8404fa71d8e1d70b27f5eea938add9dbf1201df25f8d22f6650f2bce065f60c9", + "content_hash": "f14704285acc8d3dce637eba9c19a3e66b9857ae797bfce2a4b9dbfa81b66e4a", + "excluded_from_docs": false + }, + { + "kind": "wiki-page", + "path": "wiki/concepts/GAIA Init Workflow.md", + "name": "wiki/concepts/GAIA Init Workflow.md", + "description": "GAIA Init Workflow", + "audience": "adopter", + "content_hash": "400a5ef2ba17a7187994fe8859d6c28c08c6a88ea4eee44a597c0e75e99afd18", "excluded_from_docs": false }, { @@ -1260,7 +1720,7 @@ "name": "wiki/concepts/GAIA Philosophy.md", "description": "GAIA Philosophy", "audience": "adopter", - "content_hash": "913876d84452597c821823e9112bfa82e71222f6c323ab266d77bb1afb79d35f", + "content_hash": "81b8d154ebc9417f407eedb7ba6859e411c78719fa2e39ebb6f8f52e0afe4400", "excluded_from_docs": false }, { @@ -1269,7 +1729,7 @@ "name": "wiki/concepts/GAIA Pickup.md", "description": "GAIA Pickup", "audience": "adopter", - "content_hash": "ce3a700ed7976202210d9cc95583c822f6f9d4b108b0f44fe663d8653d7f78ca", + "content_hash": "d68a80267e35170b4ddd030af93c95599a8419b445113cd6739ac458139792af", "excluded_from_docs": false }, { @@ -1278,7 +1738,7 @@ "name": "wiki/concepts/GAIA Plan.md", "description": "GAIA Plan", "audience": "adopter", - "content_hash": "309979d32a2f9691bf89f1e98e5fd42f1f76884722737c38a3d692d2454cf517", + "content_hash": "cbb76f981b2329d3e0c27e53063c250e9fe39698a224f0827382a22933d67dab", "excluded_from_docs": false }, { @@ -1287,7 +1747,7 @@ "name": "wiki/concepts/GAIA Spec.md", "description": "GAIA Spec", "audience": "adopter", - "content_hash": "c5d8a9bb88180d40f0b4577e63658befb14af55930f69d9a7a5b55930ca533b4", + "content_hash": "2a7382fdace509e4d832c43261a170c884ed65ae8d8a5e1f79e83ecbeb9dbfc0", "excluded_from_docs": false }, { @@ -1296,16 +1756,16 @@ "name": "wiki/concepts/Git Workflow.md", "description": "Git Workflow", "audience": "adopter", - "content_hash": "62e515fee6c288774eca89f50555219cd533aa4f05ff5f6c66bc0d886f946c51", + "content_hash": "e7fbbafcb98835ceed26cdd0dddc515d9fca25af1c248cebed06708111c94ecf", "excluded_from_docs": false }, { "kind": "wiki-page", - "path": "wiki/concepts/Init Workflow.md", - "name": "wiki/concepts/Init Workflow.md", - "description": "Init Workflow", + "path": "wiki/concepts/Incremental CI Skipping.md", + "name": "wiki/concepts/Incremental CI Skipping.md", + "description": "Incremental CI Skipping", "audience": "adopter", - "content_hash": "3c0638fb2ed26b9a3dd7be4be263fb065fdddeeafac11c05ab5038a660646bda", + "content_hash": "a5ef6cb2d62c93bbae5ff283a292f2557360f662a920cac2487285f290d607c0", "excluded_from_docs": false }, { @@ -1314,7 +1774,7 @@ "name": "wiki/concepts/PR Merge Workflow.md", "description": "PR Merge Workflow", "audience": "adopter", - "content_hash": "4f3f5e004642ab6b48ea3b73ac7fea21a8f7c63c790d5211c7d5b53d317919a8", + "content_hash": "4eb0e06722813e1f04ebc2d660a43ac3a3f71653ccc1ec26766e1c408793f3d1", "excluded_from_docs": false }, { @@ -1323,7 +1783,7 @@ "name": "wiki/concepts/Pre-commit Hooks.md", "description": "Pre-commit Hooks", "audience": "adopter", - "content_hash": "def9738703c84a48055bb5f13b517c0e163f4589cb06785388cca599fad26b18", + "content_hash": "202ae004f7cdb1180e85a8992ed4e529022cbba41d2c49c29047cc1acc11e178", "excluded_from_docs": false }, { @@ -1332,7 +1792,16 @@ "name": "wiki/concepts/Release Workflow.md", "description": "Release Workflow", "audience": "contributor", - "content_hash": "52f597636f88dc0d8dec3f29b8a825f5dd1febc48bd2937d4a5faa43d66076b4", + "content_hash": "138ac5082ab5138cc8b7e4ddf6f37b4dc4f4b8f5ec7202804735d9017a8f53cb", + "excluded_from_docs": false + }, + { + "kind": "wiki-page", + "path": "wiki/concepts/Release-Notes.md", + "name": "wiki/concepts/Release-Notes.md", + "description": "Maintainer-only. Translate a version's GAIA CHANGELOG entries into plain-language public release notes for the marketing site.", + "audience": "contributor", + "content_hash": "16573ca6ae691d19dd67bd11e32626e8d4c2f33b624894f2d2c6ef1498c9a508", "excluded_from_docs": false }, { @@ -1341,7 +1810,7 @@ "name": "wiki/concepts/Serena Integration.md", "description": "Serena Integration", "audience": "adopter", - "content_hash": "87d63de897151d7cb4cccfc5f82ea329df048d7d1a54095b25b1d964f86bfbe1", + "content_hash": "d693ec24dabdb20b0fa9b96df80b6d3b010b3fd3441c004c5cd0b99082d68ae4", "excluded_from_docs": false }, { @@ -1350,7 +1819,7 @@ "name": "wiki/concepts/Task Orchestration.md", "description": "Task Orchestration", "audience": "adopter", - "content_hash": "42fec10c022061e6eeae31f3e0ffaeae4a45940f8673945fa943894e5893492c", + "content_hash": "9f3a9b9099d86505ce28efad4df86a82f1aa3c191b4afb9f566a904f26618bff", "excluded_from_docs": false }, { @@ -1359,7 +1828,7 @@ "name": "wiki/concepts/Telemetry.md", "description": "Telemetry", "audience": "adopter", - "content_hash": "4f12ee8de20349eadc23a0ed0b3f643333f33520c5a85c987f39128ee6292dc7", + "content_hash": "c1237fdbc3ce5cb7358ffbb61826df815aa22f22688eae7165e22c8e17209e63", "excluded_from_docs": true }, { @@ -1368,7 +1837,7 @@ "name": "wiki/concepts/Test Runner.md", "description": "Test Runner Rule", "audience": "adopter", - "content_hash": "9a357c11ab95fad2f7fe167d17053efbdca1697e17dec4322517072cbb487e66", + "content_hash": "43c7c9cb9e6b5e76dab2167efb49c21bd6a504631f1b0b7969dab557e070ab8d", "excluded_from_docs": false }, { @@ -1377,7 +1846,7 @@ "name": "wiki/concepts/Update Merge.md", "description": "Update Merge", "audience": "adopter", - "content_hash": "666fed252b783b5b2aefdcd2a8966aac74cb06c3dcbbc9eeb826344be298d91b", + "content_hash": "30ba211476547b67097560ae03909fe5302fa054b5a938b80f938df2c510c2ce", "excluded_from_docs": false }, { @@ -1386,7 +1855,7 @@ "name": "wiki/concepts/Update Workflow.md", "description": "Update Workflow", "audience": "adopter", - "content_hash": "33c699fe54686d67b1b26d98d06e384b43b0c84a045165fef985510537510a0d", + "content_hash": "a7d7fb6b830933be6c0b7156f11d76530eb978701d6da7138e7a0d81b5355b16", "excluded_from_docs": false }, { @@ -1395,7 +1864,7 @@ "name": "wiki/concepts/Wiki Consolidate.md", "description": "Wiki Consolidate", "audience": "adopter", - "content_hash": "e5e5454f87c7ea66c07b601e89b1c58adcbd1c3a26dff7424d2e125770e74ee5", + "content_hash": "c4568c4fee2a6ae27b5652c15c8a9a1aa2e590868d3fe1ea0f61c59f70049564", "excluded_from_docs": false }, { @@ -1404,7 +1873,7 @@ "name": "wiki/concepts/Wiki Sync.md", "description": "Wiki Sync", "audience": "adopter", - "content_hash": "5dfad5866d3df75ba7e89b731ebc8d8df0d22d63cd662beec75d4d93bcbfba12", + "content_hash": "f298134ed31e3e1d2b0148d55356c552391ca092511bdf0b8903d9add2cb95b0", "excluded_from_docs": false }, { @@ -1413,7 +1882,25 @@ "name": "wiki/decisions/Bundle-time Scrub.md", "description": "Bundle-time Scrub", "audience": "contributor", - "content_hash": "726ff8e348268ae43c1ab923013390895fff03e8ba6bc909ca5945ba273b2f79", + "content_hash": "79ec9426e6585875784171d6e3be6e01f0f0cd538f43dca795c3edb025bf1817", + "excluded_from_docs": false + }, + { + "kind": "wiki-page", + "path": "wiki/decisions/CLI-Binary-Split.md", + "name": "wiki/decisions/CLI-Binary-Split.md", + "description": "CLI Binary Split", + "audience": "contributor", + "content_hash": "ee85c6aa8799cce21ccc1a204b437c8f8322b852c16bff80a275b8d545e4e368", + "excluded_from_docs": false + }, + { + "kind": "wiki-page", + "path": "wiki/decisions/Claude Integration Fitness.md", + "name": "wiki/decisions/Claude Integration Fitness.md", + "description": "Claude Integration Fitness", + "audience": "adopter", + "content_hash": "fd2fefd702709abe5cb7f8800d21e719f073460abab6135c1787f17b8e1813af", "excluded_from_docs": false }, { @@ -1422,7 +1909,16 @@ "name": "wiki/decisions/Co-located Tests Folder.md", "description": "Decision: Co-located `tests/` Subfolder", "audience": "adopter", - "content_hash": "37404be25f8dc716beb7b229f497e0fdee57c9228f4c1daa4c60d9f1b73a466c", + "content_hash": "5e824ebbdf23874d4baeb6c65f94d43b4eca582d947c2d8408b2008b5cdc9df2", + "excluded_from_docs": false + }, + { + "kind": "wiki-page", + "path": "wiki/decisions/Content Security Policy.md", + "name": "wiki/decisions/Content Security Policy.md", + "description": "Decision: Content Security Policy", + "audience": "adopter", + "content_hash": "00acb6a3321ebec18ad36925cdd99b9bbff1569ba4d8f5696ac280403f9eca74", "excluded_from_docs": false }, { @@ -1431,7 +1927,16 @@ "name": "wiki/decisions/Dark Mode Modernization.md", "description": "Decision: Modernize Dark Mode (Cookie + Client Hints)", "audience": "adopter", - "content_hash": "aa3623a3fd9be6f0685a3112b77d6f26b0b934c91d145f810da120241eef52a6", + "content_hash": "f0b290117bd28f29db855d4baa50be7e7f4360d4220a495c4344f6e94be16893", + "excluded_from_docs": false + }, + { + "kind": "wiki-page", + "path": "wiki/decisions/Dispatched-Check Rollup via Polling.md", + "name": "wiki/decisions/Dispatched-Check Rollup via Polling.md", + "description": "Decision: Dispatched-Check Rollup via In-Loop Polling", + "audience": "adopter", + "content_hash": "3f13395100cf19d4086331ac09d79c0681ef24876d42f503acc218c9a2b123d2", "excluded_from_docs": false }, { @@ -1440,7 +1945,7 @@ "name": "wiki/decisions/DragonScale Opt-Out.md", "description": "Decision: DragonScale Opt-Out", "audience": "adopter", - "content_hash": "a7fa16bfd616c4e51f2f886c8eb2fb81b411a4efe6a743d7c26e19a12bdba8a4", + "content_hash": "425b6f090c31a311c1cc557268827f0729e77ac49fd63351f8fa7c552860ae39", "excluded_from_docs": false }, { @@ -1449,7 +1954,7 @@ "name": "wiki/decisions/Forensics Triage Workflow.md", "description": "Decision: Forensics Triage Workflow", "audience": "contributor", - "content_hash": "cdfa80db7b4f1ad6c4bd579ce85ea7c7aaa3f61756bef75f7eb36226990d1b33", + "content_hash": "51eae953977cd7e1f7777e915be6e95b3909f828890c26c3ea188198f61f061b", "excluded_from_docs": false }, { @@ -1458,7 +1963,7 @@ "name": "wiki/decisions/No Component Library.md", "description": "Decision: No Component Library", "audience": "adopter", - "content_hash": "1fd12d7c70211b0faa61e00a259f6c0d3e52e6bd3ecf1cf0b9ef4c900c1115b5", + "content_hash": "e3c7b7b04560feea35759eab2a25f63d09ff2715ddcb99f2cbd7b3122a46a63e", "excluded_from_docs": false }, { @@ -1467,7 +1972,16 @@ "name": "wiki/decisions/Quality Gate.md", "description": "Decision: Mandatory Quality Gate", "audience": "adopter", - "content_hash": "9a11dc223a4e53b927020a33484e7a75e7e9bd4d3dbd9909314829e3f4ef3447", + "content_hash": "b8208a8106803aa58ce1a3a6f75598f5e5b7462ceee1b7b6fe90f98e6eb5184f", + "excluded_from_docs": false + }, + { + "kind": "wiki-page", + "path": "wiki/decisions/TDD RED Verification.md", + "name": "wiki/decisions/TDD RED Verification.md", + "description": "TDD RED Verification", + "audience": "adopter", + "content_hash": "5b5f9f42a9c6ad8b2cf96dba34fc1dac9b4fd0de5acdf5a5e0da3927df1632bc", "excluded_from_docs": false }, { @@ -1476,7 +1990,7 @@ "name": "wiki/decisions/Thin Routes.md", "description": "Decision: Thin Routes, Fat Pages", "audience": "adopter", - "content_hash": "20b4a79107f2d05bda210cff4400d958b6c214ada80eb9ad2cd3db7a42c44470", + "content_hash": "e2a91c2bb072098310a7862fbe35fea62b7f519b6180a1bae1a359044bd1dd46", "excluded_from_docs": false }, { @@ -1485,7 +1999,7 @@ "name": "wiki/decisions/TypeScript Language Files.md", "description": "Decision: TypeScript Language Files Over JSON", "audience": "adopter", - "content_hash": "dd06cdcc41d489958c3a89aee48ea873c342b130ef19a3834881bb69917da2ae", + "content_hash": "2599a899a9a9a957f14151c002aa9ad37ce1348f70b8142e2665dbf2cc70b5fc", "excluded_from_docs": false }, { @@ -1494,7 +2008,7 @@ "name": "wiki/decisions/Wiki Management.md", "description": "Wiki Management", "audience": "adopter", - "content_hash": "7ef0dca2da792c7cebdc6690b7b5505a26db73e8f648fa4f9a685a5c60740fef", + "content_hash": "81b7f13809f67bbff73fa29025069823ad1e1968b829527035a4974fbe6393c6", "excluded_from_docs": false }, { @@ -1503,7 +2017,7 @@ "name": "wiki/decisions/composeStory Pattern.md", "description": "Decision: Test Components via Storybook `composeStory`", "audience": "adopter", - "content_hash": "5a393d78f1a5bf54873b69f325a52cb52fe3edb5e3006f2a54abf07f615842f9", + "content_hash": "6226b64ee8ab3522d185a41c921380041381e7a44333a1efdd875d77a4df0f06", "excluded_from_docs": false }, { @@ -1512,7 +2026,7 @@ "name": "wiki/decisions/pnpm.md", "description": "Decision: pnpm as the Package Manager", "audience": "adopter", - "content_hash": "fa265a0d810b118d7b7d56bd015c4174bf4b2a0e60c50ae37f65ae4fe708dd6e", + "content_hash": "a4154836d8633273c9553841227f99332232aad528d5c01fcd6e6d48424f0d67", "excluded_from_docs": false }, { @@ -1521,7 +2035,7 @@ "name": "wiki/decisions/spec-kit Extension Strategy.md", "description": "spec-kit Extension Strategy", "audience": "adopter", - "content_hash": "c9f796816930be4ef5fe4d3d6c362b9b54f677c5ba39dd32e9a3c173dad4a69a", + "content_hash": "72120546a17e1c57e5b707730d637cf112460e29019f0e6054bda246cdd2cbbf", "excluded_from_docs": false }, { @@ -1530,7 +2044,7 @@ "name": "wiki/dependencies/Chromatic.md", "description": "Chromatic", "audience": "adopter", - "content_hash": "9c2b1cdd5f25f72cba8cf73c09b132c094d33b2e52a4c8a4560d33cfe2afdd67", + "content_hash": "6618978c8a00d2b93fe9e84762e4fbbeffe4be5f0d42a8ab150959e30a4c9167", "excluded_from_docs": false }, { @@ -1539,7 +2053,7 @@ "name": "wiki/dependencies/Conform.md", "description": "Conform", "audience": "adopter", - "content_hash": "44ae11256f7e4da566dc5c2b9436ba47bc1bf9372b3c2c9bfbf06c1e20d602bc", + "content_hash": "578a25bf6f3467c8c15df168478ddaf4447eb626a7c94cfd9db37673614c4258", "excluded_from_docs": false }, { @@ -1548,7 +2062,7 @@ "name": "wiki/dependencies/Husky.md", "description": "Husky + lint-staged", "audience": "adopter", - "content_hash": "a711d029981ab47015cebc33f59063e7f513a2b04e3a25a0b53abcc3122c1d0e", + "content_hash": "ab5b13ad0837dfbd409a4dac50637261154542a0652e4300e41fc1ba5d0c80a2", "excluded_from_docs": false }, { @@ -1557,7 +2071,7 @@ "name": "wiki/dependencies/Ky.md", "description": "Ky", "audience": "adopter", - "content_hash": "e97cbd19e5660015fcde3f8c426e236b74e022814d7cd4135d04b7f0a4ab27f6", + "content_hash": "b6d69a77dee396b66db7056c1ccb6d37ac861d67b69405982ea3ff863680fa9e", "excluded_from_docs": false }, { @@ -1566,7 +2080,7 @@ "name": "wiki/dependencies/MSW.md", "description": "MSW", "audience": "adopter", - "content_hash": "a7a132cbd0d9887013a744d8cf28290e08c72436c75955d2b18a5f56a387a381", + "content_hash": "4536d68cebaac10186967c1d9c25fc86a88bd00e5ef4abd0466f54602a0ed4d6", "excluded_from_docs": false }, { @@ -1575,7 +2089,7 @@ "name": "wiki/dependencies/Playwright.md", "description": "Playwright", "audience": "adopter", - "content_hash": "59d6be01d594cc2a938db75d901a46c49d57ae0810a236599d39e3719ce721eb", + "content_hash": "0eedc2e7aaab28d188dbeea52eeadb898eeb67983e6c09bdfa6ed221ed298ede", "excluded_from_docs": false }, { @@ -1584,7 +2098,7 @@ "name": "wiki/dependencies/React Router 7.md", "description": "React Router 7", "audience": "adopter", - "content_hash": "7c4ae988a49fded7cddd3031452deab238a70157399946e662473838f7dcab73", + "content_hash": "01c20f7bb7a54eae1e0b050f3fec0e570e2816528d9a761fc006c52e3610c08c", "excluded_from_docs": false }, { @@ -1593,7 +2107,7 @@ "name": "wiki/dependencies/React Testing Library.md", "description": "React Testing Library", "audience": "adopter", - "content_hash": "b1a5cf93eab7fd9923c365afb924825330877363a95b7487f9b25af94daf658d", + "content_hash": "d15bf7edeb3390ef0aaac031afaaa41cf531620e25fd487ba484734a68b0e187", "excluded_from_docs": false }, { @@ -1602,7 +2116,7 @@ "name": "wiki/dependencies/Serena.md", "description": "Serena", "audience": "adopter", - "content_hash": "4592979349184e2e265fc483733b90f421ac41bceb12c28337c2956fe56f25f1", + "content_hash": "6916e91a5e0a3fbcc8faec37974bd92badd8b2df9fb29babc1c10d5e41780768", "excluded_from_docs": false }, { @@ -1611,7 +2125,7 @@ "name": "wiki/dependencies/Storybook.md", "description": "Storybook", "audience": "adopter", - "content_hash": "80086f11cdeb02dd87fc70badf357a571c46412544ee18d4a3f9e87a9541476a", + "content_hash": "fa283d281423dcb4bce94a36e3001104e391179a5a0a09c6b168540bbf4a4e79", "excluded_from_docs": false }, { @@ -1620,7 +2134,7 @@ "name": "wiki/dependencies/Tailwind.md", "description": "Tailwind", "audience": "adopter", - "content_hash": "70a1747925a47b6ee797b2e3f6ad7bbba49e8bf2506fdb25dade43e31f80d6a1", + "content_hash": "de698122e4b05c5fd89a2de1992043a6c3f5b11e4ddb26e0c36cd049d21184f6", "excluded_from_docs": false }, { @@ -1629,7 +2143,7 @@ "name": "wiki/dependencies/Vitest.md", "description": "Vitest", "audience": "adopter", - "content_hash": "fed2aa1a1f00e1f03bb6b5b8a7803c4f473ba8a12b3d166997746d21b32ae4c0", + "content_hash": "efd21d864a47ae9e34ac1914f253b1f453ed971b93a10469254ee82a236ba8a3", "excluded_from_docs": false }, { @@ -1638,7 +2152,7 @@ "name": "wiki/dependencies/Zod.md", "description": "Zod", "audience": "adopter", - "content_hash": "38a03dd255ec86b8b7cd01a220ec8b2dd25a6f40df3770bd5fad9a993f5cec47", + "content_hash": "fa402a4fd91781e3adbcbeadba1fa3bedd010fbcc68e1f990e4d5b31baf4317d", "excluded_from_docs": false }, { @@ -1647,7 +2161,7 @@ "name": "wiki/dependencies/gaia-lint.md", "description": "@gaia-react/lint", "audience": "adopter", - "content_hash": "c7e22cfd1e2b0c334d111fb1643e6930c59c58749fcdee24a0a55aa6247a30cd", + "content_hash": "e17e63fc38e37c5b2d53d3afad7430db1954a572b988c64266563f8c08034718", "excluded_from_docs": false }, { @@ -1656,7 +2170,7 @@ "name": "wiki/dependencies/i18next.md", "description": "i18next", "audience": "adopter", - "content_hash": "b74a80f78e2710aaa465bcfae588e130ec9926d8abc32d1651f3b2b4851be71b", + "content_hash": "a32db267e44f39343b0c702eb19a1ff3c817ac371f967dce20b50ced81ecca96", "excluded_from_docs": false }, { @@ -1665,7 +2179,16 @@ "name": "wiki/dependencies/knip.md", "description": "knip", "audience": "adopter", - "content_hash": "c03940ffa21051dff65ac1bdc1ca514b55559257b4477422ef08acdd62b4ee72", + "content_hash": "7a9ac7c30cf8bd88b53afea19708095154d90e09e3bc337f397958298d9e709b", + "excluded_from_docs": false + }, + { + "kind": "wiki-page", + "path": "wiki/dependencies/pnpm-audit.md", + "name": "wiki/dependencies/pnpm-audit.md", + "description": "pnpm-audit", + "audience": "adopter", + "content_hash": "59594290dc0ae9e9fb6bebc4e01e0f8a90e083700609c54ce8f694d8ccf8f014", "excluded_from_docs": false }, { @@ -1674,7 +2197,7 @@ "name": "wiki/dependencies/react-icons.md", "description": "react-icons", "audience": "adopter", - "content_hash": "b7103ef03702ceb5addec8896a0a170d3a948777cb2c81ab4a49789fd9ab85a1", + "content_hash": "e7419e61285cefd7d11ddd64380bcd5eacb612eab3511b7e459abe34fa9518af", "excluded_from_docs": false }, { @@ -1683,7 +2206,7 @@ "name": "wiki/dependencies/remix-flat-routes.md", "description": "remix-flat-routes", "audience": "adopter", - "content_hash": "a83037c5dc7cfede139bf5cff0a8e189687b8ae4ab53709abcb7529d499e6fef", + "content_hash": "646921359cd83210e1027ed6fda023de520b98684aeb1a89f962aa0a2e250dbb", "excluded_from_docs": false }, { @@ -1692,7 +2215,7 @@ "name": "wiki/dependencies/remix-i18next.md", "description": "remix-i18next", "audience": "adopter", - "content_hash": "e7b05124c138b95028c8c58f20c6fc187c3cfb31e39e4d17cbf1ec79a0796e50", + "content_hash": "871acad1b44362e4f1eafb4a1391c9d752e4dff0d5c1c25c01ecfdcf7f64e114", "excluded_from_docs": false }, { @@ -1701,7 +2224,7 @@ "name": "wiki/dependencies/remix-toast.md", "description": "remix-toast + Sonner", "audience": "adopter", - "content_hash": "70bcdd8abdcb0620add3dc726630dba14ab0356a8b3439607b7b199aa48bac36", + "content_hash": "244213c3860e4f4ef65ab8eab6a1424415b0924708ebe74ca3a01a0f28b1599c", "excluded_from_docs": false }, { @@ -1710,7 +2233,7 @@ "name": "wiki/dependencies/spec-kit.md", "description": "spec-kit", "audience": "adopter", - "content_hash": "059e4474d5e1e2893bac908f9fdfa9d730689628bfd7794353444a6e0b090520", + "content_hash": "9c6bfb947542130eb8e538a738c905a9f08d13cc45f95056620c5d6ba943edd3", "excluded_from_docs": false }, { @@ -1719,7 +2242,7 @@ "name": "wiki/entities/GAIA.md", "description": "GAIA", "audience": "contributor", - "content_hash": "45905837b31831575a132cac37ea091e5f6f4fb65b0bd8156c6a4dc80e51f6c5", + "content_hash": "8ac9ad6cf08aa85d7e0b98cc01226500bdca82527847456ca846d87e7dd3c330", "excluded_from_docs": false }, { @@ -1728,7 +2251,7 @@ "name": "wiki/entities/Steven Sacks.md", "description": "Steven Sacks", "audience": "contributor", - "content_hash": "977e03dfbd741d906164fc836413ff512f05f3f0bbfbd631b866623b1c9e1119", + "content_hash": "3237fd76e69226ccd4f00a8ad74a15dd8e1c4c5ea0cf6562fc2a54650ff61654", "excluded_from_docs": false }, { @@ -1737,7 +2260,7 @@ "name": "wiki/flows/Form Submit Flow.md", "description": "Form Submit Flow", "audience": "adopter", - "content_hash": "36d5eae5cdf39eb77e3a2179dfbbc859b4cc710e62ec32da20f6d113b1957370", + "content_hash": "4613494b8e7fe4b5f40fa7454bfc87ba101ab2b4bb102d92bc437e444201363a", "excluded_from_docs": false }, { @@ -1746,7 +2269,7 @@ "name": "wiki/flows/Language Flow.md", "description": "Language Flow", "audience": "adopter", - "content_hash": "866014c5fc2a4dadea015ea6649869e2773c7d84262e0d752bc21d33c3e6903f", + "content_hash": "7b7383a72c5ab7213acf00495e1cecb7e202dbada322f5e18bef21fa4defa928", "excluded_from_docs": false }, { @@ -1755,7 +2278,7 @@ "name": "wiki/flows/Theme Flow.md", "description": "Theme Flow (Dark Mode)", "audience": "adopter", - "content_hash": "1e11561b80fe27a40992bb3fe9394f359e69b8dc492a6a536f54613f2f225b20", + "content_hash": "3978d8fdb65a5ef31e5f50b91be1d0f23c143a5bdd96030da1d40a1aa83a7922", "excluded_from_docs": false }, { @@ -1764,7 +2287,7 @@ "name": "wiki/hot.md", "description": "Recent Context", "audience": "adopter", - "content_hash": "45cc97f880c48627555e16afb6691974a1a8c0b2e5f33e3edcb02732146b1468", + "content_hash": "30ac1834dfca9c5f94989cd56178fb921a9b469d8968f301cbf93932c80c6e82", "excluded_from_docs": false }, { @@ -1773,8 +2296,30 @@ "name": "wiki/index.md", "description": "Index", "audience": "mixed", - "content_hash": "b6f5f63e0fef2cfdaa3f755b670d612fe3f752feccd97d528d49ab3b55a27c6d", - "excluded_from_docs": false + "content_hash": "0accb1bbb9a598df989131c3ae22dcbd5687550eb59c4bd437e778a1c142ac48", + "excluded_from_docs": false, + "marker_blocks": [ + [ + 59, + 65 + ], + [ + 102, + 104 + ], + [ + 112, + 114 + ], + [ + 138, + 141 + ], + [ + 155, + 160 + ] + ] }, { "kind": "wiki-page", @@ -1782,25 +2327,43 @@ "name": "wiki/log.md", "description": "Log", "audience": "adopter", - "content_hash": "da7144961847fd2b96a84967bd2957b85d52501c71dd975fdf506f7dd6366e16", + "content_hash": "023f3d27adb1ce94ed598265f7d5136c447319e391c470271c2efe13a3a7a50f", "excluded_from_docs": false }, { "kind": "wiki-page", "path": "wiki/meta/consolidate-report-2026-05-07.md", "name": "wiki/meta/consolidate-report-2026-05-07.md", - "description": "Consolidate Report \u2014 2026-05-07", + "description": "Consolidate Report: 2026-05-07", "audience": "contributor", - "content_hash": "e58a051ea0d07978941e1e9afe4768791dff11e5643d5a4e8c7ebf47cee42522", + "content_hash": "43e50ac0b54c7a62429213a41fcbd5aaf64fe77d4c12aa1b379865b63319f450", "excluded_from_docs": false }, { "kind": "wiki-page", "path": "wiki/meta/consolidate-report-2026-05-08.md", "name": "wiki/meta/consolidate-report-2026-05-08.md", - "description": "Consolidate Report \u2014 2026-05-08", + "description": "Consolidate Report: 2026-05-08", + "audience": "contributor", + "content_hash": "2c486fe6bda9d0298b70f444eedb239312a7fb5b9dc355c40d0d793b39a9a3a0", + "excluded_from_docs": false + }, + { + "kind": "wiki-page", + "path": "wiki/meta/consolidate-report-2026-05-26.md", + "name": "wiki/meta/consolidate-report-2026-05-26.md", + "description": "Consolidate Report: 2026-05-26", "audience": "contributor", - "content_hash": "1c49b0b0fc1cbe38a32f21b35290ad9e6bd4a80e6607969710009355ea3b5098", + "content_hash": "39637b94b6af2b58819fbbfa5b56bd48972ef166b3a0adbca594fb94ab75516b", + "excluded_from_docs": false + }, + { + "kind": "wiki-page", + "path": "wiki/meta/consolidate-report-2026-06-04.md", + "name": "wiki/meta/consolidate-report-2026-06-04.md", + "description": "Consolidate Report: 2026-06-04", + "audience": "contributor", + "content_hash": "4d348be73a7e10a317147f5a7e331ae79df14bb9939747ab2d61ba29c362fed2", "excluded_from_docs": false }, { @@ -1809,43 +2372,43 @@ "name": "wiki/meta/dashboard.md", "description": "Wiki Dashboard", "audience": "contributor", - "content_hash": "4e2d4ff31315d91651d7d4cba922db0eb252909d1d967f0a13a8d9cfef3c48e9", + "content_hash": "94d37e433ae24d5cfdf78afa1417361626f0915199343bdb026da507c41ccdea", "excluded_from_docs": false }, { "kind": "wiki-page", "path": "wiki/meta/lint-report-2026-04-21.md", "name": "wiki/meta/lint-report-2026-04-21.md", - "description": "Wiki Lint Report \u2014 2026-04-21", + "description": "Wiki Lint Report: 2026-04-21", "audience": "contributor", - "content_hash": "ba9ff888e56dfa83acfa0f061d077bd950b2ae481271609f1ea9a49fa6aa368d", + "content_hash": "ff56226e95710344658306c3d58d3715969afc55941258198279f77ecab2387c", "excluded_from_docs": false }, { "kind": "wiki-page", "path": "wiki/meta/lint-report-2026-04-26.md", "name": "wiki/meta/lint-report-2026-04-26.md", - "description": "Wiki Lint Report \u2014 2026-04-26", + "description": "Wiki Lint Report: 2026-04-26", "audience": "contributor", - "content_hash": "c95d42f963053bb272e7886f6c5dd6bec09cfb31560289a1b058b2f05acbe19d", + "content_hash": "fd107cab9cd059d3008bbbf979a274a6af3608431297394765f6ee291eb7fde0", "excluded_from_docs": false }, { "kind": "wiki-page", "path": "wiki/meta/lint-report-2026-04-27.md", "name": "wiki/meta/lint-report-2026-04-27.md", - "description": "Wiki Lint Report \u2014 2026-04-27", + "description": "Wiki Lint Report: 2026-04-27", "audience": "contributor", - "content_hash": "d6c6be57eb8dae5d7c0a75e87c9df126a48af5d0efc39c54e8d462de1df4e789", + "content_hash": "aff9dead794561845f0143e0b01c69ae5fb29e375b420d58367a6bf583fe0526", "excluded_from_docs": false }, { "kind": "wiki-page", "path": "wiki/meta/lint-report-2026-05-01.md", "name": "wiki/meta/lint-report-2026-05-01.md", - "description": "Wiki Lint Report \u2014 2026-05-01", + "description": "Wiki Lint Report: 2026-05-01", "audience": "contributor", - "content_hash": "311620a33ea61526e7bb1f9337a77e8a026dfcc7c1c8057675b69a5506f26020", + "content_hash": "4bfa4110fd52166421929af67e7cfd785598a97c02491941cb7ffba5ddba2931", "excluded_from_docs": false }, { @@ -1854,7 +2417,7 @@ "name": "wiki/meta/lint-report-2026-05-03.md", "description": "Lint Report: 2026-05-03", "audience": "contributor", - "content_hash": "ae8ed11aac52983ac4b0b626d984d7996132464a3c837ae4f31e154a9fe75938", + "content_hash": "f2e86781c63a00f89da37e8d825450208674929bdb57bb95a5f256771c6a41b3", "excluded_from_docs": false }, { @@ -1863,7 +2426,7 @@ "name": "wiki/meta/lint-report-2026-05-04.md", "description": "Lint Report: 2026-05-04", "audience": "contributor", - "content_hash": "937e9aca477d5b57dba6ebd07fa7c069c76862f53d6e893296460a7dd89b00bb", + "content_hash": "7254f2cffc894e6ab7df1240fd08c1f30f179aa3917d1b4f8bd039382a36479a", "excluded_from_docs": false }, { @@ -1872,7 +2435,7 @@ "name": "wiki/meta/lint-report-2026-05-06.md", "description": "Lint Report: 2026-05-06", "audience": "contributor", - "content_hash": "031432cfa6487fa40fa6c6d3e4ffaa79420de38c97e93a56f070dd86985a6245", + "content_hash": "f2a853644dda5a093427abbe86825f00b3dabdb3b96051f55576589d1de5711b", "excluded_from_docs": false }, { @@ -1881,7 +2444,7 @@ "name": "wiki/meta/lint-report-2026-05-07.md", "description": "Lint Report: 2026-05-07", "audience": "contributor", - "content_hash": "f7e9567ccdad08cdeae01a303d9ff38e1f0f436e64c01867a9f50280f7c121c2", + "content_hash": "f5635e7f259b864449d049287c9ff5bf464206be648e5ae1a18fa3e261d7a4d9", "excluded_from_docs": false }, { @@ -1890,7 +2453,34 @@ "name": "wiki/meta/lint-report-2026-05-08.md", "description": "Lint Report: 2026-05-08", "audience": "contributor", - "content_hash": "d92d89b79f72fe41f48ac73b915febd25eae4d5c3467f4ee1dcba12d90dadf50", + "content_hash": "88e59f900509e50b3fbc9273932a2c70b84f7c5129b49f1d916f0050143d59cd", + "excluded_from_docs": false + }, + { + "kind": "wiki-page", + "path": "wiki/meta/lint-report-2026-06-02.md", + "name": "wiki/meta/lint-report-2026-06-02.md", + "description": "Lint Report: 2026-06-02", + "audience": "contributor", + "content_hash": "6458c0fc86b7a5ed215dd732aea708097dc1f6e493687dd4b56ae6f9e5d53109", + "excluded_from_docs": false + }, + { + "kind": "wiki-page", + "path": "wiki/meta/lint-report-2026-06-04.md", + "name": "wiki/meta/lint-report-2026-06-04.md", + "description": "Lint Report: 2026-06-04", + "audience": "contributor", + "content_hash": "8419b7df2d4a99dff74bc2a51fbcb495e849e3ed150684afdb4f3d95e50bff3c", + "excluded_from_docs": false + }, + { + "kind": "wiki-page", + "path": "wiki/meta/lint-report-2026-06-05.md", + "name": "wiki/meta/lint-report-2026-06-05.md", + "description": "Lint Report: 2026-06-05", + "audience": "contributor", + "content_hash": "ec027c7932e85eba42ba28b84e9f39ee1f0f24f5b39abfbdede91e9e4cc6c826", "excluded_from_docs": false }, { @@ -1899,7 +2489,7 @@ "name": "wiki/modules/CLI Scaffolding.md", "description": "CLI Scaffolding", "audience": "adopter", - "content_hash": "8218176d232427b13f3143b46e2144ce08a58df379fcfaf660b940ea5823515f", + "content_hash": "1382aee50cb11ea0b5e7333909178ff46cd49eae244765c67520e1a1039740e8", "excluded_from_docs": false }, { @@ -1908,7 +2498,7 @@ "name": "wiki/modules/Claude Integration.md", "description": "Claude Integration", "audience": "adopter", - "content_hash": "e70cff0f904b135c85e43dcf5cc0ae9e38c70d698f4ea1960f6c1f57fefe95b9", + "content_hash": "865c384c90b183f02817ff3104b216174faef9748234063275923b1011703cc0", "excluded_from_docs": false }, { @@ -1917,7 +2507,7 @@ "name": "wiki/modules/Components.md", "description": "Components", "audience": "adopter", - "content_hash": "031bc6681a2c8333ff7a83c55ccfc4f8acc36311550770127230dc8cd18aace8", + "content_hash": "b1f6cda0ba5513d488169c304ddc767a7f4d8a4e095365cd12c9a617f8a1cfad", "excluded_from_docs": false }, { @@ -1926,7 +2516,7 @@ "name": "wiki/modules/Folder Structure.md", "description": "Folder Structure", "audience": "adopter", - "content_hash": "665b8424e9f157fb81452782d7dd7da909132ccf278b65c68501e3dad579d9d1", + "content_hash": "4ed323c08bb2963e6891696a4c3c10bb84d4f4300cb89be11b9ccf1f25e9c741", "excluded_from_docs": false }, { @@ -1935,7 +2525,7 @@ "name": "wiki/modules/Form Components.md", "description": "Form Components", "audience": "adopter", - "content_hash": "29b846671c9874f2cbb0186ecef88b126bce6fc2fa52b64e20fd7dcf08e64776", + "content_hash": "715397efea581a860c88361741f7333e08717ad0d25301b87e002e687a00bfe3", "excluded_from_docs": false }, { @@ -1944,7 +2534,7 @@ "name": "wiki/modules/Hooks.md", "description": "Hooks", "audience": "adopter", - "content_hash": "cd2f09ca9a61c888773127191a19ae48bda38a09789440f0555268450e1d2d54", + "content_hash": "86fe22d204f0185ac1f43ef6ba12dc6885df22462fadba26223bb450b35cff05", "excluded_from_docs": false }, { @@ -1953,7 +2543,7 @@ "name": "wiki/modules/MSW Handlers.md", "description": "MSW (Mock Service Worker)", "audience": "adopter", - "content_hash": "feb701104fcd7c1203bd9244feef10ed56bf6b0617f3337096ef67e24fa960c4", + "content_hash": "91fe9125355d95e0af2d3ce244adb52c80c350dcf7cc6037090624b2453423e5", "excluded_from_docs": false }, { @@ -1962,7 +2552,7 @@ "name": "wiki/modules/Middleware.md", "description": "Middleware", "audience": "adopter", - "content_hash": "6df2567693c3242e1d1d76662cfeb1be6dbff71ec01c1c42b93b21bb506dadac", + "content_hash": "9e1d94ed88ae0905892fb556d3bace446c51882955a1440243dec1b9e40a4348", "excluded_from_docs": false }, { @@ -1971,7 +2561,7 @@ "name": "wiki/modules/Pages.md", "description": "Pages", "audience": "adopter", - "content_hash": "1492c9d6ca4e66922d56ff77a48e676defffaf3bb05f6b4ab25e275704db5252", + "content_hash": "e834f49f6d0d478e8e1e668b299eebd88e3a9d635b136ce571914ee8a3580302", "excluded_from_docs": false }, { @@ -1980,7 +2570,7 @@ "name": "wiki/modules/Routing.md", "description": "Routing", "audience": "adopter", - "content_hash": "c150a7c29873623d0677d46c3eb4b0ab677f2ff564b2335ba98e44b878bd0b30", + "content_hash": "06f8bad26b51c6c8722ce7f432c6dbb6dae24315fcdc686a4b723d8af36d152c", "excluded_from_docs": false }, { @@ -1989,7 +2579,7 @@ "name": "wiki/modules/Services.md", "description": "Services", "audience": "adopter", - "content_hash": "2bffc0c07be9d23dc80654ed256eee8a03c17c064f412268b864e234ee59925d", + "content_hash": "b5a7489efc5fb6a76b1f87261309533229750c62d2a6bb3f68b55dd0502282a5", "excluded_from_docs": false }, { @@ -1998,7 +2588,7 @@ "name": "wiki/modules/Sessions.md", "description": "Sessions", "audience": "adopter", - "content_hash": "d9365dd1f7351bdd4e3b78ffcb895328e8f6140b22fb29f79ee3d08882b08ccc", + "content_hash": "43accde9903553ceecc370467e5ba280e2cdac6cbc49cd49b287e376f58c1036", "excluded_from_docs": false }, { @@ -2007,7 +2597,7 @@ "name": "wiki/modules/State.md", "description": "State", "audience": "adopter", - "content_hash": "767bc7bc6f7babeca110642527c30309cf60d2df0b7cd3fd0962ee397395fc0a", + "content_hash": "25cd4b48f3cd935295104c5a4abce1c2b220cf81dd75fecaa0f777903d72e544", "excluded_from_docs": false }, { @@ -2016,7 +2606,7 @@ "name": "wiki/modules/Storybook Stories.md", "description": "Storybook Stories", "audience": "adopter", - "content_hash": "0dac55584ebc642b89e98e2ebb11c71ab965d7a062172ca6ace66b0b38873c1e", + "content_hash": "d18b3810d894b22bce78aa48ae4ec1e9265641a86817df357524ecdbcb338619", "excluded_from_docs": false }, { @@ -2025,7 +2615,7 @@ "name": "wiki/modules/Styles.md", "description": "Styles", "audience": "adopter", - "content_hash": "38ae72680bcbe979f07897b544c7f7af3046ecc57a060a91517041aa9660431f", + "content_hash": "12d4ac101e39782e57709d58fb6781e87225a5e93df8b85be9f11dad1bfe4704", "excluded_from_docs": false }, { @@ -2034,7 +2624,7 @@ "name": "wiki/modules/Testing.md", "description": "Testing", "audience": "adopter", - "content_hash": "97eb4b201393a17ee9339f57ba06c363860a6c3b47a760ce1cf182fd2af00599", + "content_hash": "cb64027bd758688a9acd3ee551c287d86ebc8b75ea62fb27720a874c31925edb", "excluded_from_docs": false }, { @@ -2043,7 +2633,7 @@ "name": "wiki/modules/Utils.md", "description": "Utils", "audience": "adopter", - "content_hash": "cdb7c210c543d3eaf7eeab908b002fc1db5a2ce72fb71f762aaee5be17c021bd", + "content_hash": "3f6186e791ddd61b8094b4f69a539e0dde4ff21b7befb7d7c4b49b32d966f373", "excluded_from_docs": false }, { @@ -2052,7 +2642,7 @@ "name": "wiki/modules/i18n.md", "description": "i18n", "audience": "adopter", - "content_hash": "efe3b2a41a1e0e390cd1fed364080646a7a3a56935145726fef8040fc9c633ca", + "content_hash": "d308cf863ac114b8bb1c7343d6f0536fe23181764a62ae488f4033e1414c7657", "excluded_from_docs": false }, { @@ -2061,7 +2651,16 @@ "name": "wiki/overview.md", "description": "GAIA React", "audience": "adopter", - "content_hash": "9f488147cd2377ad7bc09a1c0e1e629759fd69d0707ed84b3c608fa768a54327", + "content_hash": "65f1150c22c55f7aee41fafd14c3388a19a996d48dbd80a6fced3c0cce54cc8f", + "excluded_from_docs": false + }, + { + "kind": "workflow", + "path": ".github/workflows/audit-ci-tests.yml", + "name": "audit-ci-tests.yml", + "description": "Audit CI Tests", + "audience": "contributor", + "content_hash": "161b7afee940342bcfcf5d6380dcfc6db06e08555cf2f864103ef7015bebf2aa", "excluded_from_docs": false }, { @@ -2070,7 +2669,7 @@ "name": "chromatic.yml", "description": "Chromatic", "audience": "adopter", - "content_hash": "e1df407b716e0b0bbb3fcb1d3de35e759b5702c47a2f672c09671fed6342fe38", + "content_hash": "5cefd9e69176baa1d771c3fdb391f6a7235d12ebaccf0ea43e7634b08f9322bf", "excluded_from_docs": false }, { @@ -2079,7 +2678,7 @@ "name": "cli-tests.yml", "description": "CLI Tests", "audience": "contributor", - "content_hash": "472c5a8ae51e4343f01952b3c75e2eae1c1544e0212eb6748dcc8255f75c7619", + "content_hash": "ae440887f984a78da0cef9a32742eac56aefd20834f714f28d7b25aea4583c50", "excluded_from_docs": false }, { @@ -2087,8 +2686,8 @@ "path": ".github/workflows/code-review-audit.yml", "name": "code-review-audit.yml", "description": "Code Review Audit", - "audience": "adopter", - "content_hash": "e520bfee77a32002d9798212b5b3fb36e06a3ecbcd0e55c9bb67358125e626d1", + "audience": "contributor", + "content_hash": "7d6c488b0f6c0e0950eb17603f86b49d954ac2dc92ea040d4a8420ef505e8744", "excluded_from_docs": false }, { @@ -2097,7 +2696,7 @@ "name": "distribution.yml", "description": "Distribution", "audience": "contributor", - "content_hash": "ab91eb12a6c8ac0c4620baec5f44cb599db17280def33e673ca8df4cade37af3", + "content_hash": "76049c9be969653b5b4f1cee4fa66b35ad60accfc47b836f155b1e0193af2846", "excluded_from_docs": false }, { @@ -2106,7 +2705,7 @@ "name": "forensics-triage.yml", "description": "Forensics Triage", "audience": "contributor", - "content_hash": "08fa217b28adb5225e6134989fd3c1ef64e1e84e3cd5c3b8b297ca8033eeacc1", + "content_hash": "14d384e09c41e0cf55837cc9d745e0a2c34872656df8c76ea4d8fde6c508f21e", "excluded_from_docs": false }, { @@ -2115,7 +2714,7 @@ "name": "release.yml", "description": "Release", "audience": "contributor", - "content_hash": "3c4055208c2de07e1b91f291170e9dddd7289e2465df6064e9383dffe0a204a0", + "content_hash": "b956e44cdccf941738525730a098e512ddcb3263a79118abe63f6ace288b72fb", "excluded_from_docs": false }, { @@ -2124,8 +2723,8 @@ "name": "tests.yml", "description": "Tests", "audience": "adopter", - "content_hash": "d67abed1b7f5c197377f5bd026ce05bc80e28bc753212b790f91ec065d614f59", + "content_hash": "a061a1fa4df06058657d3c6dc26b91c9eb6deb5559a7b49811db7fdde81fad93", "excluded_from_docs": false } ] -} \ No newline at end of file +} diff --git a/CLAUDE.md b/CLAUDE.md index 5665cc8..a8f1fec 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -36,7 +36,7 @@ GAIA has two audiences and the docs must keep them strictly separate: **The inverse rule (softer):** a contributor docs page should not duplicate what's already in the adopter docs. Cross-link instead. -## GAIA's actual surface (verified 2026-05-08, but volatile — re-check before publishing) +## GAIA's actual surface (verified 2026-06-03, but volatile — re-check before publishing) GAIA's invocation surface is layered. Knowing the layering is essential to documenting it correctly. @@ -44,23 +44,24 @@ GAIA's invocation surface is layered. Knowing the layering is essential to docum | Adopter | Contributor-only | |---|---| -| `/gaia-init`, `/setup-cloned-gaia-project` | `/gaia-release`, `/health-audit` | +| `/gaia-init`, `/setup-cloned-gaia-project`, `/setup-gaia-ci`, plus the workflow commands `/gaia-plan`, `/gaia-spec`, `/gaia-audit`, `/gaia-fitness`, `/gaia-forensics` | `/gaia-release`, `/health-audit` | **Layer 2 — top-level skills** at `gaia/.claude/skills/*/SKILL.md`. All adopter-shipped: -- `gaia` — *router*, see Layer 3 below +- Workflow skills: `gaia-wiki` (wiki maintenance), `gaia-handoff`, `gaia-pickup` (context transfer). They autocomplete as `/gaia-wiki | /gaia-handoff | /gaia-pickup` and stay agent / natural-language invocable (that's why they're skills, not commands). - Code skills: `react-code`, `typescript`, `tailwind`, `tdd`, `playwright-cli`, `eslint-fixes`, `skeleton-loaders` - Scaffolders: `new-component`, `new-hook`, `new-route`, `new-service` - Maintenance: `update-deps`, `update-gaia` -**Layer 3 — `/gaia` skill sub-routes** at `gaia/.claude/skills/gaia/references/*.md` (or `references/wiki/*.md`). Adopter-shipped. Invoked as `/gaia `: +**Layer 3 — workflow reference instructions** at `gaia/.claude/skills/gaia/references/*.md` (or `references/wiki/*.md`). Adopter-shipped. PR #277 (merged 2026-06-03) deleted the old `gaia` router `SKILL.md` and split its sub-routes into the discrete Layer 1 commands and Layer 2 skills above; the `references/*` files survive as the dispatch targets (workflow logic unchanged), but they are no longer invoked as `/gaia `: -- `/gaia plan` — orchestrator + per-task subagents -- `/gaia spec` — frozen-UAT spec workflow with operational primitives -- `/gaia audit` — codebase audit -- `/gaia handoff`, `/gaia pickup` — context transfer -- `/gaia forensics` — bug-report bridge with redacting/classifying flow -- `/gaia wiki sync | consolidate | lint` (or no arg = full chain) — wiki maintenance. Renamed from `/wiki-*` in PR #121 to dodge `claude-obsidian:wiki-lint` plugin collision. +- `/gaia-plan` → `references/plan.md` — orchestrator + per-task subagents +- `/gaia-spec` → `references/spec.md` — frozen-UAT spec workflow with operational primitives (`auto ` for non-interactive) +- `/gaia-audit` → `references/audit.md` — knowledge-store audit (`--apply` re-runs the apply stage) +- `/gaia-fitness` → `references/fitness.md` — Claude-integration health check and auto-heal +- `/gaia-forensics` → `references/forensics.md` — bug-report bridge with redacting/classifying flow +- `/gaia-handoff`, `/gaia-pickup` → `references/handoff.md`, `references/pickup.md` — context transfer +- `/gaia-wiki sync | consolidate | lint` (or no arg = full chain) → `references/wiki.md` — wiki maintenance. The wiki workflow was renamed from `/wiki-*` in PR #121 to dodge the `claude-obsidian:wiki-lint` plugin collision. **Layer 4 — spec-kit extension commands** at `gaia/.specify/extensions/gaia/commands/*.md`. Adopter-shipped, registered through spec-kit (v0.8.5) namespace `speckit.gaia.*`: @@ -112,7 +113,7 @@ The `studio/` vault is the singular location for voice/branding/positioning know Studio's `VOICE.md` covers marketing, docs, and in-app strings together. For docs specifically: -- **Reference register, not pitch register.** Procedural and declarative. "Run `/gaia audit` to check the current branch." Not "Unleash the power of `/gaia audit`." +- **Reference register, not pitch register.** Procedural and declarative. "Run `/gaia-audit` to check the current branch." Not "Unleash the power of `/gaia-audit`." - **Voice rules still apply.** No em dashes anywhere. No AI tells (delve, tapestry, leveraging, seamless, robust, powerful). No borrowed-field jargon (substrate, paradigm, ecosystem, fabric). Grep for `—` before publishing. - **Concrete over vague.** Real command names, real flags, real file paths, real numbers. Not "various options." - **Code blocks are honest.** Examples should run. If a snippet won't work as written, it doesn't belong. @@ -129,7 +130,7 @@ Some adopter-facing commands and wiki pages internally reference mechanisms that - **`/gaia-init`** — has a mentorship opt-in step. Describe it as *"opt into an optional adaptation feature"* (or skip the step entirely from the public flow). Do not name `gaia mentorship`, the display rule, the protected memory store, or any of the `_internal-*` subcommands. Do not describe what mentorship does mechanically. - **`/setup-cloned-gaia-project`** — mentions mentorship in its bootstrap. Same handling as `/gaia-init`. - **`wiki/hot.md`, `wiki/index.md`** — both ship and contain references to telemetry / mentorship in their bodies. If you write a page that derives from or links to these, drop the telemetry / mentorship lines from your derivation. Treat the source as if those lines weren't there. -- **`/gaia spec`, `/gaia plan`, spec-close** — incidentally mention telemetry-emit calls inside their flows. Document the user flow without explaining what gets emitted, where, or why. +- **`/gaia-spec`, `/gaia-plan`, spec-close** — incidentally mention telemetry-emit calls inside their flows. Document the user flow without explaining what gets emitted, where, or why. **The registry is `docs/.claude/audit/do-not-document.yml`.** Before writing about any adopter command, hook, skill, or wiki page, check whether any deferred / obscured name appears in the source you're documenting. If yes, the page needs muting at write time. The `docs-audit` agent will also flag this on review, but writers should catch it first. diff --git a/astro.config.mjs b/astro.config.mjs index c8fa703..6460310 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -42,13 +42,13 @@ export default defineConfig({ label: 'Commands', items: [ { label: 'Overview', slug: 'commands' }, - { label: '/gaia plan', slug: 'commands/plan' }, - { label: '/gaia spec', slug: 'commands/spec' }, - { label: '/gaia handoff and pickup', slug: 'commands/handoff-pickup' }, - { label: '/gaia audit', slug: 'commands/audit' }, - { label: '/gaia fitness', slug: 'commands/fitness' }, - { label: '/gaia forensics', slug: 'commands/forensics' }, - { label: '/gaia wiki', slug: 'commands/wiki' }, + { label: '/gaia-plan', slug: 'commands/plan' }, + { label: '/gaia-spec', slug: 'commands/spec' }, + { label: '/gaia-handoff and pickup', slug: 'commands/handoff-pickup' }, + { label: '/gaia-audit', slug: 'commands/audit' }, + { label: '/gaia-fitness', slug: 'commands/fitness' }, + { label: '/gaia-forensics', slug: 'commands/forensics' }, + { label: '/gaia-wiki', slug: 'commands/wiki' }, { label: '/update-deps', slug: 'commands/update-deps' }, { label: '/update-gaia', slug: 'commands/update-gaia' }, ], diff --git a/package.json b/package.json index c565c0b..2cd0c4f 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,8 @@ "astro": "astro" }, "dependencies": { - "@astrojs/starlight": "^0.39.2", - "astro": "^6.4.2", + "@astrojs/starlight": "^0.39.1", + "astro": "^6.2.2", "sharp": "^0.34.5" }, "pnpm": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fe78952..62fae17 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,11 +9,11 @@ importers: .: dependencies: '@astrojs/starlight': - specifier: ^0.39.2 - version: 0.39.2(astro@6.4.2(@types/node@24.12.4)(rollup@4.61.0)) + specifier: ^0.39.1 + version: 0.39.1(astro@6.3.0(@types/node@24.12.2)(rollup@4.60.3)) astro: - specifier: ^6.4.2 - version: 6.4.2(@types/node@24.12.4)(rollup@4.61.0) + specifier: ^6.2.2 + version: 6.3.0(@types/node@24.12.2)(rollup@4.60.3) sharp: specifier: ^0.34.5 version: 0.34.5 @@ -23,33 +23,27 @@ packages: '@astrojs/compiler@4.0.0': resolution: {integrity: sha512-eouss7G8ygdZqHuke033VMcVw5HTZUu+PXd/h06DGDUg/jt5btPYPqh66ENWw/mU78rBrf/oeC4oqoBwMtDMNA==} - '@astrojs/internal-helpers@0.10.0': - resolution: {integrity: sha512-Ry2R3VPeIN4uPCSA4xQc+e+vsJXkalKpEbDc07hV+a/o5Bs2N/s/uDcPJH/05L19DKh9tAy7e6JM3YZ6Cxfezw==} + '@astrojs/internal-helpers@0.9.0': + resolution: {integrity: sha512-GdYkzR26re8izmyYlBqf4z2s7zNngmWLFuxw0UKiPNqHraZGS6GKWIwSHgS22RDlu2ePFJ8bzmpBcUszut/SDg==} - '@astrojs/internal-helpers@0.9.1': - resolution: {integrity: sha512-1pWuARqYom/TzuU3+0ZugsTrKlUydWKuULmDqSMTuonY+9IRDUEGKX/8PXQ1nBxRq3w85uGtd9q9SXfqEldMIQ==} + '@astrojs/markdown-remark@7.1.1': + resolution: {integrity: sha512-C6e9BnLGlbdv6bV8MYGeHpHxsUHrCrB4OuRLqi5LI7oiBVcBcqfUN06zpwFQdHgV48QCCrMmLpyqBr7VqC+swA==} - '@astrojs/markdown-remark@7.1.2': - resolution: {integrity: sha512-caXZ4Dc2St2dW8luEg22GlP0gupLdztCTQE4EzZOxW1pqWXz9mbeJEuHUkgDYcKWW8tjIHkydYDhWLVoxJ327Q==} - - '@astrojs/markdown-remark@7.2.0': - resolution: {integrity: sha512-+YxmVQu1Bd+MFfSzjq1rOJvD9+nIOJzz5YIIhdIH01RrxRkKbyKoEgyIqP3yv51MhzMDgd79QaPv+kCVPT8vHw==} - - '@astrojs/mdx@5.0.6': - resolution: {integrity: sha512-4dKe0ZMmqujofPNDHahzClkwinn9f8jHPcaXcgdGvPAlboD2mjzkUCofli2cBnxYAkdfhC6d50gBJ8i/cH8gHw==} + '@astrojs/mdx@5.0.4': + resolution: {integrity: sha512-tSbuuYueNODiFAFaME7pjHY5lOLoxBYJi1cKd6scw9+a4ZO7C7UGdafEoVAQvOV2eO8a6RaHSAJYGVPL1w8BPA==} engines: {node: '>=22.12.0'} peerDependencies: astro: ^6.0.0 - '@astrojs/prism@4.0.2': - resolution: {integrity: sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA==} + '@astrojs/prism@4.0.1': + resolution: {integrity: sha512-nksZQVjlferuWzhPsBpQ1JE5XuKAf1id1/9Hj4a9KG4+ofrlzxUUwX4YGQF/SuDiuiGKEnzopGOt38F3AnVWsQ==} engines: {node: '>=22.12.0'} - '@astrojs/sitemap@3.7.3': - resolution: {integrity: sha512-f8euLVsyeAmAkSm/1M2Kb8sL8byQmfgbvBNaHFItCheTj/IpiJYSEWVcqDHZ/yEHxiS7+w87mQkzwZaPHmk5GA==} + '@astrojs/sitemap@3.7.2': + resolution: {integrity: sha512-PqkzkcZTb5ICiyIR8VoKbIAP/laNRXi5tw616N1Ckk+40oNB8Can1AzVV56lrbC5GKSZFCyJYUVYqVivMisvpA==} - '@astrojs/starlight@0.39.2': - resolution: {integrity: sha512-vlw+bwnjtf5buCTUtLU7JfV6D3knslxqnspr6LKs6hfRuFZiyr5hT44F7GyDqR9FKANUqFxnIzWM81F1k/kOUA==} + '@astrojs/starlight@0.39.1': + resolution: {integrity: sha512-9kIAXBwcqAuFQ7Ft419fr6rz6p0SPg7Yfgc28TfzoCcuOH9utZgIola9yOq5YIMDrR8rmm8kyl7pCsfrPVmLhQ==} peerDependencies: astro: ^6.0.0 @@ -57,33 +51,33 @@ packages: resolution: {integrity: sha512-j8DNruA8ors99Al39RYZPJK4DC1bKkoNm93mAMuBhY9TCNC4R8n1q7ovFnJ5qhGh5Lsh7pa1gpQVpYpsJPeTHQ==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} - '@babel/helper-string-parser@7.29.7': - resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.29.7': - resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.7': - resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} + '@babel/parser@7.29.3': + resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/types@7.29.7': - resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} '@capsizecss/unpack@4.0.0': resolution: {integrity: sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA==} engines: {node: '>=18'} - '@clack/core@1.4.0': - resolution: {integrity: sha512-7Wctjq6f7c1CPz8sPpkwUnz8yRgVANkpNupb81q432FjcJg4l+Sw7XANdNSdWfAKq0IHI0JTcUeK5dxs/HrGPw==} + '@clack/core@1.3.0': + resolution: {integrity: sha512-xJPHpAmEQUBrXSLx0gF+q5K/IyihXpsHZcha+jB+tyahsKRK3Dxo4D0coZDewHo12NhiuzC3dTtMPbm53GEAAA==} engines: {node: '>= 20.12.0'} - '@clack/prompts@1.5.0': - resolution: {integrity: sha512-wKh+wTjmrUoUdkZg8KpJO5X+p9PWV+KE9mePseq9UYWkukgTKsGS47RRL2HstwVcvDQH+PenrPJWII8+MfiiyA==} + '@clack/prompts@1.3.0': + resolution: {integrity: sha512-GgcWwRCs/xPtaqlMy8qRhPnZf9vlWcWZNHAitnVQ3yk7JmSralSiq5q07yaffYE8SogtDm7zFeKccx1QNVARpw==} engines: {node: '>= 20.12.0'} '@ctrl/tinycolor@4.2.0': @@ -461,8 +455,8 @@ packages: cpu: [x64] os: [win32] - '@rollup/pluginutils@5.4.0': - resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==} + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -470,170 +464,170 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.61.0': - resolution: {integrity: sha512-dnxczajOqt0gesZlN5pGQ1s1imQVrsmCw5G2Ci4oM+0WvNz3pyRnlWrT7McoZIb8VlFwCawdmbWRmxRn7HI+VQ==} + '@rollup/rollup-android-arm-eabi@4.60.3': + resolution: {integrity: sha512-x35CNW/ANXG3hE/EZpRU8MXX1JDN86hBb2wMGAtltkz7pc6cxgjpy1OMMfDosOQ+2hWqIkag/fGok1Yady9nGw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.61.0': - resolution: {integrity: sha512-Bp3JpGP00Vu3f238ivRrjf7z3xSzVPXqCmaJYA9t2c+c8vKYvOzmXF7LkkeUalTEGd6cZcSWe+PFIP3Vy48fRg==} + '@rollup/rollup-android-arm64@4.60.3': + resolution: {integrity: sha512-xw3xtkDApIOGayehp2+Rz4zimfkaX65r4t47iy+ymQB2G4iJCBBfj0ogVg5jpvjpn8UWn/+q9tprxleYeNp3Hw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.61.0': - resolution: {integrity: sha512-zaYIpr670mUmmZ1tVzUFplbQbG7h3Gugx3L5FoqhsC2m/YnLlR1a7zVLmXNPy+iY1tFPEbNG+HHBXZGyId0G5w==} + '@rollup/rollup-darwin-arm64@4.60.3': + resolution: {integrity: sha512-vo6Y5Qfpx7/5EaamIwi0WqW2+zfiusVihKatLvtN1VFVy3D13uERk/6gZLU1UiHRL6fDXqj/ELIeVRGnvcTE1g==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.61.0': - resolution: {integrity: sha512-+P49fvkv2dSoeevUW+lgZ/I2JHSsJCK1Lyjj7Cu6E4UHG4tS9XIefzIjo5qhgELjAclnen1rLzK2PMKJdo+Dyg==} + '@rollup/rollup-darwin-x64@4.60.3': + resolution: {integrity: sha512-D+0QGcZhBzTN82weOnsSlY7V7+RMmPuF1CkbxyMAGE8+ZHeUjyb76ZiWmBlCu//AQQONvxcqRbwZTajZKqjuOw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.61.0': - resolution: {integrity: sha512-l3FAAOyKJXH2ea6KNFN+MMgC/rnE94YGLXs2ehYqDcCoHt1DpvgWX75BhUJxN38XojP7Ul+4H8PRn7EdyqSDrw==} + '@rollup/rollup-freebsd-arm64@4.60.3': + resolution: {integrity: sha512-6HnvHCT7fDyj6R0Ph7A6x8dQS/S38MClRWeDLqc0MdfWkxjiu1HSDYrdPhqSILzjTIC/pnXbbJbo+ft+gy/9hQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.61.0': - resolution: {integrity: sha512-VokPN3TSctKj65cyCNPaUh4vMFA8awxOot/0sp+4J7ZlNRKQEhXhawqPwajoi8H5ZFt61i0ugZJuTKXBjGJ17Q==} + '@rollup/rollup-freebsd-x64@4.60.3': + resolution: {integrity: sha512-KHLgC3WKlUYW3ShFKnnosZDOJ0xjg9zp7au3sIm2bs/tGBeC2ipmvRh/N7JKi0t9Ue20C0dpEshi8WUubg+cnA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.61.0': - resolution: {integrity: sha512-DxH0P3wxm+Yzs/p3zrk9dw1rURu8p0Nv5+MRK/L7OtnLNg5rLZraSBFZ8iUXOd9f2BlhJyEpIZUH/emjq4UJ4g==} + '@rollup/rollup-linux-arm-gnueabihf@4.60.3': + resolution: {integrity: sha512-DV6fJoxEYWJOvaZIsok7KrYl0tPvga5OZ2yvKHNNYyk/2roMLqQAbGhr78EQ5YhHpnhLKJD3S1WFusAkmUuV5g==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.61.0': - resolution: {integrity: sha512-T6ZvMNe84kAz6TBWHC7hGAoEtzP1LWYw/AqayGWEF6uISt3Abk/st06LqRD9THd7Xz3NxzurUpzAuEAUbZf+nw==} + '@rollup/rollup-linux-arm-musleabihf@4.60.3': + resolution: {integrity: sha512-mQKoJAzvuOs6F+TZybQO4GOTSMUu7v0WdxEk24krQ/uUxXoPTtHjuaUuPmFhtBcM4K0ons8nrE3JyhTuCFtT/w==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.61.0': - resolution: {integrity: sha512-q/4hzvQkDs8b4jIBab1pnLiiM0ayTZsN2amBFPDzuyZxjEd4wDwx0UJFYM3cOZzSf5Kw8fnWSprJzIBMkcR44Q==} + '@rollup/rollup-linux-arm64-gnu@4.60.3': + resolution: {integrity: sha512-Whjj2qoiJ6+OOJMGptTYazaJvjOJm+iKHpXQM1P3LzGjt7Ff++Tp7nH4N8J/BUA7R9IHfDyx4DJIflifwnbmIA==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.61.0': - resolution: {integrity: sha512-vvYWX3akdEAY6km+9wAqFDnk6pQsbJKVnj7xawcvs/+fdlYBGp+U+Qq/lLfpIxYIZvZLHMAKD9HLdacSx/r3dw==} + '@rollup/rollup-linux-arm64-musl@4.60.3': + resolution: {integrity: sha512-4YTNHKqGng5+yiZt3mg77nmyuCfmNfX4fPmyUapBcIk+BdwSwmCWGXOUxhXbBEkFHtoN5boLj/5NON+u5QC9tg==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.61.0': - resolution: {integrity: sha512-DePa5cqOxDP/Zp0VOXpeWaGew5iIv5DXp9NYbzkX5PFQyWVX9184WCTh3hvr/7lhXo8ZVlbFLkz8+o/q1dU6gA==} + '@rollup/rollup-linux-loong64-gnu@4.60.3': + resolution: {integrity: sha512-SU3kNlhkpI4UqlUc2VXPGK9o886ZsSeGfMAX2ba2b8DKmMXq4AL7KUrkSWVbb7koVqx41Yczx6dx5PNargIrEA==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-loong64-musl@4.61.0': - resolution: {integrity: sha512-LV8aWMB8UChglMCEzs7RkN0GsH29RJaLLqwm9fCIjlqwxQTiWAqNcc7wjBkH31hV0PU/yVxGYvrYsgfea2qw6g==} + '@rollup/rollup-linux-loong64-musl@4.60.3': + resolution: {integrity: sha512-6lDLl5h4TXpB1mTf2rQWnAk/LcXrx9vBfu/DT5TIPhvMhRWaZ5MxkIc8u4lJAmBo6klTe1ywXIUHFjylW505sg==} cpu: [loong64] os: [linux] libc: [musl] - '@rollup/rollup-linux-ppc64-gnu@4.61.0': - resolution: {integrity: sha512-QoNSnwQtaeNu5grdBbsL0tt1uyl5EnS8DA8Mr3nluMXbhdQNyhN+G4tBax7VCdxLKj8YJ0/4OO9Ho84jMnJtKA==} + '@rollup/rollup-linux-ppc64-gnu@4.60.3': + resolution: {integrity: sha512-BMo8bOw8evlup/8G+cj5xWtPyp93xPdyoSN16Zy90Q2QZ0ZYRhCt6ZJSwbrRzG9HApFabjwj2p25TUPDWrhzqQ==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-musl@4.61.0': - resolution: {integrity: sha512-/zZp5MKapIIApE8trN8qLGNSiRN9TUoaUZ1cmVu4XnVdd5LQLOXTtyi+vtfUbNnT3iyjzpPqYeKXmvJ+gJGYWw==} + '@rollup/rollup-linux-ppc64-musl@4.60.3': + resolution: {integrity: sha512-E0L8X1dZN1/Rph+5VPF6Xj2G7JJvMACVXtamTJIDrVI44Y3K+G8gQaMEAavbqCGTa16InptiVrX6eM6pmJ+7qA==} cpu: [ppc64] os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.61.0': - resolution: {integrity: sha512-RbrzcD3aJ1k3UbtMRRBNwojdVVyXjuVAFTfn/xPa6EEl6GE9Sm/akPgFTb9aAC9pMKGJ6CtWxaGrqWcabH+ySg==} + '@rollup/rollup-linux-riscv64-gnu@4.60.3': + resolution: {integrity: sha512-oZJ/WHaVfHUiRAtmTAeo3DcevNsVvH8mbvodjZy7D5QKvCefO371SiKRpxoDcCxB3PTRTLayWBkvmDQKTcX/sw==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.61.0': - resolution: {integrity: sha512-ZF+onDsBso8PJf1XaG9lB+O9RnBpKGnY6OrzC4CSHrtC1jb6jWLTKK4bRqdoCXHd22gyr2hiYmEAm8Wns/BOCw==} + '@rollup/rollup-linux-riscv64-musl@4.60.3': + resolution: {integrity: sha512-Dhbyh7j9FybM3YaTgaHmVALwA8AkUwTPccyCQ79TG9AJUsMQqgN1DDEZNr4+QUfwiWvLDumW5vdwzoeUF+TNxQ==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.61.0': - resolution: {integrity: sha512-Atk0aSIk5Zx2Wuh9dgRQgLP0Koc8hOeYpbWryMXyk8G8/HmPkwPPkMqIIDhrXHHYqfUzSJA/I7IWSBv8xSmRBA==} + '@rollup/rollup-linux-s390x-gnu@4.60.3': + resolution: {integrity: sha512-cJd1X5XhHHlltkaypz1UcWLA8AcoIi1aWhsvaWDskD1oz2eKCypnqvTQ8ykMNI0RSmm7NkTdSqSSD7zM0xa6Ig==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.61.0': - resolution: {integrity: sha512-0uMOcf3eZ5K+K4cYHkdxShFMPlPXCOdfDFEFn9dNYAEEd2cVvmOfH7zFgRVoDgmtQ1m9k5q7qfrHzyMAubKYUA==} + '@rollup/rollup-linux-x64-gnu@4.60.3': + resolution: {integrity: sha512-DAZDBHQfG2oQuhY7mc6I3/qB4LU2fQCjRvxbDwd/Jdvb9fypP4IJ4qmtu6lNjes6B531AI8cg1aKC2di97bUxA==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.61.0': - resolution: {integrity: sha512-mvFtE4A/t/7hRJ7X8Ozmu8FsIkAUat2nzl12pgU337BRmq87AQUJztwHz2Zv5/tjo9/C95E66CK03SI/ToEDJw==} + '@rollup/rollup-linux-x64-musl@4.60.3': + resolution: {integrity: sha512-cRxsE8c13mZOh3vP+wLDxpQBRrOHDIGOWyDL93Sy0Ga8y515fBcC2pjUfFwUe5T7tqvTvWbCpg1URM/AXdWIXA==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openbsd-x64@4.61.0': - resolution: {integrity: sha512-z9b9+aTxvt8n2rNltMPvyaUfB8NJ+CVyOrGK/MdIKHx7B+lXmZpm/XbRsU7Rpf3fRqJ2uS6mBJiJveCtq8LHDg==} + '@rollup/rollup-openbsd-x64@4.60.3': + resolution: {integrity: sha512-QaWcIgRxqEdQdhJqW4DJctsH6HCmo5vHxY0krHSX4jMtOqfzC+dqDGuHM87bu4H8JBeibWx7jFz+h6/4C8wA5Q==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.61.0': - resolution: {integrity: sha512-jXaXFqKMehsOc+g8R6oo33RRC6w07G9jDBxAE5eAKX7mOcCbZloYIPNhfG9Wl+P9O9IWHFO4OJgPi1Ml2qkt7w==} + '@rollup/rollup-openharmony-arm64@4.60.3': + resolution: {integrity: sha512-AaXwSvUi3QIPtroAUw1t5yHGIyqKEXwH54WUocFolZhpGDruJcs8c+xPNDRn4XiQsS7MEwnYsHW2l0MBLDMkWg==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.61.0': - resolution: {integrity: sha512-OXNWVFocS2IA4+QplhTZZ2a+8hPZR7T8KuozsNmJKK8y7cp83StHvGksfHzPG3wczWTczyWHVQuqeiTUbjiyBg==} + '@rollup/rollup-win32-arm64-msvc@4.60.3': + resolution: {integrity: sha512-65LAKM/bAWDqKNEelHlcHvm2V+Vfb8C6INFxQXRHCvaVN1rJfwr4NvdP4FyzUaLqWfaCGaadf6UbTm8xJeYfEg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.61.0': - resolution: {integrity: sha512-AlAbNtBO637LxSldqV43z0FfXoGfl2TW1DgAg/bs7aQswFbDewz2SJm3BUhiGfbOVtW571xbc9p+REdxhyN/Eg==} + '@rollup/rollup-win32-ia32-msvc@4.60.3': + resolution: {integrity: sha512-EEM2gyhBF5MFnI6vMKdX1LAosE627RGBzIoGMdLloPZkXrUN0Ckqgr2Qi8+J3zip/8NVVro3/FjB+tjhZUgUHA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.61.0': - resolution: {integrity: sha512-QRSrQXyJ1M4tjNXdR0/G/IgV6lzfQQJYBjlWIEYkY2Xs86DRl/iEpQ4blMDjJxSl7n19eDKKXMg0AmuBVYy8pQ==} + '@rollup/rollup-win32-x64-gnu@4.60.3': + resolution: {integrity: sha512-E5Eb5H/DpxaoXH++Qkv28RcUJboMopmdDUALBczvHMf7hNIxaDZqwY5lK12UK1BHacSmvupoEWGu+n993Z0y1A==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.61.0': - resolution: {integrity: sha512-tkuFxhvKO/HlGd0VsINF6vHSYH8AF8W0TcNxKDK6JZmrehngFj78pToc8iemtnvwilDjs2G/qSzYFhe9U8q+fw==} + '@rollup/rollup-win32-x64-msvc@4.60.3': + resolution: {integrity: sha512-hPt/bgL5cE+Qp+/TPHBqptcAgPzgj46mPcg/16zNUmbQk0j+mOEQV/+Lqu8QRtDV3Ek95Q6FeFITpuhl6OTsAA==} cpu: [x64] os: [win32] - '@shikijs/core@4.1.0': - resolution: {integrity: sha512-jLJtSJeuFffqX6/inRE1zqU5aFv2hrszvYgq3OjbAgFRZiWv7abKMDdQzYxuSDfmUPQozZvI/kuy6VMTvnvqTQ==} + '@shikijs/core@4.0.2': + resolution: {integrity: sha512-hxT0YF4ExEqB8G/qFdtJvpmHXBYJ2lWW7qTHDarVkIudPFE6iCIrqdgWxGn5s+ppkGXI0aEGlibI0PAyzP3zlw==} engines: {node: '>=20'} - '@shikijs/engine-javascript@4.1.0': - resolution: {integrity: sha512-YquhawCUgaBfhsS72e2Y/dI59gCBNPHu3fEO/tvLaXrTssxZrY5ddjtNLTwndrMgPo8b3IscE+xoICDzpTmlFQ==} + '@shikijs/engine-javascript@4.0.2': + resolution: {integrity: sha512-7PW0Nm49DcoUIQEXlJhNNBHyoGMjalRETTCcjMqEaMoJRLljy1Bi/EGV3/qLBgLKQejdspiiYuHGQW6dX94Nag==} engines: {node: '>=20'} - '@shikijs/engine-oniguruma@4.1.0': - resolution: {integrity: sha512-axLpjVs45YBvvINa+dJF+NPW+KtFkNXsFr4SDw2BMj9GdeMnGxVB9PQb2xXlJYovslt/nz6giedAyOANkfc7hg==} + '@shikijs/engine-oniguruma@4.0.2': + resolution: {integrity: sha512-UpCB9Y2sUKlS9z8juFSKz7ZtysmeXCgnRF0dlhXBkmQnek7lAToPte8DkxmEYGNTMii72zU/lyXiCB6StuZeJg==} engines: {node: '>=20'} - '@shikijs/langs@4.1.0': - resolution: {integrity: sha512-nwOMruEkbgdZfQ/b8CgpNBVOpvG1k0N5tbmgiFeqsan401+x3ILqlzZJowSla4Agmq4hG2Uf2wh5jLTEhR8VSg==} + '@shikijs/langs@4.0.2': + resolution: {integrity: sha512-KaXby5dvoeuZzN0rYQiPMjFoUrz4hgwIE+D6Du9owcHcl6/g16/yT5BQxSW5cGt2MZBz6Hl0YuRqf12omRfUUg==} engines: {node: '>=20'} - '@shikijs/primitive@4.1.0': - resolution: {integrity: sha512-zx2/2Uwj2q9X3KSyYREEhXO23xBw5WUhP4orK2lE4r+t9JGITmEe0JH+wPmJhqHpOT2bRRs6lAL945+LDvOAGw==} + '@shikijs/primitive@4.0.2': + resolution: {integrity: sha512-M6UMPrSa3fN5ayeJwFVl9qWofl273wtK1VG8ySDZ1mQBfhCpdd8nEx7nPZ/tk7k+TYcpqBZzj/AnwxT9lO+HJw==} engines: {node: '>=20'} - '@shikijs/themes@4.1.0': - resolution: {integrity: sha512-emCcTnUM7yO2wltYbaxm+yLvcCI4+h8XBKc4KmJ7EZUXoSGjcCHifkI//R4OFit9ewpg7H2/9tjOuXrT2v/Knw==} + '@shikijs/themes@4.0.2': + resolution: {integrity: sha512-mjCafwt8lJJaVSsQvNVrJumbnnj1RI8jbUKrPKgE6E3OvQKxnuRoBaYC51H4IGHePsGN/QtALglWBU7DoKDFnA==} engines: {node: '>=20'} - '@shikijs/types@4.1.0': - resolution: {integrity: sha512-3EQWX54fMpniOrDblzAhiwiJwpiTMW6+B9DWyUd9ska483tbayFYuw47UxwuPknI31bKnySfVQ/QW+jFL4rFdA==} + '@shikijs/types@4.0.2': + resolution: {integrity: sha512-qzbeRooUTPnLE+sHD/Z8DStmaDgnbbc/pMrU203950aRqjX/6AFHeDYT+j00y2lPdz0ywJKx7o/7qnqTivtlXg==} engines: {node: '>=20'} '@shikijs/vscode-textmate@10.0.2': @@ -645,6 +639,9 @@ packages: '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/estree@1.0.9': resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} @@ -666,8 +663,8 @@ packages: '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} - '@types/node@24.12.4': - resolution: {integrity: sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==} + '@types/node@24.12.2': + resolution: {integrity: sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==} '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} @@ -717,8 +714,8 @@ packages: peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta - astro@6.4.2: - resolution: {integrity: sha512-8H89CH2dKL5SCU99OCqdU9BGjmPkSJqaPurywj5XMo7eMFGUFD3vsNhdEKnEh4mK4LgGje3/QDTTSIIGst0G0Q==} + astro@6.3.0: + resolution: {integrity: sha512-yhDelVblNzQE4mjS0s27T9BZuAlfRCy+qHk6IlMgSr+ADG5QNpyPkroJAVCFRH08Nf2VhDM5dz6n4GWiTB9TlQ==} engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -842,8 +839,8 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - devalue@5.8.1: - resolution: {integrity: sha512-4CXDYRBGqN+57wVJkuXBYmpAVUSg3L6JAQa/DFqm238G73E1wuyc/JhGQJzN7vUf/CMphYau2zXbfWzDR5aTEw==} + devalue@5.8.0: + resolution: {integrity: sha512-2zA9pFEsnp7vWBZbXF5JAgAq0fsUIt/1XPbRiAmRV3lp/2C3upzH+sADiyy66aFCihoLEsrQHxNM5w1gIDfsBg==} devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -938,8 +935,8 @@ packages: fast-string-width@3.0.2: resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} - fast-wrap-ansi@0.2.2: - resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} + fast-wrap-ansi@0.2.0: + resolution: {integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==} fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} @@ -1048,8 +1045,8 @@ packages: http-cache-semantics@4.2.0: resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} - i18next@26.3.0: - resolution: {integrity: sha512-gHSgGpUXVmuqE2El1W61DmxeyeTlFfZgdJRWMo9jScAn5pu7TuTuiccb1zh3E2J9hEBVGJ23+96x0ieBhfuIHA==} + i18next@26.0.10: + resolution: {integrity: sha512-k3yGPAlWR2RdMYoVXJoDZDT87qeHIWKH7gVksdZMpRty7QX/D9QZeYGvN08KGbKHke9wn01eYT+EEsrqX/YTlw==} peerDependencies: typescript: ^5 || ^6 peerDependenciesMeta: @@ -1097,8 +1094,8 @@ packages: resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} engines: {node: '>=16'} - js-yaml@4.2.0: - resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true jsonc-parser@3.3.1: @@ -1111,15 +1108,15 @@ packages: longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - lru-cache@11.5.1: - resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==} + lru-cache@11.3.6: + resolution: {integrity: sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==} engines: {node: 20 || >=22} magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magicast@0.5.3: - resolution: {integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==} + magicast@0.5.2: + resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} @@ -1347,8 +1344,8 @@ packages: resolution: {integrity: sha512-7cIXg/Z0M5WZRblrsOla88S4wAK+zOQQWeBYfV3qJuJXMr+LnbYjaadrFaS0JILfEDPVqHyKnZ1Z/1d6J9VVUw==} engines: {node: '>=20'} - p-queue@9.3.0: - resolution: {integrity: sha512-7NED7xhQ74Ngp4JP/2e0VZHp7vSWfJfqeiR92jPgxsz6m0Se4P03YoTKa9dDXyZ3r6P616gUXttrB6nnHYKang==} + p-queue@9.2.0: + resolution: {integrity: sha512-dWgLE8AH0HjQ9fe74pUkKkvzzYT18Inp4zra3lKHnnwqGvcfcUBrvF2EAVX+envufDNBOzpPq/IBUONDbI7+3g==} engines: {node: '>=20'} p-timeout@7.0.1: @@ -1395,8 +1392,8 @@ packages: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} - postcss@8.5.15: - resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} + postcss@8.5.14: + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} prismjs@1.30.0: @@ -1494,8 +1491,8 @@ packages: retext@9.0.0: resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} - rollup@4.61.0: - resolution: {integrity: sha512-T9mWdbWfQtp0B5lv/HX+wrhYsmXRlcWnXXmJbXqKJhlRaoS6KMhq0gpyzW4UJfclcxrEdLnTgjT2NjruLONu0g==} + rollup@4.60.3: + resolution: {integrity: sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -1508,17 +1505,12 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.8.1: - resolution: {integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==} - engines: {node: '>=10'} - hasBin: true - sharp@0.34.5: resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - shiki@4.1.0: - resolution: {integrity: sha512-l/ABZPUR5v70jI10EzqfMS/I96vjSGv2y0ihUV+WYFzv0EfvW4s54m0Lg8wCrrL+2IkwBzFTuxkZjPf8b2NX9Q==} + shiki@4.0.2: + resolution: {integrity: sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ==} engines: {node: '>=20'} sisteransi@1.0.5: @@ -1564,16 +1556,16 @@ packages: tiny-inflate@1.0.3: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} - tinyclip@0.1.13: - resolution: {integrity: sha512-8OqlXQ35euK9+e7L68u8UwcODxkHoIkjbGsgXuARKNyQ5G6xt8nw1YPeMbxMLgCPFkToU+UEK5j05t2t8edKpQ==} + tinyclip@0.1.12: + resolution: {integrity: sha512-Ae3OVUqifDw0wBriIBS7yVaW44Dp6eSHQcyq4Igc7eN2TJH/2YsicswaW+J/OuMvhpDPOKEgpAZCjkb4hpoyeA==} engines: {node: ^16.14.0 || >= 17.3.0} - tinyexec@1.2.4: - resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} + tinyexec@1.1.2: + resolution: {integrity: sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==} engines: {node: '>=18'} - tinyglobby@0.2.17: - resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} trim-lines@3.0.1: @@ -1707,8 +1699,8 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite@7.3.5: - resolution: {integrity: sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww==} + vite@7.3.3: + resolution: {integrity: sha512-/4XH147Ui7OGTjg3HbdWe5arnZQSbfuRzdr9Ec7TQi5I7R+ir0Rlc9GIvD4v0XZurELqA035KVXJXpR61xhiTA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -1783,29 +1775,18 @@ snapshots: '@astrojs/compiler@4.0.0': {} - '@astrojs/internal-helpers@0.10.0': + '@astrojs/internal-helpers@0.9.0': dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - js-yaml: 4.2.0 picomatch: 4.0.4 - retext-smartypants: 6.2.0 - shiki: 4.1.0 - smol-toml: 1.6.1 - unified: 11.0.5 - '@astrojs/internal-helpers@0.9.1': + '@astrojs/markdown-remark@7.1.1': dependencies: - picomatch: 4.0.4 - - '@astrojs/markdown-remark@7.1.2': - dependencies: - '@astrojs/internal-helpers': 0.9.1 - '@astrojs/prism': 4.0.2 + '@astrojs/internal-helpers': 0.9.0 + '@astrojs/prism': 4.0.1 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 hast-util-to-text: 4.0.2 - js-yaml: 4.2.0 + js-yaml: 4.1.1 mdast-util-definitions: 6.0.0 rehype-raw: 7.0.0 rehype-stringify: 10.0.1 @@ -1814,7 +1795,7 @@ snapshots: remark-rehype: 11.1.2 remark-smartypants: 3.0.2 retext-smartypants: 6.2.0 - shiki: 4.1.0 + shiki: 4.0.2 smol-toml: 1.6.1 unified: 11.0.5 unist-util-remove-position: 5.0.0 @@ -1824,34 +1805,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/markdown-remark@7.2.0': + '@astrojs/mdx@5.0.4(astro@6.3.0(@types/node@24.12.2)(rollup@4.60.3))': dependencies: - '@astrojs/internal-helpers': 0.10.0 - '@astrojs/prism': 4.0.2 - github-slugger: 2.0.0 - hast-util-from-html: 2.0.3 - hast-util-to-text: 4.0.2 - mdast-util-definitions: 6.0.0 - rehype-raw: 7.0.0 - rehype-stringify: 10.0.1 - remark-gfm: 4.0.1 - remark-parse: 11.0.0 - remark-rehype: 11.1.2 - remark-smartypants: 3.0.2 - unified: 11.0.5 - unist-util-remove-position: 5.0.0 - unist-util-visit: 5.1.0 - unist-util-visit-parents: 6.0.2 - vfile: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@astrojs/mdx@5.0.6(astro@6.4.2(@types/node@24.12.4)(rollup@4.61.0))': - dependencies: - '@astrojs/markdown-remark': 7.1.2 + '@astrojs/markdown-remark': 7.1.1 '@mdx-js/mdx': 3.1.1 acorn: 8.16.0 - astro: 6.4.2(@types/node@24.12.4)(rollup@4.61.0) + astro: 6.3.0(@types/node@24.12.2)(rollup@4.60.3) es-module-lexer: 2.1.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -1865,34 +1824,34 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/prism@4.0.2': + '@astrojs/prism@4.0.1': dependencies: prismjs: 1.30.0 - '@astrojs/sitemap@3.7.3': + '@astrojs/sitemap@3.7.2': dependencies: sitemap: 9.0.1 stream-replace-string: 2.0.0 zod: 4.4.3 - '@astrojs/starlight@0.39.2(astro@6.4.2(@types/node@24.12.4)(rollup@4.61.0))': + '@astrojs/starlight@0.39.1(astro@6.3.0(@types/node@24.12.2)(rollup@4.60.3))': dependencies: - '@astrojs/markdown-remark': 7.2.0 - '@astrojs/mdx': 5.0.6(astro@6.4.2(@types/node@24.12.4)(rollup@4.61.0)) - '@astrojs/sitemap': 3.7.3 + '@astrojs/markdown-remark': 7.1.1 + '@astrojs/mdx': 5.0.4(astro@6.3.0(@types/node@24.12.2)(rollup@4.60.3)) + '@astrojs/sitemap': 3.7.2 '@pagefind/default-ui': 1.5.2 '@types/hast': 3.0.4 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 6.4.2(@types/node@24.12.4)(rollup@4.61.0) - astro-expressive-code: 0.42.0(astro@6.4.2(@types/node@24.12.4)(rollup@4.61.0)) + astro: 6.3.0(@types/node@24.12.2)(rollup@4.60.3) + astro-expressive-code: 0.42.0(astro@6.3.0(@types/node@24.12.2)(rollup@4.60.3)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 hast-util-to-string: 3.0.1 hastscript: 9.0.1 - i18next: 26.3.0 - js-yaml: 4.2.0 + i18next: 26.0.10 + js-yaml: 4.1.1 klona: 2.0.6 magic-string: 0.30.21 mdast-util-directive: 3.1.0 @@ -1918,33 +1877,33 @@ snapshots: is-wsl: 3.1.1 which-pm-runs: 1.1.0 - '@babel/helper-string-parser@7.29.7': {} + '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.29.7': {} + '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.29.7': + '@babel/parser@7.29.3': dependencies: - '@babel/types': 7.29.7 + '@babel/types': 7.29.0 - '@babel/types@7.29.7': + '@babel/types@7.29.0': dependencies: - '@babel/helper-string-parser': 7.29.7 - '@babel/helper-validator-identifier': 7.29.7 + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 '@capsizecss/unpack@4.0.0': dependencies: fontkitten: 1.0.3 - '@clack/core@1.4.0': + '@clack/core@1.3.0': dependencies: - fast-wrap-ansi: 0.2.2 + fast-wrap-ansi: 0.2.0 sisteransi: 1.0.5 - '@clack/prompts@1.5.0': + '@clack/prompts@1.3.0': dependencies: - '@clack/core': 1.4.0 + '@clack/core': 1.3.0 fast-string-width: 3.0.2 - fast-wrap-ansi: 0.2.2 + fast-wrap-ansi: 0.2.0 sisteransi: 1.0.5 '@ctrl/tinycolor@4.2.0': {} @@ -2039,8 +1998,8 @@ snapshots: hast-util-to-html: 9.0.5 hast-util-to-text: 4.0.2 hastscript: 9.0.1 - postcss: 8.5.15 - postcss-nested: 6.2.0(postcss@8.5.15) + postcss: 8.5.14 + postcss-nested: 6.2.0(postcss@8.5.14) unist-util-visit: 5.1.0 unist-util-visit-parents: 6.0.2 @@ -2051,7 +2010,7 @@ snapshots: '@expressive-code/plugin-shiki@0.42.0': dependencies: '@expressive-code/core': 0.42.0 - shiki: 4.1.0 + shiki: 4.0.2 '@expressive-code/plugin-text-markers@0.42.0': dependencies: @@ -2210,123 +2169,123 @@ snapshots: '@pagefind/windows-x64@1.5.2': optional: true - '@rollup/pluginutils@5.4.0(rollup@4.61.0)': + '@rollup/pluginutils@5.3.0(rollup@4.60.3)': dependencies: '@types/estree': 1.0.9 estree-walker: 2.0.2 picomatch: 4.0.4 optionalDependencies: - rollup: 4.61.0 + rollup: 4.60.3 - '@rollup/rollup-android-arm-eabi@4.61.0': + '@rollup/rollup-android-arm-eabi@4.60.3': optional: true - '@rollup/rollup-android-arm64@4.61.0': + '@rollup/rollup-android-arm64@4.60.3': optional: true - '@rollup/rollup-darwin-arm64@4.61.0': + '@rollup/rollup-darwin-arm64@4.60.3': optional: true - '@rollup/rollup-darwin-x64@4.61.0': + '@rollup/rollup-darwin-x64@4.60.3': optional: true - '@rollup/rollup-freebsd-arm64@4.61.0': + '@rollup/rollup-freebsd-arm64@4.60.3': optional: true - '@rollup/rollup-freebsd-x64@4.61.0': + '@rollup/rollup-freebsd-x64@4.60.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.61.0': + '@rollup/rollup-linux-arm-gnueabihf@4.60.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.61.0': + '@rollup/rollup-linux-arm-musleabihf@4.60.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.61.0': + '@rollup/rollup-linux-arm64-gnu@4.60.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.61.0': + '@rollup/rollup-linux-arm64-musl@4.60.3': optional: true - '@rollup/rollup-linux-loong64-gnu@4.61.0': + '@rollup/rollup-linux-loong64-gnu@4.60.3': optional: true - '@rollup/rollup-linux-loong64-musl@4.61.0': + '@rollup/rollup-linux-loong64-musl@4.60.3': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.61.0': + '@rollup/rollup-linux-ppc64-gnu@4.60.3': optional: true - '@rollup/rollup-linux-ppc64-musl@4.61.0': + '@rollup/rollup-linux-ppc64-musl@4.60.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.61.0': + '@rollup/rollup-linux-riscv64-gnu@4.60.3': optional: true - '@rollup/rollup-linux-riscv64-musl@4.61.0': + '@rollup/rollup-linux-riscv64-musl@4.60.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.61.0': + '@rollup/rollup-linux-s390x-gnu@4.60.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.61.0': + '@rollup/rollup-linux-x64-gnu@4.60.3': optional: true - '@rollup/rollup-linux-x64-musl@4.61.0': + '@rollup/rollup-linux-x64-musl@4.60.3': optional: true - '@rollup/rollup-openbsd-x64@4.61.0': + '@rollup/rollup-openbsd-x64@4.60.3': optional: true - '@rollup/rollup-openharmony-arm64@4.61.0': + '@rollup/rollup-openharmony-arm64@4.60.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.61.0': + '@rollup/rollup-win32-arm64-msvc@4.60.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.61.0': + '@rollup/rollup-win32-ia32-msvc@4.60.3': optional: true - '@rollup/rollup-win32-x64-gnu@4.61.0': + '@rollup/rollup-win32-x64-gnu@4.60.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.61.0': + '@rollup/rollup-win32-x64-msvc@4.60.3': optional: true - '@shikijs/core@4.1.0': + '@shikijs/core@4.0.2': dependencies: - '@shikijs/primitive': 4.1.0 - '@shikijs/types': 4.1.0 + '@shikijs/primitive': 4.0.2 + '@shikijs/types': 4.0.2 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@4.1.0': + '@shikijs/engine-javascript@4.0.2': dependencies: - '@shikijs/types': 4.1.0 + '@shikijs/types': 4.0.2 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.6 - '@shikijs/engine-oniguruma@4.1.0': + '@shikijs/engine-oniguruma@4.0.2': dependencies: - '@shikijs/types': 4.1.0 + '@shikijs/types': 4.0.2 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@4.1.0': + '@shikijs/langs@4.0.2': dependencies: - '@shikijs/types': 4.1.0 + '@shikijs/types': 4.0.2 - '@shikijs/primitive@4.1.0': + '@shikijs/primitive@4.0.2': dependencies: - '@shikijs/types': 4.1.0 + '@shikijs/types': 4.0.2 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - '@shikijs/themes@4.1.0': + '@shikijs/themes@4.0.2': dependencies: - '@shikijs/types': 4.1.0 + '@shikijs/types': 4.0.2 - '@shikijs/types@4.1.0': + '@shikijs/types@4.0.2': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -2341,6 +2300,8 @@ snapshots: dependencies: '@types/estree': 1.0.9 + '@types/estree@1.0.8': {} + '@types/estree@1.0.9': {} '@types/hast@3.0.4': @@ -2361,13 +2322,13 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/node@24.12.4': + '@types/node@24.12.2': dependencies: undici-types: 7.16.0 '@types/sax@1.2.7': dependencies: - '@types/node': 24.12.4 + '@types/node': 24.12.2 '@types/unist@2.0.11': {} @@ -2396,28 +2357,28 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.42.0(astro@6.4.2(@types/node@24.12.4)(rollup@4.61.0)): + astro-expressive-code@0.42.0(astro@6.3.0(@types/node@24.12.2)(rollup@4.60.3)): dependencies: - astro: 6.4.2(@types/node@24.12.4)(rollup@4.61.0) + astro: 6.3.0(@types/node@24.12.2)(rollup@4.60.3) rehype-expressive-code: 0.42.0 - astro@6.4.2(@types/node@24.12.4)(rollup@4.61.0): + astro@6.3.0(@types/node@24.12.2)(rollup@4.60.3): dependencies: '@astrojs/compiler': 4.0.0 - '@astrojs/internal-helpers': 0.10.0 - '@astrojs/markdown-remark': 7.2.0 + '@astrojs/internal-helpers': 0.9.0 + '@astrojs/markdown-remark': 7.1.1 '@astrojs/telemetry': 3.3.2 '@capsizecss/unpack': 4.0.0 - '@clack/prompts': 1.5.0 + '@clack/prompts': 1.3.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.4.0(rollup@4.61.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.3) aria-query: 5.3.2 axobject-query: 4.1.0 ci-info: 4.4.0 clsx: 2.1.1 common-ancestor-path: 2.0.0 cookie: 1.1.1 - devalue: 5.8.1 + devalue: 5.8.0 diff: 8.0.4 dset: 3.1.4 es-module-lexer: 2.1.0 @@ -2428,33 +2389,33 @@ snapshots: github-slugger: 2.0.0 html-escaper: 3.0.3 http-cache-semantics: 4.2.0 - js-yaml: 4.2.0 + js-yaml: 4.1.1 jsonc-parser: 3.3.1 magic-string: 0.30.21 - magicast: 0.5.3 + magicast: 0.5.2 mrmime: 2.0.1 neotraverse: 0.6.18 obug: 2.1.1 p-limit: 7.3.0 - p-queue: 9.3.0 + p-queue: 9.2.0 package-manager-detector: 1.6.0 piccolore: 0.1.3 picomatch: 4.0.4 rehype: 13.0.2 - semver: 7.8.1 - shiki: 4.1.0 + semver: 7.7.4 + shiki: 4.0.2 smol-toml: 1.6.1 svgo: 4.0.1 - tinyclip: 0.1.13 - tinyexec: 1.2.4 - tinyglobby: 0.2.17 + tinyclip: 0.1.12 + tinyexec: 1.1.2 + tinyglobby: 0.2.16 ultrahtml: 1.6.0 unifont: 0.7.4 unist-util-visit: 5.1.0 unstorage: 1.17.5 vfile: 6.0.3 - vite: 7.3.5(@types/node@24.12.4) - vitefu: 1.1.3(vite@7.3.5(@types/node@24.12.4)) + vite: 7.3.3(@types/node@24.12.2) + vitefu: 1.1.3(vite@7.3.3(@types/node@24.12.2)) xxhash-wasm: 1.1.0 yargs-parser: 22.0.0 zod: 4.4.3 @@ -2586,7 +2547,7 @@ snapshots: detect-libc@2.1.2: {} - devalue@5.8.1: {} + devalue@5.8.0: {} devlop@1.1.0: dependencies: @@ -2719,7 +2680,7 @@ snapshots: dependencies: fast-string-truncated-width: 3.0.3 - fast-wrap-ansi@0.2.2: + fast-wrap-ansi@0.2.0: dependencies: fast-string-width: 3.0.2 @@ -2955,7 +2916,7 @@ snapshots: http-cache-semantics@4.2.0: {} - i18next@26.3.0: {} + i18next@26.0.10: {} inline-style-parser@0.2.7: {} @@ -2986,7 +2947,7 @@ snapshots: dependencies: is-inside-container: 1.0.0 - js-yaml@4.2.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -2996,16 +2957,16 @@ snapshots: longest-streak@3.1.0: {} - lru-cache@11.5.1: {} + lru-cache@11.3.6: {} magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - magicast@0.5.3: + magicast@0.5.2: dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 source-map-js: 1.2.1 markdown-extensions@2.0.0: {} @@ -3517,7 +3478,7 @@ snapshots: dependencies: yocto-queue: 1.2.2 - p-queue@9.3.0: + p-queue@9.2.0: dependencies: eventemitter3: 5.0.4 p-timeout: 7.0.1 @@ -3567,9 +3528,9 @@ snapshots: picomatch@4.0.4: {} - postcss-nested@6.2.0(postcss@8.5.15): + postcss-nested@6.2.0(postcss@8.5.14): dependencies: - postcss: 8.5.15 + postcss: 8.5.14 postcss-selector-parser: 6.1.2 postcss-selector-parser@6.1.2: @@ -3577,7 +3538,7 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss@8.5.15: + postcss@8.5.14: dependencies: nanoid: 3.3.12 picocolors: 1.1.1 @@ -3756,43 +3717,41 @@ snapshots: retext-stringify: 4.0.0 unified: 11.0.5 - rollup@4.61.0: + rollup@4.60.3: dependencies: - '@types/estree': 1.0.9 + '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.61.0 - '@rollup/rollup-android-arm64': 4.61.0 - '@rollup/rollup-darwin-arm64': 4.61.0 - '@rollup/rollup-darwin-x64': 4.61.0 - '@rollup/rollup-freebsd-arm64': 4.61.0 - '@rollup/rollup-freebsd-x64': 4.61.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.61.0 - '@rollup/rollup-linux-arm-musleabihf': 4.61.0 - '@rollup/rollup-linux-arm64-gnu': 4.61.0 - '@rollup/rollup-linux-arm64-musl': 4.61.0 - '@rollup/rollup-linux-loong64-gnu': 4.61.0 - '@rollup/rollup-linux-loong64-musl': 4.61.0 - '@rollup/rollup-linux-ppc64-gnu': 4.61.0 - '@rollup/rollup-linux-ppc64-musl': 4.61.0 - '@rollup/rollup-linux-riscv64-gnu': 4.61.0 - '@rollup/rollup-linux-riscv64-musl': 4.61.0 - '@rollup/rollup-linux-s390x-gnu': 4.61.0 - '@rollup/rollup-linux-x64-gnu': 4.61.0 - '@rollup/rollup-linux-x64-musl': 4.61.0 - '@rollup/rollup-openbsd-x64': 4.61.0 - '@rollup/rollup-openharmony-arm64': 4.61.0 - '@rollup/rollup-win32-arm64-msvc': 4.61.0 - '@rollup/rollup-win32-ia32-msvc': 4.61.0 - '@rollup/rollup-win32-x64-gnu': 4.61.0 - '@rollup/rollup-win32-x64-msvc': 4.61.0 + '@rollup/rollup-android-arm-eabi': 4.60.3 + '@rollup/rollup-android-arm64': 4.60.3 + '@rollup/rollup-darwin-arm64': 4.60.3 + '@rollup/rollup-darwin-x64': 4.60.3 + '@rollup/rollup-freebsd-arm64': 4.60.3 + '@rollup/rollup-freebsd-x64': 4.60.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.3 + '@rollup/rollup-linux-arm-musleabihf': 4.60.3 + '@rollup/rollup-linux-arm64-gnu': 4.60.3 + '@rollup/rollup-linux-arm64-musl': 4.60.3 + '@rollup/rollup-linux-loong64-gnu': 4.60.3 + '@rollup/rollup-linux-loong64-musl': 4.60.3 + '@rollup/rollup-linux-ppc64-gnu': 4.60.3 + '@rollup/rollup-linux-ppc64-musl': 4.60.3 + '@rollup/rollup-linux-riscv64-gnu': 4.60.3 + '@rollup/rollup-linux-riscv64-musl': 4.60.3 + '@rollup/rollup-linux-s390x-gnu': 4.60.3 + '@rollup/rollup-linux-x64-gnu': 4.60.3 + '@rollup/rollup-linux-x64-musl': 4.60.3 + '@rollup/rollup-openbsd-x64': 4.60.3 + '@rollup/rollup-openharmony-arm64': 4.60.3 + '@rollup/rollup-win32-arm64-msvc': 4.60.3 + '@rollup/rollup-win32-ia32-msvc': 4.60.3 + '@rollup/rollup-win32-x64-gnu': 4.60.3 + '@rollup/rollup-win32-x64-msvc': 4.60.3 fsevents: 2.3.3 sax@1.6.0: {} semver@7.7.4: {} - semver@7.8.1: {} - sharp@0.34.5: dependencies: '@img/colour': 1.1.0 @@ -3824,14 +3783,14 @@ snapshots: '@img/sharp-win32-ia32': 0.34.5 '@img/sharp-win32-x64': 0.34.5 - shiki@4.1.0: + shiki@4.0.2: dependencies: - '@shikijs/core': 4.1.0 - '@shikijs/engine-javascript': 4.1.0 - '@shikijs/engine-oniguruma': 4.1.0 - '@shikijs/langs': 4.1.0 - '@shikijs/themes': 4.1.0 - '@shikijs/types': 4.1.0 + '@shikijs/core': 4.0.2 + '@shikijs/engine-javascript': 4.0.2 + '@shikijs/engine-oniguruma': 4.0.2 + '@shikijs/langs': 4.0.2 + '@shikijs/themes': 4.0.2 + '@shikijs/types': 4.0.2 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -3839,7 +3798,7 @@ snapshots: sitemap@9.0.1: dependencies: - '@types/node': 24.12.4 + '@types/node': 24.12.2 '@types/sax': 1.2.7 arg: 5.0.2 sax: 1.6.0 @@ -3879,11 +3838,11 @@ snapshots: tiny-inflate@1.0.3: {} - tinyclip@0.1.13: {} + tinyclip@0.1.12: {} - tinyexec@1.2.4: {} + tinyexec@1.1.2: {} - tinyglobby@0.2.17: + tinyglobby@0.2.16: dependencies: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 @@ -3971,7 +3930,7 @@ snapshots: chokidar: 5.0.0 destr: 2.0.5 h3: 1.15.11 - lru-cache: 11.5.1 + lru-cache: 11.3.6 node-fetch-native: 1.6.7 ofetch: 1.5.1 ufo: 1.6.4 @@ -3993,21 +3952,21 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@7.3.5(@types/node@24.12.4): + vite@7.3.3(@types/node@24.12.2): dependencies: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - postcss: 8.5.15 - rollup: 4.61.0 - tinyglobby: 0.2.17 + postcss: 8.5.14 + rollup: 4.60.3 + tinyglobby: 0.2.16 optionalDependencies: - '@types/node': 24.12.4 + '@types/node': 24.12.2 fsevents: 2.3.3 - vitefu@1.1.3(vite@7.3.5(@types/node@24.12.4)): + vitefu@1.1.3(vite@7.3.3(@types/node@24.12.2)): optionalDependencies: - vite: 7.3.5(@types/node@24.12.4) + vite: 7.3.3(@types/node@24.12.2) web-namespaces@2.0.1: {} diff --git a/src/content/docs/commands/audit.mdx b/src/content/docs/commands/audit.mdx index cd820a5..307756d 100644 --- a/src/content/docs/commands/audit.mdx +++ b/src/content/docs/commands/audit.mdx @@ -1,28 +1,28 @@ --- -title: /gaia audit +title: /gaia-audit description: Audit memory, rules, and wiki for duplication, stale entries, and over-budget autoloads. --- -`/gaia audit` reviews the project's knowledge stores (machine-local memory, project rules, wiki, autoloaded `CLAUDE.md` files) for duplication, stale entries, and bloated base context noise. It runs in two stages: a research stage produces a report, then an apply stage executes the report mechanically. +`/gaia-audit` reviews the project's knowledge stores (machine-local memory, project rules, wiki, autoloaded `CLAUDE.md` files) for duplication, stale entries, and bloated base context noise. It runs in two stages: a research stage produces a report, then an apply stage executes the report mechanically. The wiki is the source of truth. Memory is machine-local only. Autoloaded files carry a token cost on every session, so the audit pushes detail behind lazy wikilinks and keeps the autoloaded surface as a pointer set. ## When to use it -Run `/gaia audit` periodically: after a stretch of work, or when your base context size feels too large. +Run `/gaia-audit` periodically: after a stretch of work, or when your base context size feels too large. ## How to invoke Default. Research, then apply: ``` -/gaia audit +/gaia-audit ``` Apply only. Re-execute the most recent report: ``` -/gaia audit --apply +/gaia-audit --apply ``` Use `--apply` when an earlier run produced a report but drift caused some actions to skip; fix the drift, then re-apply. Reports older than 24 hours are refused. Generate a fresh one in that case. @@ -64,7 +64,7 @@ Anything over budget is flagged with a proposed fix: inline facts moved to the w **Stage 2: apply (Haiku).** Reads the most recent report. Re-resolves project root, memory dir, and agent memory dir; if they differ from the report's frontmatter, stops with a clear error. Verifies each action's drift signal: SHA-256 of the target file, or a verbatim snippet that must appear in current content. Applies the action verbatim, or skips with a recorded reason. Never improvises. -The split exists for technical reasons (different reasoning loads, drift-check between stages), not as a user-confirmation gate. Calling `/gaia audit` is the intent to apply. +The split exists for technical reasons (different reasoning loads, drift-check between stages), not as a user-confirmation gate. Calling `/gaia-audit` is the intent to apply. ## Action types @@ -96,6 +96,6 @@ The skill prunes its own report directory: keeps the newest five reports uncondi ## Related -`/gaia audit` is distinct from the `code-review-audit` agent. The agent reviews code changes on a branch before merge for security, performance, and correctness. `/gaia audit` reviews knowledge stores for duplication and bloat. Different inputs, different outputs, different purposes. +`/gaia-audit` is distinct from the `code-review-audit` agent. The agent reviews code changes on a branch before merge for security, performance, and correctness. `/gaia-audit` reviews knowledge stores for duplication and bloat. Different inputs, different outputs, different purposes. -For wiki-internal redundancy (multiple wiki pages saying the same thing) and broken wikilinks, use `/gaia wiki`. +For wiki-internal redundancy (multiple wiki pages saying the same thing) and broken wikilinks, use `/gaia-wiki`. diff --git a/src/content/docs/commands/fitness.mdx b/src/content/docs/commands/fitness.mdx index 2d5e764..b869797 100644 --- a/src/content/docs/commands/fitness.mdx +++ b/src/content/docs/commands/fitness.mdx @@ -1,22 +1,22 @@ --- -title: /gaia fitness +title: /gaia-fitness description: Health check and auto-heal for your project's Claude integration. Triage, heal, verify, with a letter grade. --- -`/gaia fitness` checks the health of your project's Claude integration and repairs what it safely can. One invocation, no flags: calling `/gaia fitness` is the statement of intent to be fit. It runs three phases in sequence: triage, heal, verify, and reports a per-category and overall grade from F up to A+. +`/gaia-fitness` checks the health of your project's Claude integration and repairs what it safely can. One invocation, no flags: calling `/gaia-fitness` is the statement of intent to be fit. It runs three phases in sequence: triage, heal, verify, and reports a per-category and overall grade from F up to A+. -It checks the Claude *surface* (hooks, skill/command/agent frontmatter, rule files, `CLAUDE.md`, `.claude/settings.json`, GAIA itself, and wiki structure), not your application code. For app code review before merge, use the `code-review-audit` agent. For knowledge-store bloat and duplication, use [`/gaia audit`](/commands/audit/). +It checks the Claude *surface* (hooks, skill/command/agent frontmatter, rule files, `CLAUDE.md`, `.claude/settings.json`, GAIA itself, and wiki structure), not your application code. For app code review before merge, use the `code-review-audit` agent. For knowledge-store bloat and duplication, use [`/gaia-audit`](/commands/audit/). ## When to use it -Run `/gaia fitness` after editing under `.claude/`, such as modifying or adding new commands, skills, agents, hooks, etc. +Run `/gaia-fitness` after editing under `.claude/`, such as modifying or adding new commands, skills, agents, hooks, etc. You can also call it after pulling a GAIA update with [`/update-gaia`](/commands/update-gaia/) if you made any customizations to GAIA, or periodically as a routine check. ## How to invoke ``` -/gaia fitness +/gaia-fitness ``` No flags. No arguments. @@ -35,7 +35,7 @@ Triage dispatches seven category checks in parallel. Each produces a set of find | GAIA-install fitness | Whether the GAIA install is intact and consistent. | | Wiki fitness | Wiki structure: state file, manifest, orphans, dead repo-relative paths. | -The checks are recall-oriented and over-flag on purpose. Before grading, `/gaia fitness` adjudicates each finding against the actual repo and drops the false positives (an unfamiliar-but-valid hook event, a permission pair that only looks redundant, and so on). What survives gets graded. +The checks are recall-oriented and over-flag on purpose. Before grading, `/gaia-fitness` adjudicates each finding against the actual repo and drops the false positives (an unfamiliar-but-valid hook event, a permission pair that only looks redundant, and so on). What survives gets graded. ## Grading @@ -62,17 +62,17 @@ An `A` should be considered a clean bill of health. Where the fixes land depends on which branch you are on when you run it: -- **On the default branch** (`main`), with at least one fixable finding: `/gaia fitness` creates and switches to a new branch named `chore/gaia-fitness-` before applying anything, so `main` stays untouched. +- **On the default branch** (`main`), with at least one fixable finding: `/gaia-fitness` creates and switches to a new branch named `chore/gaia-fitness-` before applying anything, so `main` stays untouched. - **On any other branch**, with at least one fixable finding: it heals in place on your current branch. - **No fixable findings** (including a clean A+ run): no branch is created, `HEAD` stays put, nothing changes. ## Unsafe repo state -Before any heal-phase change, `/gaia fitness` checks whether the repo is safe to mutate. If `HEAD` is detached, or a rebase, merge, cherry-pick, or bisect is in progress, it switches to a triage-only path: it runs the checks, prints the grades, tells you heal was skipped and why, gives the resolution steps (for example, `git rebase --abort` or `git checkout `), and stops. No working-tree change, no branch. +Before any heal-phase change, `/gaia-fitness` checks whether the repo is safe to mutate. If `HEAD` is detached, or a rebase, merge, cherry-pick, or bisect is in progress, it switches to a triage-only path: it runs the checks, prints the grades, tells you heal was skipped and why, gives the resolution steps (for example, `git rebase --abort` or `git checkout `), and stops. No working-tree change, no branch. ## After the run -`/gaia fitness` prints a findings list grouped by the seven categories, one line per finding: +`/gaia-fitness` prints a findings list grouped by the seven categories, one line per finding: ``` - [severity] `file:line` — remediation @@ -84,9 +84,9 @@ Then, depending on what happened: - **A branch was created.** Review with `git diff main`, commit when satisfied, or discard with `git checkout main && git branch -D chore/gaia-fitness-`. - **Healed in place.** Review with `git diff`, commit when satisfied, or discard with `git checkout -- .`. -- **Triage-only.** Re-run `/gaia fitness` after you have resolved the unsafe state. +- **Triage-only.** Re-run `/gaia-fitness` after you have resolved the unsafe state. - **Zero findings.** Nothing to do. ## Related -`/gaia fitness` checks the Claude integration surface. For knowledge-store duplication and autoload budgets, use [`/gaia audit`](/commands/audit/). For wiki-internal redundancy and broken wikilinks, use [`/gaia wiki`](/commands/wiki/). For your application code on a branch before merge, use the [`code-review-audit` agent](/reference/agents/). +`/gaia-fitness` checks the Claude integration surface. For knowledge-store duplication and autoload budgets, use [`/gaia-audit`](/commands/audit/). For wiki-internal redundancy and broken wikilinks, use [`/gaia-wiki`](/commands/wiki/). For your application code on a branch before merge, use the [`code-review-audit` agent](/reference/agents/). diff --git a/src/content/docs/commands/forensics.mdx b/src/content/docs/commands/forensics.mdx index 86f5a7b..4b9e9dd 100644 --- a/src/content/docs/commands/forensics.mdx +++ b/src/content/docs/commands/forensics.mdx @@ -1,5 +1,5 @@ --- -title: /gaia forensics +title: /gaia-forensics description: Turn a GAIA workflow misfire into a redacted, classified bug report ready to file. sidebar: order: 6 @@ -7,7 +7,7 @@ sidebar: import { Aside } from '@astrojs/starlight/components'; -`/gaia forensics` turns a GAIA workflow misfire (a failed `/gaia xxx` command, a stuck `/update-gaia`, a quality-gate refusal, an unexpected hook block) into a structured, redacted bug report. Read-only end-to-end: it inspects state, never modifies, installs, or remediates. +`/gaia-forensics` turns a GAIA workflow misfire (a failed `/gaia-*` command, a stuck `/update-gaia`, a quality-gate refusal, an unexpected hook block) into a structured, redacted bug report. Read-only end-to-end: it inspects state, never modifies, installs, or remediates. ## When to use it @@ -23,7 +23,7 @@ If the failure is in your own application code, **this is the wrong tool**. Fore ## Invocation ``` -/gaia forensics [optional one-line description] +/gaia-forensics [optional one-line description] ``` With an argument, the description is used verbatim. Without an argument, forensics asks one open-ended clarifying question (`What went wrong? Describe what you were doing, what you expected, and what happened.`) and waits for your reply. @@ -91,7 +91,7 @@ These four rules are non-negotiable. They apply to every code path. ## Example flow ``` -> /gaia forensics quality-gate refused to merge after I bumped a package +> /gaia-forensics quality-gate refused to merge after I bumped a package ``` Forensics captures state, classifies as `quality-gate`, reads the relevant state files, redacts the body, writes the report: diff --git a/src/content/docs/commands/handoff-pickup.mdx b/src/content/docs/commands/handoff-pickup.mdx index cfb6f65..353ee2d 100644 --- a/src/content/docs/commands/handoff-pickup.mdx +++ b/src/content/docs/commands/handoff-pickup.mdx @@ -1,5 +1,5 @@ --- -title: /gaia handoff and /gaia pickup +title: /gaia-handoff and /gaia-pickup description: Pause a session and resume cold without re-reading the conversation. sidebar: order: 5 @@ -9,23 +9,25 @@ import { Aside } from '@astrojs/starlight/components'; | Command | What it does | | --- | --- | -| `/gaia handoff` | Writes a self-contained handoff document so you can clear context. | -| `/gaia pickup` | Reads the most recent handoff and reconstitutes context. | +| `/gaia-handoff` | Writes a self-contained handoff document so you can clear context. | +| `/gaia-pickup` | Reads the most recent handoff and reconstitutes context. | ## When to use them -Run `/gaia handoff` when your context starts getting "heavy". A good rule of thumb is: +Run `/gaia-handoff` when your context starts getting "heavy". A good rule of thumb is: - **Opus 1M** - 20-25% - **Sonnet/Haiku** - 40-60% Then `/clear` (or exit Claude and restart). -Then call `/gaia pickup` in the fresh session to continue. +Then call `/gaia-pickup` in the fresh session to continue. -## /gaia handoff +Both are skills, so they also run on plain-English asks like "write a handoff" or "pick up where we left off", not just the slash form. + +## /gaia-handoff ``` -/gaia handoff [optional inline notes] +/gaia-handoff [optional inline notes] ``` Pulls from three sources: @@ -53,10 +55,10 @@ Sections present only when there is real content. Empty sections are dropped, no - **Reference files**: `@path` cross-references so the next session can jump straight in. - **Next actions**: table of concrete, testable steps with rough effort estimates. -## /gaia pickup +## /gaia-pickup ``` -/gaia pickup +/gaia-pickup ``` No arguments. Pickup runs through four steps: @@ -79,13 +81,13 @@ If the handoff says branch `feat/auth` at commit `abc1234`, and current state is End of session: ``` -> /gaia handoff coach voice prompts still need fixture audit +> /gaia-handoff coach voice prompts still need fixture audit ``` Fresh session: ``` -> /gaia pickup +> /gaia-pickup ``` Pickup reports: diff --git a/src/content/docs/commands/index.mdx b/src/content/docs/commands/index.mdx index 0944504..9673a34 100644 --- a/src/content/docs/commands/index.mdx +++ b/src/content/docs/commands/index.mdx @@ -1,30 +1,28 @@ --- title: Commands -description: Sub-routes available under /gaia for day-to-day GAIA workflows. +description: GAIA's day-to-day workflows, each a discrete /gaia-* slash command or skill. sidebar: order: 1 --- -`/gaia` is the entry point for GAIA's day-to-day workflows. It is technically a Claude skill router, but in practice it works like a command. - -It's located in `.claude/skills/gaia/SKILL.md`. +GAIA's day-to-day workflows are discrete slash entries that show up in autocomplete as you type `/gaia-`. Five are commands (`/gaia-plan`, `/gaia-spec`, `/gaia-audit`, `/gaia-fitness`, `/gaia-forensics`). Three are skills (`/gaia-wiki`, `/gaia-handoff`, `/gaia-pickup`) that also respond to plain-English requests, not just the slash form. ## Workflow Commands | Command | What it does | | --- | --- | -| [`/gaia spec`](/commands/spec/) | Run a Q&A to write and refine specifications. | -| [`/gaia plan`](/commands/plan/) | Plan known features. | -| [`/gaia handoff`](/commands/handoff-pickup/) | Generate a session handoff document so context can transfer to a fresh session. | -| [`/gaia pickup`](/commands/handoff-pickup/) | Restore context from the most recent handoff. | +| [`/gaia-spec`](/commands/spec/) | Run a Q&A to write and refine specifications. | +| [`/gaia-plan`](/commands/plan/) | Plan known features. | +| [`/gaia-handoff`](/commands/handoff-pickup/) | Generate a session handoff document so context can transfer to a fresh session. | +| [`/gaia-pickup`](/commands/handoff-pickup/) | Restore context from the most recent handoff. | ## Maintenance Commands | Command | What it does | | --- | --- | -| [`/gaia audit`](/commands/audit/) | Audit memory, rules, and wiki for duplication, stale entries, and unnecessary base context overhead. | -| [`/gaia fitness`](/commands/fitness/) | Health check and auto-heal for the Claude integration surface. Triage, heal, verify, with a letter grade. | -| [`/gaia wiki`](/commands/wiki/) | Wiki maintenance. With no arguments, runs the full chain. Each can also be invoked individually. | +| [`/gaia-audit`](/commands/audit/) | Audit memory, rules, and wiki for duplication, stale entries, and unnecessary base context overhead. | +| [`/gaia-fitness`](/commands/fitness/) | Health check and auto-heal for the Claude integration surface. Triage, heal, verify, with a letter grade. | +| [`/gaia-wiki`](/commands/wiki/) | Wiki maintenance. With no arguments, runs the full chain. Each can also be invoked individually. | ## Update Commands @@ -37,8 +35,8 @@ It's located in `.claude/skills/gaia/SKILL.md`. | Command | What it does | | --- | --- | -| [`/gaia forensics`](/commands/forensics/) | If you encounter any issues with GAIA commands, this will triage the issue and submit a bug report. | +| [`/gaia-forensics`](/commands/forensics/) | If you encounter any issues with GAIA commands, this will triage the issue and submit a bug report. | -## Help message +## No-argument behavior -Invoking `/gaia` with no argument (or with an unrecognized one) prints a help message. \ No newline at end of file +Each entry has a sensible default when called with no arguments. `/gaia-wiki` runs the full chain (sync, consolidate, lint). `/gaia-audit` runs research then apply. `/gaia-plan`, `/gaia-spec`, and `/gaia-forensics` prompt for or infer what they need before continuing. diff --git a/src/content/docs/commands/plan.mdx b/src/content/docs/commands/plan.mdx index cc5e25d..b753a5a 100644 --- a/src/content/docs/commands/plan.mdx +++ b/src/content/docs/commands/plan.mdx @@ -1,35 +1,35 @@ --- -title: /gaia plan +title: /gaia-plan description: Plan a feature using task orchestration. Produces a plan directory and a kickoff prompt for a fresh orchestrator session. --- -Plan a complex feature by decomposing it into parallel workstreams with frozen interface contracts. `/gaia plan` does not implement anything. It produces a plan directory, then hands you a single copy-paste prompt to launch a fresh orchestrator session that executes the plan. +Plan a complex feature by decomposing it into parallel workstreams with frozen interface contracts. `/gaia-plan` does not implement anything. It produces a plan directory, then hands you a single copy-paste prompt to launch a fresh orchestrator session that executes the plan. ## When to use it -Reach for `/gaia plan` when the work spans multiple files or modules, has identifiable parallel slices (UI plus service layer plus tests, or backend plus frontend plus migration), or benefits from isolating each slice in its own subagent context. +Reach for `/gaia-plan` when the work spans multiple files or modules, has identifiable parallel slices (UI plus service layer plus tests, or backend plus frontend plus migration), or benefits from isolating each slice in its own subagent context. For one-line bug fixes or single-file edits, skip the planning ceremony and just edit. -For feature work that has not been clarified yet, run [`/gaia spec`](/commands/spec/) first. It chains into `/gaia plan` after save. +For feature work that has not been clarified yet, run [`/gaia-spec`](/commands/spec/) first. It chains into `/gaia-plan` after save. ## How to invoke ``` -/gaia plan a feature description in plain English +/gaia-plan a feature description in plain English ``` -Or, with a SPEC reference (typically passed automatically by `/gaia spec`): +Or, with a SPEC reference (typically passed automatically by `/gaia-spec`): ``` -/gaia plan SPEC-005: rework auth, see .gaia/local/specs/SPEC-005.md +/gaia-plan SPEC-005: rework auth, see .gaia/local/specs/SPEC-005.md ``` -If you invoke `/gaia plan` with no description, it asks for one before continuing. +If you invoke `/gaia-plan` with no description, it asks for one before continuing. ## What gets produced -`/gaia plan` writes a plan directory at: +`/gaia-plan` writes a plan directory at: ``` .gaia/local/plans// @@ -100,4 +100,4 @@ If the orchestrator was itself dispatched into an isolated subagent context, it ## Related -- [`/gaia spec`](/commands/spec/) is the upstream of `/gaia plan`. The chain-trigger after spec save dispatches `/gaia plan` automatically when accepted. +- [`/gaia-spec`](/commands/spec/) is the upstream of `/gaia-plan`. The chain-trigger after spec save dispatches `/gaia-plan` automatically when accepted. diff --git a/src/content/docs/commands/spec.mdx b/src/content/docs/commands/spec.mdx index 23550a0..8a66b52 100644 --- a/src/content/docs/commands/spec.mdx +++ b/src/content/docs/commands/spec.mdx @@ -1,9 +1,9 @@ --- -title: /gaia spec +title: /gaia-spec description: Run a Socratic discovery loop and save an immutable SPEC artifact. --- -`/gaia spec` produces an immutable SPEC artifact through a guided Socratic conversation. The artifact lands at `.gaia/local/specs/SPEC-NNN.md` and serves as the contract for [`/gaia plan`](/commands/plan/) to decompose into work. The skill produces an artifact and stops. It does not implement anything. +`/gaia-spec` produces an immutable SPEC artifact through a guided Socratic conversation. The artifact lands at `.gaia/local/specs/SPEC-NNN.md` and serves as the contract for [`/gaia-plan`](/commands/plan/) to decompose into work. The skill produces an artifact and stops. It does not implement anything. This is for when you want to implement a large feature or change request with multiple parts, or you want to present an idea or concept and refine it before implementation. @@ -11,9 +11,9 @@ The flow runs on top of [spec-kit](https://github.com/github/spec-kit), with GAI ## When to use it -Run `/gaia spec` for any feature where the boundaries are not yet clear. It is the right entry point when the description has more questions than answers, or when multiple readings of the same prompt produce different intents. +Run `/gaia-spec` for any feature where the boundaries are not yet clear. It is the right entry point when the description has more questions than answers, or when multiple readings of the same prompt produce different intents. -For changes whose intent is already obvious (a bug fix, a refactor against a known interface, a copy edit), skip directly to [`/gaia plan`](/commands/plan/). +For changes whose intent is already obvious (a bug fix, a refactor against a known interface, a copy edit), skip directly to [`/gaia-plan`](/commands/plan/). ## How to invoke @@ -22,7 +22,7 @@ For changes whose intent is already obvious (a bug fix, a refactor against a kno In interactive mode, the agent asks the user a series of questions to clarify the intent. ``` -/gaia spec your feature description +/gaia-spec your feature description ``` ### Auto mode @@ -30,7 +30,7 @@ In interactive mode, the agent asks the user a series of questions to clarify th In auto mode, the agent answers its own questions without user input. If you find that you are consistently picking the recommended option in interactive mode, or if the description is already well-formed or you just want to see what the agent produces, auto mode is a good choice. ``` -/gaia spec auto your feature description +/gaia-spec auto your feature description ``` A description is required in auto mode. Without one, the skill aborts immediately. @@ -53,7 +53,7 @@ A handful of mechanics are used by multiple steps: - **Per-topic revisit counter.** Tracks how many times the user has chosen "push deeper" on a given topic. On the third revisit, the prompt swaps to settle, defer, or push deeper anyway. Prevents one topic from consuming the whole session. - **Five-question cap.** Spec-kit's `/clarify` primitive caps the loop at five total questions per session. The wrapper inherits this cap and never invokes `/clarify` twice to extend it. - **Discuss-this escape.** Any closed-set question can drop into a plain Q&A discussion. On settlement, the outcome folds into `clarifications.answered[]` and the structured loop resumes on the next topic. -- **Save partial and resume later.** Every closed-set question offers this escape. It writes the draft cache and exits. Re-invoking `/gaia spec` resumes from the right step. +- **Save partial and resume later.** Every closed-set question offers this escape. It writes the draft cache and exits. Re-invoking `/gaia-spec` resumes from the right step. ## The flow @@ -67,11 +67,11 @@ A handful of mechanics are used by multiple steps: 8. **Gate 2.** Plain prompt: confirm the full rendered artifact, or revise. 9. **Canonical save.** Writes `.gaia/local/specs/SPEC-NNN.md` and deletes the working-draft cache. The `after_specify` hook fires `/speckit-gaia-lint` for immutability checks. Cycles 1 and 2 surface failures; cycle 3 prompts to step back to gate 2, defer remaining findings, or push another fix. 10. **Optional GitHub issue mirror.** If opted in at step 2, `gh-mirror.sh` creates the issue and stamps the URL into frontmatter. Skips silently when `gh` is not authenticated, Issues are disabled, or the viewer lacks write permission. -11. **Chain to `/gaia plan`.** `AskUserQuestion`: trigger `/gaia plan` now or defer. On yes, the skill enters a multi-plan dispatch loop. Each plan runs in its own `general-purpose` Agent so the wrapper context stays bounded across plan count. +11. **Chain to `/gaia-plan`.** `AskUserQuestion`: trigger `/gaia-plan` now or defer. On yes, the skill enters a multi-plan dispatch loop. Each plan runs in its own `general-purpose` Agent so the wrapper context stays bounded across plan count. ## Auto mode -`/gaia spec auto ` produces a SPEC end-to-end without prompts: +`/gaia-spec auto ` produces a SPEC end-to-end without prompts: - Both gates auto-confirm via internal self-check. - Closed-set Socratic questions auto-pick the recommended option. @@ -79,7 +79,7 @@ A handful of mechanics are used by multiple steps: - Per-topic exhaustion auto-advances; the third-revisit prompt auto-settles. - Pending clarifications auto-defer with a static auto-mode rationale. - The GitHub issue mirror is forced on. -- The chain to `/gaia plan` is automatic and produces exactly one plan covering the full SPEC. +- The chain to `/gaia-plan` is automatic and produces exactly one plan covering the full SPEC. Use auto mode when the description is well-formed and the cost of stopping for clarifications outweighs the cost of a reviewer auditing the deferred items afterward. @@ -102,8 +102,8 @@ Five GAIA hooks fire across the SPEC lifecycle. Never invoke them by hand. | `before_implement` | `/speckit-gaia-uat-write` | Renders frozen UATs into Playwright e2e specs at `.playwright/e2e//`, leaving a red-state harness before implementation begins. | | `after_implement` | `/speckit-gaia-wiki-promote` | Promotes merged-PR content into the project wiki under `wiki//`. Defers if the implementing PR has not merged yet. | -The chain-trigger to `/gaia plan` lives inline at step 11 of the flow, not as a hook. Disposition of the SPEC artifact (archive, delete, keep) happens through `/gaia spec close ` after the implementing PR merges. +The chain-trigger to `/gaia-plan` lives inline at step 11 of the flow, not as a hook. Disposition of the SPEC artifact (archive, delete, or keep) happens through `/speckit-gaia-spec-close` after the implementing PR merges. It auto-fires from the `after_implement` wiki-promote step on the immediate-merge path, and is also invokable manually as `/gaia-spec close ` for the deferred path or retroactive cleanup. ## Related -After save, [`/gaia plan`](/commands/plan/) is the natural next step. The chain-trigger at step 11 dispatches it automatically when accepted. +After save, [`/gaia-plan`](/commands/plan/) is the natural next step. The chain-trigger at step 11 dispatches it automatically when accepted. diff --git a/src/content/docs/commands/update-deps.mdx b/src/content/docs/commands/update-deps.mdx index be40a73..f10e16c 100644 --- a/src/content/docs/commands/update-deps.mdx +++ b/src/content/docs/commands/update-deps.mdx @@ -29,8 +29,12 @@ Packages outside any group form singleton groups. After grouping, updates are classified into two waves: -- **Wave A** — minor and patch bumps, bundled into one install. -- **Wave B** — major-version bumps, each group processed individually with its own migration guide and code edits. +- **Wave A**: minor and patch bumps, bundled into one install. +- **Wave B**: major-version bumps, each group processed individually with its own migration guide and code edits. + +## The CLI primitive behind it + +The deterministic parts (discovering outdated packages, applying the group rules, and classifying each group into Wave A or B) run through the bundled CLI: `gaia update-deps run --emit-updates ` writes the grouped, wave-classified set to a JSON file. The skill calls it for those steps and layers the migrations and quality gate on top. The same primitive backs the `gaia-ci-update-deps` workflow that [`/setup-gaia-ci`](/getting-started/setup-gaia-ci/) can install, so scheduled and interactive runs agree on what is outdated. ## Pinned versions diff --git a/src/content/docs/commands/wiki.mdx b/src/content/docs/commands/wiki.mdx index ad5dcdd..ccd0ba8 100644 --- a/src/content/docs/commands/wiki.mdx +++ b/src/content/docs/commands/wiki.mdx @@ -1,5 +1,5 @@ --- -title: /gaia wiki +title: /gaia-wiki description: Maintain the project wiki. Sync, consolidate, and lint. sidebar: order: 7 @@ -17,10 +17,11 @@ Without it, every session that needs to reason about a service, a hook contract, Ideally, you enable GAIA CI and let GAIA keep the wiki clean autonomously on a schedule. -Without GAIA CI, the wiki doesn't update on its own. GAIA watches for drift and nudges you when it accumulates (at prompt submission and at session end). You then run `/gaia -wiki` to bring it back in sync. +Without GAIA CI, the wiki doesn't update on its own. GAIA watches for drift and nudges you when it accumulates (at prompt submission and at session end). You then run `/gaia-wiki` to bring it back in sync. -You can always invoke `/gaia wiki` manually. With CI enabled it defers to avoid colliding with the scheduled run; pass `--force` to override. +You can always invoke `/gaia-wiki` manually. With CI enabled it defers to avoid colliding with the scheduled run; pass `--force` to override. + +`/gaia-wiki` is a skill, so it also runs on plain-English asks like "sync the wiki", "consolidate the wiki", or "lint the wiki", not just the slash form. For teams, manual runs on feature branches can produce wiki edits that conflict downstream when several developers invoke it in parallel. Letting CI own the writes keeps the chain single-writer, which is why CI is the recommended path. @@ -30,7 +31,7 @@ chain single-writer, which is why CI is the recommended path. There are three main commands, plus a full-chain mode that runs them in sequence. Each command is described in detail below. ``` -/gaia wiki [sync|consolidate|lint] +/gaia-wiki [sync|consolidate|lint] ``` | Argument | Behavior | @@ -40,7 +41,7 @@ There are three main commands, plus a full-chain mode that runs them in sequence | `lint` | Health check: orphans, dead links, drift severity, narrative-reference scrub. No chaining. | | (no argument) | Full chain: sync → consolidate → lint | -## /gaia wiki sync +## /gaia-wiki sync Walks every commit between the wiki's last evaluated SHA and HEAD. For each commit, decides whether the wiki needs an update. Edits pages, logs decisions, advances state. @@ -56,7 +57,7 @@ If drift exceeds 30 commits, sync asks before processing the full range. You can Sync ends with a one-line trigger: `CONSOLIDATE_TRIGGERED: true|false`. Used by the full-chain mode to decide whether consolidate runs next. -## /gaia wiki consolidate +## /gaia-wiki consolidate Detects redundancy and contradiction across the wiki. Four passes: @@ -69,20 +70,23 @@ For each finding, consolidate prompts you per finding: `Apply`, `Keep both`, or Consolidate does not commit. Applied edits stage; sync (or your manual commit) lands them. The `wiki-commit-nudge` hook prompts a sync commit after your next `git commit`. -## /gaia wiki lint +## /gaia-wiki lint -Health check. Wraps the upstream `claude-obsidian:wiki-lint` skill and appends three GAIA-specific checks: +Standalone GAIA-native health check. Each check re-derives from a `gaia wiki` CLI primitive on every run, and the report is plain markdown GAIA owns end to end. The current checks: - **#11 Wiki drift check.** Reports how many commits behind HEAD the wiki is. Severity: `none`, `low`, `medium`, `high`. High severity surfaces with a `WIKI DRIFT:` prefix. - **#12 Dead repo-relative paths.** Backticked paths in wiki body prose that no longer exist on disk (e.g. a hook removed in a refactor still cited in a concept page). - **#13 UAT/SPEC narrative-ref drift.** Narrative `UAT-NNN` and concrete `SPEC-NNN` references that should not appear in instruction files. Filters structural matches (template examples, CLI flags, code literals) from narrative ones (section headers, prose). +- **#14 Orphan pages.** Pages no other page links to with a wikilink. A genuine orphan signals a missing cross-reference. +- **#15 Frontmatter gaps.** Pages missing the required floor: `type` and `status`. +- **#16 Empty sections.** Headings with no body content before the next heading. Reports land at `wiki/meta/lint-report-YYYY-MM-DD.md`. The `wiki/meta/` directory is created locally on first lint run. ## Full chain (no argument) ``` -/gaia wiki +/gaia-wiki ``` Runs sync. Reads the `CONSOLIDATE_TRIGGERED` line from sync's summary. If true, runs consolidate. Then runs lint. diff --git a/src/content/docs/contributors/ci.mdx b/src/content/docs/contributors/ci.mdx index 17f2cc6..0ccb24b 100644 --- a/src/content/docs/contributors/ci.mdx +++ b/src/content/docs/contributors/ci.mdx @@ -1,6 +1,6 @@ --- title: CI workflows -description: Contributor-only GitHub Actions workflows. Release, CLI tests, distribution harness, and forensics triage. +description: Contributor-only GitHub Actions workflows. Release, CLI tests, audit-script tests, distribution harness, forensics triage, and the on-demand automation workflows installed by /setup-gaia-ci. sidebar: order: 5 --- @@ -43,6 +43,14 @@ When the filter triggers, the job: The required-check posture is intentional: contributors who don't touch the CLI source see the check as required-and-green without paying the install cost. +## audit-ci-tests.yml + +Triggers on both `push` to `main` and `pull_request` against `main`, with the job gated to `pull_request` events via a job-level `if:` condition. Runs the bats suites for the `.github/audit/` helpers that `code-review-audit.yml` consumes: `check-trailer.sh` (the skip-logic gate) and `resolve-audit-base.sh` (the incremental-review base). + +PRs that don't touch `.github/audit/**`, this workflow file, or `.claude/hooks/lib/repo-scope.sh` report green without installing or running anything. The path filter is `dorny/paths-filter`, mirroring `cli-tests.yml`. + +Adopters receive the audit scripts as GAIA-controlled code they never edit, so the suite guards only maintainer changes. + ## distribution.yml Triggers only on `workflow_dispatch`. Used to run the `.gaia/tests/distribution/` harness on a feature branch for ad-hoc verification of harness changes themselves. @@ -64,3 +72,17 @@ The workflow has helpers under `.github/forensics/`: scope checks, classifier pr Steps include an idempotency early-exit (skip if `gaia-triaged` is already on the issue), classification, optional apply-fix path that runs the project quality gate, and a final fallback step that ensures `gaia-triaged` lands on the issue regardless of path. The workflow is on the canonical denylist: future autonomous triage runs must not modify it. The workflow's `check-scope.sh` rejects any attempt to edit any path under `.github/workflows/`. Self-modifying triage is a security boundary violation. + +## On-demand automation workflows + +GAIA can install a set of automation workflows into an adopter's repository on demand. They are not committed to the template repo's `.github/workflows/`; their templates live in the CLI source at `.gaia/cli/src/automation/templates/workflows/` and are rendered into an adopter's repo by [`/setup-gaia-ci`](/getting-started/setup-gaia-ci/). + +The installable set: + +- `gaia-ci-wiki.yml`: daily `/gaia-wiki` sync, consolidate, and lint chain +- `gaia-ci-update-deps.yml`: weekly dependency updates +- `gaia-ci-pnpm-audit.yml`: weekly `pnpm audit` security pass +- `gaia-ci-stale-branches.yml`: monthly cleanup of long-merged branches +- `code-review-audit.yml`: the pre-merge audit gate, installed unconditionally (not a cron tool) + +The cron workflows are generated from `.gaia/automation.json`, so which tools run is per-project. The [`/setup-gaia-ci`](/getting-started/setup-gaia-ci/) reference covers the adopter flow, tool modes, and schedules. The template repo keeps its own `code-review-audit.yml` in-tree as a live gate, so the `gaia-ci-*` cron workflows are an adopter-side surface rather than workflows that run on the GAIA template itself. diff --git a/src/content/docs/contributors/cli.mdx b/src/content/docs/contributors/cli.mdx index c1de132..f0f05bb 100644 --- a/src/content/docs/contributors/cli.mdx +++ b/src/content/docs/contributors/cli.mdx @@ -79,7 +79,7 @@ The skill drives tarball fetching and user-facing prompts; the CLI handles per-m Source: `.gaia/cli/src/wiki/index.ts` -Wiki-state primitives consumed by the `/gaia wiki` skill family (`sync`, `consolidate`, `lint`). The primitives are deterministic; the slash commands orchestrate them. +Wiki-state primitives consumed by the `/gaia-wiki` skill (`sync`, `consolidate`, `lint`). The primitives are deterministic; the skill orchestrates them. ``` gaia wiki state [--json] @@ -91,6 +91,8 @@ gaia wiki page-index [--json] gaia wiki orphans gaia wiki near-collisions [--max-distance N] gaia wiki dead-paths [--json] +gaia wiki frontmatter [--json] +gaia wiki empty-sections [--json] gaia wiki sync land [--branch-aware] ``` diff --git a/src/content/docs/contributors/index.mdx b/src/content/docs/contributors/index.mdx index 73445aa..8aa7b9b 100644 --- a/src/content/docs/contributors/index.mdx +++ b/src/content/docs/contributors/index.mdx @@ -22,10 +22,10 @@ Both pass through the bundle-time scrub during release. The on-disk `.gaia/relea ## What's in this section -- [`/gaia-release`](/contributors/release/): audience scope and what releases produce. The detailed runbook is internal to the maintainer. -- [`/health-audit`](/contributors/health-audit/): autonomous health audit and auto-heal loop with circuit breakers. -- [CLI surface](/contributors/cli/): `gaia` binary subcommands that contributors invoke directly, plus where their source lives. - [CI workflows](/contributors/ci/): `release.yml`, `cli-tests.yml`, `distribution.yml`, `forensics-triage.yml`. +- [CLI surface](/contributors/cli/): `gaia` binary subcommands that contributors invoke directly, plus where their source lives. +- [`/health-audit`](/contributors/health-audit/): autonomous health audit and auto-heal loop with circuit breakers. +- [`/gaia-release`](/contributors/release/): audience scope and what releases produce. The detailed runbook is internal to the maintainer. - [Contributor wiki content](/contributors/wiki/): `wiki/entities/`, `wiki/meta/`, and the `gaia:maintainer-only` block convention. ## Source-of-truth pointers diff --git a/src/content/docs/contributors/wiki.mdx b/src/content/docs/contributors/wiki.mdx index bddf055..bc2241a 100644 --- a/src/content/docs/contributors/wiki.mdx +++ b/src/content/docs/contributors/wiki.mdx @@ -12,7 +12,7 @@ Two directories under `gaia/wiki/` are excluded from the end user tarball by `.g Three individual concept and decision pages are also excluded: `wiki/concepts/Release Workflow.md`, `wiki/decisions/Bundle-time Scrub.md`, and `wiki/decisions/Forensics Triage Workflow.md`. -The user-facing wiki workflow (`/gaia wiki sync`, `/gaia wiki consolidate`, `/gaia wiki lint`) lives in end user docs. This page covers content that contributors maintain on the template repo's own wiki. +The user-facing wiki workflow (`/gaia-wiki sync`, `/gaia-wiki consolidate`, `/gaia-wiki lint`) lives in end user docs. This page covers content that contributors maintain on the template repo's own wiki. ## wiki/entities/ @@ -27,7 +27,7 @@ When to add: a new entity becomes worth tracking on its own page when it gets cr ## wiki/meta/ -Pages here describe the wiki's own process. The directory currently holds wiki lint reports and consolidate reports dated by run, plus a dashboard. The reports are generated artifacts of `/gaia wiki lint` and `/gaia wiki consolidate` runs. +Pages here describe the wiki's own process. The directory currently holds wiki lint reports and consolidate reports dated by run, plus a dashboard. The reports are generated artifacts of `/gaia-wiki lint` and `/gaia-wiki consolidate` runs. When to add: a new meta page is appropriate when it documents how the wiki itself works (a new convention, a new dashboard, a new workflow). Generated lint and consolidate reports land here automatically; do not write them by hand. @@ -48,5 +48,5 @@ When to use the block convention rather than path-level exclusion: use blocks wh ## Cross-references -- end user wiki workflow: see the `/gaia wiki` skill family in end user docs. +- end user wiki workflow: see the `/gaia-wiki` skill in end user docs. - The `.gaia/release-exclude` manifest is the authoritative path-level exclusion list. Anything matched there is also skipped by `gaia-maintainer release manifest`, so the end user manifest never references files an end user cannot have. diff --git a/src/content/docs/getting-started/setup-gaia-ci.mdx b/src/content/docs/getting-started/setup-gaia-ci.mdx index 750b793..99de516 100644 --- a/src/content/docs/getting-started/setup-gaia-ci.mdx +++ b/src/content/docs/getting-started/setup-gaia-ci.mdx @@ -13,7 +13,7 @@ GAIA CI installs four maintenance workflows that run on a cron schedule, open la | Workflow file | Default schedule | What it does | |---|---|---| -| `gaia-ci-wiki.yml` | Daily | Runs the `/gaia wiki` chain: sync, consolidate, and lint | +| `gaia-ci-wiki.yml` | Daily | Runs the `/gaia-wiki` chain: sync, consolidate, and lint | | `gaia-ci-update-deps.yml` | Weekly | Runs `/update-deps` and opens a PR for any updates | | `gaia-ci-pnpm-audit.yml` | Weekly | Runs `pnpm audit` and opens a security PR for high and critical findings | | `gaia-ci-stale-branches.yml` | Monthly | Deletes branches merged more than 30 days ago | diff --git a/src/content/docs/reference/agents.mdx b/src/content/docs/reference/agents.mdx index 2df0da9..960acfe 100644 --- a/src/content/docs/reference/agents.mdx +++ b/src/content/docs/reference/agents.mdx @@ -30,7 +30,7 @@ Comprehensive code review, security audit, performance analysis, and architectur - **Accessibility**: keyboard reachability, semantic HTML, focus management, ARIA usage. - **Maintainability**: magic values, dead code, coupling, comment quality. -The main agent handles cross-cutting reasoning. Specialist subagents (React patterns, TypeScript / architecture, translation) run in parallel for line-level rule compliance, alongside `react-doctor` and `pnpm knip --reporter json`. +The main agent handles cross-cutting reasoning. Specialist subagents (React patterns, TypeScript / architecture, translation) run in parallel for line-level rule compliance, alongside `react-doctor`, `pnpm knip --reporter json`, and `pnpm audit --json`. The `pnpm audit` pass is the Dependency-CVE advisory: it reports high and critical findings for you to decide on and never blocks the audit marker or `gh pr merge`. See the `dep-audit` rule. ### Output diff --git a/src/content/docs/reference/hooks.mdx b/src/content/docs/reference/hooks.mdx index 7bf17f7..17ccbcd 100644 --- a/src/content/docs/reference/hooks.mdx +++ b/src/content/docs/reference/hooks.mdx @@ -21,7 +21,7 @@ For Claude Code's own hook documentation, see [the Hooks reference on docs.claud | Hook | What it does | Path | |---|---|---| -| `wiki-session-stop` | If wiki files were committed during the session, prompts a hot-cache refresh; nags `/gaia wiki sync` when commits land but `wiki/.state.json` did not advance. | `.claude/hooks/wiki-session-stop.sh` | +| `wiki-session-stop` | If wiki files were committed during the session, prompts a hot-cache refresh; nags `/gaia-wiki sync` when commits land but `wiki/.state.json` did not advance. | `.claude/hooks/wiki-session-stop.sh` | | `wiki-squash-autocommits` | Squashes the trailing run of `wiki: auto-commit` commits into one; on `main`, redirects the squash to a `wiki/*` branch and merges via PR. | `.claude/hooks/wiki-squash-autocommits.sh` | ## UserPromptSubmit @@ -54,13 +54,16 @@ For Claude Code's own hook documentation, see [the Hooks reference on docs.claud |---|---|---| | `block-bare-test` | Blocks bare `pnpm test` / `npm test` invocations; requires `--run` so vitest does not start watch mode. | `.claude/hooks/block-bare-test.sh` | | `block-main-destructive-git` | Blocks commits to `main`/`master` and force-pushes to those branches. | `.claude/hooks/block-main-destructive-git.sh` | +| `block-no-verify` | Denies `git commit` / `git push` that carry a hook bypass (`--no-verify`, or commit-only `-n`), so the commit-time floor (typecheck, lint, test) cannot be skipped. | `.claude/hooks/block-no-verify.sh` | | `block-rm-rf` | Denies `rm -rf` against root, `$HOME`, cwd, unscoped globs, `.git`, `node_modules`, and any path outside a small whitelist of scratch dirs. | `.claude/hooks/block-rm-rf.sh` | | `pr-merge-audit-check` | Blocks `gh pr merge` until a code-review-audit marker file exists at `.gaia/local/audit/.ok`. | `.claude/hooks/pr-merge-audit-check.sh` | +| `red-verify-commit-check` | Blocks `git commit` when a new-at-HEAD test that now passes has no recorded failing (RED) run matching its current content. Enforces mechanical TDD: a new test must be observed failing before its passing version can land. | `.claude/hooks/red-verify-commit-check.sh` | ## PostToolUse (Bash) | Hook | What it does | Path | |---|---|---| +| `capture-red-observations` | After a one-shot vitest run, re-runs the same scope with the JSON reporter and appends each genuinely-failing test to the RED-observation ledger at `.gaia/local/red-ledger/`. Observe-only: never blocks, always exits clean. Pairs with `red-verify-commit-check`. | `.claude/hooks/capture-red-observations.sh` | | `wiki-commit-nudge` | After every non-amend `git commit`, injects commit metadata and the current wiki drift count into context. | `.claude/hooks/wiki-commit-nudge.sh` | ## Agent-invoked (no event registration) diff --git a/src/content/docs/reference/rules.mdx b/src/content/docs/reference/rules.mdx index a60c17f..012a89a 100644 --- a/src/content/docs/reference/rules.mdx +++ b/src/content/docs/reference/rules.mdx @@ -14,7 +14,9 @@ A rule's frontmatter `paths:` field is the gate. When Claude edits or reads a fi | Rule | What it enforces | |---|---| | `coding-guidelines` | File-naming conventions (PascalCase components, camelCase hooks, kebab-case other), simplicity-first, surgical changes, goal-driven execution, mandatory TDD, mandatory quality-gate run before commit. | +| `dep-audit` | Dependency-CVE advisory. The audit agent runs `pnpm audit --json` pre-merge and reports high and critical findings for the operator to decide on. Read-only: never blocks the audit marker or `gh pr merge`. Distinct from the blocking CI `pnpm audit` pass. | | `knip` | When and when not to run `pnpm knip`; the audit agent runs it pre-merge, manual runs only after a refactor, deletion, or dependency replacement. | +| `pr-merge` | Before any `gh pr merge`, run the audit and marker handshake, then confirm the PR reports `MERGED` before any local branch cleanup; use `--auto` (not `--admin`) when branch protection blocks the merge. | | `quality-gate` | Run the steps in `wiki/decisions/Quality Gate.md` before any commit that touches source, unless nothing in the gate's scope is staged. | | `shell-cwd` | No `cd` in Bash tool calls; use absolute paths. A persistent `cd` breaks the relative-path hooks registered in `settings.json`. | diff --git a/src/content/docs/skills/code.mdx b/src/content/docs/skills/code.mdx index 741b12c..d6b132e 100644 --- a/src/content/docs/skills/code.mdx +++ b/src/content/docs/skills/code.mdx @@ -5,7 +5,7 @@ sidebar: order: 1 --- -Seven skills that govern code generation and review. Each one loads automatically when its trigger phrasing matches the conversation. You don't invoke them by name. +Eight skills that govern code generation and review. Each one loads automatically when its trigger phrasing matches the conversation. You don't invoke them by name. ## TypeScript @@ -84,3 +84,13 @@ Generally speaking, Claude does the right thing when it encounters ESLint errors If you ever find that Claude is resolving an ESLint error in an undesirable way (e.g. by disabling the rule instead of fixing the underlying issue or making things worse), you can ask Claude directly to improve the eslint-fixes skill to handle that particular ESLint error in a better way. If you do discover one, please consider [filing an issue](https://github.com/gaia-react/gaia/issues) so we can add it to the skill in GAIA itself. Source: `.claude/skills/eslint-fixes/SKILL.md`. + +## Accessibility Fixes + +Resolve specific axe-core accessibility violations in your project. Covers the common rule failures: `color-contrast`, `label`, `image-alt`, `button-name`, `link-name`, `region`, `landmark-one-main`, `heading-order`, and the `aria-*` family. The fix patterns reach for the project's semantic Tailwind tokens and `Form/*` components, so corrections hold in both light and dark mode. General accessibility guidance lives in the `accessibility` rule; this skill handles the concrete fix once a violation is reported. + +**Triggers** when an axe rule id appears in test output from `test/a11y.ts` (Vitest), `.playwright/a11y.ts` (Playwright), or the `code-review-audit` agent's accessibility bucket. + +**Example phrasing:** "fix the color-contrast violation on the status badge", "axe says this button has no accessible name", "resolve the heading-order error". + +Source: `.claude/skills/a11y-fixes/SKILL.md`. diff --git a/src/content/docs/skills/index.mdx b/src/content/docs/skills/index.mdx index ceba771..43441f3 100644 --- a/src/content/docs/skills/index.mdx +++ b/src/content/docs/skills/index.mdx @@ -15,8 +15,6 @@ GAIA groups its skills into two categories: **Scaffolders** generate new files from templates. Trigger when you ask to create a component, hook, route, or service. See [Scaffolders](/skills/scaffolders/). -There's one more skill, `gaia`, that in practice acts as a command. See [commands](/commands/) for more information. - ## How triggering works Each `SKILL.md` has a `description:` field that lists the phrasings and situations that load the skill. The skills do not run on every prompt; they activate when the description matches what you said. You don't invoke them by name. Saying "scaffold a card called PriceCard" loads `new-component`. Saying "the typecheck is angry about a stale closure" loads `react-code`. diff --git a/src/overrides/PageSidebar.astro b/src/overrides/PageSidebar.astro index 8819fa7..67bdd3f 100644 --- a/src/overrides/PageSidebar.astro +++ b/src/overrides/PageSidebar.astro @@ -1,6 +1,7 @@ --- import MobileTableOfContents from 'virtual:starlight/components/MobileTableOfContents'; import TableOfContents from 'virtual:starlight/components/TableOfContents'; +import {GAIA_VERSION} from '../version'; const year = new Date().getFullYear(); --- @@ -17,6 +18,8 @@ const year = new Date().getFullYear();