{
  "schema": "pidex-angular-source-lock-v1",
  "created_at": "2026-09-05T00:00:00.000Z",
  "angular": {
    "core": "22.1.4",
    "cli": "22.1.6",
    "skills_mirror_commit": "a8d71e4fcf4e504e428c9a0befaefd77b83a8480",
    "skills_source_commit": "563850e860bd887820b6ddea4638017dd8ef2293",
    "adaptations": [
      "excluded angular-new-app runtime reference; PIDEX constrained greenfield procedure is authoritative",
      "excluded Angular MCP reference and mcp.md"
    ]
  },
  "material": {
    "material": "22.1.4",
    "cdk": "22.1.4",
    "source_commit": "5d64e397b47e722e6ec8cd9eed69cd032766f656"
  },
  "nx": {
    "nx": "23.2.0",
    "angular_plugin": "23.2.0",
    "source_commit": "c598d4e2fae2a75e2690e69f09d943d66b1489d8",
    "angular22_range": ">=23.2.0"
  },
  "web_codegen_scorer": "0.0.70",
  "licenses": {
    "angular": "MIT",
    "angular_components": "MIT",
    "nx": "MIT",
    "verified": true
  },
  "members": [
    {
      "path": "skills/angular-application/references/official-angular/angular-developer.md",
      "bytes": 10617,
      "sha256": "b3983bb46f76c51172b651ccbdf08a01e95c84ae405df8df51602997a7d2f6d7"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/angular-animations.md",
      "bytes": 3974,
      "sha256": "f21b798ed93e27318527ef7e74e63ef8c71cb74ff2b010d70dbb429883f0dbd0"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/angular-aria.md",
      "bytes": 18401,
      "sha256": "dce05f4e12264842c326122c84ba8d56a1a98e5f4d6cecc621d45716442c2ba6"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/cli.md",
      "bytes": 3714,
      "sha256": "39468f1be907a1abff746e79cb9fabd9675956df00c87d9b8bd1517855b9fd7d"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/component-harnesses.md",
      "bytes": 2808,
      "sha256": "1761d33a65ecde690ca0c57081ff9d5871cafb8ff724738ccd711b5018e2d894"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/component-styling.md",
      "bytes": 2531,
      "sha256": "de3351fdb72174361c6eee150940193f20d148afaceab0f22107758a3cb2d787"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/components.md",
      "bytes": 3913,
      "sha256": "35ffb62475d54d7d4ed434b2190882440a77ef76b14260128e6d7e3111122e3b"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/creating-services.md",
      "bytes": 3246,
      "sha256": "1fc1d46bd26568d07d1500d0b9ba1a2556ca4a11f4a3dc11036ae5b16dea80cc"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/data-resolvers.md",
      "bytes": 1634,
      "sha256": "6525d6f9b90d4ac6bbd58489d6bc57ab024c407673ed0e1e46364a90d0b9b5da"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/define-routes.md",
      "bytes": 2129,
      "sha256": "4e80613931ecf4da957f9ff45343869b1651331ff4c8b955f2698b9ac0afc921"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/defining-providers.md",
      "bytes": 2256,
      "sha256": "e654c23a080c642cf7031b5cc5de1101b8c75030c15256f7e3b81b0336953c6d"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/di-fundamentals.md",
      "bytes": 3461,
      "sha256": "ed5e4004aed214429de091d2b041cfd818c77a0ebfa24c23f01ec9bac7118a78"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/e2e-testing.md",
      "bytes": 884,
      "sha256": "fd11d930ed081ca934fe83df06c9d965257ec817ebef59b918d4d814a65feca6"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/effects.md",
      "bytes": 2803,
      "sha256": "5df4759be70248a1f282aff3060b04b694f05ae78093a5caa4eaff455e35a6a3"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/environment-configuration.md",
      "bytes": 3380,
      "sha256": "788b62bf5e04d56343f598437f7e3fd7fdfc6efa8ec6727288dc73514b1b5a76"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/hierarchical-injectors.md",
      "bytes": 2105,
      "sha256": "967e472a1208c6e1f4b95bf7ee9162165904eb78ac6dab64643c67a9d1dac264"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/host-elements.md",
      "bytes": 2190,
      "sha256": "5c2eb324e7b84bd81334b6d262a61b873de208640aabe4be48b73600438bdaed"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/http-client.md",
      "bytes": 5484,
      "sha256": "b6a6c92ae71dc98b6cd0e2b840227c7743b3edf288769da3db070fa1815c1adc"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/injection-context.md",
      "bytes": 1929,
      "sha256": "4435dfcec91bd9fb68d6c318802cac1b37424d4e76452e6f0f52ed0d2b6536fb"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/inputs.md",
      "bytes": 2504,
      "sha256": "f5dcdd2a69e7e5c0aad503b4deaea5cedb682130cc699c669128b8fadcc65ba8"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/linked-signal.md",
      "bytes": 2660,
      "sha256": "01f5395e4be4be7c642f4dacd5312d6cc82e641f3ff177f9283b26b79dd07e95"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/loading-strategies.md",
      "bytes": 1522,
      "sha256": "4eb2e243425443426d28c6f68c823d501c7b2bf64e4587c96c4c6013d57e7c93"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/migrations.md",
      "bytes": 2075,
      "sha256": "47983ed2683dc10f692d254cdca9c97fc13dec9ad099b759f5d31886f3cbaa7a"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/naming-conventions.md",
      "bytes": 5523,
      "sha256": "f0751d75d12a76ff0415124948ead5ae1a67d14a84360e64526aa8bac7d6c5d3"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/navigate-to-routes.md",
      "bytes": 1639,
      "sha256": "ea3c3d53b5db47b4f8d8b05124330e72bea92fc908d42c06aa7edb9e652b425e"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/outputs.md",
      "bytes": 2649,
      "sha256": "4d6900ff9ab90168969c3d05b67d88f69bb6a46aa4b74a8a8290ba0643c6d8dd"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/pipes.md",
      "bytes": 3865,
      "sha256": "76bd0f2f3ac9096ee511427df6ea73cab75f06a3566ab4595ba4f2ec8c0c6fc9"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/reactive-forms.md",
      "bytes": 3559,
      "sha256": "edfc57c191d29a1549e9aa9b4ba0d1111a9792caa65918d62967920647717121"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/rendering-strategies.md",
      "bytes": 1828,
      "sha256": "329aa9aa35c85dd2048c899f26025439d3b0244067dbb508e724d291fdad7c97"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/resource.md",
      "bytes": 2696,
      "sha256": "2fad5a0aaf85b0b3193a492b706595962e247bc99aec1dcc1755d90d9c303545"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/route-animations.md",
      "bytes": 1688,
      "sha256": "eda1452f85ce05f3f28753cc77cd8c31c7a52515d7ccebbb35de0ec1e3beb374"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/route-guards.md",
      "bytes": 1397,
      "sha256": "491a93cb49fbcba04f7e8ffcd0f784fce7319ca3e2fe393c553f3d683a68424c"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/router-lifecycle.md",
      "bytes": 1534,
      "sha256": "4abc8cb8dfeb2e9f57dc11c117d5f4a5b756b39dc076910d9ced9da640effc2d"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/router-testing.md",
      "bytes": 3765,
      "sha256": "4d144577927d3ea93ae498cac7ebd2724873a2de225b75d345abb24759bd62d3"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/show-routes-with-outlets.md",
      "bytes": 1672,
      "sha256": "43a2ed62ea2edafa8569bf7045f20928110f8f844d5890bfb6a2f2dde45e754b"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/signal-forms.md",
      "bytes": 28079,
      "sha256": "5251585cadf72ab95e31377904db21a597b5e9b982c8e839dc098b48f69ac6b7"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/signals-overview.md",
      "bytes": 2849,
      "sha256": "da07c58fdea2ab7d82a28faf9f3d117ccb98ccaf3eec06f103b898f557791146"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/tailwind-css.md",
      "bytes": 1868,
      "sha256": "bdb952d0dd2d415560a796ecaf843cacff5ac20d8ef961eaaf75656fef9b9263"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/template-driven-forms.md",
      "bytes": 3752,
      "sha256": "52e83e576b0c6dc05f854e903c4cfda1222bcd55c50ddee07344d1e53d02c1df"
    },
    {
      "path": "skills/angular-application/references/official-angular/references/testing-fundamentals.md",
      "bytes": 2585,
      "sha256": "8f48c2392d99487934edf977c0d1b87a4e83ff9761db493bbcccc10f574bcb5a"
    },
    {
      "path": "skills/angular-application/references/official-material/material-22.md",
      "bytes": 1675,
      "sha256": "d4a6fd34353f3d5b4e59f50dd2c1bf4df6d7051fba4f5af6396d26c0c3595160"
    },
    {
      "path": "skills/angular-application/references/official-nx/link-workspace-packages.md",
      "bytes": 3046,
      "sha256": "f1f4a8dfc3e6392fe834807587f86de69109738b2b75ae4d2c21ddaec84fe454"
    },
    {
      "path": "skills/angular-application/references/official-nx/nx-generate.md",
      "bytes": 7766,
      "sha256": "152bfeae5403bed16fcd0933a460b67cb05d00ca5dcaeb008a51ae9fab20d3c2"
    },
    {
      "path": "skills/angular-application/references/official-nx/nx-plugins.md",
      "bytes": 355,
      "sha256": "96659fc0ea92b133445cf5d356f4ee710396fc4da22aaa515ad7a6f7ef39a5dd"
    },
    {
      "path": "skills/angular-application/references/official-nx/nx-run-tasks.md",
      "bytes": 2468,
      "sha256": "544e773afd7eb6d22b7768f8932a150f6767becb61b34608060d0f11bcb722f3"
    },
    {
      "path": "skills/angular-application/references/official-nx/nx-workspace.md",
      "bytes": 7669,
      "sha256": "e1a0c99a3f4528c2e5cc371ba24d6acc1d03af1c342b2beff62966712cc626df"
    },
    {
      "path": "skills/angular-application/references/official-nx/references/AFFECTED.md",
      "bytes": 661,
      "sha256": "5c3243ced18c3cd7b3f330accbfd87df55e076c689f12ea0e4191a9604d6a8b9"
    },
    {
      "path": "skills/angular-application/references/upstream/ATTRIBUTION.md",
      "bytes": 1586,
      "sha256": "eb13e20ddedca2f8071684ab305a9c05f19e3b7da0067f46efdd146d83ef3c7e"
    },
    {
      "path": "skills/angular-application/references/upstream/LICENSE-angular-components.txt",
      "bytes": 1072,
      "sha256": "adb40d7d256e33c3c20a67869de175e7ca249afee92f587ccc48b5bec0ac24e4"
    },
    {
      "path": "skills/angular-application/references/upstream/LICENSE-angular.txt",
      "bytes": 1105,
      "sha256": "15e77c4692114f87c2020353626c868472c23954a4ed37ecc4c1522d14be1eb7"
    },
    {
      "path": "skills/angular-application/references/upstream/LICENSE-nx.txt",
      "bytes": 1093,
      "sha256": "50bb7bf81374073606d3c3f277762d5222d82c918b2088f3789ed7e5f9f8b496"
    }
  ],
  "aggregate_sha256": "4c838891fa1ccff21d149587b7212137e8ab0a3b3da6dfc0bfe4ba887422fbba"
}
