@jakkrichm/create-nexus-devflow 2.0.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 (431) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +82 -0
  3. package/bin/create-nexus-devflow.js +275 -0
  4. package/lib/update.js +379 -0
  5. package/package.json +53 -0
  6. package/template/.agents/skills/00-discover/SKILL.md +170 -0
  7. package/template/.agents/skills/10-define/SKILL.md +170 -0
  8. package/template/.agents/skills/20-spec/SKILL.md +156 -0
  9. package/template/.agents/skills/30-plan/SKILL.md +221 -0
  10. package/template/.agents/skills/40-implement/SKILL.md +166 -0
  11. package/template/.agents/skills/50-verify/SKILL.md +188 -0
  12. package/template/.agents/skills/60-report/SKILL.md +183 -0
  13. package/template/.agents/skills/70-release/SKILL.md +155 -0
  14. package/template/.agents/skills/9arm-skills/README.md +51 -0
  15. package/template/.agents/skills/9arm-skills/debug-mantra/SKILL.md +86 -0
  16. package/template/.agents/skills/9arm-skills/management-talk/SKILL.md +79 -0
  17. package/template/.agents/skills/9arm-skills/post-mortem/SKILL.md +71 -0
  18. package/template/.agents/skills/9arm-skills/scrutinize/SKILL.md +72 -0
  19. package/template/.agents/skills/agent/SKILL.md +165 -0
  20. package/template/.agents/skills/api-and-interface-design/SKILL.md +294 -0
  21. package/template/.agents/skills/app-builder/SKILL.md +75 -0
  22. package/template/.agents/skills/app-builder/agent-coordination.md +71 -0
  23. package/template/.agents/skills/app-builder/feature-building.md +53 -0
  24. package/template/.agents/skills/app-builder/project-detection.md +34 -0
  25. package/template/.agents/skills/app-builder/scaffolding.md +118 -0
  26. package/template/.agents/skills/app-builder/tech-stack.md +40 -0
  27. package/template/.agents/skills/app-builder/templates/SKILL.md +39 -0
  28. package/template/.agents/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  29. package/template/.agents/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  30. package/template/.agents/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  31. package/template/.agents/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  32. package/template/.agents/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  33. package/template/.agents/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  34. package/template/.agents/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  35. package/template/.agents/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
  36. package/template/.agents/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
  37. package/template/.agents/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
  38. package/template/.agents/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
  39. package/template/.agents/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  40. package/template/.agents/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
  41. package/template/.agents/skills/architecture/SKILL.md +55 -0
  42. package/template/.agents/skills/architecture/context-discovery.md +43 -0
  43. package/template/.agents/skills/architecture/examples.md +94 -0
  44. package/template/.agents/skills/architecture/pattern-selection.md +68 -0
  45. package/template/.agents/skills/architecture/patterns-reference.md +50 -0
  46. package/template/.agents/skills/architecture/trade-off-analysis.md +77 -0
  47. package/template/.agents/skills/bash-linux/SKILL.md +199 -0
  48. package/template/.agents/skills/behavioral-modes/SKILL.md +242 -0
  49. package/template/.agents/skills/brainstorm/SKILL.md +168 -0
  50. package/template/.agents/skills/browser-testing-with-devtools/SKILL.md +302 -0
  51. package/template/.agents/skills/changelog/SKILL.md +109 -0
  52. package/template/.agents/skills/check-for-updates/SKILL.md +117 -0
  53. package/template/.agents/skills/ci-cd-and-automation/SKILL.md +390 -0
  54. package/template/.agents/skills/code-review-and-quality/SKILL.md +392 -0
  55. package/template/.agents/skills/code-simplification/SKILL.md +331 -0
  56. package/template/.agents/skills/codebase-design/DEEPENING.md +24 -0
  57. package/template/.agents/skills/codebase-design/DESIGN-IT-TWICE.md +28 -0
  58. package/template/.agents/skills/codebase-design/SKILL.md +58 -0
  59. package/template/.agents/skills/commit/SKILL.md +63 -0
  60. package/template/.agents/skills/competitor-analysis/SKILL.md +66 -0
  61. package/template/.agents/skills/context-engineering/SKILL.md +290 -0
  62. package/template/.agents/skills/database-design/SKILL.md +52 -0
  63. package/template/.agents/skills/database-design/database-selection.md +43 -0
  64. package/template/.agents/skills/database-design/indexing.md +39 -0
  65. package/template/.agents/skills/database-design/migrations.md +48 -0
  66. package/template/.agents/skills/database-design/optimization.md +36 -0
  67. package/template/.agents/skills/database-design/orm-selection.md +30 -0
  68. package/template/.agents/skills/database-design/schema-design.md +56 -0
  69. package/template/.agents/skills/database-design/scripts/schema_validator.py +172 -0
  70. package/template/.agents/skills/debug/SKILL.md +131 -0
  71. package/template/.agents/skills/debugging-and-error-recovery/SKILL.md +298 -0
  72. package/template/.agents/skills/deploy/SKILL.md +91 -0
  73. package/template/.agents/skills/deployment-procedures/SKILL.md +241 -0
  74. package/template/.agents/skills/deprecation-and-migration/SKILL.md +206 -0
  75. package/template/.agents/skills/devflow/SKILL.md +89 -0
  76. package/template/.agents/skills/devflow-concept-intake/SKILL.md +150 -0
  77. package/template/.agents/skills/devflow-concept-intake/agents/openai.yaml +4 -0
  78. package/template/.agents/skills/devflow-concept-intake/references/adoption-proposal-template.md +60 -0
  79. package/template/.agents/skills/devflow-concept-intake/references/concept-report-template.md +47 -0
  80. package/template/.agents/skills/devflow-concept-intake/references/upstream-tracking-template.md +51 -0
  81. package/template/.agents/skills/devflow-wiki/SKILL.md +75 -0
  82. package/template/.agents/skills/diagnosing-bugs/SKILL.md +93 -0
  83. package/template/.agents/skills/documentation-and-adrs/SKILL.md +278 -0
  84. package/template/.agents/skills/domain-modeling/ADR-FORMAT.md +47 -0
  85. package/template/.agents/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
  86. package/template/.agents/skills/domain-modeling/SKILL.md +74 -0
  87. package/template/.agents/skills/english-to-thai-translator/SKILL.md +125 -0
  88. package/template/.agents/skills/followup/SKILL.md +83 -0
  89. package/template/.agents/skills/frontend-ui-engineering/SKILL.md +326 -0
  90. package/template/.agents/skills/frontend-ui-engineering/accessibility-checklist.md +159 -0
  91. package/template/.agents/skills/git-workflow-and-versioning/SKILL.md +300 -0
  92. package/template/.agents/skills/goal/SKILL.md +148 -0
  93. package/template/.agents/skills/handoff/SKILL.md +46 -0
  94. package/template/.agents/skills/help/SKILL.md +253 -0
  95. package/template/.agents/skills/human-review-decisions/SKILL.md +74 -0
  96. package/template/.agents/skills/i18n-localization/SKILL.md +154 -0
  97. package/template/.agents/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  98. package/template/.agents/skills/idea-refine/SKILL.md +178 -0
  99. package/template/.agents/skills/idea-refine/examples.md +238 -0
  100. package/template/.agents/skills/idea-refine/frameworks.md +99 -0
  101. package/template/.agents/skills/idea-refine/refinement-criteria.md +113 -0
  102. package/template/.agents/skills/idea-refine/scripts/idea-refine.sh +15 -0
  103. package/template/.agents/skills/incremental-implementation/SKILL.md +248 -0
  104. package/template/.agents/skills/insight/SKILL.md +131 -0
  105. package/template/.agents/skills/insight-capture/SKILL.md +84 -0
  106. package/template/.agents/skills/intelligent-routing/SKILL.md +176 -0
  107. package/template/.agents/skills/issue-triage/SKILL.md +115 -0
  108. package/template/.agents/skills/lint-and-validate/SKILL.md +45 -0
  109. package/template/.agents/skills/lint-and-validate/scripts/lint_runner.py +184 -0
  110. package/template/.agents/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  111. package/template/.agents/skills/mcp-builder/SKILL.md +176 -0
  112. package/template/.agents/skills/md2html/SKILL.md +154 -0
  113. package/template/.agents/skills/md2html/components.md +505 -0
  114. package/template/.agents/skills/md2html/template.html +1152 -0
  115. package/template/.agents/skills/merge/SKILL.md +76 -0
  116. package/template/.agents/skills/mobile-design/SKILL.md +394 -0
  117. package/template/.agents/skills/mobile-design/decision-trees.md +516 -0
  118. package/template/.agents/skills/mobile-design/mobile-backend.md +491 -0
  119. package/template/.agents/skills/mobile-design/mobile-color-system.md +420 -0
  120. package/template/.agents/skills/mobile-design/mobile-debugging.md +122 -0
  121. package/template/.agents/skills/mobile-design/mobile-design-thinking.md +357 -0
  122. package/template/.agents/skills/mobile-design/mobile-navigation.md +458 -0
  123. package/template/.agents/skills/mobile-design/mobile-performance.md +767 -0
  124. package/template/.agents/skills/mobile-design/mobile-testing.md +356 -0
  125. package/template/.agents/skills/mobile-design/mobile-typography.md +433 -0
  126. package/template/.agents/skills/mobile-design/platform-android.md +666 -0
  127. package/template/.agents/skills/mobile-design/platform-ios.md +561 -0
  128. package/template/.agents/skills/mobile-design/scripts/mobile_audit.py +670 -0
  129. package/template/.agents/skills/mobile-design/touch-psychology.md +537 -0
  130. package/template/.agents/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +312 -0
  131. package/template/.agents/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
  132. package/template/.agents/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -0
  133. package/template/.agents/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
  134. package/template/.agents/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
  135. package/template/.agents/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
  136. package/template/.agents/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -0
  137. package/template/.agents/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
  138. package/template/.agents/skills/nextjs-react-expert/SKILL.md +286 -0
  139. package/template/.agents/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
  140. package/template/.agents/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
  141. package/template/.agents/skills/nodejs-best-practices/SKILL.md +333 -0
  142. package/template/.agents/skills/obsidian-bases/SKILL.md +506 -0
  143. package/template/.agents/skills/obsidian-bases/references/FUNCTIONS_REFERENCE.md +173 -0
  144. package/template/.agents/skills/obsidian-cli/SKILL.md +115 -0
  145. package/template/.agents/skills/obsidian-clipper-template-creator/SKILL.md +73 -0
  146. package/template/.agents/skills/obsidian-clipper-template-creator/assets/clipping-template.json +51 -0
  147. package/template/.agents/skills/obsidian-clipper-template-creator/assets/recipe-template.json +48 -0
  148. package/template/.agents/skills/obsidian-clipper-template-creator/references/analysis-workflow.md +79 -0
  149. package/template/.agents/skills/obsidian-clipper-template-creator/references/bases-workflow.md +44 -0
  150. package/template/.agents/skills/obsidian-clipper-template-creator/references/filters.md +51 -0
  151. package/template/.agents/skills/obsidian-clipper-template-creator/references/json-schema.md +77 -0
  152. package/template/.agents/skills/obsidian-clipper-template-creator/references/logic.md +67 -0
  153. package/template/.agents/skills/obsidian-clipper-template-creator/references/variables.md +64 -0
  154. package/template/.agents/skills/obsidian-markdown/SKILL.md +205 -0
  155. package/template/.agents/skills/obsidian-markdown/references/CALLOUTS.md +58 -0
  156. package/template/.agents/skills/obsidian-markdown/references/EMBEDS.md +63 -0
  157. package/template/.agents/skills/obsidian-markdown/references/PROPERTIES.md +61 -0
  158. package/template/.agents/skills/package-json-generator/SKILL.md +60 -0
  159. package/template/.agents/skills/package-json-generator/scripts/generate.js +120 -0
  160. package/template/.agents/skills/package-json-generator/scripts/run.sh +19 -0
  161. package/template/.agents/skills/parallel-agents/SKILL.md +144 -0
  162. package/template/.agents/skills/performance-optimization/SKILL.md +299 -0
  163. package/template/.agents/skills/performance-optimization/performance-checklist.md +113 -0
  164. package/template/.agents/skills/planning-and-task-breakdown/SKILL.md +239 -0
  165. package/template/.agents/skills/powershell-windows/SKILL.md +167 -0
  166. package/template/.agents/skills/pr/SKILL.md +93 -0
  167. package/template/.agents/skills/pr-review/SKILL.md +143 -0
  168. package/template/.agents/skills/pr-review-analysis/SKILL.md +89 -0
  169. package/template/.agents/skills/prd/SKILL.md +127 -0
  170. package/template/.agents/skills/preview/SKILL.md +121 -0
  171. package/template/.agents/skills/preview-local-check/SKILL.md +59 -0
  172. package/template/.agents/skills/prompt-addons/SKILL.md +99 -0
  173. package/template/.agents/skills/prototype/SKILL.md +44 -0
  174. package/template/.agents/skills/prp-dev-fastapi/SKILL.md +114 -0
  175. package/template/.agents/skills/prp-dev-multiplatform/SKILL.md +36 -0
  176. package/template/.agents/skills/prp-dev-odoo/SKILL.md +71 -0
  177. package/template/.agents/skills/prp-dev-php/SKILL.md +63 -0
  178. package/template/.agents/skills/prp-sa-ba/SKILL.md +52 -0
  179. package/template/.agents/skills/python-patterns/SKILL.md +441 -0
  180. package/template/.agents/skills/red-team-tactics/SKILL.md +199 -0
  181. package/template/.agents/skills/release-git-operations/SKILL.md +97 -0
  182. package/template/.agents/skills/research/SKILL.md +143 -0
  183. package/template/.agents/skills/review/SKILL.md +55 -0
  184. package/template/.agents/skills/review-followup-routing/SKILL.md +98 -0
  185. package/template/.agents/skills/roadmap-strategy/SKILL.md +97 -0
  186. package/template/.agents/skills/security-and-hardening/SKILL.md +349 -0
  187. package/template/.agents/skills/security-and-hardening/security-checklist.md +134 -0
  188. package/template/.agents/skills/security-review/SKILL.md +166 -0
  189. package/template/.agents/skills/seo-fundamentals/SKILL.md +129 -0
  190. package/template/.agents/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  191. package/template/.agents/skills/server-management/SKILL.md +161 -0
  192. package/template/.agents/skills/shipping-and-launch/SKILL.md +311 -0
  193. package/template/.agents/skills/silent-failure-audit/SKILL.md +73 -0
  194. package/template/.agents/skills/simplify/SKILL.md +79 -0
  195. package/template/.agents/skills/skill-development/SKILL.md +86 -0
  196. package/template/.agents/skills/spec-driven-development/SKILL.md +207 -0
  197. package/template/.agents/skills/spec-orchestration/SKILL.md +91 -0
  198. package/template/.agents/skills/specialist-agent-routing/SKILL.md +107 -0
  199. package/template/.agents/skills/tailwind-patterns/SKILL.md +269 -0
  200. package/template/.agents/skills/test/SKILL.md +82 -0
  201. package/template/.agents/skills/test-driven-development/SKILL.md +422 -0
  202. package/template/.agents/skills/test-driven-development/testing-patterns.md +236 -0
  203. package/template/.agents/skills/test-execution-and-coverage/SKILL.md +56 -0
  204. package/template/.agents/skills/type-design/SKILL.md +84 -0
  205. package/template/.agents/skills/ui-ux-pro-max/SKILL.md +75 -0
  206. package/template/.agents/skills/using-agent-skills/SKILL.md +171 -0
  207. package/template/.agents/skills/verification-orchestration/SKILL.md +68 -0
  208. package/template/.agents/skills/vulnerability-scanner/SKILL.md +276 -0
  209. package/template/.agents/skills/vulnerability-scanner/checklists.md +121 -0
  210. package/template/.agents/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  211. package/template/.agents/skills/wiki/SKILL.md +149 -0
  212. package/template/.agents/skills/workflow-documentation-sync/SKILL.md +87 -0
  213. package/template/.agents/skills/writing-great-skills/SKILL.md +65 -0
  214. package/template/.claude/skills/00-discover/SKILL.md +170 -0
  215. package/template/.claude/skills/10-define/SKILL.md +170 -0
  216. package/template/.claude/skills/20-spec/SKILL.md +156 -0
  217. package/template/.claude/skills/30-plan/SKILL.md +221 -0
  218. package/template/.claude/skills/40-implement/SKILL.md +166 -0
  219. package/template/.claude/skills/50-verify/SKILL.md +188 -0
  220. package/template/.claude/skills/60-report/SKILL.md +183 -0
  221. package/template/.claude/skills/70-release/SKILL.md +155 -0
  222. package/template/.claude/skills/9arm-skills/README.md +51 -0
  223. package/template/.claude/skills/9arm-skills/debug-mantra/SKILL.md +86 -0
  224. package/template/.claude/skills/9arm-skills/management-talk/SKILL.md +79 -0
  225. package/template/.claude/skills/9arm-skills/post-mortem/SKILL.md +71 -0
  226. package/template/.claude/skills/9arm-skills/scrutinize/SKILL.md +72 -0
  227. package/template/.claude/skills/agent/SKILL.md +165 -0
  228. package/template/.claude/skills/api-and-interface-design/SKILL.md +294 -0
  229. package/template/.claude/skills/app-builder/SKILL.md +75 -0
  230. package/template/.claude/skills/app-builder/agent-coordination.md +71 -0
  231. package/template/.claude/skills/app-builder/feature-building.md +53 -0
  232. package/template/.claude/skills/app-builder/project-detection.md +34 -0
  233. package/template/.claude/skills/app-builder/scaffolding.md +118 -0
  234. package/template/.claude/skills/app-builder/tech-stack.md +40 -0
  235. package/template/.claude/skills/app-builder/templates/SKILL.md +39 -0
  236. package/template/.claude/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  237. package/template/.claude/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  238. package/template/.claude/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  239. package/template/.claude/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  240. package/template/.claude/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  241. package/template/.claude/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  242. package/template/.claude/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  243. package/template/.claude/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
  244. package/template/.claude/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
  245. package/template/.claude/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
  246. package/template/.claude/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
  247. package/template/.claude/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  248. package/template/.claude/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
  249. package/template/.claude/skills/architecture/SKILL.md +55 -0
  250. package/template/.claude/skills/architecture/context-discovery.md +43 -0
  251. package/template/.claude/skills/architecture/examples.md +94 -0
  252. package/template/.claude/skills/architecture/pattern-selection.md +68 -0
  253. package/template/.claude/skills/architecture/patterns-reference.md +50 -0
  254. package/template/.claude/skills/architecture/trade-off-analysis.md +77 -0
  255. package/template/.claude/skills/bash-linux/SKILL.md +199 -0
  256. package/template/.claude/skills/behavioral-modes/SKILL.md +242 -0
  257. package/template/.claude/skills/brainstorm/SKILL.md +168 -0
  258. package/template/.claude/skills/browser-testing-with-devtools/SKILL.md +302 -0
  259. package/template/.claude/skills/changelog/SKILL.md +109 -0
  260. package/template/.claude/skills/check-for-updates/SKILL.md +117 -0
  261. package/template/.claude/skills/ci-cd-and-automation/SKILL.md +390 -0
  262. package/template/.claude/skills/code-review-and-quality/SKILL.md +392 -0
  263. package/template/.claude/skills/code-simplification/SKILL.md +331 -0
  264. package/template/.claude/skills/codebase-design/DEEPENING.md +24 -0
  265. package/template/.claude/skills/codebase-design/DESIGN-IT-TWICE.md +28 -0
  266. package/template/.claude/skills/codebase-design/SKILL.md +58 -0
  267. package/template/.claude/skills/commit/SKILL.md +63 -0
  268. package/template/.claude/skills/competitor-analysis/SKILL.md +66 -0
  269. package/template/.claude/skills/context-engineering/SKILL.md +290 -0
  270. package/template/.claude/skills/database-design/SKILL.md +52 -0
  271. package/template/.claude/skills/database-design/database-selection.md +43 -0
  272. package/template/.claude/skills/database-design/indexing.md +39 -0
  273. package/template/.claude/skills/database-design/migrations.md +48 -0
  274. package/template/.claude/skills/database-design/optimization.md +36 -0
  275. package/template/.claude/skills/database-design/orm-selection.md +30 -0
  276. package/template/.claude/skills/database-design/schema-design.md +56 -0
  277. package/template/.claude/skills/database-design/scripts/schema_validator.py +172 -0
  278. package/template/.claude/skills/debug/SKILL.md +131 -0
  279. package/template/.claude/skills/debugging-and-error-recovery/SKILL.md +298 -0
  280. package/template/.claude/skills/deploy/SKILL.md +91 -0
  281. package/template/.claude/skills/deployment-procedures/SKILL.md +241 -0
  282. package/template/.claude/skills/deprecation-and-migration/SKILL.md +206 -0
  283. package/template/.claude/skills/devflow/SKILL.md +89 -0
  284. package/template/.claude/skills/devflow-concept-intake/SKILL.md +150 -0
  285. package/template/.claude/skills/devflow-concept-intake/agents/openai.yaml +4 -0
  286. package/template/.claude/skills/devflow-concept-intake/references/adoption-proposal-template.md +60 -0
  287. package/template/.claude/skills/devflow-concept-intake/references/concept-report-template.md +47 -0
  288. package/template/.claude/skills/devflow-concept-intake/references/upstream-tracking-template.md +51 -0
  289. package/template/.claude/skills/devflow-wiki/SKILL.md +75 -0
  290. package/template/.claude/skills/diagnosing-bugs/SKILL.md +93 -0
  291. package/template/.claude/skills/documentation-and-adrs/SKILL.md +278 -0
  292. package/template/.claude/skills/domain-modeling/ADR-FORMAT.md +47 -0
  293. package/template/.claude/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
  294. package/template/.claude/skills/domain-modeling/SKILL.md +74 -0
  295. package/template/.claude/skills/english-to-thai-translator/SKILL.md +125 -0
  296. package/template/.claude/skills/followup/SKILL.md +83 -0
  297. package/template/.claude/skills/frontend-ui-engineering/SKILL.md +326 -0
  298. package/template/.claude/skills/frontend-ui-engineering/accessibility-checklist.md +159 -0
  299. package/template/.claude/skills/git-workflow-and-versioning/SKILL.md +300 -0
  300. package/template/.claude/skills/goal/SKILL.md +148 -0
  301. package/template/.claude/skills/handoff/SKILL.md +46 -0
  302. package/template/.claude/skills/help/SKILL.md +253 -0
  303. package/template/.claude/skills/human-review-decisions/SKILL.md +74 -0
  304. package/template/.claude/skills/i18n-localization/SKILL.md +154 -0
  305. package/template/.claude/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  306. package/template/.claude/skills/idea-refine/SKILL.md +178 -0
  307. package/template/.claude/skills/idea-refine/examples.md +238 -0
  308. package/template/.claude/skills/idea-refine/frameworks.md +99 -0
  309. package/template/.claude/skills/idea-refine/refinement-criteria.md +113 -0
  310. package/template/.claude/skills/idea-refine/scripts/idea-refine.sh +15 -0
  311. package/template/.claude/skills/incremental-implementation/SKILL.md +248 -0
  312. package/template/.claude/skills/insight/SKILL.md +131 -0
  313. package/template/.claude/skills/insight-capture/SKILL.md +84 -0
  314. package/template/.claude/skills/intelligent-routing/SKILL.md +176 -0
  315. package/template/.claude/skills/issue-triage/SKILL.md +115 -0
  316. package/template/.claude/skills/lint-and-validate/SKILL.md +45 -0
  317. package/template/.claude/skills/lint-and-validate/scripts/lint_runner.py +184 -0
  318. package/template/.claude/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  319. package/template/.claude/skills/mcp-builder/SKILL.md +176 -0
  320. package/template/.claude/skills/md2html/SKILL.md +154 -0
  321. package/template/.claude/skills/md2html/components.md +505 -0
  322. package/template/.claude/skills/md2html/template.html +1152 -0
  323. package/template/.claude/skills/merge/SKILL.md +76 -0
  324. package/template/.claude/skills/mobile-design/SKILL.md +394 -0
  325. package/template/.claude/skills/mobile-design/decision-trees.md +516 -0
  326. package/template/.claude/skills/mobile-design/mobile-backend.md +491 -0
  327. package/template/.claude/skills/mobile-design/mobile-color-system.md +420 -0
  328. package/template/.claude/skills/mobile-design/mobile-debugging.md +122 -0
  329. package/template/.claude/skills/mobile-design/mobile-design-thinking.md +357 -0
  330. package/template/.claude/skills/mobile-design/mobile-navigation.md +458 -0
  331. package/template/.claude/skills/mobile-design/mobile-performance.md +767 -0
  332. package/template/.claude/skills/mobile-design/mobile-testing.md +356 -0
  333. package/template/.claude/skills/mobile-design/mobile-typography.md +433 -0
  334. package/template/.claude/skills/mobile-design/platform-android.md +666 -0
  335. package/template/.claude/skills/mobile-design/platform-ios.md +561 -0
  336. package/template/.claude/skills/mobile-design/scripts/mobile_audit.py +670 -0
  337. package/template/.claude/skills/mobile-design/touch-psychology.md +537 -0
  338. package/template/.claude/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +312 -0
  339. package/template/.claude/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
  340. package/template/.claude/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -0
  341. package/template/.claude/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
  342. package/template/.claude/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
  343. package/template/.claude/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
  344. package/template/.claude/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -0
  345. package/template/.claude/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
  346. package/template/.claude/skills/nextjs-react-expert/SKILL.md +286 -0
  347. package/template/.claude/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
  348. package/template/.claude/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
  349. package/template/.claude/skills/nodejs-best-practices/SKILL.md +333 -0
  350. package/template/.claude/skills/obsidian-bases/SKILL.md +506 -0
  351. package/template/.claude/skills/obsidian-bases/references/FUNCTIONS_REFERENCE.md +173 -0
  352. package/template/.claude/skills/obsidian-cli/SKILL.md +115 -0
  353. package/template/.claude/skills/obsidian-clipper-template-creator/SKILL.md +73 -0
  354. package/template/.claude/skills/obsidian-clipper-template-creator/assets/clipping-template.json +51 -0
  355. package/template/.claude/skills/obsidian-clipper-template-creator/assets/recipe-template.json +48 -0
  356. package/template/.claude/skills/obsidian-clipper-template-creator/references/analysis-workflow.md +79 -0
  357. package/template/.claude/skills/obsidian-clipper-template-creator/references/bases-workflow.md +44 -0
  358. package/template/.claude/skills/obsidian-clipper-template-creator/references/filters.md +51 -0
  359. package/template/.claude/skills/obsidian-clipper-template-creator/references/json-schema.md +77 -0
  360. package/template/.claude/skills/obsidian-clipper-template-creator/references/logic.md +67 -0
  361. package/template/.claude/skills/obsidian-clipper-template-creator/references/variables.md +64 -0
  362. package/template/.claude/skills/obsidian-markdown/SKILL.md +205 -0
  363. package/template/.claude/skills/obsidian-markdown/references/CALLOUTS.md +58 -0
  364. package/template/.claude/skills/obsidian-markdown/references/EMBEDS.md +63 -0
  365. package/template/.claude/skills/obsidian-markdown/references/PROPERTIES.md +61 -0
  366. package/template/.claude/skills/package-json-generator/SKILL.md +60 -0
  367. package/template/.claude/skills/package-json-generator/scripts/generate.js +120 -0
  368. package/template/.claude/skills/package-json-generator/scripts/run.sh +19 -0
  369. package/template/.claude/skills/parallel-agents/SKILL.md +144 -0
  370. package/template/.claude/skills/performance-optimization/SKILL.md +299 -0
  371. package/template/.claude/skills/performance-optimization/performance-checklist.md +113 -0
  372. package/template/.claude/skills/planning-and-task-breakdown/SKILL.md +239 -0
  373. package/template/.claude/skills/powershell-windows/SKILL.md +167 -0
  374. package/template/.claude/skills/pr/SKILL.md +93 -0
  375. package/template/.claude/skills/pr-review/SKILL.md +143 -0
  376. package/template/.claude/skills/pr-review-analysis/SKILL.md +89 -0
  377. package/template/.claude/skills/prd/SKILL.md +127 -0
  378. package/template/.claude/skills/preview/SKILL.md +121 -0
  379. package/template/.claude/skills/preview-local-check/SKILL.md +59 -0
  380. package/template/.claude/skills/prompt-addons/SKILL.md +99 -0
  381. package/template/.claude/skills/prototype/SKILL.md +44 -0
  382. package/template/.claude/skills/prp-dev-fastapi/SKILL.md +114 -0
  383. package/template/.claude/skills/prp-dev-multiplatform/SKILL.md +36 -0
  384. package/template/.claude/skills/prp-dev-odoo/SKILL.md +71 -0
  385. package/template/.claude/skills/prp-dev-php/SKILL.md +63 -0
  386. package/template/.claude/skills/prp-sa-ba/SKILL.md +52 -0
  387. package/template/.claude/skills/python-patterns/SKILL.md +441 -0
  388. package/template/.claude/skills/red-team-tactics/SKILL.md +199 -0
  389. package/template/.claude/skills/release-git-operations/SKILL.md +97 -0
  390. package/template/.claude/skills/research/SKILL.md +143 -0
  391. package/template/.claude/skills/review/SKILL.md +55 -0
  392. package/template/.claude/skills/review-followup-routing/SKILL.md +98 -0
  393. package/template/.claude/skills/roadmap-strategy/SKILL.md +97 -0
  394. package/template/.claude/skills/security-and-hardening/SKILL.md +349 -0
  395. package/template/.claude/skills/security-and-hardening/security-checklist.md +134 -0
  396. package/template/.claude/skills/security-review/SKILL.md +166 -0
  397. package/template/.claude/skills/seo-fundamentals/SKILL.md +129 -0
  398. package/template/.claude/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  399. package/template/.claude/skills/server-management/SKILL.md +161 -0
  400. package/template/.claude/skills/shipping-and-launch/SKILL.md +311 -0
  401. package/template/.claude/skills/silent-failure-audit/SKILL.md +73 -0
  402. package/template/.claude/skills/simplify/SKILL.md +79 -0
  403. package/template/.claude/skills/skill-development/SKILL.md +86 -0
  404. package/template/.claude/skills/spec-driven-development/SKILL.md +207 -0
  405. package/template/.claude/skills/spec-orchestration/SKILL.md +91 -0
  406. package/template/.claude/skills/specialist-agent-routing/SKILL.md +107 -0
  407. package/template/.claude/skills/tailwind-patterns/SKILL.md +269 -0
  408. package/template/.claude/skills/test/SKILL.md +82 -0
  409. package/template/.claude/skills/test-driven-development/SKILL.md +422 -0
  410. package/template/.claude/skills/test-driven-development/testing-patterns.md +236 -0
  411. package/template/.claude/skills/test-execution-and-coverage/SKILL.md +56 -0
  412. package/template/.claude/skills/type-design/SKILL.md +84 -0
  413. package/template/.claude/skills/ui-ux-pro-max/SKILL.md +75 -0
  414. package/template/.claude/skills/using-agent-skills/SKILL.md +171 -0
  415. package/template/.claude/skills/verification-orchestration/SKILL.md +68 -0
  416. package/template/.claude/skills/vulnerability-scanner/SKILL.md +276 -0
  417. package/template/.claude/skills/vulnerability-scanner/checklists.md +121 -0
  418. package/template/.claude/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  419. package/template/.claude/skills/wiki/SKILL.md +149 -0
  420. package/template/.claude/skills/workflow-documentation-sync/SKILL.md +87 -0
  421. package/template/.claude/skills/writing-great-skills/SKILL.md +65 -0
  422. package/template/.nexus/nexus-devflow.json +44 -0
  423. package/template/AGENTS.md +58 -0
  424. package/template/CLAUDE.md +5 -0
  425. package/template/LICENSE +21 -0
  426. package/template/devflow/context/ai-interaction.md +34 -0
  427. package/template/devflow/context/coding-standards.md +19 -0
  428. package/template/devflow/context/current-stage.md +6 -0
  429. package/template/devflow/context/findings.md +13 -0
  430. package/template/devflow/context/project-overview.md +20 -0
  431. package/template/devflow/reference/running-id-contract.md +39 -0
package/lib/update.js ADDED
@@ -0,0 +1,379 @@
1
+ const crypto = require("node:crypto");
2
+ const fs = require("node:fs/promises");
3
+ const path = require("node:path");
4
+
5
+ const CONTROL_DIR = ".nexus";
6
+ const MANIFEST_PATH = `${CONTROL_DIR}/nexus-devflow.json`;
7
+ const MANIFEST_SCHEMA_VERSION = 1;
8
+ const MANAGED_ROOTS = {
9
+ common: ["AGENTS.md", "CLAUDE.md", "devflow", "LICENSE"],
10
+ codex: [".agents/skills"],
11
+ antigravity: [".agents/skills", ".agent/workflows"],
12
+ claude: [".claude/skills"]
13
+ };
14
+
15
+ function adapterListFromMode(adapter) {
16
+ if (adapter === "both" || adapter === "all") {
17
+ return ["codex", "claude"];
18
+ }
19
+
20
+ if (adapter === "antigravity") {
21
+ return ["codex"];
22
+ }
23
+
24
+ if (adapter === "codex" || adapter === "claude") {
25
+ return [adapter];
26
+ }
27
+
28
+ throw new Error(`Unknown adapter mode: ${adapter}`);
29
+ }
30
+
31
+ function createManifest(version, adapters, templateFiles) {
32
+ const managedFiles = {};
33
+
34
+ for (const [relativePath, file] of [...templateFiles.entries()].sort(([a], [b]) =>
35
+ a.localeCompare(b)
36
+ )) {
37
+ managedFiles[relativePath] = file.hash;
38
+ }
39
+
40
+ return {
41
+ schemaVersion: MANIFEST_SCHEMA_VERSION,
42
+ name: "nexus-devflow",
43
+ package: "@jakkrichm/create-nexus-devflow",
44
+ version,
45
+ repository: "https://github.com/Jakkrich/nexus-devflow",
46
+ artifactLanguage: "th",
47
+ adapters: [...adapters].sort(),
48
+ workspace: {
49
+ contextDir: "devflow/context",
50
+ historyDir: "devflow/history",
51
+ referenceDir: "devflow/reference",
52
+ runsDir: "devflow/runs",
53
+ discoveriesDir: "devflow/discoveries"
54
+ },
55
+ lifecycle: {
56
+ mainlineStages: [
57
+ "00-discover",
58
+ "10-define",
59
+ "20-spec",
60
+ "30-plan",
61
+ "40-implement",
62
+ "50-verify",
63
+ "60-report",
64
+ "70-release"
65
+ ],
66
+ companionCommands: [
67
+ "goal",
68
+ "brainstorm",
69
+ "research",
70
+ "debug",
71
+ "prd",
72
+ "issue-triage",
73
+ "security-review",
74
+ "wiki",
75
+ "check-for-updates",
76
+ "help"
77
+ ]
78
+ },
79
+ managedFiles
80
+ };
81
+ }
82
+
83
+ async function collectManagedTemplateFiles(templateRoot, adapters) {
84
+ const files = new Map();
85
+ const roots = [
86
+ ...MANAGED_ROOTS.common,
87
+ ...adapters.flatMap((adapter) => MANAGED_ROOTS[adapter] || [])
88
+ ];
89
+
90
+ for (const relativeRoot of roots) {
91
+ const sourceRoot = path.join(templateRoot, ...relativeRoot.split("/"));
92
+ await collectSourceFiles(sourceRoot, relativeRoot, files);
93
+ }
94
+
95
+ return files;
96
+ }
97
+
98
+ async function collectSourceFiles(sourcePath, relativePath, files) {
99
+ try {
100
+ const stats = await fs.lstat(sourcePath);
101
+
102
+ if (stats.isSymbolicLink()) {
103
+ throw new Error(`Managed template path cannot be a symbolic link: ${relativePath}`);
104
+ }
105
+
106
+ if (stats.isDirectory()) {
107
+ const children = (await fs.readdir(sourcePath)).sort();
108
+
109
+ for (const child of children) {
110
+ await collectSourceFiles(
111
+ path.join(sourcePath, child),
112
+ `${relativePath}/${child}`,
113
+ files
114
+ );
115
+ }
116
+
117
+ return;
118
+ }
119
+
120
+ if (!stats.isFile()) {
121
+ throw new Error(`Managed template path is not a regular file: ${relativePath}`);
122
+ }
123
+
124
+ files.set(relativePath, {
125
+ source: sourcePath,
126
+ hash: await hashFile(sourcePath)
127
+ });
128
+ } catch (err) {
129
+ if (err.code === "ENOENT") {
130
+ return;
131
+ }
132
+ throw err;
133
+ }
134
+ }
135
+
136
+ async function readManifest(targetDir) {
137
+ const manifestFile = targetPath(targetDir, MANIFEST_PATH);
138
+ await assertNoSymlinkParents(targetDir, MANIFEST_PATH);
139
+
140
+ try {
141
+ const content = await fs.readFile(manifestFile, "utf8");
142
+ const data = JSON.parse(content);
143
+
144
+ if (!data || data.schemaVersion !== MANIFEST_SCHEMA_VERSION) {
145
+ throw new Error("Unsupported manifest schema version.");
146
+ }
147
+
148
+ return data;
149
+ } catch (error) {
150
+ if (error.code === "ENOENT") {
151
+ return null;
152
+ }
153
+ throw error;
154
+ }
155
+ }
156
+
157
+ async function prepareUpdate({ targetDir, templateRoot, version, adapter }) {
158
+ const requestedAdapters = new Set(adapterListFromMode(adapter));
159
+ const previousManifest = await readManifest(targetDir);
160
+
161
+ const activeAdapters = new Set([
162
+ ...requestedAdapters,
163
+ ...(previousManifest?.adapters || [])
164
+ ]);
165
+
166
+ const templateFiles = await collectManagedTemplateFiles(
167
+ templateRoot,
168
+ [...activeAdapters]
169
+ );
170
+ const nextManifest = createManifest(version, activeAdapters, templateFiles);
171
+
172
+ const createList = [];
173
+ const updateList = [];
174
+ const conflictList = [];
175
+
176
+ for (const [relativePath, templateFile] of templateFiles) {
177
+ await assertNoSymlinkParents(targetDir, relativePath);
178
+ const targetFile = targetPath(targetDir, relativePath);
179
+
180
+ let targetStats = null;
181
+ try {
182
+ targetStats = await fs.lstat(targetFile);
183
+ } catch (error) {
184
+ if (error.code !== "ENOENT") {
185
+ throw error;
186
+ }
187
+ }
188
+
189
+ if (!targetStats) {
190
+ createList.push(relativePath);
191
+ continue;
192
+ }
193
+
194
+ if (targetStats.isSymbolicLink()) {
195
+ conflictList.push({
196
+ relativePath,
197
+ reason: "symlink",
198
+ detail: "Target path is a symbolic link."
199
+ });
200
+ continue;
201
+ }
202
+
203
+ if (!targetStats.isFile()) {
204
+ conflictList.push({
205
+ relativePath,
206
+ reason: "not_file",
207
+ detail: "Target path exists but is not a regular file."
208
+ });
209
+ continue;
210
+ }
211
+
212
+ const currentHash = await hashFile(targetFile);
213
+ if (currentHash === templateFile.hash) {
214
+ continue;
215
+ }
216
+
217
+ const recordedHash = previousManifest?.managedFiles?.[relativePath];
218
+ if (recordedHash && recordedHash === currentHash) {
219
+ updateList.push(relativePath);
220
+ continue;
221
+ }
222
+
223
+ conflictList.push({
224
+ relativePath,
225
+ reason: "customized",
226
+ detail: recordedHash
227
+ ? "File was modified locally since last install."
228
+ : "File exists in project and differs from template."
229
+ });
230
+ }
231
+
232
+ const orphanedFiles = [];
233
+ if (previousManifest) {
234
+ for (const [relativePath, recordedHash] of Object.entries(
235
+ previousManifest.managedFiles
236
+ )) {
237
+ if (templateFiles.has(relativePath)) {
238
+ continue;
239
+ }
240
+
241
+ await assertNoSymlinkParents(targetDir, relativePath);
242
+ const targetFile = targetPath(targetDir, relativePath);
243
+
244
+ let targetStats = null;
245
+ try {
246
+ targetStats = await fs.lstat(targetFile);
247
+ } catch (error) {
248
+ if (error.code !== "ENOENT") {
249
+ throw error;
250
+ }
251
+ }
252
+
253
+ if (!targetStats || !targetStats.isFile()) {
254
+ continue;
255
+ }
256
+
257
+ const currentHash = await hashFile(targetFile);
258
+ if (currentHash === recordedHash) {
259
+ orphanedFiles.push(relativePath);
260
+ }
261
+ }
262
+ }
263
+
264
+ return {
265
+ targetDir,
266
+ templateRoot,
267
+ previousManifest,
268
+ nextManifest,
269
+ activeAdapters: [...activeAdapters].sort(),
270
+ templateFiles,
271
+ createList,
272
+ updateList,
273
+ conflictList,
274
+ orphanedFiles
275
+ };
276
+ }
277
+
278
+ async function applyPreparedUpdate(prepared, { replaceConflicts = false } = {}) {
279
+ if (prepared.conflictList.length > 0 && !replaceConflicts) {
280
+ throw new Error(
281
+ `Cannot apply update with ${prepared.conflictList.length} conflict(s). Pass force/replace option or resolve conflicts.`
282
+ );
283
+ }
284
+
285
+ const writeTargets = [
286
+ ...prepared.createList,
287
+ ...prepared.updateList,
288
+ ...(replaceConflicts ? prepared.conflictList.map((item) => item.relativePath) : [])
289
+ ];
290
+
291
+ let appliedCount = 0;
292
+ for (const relativePath of writeTargets) {
293
+ const templateFile = prepared.templateFiles.get(relativePath);
294
+ if (!templateFile) {
295
+ continue;
296
+ }
297
+
298
+ await copyFileAtomic(prepared.targetDir, relativePath, templateFile.source);
299
+ appliedCount++;
300
+ }
301
+
302
+ let removedCount = 0;
303
+ for (const relativePath of prepared.orphanedFiles) {
304
+ const fileToRemove = targetPath(prepared.targetDir, relativePath);
305
+ try {
306
+ await fs.unlink(fileToRemove);
307
+ removedCount++;
308
+ } catch (error) {
309
+ if (error.code !== "ENOENT") {
310
+ throw error;
311
+ }
312
+ }
313
+ }
314
+
315
+ await writeInstallManifest(prepared.targetDir, prepared.nextManifest);
316
+
317
+ return {
318
+ appliedCount,
319
+ removedCount
320
+ };
321
+ }
322
+
323
+ async function writeInstallManifest(targetDir, manifest) {
324
+ const manifestFile = targetPath(targetDir, MANIFEST_PATH);
325
+ await fs.mkdir(path.dirname(manifestFile), { recursive: true });
326
+ await fs.writeFile(manifestFile, `${JSON.stringify(manifest, null, 2)}\n`, "utf8");
327
+ }
328
+
329
+ async function copyFileAtomic(targetDir, relativePath, sourcePath) {
330
+ await assertNoSymlinkParents(targetDir, relativePath);
331
+ const destinationPath = targetPath(targetDir, relativePath);
332
+ await fs.mkdir(path.dirname(destinationPath), { recursive: true });
333
+
334
+ const tempPath = `${destinationPath}.tmp-${process.pid}-${Date.now()}`;
335
+ await fs.copyFile(sourcePath, tempPath);
336
+ await fs.rename(tempPath, destinationPath);
337
+ }
338
+
339
+ function targetPath(targetDir, relativePath) {
340
+ return path.resolve(targetDir, ...relativePath.split("/"));
341
+ }
342
+
343
+ async function assertNoSymlinkParents(targetDir, relativePath) {
344
+ const parts = relativePath.split("/");
345
+ let current = path.resolve(targetDir);
346
+
347
+ for (let i = 0; i < parts.length - 1; i++) {
348
+ current = path.join(current, parts[i]);
349
+ try {
350
+ const stats = await fs.lstat(current);
351
+ if (stats.isSymbolicLink()) {
352
+ throw new Error(
353
+ `Target sub-path "${parts.slice(0, i + 1).join("/")}" is a symbolic link.`
354
+ );
355
+ }
356
+ } catch (error) {
357
+ if (error.code === "ENOENT") {
358
+ break;
359
+ }
360
+ throw error;
361
+ }
362
+ }
363
+ }
364
+
365
+ async function hashFile(filePath) {
366
+ const content = await fs.readFile(filePath);
367
+ return crypto.createHash("sha256").update(content).digest("hex");
368
+ }
369
+
370
+ module.exports = {
371
+ CONTROL_DIR,
372
+ MANIFEST_PATH,
373
+ adapterListFromMode,
374
+ applyPreparedUpdate,
375
+ createManifest,
376
+ prepareUpdate,
377
+ readManifest,
378
+ writeInstallManifest
379
+ };
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@jakkrichm/create-nexus-devflow",
3
+ "version": "2.0.0",
4
+ "description": "Install or update the agent-ready DevFlow 2.0 workflow layer into a scaffolded or existing project.",
5
+ "license": "MIT",
6
+ "author": "Jakkrich",
7
+ "homepage": "https://github.com/Jakkrich/nexus-devflow#readme",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/Jakkrich/nexus-devflow.git",
11
+ "directory": "packages/create-nexus-devflow"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/Jakkrich/nexus-devflow/issues"
15
+ },
16
+ "keywords": [
17
+ "devflow",
18
+ "nexus-devflow",
19
+ "ai",
20
+ "ai-coding",
21
+ "antigravity",
22
+ "codex",
23
+ "claude-code",
24
+ "agent",
25
+ "workflow",
26
+ "scaffold"
27
+ ],
28
+ "bin": {
29
+ "create-nexus-devflow": "bin/create-nexus-devflow.js",
30
+ "nexus-devflow": "bin/create-nexus-devflow.js"
31
+ },
32
+ "scripts": {
33
+ "test": "node --test",
34
+ "check:pack": "npm pack --dry-run",
35
+ "prepare-template": "node scripts/prepare-template.js",
36
+ "prepack": "node scripts/prepare-template.js",
37
+ "postpack": "node scripts/clean-template.js"
38
+ },
39
+ "files": [
40
+ "bin/",
41
+ "lib/",
42
+ "template/",
43
+ "README.md",
44
+ "LICENSE",
45
+ "package.json"
46
+ ],
47
+ "publishConfig": {
48
+ "access": "public"
49
+ },
50
+ "engines": {
51
+ "node": ">=18"
52
+ }
53
+ }
@@ -0,0 +1,170 @@
1
+ ---name: 00-discover
2
+
3
+ description: Discover stage in DevFlow 2.0 - explore a request, route supporting inquiry, and decide whether delivery work should begin without allocating a running ID.
4
+ argument-hint: "{title, request, or discovery-id}"
5
+ ---
6
+
7
+ # Phase 00: Discover
8
+
9
+ $ARGUMENTS
10
+
11
+ Explore a request before delivery commitment. Create or resume a Discovery ID, choose only the supporting route that the uncertainty requires, and finish with a visible `Proceed`, `Defer`, or `Reject` decision. Do not create a Running ID in this stage.
12
+
13
+ ## Usage
14
+
15
+ ```text
16
+ /00-Discover {title or request}
17
+ /00-Discover {discovery-id}
18
+ ```
19
+
20
+ Use this when:
21
+
22
+ - a new request needs discussion before the team commits to delivery
23
+ - the best route may be `Brainstorm`, `PRD`, `Research`, or `Debug`
24
+ - supporting findings need to be synthesized into a go/no-go decision
25
+
26
+ ## Markdown-First Contract
27
+
28
+ Write the primary discovery artifact to:
29
+
30
+ ```text
31
+ devflow/discoveries/{DISCOVERY_ID}-{slug}/00-discover.md
32
+ ```
33
+
34
+ using:
35
+
36
+ ```text
37
+ .agent/resources/schemas/discover.template.md
38
+ ```
39
+
40
+ Before writing `00-discover.md`, read `artifact_language` from `discover.template.md` and produce the artifact in that language.
41
+
42
+ A Discovery ID uses a separate namespace such as `DISC-YYYYMMDD-NNN`. It is not a Running ID and must not reserve a numeric delivery run.
43
+
44
+ ## Required Section Content
45
+
46
+ Before completing any generated artifact:
47
+
48
+ - preserve every heading required by the selected template
49
+ - write concrete information under every heading
50
+ - when no information exists or the section does not apply, write exactly `-`
51
+ - never leave a heading immediately followed by another heading with no body content
52
+ - remove template placeholders from the final artifact
53
+ - do not invent facts merely to avoid using `-`
54
+ - re-read the saved artifact and verify every heading satisfies this rule
55
+
56
+ ## Process
57
+
58
+ ### Loop Contract
59
+
60
+ Run discovery as a decision-and-routing loop, not as task initialization.
61
+
62
+ - **Intent**: understand the request, select proportionate supporting inquiry, and decide whether the idea should enter delivery definition.
63
+ - **Context**: read the request, the discovery artifact when resuming, companion outputs, project context, constraints, and available evidence.
64
+ - **Action**: restate the problem, identify the decision-blocking uncertainty, select `Brainstorm`, `PRD`, `Research`, `Debug`, or direct decision, then synthesize returned findings.
65
+ - **Observation**: use concrete evidence such as option tradeoffs, product framing, research results, root cause, stakeholder constraints, open questions, and visible risk.
66
+ - **Adjustment**: invoke only the companion route needed to resolve the current uncertainty; every companion invoked by Discover must return to this Discovery ID for synthesis.
67
+ - **Stop Condition**: stop when the selected route and evidence are recorded, open questions are visible, and the decision is `Proceed`, `Defer`, or `Reject`.
68
+ - **Handoff**: only an approved `Proceed` discovery may hand off to `/10-Define {discovery_id}`. `Defer` and `Reject` end without allocating a Running ID.
69
+
70
+ ### 1. Create Or Resume The Discovery
71
+
72
+ - inspect `devflow/discoveries/`
73
+ - create a collision-free Discovery ID or resume the one supplied
74
+ - generate a stable slug
75
+ - do not inspect or increment numeric Running IDs during this stage
76
+
77
+ ### 2. Ground The Request
78
+
79
+ - restate the request in plain language
80
+ - identify the affected users, stakeholders, or systems
81
+ - capture known constraints and decision-blocking unknowns
82
+ - distinguish an idea worth exploring from delivery work already approved elsewhere
83
+
84
+ ### 3. Select The Supporting Route
85
+
86
+ Choose proportionally:
87
+
88
+ - `Brainstorm` when several viable directions need comparison
89
+ - `PRD` when user value, product outcomes, MVP boundaries, or success measures need framing
90
+ - `Research` when facts, codebase evidence, feasibility, or external constraints are missing
91
+ - `Debug` when the request begins with a failure and root cause is unknown
92
+ - direct decision when the request and evidence are already clear
93
+
94
+ Routes are not mutually exclusive, but do not stack them by default. Record why each selected route is necessary. Pass the Discovery ID to the companion and require its output to link back to the discovery.
95
+
96
+ ### 4. Synthesize Returned Findings
97
+
98
+ After each companion route:
99
+
100
+ - update `00-discover.md` with the durable findings and source path
101
+ - reassess whether another route is materially necessary
102
+ - return to the Discover decision rather than jumping directly to `/10-Define`
103
+
104
+ ### 5. Decide
105
+
106
+ Set one decision:
107
+
108
+ - `Proceed`: enough value and evidence exist to define delivery work
109
+ - `Defer`: the idea remains relevant but timing, evidence, or ownership is not ready
110
+ - `Reject`: the idea should not proceed under the current framing
111
+
112
+ Candidate delivery slices may be suggested, but they remain provisional and unnumbered until `/10-Define`.
113
+
114
+ ### 6. Write `00-discover.md`
115
+
116
+ - preserve the template headings
117
+ - follow the configured `artifact_language`
118
+ - replace placeholders with concrete context
119
+ - record selected routes, returned findings, open questions, decision, and rationale
120
+ - keep `related_runs` empty until `/10-Define` materializes approved slices
121
+
122
+ ### 7. Manual Review Gate
123
+
124
+ Before `/10-Define`:
125
+
126
+ - confirm the selected route and evidence are sufficient
127
+ - confirm the decision is `Proceed`
128
+ - set `Approval Status` to `Approved`
129
+
130
+ Do not allocate Running IDs when the decision or approval is pending.
131
+
132
+ ## Output
133
+
134
+ Report:
135
+
136
+ - Discovery ID and artifact path
137
+ - request and problem summary
138
+ - selected support route and why
139
+ - important findings and open questions
140
+ - `Proceed`, `Defer`, or `Reject` decision
141
+ - recommended next step, including `/10-Define {discovery_id}` only when Proceed is approved
142
+
143
+ ## Relationship To DevFlow 2.0
144
+
145
+ - Classification: Mainline discovery stage
146
+ - Previous state: request intake
147
+ - Next state: `/10-Define {discovery_id}` only after approved Proceed
148
+ - Common companion routes: `Brainstorm`, `PRD`, `Research`, `Debug`
149
+ - Running ID lifecycle: begins in `/10-Define`, not in Discover
150
+
151
+ ## Sources
152
+
153
+ - `AGENTS.md`
154
+ - `docs/workspace-artifacts.md`
155
+ - `.agent/resources/schemas/discover.template.md`
156
+
157
+ ## Next Workflow Recommendation
158
+
159
+ - **Primary**: the selected companion route, or `/10-Define {discovery_id}` after approved Proceed
160
+ - **Alternatives**:
161
+ - `Brainstorm {discovery_id}` for unresolved options
162
+ - `PRD {discovery_id}` for product framing
163
+ - `Research {discovery_id}` for missing evidence
164
+ - `Debug {discovery_id}` for unknown root cause
165
+ - no next command when the decision is Defer or Reject
166
+
167
+ ## Nexus Event
168
+
169
+ - Use `grill-with-docs` when focused clarification could change the decision or selected route.
170
+ - Use `prototype` when runnable evidence is the fastest way to settle feasibility.