{
  "format": "skilldb.starter-bundle",
  "schemaVersion": 1,
  "bundle": {
    "slug": "react-app",
    "title": "React app",
    "url": "https://skilldb.dev/bundles/react-app"
  },
  "summary": "Plan a small interactive form, separate reusable state, and test what the user can do.",
  "scope": "For an existing React project. Choose dependencies and routing to match the project; this is not an app scaffold.",
  "review": {
    "date": "2026-10-04",
    "revision": "0a89389d0ec3e4f12e694baab71bdb56134eeb7e",
    "scope": "Selection reviewed for topic coverage and overlap. Code examples and task outcomes have not been evaluated.",
    "evaluationStatus": "pending"
  },
  "contentIncluded": false,
  "installationIncluded": false,
  "exportNotice": "Reference manifest only: selection notes, skill IDs, and public catalog links. No skill bodies, executable code, credentials, or host configuration are included. Downloading does not install or enable skills.",
  "rightsNotice": "Source licenses have not been verified for redistribution. Catalog pages provide a public reference; access does not grant redistribution rights. Verify the original license and attribution requirements before copying or packaging skill content.",
  "overlap": "Accessible Forms defines interaction requirements; Testing Library turns some of them into assertions. Custom Hooks covers state ownership. The two form-focused references are intentionally complementary, not two competing form frameworks.",
  "evaluation": {
    "status": "pending",
    "task": "Build a settings form with async submission, field errors, and a recoverable network failure in a sample React project.",
    "checks": [
      "Verify labels, keyboard submission, pending feedback, and retained input after failure.",
      "Test the successful submit and failed-request paths through user-visible behavior.",
      "If extracting a hook, test cleanup and isolate state between two consumers."
    ]
  },
  "skills": [
    {
      "id": "react-patterns-skills/custom-hooks.md",
      "title": "Custom Hooks",
      "role": "State and reusable behavior",
      "rationale": "Use its composition and cleanup discussion to decide whether repeated stateful logic deserves a hook.",
      "reviewNote": "Some examples read window during initialization. Adapt and test them for server rendering; sample fetching code is not a production data layer.",
      "catalogUrl": "https://skilldb.dev/skills/react-patterns-skills/custom-hooks",
      "maintainerProvenance": {
        "repository": "latentsmurf/SkillDB",
        "access": "private; maintainer access required",
        "revision": "0a89389d0ec3e4f12e694baab71bdb56134eeb7e",
        "path": "packs/react-patterns-skills/custom-hooks.md"
      },
      "licenseStatus": "not-verified-for-redistribution"
    },
    {
      "id": "accessibility-skills/accessible-forms.md",
      "title": "Accessible Forms",
      "role": "Form interaction requirements",
      "rationale": "Covers labels, field grouping, error association, and focus after an invalid submission.",
      "reviewNote": "HTML examples need adaptation to React. Check the actual browser and assistive-technology behavior after implementation.",
      "catalogUrl": "https://skilldb.dev/skills/accessibility-skills/accessible-forms",
      "maintainerProvenance": {
        "repository": "latentsmurf/SkillDB",
        "access": "private; maintainer access required",
        "revision": "0a89389d0ec3e4f12e694baab71bdb56134eeb7e",
        "path": "packs/accessibility-skills/accessible-forms.md"
      },
      "licenseStatus": "not-verified-for-redistribution"
    },
    {
      "id": "testing-services-skills/testing-library.md",
      "title": "Testing Library",
      "role": "Behavioral regression tests",
      "rationale": "Covers queries by role or label, user events, and waiting for asynchronous results.",
      "reviewNote": "A passing role query does not prove screen-reader usability. Keep manual checks and use the test runner already chosen by the project.",
      "catalogUrl": "https://skilldb.dev/skills/testing-services-skills/testing-library",
      "maintainerProvenance": {
        "repository": "latentsmurf/SkillDB",
        "access": "private; maintainer access required",
        "revision": "0a89389d0ec3e4f12e694baab71bdb56134eeb7e",
        "path": "packs/testing-services-skills/testing-library.md"
      },
      "licenseStatus": "not-verified-for-redistribution"
    }
  ]
}
