@takuma-hirai/hirai-method 0.1.0

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 (822) hide show
  1. package/.claude/.stale-harness-state/last-check +0 -0
  2. package/.claude/CommonRules.md +121 -0
  3. package/.claude/agents/01-core-development/api-designer.md +237 -0
  4. package/.claude/agents/01-core-development/backend-developer.md +222 -0
  5. package/.claude/agents/01-core-development/design-bridge.md +127 -0
  6. package/.claude/agents/01-core-development/electron-pro.md +240 -0
  7. package/.claude/agents/01-core-development/frontend-developer.md +133 -0
  8. package/.claude/agents/01-core-development/fullstack-developer.md +235 -0
  9. package/.claude/agents/01-core-development/graphql-architect.md +238 -0
  10. package/.claude/agents/01-core-development/microservices-architect.md +239 -0
  11. package/.claude/agents/01-core-development/mobile-developer.md +283 -0
  12. package/.claude/agents/01-core-development/ui-designer.md +174 -0
  13. package/.claude/agents/01-core-development/websocket-engineer.md +150 -0
  14. package/.claude/agents/03-infrastructure/azure-infra-engineer.md +53 -0
  15. package/.claude/agents/03-infrastructure/cloud-architect.md +277 -0
  16. package/.claude/agents/03-infrastructure/database-administrator.md +287 -0
  17. package/.claude/agents/03-infrastructure/deployment-engineer.md +287 -0
  18. package/.claude/agents/03-infrastructure/devops-engineer.md +287 -0
  19. package/.claude/agents/03-infrastructure/devops-incident-responder.md +287 -0
  20. package/.claude/agents/03-infrastructure/docker-expert.md +278 -0
  21. package/.claude/agents/03-infrastructure/incident-responder.md +287 -0
  22. package/.claude/agents/03-infrastructure/kubernetes-specialist.md +287 -0
  23. package/.claude/agents/03-infrastructure/network-engineer.md +287 -0
  24. package/.claude/agents/03-infrastructure/platform-engineer.md +287 -0
  25. package/.claude/agents/03-infrastructure/security-engineer.md +277 -0
  26. package/.claude/agents/03-infrastructure/sre-engineer.md +287 -0
  27. package/.claude/agents/03-infrastructure/terraform-engineer.md +287 -0
  28. package/.claude/agents/03-infrastructure/terragrunt-expert.md +307 -0
  29. package/.claude/agents/03-infrastructure/windows-infra-admin.md +52 -0
  30. package/.claude/agents/04-quality-security/accessibility-tester.md +277 -0
  31. package/.claude/agents/04-quality-security/ad-security-reviewer.md +56 -0
  32. package/.claude/agents/04-quality-security/ai-writing-auditor.md +77 -0
  33. package/.claude/agents/04-quality-security/architect-reviewer.md +287 -0
  34. package/.claude/agents/04-quality-security/chaos-engineer.md +277 -0
  35. package/.claude/agents/04-quality-security/code-reviewer.md +287 -0
  36. package/.claude/agents/04-quality-security/compliance-auditor.md +277 -0
  37. package/.claude/agents/04-quality-security/debugger.md +287 -0
  38. package/.claude/agents/04-quality-security/error-detective.md +287 -0
  39. package/.claude/agents/04-quality-security/penetration-tester.md +287 -0
  40. package/.claude/agents/04-quality-security/performance-engineer.md +287 -0
  41. package/.claude/agents/04-quality-security/powershell-security-hardening.md +54 -0
  42. package/.claude/agents/04-quality-security/qa-expert.md +287 -0
  43. package/.claude/agents/04-quality-security/security-auditor.md +287 -0
  44. package/.claude/agents/04-quality-security/test-automator.md +287 -0
  45. package/.claude/agents/04-quality-security/ui-ux-tester.md +234 -0
  46. package/.claude/agents/06-developer-experience/build-engineer.md +286 -0
  47. package/.claude/agents/06-developer-experience/cli-developer.md +286 -0
  48. package/.claude/agents/06-developer-experience/dependency-manager.md +286 -0
  49. package/.claude/agents/06-developer-experience/documentation-engineer.md +276 -0
  50. package/.claude/agents/06-developer-experience/dx-optimizer.md +286 -0
  51. package/.claude/agents/06-developer-experience/git-workflow-manager.md +286 -0
  52. package/.claude/agents/06-developer-experience/legacy-modernizer.md +286 -0
  53. package/.claude/agents/06-developer-experience/mcp-developer.md +275 -0
  54. package/.claude/agents/06-developer-experience/powershell-module-architect.md +58 -0
  55. package/.claude/agents/06-developer-experience/powershell-ui-architect.md +135 -0
  56. package/.claude/agents/06-developer-experience/readme-generator.md +238 -0
  57. package/.claude/agents/06-developer-experience/refactoring-specialist.md +286 -0
  58. package/.claude/agents/06-developer-experience/slack-expert.md +232 -0
  59. package/.claude/agents/06-developer-experience/tooling-engineer.md +286 -0
  60. package/.claude/agents/09-meta-orchestration/agent-installer.md +97 -0
  61. package/.claude/agents/09-meta-orchestration/agent-organizer.md +287 -0
  62. package/.claude/agents/09-meta-orchestration/codebase-orchestrator.md +249 -0
  63. package/.claude/agents/09-meta-orchestration/context-manager.md +287 -0
  64. package/.claude/agents/09-meta-orchestration/error-coordinator.md +287 -0
  65. package/.claude/agents/09-meta-orchestration/it-ops-orchestrator.md +60 -0
  66. package/.claude/agents/09-meta-orchestration/knowledge-synthesizer.md +287 -0
  67. package/.claude/agents/09-meta-orchestration/multi-agent-coordinator.md +287 -0
  68. package/.claude/agents/09-meta-orchestration/performance-monitor.md +287 -0
  69. package/.claude/agents/09-meta-orchestration/task-distributor.md +287 -0
  70. package/.claude/agents/09-meta-orchestration/workflow-orchestrator.md +287 -0
  71. package/.claude/agents/10-research-analysis/competitive-analyst.md +287 -0
  72. package/.claude/agents/10-research-analysis/data-researcher.md +287 -0
  73. package/.claude/agents/10-research-analysis/market-researcher.md +287 -0
  74. package/.claude/agents/10-research-analysis/project-idea-validator.md +269 -0
  75. package/.claude/agents/10-research-analysis/research-analyst.md +287 -0
  76. package/.claude/agents/10-research-analysis/scientific-literature-researcher.md +151 -0
  77. package/.claude/agents/10-research-analysis/search-specialist.md +287 -0
  78. package/.claude/agents/10-research-analysis/trend-analyst.md +287 -0
  79. package/.claude/archive/README.md +47 -0
  80. package/.claude/archive/agents/02-language-specialists/angular-architect.md +287 -0
  81. package/.claude/archive/agents/02-language-specialists/cpp-pro.md +277 -0
  82. package/.claude/archive/agents/02-language-specialists/csharp-developer.md +287 -0
  83. package/.claude/archive/agents/02-language-specialists/django-developer.md +287 -0
  84. package/.claude/archive/agents/02-language-specialists/dotnet-core-expert.md +287 -0
  85. package/.claude/archive/agents/02-language-specialists/dotnet-framework-4.8-expert.md +306 -0
  86. package/.claude/archive/agents/02-language-specialists/elixir-expert.md +311 -0
  87. package/.claude/archive/agents/02-language-specialists/expo-react-native-expert.md +268 -0
  88. package/.claude/archive/agents/02-language-specialists/fastapi-developer.md +287 -0
  89. package/.claude/archive/agents/02-language-specialists/flutter-expert.md +287 -0
  90. package/.claude/archive/agents/02-language-specialists/golang-pro.md +277 -0
  91. package/.claude/archive/agents/02-language-specialists/java-architect.md +287 -0
  92. package/.claude/archive/agents/02-language-specialists/javascript-pro.md +277 -0
  93. package/.claude/archive/agents/02-language-specialists/kotlin-specialist.md +287 -0
  94. package/.claude/archive/agents/02-language-specialists/laravel-specialist.md +287 -0
  95. package/.claude/archive/agents/02-language-specialists/nextjs-developer.md +287 -0
  96. package/.claude/archive/agents/02-language-specialists/node-specialist.md +124 -0
  97. package/.claude/archive/agents/02-language-specialists/php-pro.md +287 -0
  98. package/.claude/archive/agents/02-language-specialists/powershell-5.1-expert.md +59 -0
  99. package/.claude/archive/agents/02-language-specialists/powershell-7-expert.md +57 -0
  100. package/.claude/archive/agents/02-language-specialists/python-pro.md +277 -0
  101. package/.claude/archive/agents/02-language-specialists/rails-expert.md +358 -0
  102. package/.claude/archive/agents/02-language-specialists/react-specialist.md +287 -0
  103. package/.claude/archive/agents/02-language-specialists/rust-engineer.md +287 -0
  104. package/.claude/archive/agents/02-language-specialists/spring-boot-engineer.md +287 -0
  105. package/.claude/archive/agents/02-language-specialists/sql-pro.md +287 -0
  106. package/.claude/archive/agents/02-language-specialists/swift-expert.md +287 -0
  107. package/.claude/archive/agents/02-language-specialists/symfony-specialist.md +354 -0
  108. package/.claude/archive/agents/02-language-specialists/typescript-pro.md +277 -0
  109. package/.claude/archive/agents/02-language-specialists/vue-expert.md +287 -0
  110. package/.claude/archive/agents/05-data-ai/ai-engineer.md +287 -0
  111. package/.claude/archive/agents/05-data-ai/data-analyst.md +277 -0
  112. package/.claude/archive/agents/05-data-ai/data-engineer.md +287 -0
  113. package/.claude/archive/agents/05-data-ai/data-scientist.md +287 -0
  114. package/.claude/archive/agents/05-data-ai/database-optimizer.md +287 -0
  115. package/.claude/archive/agents/05-data-ai/llm-architect.md +287 -0
  116. package/.claude/archive/agents/05-data-ai/machine-learning-engineer.md +277 -0
  117. package/.claude/archive/agents/05-data-ai/ml-engineer.md +287 -0
  118. package/.claude/archive/agents/05-data-ai/mlops-engineer.md +287 -0
  119. package/.claude/archive/agents/05-data-ai/nlp-engineer.md +287 -0
  120. package/.claude/archive/agents/05-data-ai/postgres-pro.md +287 -0
  121. package/.claude/archive/agents/05-data-ai/prompt-engineer.md +287 -0
  122. package/.claude/archive/agents/05-data-ai/reinforcement-learning-engineer.md +277 -0
  123. package/.claude/archive/agents/07-specialized-domains/api-documenter.md +277 -0
  124. package/.claude/archive/agents/07-specialized-domains/blockchain-developer.md +287 -0
  125. package/.claude/archive/agents/07-specialized-domains/embedded-systems.md +287 -0
  126. package/.claude/archive/agents/07-specialized-domains/fintech-engineer.md +287 -0
  127. package/.claude/archive/agents/07-specialized-domains/game-developer.md +287 -0
  128. package/.claude/archive/agents/07-specialized-domains/healthcare-admin.md +199 -0
  129. package/.claude/archive/agents/07-specialized-domains/iot-engineer.md +287 -0
  130. package/.claude/archive/agents/07-specialized-domains/m365-admin.md +48 -0
  131. package/.claude/archive/agents/07-specialized-domains/mobile-app-developer.md +287 -0
  132. package/.claude/archive/agents/07-specialized-domains/payment-integration.md +287 -0
  133. package/.claude/archive/agents/07-specialized-domains/quant-analyst.md +287 -0
  134. package/.claude/archive/agents/07-specialized-domains/risk-manager.md +287 -0
  135. package/.claude/archive/agents/07-specialized-domains/seo-specialist.md +184 -0
  136. package/.claude/archive/agents/08-business-product/business-analyst.md +287 -0
  137. package/.claude/archive/agents/08-business-product/content-marketer.md +287 -0
  138. package/.claude/archive/agents/08-business-product/customer-success-manager.md +287 -0
  139. package/.claude/archive/agents/08-business-product/legal-advisor.md +287 -0
  140. package/.claude/archive/agents/08-business-product/license-engineer.md +295 -0
  141. package/.claude/archive/agents/08-business-product/product-manager.md +287 -0
  142. package/.claude/archive/agents/08-business-product/project-manager.md +287 -0
  143. package/.claude/archive/agents/08-business-product/sales-engineer.md +287 -0
  144. package/.claude/archive/agents/08-business-product/scrum-master.md +287 -0
  145. package/.claude/archive/agents/08-business-product/technical-writer.md +287 -0
  146. package/.claude/archive/agents/08-business-product/ux-researcher.md +287 -0
  147. package/.claude/archive/agents/08-business-product/wordpress-master.md +316 -0
  148. package/.claude/archive/skills/competitive-ads-extractor/SKILL.md +293 -0
  149. package/.claude/archive/skills/developer-growth-analysis/SKILL.md +322 -0
  150. package/.claude/archive/skills/document-docx/LICENSE.txt +30 -0
  151. package/.claude/archive/skills/document-docx/SKILL.md +197 -0
  152. package/.claude/archive/skills/document-docx/docx-js.md +350 -0
  153. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  154. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  155. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  156. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  157. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  158. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  159. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  160. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  161. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  162. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  163. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  164. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  165. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  166. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  167. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  168. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  169. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  170. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  171. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  172. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  173. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  174. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  175. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  176. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  177. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  178. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  179. package/.claude/archive/skills/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  180. package/.claude/archive/skills/document-docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  181. package/.claude/archive/skills/document-docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  182. package/.claude/archive/skills/document-docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  183. package/.claude/archive/skills/document-docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  184. package/.claude/archive/skills/document-docx/ooxml/schemas/mce/mc.xsd +75 -0
  185. package/.claude/archive/skills/document-docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  186. package/.claude/archive/skills/document-docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  187. package/.claude/archive/skills/document-docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  188. package/.claude/archive/skills/document-docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  189. package/.claude/archive/skills/document-docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  190. package/.claude/archive/skills/document-docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  191. package/.claude/archive/skills/document-docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  192. package/.claude/archive/skills/document-docx/ooxml/scripts/pack.py +159 -0
  193. package/.claude/archive/skills/document-docx/ooxml/scripts/unpack.py +29 -0
  194. package/.claude/archive/skills/document-docx/ooxml/scripts/validate.py +69 -0
  195. package/.claude/archive/skills/document-docx/ooxml/scripts/validation/__init__.py +15 -0
  196. package/.claude/archive/skills/document-docx/ooxml/scripts/validation/base.py +951 -0
  197. package/.claude/archive/skills/document-docx/ooxml/scripts/validation/docx.py +274 -0
  198. package/.claude/archive/skills/document-docx/ooxml/scripts/validation/pptx.py +315 -0
  199. package/.claude/archive/skills/document-docx/ooxml/scripts/validation/redlining.py +279 -0
  200. package/.claude/archive/skills/document-docx/ooxml.md +610 -0
  201. package/.claude/archive/skills/document-docx/scripts/__init__.py +1 -0
  202. package/.claude/archive/skills/document-docx/scripts/document.py +1276 -0
  203. package/.claude/archive/skills/document-docx/scripts/templates/comments.xml +3 -0
  204. package/.claude/archive/skills/document-docx/scripts/templates/commentsExtended.xml +3 -0
  205. package/.claude/archive/skills/document-docx/scripts/templates/commentsExtensible.xml +3 -0
  206. package/.claude/archive/skills/document-docx/scripts/templates/commentsIds.xml +3 -0
  207. package/.claude/archive/skills/document-docx/scripts/templates/people.xml +3 -0
  208. package/.claude/archive/skills/document-docx/scripts/utilities.py +374 -0
  209. package/.claude/archive/skills/document-pdf/LICENSE.txt +30 -0
  210. package/.claude/archive/skills/document-pdf/SKILL.md +294 -0
  211. package/.claude/archive/skills/document-pdf/forms.md +205 -0
  212. package/.claude/archive/skills/document-pdf/reference.md +612 -0
  213. package/.claude/archive/skills/document-pdf/scripts/check_bounding_boxes.py +70 -0
  214. package/.claude/archive/skills/document-pdf/scripts/check_bounding_boxes_test.py +226 -0
  215. package/.claude/archive/skills/document-pdf/scripts/check_fillable_fields.py +12 -0
  216. package/.claude/archive/skills/document-pdf/scripts/convert_pdf_to_images.py +35 -0
  217. package/.claude/archive/skills/document-pdf/scripts/create_validation_image.py +41 -0
  218. package/.claude/archive/skills/document-pdf/scripts/extract_form_field_info.py +152 -0
  219. package/.claude/archive/skills/document-pdf/scripts/fill_fillable_fields.py +114 -0
  220. package/.claude/archive/skills/document-pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  221. package/.claude/archive/skills/document-pptx/LICENSE.txt +30 -0
  222. package/.claude/archive/skills/document-pptx/SKILL.md +484 -0
  223. package/.claude/archive/skills/document-pptx/html2pptx.md +625 -0
  224. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  225. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  226. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  227. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  228. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  229. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  230. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  231. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  232. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  233. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  234. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  235. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  236. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  237. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  238. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  239. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  240. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  241. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  242. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  243. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  244. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  245. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  246. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  247. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  248. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  249. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  250. package/.claude/archive/skills/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  251. package/.claude/archive/skills/document-pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  252. package/.claude/archive/skills/document-pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  253. package/.claude/archive/skills/document-pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  254. package/.claude/archive/skills/document-pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  255. package/.claude/archive/skills/document-pptx/ooxml/schemas/mce/mc.xsd +75 -0
  256. package/.claude/archive/skills/document-pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  257. package/.claude/archive/skills/document-pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  258. package/.claude/archive/skills/document-pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  259. package/.claude/archive/skills/document-pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  260. package/.claude/archive/skills/document-pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  261. package/.claude/archive/skills/document-pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  262. package/.claude/archive/skills/document-pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  263. package/.claude/archive/skills/document-pptx/ooxml/scripts/pack.py +159 -0
  264. package/.claude/archive/skills/document-pptx/ooxml/scripts/unpack.py +29 -0
  265. package/.claude/archive/skills/document-pptx/ooxml/scripts/validate.py +69 -0
  266. package/.claude/archive/skills/document-pptx/ooxml/scripts/validation/__init__.py +15 -0
  267. package/.claude/archive/skills/document-pptx/ooxml/scripts/validation/base.py +951 -0
  268. package/.claude/archive/skills/document-pptx/ooxml/scripts/validation/docx.py +274 -0
  269. package/.claude/archive/skills/document-pptx/ooxml/scripts/validation/pptx.py +315 -0
  270. package/.claude/archive/skills/document-pptx/ooxml/scripts/validation/redlining.py +279 -0
  271. package/.claude/archive/skills/document-pptx/ooxml.md +427 -0
  272. package/.claude/archive/skills/document-pptx/scripts/html2pptx.js +979 -0
  273. package/.claude/archive/skills/document-pptx/scripts/inventory.py +1020 -0
  274. package/.claude/archive/skills/document-pptx/scripts/rearrange.py +231 -0
  275. package/.claude/archive/skills/document-pptx/scripts/replace.py +385 -0
  276. package/.claude/archive/skills/document-pptx/scripts/thumbnail.py +450 -0
  277. package/.claude/archive/skills/document-xlsx/LICENSE.txt +30 -0
  278. package/.claude/archive/skills/document-xlsx/SKILL.md +289 -0
  279. package/.claude/archive/skills/document-xlsx/recalc.py +178 -0
  280. package/.claude/archive/skills/image-enhancer/SKILL.md +99 -0
  281. package/.claude/archive/skills/meeting-insights-analyzer/SKILL.md +327 -0
  282. package/.claude/archive/skills/slack-gif-creator/LICENSE.txt +202 -0
  283. package/.claude/archive/skills/slack-gif-creator/SKILL.md +646 -0
  284. package/.claude/archive/skills/slack-gif-creator/core/color_palettes.py +302 -0
  285. package/.claude/archive/skills/slack-gif-creator/core/easing.py +230 -0
  286. package/.claude/archive/skills/slack-gif-creator/core/frame_composer.py +469 -0
  287. package/.claude/archive/skills/slack-gif-creator/core/gif_builder.py +246 -0
  288. package/.claude/archive/skills/slack-gif-creator/core/typography.py +357 -0
  289. package/.claude/archive/skills/slack-gif-creator/core/validators.py +264 -0
  290. package/.claude/archive/skills/slack-gif-creator/core/visual_effects.py +494 -0
  291. package/.claude/archive/skills/slack-gif-creator/requirements.txt +4 -0
  292. package/.claude/archive/skills/slack-gif-creator/templates/bounce.py +106 -0
  293. package/.claude/archive/skills/slack-gif-creator/templates/explode.py +331 -0
  294. package/.claude/archive/skills/slack-gif-creator/templates/fade.py +329 -0
  295. package/.claude/archive/skills/slack-gif-creator/templates/flip.py +291 -0
  296. package/.claude/archive/skills/slack-gif-creator/templates/kaleidoscope.py +211 -0
  297. package/.claude/archive/skills/slack-gif-creator/templates/morph.py +329 -0
  298. package/.claude/archive/skills/slack-gif-creator/templates/move.py +293 -0
  299. package/.claude/archive/skills/slack-gif-creator/templates/pulse.py +268 -0
  300. package/.claude/archive/skills/slack-gif-creator/templates/shake.py +127 -0
  301. package/.claude/archive/skills/slack-gif-creator/templates/slide.py +291 -0
  302. package/.claude/archive/skills/slack-gif-creator/templates/spin.py +269 -0
  303. package/.claude/archive/skills/slack-gif-creator/templates/wiggle.py +300 -0
  304. package/.claude/archive/skills/slack-gif-creator/templates/zoom.py +312 -0
  305. package/.claude/archive/skills/twitter-algorithm-optimizer/SKILL.md +327 -0
  306. package/.claude/archive/skills/video-downloader/SKILL.md +99 -0
  307. package/.claude/archive/skills/video-downloader/scripts/download_video.py +145 -0
  308. package/.claude/bash-whitelist-requests/2026-05-28-grep-find-rg.md +68 -0
  309. package/.claude/bash-whitelist-requests/2026-06-01-readonly-filters.md +76 -0
  310. package/.claude/bash-whitelist.txt +124 -0
  311. package/.claude/commands/agent-introspect.md +89 -0
  312. package/.claude/commands/apply-rules.md +363 -0
  313. package/.claude/commands/approve-design.md +219 -0
  314. package/.claude/commands/approve-org-money.md +267 -0
  315. package/.claude/commands/build.md +234 -0
  316. package/.claude/commands/commit.md +97 -0
  317. package/.claude/commands/context-fetch.md +113 -0
  318. package/.claude/commands/create-tool.md +496 -0
  319. package/.claude/commands/design-review.md +138 -0
  320. package/.claude/commands/design.md +807 -0
  321. package/.claude/commands/discharge-byproduct.md +208 -0
  322. package/.claude/commands/doc-review.md +165 -0
  323. package/.claude/commands/document-pair.md +76 -0
  324. package/.claude/commands/error-triage.md +435 -0
  325. package/.claude/commands/eval.md +70 -0
  326. package/.claude/commands/evolve.md +49 -0
  327. package/.claude/commands/finish-task.md +105 -0
  328. package/.claude/commands/gan-build.md +91 -0
  329. package/.claude/commands/gan-design.md +82 -0
  330. package/.claude/commands/gate-bypass.md +77 -0
  331. package/.claude/commands/gate-clear.md +45 -0
  332. package/.claude/commands/gate-status.md +46 -0
  333. package/.claude/commands/harness-audit.md +151 -0
  334. package/.claude/commands/hearing.md +138 -0
  335. package/.claude/commands/impact-check.md +486 -0
  336. package/.claude/commands/init-tasks.md +49 -0
  337. package/.claude/commands/instinct-export.md +47 -0
  338. package/.claude/commands/instinct-import.md +41 -0
  339. package/.claude/commands/instinct-status.md +43 -0
  340. package/.claude/commands/investigate.md +547 -0
  341. package/.claude/commands/learn.md +55 -0
  342. package/.claude/commands/lint-rules.md +400 -0
  343. package/.claude/commands/mode.md +58 -0
  344. package/.claude/commands/modify-feature.md +209 -0
  345. package/.claude/commands/module-review.md +149 -0
  346. package/.claude/commands/move-section.md +67 -0
  347. package/.claude/commands/new-draft.md +67 -0
  348. package/.claude/commands/new-feature.md +286 -0
  349. package/.claude/commands/new-task.md +156 -0
  350. package/.claude/commands/notification.md +107 -0
  351. package/.claude/commands/pm-start.md +119 -0
  352. package/.claude/commands/projects.md +32 -0
  353. package/.claude/commands/promote.md +43 -0
  354. package/.claude/commands/rasis-report.md +1323 -0
  355. package/.claude/commands/release-note.md +130 -0
  356. package/.claude/commands/reply-watch.md +149 -0
  357. package/.claude/commands/requirement.md +352 -0
  358. package/.claude/commands/resume-state.md +187 -0
  359. package/.claude/commands/reviewpr.md +118 -0
  360. package/.claude/commands/save-state.md +100 -0
  361. package/.claude/commands/sentry-pr.md +157 -0
  362. package/.claude/commands/start-task.md +87 -0
  363. package/.claude/commands/system-review.md +147 -0
  364. package/.claude/commands/task-bypass.md +70 -0
  365. package/.claude/commands/task-estimate.md +100 -0
  366. package/.claude/commands/template-apply.md +89 -0
  367. package/.claude/commands/test-design.md +116 -0
  368. package/.claude/commands/transfer-mismatch.md +317 -0
  369. package/.claude/commands/verify.md +51 -0
  370. package/.claude/evals/grader-loop-mode-autonomy.sh +165 -0
  371. package/.claude/evals/grader-system-reminder-attention.sh +99 -0
  372. package/.claude/evals/loop-mode-autonomy.md +121 -0
  373. package/.claude/evals/loop-mode-autonomy.results.template.md +133 -0
  374. package/.claude/evals/system-reminder-attention.md +123 -0
  375. package/.claude/evals/system-reminder-attention.results.template.md +93 -0
  376. package/.claude/evals/system-reminder-attention.runner.md +353 -0
  377. package/.claude/harness-config.local.yml +48 -0
  378. package/.claude/harness-config.yml +534 -0
  379. package/.claude/hooks/agent-marker-clear.sh +43 -0
  380. package/.claude/hooks/agent-marker-set.sh +40 -0
  381. package/.claude/hooks/agent-router-suggest.sh +123 -0
  382. package/.claude/hooks/autonomous-action-guard.sh +242 -0
  383. package/.claude/hooks/byproduct-discharge-guard.sh +128 -0
  384. package/.claude/hooks/check-md-mermaid.sh +144 -0
  385. package/.claude/hooks/check-required-env.sh +95 -0
  386. package/.claude/hooks/check-serena-mcp.sh +123 -0
  387. package/.claude/hooks/confidence-gate.sh +139 -0
  388. package/.claude/hooks/context-budget.sh +233 -0
  389. package/.claude/hooks/delegation-guard.sh +99 -0
  390. package/.claude/hooks/dispatcher-manifest.tsv +38 -0
  391. package/.claude/hooks/draft-flow-guard.sh +304 -0
  392. package/.claude/hooks/failure-loop-detect.sh +139 -0
  393. package/.claude/hooks/gateguard.sh +209 -0
  394. package/.claude/hooks/improvement-proposal.sh +112 -0
  395. package/.claude/hooks/init-tasks-on-start.sh +34 -0
  396. package/.claude/hooks/lib/bypass-logger.sh +82 -0
  397. package/.claude/hooks/lib/confidence-gate/bypass.sh +48 -0
  398. package/.claude/hooks/lib/confidence-gate/extract.sh +99 -0
  399. package/.claude/hooks/lib/confidence-gate/major-agent-filter.sh +59 -0
  400. package/.claude/hooks/lib/confidence-gate/messages.sh +53 -0
  401. package/.claude/hooks/lib/config-loader.sh +784 -0
  402. package/.claude/hooks/lib/delegation-guard/bash-whitelist.sh +323 -0
  403. package/.claude/hooks/lib/delegation-guard/git-deny.sh +188 -0
  404. package/.claude/hooks/lib/delegation-guard/protected-paths.sh +105 -0
  405. package/.claude/hooks/lib/delegation-guard/subagent-detect.sh +40 -0
  406. package/.claude/hooks/lib/dispatcher-core.sh +454 -0
  407. package/.claude/hooks/lib/improvement-proposal/aggregate.py +466 -0
  408. package/.claude/hooks/lib/improvement-proposal/cache.sh +78 -0
  409. package/.claude/hooks/lib/mode-loader.sh +80 -0
  410. package/.claude/hooks/lib/next-actions-parser.sh +153 -0
  411. package/.claude/hooks/lib/project-root.sh +60 -0
  412. package/.claude/hooks/list-md-plan-first-reminder.sh +143 -0
  413. package/.claude/hooks/loop-auto-progress-reminder.sh +108 -0
  414. package/.claude/hooks/loop-confirmation-detector.sh +241 -0
  415. package/.claude/hooks/mode-asana-prompt.sh +61 -0
  416. package/.claude/hooks/mode-enforce.sh +57 -0
  417. package/.claude/hooks/mode-session-start.sh +93 -0
  418. package/.claude/hooks/next-actions-surface.sh +136 -0
  419. package/.claude/hooks/notification-dispatcher.sh +9 -0
  420. package/.claude/hooks/notify.sh +27 -0
  421. package/.claude/hooks/parallel-subagent-reminder.sh +469 -0
  422. package/.claude/hooks/post-tool-use-dispatcher.sh +9 -0
  423. package/.claude/hooks/pre-tool-use-dispatcher.sh +9 -0
  424. package/.claude/hooks/reviewer-count-guard.sh +313 -0
  425. package/.claude/hooks/session-help-surface.sh +192 -0
  426. package/.claude/hooks/session-start-dispatcher.sh +9 -0
  427. package/.claude/hooks/session-start-wrapper.sh +156 -0
  428. package/.claude/hooks/stale-harness-detect.sh +422 -0
  429. package/.claude/hooks/stop-dispatcher.sh +9 -0
  430. package/.claude/hooks/stop.sh +25 -0
  431. package/.claude/hooks/subagent-stop-dispatcher.sh +9 -0
  432. package/.claude/hooks/task-rule-guard.sh +317 -0
  433. package/.claude/hooks/tests/run-tests.sh +23 -0
  434. package/.claude/hooks/tests/test-agent-marker-warn.sh +86 -0
  435. package/.claude/hooks/tests/test-check-required-env.sh +138 -0
  436. package/.claude/hooks/tests/test-confidence-gate.sh +170 -0
  437. package/.claude/hooks/tests/test-config-env-override.sh +220 -0
  438. package/.claude/hooks/tests/test-gate-disable.sh +118 -0
  439. package/.claude/hooks/tests/test-improvement-proposal.sh +284 -0
  440. package/.claude/hooks/tool-call-slip-detector.sh +188 -0
  441. package/.claude/hooks/user-prompt-submit-dispatcher.sh +9 -0
  442. package/.claude/hooks/why-x5-reminder.sh +45 -0
  443. package/.claude/hooks/why-x5-violation-detect.sh +152 -0
  444. package/.claude/hooks/workflow-guard.sh +263 -0
  445. package/.claude/mode.yml +28 -0
  446. package/.claude/project-rules/development-process.md +8 -0
  447. package/.claude/project-rules/git-workflow.md +8 -0
  448. package/.claude/project-rules/modes.md +8 -0
  449. package/.claude/project-rules/self-improvement.md +8 -0
  450. package/.claude/project-rules/task-management.md +8 -0
  451. package/.claude/project-rules/why-x5-output.md +8 -0
  452. package/.claude/project-rules/workflow.md +8 -0
  453. package/.claude/rules/development-process.md +293 -0
  454. package/.claude/rules/git-workflow.md +71 -0
  455. package/.claude/rules/modes.md +189 -0
  456. package/.claude/rules/self-improvement.md +76 -0
  457. package/.claude/rules/task-management.md +261 -0
  458. package/.claude/rules/why-x5-output.md +97 -0
  459. package/.claude/rules/workflow.md +157 -0
  460. package/.claude/rules-details/README.md +67 -0
  461. package/.claude/rules-details/development-process/confidence-gate.md +22 -0
  462. package/.claude/rules-details/development-process/cross-repo-write.md +35 -0
  463. package/.claude/rules-details/development-process/delegation-requirements.md +158 -0
  464. package/.claude/rules-details/development-process/harness-sync.md +21 -0
  465. package/.claude/rules-details/development-process/origin.md +13 -0
  466. package/.claude/rules-details/development-process/parallelization-origin.md +22 -0
  467. package/.claude/rules-details/development-process/research-reuse.md +22 -0
  468. package/.claude/rules-details/development-process/staging-strategy.md +47 -0
  469. package/.claude/rules-details/modes/artifacts.md +34 -0
  470. package/.claude/rules-details/modes/compliance-items.md +120 -0
  471. package/.claude/rules-details/modes/five-layer-enforcement.md +46 -0
  472. package/.claude/rules-details/modes/mode-hooks.md +51 -0
  473. package/.claude/rules-details/modes/origin.md +17 -0
  474. package/.claude/rules-details/self-improvement/l4-mechanics.md +36 -0
  475. package/.claude/rules-details/self-improvement/origin.md +8 -0
  476. package/.claude/rules-details/self-improvement/related-skills.md +35 -0
  477. package/.claude/rules-details/self-improvement/when-to-use-layers.md +39 -0
  478. package/.claude/rules-details/task-management/hook-enforcement.md +25 -0
  479. package/.claude/rules-details/task-management/mandatory-reading.md +20 -0
  480. package/.claude/rules-details/task-management/origin.md +12 -0
  481. package/.claude/rules-details/task-management/parking-lot.md +26 -0
  482. package/.claude/rules-details/task-management/plan-first.md +44 -0
  483. package/.claude/rules-details/task-management/six-articles.md +68 -0
  484. package/.claude/rules-details/task-management/task-migration.md +16 -0
  485. package/.claude/rules-details/task-management/ui-detection.md +11 -0
  486. package/.claude/rules-details/why-x5-output/examples.md +41 -0
  487. package/.claude/rules-details/why-x5-output/feedback-memory.md +14 -0
  488. package/.claude/rules-details/why-x5-output/origin.md +10 -0
  489. package/.claude/rules-details/why-x5-output/v1-v10-history.md +19 -0
  490. package/.claude/rules-details/workflow/10-stage.md +43 -0
  491. package/.claude/rules-details/workflow/14-stage.md +52 -0
  492. package/.claude/rules-details/workflow/byproduct-discharge.md +39 -0
  493. package/.claude/rules-details/workflow/draft-flow-guard.md +31 -0
  494. package/.claude/rules-details/workflow/fan-out.md +70 -0
  495. package/.claude/rules-details/workflow/mece-20.md +36 -0
  496. package/.claude/rules-details/workflow/origin.md +14 -0
  497. package/.claude/rules-details/workflow/refactoring.md +48 -0
  498. package/.claude/rules-details/workflow/related-skills.md +22 -0
  499. package/.claude/rules-details/workflow/reviewer-prompt.md +100 -0
  500. package/.claude/rules-details/workflow/session-persistence.md +46 -0
  501. package/.claude/rules-details/workflow/workflow-guard.md +36 -0
  502. package/.claude/scripts/__pycache__/harness-audit.cpython-313.pyc +0 -0
  503. package/.claude/scripts/agent-stocktake.py +421 -0
  504. package/.claude/scripts/check-md-mermaid.mjs +138 -0
  505. package/.claude/scripts/generate-settings.sh +0 -0
  506. package/.claude/scripts/harness-audit.py +1547 -0
  507. package/.claude/scripts/hc-config.sh +2265 -0
  508. package/.claude/scripts/init-tasks.sh +117 -0
  509. package/.claude/scripts/lib/enforcement-matrix-parse.sh +81 -0
  510. package/.claude/scripts/lib/hc-config-metadata.sh +190 -0
  511. package/.claude/scripts/lib/hc-config-web-server.js +1528 -0
  512. package/.claude/scripts/lib/hc-config-web-ui/app.js +1054 -0
  513. package/.claude/scripts/lib/hc-config-web-ui/index.html +130 -0
  514. package/.claude/scripts/lib/hc-config-web-ui/style.css +522 -0
  515. package/.claude/scripts/new-task-helper.sh +432 -0
  516. package/.claude/scripts/observe-repair.sh +437 -0
  517. package/.claude/scripts/observe-rotate.sh +311 -0
  518. package/.claude/scripts/statusline.sh +239 -0
  519. package/.claude/settings.generated.preview.json +211 -0
  520. package/.claude/settings.json +215 -0
  521. package/.claude/settings.local.example.json +20 -0
  522. package/.claude/settings.local.json +36 -0
  523. package/.claude/skills/agent-introspection-debugging/SKILL.md +123 -0
  524. package/.claude/skills/agent-router/README.md +137 -0
  525. package/.claude/skills/agent-router/SKILL.md +74 -0
  526. package/.claude/skills/agent-router/dispatch-table.yml +352 -0
  527. package/.claude/skills/agent-router/router.py +1086 -0
  528. package/.claude/skills/agent-router/samples/representative_prompts.txt +24 -0
  529. package/.claude/skills/agent-router/tests/__init__.py +0 -0
  530. package/.claude/skills/agent-router/tests/test_router.py +762 -0
  531. package/.claude/skills/artifacts-builder/LICENSE.txt +202 -0
  532. package/.claude/skills/artifacts-builder/SKILL.md +74 -0
  533. package/.claude/skills/artifacts-builder/scripts/bundle-artifact.sh +54 -0
  534. package/.claude/skills/artifacts-builder/scripts/init-artifact.sh +322 -0
  535. package/.claude/skills/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  536. package/.claude/skills/brand-guidelines/LICENSE.txt +202 -0
  537. package/.claude/skills/brand-guidelines/SKILL.md +73 -0
  538. package/.claude/skills/canvas-design/LICENSE.txt +202 -0
  539. package/.claude/skills/canvas-design/SKILL.md +130 -0
  540. package/.claude/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  541. package/.claude/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  542. package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  543. package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  544. package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  545. package/.claude/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  546. package/.claude/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  547. package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  548. package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  549. package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  550. package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  551. package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  552. package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  553. package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  554. package/.claude/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  555. package/.claude/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  556. package/.claude/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  557. package/.claude/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  558. package/.claude/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  559. package/.claude/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  560. package/.claude/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  561. package/.claude/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  562. package/.claude/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  563. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  564. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  565. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  566. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  567. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  568. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  569. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  570. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  571. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  572. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  573. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  574. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  575. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  576. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  577. package/.claude/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  578. package/.claude/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  579. package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  580. package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  581. package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  582. package/.claude/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  583. package/.claude/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  584. package/.claude/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  585. package/.claude/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  586. package/.claude/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  587. package/.claude/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  588. package/.claude/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  589. package/.claude/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  590. package/.claude/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  591. package/.claude/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  592. package/.claude/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  593. package/.claude/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  594. package/.claude/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  595. package/.claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  596. package/.claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  597. package/.claude/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  598. package/.claude/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  599. package/.claude/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  600. package/.claude/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  601. package/.claude/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  602. package/.claude/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  603. package/.claude/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  604. package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  605. package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  606. package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  607. package/.claude/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  608. package/.claude/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  609. package/.claude/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  610. package/.claude/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  611. package/.claude/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  612. package/.claude/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  613. package/.claude/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  614. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  615. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  616. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  617. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  618. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  619. package/.claude/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  620. package/.claude/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  621. package/.claude/skills/changelog-generator/SKILL.md +104 -0
  622. package/.claude/skills/check-md-mermaid/SKILL.md +62 -0
  623. package/.claude/skills/connect/SKILL.md +156 -0
  624. package/.claude/skills/connect-apps/SKILL.md +80 -0
  625. package/.claude/skills/content-research-writer/SKILL.md +538 -0
  626. package/.claude/skills/continuous-agent-loop/SKILL.md +187 -0
  627. package/.claude/skills/continuous-learning-v2/SKILL.md +238 -0
  628. package/.claude/skills/continuous-learning-v2/config.json +35 -0
  629. package/.claude/skills/continuous-learning-v2/hooks/observe.sh +333 -0
  630. package/.claude/skills/continuous-learning-v2/instinct-cli.py +406 -0
  631. package/.claude/skills/domain-name-brainstormer/SKILL.md +212 -0
  632. package/.claude/skills/eval-harness/SKILL.md +100 -0
  633. package/.claude/skills/eval-harness/swe-bench/README.md +80 -0
  634. package/.claude/skills/eval-harness/swe-bench/config.yml +29 -0
  635. package/.claude/skills/eval-harness/swe-bench/docker/Dockerfile +25 -0
  636. package/.claude/skills/eval-harness/swe-bench/docker/docker-compose.yml +18 -0
  637. package/.claude/skills/eval-harness/swe-bench/results/dry-run-2026-05-04.json +137 -0
  638. package/.claude/skills/eval-harness/swe-bench/results/dry-run-comparison-2026-05-04.md +112 -0
  639. package/.claude/skills/eval-harness/swe-bench/results/dry-run-improved-2026-05-04.json +165 -0
  640. package/.claude/skills/eval-harness/swe-bench/results/raw/astropy__astropy-12907.patch +12 -0
  641. package/.claude/skills/eval-harness/swe-bench/results/raw/astropy__astropy-12907.txt +322 -0
  642. package/.claude/skills/eval-harness/swe-bench/results/raw/astropy__astropy-12907.whole-file.txt +322 -0
  643. package/.claude/skills/eval-harness/swe-bench/runner.py +845 -0
  644. package/.claude/skills/eval-harness/swe-bench/scoring.py +298 -0
  645. package/.claude/skills/eval-harness/swe-bench/tasks/fetch_tasks.py +81 -0
  646. package/.claude/skills/eval-harness/swe-bench/tasks/lite-50.json +702 -0
  647. package/.claude/skills/file-organizer/SKILL.md +433 -0
  648. package/.claude/skills/gan-style-harness/SKILL.md +111 -0
  649. package/.claude/skills/gateguard/.gateguard.yml +47 -0
  650. package/.claude/skills/gateguard/SKILL.md +99 -0
  651. package/.claude/skills/internal-comms/LICENSE.txt +202 -0
  652. package/.claude/skills/internal-comms/SKILL.md +32 -0
  653. package/.claude/skills/internal-comms/examples/3p-updates.md +47 -0
  654. package/.claude/skills/internal-comms/examples/company-newsletter.md +65 -0
  655. package/.claude/skills/internal-comms/examples/faq-answers.md +30 -0
  656. package/.claude/skills/internal-comms/examples/general-comms.md +16 -0
  657. package/.claude/skills/invoice-organizer/SKILL.md +446 -0
  658. package/.claude/skills/karpathy-guidelines/SKILL.md +67 -0
  659. package/.claude/skills/langsmith-fetch/SKILL.md +485 -0
  660. package/.claude/skills/lead-research-assistant/SKILL.md +199 -0
  661. package/.claude/skills/mcp-builder/LICENSE.txt +202 -0
  662. package/.claude/skills/mcp-builder/SKILL.md +328 -0
  663. package/.claude/skills/mcp-builder/reference/evaluation.md +602 -0
  664. package/.claude/skills/mcp-builder/reference/mcp_best_practices.md +915 -0
  665. package/.claude/skills/mcp-builder/reference/node_mcp_server.md +916 -0
  666. package/.claude/skills/mcp-builder/reference/python_mcp_server.md +752 -0
  667. package/.claude/skills/mcp-builder/scripts/connections.py +151 -0
  668. package/.claude/skills/mcp-builder/scripts/evaluation.py +373 -0
  669. package/.claude/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  670. package/.claude/skills/mcp-builder/scripts/requirements.txt +2 -0
  671. package/.claude/skills/raffle-winner-picker/SKILL.md +159 -0
  672. package/.claude/skills/repo-map/README.md +125 -0
  673. package/.claude/skills/repo-map/SKILL.md +128 -0
  674. package/.claude/skills/repo-map/examples/sample-output.md +1194 -0
  675. package/.claude/skills/repo-map/repo-map.py +715 -0
  676. package/.claude/skills/salesforce-e2e-testing/SKILL.md +116 -0
  677. package/.claude/skills/salesforce-e2e-testing/catalog-template.md +161 -0
  678. package/.claude/skills/salesforce-e2e-testing/methodology.md +179 -0
  679. package/.claude/skills/salesforce-e2e-testing/observation-rules.md +280 -0
  680. package/.claude/skills/salesforce-e2e-testing/pattern-taxonomy.md +392 -0
  681. package/.claude/skills/salesforce-e2e-testing/procedure-template.md +376 -0
  682. package/.claude/skills/skill-creator/LICENSE.txt +202 -0
  683. package/.claude/skills/skill-creator/SKILL.md +209 -0
  684. package/.claude/skills/skill-creator/scripts/init_skill.py +303 -0
  685. package/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
  686. package/.claude/skills/skill-creator/scripts/quick_validate.py +65 -0
  687. package/.claude/skills/skill-share/SKILL.md +80 -0
  688. package/.claude/skills/tailored-resume-generator/SKILL.md +345 -0
  689. package/.claude/skills/template-skill/SKILL.md +6 -0
  690. package/.claude/skills/theme-factory/LICENSE.txt +202 -0
  691. package/.claude/skills/theme-factory/SKILL.md +59 -0
  692. package/.claude/skills/theme-factory/theme-showcase.pdf +0 -0
  693. package/.claude/skills/theme-factory/themes/arctic-frost.md +19 -0
  694. package/.claude/skills/theme-factory/themes/botanical-garden.md +19 -0
  695. package/.claude/skills/theme-factory/themes/desert-rose.md +19 -0
  696. package/.claude/skills/theme-factory/themes/forest-canopy.md +19 -0
  697. package/.claude/skills/theme-factory/themes/golden-hour.md +19 -0
  698. package/.claude/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  699. package/.claude/skills/theme-factory/themes/modern-minimalist.md +19 -0
  700. package/.claude/skills/theme-factory/themes/ocean-depths.md +19 -0
  701. package/.claude/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  702. package/.claude/skills/theme-factory/themes/tech-innovation.md +19 -0
  703. package/.claude/skills/verification-loop/SKILL.md +129 -0
  704. package/.claude/skills/webapp-testing/LICENSE.txt +202 -0
  705. package/.claude/skills/webapp-testing/SKILL.md +96 -0
  706. package/.claude/skills/webapp-testing/examples/console_logging.py +35 -0
  707. package/.claude/skills/webapp-testing/examples/element_discovery.py +40 -0
  708. package/.claude/skills/webapp-testing/examples/static_html_automation.py +33 -0
  709. package/.claude/skills/webapp-testing/scripts/with_server.py +106 -0
  710. package/.claude/templates/docs/draft/_DRAFT_TEMPLATE.md +162 -0
  711. package/.claude/templates/docs/draft/_TEST_DESIGN_TEMPLATE.md +76 -0
  712. package/.claude/templates/docs/tasks/_TASK_TEMPLATE.md +276 -0
  713. package/.claude/templates/docs/tasks/list.md +80 -0
  714. package/.claude/templates/docs/tasks/parking-lot.md +82 -0
  715. package/.claude/templates/settings.user-level.json.template +306 -0
  716. package/.claude/tests/SMOKE-CLASSIFICATION.md +199 -0
  717. package/.claude/tests/action-space-count-smoke.sh +130 -0
  718. package/.claude/tests/agent-router-suggest-wiring-smoke.sh +188 -0
  719. package/.claude/tests/audit-followups-smoke.sh +158 -0
  720. package/.claude/tests/autonomous-action-guard-relaxation-smoke.sh +479 -0
  721. package/.claude/tests/autonomous-action-guard-smoke.sh +187 -0
  722. package/.claude/tests/check-serena-mcp-smoke.sh +156 -0
  723. package/.claude/tests/common-rules-import-smoke.sh +209 -0
  724. package/.claude/tests/confidence-gate-smoke.sh +220 -0
  725. package/.claude/tests/config-feature-toggles-smoke.sh +389 -0
  726. package/.claude/tests/context-budget-smoke.sh +222 -0
  727. package/.claude/tests/custom-pm-commands-smoke.sh +93 -0
  728. package/.claude/tests/delegation-guard-code-smoke.sh +244 -0
  729. package/.claude/tests/delegation-guard-deny-layers-smoke.sh +356 -0
  730. package/.claude/tests/delegation-guard-readonly-filter-smoke.sh +205 -0
  731. package/.claude/tests/delegation-guard-search-whitelist-smoke.sh +152 -0
  732. package/.claude/tests/delegation-guard-segment-smoke.sh +109 -0
  733. package/.claude/tests/dispatcher-blocker-invariance-smoke.sh +700 -0
  734. package/.claude/tests/dispatcher-core-smoke.sh +452 -0
  735. package/.claude/tests/dispatcher-merge-matrix-smoke.sh +825 -0
  736. package/.claude/tests/dispatcher-success-stdout-smoke.sh +290 -0
  737. package/.claude/tests/draft-flow-guard-approved-dir-smoke.sh +234 -0
  738. package/.claude/tests/draft-flow-guard-smoke.sh +194 -0
  739. package/.claude/tests/dual-mode-portability-smoke.sh +131 -0
  740. package/.claude/tests/effective-hook-matrix-smoke.sh +261 -0
  741. package/.claude/tests/enforcement-mismatch-smoke.sh +263 -0
  742. package/.claude/tests/fixtures/cascade-sample.jsonl +9 -0
  743. package/.claude/tests/fixtures/next-actions/case-clean.md +14 -0
  744. package/.claude/tests/fixtures/next-actions/case-with-red.md +16 -0
  745. package/.claude/tests/fixtures/next-actions/case-with-yellow-only.md +14 -0
  746. package/.claude/tests/fixtures/normal-broken-scatter.jsonl +5 -0
  747. package/.claude/tests/fixtures/task-71/blocker-baseline.tsv +24 -0
  748. package/.claude/tests/fixtures/task-71/settings-inventory.tsv +37 -0
  749. package/.claude/tests/fixtures/transcript-50pct.jsonl +2 -0
  750. package/.claude/tests/fixtures/transcript-60pct.jsonl +2 -0
  751. package/.claude/tests/fixtures/transcript-80pct.jsonl +2 -0
  752. package/.claude/tests/fixtures/transcript-95pct.jsonl +2 -0
  753. package/.claude/tests/fixtures/workflow-guard/case-2-mid.json +21 -0
  754. package/.claude/tests/fixtures/workflow-guard/case-3-blocked.json +33 -0
  755. package/.claude/tests/fixtures/workflow-guard/case-4-clean.json +27 -0
  756. package/.claude/tests/fixtures/workflow-guard/case-8-modify.json +23 -0
  757. package/.claude/tests/fixtures/workflow-guard/inputs/case-1.json +1 -0
  758. package/.claude/tests/fixtures/workflow-guard/inputs/case-2.json +1 -0
  759. package/.claude/tests/fixtures/workflow-guard/inputs/case-3.json +1 -0
  760. package/.claude/tests/fixtures/workflow-guard/inputs/case-4.json +1 -0
  761. package/.claude/tests/fixtures/workflow-guard/inputs/case-5.json +1 -0
  762. package/.claude/tests/fixtures/workflow-guard/inputs/case-6.json +1 -0
  763. package/.claude/tests/fixtures/workflow-guard/inputs/case-7.json +1 -0
  764. package/.claude/tests/fixtures/workflow-guard/inputs/case-8.json +1 -0
  765. package/.claude/tests/gateguard-smoke.sh +213 -0
  766. package/.claude/tests/git-deny-mainline-policy-smoke.sh +222 -0
  767. package/.claude/tests/harness-audit-c-batch-smoke.sh +270 -0
  768. package/.claude/tests/harness-audit-compare-smoke.sh +186 -0
  769. package/.claude/tests/harness-audit-pipeline-health-smoke.sh +326 -0
  770. package/.claude/tests/harness-config-local-smoke.sh +232 -0
  771. package/.claude/tests/hc-config-git-policy-smoke.sh +241 -0
  772. package/.claude/tests/hc-config-key-parity-smoke.sh +149 -0
  773. package/.claude/tests/hc-config-migration-smoke.sh +251 -0
  774. package/.claude/tests/hc-config-script-smoke.sh +1106 -0
  775. package/.claude/tests/hc-config-tui-smoke.sh +801 -0
  776. package/.claude/tests/hc-config-web-ui-smoke.sh +3224 -0
  777. package/.claude/tests/hook-cwd-robustness-smoke.sh +206 -0
  778. package/.claude/tests/hook-frequency-tweaks-smoke.sh +312 -0
  779. package/.claude/tests/improvement-proposal-cache-smoke.sh +238 -0
  780. package/.claude/tests/install-sh-overwrite-all-smoke.sh +274 -0
  781. package/.claude/tests/install-sh-regen-settings-smoke.sh +301 -0
  782. package/.claude/tests/install-sh-sync-drift-smoke.sh +285 -0
  783. package/.claude/tests/layer-b-context-isolation-smoke.sh +392 -0
  784. package/.claude/tests/list-md-plan-first-reminder-smoke.sh +313 -0
  785. package/.claude/tests/loop-auto-progress-smoke.sh +372 -0
  786. package/.claude/tests/loop-confirmation-detector-smoke.sh +674 -0
  787. package/.claude/tests/new-task-batch-update-smoke.sh +664 -0
  788. package/.claude/tests/next-actions-hooks-smoke.sh +283 -0
  789. package/.claude/tests/npx-cli-smoke.sh +696 -0
  790. package/.claude/tests/observe-flock-smoke.sh +223 -0
  791. package/.claude/tests/observe-jq-parse-smoke.sh +250 -0
  792. package/.claude/tests/observe-repair-smoke.sh +475 -0
  793. package/.claude/tests/observe-rotate-smoke.sh +428 -0
  794. package/.claude/tests/observe-subagent-stop-smoke.sh +476 -0
  795. package/.claude/tests/parallel-subagent-reminder-smoke.sh +918 -0
  796. package/.claude/tests/project-root-smoke.sh +140 -0
  797. package/.claude/tests/project-rules-protection-smoke.sh +199 -0
  798. package/.claude/tests/review-required-min-count-smoke.sh +286 -0
  799. package/.claude/tests/reviewer-count-guard-smoke.sh +490 -0
  800. package/.claude/tests/rule-architecture-smoke.sh +418 -0
  801. package/.claude/tests/rule-change-draft-flow-guard-smoke.sh +343 -0
  802. package/.claude/tests/run-all-smokes.sh +340 -0
  803. package/.claude/tests/session-help-surface-smoke.sh +224 -0
  804. package/.claude/tests/session-start-parallel-smoke.sh +165 -0
  805. package/.claude/tests/sessionstart-budget-smoke.sh +185 -0
  806. package/.claude/tests/sessionstart-footprint-smoke.sh +258 -0
  807. package/.claude/tests/settings-dispatcher-baseline-smoke.sh +709 -0
  808. package/.claude/tests/settings-generation-feature-pruning-smoke.sh +196 -0
  809. package/.claude/tests/stale-harness-detect-smoke.sh +974 -0
  810. package/.claude/tests/statusline-smoke.sh +180 -0
  811. package/.claude/tests/task-rule-guard-smoke.sh +656 -0
  812. package/.claude/tests/tool-call-slip-detector-smoke.sh +101 -0
  813. package/.claude/tests/wave-precheck-template-smoke.sh +159 -0
  814. package/.claude/tests/why-x5-violation-detect-smoke.sh +157 -0
  815. package/.claude/tests/workflow-guard-smoke.sh +266 -0
  816. package/CLAUDE.md +75 -0
  817. package/LICENSE +21 -0
  818. package/README.md +790 -0
  819. package/bin/cli.js +395 -0
  820. package/docs/INVENTORY.md +163 -0
  821. package/install.sh +769 -0
  822. package/package.json +25 -0
package/install.sh ADDED
@@ -0,0 +1,769 @@
1
+ #!/usr/bin/env bash
2
+ # 平井メソッド (hirai-method) — robust installer
3
+ #
4
+ # Usage:
5
+ # ./install.sh <target-project-dir> [--update|--force|--overwrite-all] [--dry-run] [--no-mcp] [--no-docs]
6
+ #
7
+ # Modes (--update / --force / --overwrite-all are mutually exclusive):
8
+ # (default) : 新規 install。既存 .claude / CLAUDE.md は .bak タイムスタンプ付きで退避。
9
+ # CLAUDE.md は CLAUDE.md.template として配置(user が <...> placeholder を埋める)。
10
+ # --update : 既存 .claude/ を退避せず rsync で増分上書き。state dir / settings.local.json は保持。
11
+ # CLAUDE.md / .mcp.json / .gitignore は触らない (既存保護)。
12
+ # 完了時に sync 変更 file 一覧 + 分離 commit 案内を出力 (task-58 G1)。
13
+ # --commit : (--update と併用、opt-in) sync 対象 .claude/ path のみ git add + chore(harness): sync で
14
+ # 自動 commit する。project file (root README.md 等) は触らない。git reset 禁止 (HIGH 教訓)。
15
+ # 非 git target なら commit skip + WARN (task-58 G1)。
16
+ # --force : 既存 .claude / CLAUDE.md を backup せず上書き。CLAUDE.md は placeholder 入りで上書き。
17
+ # --overwrite-all : (task-79) drift した target を SSoT へ強制リセットする全上書き mode。
18
+ # 既存 .claude/ を rsync で上書きするが **settings.local.json のみ** 温存し、それ以外
19
+ # (settings.json / harness-config.local.yml / state dir 群 / worktrees) も source で上書き。
20
+ # `--delete` は使わない (= 上書きのみ、target 独自 file は残す)。CLAUDE.md / .mcp.json /
21
+ # .gitignore は --force 準拠。注意: target の local override は失われる (settings.local.json のみ残る)。
22
+ # --dry-run : 実行内容を表示するのみ (rsync -n + 各 cp / mkdir を echo)。
23
+ # --no-mcp : .mcp.json を配置しない (Serena 不要な project)。
24
+ # --no-docs : docs/tasks/, docs/draft/ の templates 配置を skip。
25
+ #
26
+ # Exclude (state / user-local):
27
+ # .gateguard-state/ .taskguard-state/ .confidence-gate-state/ .failure-window/
28
+ # .agent-markers/ .context-budget-state/ .improvement-proposal-state/ .workflow-state/
29
+ # settings.local.json settings.local.example.json bash-whitelist-requests/ worktrees/ project-rules/ (task-82, project-owned)
30
+ #
31
+ # Dependencies: rsync, bash 4+
32
+ #
33
+ # ============================================================
34
+ # WARNING: cross-repo execution restriction
35
+ # ============================================================
36
+ # This script is a cross-repo write operation
37
+ # (writes from this repo into an external target project directory).
38
+ # Claude Code agent context cannot execute this — sandbox + delegation-guard
39
+ # 二重制約 により cross-repo write は denied される。
40
+ #
41
+ # **user manual (terminal) 実行のみ可能** です。
42
+ # (agent / subagent / hook bypass env いずれも回避不可)
43
+ #
44
+ # 同様に `--update` / `--overwrite-all <target>` mode (既存 .claude/ への上書き) も
45
+ # user manual (terminal) 実行のみ可能 です。
46
+ #
47
+ # 詳細: .claude/rules/development-process.md §「cross-repo write 例外」を参照
48
+ # ============================================================
49
+
50
+ set -euo pipefail
51
+
52
+ # ============================================================
53
+ # arg parse
54
+ # ============================================================
55
+ TARGET=""
56
+ MODE="install" # install / update / force / overwrite-all
57
+ DRY_RUN=false
58
+ WITH_MCP=true
59
+ WITH_DOCS=true
60
+ COMMIT_AFTER_SYNC=false # --commit flag (task-58 G1, opt-in for --update only)
61
+
62
+ # M-1: detect conflicting mode flags. --update / --force / --overwrite-all each set
63
+ # MODE; specifying more than one (or repeating one) would silently last-wins into an
64
+ # unintended mode (e.g. --update --force → force rm -rf). Track whether MODE was
65
+ # already chosen and abort instead of guessing. (task-79: --overwrite-all joins the
66
+ # 3-way mutual exclusion.)
67
+ MODE_SET=false
68
+ for arg in "$@"; do
69
+ case "$arg" in
70
+ --update|--force|--overwrite-all)
71
+ if $MODE_SET; then
72
+ echo "[install] error: conflicting mode flags (--update / --force / --overwrite-all are mutually exclusive — give at most one)" >&2
73
+ exit 64
74
+ fi
75
+ MODE_SET=true
76
+ case "$arg" in
77
+ --update) MODE="update" ;;
78
+ --force) MODE="force" ;;
79
+ --overwrite-all) MODE="overwrite-all" ;;
80
+ esac
81
+ ;;
82
+ --commit) COMMIT_AFTER_SYNC=true ;;
83
+ --dry-run) DRY_RUN=true ;;
84
+ --no-mcp) WITH_MCP=false ;;
85
+ --no-docs) WITH_DOCS=false ;;
86
+ -h|--help)
87
+ # L-2: print the full header comment block including the cross-repo WARNING
88
+ # (ends at the closing ===== of the WARNING box before `set -euo pipefail`;
89
+ # task-79 added 4 mode-doc lines so the box now ends at line 48).
90
+ sed -n '2,48p' "$0"
91
+ exit 0
92
+ ;;
93
+ -*)
94
+ echo "[install] unknown option: $arg" >&2
95
+ exit 64
96
+ ;;
97
+ *)
98
+ if [[ -z "$TARGET" ]]; then
99
+ TARGET="$arg"
100
+ else
101
+ echo "[install] too many positional args: $arg" >&2
102
+ exit 64
103
+ fi
104
+ ;;
105
+ esac
106
+ done
107
+
108
+ if [[ -z "$TARGET" ]]; then
109
+ echo "usage: ./install.sh <target-project-dir> [--update [--commit]|--force|--overwrite-all|--dry-run|--no-mcp|--no-docs]" >&2
110
+ exit 64
111
+ fi
112
+
113
+ # --commit は --update mode 専用 (task-58 G1)
114
+ if $COMMIT_AFTER_SYNC && [[ "$MODE" != "update" ]]; then
115
+ echo "[install] error: --commit requires --update mode" >&2
116
+ exit 64
117
+ fi
118
+
119
+ if [[ ! -d "$TARGET" ]]; then
120
+ echo "[install] error: '$TARGET' is not a directory" >&2
121
+ exit 64
122
+ fi
123
+
124
+ # absolute paths
125
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
126
+ TARGET="$(cd "$TARGET" && pwd)"
127
+
128
+ if [[ "$SCRIPT_DIR" == "$TARGET" ]]; then
129
+ echo "[install] error: target equals source ($SCRIPT_DIR). Run from harness repo, install into another dir." >&2
130
+ exit 64
131
+ fi
132
+
133
+ if ! command -v rsync >/dev/null 2>&1; then
134
+ echo "[install] error: rsync not found. Install rsync first (macOS: brew install rsync, Debian: apt install rsync)." >&2
135
+ exit 69
136
+ fi
137
+
138
+ STAMP="$(date +%Y%m%d-%H%M%S)"
139
+ echo "[install] source : $SCRIPT_DIR"
140
+ echo "[install] target : $TARGET"
141
+ echo "[install] mode : $MODE (dry-run=$DRY_RUN, with-mcp=$WITH_MCP, with-docs=$WITH_DOCS)"
142
+ echo ""
143
+
144
+ # ============================================================
145
+ # dirty-tree safety: --update / --force / --overwrite-all 前に target の未 commit 変更を warn
146
+ # (task-55: user 無警告で上書き rsync する事故を防ぐ。block ではなく warn のみ)
147
+ # (task-79: --overwrite-all は local override も上書きするため warn は特に重要)
148
+ # ============================================================
149
+ if [[ "$MODE" == "update" || "$MODE" == "force" || "$MODE" == "overwrite-all" ]] && ! $DRY_RUN; then
150
+ if command -v git >/dev/null 2>&1 && [[ -d "$TARGET/.git" ]]; then
151
+ DIRTY=$(cd "$TARGET" && git status --short 2>/dev/null | head -20)
152
+ if [[ -n "$DIRTY" ]]; then
153
+ echo "[install] WARN: target has uncommitted changes (showing up to 20 lines):"
154
+ echo "$DIRTY" | sed 's/^/ /'
155
+ echo "[install] WARN: rsync is about to overwrite .claude/ — review or commit/stash first."
156
+ echo "[install] WARN: continuing in 3s (Ctrl-C to abort)..."
157
+ sleep 3 || true
158
+ fi
159
+ fi
160
+ fi
161
+
162
+ # ============================================================
163
+ # migration helper: project 固有 override が SSoT yml に直接書かれている場合の案内
164
+ # (task-55: docs_approved_dir 等が SSoT yml に書かれていると --update で巻き戻る潜在事故。
165
+ # 自動移動はしない、案内のみ。違反が見つかったら user が手で local.yml へ移行する)
166
+ # (task-79: --overwrite-all は最も破壊的な mode (local override も上書き) なので、
167
+ # SSoT drift 案内が出ない非対称を解消するため対象に含める。案内のみで自動移動はしない。)
168
+ # ============================================================
169
+ if [[ "$MODE" == "update" || "$MODE" == "force" || "$MODE" == "overwrite-all" ]] && ! $DRY_RUN; then
170
+ TARGET_SSOT="$TARGET/.claude/harness-config.yml"
171
+ SRC_SSOT="$SCRIPT_DIR/.claude/harness-config.yml"
172
+ if [[ -f "$TARGET_SSOT" && -f "$SRC_SSOT" ]]; then
173
+ # 比較対象 key (project 固有 override が起こりやすい代表例)
174
+ for key in docs_approved_dir task_dir draft_dir protected_paths; do
175
+ # `|| true` で fail-open: target yml に該当 key が不在で grep exit 1 → pipefail
176
+ # で script abort する事故を防ぐ (task-42 後発見、2026-05-28、classlab-weekly-news
177
+ # 同期失敗を契機)。key 不在は「project 固有 override なし」を意味するため、空文字で
178
+ # 続行が正しい挙動 (該当 if 文は -n "$tgt_val" で空時 skip される)。
179
+ tgt_val=$(grep -E "^${key}:" "$TARGET_SSOT" 2>/dev/null | head -1 | sed -E "s/^${key}:[[:space:]]*//; s/[[:space:]]*$//" || true)
180
+ src_val=$(grep -E "^${key}:" "$SRC_SSOT" 2>/dev/null | head -1 | sed -E "s/^${key}:[[:space:]]*//; s/[[:space:]]*$//" || true)
181
+ if [[ -n "$tgt_val" && "$tgt_val" != "$src_val" ]]; then
182
+ echo "[install] MIGRATE: $TARGET_SSOT has project-specific '$key: $tgt_val' (SSoT default: '$src_val')."
183
+ echo "[install] MIGRATE: --update will overwrite SSoT yml. Move this value to .claude/harness-config.local.yml to preserve it across updates."
184
+ fi
185
+ done
186
+ unset key tgt_val src_val
187
+ fi
188
+ unset TARGET_SSOT SRC_SSOT
189
+ fi
190
+
191
+
192
+ # helper: run or echo (dry-run aware)
193
+ # H-1: array-based exec — no eval/word-split/glob re-expansion. Each arg passed
194
+ # verbatim, safe for paths containing spaces / quotes / $ / glob chars.
195
+ # dry-run prints %q-quoted form so the displayed command is copy-paste safe.
196
+ run() {
197
+ if $DRY_RUN; then
198
+ printf '[dry-run]'
199
+ printf ' %q' "$@"
200
+ echo
201
+ else
202
+ "$@"
203
+ fi
204
+ }
205
+
206
+ # ============================================================
207
+ # rsync excludes (state / user-local)
208
+ # ============================================================
209
+ RSYNC_EXCLUDES=(
210
+ --exclude=.gateguard-state/
211
+ --exclude=.taskguard-state/
212
+ --exclude=.confidence-gate-state/
213
+ --exclude=.failure-window/
214
+ --exclude=.agent-markers/
215
+ --exclude=.context-budget-state/
216
+ --exclude=.improvement-proposal-state/
217
+ --exclude=.workflow-state/
218
+ --exclude=settings.json
219
+ --exclude=settings.local.json
220
+ --exclude=settings.local.example.json
221
+ --exclude=harness-config.local.yml
222
+ --exclude=bash-whitelist-requests/
223
+ --exclude=worktrees/
224
+ --exclude=project-rules/
225
+ )
226
+
227
+ # RSYNC_EXCLUDES_MINIMAL (task-79、--overwrite-all 専用):
228
+ # 「全上書き」mode 用。machine-local な settings.local.json **のみ** を温存し、
229
+ # それ以外 (settings.json / harness-config.local.yml / state dir 群 / worktrees) は
230
+ # すべて source の状態で上書きする (drift した target を SSoT へ強制リセットする用途)。
231
+ # `--delete` は使わない (= 上書きのみ、target にしかない file は残す)。
232
+ RSYNC_EXCLUDES_MINIMAL=(
233
+ --exclude=settings.local.json
234
+ --exclude=project-rules/
235
+ )
236
+
237
+ # NOTE (task-82): `.claude/project-rules/<name>.md` は **project 所有** (consuming repo の
238
+ # harness rule override / 追補)。harness 7 rule (`.claude/rules/*.md`) から `@import` され、
239
+ # rsync で上書きすると project 固有編集が消失するため両 exclude set に project-rules/ を含める
240
+ # (overwrite-all でも project-rules は守る = project の override は drift リセット対象外)。
241
+ # 不在 target には下記「project-rules create-if-absent」block が空テンプレを配置する。
242
+
243
+ # NOTE (task-71 H2、2026-06-02): `settings.json` は exclude する。task-71 で settings.json は
244
+ # permissions verbatim 同梱の generated artifact (harness 本体は harness-dev preset の
245
+ # permissions + dispatcher 配線) になったため、rsync で配布すると consuming repo の repo 固有
246
+ # permissions / preset を上書きする回帰になる。dispatcher 機能本体 (wrapper 群 / manifest /
247
+ # generate-settings.sh / dispatcher-core.sh) は `.claude/` 配下なので引き続き配布される。
248
+ # consuming repo は `bash .claude/scripts/generate-settings.sh --out .claude/settings.json` で
249
+ # 自リポの permissions + 配布済 manifest から settings.json を再生成して dispatcher 配線を採用する。
250
+
251
+ # NOTE (task-51 A 案、2026-05-28): `.claude/rules-details/` (Layer B 詳細規範) は
252
+ # 意図的に exclude していない。Claude Code は `.claude/rules/` のみを startup 注入する
253
+ # (公式 doc: code.claude.com/docs/en/memory.md) ため、Layer B を別 dir に置くことで
254
+ # context bloat を回避する設計。rsync -a で `.claude/rules-details/` 配下も自動同期
255
+ # されるため 4 リポでも Layer A↔B link が保たれる。SSoT: `.claude/rules-details/README.md`。
256
+
257
+ # ============================================================
258
+ # 1. .claude/ install
259
+ # ============================================================
260
+ case "$MODE" in
261
+ install)
262
+ if [[ -d "$TARGET/.claude" ]]; then
263
+ echo "[install] existing .claude detected → backup to .claude.bak.$STAMP"
264
+ run mv "$TARGET/.claude" "$TARGET/.claude.bak.$STAMP"
265
+ fi
266
+ echo "[install] rsync .claude/ → $TARGET/.claude/"
267
+ if $DRY_RUN; then
268
+ rsync -an "${RSYNC_EXCLUDES[@]}" "$SCRIPT_DIR/.claude/" "$TARGET/.claude/" | head -30
269
+ echo "[dry-run] ... (truncated)"
270
+ else
271
+ rsync -a "${RSYNC_EXCLUDES[@]}" "$SCRIPT_DIR/.claude/" "$TARGET/.claude/"
272
+ fi
273
+ ;;
274
+ update)
275
+ if [[ ! -d "$TARGET/.claude" ]]; then
276
+ echo "[install] error: --update requires existing $TARGET/.claude. Use default mode for fresh install." >&2
277
+ exit 64
278
+ fi
279
+ echo "[install] rsync (increment) .claude/ → $TARGET/.claude/ (preserving state dirs / settings.local.json)"
280
+ if $DRY_RUN; then
281
+ rsync -an "${RSYNC_EXCLUDES[@]}" "$SCRIPT_DIR/.claude/" "$TARGET/.claude/" | head -30
282
+ echo "[dry-run] ... (truncated)"
283
+ else
284
+ rsync -a "${RSYNC_EXCLUDES[@]}" "$SCRIPT_DIR/.claude/" "$TARGET/.claude/"
285
+ fi
286
+ ;;
287
+ force)
288
+ if [[ -d "$TARGET/.claude" ]]; then
289
+ echo "[install] WARN: --force will OVERWRITE existing .claude (no backup)"
290
+ run rm -rf "$TARGET/.claude"
291
+ fi
292
+ echo "[install] rsync .claude/ → $TARGET/.claude/"
293
+ if $DRY_RUN; then
294
+ rsync -an "${RSYNC_EXCLUDES[@]}" "$SCRIPT_DIR/.claude/" "$TARGET/.claude/" | head -30
295
+ else
296
+ rsync -a "${RSYNC_EXCLUDES[@]}" "$SCRIPT_DIR/.claude/" "$TARGET/.claude/"
297
+ fi
298
+ ;;
299
+ overwrite-all)
300
+ # task-79: 全上書き mode。settings.local.json のみ温存し、それ以外 (settings.json /
301
+ # harness-config.local.yml / state dir / worktrees) も source で上書きする。
302
+ # `--delete` は使わない → target にしかない file は残す (上書きのみ)。
303
+ if [[ ! -d "$TARGET/.claude" ]]; then
304
+ echo "[install] error: --overwrite-all requires existing $TARGET/.claude. Use default mode for fresh install." >&2
305
+ exit 64
306
+ fi
307
+ echo "[install] WARN: --overwrite-all overwrites ALL local overrides (settings.json / harness-config.local.yml / state dirs)"
308
+ echo "[install] WARN: only settings.local.json is preserved. No --delete (target-only files are kept)."
309
+ echo "[install] rsync (overwrite-all) .claude/ → $TARGET/.claude/ (preserving settings.local.json only)"
310
+ if $DRY_RUN; then
311
+ # `| head -30` closes the pipe early; under set -euo pipefail rsync's SIGPIPE
312
+ # (exit 141) would propagate and abort the script (CLAUDE.md HIGH lesson:
313
+ # SIGPIPE → pipefail → errexit → silent death). `|| true` keeps dry-run preview
314
+ # tolerant when the change set exceeds 30 lines (e.g. state dirs under overwrite-all).
315
+ rsync -an "${RSYNC_EXCLUDES_MINIMAL[@]}" "$SCRIPT_DIR/.claude/" "$TARGET/.claude/" | head -30 || true
316
+ echo "[dry-run] ... (truncated)"
317
+ else
318
+ rsync -a "${RSYNC_EXCLUDES_MINIMAL[@]}" "$SCRIPT_DIR/.claude/" "$TARGET/.claude/"
319
+ fi
320
+ ;;
321
+ esac
322
+
323
+ # ============================================================
324
+ # 2. CLAUDE.md (template として配置、既存は保護)
325
+ # ============================================================
326
+ if [[ "$MODE" == "update" ]]; then
327
+ echo "[install] (update mode) CLAUDE.md は触らない"
328
+ else
329
+ if [[ -f "$TARGET/CLAUDE.md" ]]; then
330
+ if [[ "$MODE" == "force" || "$MODE" == "overwrite-all" ]]; then
331
+ echo "[install] WARN: --$MODE overwriting $TARGET/CLAUDE.md (no backup)"
332
+ run cp "$SCRIPT_DIR/CLAUDE.md" "$TARGET/CLAUDE.md"
333
+ else
334
+ echo "[install] existing CLAUDE.md → backup to CLAUDE.md.bak.$STAMP, install as CLAUDE.md.template"
335
+ run mv "$TARGET/CLAUDE.md" "$TARGET/CLAUDE.md.bak.$STAMP"
336
+ run cp "$SCRIPT_DIR/CLAUDE.md" "$TARGET/CLAUDE.md.template"
337
+ fi
338
+ else
339
+ echo "[install] copying CLAUDE.md → $TARGET/CLAUDE.md.template (edit <...> placeholders then rename to CLAUDE.md)"
340
+ run cp "$SCRIPT_DIR/CLAUDE.md" "$TARGET/CLAUDE.md.template"
341
+ fi
342
+ fi
343
+
344
+ # ============================================================
345
+ # 3. .mcp.json (Serena MCP は /save-state /pm-start に必須)
346
+ # ============================================================
347
+ if $WITH_MCP; then
348
+ if [[ -f "$TARGET/.mcp.json" ]]; then
349
+ echo "[install] existing .mcp.json detected → keep as-is (manual merge if you need harness defaults)"
350
+ else
351
+ echo "[install] copying .mcp.json → $TARGET/.mcp.json"
352
+ run cp "$SCRIPT_DIR/.mcp.json" "$TARGET/.mcp.json"
353
+ fi
354
+ else
355
+ echo "[install] (--no-mcp) skip .mcp.json"
356
+ fi
357
+
358
+ # ============================================================
359
+ # 4. .gitignore (既存があれば merge、無ければ新規)
360
+ # ============================================================
361
+ if [[ -f "$TARGET/.gitignore" ]]; then
362
+ # 既存に harness state 除外行が無ければ追記
363
+ if grep -q '.claude/.gateguard-state' "$TARGET/.gitignore" 2>/dev/null; then
364
+ echo "[install] $TARGET/.gitignore already contains harness state ignores → skip"
365
+ else
366
+ echo "[install] appending harness state ignores to existing $TARGET/.gitignore"
367
+ if $DRY_RUN; then
368
+ echo "[dry-run] cat >> $TARGET/.gitignore (harness state block)"
369
+ else
370
+ cat >> "$TARGET/.gitignore" <<'GITIGNORE_HARNESS'
371
+
372
+ # === HIRAI Method harness state (auto-appended by install.sh) ===
373
+ .claude/.gateguard-state/
374
+ .claude/.taskguard-state/
375
+ .claude/.confidence-gate-state/
376
+ .claude/.failure-window/
377
+ .claude/.confidence-bypass.cleared
378
+ .claude/.confidence-bypass.log
379
+ .claude/.agent-markers/
380
+ .claude/.context-budget-state/
381
+ .claude/.improvement-proposal-state/
382
+ .claude/.workflow-state/
383
+ .claude/settings.local.json
384
+ .claude/settings.generated.preview.json
385
+ .claude/worktrees/
386
+ .claude/bash-whitelist-requests/
387
+ GITIGNORE_HARNESS
388
+ fi
389
+ fi
390
+ else
391
+ echo "[install] copying .gitignore → $TARGET/.gitignore"
392
+ run cp "$SCRIPT_DIR/.gitignore" "$TARGET/.gitignore"
393
+ fi
394
+
395
+ # ============================================================
396
+ # 5. docs/tasks/ docs/draft/ (templates から初期化、既存は保護)
397
+ # ============================================================
398
+ if $WITH_DOCS; then
399
+ run mkdir -p "$TARGET/docs/tasks" "$TARGET/docs/draft"
400
+ for f in list.md parking-lot.md _TASK_TEMPLATE.md; do
401
+ src="$SCRIPT_DIR/.claude/templates/docs/tasks/$f"
402
+ dst="$TARGET/docs/tasks/$f"
403
+ if [[ -f "$dst" ]]; then
404
+ echo "[install] $dst exists → skip"
405
+ elif [[ -f "$src" ]]; then
406
+ echo "[install] copy template $f → docs/tasks/"
407
+ run cp "$src" "$dst"
408
+ fi
409
+ done
410
+ src="$SCRIPT_DIR/.claude/templates/docs/draft/_DRAFT_TEMPLATE.md"
411
+ dst="$TARGET/docs/draft/_DRAFT_TEMPLATE.md"
412
+ if [[ -f "$dst" ]]; then
413
+ echo "[install] $dst exists → skip"
414
+ elif [[ -f "$src" ]]; then
415
+ echo "[install] copy template _DRAFT_TEMPLATE.md → docs/draft/"
416
+ run cp "$src" "$dst"
417
+ fi
418
+ else
419
+ echo "[install] (--no-docs) skip docs/tasks/ docs/draft/ templates"
420
+ fi
421
+
422
+ # ============================================================
423
+ # 5.5. project-rules/ create-if-absent (task-82、全 mode 共通、project 所有保護)
424
+ # ============================================================
425
+ # `.claude/project-rules/<name>.md` は consuming repo の harness rule override / 追補を書く
426
+ # **project 所有** file。harness 7 rule (`.claude/rules/*.md`) から `@import` され、harness
427
+ # rule の後に結合 load される。RSYNC_EXCLUDES / RSYNC_EXCLUDES_MINIMAL の `--exclude=project-rules/`
428
+ # により rsync では一切 touch しない (= 既存 project 編集を上書きしない、保護)。
429
+ # ここで「なければ空テンプレを配置・あれば skip」する冪等 cp で初回雛形を提供する
430
+ # (docs/tasks templates と同じ create-if-absent ロジック)。全 mode (install/update/force/
431
+ # overwrite-all) で適用 — project-rules は project 所有のため force/overwrite-all でも上書きしない。
432
+ PROJECT_RULES_SRC="$SCRIPT_DIR/.claude/project-rules"
433
+ PROJECT_RULES_DST="$TARGET/.claude/project-rules"
434
+ if [[ -d "$PROJECT_RULES_SRC" ]]; then
435
+ run mkdir -p "$PROJECT_RULES_DST"
436
+ for src in "$PROJECT_RULES_SRC"/*.md; do
437
+ [[ -e "$src" ]] || continue # nullglob 非依存 (no-match で literal glob を skip)
438
+ base="$(basename "$src")"
439
+ dst="$PROJECT_RULES_DST/$base"
440
+ if [[ -f "$dst" ]]; then
441
+ echo "[install] project-rules/$base exists → skip (project-owned, protected)"
442
+ else
443
+ echo "[install] copy project-rules template $base → .claude/project-rules/"
444
+ run cp "$src" "$dst"
445
+ fi
446
+ done
447
+ unset src base dst
448
+ fi
449
+ unset PROJECT_RULES_SRC PROJECT_RULES_DST
450
+
451
+ # ============================================================
452
+ # 6. hook 実行権限 (rsync -a で保持されるが、念のため)
453
+ # ============================================================
454
+ # L-4: chmod runs in ALL modes (install / update / force). The previous
455
+ # `if [[ "$MODE" != "update" ]] || true` was always true (dead condition); we want
456
+ # exec bits restored even on --update since rsync can drop them via staging, so the
457
+ # guard is removed and chmod is unconditional.
458
+ if $DRY_RUN; then
459
+ echo "[dry-run] chmod +x .claude/hooks/*.sh .claude/scripts/*.{sh,py,mjs}"
460
+ else
461
+ find "$TARGET/.claude/hooks" -maxdepth 2 -type f -name '*.sh' -exec chmod +x {} + 2>/dev/null || true
462
+ find "$TARGET/.claude/scripts" -type f \( -name '*.sh' -o -name '*.py' -o -name '*.mjs' \) -exec chmod +x {} + 2>/dev/null || true
463
+ fi
464
+
465
+ # ============================================================
466
+ # 6.3. settings.json 自動再生成 (statusLine / dispatcher 配線同期、task-80)
467
+ # ============================================================
468
+ # task-71 H2 で settings.json は rsync exclude (repo 固有 permissions 保護) になったため、
469
+ # statusLine / dispatcher 配線が consuming repo に同期されない問題があった (user 報告)。
470
+ # sync mode (install / update / force / overwrite-all) で rsync 後に generate-settings.sh を自動実行し、
471
+ # 既存 settings.json の permissions を verbatim 保持したまま statusLine / dispatcher を再配線する。
472
+ # fail-open: jq 不在 / generate-settings.sh 不在 / 再生成失敗は WARN + skip で install 自体は継続する
473
+ # (permissions 喪失 / die を回避)。
474
+ # CLAUDE.md HIGH 教訓: 再生成は subshell ( cd ...; bash ... ) で実行し caller の shell flags
475
+ # (set -e 等) に影響させない。
476
+ # L-1 保険: subshell に HC_PROJECT_ROOT="$TARGET" を明示注入する。generate-settings.sh の
477
+ # resolve_project_root は HC_PROJECT_ROOT を最優先 key とするため、TARGET が git 未 init かつ
478
+ # 環境に CLAUDE_PROJECT_DIR が残っている場合でも ROOT が TARGET に固定される (取り違え防止)。
479
+ # 挙動不変: 通常 path も ROOT=TARGET のまま (cd "$TARGET" 後の git/pwd も TARGET を指す)。
480
+ # mode 別の permissions 帰結 (M-1):
481
+ # install : 既存不在なら source から seed copy + 再配線。既存ありなら backup + permissions verbatim 保持で再配線。
482
+ # update : 既存 settings.json の permissions を verbatim 保持して再配線 (既存不在は seed copy)。
483
+ # force : rm -rf .claude で破壊的リセット + settings.json は rsync exclude のため
484
+ # 再生成時には既存不在 → source から seed copy + 再配線。
485
+ # overwrite-all : settings.json も source で上書き済のため、ここで保持される permissions は
486
+ # source 由来 (consuming repo の permissions は失われる = task-79 既定)。
487
+ if [[ "$MODE" == "install" || "$MODE" == "update" || "$MODE" == "force" || "$MODE" == "overwrite-all" ]] && ! $DRY_RUN; then
488
+ GEN_SETTINGS="$TARGET/.claude/scripts/generate-settings.sh"
489
+ LIVE_SETTINGS="$TARGET/.claude/settings.json"
490
+ SOURCE_SETTINGS="$SCRIPT_DIR/.claude/settings.json"
491
+ BACKUP_SETTINGS=""
492
+ if ! command -v jq >/dev/null 2>&1; then
493
+ echo "[install] WARN: jq 不在のため settings.json 自動再生成 skip。手動: bash .claude/scripts/generate-settings.sh --out .claude/settings.json" >&2
494
+ elif [[ ! -f "$GEN_SETTINGS" ]]; then
495
+ echo "[install] WARN: generate-settings.sh 不在、settings.json 自動再生成 skip" >&2
496
+ elif [[ ! -f "$LIVE_SETTINGS" ]]; then
497
+ if [[ -f "$SOURCE_SETTINGS" ]]; then
498
+ run cp "$SOURCE_SETTINGS" "$LIVE_SETTINGS"
499
+ echo "[install] settings.json 不在 → source から seed copy: $LIVE_SETTINGS"
500
+ if ( cd "$TARGET" && HC_PROJECT_ROOT="$TARGET" bash .claude/scripts/generate-settings.sh --out .claude/settings.json ); then
501
+ echo "[install] settings.json 生成済 (seed + statusLine / dispatcher 配線)"
502
+ else
503
+ echo "[install] WARN: settings.json 再生成失敗 (seed は残置、手動再生成を検討)" >&2
504
+ fi
505
+ else
506
+ echo "[install] WARN: source 側 settings.json 不在のため bootstrap skip" >&2
507
+ fi
508
+ else
509
+ BACKUP_SETTINGS="${LIVE_SETTINGS}.bak.${STAMP}"
510
+ run cp "$LIVE_SETTINGS" "$BACKUP_SETTINGS"
511
+ echo "[install] settings.json backup: $BACKUP_SETTINGS"
512
+ if ( cd "$TARGET" && HC_PROJECT_ROOT="$TARGET" bash .claude/scripts/generate-settings.sh --out .claude/settings.json ); then
513
+ echo "[install] settings.json 再生成済 (statusLine / dispatcher 配線同期、permissions 保持)"
514
+ else
515
+ echo "[install] WARN: settings.json 自動再生成 失敗 (install は継続)。手動再生成を検討" >&2
516
+ echo "[install] HINT: backup 復元: cp \"$BACKUP_SETTINGS\" \"$LIVE_SETTINGS\"" >&2
517
+ fi
518
+ fi
519
+ unset GEN_SETTINGS LIVE_SETTINGS SOURCE_SETTINGS BACKUP_SETTINGS
520
+ fi
521
+
522
+ # ============================================================
523
+ # 6.5. harness_version stamp 書込 (task-56 F)
524
+ # ============================================================
525
+ # stale-harness-detect.sh (SessionStart hook) が読む同期 stamp。
526
+ # `bash install.sh --update <repo>` 実行日 (UTC) を YYYY-MM-DD で
527
+ # target の harness-config.yml に書き込む (in-place、portable sed -i 互換)。
528
+ # 既存 `harness_version:` 行があれば差し替え、無ければ追記。
529
+ # fail-open: stamp 書込失敗は WARN のみで install 自体は継続。
530
+ if ! $DRY_RUN; then
531
+ TARGET_HC="$TARGET/.claude/harness-config.yml"
532
+ if [[ -f "$TARGET_HC" ]]; then
533
+ NEW_STAMP="$(date -u +%Y-%m-%d)"
534
+ if grep -qE '^harness_version:' "$TARGET_HC" 2>/dev/null; then
535
+ # 既存 line を置換 (BSD sed / GNU sed 両対応: -i '' / -i バックアップ拡張子なし)
536
+ TMP_HC="$(mktemp /tmp/harness-config.XXXXXX.yml)"
537
+ sed -E "s|^harness_version:.*|harness_version: \"${NEW_STAMP}\"|" "$TARGET_HC" > "$TMP_HC" 2>/dev/null \
538
+ && mv "$TMP_HC" "$TARGET_HC" \
539
+ && echo "[install] harness_version stamp updated -> $NEW_STAMP" \
540
+ || echo "[install] WARN: failed to update harness_version stamp (install continues)" >&2
541
+ rm -f "$TMP_HC" 2>/dev/null || true
542
+ else
543
+ # 未設定なら top に append (insert at top of file)
544
+ {
545
+ echo "# === Harness Version Stamp (task-56 F, install.sh が書込) ==="
546
+ echo "harness_version: \"${NEW_STAMP}\""
547
+ echo ""
548
+ cat "$TARGET_HC"
549
+ } > "${TARGET_HC}.tmp" 2>/dev/null \
550
+ && mv "${TARGET_HC}.tmp" "$TARGET_HC" \
551
+ && echo "[install] harness_version stamp inserted -> $NEW_STAMP" \
552
+ || echo "[install] WARN: failed to insert harness_version stamp (install continues)" >&2
553
+ fi
554
+ unset NEW_STAMP TMP_HC
555
+ fi
556
+ unset TARGET_HC
557
+ fi
558
+
559
+ # ============================================================
560
+ # 6.6. harness_npm_version stamp 書込 (task-84 Step 1)
561
+ # ============================================================
562
+ # stale-harness-detect.sh (SessionStart hook) が npm registry latest と
563
+ # semver 比較するための同期 stamp。install.sh 自身の package.json の
564
+ # `.version` (semver x.y.z) を target の harness-config.yml に書き込む。
565
+ # 既存 `harness_npm_version:` 行があれば差し替え、無ければ追記。
566
+ # 既存 date stamp (harness_version) とは独立に併存する。
567
+ # fail-safe: package.json 不在 / version 取得不能なら stamp を skip
568
+ # (既存挙動を壊さない)。stamp 書込失敗は WARN のみで install 継続。
569
+ if ! $DRY_RUN; then
570
+ TARGET_HC_NPM="$TARGET/.claude/harness-config.yml"
571
+ SRC_PKG="$SCRIPT_DIR/package.json"
572
+ NPM_VER=""
573
+ if [[ -f "$SRC_PKG" ]]; then
574
+ if command -v node >/dev/null 2>&1; then
575
+ # L-2 (task-84 fix): path を JS 文字列へ直接埋め込まず argv 経由で渡す
576
+ # (path injection 回避)。$SRC_PKG にメタ文字が含まれても安全。
577
+ NPM_VER="$(node -e 'try{process.stdout.write(String(require(process.argv[1]).version||""))}catch(e){}' "$SRC_PKG" 2>/dev/null || true)"
578
+ fi
579
+ # node 不在 / 取得失敗時の fallback: grep/sed で "version": "x.y.z" を抽出
580
+ if [[ -z "$NPM_VER" || "$NPM_VER" == "undefined" ]]; then
581
+ NPM_VER="$(grep -E '"version"[[:space:]]*:' "$SRC_PKG" 2>/dev/null \
582
+ | head -1 | sed -E 's/.*"version"[[:space:]]*:[[:space:]]*"([^"]+)".*/\1/' || true)"
583
+ fi
584
+ fi
585
+ if [[ -f "$TARGET_HC_NPM" && -n "$NPM_VER" && "$NPM_VER" != "undefined" ]]; then
586
+ if grep -qE '^harness_npm_version:' "$TARGET_HC_NPM" 2>/dev/null; then
587
+ TMP_HC_NPM="$(mktemp /tmp/harness-config-npm.XXXXXX.yml)"
588
+ sed -E "s|^harness_npm_version:.*|harness_npm_version: \"${NPM_VER}\"|" "$TARGET_HC_NPM" > "$TMP_HC_NPM" 2>/dev/null \
589
+ && mv "$TMP_HC_NPM" "$TARGET_HC_NPM" \
590
+ && echo "[install] harness_npm_version stamp updated -> $NPM_VER" \
591
+ || echo "[install] WARN: failed to update harness_npm_version stamp (install continues)" >&2
592
+ rm -f "$TMP_HC_NPM" 2>/dev/null || true
593
+ else
594
+ {
595
+ echo "# === Harness NPM Version Stamp (task-84, install.sh が書込) ==="
596
+ echo "harness_npm_version: \"${NPM_VER}\""
597
+ echo ""
598
+ cat "$TARGET_HC_NPM"
599
+ } > "${TARGET_HC_NPM}.tmp" 2>/dev/null \
600
+ && mv "${TARGET_HC_NPM}.tmp" "$TARGET_HC_NPM" \
601
+ && echo "[install] harness_npm_version stamp inserted -> $NPM_VER" \
602
+ || echo "[install] WARN: failed to insert harness_npm_version stamp (install continues)" >&2
603
+ fi
604
+ elif [[ -f "$TARGET_HC_NPM" ]]; then
605
+ echo "[install] NOTE: package.json version 取得不能のため harness_npm_version stamp skip (fail-safe)" >&2
606
+ fi
607
+ unset TARGET_HC_NPM SRC_PKG NPM_VER TMP_HC_NPM
608
+ fi
609
+
610
+ # ============================================================
611
+ # 6.7. sync drift 案内 + --commit による分離 commit (task-58 G1)
612
+ # ============================================================
613
+ # install.sh --update が SSoT を同期した直後、target 側 .claude/ 配下の
614
+ # git diff を検出して user に「分離 commit せよ」案内 + 変更 file 一覧を出力。
615
+ # --commit flag 併用時のみ harness-sync 対象 path のみ git add + 単独 commit。
616
+ # project file (root README.md 等) は完全に触らない。git reset 禁止 (HIGH 教訓)。
617
+ # 設計: docs/draft/harness-sync-uncommitted-drift.md (採用案 C ハイブリッド)
618
+ if [[ "$MODE" == "update" ]] && ! $DRY_RUN; then
619
+ if command -v git >/dev/null 2>&1 && [[ -d "$TARGET/.git" ]]; then
620
+ # .claude/ 配下の変更 path を git status --porcelain で安全に列挙
621
+ # (rename 検出は対象外、付属 path のみ抽出)
622
+ SYNC_CHANGES=$(cd "$TARGET" && git status --porcelain -- .claude/ 2>/dev/null | awk '{
623
+ # XY status (2 char) + space + path. rename は " -> " で arrow 後ろを採用
624
+ sub(/^.. /, "")
625
+ if (match($0, / -> /)) {
626
+ print substr($0, RSTART + 4)
627
+ } else {
628
+ print
629
+ }
630
+ }')
631
+ if [[ -n "$SYNC_CHANGES" ]]; then
632
+ SYNC_COUNT=$(printf '%s\n' "$SYNC_CHANGES" | wc -l | tr -d ' ')
633
+ echo ""
634
+ echo "[install] === harness sync drift detected ==="
635
+ echo "[install] ${SYNC_COUNT} file(s) under .claude/ changed by this --update:"
636
+ printf '%s\n' "$SYNC_CHANGES" | sed 's/^/ - /'
637
+ echo ""
638
+ if $COMMIT_AFTER_SYNC; then
639
+ # 安全な git add (specific paths only、CLAUDE.md HIGH 教訓: git reset 禁止)
640
+ # path に space を含む場合に備えて while-read + git add 個別
641
+ echo "[install] --commit: staging ${SYNC_COUNT} synced file(s) (project files untouched)"
642
+ ADDED=0
643
+ while IFS= read -r p; do
644
+ [[ -z "$p" ]] && continue
645
+ if (cd "$TARGET" && git add -- "$p" 2>/dev/null); then
646
+ ADDED=$((ADDED + 1))
647
+ else
648
+ echo "[install] WARN: git add skipped: $p" >&2
649
+ fi
650
+ done <<<"$SYNC_CHANGES"
651
+ if [[ "$ADDED" -gt 0 ]]; then
652
+ # commit 対象が staging にあるか最終確認 (空 commit 防止)
653
+ if (cd "$TARGET" && git diff --cached --quiet); then
654
+ echo "[install] WARN: nothing staged after git add — skip commit" >&2
655
+ else
656
+ COMMIT_MSG="chore(harness): sync .claude/ from hirai-method $(date -u +%Y-%m-%d)"
657
+ if (cd "$TARGET" && git commit -q -m "$COMMIT_MSG"); then
658
+ COMMIT_SHA=$(cd "$TARGET" && git rev-parse --short HEAD)
659
+ echo "[install] committed harness sync: ${COMMIT_SHA} (${ADDED} file(s))"
660
+ else
661
+ echo "[install] WARN: git commit failed (manual commit needed)" >&2
662
+ fi
663
+ fi
664
+ else
665
+ echo "[install] WARN: no files staged — skip commit" >&2
666
+ fi
667
+ unset ADDED COMMIT_MSG COMMIT_SHA
668
+ else
669
+ # default 案内 (honor system、user に分離 commit を促す)
670
+ echo "[install] HINT: commit these as a SEPARATE commit, e.g.:"
671
+ echo " cd $TARGET"
672
+ echo " git add .claude/"
673
+ echo " git commit -m 'chore(harness): sync .claude/ from hirai-method'"
674
+ echo "[install] HINT: or rerun with '--commit' to auto-commit harness sync only:"
675
+ echo " bash install.sh $TARGET --update --commit"
676
+ echo "[install] NOTE: keeping harness-sync separate from project work helps revert / blame."
677
+ fi
678
+ unset SYNC_COUNT
679
+ fi
680
+ unset SYNC_CHANGES
681
+ else
682
+ if $COMMIT_AFTER_SYNC; then
683
+ echo "[install] WARN: --commit requested but target is not a git repo — skip commit"
684
+ echo "[install] HINT: initialize git first: cd $TARGET && git init"
685
+ fi
686
+ fi
687
+ fi
688
+
689
+ # ============================================================
690
+ # 7. 検証 (config-loader 動作確認)
691
+ # ============================================================
692
+ if ! $DRY_RUN; then
693
+ echo ""
694
+ echo "[install] verifying config-loader.sh..."
695
+ if ( cd "$TARGET" && bash -c 'source .claude/hooks/lib/config-loader.sh && [[ -n "$HC_PROTECTED_PATHS" ]] && [[ -n "$HC_TASK_DIR" ]]' ); then
696
+ echo "[install] config-loader OK (HC_PROTECTED_PATHS / HC_TASK_DIR loaded)"
697
+ else
698
+ echo "[install] WARN: config-loader.sh did not export expected vars. Check $TARGET/.claude/harness-config.yml" >&2
699
+ fi
700
+ fi
701
+
702
+ # ============================================================
703
+ # 8. summary
704
+ # ============================================================
705
+ cat <<EOF
706
+
707
+ [install] DONE ($MODE mode).
708
+
709
+ Counts at target:
710
+ agents: $(find "$TARGET/.claude/agents" -maxdepth 2 -name '*.md' 2>/dev/null | wc -l | tr -d ' ')
711
+ skills: $(find "$TARGET/.claude/skills" -maxdepth 2 -name 'SKILL.md' 2>/dev/null | wc -l | tr -d ' ')
712
+ commands: $(find "$TARGET/.claude/commands" -maxdepth 1 -name '*.md' 2>/dev/null | wc -l | tr -d ' ')
713
+ hooks: $(find "$TARGET/.claude/hooks" -maxdepth 1 -name '*.sh' 2>/dev/null | wc -l | tr -d ' ')
714
+ rules: $(find "$TARGET/.claude/rules" -name '*.md' 2>/dev/null | wc -l | tr -d ' ')
715
+
716
+ Next steps:
717
+ 1. cd $TARGET
718
+ 2. project 固有 override (docs_approved_dir / protected_paths 追加分 等) は
719
+ \$EDITOR .claude/harness-config.local.yml # ←ココに書く (install.sh --update で温存される)
720
+ (SSoT .claude/harness-config.yml は触らない — --update で SSoT 値が上書きされる)
721
+ 3. \$EDITOR .claude/bash-whitelist.txt # 使う CLI (pnpm/poetry/cargo/...) を追記
722
+ 4. mv CLAUDE.md.template CLAUDE.md && \$EDITOR CLAUDE.md # <...> placeholders を埋める
723
+ 5. (recommended) git init # observe.sh の project hash 検出を有効化
724
+ 6. Claude Code session 起動 → /init-tasks → /mode loop
725
+
726
+ settings.json について (task-71 H2 / task-80):
727
+ - settings.json 本体は rsync exclude (repo 固有 permissions / preset を守る)。
728
+ - sync mode (--update / --force / --overwrite-all) では rsync 後に
729
+ generate-settings.sh で settings.json を **自動再生成済** (statusLine / dispatcher 配線同期、
730
+ permissions は verbatim 保持)。手動実行は不要 (失敗時のみ下記を手動実行):
731
+ bash .claude/scripts/generate-settings.sh --out .claude/settings.json
732
+ - mode 別の permissions 帰結 (意味が異なる):
733
+ --update : 既存 settings.json の permissions を verbatim 保持して再配線。
734
+ --force : .claude を破壊的リセット + settings.json は exclude のため再生成時は
735
+ 既存不在 → fail-open skip (permissions 保持の前提は成立しない)。
736
+ --overwrite-all : settings.json も source で上書き済のため、保持される permissions は
737
+ **source 由来** (consuming repo の permissions は失われる = task-79 既定)。
738
+ - 自動再生成 skip 条件: jq 不在 / generate-settings.sh 不在 / 既存 settings.json 不在
739
+ (いずれも WARN/NOTE + install 継続)。新規 install (default mode) は settings.json を
740
+ 配布しないため対象外。
741
+ - 注意: 手編集した独自トップレベル key / 独自 hook は manifest 由来に置換され脱落する。
742
+ 独自 hook は dispatcher-manifest.tsv に登録すること (再生成で配線が保たれる)。
743
+
744
+ --overwrite-all について (task-79):
745
+ - drift した target を SSoT へ強制リセットする全上書き mode。
746
+ - settings.local.json **のみ** 温存し、それ以外 (settings.json / harness-config.local.yml /
747
+ state dir 群 / worktrees) も source で上書きする = target の local override は失われる。
748
+ - settings.json も上書きされるため、consuming repo は実行後
749
+ bash .claude/scripts/generate-settings.sh --out .claude/settings.json
750
+ で repo 固有 permissions から再生成すること (task-71 dispatcher 配線復元)。
751
+ - --delete は使わないため target にしかない file は残る (上書きのみ)。
752
+ - 用途は drift リセット専用。日常の harness 取込は --update を使うこと (local 設定を温存)。
753
+
754
+ project-rules/ について (task-82):
755
+ - .claude/project-rules/<name>.md は **project 所有** (update 免除)。harness 7 rule
756
+ (.claude/rules/*.md) から @import され、harness rule の後に結合 load される。
757
+ - harness rule の override / 追補はここに書く (7 harness rule 本体は触らない)。
758
+ update/force/overwrite-all いずれの mode でも rsync exclude + create-if-absent で保護
759
+ (なければ空テンプレ配置・あれば skip、既存編集は上書きされない)。
760
+
761
+ Override precedence (高 → 低):
762
+ env(HC_*) > .claude/harness-config.local.yml > .claude/harness-config.yml (SSoT) > hardcoded default
763
+
764
+ Documentation:
765
+ - README.md (採用 5 ステップ)
766
+ - docs/INVENTORY.md (全構成要素の Path 表)
767
+ - docs/PORTABILITY.md (他リポへの移植仕様)
768
+ - docs/SELF_IMPROVEMENT.md (F1-F3 + L1-L5)
769
+ EOF