@guanlin4924/devflow-pi 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/README.md +164 -0
  2. package/docs/OMP-NATIVE-ARCHITECTURE.md +104 -0
  3. package/package.json +40 -0
  4. package/plugins/devflow-core/extensions/devflow-core.ts +1642 -0
  5. package/plugins/devflow-core/package.json +14 -0
  6. package/plugins/devflow-core/runtime/hooks/context_sync_gate.py +174 -0
  7. package/plugins/devflow-core/runtime/hooks/hook_common.py +696 -0
  8. package/plugins/devflow-core/runtime/hooks/index_gate.py +63 -0
  9. package/plugins/devflow-core/runtime/hooks/injection_code_specification.py +7 -0
  10. package/plugins/devflow-core/runtime/hooks/post_tool.py +44 -0
  11. package/plugins/devflow-core/runtime/hooks/start.py +288 -0
  12. package/plugins/devflow-core/skills/workflow-orchestrator/SKILL.md +265 -0
  13. package/plugins/devflow-core/skills/workflow-orchestrator/agents/openai.yaml +4 -0
  14. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/advance_state.rb +520 -0
  15. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/control_io.rb +42 -0
  16. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/init_state.rb +138 -0
  17. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/init_workflow.rb +121 -0
  18. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/inspect_state.rb +553 -0
  19. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/manage_lessons.rb +219 -0
  20. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/sync_artifacts.rb +168 -0
  21. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/update_triage_route.rb +110 -0
  22. package/plugins/devflow-core/skills/workflow-orchestrator/scripts/validate_state.rb +565 -0
  23. package/plugins/devflow-core/skills/workflow-orchestrator/templates/feature-development.yaml +783 -0
  24. package/plugins/devflow-core/skills/workflow-orchestrator/templates/uat-remediation.yaml +143 -0
  25. package/plugins/devflow-core/skills/workflow-orchestrator/templates/workflows-README.md +10 -0
  26. package/plugins/devflow-core/skills/workflow-pipeline/SKILL.md +117 -0
  27. package/plugins/devflow-core/skills/workflow-pipeline/references/pipeline-flow.md +167 -0
  28. package/plugins/devflow-core/skills/workflow-pipeline/references/slice-safety-guide.md +125 -0
  29. package/plugins/devflow-core/skills/workflow-project-context/SKILL.md +819 -0
  30. package/plugins/devflow-core/skills/workflow-project-context/assets/agents-md-template.md +25 -0
  31. package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-backend-spec-template.md +68 -0
  32. package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-frontend-spec-template.md +64 -0
  33. package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-navigation-template.md +168 -0
  34. package/plugins/devflow-core/skills/workflow-project-context/assets/context-domain-index-template.md +43 -0
  35. package/plugins/devflow-core/skills/workflow-project-context/assets/context-spec-index-template.md +45 -0
  36. package/plugins/devflow-core/skills/workflow-project-context/assets/execution-contract-template.md +57 -0
  37. package/plugins/devflow-core/skills/workflow-project-context/assets/navigation-index-template.md +40 -0
  38. package/plugins/devflow-core/skills/workflow-project-context/assets/project-initialization-template.md +109 -0
  39. package/plugins/devflow-core/skills/workflow-project-context/assets/rules-index-template.md +80 -0
  40. package/plugins/devflow-core/skills/workflow-project-context/assets/run-manifest-template.json +40 -0
  41. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/directory-structure.md +46 -0
  42. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/engine.md +46 -0
  43. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/errors.md +46 -0
  44. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/locator.md +46 -0
  45. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/model.md +46 -0
  46. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/repository.md +46 -0
  47. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/router.md +46 -0
  48. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/scheduler.md +46 -0
  49. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/schema.md +46 -0
  50. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/service.md +46 -0
  51. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/backend/testing.md +46 -0
  52. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/frontend/api-client.md +46 -0
  53. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/frontend/case-editor.md +46 -0
  54. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/frontend/components.md +46 -0
  55. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/frontend/directory-structure.md +46 -0
  56. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/frontend/forms.md +46 -0
  57. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/frontend/routing.md +46 -0
  58. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/frontend/state.md +46 -0
  59. package/plugins/devflow-core/skills/workflow-project-context/assets/spec-templates/frontend/testing.md +46 -0
  60. package/plugins/devflow-core/skills/workflow-project-context/assets/stack-spec-template.md +106 -0
  61. package/plugins/devflow-core/skills/workflow-project-context/assets/state-template.md +77 -0
  62. package/plugins/devflow-core/skills/workflow-project-context/assets/toolchain-template.md +37 -0
  63. package/plugins/devflow-core/skills/workflow-project-context/references/navigation-guide.md +262 -0
  64. package/plugins/devflow-core/skills/workflow-project-context/scripts/validate_initialization.py +545 -0
  65. package/plugins/devflow-design/agents/contract-auditor.md +18 -0
  66. package/plugins/devflow-design/extensions/devflow-design.ts +47 -0
  67. package/plugins/devflow-design/package.json +14 -0
  68. package/plugins/devflow-design/skills/workflow-api-call-guide/SKILL.md +142 -0
  69. package/plugins/devflow-design/skills/workflow-api-contract/SKILL.md +150 -0
  70. package/plugins/devflow-design/skills/workflow-api-supplement/SKILL.md +121 -0
  71. package/plugins/devflow-design/skills/workflow-backend-tech-spec/SKILL.md +257 -0
  72. package/plugins/devflow-design/skills/workflow-backend-tech-spec/assets/adr-template.md +57 -0
  73. package/plugins/devflow-design/skills/workflow-backend-tech-spec/assets/backend-spec-template.md +205 -0
  74. package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/affected-module-exploration.md +59 -0
  75. package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/backend-conventions.md +30 -0
  76. package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/code-explore-guide.md +40 -0
  77. package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/project-rule-contract.md +66 -0
  78. package/plugins/devflow-design/skills/workflow-design-rule-pack/SKILL.md +91 -0
  79. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/index.md +71 -0
  80. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/accessibility.md +31 -0
  81. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/component-library.md +31 -0
  82. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/design-systems.md +47 -0
  83. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/responsive-grid.md +29 -0
  84. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/stack-guidelines.md +31 -0
  85. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/ux-patterns.md +40 -0
  86. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tokens/project-tokens.md +19 -0
  87. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/SKILL.md +377 -0
  88. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/charts.csv +26 -0
  89. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/colors.csv +97 -0
  90. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/icons.csv +101 -0
  91. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/landing.csv +31 -0
  92. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/products.csv +97 -0
  93. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/react-performance.csv +45 -0
  94. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  95. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  96. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  97. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  98. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  99. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  100. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  101. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  102. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/react.csv +54 -0
  103. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  104. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  105. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  106. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  107. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/styles.csv +68 -0
  108. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/typography.csv +58 -0
  109. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  110. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  111. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/data/web-interface.csv +31 -0
  112. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/scripts/core.py +253 -0
  113. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/scripts/design_system.py +1067 -0
  114. package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/scripts/search.py +114 -0
  115. package/plugins/devflow-design/skills/workflow-design-rule-pack/scripts/install.py +67 -0
  116. package/plugins/devflow-design/skills/workflow-feature-breakdown/SKILL.md +370 -0
  117. package/plugins/devflow-design/skills/workflow-feature-breakdown/assets/admin-system-template.md +57 -0
  118. package/plugins/devflow-design/skills/workflow-feature-breakdown/assets/api-service-template.md +42 -0
  119. package/plugins/devflow-design/skills/workflow-feature-breakdown/assets/c-end-system-template.md +25 -0
  120. package/plugins/devflow-design/skills/workflow-feature-breakdown/assets/output-template.md +139 -0
  121. package/plugins/devflow-design/skills/workflow-feature-breakdown/references/bug-rules.md +12 -0
  122. package/plugins/devflow-design/skills/workflow-feature-breakdown/references/exception-checklist.md +31 -0
  123. package/plugins/devflow-design/skills/workflow-feature-breakdown/references/trace-integrity-guide.md +153 -0
  124. package/plugins/devflow-design/skills/workflow-feature-breakdown/references/writing-guide.md +92 -0
  125. package/plugins/devflow-design/skills/workflow-frontend-tech-spec/SKILL.md +223 -0
  126. package/plugins/devflow-design/skills/workflow-frontend-tech-spec/assets/frontend-spec-template.md +204 -0
  127. package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/affected-module-exploration.md +58 -0
  128. package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/component-patterns.md +42 -0
  129. package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/frontend-conventions.md +28 -0
  130. package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/frontend-stack-slots/common-web.md +53 -0
  131. package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/frontend-stack-slots/next.md +40 -0
  132. package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/frontend-stack-slots/react.md +41 -0
  133. package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/frontend-stack-slots/vue.md +41 -0
  134. package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/project-rule-contract.md +95 -0
  135. package/plugins/devflow-design/skills/workflow-integration-verify/SKILL.md +172 -0
  136. package/plugins/devflow-design/skills/workflow-ui-spec/SKILL.md +302 -0
  137. package/plugins/devflow-design/skills/workflow-ui-spec/assets/ui-spec-template.md +244 -0
  138. package/plugins/devflow-design/skills/workflow-ui-spec/references/affected-module-exploration.md +55 -0
  139. package/plugins/devflow-implementation/agents/implementation-worker.md +20 -0
  140. package/plugins/devflow-implementation/package.json +6 -0
  141. package/plugins/devflow-implementation/skills/workflow-bug-fix/SKILL.md +124 -0
  142. package/plugins/devflow-implementation/skills/workflow-bug-fix/references/INDEX.md +13 -0
  143. package/plugins/devflow-implementation/skills/workflow-bug-fix/references/adversarial-review.md +35 -0
  144. package/plugins/devflow-implementation/skills/workflow-bug-fix/references/first-principles.md +26 -0
  145. package/plugins/devflow-implementation/skills/workflow-bug-fix/references/lesson-format.md +28 -0
  146. package/plugins/devflow-implementation/skills/workflow-bug-fix/references/root-cause-ladder.md +51 -0
  147. package/plugins/devflow-implementation/skills/workflow-bug-fix/references/seam-analysis.md +30 -0
  148. package/plugins/devflow-implementation/skills/workflow-change-plan/SKILL.md +160 -0
  149. package/plugins/devflow-implementation/skills/workflow-change-plan/references/code-conventions.md +33 -0
  150. package/plugins/devflow-implementation/skills/workflow-change-plan/references/ddl-guidelines.md +60 -0
  151. package/plugins/devflow-implementation/skills/workflow-change-plan/references/output-template.md +217 -0
  152. package/plugins/devflow-implementation/skills/workflow-change-plan/references/project-rule-contract.md +55 -0
  153. package/plugins/devflow-implementation/skills/workflow-execute-phase/SKILL.md +271 -0
  154. package/plugins/devflow-implementation/skills/workflow-execute-phase/references/execute-phase.md +1251 -0
  155. package/plugins/devflow-implementation/skills/workflow-execute-phase/references/ui-brand.md +160 -0
  156. package/plugins/devflow-intel/agents/project-scout.md +27 -0
  157. package/plugins/devflow-intel/extensions/devflow-intel.ts +104 -0
  158. package/plugins/devflow-intel/package.json +14 -0
  159. package/plugins/devflow-intel/skills/code-index-query/SKILL.md +37 -0
  160. package/plugins/devflow-intel/skills/code-index-query/references/query-patterns.md +27 -0
  161. package/plugins/devflow-intel/skills/workflow-code-index/SKILL.md +68 -0
  162. package/plugins/devflow-intel/skills/workflow-code-index/references/adapter-contract.md +38 -0
  163. package/plugins/devflow-intel/skills/workflow-code-index/references/audit-checklist.md +10 -0
  164. package/plugins/devflow-intel/skills/workflow-code-index/references/confidence-rules.md +43 -0
  165. package/plugins/devflow-intel/skills/workflow-code-index/references/data-model.md +74 -0
  166. package/plugins/devflow-intel/skills/workflow-code-index/references/discovery.md +24 -0
  167. package/plugins/devflow-intel/skills/workflow-code-index/references/query-guide.md +20 -0
  168. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/__init__.py +1 -0
  169. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/base.py +30 -0
  170. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/generic_text.py +287 -0
  171. package/plugins/devflow-intel/skills/workflow-code-index/scripts/adapters/registry.py +17 -0
  172. package/plugins/devflow-intel/skills/workflow-code-index/scripts/code_index.py +437 -0
  173. package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/__init__.py +1 -0
  174. package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/discovery.py +139 -0
  175. package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/hashing.py +11 -0
  176. package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/scanner.py +115 -0
  177. package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/schema.py +123 -0
  178. package/plugins/devflow-intel/skills/workflow-code-index/scripts/validators/__init__.py +1 -0
  179. package/plugins/devflow-intel/skills/workflow-code-index/scripts/validators/project_binding_check.py +66 -0
  180. package/plugins/devflow-intel/skills/workflow-code-index/scripts/validators/relation_check.py +36 -0
  181. package/plugins/devflow-intel/skills/workflow-code-index/scripts/validators/schema_validate.py +11 -0
  182. package/plugins/devflow-intel/skills/workflow-code-index/scripts/validators/stale_check.py +42 -0
  183. package/plugins/devflow-intel/skills/workflow-code-index/scripts/writers/__init__.py +1 -0
  184. package/plugins/devflow-intel/skills/workflow-code-index/scripts/writers/jsonl_writer.py +25 -0
  185. package/plugins/devflow-intel/skills/workflow-code-index/scripts/writers/markdown_writer.py +106 -0
  186. package/plugins/devflow-intel/skills/workflow-code-index/scripts/writers/sqlite_writer.py +143 -0
  187. package/plugins/devflow-intel/skills/workflow-context-sync/SKILL.md +381 -0
  188. package/plugins/devflow-intel/skills/workflow-context-sync/agents/openai.yaml +4 -0
  189. package/plugins/devflow-intel/skills/workflow-context-sync/scripts/context_sync_cursor.py +241 -0
  190. package/plugins/devflow-intel/skills/workflow-update-navigation/SKILL.md +186 -0
  191. package/plugins/devflow-intel/skills/workflow-update-navigation/references/incremental-update-guide.md +47 -0
  192. package/plugins/devflow-quality/agents/code-reviewer.md +18 -0
  193. package/plugins/devflow-quality/agents/verification-runner.md +21 -0
  194. package/plugins/devflow-quality/extensions/devflow-quality.ts +59 -0
  195. package/plugins/devflow-quality/package.json +14 -0
  196. package/plugins/devflow-quality/skills/code-review/SKILL.md +288 -0
  197. package/plugins/devflow-quality/skills/code-review/references/cross-layer-checklist.md +70 -0
  198. package/plugins/devflow-quality/skills/code-review/references/dao-checklist.md +70 -0
  199. package/plugins/devflow-quality/skills/code-review/references/handler-checklist.md +48 -0
  200. package/plugins/devflow-quality/skills/code-review/references/repository-checklist.md +44 -0
  201. package/plugins/devflow-quality/skills/code-review/references/service-checklist.md +57 -0
  202. package/plugins/devflow-quality/skills/code-review/references/spec-checklist.md +34 -0
  203. package/plugins/devflow-quality/skills/code-review/references/vo-checklist.md +26 -0
  204. package/plugins/devflow-quality/skills/workflow-audit-milestone/SKILL.md +31 -0
  205. package/plugins/devflow-quality/skills/workflow-audit-milestone/references/audit-milestone.md +328 -0
  206. package/plugins/devflow-quality/skills/workflow-complete-milestone/SKILL.md +132 -0
  207. package/plugins/devflow-quality/skills/workflow-complete-milestone/assets/milestone-archive.md +123 -0
  208. package/plugins/devflow-quality/skills/workflow-complete-milestone/references/complete-milestone.md +775 -0
  209. package/plugins/devflow-quality/skills/workflow-complete-milestone/references/milestone-archive.md +123 -0
  210. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/SKILL.md +126 -0
  211. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/api-mainflow-rules.md +27 -0
  212. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/codebase-discovery.md +54 -0
  213. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/intermediate-format.md +244 -0
  214. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/mainflow-selection.md +36 -0
  215. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/project-dsl-contract.md +190 -0
  216. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/ui-mainflow-rules.md +110 -0
  217. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/compile_dsl.py +583 -0
  218. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/discover_codebases.py +199 -0
  219. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/normalize_case_payloads.py +177 -0
  220. package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/validate_case_payloads.py +370 -0
  221. package/plugins/devflow-quality/skills/workflow-verify-work/SKILL.md +106 -0
  222. package/plugins/devflow-quality/skills/workflow-verify-work/assets/UAT.md +265 -0
  223. package/plugins/devflow-quality/skills/workflow-verify-work/references/verify-work.md +759 -0
  224. package/plugins/devflow-requirements/agents/requirements-auditor.md +20 -0
  225. package/plugins/devflow-requirements/package.json +6 -0
  226. package/plugins/devflow-requirements/skills/requirement-feasibility-review/SKILL.md +219 -0
  227. package/plugins/devflow-requirements/skills/requirement-feasibility-review/agents/openai.yaml +4 -0
  228. package/plugins/devflow-requirements/skills/requirement-feasibility-review/references/review-method.md +257 -0
  229. package/plugins/devflow-requirements/skills/requirement-feasibility-review/references/review-template.md +80 -0
  230. package/plugins/devflow-requirements/skills/workflow-demand-clarify/SKILL.md +325 -0
  231. package/plugins/devflow-requirements/skills/workflow-domain-modeling/SKILL.md +163 -0
  232. package/plugins/devflow-requirements/skills/workflow-requirement-baseline/SKILL.md +748 -0
  233. package/plugins/devflow-requirements/skills/workflow-requirement-baseline/assets/baseline-template.md +281 -0
  234. package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/antipatterns.md +69 -0
  235. package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/challenge-review-guide.md +158 -0
  236. package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/decomposition-guide.md +115 -0
  237. package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/project-context-guide.md +119 -0
  238. package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/questioning.md +76 -0
  239. package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/requirement-review-checklist.md +115 -0
  240. package/plugins/devflow-requirements/skills/workflow-requirement-triage/SKILL.md +204 -0
  241. package/plugins/devflow-requirements/skills/workflow-wayfinder/SKILL.md +183 -0
  242. package/src/cli.ts +76 -0
  243. package/src/constants.ts +15 -0
  244. package/src/doctor.ts +66 -0
  245. package/src/paths.ts +37 -0
  246. package/src/platform-extension.ts +46 -0
  247. package/src/project-context.ts +165 -0
  248. package/src/runtime.ts +167 -0
  249. package/src/usage-stats.ts +101 -0
  250. package/templates/commands/start.md +58 -0
  251. package/templates/omp/AGENTS.md +36 -0
  252. package/templates/omp/config.yml +112 -0
  253. package/templates/omp/hook-config.json +18 -0
  254. package/templates/omp/index-policy.json +57 -0
@@ -0,0 +1,30 @@
1
+ from dataclasses import dataclass, field
2
+ from typing import Dict, List
3
+
4
+
5
+ @dataclass
6
+ class ParseResult:
7
+ symbols: List[Dict] = field(default_factory=list)
8
+ relations: List[Dict] = field(default_factory=list)
9
+ diagnostics: List[Dict] = field(default_factory=list)
10
+
11
+
12
+ class Adapter:
13
+ name = "adapter"
14
+
15
+ def detect(self, codebase, files, manifests) -> int:
16
+ return 0
17
+
18
+ def parse_file(self, codebase, file_record, text) -> ParseResult:
19
+ return ParseResult()
20
+
21
+ def resolve_relations(self, codebase, symbols, relations):
22
+ return relations
23
+
24
+ def version(self) -> str:
25
+ return "0"
26
+
27
+ @property
28
+ def parser_id(self) -> str:
29
+ return f"{self.name}@{self.version()}"
30
+
@@ -0,0 +1,287 @@
1
+ import re
2
+ from pathlib import Path
3
+ from typing import Dict, List, Tuple
4
+
5
+ from adapters.base import Adapter, ParseResult
6
+ from core.schema import short_hash, stable_key
7
+
8
+
9
+ LANGUAGE_BY_EXTENSION = {
10
+ ".py": "python",
11
+ ".js": "javascript",
12
+ ".jsx": "javascript",
13
+ ".ts": "typescript",
14
+ ".tsx": "typescript",
15
+ ".vue": "vue",
16
+ ".go": "go",
17
+ ".rs": "rust",
18
+ ".php": "php",
19
+ ".java": "java",
20
+ ".kt": "kotlin",
21
+ ".kts": "kotlin",
22
+ ".dart": "dart",
23
+ ".rb": "ruby",
24
+ ".swift": "swift",
25
+ ".sql": "sql",
26
+ ".sh": "shell",
27
+ ".md": "markdown",
28
+ ".json": "json",
29
+ ".yaml": "yaml",
30
+ ".yml": "yaml",
31
+ ".toml": "toml",
32
+ ".xml": "xml",
33
+ }
34
+
35
+
36
+ class GenericTextAdapter(Adapter):
37
+ name = "generic-text"
38
+
39
+ def detect(self, codebase, files, manifests) -> int:
40
+ return 1
41
+
42
+ def version(self) -> str:
43
+ return "1"
44
+
45
+ def parse_file(self, codebase, file_record, text) -> ParseResult:
46
+ path = file_record["path"]
47
+ language = file_record["language"]
48
+ content_hash = file_record["content_hash"]
49
+ file_symbol = _symbol(
50
+ codebase.name,
51
+ language,
52
+ "file",
53
+ Path(path).name,
54
+ path,
55
+ 1,
56
+ max(1, len(text.splitlines())),
57
+ content_hash,
58
+ qualified_name=path,
59
+ parser=self.parser_id,
60
+ )
61
+ symbols = [file_symbol]
62
+ relations: List[Dict] = []
63
+ diagnostics: List[Dict] = []
64
+
65
+ extracted = self._extract_symbols(codebase.name, language, path, text, content_hash)
66
+ symbols.extend(extracted)
67
+ for symbol in extracted:
68
+ relations.append(
69
+ _relation(
70
+ file_symbol["id"],
71
+ "contains",
72
+ path,
73
+ symbol["line_start"],
74
+ self.parser_id,
75
+ confidence="exact",
76
+ to_id=symbol["id"],
77
+ )
78
+ )
79
+
80
+ line_ranges = _line_ranges([file_symbol] + extracted)
81
+ for lineno, line in enumerate(text.splitlines(), start=1):
82
+ owner = _owner_for_line(line_ranges, lineno, file_symbol["id"])
83
+ for target in _extract_imports(line, language):
84
+ relations.append(
85
+ _relation(
86
+ owner,
87
+ "imports",
88
+ path,
89
+ lineno,
90
+ self.parser_id,
91
+ confidence="heuristic",
92
+ to_external=f"import:{target}",
93
+ )
94
+ )
95
+ for target in _extract_calls(line):
96
+ relations.append(
97
+ _relation(
98
+ owner,
99
+ "calls",
100
+ path,
101
+ lineno,
102
+ self.parser_id,
103
+ confidence="heuristic",
104
+ to_external=f"call:{target}",
105
+ )
106
+ )
107
+ for relation_type, external in _extract_resources(line):
108
+ relations.append(
109
+ _relation(
110
+ owner,
111
+ relation_type,
112
+ path,
113
+ lineno,
114
+ self.parser_id,
115
+ confidence="heuristic",
116
+ to_external=external,
117
+ )
118
+ )
119
+
120
+ if not extracted and language not in {"json", "yaml", "toml", "markdown", "xml"}:
121
+ diagnostics.append(
122
+ {
123
+ "codebase": codebase.name,
124
+ "path": path,
125
+ "line": 1,
126
+ "severity": "info",
127
+ "kind": "low_confidence",
128
+ "message": "generic-text adapter found no structural symbols",
129
+ "parser": self.parser_id,
130
+ }
131
+ )
132
+
133
+ return ParseResult(symbols=symbols, relations=relations, diagnostics=diagnostics)
134
+
135
+ def _extract_symbols(self, codebase: str, language: str, path: str, text: str, content_hash: str) -> List[Dict]:
136
+ symbols: List[Dict] = []
137
+ seen: Dict[str, int] = {}
138
+ lines = text.splitlines()
139
+ for lineno, line in enumerate(lines, start=1):
140
+ matches = _symbol_matches(line, language)
141
+ for kind, name, signature in matches:
142
+ base = f"{path}:{kind}:{name}:{signature}"
143
+ seen[base] = seen.get(base, 0) + 1
144
+ suffix = "" if seen[base] == 1 else f":{seen[base]}"
145
+ symbols.append(
146
+ _symbol(
147
+ codebase,
148
+ language,
149
+ kind,
150
+ name,
151
+ path,
152
+ lineno,
153
+ lineno,
154
+ content_hash,
155
+ qualified_name=f"{path}::{name}{suffix}",
156
+ signature=signature.strip()[:500],
157
+ parser=self.parser_id,
158
+ )
159
+ )
160
+ for index, symbol in enumerate(symbols):
161
+ next_start = symbols[index + 1]["line_start"] if index + 1 < len(symbols) else len(lines) + 1
162
+ symbol["line_end"] = max(symbol["line_start"], next_start - 1)
163
+ return symbols
164
+
165
+
166
+ def language_for_path(path: Path) -> str:
167
+ return LANGUAGE_BY_EXTENSION.get(path.suffix.lower(), path.suffix.lower().lstrip(".") or "text")
168
+
169
+
170
+ def _symbol_matches(line: str, language: str) -> List[Tuple[str, str, str]]:
171
+ stripped = line.strip()
172
+ patterns = [
173
+ ("class", r"\bclass\s+([A-Za-z_][A-Za-z0-9_]*)"),
174
+ ("interface", r"\binterface\s+([A-Za-z_][A-Za-z0-9_]*)"),
175
+ ("trait", r"\btrait\s+([A-Za-z_][A-Za-z0-9_]*)"),
176
+ ("struct", r"\bstruct\s+([A-Za-z_][A-Za-z0-9_]*)"),
177
+ ("function", r"\bfunction\s+([A-Za-z_][A-Za-z0-9_]*)\s*\("),
178
+ ("function", r"\bdef\s+([A-Za-z_][A-Za-z0-9_]*)\s*\("),
179
+ ("function", r"\bfunc\s+(?:\([^)]+\)\s*)?([A-Za-z_][A-Za-z0-9_]*)\s*\("),
180
+ ("function", r"\bfn\s+([A-Za-z_][A-Za-z0-9_]*)\s*\("),
181
+ ("function", r"\b(?:const|let|var)\s+([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(?:async\s*)?\([^)]*\)\s*=>"),
182
+ ("function", r"\b(?:export\s+)?(?:async\s+)?function\s+([A-Za-z_][A-Za-z0-9_]*)\s*\("),
183
+ ("method", r"^\s*(?:public|protected|private|static|async|override|final|\s)+\s*([A-Za-z_][A-Za-z0-9_]*)\s*\([^;]*\)\s*(?:\{|=>)"),
184
+ ]
185
+ result: List[Tuple[str, str, str]] = []
186
+ for kind, pattern in patterns:
187
+ match = re.search(pattern, stripped)
188
+ if match:
189
+ name = match.group(1)
190
+ if name in {"if", "for", "while", "switch", "catch", "return"}:
191
+ continue
192
+ adjusted_kind = "test" if name.lower().startswith("test") else kind
193
+ result.append((adjusted_kind, name, stripped))
194
+ return result
195
+
196
+
197
+ def _extract_imports(line: str, language: str) -> List[str]:
198
+ patterns = [
199
+ r"^\s*import\s+(?:.+?\s+from\s+)?['\"]([^'\"]+)['\"]",
200
+ r"^\s*from\s+([A-Za-z0-9_.]+)\s+import\s+",
201
+ r"^\s*import\s+([A-Za-z0-9_./-]+)",
202
+ r"^\s*use\s+([^;]+);",
203
+ r"^\s*require(?:_once)?\s*\(?['\"]([^'\"]+)['\"]",
204
+ r"^\s*include(?:_once)?\s*\(?['\"]([^'\"]+)['\"]",
205
+ r"^\s*package\s+([A-Za-z0-9_.]+)",
206
+ ]
207
+ result = []
208
+ for pattern in patterns:
209
+ match = re.search(pattern, line)
210
+ if match:
211
+ result.append(match.group(1).strip())
212
+ return result
213
+
214
+
215
+ def _extract_calls(line: str) -> List[str]:
216
+ if line.strip().startswith(("#", "//", "*", "/*")):
217
+ return []
218
+ result = []
219
+ for match in re.finditer(r"\b([A-Za-z_][A-Za-z0-9_]*)\s*\(", line):
220
+ name = match.group(1)
221
+ if name in {"if", "for", "while", "switch", "catch", "function", "return", "sizeof"}:
222
+ continue
223
+ result.append(name)
224
+ return result[:20]
225
+
226
+
227
+ def _extract_resources(line: str) -> List[Tuple[str, str]]:
228
+ lowered = line.lower()
229
+ result: List[Tuple[str, str]] = []
230
+ for pattern in [r"\bfrom\s+[`\"]?([A-Za-z0-9_.-]+)", r"\bjoin\s+[`\"]?([A-Za-z0-9_.-]+)"]:
231
+ for match in re.finditer(pattern, lowered):
232
+ result.append(("reads", f"table:{match.group(1)}"))
233
+ for pattern in [r"\binsert\s+into\s+[`\"]?([A-Za-z0-9_.-]+)", r"\bupdate\s+[`\"]?([A-Za-z0-9_.-]+)", r"\bdelete\s+from\s+[`\"]?([A-Za-z0-9_.-]+)"]:
234
+ for match in re.finditer(pattern, lowered):
235
+ result.append(("writes", f"table:{match.group(1)}"))
236
+ for match in re.finditer(r"\b(?:process\.env\.|env\(|getenv\(|os\.environ(?:\.get)?\(|System\.getenv\()\s*['\"]?([A-Za-z_][A-Za-z0-9_]*)", line):
237
+ result.append(("config_uses", f"env:{match.group(1)}"))
238
+ for match in re.finditer(r"https?://[A-Za-z0-9_./:%?#=&+-]+", line):
239
+ result.append(("calls", f"url:{match.group(0)}"))
240
+ return result[:20]
241
+
242
+
243
+ def _symbol(codebase, language, kind, name, path, line_start, line_end, content_hash, qualified_name="", signature="", parser="", visibility=""):
244
+ qualified = qualified_name or f"{path}::{name}"
245
+ key = stable_key(f"{qualified}:{signature}") if signature else stable_key(qualified)
246
+ return {
247
+ "id": f"{language}:{codebase}:{key}:{short_hash(qualified + signature)}",
248
+ "codebase": codebase,
249
+ "kind": kind,
250
+ "name": name,
251
+ "qualified_name": qualified,
252
+ "container_id": "",
253
+ "path": path,
254
+ "line_start": line_start,
255
+ "line_end": line_end,
256
+ "signature": signature,
257
+ "language": language,
258
+ "content_hash": content_hash,
259
+ "visibility": visibility,
260
+ "metadata": {"parser": parser} if parser else {},
261
+ }
262
+
263
+
264
+ def _relation(from_id, relation_type, path, line, parser, confidence, to_id="", to_external="", metadata=None):
265
+ return {
266
+ "from_id": from_id,
267
+ "relation_type": relation_type,
268
+ "to_id": to_id,
269
+ "to_external": to_external,
270
+ "evidence_path": path,
271
+ "evidence_line": line,
272
+ "confidence": confidence,
273
+ "parser": parser,
274
+ "metadata": metadata or {},
275
+ }
276
+
277
+
278
+ def _line_ranges(symbols: List[Dict]):
279
+ return [(symbol["line_start"], symbol["line_end"], symbol["id"]) for symbol in symbols]
280
+
281
+
282
+ def _owner_for_line(ranges, line, fallback):
283
+ for start, end, symbol_id in ranges:
284
+ if start <= line <= end:
285
+ return symbol_id
286
+ return fallback
287
+
@@ -0,0 +1,17 @@
1
+ from .generic_text import GenericTextAdapter
2
+
3
+
4
+ class AdapterRegistry:
5
+ def __init__(self):
6
+ self.adapters = [GenericTextAdapter()]
7
+
8
+ def adapters_for(self, codebase, files, manifests):
9
+ scored = []
10
+ for adapter in self.adapters:
11
+ score = adapter.detect(codebase, files, manifests)
12
+ if score > 0:
13
+ scored.append((score, adapter))
14
+ if not scored:
15
+ return [GenericTextAdapter()]
16
+ return [adapter for _, adapter in sorted(scored, key=lambda item: item[0], reverse=True)]
17
+