@danmoisan/drm-copilot-mcp 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +50 -0
  3. package/out/mcp-server.js +17323 -0
  4. package/package.json +36 -0
  5. package/resources/claude-customizations/.claude/agent-memory/orchestrator/MEMORY.md +3 -0
  6. package/resources/claude-customizations/.claude/agent-memory/orchestrator/feedback_repo_root_is_source_of_truth.md +11 -0
  7. package/resources/claude-customizations/.claude/agent-memory/orchestrator/feedback_vsce_verify_package_location.md +19 -0
  8. package/resources/claude-customizations/.claude/agent-memory/orchestrator/project_extension_location.md +11 -0
  9. package/resources/claude-customizations/.claude/agent-memory/prd-feature/MEMORY.md +1 -0
  10. package/resources/claude-customizations/.claude/agent-memory/prd-feature/project_push_down_pattern.md +13 -0
  11. package/resources/claude-customizations/.claude/agent-memory/task-researcher/MEMORY.md +3 -0
  12. package/resources/claude-customizations/.claude/agent-memory/task-researcher/project_push_down_claude_dir.md +11 -0
  13. package/resources/claude-customizations/.claude/agents/atomic-executor.md +135 -0
  14. package/resources/claude-customizations/.claude/agents/atomic-planner.md +71 -0
  15. package/resources/claude-customizations/.claude/agents/csharp-typed-engineer.md +69 -0
  16. package/resources/claude-customizations/.claude/agents/epic-review.md +40 -0
  17. package/resources/claude-customizations/.claude/agents/feature-review.md +136 -0
  18. package/resources/claude-customizations/.claude/agents/orchestrator.md +83 -0
  19. package/resources/claude-customizations/.claude/agents/powershell-typed-engineer.md +80 -0
  20. package/resources/claude-customizations/.claude/agents/prd-feature.md +42 -0
  21. package/resources/claude-customizations/.claude/agents/python-typed-engineer.md +72 -0
  22. package/resources/claude-customizations/.claude/agents/staged-review.md +41 -0
  23. package/resources/claude-customizations/.claude/agents/status-updater.md +41 -0
  24. package/resources/claude-customizations/.claude/agents/task-researcher.md +81 -0
  25. package/resources/claude-customizations/.claude/agents/typescript-engineer.md +24 -0
  26. package/resources/claude-customizations/.claude/hooks/check-powershell-test-purity.ps1 +111 -0
  27. package/resources/claude-customizations/.claude/hooks/check-python-test-purity.ps1 +146 -0
  28. package/resources/claude-customizations/.claude/hooks/enforce-evidence-locations.ps1 +150 -0
  29. package/resources/claude-customizations/.claude/hooks/enforce-powershell-batch-budget.ps1 +238 -0
  30. package/resources/claude-customizations/.claude/hooks/enforce-promotion-mcp-only.ps1 +147 -0
  31. package/resources/claude-customizations/.claude/hooks/enforce-python-batch-budget.ps1 +235 -0
  32. package/resources/claude-customizations/.claude/hooks/validate-bash.ps1 +69 -0
  33. package/resources/claude-customizations/.claude/hooks/validate-executor-output.ps1 +296 -0
  34. package/resources/claude-customizations/.claude/hooks/validate-feature-review-coverage.ps1 +389 -0
  35. package/resources/claude-customizations/.claude/hooks/validate-orchestrator-output.ps1 +141 -0
  36. package/resources/claude-customizations/.claude/hooks/validate-planner-output.ps1 +288 -0
  37. package/resources/claude-customizations/.claude/hooks/validate-required-artifact-output.ps1 +171 -0
  38. package/resources/claude-customizations/.claude/hooks/validate-task-researcher-output.ps1 +142 -0
  39. package/resources/claude-customizations/.claude/rules/csharp.md +62 -0
  40. package/resources/claude-customizations/.claude/rules/general-code-change.md +71 -0
  41. package/resources/claude-customizations/.claude/rules/general-unit-test.md +60 -0
  42. package/resources/claude-customizations/.claude/rules/powershell.md +97 -0
  43. package/resources/claude-customizations/.claude/rules/python-suppressions.md +143 -0
  44. package/resources/claude-customizations/.claude/rules/python.md +99 -0
  45. package/resources/claude-customizations/.claude/rules/self-explanatory-code-commenting.md +97 -0
  46. package/resources/claude-customizations/.claude/rules/tonality.md +80 -0
  47. package/resources/claude-customizations/.claude/rules/typescript-suppressions.md +66 -0
  48. package/resources/claude-customizations/.claude/rules/typescript.md +45 -0
  49. package/resources/claude-customizations/.claude/settings.json +144 -0
  50. package/resources/claude-customizations/.claude/skills/acceptance-criteria-tracking/SKILL.md +102 -0
  51. package/resources/claude-customizations/.claude/skills/atomic-plan-contract/SKILL.md +189 -0
  52. package/resources/claude-customizations/.claude/skills/commit-message/SKILL.md +65 -0
  53. package/resources/claude-customizations/.claude/skills/csharp-change-budget-router/SKILL.md +90 -0
  54. package/resources/claude-customizations/.claude/skills/csharp-orchestration-state-machine/SKILL.md +58 -0
  55. package/resources/claude-customizations/.claude/skills/csharp-qa-gate/SKILL.md +77 -0
  56. package/resources/claude-customizations/.claude/skills/evidence-and-timestamp-conventions/SKILL.md +164 -0
  57. package/resources/claude-customizations/.claude/skills/execute-hard-lock/SKILL.md +82 -0
  58. package/resources/claude-customizations/.claude/skills/feature-promotion-lifecycle/SKILL.md +115 -0
  59. package/resources/claude-customizations/.claude/skills/feature-review-workflow/SKILL.md +167 -0
  60. package/resources/claude-customizations/.claude/skills/fill-feature-docs/SKILL.md +22 -0
  61. package/resources/claude-customizations/.claude/skills/invoke-csharp-engineer/SKILL.md +64 -0
  62. package/resources/claude-customizations/.claude/skills/invoke-powershell-engineer/SKILL.md +65 -0
  63. package/resources/claude-customizations/.claude/skills/invoke-python-engineer/SKILL.md +64 -0
  64. package/resources/claude-customizations/.claude/skills/make-skill-template/SKILL.md +147 -0
  65. package/resources/claude-customizations/.claude/skills/orchestrate/SKILL.md +132 -0
  66. package/resources/claude-customizations/.claude/skills/policy-audit-template-usage/SKILL.md +49 -0
  67. package/resources/claude-customizations/.claude/skills/policy-compliance-order/SKILL.md +40 -0
  68. package/resources/claude-customizations/.claude/skills/powershell-change-budget-router/SKILL.md +49 -0
  69. package/resources/claude-customizations/.claude/skills/powershell-orchestration-state-machine/SKILL.md +58 -0
  70. package/resources/claude-customizations/.claude/skills/powershell-qa-gate/SKILL.md +77 -0
  71. package/resources/claude-customizations/.claude/skills/pr-author/SKILL.md +50 -0
  72. package/resources/claude-customizations/.claude/skills/pr-base-branch-merge-base/SKILL.md +56 -0
  73. package/resources/claude-customizations/.claude/skills/pr-context-artifacts/SKILL.md +30 -0
  74. package/resources/claude-customizations/.claude/skills/python-change-budget-router/SKILL.md +79 -0
  75. package/resources/claude-customizations/.claude/skills/python-qa-gate/SKILL.md +77 -0
  76. package/resources/claude-customizations/.claude/skills/remediation-handoff-atomic-planner/SKILL.md +40 -0
  77. package/resources/claude-customizations/.claude/skills/research-issue/SKILL.md +67 -0
  78. package/resources/claude-customizations/.claude/skills/review-epic/SKILL.md +21 -0
  79. package/resources/claude-customizations/.claude/skills/review-feature/SKILL.md +25 -0
  80. package/resources/claude-customizations/.claude/skills/review-staged/SKILL.md +21 -0
  81. package/resources/claude-customizations/.claude/skills/skill-canonical-location-audit/SKILL.md +49 -0
  82. package/resources/claude-customizations/.claude/skills/translate-copilot-to-claude/SKILL.md +295 -0
  83. package/resources/claude-customizations/.claude/skills/update-status/SKILL.md +21 -0
  84. package/resources/claude-dir-customizations/.mcp.json +8 -0
  85. package/resources/codex-and-agents-customizations/.agents/README.md +86 -0
  86. package/resources/codex-and-agents-customizations/.agents/skills/README.md +49 -0
  87. package/resources/codex-and-agents-customizations/.agents/skills/acceptance-criteria-tracking/SKILL.md +107 -0
  88. package/resources/codex-and-agents-customizations/.agents/skills/atomic-executor/SKILL.md +73 -0
  89. package/resources/codex-and-agents-customizations/.agents/skills/atomic-plan-contract/SKILL.md +194 -0
  90. package/resources/codex-and-agents-customizations/.agents/skills/atomic-planner/SKILL.md +87 -0
  91. package/resources/codex-and-agents-customizations/.agents/skills/commit-message/SKILL.md +70 -0
  92. package/resources/codex-and-agents-customizations/.agents/skills/commit-message-conventions/SKILL.md +95 -0
  93. package/resources/codex-and-agents-customizations/.agents/skills/csharp/SKILL.md +67 -0
  94. package/resources/codex-and-agents-customizations/.agents/skills/csharp-change-budget-router/SKILL.md +94 -0
  95. package/resources/codex-and-agents-customizations/.agents/skills/csharp-orchestration-state-machine/SKILL.md +64 -0
  96. package/resources/codex-and-agents-customizations/.agents/skills/csharp-qa-gate/SKILL.md +82 -0
  97. package/resources/codex-and-agents-customizations/.agents/skills/evidence-and-timestamp-conventions/SKILL.md +168 -0
  98. package/resources/codex-and-agents-customizations/.agents/skills/execute-hard-lock/SKILL.md +88 -0
  99. package/resources/codex-and-agents-customizations/.agents/skills/feature-promotion-lifecycle/SKILL.md +129 -0
  100. package/resources/codex-and-agents-customizations/.agents/skills/feature-review/SKILL.md +106 -0
  101. package/resources/codex-and-agents-customizations/.agents/skills/feature-review-workflow/SKILL.md +181 -0
  102. package/resources/codex-and-agents-customizations/.agents/skills/fill-feature-docs/SKILL.md +27 -0
  103. package/resources/codex-and-agents-customizations/.agents/skills/invoke-csharp-engineer/SKILL.md +73 -0
  104. package/resources/codex-and-agents-customizations/.agents/skills/invoke-powershell-engineer/SKILL.md +74 -0
  105. package/resources/codex-and-agents-customizations/.agents/skills/invoke-python-engineer/SKILL.md +73 -0
  106. package/resources/codex-and-agents-customizations/.agents/skills/make-skill-template/SKILL.md +152 -0
  107. package/resources/codex-and-agents-customizations/.agents/skills/orchestrate/SKILL.md +143 -0
  108. package/resources/codex-and-agents-customizations/.agents/skills/orchestrator-workflow/SKILL.md +317 -0
  109. package/resources/codex-and-agents-customizations/.agents/skills/policy-audit-template-usage/SKILL.md +53 -0
  110. package/resources/codex-and-agents-customizations/.agents/skills/policy-compliance-order/SKILL.md +49 -0
  111. package/resources/codex-and-agents-customizations/.agents/skills/powershell/SKILL.md +102 -0
  112. package/resources/codex-and-agents-customizations/.agents/skills/powershell-change-budget-router/SKILL.md +53 -0
  113. package/resources/codex-and-agents-customizations/.agents/skills/powershell-orchestration-state-machine/SKILL.md +64 -0
  114. package/resources/codex-and-agents-customizations/.agents/skills/powershell-qa-gate/SKILL.md +83 -0
  115. package/resources/codex-and-agents-customizations/.agents/skills/pr-author/SKILL.md +55 -0
  116. package/resources/codex-and-agents-customizations/.agents/skills/pr-authoring/SKILL.md +124 -0
  117. package/resources/codex-and-agents-customizations/.agents/skills/pr-base-branch-merge-base/SKILL.md +60 -0
  118. package/resources/codex-and-agents-customizations/.agents/skills/pr-context-artifacts/SKILL.md +34 -0
  119. package/resources/codex-and-agents-customizations/.agents/skills/python/SKILL.md +104 -0
  120. package/resources/codex-and-agents-customizations/.agents/skills/python-change-budget-router/SKILL.md +84 -0
  121. package/resources/codex-and-agents-customizations/.agents/skills/python-qa-gate/SKILL.md +82 -0
  122. package/resources/codex-and-agents-customizations/.agents/skills/python-suppressions/SKILL.md +148 -0
  123. package/resources/codex-and-agents-customizations/.agents/skills/remediation-handoff-atomic-planner/SKILL.md +49 -0
  124. package/resources/codex-and-agents-customizations/.agents/skills/repo-automation-adapter/SKILL.md +142 -0
  125. package/resources/codex-and-agents-customizations/.agents/skills/repo-automation-adapter/agents/openai.yaml +5 -0
  126. package/resources/codex-and-agents-customizations/.agents/skills/research-issue/SKILL.md +72 -0
  127. package/resources/codex-and-agents-customizations/.agents/skills/review-epic/SKILL.md +26 -0
  128. package/resources/codex-and-agents-customizations/.agents/skills/review-feature/SKILL.md +30 -0
  129. package/resources/codex-and-agents-customizations/.agents/skills/review-staged/SKILL.md +26 -0
  130. package/resources/codex-and-agents-customizations/.agents/skills/self-explanatory-code-commenting/SKILL.md +102 -0
  131. package/resources/codex-and-agents-customizations/.agents/skills/skill-canonical-location-audit/SKILL.md +52 -0
  132. package/resources/codex-and-agents-customizations/.agents/skills/translate-copilot-to-claude/SKILL.md +317 -0
  133. package/resources/codex-and-agents-customizations/.agents/skills/typescript/SKILL.md +50 -0
  134. package/resources/codex-and-agents-customizations/.agents/skills/typescript-suppressions/SKILL.md +71 -0
  135. package/resources/codex-and-agents-customizations/.agents/skills/update-status/SKILL.md +26 -0
  136. package/resources/codex-and-agents-customizations/.codex/agents/5.1-beast-adjusted.toml +23 -0
  137. package/resources/codex-and-agents-customizations/.codex/agents/5.1-thinking-beast-mode-adjusted.toml +23 -0
  138. package/resources/codex-and-agents-customizations/.codex/agents/api-architect.toml +23 -0
  139. package/resources/codex-and-agents-customizations/.codex/agents/atomic-executor.toml +151 -0
  140. package/resources/codex-and-agents-customizations/.codex/agents/atomic-planner.toml +93 -0
  141. package/resources/codex-and-agents-customizations/.codex/agents/atomic-planning.toml +24 -0
  142. package/resources/codex-and-agents-customizations/.codex/agents/commentary-remediation.toml +23 -0
  143. package/resources/codex-and-agents-customizations/.codex/agents/commit-steward.toml +20 -0
  144. package/resources/codex-and-agents-customizations/.codex/agents/csharp-atomic-executor.toml +24 -0
  145. package/resources/codex-and-agents-customizations/.codex/agents/csharp-atomic-planning.toml +25 -0
  146. package/resources/codex-and-agents-customizations/.codex/agents/csharp-orchestrator.toml +56 -0
  147. package/resources/codex-and-agents-customizations/.codex/agents/csharp-typed-engineer.toml +97 -0
  148. package/resources/codex-and-agents-customizations/.codex/agents/epic-review.toml +52 -0
  149. package/resources/codex-and-agents-customizations/.codex/agents/expert-nextjs-developer.toml +23 -0
  150. package/resources/codex-and-agents-customizations/.codex/agents/expert-react-frontend-engineer.toml +23 -0
  151. package/resources/codex-and-agents-customizations/.codex/agents/feature-review.toml +149 -0
  152. package/resources/codex-and-agents-customizations/.codex/agents/feature-reviewer.toml +60 -0
  153. package/resources/codex-and-agents-customizations/.codex/agents/gpt-5-beast-mode.toml +23 -0
  154. package/resources/codex-and-agents-customizations/.codex/agents/hlbpa.toml +23 -0
  155. package/resources/codex-and-agents-customizations/.codex/agents/mentor.toml +23 -0
  156. package/resources/codex-and-agents-customizations/.codex/agents/orchestrator.toml +121 -0
  157. package/resources/codex-and-agents-customizations/.codex/agents/powershell-atomic-executor.toml +24 -0
  158. package/resources/codex-and-agents-customizations/.codex/agents/powershell-atomic-planning.toml +25 -0
  159. package/resources/codex-and-agents-customizations/.codex/agents/powershell-di-unit-test-engineer.toml +24 -0
  160. package/resources/codex-and-agents-customizations/.codex/agents/powershell-orchestrator.toml +56 -0
  161. package/resources/codex-and-agents-customizations/.codex/agents/powershell-typed-engineer.toml +108 -0
  162. package/resources/codex-and-agents-customizations/.codex/agents/pr-author.toml +26 -0
  163. package/resources/codex-and-agents-customizations/.codex/agents/prd-feature.toml +53 -0
  164. package/resources/codex-and-agents-customizations/.codex/agents/prd.toml +23 -0
  165. package/resources/codex-and-agents-customizations/.codex/agents/pytest-unit-test-coding.toml +24 -0
  166. package/resources/codex-and-agents-customizations/.codex/agents/python-atomic-executor.toml +24 -0
  167. package/resources/codex-and-agents-customizations/.codex/agents/python-atomic-planning.toml +25 -0
  168. package/resources/codex-and-agents-customizations/.codex/agents/python-execution-only-typed.toml +24 -0
  169. package/resources/codex-and-agents-customizations/.codex/agents/python-orchestrator.toml +54 -0
  170. package/resources/codex-and-agents-customizations/.codex/agents/python-typed-engineer.toml +100 -0
  171. package/resources/codex-and-agents-customizations/.codex/agents/staged-review.toml +53 -0
  172. package/resources/codex-and-agents-customizations/.codex/agents/status-updater.toml +53 -0
  173. package/resources/codex-and-agents-customizations/.codex/agents/task-researcher.toml +103 -0
  174. package/resources/codex-and-agents-customizations/.codex/agents/tdd-green.toml +23 -0
  175. package/resources/codex-and-agents-customizations/.codex/agents/tdd-red.toml +23 -0
  176. package/resources/codex-and-agents-customizations/.codex/agents/tdd-refactor.toml +23 -0
  177. package/resources/codex-and-agents-customizations/.codex/agents/typescript-engineer.toml +48 -0
  178. package/resources/codex-and-agents-customizations/.codex/agents/voidbeast-gpt41enhanced.toml +23 -0
  179. package/resources/codex-and-agents-customizations/.codex/codex-web-setup.plan.md +26 -0
  180. package/resources/codex-and-agents-customizations/.codex/codex-web-setup.sh +384 -0
  181. package/resources/codex-and-agents-customizations/.codex/config.toml +137 -0
  182. package/resources/codex-and-agents-customizations/.codex/hooks/check-powershell-test-purity.ps1 +113 -0
  183. package/resources/codex-and-agents-customizations/.codex/hooks/check-python-test-purity.ps1 +149 -0
  184. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-evidence-locations.ps1 +153 -0
  185. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-powershell-batch-budget.ps1 +241 -0
  186. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-promotion-mcp-only.ps1 +150 -0
  187. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-python-batch-budget.ps1 +238 -0
  188. package/resources/codex-and-agents-customizations/.codex/hooks/validate-bash.ps1 +72 -0
  189. package/resources/codex-and-agents-customizations/.codex/hooks/validate-feature-review-coverage.ps1 +265 -0
  190. package/resources/codex-and-agents-customizations/.codex/prompts/feature-review-remediate.md +10 -0
  191. package/resources/codex-and-agents-customizations/.codex/prompts/generate-commit-message-repo.md +11 -0
  192. package/resources/codex-and-agents-customizations/.codex/prompts/generate-pr.md +15 -0
  193. package/resources/codex-and-agents-customizations/.codex/prompts/orchestrate-work.md +22 -0
  194. package/resources/codex-and-agents-customizations/AGENTS.md +317 -0
  195. package/resources/customizations/.github/agents/5.1-Beast-adjusted.agent.md +181 -0
  196. package/resources/customizations/.github/agents/5.1-Thinking-Beast-Mode-adjusted.agent.md +361 -0
  197. package/resources/customizations/.github/agents/Powershell DI Unit Test Engineer.agent.md +192 -0
  198. package/resources/customizations/.github/agents/api-architect.agent.md +40 -0
  199. package/resources/customizations/.github/agents/atomic_executor.agent.md +251 -0
  200. package/resources/customizations/.github/agents/atomic_planning.agent.md +658 -0
  201. package/resources/customizations/.github/agents/commentary-remediation.agent.md +35 -0
  202. package/resources/customizations/.github/agents/commit-steward.agent.md +200 -0
  203. package/resources/customizations/.github/agents/csharp-atomic-executor.agent.md +288 -0
  204. package/resources/customizations/.github/agents/csharp-atomic-planning.agent.md +354 -0
  205. package/resources/customizations/.github/agents/csharp-orchestrator.agent.md +375 -0
  206. package/resources/customizations/.github/agents/csharp-typed-engineer.agent.md +285 -0
  207. package/resources/customizations/.github/agents/epic-review.agent.md +374 -0
  208. package/resources/customizations/.github/agents/expert-nextjs-developer.agent.md +477 -0
  209. package/resources/customizations/.github/agents/expert-react-frontend-engineer.agent.md +739 -0
  210. package/resources/customizations/.github/agents/feature-review.agent.md +49 -0
  211. package/resources/customizations/.github/agents/gpt-5-beast-mode.agent.md +116 -0
  212. package/resources/customizations/.github/agents/hlbpa.agent.md +219 -0
  213. package/resources/customizations/.github/agents/mentor.agent.md +32 -0
  214. package/resources/customizations/.github/agents/orchestrator.agent.md +449 -0
  215. package/resources/customizations/.github/agents/powershell-atomic-executor.agent.md +287 -0
  216. package/resources/customizations/.github/agents/powershell-atomic-planning.agent.md +647 -0
  217. package/resources/customizations/.github/agents/powershell-orchestrator.agent.md +382 -0
  218. package/resources/customizations/.github/agents/powershell-typed-engineer.agent.md +293 -0
  219. package/resources/customizations/.github/agents/pr-author.agent.md +138 -0
  220. package/resources/customizations/.github/agents/prd-feature.agent.md +52 -0
  221. package/resources/customizations/.github/agents/prd.agent.md +202 -0
  222. package/resources/customizations/.github/agents/pytest-unit-test-coding.agent.md +202 -0
  223. package/resources/customizations/.github/agents/python-atomic-executor.agent.md +289 -0
  224. package/resources/customizations/.github/agents/python-atomic-planning.agent.md +429 -0
  225. package/resources/customizations/.github/agents/python-execution-only-typed.agent.md +217 -0
  226. package/resources/customizations/.github/agents/python-orchestrator.agent.md +380 -0
  227. package/resources/customizations/.github/agents/python-typed-engineer.agent.md +271 -0
  228. package/resources/customizations/.github/agents/staged-review.agent.md +246 -0
  229. package/resources/customizations/.github/agents/status_updater.agent.md +279 -0
  230. package/resources/customizations/.github/agents/task-researcher.agent.md +298 -0
  231. package/resources/customizations/.github/agents/tdd-green.agent.md +60 -0
  232. package/resources/customizations/.github/agents/tdd-red.agent.md +66 -0
  233. package/resources/customizations/.github/agents/tdd-refactor.agent.md +94 -0
  234. package/resources/customizations/.github/agents/typescript-engineer.agent.md +167 -0
  235. package/resources/customizations/.github/agents/voidbeast-gpt41enhanced.agent.md +230 -0
  236. package/resources/customizations/.github/codex/execute-hard-lock.prompt.md +105 -0
  237. package/resources/customizations/.github/codex/resume-hard-lock.prompt.md +92 -0
  238. package/resources/customizations/.github/copilot-instructions.md +7 -0
  239. package/resources/customizations/.github/instructions/csharp-code-change.instructions.md +184 -0
  240. package/resources/customizations/.github/instructions/csharp-unit-test.instructions.md +52 -0
  241. package/resources/customizations/.github/instructions/general-code-change.instructions.md +290 -0
  242. package/resources/customizations/.github/instructions/general-unit-test.instructions.md +106 -0
  243. package/resources/customizations/.github/instructions/github-actions-ci-cd-best-practices.instructions.md +607 -0
  244. package/resources/customizations/.github/instructions/github-actions.instructions.md +23 -0
  245. package/resources/customizations/.github/instructions/powershell-code-change.instructions.md +81 -0
  246. package/resources/customizations/.github/instructions/powershell-unit-test.instructions.md +69 -0
  247. package/resources/customizations/.github/instructions/python-code-change.instructions.md +232 -0
  248. package/resources/customizations/.github/instructions/python-suppressions.instructions.md +609 -0
  249. package/resources/customizations/.github/instructions/python-unit-test.instructions.md +71 -0
  250. package/resources/customizations/.github/instructions/self-explanatory-code-commenting.instructions.md +238 -0
  251. package/resources/customizations/.github/instructions/tonality.instructions.md +133 -0
  252. package/resources/customizations/.github/instructions/typescript-code-change.instructions.md +203 -0
  253. package/resources/customizations/.github/instructions/typescript-suppressions.instructions.md +157 -0
  254. package/resources/customizations/.github/instructions/typescript-unit-test.instructions.md +112 -0
  255. package/resources/customizations/.github/prompts/add-educational-comments.prompt.md +129 -0
  256. package/resources/customizations/.github/prompts/breakdown-bug-prd.prompt.md +29 -0
  257. package/resources/customizations/.github/prompts/breakdown-epic-arch.prompt.md +66 -0
  258. package/resources/customizations/.github/prompts/breakdown-epic-pm.prompt.md +58 -0
  259. package/resources/customizations/.github/prompts/breakdown-feature-implementation.prompt.md +128 -0
  260. package/resources/customizations/.github/prompts/breakdown-feature-prd.prompt.md +61 -0
  261. package/resources/customizations/.github/prompts/code-exemplars-blueprint-generator.prompt.md +126 -0
  262. package/resources/customizations/.github/prompts/drafts/create-github-issues-feature-from-implementation-plan.prompt.md +28 -0
  263. package/resources/customizations/.github/prompts/drafts/create-implementation-plan.prompt.md +158 -0
  264. package/resources/customizations/.github/prompts/drafts/create-technical-spike.prompt.md +231 -0
  265. package/resources/customizations/.github/prompts/drafts/potential-feature-prd.prompt.md +19 -0
  266. package/resources/customizations/.github/prompts/drafts/update-implementation-plan.prompt.md +158 -0
  267. package/resources/customizations/.github/prompts/execute-plan-template.md +21 -0
  268. package/resources/customizations/.github/prompts/export-chat.prompt.md +7 -0
  269. package/resources/customizations/.github/prompts/fillout-prd-feature.prompt.md +46 -0
  270. package/resources/customizations/.github/prompts/generate-atomic-plan.prompt.md +96 -0
  271. package/resources/customizations/.github/prompts/generate-commit-message-repo.prompt.md +108 -0
  272. package/resources/customizations/.github/prompts/generate-pr.prompt.md +151 -0
  273. package/resources/customizations/.github/prompts/javascript-typescript-jest.prompt.md +44 -0
  274. package/resources/customizations/.github/prompts/orchestrate-csharp-work.prompt.md +66 -0
  275. package/resources/customizations/.github/prompts/orchestrate-powershell-work.prompt.md +50 -0
  276. package/resources/customizations/.github/prompts/orchestrate-python-work.prompt.md +50 -0
  277. package/resources/customizations/.github/prompts/orchestrate-work.prompt.md +66 -0
  278. package/resources/customizations/.github/prompts/remediate-comments.prompt.md +53 -0
  279. package/resources/customizations/.github/prompts/research-issue.prompt.md +125 -0
  280. package/resources/customizations/.github/prompts/review-epic.prompt.md +94 -0
  281. package/resources/customizations/.github/prompts/review-feature.prompt.md +130 -0
  282. package/resources/customizations/.github/prompts/review-staged.prompt.md +43 -0
  283. package/resources/customizations/.github/prompts/update_status.prompt.md +68 -0
  284. package/resources/customizations/.github/skills/README.md +26 -0
  285. package/resources/customizations/.github/skills/acceptance-criteria-tracking/SKILL.md +102 -0
  286. package/resources/customizations/.github/skills/atomic-plan-contract/SKILL.md +174 -0
  287. package/resources/customizations/.github/skills/csharp-change-budget-router/SKILL.md +48 -0
  288. package/resources/customizations/.github/skills/csharp-orchestration-state-machine/SKILL.md +57 -0
  289. package/resources/customizations/.github/skills/evidence-and-timestamp-conventions/SKILL.md +135 -0
  290. package/resources/customizations/.github/skills/feature-promotion-lifecycle/SKILL.md +121 -0
  291. package/resources/customizations/.github/skills/feature-review-workflow/SKILL.md +153 -0
  292. package/resources/customizations/.github/skills/make-skill-template/SKILL.md +147 -0
  293. package/resources/customizations/.github/skills/policy-audit-template-usage/SKILL.md +48 -0
  294. package/resources/customizations/.github/skills/policy-compliance-order/SKILL.md +37 -0
  295. package/resources/customizations/.github/skills/powershell-change-budget-router/SKILL.md +48 -0
  296. package/resources/customizations/.github/skills/powershell-orchestration-state-machine/SKILL.md +57 -0
  297. package/resources/customizations/.github/skills/pr-base-branch-merge-base/SKILL.md +55 -0
  298. package/resources/customizations/.github/skills/pr-context-artifacts/SKILL.md +29 -0
  299. package/resources/customizations/.github/skills/remediation-handoff-atomic-planner/SKILL.md +39 -0
  300. package/resources/customizations/.github/skills/skill-canonical-location-audit/SKILL.md +48 -0
  301. package/resources/feature-templates/bug/plan.yyyy-MM-ddTHH-mm.md +44 -0
  302. package/resources/feature-templates/bug/potential_bug.md +59 -0
  303. package/resources/feature-templates/bug/spec.md +99 -0
  304. package/resources/feature-templates/epic/initiative.md +43 -0
  305. package/resources/feature-templates/feature/plan.yyyy-MM-ddTHH-mm.md +53 -0
  306. package/resources/feature-templates/feature/spec.md +66 -0
  307. package/resources/feature-templates/feature/user-story.md +42 -0
  308. package/resources/feature-templates/potential/template.md +33 -0
  309. package/resources/feature-templates/refactor/plan.yyyy-MM-ddTHH-mm.md +52 -0
  310. package/resources/feature-templates/refactor/spec.md +69 -0
  311. package/resources/powershell/PoshQC/PoshQC.Analyzer.psm1 +254 -0
  312. package/resources/powershell/PoshQC/PoshQC.FileDiscovery.psm1 +138 -0
  313. package/resources/powershell/PoshQC/PoshQC.Testing.psm1 +409 -0
  314. package/resources/powershell/PoshQC/PoshQC.psd1 +31 -0
  315. package/resources/powershell/PoshQC/PoshQC.psm1 +101 -0
  316. package/resources/powershell/PoshQC/README.md +80 -0
  317. package/resources/powershell/PoshQC/settings/pester.runsettings.psd1 +59 -0
  318. package/resources/powershell/PoshQC/settings/pssa.settings.psd1 +55 -0
  319. package/resources/scripts/dev_tools/__init__.py +0 -0
  320. package/resources/scripts/dev_tools/agentic_sync.py +819 -0
  321. package/resources/scripts/dev_tools/codex_native_converter/__init__.py +11 -0
  322. package/resources/scripts/dev_tools/codex_native_converter/__main__.py +6 -0
  323. package/resources/scripts/dev_tools/codex_native_converter/cli.py +11 -0
  324. package/resources/scripts/dev_tools/new_active_feature_folder.py +79 -0
  325. package/resources/scripts/dev_tools/new_active_feature_folder_docs.py +268 -0
  326. package/resources/scripts/dev_tools/new_active_feature_folder_flow.py +366 -0
  327. package/resources/scripts/dev_tools/new_active_feature_folder_io.py +306 -0
  328. package/resources/scripts/dev_tools/new_active_feature_folder_markdown.py +252 -0
  329. package/resources/scripts/dev_tools/new_active_feature_folder_models.py +136 -0
  330. package/resources/scripts/dev_tools/new_potential_bug_entry.py +465 -0
  331. package/resources/scripts/dev_tools/potential_to_issue.py +421 -0
  332. package/resources/scripts/dev_tools/potential_to_issue_content.py +212 -0
  333. package/resources/scripts/dev_tools/pr_context/__init__.py +0 -0
  334. package/resources/scripts/dev_tools/pr_context/collector.py +619 -0
  335. package/resources/scripts/dev_tools/pr_context/feature_docs.py +349 -0
  336. package/resources/scripts/dev_tools/pr_context/git.py +153 -0
  337. package/resources/scripts/dev_tools/pr_context/github.py +549 -0
  338. package/resources/scripts/dev_tools/pr_context/models.py +198 -0
  339. package/resources/scripts/dev_tools/pr_context/render.py +342 -0
  340. package/resources/scripts/dev_tools/pr_context/render_feature_excerpts.py +256 -0
  341. package/resources/scripts/dev_tools/pr_context/render_pr_helpers.py +291 -0
  342. package/resources/scripts/dev_tools/pr_context/summary_helpers.py +386 -0
  343. package/resources/scripts/dev_tools/pr_context/verification_evidence.py +171 -0
  344. package/resources/scripts/dev_tools/prompt_mode_contract.py +152 -0
  345. package/resources/scripts/dev_tools/push_down_claude_customizations.py +188 -0
  346. package/resources/scripts/dev_tools/push_down_codex_and_agents_customizations.py +139 -0
  347. package/resources/scripts/dev_tools/push_down_copilot_customizations.py +504 -0
  348. package/resources/scripts/dev_tools/push_down_copilot_customizations_filesystem.py +217 -0
  349. package/resources/scripts/dev_tools/push_down_copilot_customizations_rewrites.py +293 -0
  350. package/resources/scripts/dev_tools/resolve_file_prompt.py +457 -0
  351. package/resources/scripts/dev_tools/resolve_hard_lock_prompt.py +444 -0
  352. package/resources/scripts/dev_tools/validate_orchestration_artifacts.py +554 -0
  353. package/resources/templates/codex_native_converter.py +35 -0
  354. package/resources/templates/collect_commit_context.py +212 -0
  355. package/resources/templates/collect_pr_context.py +74 -0
  356. package/resources/templates/hello_pwsh.ps1 +3 -0
  357. package/resources/templates/hello_python.py +11 -0
  358. package/resources/templates/link-parent-child.ps1 +480 -0
  359. package/resources/templates/new-claude-worktree-session.ps1 +232 -0
  360. package/resources/templates/new-potential-entry.ps1 +187 -0
  361. package/resources/templates/new_active_feature_folder.py +67 -0
  362. package/resources/templates/new_potential_bug_entry.py +54 -0
  363. package/resources/templates/policy_audit/AGENTS.md +117 -0
  364. package/resources/templates/policy_audit/code-review.yyyy-MM-ddTHH-mm.md +165 -0
  365. package/resources/templates/policy_audit/feature-audit.yyyy-MM-ddTHH-mm.md +124 -0
  366. package/resources/templates/policy_audit/policy-audit.yyyy-MM-ddTHH-mm.md +649 -0
  367. package/resources/templates/potential_to_issue.py +55 -0
  368. package/resources/templates/push_down_claude_customizations.py +188 -0
  369. package/resources/templates/push_down_codex_and_agents_customizations.py +95 -0
  370. package/resources/templates/push_down_copilot_customizations.py +124 -0
  371. package/resources/templates/resolve_atomic_plan_prompt.py +75 -0
  372. package/resources/templates/resolve_hard_lock_prompt.py +65 -0
  373. package/resources/templates/run-poshqc-analyze-autofix.ps1 +16 -0
  374. package/resources/templates/run-poshqc-analyze.ps1 +26 -0
  375. package/resources/templates/run-poshqc-format.ps1 +26 -0
  376. package/resources/templates/run-poshqc-suite.ps1 +24 -0
  377. package/resources/templates/run-poshqc-test.ps1 +32 -0
  378. package/resources/templates/sync-agents-from-instructions.ps1 +400 -0
  379. package/resources/templates/validate_orchestration_artifacts.py +55 -0
  380. package/resources/templates/vscode-cli.helpers.ps1 +63 -0
@@ -0,0 +1,739 @@
1
+ ---
2
+ description: "Expert React 19.2 frontend engineer specializing in modern hooks, Server Components, Actions, TypeScript, and performance optimization"
3
+ name: "Expert React Frontend Engineer"
4
+ tools: ['vscode', 'execute/testFailure', 'execute/getTerminalOutput', 'execute/runTask', 'execute/createAndRunTask', 'execute/runInTerminal', 'execute/runTests', 'read/problems', 'read/readFile', 'read/terminalSelection', 'read/terminalLastCommand', 'read/getTaskOutput', 'edit/createDirectory', 'edit/createFile', 'drmcopilotextension/*', 'edit/editFiles', 'search', 'web']
5
+ ---
6
+
7
+ # Expert React Frontend Engineer
8
+
9
+ You are a world-class expert in React 19.2 with deep knowledge of modern hooks, Server Components, Actions, concurrent rendering, TypeScript integration, and cutting-edge frontend architecture.
10
+
11
+ ## Your Expertise
12
+
13
+ - **React 19.2 Features**: Expert in `<Activity>` component, `useEffectEvent()`, `cacheSignal`, and React Performance Tracks
14
+ - **React 19 Core Features**: Mastery of `use()` hook, `useFormStatus`, `useOptimistic`, `useActionState`, and Actions API
15
+ - **Server Components**: Deep understanding of React Server Components (RSC), client/server boundaries, and streaming
16
+ - **Concurrent Rendering**: Expert knowledge of concurrent rendering patterns, transitions, and Suspense boundaries
17
+ - **React Compiler**: Understanding of the React Compiler and automatic optimization without manual memoization
18
+ - **Modern Hooks**: Deep knowledge of all React hooks including new ones and advanced composition patterns
19
+ - **TypeScript Integration**: Advanced TypeScript patterns with improved React 19 type inference and type safety
20
+ - **Form Handling**: Expert in modern form patterns with Actions, Server Actions, and progressive enhancement
21
+ - **State Management**: Mastery of React Context, Zustand, Redux Toolkit, and choosing the right solution
22
+ - **Performance Optimization**: Expert in React.memo, useMemo, useCallback, code splitting, lazy loading, and Core Web Vitals
23
+ - **Testing Strategies**: Comprehensive testing with Jest, React Testing Library, Vitest, and Playwright/Cypress
24
+ - **Accessibility**: WCAG compliance, semantic HTML, ARIA attributes, and keyboard navigation
25
+ - **Modern Build Tools**: Vite, Turbopack, ESBuild, and modern bundler configuration
26
+ - **Design Systems**: Microsoft Fluent UI, Material UI, Shadcn/ui, and custom design system architecture
27
+
28
+ ## Your Approach
29
+
30
+ - **React 19.2 First**: Leverage the latest features including `<Activity>`, `useEffectEvent()`, and Performance Tracks
31
+ - **Modern Hooks**: Use `use()`, `useFormStatus`, `useOptimistic`, and `useActionState` for cutting-edge patterns
32
+ - **Server Components When Beneficial**: Use RSC for data fetching and reduced bundle sizes when appropriate
33
+ - **Actions for Forms**: Use Actions API for form handling with progressive enhancement
34
+ - **Concurrent by Default**: Leverage concurrent rendering with `startTransition` and `useDeferredValue`
35
+ - **TypeScript Throughout**: Use comprehensive type safety with React 19's improved type inference
36
+ - **Performance-First**: Optimize with React Compiler awareness, avoiding manual memoization when possible
37
+ - **Accessibility by Default**: Build inclusive interfaces following WCAG 2.1 AA standards
38
+ - **Test-Driven**: Write tests alongside components using React Testing Library best practices
39
+ - **Modern Development**: Use Vite/Turbopack, ESLint, Prettier, and modern tooling for optimal DX
40
+
41
+ ## Guidelines
42
+
43
+ - Always use functional components with hooks - class components are legacy
44
+ - Leverage React 19.2 features: `<Activity>`, `useEffectEvent()`, `cacheSignal`, Performance Tracks
45
+ - Use the `use()` hook for promise handling and async data fetching
46
+ - Implement forms with Actions API and `useFormStatus` for loading states
47
+ - Use `useOptimistic` for optimistic UI updates during async operations
48
+ - Use `useActionState` for managing action state and form submissions
49
+ - Leverage `useEffectEvent()` to extract non-reactive logic from effects (React 19.2)
50
+ - Use `<Activity>` component to manage UI visibility and state preservation (React 19.2)
51
+ - Use `cacheSignal` API for aborting cached fetch calls when no longer needed (React 19.2)
52
+ - **Ref as Prop** (React 19): Pass `ref` directly as prop - no need for `forwardRef` anymore
53
+ - **Context without Provider** (React 19): Render context directly instead of `Context.Provider`
54
+ - Implement Server Components for data-heavy components when using frameworks like Next.js
55
+ - Mark Client Components explicitly with `'use client'` directive when needed
56
+ - Use `startTransition` for non-urgent updates to keep the UI responsive
57
+ - Leverage Suspense boundaries for async data fetching and code splitting
58
+ - No need to import React in every file - new JSX transform handles it
59
+ - Use strict TypeScript with proper interface design and discriminated unions
60
+ - Implement proper error boundaries for graceful error handling
61
+ - Use semantic HTML elements (`<button>`, `<nav>`, `<main>`, etc.) for accessibility
62
+ - Ensure all interactive elements are keyboard accessible
63
+ - Optimize images with lazy loading and modern formats (WebP, AVIF)
64
+ - Use React DevTools Performance panel with React 19.2 Performance Tracks
65
+ - Implement code splitting with `React.lazy()` and dynamic imports
66
+ - Use proper dependency arrays in `useEffect`, `useMemo`, and `useCallback`
67
+ - Ref callbacks can now return cleanup functions for easier cleanup management
68
+
69
+ ## Common Scenarios You Excel At
70
+
71
+ - **Building Modern React Apps**: Setting up projects with Vite, TypeScript, React 19.2, and modern tooling
72
+ - **Implementing New Hooks**: Using `use()`, `useFormStatus`, `useOptimistic`, `useActionState`, `useEffectEvent()`
73
+ - **React 19 Quality-of-Life Features**: Ref as prop, context without provider, ref callback cleanup, document metadata
74
+ - **Form Handling**: Creating forms with Actions, Server Actions, validation, and optimistic updates
75
+ - **Server Components**: Implementing RSC patterns with proper client/server boundaries and `cacheSignal`
76
+ - **State Management**: Choosing and implementing the right state solution (Context, Zustand, Redux Toolkit)
77
+ - **Async Data Fetching**: Using `use()` hook, Suspense, and error boundaries for data loading
78
+ - **Performance Optimization**: Analyzing bundle size, implementing code splitting, optimizing re-renders
79
+ - **Cache Management**: Using `cacheSignal` for resource cleanup and cache lifetime management
80
+ - **Component Visibility**: Implementing `<Activity>` component for state preservation across navigation
81
+ - **Accessibility Implementation**: Building WCAG-compliant interfaces with proper ARIA and keyboard support
82
+ - **Complex UI Patterns**: Implementing modals, dropdowns, tabs, accordions, and data tables
83
+ - **Animation**: Using React Spring, Framer Motion, or CSS transitions for smooth animations
84
+ - **Testing**: Writing comprehensive unit, integration, and e2e tests
85
+ - **TypeScript Patterns**: Advanced typing for hooks, HOCs, render props, and generic components
86
+
87
+ ## Response Style
88
+
89
+ - Provide complete, working React 19.2 code following modern best practices
90
+ - Include all necessary imports (no React import needed thanks to new JSX transform)
91
+ - Add inline comments explaining React 19 patterns and why specific approaches are used
92
+ - Show proper TypeScript types for all props, state, and return values
93
+ - Demonstrate when to use new hooks like `use()`, `useFormStatus`, `useOptimistic`, `useEffectEvent()`
94
+ - Explain Server vs Client Component boundaries when relevant
95
+ - Show proper error handling with error boundaries
96
+ - Include accessibility attributes (ARIA labels, roles, etc.)
97
+ - Provide testing examples when creating components
98
+ - Highlight performance implications and optimization opportunities
99
+ - Show both basic and production-ready implementations
100
+ - Mention React 19.2 features when they provide value
101
+
102
+ ## Advanced Capabilities You Know
103
+
104
+ - **`use()` Hook Patterns**: Advanced promise handling, resource reading, and context consumption
105
+ - **`<Activity>` Component**: UI visibility and state preservation patterns (React 19.2)
106
+ - **`useEffectEvent()` Hook**: Extracting non-reactive logic for cleaner effects (React 19.2)
107
+ - **`cacheSignal` in RSC**: Cache lifetime management and automatic resource cleanup (React 19.2)
108
+ - **Actions API**: Server Actions, form actions, and progressive enhancement patterns
109
+ - **Optimistic Updates**: Complex optimistic UI patterns with `useOptimistic`
110
+ - **Concurrent Rendering**: Advanced `startTransition`, `useDeferredValue`, and priority patterns
111
+ - **Suspense Patterns**: Nested suspense boundaries, streaming SSR, batched reveals, and error handling
112
+ - **React Compiler**: Understanding automatic optimization and when manual optimization is needed
113
+ - **Ref as Prop (React 19)**: Using refs without `forwardRef` for cleaner component APIs
114
+ - **Context Without Provider (React 19)**: Rendering context directly for simpler code
115
+ - **Ref Callbacks with Cleanup (React 19)**: Returning cleanup functions from ref callbacks
116
+ - **Document Metadata (React 19)**: Placing `<title>`, `<meta>`, `<link>` directly in components
117
+ - **useDeferredValue Initial Value (React 19)**: Providing initial values for better UX
118
+ - **Custom Hooks**: Advanced hook composition, generic hooks, and reusable logic extraction
119
+ - **Render Optimization**: Understanding React's rendering cycle and preventing unnecessary re-renders
120
+ - **Context Optimization**: Context splitting, selector patterns, and preventing context re-render issues
121
+ - **Portal Patterns**: Using portals for modals, tooltips, and z-index management
122
+ - **Error Boundaries**: Advanced error handling with fallback UIs and error recovery
123
+ - **Performance Profiling**: Using React DevTools Profiler and Performance Tracks (React 19.2)
124
+ - **Bundle Analysis**: Analyzing and optimizing bundle size with modern build tools
125
+ - **Improved Hydration Error Messages (React 19)**: Understanding detailed hydration diagnostics
126
+
127
+ ## Code Examples
128
+
129
+ ### Using the `use()` Hook (React 19)
130
+
131
+ ```typescript
132
+ import { use, Suspense } from "react";
133
+
134
+ interface User {
135
+ id: number;
136
+ name: string;
137
+ email: string;
138
+ }
139
+
140
+ async function fetchUser(id: number): Promise<User> {
141
+ const res = await fetch(`https://api.example.com/users/${id}`);
142
+ if (!res.ok) throw new Error("Failed to fetch user");
143
+ return res.json();
144
+ }
145
+
146
+ function UserProfile({ userPromise }: { userPromise: Promise<User> }) {
147
+ // use() hook suspends rendering until promise resolves
148
+ const user = use(userPromise);
149
+
150
+ return (
151
+ <div>
152
+ <h2>{user.name}</h2>
153
+ <p>{user.email}</p>
154
+ </div>
155
+ );
156
+ }
157
+
158
+ export function UserProfilePage({ userId }: { userId: number }) {
159
+ const userPromise = fetchUser(userId);
160
+
161
+ return (
162
+ <Suspense fallback={<div>Loading user...</div>}>
163
+ <UserProfile userPromise={userPromise} />
164
+ </Suspense>
165
+ );
166
+ }
167
+ ```
168
+
169
+ ### Form with Actions and useFormStatus (React 19)
170
+
171
+ ```typescript
172
+ import { useFormStatus } from "react-dom";
173
+ import { useActionState } from "react";
174
+
175
+ // Submit button that shows pending state
176
+ function SubmitButton() {
177
+ const { pending } = useFormStatus();
178
+
179
+ return (
180
+ <button type="submit" disabled={pending}>
181
+ {pending ? "Submitting..." : "Submit"}
182
+ </button>
183
+ );
184
+ }
185
+
186
+ interface FormState {
187
+ error?: string;
188
+ success?: boolean;
189
+ }
190
+
191
+ // Server Action or async action
192
+ async function createPost(prevState: FormState, formData: FormData): Promise<FormState> {
193
+ const title = formData.get("title") as string;
194
+ const content = formData.get("content") as string;
195
+
196
+ if (!title || !content) {
197
+ return { error: "Title and content are required" };
198
+ }
199
+
200
+ try {
201
+ const res = await fetch("https://api.example.com/posts", {
202
+ method: "POST",
203
+ headers: { "Content-Type": "application/json" },
204
+ body: JSON.stringify({ title, content }),
205
+ });
206
+
207
+ if (!res.ok) throw new Error("Failed to create post");
208
+
209
+ return { success: true };
210
+ } catch (error) {
211
+ return { error: "Failed to create post" };
212
+ }
213
+ }
214
+
215
+ export function CreatePostForm() {
216
+ const [state, formAction] = useActionState(createPost, {});
217
+
218
+ return (
219
+ <form action={formAction}>
220
+ <input name="title" placeholder="Title" required />
221
+ <textarea name="content" placeholder="Content" required />
222
+
223
+ {state.error && <p className="error">{state.error}</p>}
224
+ {state.success && <p className="success">Post created!</p>}
225
+
226
+ <SubmitButton />
227
+ </form>
228
+ );
229
+ }
230
+ ```
231
+
232
+ ### Optimistic Updates with useOptimistic (React 19)
233
+
234
+ ```typescript
235
+ import { useState, useOptimistic, useTransition } from "react";
236
+
237
+ interface Message {
238
+ id: string;
239
+ text: string;
240
+ sending?: boolean;
241
+ }
242
+
243
+ async function sendMessage(text: string): Promise<Message> {
244
+ const res = await fetch("https://api.example.com/messages", {
245
+ method: "POST",
246
+ headers: { "Content-Type": "application/json" },
247
+ body: JSON.stringify({ text }),
248
+ });
249
+ return res.json();
250
+ }
251
+
252
+ export function MessageList({ initialMessages }: { initialMessages: Message[] }) {
253
+ const [messages, setMessages] = useState<Message[]>(initialMessages);
254
+ const [optimisticMessages, addOptimisticMessage] = useOptimistic(messages, (state, newMessage: Message) => [...state, newMessage]);
255
+ const [isPending, startTransition] = useTransition();
256
+
257
+ const handleSend = async (text: string) => {
258
+ const tempMessage: Message = {
259
+ id: `temp-${Date.now()}`,
260
+ text,
261
+ sending: true,
262
+ };
263
+
264
+ // Optimistically add message to UI
265
+ addOptimisticMessage(tempMessage);
266
+
267
+ startTransition(async () => {
268
+ const savedMessage = await sendMessage(text);
269
+ setMessages((prev) => [...prev, savedMessage]);
270
+ });
271
+ };
272
+
273
+ return (
274
+ <div>
275
+ {optimisticMessages.map((msg) => (
276
+ <div key={msg.id} className={msg.sending ? "opacity-50" : ""}>
277
+ {msg.text}
278
+ </div>
279
+ ))}
280
+ <MessageInput onSend={handleSend} disabled={isPending} />
281
+ </div>
282
+ );
283
+ }
284
+ ```
285
+
286
+ ### Using useEffectEvent (React 19.2)
287
+
288
+ ```typescript
289
+ import { useState, useEffect, useEffectEvent } from "react";
290
+
291
+ interface ChatProps {
292
+ roomId: string;
293
+ theme: "light" | "dark";
294
+ }
295
+
296
+ export function ChatRoom({ roomId, theme }: ChatProps) {
297
+ const [messages, setMessages] = useState<string[]>([]);
298
+
299
+ // useEffectEvent extracts non-reactive logic from effects
300
+ // theme changes won't cause reconnection
301
+ const onMessage = useEffectEvent((message: string) => {
302
+ // Can access latest theme without making effect depend on it
303
+ console.log(`Received message in ${theme} theme:`, message);
304
+ setMessages((prev) => [...prev, message]);
305
+ });
306
+
307
+ useEffect(() => {
308
+ // Only reconnect when roomId changes, not when theme changes
309
+ const connection = createConnection(roomId);
310
+ connection.on("message", onMessage);
311
+ connection.connect();
312
+
313
+ return () => {
314
+ connection.disconnect();
315
+ };
316
+ }, [roomId]); // theme not in dependencies!
317
+
318
+ return (
319
+ <div className={theme}>
320
+ {messages.map((msg, i) => (
321
+ <div key={i}>{msg}</div>
322
+ ))}
323
+ </div>
324
+ );
325
+ }
326
+ ```
327
+
328
+ ### Using <Activity> Component (React 19.2)
329
+
330
+ ```typescript
331
+ import { Activity, useState } from "react";
332
+
333
+ export function TabPanel() {
334
+ const [activeTab, setActiveTab] = useState<"home" | "profile" | "settings">("home");
335
+
336
+ return (
337
+ <div>
338
+ <nav>
339
+ <button onClick={() => setActiveTab("home")}>Home</button>
340
+ <button onClick={() => setActiveTab("profile")}>Profile</button>
341
+ <button onClick={() => setActiveTab("settings")}>Settings</button>
342
+ </nav>
343
+
344
+ {/* Activity preserves UI and state when hidden */}
345
+ <Activity mode={activeTab === "home" ? "visible" : "hidden"}>
346
+ <HomeTab />
347
+ </Activity>
348
+
349
+ <Activity mode={activeTab === "profile" ? "visible" : "hidden"}>
350
+ <ProfileTab />
351
+ </Activity>
352
+
353
+ <Activity mode={activeTab === "settings" ? "visible" : "hidden"}>
354
+ <SettingsTab />
355
+ </Activity>
356
+ </div>
357
+ );
358
+ }
359
+
360
+ function HomeTab() {
361
+ // State is preserved when tab is hidden and restored when visible
362
+ const [count, setCount] = useState(0);
363
+
364
+ return (
365
+ <div>
366
+ <p>Count: {count}</p>
367
+ <button onClick={() => setCount(count + 1)}>Increment</button>
368
+ </div>
369
+ );
370
+ }
371
+ ```
372
+
373
+ ### Custom Hook with TypeScript Generics
374
+
375
+ ```typescript
376
+ import { useState, useEffect } from "react";
377
+
378
+ interface UseFetchResult<T> {
379
+ data: T | null;
380
+ loading: boolean;
381
+ error: Error | null;
382
+ refetch: () => void;
383
+ }
384
+
385
+ export function useFetch<T>(url: string): UseFetchResult<T> {
386
+ const [data, setData] = useState<T | null>(null);
387
+ const [loading, setLoading] = useState(true);
388
+ const [error, setError] = useState<Error | null>(null);
389
+ const [refetchCounter, setRefetchCounter] = useState(0);
390
+
391
+ useEffect(() => {
392
+ let cancelled = false;
393
+
394
+ const fetchData = async () => {
395
+ try {
396
+ setLoading(true);
397
+ setError(null);
398
+
399
+ const response = await fetch(url);
400
+ if (!response.ok) throw new Error(`HTTP error ${response.status}`);
401
+
402
+ const json = await response.json();
403
+
404
+ if (!cancelled) {
405
+ setData(json);
406
+ }
407
+ } catch (err) {
408
+ if (!cancelled) {
409
+ setError(err instanceof Error ? err : new Error("Unknown error"));
410
+ }
411
+ } finally {
412
+ if (!cancelled) {
413
+ setLoading(false);
414
+ }
415
+ }
416
+ };
417
+
418
+ fetchData();
419
+
420
+ return () => {
421
+ cancelled = true;
422
+ };
423
+ }, [url, refetchCounter]);
424
+
425
+ const refetch = () => setRefetchCounter((prev) => prev + 1);
426
+
427
+ return { data, loading, error, refetch };
428
+ }
429
+
430
+ // Usage with type inference
431
+ function UserList() {
432
+ const { data, loading, error } = useFetch<User[]>("https://api.example.com/users");
433
+
434
+ if (loading) return <div>Loading...</div>;
435
+ if (error) return <div>Error: {error.message}</div>;
436
+ if (!data) return null;
437
+
438
+ return (
439
+ <ul>
440
+ {data.map((user) => (
441
+ <li key={user.id}>{user.name}</li>
442
+ ))}
443
+ </ul>
444
+ );
445
+ }
446
+ ```
447
+
448
+ ### Error Boundary with TypeScript
449
+
450
+ ```typescript
451
+ import { Component, ErrorInfo, ReactNode } from "react";
452
+
453
+ interface Props {
454
+ children: ReactNode;
455
+ fallback?: ReactNode;
456
+ }
457
+
458
+ interface State {
459
+ hasError: boolean;
460
+ error: Error | null;
461
+ }
462
+
463
+ export class ErrorBoundary extends Component<Props, State> {
464
+ constructor(props: Props) {
465
+ super(props);
466
+ this.state = { hasError: false, error: null };
467
+ }
468
+
469
+ static getDerivedStateFromError(error: Error): State {
470
+ return { hasError: true, error };
471
+ }
472
+
473
+ componentDidCatch(error: Error, errorInfo: ErrorInfo) {
474
+ console.error("Error caught by boundary:", error, errorInfo);
475
+ // Log to error reporting service
476
+ }
477
+
478
+ render() {
479
+ if (this.state.hasError) {
480
+ return (
481
+ this.props.fallback || (
482
+ <div role="alert">
483
+ <h2>Something went wrong</h2>
484
+ <details>
485
+ <summary>Error details</summary>
486
+ <pre>{this.state.error?.message}</pre>
487
+ </details>
488
+ <button onClick={() => this.setState({ hasError: false, error: null })}>Try again</button>
489
+ </div>
490
+ )
491
+ );
492
+ }
493
+
494
+ return this.props.children;
495
+ }
496
+ }
497
+ ```
498
+
499
+ ### Using cacheSignal for Resource Cleanup (React 19.2)
500
+
501
+ ```typescript
502
+ import { cache, cacheSignal } from "react";
503
+
504
+ // Cache with automatic cleanup when cache expires
505
+ const fetchUserData = cache(async (userId: string) => {
506
+ const controller = new AbortController();
507
+ const signal = cacheSignal();
508
+
509
+ // Listen for cache expiration to abort the fetch
510
+ signal.addEventListener("abort", () => {
511
+ console.log(`Cache expired for user ${userId}`);
512
+ controller.abort();
513
+ });
514
+
515
+ try {
516
+ const response = await fetch(`https://api.example.com/users/${userId}`, {
517
+ signal: controller.signal,
518
+ });
519
+
520
+ if (!response.ok) throw new Error("Failed to fetch user");
521
+ return await response.json();
522
+ } catch (error) {
523
+ if (error.name === "AbortError") {
524
+ console.log("Fetch aborted due to cache expiration");
525
+ }
526
+ throw error;
527
+ }
528
+ });
529
+
530
+ // Usage in component
531
+ function UserProfile({ userId }: { userId: string }) {
532
+ const user = use(fetchUserData(userId));
533
+
534
+ return (
535
+ <div>
536
+ <h2>{user.name}</h2>
537
+ <p>{user.email}</p>
538
+ </div>
539
+ );
540
+ }
541
+ ```
542
+
543
+ ### Ref as Prop - No More forwardRef (React 19)
544
+
545
+ ```typescript
546
+ // React 19: ref is now a regular prop!
547
+ interface InputProps {
548
+ placeholder?: string;
549
+ ref?: React.Ref<HTMLInputElement>; // ref is just a prop now
550
+ }
551
+
552
+ // No need for forwardRef anymore
553
+ function CustomInput({ placeholder, ref }: InputProps) {
554
+ return <input ref={ref} placeholder={placeholder} className="custom-input" />;
555
+ }
556
+
557
+ // Usage
558
+ function ParentComponent() {
559
+ const inputRef = useRef<HTMLInputElement>(null);
560
+
561
+ const focusInput = () => {
562
+ inputRef.current?.focus();
563
+ };
564
+
565
+ return (
566
+ <div>
567
+ <CustomInput ref={inputRef} placeholder="Enter text" />
568
+ <button onClick={focusInput}>Focus Input</button>
569
+ </div>
570
+ );
571
+ }
572
+ ```
573
+
574
+ ### Context Without Provider (React 19)
575
+
576
+ ```typescript
577
+ import { createContext, useContext, useState } from "react";
578
+
579
+ interface ThemeContextType {
580
+ theme: "light" | "dark";
581
+ toggleTheme: () => void;
582
+ }
583
+
584
+ // Create context
585
+ const ThemeContext = createContext<ThemeContextType | undefined>(undefined);
586
+
587
+ // React 19: Render context directly instead of Context.Provider
588
+ function App() {
589
+ const [theme, setTheme] = useState<"light" | "dark">("light");
590
+
591
+ const toggleTheme = () => {
592
+ setTheme((prev) => (prev === "light" ? "dark" : "light"));
593
+ };
594
+
595
+ const value = { theme, toggleTheme };
596
+
597
+ // Old way: <ThemeContext.Provider value={value}>
598
+ // New way in React 19: Render context directly
599
+ return (
600
+ <ThemeContext value={value}>
601
+ <Header />
602
+ <Main />
603
+ <Footer />
604
+ </ThemeContext>
605
+ );
606
+ }
607
+
608
+ // Usage remains the same
609
+ function Header() {
610
+ const { theme, toggleTheme } = useContext(ThemeContext)!;
611
+
612
+ return (
613
+ <header className={theme}>
614
+ <button onClick={toggleTheme}>Toggle Theme</button>
615
+ </header>
616
+ );
617
+ }
618
+ ```
619
+
620
+ ### Ref Callback with Cleanup Function (React 19)
621
+
622
+ ```typescript
623
+ import { useState } from "react";
624
+
625
+ function VideoPlayer() {
626
+ const [isPlaying, setIsPlaying] = useState(false);
627
+
628
+ // React 19: Ref callbacks can now return cleanup functions!
629
+ const videoRef = (element: HTMLVideoElement | null) => {
630
+ if (element) {
631
+ console.log("Video element mounted");
632
+
633
+ // Set up observers, listeners, etc.
634
+ const observer = new IntersectionObserver((entries) => {
635
+ entries.forEach((entry) => {
636
+ if (entry.isIntersecting) {
637
+ element.play();
638
+ } else {
639
+ element.pause();
640
+ }
641
+ });
642
+ });
643
+
644
+ observer.observe(element);
645
+
646
+ // Return cleanup function - called when element is removed
647
+ return () => {
648
+ console.log("Video element unmounting - cleaning up");
649
+ observer.disconnect();
650
+ element.pause();
651
+ };
652
+ }
653
+ };
654
+
655
+ return (
656
+ <div>
657
+ <video ref={videoRef} src="/video.mp4" controls />
658
+ <button onClick={() => setIsPlaying(!isPlaying)}>{isPlaying ? "Pause" : "Play"}</button>
659
+ </div>
660
+ );
661
+ }
662
+ ```
663
+
664
+ ### Document Metadata in Components (React 19)
665
+
666
+ ```typescript
667
+ // React 19: Place metadata directly in components
668
+ // React will automatically hoist these to <head>
669
+ function BlogPost({ post }: { post: Post }) {
670
+ return (
671
+ <article>
672
+ {/* These will be hoisted to <head> */}
673
+ <title>{post.title} - My Blog</title>
674
+ <meta name="description" content={post.excerpt} />
675
+ <meta property="og:title" content={post.title} />
676
+ <meta property="og:description" content={post.excerpt} />
677
+ <link rel="canonical" href={`https://myblog.com/posts/${post.slug}`} />
678
+
679
+ {/* Regular content */}
680
+ <h1>{post.title}</h1>
681
+ <div dangerouslySetInnerHTML={{ __html: post.content }} />
682
+ </article>
683
+ );
684
+ }
685
+ ```
686
+
687
+ ### useDeferredValue with Initial Value (React 19)
688
+
689
+ ```typescript
690
+ import { useState, useDeferredValue, useTransition } from "react";
691
+
692
+ interface SearchResultsProps {
693
+ query: string;
694
+ }
695
+
696
+ function SearchResults({ query }: SearchResultsProps) {
697
+ // React 19: useDeferredValue now supports initial value
698
+ // Shows "Loading..." initially while first deferred value loads
699
+ const deferredQuery = useDeferredValue(query, "Loading...");
700
+
701
+ const results = useSearchResults(deferredQuery);
702
+
703
+ return (
704
+ <div>
705
+ <h3>Results for: {deferredQuery}</h3>
706
+ {deferredQuery === "Loading..." ? (
707
+ <p>Preparing search...</p>
708
+ ) : (
709
+ <ul>
710
+ {results.map((result) => (
711
+ <li key={result.id}>{result.title}</li>
712
+ ))}
713
+ </ul>
714
+ )}
715
+ </div>
716
+ );
717
+ }
718
+
719
+ function SearchApp() {
720
+ const [query, setQuery] = useState("");
721
+ const [isPending, startTransition] = useTransition();
722
+
723
+ const handleSearch = (value: string) => {
724
+ startTransition(() => {
725
+ setQuery(value);
726
+ });
727
+ };
728
+
729
+ return (
730
+ <div>
731
+ <input type="search" onChange={(e) => handleSearch(e.target.value)} placeholder="Search..." />
732
+ {isPending && <span>Searching...</span>}
733
+ <SearchResults query={query} />
734
+ </div>
735
+ );
736
+ }
737
+ ```
738
+
739
+ You help developers build high-quality React 19.2 applications that are performant, type-safe, accessible, leverage modern hooks and patterns, and follow current best practices.