@exelalfanso/puppets-orchestration 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 (345) hide show
  1. package/.agents/architect.md +29 -0
  2. package/.agents/backend.md +33 -0
  3. package/.agents/debugger.md +29 -0
  4. package/.agents/explorer.md +29 -0
  5. package/.agents/frontend.md +33 -0
  6. package/.agents/orchestrator.md +35 -0
  7. package/.agents/reviewer.md +42 -0
  8. package/.agents/tester.md +29 -0
  9. package/.agents/worker-skills.md +24 -0
  10. package/AGENTS.md +33 -0
  11. package/README.md +150 -0
  12. package/bin/puppets.mjs +152 -0
  13. package/docs/README.md +64 -0
  14. package/docs/architecture/decisions/README.md +36 -0
  15. package/docs/architecture/overview.md +41 -0
  16. package/docs/engineering/conventions.md +30 -0
  17. package/docs/engineering/project-orchestration.md +118 -0
  18. package/docs/engineering/testing-strategy.md +41 -0
  19. package/docs/javascript-typescript-stack.md +59 -0
  20. package/docs/product/PRD.md +56 -0
  21. package/docs/requirements/SRS.md +35 -0
  22. package/package.json +20 -0
  23. package/skills/README.md +12 -0
  24. package/skills/be/backend-architect/SKILL.md +333 -0
  25. package/skills/be/backend-development-feature-development/SKILL.md +180 -0
  26. package/skills/be/backend-security-coder/SKILL.md +156 -0
  27. package/skills/be/nodejs-backend-patterns/SKILL.md +35 -0
  28. package/skills/be/nodejs-backend-patterns/resources/implementation-playbook.md +1019 -0
  29. package/skills/fe/frontend-design/LICENSE.txt +177 -0
  30. package/skills/fe/frontend-design/SKILL.md +71 -0
  31. package/skills/fe/web-design-guidelines/SKILL.md +39 -0
  32. package/skills/qa/ai-qa-review/SKILL.md +357 -0
  33. package/skills/qa/ai-qa-review/references/mutation-testing.md +38 -0
  34. package/skills/qa/ai-qa-review/references/smell-examples.md +232 -0
  35. package/skills/qa/ai-qa-review/references/testability-refactors.md +97 -0
  36. package/skills/qa/coverage-analysis/SKILL.md +308 -0
  37. package/skills/qa/coverage-analysis/references/ci-gating.md +132 -0
  38. package/skills/qa/coverage-analysis/references/mutation-testing.md +29 -0
  39. package/skills/qa/coverage-analysis/references/tool-config.md +195 -0
  40. package/skills/qa/qa-project-context/SKILL.md +289 -0
  41. package/skills/qa/qa-project-context/references/examples.md +237 -0
  42. package/skills/qa/release-readiness/SKILL.md +443 -0
  43. package/skills/qa/release-readiness/references/communication-templates.md +38 -0
  44. package/skills/qa/release-readiness/references/rollout-automation.md +47 -0
  45. package/skills/qa/risk-based-testing/SKILL.md +337 -0
  46. package/skills/qa/risk-based-testing/references/examples.md +81 -0
  47. package/skills/react/vercel-composition-patterns/AGENTS.md +946 -0
  48. package/skills/react/vercel-composition-patterns/README.md +60 -0
  49. package/skills/react/vercel-composition-patterns/SKILL.md +89 -0
  50. package/skills/react/vercel-composition-patterns/rules/_sections.md +29 -0
  51. package/skills/react/vercel-composition-patterns/rules/_template.md +24 -0
  52. package/skills/react/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  53. package/skills/react/vercel-composition-patterns/rules/architecture-compound-components.md +112 -0
  54. package/skills/react/vercel-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  55. package/skills/react/vercel-composition-patterns/rules/patterns-explicit-variants.md +100 -0
  56. package/skills/react/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
  57. package/skills/react/vercel-composition-patterns/rules/state-context-interface.md +191 -0
  58. package/skills/react/vercel-composition-patterns/rules/state-decouple-implementation.md +113 -0
  59. package/skills/react/vercel-composition-patterns/rules/state-lift-state.md +125 -0
  60. package/skills/react/vercel-react-best-practices/AGENTS.md +3810 -0
  61. package/skills/react/vercel-react-best-practices/README.md +123 -0
  62. package/skills/react/vercel-react-best-practices/SKILL.md +149 -0
  63. package/skills/react/vercel-react-best-practices/rules/_sections.md +46 -0
  64. package/skills/react/vercel-react-best-practices/rules/_template.md +28 -0
  65. package/skills/react/vercel-react-best-practices/rules/advanced-effect-event-deps.md +56 -0
  66. package/skills/react/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  67. package/skills/react/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  68. package/skills/react/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  69. package/skills/react/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  70. package/skills/react/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
  71. package/skills/react/vercel-react-best-practices/rules/async-defer-await.md +82 -0
  72. package/skills/react/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  73. package/skills/react/vercel-react-best-practices/rules/async-parallel.md +28 -0
  74. package/skills/react/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  75. package/skills/react/vercel-react-best-practices/rules/bundle-analyzable-paths.md +63 -0
  76. package/skills/react/vercel-react-best-practices/rules/bundle-barrel-imports.md +60 -0
  77. package/skills/react/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  78. package/skills/react/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  79. package/skills/react/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  80. package/skills/react/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  81. package/skills/react/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  82. package/skills/react/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  83. package/skills/react/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  84. package/skills/react/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  85. package/skills/react/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  86. package/skills/react/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  87. package/skills/react/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  88. package/skills/react/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  89. package/skills/react/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  90. package/skills/react/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  91. package/skills/react/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
  92. package/skills/react/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  93. package/skills/react/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  94. package/skills/react/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  95. package/skills/react/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  96. package/skills/react/vercel-react-best-practices/rules/js-request-idle-callback.md +105 -0
  97. package/skills/react/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  98. package/skills/react/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  99. package/skills/react/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  100. package/skills/react/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  101. package/skills/react/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  102. package/skills/react/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  103. package/skills/react/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  104. package/skills/react/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  105. package/skills/react/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  106. package/skills/react/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
  107. package/skills/react/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
  108. package/skills/react/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  109. package/skills/react/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  110. package/skills/react/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  111. package/skills/react/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  112. package/skills/react/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  113. package/skills/react/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  114. package/skills/react/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  115. package/skills/react/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  116. package/skills/react/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  117. package/skills/react/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  118. package/skills/react/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  119. package/skills/react/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
  120. package/skills/react/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  121. package/skills/react/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  122. package/skills/react/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  123. package/skills/react/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  124. package/skills/react/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  125. package/skills/react/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  126. package/skills/react/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  127. package/skills/react/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  128. package/skills/react/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  129. package/skills/react/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  130. package/skills/react/vercel-react-best-practices/rules/server-hoist-static-io.md +149 -0
  131. package/skills/react/vercel-react-best-practices/rules/server-no-shared-module-state.md +50 -0
  132. package/skills/react/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  133. package/skills/react/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
  134. package/skills/react/vercel-react-best-practices/rules/server-serialization.md +38 -0
  135. package/skills/vue/create-adaptable-composable/SKILL.md +76 -0
  136. package/skills/vue/vue-best-practices/SKILL.md +154 -0
  137. package/skills/vue/vue-best-practices/references/animation-class-based-technique.md +254 -0
  138. package/skills/vue/vue-best-practices/references/animation-state-driven-technique.md +291 -0
  139. package/skills/vue/vue-best-practices/references/component-async.md +97 -0
  140. package/skills/vue/vue-best-practices/references/component-data-flow.md +307 -0
  141. package/skills/vue/vue-best-practices/references/component-fallthrough-attrs.md +174 -0
  142. package/skills/vue/vue-best-practices/references/component-keep-alive.md +137 -0
  143. package/skills/vue/vue-best-practices/references/component-slots.md +216 -0
  144. package/skills/vue/vue-best-practices/references/component-suspense.md +228 -0
  145. package/skills/vue/vue-best-practices/references/component-teleport.md +108 -0
  146. package/skills/vue/vue-best-practices/references/component-transition-group.md +128 -0
  147. package/skills/vue/vue-best-practices/references/component-transition.md +125 -0
  148. package/skills/vue/vue-best-practices/references/composables.md +290 -0
  149. package/skills/vue/vue-best-practices/references/directives.md +162 -0
  150. package/skills/vue/vue-best-practices/references/perf-avoid-component-abstraction-in-lists.md +159 -0
  151. package/skills/vue/vue-best-practices/references/perf-v-once-v-memo-directives.md +182 -0
  152. package/skills/vue/vue-best-practices/references/perf-virtualize-large-lists.md +187 -0
  153. package/skills/vue/vue-best-practices/references/plugins.md +166 -0
  154. package/skills/vue/vue-best-practices/references/reactivity.md +344 -0
  155. package/skills/vue/vue-best-practices/references/render-functions.md +201 -0
  156. package/skills/vue/vue-best-practices/references/sfc.md +310 -0
  157. package/skills/vue/vue-best-practices/references/state-management.md +135 -0
  158. package/skills/vue/vue-best-practices/references/updated-hook-performance.md +187 -0
  159. package/skills/vue/vue-debug-guides/SKILL.md +202 -0
  160. package/skills/vue/vue-debug-guides/reference/animation-key-for-rerender.md +160 -0
  161. package/skills/vue/vue-debug-guides/reference/animation-transitiongroup-performance.md +241 -0
  162. package/skills/vue/vue-debug-guides/reference/async-component-error-handling.md +115 -0
  163. package/skills/vue/vue-debug-guides/reference/async-component-keepalive-ref-issue.md +112 -0
  164. package/skills/vue/vue-debug-guides/reference/async-component-suspense-control.md +84 -0
  165. package/skills/vue/vue-debug-guides/reference/async-component-vue-router.md +109 -0
  166. package/skills/vue/vue-debug-guides/reference/attrs-event-listener-merging.md +205 -0
  167. package/skills/vue/vue-debug-guides/reference/checkbox-true-false-value-form-submission.md +118 -0
  168. package/skills/vue/vue-debug-guides/reference/cleanup-side-effects.md +172 -0
  169. package/skills/vue/vue-debug-guides/reference/click-events-on-components.md +180 -0
  170. package/skills/vue/vue-debug-guides/reference/component-naming-conflicts.md +159 -0
  171. package/skills/vue/vue-debug-guides/reference/component-ref-requires-defineexpose.md +176 -0
  172. package/skills/vue/vue-debug-guides/reference/composable-avoid-hidden-side-effects.md +208 -0
  173. package/skills/vue/vue-debug-guides/reference/composable-call-location-restrictions.md +141 -0
  174. package/skills/vue/vue-debug-guides/reference/composable-naming-return-pattern.md +139 -0
  175. package/skills/vue/vue-debug-guides/reference/composable-tovalue-inside-watcheffect.md +182 -0
  176. package/skills/vue/vue-debug-guides/reference/composition-api-not-functional-programming.md +120 -0
  177. package/skills/vue/vue-debug-guides/reference/composition-api-script-setup-async-context.md +203 -0
  178. package/skills/vue/vue-debug-guides/reference/composition-api-vs-react-hooks-differences.md +156 -0
  179. package/skills/vue/vue-debug-guides/reference/computed-array-mutation.md +148 -0
  180. package/skills/vue/vue-debug-guides/reference/computed-conditional-dependencies.md +147 -0
  181. package/skills/vue/vue-debug-guides/reference/computed-no-parameters.md +159 -0
  182. package/skills/vue/vue-debug-guides/reference/computed-no-side-effects.md +107 -0
  183. package/skills/vue/vue-debug-guides/reference/computed-return-value-readonly.md +160 -0
  184. package/skills/vue/vue-debug-guides/reference/configure-app-before-mount.md +89 -0
  185. package/skills/vue/vue-debug-guides/reference/declare-emits-for-documentation.md +212 -0
  186. package/skills/vue/vue-debug-guides/reference/define-expose-before-await.md +192 -0
  187. package/skills/vue/vue-debug-guides/reference/define-model-default-value-sync.md +139 -0
  188. package/skills/vue/vue-debug-guides/reference/defineEmits-must-be-top-level.md +164 -0
  189. package/skills/vue/vue-debug-guides/reference/defineEmits-no-runtime-and-type-mixed.md +170 -0
  190. package/skills/vue/vue-debug-guides/reference/definemodel-object-mutation-no-emit.md +148 -0
  191. package/skills/vue/vue-debug-guides/reference/dom-update-timing-nexttick.md +90 -0
  192. package/skills/vue/vue-debug-guides/reference/dynamic-argument-constraints.md +146 -0
  193. package/skills/vue/vue-debug-guides/reference/dynamic-component-registration-vite.md +147 -0
  194. package/skills/vue/vue-debug-guides/reference/event-modifier-order-matters.md +101 -0
  195. package/skills/vue/vue-debug-guides/reference/exact-modifier-for-precise-shortcuts.md +155 -0
  196. package/skills/vue/vue-debug-guides/reference/fallthrough-attrs-overwrite-vue3.md +159 -0
  197. package/skills/vue/vue-debug-guides/reference/in-dom-template-parsing-caveats.md +149 -0
  198. package/skills/vue/vue-debug-guides/reference/inheritattrs-false-for-wrapper-components.md +230 -0
  199. package/skills/vue/vue-debug-guides/reference/keepalive-router-nested-double-mount.md +222 -0
  200. package/skills/vue/vue-debug-guides/reference/keepalive-transition-memory-leak.md +144 -0
  201. package/skills/vue/vue-debug-guides/reference/keyup-modifier-timing.md +137 -0
  202. package/skills/vue/vue-debug-guides/reference/lifecycle-dom-access-timing.md +216 -0
  203. package/skills/vue/vue-debug-guides/reference/lifecycle-hooks-synchronous-registration.md +156 -0
  204. package/skills/vue/vue-debug-guides/reference/lifecycle-ssr-awareness.md +184 -0
  205. package/skills/vue/vue-debug-guides/reference/local-components-not-in-descendants.md +151 -0
  206. package/skills/vue/vue-debug-guides/reference/mount-return-value.md +88 -0
  207. package/skills/vue/vue-debug-guides/reference/multi-root-component-class-attrs.md +93 -0
  208. package/skills/vue/vue-debug-guides/reference/native-event-collision-with-emits.md +162 -0
  209. package/skills/vue/vue-debug-guides/reference/no-passive-with-prevent.md +141 -0
  210. package/skills/vue/vue-debug-guides/reference/no-v-if-with-v-for.md +136 -0
  211. package/skills/vue/vue-debug-guides/reference/perf-computed-object-stability.md +157 -0
  212. package/skills/vue/vue-debug-guides/reference/perf-props-stability-update-optimization.md +140 -0
  213. package/skills/vue/vue-debug-guides/reference/plugin-global-properties-sparingly.md +109 -0
  214. package/skills/vue/vue-debug-guides/reference/plugin-install-before-mount.md +124 -0
  215. package/skills/vue/vue-debug-guides/reference/plugin-prefer-provide-inject-over-global-properties.md +120 -0
  216. package/skills/vue/vue-debug-guides/reference/plugin-typescript-type-augmentation.md +157 -0
  217. package/skills/vue/vue-debug-guides/reference/prop-defineprops-scope-limitation.md +161 -0
  218. package/skills/vue/vue-debug-guides/reference/provide-inject-debugging-challenges.md +203 -0
  219. package/skills/vue/vue-debug-guides/reference/provide-inject-default-value-factory.md +244 -0
  220. package/skills/vue/vue-debug-guides/reference/provide-inject-reactivity-not-automatic.md +226 -0
  221. package/skills/vue/vue-debug-guides/reference/provide-inject-synchronous-setup.md +235 -0
  222. package/skills/vue/vue-debug-guides/reference/reactive-destructuring.md +89 -0
  223. package/skills/vue/vue-debug-guides/reference/reactivity-debugging-hooks.md +132 -0
  224. package/skills/vue/vue-debug-guides/reference/reactivity-markraw-for-non-reactive.md +149 -0
  225. package/skills/vue/vue-debug-guides/reference/reactivity-proxy-identity-hazard.md +96 -0
  226. package/skills/vue/vue-debug-guides/reference/reactivity-same-tick-batching.md +166 -0
  227. package/skills/vue/vue-debug-guides/reference/ref-value-access.md +61 -0
  228. package/skills/vue/vue-debug-guides/reference/refs-in-collections-need-value.md +81 -0
  229. package/skills/vue/vue-debug-guides/reference/render-function-avoid-internal-vnode-properties.md +151 -0
  230. package/skills/vue/vue-debug-guides/reference/render-function-vnodes-must-be-unique.md +133 -0
  231. package/skills/vue/vue-debug-guides/reference/rendering-render-function-h-import-vue3.md +148 -0
  232. package/skills/vue/vue-debug-guides/reference/rendering-render-function-return-from-setup.md +148 -0
  233. package/skills/vue/vue-debug-guides/reference/rendering-render-function-slots-as-functions.md +168 -0
  234. package/skills/vue/vue-debug-guides/reference/rendering-resolve-component-for-string-names.md +231 -0
  235. package/skills/vue/vue-debug-guides/reference/select-initial-value-ios-bug.md +91 -0
  236. package/skills/vue/vue-debug-guides/reference/self-referencing-component-name.md +157 -0
  237. package/skills/vue/vue-debug-guides/reference/sfc-named-exports-forbidden.md +184 -0
  238. package/skills/vue/vue-debug-guides/reference/sfc-scoped-css-child-component-styling.md +156 -0
  239. package/skills/vue/vue-debug-guides/reference/sfc-scoped-css-dynamic-content.md +193 -0
  240. package/skills/vue/vue-debug-guides/reference/sfc-scoped-css-slot-content.md +242 -0
  241. package/skills/vue/vue-debug-guides/reference/sfc-script-setup-reactivity.md +195 -0
  242. package/skills/vue/vue-debug-guides/reference/slot-forwarding-to-child-components.md +143 -0
  243. package/skills/vue/vue-debug-guides/reference/slot-implicit-default-content.md +155 -0
  244. package/skills/vue/vue-debug-guides/reference/slot-name-reserved-prop.md +109 -0
  245. package/skills/vue/vue-debug-guides/reference/slot-named-scoped-explicit-default.md +95 -0
  246. package/skills/vue/vue-debug-guides/reference/slot-render-scope-parent-only.md +135 -0
  247. package/skills/vue/vue-debug-guides/reference/slot-v-slot-on-components-or-templates-only.md +122 -0
  248. package/skills/vue/vue-debug-guides/reference/ssr-hydration-mismatch-causes.md +280 -0
  249. package/skills/vue/vue-debug-guides/reference/ssr-platform-specific-apis.md +256 -0
  250. package/skills/vue/vue-debug-guides/reference/state-ssr-cross-request-pollution.md +276 -0
  251. package/skills/vue/vue-debug-guides/reference/suspense-no-builtin-error-handling.md +127 -0
  252. package/skills/vue/vue-debug-guides/reference/suspense-ssr-hydration-issues.md +159 -0
  253. package/skills/vue/vue-debug-guides/reference/tailwind-dynamic-class-generation.md +144 -0
  254. package/skills/vue/vue-debug-guides/reference/teleport-scoped-styles-limitation.md +191 -0
  255. package/skills/vue/vue-debug-guides/reference/teleport-ssr-hydration.md +152 -0
  256. package/skills/vue/vue-debug-guides/reference/teleport-target-must-exist.md +113 -0
  257. package/skills/vue/vue-debug-guides/reference/template-expressions-restrictions.md +114 -0
  258. package/skills/vue/vue-debug-guides/reference/template-functions-no-side-effects.md +187 -0
  259. package/skills/vue/vue-debug-guides/reference/template-ref-null-with-v-if.md +123 -0
  260. package/skills/vue/vue-debug-guides/reference/template-ref-unwrapping-top-level.md +104 -0
  261. package/skills/vue/vue-debug-guides/reference/template-ref-v-for-order.md +172 -0
  262. package/skills/vue/vue-debug-guides/reference/textarea-no-interpolation.md +72 -0
  263. package/skills/vue/vue-debug-guides/reference/transition-group-flip-inline-elements.md +152 -0
  264. package/skills/vue/vue-debug-guides/reference/transition-group-move-animation-position-absolute.md +130 -0
  265. package/skills/vue/vue-debug-guides/reference/transition-group-no-default-wrapper-vue3.md +152 -0
  266. package/skills/vue/vue-debug-guides/reference/transition-js-hooks-done-callback.md +251 -0
  267. package/skills/vue/vue-debug-guides/reference/transition-nested-duration.md +182 -0
  268. package/skills/vue/vue-debug-guides/reference/transition-reusable-scoped-style.md +245 -0
  269. package/skills/vue/vue-debug-guides/reference/transition-router-view-appear.md +193 -0
  270. package/skills/vue/vue-debug-guides/reference/transition-type-when-mixed.md +172 -0
  271. package/skills/vue/vue-debug-guides/reference/transition-unmount-hook-timing.md +149 -0
  272. package/skills/vue/vue-debug-guides/reference/ts-defineprops-boolean-default-false.md +225 -0
  273. package/skills/vue/vue-debug-guides/reference/ts-defineprops-imported-types-limitations.md +281 -0
  274. package/skills/vue/vue-debug-guides/reference/ts-event-handler-explicit-typing.md +213 -0
  275. package/skills/vue/vue-debug-guides/reference/ts-reactive-no-generic-argument.md +196 -0
  276. package/skills/vue/vue-debug-guides/reference/ts-shallowref-for-dynamic-components.md +218 -0
  277. package/skills/vue/vue-debug-guides/reference/ts-template-ref-null-handling.md +249 -0
  278. package/skills/vue/vue-debug-guides/reference/ts-template-type-casting.md +214 -0
  279. package/skills/vue/vue-debug-guides/reference/ts-withdefaults-mutable-factory-function.md +171 -0
  280. package/skills/vue/vue-debug-guides/reference/undeclared-emits-double-firing.md +195 -0
  281. package/skills/vue/vue-debug-guides/reference/use-template-ref-vue35.md +158 -0
  282. package/skills/vue/vue-debug-guides/reference/v-else-must-follow-v-if.md +136 -0
  283. package/skills/vue/vue-debug-guides/reference/v-for-component-props.md +95 -0
  284. package/skills/vue/vue-debug-guides/reference/v-for-computed-reverse-sort.md +86 -0
  285. package/skills/vue/vue-debug-guides/reference/v-for-key-attribute.md +90 -0
  286. package/skills/vue/vue-debug-guides/reference/v-for-range-starts-at-one.md +66 -0
  287. package/skills/vue/vue-debug-guides/reference/v-if-null-check-order.md +171 -0
  288. package/skills/vue/vue-debug-guides/reference/v-model-ignores-html-attributes.md +83 -0
  289. package/skills/vue/vue-debug-guides/reference/v-model-ime-composition.md +83 -0
  290. package/skills/vue/vue-debug-guides/reference/v-model-number-modifier-behavior.md +124 -0
  291. package/skills/vue/vue-debug-guides/reference/v-show-template-limitation.md +124 -0
  292. package/skills/vue/vue-debug-guides/reference/watch-async-cleanup.md +180 -0
  293. package/skills/vue/vue-debug-guides/reference/watch-async-creation-memory-leak.md +176 -0
  294. package/skills/vue/vue-debug-guides/reference/watch-deep-same-object-reference.md +165 -0
  295. package/skills/vue/vue-debug-guides/reference/watch-flush-timing.md +189 -0
  296. package/skills/vue/vue-debug-guides/reference/watch-reactive-property-getter.md +108 -0
  297. package/skills/vue/vue-debug-guides/reference/watcheffect-async-dependency-tracking.md +173 -0
  298. package/skills/vue/vue-debug-guides/reference/watcheffect-flush-post-for-refs.md +176 -0
  299. package/skills/vue/vue-jsx-best-practices/SKILL.md +12 -0
  300. package/skills/vue/vue-jsx-best-practices/reference/render-function-jsx-vue-vs-react.md +141 -0
  301. package/skills/vue/vue-options-api-best-practices/SKILL.md +23 -0
  302. package/skills/vue/vue-options-api-best-practices/reference/no-arrow-functions-in-lifecycle-hooks.md +95 -0
  303. package/skills/vue/vue-options-api-best-practices/reference/no-arrow-functions-in-methods.md +68 -0
  304. package/skills/vue/vue-options-api-best-practices/reference/stateful-methods-lifecycle.md +61 -0
  305. package/skills/vue/vue-options-api-best-practices/reference/ts-options-api-arrow-functions-validators.md +141 -0
  306. package/skills/vue/vue-options-api-best-practices/reference/ts-options-api-computed-return-types.md +192 -0
  307. package/skills/vue/vue-options-api-best-practices/reference/ts-options-api-proptype-complex-types.md +212 -0
  308. package/skills/vue/vue-options-api-best-practices/reference/ts-options-api-provide-inject-limitations.md +135 -0
  309. package/skills/vue/vue-options-api-best-practices/reference/ts-options-api-type-event-handlers.md +202 -0
  310. package/skills/vue/vue-options-api-best-practices/reference/ts-options-api-use-definecomponent.md +172 -0
  311. package/skills/vue/vue-options-api-best-practices/reference/ts-strict-mode-options-api.md +197 -0
  312. package/skills/vue/vue-pinia-best-practices/SKILL.md +21 -0
  313. package/skills/vue/vue-pinia-best-practices/reference/pinia-no-active-pinia-error.md +248 -0
  314. package/skills/vue/vue-pinia-best-practices/reference/pinia-setup-store-return-all-state.md +227 -0
  315. package/skills/vue/vue-pinia-best-practices/reference/pinia-store-destructuring-breaks-reactivity.md +193 -0
  316. package/skills/vue/vue-pinia-best-practices/reference/state-url-for-ephemeral-filters.md +238 -0
  317. package/skills/vue/vue-pinia-best-practices/reference/state-use-pinia-for-large-apps.md +262 -0
  318. package/skills/vue/vue-pinia-best-practices/reference/store-method-binding-parentheses.md +191 -0
  319. package/skills/vue/vue-router-best-practices/SKILL.md +23 -0
  320. package/skills/vue/vue-router-best-practices/reference/router-beforeenter-no-param-trigger.md +167 -0
  321. package/skills/vue/vue-router-best-practices/reference/router-beforerouteenter-no-this.md +176 -0
  322. package/skills/vue/vue-router-best-practices/reference/router-guard-async-await-pattern.md +227 -0
  323. package/skills/vue/vue-router-best-practices/reference/router-navigation-guard-infinite-loop.md +187 -0
  324. package/skills/vue/vue-router-best-practices/reference/router-navigation-guard-next-deprecated.md +150 -0
  325. package/skills/vue/vue-router-best-practices/reference/router-param-change-no-lifecycle.md +181 -0
  326. package/skills/vue/vue-router-best-practices/reference/router-simple-routing-cleanup.md +209 -0
  327. package/skills/vue/vue-router-best-practices/reference/router-use-vue-router-for-production.md +183 -0
  328. package/skills/vue/vue-testing-best-practices/SKILL.md +29 -0
  329. package/skills/vue/vue-testing-best-practices/reference/async-component-testing.md +163 -0
  330. package/skills/vue/vue-testing-best-practices/reference/teleport-testing-complexity.md +158 -0
  331. package/skills/vue/vue-testing-best-practices/reference/testing-async-await-flushpromises.md +175 -0
  332. package/skills/vue/vue-testing-best-practices/reference/testing-browser-vs-node-runners.md +208 -0
  333. package/skills/vue/vue-testing-best-practices/reference/testing-component-blackbox-approach.md +144 -0
  334. package/skills/vue/vue-testing-best-practices/reference/testing-composables-helper-wrapper.md +238 -0
  335. package/skills/vue/vue-testing-best-practices/reference/testing-e2e-playwright-recommended.md +242 -0
  336. package/skills/vue/vue-testing-best-practices/reference/testing-no-snapshot-only.md +197 -0
  337. package/skills/vue/vue-testing-best-practices/reference/testing-pinia-store-setup.md +228 -0
  338. package/skills/vue/vue-testing-best-practices/reference/testing-suspense-async-components.md +229 -0
  339. package/skills/vue/vue-testing-best-practices/reference/testing-vitest-recommended-for-vue.md +204 -0
  340. package/skills/worker/README.md +10 -0
  341. package/skills/worker/caveman/README.md +48 -0
  342. package/skills/worker/caveman/SKILL.md +88 -0
  343. package/skills/worker/ponytail/SKILL.md +120 -0
  344. package/skills-lock.json +131 -0
  345. package/templates/state.md +16 -0
@@ -0,0 +1,29 @@
1
+ # Architect
2
+
3
+ ## Responsibility
4
+
5
+ Define technical boundaries, subsystem interfaces, API contracts, and data flow for an assigned design problem.
6
+
7
+ ## May
8
+
9
+ Inspect relevant code and docs; propose alternatives and tradeoffs; record accepted long-lived decisions in `docs/`.
10
+
11
+ ## Must Not
12
+
13
+ Implement features or change unrelated architecture unless the task explicitly assigns that work.
14
+
15
+ ## Inputs
16
+
17
+ Design task, product requirements, relevant source, existing contracts, and durable decisions.
18
+
19
+ ## Outputs
20
+
21
+ A concise design artifact with interfaces, boundaries, constraints, and decision rationale.
22
+
23
+ ## Completion Criteria
24
+
25
+ The design answers the task's open questions and gives implementers enough detail to work independently.
26
+
27
+ ## Escalation
28
+
29
+ Return unclear product choices or conflicting constraints to the orchestrator.
@@ -0,0 +1,33 @@
1
+ # Backend Agent
2
+
3
+ ## Responsibility
4
+
5
+ Implement assigned APIs, services, backend logic, persistence integration, and related backend tests.
6
+
7
+ ## May
8
+
9
+ Edit backend files within the task's allowed scope and run relevant checks.
10
+
11
+ ## Must Not
12
+
13
+ Redesign frontend behavior or change shared contracts outside the task's authority.
14
+
15
+ ## Inputs
16
+
17
+ Task file, relevant architecture and API contracts, backend source, configuration, and existing tests.
18
+
19
+ ## Worker Skills
20
+
21
+ Load `.agents/worker-skills.md` from the shared workspace and its Ponytail/Caveman skill files for the assigned implementation task. Keep complete acceptance and verification evidence as required by that policy.
22
+
23
+ ## Outputs
24
+
25
+ Focused backend changes and a concise summary of files changed and checks run.
26
+
27
+ ## Completion Criteria
28
+
29
+ Assigned behavior meets acceptance criteria and relevant automated checks pass; report any unverified criteria.
30
+
31
+ ## Escalation
32
+
33
+ Return contract conflicts, data migration needs, or needed cross-boundary changes to the orchestrator.
@@ -0,0 +1,29 @@
1
+ # Debugger
2
+
3
+ ## Responsibility
4
+
5
+ Diagnose a concrete failure, find its root cause, and make or propose a targeted fix.
6
+
7
+ ## May
8
+
9
+ Reproduce failures, inspect logs and code, and edit files within an assigned fix scope.
10
+
11
+ ## Must Not
12
+
13
+ Rewrite unrelated code or declare a failure fixed without rerunning the relevant check.
14
+
15
+ ## Inputs
16
+
17
+ Failed task, reproduction steps, error output, relevant diff, and prior attempts.
18
+
19
+ ## Outputs
20
+
21
+ Root-cause evidence, a narrow fix or recommended change, and verification results.
22
+
23
+ ## Completion Criteria
24
+
25
+ The failure is reproduced or otherwise explained, and the targeted check passes after the fix or a blocker is documented.
26
+
27
+ ## Escalation
28
+
29
+ Send design-level causes to the architect through the orchestrator; return unresolved external blockers to the orchestrator.
@@ -0,0 +1,29 @@
1
+ # Explorer
2
+
3
+ ## Responsibility
4
+
5
+ Map unfamiliar repository areas and identify the files, dependencies, and conventions relevant to an assigned question.
6
+
7
+ ## May
8
+
9
+ Read code, configuration, tests, and docs; run non-destructive inspection commands.
10
+
11
+ ## Must Not
12
+
13
+ Modify source code unless separately assigned an implementation task.
14
+
15
+ ## Inputs
16
+
17
+ Exploration question and the repository areas to inspect.
18
+
19
+ ## Outputs
20
+
21
+ A short file-linked map of entry points, dependencies, relevant checks, and uncertainties.
22
+
23
+ ## Completion Criteria
24
+
25
+ The report answers the assigned question with evidence from the repository.
26
+
27
+ ## Escalation
28
+
29
+ Flag missing files, inaccessible dependencies, or ambiguity that changes implementation scope.
@@ -0,0 +1,33 @@
1
+ # Frontend Agent
2
+
3
+ ## Responsibility
4
+
5
+ Implement assigned UI, frontend state, styling, client integration, responsive behavior, and related frontend tests.
6
+
7
+ ## May
8
+
9
+ Edit frontend files within the task's allowed scope and run relevant checks.
10
+
11
+ ## Must Not
12
+
13
+ Change backend architecture, API contracts, or database schemas without explicit task scope.
14
+
15
+ ## Inputs
16
+
17
+ Task file, relevant design and API contracts, frontend source, assets, and existing tests.
18
+
19
+ ## Worker Skills
20
+
21
+ Load `.agents/worker-skills.md` from the shared workspace and its Ponytail/Caveman skill files for the assigned implementation task. Keep complete acceptance and verification evidence as required by that policy.
22
+
23
+ ## Outputs
24
+
25
+ Focused frontend changes and a concise summary of files changed and checks run.
26
+
27
+ ## Completion Criteria
28
+
29
+ Assigned behavior meets acceptance criteria and relevant automated checks pass; report any unverified criteria.
30
+
31
+ ## Escalation
32
+
33
+ Return missing designs, contract mismatches, or needed cross-boundary changes to the orchestrator.
@@ -0,0 +1,35 @@
1
+ # Orchestrator
2
+
3
+ ## Responsibility
4
+
5
+ Own the user goal, inspect repository state, define task nodes and dependency edges, assign work, collect artifacts, and decide when the goal is satisfied.
6
+
7
+ ## May
8
+
9
+ Create and update task and state files; assign independent work concurrently; request design, implementation, debugging, verification, and review; make small integration edits.
10
+
11
+ ## Must Not
12
+
13
+ Treat a worker's completion claim or reported implementation flow as final verification; start tasks with unfinished dependencies; or assign overlapping write scopes concurrently. Avoid implementing large specialist tasks directly.
14
+
15
+ ## Inputs
16
+
17
+ User goal, repository state, relevant durable docs, task outputs, diffs, and verification evidence.
18
+
19
+ ## Project Context
20
+
21
+ For a managed project, resolve its explicit repository/checkout and branch first. Follow `docs/engineering/project-orchestration.md` in the shared workspace to bootstrap missing local state and verify the target's `.gitignore`. Use the target checkout's `.orchestration/` for assignments and evidence, and its `docs/` for durable product decisions. Pass the target path, applicable shared/project rules, and relevant role instructions to workers; do not assume shared instructions are automatically loaded in another repo.
22
+
23
+ ## Outputs
24
+
25
+ When assigning frontend/backend or generic implementation workers, include `.agents/worker-skills.md` and its two referenced skill files in worker context. Do not activate Ponytail/Caveman in your own responses or include them for non-worker specialist assignments.
26
+
27
+ Focused task files with purpose and verification, current `.orchestration/state.md`, assignments with relevant dependency outputs, follow-up tasks, and a final evidence-based report.
28
+
29
+ ## Completion Criteria
30
+
31
+ Actual outputs are compared with the assigned work, deviations are resolved, every required task meets its acceptance criteria, required checks and reviews pass, and the user goal is satisfied.
32
+
33
+ ## Escalation
34
+
35
+ Ask the user to resolve missing product decisions or unresolved tradeoffs after useful investigation; involve the debugger or architect when failure evidence calls for them.
@@ -0,0 +1,42 @@
1
+ # Reviewer
2
+
3
+ ## Responsibility
4
+
5
+ Independently assess whether an implementation satisfies its task and respects scope.
6
+
7
+ ## May
8
+
9
+ Inspect the task, relevant diff, implementation output, tests, and acceptance evidence; report defects and missing coverage.
10
+
11
+ ## Must Not
12
+
13
+ Assume the worker's conclusion is correct or modify implementation while acting as reviewer.
14
+
15
+ ## Inputs
16
+
17
+ Task definition, relevant diff, implementation summary, test results, and acceptance criteria.
18
+
19
+ ## QA Skills
20
+
21
+ Project skills from `petrkindlmann/qa-skills` are installed in `.agents/skills/` and mirrored in `skills/qa/`. Load only the skill relevant to the assigned review:
22
+
23
+ - `ai-qa-review`: review existing tests for quality, test smells, and application testability.
24
+ - `coverage-analysis`: assess coverage evidence and meaningful gaps when reports are available.
25
+ - `risk-based-testing`: identify critical paths and prioritize verification by risk.
26
+ - `release-readiness`: evaluate release evidence when release review is explicitly assigned.
27
+
28
+ Use `.agents/qa-project-context.md` if available and follow links to the authoritative engineering docs. `qa-project-context` is installed as a setup helper; creating or updating that context belongs to a separate orchestrator-assigned task.
29
+
30
+ These skills supplement implementation review. Apply the task's requirements and project conventions; upstream example thresholds are not automatically project policy. While acting as reviewer, report suggested fixes and missing evidence without modifying code, tests, CI, or documentation. Acceptance and release decisions remain with the orchestrator or authorized owner.
31
+
32
+ ## Outputs
33
+
34
+ A concise pass or findings report with file references, severity, and remaining uncertainty.
35
+
36
+ ## Completion Criteria
37
+
38
+ The review checks acceptance, scope, and material regressions and gives evidence for its conclusion.
39
+
40
+ ## Escalation
41
+
42
+ Return findings to the orchestrator for fix tasks; raise disputed requirements or design issues there.
@@ -0,0 +1,29 @@
1
+ # Tester
2
+
3
+ ## Responsibility
4
+
5
+ Verify assigned acceptance criteria with reproducible, measurable checks.
6
+
7
+ ## May
8
+
9
+ Run relevant tests, lint, typecheck, build, browser or API checks; add or adjust tests when explicitly scoped.
10
+
11
+ ## Must Not
12
+
13
+ Equate a worker's summary with evidence or silently change product behavior to make checks pass.
14
+
15
+ ## Inputs
16
+
17
+ Task acceptance criteria, implementation diff, relevant source, and project check commands.
18
+
19
+ ## Outputs
20
+
21
+ Commands or procedures run, results, failures with reproduction details, and unverified criteria.
22
+
23
+ ## Completion Criteria
24
+
25
+ Each assigned criterion has a result or an explicit reason it could not be checked.
26
+
27
+ ## Escalation
28
+
29
+ Return failures and missing test infrastructure to the orchestrator with actionable evidence.
@@ -0,0 +1,24 @@
1
+ # Worker Skill Policy
2
+
3
+ This policy applies only to implementation workers: frontend, backend, or an agent explicitly assigned a worker implementation task. It does not apply to the orchestrator, architect, explorer, reviewer, tester, or debugger roles.
4
+
5
+ ## Required Skills
6
+
7
+ After loading shared rules, the assigned role, and task context, implementation workers load these files from the shared workspace:
8
+
9
+ - [Ponytail](../skills/worker/ponytail/SKILL.md): prefer existing code, standard libraries, native features, and the smallest correct implementation. Use the upstream default level `full` unless the user requests another level.
10
+ - [Caveman](../skills/worker/caveman/SKILL.md): keep conversational updates concise while retaining exact technical meaning. Use the upstream default level `full` unless the user requests another level.
11
+
12
+ These modes apply only for the worker assignment. Their upstream persistence rules do not extend them to another role or the orchestrator's user-facing report. Stop or level changes requested by the user take precedence.
13
+
14
+ ## Project Requirements Take Precedence
15
+
16
+ Do not simplify away requested behavior, acceptance criteria, security, accessibility, scope restrictions, or required verification. Read the relevant source and task before choosing an implementation.
17
+
18
+ Worker reports must still include actual outputs, changed files, verification commands/results, and deviations or remaining uncertainty. Compression must not conceal failed checks or missing evidence. Follow mandatory communication instructions even where the upstream skills suggest fewer progress updates.
19
+
20
+ Caveman applies to conversational prose only. Write normal English in code comments, documentation, task files, commit messages, PR descriptions, and other durable artifacts.
21
+
22
+ ## Storage and Discovery
23
+
24
+ The skill snapshots are stored in `skills/worker/`. Do not install or mirror them into `.agents/skills/`, which makes them available for automatic activation across roles. Workers load them explicitly from the paths above. npm workspace initialization and ZIP export preserve this separation.
package/AGENTS.md ADDED
@@ -0,0 +1,33 @@
1
+ # Project Instructions
2
+
3
+ ## Goal and boundaries
4
+
5
+ This repository is being prepared for product work. The product goal has not been defined yet. Technology preferences are recorded in `docs/javascript-typescript-stack.md`; the application's stack and architecture remain undecided. Start with `docs/README.md` for documentation ownership and relevant context. Keep this orchestration foundation small, readable, and easy to extend; do not infer or implement product features without a task.
6
+
7
+ - `AGENTS.md` holds stable rules shared by every agent.
8
+ - `.agents/` holds role-specific instructions.
9
+ - `docs/` holds durable architecture, conventions, and decisions when they exist.
10
+ - `.orchestration/` holds current state, task specifications, and useful run records. It is the only place for short-lived coordination state.
11
+ - Follow existing project conventions once code is added. Prefer narrow changes and standard tools over new orchestration dependencies.
12
+
13
+ ## Orchestration protocol
14
+
15
+ For work in a separate project repository, select an explicit repository/checkout and keep all task state in that checkout's `.orchestration/`. Bootstrap only missing local state and add `/.orchestration/` to the target project's `.gitignore`; preserve existing state and ignore rules. Shared roles remain in the orchestration workspace, while durable project requirements and decisions belong to the target repo's `docs/` and `AGENTS.md`. Follow `docs/engineering/project-orchestration.md` for bootstrap, worktree isolation, and ignore verification. Do not mix project task state with this workspace's own coordination state.
16
+
17
+ The orchestrator owns the user goal, task graph, assignments, acceptance decisions, and final report. It writes a focused task file in `.orchestration/tasks/` before delegating substantial work. Each task states why it exists, inputs, allowed and forbidden scope, expected outputs, dependencies, verification method, and measurable acceptance criteria. Give agents this file, their role file, these shared rules, and only the relevant source and docs.
18
+
19
+ For work spanning multiple tasks, identify task nodes and dependencies before assignment. The task files' `depends_on` fields define the execution graph; a compact diagram in `state.md` may help humans read it. Give each worker only its assigned part and the outputs of completed dependencies. The worker records actual outputs, changed files, checks, and deviations. The orchestrator compares that report with the task's expected work and verifies any deviation before acceptance.
20
+
21
+ Tasks move through `pending → ready → in_progress → verification → done`. A failed check moves a task to `needs_fix`; a concrete fix returns it to `in_progress`. Only begin work when dependencies are `done`. Independent tasks may run concurrently if their write scopes do not overlap. Sequence shared-file edits or give one task explicit ownership. Agents communicate through task files, durable docs, and concise run records; important decisions must be recorded in files rather than relying on chat history.
22
+
23
+ The worker reports its output and evidence but cannot alone mark its task `done`. The orchestrator checks acceptance criteria and requests deterministic verification and independent review when appropriate. Prefer relevant tests, lint, typecheck, build, and browser or API checks over unsupported claims. Record actual commands and outcomes. If verification fails, return actionable feedback; after repeated failures, use a debugger, then an architect for design issues, and escalate unresolved decisions to the user. Do not retry without new evidence.
24
+
25
+ ## Working rules
26
+
27
+ - Ponytail and Caveman apply only to frontend/backend implementation workers and explicitly assigned worker agents. Follow `.agents/worker-skills.md` for activation and reporting. Do not apply these modes to the orchestrator or other specialist roles, and do not expose their snapshots through `.agents/skills/`.
28
+
29
+ - Stay within assigned file ownership. Ask the orchestrator to change scope or dependencies before editing outside it.
30
+ - Do not overwrite user work or existing documentation. Keep source changes tied to the active task.
31
+ - Do not add databases, queues, workflow engines, or extra agent roles to coordinate this workflow without a demonstrated need.
32
+ - Put stable context first when constructing agent prompts: this file, the role file, then task-specific inputs and latest feedback. Include enough context for correctness without dumping the repository.
33
+ - Use Markdown for human-readable coordination. Use YAML frontmatter only for task metadata that benefits from structure; use JSON for tool-produced machine data when needed.
package/README.md ADDED
@@ -0,0 +1,150 @@
1
+ # Puppets Orchestration
2
+
3
+ Puppets is a reusable, file-based workspace for coordinating AI coding agents across multiple project repositories. It provides shared agent roles, engineering skills, task protocols, and documentation guidance.
4
+
5
+ Each project keeps its own requirements, source code, Git history, and local orchestration state. The shared workspace provides the working rules and tools that agents use to plan, implement, verify, and review changes.
6
+
7
+ ## What Is Included
8
+
9
+ - Agent roles for orchestration, frontend, backend, architecture, exploration, review, testing, and debugging.
10
+ - Task coordination with explicit scope, dependencies, acceptance criteria, and verification evidence.
11
+ - Categorized Vue, React, frontend, backend, and QA skills.
12
+ - Ponytail and Caveman for implementation workers only, governed by the [worker skill policy](.agents/worker-skills.md).
13
+ - Product, requirements, architecture, ADR, and engineering documentation foundations.
14
+ - An npm CLI for creating a shared workspace and bootstrapping individual project repositories.
15
+
16
+ See the [documentation index](docs/README.md), [skill catalog](skills/README.md), and [technology preferences](docs/javascript-typescript-stack.md) for details. Product drafts contain explicit TBDs rather than invented product requirements.
17
+
18
+ ## Requirements
19
+
20
+ - Node.js 20 or newer to run the installer CLI.
21
+ - Git to clone this source repository and initialize orchestration in an existing project checkout.
22
+ - npm/npx for building or installing the npm package.
23
+ - An AI coding agent that can read repository instructions and files.
24
+
25
+ The CLI uses Node.js standard libraries and has no external runtime dependencies. Installer requirements are separate from the application's preferred runtime and package manager.
26
+
27
+ ## Install from Source
28
+
29
+ This method works now; npm publication has not been performed.
30
+
31
+ ```sh
32
+ git clone https://github.com/ExelAlfanso/puppets.git
33
+ cd puppets
34
+ node ./bin/puppets.mjs init ../puppets-workspace
35
+ ```
36
+
37
+ The command creates a shared workspace with rules, roles, documentation, skills, and fresh coordination state. The generated workspace contains no `.git` history. No `npm install` is needed to run the source CLI.
38
+
39
+ Choose a destination outside the source/package directory. You can retain the source checkout for building packages while using the generated workspace for project work.
40
+
41
+ ## Set Up a Project
42
+
43
+ The target must already be a Git repository or worktree. From the source repository directory, run:
44
+
45
+ ```sh
46
+ node ./bin/puppets.mjs init-project ../my-project --workspace ../puppets-workspace
47
+ ```
48
+
49
+ Replace `../my-project` with the root of the checkout you want to work on. The command:
50
+
51
+ - Creates `.orchestration/state.md`, `tasks/`, and `runs/` if missing.
52
+ - Records the checkout, branch, and shared workspace in fresh state.
53
+ - Adds shared workspace guidance to the project's `AGENTS.md`.
54
+ - Adds `/.orchestration/` to the project's `.gitignore`.
55
+ - Preserves existing files and progress when run again.
56
+
57
+ Shared roles and skills stay in the central workspace. The command does not copy the entire foundation or overwrite existing project documentation. If `.orchestration/` is already tracked, it stops before changing the project so that migration can be resolved separately.
58
+
59
+ Commit the project's `AGENTS.md` and `.gitignore` changes after review. Keep local orchestration state ignored. See the [per-project orchestration guide](docs/engineering/project-orchestration.md) for manual setup and worktree isolation.
60
+
61
+ ## Use the Workspace with an Agent
62
+
63
+ Give the agent an explicit shared workspace path, target checkout path, and goal. For example:
64
+
65
+ ```text
66
+ Shared workspace: /path/to/puppets-workspace
67
+ Target project: /path/to/my-project
68
+ Goal: <describe the requested change>
69
+
70
+ Load the shared AGENTS.md and relevant agent role, then the project's
71
+ AGENTS.md and relevant documentation. Use the target project's
72
+ .orchestration/ for tasks, progress, and verification evidence.
73
+ ```
74
+
75
+ Agents must read the selected project's state when switching repositories. Permanent requirements and decisions belong in that project's committed `docs/`. The shared workspace's state is reserved for its own work.
76
+
77
+ Ponytail and Caveman are explicitly loaded by frontend/backend implementation workers and agents assigned worker implementation tasks. Their snapshots remain in `skills/worker/` rather than the auto-discovered `.agents/skills/` directory. Other roles retain their normal behavior.
78
+
79
+ ## Build and Install an npm Package
80
+
81
+ From the source repository root:
82
+
83
+ ```sh
84
+ npm test
85
+ npm run pack:local
86
+ ```
87
+
88
+ The package name is `@exelalfanso/puppets-orchestration`. This creates `dist/exelalfanso-puppets-orchestration-0.1.0.tgz`. Install a workspace and configure a project from the local tarball:
89
+
90
+ ```sh
91
+ npx --yes --package ./dist/exelalfanso-puppets-orchestration-0.1.0.tgz puppets-orchestration init ../puppets-workspace
92
+ npx --yes --package ./dist/exelalfanso-puppets-orchestration-0.1.0.tgz puppets-orchestration init-project ../my-project --workspace ../puppets-workspace
93
+ ```
94
+
95
+ You can share the tarball without the source repository's `.git` directory. It bundles the CLI, rules, role files, documentation, skill references, and a fresh state template. It excludes active tasks, run records, project repositories, and Git history.
96
+
97
+ After npm publication, the registry commands will be:
98
+
99
+ ```sh
100
+ npx @exelalfanso/puppets-orchestration init ./puppets-workspace
101
+ npx @exelalfanso/puppets-orchestration init-project ./my-project --workspace ./puppets-workspace
102
+ ```
103
+
104
+ These registry commands are not currently the installation path. Use source or a local tarball until publication is complete.
105
+
106
+ ## Repository Structure
107
+
108
+ | Location | Purpose |
109
+ | --- | --- |
110
+ | [AGENTS.md](AGENTS.md) | Shared agent working rules |
111
+ | `.agents/*.md` | Agent roles and worker skill policy |
112
+ | [skills/](skills/README.md) | Categorized skill snapshots and references |
113
+ | [docs/](docs/README.md) | Documentation foundation and engineering guidance |
114
+ | `bin/puppets.mjs` | `init` and `init-project` CLI commands |
115
+ | `templates/` | Fresh coordination state template |
116
+ | `tests/` | CLI behavior checks |
117
+ | `.orchestration/` | Local coordination for work on this repository |
118
+ | `dist/` | Generated archives, ignored by Git |
119
+
120
+ Initialized workspaces also receive `.agents/skills/` copies for general skill discovery. Worker-only skills are kept separate.
121
+
122
+ ## Git Ignore and Existing Files
123
+
124
+ Every project repository must ignore `/.orchestration/` because its state, assignments, and run evidence are temporary and checkout-specific. Commit stable project rules and documentation. If repositories live under a shared workspace's `repos/`, that directory is ignored by the shared workspace as well.
125
+
126
+ Both initialization commands preserve existing files. Repeating initialization does not upgrade installed rules, documents, or skill snapshots. Review and update existing workspace files separately when adopting a new package version.
127
+
128
+ ## Optional ZIP Export
129
+
130
+ From the source repository root, use PowerShell:
131
+
132
+ ```powershell
133
+ ./scripts/build-package.ps1
134
+ ```
135
+
136
+ Output: `dist/puppets-orchestration.zip`. Extract it to use the shared workspace manually. For another build, choose a new output filename with `-OutputPath`; existing archives are preserved. The exporter is source tooling and is not installed by `init`.
137
+
138
+ ## License and Publication Status
139
+
140
+ Publication is configured as public under the lowercase npm scope `@exelalfanso`. Log in with an npm account authorized for that scope, confirm the package's distribution license, and publish the verified tarball from the source root:
141
+
142
+ ```sh
143
+ npm login
144
+ npm whoami
145
+ npm publish ./dist/exelalfanso-puppets-orchestration-0.1.0.tgz --access public
146
+ ```
147
+
148
+ The package has not been published to npm. Its original material is temporarily marked `UNLICENSED` until the owner selects a distribution license.
149
+
150
+ Bundled skills retain their upstream metadata and available license files. Their sources are documented in the [skill catalog](skills/README.md), `skills-lock.json`, and the worker snapshot notes.
@@ -0,0 +1,152 @@
1
+ #!/usr/bin/env node
2
+ import { existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, realpathSync, writeFileSync } from 'node:fs';
3
+ import { dirname, join, relative, resolve, sep } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { execFileSync } from 'node:child_process';
6
+
7
+ const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..');
8
+ const roles = ['orchestrator', 'architect', 'backend', 'frontend', 'explorer', 'debugger', 'reviewer', 'tester'];
9
+ const help = `Puppets Orchestration
10
+
11
+ Usage:
12
+ puppets-orchestration init [workspace-directory]
13
+ puppets-orchestration init-project [repo-directory] --workspace <workspace-directory>
14
+
15
+ init creates the shared workspace without Git history.
16
+ init-project adds local coordination state to an existing Git checkout.
17
+ Existing files are preserved. Project AGENTS.md and .gitignore receive additive guidance.
18
+ `;
19
+
20
+ function ensureDirectory(root, directory) {
21
+ const segments = relative(root, directory).split(sep).filter(Boolean);
22
+ if (segments.includes('..')) throw new Error('Destination must stay inside the selected directory.');
23
+ let current = root;
24
+ for (const segment of segments) {
25
+ current = join(current, segment);
26
+ if (existsSync(current)) {
27
+ const stat = lstatSync(current);
28
+ if (stat.isSymbolicLink() || !stat.isDirectory()) throw new Error(`Expected a normal directory: ${current}`);
29
+ } else {
30
+ mkdirSync(current);
31
+ }
32
+ }
33
+ }
34
+
35
+ function writeMissing(root, destination, content) {
36
+ const path = join(root, destination);
37
+ ensureDirectory(root, dirname(path));
38
+ try {
39
+ writeFileSync(path, content, { flag: 'wx' });
40
+ } catch (error) {
41
+ if (error.code !== 'EEXIST') throw error;
42
+ if (lstatSync(path).isSymbolicLink() || !lstatSync(path).isFile()) throw new Error(`Expected a normal file: ${path}`);
43
+ }
44
+ }
45
+
46
+ function copyMissing(root, source, destination) {
47
+ const stat = lstatSync(source);
48
+ if (stat.isSymbolicLink()) throw new Error(`Symlink is not a distributable asset: ${source}`);
49
+ if (stat.isDirectory()) {
50
+ ensureDirectory(root, join(root, destination));
51
+ for (const entry of readdirSync(source)) copyMissing(root, join(source, entry), join(destination, entry));
52
+ } else {
53
+ writeMissing(root, destination, readFileSync(source));
54
+ }
55
+ }
56
+
57
+ function appendText(root, filename, update) {
58
+ const path = join(root, filename);
59
+ if (existsSync(path) && (lstatSync(path).isSymbolicLink() || !lstatSync(path).isFile())) {
60
+ throw new Error(`Expected a normal file: ${path}`);
61
+ }
62
+ const current = existsSync(path) ? readFileSync(path, 'utf8') : '';
63
+ const addition = update(current);
64
+ if (addition) writeFileSync(path, current + (current && !current.endsWith('\n') ? '\n' : '') + addition);
65
+ }
66
+
67
+ function ignoreRules(root, rules) {
68
+ appendText(root, '.gitignore', current => {
69
+ const existing = new Set(current.split(/\r?\n/).map(line => line.trim()));
70
+ const missing = rules.filter(rule => !existing.has(rule));
71
+ return missing.length ? '\n# Puppets local coordination and workspace outputs\n' + missing.join('\n') + '\n' : '';
72
+ });
73
+ }
74
+
75
+ function scaffoldState(root, state) {
76
+ ensureDirectory(root, join(root, '.orchestration/tasks'));
77
+ ensureDirectory(root, join(root, '.orchestration/runs'));
78
+ writeMissing(root, '.orchestration/state.md', state);
79
+ }
80
+
81
+ function initWorkspace(path) {
82
+ mkdirSync(path, { recursive: true });
83
+ const root = realpathSync(path);
84
+ if (root === packageRoot || packageRoot.startsWith(root + sep) || root.startsWith(packageRoot + sep)) {
85
+ throw new Error('Choose a workspace outside the installed package directory.');
86
+ }
87
+ for (const asset of ['README.md', 'AGENTS.md', 'skills-lock.json', 'docs', 'skills', '.agents/worker-skills.md']) {
88
+ copyMissing(root, join(packageRoot, asset), asset);
89
+ }
90
+ for (const role of roles) copyMissing(root, join(packageRoot, `.agents/${role}.md`), `.agents/${role}.md`);
91
+ for (const category of readdirSync(join(packageRoot, 'skills'), { withFileTypes: true }).filter(entry => entry.isDirectory())) {
92
+ if (category.name === 'worker') continue;
93
+ for (const skill of readdirSync(join(packageRoot, 'skills', category.name), { withFileTypes: true }).filter(entry => entry.isDirectory())) {
94
+ copyMissing(root, join(packageRoot, 'skills', category.name, skill.name), `.agents/skills/${skill.name}`);
95
+ }
96
+ }
97
+ scaffoldState(root, readFileSync(join(packageRoot, 'templates/state.md'), 'utf8'));
98
+ ignoreRules(root, ['/.orchestration/', '/repos/', '/dist/']);
99
+ console.log(`Workspace ready: ${root}\nShared roles, documentation, and skills installed; existing files preserved.`);
100
+ }
101
+
102
+ function git(root, args) {
103
+ return execFileSync('git', ['-C', root, ...args], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }).trim();
104
+ }
105
+
106
+ function initProject(path, workspacePath) {
107
+ const root = realpathSync(path);
108
+ const workspace = realpathSync(workspacePath);
109
+ const gitRoot = realpathSync(git(root, ['rev-parse', '--show-toplevel']));
110
+ if (root !== gitRoot) throw new Error('Select the Git checkout root, not a subdirectory.');
111
+ if (root === workspace) throw new Error('The project and shared workspace must be separate directories.');
112
+ if (!existsSync(join(workspace, '.agents/orchestrator.md')) || !existsSync(join(workspace, 'AGENTS.md'))) {
113
+ throw new Error('Shared workspace is missing its AGENTS.md or orchestrator role. Run init first.');
114
+ }
115
+ if (git(root, ['ls-files', '--', '.orchestration'])) {
116
+ throw new Error('.orchestration is already tracked. Resolve its migration before running init-project; no files have been changed.');
117
+ }
118
+ let branch;
119
+ try { branch = git(root, ['symbolic-ref', '--quiet', '--short', 'HEAD']); }
120
+ catch { branch = `detached ${git(root, ['rev-parse', '--short', 'HEAD'])}`; }
121
+ const state = readFileSync(join(packageRoot, 'templates/state.md'), 'utf8')
122
+ .replace('TBD — select a project checkout and record its branch.', `- Checkout: ${root}\n- Branch: ${branch}\n- Shared workspace: ${workspace}`);
123
+ scaffoldState(root, state);
124
+ ignoreRules(root, ['/.orchestration/']);
125
+ const workspaceLink = relative(root, workspace).split(sep).join('/');
126
+ appendText(root, 'AGENTS.md', current => current.includes('<!-- puppets-orchestration -->') ? '' : `\n<!-- puppets-orchestration -->\n## Shared Orchestration Context\n\nShared workspace: ${JSON.stringify(workspaceLink)} (relative to this repo root).\nLoad its AGENTS.md, the applicable role in .agents/, and docs/engineering/project-orchestration.md explicitly.\nUse this checkout's .orchestration/ for task state and evidence; keep it ignored by Git.\nKeep durable requirements and decisions in this repo's docs/ and project rules in AGENTS.md.\nExisting project instructions remain authoritative for project-specific behavior.\n`);
127
+ git(root, ['check-ignore', '--', '.orchestration/state.md']);
128
+ console.log(`Project ready: ${root}\nLocal .orchestration is ignored; commit AGENTS.md and .gitignore after review.`);
129
+ }
130
+
131
+ try {
132
+ const args = process.argv.slice(2);
133
+ const command = args.shift();
134
+ if (!command || command === '--help' || command === '-h') {
135
+ console.log(help);
136
+ } else if (command === 'init') {
137
+ if (args.length > 1 || args[0]?.startsWith('-')) throw new Error(help);
138
+ initWorkspace(resolve(args[0] || '.'));
139
+ } else if (command === 'init-project') {
140
+ const workspaceIndex = args.indexOf('--workspace');
141
+ if (workspaceIndex < 0 || !args[workspaceIndex + 1] || args[workspaceIndex + 1].startsWith('-')) throw new Error(help);
142
+ const workspace = args[workspaceIndex + 1];
143
+ args.splice(workspaceIndex, 2);
144
+ if (args.length > 1 || args[0]?.startsWith('-')) throw new Error(help);
145
+ initProject(resolve(args[0] || '.'), resolve(workspace));
146
+ } else {
147
+ throw new Error(`Unknown command: ${command}\n${help}`);
148
+ }
149
+ } catch (error) {
150
+ console.error(`Error: ${error.message}`);
151
+ process.exitCode = 1;
152
+ }