{
  "name": "Azurioh/claude-conventions — 18 skills",
  "slug": "source-skills-a464d50e90be0bc6240dc5e0",
  "type": "skills",
  "category": "developer-tools",
  "example": false,
  "evidence_state": "pinned_source_listing",
  "stamp": "Pinned source listing — machine-checked",
  "summary": "Pinned source declarations and file hashes were listed.",
  "outcome": "Listed 18 skill declarations. Ran 116 git commands; each one's exit status and output hash is in commands.json. Scope: acquisition and static inspection.",
  "rule_results": [
    "The retained source tree matches its acquisition manifest.",
    "Declared skill names (listing.json): speckit-analyze; speckit-checklist; speckit-clarify; speckit-constitution; speckit-converge; speckit-implement; speckit-plan; speckit-specify; speckit-tasks; speckit-taskstoissues; adr; app-rules; deps-audit; port-claude-config; pr; release; test-gaps; verify-app"
  ],
  "task": "What declarations and files are present in this pinned source?",
  "setup": "Git blob acquisition followed by static source inspection.",
  "limitations": "Scope: acquisition and static inspection. Command results: commands.json.",
  "source_url": "https://github.com/Azurioh/claude-conventions",
  "documentation_url": "https://github.com/Azurioh/claude-conventions",
  "commit": "b3af758b520acf7408278e45488528361ac01db2",
  "tree_sha256": "b405a6b965ce7b933908a8dfb2e5f2fad5dad7a7d6aa3052281fb9039bc77236",
  "file_sha256": {
    ".claude/skills/speckit-analyze/SKILL.md": "3237cd827194efaf6bb06ba05ef9bc1a703a223d362f5e34d0558c5a38ae34d0",
    ".claude/skills/speckit-checklist/SKILL.md": "5dc436df0c727e9078bf182dd385e5cb1b60ee67ebe644d3f659ec12e3b78abb",
    ".claude/skills/speckit-clarify/SKILL.md": "164f49ef87cb2e922585316f5281b455a8e1940b1efd25317d517a567acae472",
    ".claude/skills/speckit-constitution/SKILL.md": "60c27f3962e78edf204b2b2e7cba91a616980860b61d6bf2051dc6965d483dda",
    ".claude/skills/speckit-converge/SKILL.md": "fac66428c93e6e4fa0559a618a620d979fd8124d567f6f79db741fce0081cb3d",
    ".claude/skills/speckit-implement/SKILL.md": "7186d59488f89dcf23abd17baed118b05c242d4f62f1de3f9f44625a2b1728f0",
    ".claude/skills/speckit-plan/SKILL.md": "9e97fc0b4ce895c70a1ea720dc0377618c23e27c83ecf4d87b6e0f6c323790a4",
    ".claude/skills/speckit-specify/SKILL.md": "d4d93f2444355136e78bb533988aa2dd560dc4b258f4923f67b1a437e7de38f8",
    ".claude/skills/speckit-tasks/SKILL.md": "d148aeda1011260c4465c5f105fa1e045a0b0224ccb3e6e0c1ec32c732cae1ae",
    ".claude/skills/speckit-taskstoissues/SKILL.md": "464bbaf464a28ffa371b0452599c18e7cb5799630148d9f945e6a4d7066a1234",
    ".claude-plugin/marketplace.json": "3e21880aa0ed20cc64cb3661915a9def6f3e0ad5b4b8214db8abd8afdf968409",
    ".github/workflows/ci.yml": "1c75734f1cdf641ded5649a021a4ce46662fb2488441c372e48966eb28a54f83",
    ".gitignore": "5ed7f1a31360fe32963325c8b8db151d675d35d6712b93f902cd8f1e53a54d75",
    ".shellcheckrc": "5cbab9450c03e8377cea5dbb9b5f4b2f44898f1a756b44517ec6b643529560be",
    ".specify/.gitignore": "8c908410d177a1ef3d0dee16d7ad55f2ac3333df3104c4d4adee1c9b82f1dbc1",
    ".specify/init-options.json": "de02afa7f0cb8f440b1f1fb95096f7d662e91a090adabeb895960211753e24e2",
    ".specify/integration.json": "22f401ac45b1fb010366df7411ddb5b006c512216d6bc6a8da9f121a7844b249",
    ".specify/integrations/claude.manifest.json": "e26163f14d42333c338dc9f66baf5ddb40913cb5c92507cb714626d54ac909b4",
    ".specify/integrations/speckit.manifest.json": "c06f2e4e922649416503d6e15821fabe6ea31496cfae62d50201057524ca37f0",
    ".specify/memory/.constitution-template.json": "8fc4b39294bae0c10d59547ad7d415b6f0e890d656cbf7171dd567f4e9054711",
    ".specify/memory/constitution.md": "ce7549540fa45543cca797a150201d868e64495fdff39dc38246fb17bd4024b3",
    ".specify/scripts/bash/check-prerequisites.sh": "daa377146db4fb69912f42611a7b91c5d55873b3e3e27ed33bd8d67505826344",
    ".specify/scripts/bash/common.sh": "170e91ece502b88d83c715e427473843e0b358f550e86e3ff524546df405a9ca",
    ".specify/scripts/bash/create-new-feature.sh": "9f7a741d9766a6c1c5d5e44368f2c6bea6026b399ff6f0055870f760afdb8726",
    ".specify/scripts/bash/resolve-template.sh": "829e227096abc8bf0889889ec9f792f503ca5d395b7836a8a7eb739ee75214e7",
    ".specify/scripts/bash/setup-plan.sh": "d0bd298c026446f3c63167130d65e49e4aa4485de6bef18bcdfd57b19aa0de96",
    ".specify/scripts/bash/setup-tasks.sh": "4a33dd1e6c32ddc7d570f4b538572c54069192573eed0ec654d9fb826e31a4fe",
    ".specify/templates/checklist-template.md": "856532b3cb66171c662cc16f16b31a5856e4655a8666aad1e545bbfc7f603ca1",
    ".specify/templates/constitution-template.md": "ce7549540fa45543cca797a150201d868e64495fdff39dc38246fb17bd4024b3",
    ".specify/templates/plan-template.md": "7e637502d41eccf0ca672496636365691fdca62ef37b27ec07fcb412dbfa90d4",
    ".specify/templates/spec-template.md": "3945437fc35cd30a5b2bf7beea680337c3516826d3efa5a6b92c4a7eca1ba28e",
    ".specify/templates/tasks-template.md": "fc29a233f6f5a27ca31f1aa46b596af6500c627441c6e62b2bc4a1d721525842",
    ".specify/workflows/speckit/workflow.yml": "177761c5e7df28126beea043b5cb45aeaf7958090c022dc11ac71399422fcfbc",
    ".specify/workflows/workflow-registry.json": "3ba7f6fd7a974473e738d5715280dfd1261030a97eea5faeff026780d7f533d0",
    "LICENSE": "d4eac2ac5815aa4b9278bf8f27c3c4588b8ad596e8790865766377c974264f98",
    "README.md": "0f9f463e1e6fbf1c6806a7564d69f985f315bc345e217d06997b7c3ae1933495",
    "plugins/conventions/.claude-plugin/plugin.json": "64a3411f1c5dcdae3df3899b2d51440044231ce676b658321ee7bb4da9db3aa7",
    "plugins/conventions/agents/ci-triage.md": "6f4f1ff6c804a160aec1456b3dfbcfecd521e326e2f26302259922087f87e01c",
    "plugins/conventions/agents/correctness-reviewer.md": "e24640c308575eb64624818e21a2211d4e79ae584ac34eaf9f7abcb6df6e590b",
    "plugins/conventions/agents/duplication-reviewer.md": "d7a95dc3917cbd400d3aec20416b1e88f22285eb80bc21991cb4a5f23d764faf",
    "plugins/conventions/agents/relevance-reviewer.md": "e5a73c6f0da4822c2d05f2cbde123ff55dbac75549e0d89062e73b06e932cbf1",
    "plugins/conventions/agents/repo-explorer.md": "26f6bc6979ca50045f047826892129d63af1c752f4734234973d7f750c356b97",
    "plugins/conventions/agents/rules-reviewer.md": "f957af9ec716e517e2ffc8d98516fc3d7e3f9092a335e74f25a196aa889520ef",
    "plugins/conventions/agents/security-reviewer.md": "f2772d2c587fab877f2732c4ac5b918bc051f295d0dbea4cfe5205896642ebfc",
    "plugins/conventions/agents/test-writer.md": "d46394338b65436625e87887f2662c8d32c2222c04a57e804d55ab5240c85bd8",
    "plugins/conventions/hooks/agents-md.sh": "8b1d7da6754b5047622ef3caafe0856b4235c6763b0d1585db0aa33f97f25250",
    "plugins/conventions/hooks/branch-info.sh": "236068d10cbb96db07c50b3760e0fd621b04e0cb72e21a10858fa138d194f0e7",
    "plugins/conventions/hooks/deps-exact.sh": "00c9d62501ebad5f927e1d540edcc06873504a4e78b8f98f756b08f06572b866",
    "plugins/conventions/hooks/format.sh": "0455f2b0e223045cdc776bac294ca61dfcf2ecce5a2ac258d1aee98db1dd6875",
    "plugins/conventions/hooks/guard-git.sh": "b3a7e289023362e8a9302bfa7e346f6df9bc29d7acda15fce0b478fec0ea896d",
    "plugins/conventions/hooks/hooks.json": "1d297d41b1391975b38ae3eb2cf03161d3eacb79a4ebc5162fe33eed46367d43",
    "plugins/conventions/hooks/lib.sh": "b9476ed3563b894ce68e64671f1dbc001394cf19ea4bb24f689bb20ed92abd5c",
    "plugins/conventions/hooks/pr-size.sh": "d2536ffc75c397e344cb20f5f9773bc88563a9188dc302b752fb4d6501882ce6",
    "plugins/conventions/rules/CLAUDE.md": "bef385cec6b1c7d48dc776a75b894aa059fb7eb5bb353a418dceae15d1341dcf",
    "plugins/conventions/rules/_project/conventions.json": "680fad10ee8898c2d1c6db6497efecb0bdf71cf8f52e4940c74c2d753e5653e9",
    "plugins/conventions/rules/_project/gitignore": "661ded3c893a5ca625fc8d4bd74c6d53c7be4666a02a2f13d00ed252994ba43d",
    "plugins/conventions/rules/_project/settings.json": "e714ffb7fd9ae1047d5e9ff796fab039252253ebafe0ee7802d54d1655010dfd",
    "plugins/conventions/rules/architecture.md": "0a7e1d5a04c2ec2b4bd38995ffe67136a372656bac5c2ac3e8fabe8810ebfb2b",
    "plugins/conventions/rules/coding.md": "915b3074006a87499d2f53e09d06d7d5ad134419f7539d390ac6a94a51596532",
    "plugins/conventions/rules/commands.md": "b8ef640c8a26fd8d40490d17c2536482622b103e5eb42b4d95930c02b34b00ba",
    "plugins/conventions/rules/knowledge.md": "074a8d33a227ddd8ea781824e30ec9e11ea82d3d8800f1b3f432787677304d53",
    "plugins/conventions/rules/pitfalls.md": "270d72b74328c50a33c752272ce8ece8e6125c3681c652bc10b767f044c0004f",
    "plugins/conventions/rules/workflow.md": "60931ed0bd5d07c1ca4962319c802f59ffdd6523c48372ebc9c606c8b626f9aa",
    "plugins/conventions/scripts/agents-md.sh": "6c5e88a1685a02c7654a05360cfad2e12c8b1512c2b776b31d0c13a6954fd0a3",
    "plugins/conventions/skills/adr/SKILL.md": "8700329ef3e01f07cbb853702ded34e125c5a1af7efffff92c72df578bca5882",
    "plugins/conventions/skills/app-rules/SKILL.md": "25ecdaf80fa3bcbc72c36a332ae7fe790c809e264300f66bba62af72ddd7ccb9",
    "plugins/conventions/skills/deps-audit/SKILL.md": "83dff0d8b777b43e8f33ccb4620559f17039f77f52f8608280af13f78396b0c6",
    "plugins/conventions/skills/port-claude-config/SKILL.md": "193248f64014274572d549080a2cdba1856371b1a0052da76c039a931816f6fd",
    "plugins/conventions/skills/port-claude-config/scripts/discover.sh": "60a21ffabc3854aab94b788acc4b9a8a022131dd0d62e92510960b14c05d76a1",
    "plugins/conventions/skills/port-claude-config/scripts/refresh.sh": "45c993d7f5f37b3508b9b032aafe712405ec0e215b1d76acfd902dca932f0532",
    "plugins/conventions/skills/port-claude-config/scripts/render.sh": "f5e10b98abd45a798bf5671880634f4a7caba8484237ad7b43538bb52bf36961",
    "plugins/conventions/skills/pr/SKILL.md": "85771232f88e9964ca06ca3ec53d11b83354b89baed9576f0b85ace86fa49f9b",
    "plugins/conventions/skills/release/SKILL.md": "8e680302a802fa46d2f9ca591d33165d8593094f4ef751441b19200d4a58e8ac",
    "plugins/conventions/skills/test-gaps/SKILL.md": "7bb905ab6e487d78dac23ca08c6251deef83d8c7f4e4a8ff57b632b3c0371e0f",
    "plugins/conventions/skills/verify-app/SKILL.md": "b6b9e0b26f9740bea48d8d5ad262576e4bf634fe5e9465de0ea885805bd6e7d3",
    "profiles/conventions.json": "3197619d39fca083dce6964feebbf023fa85b8d3c7c43a47ceb428a4502b4eec",
    "schema/conventions.schema.json": "9b56d8b87a0cf1fcdc20cc3015d2205c9d9ad60d2df4390218f0ee074cdda439",
    "specs/001-claude-conventions-plugin/checklists/requirements.md": "5c7b98782b09bb62e10b6e51166faf8541591a981dc35ecc45a79ca589da44e1",
    "specs/001-claude-conventions-plugin/contracts/conventions-json.md": "28ea2e51c2cda30600b755bd338ba0f67369a0630fd115ccc0c32f6c1d844c5c",
    "specs/001-claude-conventions-plugin/contracts/hooks.md": "f5d8c60353d8b9e271c95f7fb208793030f22a0c8412ba354a867645c65dfbd5",
    "specs/001-claude-conventions-plugin/contracts/templates.md": "c8d26e35ef66a0dc96f97447b68b813fca2d8d7a77e9278e8f267e5f755f5119",
    "specs/001-claude-conventions-plugin/data-model.md": "b7ba2e2d1204b8a7fe47d64bf167a278194e81200d608df1e830318adc1f4600",
    "specs/001-claude-conventions-plugin/plan.md": "821da027981cf7a7f892871cbf869b1a1fce736b87a1429d60d1a3481e74d333",
    "specs/001-claude-conventions-plugin/quickstart.md": "b3a48c9fa97b520132fbe06ab4d145df4dea30c5a2e7e5c77865a8a6ef8f3d03",
    "specs/001-claude-conventions-plugin/research.md": "4657f11d0374accae49621579906c842b8bc691e590df5ea2e045a54579242b6",
    "specs/001-claude-conventions-plugin/spec.md": "2bbd260bf68192e1e47a4143cb674c688f81797fb382af518cd106f1e52b5fa7",
    "specs/001-claude-conventions-plugin/tasks.md": "f7505e9f67de5867a4e6650321a370e6ed207a7737bfccf6f711f5dc3ced517b",
    "tests/fixtures/agents-md/.claude/rules/api/architecture.md": "a777fb607ce38475cf19b6e18e5ae965be8ea001ccfd46edc907715ffc9be13e",
    "tests/fixtures/agents-md/.claude/rules/api/commands.md": "e4063a3780caf7fad32cd90f1a053c3928822adaf33135794f7564901a99737d",
    "tests/fixtures/agents-md/.claude/rules/coding.md": "62826b57488e00c73ad44ad70b579ec3e7cf53b54f935236efd2e369e391bbb5",
    "tests/fixtures/agents-md/.claude/rules/notes.txt": "ee2be8ab2944c48489c6e2234a0391f0c21025e339531270214b9c531fb11c65",
    "tests/fixtures/agents-md/.claude/rules/pitfalls.md": "5c00ee9f99feba900fc57464d2f7a8e1b4e19a07e37ad4a48d90c17f6284cbaf",
    "tests/fixtures/agents-md/.claude/rules/web/commands.md": "67cc289019f7b6472cda97a4642db37806b53308fe5df6218857cc24bb837764",
    "tests/fixtures/agents-md/.claude/rules/workflow.md": "506e4141fb7d3264254e3b6b6c360650eeb5818ebb401f381d919701c84bb7fa",
    "tests/fixtures/agents-md/CLAUDE.md": "85898540d162478ee2529b1aca766112faeb3db42ac45111acb42dba716dce0e",
    "tests/fixtures/agents-md/docs/guide.md": "8b94852364da1d2266ea6575f13e6167907a5bd809b5ce99f8b45c6a938cf266",
    "tests/fixtures/no-conventions/package.json": "30a4632a1fe64ea6fdb2b365f2ea897ca6a1be6f818bd25ce054186b3b281fe2",
    "tests/fixtures/no-conventions/pnpm-lock.yaml": "17c814b167307942d3609c7b9d916ceddb85839573ab39baa114e30edb132a1a",
    "tests/fixtures/npm-prettier/.claude/conventions.json": "9e049c1fb5d108689cf9a57b9f0ce6cc169d65777dd47cfbfe7087adc0d2e31a",
    "tests/fixtures/npm-prettier/.prettierrc": "02c3552291b98bde1f75b63c79b2ce0b9cb209b7558a981d1d3c316e4a2336d5",
    "tests/fixtures/npm-prettier/package-lock.json": "0ce1561eddeffc0a412a8e0f693b799c58b9649eb8cba4a8213bc7d3157711fe",
    "tests/fixtures/npm-prettier/package.json": "0e5d0d6dd16936d611d73c3799696bfdeeae26c29e4fc6399f40e1039312056d",
    "tests/fixtures/npm-prettier/src/index.ts": "140e35bcc435d1483bb6ef6c2c42a7d9649434f44eab346012e967e7a54004be",
    "tests/fixtures/pnpm-biome/.claude/conventions.json": "dbbdd8ac2f8e4c2a2aca375780ba9d74e93455e694a9080438aacf302c2b9fda",
    "tests/fixtures/pnpm-biome/apps/api/package.json": "e5263eab9174ec1c7ed48c5f1e1c5ee9d9021d46b0a80abbe7e8c518b07a265a",
    "tests/fixtures/pnpm-biome/biome.json": "eb1fd0bc2b22ff57b5d7949121880a6bca701b5be6abdca9c1d2212682f595dd",
    "tests/fixtures/pnpm-biome/package.json": "0f02f603d9f7fd68010304830bf588e48d8703e3da5114d1b3f6fbe4653c2213",
    "tests/fixtures/pnpm-biome/pnpm-lock.yaml": "17c814b167307942d3609c7b9d916ceddb85839573ab39baa114e30edb132a1a",
    "tests/fixtures/pnpm-biome/src/index.ts": "140e35bcc435d1483bb6ef6c2c42a7d9649434f44eab346012e967e7a54004be",
    "tests/golden/AGENTS.md": "71af1fb25f8453bfb0e89d56fb2b5ed6305b35e94ad665c84e0591848732a0b5",
    "tests/run.sh": "0080f474ff154106a125c33dc54037d62399e12277cfe2716f7ef36a9dcb5c62"
  },
  "lockfiles": [
    "LOCK.json"
  ],
  "utc_date": "2026-10-22T21:18:54Z",
  "source_date": "2026-10-22",
  "discovered_date": "2026-10-22",
  "retested_date": "2026-10-22",
  "reviewed_date": "2026-10-22",
  "published_date": "2026-10-22",
  "modified_date": "2026-10-22",
  "reviewer": "machine pipeline",
  "harness_version": "toolwitness harness at commit 6340946648948018b2b1de96f4e42c350d428847",
  "claude_code_version": "Not applicable: static source inspection (commands.json).",
  "model_id": "Not applicable: static source inspection (commands.json).",
  "scanner_version": "Not applicable: static source inspection.",
  "rulepack_version": "Not applicable: static source inspection.",
  "agents": [],
  "disclaimer": "This record lists declarations and file hashes from a pinned source tree. Git command results from acquisition and static inspection are retained in commands.json. Scope: acquisition and static inspection. It is not a security or quality verdict. Changed bytes are outside this record.",
  "commands": [
    "Ran 116 git commands; each one's exit status and output hash is in commands.json. Scope: acquisition and static inspection."
  ],
  "prompt_list": [
    "Not applicable: static source inspection (commands.json)."
  ],
  "history": [
    "2026-10-22T21:18:54Z: pinned source inspection"
  ],
  "application": {
    "name": "Azurioh/claude-conventions — 18 skills",
    "softwareVersion": "b3af758b520acf7408278e45488528361ac01db2",
    "applicationCategory": "DeveloperApplication",
    "operatingSystem": "Not exercised"
  },
  "artifacts": {
    "transcript": "Ran 116 git commands; each one's exit status and output hash is in commands.json. Scope: acquisition and static inspection.",
    "sinkhole_log": "Not applicable: static source inspection (commands.json).",
    "canary_log": "Not applicable: static source inspection (commands.json).",
    "scanner_output": "Not applicable: static source inspection (commands.json).",
    "normalized_text": "{\n  \"listing\": {\n    \"skills\": [\n      {\n        \"path\": \".claude/skills/speckit-analyze/SKILL.md\",\n        \"name\": \"speckit-analyze\",\n        \"description\": \"Perform a non-destructive cross-artifact consistency and quality analysis across spec.md, plan.md, and tasks.md after task generation.\",\n        \"files\": {\n          \".claude/skills/speckit-analyze/SKILL.md\": \"3237cd827194efaf6bb06ba05ef9bc1a703a223d362f5e34d0558c5a38ae34d0\"\n        }\n      },\n      {\n        \"path\": \".claude/skills/speckit-checklist/SKILL.md\",\n        \"name\": \"speckit-checklist\",\n        \"description\": \"Generate a custom checklist for the current feature based on user requirements.\",\n        \"files\": {\n          \".claude/skills/speckit-checklist/SKILL.md\": \"5dc436df0c727e9078bf182dd385e5cb1b60ee67ebe644d3f659ec12e3b78abb\"\n        }\n      },\n      {\n        \"path\": \".claude/skills/speckit-clarify/SKILL.md\",\n        \"name\": \"speckit-clarify\",\n        \"description\": \"Identify underspecified areas in the current feature spec by asking up to 5 highly targeted clarification questions and encoding answers back into the spec.\",\n        \"files\": {\n          \".claude/skills/speckit-clarify/SKILL.md\": \"164f49ef87cb2e922585316f5281b455a8e1940b1efd25317d517a567acae472\"\n        }\n      },\n      {\n        \"path\": \".claude/skills/speckit-constitution/SKILL.md\",\n        \"name\": \"speckit-constitution\",\n        \"description\": \"Create or update the project constitution from interactive or provided principle inputs.\",\n        \"files\": {\n          \".claude/skills/speckit-constitution/SKILL.md\": \"60c27f3962e78edf204b2b2e7cba91a616980860b61d6bf2051dc6965d483dda\"\n        }\n      },\n      {\n        \"path\": \".claude/skills/speckit-converge/SKILL.md\",\n        \"name\": \"speckit-converge\",\n        \"description\": \"Assess the current codebase against the feature's spec, plan, and tasks, then append any remaining unbuilt work as new tasks to tasks.md so implement can complete it.\",\n        \"files\": {\n          \".claude/skills/speckit-converge/SKILL.md\": \"fac66428c93e6e4fa0559a618a620d979fd8124d567f6f79db741fce0081cb3d\"\n        }\n      },\n      {\n        \"path\": \".claude/skills/speckit-implement/SKILL.md\",\n        \"name\": \"speckit-implement\",\n        \"description\": \"Execute the implementation plan by processing and executing all tasks defined in tasks.md\",\n        \"files\": {\n          \".claude/skills/speckit-implement/SKILL.md\": \"7186d59488f89dcf23abd17baed118b05c242d4f62f1de3f9f44625a2b1728f0\"\n        }\n      },\n      {\n        \"path\": \".claude/skills/speckit-plan/SKILL.md\",\n        \"name\": \"speckit-plan\",\n        \"description\": \"Execute the implementation planning workflow using the plan template to generate design artifacts.\",\n        \"files\": {\n          \".claude/skills/speckit-plan/SKILL.md\": \"9e97fc0b4ce895c70a1ea720dc0377618c23e27c83ecf4d87b6e0f6c323790a4\"\n        }\n      },\n      {\n        \"path\": \".claude/skills/speckit-specify/SKILL.md\",\n        \"name\": \"speckit-specify\",\n        \"description\": \"Create or update the feature specification from a natural language feature description.\",\n        \"files\": {\n          \".claude/skills/speckit-specify/SKILL.md\": \"d4d93f2444355136e78bb533988aa2dd560dc4b258f4923f67b1a437e7de38f8\"\n        }\n      },\n      {\n        \"path\": \".claude/skills/speckit-tasks/SKILL.md\",\n        \"name\": \"speckit-tasks\",\n        \"description\": \"Generate an actionable, dependency-ordered tasks.md for the feature based on available design artifacts.\",\n        \"files\": {\n          \".claude/skills/speckit-tasks/SKILL.md\": \"d148aeda1011260c4465c5f105fa1e045a0b0224ccb3e6e0c1ec32c732cae1ae\"\n        }\n      },\n      {\n        \"path\": \".claude/skills/speckit-taskstoissues/SKILL.md\",\n        \"name\": \"speckit-taskstoissues\",\n        \"description\": \"Convert existing tasks into actionable, dependency-ordered GitHub issues for the feature based on available design artifacts.\",\n        \"files\": {\n          \".claude/skills/speckit-taskstoissues/SKILL.md\": \"464bbaf464a28ffa371b0452599c18e7cb5799630148d9f945e6a4d7066a1234\"\n        }\n      },\n      {\n        \"path\": \"plugins/conventions/skills/adr/SKILL.md\",\n        \"name\": \"adr\",\n        \"description\": \"Writes a new Architecture Decision Record (next number, NNNN-<slug>.md) in the ADR directory from .claude/conventions.json#adrDir (default docs/adr) for a long-term choice made during development. Use when a task introduces a new dependency category, storage format, protocol between apps, ownership boundary, or anything a future dev would ask \\\"why?\\\" about — before opening the PR that carries the change.\",\n        \"files\": {\n          \"plugins/conventions/skills/adr/SKILL.md\": \"8700329ef3e01f07cbb853702ded34e125c5a1af7efffff92c72df578bca5882\"\n        }\n      },\n      {\n        \"path\": \"plugins/conventions/skills/app-rules/SKILL.md\",\n        \"name\": \"app-rules\",\n        \"description\": \"Generates the project-specific rules of one app (or of the single app of a single-app repository) by analysing its code — rings, composition root, import boundaries, external dependencies behind ports, test layout, generated code, recurring patterns — and writes .claude/rules/<app>/architecture.md, optionally conventions.md, the <app>-dev agent and the app's rows of the Test layout table, after showing a preview and waiting for confirmation. Use after /conventions:port-claude-config has written the generic rules, when a repo has no .claude/rules/<app>/architecture.md, or when the user asks for project or app rules (\\\"write the rules for <app>\\\", \\\"document the architecture of <app>\\\").\",\n        \"files\": {\n          \"plugins/conventions/skills/app-rules/SKILL.md\": \"25ecdaf80fa3bcbc72c36a332ae7fe790c809e264300f66bba62af72ddd7ccb9\"\n        }\n      },\n      {\n        \"path\": \"plugins/conventions/skills/deps-audit/SKILL.md\",\n        \"name\": \"deps-audit\",\n        \"description\": \"Runs the CI dependency audit locally with the repo's package manager and resolves advisories the repo way — exact-pinned bumps for direct dependencies first, an override/resolution pin for transitives — then re-audits and re-verifies. Use only when the user asks to audit dependencies or to fix a security advisory reported by CI.\",\n        \"files\": {\n          \"plugins/conventions/skills/deps-audit/SKILL.md\": \"83dff0d8b777b43e8f33ccb4620559f17039f77f52f8608280af13f78396b0c6\"\n        }\n      },\n      {\n        \"path\": \"plugins/conventions/skills/port-claude-config/SKILL.md\",\n        \"name\": \"port-claude-config\",\n        \"description\": \"Ports the conventions rule set into the current repository — discovers the stack, CI sequences, branches and existing Claude config, shows a mapping table plus the open questions, waits for confirmation, then writes CLAUDE.md, .claude/rules/*, one commands.md per app, the generated AGENTS.md for Codex, .claude/settings.json, .claude/conventions.json and the .gitignore negations. Use when a repo has just installed the plugin, when hooks warn that .claude/conventions.json is missing, when the user says \\\"port the rules\\\", \\\"set up the conventions\\\", \\\"bootstrap the Claude config\\\", or with --refresh to re-apply template changes.\",\n        \"files\": {\n          \"plugins/conventions/skills/port-claude-config/SKILL.md\": \"193248f64014274572d549080a2cdba1856371b1a0052da76c039a931816f6fd\",\n          \"plugins/conventions/skills/port-claude-config/scripts/discover.sh\": \"60a21ffabc3854aab94b788acc4b9a8a022131dd0d62e92510960b14c05d76a1\",\n          \"plugins/conventions/skills/port-claude-config/scripts/refresh.sh\": \"45c993d7f5f37b3508b9b032aafe712405ec0e215b1d76acfd902dca932f0532\",\n          \"plugins/conventions/skills/port-claude-config/scripts/render.sh\": \"f5e10b98abd45a798bf5671880634f4a7caba8484237ad7b43538bb52bf36961\"\n        }\n      },\n      {\n        \"path\": \"plugins/conventions/skills/pr/SKILL.md\",\n        \"name\": \"pr\",\n        \"description\": \"Opens the current branch's pull request the repo way — conventional title, body with what/why/verification, base = the integration branch from .claude/conventions.json — and, when the diff exceeds the configured size cap, splits it into a GitHub-native stack of chained PRs by logical group. Use for every PR instead of a raw gh pr create, and whenever the user says \\\"open a PR\\\", \\\"create the PR\\\" or \\\"stack this\\\".\",\n        \"files\": {\n          \"plugins/conventions/skills/pr/SKILL.md\": \"85771232f88e9964ca06ca3ec53d11b83354b89baed9576f0b85ace86fa49f9b\"\n        }\n      },\n      {\n        \"path\": \"plugins/conventions/skills/release/SKILL.md\",\n        \"name\": \"release\",\n        \"description\": \"Prepares the deliberate release PR from the integration branch to the production branch (both from .claude/conventions.json) — changelog grouped by app, conventional title, deploy notes — and waits for checks. Never merges. Use only when the user asks to release / ship / deploy the integration branch.\",\n        \"files\": {\n          \"plugins/conventions/skills/release/SKILL.md\": \"8e680302a802fa46d2f9ca591d33165d8593094f4ef751441b19200d4a58e8ac\"\n        }\n      },\n      {\n        \"path\": \"plugins/conventions/skills/test-gaps/SKILL.md\",\n        \"name\": \"test-gaps\",\n        \"description\": \"Reports which changed source files have no matching test, using the \\\"Test layout\\\" table in .claude/rules/architecture.md to know where each layer's tests live. Use before claiming a change done and before opening a PR; the test-writer agent fills the gaps it reports. Prerequisite - a `verifier` agent must exist in ~/.claude/agents/ (this skill forks into it).\",\n        \"files\": {\n          \"plugins/conventions/skills/test-gaps/SKILL.md\": \"7bb905ab6e487d78dac23ca08c6251deef83d8c7f4e4a8ff57b632b3c0371e0f\"\n        }\n      },\n      {\n        \"path\": \"plugins/conventions/skills/verify-app/SKILL.md\",\n        \"name\": \"verify-app\",\n        \"description\": \"Runs one app's exact CI sequence locally (an app named in .claude/conventions.json#apps, or all) in a forked verifier context and returns a triage with exact error text. Use before claiming any change done and before opening a PR. Prerequisite - a `verifier` agent must exist in ~/.claude/agents/ (this skill forks into it).\",\n        \"files\": {\n          \"plugins/conventions/skills/verify-app/SKILL.md\": \"b6b9e0b26f9740bea48d8d5ad262576e4bf634fe5e9465de0ea885805bd6e7d3\"\n        }\n      }\n    ],\n    \"hooks\": [\n      {\n        \"path\": \"plugins/conventions/hooks/hooks.json\",\n        \"sha256\": \"1d297d41b1391975b38ae3eb2cf03161d3eacb79a4ebc5162fe33eed46367d43\",\n        \"event\": \"PreToolUse\",\n        \"matcher\": \"Bash\",\n        \"declaration\": {\n          \"type\": \"command\",\n          \"command\": \"${CLAUDE_PLUGIN_ROOT}/hooks/guard-git.sh\",\n          \"timeout\": 10\n        },\n        \"executed\": false\n      },\n      {\n        \"path\": \"plugins/conventions/hooks/hooks.json\",\n        \"sha256\": \"1d297d41b1391975b38ae3eb2cf03161d3eacb79a4ebc5162fe33eed46367d43\",\n        \"event\": \"PreToolUse\",\n        \"matcher\": \"Bash\",\n        \"declaration\": {\n          \"type\": \"command\",\n          \"command\": \"${CLAUDE_PLUGIN_ROOT}/hooks/deps-exact.sh\",\n          \"timeout\": 10\n        },\n        \"executed\": false\n      },\n      {\n        \"path\": \"plugins/conventions/hooks/hooks.json\",\n        \"sha256\": \"1d297d41b1391975b38ae3eb2cf03161d3eacb79a4ebc5162fe33eed46367d43\",\n        \"event\": \"PreToolUse\",\n        \"matcher\": \"Bash\",\n        \"declaration\": {\n          \"type\": \"command\",\n          \"command\": \"${CLAUDE_PLUGIN_ROOT}/hooks/pr-size.sh\",\n          \"timeout\": 20\n        },\n        \"executed\": false\n      },\n      {\n        \"path\": \"plugins/conventions/hooks/hooks.json\",\n        \"sha256\": \"1d297d41b1391975b38ae3eb2cf03161d3eacb79a4ebc5162fe33eed46367d43\",\n        \"event\": \"PostToolUse\",\n        \"matcher\": \"Edit|Write\",\n        \"declaration\": {\n          \"type\": \"command\",\n          \"command\": \"${CLAUDE_PLUGIN_ROOT}/hooks/format.sh\",\n          \"timeout\": 30\n        },\n        \"executed\": false\n      },\n      {\n        \"path\": \"plugins/conventions/hooks/hooks.json\",\n        \"sha256\": \"1d297d41b1391975b38ae3eb2cf03161d3eacb79a4ebc5162fe33eed46367d43\",\n        \"event\": \"PostToolUse\",\n        \"matcher\": \"Edit|Write\",\n        \"declaration\": {\n          \"type\": \"command\",\n          \"command\": \"${CLAUDE_PLUGIN_ROOT}/hooks/agents-md.sh\",\n          \"timeout\": 30\n        },\n        \"executed\": false\n      },\n      {\n        \"path\": \"plugins/conventions/hooks/hooks.json\",\n        \"sha256\": \"1d297d41b1391975b38ae3eb2cf03161d3eacb79a4ebc5162fe33eed46367d43\",\n        \"event\": \"SessionStart\",\n        \"matcher\": null,\n        \"declaration\": {\n          \"type\": \"command\",\n          \"command\": \"${CLAUDE_PLUGIN_ROOT}/hooks/branch-info.sh\",\n          \"timeout\": 5\n        },\n        \"executed\": false\n      }\n    ],\n    \"executions\": []\n  }\n}"
  },
  "review_input": {
    "identity_artifact": "identity.json",
    "evidence_sha256": {
      "LOCK.json": "5a037b998588d4760a493c9f1d8802f2a1575a427251b0b83ece3d2d9d73f00d",
      "commands.json": "fae9cffab61dc5b77cead4ebd97c759bf92f0f66e47ac5ee69fa19478cd52a6f",
      "complete.json": "91b504b43905fdc009504d516c45eea831f39a1995b9e7d69987c9756c936d6f",
      "identity.json": "e574d012808d14fc52bd84edb920dff7b2c5031aeb43fb616af25fbd95c1dc6f",
      "listing.json": "7eacd7d05bb7a426c2b047d0e61e52d0847fd6b2db023f33064efe4351bd913e",
      "selection.json": "43f140a69eebb60d0331a1bad3b009d4bf03a6371565a788e20ac1d52c756405"
    },
    "claims": [
      {
        "id": "acquired",
        "field": "summary",
        "text": "Pinned source declarations and file hashes were listed.",
        "sources": [
          "LOCK.json",
          "listing.json",
          "commands.json"
        ]
      },
      {
        "id": "listed",
        "field": "outcome",
        "text": "Listed 18 skill declarations. Ran 116 git commands; each one's exit status and output hash is in commands.json. Scope: acquisition and static inspection.",
        "sources": [
          "LOCK.json",
          "listing.json",
          "commands.json"
        ]
      },
      {
        "id": "tree",
        "field": "rule_results.0",
        "text": "The retained source tree matches its acquisition manifest.",
        "sources": [
          "LOCK.json",
          "listing.json",
          "commands.json"
        ]
      },
      {
        "id": "declared",
        "field": "rule_results.1",
        "text": "Declared skill names (listing.json): speckit-analyze; speckit-checklist; speckit-clarify; speckit-constitution; speckit-converge; speckit-implement; speckit-plan; speckit-specify; speckit-tasks; speckit-taskstoissues; adr; app-rules; deps-audit; port-claude-config; pr; release; test-gaps; verify-app",
        "sources": [
          "LOCK.json",
          "listing.json",
          "commands.json"
        ]
      }
    ]
  },
  "review": {
    "kind": "machine-checked",
    "date": "2026-10-22",
    "reviewed_sha256": "bebd60952378a9e6fbd982ce41deab422852a440a6cf2e38ba73352744ab0d00",
    "gates": "5979460db189100692f8b4cc702deffe814c99293a536372ed157966cc72c145",
    "codex": "0e59cac605671aac02ac3132d5705c750890d2756b75cb7150b1d6e25a9f616d",
    "grok": "66973968278088e1f7eb8a6bf477b4fe49fd0de98cb2129e36df7dad975c9372",
    "summary": "Deterministic gates passed; every claim rebuilt from evidence with a reviewed template; Grok reported no standing refutation."
  }
}
