← Product & App ArchitectCONTENT HISTORY

Update to Product & App Architect

Snapshot Nov 3, 2026 · 00:12 UTC · version 0.2.0

WHAT CHANGED

Package or technical metadata updated

Package or technical metadata updated

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Save Product & App Architect and check future changes in Following.

Up to 3 plugins free · no card required.

All fields and original values.

These are saved file metadata. Open a changed file to read its text edits.

Package file

Before

Sep 30, 2026 · 23:18 UTC

0d9d54cca4dc75f2e0859aa197f89e61e63a521fb35c2662eb7f627f5ee48ee5

After

Nov 3, 2026 · 00:12 UTC

a68fabf9b0f32b06bb4312f9656e6efa1e07930c88945be4aba9eb1e1166a8f2

Package file

Before

Sep 30, 2026 · 23:18 UTC

2403

After

Nov 3, 2026 · 00:12 UTC

3462

Package file

Before

Sep 30, 2026 · 23:18 UTC

Not present

After

Nov 3, 2026 · 00:12 UTC

{"sha256":"8f53e827b1e02811db86d462a47ead3294cc8d7610b891d513cee721df4bccd5","size":760}

Package file

Before

Sep 30, 2026 · 23:18 UTC

{"sha256":"39c086be35d10465bdbca0b261d16a32ba1bd3a595c8811c8667a234b5a5626b","size":2655}

After

Nov 3, 2026 · 00:12 UTC

Not present

Compare saved observations

Download comparison JSON

Changed files

Choose a file to see its text changes. Binary or large files show metadata only.

.codex-plugin/plugin.json →

CHANGELOG.md →

PLUGIN_CREATOR_PROMPT.md →

README.md →

SUBMISSION.md →

UPGRADE_AUDIT.md →

assets/composer-icon.svg →

assets/icon.svg →

benchmarks/cases.json →

benchmarks/reviewer-cases.md →

docs/RESEARCH_NOTES.md →

examples/sample-spec.json →

plugin.json →

references/architecture-decisions.md →

references/build-handoff.md →

references/data-api-contracts.md →

references/feature-specs.md →

references/multi-agent-orchestration.md →

references/nonfunctional-quality.md →

references/official-sources.md →

references/original/app_architecture_patterns.md →

references/original/official_source_registry.md →

references/original/original-skill-v0.1.md →

references/original/prd_and_feature_spec_templates.md →

references/original/product_discovery_framework.md →

references/original/product_readiness_and_handoff.md →

references/original/ux_flow_and_state_patterns.md →

references/platform-product-patterns.md →

references/product-audit.md →

references/product-discovery.md →

references/product-metrics.md →

references/research-and-evidence.md →

references/rollout-and-governance.md →

references/spec-writing.md →

references/ux-and-accessibility.md →

scripts/__pycache__/spec_check.cpython-313.pyc →

scripts/spec_check.py →

scripts/validate_package.py →

skills/architect-application/SKILL.md →

skills/audit-existing-product/SKILL.md →

skills/compare-solutions/SKILL.md →

skills/define-metrics/SKILL.md →

skills/design-data-apis/SKILL.md →

skills/design-user-journey/SKILL.md →

skills/frame-opportunity/SKILL.md →

skills/get-started/SKILL.md →

skills/orchestrate-specialists/SKILL.md →

skills/plan-ai-feature/SKILL.md →

skills/plan-delivery/SKILL.md →

skills/prioritize-roadmap/SKILL.md →

skills/product-app-architect/SKILL.md →

skills/product-app-architect/agents/openai.yaml →

skills/product-app-architect/assets/icon.svg →

skills/product-app-architect/references/app_architecture_patterns.md →

skills/product-app-architect/references/official_source_registry.md →

skills/product-app-architect/references/prd_and_feature_spec_templates.md →

skills/product-app-architect/references/product_discovery_framework.md →

skills/product-app-architect/references/product_readiness_and_handoff.md →

skills/product-app-architect/references/ux_flow_and_state_patterns.md →

skills/review-launch-readiness/SKILL.md →

skills/review-security-quality/SKILL.md →

skills/specify-feature/SKILL.md →

skills/validate-idea/SKILL.md →

skills/write-product-spec/SKILL.md →

submission/listing-and-prompts.md →

submission/public-submission-checklist.md →

submission/release-notes.md →

submission/test-cases.md →

templates/agent-handoff.md →

templates/architecture-decision.md →

templates/data-api-contract.md →

templates/engineering-handoff.md →

templates/feature-delta.md →

templates/measurement-plan.md →

templates/prd.md →

templates/product-brief.md →

templates/release-check.md →

templates/ux-flow.md →

tests/__pycache__/test_spec_check.cpython-313.pyc →

tests/test_spec_check.py →

references/data-api-contracts.md

− removed · + added

--- before
+++ after
@@ -0,0 +1,9 @@
+# Data, API and Integration Contracts
+
+Start from user actions and business invariants, not just database tables. Identify entities, ownership, identifiers, cardinalities, lifecycle, retention/deletion, audit events and tenant boundaries.
+
+API contracts specify purpose, auth scopes, input/output schemas, errors, pagination, rate limits, idempotency, retry semantics and versioning. Define conflicting writes and incomplete states. A destructive flow must include preview/confirmation when appropriate.
+
+Schema changes require migrations, backward compatibility checks, rollbacks and backfills appropriate to risk. External services need authentication, quotas, failure behavior, customer-data boundaries and compliance checks.
+
+Never pretend that an endpoint or schema exists without reading its implementation or authoritative specification.
Full technical diff · 83 changed fields

changed /files/.codex-plugin~1plugin.json/sha256

BEFORE
"0d9d54cca4dc75f2e0859aa197f89e61e63a521fb35c2662eb7f627f5ee48ee5"
AFTER
"a68fabf9b0f32b06bb4312f9656e6efa1e07930c88945be4aba9eb1e1166a8f2"

changed /files/.codex-plugin~1plugin.json/size

BEFORE
2403
AFTER
3462

added /files/CHANGELOG.md

BEFORE
Field was absent
AFTER
{
  "sha256": "8f53e827b1e02811db86d462a47ead3294cc8d7610b891d513cee721df4bccd5",
  "size": 760
}

removed /files/PLUGIN_CREATOR_PROMPT.md

BEFORE
{
  "sha256": "39c086be35d10465bdbca0b261d16a32ba1bd3a595c8811c8667a234b5a5626b",
  "size": 2655
}
AFTER
Field is absent

changed /files/README.md/sha256

BEFORE
"e7908119486e2d8488f9a06a7cc21cc26a0319511aae2074703e404e08788ef0"
AFTER
"47039919d3d5a2a205b8002a9ab1ac1e5f46e1f1a4b9802a8a31eb9e970721ac"

changed /files/README.md/size

BEFORE
1510
AFTER
1861

added /files/SUBMISSION.md

BEFORE
Field was absent
AFTER
{
  "sha256": "4710a58bacb6ac3d2f3b59cfab9bf59d35d0b7ed7e785ba4f20af4064f24b041",
  "size": 1385
}

added /files/UPGRADE_AUDIT.md

BEFORE
Field was absent
AFTER
{
  "sha256": "5453d7e9cc596e9cb86741bdd3617c4ee63e12f57c06ca03489fa6e694a70870",
  "size": 1316
}

added /files/assets~1composer-icon.svg

BEFORE
Field was absent
AFTER
{
  "sha256": "029f259d44ff10fe61ddb7e48a7927dae6c81e61dc04207f438ed09104fe6528",
  "size": 17717
}

removed /files/assets~1icon.svg

BEFORE
{
  "sha256": "029f259d44ff10fe61ddb7e48a7927dae6c81e61dc04207f438ed09104fe6528",
  "size": 17717
}
AFTER
Field is absent

added /files/benchmarks~1cases.json

BEFORE
Field was absent
AFTER
{
  "sha256": "629f7b83a93972759ed66039b85084b3bd640526dea5bfcbdf3c527922b45226",
  "size": 7290
}

added /files/benchmarks~1reviewer-cases.md

BEFORE
Field was absent
AFTER
{
  "sha256": "fece6dd82cc6c6ea7aa93a814b78518b2feb43f8d17a9bec7aad3e3b2f1f8950",
  "size": 1263
}

removed /files/docs~1RESEARCH_NOTES.md

BEFORE
{
  "sha256": "1d43f3c0822f2f5efc098732ac8071eab253496cddc472e714eb8e48f62b2edf",
  "size": 2654
}
AFTER
Field is absent

added /files/examples~1sample-spec.json

BEFORE
Field was absent
AFTER
{
  "sha256": "d27f5347a700498e0ddf8243ea2818e045432d2f0becd679c4a330ce82e01938",
  "size": 371
}

changed /files/plugin.json/sha256

BEFORE
"d55c9cec0e056be87ab6163bbefddb8f37604539c68ce79ea65c806e77b801fe"
AFTER
"91b2b04179bd5bb3fe6b55191d6b18da0ef107033f40a9b6c21d392b0c8be52b"

changed /files/plugin.json/size

BEFORE
2632
AFTER
3652

added /files/references~1architecture-decisions.md

BEFORE
Field was absent
AFTER
{
  "sha256": "f6794e5d192bf39071745ac71c28983642052bae33940a11664edfeba13839ea",
  "size": 1110
}

added /files/references~1build-handoff.md

BEFORE
Field was absent
AFTER
{
  "sha256": "e8022b6029ca78f93c0ab9451e00ccf1977db41693a3b199d8c69d537316f2e6",
  "size": 759
}

added /files/references~1data-api-contracts.md

BEFORE
Field was absent
AFTER
{
  "sha256": "83c4f7b5ca0beb431eae219d387cc6105828c1185a8f0b46ea0205810b81f173",
  "size": 845
}

added /files/references~1feature-specs.md

BEFORE
Field was absent
AFTER
{
  "sha256": "38b1b61fc97a690a8dd1fc8279700bf0edf7499d49b45e0ba35e0b2fc1e2aca8",
  "size": 946
}

added /files/references~1multi-agent-orchestration.md

BEFORE
Field was absent
AFTER
{
  "sha256": "1bec85fd8c08e726aa29f739caa67165bbf01b414a0c38234ae073d1eb2f151e",
  "size": 1056
}

added /files/references~1nonfunctional-quality.md

BEFORE
Field was absent
AFTER
{
  "sha256": "3918b051d4655da9f2a681ca1fad7e571ae633cb676f31035755861f007321a9",
  "size": 981
}

added /files/references~1official-sources.md

BEFORE
Field was absent
AFTER
{
  "sha256": "484cfb519ed29de5d1ce2407e3624bba2a24618c9cf87f3b3b825a22b93ae0a2",
  "size": 1035
}

added /files/references~1original~1app_architecture_patterns.md

BEFORE
Field was absent
AFTER
{
  "sha256": "4c13f20e149bb63e8d3746ffb66607b6f9740ab47d08dbc69323466991135e03",
  "size": 4092
}

added /files/references~1original~1official_source_registry.md

BEFORE
Field was absent
AFTER
{
  "sha256": "87c15f3a82732abcdddb2c967975512dbf18f744ac13639e6d15f69fd9f9ecc6",
  "size": 1394
}

added /files/references~1original~1original-skill-v0.1.md

BEFORE
Field was absent
AFTER
{
  "sha256": "4c5bf3e375a1591e27dc0bf477e314ef93055eba247bb8e10d60c67a33b68a50",
  "size": 7853
}

added /files/references~1original~1prd_and_feature_spec_templates.md

BEFORE
Field was absent
AFTER
{
  "sha256": "25ed6ee5b2d990440ff079123b083f0804b26519a79badb7d46eab407cfa3d10",
  "size": 3011
}

added /files/references~1original~1product_discovery_framework.md

BEFORE
Field was absent
AFTER
{
  "sha256": "0b905d58ecb024830ab447897024e65491466689604b31faafcca4b5800ff447",
  "size": 4076
}

added /files/references~1original~1product_readiness_and_handoff.md

BEFORE
Field was absent
AFTER
{
  "sha256": "ae40c6f1b37a0ac6760af5b1117b643640c50816cc6d40f903799da4e85b7063",
  "size": 3678
}

added /files/references~1original~1ux_flow_and_state_patterns.md

BEFORE
Field was absent
AFTER
{
  "sha256": "1face02676f17611d5a3cf576995a528930d43755f4e39d7ae1dbcf583886b0b",
  "size": 3784
}

added /files/references~1platform-product-patterns.md

BEFORE
Field was absent
AFTER
{
  "sha256": "f9e63170c3b7e01a1bde0b7f06e2886aa25a61a36b0865f490c0594c60a80089",
  "size": 1015
}

added /files/references~1product-audit.md

BEFORE
Field was absent
AFTER
{
  "sha256": "fa6b66665bc68337bac49fd3436d3d878b3d7adff158e10457d394ae0d194e7c",
  "size": 1090
}

added /files/references~1product-discovery.md

BEFORE
Field was absent
AFTER
{
  "sha256": "db1ae4910a80629a327816a002504b305765cf77b7e23fa391e6301d030a09df",
  "size": 1637
}

added /files/references~1product-metrics.md

BEFORE
Field was absent
AFTER
{
  "sha256": "9a0210369ed51b223f487ae816e525ab6921b8886170694811ad907d0cd9866c",
  "size": 863
}

added /files/references~1research-and-evidence.md

BEFORE
Field was absent
AFTER
{
  "sha256": "6847378acc4b68239d3fc6b4bf404992047a5e645e0a7857396a7110494c43a8",
  "size": 881
}

added /files/references~1rollout-and-governance.md

BEFORE
Field was absent
AFTER
{
  "sha256": "4f13c4f57a1e53014a8b976c345300787080ec793d0a9b6add8096f262c1cde1",
  "size": 709
}

added /files/references~1spec-writing.md

BEFORE
Field was absent
AFTER
{
  "sha256": "4a2a9fddbbcddda87dc8239e1af5f747e5c9ffdac75f5b6b59b720f463a7eec6",
  "size": 784
}

added /files/references~1ux-and-accessibility.md

BEFORE
Field was absent
AFTER
{
  "sha256": "2758d5be1b973277ad4a1a28b797fe4b4985eaeb313334b5186d619de645d5ca",
  "size": 983
}

added /files/scripts~1__pycache__~1spec_check.cpython-313.pyc

BEFORE
Field was absent
AFTER
{
  "sha256": "c1cbae4c35d6d955107c34d86ce09ea4eba137537cf6de542068614db54f67f5",
  "size": 5482
}

added /files/scripts~1spec_check.py

BEFORE
Field was absent
AFTER
{
  "sha256": "afb7e74c6e5fa0a6eb54c661c3f79128fdc37196baa951455b4ecccb8e5ac2df",
  "size": 2721
}

added /files/scripts~1validate_package.py

BEFORE
Field was absent
AFTER
{
  "sha256": "0ff6ce98ea98d13e546688fac86ebe2698a13c4ee060fc618c4e301acdedd4b8",
  "size": 2685
}

added /files/skills~1architect-application~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "dcc5e69ef54f1af82e5c91466dd18a52c6a465c3d25e6684a32d830978730bd6",
  "size": 1452
}

added /files/skills~1audit-existing-product~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "86d36a22f8867b461036eab36207031c0107c8f4790da873515415c819fb9420",
  "size": 1405
}

added /files/skills~1compare-solutions~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "6a505d74072d2165744b72998d191ae050e007c29338f4a56f8f8f3be1126f95",
  "size": 1285
}

added /files/skills~1define-metrics~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "1276991b08487fae66cb4bb0bacb18e8ff855ef37534499c7748da59a10a7a61",
  "size": 1224
}

added /files/skills~1design-data-apis~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "25ee89f1cfdf4f367ee6948be976f306b36cb86bacff1ffeb7d316a1fc10dba0",
  "size": 1268
}

added /files/skills~1design-user-journey~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "b5164943677d77f189ec3d2816e65e65edfe6f49e6dd5e6493c3eb7881edf34e",
  "size": 1359
}

added /files/skills~1frame-opportunity~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "e6afe7aeef96842865fe7977efd73bb05ac12c59dab350a1d760c5574f90c3e9",
  "size": 1431
}

added /files/skills~1get-started~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "aeb0f01cb82b41767a69387c98d0e43cd4f344569c05cc75ba53408e6b5999d9",
  "size": 1730
}

added /files/skills~1orchestrate-specialists~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "36bffe10bbdbed314c133626d443a38ab3dd8dde6f062b7b824763c1b266c886",
  "size": 1555
}

added /files/skills~1plan-ai-feature~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "b59b8c510d7ee39c63c2779b020273256da0827ece9e222e0af9c18742d7fcdc",
  "size": 1350
}

added /files/skills~1plan-delivery~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "1ef7d4054f4aace254254309cc0664bec8773477b642c9595a00163b45dfaa2e",
  "size": 1250
}

added /files/skills~1prioritize-roadmap~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "b282a042a73a50a9d092421d04922f0f518bd4f0db5891c4c01b518e79df2099",
  "size": 1275
}

removed /files/skills~1product-app-architect~1SKILL.md

BEFORE
{
  "sha256": "4c5bf3e375a1591e27dc0bf477e314ef93055eba247bb8e10d60c67a33b68a50",
  "size": 7853
}
AFTER
Field is absent

removed /files/skills~1product-app-architect~1agents~1openai.yaml

BEFORE
{
  "sha256": "8bcab728ecacde76f8fc777bfd79c22331ae2c44f601cb1793bfed67ddd9f6ca",
  "size": 302
}
AFTER
Field is absent

removed /files/skills~1product-app-architect~1assets~1icon.svg

BEFORE
{
  "sha256": "029f259d44ff10fe61ddb7e48a7927dae6c81e61dc04207f438ed09104fe6528",
  "size": 17717
}
AFTER
Field is absent

removed /files/skills~1product-app-architect~1references~1app_architecture_patterns.md

BEFORE
{
  "sha256": "4c13f20e149bb63e8d3746ffb66607b6f9740ab47d08dbc69323466991135e03",
  "size": 4092
}
AFTER
Field is absent

removed /files/skills~1product-app-architect~1references~1official_source_registry.md

BEFORE
{
  "sha256": "87c15f3a82732abcdddb2c967975512dbf18f744ac13639e6d15f69fd9f9ecc6",
  "size": 1394
}
AFTER
Field is absent

removed /files/skills~1product-app-architect~1references~1prd_and_feature_spec_templates.md

BEFORE
{
  "sha256": "25ed6ee5b2d990440ff079123b083f0804b26519a79badb7d46eab407cfa3d10",
  "size": 3011
}
AFTER
Field is absent

removed /files/skills~1product-app-architect~1references~1product_discovery_framework.md

BEFORE
{
  "sha256": "0b905d58ecb024830ab447897024e65491466689604b31faafcca4b5800ff447",
  "size": 4076
}
AFTER
Field is absent

removed /files/skills~1product-app-architect~1references~1product_readiness_and_handoff.md

BEFORE
{
  "sha256": "ae40c6f1b37a0ac6760af5b1117b643640c50816cc6d40f903799da4e85b7063",
  "size": 3678
}
AFTER
Field is absent

removed /files/skills~1product-app-architect~1references~1ux_flow_and_state_patterns.md

BEFORE
{
  "sha256": "1face02676f17611d5a3cf576995a528930d43755f4e39d7ae1dbcf583886b0b",
  "size": 3784
}
AFTER
Field is absent

added /files/skills~1review-launch-readiness~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "5e3909af3554aa543a67b2c6e220ac086d9bf34c9c72dd9cbfd746cf783e95d8",
  "size": 1349
}

added /files/skills~1review-security-quality~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "4512e0ea486faf401d56c6d40ea3d4a2b0b218d53218fa3f227ed1df74c67788",
  "size": 1356
}

added /files/skills~1specify-feature~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "3058e5d5960a0670376778ad4c1eaadde21f8abc2d68a0d1ebd4c3c23df90468",
  "size": 1266
}

added /files/skills~1validate-idea~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "d64bcee07204967390186c3c8d03f78ab8574ea949ef78b2517f2ad83839c0b3",
  "size": 1331
}

added /files/skills~1write-product-spec~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "d00d23f2f0aa9a63a93eee3176cbdf43cb8ede3176f22a318588f878964f294c",
  "size": 1310
}

removed /files/submission~1listing-and-prompts.md

BEFORE
{
  "sha256": "e1a3241c357057fec3f70d381f794d6d46b46cc7194f06bf056ffe10d978f860",
  "size": 1714
}
AFTER
Field is absent

removed /files/submission~1public-submission-checklist.md

BEFORE
{
  "sha256": "aed4f6dde7a537904710cb2d5900f5b0efb85afb8815c6d9c19d1aa9dbfe2a07",
  "size": 1593
}
AFTER
Field is absent

removed /files/submission~1release-notes.md

BEFORE
{
  "sha256": "d565dfa9e980124d21871d9273815c81a792fe5168893b47d9820191bed5f73f",
  "size": 355
}
AFTER
Field is absent

removed /files/submission~1test-cases.md

BEFORE
{
  "sha256": "5c65257462f19b525f095f8600d5c08b88398ecb6ab6d3e0a86befc3cb7a3b81",
  "size": 4149
}
AFTER
Field is absent

added /files/templates~1agent-handoff.md

BEFORE
Field was absent
AFTER
{
  "sha256": "532afbb8d92ae666420679690236600d26c5198456e4f71c6a2af0278291736f",
  "size": 291
}

added /files/templates~1architecture-decision.md

BEFORE
Field was absent
AFTER
{
  "sha256": "e960452e90527c0592d4ae2e042a43d2a5041706049a4c0e0c6ef2fb90656bf8",
  "size": 376
}

added /files/templates~1data-api-contract.md

BEFORE
Field was absent
AFTER
{
  "sha256": "c0dfb8c5325792a33a0847e48940d2de5899ef8caa4d2619efd7d657b9d63da1",
  "size": 343
}

added /files/templates~1engineering-handoff.md

BEFORE
Field was absent
AFTER
{
  "sha256": "8e391c476eaaee64cb6a638af571d93ca15e99fc13c18af2e990774cd58bb81c",
  "size": 432
}

added /files/templates~1feature-delta.md

BEFORE
Field was absent
AFTER
{
  "sha256": "c942a288a7965eaca69e4c7bbd7f50855924ea37f365c1435e46ef4d1b92d256",
  "size": 422
}

added /files/templates~1measurement-plan.md

BEFORE
Field was absent
AFTER
{
  "sha256": "3da8c12c9b34ce886c8e77d55a72bbfae034060ada4f0b5fcf357130414da7b6",
  "size": 320
}

added /files/templates~1prd.md

BEFORE
Field was absent
AFTER
{
  "sha256": "26d96feec5debca2e5cc2c7034a0f5a93c316f65e7c4c043a9653537781f105e",
  "size": 649
}

added /files/templates~1product-brief.md

BEFORE
Field was absent
AFTER
{
  "sha256": "798c6c392566381866aee02630fd6cb80ec4594fc6b994d0697407db9967dab3",
  "size": 391
}

added /files/templates~1release-check.md

BEFORE
Field was absent
AFTER
{
  "sha256": "bd0816e6dbeccb8661d23ca642aff2d02e24fb8ed714b1bd6027ed1e8ae0d247",
  "size": 484
}

added /files/templates~1ux-flow.md

BEFORE
Field was absent
AFTER
{
  "sha256": "03ed6c3c8fe0390c5e0ba7d65bb3fd3132e827da7a6458e149082be32b4fae85",
  "size": 318
}

added /files/tests~1__pycache__~1test_spec_check.cpython-313.pyc

BEFORE
Field was absent
AFTER
{
  "sha256": "e47617c4ac21856813191d03a9bf93bff46b5b4d5c08385496e952d3b6b6d5c1",
  "size": 6108
}

added /files/tests~1test_spec_check.py

BEFORE
Field was absent
AFTER
{
  "sha256": "6021c0eb9e1d36086efa7b44d724c38adeabf5fb6cd49743b72512e5c3dfd611",
  "size": 2391
}
Full snapshot data
{
  "files": {
    ".codex-plugin/assets/composer-icon.svg": {
      "sha256": "029f259d44ff10fe61ddb7e48a7927dae6c81e61dc04207f438ed09104fe6528",
      "size": 17717
    },
    ".codex-plugin/assets/logo.svg": {
      "sha256": "029f259d44ff10fe61ddb7e48a7927dae6c81e61dc04207f438ed09104fe6528",
      "size": 17717
    },
    ".codex-plugin/plugin.json": {
      "sha256": "a68fabf9b0f32b06bb4312f9656e6efa1e07930c88945be4aba9eb1e1166a8f2",
      "size": 3462
    },
    "CHANGELOG.md": {
      "sha256": "8f53e827b1e02811db86d462a47ead3294cc8d7610b891d513cee721df4bccd5",
      "size": 760
    },
    "README.md": {
      "sha256": "47039919d3d5a2a205b8002a9ab1ac1e5f46e1f1a4b9802a8a31eb9e970721ac",
      "size": 1861
    },
    "SUBMISSION.md": {
      "sha256": "4710a58bacb6ac3d2f3b59cfab9bf59d35d0b7ed7e785ba4f20af4064f24b041",
      "size": 1385
    },
    "UPGRADE_AUDIT.md": {
      "sha256": "5453d7e9cc596e9cb86741bdd3617c4ee63e12f57c06ca03489fa6e694a70870",
      "size": 1316
    },
    "assets/composer-icon.svg": {
      "sha256": "029f259d44ff10fe61ddb7e48a7927dae6c81e61dc04207f438ed09104fe6528",
      "size": 17717
    },
    "assets/logo.svg": {
      "sha256": "029f259d44ff10fe61ddb7e48a7927dae6c81e61dc04207f438ed09104fe6528",
      "size": 17717
    },
    "benchmarks/cases.json": {
      "sha256": "629f7b83a93972759ed66039b85084b3bd640526dea5bfcbdf3c527922b45226",
      "size": 7290
    },
    "benchmarks/reviewer-cases.md": {
      "sha256": "fece6dd82cc6c6ea7aa93a814b78518b2feb43f8d17a9bec7aad3e3b2f1f8950",
      "size": 1263
    },
    "examples/sample-spec.json": {
      "sha256": "d27f5347a700498e0ddf8243ea2818e045432d2f0becd679c4a330ce82e01938",
      "size": 371
    },
    "plugin.json": {
      "sha256": "91b2b04179bd5bb3fe6b55191d6b18da0ef107033f40a9b6c21d392b0c8be52b",
      "size": 3652
    },
    "references/architecture-decisions.md": {
      "sha256": "f6794e5d192bf39071745ac71c28983642052bae33940a11664edfeba13839ea",
      "size": 1110
    },
    "references/build-handoff.md": {
      "sha256": "e8022b6029ca78f93c0ab9451e00ccf1977db41693a3b199d8c69d537316f2e6",
      "size": 759
    },
    "references/data-api-contracts.md": {
      "sha256": "83c4f7b5ca0beb431eae219d387cc6105828c1185a8f0b46ea0205810b81f173",
      "size": 845
    },
    "references/feature-specs.md": {
      "sha256": "38b1b61fc97a690a8dd1fc8279700bf0edf7499d49b45e0ba35e0b2fc1e2aca8",
      "size": 946
    },
    "references/multi-agent-orchestration.md": {
      "sha256": "1bec85fd8c08e726aa29f739caa67165bbf01b414a0c38234ae073d1eb2f151e",
      "size": 1056
    },
    "references/nonfunctional-quality.md": {
      "sha256": "3918b051d4655da9f2a681ca1fad7e571ae633cb676f31035755861f007321a9",
      "size": 981
    },
    "references/official-sources.md": {
      "sha256": "484cfb519ed29de5d1ce2407e3624bba2a24618c9cf87f3b3b825a22b93ae0a2",
      "size": 1035
    },
    "references/original/app_architecture_patterns.md": {
      "sha256": "4c13f20e149bb63e8d3746ffb66607b6f9740ab47d08dbc69323466991135e03",
      "size": 4092
    },
    "references/original/official_source_registry.md": {
      "sha256": "87c15f3a82732abcdddb2c967975512dbf18f744ac13639e6d15f69fd9f9ecc6",
      "size": 1394
    },
    "references/original/original-skill-v0.1.md": {
      "sha256": "4c5bf3e375a1591e27dc0bf477e314ef93055eba247bb8e10d60c67a33b68a50",
      "size": 7853
    },
    "references/original/prd_and_feature_spec_templates.md": {
      "sha256": "25ed6ee5b2d990440ff079123b083f0804b26519a79badb7d46eab407cfa3d10",
      "size": 3011
    },
    "references/original/product_discovery_framework.md": {
      "sha256": "0b905d58ecb024830ab447897024e65491466689604b31faafcca4b5800ff447",
      "size": 4076
    },
    "references/original/product_readiness_and_handoff.md": {
      "sha256": "ae40c6f1b37a0ac6760af5b1117b643640c50816cc6d40f903799da4e85b7063",
      "size": 3678
    },
    "references/original/ux_flow_and_state_patterns.md": {
      "sha256": "1face02676f17611d5a3cf576995a528930d43755f4e39d7ae1dbcf583886b0b",
      "size": 3784
    },
    "references/platform-product-patterns.md": {
      "sha256": "f9e63170c3b7e01a1bde0b7f06e2886aa25a61a36b0865f490c0594c60a80089",
      "size": 1015
    },
    "references/product-audit.md": {
      "sha256": "fa6b66665bc68337bac49fd3436d3d878b3d7adff158e10457d394ae0d194e7c",
      "size": 1090
    },
    "references/product-discovery.md": {
      "sha256": "db1ae4910a80629a327816a002504b305765cf77b7e23fa391e6301d030a09df",
      "size": 1637
    },
    "references/product-metrics.md": {
      "sha256": "9a0210369ed51b223f487ae816e525ab6921b8886170694811ad907d0cd9866c",
      "size": 863
    },
    "references/research-and-evidence.md": {
      "sha256": "6847378acc4b68239d3fc6b4bf404992047a5e645e0a7857396a7110494c43a8",
      "size": 881
    },
    "references/rollout-and-governance.md": {
      "sha256": "4f13c4f57a1e53014a8b976c345300787080ec793d0a9b6add8096f262c1cde1",
      "size": 709
    },
    "references/spec-writing.md": {
      "sha256": "4a2a9fddbbcddda87dc8239e1af5f747e5c9ffdac75f5b6b59b720f463a7eec6",
      "size": 784
    },
    "references/ux-and-accessibility.md": {
      "sha256": "2758d5be1b973277ad4a1a28b797fe4b4985eaeb313334b5186d619de645d5ca",
      "size": 983
    },
    "scripts/__pycache__/spec_check.cpython-313.pyc": {
      "sha256": "c1cbae4c35d6d955107c34d86ce09ea4eba137537cf6de542068614db54f67f5",
      "size": 5482
    },
    "scripts/spec_check.py": {
      "sha256": "afb7e74c6e5fa0a6eb54c661c3f79128fdc37196baa951455b4ecccb8e5ac2df",
      "size": 2721
    },
    "scripts/validate_package.py": {
      "sha256": "0ff6ce98ea98d13e546688fac86ebe2698a13c4ee060fc618c4e301acdedd4b8",
      "size": 2685
    },
    "skills/architect-application/SKILL.md": {
      "sha256": "dcc5e69ef54f1af82e5c91466dd18a52c6a465c3d25e6684a32d830978730bd6",
      "size": 1452
    },
    "skills/audit-existing-product/SKILL.md": {
      "sha256": "86d36a22f8867b461036eab36207031c0107c8f4790da873515415c819fb9420",
      "size": 1405
    },
    "skills/compare-solutions/SKILL.md": {
      "sha256": "6a505d74072d2165744b72998d191ae050e007c29338f4a56f8f8f3be1126f95",
      "size": 1285
    },
    "skills/define-metrics/SKILL.md": {
      "sha256": "1276991b08487fae66cb4bb0bacb18e8ff855ef37534499c7748da59a10a7a61",
      "size": 1224
    },
    "skills/design-data-apis/SKILL.md": {
      "sha256": "25ee89f1cfdf4f367ee6948be976f306b36cb86bacff1ffeb7d316a1fc10dba0",
      "size": 1268
    },
    "skills/design-user-journey/SKILL.md": {
      "sha256": "b5164943677d77f189ec3d2816e65e65edfe6f49e6dd5e6493c3eb7881edf34e",
      "size": 1359
    },
    "skills/frame-opportunity/SKILL.md": {
      "sha256": "e6afe7aeef96842865fe7977efd73bb05ac12c59dab350a1d760c5574f90c3e9",
      "size": 1431
    },
    "skills/get-started/SKILL.md": {
      "sha256": "aeb0f01cb82b41767a69387c98d0e43cd4f344569c05cc75ba53408e6b5999d9",
      "size": 1730
    },
    "skills/orchestrate-specialists/SKILL.md": {
      "sha256": "36bffe10bbdbed314c133626d443a38ab3dd8dde6f062b7b824763c1b266c886",
      "size": 1555
    },
    "skills/plan-ai-feature/SKILL.md": {
      "sha256": "b59b8c510d7ee39c63c2779b020273256da0827ece9e222e0af9c18742d7fcdc",
      "size": 1350
    },
    "skills/plan-delivery/SKILL.md": {
      "sha256": "1ef7d4054f4aace254254309cc0664bec8773477b642c9595a00163b45dfaa2e",
      "size": 1250
    },
    "skills/prioritize-roadmap/SKILL.md": {
      "sha256": "b282a042a73a50a9d092421d04922f0f518bd4f0db5891c4c01b518e79df2099",
      "size": 1275
    },
    "skills/review-launch-readiness/SKILL.md": {
      "sha256": "5e3909af3554aa543a67b2c6e220ac086d9bf34c9c72dd9cbfd746cf783e95d8",
      "size": 1349
    },
    "skills/review-security-quality/SKILL.md": {
      "sha256": "4512e0ea486faf401d56c6d40ea3d4a2b0b218d53218fa3f227ed1df74c67788",
      "size": 1356
    },
    "skills/specify-feature/SKILL.md": {
      "sha256": "3058e5d5960a0670376778ad4c1eaadde21f8abc2d68a0d1ebd4c3c23df90468",
      "size": 1266
    },
    "skills/validate-idea/SKILL.md": {
      "sha256": "d64bcee07204967390186c3c8d03f78ab8574ea949ef78b2517f2ad83839c0b3",
      "size": 1331
    },
    "skills/write-product-spec/SKILL.md": {
      "sha256": "d00d23f2f0aa9a63a93eee3176cbdf43cb8ede3176f22a318588f878964f294c",
      "size": 1310
    },
    "templates/agent-handoff.md": {
      "sha256": "532afbb8d92ae666420679690236600d26c5198456e4f71c6a2af0278291736f",
      "size": 291
    },
    "templates/architecture-decision.md": {
      "sha256": "e960452e90527c0592d4ae2e042a43d2a5041706049a4c0e0c6ef2fb90656bf8",
      "size": 376
    },
    "templates/data-api-contract.md": {
      "sha256": "c0dfb8c5325792a33a0847e48940d2de5899ef8caa4d2619efd7d657b9d63da1",
      "size": 343
    },
    "templates/engineering-handoff.md": {
      "sha256": "8e391c476eaaee64cb6a638af571d93ca15e99fc13c18af2e990774cd58bb81c",
      "size": 432
    },
    "templates/feature-delta.md": {
      "sha256": "c942a288a7965eaca69e4c7bbd7f50855924ea37f365c1435e46ef4d1b92d256",
      "size": 422
    },
    "templates/measurement-plan.md": {
      "sha256": "3da8c12c9b34ce886c8e77d55a72bbfae034060ada4f0b5fcf357130414da7b6",
      "size": 320
    },
    "templates/prd.md": {
      "sha256": "26d96feec5debca2e5cc2c7034a0f5a93c316f65e7c4c043a9653537781f105e",
      "size": 649
    },
    "templates/product-brief.md": {
      "sha256": "798c6c392566381866aee02630fd6cb80ec4594fc6b994d0697407db9967dab3",
      "size": 391
    },
    "templates/release-check.md": {
      "sha256": "bd0816e6dbeccb8661d23ca642aff2d02e24fb8ed714b1bd6027ed1e8ae0d247",
      "size": 484
    },
    "templates/ux-flow.md": {
      "sha256": "03ed6c3c8fe0390c5e0ba7d65bb3fd3132e827da7a6458e149082be32b4fae85",
      "size": 318
    },
    "tests/__pycache__/test_spec_check.cpython-313.pyc": {
      "sha256": "e47617c4ac21856813191d03a9bf93bff46b5b4d5c08385496e952d3b6b6d5c1",
      "size": 6108
    },
    "tests/test_spec_check.py": {
      "sha256": "6021c0eb9e1d36086efa7b44d724c38adeabf5fb6cd49743b72512e5c3dfd611",
      "size": 2391
    }
  }
}

SHA-256 of public snapshot: 2b788c69de08d6cbad9e522fc43e1abbd402e32332107b01b911689d1b5e9e29