@hybridlabor-api/aos 4.6.6 → 4.7.1

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 (503) hide show
  1. package/.agents/agents.md +9 -3
  2. package/.agents/nodes.json +7 -2
  3. package/.agents/state.schema.json +26 -1
  4. package/.agents/vendor-manifest.json +56 -0
  5. package/.agents/workflows/startcycle-graph.md +2 -2
  6. package/.claude/agents/architect.md +7 -2
  7. package/.claude/agents/security-reviewer.md +1 -1
  8. package/.claude/agents/techlead.md +2 -0
  9. package/.claude/hooks/memb-inject.mjs +257 -135
  10. package/.claude/hooks/trail-relay.mjs +18 -0
  11. package/.claude/settings.json +70 -0
  12. package/.claude/workflows/startcycle-dispatch.mjs +203 -17
  13. package/.opencode/agents/architect.md +7 -2
  14. package/.opencode/agents/techlead.md +2 -0
  15. package/.opencode/plugins/bdb-aos.js +75 -0
  16. package/THIRD_PARTY_NOTICES.md +57 -1
  17. package/bin/aos-doctor.mjs +366 -0
  18. package/bin/aos-store.mjs +167 -0
  19. package/bin/aos-uninstall.mjs +55 -1
  20. package/docs/AUDIT_BRIEF_ECC_STORE.md +122 -0
  21. package/docs/PLAN_AOS_STORE_PHASE1.md +190 -0
  22. package/docs/handover/agenttrail-for-ao.md +58 -0
  23. package/docs/handover/deja-for-ao.md +51 -0
  24. package/installer.js +182 -38
  25. package/lib/aos-archify-contract.mjs +277 -0
  26. package/lib/ecc-store-index.json +1 -0
  27. package/mcp_config.json +8 -0
  28. package/mcps/mcsc/README.md +24 -0
  29. package/mcps/mcsc/package-lock.json +1234 -0
  30. package/mcps/mcsc/package.json +14 -0
  31. package/mcps/mcsc/packages/core/bin/mcsc.js +162 -0
  32. package/mcps/mcsc/packages/core/rulebook.default.yaml +49 -0
  33. package/mcps/mcsc/packages/core/schema/rulebook.schema.json +56 -0
  34. package/mcps/mcsc/packages/core/src/adapters/agy.js +107 -0
  35. package/mcps/mcsc/packages/core/src/adapters/codex.js +179 -0
  36. package/mcps/mcsc/packages/core/src/adapters/native.js +14 -0
  37. package/mcps/mcsc/packages/core/src/adapters/opencode.js +183 -0
  38. package/mcps/mcsc/packages/core/src/adapters/types.js +21 -0
  39. package/mcps/mcsc/packages/core/src/capabilities/buildOfferTable.js +34 -0
  40. package/mcps/mcsc/packages/core/src/capabilities/registry.js +99 -0
  41. package/mcps/mcsc/packages/core/src/capabilities/types.js +24 -0
  42. package/mcps/mcsc/packages/core/src/detect/cache.js +47 -0
  43. package/mcps/mcsc/packages/core/src/detect/inventory.js +73 -0
  44. package/mcps/mcsc/packages/core/src/detect/probes.js +158 -0
  45. package/mcps/mcsc/packages/core/src/detect/types.js +26 -0
  46. package/mcps/mcsc/packages/core/src/rulebook/load.js +53 -0
  47. package/mcps/mcsc/packages/core/src/rulebook/resolve.js +227 -0
  48. package/mcps/mcsc/packages/core/src/rulebook/rulebook.types.js +89 -0
  49. package/mcps/mcsc/packages/core/src/trail.js +17 -0
  50. package/mcps/mcsc/packages/mcp/server.js +302 -0
  51. package/mcps/mcsc/server.js +2 -0
  52. package/package.json +8 -2
  53. package/scripts/build-ecc-store-index.mjs +147 -0
  54. package/skills/basic/bdbmediastorm/SKILL.md +1 -1
  55. package/skills/basic/godmode-ui-ux/SKILL.md +2 -2
  56. package/skills/basic/godmode-ui-ux/references/anti-slop-rules.md +44 -40
  57. package/skills/basic/godmode-ui-ux/references/taste-archetypes.md +49 -0
  58. package/skills/basic/startcycle/SKILL.md +7 -0
  59. package/skills/basic/startcycle-graph/SKILL.md +25 -0
  60. package/skills/basic/startcycle-graph-user/SKILL.md +3 -0
  61. package/skills/basic/teamwork-preview/SKILL.md +2 -0
  62. package/skills/bdbrainstorm/SKILL.md +1 -0
  63. package/skills/global_config/agenttrail/LICENSE +21 -0
  64. package/skills/global_config/agenttrail/SKILL.md +48 -0
  65. package/skills/global_config/agenttrail/bin/agenttrail.mjs +1113 -0
  66. package/skills/global_config/agenttrail/public/index.html +662 -0
  67. package/skills/global_config/aos-project-init/SKILL.md +25 -5
  68. package/skills/global_config/aos-setup/SKILL.md +34 -1
  69. package/skills/global_config/aos-setup/scripts/aos-doctor.mjs +115 -1
  70. package/skills/global_config/archify/LICENSE +22 -0
  71. package/skills/global_config/archify/SKILL.md +140 -0
  72. package/skills/global_config/archify/THIRD_PARTY_NOTICES.md +69 -0
  73. package/skills/global_config/archify/assets/JetBrainsMono-OFL.txt +93 -0
  74. package/skills/global_config/archify/assets/template.html +14937 -0
  75. package/skills/global_config/archify/bin/archify.mjs +2139 -0
  76. package/skills/global_config/archify/bin/open-artifact.mjs +86 -0
  77. package/skills/global_config/archify/bin/preview.mjs +653 -0
  78. package/skills/global_config/archify/bin/visual-check.mjs +829 -0
  79. package/skills/global_config/archify/brand-marks/README.md +31 -0
  80. package/skills/global_config/archify/brand-marks/catalog.json +131 -0
  81. package/skills/global_config/archify/delta/architecture-delta.mjs +1232 -0
  82. package/skills/global_config/archify/examples/agent-run.lifecycle.json +60 -0
  83. package/skills/global_config/archify/examples/agent-tool-call.workflow.json +94 -0
  84. package/skills/global_config/archify/examples/async-job-roundtrip.sequence.json +61 -0
  85. package/skills/global_config/archify/examples/brand-aware-delivery.architecture.json +47 -0
  86. package/skills/global_config/archify/examples/cache-miss-request.sequence.json +82 -0
  87. package/skills/global_config/archify/examples/checkout-platform.base.architecture.json +31 -0
  88. package/skills/global_config/archify/examples/checkout-platform.head.architecture.json +31 -0
  89. package/skills/global_config/archify/examples/dataflow-product-analytics.html +15048 -0
  90. package/skills/global_config/archify/examples/deployment-release.lifecycle.json +49 -0
  91. package/skills/global_config/archify/examples/event-stream.dataflow.json +57 -0
  92. package/skills/global_config/archify/examples/incident-response.workflow.json +64 -0
  93. package/skills/global_config/archify/examples/lifecycle-agent-run.html +14983 -0
  94. package/skills/global_config/archify/examples/product-analytics.dataflow.json +76 -0
  95. package/skills/global_config/archify/examples/production-deployment.architecture.json +71 -0
  96. package/skills/global_config/archify/examples/release-delivery.workflow.json +62 -0
  97. package/skills/global_config/archify/examples/sequence-cache-miss-request.html +15063 -0
  98. package/skills/global_config/archify/examples/web-app-rendered.html +15012 -0
  99. package/skills/global_config/archify/examples/web-app.architecture.json +46 -0
  100. package/skills/global_config/archify/examples/workflow-agent-tool-call-rendered.html +15054 -0
  101. package/skills/global_config/archify/migrations/workflow-v2.mjs +279 -0
  102. package/skills/global_config/archify/package.json +39 -0
  103. package/skills/global_config/archify/recipes/scenarios.mjs +391 -0
  104. package/skills/global_config/archify/references/authoring-contract.md +247 -0
  105. package/skills/global_config/archify/references/brand-marks.md +65 -0
  106. package/skills/global_config/archify/references/delivery-contract.md +138 -0
  107. package/skills/global_config/archify/references/viewer-runtime.md +45 -0
  108. package/skills/global_config/archify/renderers/architecture/grid.mjs +62 -0
  109. package/skills/global_config/archify/renderers/architecture/render-architecture.mjs +1078 -0
  110. package/skills/global_config/archify/renderers/dataflow/README.md +104 -0
  111. package/skills/global_config/archify/renderers/dataflow/render-dataflow.mjs +483 -0
  112. package/skills/global_config/archify/renderers/lifecycle/README.md +115 -0
  113. package/skills/global_config/archify/renderers/lifecycle/render-lifecycle.mjs +561 -0
  114. package/skills/global_config/archify/renderers/sequence/README.md +114 -0
  115. package/skills/global_config/archify/renderers/sequence/render-sequence.mjs +464 -0
  116. package/skills/global_config/archify/renderers/shared/brand-marks.mjs +563 -0
  117. package/skills/global_config/archify/renderers/shared/cli.mjs +218 -0
  118. package/skills/global_config/archify/renderers/shared/desktop-readability.mjs +26 -0
  119. package/skills/global_config/archify/renderers/shared/diagnostics.mjs +160 -0
  120. package/skills/global_config/archify/renderers/shared/engineering-profiles.mjs +157 -0
  121. package/skills/global_config/archify/renderers/shared/generated-brand-marks.mjs +2003 -0
  122. package/skills/global_config/archify/renderers/shared/generated-validators.mjs +13 -0
  123. package/skills/global_config/archify/renderers/shared/geometry.mjs +1423 -0
  124. package/skills/global_config/archify/renderers/shared/i18n.mjs +595 -0
  125. package/skills/global_config/archify/renderers/shared/layout-report.mjs +40 -0
  126. package/skills/global_config/archify/renderers/shared/legend.mjs +217 -0
  127. package/skills/global_config/archify/renderers/shared/output-path.mjs +340 -0
  128. package/skills/global_config/archify/renderers/shared/repository-evidence.mjs +239 -0
  129. package/skills/global_config/archify/renderers/shared/repository-location.mjs +58 -0
  130. package/skills/global_config/archify/renderers/shared/text-fit.mjs +49 -0
  131. package/skills/global_config/archify/renderers/shared/utils.mjs +232 -0
  132. package/skills/global_config/archify/renderers/shared/validator.mjs +86 -0
  133. package/skills/global_config/archify/renderers/workflow/README.md +223 -0
  134. package/skills/global_config/archify/renderers/workflow/render-workflow.mjs +35 -0
  135. package/skills/global_config/archify/renderers/workflow/workflow-compiler.mjs +4400 -0
  136. package/skills/global_config/archify/renderers/workflow/workflow-migration-geometry.mjs +144 -0
  137. package/skills/global_config/archify/schemas/README.md +211 -0
  138. package/skills/global_config/archify/schemas/architecture.schema.json +178 -0
  139. package/skills/global_config/archify/schemas/common.schema.json +115 -0
  140. package/skills/global_config/archify/schemas/dataflow.schema.json +243 -0
  141. package/skills/global_config/archify/schemas/lifecycle.schema.json +266 -0
  142. package/skills/global_config/archify/schemas/sequence.schema.json +223 -0
  143. package/skills/global_config/archify/schemas/workflow.schema.json +428 -0
  144. package/skills/global_config/archify/scripts/check-render-output.mjs +916 -0
  145. package/skills/global_config/archify/scripts/generate-brand-marks.mjs +141 -0
  146. package/skills/global_config/archify/scripts/generate-validators.mjs +66 -0
  147. package/skills/global_config/archify/scripts/render-examples.mjs +26 -0
  148. package/skills/global_config/archify/skill-release.json +10 -0
  149. package/skills/global_config/ask-tim/SKILL.md +10 -0
  150. package/skills/global_config/bdb-security-audit/SKILL.md +109 -0
  151. package/skills/global_config/bdb-security-audit/references/audit-checklists.md +172 -0
  152. package/skills/global_config/bdb-security-audit/references/skylos-guide.md +139 -0
  153. package/skills/global_config/bdb-security-audit/references/xalgorix-bridge.md +110 -0
  154. package/skills/global_config/bdbdesignpro/SKILL.md +4 -4
  155. package/skills/global_config/bdbdesignpro/references/bdb-motion-tokens.md +52 -31
  156. package/skills/global_config/bdbresilience/SKILL.md +10 -0
  157. package/skills/global_config/brag/SKILL.md +179 -0
  158. package/skills/global_config/brag/assets/music/README.md +20 -0
  159. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-1-by-ende-dot-app.music-cues.json +3846 -0
  160. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-1-by-ende-dot-app.music-cues.md +35 -0
  161. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-10-by-ende-dot-app.music-cues.json +1826 -0
  162. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-10-by-ende-dot-app.music-cues.md +35 -0
  163. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-11-by-ende-dot-app.music-cues.json +2266 -0
  164. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-11-by-ende-dot-app.music-cues.md +35 -0
  165. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-12-by-ende-dot-app.music-cues.json +2806 -0
  166. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-12-by-ende-dot-app.music-cues.md +35 -0
  167. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-9-by-ende-dot-app.music-cues.json +2796 -0
  168. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-9-by-ende-dot-app.music-cues.md +35 -0
  169. package/skills/global_config/brag/assets/music/happy-beats-business-moves-vol-1-by-ende-dot-app.mp3 +0 -0
  170. package/skills/global_config/brag/assets/music/happy-beats-business-moves-vol-10-by-ende-dot-app.mp3 +0 -0
  171. package/skills/global_config/brag/assets/music/happy-beats-business-moves-vol-11-by-ende-dot-app.mp3 +0 -0
  172. package/skills/global_config/brag/assets/music/happy-beats-business-moves-vol-12-by-ende-dot-app.mp3 +0 -0
  173. package/skills/global_config/brag/assets/music/happy-beats-business-moves-vol-9-by-ende-dot-app.mp3 +0 -0
  174. package/skills/global_config/brag/assets/sfx/casino/card-fan-1.ogg +0 -0
  175. package/skills/global_config/brag/assets/sfx/casino/card-fan-2.ogg +0 -0
  176. package/skills/global_config/brag/assets/sfx/casino/card-place-1.ogg +0 -0
  177. package/skills/global_config/brag/assets/sfx/casino/card-place-2.ogg +0 -0
  178. package/skills/global_config/brag/assets/sfx/casino/card-place-3.ogg +0 -0
  179. package/skills/global_config/brag/assets/sfx/casino/card-place-4.ogg +0 -0
  180. package/skills/global_config/brag/assets/sfx/casino/card-shove-1.ogg +0 -0
  181. package/skills/global_config/brag/assets/sfx/casino/card-shove-2.ogg +0 -0
  182. package/skills/global_config/brag/assets/sfx/casino/card-shove-3.ogg +0 -0
  183. package/skills/global_config/brag/assets/sfx/casino/card-shove-4.ogg +0 -0
  184. package/skills/global_config/brag/assets/sfx/casino/card-shuffle.ogg +0 -0
  185. package/skills/global_config/brag/assets/sfx/casino/card-slide-1.ogg +0 -0
  186. package/skills/global_config/brag/assets/sfx/casino/card-slide-2.ogg +0 -0
  187. package/skills/global_config/brag/assets/sfx/casino/card-slide-3.ogg +0 -0
  188. package/skills/global_config/brag/assets/sfx/casino/card-slide-4.ogg +0 -0
  189. package/skills/global_config/brag/assets/sfx/casino/card-slide-5.ogg +0 -0
  190. package/skills/global_config/brag/assets/sfx/casino/card-slide-6.ogg +0 -0
  191. package/skills/global_config/brag/assets/sfx/casino/card-slide-7.ogg +0 -0
  192. package/skills/global_config/brag/assets/sfx/casino/card-slide-8.ogg +0 -0
  193. package/skills/global_config/brag/assets/sfx/casino/cards-pack-open-1.ogg +0 -0
  194. package/skills/global_config/brag/assets/sfx/casino/cards-pack-open-2.ogg +0 -0
  195. package/skills/global_config/brag/assets/sfx/casino/chip-lay-1.ogg +0 -0
  196. package/skills/global_config/brag/assets/sfx/casino/chip-lay-2.ogg +0 -0
  197. package/skills/global_config/brag/assets/sfx/casino/chip-lay-3.ogg +0 -0
  198. package/skills/global_config/brag/assets/sfx/casino/chips-collide-1.ogg +0 -0
  199. package/skills/global_config/brag/assets/sfx/casino/chips-collide-2.ogg +0 -0
  200. package/skills/global_config/brag/assets/sfx/casino/chips-collide-3.ogg +0 -0
  201. package/skills/global_config/brag/assets/sfx/casino/chips-collide-4.ogg +0 -0
  202. package/skills/global_config/brag/assets/sfx/casino/chips-handle-1.ogg +0 -0
  203. package/skills/global_config/brag/assets/sfx/casino/chips-handle-2.ogg +0 -0
  204. package/skills/global_config/brag/assets/sfx/casino/chips-handle-3.ogg +0 -0
  205. package/skills/global_config/brag/assets/sfx/casino/chips-handle-4.ogg +0 -0
  206. package/skills/global_config/brag/assets/sfx/casino/chips-handle-6.ogg +0 -0
  207. package/skills/global_config/brag/assets/sfx/casino/chips-stack-1.ogg +0 -0
  208. package/skills/global_config/brag/assets/sfx/casino/chips-stack-2.ogg +0 -0
  209. package/skills/global_config/brag/assets/sfx/casino/chips-stack-3.ogg +0 -0
  210. package/skills/global_config/brag/assets/sfx/casino/chips-stack-4.ogg +0 -0
  211. package/skills/global_config/brag/assets/sfx/casino/chips-stack-5.ogg +0 -0
  212. package/skills/global_config/brag/assets/sfx/casino/chips-stack-6.ogg +0 -0
  213. package/skills/global_config/brag/assets/sfx/casino/dice-grab-1.ogg +0 -0
  214. package/skills/global_config/brag/assets/sfx/casino/dice-grab-2.ogg +0 -0
  215. package/skills/global_config/brag/assets/sfx/casino/dice-shake-1.ogg +0 -0
  216. package/skills/global_config/brag/assets/sfx/casino/dice-shake-2.ogg +0 -0
  217. package/skills/global_config/brag/assets/sfx/casino/dice-shake-3.ogg +0 -0
  218. package/skills/global_config/brag/assets/sfx/casino/dice-throw-1.ogg +0 -0
  219. package/skills/global_config/brag/assets/sfx/casino/dice-throw-2.ogg +0 -0
  220. package/skills/global_config/brag/assets/sfx/casino/dice-throw-3.ogg +0 -0
  221. package/skills/global_config/brag/assets/sfx/casino/die-throw-1.ogg +0 -0
  222. package/skills/global_config/brag/assets/sfx/casino/die-throw-2.ogg +0 -0
  223. package/skills/global_config/brag/assets/sfx/casino/die-throw-3.ogg +0 -0
  224. package/skills/global_config/brag/assets/sfx/casino/die-throw-4.ogg +0 -0
  225. package/skills/global_config/brag/assets/sfx/impact/footstep_carpet_000.ogg +0 -0
  226. package/skills/global_config/brag/assets/sfx/impact/footstep_carpet_003.ogg +0 -0
  227. package/skills/global_config/brag/assets/sfx/impact/footstep_carpet_004.ogg +0 -0
  228. package/skills/global_config/brag/assets/sfx/impact/footstep_concrete_000.ogg +0 -0
  229. package/skills/global_config/brag/assets/sfx/impact/footstep_concrete_001.ogg +0 -0
  230. package/skills/global_config/brag/assets/sfx/impact/footstep_concrete_002.ogg +0 -0
  231. package/skills/global_config/brag/assets/sfx/impact/footstep_concrete_003.ogg +0 -0
  232. package/skills/global_config/brag/assets/sfx/impact/footstep_concrete_004.ogg +0 -0
  233. package/skills/global_config/brag/assets/sfx/impact/footstep_grass_000.ogg +0 -0
  234. package/skills/global_config/brag/assets/sfx/impact/footstep_grass_001.ogg +0 -0
  235. package/skills/global_config/brag/assets/sfx/impact/footstep_grass_002.ogg +0 -0
  236. package/skills/global_config/brag/assets/sfx/impact/footstep_grass_003.ogg +0 -0
  237. package/skills/global_config/brag/assets/sfx/impact/footstep_grass_004.ogg +0 -0
  238. package/skills/global_config/brag/assets/sfx/impact/footstep_snow_000.ogg +0 -0
  239. package/skills/global_config/brag/assets/sfx/impact/footstep_snow_001.ogg +0 -0
  240. package/skills/global_config/brag/assets/sfx/impact/footstep_snow_002.ogg +0 -0
  241. package/skills/global_config/brag/assets/sfx/impact/footstep_snow_003.ogg +0 -0
  242. package/skills/global_config/brag/assets/sfx/impact/footstep_snow_004.ogg +0 -0
  243. package/skills/global_config/brag/assets/sfx/impact/footstep_wood_000.ogg +0 -0
  244. package/skills/global_config/brag/assets/sfx/impact/footstep_wood_001.ogg +0 -0
  245. package/skills/global_config/brag/assets/sfx/impact/footstep_wood_002.ogg +0 -0
  246. package/skills/global_config/brag/assets/sfx/impact/footstep_wood_003.ogg +0 -0
  247. package/skills/global_config/brag/assets/sfx/impact/footstep_wood_004.ogg +0 -0
  248. package/skills/global_config/brag/assets/sfx/impact/impactBell_heavy_000.ogg +0 -0
  249. package/skills/global_config/brag/assets/sfx/impact/impactBell_heavy_003.ogg +0 -0
  250. package/skills/global_config/brag/assets/sfx/impact/impactBell_heavy_004.ogg +0 -0
  251. package/skills/global_config/brag/assets/sfx/impact/impactGeneric_light_000.ogg +0 -0
  252. package/skills/global_config/brag/assets/sfx/impact/impactGeneric_light_001.ogg +0 -0
  253. package/skills/global_config/brag/assets/sfx/impact/impactGeneric_light_002.ogg +0 -0
  254. package/skills/global_config/brag/assets/sfx/impact/impactGeneric_light_003.ogg +0 -0
  255. package/skills/global_config/brag/assets/sfx/impact/impactGeneric_light_004.ogg +0 -0
  256. package/skills/global_config/brag/assets/sfx/impact/impactGlass_heavy_002.ogg +0 -0
  257. package/skills/global_config/brag/assets/sfx/impact/impactGlass_light_001.ogg +0 -0
  258. package/skills/global_config/brag/assets/sfx/impact/impactGlass_light_002.ogg +0 -0
  259. package/skills/global_config/brag/assets/sfx/impact/impactGlass_light_003.ogg +0 -0
  260. package/skills/global_config/brag/assets/sfx/impact/impactGlass_medium_000.ogg +0 -0
  261. package/skills/global_config/brag/assets/sfx/impact/impactGlass_medium_002.ogg +0 -0
  262. package/skills/global_config/brag/assets/sfx/impact/impactGlass_medium_004.ogg +0 -0
  263. package/skills/global_config/brag/assets/sfx/impact/impactMetal_heavy_000.ogg +0 -0
  264. package/skills/global_config/brag/assets/sfx/impact/impactMetal_heavy_002.ogg +0 -0
  265. package/skills/global_config/brag/assets/sfx/impact/impactMetal_heavy_004.ogg +0 -0
  266. package/skills/global_config/brag/assets/sfx/impact/impactMetal_light_002.ogg +0 -0
  267. package/skills/global_config/brag/assets/sfx/impact/impactMetal_light_003.ogg +0 -0
  268. package/skills/global_config/brag/assets/sfx/impact/impactMetal_medium_000.ogg +0 -0
  269. package/skills/global_config/brag/assets/sfx/impact/impactMetal_medium_001.ogg +0 -0
  270. package/skills/global_config/brag/assets/sfx/impact/impactMetal_medium_002.ogg +0 -0
  271. package/skills/global_config/brag/assets/sfx/impact/impactMetal_medium_003.ogg +0 -0
  272. package/skills/global_config/brag/assets/sfx/impact/impactMetal_medium_004.ogg +0 -0
  273. package/skills/global_config/brag/assets/sfx/impact/impactMining_001.ogg +0 -0
  274. package/skills/global_config/brag/assets/sfx/impact/impactPlank_medium_000.ogg +0 -0
  275. package/skills/global_config/brag/assets/sfx/impact/impactPlank_medium_001.ogg +0 -0
  276. package/skills/global_config/brag/assets/sfx/impact/impactPlank_medium_002.ogg +0 -0
  277. package/skills/global_config/brag/assets/sfx/impact/impactPlank_medium_003.ogg +0 -0
  278. package/skills/global_config/brag/assets/sfx/impact/impactPlank_medium_004.ogg +0 -0
  279. package/skills/global_config/brag/assets/sfx/impact/impactPlate_heavy_000.ogg +0 -0
  280. package/skills/global_config/brag/assets/sfx/impact/impactPlate_heavy_001.ogg +0 -0
  281. package/skills/global_config/brag/assets/sfx/impact/impactPlate_heavy_002.ogg +0 -0
  282. package/skills/global_config/brag/assets/sfx/impact/impactPlate_heavy_003.ogg +0 -0
  283. package/skills/global_config/brag/assets/sfx/impact/impactPlate_heavy_004.ogg +0 -0
  284. package/skills/global_config/brag/assets/sfx/impact/impactPlate_light_000.ogg +0 -0
  285. package/skills/global_config/brag/assets/sfx/impact/impactPlate_light_001.ogg +0 -0
  286. package/skills/global_config/brag/assets/sfx/impact/impactPlate_light_002.ogg +0 -0
  287. package/skills/global_config/brag/assets/sfx/impact/impactPlate_light_003.ogg +0 -0
  288. package/skills/global_config/brag/assets/sfx/impact/impactPlate_light_004.ogg +0 -0
  289. package/skills/global_config/brag/assets/sfx/impact/impactPlate_medium_000.ogg +0 -0
  290. package/skills/global_config/brag/assets/sfx/impact/impactPlate_medium_001.ogg +0 -0
  291. package/skills/global_config/brag/assets/sfx/impact/impactPlate_medium_002.ogg +0 -0
  292. package/skills/global_config/brag/assets/sfx/impact/impactPlate_medium_003.ogg +0 -0
  293. package/skills/global_config/brag/assets/sfx/impact/impactPlate_medium_004.ogg +0 -0
  294. package/skills/global_config/brag/assets/sfx/impact/impactPunch_heavy_000.ogg +0 -0
  295. package/skills/global_config/brag/assets/sfx/impact/impactPunch_heavy_001.ogg +0 -0
  296. package/skills/global_config/brag/assets/sfx/impact/impactPunch_heavy_002.ogg +0 -0
  297. package/skills/global_config/brag/assets/sfx/impact/impactPunch_heavy_003.ogg +0 -0
  298. package/skills/global_config/brag/assets/sfx/impact/impactPunch_heavy_004.ogg +0 -0
  299. package/skills/global_config/brag/assets/sfx/impact/impactPunch_medium_000.ogg +0 -0
  300. package/skills/global_config/brag/assets/sfx/impact/impactPunch_medium_001.ogg +0 -0
  301. package/skills/global_config/brag/assets/sfx/impact/impactPunch_medium_002.ogg +0 -0
  302. package/skills/global_config/brag/assets/sfx/impact/impactPunch_medium_003.ogg +0 -0
  303. package/skills/global_config/brag/assets/sfx/impact/impactPunch_medium_004.ogg +0 -0
  304. package/skills/global_config/brag/assets/sfx/impact/impactSoft_heavy_000.ogg +0 -0
  305. package/skills/global_config/brag/assets/sfx/impact/impactSoft_heavy_001.ogg +0 -0
  306. package/skills/global_config/brag/assets/sfx/impact/impactSoft_heavy_002.ogg +0 -0
  307. package/skills/global_config/brag/assets/sfx/impact/impactSoft_heavy_003.ogg +0 -0
  308. package/skills/global_config/brag/assets/sfx/impact/impactSoft_heavy_004.ogg +0 -0
  309. package/skills/global_config/brag/assets/sfx/impact/impactSoft_medium_000.ogg +0 -0
  310. package/skills/global_config/brag/assets/sfx/impact/impactSoft_medium_001.ogg +0 -0
  311. package/skills/global_config/brag/assets/sfx/impact/impactSoft_medium_002.ogg +0 -0
  312. package/skills/global_config/brag/assets/sfx/impact/impactSoft_medium_003.ogg +0 -0
  313. package/skills/global_config/brag/assets/sfx/impact/impactSoft_medium_004.ogg +0 -0
  314. package/skills/global_config/brag/assets/sfx/impact/impactTin_medium_000.ogg +0 -0
  315. package/skills/global_config/brag/assets/sfx/impact/impactTin_medium_001.ogg +0 -0
  316. package/skills/global_config/brag/assets/sfx/impact/impactTin_medium_002.ogg +0 -0
  317. package/skills/global_config/brag/assets/sfx/impact/impactTin_medium_003.ogg +0 -0
  318. package/skills/global_config/brag/assets/sfx/impact/impactTin_medium_004.ogg +0 -0
  319. package/skills/global_config/brag/assets/sfx/impact/impactWood_heavy_000.ogg +0 -0
  320. package/skills/global_config/brag/assets/sfx/impact/impactWood_heavy_001.ogg +0 -0
  321. package/skills/global_config/brag/assets/sfx/impact/impactWood_heavy_002.ogg +0 -0
  322. package/skills/global_config/brag/assets/sfx/impact/impactWood_heavy_003.ogg +0 -0
  323. package/skills/global_config/brag/assets/sfx/impact/impactWood_heavy_004.ogg +0 -0
  324. package/skills/global_config/brag/assets/sfx/impact/impactWood_light_000.ogg +0 -0
  325. package/skills/global_config/brag/assets/sfx/impact/impactWood_light_001.ogg +0 -0
  326. package/skills/global_config/brag/assets/sfx/impact/impactWood_light_002.ogg +0 -0
  327. package/skills/global_config/brag/assets/sfx/impact/impactWood_light_003.ogg +0 -0
  328. package/skills/global_config/brag/assets/sfx/impact/impactWood_light_004.ogg +0 -0
  329. package/skills/global_config/brag/assets/sfx/impact/impactWood_medium_000.ogg +0 -0
  330. package/skills/global_config/brag/assets/sfx/impact/impactWood_medium_001.ogg +0 -0
  331. package/skills/global_config/brag/assets/sfx/impact/impactWood_medium_002.ogg +0 -0
  332. package/skills/global_config/brag/assets/sfx/impact/impactWood_medium_003.ogg +0 -0
  333. package/skills/global_config/brag/assets/sfx/impact/impactWood_medium_004.ogg +0 -0
  334. package/skills/global_config/brag/assets/sfx/interface/bong_001.ogg +0 -0
  335. package/skills/global_config/brag/assets/sfx/interface/click_001.ogg +0 -0
  336. package/skills/global_config/brag/assets/sfx/interface/click_002.ogg +0 -0
  337. package/skills/global_config/brag/assets/sfx/interface/click_003.ogg +0 -0
  338. package/skills/global_config/brag/assets/sfx/interface/click_004.ogg +0 -0
  339. package/skills/global_config/brag/assets/sfx/interface/click_005.ogg +0 -0
  340. package/skills/global_config/brag/assets/sfx/interface/drop_001.ogg +0 -0
  341. package/skills/global_config/brag/assets/sfx/interface/drop_002.ogg +0 -0
  342. package/skills/global_config/brag/assets/sfx/interface/drop_003.ogg +0 -0
  343. package/skills/global_config/brag/assets/sfx/interface/error_005.ogg +0 -0
  344. package/skills/global_config/brag/assets/sfx/interface/error_006.ogg +0 -0
  345. package/skills/global_config/brag/assets/sfx/interface/glitch_002.ogg +0 -0
  346. package/skills/global_config/brag/assets/sfx/interface/glitch_004.ogg +0 -0
  347. package/skills/global_config/brag/assets/sfx/interface/select_008.ogg +0 -0
  348. package/skills/global_config/brag/assets/sfx/interface/switch_001.ogg +0 -0
  349. package/skills/global_config/brag/assets/sfx/interface/switch_002.ogg +0 -0
  350. package/skills/global_config/brag/assets/sfx/interface/switch_004.ogg +0 -0
  351. package/skills/global_config/brag/assets/sfx/interface/switch_005.ogg +0 -0
  352. package/skills/global_config/brag/assets/sfx/interface/switch_006.ogg +0 -0
  353. package/skills/global_config/brag/assets/sfx/interface/switch_007.ogg +0 -0
  354. package/skills/global_config/brag/assets/sfx/keyboard/keypress-001.wav +0 -0
  355. package/skills/global_config/brag/assets/sfx/keyboard/keypress-002.wav +0 -0
  356. package/skills/global_config/brag/assets/sfx/keyboard/keypress-003.wav +0 -0
  357. package/skills/global_config/brag/assets/sfx/keyboard/keypress-004.wav +0 -0
  358. package/skills/global_config/brag/assets/sfx/keyboard/keypress-005.wav +0 -0
  359. package/skills/global_config/brag/assets/sfx/keyboard/keypress-006.wav +0 -0
  360. package/skills/global_config/brag/assets/sfx/keyboard/keypress-007.wav +0 -0
  361. package/skills/global_config/brag/assets/sfx/keyboard/keypress-008.wav +0 -0
  362. package/skills/global_config/brag/assets/sfx/keyboard/keypress-009.wav +0 -0
  363. package/skills/global_config/brag/assets/sfx/keyboard/keypress-010.wav +0 -0
  364. package/skills/global_config/brag/assets/sfx/keyboard/keypress-011.wav +0 -0
  365. package/skills/global_config/brag/assets/sfx/keyboard/keypress-012.wav +0 -0
  366. package/skills/global_config/brag/assets/sfx/keyboard/keypress-013.wav +0 -0
  367. package/skills/global_config/brag/assets/sfx/keyboard/keypress-014.wav +0 -0
  368. package/skills/global_config/brag/assets/sfx/keyboard/keypress-015.wav +0 -0
  369. package/skills/global_config/brag/assets/sfx/keyboard/keypress-016.wav +0 -0
  370. package/skills/global_config/brag/assets/sfx/keyboard/keypress-017.wav +0 -0
  371. package/skills/global_config/brag/assets/sfx/keyboard/keypress-018.wav +0 -0
  372. package/skills/global_config/brag/assets/sfx/keyboard/keypress-019.wav +0 -0
  373. package/skills/global_config/brag/assets/sfx/keyboard/keypress-020.wav +0 -0
  374. package/skills/global_config/brag/assets/sfx/keyboard/keypress-021.wav +0 -0
  375. package/skills/global_config/brag/assets/sfx/keyboard/keypress-022.wav +0 -0
  376. package/skills/global_config/brag/assets/sfx/keyboard/keypress-023.wav +0 -0
  377. package/skills/global_config/brag/assets/sfx/keyboard/keypress-024.wav +0 -0
  378. package/skills/global_config/brag/assets/sfx/keyboard/keypress-025.wav +0 -0
  379. package/skills/global_config/brag/assets/sfx/keyboard/keypress-026.wav +0 -0
  380. package/skills/global_config/brag/assets/sfx/keyboard/keypress-027.wav +0 -0
  381. package/skills/global_config/brag/assets/sfx/keyboard/keypress-028.wav +0 -0
  382. package/skills/global_config/brag/assets/sfx/keyboard/keypress-029.wav +0 -0
  383. package/skills/global_config/brag/assets/sfx/keyboard/keypress-030.wav +0 -0
  384. package/skills/global_config/brag/assets/sfx/keyboard/keypress-031.wav +0 -0
  385. package/skills/global_config/brag/assets/sfx/keyboard/keypress-032.wav +0 -0
  386. package/skills/global_config/brag/assets/sfx/sfx-analysis.json +15584 -0
  387. package/skills/global_config/brag/assets/sfx/sfx-analysis.md +75 -0
  388. package/skills/global_config/brag/assets/sfx/ui/click1.ogg +0 -0
  389. package/skills/global_config/brag/assets/sfx/ui/click2.ogg +0 -0
  390. package/skills/global_config/brag/assets/sfx/ui/click3.ogg +0 -0
  391. package/skills/global_config/brag/assets/sfx/ui/click4.ogg +0 -0
  392. package/skills/global_config/brag/assets/sfx/ui/click5.ogg +0 -0
  393. package/skills/global_config/brag/assets/sfx/ui/mouseclick1.ogg +0 -0
  394. package/skills/global_config/brag/assets/sfx/ui/rollover1.ogg +0 -0
  395. package/skills/global_config/brag/assets/sfx/ui/rollover2.ogg +0 -0
  396. package/skills/global_config/brag/assets/sfx/ui/rollover4.ogg +0 -0
  397. package/skills/global_config/brag/assets/sfx/ui/rollover5.ogg +0 -0
  398. package/skills/global_config/brag/assets/sfx/ui/switch1.ogg +0 -0
  399. package/skills/global_config/brag/assets/sfx/ui/switch10.ogg +0 -0
  400. package/skills/global_config/brag/assets/sfx/ui/switch11.ogg +0 -0
  401. package/skills/global_config/brag/assets/sfx/ui/switch12.ogg +0 -0
  402. package/skills/global_config/brag/assets/sfx/ui/switch13.ogg +0 -0
  403. package/skills/global_config/brag/assets/sfx/ui/switch14.ogg +0 -0
  404. package/skills/global_config/brag/assets/sfx/ui/switch15.ogg +0 -0
  405. package/skills/global_config/brag/assets/sfx/ui/switch16.ogg +0 -0
  406. package/skills/global_config/brag/assets/sfx/ui/switch17.ogg +0 -0
  407. package/skills/global_config/brag/assets/sfx/ui/switch18.ogg +0 -0
  408. package/skills/global_config/brag/assets/sfx/ui/switch19.ogg +0 -0
  409. package/skills/global_config/brag/assets/sfx/ui/switch2.ogg +0 -0
  410. package/skills/global_config/brag/assets/sfx/ui/switch20.ogg +0 -0
  411. package/skills/global_config/brag/assets/sfx/ui/switch21.ogg +0 -0
  412. package/skills/global_config/brag/assets/sfx/ui/switch22.ogg +0 -0
  413. package/skills/global_config/brag/assets/sfx/ui/switch23.ogg +0 -0
  414. package/skills/global_config/brag/assets/sfx/ui/switch24.ogg +0 -0
  415. package/skills/global_config/brag/assets/sfx/ui/switch25.ogg +0 -0
  416. package/skills/global_config/brag/assets/sfx/ui/switch26.ogg +0 -0
  417. package/skills/global_config/brag/assets/sfx/ui/switch27.ogg +0 -0
  418. package/skills/global_config/brag/assets/sfx/ui/switch28.ogg +0 -0
  419. package/skills/global_config/brag/assets/sfx/ui/switch29.ogg +0 -0
  420. package/skills/global_config/brag/assets/sfx/ui/switch3.ogg +0 -0
  421. package/skills/global_config/brag/assets/sfx/ui/switch30.ogg +0 -0
  422. package/skills/global_config/brag/assets/sfx/ui/switch31.ogg +0 -0
  423. package/skills/global_config/brag/assets/sfx/ui/switch32.ogg +0 -0
  424. package/skills/global_config/brag/assets/sfx/ui/switch33.ogg +0 -0
  425. package/skills/global_config/brag/assets/sfx/ui/switch34.ogg +0 -0
  426. package/skills/global_config/brag/assets/sfx/ui/switch35.ogg +0 -0
  427. package/skills/global_config/brag/assets/sfx/ui/switch36.ogg +0 -0
  428. package/skills/global_config/brag/assets/sfx/ui/switch37.ogg +0 -0
  429. package/skills/global_config/brag/assets/sfx/ui/switch38.ogg +0 -0
  430. package/skills/global_config/brag/assets/sfx/ui/switch4.ogg +0 -0
  431. package/skills/global_config/brag/assets/sfx/ui/switch5.ogg +0 -0
  432. package/skills/global_config/brag/assets/sfx/ui/switch6.ogg +0 -0
  433. package/skills/global_config/brag/assets/sfx/ui/switch7.ogg +0 -0
  434. package/skills/global_config/brag/assets/sfx/ui/switch8.ogg +0 -0
  435. package/skills/global_config/brag/assets/sfx/ui/switch9.ogg +0 -0
  436. package/skills/global_config/brag/references/audio.md +307 -0
  437. package/skills/global_config/brag/references/step-1-inspect.md +133 -0
  438. package/skills/global_config/brag/references/step-2-plan.md +234 -0
  439. package/skills/global_config/brag/references/step-3-compose.md +210 -0
  440. package/skills/global_config/brag/references/step-4-deliver.md +168 -0
  441. package/skills/global_config/brag/references/tones.md +231 -0
  442. package/skills/global_config/brag/scripts/analyze_music_cues.py +309 -0
  443. package/skills/global_config/brag/scripts/pyproject.toml +14 -0
  444. package/skills/global_config/brag/scripts/uv.lock +819 -0
  445. package/skills/global_config/deja-memory/SKILL.md +42 -0
  446. package/skills/global_config/editable-design/LICENSE +202 -0
  447. package/skills/global_config/editable-design/README.md +34 -0
  448. package/skills/global_config/editable-design/SKILL.md +630 -0
  449. package/skills/global_config/editable-design/THIRD_PARTY_NOTICES.md +10 -0
  450. package/skills/global_config/editable-design/agents/openai.yaml +4 -0
  451. package/skills/global_config/editable-design/assets/editor/layer-editor.css +262 -0
  452. package/skills/global_config/editable-design/assets/editor/layer-editor.js +1929 -0
  453. package/skills/global_config/editable-design/assets/poster-starter/README.md +92 -0
  454. package/skills/global_config/editable-design/assets/poster-starter/assets/.gitkeep +0 -0
  455. package/skills/global_config/editable-design/assets/poster-starter/index.html +91 -0
  456. package/skills/global_config/editable-design/assets/poster-starter/poster.json +6 -0
  457. package/skills/global_config/editable-design/assets/poster-starter/reference/.gitkeep +1 -0
  458. package/skills/global_config/editable-design/assets/replay/icons/assets.png +0 -0
  459. package/skills/global_config/editable-design/assets/replay/icons/html.png +0 -0
  460. package/skills/global_config/editable-design/assets/replay/icons/input.png +0 -0
  461. package/skills/global_config/editable-design/assets/replay/icons/layers.png +0 -0
  462. package/skills/global_config/editable-design/assets/replay/icons/plan.png +0 -0
  463. package/skills/global_config/editable-design/assets/replay/icons/reference.png +0 -0
  464. package/skills/global_config/editable-design/assets/replay/icons/review.png +0 -0
  465. package/skills/global_config/editable-design/assets/replay/index.html +59 -0
  466. package/skills/global_config/editable-design/assets/replay/replay-motion.js +410 -0
  467. package/skills/global_config/editable-design/assets/replay/replay.css +380 -0
  468. package/skills/global_config/editable-design/assets/replay/replay.js +374 -0
  469. package/skills/global_config/editable-design/font-kit/package-lock.json +115 -0
  470. package/skills/global_config/editable-design/font-kit/package.json +19 -0
  471. package/skills/global_config/editable-design/pack.sh +20 -0
  472. package/skills/global_config/editable-design/references/asset-architecture.md +72 -0
  473. package/skills/global_config/editable-design/references/editor-pitfalls.md +70 -0
  474. package/skills/global_config/editable-design/references/editor-runtime.md +131 -0
  475. package/skills/global_config/editable-design/references/font-system.md +89 -0
  476. package/skills/global_config/editable-design/references/imagery.md +145 -0
  477. package/skills/global_config/editable-design/references/layout-typography.md +116 -0
  478. package/skills/global_config/editable-design/references/replay-contract.md +169 -0
  479. package/skills/global_config/editable-design/scripts/_browser.mjs +247 -0
  480. package/skills/global_config/editable-design/scripts/bake.mjs +87 -0
  481. package/skills/global_config/editable-design/scripts/build-replay.mjs +316 -0
  482. package/skills/global_config/editable-design/scripts/check-contract.mjs +293 -0
  483. package/skills/global_config/editable-design/scripts/check-fonts.sh +252 -0
  484. package/skills/global_config/editable-design/scripts/check-poster.sh +70 -0
  485. package/skills/global_config/editable-design/scripts/doctor.sh +78 -0
  486. package/skills/global_config/editable-design/scripts/explode.mjs +115 -0
  487. package/skills/global_config/editable-design/scripts/font-kit.mjs +187 -0
  488. package/skills/global_config/editable-design/scripts/import-asset.sh +23 -0
  489. package/skills/global_config/editable-design/scripts/init-poster.sh +64 -0
  490. package/skills/global_config/editable-design/scripts/install-font-kit.sh +13 -0
  491. package/skills/global_config/editable-design/scripts/package-lock.json +334 -0
  492. package/skills/global_config/editable-design/scripts/package.json +14 -0
  493. package/skills/global_config/editable-design/scripts/remove-chroma-key.py +201 -0
  494. package/skills/global_config/editable-design/scripts/render-poster.sh +202 -0
  495. package/skills/global_config/editable-design/scripts/trace.sh +159 -0
  496. package/skills/global_config/editable-design/scripts/verify-replay.mjs +97 -0
  497. package/skills/global_config/editable-design/scripts/verify.mjs +782 -0
  498. package/skills/global_config/editable-design/scripts/wire-editor.mjs +104 -0
  499. package/skills/global_config/editable-design/tests/fixtures/small-explode/index.html +86 -0
  500. package/skills/global_config/mcsc/SKILL.md +60 -0
  501. package/skills/global_config/plan-canvas/SKILL.md +8 -0
  502. package/skills/global_config/plan-canvas/scripts/lib/plan-canvas/server.js +31 -6
  503. package/skills/global_config/plan-canvas/scripts/plan-canvas.js +4 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hybridlabor-api/aos",
3
- "version": "4.6.6",
3
+ "version": "4.7.1",
4
4
  "description": "AOS — A Curated AI AGENT OS. Optimized agent skills and add-ons like memB, OpenWiki, Heimdall Token Saver, and Godmode architectures.",
5
5
  "main": "installer.js",
6
6
  "engines": {
@@ -12,14 +12,20 @@
12
12
  "bdb-agent-skills-pro": "installer.js",
13
13
  "bdb-agent-skills": "installer.js",
14
14
  "aos-plan-canvas": "skills/global_config/plan-canvas/scripts/plan-canvas.js",
15
+ "aos-trail": "skills/global_config/agenttrail/bin/agenttrail.mjs",
16
+ "aos-archify": "skills/global_config/archify/bin/archify.mjs",
15
17
  "aos-dashboard": "bin/aos-dashboard.mjs",
16
18
  "aos-config": "bin/aos-config.mjs",
19
+ "aos-store": "bin/aos-store.mjs",
20
+ "aos-doctor": "bin/aos-doctor.mjs",
17
21
  "aos-uninstall": "bin/aos-uninstall.mjs"
18
22
  },
19
23
  "scripts": {
20
24
  "validate": "node scripts/validate-skills.mjs",
21
25
  "validate:strict": "node scripts/validate-skills.mjs --strict",
22
- "test": "node scripts/validate-skills.mjs --selftest && node scripts/validate-skills.mjs"
26
+ "store:index": "node scripts/build-ecc-store-index.mjs",
27
+ "doctor": "node bin/aos-doctor.mjs",
28
+ "test": "node scripts/validate-skills.mjs --selftest && node scripts/validate-skills.mjs && node tests/aos-store.test.mjs && node tests/aos-doctor.test.mjs"
23
29
  },
24
30
  "publishConfig": {
25
31
  "access": "public"
@@ -0,0 +1,147 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { execFileSync } from 'node:child_process';
4
+ import { createHash } from 'node:crypto';
5
+ import { existsSync, mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'node:fs';
6
+ import { basename, dirname, join, relative, resolve, sep } from 'node:path';
7
+ import { tmpdir } from 'node:os';
8
+ import { fileURLToPath } from 'node:url';
9
+
10
+ const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '..');
11
+ const MANIFEST_PATH = join(ROOT, '.agents', 'vendor-manifest.json');
12
+ const OUTPUT_PATH = join(ROOT, 'lib', 'ecc-store-index.json');
13
+ const manifest = JSON.parse(readFileSync(MANIFEST_PATH, 'utf8'));
14
+ const entry = manifest.vendors?.['ecc-store'];
15
+ if (!entry?.pinned_commit || !/^[a-f0-9]{40}$/.test(entry.pinned_commit)) {
16
+ throw new Error('Missing or invalid .agents/vendor-manifest.json ECC store pin');
17
+ }
18
+
19
+ const checkout = mkdtempSync(join(tmpdir(), 'aos-ecc-store-'));
20
+
21
+ function runGit(args) {
22
+ return execFileSync('git', args, { cwd: checkout, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }).trim();
23
+ }
24
+
25
+ function walk(dir, output = []) {
26
+ if (!existsSync(dir)) return output;
27
+ for (const item of readdirSync(dir, { withFileTypes: true })) {
28
+ const fullPath = join(dir, item.name);
29
+ if (item.isDirectory()) walk(fullPath, output);
30
+ else if (item.isFile()) output.push(fullPath);
31
+ }
32
+ return output;
33
+ }
34
+
35
+ function frontmatterValue(text, key) {
36
+ const match = text.match(/^---\s*\n([\s\S]*?)\n---/);
37
+ if (!match) return '';
38
+ const lines = match[1].split(/\r?\n/);
39
+ const start = lines.findIndex((line) => new RegExp(`^${key}:`, 'i').test(line));
40
+ if (start < 0) return '';
41
+ const first = lines[start].slice(lines[start].indexOf(':') + 1).trim();
42
+ if (first && !/^[>|][-+]?$/.test(first)) return first.replace(/^['"]|['"]$/g, '');
43
+ const values = [];
44
+ for (let index = start + 1; index < lines.length; index += 1) {
45
+ const line = lines[index];
46
+ if (line && !/^\s/.test(line)) break;
47
+ values.push(line.trim());
48
+ }
49
+ return values.join(' ').trim();
50
+ }
51
+
52
+ function categoryFor(name) {
53
+ const value = name.toLowerCase();
54
+ if (/(media|video|motion|3d|blender|manim|creative|remotion|comfy)/.test(value)) return 'media-eventtech';
55
+ if (/(design|frontend|react|vue|angular|next|tailwind|ui-|uiux|brand)/.test(value) || /(^|-)ui($|-)/.test(value)) return 'design-ui-ux';
56
+ if (/(agent|pipeline|orchestr|autonom|benchmark|eval|security|skill|workflow)/.test(value)) return 'bdb-core';
57
+ if (/(hardware|pcb|circuit|electronic)/.test(value)) return 'engineering-hardware';
58
+ if (/(engineering|architecture|database|api|devops|docker|kubernetes|python|pytorch|typescript|rust|golang|java|spring|django|fastapi|react|test|build|resolver|reviewer|performance)/.test(value)) return 'engineering-method';
59
+ return 'library';
60
+ }
61
+
62
+ function compatibilityWarnings(text) {
63
+ const warnings = [];
64
+ if (/\bBash\b/.test(text)) warnings.push('mentions Bash');
65
+ if (/\bView\b/.test(text)) warnings.push('mentions View');
66
+ return warnings;
67
+ }
68
+
69
+ function localNames() {
70
+ const names = new Set();
71
+ for (const file of walk(join(ROOT, 'skills'))) {
72
+ if (basename(file) === 'SKILL.md') {
73
+ const text = readFileSync(file, 'utf8');
74
+ names.add((frontmatterValue(text, 'name') || basename(dirname(file))).trim().toLowerCase());
75
+ }
76
+ }
77
+ for (const root of [join(ROOT, '.claude', 'agents'), join(ROOT, '.agents', 'agents'), join(ROOT, 'agents')]) {
78
+ if (!existsSync(root)) continue;
79
+ for (const name of readdirSync(root)) names.add(name.replace(/\.md$/i, '').toLowerCase());
80
+ }
81
+ return names;
82
+ }
83
+
84
+ function hash(content) {
85
+ return createHash('sha256').update(content).digest('hex');
86
+ }
87
+
88
+ function itemFromFile(file, type) {
89
+ const content = readFileSync(file, 'utf8');
90
+ const name = type === 'skills'
91
+ ? (frontmatterValue(content, 'name') || basename(dirname(file))).trim()
92
+ : basename(file, '.md');
93
+ if (!/^[A-Za-z0-9_-]+$/.test(name)) throw new Error(`Invalid store name: ${name}`);
94
+ const description = (frontmatterValue(content, 'description') || type).replace(/\s+/g, ' ').trim();
95
+ const shortDescription = description.length > 32 ? `${description.slice(0, 31)}…` : description;
96
+ const base = {
97
+ description: shortDescription,
98
+ category: categoryFor(name),
99
+ tier: 'free',
100
+ origin: 'ecc',
101
+ requires_auth: false,
102
+ sha256: hash(content),
103
+ upstream_path: relative(checkout, file).split(sep).join('/'),
104
+ };
105
+ return { name, item: base, warnings: compatibilityWarnings(content) };
106
+ }
107
+
108
+ try {
109
+ runGit(['init', '--quiet']);
110
+ runGit(['remote', 'add', 'origin', entry.upstream]);
111
+ runGit(['fetch', '--quiet', '--depth=1', 'origin', entry.pinned_commit]);
112
+ runGit(['checkout', '--quiet', '--detach', 'FETCH_HEAD']);
113
+ const generatedAt = runGit(['show', '-s', '--format=%cI', 'FETCH_HEAD']);
114
+ const coreNames = localNames();
115
+ const skills = {};
116
+ const subagents = {};
117
+ let compatibilityWarningCount = 0;
118
+ const skillFiles = walk(join(checkout, 'skills')).filter((file) => basename(file) === 'SKILL.md');
119
+ const agentFiles = walk(join(checkout, 'agents')).filter((file) => file.endsWith('.md'));
120
+ for (const file of skillFiles) {
121
+ const { name, item, warnings } = itemFromFile(file, 'skills');
122
+ compatibilityWarningCount += warnings.length;
123
+ if (coreNames.has(name.toLowerCase())) continue;
124
+ skills[name] = item;
125
+ }
126
+ for (const file of agentFiles) {
127
+ const { name, item, warnings } = itemFromFile(file, 'subagents');
128
+ compatibilityWarningCount += warnings.length;
129
+ if (coreNames.has(name.toLowerCase())) continue;
130
+ subagents[name] = item;
131
+ }
132
+ const index = {
133
+ version: '1.0.0',
134
+ generated_at: generatedAt,
135
+ pinned_commit: entry.pinned_commit,
136
+ harness_support: ['claude', 'antigravity', 'codex', 'cursor', 'roo'],
137
+ compatibility_warning_count: compatibilityWarningCount,
138
+ skills: Object.fromEntries(Object.entries(skills).sort(([a], [b]) => a.localeCompare(b))),
139
+ subagents: Object.fromEntries(Object.entries(subagents).sort(([a], [b]) => a.localeCompare(b))),
140
+ };
141
+ const output = JSON.stringify(index) + '\n';
142
+ if (Buffer.byteLength(output) >= 100 * 1024) throw new Error(`Store index exceeds 100 KB: ${Buffer.byteLength(output)} bytes`);
143
+ writeFileSync(OUTPUT_PATH, output);
144
+ console.log(`Wrote ${OUTPUT_PATH} with ${Object.keys(skills).length} skills and ${Object.keys(subagents).length} subagents (${Buffer.byteLength(output)} bytes).`);
145
+ } finally {
146
+ rmSync(checkout, { recursive: true, force: true });
147
+ }
@@ -76,7 +76,7 @@ Define hardware and software nodes as strict bounded contexts:
76
76
 
77
77
  ## 5. Mandatory — Plan Canvas Review
78
78
 
79
- Before this session concludes, run `aos-plan-canvas open <file>` against `signal-flow.md` (or the combined show-control spec), then `aos-plan-canvas await <file>` and leave it running. The user reviews the signal flow diagram, hardware topology, and failover matrix in the browser (Mermaid renders live, click-to-annotate, chat rail). Do not consider the show architecture finalized before an `approve` verdict. A `request_changes` verdict means revise the artifact and reopen — it live-reloads. This is a plain CLI tool, identical regardless of which agent harness runs this skill. See the `plan-canvas` skill.
79
+ Before this session concludes, run `aos-plan-canvas open <file>` against `signal-flow.md` (or the combined show-control spec), then `aos-plan-canvas await <file>` and leave it running. The user reviews the signal flow diagram, hardware topology, and failover matrix in the browser (Mermaid renders live, click-to-annotate, chat rail). Do not consider the show architecture finalized before an `approve` verdict. A `request_changes` verdict means revise the artifact and reopen — it live-reloads. This is a plain CLI tool, identical regardless of which agent harness runs this skill. See the `plan-canvas` skill. If a build follows the approve, Trigger A starts the live map (`agenttrail` skill); `aos-archify` can render the signal flow as a workflow or architecture diagram for the review.
80
80
 
81
81
  ---
82
82
 
@@ -33,7 +33,7 @@ Generate a project-specific DESIGN.md containing:
33
33
  - IF brand colors defined → Color bans (Lila Ban, etc.) = SUSPENDED
34
34
  - IF brand fonts defined → Font bans (Inter Ban, etc.) = SUSPENDED
35
35
  - Pattern-level Anti-Slop (no generic dashboards, no emojis, no card overuse) = ALWAYS ACTIVE
36
- - IF no brand defined → Use defaults from design-tokens.json + all Anti-Slop bans ACTIVE
36
+ - IF no brand defined → Select ONE aesthetic archetype from `references/taste-archetypes.md` (Utilitarian Minimalist, Industrial Brutalist, High-End Tactile, Ethereal Modern) + all Anti-Slop bans ACTIVE
37
37
 
38
38
  ## 1. Anti-Slop Directive
39
39
 
@@ -135,7 +135,7 @@ Master orchestration skill for UI/UX design, enforcing high-agency design taste
135
135
  - Exclude when performing pure backend or DevOps tasks.
136
136
 
137
137
  ## Core Process
138
- 1. Analyze the requested UI against StyleSeed guidelines.
138
+ 1. Analyze the requested UI against project `DESIGN.md` and Anti-Slop guidelines.
139
139
  2. Ensure all spacing and colors utilize DTCG design tokens.
140
140
  3. Implement explicit loading, error, and empty states.
141
141
  4. Apply fluid motion physics for interactions.
@@ -1,64 +1,68 @@
1
- # Anti-Slop Directive & AI Tells Reference
1
+ # Anti-Slop Directive & Craftsmanship Gate
2
2
 
3
- This authoritative reference details all forbidden patterns, AI clichés, and layout mistakes strictly prohibited in BDB frontend designs.
3
+ This authoritative reference details all forbidden patterns, AI clichés, and layout defects prohibited in frontend designs under `godmode-ui-ux`.
4
4
 
5
- ## Brand Discovery Context Rules
6
- - **Brand Defined**: Color bans (Lila Ban, default blue/purple gradient bans) and font bans (Inter ban) are **SUSPENDED**.
7
- - **No Brand Defined**: ALL bans below (including color and font bans) are **ACTIVE**.
8
- - **Pattern Bans**: Layout, content, component, and interaction anti-slop rules are **ALWAYS ACTIVE** regardless of brand.
5
+ ---
6
+
7
+ ## 🧭 Brand Discovery Precedence Rules (STRICT HIERARCHY)
8
+ - **Brand Defined in `DESIGN.md`:** Color bans (Lila/Purple ban) and font bans (Inter ban) are **SUSPENDED**. Project-specific CI colors and typography take absolute precedence.
9
+ - **No Brand Defined:** ALL bans below (including color and font defaults) are **ACTIVE**.
10
+ - **Structural Anti-Slop:** Component, layout, mobile ergonomic, and copywriting anti-slop rules are **ALWAYS ACTIVE** regardless of brand.
9
11
 
10
12
  ---
11
13
 
12
14
  ## 1. Visual & CSS Tells
13
15
 
14
- - [ ] **NO Neon or Outer Glows**: Do not use default high-radius `box-shadow` glows or auto-glows. Use inner borders (`border-white/10`) or subtle, background-tinted diffuse shadows.
15
- - [ ] **NO Pure Black**: Never use `#000000`. Use Off-Black, Zinc-950, or Charcoal (`oklch(0.20 0.01 285)`).
16
- - [ ] **NO Oversaturated Accents**: Desaturate accents to blend elegantly with neutrals (saturation < 80%).
17
- - [ ] **NO Lila / AI Purple-Blue Aesthetic (Lila Ban)**: *(Active only when no brand is defined)* The generic purple/blue SaaS gradient background aesthetic is strictly BANNED. No neon purple button glows, no default mesh backgrounds. Use neutral bases (Zinc/Slate) with high-contrast singular accents (Emerald, Electric Blue, Deep Rose).
18
- - [ ] **NO Excessive Gradient Text**: Do not use text-fill gradients for large section headers or titles.
19
- - [ ] **NO Custom Mouse Cursors**: Custom cursor overlays break accessibility, lag on mobile, and degrade performance.
20
- - [ ] **NO Flat Design Without Hierarchy**: Flat design is not an excuse for missing visual hierarchy. Use multi-layered diffuse shadows tinted to background hues.
21
- - [ ] **NO Arbitrary Z-Index Spam**: Do not spam `z-50` or `z-10`. Use z-index exclusively for systemic layer contexts (navbars, modals, toasts, tooltips).
16
+ - [ ] **NO Neon or Outer Glows:** Never use default high-radius outer `box-shadow` halos. Use 1px inner borders (`border-white/10`) or subtle, background-tinted diffuse shadows.
17
+ - [ ] **NO Pure Black:** Never use `#000000`. Use Off-Black, Zinc-950, or Charcoal (`oklch(0.20 0.01 285)`).
18
+ - [ ] **NO Oversaturated Accents:** Desaturate accents to blend cleanly with neutrals (saturation < 80%).
19
+ - [ ] **NO AI Purple-Blue Default Mesh (Lila Ban):** *(Suspended when brand is defined)* Generic purple/blue SaaS gradient backgrounds are strictly BANNED as defaults. Use neutral bases (Zinc/Slate) with high-contrast singular accents.
20
+ - [ ] **NO Gradient Text for Body or Subheadings:** Text-fill gradients are banned for standard copy; reserve subtle shifts for hero accent words only.
21
+ - [ ] **NO Custom Mouse Cursors:** Custom cursor overlays break accessibility, lag on touch devices, and degrade performance.
22
+ - [ ] **NO Flat Design Without Depth:** Flat design requires visual hierarchy. Use multi-layered diffuse shadows or distinct tonal contrast.
23
+ - [ ] **NO Arbitrary Z-Index Spam:** Do not spam `z-50` or `z-10`. Use z-index exclusively for systemic layer contexts (navbars, modals, toasts, tooltips).
22
24
 
23
25
  ---
24
26
 
25
27
  ## 2. Typography Tells
26
28
 
27
- - [ ] **NO Inter Font Default**: *(Active only when no brand is defined)* Inter as a default font is BANNED. Force unique character using `Geist`, `Outfit`, `Cabinet Grotesk`, or `Satoshi`.
28
- - [ ] **NO System Font Laziness**: Avoid unstyled system fonts (Arial, Roboto, standard system-ui) without explicit design intent.
29
- - [ ] **NO Serif Fonts on Dashboards**: Serif fonts are strictly BANNED for Dashboard/B2B Software UIs. For these contexts, use exclusively high-end Sans-Serif + Mono pairings (`Geist` + `Geist Mono` or `Satoshi` + `JetBrains Mono`). Use Serif strictly for editorial or creative projects.
30
- - [ ] **NO Oversized H1s**: The primary heading should not scream. Control hierarchy with weight, tracking (`tracking-tighter`), and color contrast, not just massive scale.
29
+ - [ ] **NO Inter Font Default:** *(Suspended when brand is defined)* Inter as an unthinking default is BANNED. Select distinct typefaces: `Geist`, `Outfit`, `Cabinet Grotesk`, or `Satoshi`.
30
+ - [ ] **NO System Font Laziness:** Avoid unstyled system fonts (Arial, Roboto, standard system-ui) without explicit design intent.
31
+ - [ ] **NO Serif Fonts on B2B Dashboards:** Serif fonts are BANNED for dense data dashboards. Use high-performance Sans + Mono pairings (`Geist` + `Geist Mono` or `Satoshi` + `JetBrains Mono`).
32
+ - [ ] **NO Oversized H1s:** Primary headings must establish hierarchy with weight, tracking (`tracking-tighter`), and contrast, rather than overwhelming scale.
31
33
 
32
34
  ---
33
35
 
34
- ## 3. Layout & Structure Tells
36
+ ## 3. Layout & Mobile Ergonomics (R-03 / Craftsmanship)
35
37
 
36
- - [ ] **NO Default Sidebar/Header Dashboards**: Do not build standard sidebar/header layouts if the feature is better served as a modal, command palette, or single-column focused view.
37
- - [ ] **NO Centered Hero Sections (when Variance > 4)**: Centered Hero/H1 sections are strictly BANNED when `DESIGN_VARIANCE > 4`. Use split screen (50/50), left-aligned content with right-aligned asset, or asymmetric whitespace.
38
- - [ ] **NO 3-Column Equal Card Layouts**: The generic "3 equal cards horizontally" feature row is BANNED. Use a 2-column zig-zag, asymmetric grid (e.g. 70/30), or horizontal scrolling approach instead.
39
- - [ ] **NO Arbitrary Border-Radius Mixing**: Do not mix `rounded-md` and `rounded-2xl` randomly. Follow the mathematical token scale (`sm: 6px`, `md: 12px`, `lg: 16px`, `xl: 24px`, `2xl: 40px`, `full: 9999px`).
40
- - [ ] **NO Card Overuse in High Density**: For `VISUAL_DENSITY > 7`, generic card containers are strictly BANNED. Use logical grouping via `border-t`, `divide-y`, or purely negative space.
41
- - [ ] **NO Viewport Instability (`h-screen`)**: NEVER use `h-screen` for full-height hero sections. ALWAYS use `min-h-[100dvh]` to prevent layout jumping on mobile browsers (iOS Safari).
42
- - [ ] **NO Fragile Flex-Math**: NEVER use complex flexbox percentage math (`w-[calc(33%-1rem)]`). ALWAYS use CSS Grid (`grid grid-cols-1 md:grid-cols-3 gap-6`).
38
+ - [ ] **NO Default Sidebar/Header Dashboards:** Do not build cookie-cutter sidebar layouts if the feature is better served as a command palette, focused panel, or single-column flow.
39
+ - [ ] **NO Centered Hero Sections (when Variance > 4):** Centered Hero/H1 sections are BANNED when `DESIGN_VARIANCE > 4`. Use asymmetric splits (60/40), left-aligned type with right-aligned visual assets, or disciplined whitespace.
40
+ - [ ] **NO 3-Column Equal Card Layouts:** The generic "3 equal cards horizontally" feature row is BANNED. Use bento grids, 2-column zig-zag, or asymmetric horizontal flows.
41
+ - [ ] **NO Arbitrary Border-Radius Mixing:** Adhere strictly to the mathematical token scale (`sm: 6px`, `md: 12px`, `lg: 16px`, `xl: 24px`, `2xl: 40px`, `full: 9999px`).
42
+ - [ ] **NO Card Overuse in High Density:** For `VISUAL_DENSITY > 7`, generic card wrappers are BANNED. Group content via structural dividers (`divide-y`, `border-t`) or pure whitespace.
43
+ - [ ] **NO Viewport Instability (`h-screen`):** NEVER use `h-screen` for full-height sections. ALWAYS use `min-h-[100dvh]` to prevent viewport jumping on mobile browsers (iOS Safari).
44
+ - [ ] **NO Sub-44px Touch Targets:** On touch devices, every button, link, and interactive icon must have a minimum interactive hit area of `44x44px` (`min-h-[44px] min-w-[44px]`).
45
+ - [ ] **NO Fragile Flex-Math:** NEVER use fragile percentage math (`w-[calc(33%-1rem)]`). ALWAYS use CSS Grid (`grid grid-cols-1 md:grid-cols-3 gap-6`).
43
46
 
44
47
  ---
45
48
 
46
- ## 4. Content, Copywriting & Data Tells (The "Jane Doe" Effect)
49
+ ## 4. Copywriting & Content Integrity (R-02 / No AI Fluff)
47
50
 
48
- - [ ] **NO Generic Names**: "John Doe", "Jane Doe", "Sarah Chan", and "Jack Su" are BANNED. Use realistic, contextual names.
49
- - [ ] **NO Startup Slop Brand Names**: "Acme", "Nexus", "SmartFlow", "TechCorp". Invent premium, contextually relevant brand names.
50
- - [ ] **NO AI Copywriting Clichés**: Banned words: "Elevate", "Seamless", "Unleash", "Next-Gen", "Tailored", "Empower", "Revolutionize", "Frictionless". Use direct, concrete action verbs.
51
- - [ ] **NO Fake / Predictable Numbers**: Avoid predictable demo values like `99.99%`, `50%`, or basic phone numbers (`1234567`). Use organic, messy data (`47.2%`, `+1 (312) 847-1928`).
52
- - [ ] **NO Emoji Icons [CRITICAL]**: NEVER use emojis in code, markup, text content, or alt text. Replace all symbols with Phosphor, Radix, or Lucide SVG icons.
51
+ - [ ] **NO AI Copywriting Clichés:** The following buzzwords are strictly BANNED:
52
+ *"Elevate", "Seamless", "Unleash", "Next-Gen", "Tailored", "Empower", "Revolutionize", "Frictionless", "Supercharge", "Game-changer".*
53
+ Write plain, clear, concrete, human language.
54
+ - [ ] **NO Generic Placeholder Personas:** "John Doe", "Jane Doe", "Sarah Chan", and "Jack Su" are BANNED. Use realistic, domain-specific names.
55
+ - [ ] **NO Cliché Startup Names:** "Acme", "Nexus", "SmartFlow", "TechCorp". Use authentic, contextual brand naming.
56
+ - [ ] **NO Fake Statistics:** "99.9% customer satisfaction", "Loved by 10,000+ teams" without real context or evidence are BANNED.
53
57
 
54
58
  ---
55
59
 
56
- ## 5. External Resources & Component Tells
60
+ ## 5. UI Completeness & Accessibility (R-25, R-27, R-32)
57
61
 
58
- - [ ] **NO Broken Unsplash Links**: Do not use raw Unsplash URLs. Use absolute, reliable placeholders (`https://picsum.photos/seed/{string}/800/600`) or SVG UI Avatars.
59
- - [ ] **NO Uncustomized shadcn/ui**: You may use `shadcn/ui`, but NEVER in its generic default state. You MUST customize radii, colors, and shadows to match project tokens.
60
- - [ ] **NO Missing Interactive Lifecycle States**: Every interactive component must provide:
61
- - **Loading State**: Skeletal loaders matching component dimensions (avoid generic circular spinners).
62
- - **Empty State**: Purposeful, helpful empty state indicating how to populate data.
63
- - **Error State**: Inline form/data error reporting with recovery paths.
64
- - **Tactile Feedback**: On `:active`, apply physical push simulation (`scale-[0.98]` or `-translate-y-[1px]`).
62
+ - [ ] **Full UI State Handling:** Every data component must explicitly implement:
63
+ 1. **Loading State:** Skeleton loader (not generic spinning wheels).
64
+ 2. **Empty State:** Helpful zero-data message with a clear call-to-action.
65
+ 3. **Error State:** Human-readable error message with recovery/retry option.
66
+ 4. **Success State:** Clear feedback upon action completion.
67
+ - [ ] **Contrast Compliance:** Text must satisfy WCAG AA contrast (minimum `4.5:1` for normal body text, `3:1` for large text).
68
+ - [ ] **Keyboard Accessibility:** Every interactive element must display visible, accessible focus indicators (`focus-visible:ring-2 focus-visible:ring-offset-2`).
@@ -0,0 +1,49 @@
1
+ # Aesthetic Taste Archetypes Reference
2
+
3
+ Sourced from `taste-skill` and integrated into AOS `godmode-ui-ux`.
4
+ When Phase 0 Brand Discovery indicates no pre-existing client CI, the engineer or agent selects ONE of these archetypes rather than generating generic, uninspired AI layouts.
5
+
6
+ ---
7
+
8
+ ## 1. Utilitarian Minimalist & Editorial
9
+ **Best for:** Dev tools, documentation, knowledge bases, modern SaaS platforms, editorial publications.
10
+
11
+ - **Palette:** High-contrast warm monochrome. Off-white/cream backgrounds in light mode (`#fcfbf9`), charcoal/zinc in dark mode (`#121214`). Accents are muted pastels or single sharp contrast tones.
12
+ - **Typography:** Extreme typographic scale contrast. Heavy grotesque or geometric display headlines paired with disciplined, readable body copy (`Geist`, `Cabinet Grotesk`, `Satoshi`).
13
+ - **Layout:** Bento grids with deliberate asymmetric whitespace. Content-first hierarchy where type and negative space structure the page instead of visual noise.
14
+ - **Details:** Hairline 1px structural dividers (`border-zinc-200 dark:border-zinc-800`), flat cards without heavy drop-shadows, zero gradient text.
15
+
16
+ ---
17
+
18
+ ## 2. Industrial Brutalist & Tactical Telemetry
19
+ **Best for:** Analytics dashboards, developer consoles, hardware monitors, command-and-control interfaces.
20
+
21
+ - **Palette:** Deep dark telemetry (`#090a0f`) or Swiss industrial print off-white (`#f4f4f0`). Monochromatic substrate with high-alert accenting (International Klein Blue, Signal Amber, or Crimson Red).
22
+ - **Typography:** Heavy sans-serif display headers paired with monospaced data tables (`JetBrains Mono`, `Geist Mono`). Numbers and status indicators are oversized.
23
+ - **Layout:** Strict modular grids with visible gridlines (`divide-x divide-y`). High information density, metadata timestamps, technical framing brackets `[+]`, coordinate tags.
24
+ - **Details:** Crisp borders, zero rounded pill corners (`rounded-none` or `rounded-sm`), analog precision, functional status badges.
25
+
26
+ ---
27
+
28
+ ## 3. High-End Tactile / Soft Luxury
29
+ **Best for:** FinTech, consumer products, luxury e-commerce, portfolio showcases, premium creative tools.
30
+
31
+ - **Palette:** Deep OLED black / dark zinc (`#09090b`), soft muted surface elevations (`#141417`, `#1c1c21`). Warm neutral highlights.
32
+ - **Typography:** Refined, elegant sans-serif or modern editorial serifs for titles (`PP Editorial New`, `Outfit`, `Plus Jakarta Sans`). Tight tracking on headings (`tracking-tight`).
33
+ - **Layout:** Generous breathing room, floating detached navigation bars with subtle backdrop blur, asymmetric card sizing (e.g. 60/40 splits).
34
+ - **Details:** Ultra-diffuse layered shadows (`box-shadow: 0 20px 40px -15px rgba(0,0,0,0.5)`), 1px subtle top-border highlights (`border-t border-white/10`), haptic feedback on interactive elements.
35
+
36
+ ---
37
+
38
+ ## 4. Ethereal Clean Modern
39
+ **Best for:** AI applications, productivity suites, modern collaborative workspaces.
40
+
41
+ - **Palette:** Neutral slate/zinc foundation. Single high-energy accent token defined in OKLCH (`oklch(0.65 0.22 260)`).
42
+ - **Typography:** Clean geometric Grotesk with high legibility.
43
+ - **Layout:** Fluid responsive bento grid with dynamic card hierarchy, clear primary focal point.
44
+ - **Details:** Micro-interactions on hover, refined 12px/16px rounded corners, crisp accessibility-verified contrast ratios (> 4.5:1 for body text).
45
+
46
+ ---
47
+
48
+ ## 🔒 Enforcement Rule
49
+ Pick **ONE** archetype per project during Phase 0 Brand Discovery. Do not mix disparate styles within the same interface.
@@ -60,6 +60,9 @@ A straight-line run through the BDB agent roster. Whoever invokes this skill inv
60
60
  - **Reads**: the goal (or `/bdbrainstorm` / `/grill-me` output), existing architecture.
61
61
  - **Action**: turns the goal into a system plan with an explicit capability map — module boundaries, dependency direction, what streams the goal actually touches.
62
62
  - **Writes**: `production_artifacts/00_execution_plan.md`
63
+ - The plan uses the agenttrail component convention: `## Name {#id}` components with optional `needs:` / `files:` lines, and tasks as `- [ ] ... {#id}`.
64
+ - The Architect renders the architecture with `aos-archify` to `production_artifacts/00_architecture.html` and links it from the relevant component with a `url:` line.
65
+ - Plan-canvas can review that HTML too.
63
66
 
64
67
  ### 2. TechLead
65
68
  - **Agent**: `techlead`
@@ -70,6 +73,9 @@ A straight-line run through the BDB agent roster. Whoever invokes this skill inv
70
73
  > **Optional — Plan Canvas.** Before or alongside TechLead's gate, the plan can be reviewed in the browser: `aos-plan-canvas open production_artifacts/00_execution_plan.md`, then `aos-plan-canvas await …`. An `approve` verdict is a human confirmation of the gate. This is optional; the pipeline runs unchanged without it. See the `plan-canvas` skill.
71
74
 
72
75
  ### 3. Build (parallel, stream-selective)
76
+
77
+ **Trigger B — start the live map:** `aos-trail . --plan production_artifacts/00_execution_plan.md --no-open` (safe to run twice: it reuses a map already running for this repo). Inside AO (env var `AO_BROWSER_CAPABILITY` set) also run `ao preview <url>`. Tell each build agent to mark its tasks `[~]` before starting work, `[x]` when done, `[!]` when stuck, with an indented `by: <agent>` line, saving the plan file immediately after each change. See the `agenttrail` skill.
78
+
73
79
  Run only the streams the goal actually needs. A plain backend feature does not need step 3a or 3c; a pure copy change does not need 3b. Each stream's `skills:` frontmatter already lists what it should reach for — the invoker passes that list through rather than restating it here.
74
80
 
75
81
  | Stream | Agent | Reads | Writes |
@@ -110,6 +116,7 @@ Run only the streams the goal actually needs. A plain backend feature does not n
110
116
  3. valid trade-off (advisory)
111
117
  4. noise
112
118
  - **Writes**: `production_artifacts/review_findings.md`
119
+ - **Optional — architecture delta**: compare planned vs built architecture with `aos-archify` (see the `archify` skill, architecture delta).
113
120
 
114
121
  **The linear pipeline ends here by default.** A plain build or refactor goal is done at step 4 — it does not automatically drag a quality gate and release report behind it.
115
122
 
@@ -106,6 +106,31 @@ the model followed it "in spirit" inline instead of invoking the script —
106
106
  silently skipping the whole graph, with no `state.json`, no subagents, no
107
107
  Reviewer, and no quality gate ever running).
108
108
 
109
+ ## Live map
110
+
111
+ When the build phase begins, the dispatcher starts the aos-trail live map
112
+ (Trigger B) with the command below; it is safe to run twice, since
113
+ `aos-trail` reuses a map already running for this repo:
114
+ `aos-trail . --plan production_artifacts/00_execution_plan.md --no-open`
115
+ (it prints a URL, default http://localhost:5330; inside AO, where
116
+ `AO_BROWSER_CAPABILITY` is set, also run `ao preview <url>`). Agents follow
117
+ the status-mark rules from the `agenttrail` skill: `[~]` before starting,
118
+ `[x]` when done, `[!]` when stuck, with `by: <agent>`, saving the plan file
119
+ immediately.
120
+
121
+ ## Architecture diagram (Archify, native)
122
+
123
+ Architect authors `production_artifacts/00_architecture.json` (editable truth)
124
+ and delivers `production_artifacts/00_architecture.html` (read-only) via
125
+ `aos-archify validate` / `aos-archify deliver` with `--quality showcase --json`
126
+ at the Architect→TechLead boundary; only a passing showcase receipt (9/9
127
+ checks, 0 errors) sets `state.artifacts.architecture`, and a failed
128
+ validate/deliver preserves the previous HTML and escalates instead of
129
+ proceeding silently. The plan links the diagram with a
130
+ `url: production_artifacts/00_architecture.html` line so the live map opens it
131
+ from the card. Review the HTML in plan-canvas alongside the plan:
132
+ `aos-plan-canvas open production_artifacts/00_architecture.html`.
133
+
109
134
  ## Why this file is a thin router, not a spec
110
135
 
111
136
  The full contract — state schema, node/edge table, the Stop-hook
@@ -138,6 +138,9 @@ that silently inherits that is the exact waste this tiering exists to avoid.
138
138
  - Report the outcome directly to the user. Nothing gets written to
139
139
  `.agents/`, no `state.json`, no persistent contract — this graph existed for
140
140
  the duration of the task and is gone once it's done.
141
+ - Optionally run `aos-trail . --no-open` (no `--plan`, because this variant
142
+ writes no plan file) to watch the workers' file activity live in the
143
+ browser; see the `agenttrail` skill.
141
144
 
142
145
  ## 5. When to reach for `/startcycle-graph` instead
143
146
 
@@ -195,6 +195,8 @@ Seek explicit approval from the user before triggering execution.
195
195
 
196
196
  Once approved by the user:
197
197
 
198
+ Before delegating, start the live map (Trigger B) so the user can follow the team: `aos-trail . --no-open` (or with `--plan <plan-file>` if one exists) (safe to run twice: it reuses a map already running for this repo). Inside AO (env var `AO_BROWSER_CAPABILITY` set) also run `ao preview <url>`. See the `agenttrail` skill.
199
+
198
200
  ### 1. In Antigravity Harness
199
201
  If running in Google Antigravity with native subagent support:
200
202
  - Call `invoke_subagent`:
@@ -37,6 +37,7 @@ You are strictly required to enforce the following 6 pillars in your process:
37
37
  ### 6. Shipping Godmode & Pipeline Hand-off
38
38
  - Before the brainstorm concludes, verify that the plan satisfies the `godmode-shipping` rules (Spec-Driven Development, feature flags, rollback strategies).
39
39
  - **Mandatory — Plan Canvas review.** Write the aligned plan to a file, then run `aos-plan-canvas open <file>` followed by `aos-plan-canvas await <file>` and leave it running. The user reviews and annotates in the browser (Mermaid diagrams render live, click-to-annotate, chat rail); do not write `state.goal` or hand off to `/startcycle-graph` before an `approve` verdict comes back. A `request_changes` verdict means revise the plan file and reopen the session — it live-reloads. This runs identically regardless of which agent harness is executing this skill; it is a plain CLI, not a Claude-Code-specific mechanism. See the `plan-canvas` skill.
40
+ - Write the plan in the agenttrail component convention (`## Name {#id}` components with `needs:` / `files:` lines, tasks as `- [ ] ... {#id}`) and render the architecture with `aos-archify` so the canvas review includes the diagram; after the `approve` verdict, Trigger A starts the live map. See the `agenttrail` and `archify` skills.
40
41
  - Present the aligned plan and hand off to `/startcycle-graph` for execution — write `state.goal` from this session's output and let `/startcycle-graph`'s dispatcher take it from there (see `.agents/graph.md`). This skill does not invoke `/startcycle-graph`'s agents itself; it produces the goal they read.
41
42
 
42
43
  ## Execution Rules
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Kelly Sun
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: agenttrail
3
+ description: Live map of a multi-agent build in the browser: which plan component is being worked on, by which agent or harness, what is done and what is stuck. Use when a multi-agent pipeline starts (/startcycle, /startcycle-graph, /teamwork-preview) or after a plan-canvas approve, or when the user asks to see what the agents are doing.
4
+ category: bdb-core
5
+ metadata:
6
+ version: "0.2.0"
7
+ origin: sodiumsun/agenttrail@e4ba2da
8
+ license: MIT
9
+ ---
10
+
11
+ <!-- Source: sodiumsun/agenttrail bin/agenttrail.mjs + public/index.html — MIT, see THIRD_PARTY_NOTICES.md -->
12
+
13
+ # agenttrail — live pipeline map
14
+
15
+ agenttrail serves a browser board that mirrors a multi-agent build in real time: which plan component is being worked on, by which agent or harness, what is done and what is stuck. It observes only — it never runs agents and never marks tasks done.
16
+
17
+ ## Start the map
18
+
19
+ ```bash
20
+ aos-trail . --plan production_artifacts/00_execution_plan.md --no-open
21
+ ```
22
+
23
+ It prints the URL (default http://localhost:5330, next free port if taken). Open that URL for the user. If running inside AO (env var `AO_BROWSER_CAPABILITY` is set), run `ao preview <url>` so it shows in AO's Browser tab. Without a plan file, start it with just `aos-trail .` — it then shows file activity only.
24
+
25
+ ## Plan convention
26
+
27
+ The plan file uses components and tasks:
28
+
29
+ - `## Plain-language name {#id}` = a component (5-9 per plan), stable ids
30
+ - under it optional lines: `needs: [id, id]`, `links: [id]`, `files: [src/**]`, `url: production_artifacts/00_architecture.html`
31
+ - tasks: `- [ ] Outcome {#task-id}`; mark `[~]` BEFORE starting, `[x]` when done, `[!]` when stuck, and add an indented `by: <agent>` line (claude, codex, agy, opencode)
32
+ - save the file immediately after each status change; never batch updates to the end
33
+ - Mermaid blocks and prose may stay in the file; the map ignores them.
34
+
35
+ ## Live agent events
36
+
37
+ The AOS installer registers `.claude/hooks/trail-relay.mjs --agent <harness>` for Claude Code (PreToolUse, PostToolUse, SessionStart, Stop, SubagentStop), Antigravity and Codex (PreToolUse, Stop). The OpenCode plugin and mcsc (for the CLI workers it delegates to) post events directly. Events are fire-and-forget (300 ms cap) and never block a tool call; with no map running they are dropped.
38
+
39
+ A component's `url:` may be a path under `production_artifacts/` — the map serves that folder, so e.g. `url: production_artifacts/00_architecture.html` opens the archify diagram from the card.
40
+
41
+ ## Stop
42
+
43
+ The daemon runs until its terminal/process ends; `aos-trail up` relaunches saved boards.
44
+
45
+ ## Rules
46
+
47
+ - Never create a root `PLAN.md` in a user repo during an AOS pipeline — always point at the pipeline's plan with `--plan`.
48
+ - Never mark `[x]` without evidence in the code.