@shirokuma-library/shirokuma-docs 0.1.0-alpha.5

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.

Potentially problematic release.


This version of @shirokuma-library/shirokuma-docs might be problematic. Click here for more details.

Files changed (753) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +308 -0
  3. package/README.md +308 -0
  4. package/THIRD_PARTY_NOTICES.md +18 -0
  5. package/bin/shirokuma-docs +2 -0
  6. package/dist/analyzers/details-test-analysis.d.ts +31 -0
  7. package/dist/analyzers/details-test-analysis.d.ts.map +1 -0
  8. package/dist/analyzers/details-test-analysis.js +172 -0
  9. package/dist/analyzers/details-test-analysis.js.map +1 -0
  10. package/dist/analyzers/feature-map-builder.d.ts +20 -0
  11. package/dist/analyzers/feature-map-builder.d.ts.map +1 -0
  12. package/dist/analyzers/feature-map-builder.js +154 -0
  13. package/dist/analyzers/feature-map-builder.js.map +1 -0
  14. package/dist/analyzers/feature-map-references.d.ts +34 -0
  15. package/dist/analyzers/feature-map-references.d.ts.map +1 -0
  16. package/dist/analyzers/feature-map-references.js +249 -0
  17. package/dist/analyzers/feature-map-references.js.map +1 -0
  18. package/dist/analyzers/reference-analyzer.d.ts +95 -0
  19. package/dist/analyzers/reference-analyzer.d.ts.map +1 -0
  20. package/dist/analyzers/reference-analyzer.js +372 -0
  21. package/dist/analyzers/reference-analyzer.js.map +1 -0
  22. package/dist/commands/adr.d.ts +26 -0
  23. package/dist/commands/adr.d.ts.map +1 -0
  24. package/dist/commands/adr.js +129 -0
  25. package/dist/commands/adr.js.map +1 -0
  26. package/dist/commands/api-tools.d.ts +83 -0
  27. package/dist/commands/api-tools.d.ts.map +1 -0
  28. package/dist/commands/api-tools.js +775 -0
  29. package/dist/commands/api-tools.js.map +1 -0
  30. package/dist/commands/coverage.d.ts +139 -0
  31. package/dist/commands/coverage.d.ts.map +1 -0
  32. package/dist/commands/coverage.js +481 -0
  33. package/dist/commands/coverage.js.map +1 -0
  34. package/dist/commands/deps.d.ts +24 -0
  35. package/dist/commands/deps.d.ts.map +1 -0
  36. package/dist/commands/deps.js +211 -0
  37. package/dist/commands/deps.js.map +1 -0
  38. package/dist/commands/details-context.d.ts +38 -0
  39. package/dist/commands/details-context.d.ts.map +1 -0
  40. package/dist/commands/details-context.js +193 -0
  41. package/dist/commands/details-context.js.map +1 -0
  42. package/dist/commands/details-types.d.ts +315 -0
  43. package/dist/commands/details-types.d.ts.map +1 -0
  44. package/dist/commands/details-types.js +7 -0
  45. package/dist/commands/details-types.js.map +1 -0
  46. package/dist/commands/details.d.ts +24 -0
  47. package/dist/commands/details.d.ts.map +1 -0
  48. package/dist/commands/details.js +299 -0
  49. package/dist/commands/details.js.map +1 -0
  50. package/dist/commands/discussion-templates.d.ts +26 -0
  51. package/dist/commands/discussion-templates.d.ts.map +1 -0
  52. package/dist/commands/discussion-templates.js +270 -0
  53. package/dist/commands/discussion-templates.js.map +1 -0
  54. package/dist/commands/discussions.d.ts +31 -0
  55. package/dist/commands/discussions.d.ts.map +1 -0
  56. package/dist/commands/discussions.js +743 -0
  57. package/dist/commands/discussions.js.map +1 -0
  58. package/dist/commands/feature-map-types.d.ts +294 -0
  59. package/dist/commands/feature-map-types.d.ts.map +1 -0
  60. package/dist/commands/feature-map-types.js +8 -0
  61. package/dist/commands/feature-map-types.js.map +1 -0
  62. package/dist/commands/feature-map.d.ts +30 -0
  63. package/dist/commands/feature-map.d.ts.map +1 -0
  64. package/dist/commands/feature-map.js +137 -0
  65. package/dist/commands/feature-map.js.map +1 -0
  66. package/dist/commands/generate.d.ts +16 -0
  67. package/dist/commands/generate.d.ts.map +1 -0
  68. package/dist/commands/generate.js +88 -0
  69. package/dist/commands/generate.js.map +1 -0
  70. package/dist/commands/gh-discussions.d.ts +31 -0
  71. package/dist/commands/gh-discussions.d.ts.map +1 -0
  72. package/dist/commands/gh-discussions.js +743 -0
  73. package/dist/commands/gh-discussions.js.map +1 -0
  74. package/dist/commands/gh-issues-pr.d.ts +74 -0
  75. package/dist/commands/gh-issues-pr.d.ts.map +1 -0
  76. package/dist/commands/gh-issues-pr.js +417 -0
  77. package/dist/commands/gh-issues-pr.js.map +1 -0
  78. package/dist/commands/gh-issues.d.ts +90 -0
  79. package/dist/commands/gh-issues.d.ts.map +1 -0
  80. package/dist/commands/gh-issues.js +1297 -0
  81. package/dist/commands/gh-issues.js.map +1 -0
  82. package/dist/commands/gh-projects.d.ts +54 -0
  83. package/dist/commands/gh-projects.d.ts.map +1 -0
  84. package/dist/commands/gh-projects.js +966 -0
  85. package/dist/commands/gh-projects.js.map +1 -0
  86. package/dist/commands/gh-repo.d.ts +18 -0
  87. package/dist/commands/gh-repo.d.ts.map +1 -0
  88. package/dist/commands/gh-repo.js +253 -0
  89. package/dist/commands/gh-repo.js.map +1 -0
  90. package/dist/commands/github-data.d.ts +67 -0
  91. package/dist/commands/github-data.d.ts.map +1 -0
  92. package/dist/commands/github-data.js +361 -0
  93. package/dist/commands/github-data.js.map +1 -0
  94. package/dist/commands/i18n.d.ts +102 -0
  95. package/dist/commands/i18n.d.ts.map +1 -0
  96. package/dist/commands/i18n.js +829 -0
  97. package/dist/commands/i18n.js.map +1 -0
  98. package/dist/commands/impact.d.ts +14 -0
  99. package/dist/commands/impact.d.ts.map +1 -0
  100. package/dist/commands/impact.js +263 -0
  101. package/dist/commands/impact.js.map +1 -0
  102. package/dist/commands/init.d.ts +53 -0
  103. package/dist/commands/init.d.ts.map +1 -0
  104. package/dist/commands/init.js +429 -0
  105. package/dist/commands/init.js.map +1 -0
  106. package/dist/commands/issues-pr.d.ts +74 -0
  107. package/dist/commands/issues-pr.d.ts.map +1 -0
  108. package/dist/commands/issues-pr.js +417 -0
  109. package/dist/commands/issues-pr.js.map +1 -0
  110. package/dist/commands/issues.d.ts +76 -0
  111. package/dist/commands/issues.d.ts.map +1 -0
  112. package/dist/commands/issues.js +1285 -0
  113. package/dist/commands/issues.js.map +1 -0
  114. package/dist/commands/link-docs.d.ts +21 -0
  115. package/dist/commands/link-docs.d.ts.map +1 -0
  116. package/dist/commands/link-docs.js +990 -0
  117. package/dist/commands/link-docs.js.map +1 -0
  118. package/dist/commands/lint-annotations.d.ts +28 -0
  119. package/dist/commands/lint-annotations.d.ts.map +1 -0
  120. package/dist/commands/lint-annotations.js +511 -0
  121. package/dist/commands/lint-annotations.js.map +1 -0
  122. package/dist/commands/lint-code.d.ts +26 -0
  123. package/dist/commands/lint-code.d.ts.map +1 -0
  124. package/dist/commands/lint-code.js +428 -0
  125. package/dist/commands/lint-code.js.map +1 -0
  126. package/dist/commands/lint-coverage.d.ts +33 -0
  127. package/dist/commands/lint-coverage.d.ts.map +1 -0
  128. package/dist/commands/lint-coverage.js +379 -0
  129. package/dist/commands/lint-coverage.js.map +1 -0
  130. package/dist/commands/lint-docs.d.ts +23 -0
  131. package/dist/commands/lint-docs.d.ts.map +1 -0
  132. package/dist/commands/lint-docs.js +338 -0
  133. package/dist/commands/lint-docs.js.map +1 -0
  134. package/dist/commands/lint-structure.d.ts +38 -0
  135. package/dist/commands/lint-structure.d.ts.map +1 -0
  136. package/dist/commands/lint-structure.js +350 -0
  137. package/dist/commands/lint-structure.js.map +1 -0
  138. package/dist/commands/lint-tests.d.ts +25 -0
  139. package/dist/commands/lint-tests.d.ts.map +1 -0
  140. package/dist/commands/lint-tests.js +105 -0
  141. package/dist/commands/lint-tests.js.map +1 -0
  142. package/dist/commands/lint-workflow.d.ts +36 -0
  143. package/dist/commands/lint-workflow.d.ts.map +1 -0
  144. package/dist/commands/lint-workflow.js +255 -0
  145. package/dist/commands/lint-workflow.js.map +1 -0
  146. package/dist/commands/overview.d.ts +21 -0
  147. package/dist/commands/overview.d.ts.map +1 -0
  148. package/dist/commands/overview.js +1300 -0
  149. package/dist/commands/overview.js.map +1 -0
  150. package/dist/commands/packages.d.ts +107 -0
  151. package/dist/commands/packages.d.ts.map +1 -0
  152. package/dist/commands/packages.js +308 -0
  153. package/dist/commands/packages.js.map +1 -0
  154. package/dist/commands/portal-nextjs.d.ts +23 -0
  155. package/dist/commands/portal-nextjs.d.ts.map +1 -0
  156. package/dist/commands/portal-nextjs.js +336 -0
  157. package/dist/commands/portal-nextjs.js.map +1 -0
  158. package/dist/commands/portal.d.ts +24 -0
  159. package/dist/commands/portal.d.ts.map +1 -0
  160. package/dist/commands/portal.js +16 -0
  161. package/dist/commands/portal.js.map +1 -0
  162. package/dist/commands/projects.d.ts +54 -0
  163. package/dist/commands/projects.d.ts.map +1 -0
  164. package/dist/commands/projects.js +969 -0
  165. package/dist/commands/projects.js.map +1 -0
  166. package/dist/commands/repo-pairs.d.ts +19 -0
  167. package/dist/commands/repo-pairs.d.ts.map +1 -0
  168. package/dist/commands/repo-pairs.js +529 -0
  169. package/dist/commands/repo-pairs.js.map +1 -0
  170. package/dist/commands/repo.d.ts +18 -0
  171. package/dist/commands/repo.d.ts.map +1 -0
  172. package/dist/commands/repo.js +253 -0
  173. package/dist/commands/repo.js.map +1 -0
  174. package/dist/commands/schema.d.ts +49 -0
  175. package/dist/commands/schema.d.ts.map +1 -0
  176. package/dist/commands/schema.js +830 -0
  177. package/dist/commands/schema.js.map +1 -0
  178. package/dist/commands/screenshots.d.ts +203 -0
  179. package/dist/commands/screenshots.d.ts.map +1 -0
  180. package/dist/commands/screenshots.js +1234 -0
  181. package/dist/commands/screenshots.js.map +1 -0
  182. package/dist/commands/search-index.d.ts +83 -0
  183. package/dist/commands/search-index.d.ts.map +1 -0
  184. package/dist/commands/search-index.js +389 -0
  185. package/dist/commands/search-index.js.map +1 -0
  186. package/dist/commands/session.d.ts +153 -0
  187. package/dist/commands/session.d.ts.map +1 -0
  188. package/dist/commands/session.js +1243 -0
  189. package/dist/commands/session.js.map +1 -0
  190. package/dist/commands/test-cases-types.d.ts +154 -0
  191. package/dist/commands/test-cases-types.d.ts.map +1 -0
  192. package/dist/commands/test-cases-types.js +7 -0
  193. package/dist/commands/test-cases-types.js.map +1 -0
  194. package/dist/commands/test-cases.d.ts +28 -0
  195. package/dist/commands/test-cases.d.ts.map +1 -0
  196. package/dist/commands/test-cases.js +192 -0
  197. package/dist/commands/test-cases.js.map +1 -0
  198. package/dist/commands/typedoc.d.ts +21 -0
  199. package/dist/commands/typedoc.d.ts.map +1 -0
  200. package/dist/commands/typedoc.js +192 -0
  201. package/dist/commands/typedoc.js.map +1 -0
  202. package/dist/commands/update-skills.d.ts +56 -0
  203. package/dist/commands/update-skills.d.ts.map +1 -0
  204. package/dist/commands/update-skills.js +620 -0
  205. package/dist/commands/update-skills.js.map +1 -0
  206. package/dist/generators/details-entity-pages.d.ts +40 -0
  207. package/dist/generators/details-entity-pages.d.ts.map +1 -0
  208. package/dist/generators/details-entity-pages.js +301 -0
  209. package/dist/generators/details-entity-pages.js.map +1 -0
  210. package/dist/generators/details-html.d.ts +23 -0
  211. package/dist/generators/details-html.d.ts.map +1 -0
  212. package/dist/generators/details-html.js +324 -0
  213. package/dist/generators/details-html.js.map +1 -0
  214. package/dist/generators/details-module-page.d.ts +33 -0
  215. package/dist/generators/details-module-page.d.ts.map +1 -0
  216. package/dist/generators/details-module-page.js +408 -0
  217. package/dist/generators/details-module-page.js.map +1 -0
  218. package/dist/generators/details-styles.d.ts +39 -0
  219. package/dist/generators/details-styles.d.ts.map +1 -0
  220. package/dist/generators/details-styles.js +409 -0
  221. package/dist/generators/details-styles.js.map +1 -0
  222. package/dist/generators/feature-map-html.d.ts +66 -0
  223. package/dist/generators/feature-map-html.d.ts.map +1 -0
  224. package/dist/generators/feature-map-html.js +569 -0
  225. package/dist/generators/feature-map-html.js.map +1 -0
  226. package/dist/generators/feature-map-styles.d.ts +39 -0
  227. package/dist/generators/feature-map-styles.d.ts.map +1 -0
  228. package/dist/generators/feature-map-styles.js +449 -0
  229. package/dist/generators/feature-map-styles.js.map +1 -0
  230. package/dist/generators/test-cases-hierarchy.d.ts +21 -0
  231. package/dist/generators/test-cases-hierarchy.d.ts.map +1 -0
  232. package/dist/generators/test-cases-hierarchy.js +336 -0
  233. package/dist/generators/test-cases-hierarchy.js.map +1 -0
  234. package/dist/generators/test-cases-main.d.ts +20 -0
  235. package/dist/generators/test-cases-main.d.ts.map +1 -0
  236. package/dist/generators/test-cases-main.js +439 -0
  237. package/dist/generators/test-cases-main.js.map +1 -0
  238. package/dist/generators/test-cases-styles.d.ts +64 -0
  239. package/dist/generators/test-cases-styles.d.ts.map +1 -0
  240. package/dist/generators/test-cases-styles.js +1277 -0
  241. package/dist/generators/test-cases-styles.js.map +1 -0
  242. package/dist/index.d.ts +13 -0
  243. package/dist/index.d.ts.map +1 -0
  244. package/dist/index.js +517 -0
  245. package/dist/index.js.map +1 -0
  246. package/dist/lint/annotation-lint.d.ts +198 -0
  247. package/dist/lint/annotation-lint.d.ts.map +1 -0
  248. package/dist/lint/annotation-lint.js +510 -0
  249. package/dist/lint/annotation-lint.js.map +1 -0
  250. package/dist/lint/annotation-types.d.ts +161 -0
  251. package/dist/lint/annotation-types.d.ts.map +1 -0
  252. package/dist/lint/annotation-types.js +31 -0
  253. package/dist/lint/annotation-types.js.map +1 -0
  254. package/dist/lint/code-types.d.ts +135 -0
  255. package/dist/lint/code-types.d.ts.map +1 -0
  256. package/dist/lint/code-types.js +25 -0
  257. package/dist/lint/code-types.js.map +1 -0
  258. package/dist/lint/coverage-types.d.ts +128 -0
  259. package/dist/lint/coverage-types.d.ts.map +1 -0
  260. package/dist/lint/coverage-types.js +24 -0
  261. package/dist/lint/coverage-types.js.map +1 -0
  262. package/dist/lint/docs-types.d.ts +214 -0
  263. package/dist/lint/docs-types.d.ts.map +1 -0
  264. package/dist/lint/docs-types.js +18 -0
  265. package/dist/lint/docs-types.js.map +1 -0
  266. package/dist/lint/formatters/index.d.ts +14 -0
  267. package/dist/lint/formatters/index.d.ts.map +1 -0
  268. package/dist/lint/formatters/index.js +28 -0
  269. package/dist/lint/formatters/index.js.map +1 -0
  270. package/dist/lint/formatters/json.d.ts +11 -0
  271. package/dist/lint/formatters/json.d.ts.map +1 -0
  272. package/dist/lint/formatters/json.js +12 -0
  273. package/dist/lint/formatters/json.js.map +1 -0
  274. package/dist/lint/formatters/summary.d.ts +11 -0
  275. package/dist/lint/formatters/summary.d.ts.map +1 -0
  276. package/dist/lint/formatters/summary.js +37 -0
  277. package/dist/lint/formatters/summary.js.map +1 -0
  278. package/dist/lint/formatters/terminal.d.ts +11 -0
  279. package/dist/lint/formatters/terminal.d.ts.map +1 -0
  280. package/dist/lint/formatters/terminal.js +99 -0
  281. package/dist/lint/formatters/terminal.js.map +1 -0
  282. package/dist/lint/index.d.ts +18 -0
  283. package/dist/lint/index.d.ts.map +1 -0
  284. package/dist/lint/index.js +103 -0
  285. package/dist/lint/index.js.map +1 -0
  286. package/dist/lint/rules/annotation-required.d.ts +35 -0
  287. package/dist/lint/rules/annotation-required.d.ts.map +1 -0
  288. package/dist/lint/rules/annotation-required.js +127 -0
  289. package/dist/lint/rules/annotation-required.js.map +1 -0
  290. package/dist/lint/rules/code-rules.d.ts +12 -0
  291. package/dist/lint/rules/code-rules.d.ts.map +1 -0
  292. package/dist/lint/rules/code-rules.js +11 -0
  293. package/dist/lint/rules/code-rules.js.map +1 -0
  294. package/dist/lint/rules/describe-coverage.d.ts +8 -0
  295. package/dist/lint/rules/describe-coverage.d.ts.map +1 -0
  296. package/dist/lint/rules/describe-coverage.js +43 -0
  297. package/dist/lint/rules/describe-coverage.js.map +1 -0
  298. package/dist/lint/rules/duplicate-testdoc.d.ts +8 -0
  299. package/dist/lint/rules/duplicate-testdoc.d.ts.map +1 -0
  300. package/dist/lint/rules/duplicate-testdoc.js +38 -0
  301. package/dist/lint/rules/duplicate-testdoc.js.map +1 -0
  302. package/dist/lint/rules/index.d.ts +29 -0
  303. package/dist/lint/rules/index.d.ts.map +1 -0
  304. package/dist/lint/rules/index.js +55 -0
  305. package/dist/lint/rules/index.js.map +1 -0
  306. package/dist/lint/rules/server-action-structure.d.ts +37 -0
  307. package/dist/lint/rules/server-action-structure.d.ts.map +1 -0
  308. package/dist/lint/rules/server-action-structure.js +151 -0
  309. package/dist/lint/rules/server-action-structure.js.map +1 -0
  310. package/dist/lint/rules/skipped-test-report.d.ts +11 -0
  311. package/dist/lint/rules/skipped-test-report.d.ts.map +1 -0
  312. package/dist/lint/rules/skipped-test-report.js +31 -0
  313. package/dist/lint/rules/skipped-test-report.js.map +1 -0
  314. package/dist/lint/rules/structure-rules.d.ts +67 -0
  315. package/dist/lint/rules/structure-rules.d.ts.map +1 -0
  316. package/dist/lint/rules/structure-rules.js +615 -0
  317. package/dist/lint/rules/structure-rules.js.map +1 -0
  318. package/dist/lint/rules/testdoc-japanese.d.ts +8 -0
  319. package/dist/lint/rules/testdoc-japanese.d.ts.map +1 -0
  320. package/dist/lint/rules/testdoc-japanese.js +31 -0
  321. package/dist/lint/rules/testdoc-japanese.js.map +1 -0
  322. package/dist/lint/rules/testdoc-min-length.d.ts +8 -0
  323. package/dist/lint/rules/testdoc-min-length.d.ts.map +1 -0
  324. package/dist/lint/rules/testdoc-min-length.js +31 -0
  325. package/dist/lint/rules/testdoc-min-length.js.map +1 -0
  326. package/dist/lint/rules/testdoc-required.d.ts +8 -0
  327. package/dist/lint/rules/testdoc-required.d.ts.map +1 -0
  328. package/dist/lint/rules/testdoc-required.js +27 -0
  329. package/dist/lint/rules/testdoc-required.js.map +1 -0
  330. package/dist/lint/rules/workflow-branch-naming.d.ts +20 -0
  331. package/dist/lint/rules/workflow-branch-naming.d.ts.map +1 -0
  332. package/dist/lint/rules/workflow-branch-naming.js +85 -0
  333. package/dist/lint/rules/workflow-branch-naming.js.map +1 -0
  334. package/dist/lint/rules/workflow-commit-format.d.ts +27 -0
  335. package/dist/lint/rules/workflow-commit-format.d.ts.map +1 -0
  336. package/dist/lint/rules/workflow-commit-format.js +92 -0
  337. package/dist/lint/rules/workflow-commit-format.js.map +1 -0
  338. package/dist/lint/rules/workflow-issue-fields.d.ts +24 -0
  339. package/dist/lint/rules/workflow-issue-fields.d.ts.map +1 -0
  340. package/dist/lint/rules/workflow-issue-fields.js +89 -0
  341. package/dist/lint/rules/workflow-issue-fields.js.map +1 -0
  342. package/dist/lint/rules/workflow-main-protection.d.ts +32 -0
  343. package/dist/lint/rules/workflow-main-protection.d.ts.map +1 -0
  344. package/dist/lint/rules/workflow-main-protection.js +114 -0
  345. package/dist/lint/rules/workflow-main-protection.js.map +1 -0
  346. package/dist/lint/structure-types.d.ts +216 -0
  347. package/dist/lint/structure-types.d.ts.map +1 -0
  348. package/dist/lint/structure-types.js +96 -0
  349. package/dist/lint/structure-types.js.map +1 -0
  350. package/dist/lint/types.d.ts +154 -0
  351. package/dist/lint/types.d.ts.map +1 -0
  352. package/dist/lint/types.js +21 -0
  353. package/dist/lint/types.js.map +1 -0
  354. package/dist/lint/workflow-types.d.ts +90 -0
  355. package/dist/lint/workflow-types.d.ts.map +1 -0
  356. package/dist/lint/workflow-types.js +7 -0
  357. package/dist/lint/workflow-types.js.map +1 -0
  358. package/dist/md/analyzer/index.d.ts +46 -0
  359. package/dist/md/analyzer/index.d.ts.map +1 -0
  360. package/dist/md/analyzer/index.js +288 -0
  361. package/dist/md/analyzer/index.js.map +1 -0
  362. package/dist/md/builder/index.d.ts +91 -0
  363. package/dist/md/builder/index.d.ts.map +1 -0
  364. package/dist/md/builder/index.js +446 -0
  365. package/dist/md/builder/index.js.map +1 -0
  366. package/dist/md/cli/analyze.d.ts +11 -0
  367. package/dist/md/cli/analyze.d.ts.map +1 -0
  368. package/dist/md/cli/analyze.js +118 -0
  369. package/dist/md/cli/analyze.js.map +1 -0
  370. package/dist/md/cli/build.d.ts +11 -0
  371. package/dist/md/cli/build.d.ts.map +1 -0
  372. package/dist/md/cli/build.js +74 -0
  373. package/dist/md/cli/build.js.map +1 -0
  374. package/dist/md/cli/extract.d.ts +25 -0
  375. package/dist/md/cli/extract.d.ts.map +1 -0
  376. package/dist/md/cli/extract.js +230 -0
  377. package/dist/md/cli/extract.js.map +1 -0
  378. package/dist/md/cli/index.d.ts +3 -0
  379. package/dist/md/cli/index.d.ts.map +1 -0
  380. package/dist/md/cli/index.js +99 -0
  381. package/dist/md/cli/index.js.map +1 -0
  382. package/dist/md/cli/lint.d.ts +11 -0
  383. package/dist/md/cli/lint.d.ts.map +1 -0
  384. package/dist/md/cli/lint.js +165 -0
  385. package/dist/md/cli/lint.js.map +1 -0
  386. package/dist/md/cli/list.d.ts +16 -0
  387. package/dist/md/cli/list.d.ts.map +1 -0
  388. package/dist/md/cli/list.js +85 -0
  389. package/dist/md/cli/list.js.map +1 -0
  390. package/dist/md/cli/program.d.ts +11 -0
  391. package/dist/md/cli/program.d.ts.map +1 -0
  392. package/dist/md/cli/program.js +104 -0
  393. package/dist/md/cli/program.js.map +1 -0
  394. package/dist/md/cli/validate.d.ts +8 -0
  395. package/dist/md/cli/validate.d.ts.map +1 -0
  396. package/dist/md/cli/validate.js +82 -0
  397. package/dist/md/cli/validate.js.map +1 -0
  398. package/dist/md/constants.d.ts +69 -0
  399. package/dist/md/constants.d.ts.map +1 -0
  400. package/dist/md/constants.js +69 -0
  401. package/dist/md/constants.js.map +1 -0
  402. package/dist/md/extractor/index.d.ts +57 -0
  403. package/dist/md/extractor/index.d.ts.map +1 -0
  404. package/dist/md/extractor/index.js +359 -0
  405. package/dist/md/extractor/index.js.map +1 -0
  406. package/dist/md/index.d.ts +26 -0
  407. package/dist/md/index.d.ts.map +1 -0
  408. package/dist/md/index.js +30 -0
  409. package/dist/md/index.js.map +1 -0
  410. package/dist/md/linter/index.d.ts +20 -0
  411. package/dist/md/linter/index.d.ts.map +1 -0
  412. package/dist/md/linter/index.js +412 -0
  413. package/dist/md/linter/index.js.map +1 -0
  414. package/dist/md/linter/token-optimizer.d.ts +66 -0
  415. package/dist/md/linter/token-optimizer.d.ts.map +1 -0
  416. package/dist/md/linter/token-optimizer.js +292 -0
  417. package/dist/md/linter/token-optimizer.js.map +1 -0
  418. package/dist/md/lister/index.d.ts +42 -0
  419. package/dist/md/lister/index.d.ts.map +1 -0
  420. package/dist/md/lister/index.js +317 -0
  421. package/dist/md/lister/index.js.map +1 -0
  422. package/dist/md/parser/heading-numbers.d.ts +43 -0
  423. package/dist/md/parser/heading-numbers.d.ts.map +1 -0
  424. package/dist/md/parser/heading-numbers.js +97 -0
  425. package/dist/md/parser/heading-numbers.js.map +1 -0
  426. package/dist/md/parser/section-meta.d.ts +50 -0
  427. package/dist/md/parser/section-meta.d.ts.map +1 -0
  428. package/dist/md/parser/section-meta.js +212 -0
  429. package/dist/md/parser/section-meta.js.map +1 -0
  430. package/dist/md/parser/template.d.ts +56 -0
  431. package/dist/md/parser/template.d.ts.map +1 -0
  432. package/dist/md/parser/template.js +122 -0
  433. package/dist/md/parser/template.js.map +1 -0
  434. package/dist/md/plugins/loader.d.ts +15 -0
  435. package/dist/md/plugins/loader.d.ts.map +1 -0
  436. package/dist/md/plugins/loader.js +80 -0
  437. package/dist/md/plugins/loader.js.map +1 -0
  438. package/dist/md/plugins/normalize-headings.d.ts +43 -0
  439. package/dist/md/plugins/normalize-headings.d.ts.map +1 -0
  440. package/dist/md/plugins/normalize-headings.js +51 -0
  441. package/dist/md/plugins/normalize-headings.js.map +1 -0
  442. package/dist/md/plugins/normalize-whitespace.d.ts +46 -0
  443. package/dist/md/plugins/normalize-whitespace.d.ts.map +1 -0
  444. package/dist/md/plugins/normalize-whitespace.js +86 -0
  445. package/dist/md/plugins/normalize-whitespace.js.map +1 -0
  446. package/dist/md/plugins/remove-badges.d.ts +36 -0
  447. package/dist/md/plugins/remove-badges.d.ts.map +1 -0
  448. package/dist/md/plugins/remove-badges.js +59 -0
  449. package/dist/md/plugins/remove-badges.js.map +1 -0
  450. package/dist/md/plugins/remove-comments.d.ts +27 -0
  451. package/dist/md/plugins/remove-comments.d.ts.map +1 -0
  452. package/dist/md/plugins/remove-comments.js +40 -0
  453. package/dist/md/plugins/remove-comments.js.map +1 -0
  454. package/dist/md/plugins/remove-duplicates.d.ts +40 -0
  455. package/dist/md/plugins/remove-duplicates.d.ts.map +1 -0
  456. package/dist/md/plugins/remove-duplicates.js +72 -0
  457. package/dist/md/plugins/remove-duplicates.js.map +1 -0
  458. package/dist/md/plugins/remove-internal-links.d.ts +38 -0
  459. package/dist/md/plugins/remove-internal-links.d.ts.map +1 -0
  460. package/dist/md/plugins/remove-internal-links.js +66 -0
  461. package/dist/md/plugins/remove-internal-links.js.map +1 -0
  462. package/dist/md/plugins/strip-heading-numbers.d.ts +35 -0
  463. package/dist/md/plugins/strip-heading-numbers.d.ts.map +1 -0
  464. package/dist/md/plugins/strip-heading-numbers.js +59 -0
  465. package/dist/md/plugins/strip-heading-numbers.js.map +1 -0
  466. package/dist/md/plugins/strip-section-meta.d.ts +37 -0
  467. package/dist/md/plugins/strip-section-meta.d.ts.map +1 -0
  468. package/dist/md/plugins/strip-section-meta.js +62 -0
  469. package/dist/md/plugins/strip-section-meta.js.map +1 -0
  470. package/dist/md/types/config.d.ts +260 -0
  471. package/dist/md/types/config.d.ts.map +1 -0
  472. package/dist/md/types/config.js +156 -0
  473. package/dist/md/types/config.js.map +1 -0
  474. package/dist/md/types/document.d.ts +37 -0
  475. package/dist/md/types/document.d.ts.map +1 -0
  476. package/dist/md/types/document.js +2 -0
  477. package/dist/md/types/document.js.map +1 -0
  478. package/dist/md/types/validation.d.ts +107 -0
  479. package/dist/md/types/validation.d.ts.map +1 -0
  480. package/dist/md/types/validation.js +2 -0
  481. package/dist/md/types/validation.js.map +1 -0
  482. package/dist/md/utils/code-blocks.d.ts +136 -0
  483. package/dist/md/utils/code-blocks.d.ts.map +1 -0
  484. package/dist/md/utils/code-blocks.js +178 -0
  485. package/dist/md/utils/code-blocks.js.map +1 -0
  486. package/dist/md/utils/config.d.ts +10 -0
  487. package/dist/md/utils/config.d.ts.map +1 -0
  488. package/dist/md/utils/config.js +99 -0
  489. package/dist/md/utils/config.js.map +1 -0
  490. package/dist/md/utils/file-collector.d.ts +78 -0
  491. package/dist/md/utils/file-collector.d.ts.map +1 -0
  492. package/dist/md/utils/file-collector.js +100 -0
  493. package/dist/md/utils/file-collector.js.map +1 -0
  494. package/dist/md/utils/markdown.d.ts +18 -0
  495. package/dist/md/utils/markdown.d.ts.map +1 -0
  496. package/dist/md/utils/markdown.js +93 -0
  497. package/dist/md/utils/markdown.js.map +1 -0
  498. package/dist/md/utils/remark.d.ts +91 -0
  499. package/dist/md/utils/remark.d.ts.map +1 -0
  500. package/dist/md/utils/remark.js +125 -0
  501. package/dist/md/utils/remark.js.map +1 -0
  502. package/dist/md/utils/tokens.d.ts +9 -0
  503. package/dist/md/utils/tokens.d.ts.map +1 -0
  504. package/dist/md/utils/tokens.js +31 -0
  505. package/dist/md/utils/tokens.js.map +1 -0
  506. package/dist/md/validator/index.d.ts +40 -0
  507. package/dist/md/validator/index.d.ts.map +1 -0
  508. package/dist/md/validator/index.js +289 -0
  509. package/dist/md/validator/index.js.map +1 -0
  510. package/dist/parsers/details-jsdoc.d.ts +46 -0
  511. package/dist/parsers/details-jsdoc.d.ts.map +1 -0
  512. package/dist/parsers/details-jsdoc.js +262 -0
  513. package/dist/parsers/details-jsdoc.js.map +1 -0
  514. package/dist/parsers/details-zod.d.ts +22 -0
  515. package/dist/parsers/details-zod.d.ts.map +1 -0
  516. package/dist/parsers/details-zod.js +145 -0
  517. package/dist/parsers/details-zod.js.map +1 -0
  518. package/dist/parsers/drizzle-schema.d.ts +92 -0
  519. package/dist/parsers/drizzle-schema.d.ts.map +1 -0
  520. package/dist/parsers/drizzle-schema.js +376 -0
  521. package/dist/parsers/drizzle-schema.js.map +1 -0
  522. package/dist/parsers/feature-map-tags.d.ts +45 -0
  523. package/dist/parsers/feature-map-tags.d.ts.map +1 -0
  524. package/dist/parsers/feature-map-tags.js +292 -0
  525. package/dist/parsers/feature-map-tags.js.map +1 -0
  526. package/dist/parsers/feature-map-type-extraction.d.ts +62 -0
  527. package/dist/parsers/feature-map-type-extraction.d.ts.map +1 -0
  528. package/dist/parsers/feature-map-type-extraction.js +347 -0
  529. package/dist/parsers/feature-map-type-extraction.js.map +1 -0
  530. package/dist/parsers/feature-map-utils.d.ts +34 -0
  531. package/dist/parsers/feature-map-utils.d.ts.map +1 -0
  532. package/dist/parsers/feature-map-utils.js +101 -0
  533. package/dist/parsers/feature-map-utils.js.map +1 -0
  534. package/dist/parsers/jsdoc-common.d.ts +209 -0
  535. package/dist/parsers/jsdoc-common.d.ts.map +1 -0
  536. package/dist/parsers/jsdoc-common.js +655 -0
  537. package/dist/parsers/jsdoc-common.js.map +1 -0
  538. package/dist/parsers/jsdoc.d.ts +76 -0
  539. package/dist/parsers/jsdoc.d.ts.map +1 -0
  540. package/dist/parsers/jsdoc.js +238 -0
  541. package/dist/parsers/jsdoc.js.map +1 -0
  542. package/dist/parsers/screenshot-annotations.d.ts +96 -0
  543. package/dist/parsers/screenshot-annotations.d.ts.map +1 -0
  544. package/dist/parsers/screenshot-annotations.js +227 -0
  545. package/dist/parsers/screenshot-annotations.js.map +1 -0
  546. package/dist/parsers/test-annotations.d.ts +46 -0
  547. package/dist/parsers/test-annotations.d.ts.map +1 -0
  548. package/dist/parsers/test-annotations.js +393 -0
  549. package/dist/parsers/test-annotations.js.map +1 -0
  550. package/dist/parsers/test-categorization.d.ts +42 -0
  551. package/dist/parsers/test-categorization.d.ts.map +1 -0
  552. package/dist/parsers/test-categorization.js +182 -0
  553. package/dist/parsers/test-categorization.js.map +1 -0
  554. package/dist/parsers/zod-schema.d.ts +105 -0
  555. package/dist/parsers/zod-schema.d.ts.map +1 -0
  556. package/dist/parsers/zod-schema.js +270 -0
  557. package/dist/parsers/zod-schema.js.map +1 -0
  558. package/dist/utils/action-inference.d.ts +23 -0
  559. package/dist/utils/action-inference.d.ts.map +1 -0
  560. package/dist/utils/action-inference.js +36 -0
  561. package/dist/utils/action-inference.js.map +1 -0
  562. package/dist/utils/app-inference.d.ts +31 -0
  563. package/dist/utils/app-inference.d.ts.map +1 -0
  564. package/dist/utils/app-inference.js +41 -0
  565. package/dist/utils/app-inference.js.map +1 -0
  566. package/dist/utils/auto-infer.d.ts +93 -0
  567. package/dist/utils/auto-infer.d.ts.map +1 -0
  568. package/dist/utils/auto-infer.js +184 -0
  569. package/dist/utils/auto-infer.js.map +1 -0
  570. package/dist/utils/config.d.ts +709 -0
  571. package/dist/utils/config.d.ts.map +1 -0
  572. package/dist/utils/config.js +504 -0
  573. package/dist/utils/config.js.map +1 -0
  574. package/dist/utils/file.d.ts +46 -0
  575. package/dist/utils/file.d.ts.map +1 -0
  576. package/dist/utils/file.js +103 -0
  577. package/dist/utils/file.js.map +1 -0
  578. package/dist/utils/formatters.d.ts +111 -0
  579. package/dist/utils/formatters.d.ts.map +1 -0
  580. package/dist/utils/formatters.js +164 -0
  581. package/dist/utils/formatters.js.map +1 -0
  582. package/dist/utils/gh-config.d.ts +99 -0
  583. package/dist/utils/gh-config.d.ts.map +1 -0
  584. package/dist/utils/gh-config.js +247 -0
  585. package/dist/utils/gh-config.js.map +1 -0
  586. package/dist/utils/github.d.ts +98 -0
  587. package/dist/utils/github.d.ts.map +1 -0
  588. package/dist/utils/github.js +295 -0
  589. package/dist/utils/github.js.map +1 -0
  590. package/dist/utils/html.d.ts +107 -0
  591. package/dist/utils/html.d.ts.map +1 -0
  592. package/dist/utils/html.js +376 -0
  593. package/dist/utils/html.js.map +1 -0
  594. package/dist/utils/i18n.d.ts +40 -0
  595. package/dist/utils/i18n.d.ts.map +1 -0
  596. package/dist/utils/i18n.js +148 -0
  597. package/dist/utils/i18n.js.map +1 -0
  598. package/dist/utils/logger.d.ts +20 -0
  599. package/dist/utils/logger.d.ts.map +1 -0
  600. package/dist/utils/logger.js +49 -0
  601. package/dist/utils/logger.js.map +1 -0
  602. package/dist/utils/project-fields.d.ts +71 -0
  603. package/dist/utils/project-fields.d.ts.map +1 -0
  604. package/dist/utils/project-fields.js +318 -0
  605. package/dist/utils/project-fields.js.map +1 -0
  606. package/dist/utils/repo-pairs.d.ts +94 -0
  607. package/dist/utils/repo-pairs.d.ts.map +1 -0
  608. package/dist/utils/repo-pairs.js +196 -0
  609. package/dist/utils/repo-pairs.js.map +1 -0
  610. package/dist/utils/route-inference.d.ts +81 -0
  611. package/dist/utils/route-inference.d.ts.map +1 -0
  612. package/dist/utils/route-inference.js +137 -0
  613. package/dist/utils/route-inference.js.map +1 -0
  614. package/dist/utils/setup-check.d.ts +34 -0
  615. package/dist/utils/setup-check.d.ts.map +1 -0
  616. package/dist/utils/setup-check.js +136 -0
  617. package/dist/utils/setup-check.js.map +1 -0
  618. package/dist/utils/shirokumaignore.d.ts +55 -0
  619. package/dist/utils/shirokumaignore.d.ts.map +1 -0
  620. package/dist/utils/shirokumaignore.js +94 -0
  621. package/dist/utils/shirokumaignore.js.map +1 -0
  622. package/dist/utils/skills-repo.d.ts +353 -0
  623. package/dist/utils/skills-repo.d.ts.map +1 -0
  624. package/dist/utils/skills-repo.js +793 -0
  625. package/dist/utils/skills-repo.js.map +1 -0
  626. package/dist/utils/status-workflow.d.ts +54 -0
  627. package/dist/utils/status-workflow.d.ts.map +1 -0
  628. package/dist/utils/status-workflow.js +103 -0
  629. package/dist/utils/status-workflow.js.map +1 -0
  630. package/dist/validators/frontmatter.d.ts +41 -0
  631. package/dist/validators/frontmatter.d.ts.map +1 -0
  632. package/dist/validators/frontmatter.js +117 -0
  633. package/dist/validators/frontmatter.js.map +1 -0
  634. package/dist/validators/link-checker.d.ts +48 -0
  635. package/dist/validators/link-checker.d.ts.map +1 -0
  636. package/dist/validators/link-checker.js +108 -0
  637. package/dist/validators/link-checker.js.map +1 -0
  638. package/dist/validators/markdown-structure.d.ts +50 -0
  639. package/dist/validators/markdown-structure.d.ts.map +1 -0
  640. package/dist/validators/markdown-structure.js +253 -0
  641. package/dist/validators/markdown-structure.js.map +1 -0
  642. package/i18n/cli/en.json +155 -0
  643. package/i18n/cli/ja.json +155 -0
  644. package/i18n/discussion/en.json +191 -0
  645. package/i18n/discussion/ja.json +191 -0
  646. package/package.json +113 -0
  647. package/portal/app/api-tools/api-tools-client.tsx +411 -0
  648. package/portal/app/api-tools/api-tools-document.tsx +240 -0
  649. package/portal/app/api-tools/page.tsx +56 -0
  650. package/portal/app/api-tools/swagger-view.tsx +114 -0
  651. package/portal/app/apps/[appId]/[type]/[module]/[item]/item-tabs-client.tsx +71 -0
  652. package/portal/app/apps/[appId]/[type]/[module]/[item]/page.tsx +1422 -0
  653. package/portal/app/apps/[appId]/[type]/[module]/page.tsx +373 -0
  654. package/portal/app/apps/[appId]/feature-map/feature-map-app-document.tsx +298 -0
  655. package/portal/app/apps/[appId]/feature-map/page.tsx +224 -0
  656. package/portal/app/apps/[appId]/i18n/page.tsx +139 -0
  657. package/portal/app/apps/[appId]/test-cases/page.tsx +840 -0
  658. package/portal/app/apps/[appId]/tools/[tool]/page.tsx +351 -0
  659. package/portal/app/apps/[appId]/tools/api-tools-client.tsx +429 -0
  660. package/portal/app/apps/[appId]/tools/page.tsx +119 -0
  661. package/portal/app/db-schema/[db]/[table]/page.tsx +235 -0
  662. package/portal/app/db-schema/[db]/diagram/page.tsx +81 -0
  663. package/portal/app/db-schema/[db]/page.tsx +148 -0
  664. package/portal/app/db-schema/db-schema-document.tsx +100 -0
  665. package/portal/app/db-schema/diagram/client.tsx +211 -0
  666. package/portal/app/db-schema/diagram/page.tsx +20 -0
  667. package/portal/app/db-schema/page.tsx +145 -0
  668. package/portal/app/db-schema/table-detail-document.tsx +710 -0
  669. package/portal/app/db-schema/table-detail.tsx +747 -0
  670. package/portal/app/db-schema/table-list-document.tsx +224 -0
  671. package/portal/app/db-schema/table-list.tsx +247 -0
  672. package/portal/app/details/[type]/[module]/[item]/item-tabs-client.tsx +71 -0
  673. package/portal/app/details/[type]/[module]/[item]/page.tsx +1286 -0
  674. package/portal/app/details/[type]/[module]/page.tsx +884 -0
  675. package/portal/app/feature-map/feature-map-client.tsx +681 -0
  676. package/portal/app/feature-map/feature-map-document.tsx +313 -0
  677. package/portal/app/feature-map/page.tsx +438 -0
  678. package/portal/app/globals.css +205 -0
  679. package/portal/app/i18n/[...namespace]/page.tsx +190 -0
  680. package/portal/app/i18n/i18n-client.tsx +369 -0
  681. package/portal/app/i18n/page.tsx +339 -0
  682. package/portal/app/layout.tsx +37 -0
  683. package/portal/app/overview/page.tsx +65 -0
  684. package/portal/app/packages/[packageId]/page.tsx +201 -0
  685. package/portal/app/packages/page.tsx +148 -0
  686. package/portal/app/page.tsx +568 -0
  687. package/portal/app/test-cases/[file]/[line]/page.tsx +455 -0
  688. package/portal/app/test-cases/[file]/[line]/test-detail-document.tsx +335 -0
  689. package/portal/app/test-cases/[file]/page.tsx +323 -0
  690. package/portal/app/test-cases/[file]/test-file-document.tsx +335 -0
  691. package/portal/app/test-cases/page.tsx +546 -0
  692. package/portal/app/test-cases/test-cases-document.tsx +384 -0
  693. package/portal/components/code-block.tsx +57 -0
  694. package/portal/components/document/doc-params-table.tsx +71 -0
  695. package/portal/components/document/doc-section.tsx +133 -0
  696. package/portal/components/document/doc-table.tsx +119 -0
  697. package/portal/components/document/index.ts +9 -0
  698. package/portal/components/drawflow-er-diagram.tsx +607 -0
  699. package/portal/components/interactive-er-diagram.tsx +228 -0
  700. package/portal/components/layout/app-sidebar.tsx +490 -0
  701. package/portal/components/layout/er-sidebar.tsx +116 -0
  702. package/portal/components/layout/global-header.tsx +117 -0
  703. package/portal/components/layout/layout-content.tsx +48 -0
  704. package/portal/components/markdown-content.tsx +120 -0
  705. package/portal/components/mermaid-diagram.tsx +83 -0
  706. package/portal/components/reactflow-er-diagram.tsx +475 -0
  707. package/portal/components/search-dialog.tsx +268 -0
  708. package/portal/components/shared/coverage-score-bar.tsx +144 -0
  709. package/portal/components/swagger/endpoint-accordion.tsx +117 -0
  710. package/portal/components/swagger/index.ts +7 -0
  711. package/portal/components/swagger/method-badge.tsx +55 -0
  712. package/portal/components/swagger/params-table.tsx +78 -0
  713. package/portal/components/tabs-with-hash.tsx +43 -0
  714. package/portal/components/test/index.ts +2 -0
  715. package/portal/components/test/test-bdd-card.tsx +192 -0
  716. package/portal/components/test/test-matrix.tsx +242 -0
  717. package/portal/components/ui/accordion.tsx +66 -0
  718. package/portal/components/ui/badge.tsx +46 -0
  719. package/portal/components/ui/breadcrumb.tsx +109 -0
  720. package/portal/components/ui/button.tsx +62 -0
  721. package/portal/components/ui/card.tsx +92 -0
  722. package/portal/components/ui/collapsible.tsx +33 -0
  723. package/portal/components/ui/dialog.tsx +118 -0
  724. package/portal/components/ui/progress.tsx +28 -0
  725. package/portal/components/ui/scroll-area.tsx +58 -0
  726. package/portal/components/ui/sheet.tsx +139 -0
  727. package/portal/components/ui/table.tsx +116 -0
  728. package/portal/components/ui/tabs.tsx +66 -0
  729. package/portal/components.json +21 -0
  730. package/portal/lib/constants/test-categories.ts +186 -0
  731. package/portal/lib/data-loader.ts +1181 -0
  732. package/portal/lib/db-schema-utils.ts +182 -0
  733. package/portal/lib/format.ts +43 -0
  734. package/portal/lib/hooks/use-hash-tab.ts +144 -0
  735. package/portal/lib/path-utils.ts +25 -0
  736. package/portal/lib/search-index-generator.ts +214 -0
  737. package/portal/lib/search.ts +126 -0
  738. package/portal/lib/sidebar-context.tsx +111 -0
  739. package/portal/lib/types.ts +740 -0
  740. package/portal/lib/utils.ts +6 -0
  741. package/portal/next.config.ts +21 -0
  742. package/portal/package.json +45 -0
  743. package/portal/postcss.config.mjs +8 -0
  744. package/portal/tsconfig.json +41 -0
  745. package/portal/types/drawflow.d.ts +80 -0
  746. package/templates/README.md +73 -0
  747. package/templates/coverage.html +367 -0
  748. package/templates/dark-theme.css +443 -0
  749. package/templates/discussion/adr.yml.hbs +65 -0
  750. package/templates/discussion/handovers.yml.hbs +57 -0
  751. package/templates/discussion/knowledge.yml.hbs +60 -0
  752. package/templates/discussion/reports.yml.hbs +68 -0
  753. package/templates/discussion/research.yml.hbs +61 -0
@@ -0,0 +1,136 @@
1
+ /**
2
+ * GitHub setup validation utility (#345)
3
+ *
4
+ * Checks whether manual GitHub configuration steps have been completed:
5
+ * - Discussion categories (Handovers, ADR, Knowledge, Research)
6
+ * - Project workflow automations (Item closed → Done, PR merged → Done)
7
+ * - Metrics text fields (if metrics enabled)
8
+ */
9
+ import { runGraphQL, getRepoInfo } from "./github.js";
10
+ import { loadGhConfig, getMetricsConfig } from "./gh-config.js";
11
+ import { getProjectId, fetchWorkflows, RECOMMENDED_WORKFLOWS, } from "../commands/projects.js";
12
+ import { getProjectFields } from "./project-fields.js";
13
+ // =============================================================================
14
+ // Constants
15
+ // =============================================================================
16
+ const REQUIRED_DISCUSSION_CATEGORIES = ["Handovers", "ADR", "Knowledge", "Research"];
17
+ // =============================================================================
18
+ // GraphQL Query (reuse same shape as session.ts)
19
+ // =============================================================================
20
+ const GRAPHQL_QUERY_CATEGORIES = `
21
+ query($owner: String!, $name: String!) {
22
+ repository(owner: $owner, name: $name) {
23
+ discussionCategories(first: 20) {
24
+ nodes {
25
+ id
26
+ name
27
+ }
28
+ }
29
+ }
30
+ }
31
+ `;
32
+ // =============================================================================
33
+ // Check Functions
34
+ // =============================================================================
35
+ function checkDiscussionCategories(owner, repo) {
36
+ const result = runGraphQL(GRAPHQL_QUERY_CATEGORIES, {
37
+ owner,
38
+ name: repo,
39
+ });
40
+ const nodes = result.success
41
+ ? (result.data?.data?.repository?.discussionCategories?.nodes ?? [])
42
+ : [];
43
+ const existingNames = new Set(nodes.map((n) => n?.name).filter(Boolean));
44
+ const categoriesUrl = `https://github.com/${owner}/${repo}/discussions/categories`;
45
+ return REQUIRED_DISCUSSION_CATEGORIES.map((cat) => ({
46
+ category: "discussions",
47
+ name: cat,
48
+ ok: existingNames.has(cat),
49
+ hint: existingNames.has(cat) ? undefined : `Create "${cat}" category in GitHub UI`,
50
+ url: existingNames.has(cat) ? undefined : categoriesUrl,
51
+ }));
52
+ }
53
+ function checkWorkflows(owner) {
54
+ const projectId = getProjectId(owner);
55
+ if (!projectId)
56
+ return [];
57
+ const workflows = fetchWorkflows(projectId);
58
+ if (workflows.length === 0)
59
+ return [];
60
+ return RECOMMENDED_WORKFLOWS.map((name) => {
61
+ const wf = workflows.find((w) => w.name === name);
62
+ const ok = wf?.enabled ?? false;
63
+ return {
64
+ category: "workflows",
65
+ name,
66
+ ok,
67
+ hint: ok ? undefined : `Enable "${name}" workflow in GitHub Project Settings > Workflows`,
68
+ url: ok ? undefined : undefined, // Project workflow settings URL is not stable
69
+ };
70
+ });
71
+ }
72
+ function checkMetricsFields(owner, metricsConfig) {
73
+ if (!metricsConfig.enabled)
74
+ return [];
75
+ const projectId = getProjectId(owner);
76
+ if (!projectId)
77
+ return [];
78
+ const fields = getProjectFields(projectId);
79
+ const mapping = metricsConfig.statusToDateMapping ?? {};
80
+ return Object.values(mapping).map((fieldName) => ({
81
+ category: "metrics",
82
+ name: fieldName,
83
+ ok: fieldName in fields && fields[fieldName].type === "TEXT",
84
+ hint: fieldName in fields
85
+ ? undefined
86
+ : `Create Text field "${fieldName}" in GitHub Project Settings > Fields`,
87
+ }));
88
+ }
89
+ // =============================================================================
90
+ // Main Validation Function
91
+ // =============================================================================
92
+ /**
93
+ * Validate GitHub setup and return results
94
+ */
95
+ export function validateGitHubSetup(logger) {
96
+ const repoInfo = getRepoInfo();
97
+ if (!repoInfo) {
98
+ logger.error("Could not determine repository");
99
+ return null;
100
+ }
101
+ const { owner: repoOwner, name: repo } = repoInfo;
102
+ const config = loadGhConfig();
103
+ const items = [
104
+ ...checkDiscussionCategories(repoOwner, repo),
105
+ ...checkWorkflows(repoOwner),
106
+ ...checkMetricsFields(repoOwner, getMetricsConfig(config)),
107
+ ];
108
+ const ok = items.filter((i) => i.ok).length;
109
+ return {
110
+ repository: `${repoOwner}/${repo}`,
111
+ items,
112
+ summary: {
113
+ total: items.length,
114
+ ok,
115
+ missing: items.length - ok,
116
+ },
117
+ };
118
+ }
119
+ /**
120
+ * Print setup check results to logger (human-friendly format)
121
+ */
122
+ export function printSetupCheckResults(result, logger) {
123
+ for (const item of result.items) {
124
+ if (item.ok) {
125
+ logger.success(`${item.category}: ${item.name}`);
126
+ }
127
+ else {
128
+ logger.error(`${item.category}: ${item.name}`);
129
+ if (item.hint)
130
+ logger.info(` → ${item.hint}`);
131
+ if (item.url)
132
+ logger.info(` URL: ${item.url}`);
133
+ }
134
+ }
135
+ }
136
+ //# sourceMappingURL=setup-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-check.js","sourceRoot":"","sources":["../../src/utils/setup-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * .shirokumaignore Parser
3
+ *
4
+ * Parses .shirokumaignore files (gitignore-like syntax) for excluding
5
+ * files/directories from public repository releases via repo-pairs.
6
+ *
7
+ * Supported syntax:
8
+ * - Comments: lines starting with #
9
+ * - Blank lines: ignored
10
+ * - Glob patterns: same as rsync --exclude
11
+ * - Inline comments: `pattern # comment` (stripped)
12
+ * - CRLF line endings: handled transparently
13
+ */
14
+ /** File name for project-level ignore patterns */
15
+ export declare const SHIROKUMAIGNORE_FILENAME = ".shirokumaignore";
16
+ /**
17
+ * Parse .shirokumaignore content into an array of exclude patterns.
18
+ *
19
+ * Rules:
20
+ * - Lines starting with # are comments (ignored)
21
+ * - Empty/whitespace-only lines are ignored
22
+ * - Leading/trailing whitespace is trimmed
23
+ * - Inline comments (` # ...`) are stripped
24
+ * - CRLF line endings are handled
25
+ *
26
+ * @param content - Raw file content
27
+ * @returns Array of exclude pattern strings
28
+ */
29
+ export declare function parseShirokumaIgnore(content: string): string[];
30
+ /**
31
+ * Load .shirokumaignore file from a project directory.
32
+ *
33
+ * Returns an empty array if the file does not exist or cannot be read.
34
+ * This makes the feature optional - projects without .shirokumaignore
35
+ * simply use config-only patterns.
36
+ *
37
+ * @param projectPath - Absolute path to the project root
38
+ * @returns Array of exclude patterns (empty if file not found)
39
+ */
40
+ export declare function loadShirokumaIgnoreFile(projectPath: string): string[];
41
+ /**
42
+ * Merge exclude patterns from multiple sources with deduplication.
43
+ *
44
+ * Priority order (all are additive):
45
+ * 1. Default patterns (base, always included)
46
+ * 2. Config patterns (from shirokuma-docs.config.yaml)
47
+ * 3. File patterns (from .shirokumaignore)
48
+ *
49
+ * @param defaultPatterns - Built-in default exclude patterns
50
+ * @param configPatterns - Patterns from config file
51
+ * @param filePatterns - Patterns from .shirokumaignore file
52
+ * @returns Deduplicated merged array of all patterns
53
+ */
54
+ export declare function mergeExcludePatterns(defaultPatterns: string[], configPatterns: string[], filePatterns: string[]): string[];
55
+ //# sourceMappingURL=shirokumaignore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shirokumaignore.d.ts","sourceRoot":"","sources":["../../src/utils/shirokumaignore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,kDAAkD;AAClD,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAc9D;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAcrE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,MAAM,EAAE,EACzB,cAAc,EAAE,MAAM,EAAE,EACxB,YAAY,EAAE,MAAM,EAAE,GACrB,MAAM,EAAE,CAYV"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * .shirokumaignore Parser
3
+ *
4
+ * Parses .shirokumaignore files (gitignore-like syntax) for excluding
5
+ * files/directories from public repository releases via repo-pairs.
6
+ *
7
+ * Supported syntax:
8
+ * - Comments: lines starting with #
9
+ * - Blank lines: ignored
10
+ * - Glob patterns: same as rsync --exclude
11
+ * - Inline comments: `pattern # comment` (stripped)
12
+ * - CRLF line endings: handled transparently
13
+ */
14
+ import { existsSync, readFileSync } from "node:fs";
15
+ import { join } from "node:path";
16
+ /** File name for project-level ignore patterns */
17
+ export const SHIROKUMAIGNORE_FILENAME = ".shirokumaignore";
18
+ /**
19
+ * Parse .shirokumaignore content into an array of exclude patterns.
20
+ *
21
+ * Rules:
22
+ * - Lines starting with # are comments (ignored)
23
+ * - Empty/whitespace-only lines are ignored
24
+ * - Leading/trailing whitespace is trimmed
25
+ * - Inline comments (` # ...`) are stripped
26
+ * - CRLF line endings are handled
27
+ *
28
+ * @param content - Raw file content
29
+ * @returns Array of exclude pattern strings
30
+ */
31
+ export function parseShirokumaIgnore(content) {
32
+ if (!content.trim())
33
+ return [];
34
+ return content
35
+ .split(/\r?\n/)
36
+ .map(line => {
37
+ // Strip inline comments (space + # + content)
38
+ const inlineCommentIndex = line.indexOf(" #");
39
+ if (inlineCommentIndex !== -1) {
40
+ line = line.substring(0, inlineCommentIndex);
41
+ }
42
+ return line.trim();
43
+ })
44
+ .filter(line => line.length > 0 && !line.startsWith("#"));
45
+ }
46
+ /**
47
+ * Load .shirokumaignore file from a project directory.
48
+ *
49
+ * Returns an empty array if the file does not exist or cannot be read.
50
+ * This makes the feature optional - projects without .shirokumaignore
51
+ * simply use config-only patterns.
52
+ *
53
+ * @param projectPath - Absolute path to the project root
54
+ * @returns Array of exclude patterns (empty if file not found)
55
+ */
56
+ export function loadShirokumaIgnoreFile(projectPath) {
57
+ const filePath = join(projectPath, SHIROKUMAIGNORE_FILENAME);
58
+ if (!existsSync(filePath)) {
59
+ return [];
60
+ }
61
+ try {
62
+ const content = readFileSync(filePath, "utf-8");
63
+ return parseShirokumaIgnore(content);
64
+ }
65
+ catch {
66
+ // Gracefully handle read errors (permissions, etc.)
67
+ return [];
68
+ }
69
+ }
70
+ /**
71
+ * Merge exclude patterns from multiple sources with deduplication.
72
+ *
73
+ * Priority order (all are additive):
74
+ * 1. Default patterns (base, always included)
75
+ * 2. Config patterns (from shirokuma-docs.config.yaml)
76
+ * 3. File patterns (from .shirokumaignore)
77
+ *
78
+ * @param defaultPatterns - Built-in default exclude patterns
79
+ * @param configPatterns - Patterns from config file
80
+ * @param filePatterns - Patterns from .shirokumaignore file
81
+ * @returns Deduplicated merged array of all patterns
82
+ */
83
+ export function mergeExcludePatterns(defaultPatterns, configPatterns, filePatterns) {
84
+ const seen = new Set();
85
+ const merged = [];
86
+ for (const pattern of [...defaultPatterns, ...configPatterns, ...filePatterns]) {
87
+ if (!seen.has(pattern)) {
88
+ seen.add(pattern);
89
+ merged.push(pattern);
90
+ }
91
+ }
92
+ return merged;
93
+ }
94
+ //# sourceMappingURL=shirokumaignore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shirokumaignore.js","sourceRoot":"","sources":["../../src/utils/shirokumaignore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,kDAAkD;AAClD,MAAM,CAAC,MAAM,wBAAwB,GAAG,kBAAkB,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAE/B,OAAO,OAAO;SACX,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,IAAI,CAAC,EAAE;QACV,8CAA8C;QAC9C,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE,CAAC;YAC9B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC,CAAC;SACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAAmB;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;IAE7D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,oDAAoD;QACpD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAClC,eAAyB,EACzB,cAAwB,EACxB,YAAsB;IAEtB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,eAAe,EAAE,GAAG,cAAc,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC;QAC/E,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,353 @@
1
+ /**
2
+ * Bundled plugin utilities for shirokuma-skills-en
3
+ *
4
+ * @description Constants, validators, and helpers for installing/updating
5
+ * the bundled shirokuma-skills-en plugin. Skills and rules are bundled in
6
+ * the plugin/ directory within the shirokuma-docs npm package.
7
+ */
8
+ /**
9
+ * Plugin name for the bundled skills/rules package
10
+ */
11
+ export declare const PLUGIN_NAME = "shirokuma-skills-en";
12
+ /**
13
+ * Japanese language plugin name (parallel plugin for i18n)
14
+ */
15
+ export declare const PLUGIN_NAME_JA = "shirokuma-skills-ja";
16
+ /**
17
+ * Hooks-only plugin name (language-independent safety hooks)
18
+ */
19
+ export declare const PLUGIN_NAME_HOOKS = "shirokuma-hooks";
20
+ /**
21
+ * Available skills list (matches actual plugin/skills/ directory names)
22
+ */
23
+ export declare const AVAILABLE_SKILLS: readonly ["managing-agents", "managing-skills", "managing-plugins", "managing-output-styles", "managing-rules", "frontend-designing", "nextjs-vibe-coding", "reviewing-on-issue", "codebase-rule-discovery", "best-practices-researching", "claude-config-reviewing", "planning-on-issue", "working-on-issue", "committing-on-issue", "creating-pr-on-issue", "github-project-setup", "starting-session", "ending-session", "showing-github", "managing-github-items", "project-config-generator", "publishing"];
24
+ /**
25
+ * Available rules list
26
+ */
27
+ export declare const AVAILABLE_RULES: readonly ["best-practices-first.md", "config-authoring-flow.md", "git-commit-style.md", "output-destinations.md", "skill-authoring.md", "github/branch-workflow.md", "github/discussions-usage.md", "github/pr-review-response.md", "github/project-items.md", "nextjs/known-issues.md", "nextjs/lib-structure.md", "nextjs/radix-ui-hydration.md", "nextjs/server-actions.md", "nextjs/tailwind-v4.md", "nextjs/tech-stack.md", "nextjs/testing.md", "shirokuma-docs/cli-invocation.md", "shirokuma-docs/plugin-cache.md", "shirokuma-docs/shirokuma-annotations.md"];
28
+ /**
29
+ * Deploy target directory for rules (relative to project root)
30
+ */
31
+ export declare const DEPLOYED_RULES_DIR = ".claude/rules/shirokuma";
32
+ /**
33
+ * Deploy target directory for Japanese rules (relative to project root)
34
+ */
35
+ export declare const DEPLOYED_RULES_DIR_JA = ".claude/rules/shirokuma-ja";
36
+ /**
37
+ * Gitignore entries managed by shirokuma-docs init
38
+ */
39
+ export declare const GITIGNORE_ENTRIES: string[];
40
+ /**
41
+ * Result of registering the plugin in Claude Code's global cache
42
+ */
43
+ export interface CacheRegistrationResult {
44
+ success: boolean;
45
+ method: "install" | "reinstall" | "skipped";
46
+ message?: string;
47
+ }
48
+ /**
49
+ * Deploy options for deployRules()
50
+ */
51
+ export interface DeployRulesOptions {
52
+ /** Preview mode - report what would change without writing */
53
+ dryRun?: boolean;
54
+ /** Enable verbose logging */
55
+ verbose?: boolean;
56
+ /** Override bundled plugin path (for JA plugin support) */
57
+ bundledPluginPath?: string;
58
+ /** Override deploy target directory (for JA plugin support) */
59
+ targetDir?: string;
60
+ }
61
+ /**
62
+ * Result for a single deployed rule
63
+ */
64
+ export interface DeployedRuleItem {
65
+ name: string;
66
+ status: "deployed" | "updated" | "unchanged" | "removed" | "error";
67
+ reason?: string;
68
+ }
69
+ /**
70
+ * Full deploy result
71
+ */
72
+ export interface DeployResult {
73
+ deployed: DeployedRuleItem[];
74
+ targetDir: string;
75
+ /** デプロイ対象に含まれないファイル(管理外) */
76
+ unmanagedFiles: string[];
77
+ }
78
+ /**
79
+ * Get path to a bundled plugin directory by name
80
+ *
81
+ * Resolves the plugin directory relative to this module's location.
82
+ * In development: {repo-root}/plugin/{pluginName}/
83
+ * When installed: {node_modules/shirokuma-docs}/plugin/{pluginName}/
84
+ *
85
+ * @param pluginName - Plugin directory name
86
+ * @returns Absolute path to the bundled plugin directory
87
+ */
88
+ export declare function getBundledPluginPathFor(pluginName: string): string;
89
+ /**
90
+ * Get path to the bundled plugin directory (EN)
91
+ *
92
+ * @returns Absolute path to the bundled plugin directory
93
+ */
94
+ export declare function getBundledPluginPath(): string;
95
+ /**
96
+ * Get path to the bundled Japanese plugin directory
97
+ *
98
+ * @returns Absolute path to the bundled Japanese plugin directory
99
+ */
100
+ export declare function getBundledPluginPathJa(): string;
101
+ /**
102
+ * Check if the Japanese plugin is bundled in this package
103
+ *
104
+ * @returns true if the Japanese plugin directory exists
105
+ */
106
+ export declare function hasJaPlugin(): boolean;
107
+ /**
108
+ * Check if the hooks plugin is bundled in this package
109
+ *
110
+ * @returns true if the hooks plugin directory exists
111
+ */
112
+ export declare function hasHooksPlugin(): boolean;
113
+ /**
114
+ * Get version from package.json
115
+ *
116
+ * @returns Package version string or "unknown"
117
+ */
118
+ export declare function getPackageVersion(): string;
119
+ /**
120
+ * Get version from the bundled plugin's plugin.json
121
+ *
122
+ * @returns Plugin version string or "unknown"
123
+ */
124
+ export declare function getPluginVersion(): string;
125
+ /**
126
+ * Validate skill name against AVAILABLE_SKILLS list
127
+ *
128
+ * @param skill - Skill name to validate
129
+ * @returns true if skill is in the available list
130
+ */
131
+ export declare function isValidSkill(skill: string): skill is typeof AVAILABLE_SKILLS[number];
132
+ /**
133
+ * Validate skill name format (prevents path traversal)
134
+ *
135
+ * Accepts: lowercase alphanumeric + hyphens (e.g., "managing-agents", "reviewing-on-issue")
136
+ * Rejects: dots, slashes, underscores, spaces, uppercase, empty strings
137
+ *
138
+ * @param name - Skill name to validate
139
+ * @returns true if the name is a safe, valid format
140
+ */
141
+ export declare function isValidSkillName(name: string): boolean;
142
+ /**
143
+ * Get list of skill names from the bundled plugin directory
144
+ *
145
+ * Scans the plugin/skills/ directory to detect available skills,
146
+ * independent of the AVAILABLE_SKILLS constant.
147
+ *
148
+ * @returns Array of valid skill names found in the bundled plugin
149
+ */
150
+ export declare function getBundledSkillNames(): string[];
151
+ /**
152
+ * Get list of rule file paths from the bundled plugin directory
153
+ *
154
+ * Scans plugin/rules/ up to 2 levels deep (root + 1 subdirectory),
155
+ * returning relative paths like "best-practices-first.md",
156
+ * "github/project-items.md", etc.
157
+ *
158
+ * Note: Matches the depth of getInstalledRules(). If deeper nesting
159
+ * is needed in the future, both functions should be updated together.
160
+ *
161
+ * @returns Array of relative rule file paths
162
+ */
163
+ export declare function getBundledRuleNames(): string[];
164
+ /**
165
+ * Get list of rule file paths from a given rules directory
166
+ *
167
+ * Scans up to 2 levels deep (root + 1 subdirectory).
168
+ *
169
+ * @param rulesDir - Absolute path to rules directory
170
+ * @returns Array of relative rule file paths
171
+ */
172
+ export declare function getBundledRuleNamesFrom(rulesDir: string): string[];
173
+ /**
174
+ * Detect if the project is the shirokuma-docs repository itself
175
+ *
176
+ * When running inside the shirokuma-docs repo, the bundled plugin source
177
+ * (plugin/shirokuma-skills-en/) is directly available, so copying to
178
+ * .claude/plugins/ is unnecessary.
179
+ *
180
+ * @param projectPath - Project root path
181
+ * @returns true if the project contains the plugin source
182
+ */
183
+ export declare function isSelfRepo(projectPath: string): boolean;
184
+ /**
185
+ * Get the effective plugin directory for a project
186
+ *
187
+ * For self-repo (shirokuma-docs itself): returns the bundled source path
188
+ * For external projects: global cache → bundled fallback
189
+ *
190
+ * @param projectPath - Project root path
191
+ * @returns Absolute path to the effective plugin directory
192
+ */
193
+ export declare function getEffectivePluginDir(projectPath: string): string;
194
+ /**
195
+ * Install the bundled plugin to a project (self-repo 用)
196
+ *
197
+ * self-repo(shirokuma-docs 自身)では bundled source を直接使用するためスキップ。
198
+ * 外部プロジェクトでは ensureMarketplace() + registerPluginCache() を使用する。
199
+ * この関数は後方互換性のために残しているが、外部プロジェクトでのローカルコピーは
200
+ * 不要になった。
201
+ *
202
+ * @param projectPath - Target project root path
203
+ * @param verbose - Enable verbose logging
204
+ * @returns true on success, false on failure
205
+ */
206
+ export declare function installPlugin(projectPath: string, verbose: boolean, pluginName?: string): Promise<boolean>;
207
+ /**
208
+ * Get list of installed skill names from a project
209
+ *
210
+ * Scans the effective plugin directory for installed skills.
211
+ * For self-repo, reads from bundled source; otherwise from .claude/plugins/.
212
+ *
213
+ * @param projectPath - Project root path
214
+ * @returns Array of installed skill names
215
+ */
216
+ export declare function getInstalledSkills(projectPath: string): string[];
217
+ /**
218
+ * Get list of installed rule names from a project
219
+ *
220
+ * Scans the effective plugin directory for installed rules.
221
+ * For self-repo, reads from bundled source; otherwise from .claude/plugins/.
222
+ *
223
+ * @param projectPath - Project root path
224
+ * @returns Array of installed rule file paths
225
+ */
226
+ export declare function getInstalledRules(projectPath: string): string[];
227
+ /**
228
+ * .gitignore にエントリを追加する(重複チェック付き)
229
+ *
230
+ * @param projectPath - プロジェクトルートパス
231
+ * @param options - オプション(dryRun, verbose)
232
+ * @returns 追加されたエントリ数
233
+ */
234
+ export declare function updateGitignore(projectPath: string, options?: {
235
+ dryRun?: boolean;
236
+ verbose?: boolean;
237
+ }): {
238
+ added: string[];
239
+ alreadyPresent: string[];
240
+ };
241
+ /**
242
+ * .gitignore から特定のエントリを削除する
243
+ *
244
+ * @param projectPath - プロジェクトルートパス
245
+ * @param entry - 削除するエントリ(例: ".claude/plugins/")
246
+ * @returns true: 削除成功、false: エントリが見つからないまたはファイルなし
247
+ */
248
+ export declare function removeGitignoreEntry(projectPath: string, entry: string): boolean;
249
+ /**
250
+ * レガシー .claude/plugins/ ディレクトリを削除する(マイグレーション用)
251
+ *
252
+ * 旧バージョンの init で作成された .claude/plugins/ ディレクトリと
253
+ * 対応する .gitignore エントリを削除する。
254
+ *
255
+ * @param projectPath - プロジェクトルートパス
256
+ */
257
+ export declare function cleanupLegacyPluginDir(projectPath: string): void;
258
+ /**
259
+ * Deploy plugin rules to .claude/rules/shirokuma/ for Claude Code auto-loading
260
+ *
261
+ * Copies rule files from the bundled plugin directly to the target directory.
262
+ * The shirokuma/ directory is fully owned by shirokuma-docs, so files are
263
+ * always overwritten without conflict detection.
264
+ *
265
+ * @param projectPath - Target project root path
266
+ * @param options - Deploy options (dryRun, verbose)
267
+ * @returns Deploy result with per-file status
268
+ */
269
+ export declare function deployRules(projectPath: string, options?: DeployRulesOptions): Promise<DeployResult>;
270
+ /**
271
+ * マーケットプレース名(marketplace.json の name フィールドで解決)
272
+ */
273
+ export declare const MARKETPLACE_NAME = "shirokuma-library";
274
+ /**
275
+ * マーケットプレースリポジトリ
276
+ */
277
+ export declare const MARKETPLACE_REPO = "ShirokumaLibrary/shirokuma-plugins";
278
+ /**
279
+ * マーケットプレースが登録済みか確認し、未登録なら追加する
280
+ *
281
+ * `claude plugin marketplace list` で確認し、MARKETPLACE_NAME が
282
+ * 含まれていなければ `claude plugin marketplace add` で登録する。
283
+ *
284
+ * 既存の登録(directory/github)は上書きしない。
285
+ *
286
+ * @returns true: 登録済みまたは登録成功、false: 登録失敗
287
+ */
288
+ export declare function ensureMarketplace(): boolean;
289
+ /**
290
+ * グローバルキャッシュ内のプラグインディレクトリパスを解決する
291
+ *
292
+ * キャッシュパス: ~/.claude/plugins/cache/{marketplace}/{pluginName}/{version}/
293
+ *
294
+ * @param pluginName - プラグイン名
295
+ * @param version - 特定バージョン(省略時は最新を自動検出)
296
+ * @returns キャッシュパス、見つからない場合は null
297
+ */
298
+ export declare function getGlobalCachePath(pluginName: string, version?: string): string | null;
299
+ /**
300
+ * Plugin identifier for Claude Code's plugin registry
301
+ */
302
+ export declare const PLUGIN_REGISTRY_ID = "shirokuma-skills-en@shirokuma-library";
303
+ /**
304
+ * Japanese plugin identifier for Claude Code's plugin registry
305
+ */
306
+ export declare const PLUGIN_REGISTRY_ID_JA = "shirokuma-skills-ja@shirokuma-library";
307
+ /**
308
+ * Hooks plugin identifier for Claude Code's plugin registry
309
+ */
310
+ export declare const PLUGIN_REGISTRY_ID_HOOKS = "shirokuma-hooks@shirokuma-library";
311
+ /**
312
+ * Register the plugin in Claude Code's global cache
313
+ *
314
+ * Runs `claude plugin install` to copy from .claude/plugins/ to the global
315
+ * cache (~/.claude/plugins/cache/). Claude Code only reads skills from the
316
+ * global cache, not the project-local directory.
317
+ *
318
+ * @param projectPath - Project root path
319
+ * @param options - Registration options
320
+ * @returns Registration result
321
+ */
322
+ export declare function registerPluginCache(projectPath: string, options?: {
323
+ reinstall?: boolean;
324
+ registryId?: string;
325
+ }): CacheRegistrationResult;
326
+ /**
327
+ * Check if the `claude` CLI is available in PATH
328
+ *
329
+ * @returns true if claude CLI is installed and accessible
330
+ */
331
+ export declare function isClaudeCliAvailable(): boolean;
332
+ /**
333
+ * プロジェクトの .claude/settings.json から language 設定を読み取る
334
+ *
335
+ * @param projectPath - プロジェクトルートパス
336
+ * @returns "english" | "japanese" | null(未設定時)
337
+ */
338
+ export declare function getLanguageSetting(projectPath: string): string | null;
339
+ /**
340
+ * Remove all deployed rules by deleting .claude/rules/shirokuma/ directory
341
+ *
342
+ * The shirokuma/ directory is fully owned by shirokuma-docs, so the entire
343
+ * directory is removed without per-file checks.
344
+ *
345
+ * @param projectPath - Project root path
346
+ * @param options - Clean options (dryRun, verbose)
347
+ * @returns Array of removed items (for reporting)
348
+ */
349
+ export declare function cleanDeployedRules(projectPath: string, options?: {
350
+ dryRun?: boolean;
351
+ verbose?: boolean;
352
+ }): Promise<DeployedRuleItem[]>;
353
+ //# sourceMappingURL=skills-repo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-repo.d.ts","sourceRoot":"","sources":["../../src/utils/skills-repo.ts"],"names":[],"mappings":"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"}