@xgent-ai/skills 0.3.0 → 0.5.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 (631) hide show
  1. package/README.md +117 -11
  2. package/bin/xgent-skills.js +269 -9
  3. package/docs/claude-context-goal-guard.md +125 -0
  4. package/docs/codex-context-goal-guard.md +110 -0
  5. package/hooks/claude/context-goal-guard.js +139 -0
  6. package/hooks/claude/settings.example.json +26 -0
  7. package/hooks/codex/context-goal-guard.py +189 -0
  8. package/hooks/codex/hooks.example.json +26 -0
  9. package/package.json +7 -1
  10. package/skills/agi-mode/SKILL.md +225 -0
  11. package/skills/agi-mode/evals/baseline-coverage.md +96 -0
  12. package/skills/agi-mode/evals/scenarios.md +331 -0
  13. package/skills/agi-mode/evals/test_check_evidence.py +141 -0
  14. package/skills/agi-mode/playbooks/arena.md +47 -0
  15. package/skills/agi-mode/playbooks/authoring-a-skill.md +26 -0
  16. package/skills/agi-mode/playbooks/autonomous-run.md +39 -0
  17. package/skills/agi-mode/playbooks/bug-fix.md +27 -0
  18. package/skills/agi-mode/playbooks/design-prototype.md +41 -0
  19. package/skills/agi-mode/playbooks/eval.md +72 -0
  20. package/skills/agi-mode/playbooks/feature.md +26 -0
  21. package/skills/agi-mode/playbooks/forensics.md +31 -0
  22. package/skills/agi-mode/playbooks/hillclimb.md +73 -0
  23. package/skills/agi-mode/playbooks/investigation.md +29 -0
  24. package/skills/agi-mode/playbooks/migration-refactoring.md +27 -0
  25. package/skills/agi-mode/playbooks/optimization.md +27 -0
  26. package/skills/agi-mode/playbooks/pr-lifecycle.md +38 -0
  27. package/skills/agi-mode/playbooks/program.md +57 -0
  28. package/skills/agi-mode/playbooks/reflection.md +41 -0
  29. package/skills/agi-mode/playbooks/resource-cleanup.md +24 -0
  30. package/skills/agi-mode/playbooks/review.md +27 -0
  31. package/skills/agi-mode/playbooks/session-handoff.md +37 -0
  32. package/skills/agi-mode/playbooks/shipping.md +35 -0
  33. package/skills/agi-mode/playbooks/ui-delivery.md +34 -0
  34. package/skills/agi-mode/playbooks/unblock.md +54 -0
  35. package/skills/agi-mode/principles/autonomous-decisions.md +21 -0
  36. package/skills/agi-mode/principles/behavioral-tests.md +21 -0
  37. package/skills/agi-mode/principles/boundary-discipline.md +21 -0
  38. package/skills/agi-mode/principles/bounded-convergence.md +21 -0
  39. package/skills/agi-mode/principles/build-leverage.md +21 -0
  40. package/skills/agi-mode/principles/challenge-premises.md +21 -0
  41. package/skills/agi-mode/principles/complete-migrations.md +21 -0
  42. package/skills/agi-mode/principles/context-as-state.md +21 -0
  43. package/skills/agi-mode/principles/critical-path-throughput.md +21 -0
  44. package/skills/agi-mode/principles/domain-models-and-types.md +23 -0
  45. package/skills/agi-mode/principles/evidence-lifetime.md +21 -0
  46. package/skills/agi-mode/principles/experience-first.md +21 -0
  47. package/skills/agi-mode/principles/explore-alternatives.md +21 -0
  48. package/skills/agi-mode/principles/falsifiable-verification.md +21 -0
  49. package/skills/agi-mode/principles/foundations-first.md +21 -0
  50. package/skills/agi-mode/principles/idempotent-effects.md +21 -0
  51. package/skills/agi-mode/principles/information-first.md +21 -0
  52. package/skills/agi-mode/principles/minimize-complexity.md +21 -0
  53. package/skills/agi-mode/principles/outcome-ownership.md +21 -0
  54. package/skills/agi-mode/principles/prove-real-outcomes.md +21 -0
  55. package/skills/agi-mode/principles/redesign-from-constraints.md +21 -0
  56. package/skills/agi-mode/principles/root-cause.md +21 -0
  57. package/skills/agi-mode/principles/state-ownership.md +21 -0
  58. package/skills/agi-mode/principles/structural-learning.md +21 -0
  59. package/skills/agi-mode/principles/verifiable-units.md +21 -0
  60. package/skills/agi-mode/references/continuity.md +75 -0
  61. package/skills/agi-mode/references/eval-protocol.md +71 -0
  62. package/skills/agi-mode/references/evidence-contract.md +57 -0
  63. package/skills/agi-mode/references/evolution-evidence.md +71 -0
  64. package/skills/agi-mode/references/experiments.md +82 -0
  65. package/skills/agi-mode/references/reflection/divergent-reviewer.md +45 -0
  66. package/skills/agi-mode/references/reflection/judgment-reviewer.md +44 -0
  67. package/skills/agi-mode/references/reflection/synthesizer.md +39 -0
  68. package/skills/agi-mode/references/reflection/tooling-reviewer.md +57 -0
  69. package/skills/agi-mode/references/skill-evolution.md +50 -0
  70. package/skills/agi-mode/scripts/check_evidence.py +147 -0
  71. package/skills/apply-code-review/SKILL.md +53 -0
  72. package/skills/apply-code-review/agents/openai.yaml +4 -0
  73. package/skills/apply-code-review/references/record-contract.md +77 -0
  74. package/skills/apply-doc-review/SKILL.md +79 -0
  75. package/skills/apply-doc-review/agents/openai.yaml +4 -0
  76. package/skills/apply-doc-review/references/disposition-contract.md +57 -0
  77. package/skills/archify/LICENSE +22 -0
  78. package/skills/archify/SKILL.md +137 -0
  79. package/skills/archify/THIRD_PARTY_NOTICES.md +69 -0
  80. package/skills/archify/assets/JetBrainsMono-OFL.txt +93 -0
  81. package/skills/archify/assets/template.html +14937 -0
  82. package/skills/archify/bin/archify.mjs +2139 -0
  83. package/skills/archify/bin/open-artifact.mjs +86 -0
  84. package/skills/archify/bin/preview.mjs +653 -0
  85. package/skills/archify/bin/visual-check.mjs +829 -0
  86. package/skills/archify/brand-marks/README.md +31 -0
  87. package/skills/archify/brand-marks/catalog.json +131 -0
  88. package/skills/archify/delta/architecture-delta.mjs +1232 -0
  89. package/skills/archify/examples/agent-run.lifecycle.json +60 -0
  90. package/skills/archify/examples/agent-tool-call.workflow.json +94 -0
  91. package/skills/archify/examples/async-job-roundtrip.sequence.json +61 -0
  92. package/skills/archify/examples/brand-aware-delivery.architecture.json +47 -0
  93. package/skills/archify/examples/cache-miss-request.sequence.json +82 -0
  94. package/skills/archify/examples/checkout-platform.base.architecture.json +31 -0
  95. package/skills/archify/examples/checkout-platform.head.architecture.json +31 -0
  96. package/skills/archify/examples/dataflow-product-analytics.html +15048 -0
  97. package/skills/archify/examples/deployment-release.lifecycle.json +49 -0
  98. package/skills/archify/examples/event-stream.dataflow.json +57 -0
  99. package/skills/archify/examples/incident-response.workflow.json +64 -0
  100. package/skills/archify/examples/lifecycle-agent-run.html +14983 -0
  101. package/skills/archify/examples/product-analytics.dataflow.json +76 -0
  102. package/skills/archify/examples/production-deployment.architecture.json +71 -0
  103. package/skills/archify/examples/release-delivery.workflow.json +62 -0
  104. package/skills/archify/examples/sequence-cache-miss-request.html +15063 -0
  105. package/skills/archify/examples/web-app-rendered.html +15012 -0
  106. package/skills/archify/examples/web-app.architecture.json +46 -0
  107. package/skills/archify/examples/workflow-agent-tool-call-rendered.html +15054 -0
  108. package/skills/archify/migrations/workflow-v2.mjs +279 -0
  109. package/skills/archify/package-lock.json +149 -0
  110. package/skills/archify/package.json +39 -0
  111. package/skills/archify/recipes/scenarios.mjs +391 -0
  112. package/skills/archify/references/authoring-contract.md +247 -0
  113. package/skills/archify/references/brand-marks.md +65 -0
  114. package/skills/archify/references/delivery-contract.md +138 -0
  115. package/skills/archify/references/viewer-runtime.md +45 -0
  116. package/skills/archify/renderers/architecture/grid.mjs +62 -0
  117. package/skills/archify/renderers/architecture/render-architecture.mjs +1078 -0
  118. package/skills/archify/renderers/dataflow/README.md +104 -0
  119. package/skills/archify/renderers/dataflow/render-dataflow.mjs +483 -0
  120. package/skills/archify/renderers/lifecycle/README.md +115 -0
  121. package/skills/archify/renderers/lifecycle/render-lifecycle.mjs +561 -0
  122. package/skills/archify/renderers/sequence/README.md +114 -0
  123. package/skills/archify/renderers/sequence/render-sequence.mjs +464 -0
  124. package/skills/archify/renderers/shared/brand-marks.mjs +563 -0
  125. package/skills/archify/renderers/shared/cli.mjs +218 -0
  126. package/skills/archify/renderers/shared/desktop-readability.mjs +26 -0
  127. package/skills/archify/renderers/shared/diagnostics.mjs +160 -0
  128. package/skills/archify/renderers/shared/engineering-profiles.mjs +157 -0
  129. package/skills/archify/renderers/shared/generated-brand-marks.mjs +2003 -0
  130. package/skills/archify/renderers/shared/generated-validators.mjs +13 -0
  131. package/skills/archify/renderers/shared/geometry.mjs +1423 -0
  132. package/skills/archify/renderers/shared/i18n.mjs +595 -0
  133. package/skills/archify/renderers/shared/layout-report.mjs +40 -0
  134. package/skills/archify/renderers/shared/legend.mjs +217 -0
  135. package/skills/archify/renderers/shared/output-path.mjs +340 -0
  136. package/skills/archify/renderers/shared/repository-evidence.mjs +239 -0
  137. package/skills/archify/renderers/shared/repository-location.mjs +58 -0
  138. package/skills/archify/renderers/shared/text-fit.mjs +49 -0
  139. package/skills/archify/renderers/shared/utils.mjs +232 -0
  140. package/skills/archify/renderers/shared/validator.mjs +86 -0
  141. package/skills/archify/renderers/workflow/README.md +223 -0
  142. package/skills/archify/renderers/workflow/render-workflow.mjs +35 -0
  143. package/skills/archify/renderers/workflow/workflow-compiler.mjs +4400 -0
  144. package/skills/archify/renderers/workflow/workflow-migration-geometry.mjs +144 -0
  145. package/skills/archify/schemas/README.md +211 -0
  146. package/skills/archify/schemas/architecture.schema.json +178 -0
  147. package/skills/archify/schemas/common.schema.json +115 -0
  148. package/skills/archify/schemas/dataflow.schema.json +243 -0
  149. package/skills/archify/schemas/lifecycle.schema.json +266 -0
  150. package/skills/archify/schemas/sequence.schema.json +223 -0
  151. package/skills/archify/schemas/workflow.schema.json +428 -0
  152. package/skills/archify/scripts/check-render-output.mjs +916 -0
  153. package/skills/archify/scripts/check-update.mjs +1667 -0
  154. package/skills/archify/scripts/generate-brand-marks.mjs +141 -0
  155. package/skills/archify/scripts/generate-validators.mjs +66 -0
  156. package/skills/archify/scripts/render-examples.mjs +26 -0
  157. package/skills/archify/scripts/update-contract.mjs +182 -0
  158. package/skills/archify/skill-release.json +10 -0
  159. package/skills/archify/test/adaptive-reader-layout.test.mjs +86 -0
  160. package/skills/archify/test/animation.test.mjs +179 -0
  161. package/skills/archify/test/architecture-compare-recovery.test.mjs +157 -0
  162. package/skills/archify/test/architecture-delta-markers.test.mjs +137 -0
  163. package/skills/archify/test/architecture-delta.test.mjs +705 -0
  164. package/skills/archify/test/artifact-receipt-flush.test.mjs +126 -0
  165. package/skills/archify/test/authored-reachability.test.mjs +95 -0
  166. package/skills/archify/test/authoring-safety-contract.test.mjs +54 -0
  167. package/skills/archify/test/automatic-port-spread.test.mjs +376 -0
  168. package/skills/archify/test/base-input-compatibility.test.mjs +42 -0
  169. package/skills/archify/test/brand-marks.test.mjs +678 -0
  170. package/skills/archify/test/chapter-delta-preview.test.mjs +157 -0
  171. package/skills/archify/test/chapter-handoff.test.mjs +97 -0
  172. package/skills/archify/test/chapter-rail.test.mjs +86 -0
  173. package/skills/archify/test/checkout-line-endings.test.mjs +72 -0
  174. package/skills/archify/test/ci-scope.test.mjs +59 -0
  175. package/skills/archify/test/clean-skill-staging.test.mjs +440 -0
  176. package/skills/archify/test/cli-output-types.test.mjs +201 -0
  177. package/skills/archify/test/cli.test.mjs +986 -0
  178. package/skills/archify/test/community-proof-intake.test.mjs +125 -0
  179. package/skills/archify/test/cursor-onboarding.test.mjs +74 -0
  180. package/skills/archify/test/degraded.test.mjs +161 -0
  181. package/skills/archify/test/delivery-contract.test.mjs +52 -0
  182. package/skills/archify/test/desktop-reader-browser.test.mjs +80 -0
  183. package/skills/archify/test/diagram-guide.test.mjs +92 -0
  184. package/skills/archify/test/engineering-profile.test.mjs +209 -0
  185. package/skills/archify/test/export-browser.test.mjs +305 -0
  186. package/skills/archify/test/export-cleanup-browser.test.mjs +294 -0
  187. package/skills/archify/test/finder-browser.test.mjs +274 -0
  188. package/skills/archify/test/finder.test.mjs +104 -0
  189. package/skills/archify/test/fixtures/automatic-routing-node-border-clearance.workflow.json +40 -0
  190. package/skills/archify/test/fixtures/fail-migration-cleanup.mjs +17 -0
  191. package/skills/archify/test/fixtures/issue-126/custom-widths.workflow.json +18 -0
  192. package/skills/archify/test/fixtures/issue-126/explicit-route.workflow.json +28 -0
  193. package/skills/archify/test/fixtures/issue-126/explicit-viewbox.workflow.json +19 -0
  194. package/skills/archify/test/fixtures/issue-126/labels.workflow.json +18 -0
  195. package/skills/archify/test/fixtures/v1-baseline/agent-run.lifecycle.json +64 -0
  196. package/skills/archify/test/fixtures/v1-baseline/agent-tool-call.workflow.json +88 -0
  197. package/skills/archify/test/fixtures/v1-baseline/cache-miss-request.sequence.json +75 -0
  198. package/skills/archify/test/fixtures/v1-baseline/event-stream.dataflow.json +57 -0
  199. package/skills/archify/test/fixtures/v1-baseline/product-analytics.dataflow.json +70 -0
  200. package/skills/archify/test/fixtures/v1-baseline/production-deployment.architecture.json +71 -0
  201. package/skills/archify/test/fixtures/v1-baseline/web-app.architecture.json +41 -0
  202. package/skills/archify/test/fixtures/v1-workflow-700x400.workflow.json +22 -0
  203. package/skills/archify/test/fixtures/v1-workflow-explicit-coordinates.workflow.json +47 -0
  204. package/skills/archify/test/focus-browser.test.mjs +226 -0
  205. package/skills/archify/test/gallery.test.mjs +130 -0
  206. package/skills/archify/test/generate-validators.test.mjs +59 -0
  207. package/skills/archify/test/generate-viewer.test.mjs +165 -0
  208. package/skills/archify/test/generated-artifact-xml.test.mjs +88 -0
  209. package/skills/archify/test/geometry.test.mjs +739 -0
  210. package/skills/archify/test/golden.mjs +207 -0
  211. package/skills/archify/test/grid.test.mjs +47 -0
  212. package/skills/archify/test/guide-page.test.mjs +85 -0
  213. package/skills/archify/test/guide.test.mjs +81 -0
  214. package/skills/archify/test/guided-views-browser.test.mjs +460 -0
  215. package/skills/archify/test/guided-views.test.mjs +144 -0
  216. package/skills/archify/test/helpers/desktop-browser.mjs +48 -0
  217. package/skills/archify/test/helpers/offline-fonts.mjs +76 -0
  218. package/skills/archify/test/helpers/viewer-click.mjs +72 -0
  219. package/skills/archify/test/helpers/xml.mjs +37 -0
  220. package/skills/archify/test/i18n.test.mjs +422 -0
  221. package/skills/archify/test/intent-trace-browser.test.mjs +284 -0
  222. package/skills/archify/test/intent-trace.test.mjs +111 -0
  223. package/skills/archify/test/landing.test.mjs +97 -0
  224. package/skills/archify/test/layout-rules.test.mjs +1498 -0
  225. package/skills/archify/test/legend-contract.test.mjs +404 -0
  226. package/skills/archify/test/motion-governor-browser.test.mjs +342 -0
  227. package/skills/archify/test/motion-governor.test.mjs +111 -0
  228. package/skills/archify/test/offline-font-browser.test.mjs +210 -0
  229. package/skills/archify/test/offline-self-containment.test.mjs +80 -0
  230. package/skills/archify/test/open-artifact.test.mjs +118 -0
  231. package/skills/archify/test/ordinary-model-floor.test.mjs +1052 -0
  232. package/skills/archify/test/output-path.test.mjs +587 -0
  233. package/skills/archify/test/presentation.test.mjs +71 -0
  234. package/skills/archify/test/preset-tryon.test.mjs +113 -0
  235. package/skills/archify/test/preview-contract.test.mjs +40 -0
  236. package/skills/archify/test/preview.test.mjs +530 -0
  237. package/skills/archify/test/proof-aperture.test.mjs +78 -0
  238. package/skills/archify/test/reach-share-card.test.mjs +149 -0
  239. package/skills/archify/test/reader-layout-browser.test.mjs +320 -0
  240. package/skills/archify/test/readme-showcase.test.mjs +319 -0
  241. package/skills/archify/test/real-repository-proof.test.mjs +209 -0
  242. package/skills/archify/test/relationship-direct-explorer.test.mjs +115 -0
  243. package/skills/archify/test/relationship-lens.test.mjs +128 -0
  244. package/skills/archify/test/relationship-permalink.test.mjs +130 -0
  245. package/skills/archify/test/relationship-pulse.test.mjs +122 -0
  246. package/skills/archify/test/release-identity.test.mjs +476 -0
  247. package/skills/archify/test/release-package-gates.test.mjs +750 -0
  248. package/skills/archify/test/render-output-checks.test.mjs +588 -0
  249. package/skills/archify/test/renderer-diagnostic-boundary.test.mjs +107 -0
  250. package/skills/archify/test/repair-receipt.test.mjs +181 -0
  251. package/skills/archify/test/repository-evidence-replacement.test.mjs +136 -0
  252. package/skills/archify/test/repository-evidence.test.mjs +605 -0
  253. package/skills/archify/test/repository-language-metadata.test.mjs +67 -0
  254. package/skills/archify/test/route-journey.test.mjs +125 -0
  255. package/skills/archify/test/route-probe-browser.test.mjs +363 -0
  256. package/skills/archify/test/route-probe.test.mjs +114 -0
  257. package/skills/archify/test/route-share-card.test.mjs +163 -0
  258. package/skills/archify/test/semantic-camera.test.mjs +88 -0
  259. package/skills/archify/test/semantic-flow.test.mjs +90 -0
  260. package/skills/archify/test/semantic-legend-gateway.test.mjs +156 -0
  261. package/skills/archify/test/semantic-lens-browser.test.mjs +372 -0
  262. package/skills/archify/test/semantic-lens.test.mjs +103 -0
  263. package/skills/archify/test/semantic-passport.test.mjs +99 -0
  264. package/skills/archify/test/semantic-radar.test.mjs +735 -0
  265. package/skills/archify/test/semantic-zoom.test.mjs +86 -0
  266. package/skills/archify/test/sequence-column-fit.test.mjs +137 -0
  267. package/skills/archify/test/settled-flow.test.mjs +97 -0
  268. package/skills/archify/test/share-card-export.test.mjs +132 -0
  269. package/skills/archify/test/site-language-continuity.test.mjs +569 -0
  270. package/skills/archify/test/site-language-integration.mjs +9 -0
  271. package/skills/archify/test/skill-metadata.test.mjs +84 -0
  272. package/skills/archify/test/stable-update-manifest.test.mjs +167 -0
  273. package/skills/archify/test/start-page.test.mjs +312 -0
  274. package/skills/archify/test/story-beat-navigator.test.mjs +103 -0
  275. package/skills/archify/test/story-carrier.test.mjs +90 -0
  276. package/skills/archify/test/story-director-strip.test.mjs +91 -0
  277. package/skills/archify/test/story-follow-camera.test.mjs +103 -0
  278. package/skills/archify/test/story-horizon.test.mjs +91 -0
  279. package/skills/archify/test/story-moment-link.test.mjs +93 -0
  280. package/skills/archify/test/story-shelf.test.mjs +84 -0
  281. package/skills/archify/test/story-trail.test.mjs +81 -0
  282. package/skills/archify/test/toolbar-polish.test.mjs +57 -0
  283. package/skills/archify/test/update-contract.test.mjs +133 -0
  284. package/skills/archify/test/update-notifier.test.mjs +3317 -0
  285. package/skills/archify/test/v1-compatibility.test.mjs +329 -0
  286. package/skills/archify/test/vertical-edge.test.mjs +68 -0
  287. package/skills/archify/test/viewer-camera-browser.test.mjs +395 -0
  288. package/skills/archify/test/viewer-chrome-layout.test.mjs +1104 -0
  289. package/skills/archify/test/viewer-identifiers-browser.test.mjs +135 -0
  290. package/skills/archify/test/visual-check.test.mjs +400 -0
  291. package/skills/archify/test/webm-artifact.smoke.mjs +1855 -0
  292. package/skills/archify/test/workflow-compiler-hard-contract.test.mjs +2136 -0
  293. package/skills/archify/test/workflow-compiler.test.mjs +1163 -0
  294. package/skills/archify/test/workflow-migration.test.mjs +620 -0
  295. package/skills/archify/test/workflow-semantic-contract.test.mjs +131 -0
  296. package/skills/architect/SKILL.md +83 -0
  297. package/skills/architect/references/design-red-flags.md +33 -0
  298. package/skills/architect/references/rationale-template.md +35 -0
  299. package/skills/architect/references/runner-prompt.md +20 -0
  300. package/skills/arena/SKILL.md +13 -0
  301. package/skills/automate-me/SKILL.md +104 -0
  302. package/skills/autoresearch/SKILL.md +14 -0
  303. package/skills/debugging/SKILL.md +279 -0
  304. package/skills/dev-plan/SKILL.md +25 -18
  305. package/skills/dev-plan/references/execution-workflow.md +8 -61
  306. package/skills/dev-plan/references/plan-skeleton.md +43 -28
  307. package/skills/dev-plan/scripts/check_progress.sh +5 -1
  308. package/skills/documentation-writer/SKILL.md +204 -0
  309. package/skills/documentation-writer/assets/templates/ARCHITECTURE.md +49 -0
  310. package/skills/documentation-writer/assets/templates/CONCERNS.md +56 -0
  311. package/skills/documentation-writer/assets/templates/CONVENTIONS.md +52 -0
  312. package/skills/documentation-writer/assets/templates/FEATURES.md +43 -0
  313. package/skills/documentation-writer/assets/templates/INTEGRATIONS.md +48 -0
  314. package/skills/documentation-writer/assets/templates/STACK.md +56 -0
  315. package/skills/documentation-writer/assets/templates/STRUCTURE.md +44 -0
  316. package/skills/documentation-writer/assets/templates/TESTING.md +57 -0
  317. package/skills/documentation-writer/references/api-docs.md +185 -0
  318. package/skills/documentation-writer/references/architecture.md +134 -0
  319. package/skills/documentation-writer/references/codebase-map.md +113 -0
  320. package/skills/documentation-writer/references/inquiry-checkpoints.md +78 -0
  321. package/skills/documentation-writer/references/readme.md +89 -0
  322. package/skills/documentation-writer/references/stack-detection.md +134 -0
  323. package/skills/documentation-writer/references/user-manual.md +103 -0
  324. package/skills/documentation-writer/references/writing-style.md +220 -0
  325. package/skills/documentation-writer/scripts/check_doc.py +273 -0
  326. package/skills/documentation-writer/scripts/scan.py +712 -0
  327. package/skills/elintp/SKILL.md +27 -1
  328. package/skills/figure-it-out/SKILL.md +53 -0
  329. package/skills/gdpr-compliant/SKILL.md +283 -0
  330. package/skills/gdpr-compliant/references/Security.md +266 -0
  331. package/skills/gdpr-compliant/references/data-rights.md +177 -0
  332. package/skills/how/SKILL.md +58 -0
  333. package/skills/how/references/explainer-prompt.md +55 -0
  334. package/skills/how/references/explorer-prompt.md +52 -0
  335. package/skills/humanize-writing/SKILL.md +417 -0
  336. package/skills/humanize-writing/references/ai-tells.md +291 -0
  337. package/skills/kpi-dashboard-design/SKILL.md +103 -0
  338. package/skills/landing-page-conversion-audit/SKILL.md +122 -0
  339. package/skills/meeting-minutes/SKILL.md +235 -0
  340. package/skills/portal-app-exchange/SKILL.md +8 -17
  341. package/skills/portal-dev-setup/SKILL.md +137 -46
  342. package/skills/portal-dev-setup/puller.env.example +3 -2
  343. package/skills/portal-dev-setup/references/kafka.md +140 -0
  344. package/skills/portal-dev-setup/references/troubleshooting.md +22 -26
  345. package/skills/portal-dev-setup/scripts/onebox.sh +510 -56
  346. package/skills/portal-external-app/SKILL.md +57 -21
  347. package/skills/portal-external-app/references/contract-doc-template.md +1 -1
  348. package/skills/portal-external-app/references/integration-contract.md +4 -4
  349. package/skills/portal-external-app/references/public-entrypoints.md +100 -0
  350. package/skills/portal-external-app/references/quota-and-seats.md +12 -31
  351. package/skills/portal-external-app/references/registration-and-onebox.md +67 -11
  352. package/skills/portal-micro-app/SKILL.md +18 -28
  353. package/skills/portal-micro-app/references/manifest-and-acl.md +21 -3
  354. package/skills/portal-micro-app/references/open-api-and-extensions.md +1 -1
  355. package/skills/portal-micro-app/references/sdk-reference.md +1 -1
  356. package/skills/prd/SKILL.md +56 -38
  357. package/skills/prd/references/prd-skeleton.md +72 -34
  358. package/skills/prd/references/product-quality.md +89 -0
  359. package/skills/prd/references/spms-mapping.md +9 -7
  360. package/skills/react/SKILL.md +26 -4
  361. package/skills/react/references/actions.md +251 -0
  362. package/skills/react/references/data-fetching.md +25 -1
  363. package/skills/react/references/react19-migration.md +407 -0
  364. package/skills/reflect/SKILL.md +13 -0
  365. package/skills/review-code/SKILL.md +63 -0
  366. package/skills/review-code/agents/openai.yaml +4 -0
  367. package/skills/review-code/references/git-scopes.md +38 -0
  368. package/skills/review-code/references/report-contract.md +56 -0
  369. package/skills/review-code/references/review-lenses.md +33 -0
  370. package/skills/review-dev-plan/SKILL.md +88 -0
  371. package/skills/review-dev-plan/agents/openai.yaml +4 -0
  372. package/skills/review-dev-plan/references/report-contract.md +59 -0
  373. package/skills/review-dev-plan/references/review-lenses.md +82 -0
  374. package/skills/review-prd/SKILL.md +84 -0
  375. package/skills/review-prd/agents/openai.yaml +4 -0
  376. package/skills/review-prd/references/report-contract.md +64 -0
  377. package/skills/review-prd/references/review-lenses.md +82 -0
  378. package/skills/review-prd-dev-gaps/SKILL.md +84 -0
  379. package/skills/review-prd-dev-gaps/agents/openai.yaml +4 -0
  380. package/skills/review-prd-dev-gaps/references/report-contract.md +72 -0
  381. package/skills/security-audit/SKILL.md +191 -0
  382. package/skills/security-audit/references/language-patterns.md +221 -0
  383. package/skills/security-audit/references/report-format.md +194 -0
  384. package/skills/security-audit/references/secret-patterns.md +178 -0
  385. package/skills/security-audit/references/vuln-categories.md +288 -0
  386. package/skills/security-audit/references/vulnerable-packages.md +111 -0
  387. package/skills/sql-optimization/SKILL.md +296 -0
  388. package/skills/summarize/SKILL.md +1 -0
  389. package/skills/swarm/references/teams/product.md +2 -2
  390. package/skills/tdd/SKILL.md +42 -0
  391. package/skills/teach/SKILL.md +21 -0
  392. package/skills/test-plan/SKILL.md +12 -11
  393. package/skills/test-plan/references/case-taxonomy.md +3 -2
  394. package/skills/why/SKILL.md +158 -0
  395. package/skills/why/references/epistemics.md +144 -0
  396. package/skills/why/references/investigator-prompt.md +103 -0
  397. package/skills/why/references/source-playbook.md +17 -0
  398. package/skills/why/references/sources/code-archaeology.md +88 -0
  399. package/skills/why/references/sources/databricks.md +70 -0
  400. package/skills/why/references/sources/datadog.md +99 -0
  401. package/skills/why/references/sources/incident-postmortem.md +15 -0
  402. package/skills/why/references/sources/linear.md +48 -0
  403. package/skills/why/references/sources/notion.md +55 -0
  404. package/skills/why/references/sources/sentry.md +100 -0
  405. package/skills/why/references/sources/slack.md +54 -0
  406. package/skills/why/references/synthesizer-prompt.md +135 -0
  407. package/skills/xgent-app-release/SKILL.md +97 -28
  408. package/skills/xgent-app-release/references/build-and-package.md +8 -3
  409. package/skills/xgent-app-release/references/embed-csp.mjs +126 -0
  410. package/skills/xgent-app-release/references/frontend-archive.md +67 -0
  411. package/skills/xgent-app-release/references/public-delivery.md +75 -0
  412. package/skills/xgent-app-release/references/publish-api.md +62 -56
  413. package/skills/xgent-app-release/references/troubleshooting.md +18 -2
  414. package/skills/xgent-app-release/references/verify-preflight.mjs +50 -0
  415. package/skills/xgent-app-release/scripts/npm-token.mjs +8 -3
  416. package/skills/xgent-app-release/scripts/preflight.mjs +13 -2
  417. package/skills/xgent-init/SKILL.md +23 -82
  418. package/skills/xgent-init/references/external-app-AGENTS.template.md +149 -0
  419. package/skills/xgent-init/references/fill-guide.md +10 -22
  420. package/skills/xgent-init/scripts/check-docs.mjs +14 -86
  421. package/vendor/impeccable/VERSION.json +10 -16
  422. package/vendor/impeccable/bundle/blobs/{daa2a8ecd874f9f940dfd72aaa329318b06bb9be25515be85fea84c871b637a6 → 00c067253d37cd20a41dbe9c806d6a72cbff983ad1418b3c3e447998f577b9c2} +18 -11
  423. package/vendor/impeccable/bundle/blobs/{4ce929b8cafd37247ea4c148bbe39a9afe15908d1abf4a8248c5122275d16499 → 00d167d9183c8d0c6c0682055107382e6672bacf7a712de0abc8f157c2cb2210} +3 -2
  424. package/vendor/impeccable/bundle/blobs/{a9515f6f084d8f51c378eb3cdc6db1f12e06dba2d32fc61b7ee7950fa2586f2e → 016c082dcd2aa8f3c080a757c8ed335c6070a904bd2f39668bb9d3e6f95929c1} +1 -1
  425. package/vendor/impeccable/bundle/blobs/0221a193d111a9de33a785706a603e55dd974a115f549dbdf74e0f9ec72bde7d +101 -0
  426. package/vendor/impeccable/bundle/blobs/055c571f2960b8f929d6a8d3806a4d32dfcb9750b3ef8b60adc8930fff34b559 +101 -0
  427. package/vendor/impeccable/bundle/blobs/{3aa908c18db91d5f31d6bba6402eab6afc4e0b75137f841a86bd012386e0d8e2 → 0605c8729dc638a46798e90ab12486fe3ae3372a869757cfb387a08e23b3c84a} +18 -11
  428. package/vendor/impeccable/bundle/blobs/{ec58806f16fc7ba29bccef08f2e158cd00be077ce05d45e943a59bd26dc6dc55 → 0648e4e06d01cabc91fa7dc19256ceedeeeea213b9265e9d36b0918370e16fb2} +6 -0
  429. package/vendor/impeccable/bundle/blobs/06b20bd42e5682a42c5d6fbfaad4c55e66ff9b9d99a604bd31d3545af120fc2d +101 -0
  430. package/vendor/impeccable/bundle/blobs/{420e2fdee2b7f555d9a37ce348cf62610ddd98f96b1a0a511796ba600881588c → 08346755b13f1a3f7c6fb4e512387884b80467aaeff109fd41f5521d2a95635a} +3 -1
  431. package/vendor/impeccable/bundle/blobs/{8f651cb1f8cde0acc5cc511b77fddd98558a527f54974698a1650b0fd7e849a7 → 08398fa2d8e2b06b849f1c0f032e1e93b832e9294aed35c1c7f62b938d62ee80} +1 -1
  432. package/vendor/impeccable/bundle/blobs/087f6715114e901c2ce00b438e75b82fd48978c020a782f3dc361d39eb7198a6 +26 -0
  433. package/vendor/impeccable/bundle/blobs/{bc7a5128cfed46148396c08798b6b9429406fbe477e84e331a36ee2840b6b776 → 09310582ed23393b171eb99ad4a288cc422ac53c26d76311586ce54c6df77b22} +3 -1
  434. package/vendor/impeccable/bundle/blobs/{633903ba7cb38ed502448a66691fbf655805786a2f06be67043f12294ad08e86 → 0bc2bc36ca6e74f9f610392f1a4fb8f57b2676238ba1f9c65cd8714f5d27e8a2} +5 -0
  435. package/vendor/impeccable/bundle/blobs/0c064c9975f25f6eb5cf7911c2eeafd3e695d729f8c86a49a24ff2d76cb3cd94 +63 -0
  436. package/vendor/impeccable/bundle/blobs/{4a7d8695741e2cd354baada215b06798c050aa7a8e1ca6814f0e395e054d1ab1 → 0ccf57f758eb0d53bc32c5c77156f016e528d20fe2c2740662bf19964dfbb00b} +18 -11
  437. package/vendor/impeccable/bundle/blobs/0dd1e6ccf053cb80e057caf7bf2fef30fd0197a41d907a1a8d2d2d02f6978674 +63 -0
  438. package/vendor/impeccable/bundle/blobs/{943b0d7c9ce4f6802d8440a07b2ad3c61cbd1cc00ab63962bab7eea9ca584d20 → 0ed5986d1503399f48c11104df5e523a63be2d6558770ebfbbeb2323ca3f2ad3} +5 -5
  439. package/vendor/impeccable/bundle/blobs/14c9c9a7816026dd77494d06b8d1777c8d64785126b0c9ac8db5ebd996dfd6b6 +101 -0
  440. package/vendor/impeccable/bundle/blobs/{54cb270e8826380caefc8c40642a5d973f27df46bfdb762d822541a0c72a9877 → 14ef0ab84c10331f8af6b4124387a3f80b493175a04a3f89200719b4b5aea221} +18 -11
  441. package/vendor/impeccable/bundle/blobs/{6abbf5979db5cb1d7965bf5f91d589e984843069c587f4d1e63aab135bbace0f → 1547005438784032de3254cb35bff393e8187d7a459d0c20a693d9bfb0b5c1a4} +5 -0
  442. package/vendor/impeccable/bundle/blobs/162b814ddd1133923b9584bb95f85959e64844c94341d6bf10a81c06ab7cc02c +101 -0
  443. package/vendor/impeccable/bundle/blobs/16498466a97a5b19a593d5b3f245468c71784bea069d7fc8aa9690db5ac1d968 +29 -0
  444. package/vendor/impeccable/bundle/blobs/{b31ff29c7a1ea979c6d039f7e8d17007410697ab49536690dca109f0af3f20f8 → 16ba7fca1973c5faf53dd2ca523559129c0fe9e5f8d50b645f527afa78186cd2} +9 -0
  445. package/vendor/impeccable/bundle/blobs/1725ca4aa546a34770f29191b58bf8dc14957d4258fb9e7d02f7b1c59c412ea4 +63 -0
  446. package/vendor/impeccable/bundle/blobs/{598bfed550954471ba4d257d46b4d608cd82e4cdbf36d07bf93c5f4a563f7727 → 1898529e994bf0a31ee9ff3f87c343caea3d8a7e0986f404e129fbf89078ade0} +4 -3
  447. package/vendor/impeccable/bundle/blobs/{6e20041e209e8705d14aa9c4fb8cca3f0d743791de633785e5b46e2dd1ff1a6b → 19b439d7d16e139357459d3874f739ea94dbdffeb2a0e201df1620ed1e40574d} +1 -1
  448. package/vendor/impeccable/bundle/blobs/{04af9f2d6883fe76f9539d310d9c369052822a24886d2c330ab1e3fe5981c8a1 → 1b289c8c09de9d4442109ada91b1fa3a190e113a310cab7aa26a3633c5df0bb0} +1 -1
  449. package/vendor/impeccable/bundle/blobs/{eb3213b9c9f4d6b2f153e7b457f13aa131bcf633695229dad4eac39a920bdf38 → 1bb3bdce54386e96e21b5956713a80583e6b3b9d1170f3bb8dec3819fa341bc3} +5 -5
  450. package/vendor/impeccable/bundle/blobs/{e71d6b97680084a7ccec01844e658cbd2042aec00da0c91bec62a240ad7dcf6a → 1c11cb8ea42536c7a51e197f1aa32198960bb89262da2eaf32e0feb03c70792c} +18 -11
  451. package/vendor/impeccable/bundle/blobs/{f0c4d0615c7d520dfc2536c01cc7f1f3aab9b60ddc399ba01289fe62edb12370 → 1c6258015ed02c522948f8f1a3b6457395a8f7954497b87c1cd83f1791f9f819} +1 -1
  452. package/vendor/impeccable/bundle/blobs/{27c4b6c90ad12a186136f9ece9cb1830d4a6e36b11382ab334efc4543f8082de → 1d7145fd5bf65282b2e05cf42faf41766d68e83e2b75f460b3b62d81ada5e5d7} +18 -11
  453. package/vendor/impeccable/bundle/blobs/{1484a7ae206ab4f0e6262b21afe0f6307a629ed27d28fb7de69536a6800a4883 → 1e2f696760ee55fb154bdcc302c7d7b0fbb807e0308130594bd892dae14dc9ea} +5 -0
  454. package/vendor/impeccable/bundle/blobs/{6989120346e87907d59cc6d4708dd9dee29227ad583fbefee28935395b68ce34 → 1f6c3a1d7344f44eaa88b6f38334ad7d7b60201709589039a58cee73de486f5d} +1 -1
  455. package/vendor/impeccable/bundle/blobs/207d443cabe4e6fe1351f91785748957f757bf1e7aeca405433c0329dad46a15 +63 -0
  456. package/vendor/impeccable/bundle/blobs/{f7916d0113da7a19d4e03c113d5563d181457e44f1646ecab9191cfee5ae776d → 20e2111b3e065e8e8054f715ea3902e64b77886b30d2bddee723558f22942620} +4 -3
  457. package/vendor/impeccable/bundle/blobs/21e78c8a77badb3f83290cd4577ed3b24bd4dd3b57136d7da75733d4f3ee9ac0 +19 -0
  458. package/vendor/impeccable/bundle/blobs/{0f83648f6b425225290305bced51eacebacf9bf9bc05e21cdbad46863fbc89ce → 223f08673b267f81d7586f686afe05d7cd7529a8e11ac37d979f95c2ceaae8ce} +1 -1
  459. package/vendor/impeccable/bundle/blobs/2499b18f26639694344ca95682f47c65494f730cfff88aa9bd2aa83a22e5926d +101 -0
  460. package/vendor/impeccable/bundle/blobs/{074575671f24cf4298d06f0019f76e94f62e9a6ed205fce05b8e507341e64266 → 26cd88d10f8a14ed0ddb6e6b21e5e2c981f410eac93afa179202c354d7d1c0d5} +3 -1
  461. package/vendor/impeccable/bundle/blobs/{5f24c5a97b4ffcabc7c432b064cfdd04c7a2ad52f52e765be648dc0aadab8f38 → 275dd1b6e63bbd30d2713227c4f79b880a8bc4e01cc48d392068bb86939d3afa} +1 -1
  462. package/vendor/impeccable/bundle/blobs/{356cfa0ebf61589cf5d52691d101a69d69256062fe1d11d71d95d41a78289cbd → 28f65b42c1ce9aaea35dc37a51257d7c703bb7f6553ebe3b8ca238a1007251e0} +3 -1
  463. package/vendor/impeccable/bundle/blobs/{a1dbde501ffabb50f30f28f2de6755b5e91b3d4028292c5a3abd3358106eb457 → 2ac1624b1253f3b6fcf2da54d54293624176539b2e9609a49245e7e46c65ca5f} +5 -0
  464. package/vendor/impeccable/bundle/blobs/{3895765e9434400dfc1b30e364be002cf499c1718fb2431e65b907c14ae2cb27 → 2b9379cdb329890eebe2384fbaa23f771745f30d8cfc43e180ebd092e69bcd2f} +4 -3
  465. package/vendor/impeccable/bundle/blobs/{1a9180cec754f8afd354e7cb759750247e97c5bd26d3242ad4c45e315069e8c0 → 2bc5d62463cc83d6417df7b8f4a02b4135e2b1bb654aa7727890662496f86e3d} +5 -0
  466. package/vendor/impeccable/bundle/blobs/2ce1722bd1a9f366182d9357d629796b1448f7a0126a854df507eb044d891cab +26 -0
  467. package/vendor/impeccable/bundle/blobs/{e21af575fcc0f1df54ae422bea4dfa1e5211422606908919f6a86e19e0d5c20c → 3149a87bbed84bffe3558d5eaf1dc596b2e84d3c1be290fc7b1c13e481ae0803} +4 -3
  468. package/vendor/impeccable/bundle/blobs/3253eab02b62efa80abc74a5c85da08f3e2c6c20dff8dec38f4d236cbbfa0f3c +63 -0
  469. package/vendor/impeccable/bundle/blobs/{38c2e839e130008b6da814ab9c16f3fcbbedfdf721a9638eebd31a9e65341a7a → 37680abf9a8e446619fcd33862718f483d197bf2652f966adca8dc54d2909b9d} +3 -2
  470. package/vendor/impeccable/bundle/blobs/385a0efe833bd4afe4a257e7159590de0cf1b7fd8f7b213b732f1e537c62dab7 +21 -0
  471. package/vendor/impeccable/bundle/blobs/{8a1c872773996dfa1c1eb765ac7ed8e8d41f99d4f12f090b4725b694e85eaa62 → 3898bd9b56a042e860a0db4fb4dd81ac81126fa218b604702e2ac0c2287ae09b} +9 -0
  472. package/vendor/impeccable/bundle/blobs/3b2b60f23fa8ed9d73e721e17142c3933dc5318fa9a251742a76fee890ac81a8 +26 -0
  473. package/vendor/impeccable/bundle/blobs/3bd55b35c253f7841ca4e6e1a855a4b477d59aa2daf6e61e93fd685caaaff131 +63 -0
  474. package/vendor/impeccable/bundle/blobs/{dde1b74aeab3d90320e134f0ed0422bef99917dcab4c1749aa1720a2c94f725f → 3bed76a0d528e2d73da8acae4dc63702bdb5baca5ab11600d70e75fc9f2ba90b} +5 -0
  475. package/vendor/impeccable/bundle/blobs/{9b2fc50c5062073d097140cde85602bba181e325ec6b9eea1bd3da74582acb9d → 3ef9a43006bc68d83bc958fc8401e59f9beb6379048f5ced047747fdad05b895} +5 -5
  476. package/vendor/impeccable/bundle/blobs/{30e006fdee873bac23edaeadce0371161625e021e3cf442dff4b05bb82297ba1 → 400419aaa20f710e1a7e5ca1fce9e8bc995c4db84053f40cf778d987619e0210} +1 -1
  477. package/vendor/impeccable/bundle/blobs/40cd6024312a1339aa66801df533afa543e60c36e708f0f9659dd8d558f83dce +63 -0
  478. package/vendor/impeccable/bundle/blobs/{55e95137b3f9198c1d4dfc425366b82f1ef5f77d602682b2edf91f2ce9296289 → 412dd9a5238aee223397591fe49b3bd27b6b53d649a0e67ed8570f3e199cebb9} +1 -1
  479. package/vendor/impeccable/bundle/blobs/{181e814c1b9317098b2300c1b02ad0d137b6d82bd1e7e8cc64de4d00b4c50c25 → 41ef23c048ab739f48afdce26a2678d36ee40bcced34ef4b969d1d8ffafca64c} +3 -1
  480. package/vendor/impeccable/bundle/blobs/{edddeb3fad88adec9a055b1bf9d5c75418cbe97a13b1a7f6765e73249e482563 → 42831c3cd874346d8e7f120808d91e6ed3cda5c3eca6eefd76b126659536bc87} +5 -1
  481. package/vendor/impeccable/bundle/blobs/{e3c331cc21d9a216e25e08628610ea99c97e150893c3d26e5c0cecc532f26d7b → 43dbfcb7c2e54c9cca9fce66024f17c06a2f2be645547b718b75c8828a463de2} +1 -1
  482. package/vendor/impeccable/bundle/blobs/4435529820c3fc2eceae8b1ee35c906a34c7612fb860117e896152b45aee0770 +26 -0
  483. package/vendor/impeccable/bundle/blobs/44a60aedcc350c2d7d501d0f830a31a586a6511a9ff9b4e361cb328bb747339d +101 -0
  484. package/vendor/impeccable/bundle/blobs/{c6a0ec6c28ae55fe539f0f41a507b1638495afd285d6eb15c00245fc8cc7e7fe → 45dcea8da47cc21f447041daa942cf5d92cddde9a5a02c196cedbd159c829304} +5 -0
  485. package/vendor/impeccable/bundle/blobs/{015725eeca94f52bffd2132d4cb49bc3eb1ee76e6ac7378c065e629d59f56613 → 4700adf4542874f204c680ebad8317a97bf7169dbc04147082618ab59ce70c7d} +3 -2
  486. package/vendor/impeccable/bundle/blobs/4777bbeaff2efcd6a2a66b07aacaaf57cd32f3fab1c1da5a0513937fafb48bd1 +63 -0
  487. package/vendor/impeccable/bundle/blobs/{b6022a8c7200e96b0b55c2ff599a01d64123a2f5fe01557d4ca5192a6e0f0b0c → 484ea165f6d49ecc15b7a5c5623e377f2e203f4dad366df23eae99255ecf4572} +18 -11
  488. package/vendor/impeccable/bundle/blobs/485774d58dfd5796956024cdd9c12f05e692a3703f70b12a02ab43918885c3fd +101 -0
  489. package/vendor/impeccable/bundle/blobs/{3bf5d8661351831dbb2195e3b677fea1f128ca319c0589d538b66d9c9d7dddbc → 488da2e7406c6b4b5c92d7bc8cbd370cdaafc82a5f3ab5adbcffb21d1d1c4df4} +3 -1
  490. package/vendor/impeccable/bundle/blobs/{6f1d52863482fa0f6fff877f0cc8f6dd0b4230d28050b0d267e082776e61a332 → 492a8030d11e2f4908d934bd817bd6d16a3164056c74a7172f60e2cec5ff3055} +5 -0
  491. package/vendor/impeccable/bundle/blobs/{51e2f8963377f142ebdc9864e0ecc5aa1e5b7d344ed72d0e9d748d2d3d8c71b3 → 4972f28d96897c8dec891f0de7a0d9d51f36030ff780ed9d960241c75413da2b} +5 -5
  492. package/vendor/impeccable/bundle/blobs/4a6f0386bff78bb42efa285df2919e75209ec336672cf5fff91ba66ffb352eaa +63 -0
  493. package/vendor/impeccable/bundle/blobs/{12c1afcd15e86d840b89a78c6d17ce6d1b5609bac713d59271c6ab5932975dac → 4e3cc4d0e229ca96dd2e28fb2da0478a7f0bb64e447d07a652c425d8fbc57573} +3 -1
  494. package/vendor/impeccable/bundle/blobs/4ea8e05d0f88d24f182ad554da84317f90b9730e29fad262143ddf423a1f8645 +26 -0
  495. package/vendor/impeccable/bundle/blobs/{402656ca6df17bad1cd55ede0a966a7bb5b187cf4f89c517851f9efe7f14c0fd → 50d4b14134fc06daeac0aab6960800f171ef85250d3bcce6f246cf81e824463f} +3 -2
  496. package/vendor/impeccable/bundle/blobs/{43852ca5917de66704f73f9019d15482bb1efd92f2eefaeeeae23610b4c0c6a0 → 50f3b5714ca3e2c1bcf070003733407935ee050609d3123c2c065489fbc9950b} +5 -0
  497. package/vendor/impeccable/bundle/blobs/{f597742c8e5562263d3bce725cb55e920d8c2c60223f41a632d523ca30cdd12b → 51032bb883137007127d30189b44b516d0e6140271bf5881da7eca76f8bd282c} +3 -1
  498. package/vendor/impeccable/bundle/blobs/{13bd27aa8573e6d45d8bbf9f3fc991e4719d28a7e8f709009a4a5a49a227fff3 → 511ecde67e6bd976c9bdfa8d92f0dba359621344f8135c2a5ce5a66b385a4cb5} +5 -0
  499. package/vendor/impeccable/bundle/blobs/514a27fc9830455828d337cfc2fa95fa86be8e5464501bbabb9aca09a66b40ad +63 -0
  500. package/vendor/impeccable/bundle/blobs/{78ac93689928a580c2f90242cbaa96dda3fa4e55ff1f1d00e412b2a62ad85232 → 529cb2ace696ec11a86f4b010c9b137acf282072e483932181be1871df2aa690} +18 -11
  501. package/vendor/impeccable/bundle/blobs/53628d05b7eff0d4f48b95e48fad40266452fe1b42f398bd88dd9328353e0dd8 +101 -0
  502. package/vendor/impeccable/bundle/blobs/{00023f9e7f2e27604fde978b56510a8f837b76eeadd93221d11adcf4c98f1a10 → 53de37260c4f1c37e467557e9b038faa0f285b056bb2b95f435e0a7d1b69b0de} +3 -2
  503. package/vendor/impeccable/bundle/blobs/{0dbbef70048cc3ae44e6710ff09992ce14ad049ce8ed519b0ff8a1ddb4633f4e → 5415103ca4422ea1422e23bfe9f9bae181f5d6d6407442f7fba31856ada58d12} +3 -1
  504. package/vendor/impeccable/bundle/blobs/{af34b8af89edb10e228c0482754423f48238fce816eceb8703b8781c130da54e → 56285b28b0ffe471761c2ad062d3f933ed2346ca1b617f1323a30fed99a1a852} +1 -1
  505. package/vendor/impeccable/bundle/blobs/{12fefe52d80d25014e5f7e2f9b278275a675653d3d99ae8f0ecf344cdb9abbe6 → 56cc1bba51e6805de370160ce4a9399fef3740571204f13c3c751725870305e5} +3 -1
  506. package/vendor/impeccable/bundle/blobs/571f5c3bcf01c9b1bd02ab853a54db3f88375c4b8f39dd67d53e983a33e08bb7 +26 -0
  507. package/vendor/impeccable/bundle/blobs/{5ce02fc8f353d7f659535fb80e453963dc047a07c4396adf098fe010b479e7c0 → 5855d7595b0212bb8d521e0265378d437df8d2343d5f8a30408c3edde0a14d96} +3 -2
  508. package/vendor/impeccable/bundle/blobs/{2b21f0142ee88a11dbe2593362f5a910718a61062e3a64e7ff936ef1e74fd394 → 5a07d4769a741cd00fdf8c95b943ef072eb12cd0c9e2c2d2622d5fe0a4fa3894} +5 -5
  509. package/vendor/impeccable/bundle/blobs/{3dd45e1c32db3d3163a96ef198954905807b25cb9a1d206a7d77986f21d27652 → 5a9626fb8c1e9051155c68626fe7c765a55be325113245d44b4991fc3d3b014e} +5 -0
  510. package/vendor/impeccable/bundle/blobs/{d07e3131cdf3e392e59eaa3e2f59fcb0799d9494df4adfee12a21067fb8365ce → 5e354ae11913d5846faa3681a9ed98b68d1881fbbb1ecebf0769e3010bb0a426} +5 -0
  511. package/vendor/impeccable/bundle/blobs/{ad389ab12800738b0e5c97618278b7a824654b25990166ec9f389caa5c3386ca → 5e6eea05456108b8766cf354dda998e90b6a5ecca7f15d807e28659ee78c306f} +5 -0
  512. package/vendor/impeccable/bundle/blobs/{85b9c2d051de94ee9129c58be111946f73035ca62bbd2a3936f4fa48768fe5cf → 634257e766b1fecacd25e27dbfc7e21ef3b440b01e94e92b8b17711018d8a661} +18 -11
  513. package/vendor/impeccable/bundle/blobs/6428239079f98fd6500e9fd032dd289b52052da7a4364ff357b0a5341b6444db +63 -0
  514. package/vendor/impeccable/bundle/blobs/{f424dafa190533cd32c0bc3e4131d0c472d58e16bb191eab14f0ae73c2cea917 → 647bab2f5cf6279d58d808f4df05d1ac63c1c86c6df9d13406ae776458653995} +5 -0
  515. package/vendor/impeccable/bundle/blobs/{8e7bb79db7331b93f99de314dd5599de8587ec0b6c25e26cf1efab25c0777fcb → 6528f2aebe4a425b724de293c8f6dc8a42ca80c7f1ed3039b8b9a813b004956a} +4 -3
  516. package/vendor/impeccable/bundle/blobs/{89eb0206a0d9308c6c6a7cc01bc4fd8812d2bd34bb9a831988c5d86fac2c60de → 6575a657642ccdab42d0743ceaee06621c77811b4dc4f21c616e28aabf5e28ef} +1 -1
  517. package/vendor/impeccable/bundle/blobs/66d60356172ccafdd334fca9bf33243c8409216a733dcde0d66a24fd70ee8132 +1 -0
  518. package/vendor/impeccable/bundle/blobs/{759bab1d8adc071fdde2efcf6e2157aa4026f3c2b4f3c342a8070bf328011616 → 69cad1ae7355825ef320ac9638a1c9675ba9fda01c9a0fa12244cc4a1973e550} +2 -2
  519. package/vendor/impeccable/bundle/blobs/6d21d8e2729effaecc5b6239dadbcffb1ec8d51e8bdadeb47a39827266a61c5e +26 -0
  520. package/vendor/impeccable/bundle/blobs/{ff882c59c9aced92338aa194cc99a521ea2f083fd22eef3b1c1225e06bc72f66 → 6d9258a49c0b0583ec255eeb1092554298d5eea676fb9391f5a5a1377c3fd770} +4 -3
  521. package/vendor/impeccable/bundle/blobs/{68bc52a604731ca024610051fc763f4d78a53eb2a45d35b40a8c0383043baa63 → 6f4dfe968f47302ea64dca0e02f8c6d81497d93e4f436d09236e305456cbcc02} +4 -3
  522. package/vendor/impeccable/bundle/blobs/{f97a6891c80bbbc728edefcf4b638d1a823b38f3cb16ecd0fbb717734cc5c0c8 → 6f7f1639a933ed88e116aa8ab0cfb951096930d14f413349ae22ed04e28d2358} +5 -5
  523. package/vendor/impeccable/bundle/blobs/713a942482531ef8ef103adf48d9decd7327697450e444289aa0479458e4ee1f +101 -0
  524. package/vendor/impeccable/bundle/blobs/{6d47503587ad6da17ac529f44a96123bbb96a9c91a7a9350b7690fc467561a5d → 7212014fb2477d1d54aedaa79cdb861071a58afb2ae6d4dc5a495fa4810c6f8a} +5 -5
  525. package/vendor/impeccable/bundle/blobs/{21bc91f6e07691e82b7bba99f9e1d956f9d7a6810dcdc18d231fe73b53a13b23 → 73f8bdec7d9a97476fd7d7e0b4114b5c3e9c7b84c22cbb876cd18c3e64a9b8c5} +5 -0
  526. package/vendor/impeccable/bundle/blobs/{a8547c8565979894f0c07f92a96ac2a38e681a31fbf155ffeefc7566e185d9c2 → 754e9f0aa2101245a83cb17d8cc5bc49cf87997b29a83dedbfff283dbd0a8c4f} +5 -0
  527. package/vendor/impeccable/bundle/blobs/{84df879a0332a56ece4bff1922ecf4f50635951b3c67e67eb46f31bc5d30fa9a → 765d3e890cd7f58ca94b6834181052166e9c4f9ef06278dc241da4d64da2d595} +3 -1
  528. package/vendor/impeccable/bundle/blobs/778cedc9199b407d3e23fa1041e38d548b00b1101a33517aa2a2eb299f9d0edc +26 -0
  529. package/vendor/impeccable/bundle/blobs/{ef0b8eca20e1321cf7216fd0bda41ce54b0cca197cfd1b075eb51f3436f59059 → 77ae09542fbc10aa4e8b119d6fd19359908a47c13c30068d6a150bfdb50e3e10} +1 -1
  530. package/vendor/impeccable/bundle/blobs/{15b4837dccb27d7382e2f134ef050b244c4488b1906e0308f288112183cc09ac → 796bbd8231413fcbf22eb7e6f40c402842aa4b10b1894545a7b05d9201ca7c4a} +18 -11
  531. package/vendor/impeccable/bundle/blobs/{5e3616ac45568f239fda3a4764f7d3bf3473b8b5eefd91e402dd9208a4b851d1 → 7af7fcc09c6b14f26ba78734460a2f9dddd2dcd2e2fa0c47c682f539e2f4cad5} +1 -1
  532. package/vendor/impeccable/bundle/blobs/7b1a4cc5ce94837c8309962a204c47361927e442b7a1c3cc472f90276eca8b8c +63 -0
  533. package/vendor/impeccable/bundle/blobs/7c417abe75f0ce4341b6f5acbadcafbbeabcc32cdb13c930aecc5cabda9f9242 +26 -0
  534. package/vendor/impeccable/bundle/blobs/7e36403ed58e0e82c0e42bf2fbea1c066b8e63276978647a6f1e44bf1edb23fb +63 -0
  535. package/vendor/impeccable/bundle/blobs/80191b3580a996a2045105976f728e0f46de22c412fc7640741add9767b2d8f4 +101 -0
  536. package/vendor/impeccable/bundle/blobs/814610dee1081abc4213476ff0c4ae3e8f457909550d250ea0f89953687c85c6 +63 -0
  537. package/vendor/impeccable/bundle/blobs/8157b5a376e46980117f1ad6d08b24ee7be966f5de64b041bd213d486ea8c077 +26 -0
  538. package/vendor/impeccable/bundle/blobs/{bad9250670c18d89722563fd747bae4c4bec64d1db0ee09d12d4fea04fe271b8 → 8373668da1aa37c39888809ed9e834a7edfcb884af12f74934c270d004fba626} +3 -2
  539. package/vendor/impeccable/bundle/blobs/{46250caaec1bd69619a5b28a73cb3c845b319d029b0af9228aaa7001e7e0104a → 83d614fec61078175383012a088f49a9c0bb08b9ebd2b651c77cb94a323474ab} +5 -0
  540. package/vendor/impeccable/bundle/blobs/{a5371492582dbeb69b24a1a2947b256a2da8a4d55917af709bbab6e452d9d23c → 8449781319a33d4a10a7fab9bfa4812241c303b95f33703b300b097dba51089a} +18 -11
  541. package/vendor/impeccable/bundle/blobs/{12d2a8043ae8668ad29c32bfa92995849fc49cb016e6ebd4f7e59539d96e7b03 → 857c4a0db5859f1fa91152db684528299dfc552525f50f416d1625a270e12671} +5 -5
  542. package/vendor/impeccable/bundle/blobs/{bead87679caad7c537dd7c04c3bb78be56ac7eec279ad6aad7322f48ff2df2d9 → 871a8e4d749b807c693ebabd83defbd6c76e1bd2a0f53a28a460cb1308ba8634} +6 -0
  543. package/vendor/impeccable/bundle/blobs/{cf3ae16765e7b5bc333ef76e24ab37f080e3d62e931c4986158e3cbcda6b9f7a → 881a58aadf300bcc8f4947243e82192ae8dd7f14822a70fabc84fc74a5f9199c} +5 -5
  544. package/vendor/impeccable/bundle/blobs/{896da399bafcffb0623bdd81bb18709d6eab25c9d5917e739c8798f31ff0d076 → 88549c11ea55d5dfc9f551db9a9c270d7362a9d42aa83db7747c9a7f020e1255} +5 -5
  545. package/vendor/impeccable/bundle/blobs/9287af96048c58ed0e72493cf7eb90c3957d4ba8b19e70ecf5d1f54264e9e597 +101 -0
  546. package/vendor/impeccable/bundle/blobs/92b7ab84c828fa888f4882c417c3d7f8fde2e5445b40f96f4fc8181a3e058afc +101 -0
  547. package/vendor/impeccable/bundle/blobs/{e2f98c4136d0ab70ec32fcdef58edb20ed8ec4f6cc067e0dae952b22cfd6a471 → 93c53421c3376f695fe9dad5c82102f74bb5dd15e4ced81bb4ad50a71e5f1027} +1 -1
  548. package/vendor/impeccable/bundle/blobs/{a8f4056a85706c0c8f80ec48e9b437e198464100aa42786f9252051f4b931c19 → 95f0c7935a6d0375e09ae67ae0066c0ce7b583bf1d445d268cc4d2f4f900b1bb} +3 -1
  549. package/vendor/impeccable/bundle/blobs/98384b78af087855dbb526ec1e870a676ecd87f57237643dfea815317dad8a07 +26 -0
  550. package/vendor/impeccable/bundle/blobs/{948326fab89f0d5c07355a06b9b9c30d08bba2e3a673a0151ebbf5a39dff7b9a → 99e4a6facdb07986aa721bda8a4e35466b30091f32e38d7a71d9fcbe3591f65a} +5 -0
  551. package/vendor/impeccable/bundle/blobs/{44a91b3f0810f43829d8584e912812444d15614e4b57ca8070aee7ab899f7c1e → 9a4aa0d4903eabee987fdc92053466ff7f6eb0604797aee0efe67d67999b3eae} +5 -5
  552. package/vendor/impeccable/bundle/blobs/{9b85b85443aec09918befb83208c72f475457db8261a8fc5e83ef7eec474c869 → 9d45e5f6c082de6df4a2cfff11deb969715c49b5d9891d100dd1b2252c5bdcdd} +18 -11
  553. package/vendor/impeccable/bundle/blobs/9db3c0857f4c2c8877b1fe24a47a229fee0de76ec9057bd8ee95f0677fb58d74 +26 -0
  554. package/vendor/impeccable/bundle/blobs/{5738bcf9ac21dbb2113fd0c5cc7e4bbfc8174778916ab5843644332b3dbbc36e → 9e82126a2e08aa365f9c430d383cf6e1921e04d1e0a1b5777716ff97828cfad8} +5 -5
  555. package/vendor/impeccable/bundle/blobs/{b3782f2d9215eb0f5df4fe3c0e0bec07cef011e1836d4d0e45ef02bc48d3adde → 9f2993499adadfdef4065a9a7fb69c75f888d892d4ee6bdbe62619bc772f495c} +1 -1
  556. package/vendor/impeccable/bundle/blobs/{1c804990fd8ac23a4b19c42972b5ae591d17f620d0006f0f32927c8db5d5bf50 → a1af8b8a97665a3692eb39872c235796684a387a0b83785872f81aebd9dab046} +18 -11
  557. package/vendor/impeccable/bundle/blobs/{824b994782a1fe68a244bbdff7218a2e0854655d90cc0fb5ade7ef9259ba6305 → a27399e3056c77a28ddd310fb5b4dee6e8e440dfa1737f7e38815097bec4c3a9} +5 -5
  558. package/vendor/impeccable/bundle/blobs/a569989e6a3d6453b4c45e9474e162a15cc54e11732ac6baa7990a6e7cccc0b5 +21 -0
  559. package/vendor/impeccable/bundle/blobs/a75b892696469e3ccd2af33c9eef793e635efc3c5ac45336b0c1373d90c856b0 +63 -0
  560. package/vendor/impeccable/bundle/blobs/{3ba92d4aa840ec1b6c2fda224339489d6dd65eedf43bb45836af02584d1faa88 → a7e8e60df83c6f47590467094ab2a13f1fe28ce45959a4e69dd89575a4208646} +5 -0
  561. package/vendor/impeccable/bundle/blobs/{e49d2b0110c55751da3c965b4ae4d294aa676c961a09f8efbbbf22c1ec7c4fa0 → a892e337eee548d53252abb72ba5aa85cbcf556ffd8dc74e05534652c010d574} +1 -1
  562. package/vendor/impeccable/bundle/blobs/{8f0867db7c6f6a54348a0d951f198a1bd852cd12505d821e6e1ac6bd42e7fcea → a93397adc906e245c69b42d4b25931fc92dc75baa60ca9a3749ba23b52ba01a0} +3 -2
  563. package/vendor/impeccable/bundle/blobs/{424b2e75cb204e2dca7db4a40dfe5a81f78dc0fc58ac4790e8b7bbf2f330bba4 → a9e63b2df611805e845e0bb1cca1a0c27e83640a78185c9fd9de90d53a539cdc} +5 -0
  564. package/vendor/impeccable/bundle/blobs/ab80e6a971baa66342548a846ce3fb69824ef9ef4e0f26c6f02685f225d00bbd +26 -0
  565. package/vendor/impeccable/bundle/blobs/af35b5fb6e45acb6483a5fbb864c3eaa9c57bacc43857f48183c836041c670ae +101 -0
  566. package/vendor/impeccable/bundle/blobs/af5842c4844b692b817319d5375611d4211dc7f459fb12da358baefc3a6cd373 +63 -0
  567. package/vendor/impeccable/bundle/blobs/b2732083f8f1d1924d38f84f179491430aebda8e0fd1f1d0785e3f883bcf3a40 +63 -0
  568. package/vendor/impeccable/bundle/blobs/b3b1d5a4c80ce279d88896601deee9ccfeacdae0d0cd433600985a5f7ac93c72 +26 -0
  569. package/vendor/impeccable/bundle/blobs/{fd5579dbae1fc2495b7dddde48df9673acebd27953bbb56d506d3b470375c9e9 → b4be5499f404a926cdd2c55d8fb7409ba74a56b3d0c7d865594cc0254d3e499a} +5 -0
  570. package/vendor/impeccable/bundle/blobs/{2fd096823e4a93f19edd421a69e10f90ebb630a014c673d1802a927c6f47b7d2 → b626e0677288a1660e9ce80c4f0454b527010239681f6b8dcc0f36b4a4d6bcb2} +3 -1
  571. package/vendor/impeccable/bundle/blobs/{33b6b32c0c3c0c4a2b22bd2275176b1c88a006dd94592a854f629911a0b21cdc → b719be9c5d4ced5d649ec6c0c90630196e7ee513d0da482aef13c705fdc23ab6} +3 -1
  572. package/vendor/impeccable/bundle/blobs/{df0eb9e9a484fc7b8a0f3e50573a7d7f81e0f17598ac30d9f3fe5a6c6aa5fefa → b8938fea3399aa639b4c873248035c219658069eef7be62672254e2f72c056f4} +5 -0
  573. package/vendor/impeccable/bundle/blobs/{ee0a15fcfc244b76b896a2650a17b35e444d4311166b69a3cfa32d11f8f44851 → ba0d96d88ab40fad1cb522e60b11affc568cfe9d340110ac5e71f834ac3d0f4a} +12 -0
  574. package/vendor/impeccable/bundle/blobs/{426c7f5437dd3c23a4cfaef6964dc7f1e038480f92238499b85f3ce7e4472bf4 → bc48bca63dff44e1f0205bafb64e16b2d6fb294ace405dbc9ae06a3bc6107154} +3 -1
  575. package/vendor/impeccable/bundle/blobs/{c3ad2a5fa570876af6645c48d246c664859e19f253d2dc9e0ead34e785d5b40a → bdd676c8f29295addfdbceaab285bb1184ec3ef7ff60501908b97ea8269580c4} +3 -2
  576. package/vendor/impeccable/bundle/blobs/{38d4d404030c6ea935d3223db1eeb22c45d04a94f41f98e02a43cdc5af7ff2e3 → c06effcdc60859157208d3b7ee23d56160f2386f6a2dfa2514ba82fe21828ae0} +1 -1
  577. package/vendor/impeccable/bundle/blobs/c100b67a4ae248ad564182b181acb1ee2fe64c00049aeef62d4e7a3213726f37 +26 -0
  578. package/vendor/impeccable/bundle/blobs/c2dfc965319745c403b99e00e9e97de15f1300ea721bd3f708f0ac47aadc537b +101 -0
  579. package/vendor/impeccable/bundle/blobs/{e9da72a13eb3411d6bbb316953022f62abc4434f505e5345907b216eda9f793b → c6b3bc811eb23d90ff9add1e0e5b40999a0bbbab364f5e6d08061f36d30429a5} +1 -1
  580. package/vendor/impeccable/bundle/blobs/{82a5e564563333aabb7ab4d2f8c26c785dfe2c2416ac6e9f30cba31440676194 → cdf8a88b9865599c58fe285041d2d46eea7d9bd2d4075d82de358191742b20ad} +5 -5
  581. package/vendor/impeccable/bundle/blobs/cf3d3a296890ac1ee363fee930f252e20d0935cd575367ad017b3cdc2dc5a50d +26 -0
  582. package/vendor/impeccable/bundle/blobs/{a1e4febca3455787d7c753fe177a150dccde6e742957de400b0307247802d200 → d2e16da9bb6b33c931378d1bf57dcfff5dc426a71434bc352cec6aece715a66f} +18 -11
  583. package/vendor/impeccable/bundle/blobs/{c36f6aac0ddf52eabbb21df09fd3310540dca6b09e7a4017d18e94c06c469405 → d4a9e18a879bbb92aa0a56e16b45481090dffa4470efdecf52fb0da8c900be5d} +5 -5
  584. package/vendor/impeccable/bundle/blobs/{869fa5390b84bfd00d072f5280a9002ea3e3936edf5985241be641a87f03ff7b → d57c3e0453f601ad688911fca4471057c7b46b561fcd42a1e12a581101c5186c} +1 -1
  585. package/vendor/impeccable/bundle/blobs/{910461b1c1f8216155165955c860a884a1e2f557cb38f21ef512ea90ef6503c2 → d5f83912eda93d42f93522bb74aeff0ea04d9c559577ec52fcccc130dd03166d} +2 -1
  586. package/vendor/impeccable/bundle/blobs/{9deb14303b421b5a9232755b5b9f317716f33e1e211557a98a00a9c409775c4d → d6489d7f3e607ce3f8514a7a7d3a0eb5e8f1ac55859eaf7d5c31b53de8fab9f3} +18 -11
  587. package/vendor/impeccable/bundle/blobs/{37080ea5e5b381adb7eae7a427231b0ad0dee0f0916fc1d6b673b7101a5b425b → d6a51f4df6d76f16b95ab81268a689f4c5936d505c5bb25c80ad7423f927bbc6} +5 -0
  588. package/vendor/impeccable/bundle/blobs/{61c72fdde649bf7f2e0668e48f9d222666c81672100b5f2265940e7aa13c8767 → d7b99a57652cb8741d57a15ba7e06de4707fac02a97e5e001179da007272f2b8} +3 -1
  589. package/vendor/impeccable/bundle/blobs/{57402ef6fd9d0745f8c60d778f77da83a8b16edf751fa1013598a0f6e5f0f541 → d9963fd73bf6129fe0c8ec25c5148f50617ec85683b8eeae7e411c9a42e2db33} +2 -1
  590. package/vendor/impeccable/bundle/blobs/{581409ace104a81744b7d08f5398a2c207cf76d9e50751f807b4382eaf66454f → da3b2399814db89d67959268c646601957d3e8c641b09a5bdbce84217c1c2cfe} +5 -5
  591. package/vendor/impeccable/bundle/blobs/{249f0437a52ab3eb4bc4d4a9f38e085334c0fbb7795e88dd419e32b5f58c924d → dc3aeccbea3e997704ce8b170f56b0eaf343a14ad4fedb22a6dbee0f205aa37f} +5 -0
  592. package/vendor/impeccable/bundle/blobs/{433a79eee3ce4c99e79a7aebe3a6d8ec9ff70216772e0c2ff9dce3a01d672963 → dcc1572e739cdabcbf084f276b447cb686aa18459896e6d8fe29f4d7d807bd1d} +5 -5
  593. package/vendor/impeccable/bundle/blobs/{2d7086992c07df1fc734cdf9c420c4bd8ad409ab7909e07c8b486c303d420732 → dd66761b291c7dbca6e9efd22023e38f8c53ad310f3a6cdab5dc7ecd7ae8f31f} +3 -2
  594. package/vendor/impeccable/bundle/blobs/dd953992625c240fd1842aaf533a865aabd09487cbc16fa01fe8bb4b4365b843 +101 -0
  595. package/vendor/impeccable/bundle/blobs/{df4f14df1daaad1606b682995f649da19a85debf264092447b3b7ddb8b4bc1ce → de70398719140e4951aa111e9625de5ed916ad1ef0877e4ab6f6b4a7e3cc5f8f} +18 -11
  596. package/vendor/impeccable/bundle/blobs/{8b23562ccc3e41609ce6e67fdad6cc57b6c961964c329eff6975a1b4c5471c0d → deaaa533475b6a9f7dd52e01a1f1997aa3af146694334981650f8c846f939559} +3 -1
  597. package/vendor/impeccable/bundle/blobs/{041535231366047a0beeb5daa64ea9c23d5a566580f7dafdb8c0623cb4a7e76b → e07176229b8a330970ca3c9c5e3dd68c2aaeb726285e30f471e91053d7f8e798} +1 -1
  598. package/vendor/impeccable/bundle/blobs/{115e1c3f1b58b5129910ed925dbf65d61d5ac4c2036618847555ce40098aae97 → e1075ea5b34ac9c60f7c5bda97356eeaf1b683b599592d324fd3704f0852ad7a} +18 -11
  599. package/vendor/impeccable/bundle/blobs/e3af212117e0c552b0976687200fe8f95846a01725a482e8e4dbfd75e40dbfa6 +26 -0
  600. package/vendor/impeccable/bundle/blobs/e3c2031978cd670d7150ff3140f12cf8b6882ef638ea9a9985caffa9a80c8713 +63 -0
  601. package/vendor/impeccable/bundle/blobs/e6e18e7c23cfe82961d90b9714cb466c20bd83f222ac63e9339b6b2c304e1787 +26 -0
  602. package/vendor/impeccable/bundle/blobs/e7af7ad18b307a3171fcf49421df2a557f93289d27af2430f10ee74e2a2fc2d3 +101 -0
  603. package/vendor/impeccable/bundle/blobs/{b161198874e4e77599bc31691e78790be14bacc2eb03be168c8a7543ece9fbe1 → e85da3098368807689009184eca2bb09a91bdb6cb1be3e7a61f91f1ae31cd69b} +18 -11
  604. package/vendor/impeccable/bundle/blobs/{6bdbc3f745ceee15e10b050f109ce42bbeb53ab3c3b5239257de1d596654dee7 → e8720f3aa41135211cc58cc299a39eeda86c75651f4279cc1ede8db10dcc0584} +4 -0
  605. package/vendor/impeccable/bundle/blobs/e9861052457cc1ddc42c687bb8c33a877834ced94fed74af2a4f00f6bae50795 +101 -0
  606. package/vendor/impeccable/bundle/blobs/{d1faa55eb956033d28e9f27fd2bc2a9f62c5da0f0abd6534819cc0a04db54d9d → eb3e86876c20f1cfc443dcbe48d8f41fea6e815082a304610be432272429a06d} +5 -0
  607. package/vendor/impeccable/bundle/blobs/{0e1819750e5448311a051d35ab6d0be0830418f78ca872ef10469fafebb27d4f → eba472f6190541c28e2e647ed019f43564ba5b92d629963f34c899175b25b31e} +5 -5
  608. package/vendor/impeccable/bundle/blobs/{f173ff03f989f162cee815feb2d8ca72daf00019c48694d89db16d52171a79c0 → eba609589a5a051643a7bae60b7cceef7cfe44d0f8bd9229e61473ac75910fb3} +1 -1
  609. package/vendor/impeccable/bundle/blobs/{8eb466778023fccea641654d662157b123eeb360f4a0875bf6fbe3d93680851c → ec81b008d2641402e3352b09b1a90562ef7a24598d7c5aded475038cce63aca0} +1 -1
  610. package/vendor/impeccable/bundle/blobs/{4acfb9e38f6e09f7484e36fc19704d69eab159436ee9329168be74c493042f22 → ec86b8633fbeb14ef2272f220fdd98089972b03b99da83e49eeb6a8b73b00617} +3 -1
  611. package/vendor/impeccable/bundle/blobs/{d15a2914d93e07a4956acd5c8b8211af17380f527acd10d8acf4f4920badaaaf → ef2e97cd690baf6fe5c895dd2d8844aff9fcc4a8bc04973402678a739c81d712} +4 -3
  612. package/vendor/impeccable/bundle/blobs/f0fbe529f63961a027bada2e6a3cbe86f4af0dba4b8e1010da22b007f9002f66 +63 -0
  613. package/vendor/impeccable/bundle/blobs/{c02feba25a961a72647ad317aba2d65baeeed53c4cdcc072f25bb37f4d867d43 → f254d59ff973e907cacdc2c34b8b4de075437d292de31dac30e10a9d7035086c} +3 -2
  614. package/vendor/impeccable/bundle/blobs/f5efb1b1dd4cd18e1d4789d7c8e0188f4342b25fffd53af6088ba8b67774fb99 +26 -0
  615. package/vendor/impeccable/bundle/blobs/{7af0a8665057c83b39bca2c8c7427ef2343734f70d4128c377113a6726a1e3b1 → f68a3d68ac92606e91aa8878e003d9432ddd09aa97ca01c6b3ce46c937dca316} +524 -4
  616. package/vendor/impeccable/bundle/blobs/{381ff89aa76e82a0d98456ec31cb117555ae045539fba47c45056daa50f611ca → f84b653ede0804d21e6210c6d21fd5352023914fedceae6ff14e20f1e93b06e7} +5 -5
  617. package/vendor/impeccable/bundle/blobs/{5b30a06646ad5e453d6b5ed1b8d446f69fca3cd13b8aeda28f0d0b2cbe8f62d1 → fb32d99751c5fc24493ff4460be1767bd5236dc820fd337775067c0620d1a7a6} +3 -1
  618. package/vendor/impeccable/bundle/blobs/{733504a70ed20bcfca9c26c353f7b88f8491d24f3f2fe124dc1e73b28eefa296 → fb5fec24adafa48df43eece6907c1c986a4772cbdc64142c881f00c3b312e9ca} +18 -11
  619. package/vendor/impeccable/bundle/blobs/fc149b5bc7a8d0cc9b9bf86e5013793f3857c1c302212e9aaf101cb95427386b +101 -0
  620. package/vendor/impeccable/bundle/manifest.json +413 -298
  621. package/skills/grafton-view-dev/SKILL.md +0 -195
  622. package/skills/grafton-view-dev/references/bindings.md +0 -120
  623. package/skills/grafton-view-dev/references/components.md +0 -168
  624. package/skills/grafton-view-dev/references/recipes.md +0 -208
  625. package/skills/grafton-view-dev/references/schema.md +0 -86
  626. package/skills/grafton-view-dev/references/stores.md +0 -310
  627. package/skills/portal-backend-app/SKILL.md +0 -56
  628. package/skills/portal-backend-app/references/gate-and-tokens.md +0 -93
  629. package/skills/portal-backend-app/references/wiring-and-conventions.md +0 -71
  630. package/skills/xgent-init/references/external-app-CLAUDE.template.md +0 -249
  631. package/vendor/impeccable/bundle/blobs/800cf1c0392b24de7c0a1c6ea6778ecb433dec71c49a150bce96a98477527b2f +0 -1
@@ -23,6 +23,7 @@ import { spawnSync } from "node:child_process";
23
23
  // 本地配置文件的读取只有一份实现(同目录 registry-config.mjs,npm-token.mjs 也用它):
24
24
  // 抄成两份的下场是换个字段名只改了一处,另一个脚本悄悄退回默认值。
25
25
  import { loadConfig, parseArgs, pick, warnIfProxyIgnored } from "./registry-config.mjs";
26
+ import { normalizeEmbedCsp } from "../references/embed-csp.mjs";
26
27
 
27
28
  const MAX_BYTES = 64 * 1024 * 1024; // 门户侧上限,超了直接 VALIDATION_FAILED
28
29
  const VERSION_RE = /^[A-Za-z0-9][A-Za-z0-9._+-]{0,63}$/; // 与门户逐字一致
@@ -113,8 +114,8 @@ if (html) {
113
114
  if (external.length) {
114
115
  warn(
115
116
  `index.html 直连了外部地址:${external.slice(0, 3).join(" ")}${external.length > 3 ? " …" : ""}\n` +
116
- ` → 生产受 per-App CSP 管,自助面改不了它。XHR/fetch 那类可由 manifest 的 embedCsp.connectSrc 放行;` +
117
- `字体/样式/图片走的是 font-src / style-src / img-src,能不能放行要问平台管理员。最稳的做法是把资源打进产物、不外链。`,
117
+ ` → 生产受 per-App CSP 管。XHR/fetch 可通过 publish --manifest 申报 embedCsp.connectSrc,治理审核批准后再验实际响应头;` +
118
+ `script/style/font/img/media 需各自来源声明;扩展指令要求目标门户已启用严格 CSP 与 v2 网关,预检无法确认启用状态。`,
118
119
  );
119
120
  }
120
121
  }
@@ -228,6 +229,16 @@ if (!manifestPath) {
228
229
  err(`${manifestPath} 不是合法 JSON:${e?.message ?? e}`);
229
230
  }
230
231
  if (mf && typeof mf === "object") {
232
+ if (Object.hasOwn(mf, "embedCsp")) {
233
+ try {
234
+ normalizeEmbedCsp(mf.embedCsp);
235
+ ok("manifest.embedCsp 通过生产严格语法检查(不代表已获批或已加载)");
236
+ } catch (e) {
237
+ err(`manifest.embedCsp 不符合严格声明语法:${e.message}`);
238
+ }
239
+ warn("能力门未核验:strict 默认关闭;扩展 CSP 需平台确认已发布兼容版本并受控启用 strict 与 v2 网关。whoami 成功不证明此能力已启用。");
240
+ warn("embedCsp 省略沿用;null 清空;完整对象替换原声明,未写指令会撤回。来源增删均需治理审核。");
241
+ }
231
242
  const isObj = (v) => v !== null && typeof v === "object";
232
243
  const shown = (v) => JSON.stringify(v)?.slice(0, 60) ?? String(v);
233
244
 
@@ -1,96 +1,37 @@
1
1
  ---
2
2
  name: xgent-init
3
- description: 在一个 XGENT.ai Portal 出仓 App 自己的仓库里生成配套的 CLAUDE.md / PRODUCT.md / DESIGN.md(并镜像出 AGENTS.md)—— 读 app.manifest.json 与代码事实、一次性把缺的问清楚、按模板填出可直接用的三份文档,不留任何待填占位,已存在的文件不覆盖。凡任务是「初始化/接入一个新的出仓 App 仓库」「给这个 App 仓补上 CLAUDE.md / AGENTS.md / PRODUCT.md / DESIGN.md」「补一份 impeccable 能读的设计文档」,或用户刚拿到一个空的/只有代码没有规范的 App 仓时使用;门户 monorepo 内的 App、非 XGENT 项目不用本 skill。Use in an external XGENT portal app's own repo to scaffold its CLAUDE.md / PRODUCT.md / DESIGN.md (AGENTS.md is written as a mirror of CLAUDE.md) from the app manifest and repo facts — one round of questions, no leftover placeholders, never overwrites existing files.
3
+ metadata:
4
+ internal: true
5
+ description: 在 XGENT.ai Portal 出仓 App 自己的仓库里补齐 AGENTS.md / PRODUCT.md / DESIGN.md,保留 Portal 产品边界和设计规范,支持不同 coding agent。用户要求初始化出仓 App 规范、补齐产品或设计上下文时使用;读清单与代码事实,一轮问清缺的信息,已有文件不覆盖。install 本身只直接创建 AGENTS.md。
4
6
  ---
5
7
 
6
- # xgent-init · 出仓 App 仓库的三份文档 + AGENTS.md 镜像
8
+ # xgent-init · 出仓 App 的 Agent、产品与设计上下文
7
9
 
8
- **用在 App 自己的 repo 里**(门户代码不在你手上,也不需要在)。产出:
10
+ 用在 App 自己的 repo 里。产出:
9
11
 
10
- | 文件 | 谁读它 | `service` 型(无前端) |
12
+ | 文件 | 内容 | `service` 型(无前端) |
11
13
  | --- | --- | --- |
12
- | `CLAUDE.md` | 每次开工的 agent(Claude Code) | 生成,删掉前端五节 |
13
- | `AGENTS.md` | 读 `AGENTS.md` 的 agent(Codex / Cursor / pi) | 生成,`CLAUDE.md` 的镜像 |
14
- | `PRODUCT.md` | `impeccable` skill 每条子命令开工前 | 生成 |
15
- | `DESIGN.md` | `impeccable` skill、任何 UI 工作 | **不生成** |
14
+ | `AGENTS.md` | 通用编码准则、onebox 联调、前端浏览器验收 | 生成,前端约定按适用条件执行 |
15
+ | `PRODUCT.md` | 产品上下文与 Portal 已提供的能力边界 | 生成 |
16
+ | `DESIGN.md` | Portal 色彩、字体、组件、主题与 iframe 设计规范 | 不新生成,已有文件保留 |
16
17
 
17
- `AGENTS.md` 不是独立文档:正文与 `CLAUDE.md` 逐字相同,只有第 1 行标题不同。改任一份都要同步另一份,`check-docs.mjs` 会核对。
18
+ `AGENTS.md` 是独立的通用规范,直接使用 [references/external-app-AGENTS.template.md](references/external-app-AGENTS.template.md),没有需要填写的 App 身份或启动命令占位,不生成或镜像 `CLAUDE.md`。
18
19
 
19
- 模板在 `references/`,槽位规则在 [references/fill-guide.md](references/fill-guide.md),结构检查在 `scripts/check-docs.mjs`。
20
- **平台契约不在本 skill 里**:口径以目标仓已装的 `portal-external-app` / `portal-micro-app` / `xgent-app-release` / `xgent-image-push` / `portal-dev-setup` / `portal-app-exchange` 为准,模板正文已经引用它们,不要在这里或生成的文件里复述一遍。
20
+ `PRODUCT.md` 与 `DESIGN.md` 分别使用 [references/external-app-PRODUCT.template.md](references/external-app-PRODUCT.template.md) 和 [references/external-app-DESIGN.template.md](references/external-app-DESIGN.template.md)。填槽位前读 [references/fill-guide.md](references/fill-guide.md),保留模板里的 Portal 产品边界与设计规范,不替换成通用设计建议。
21
21
 
22
- ## 红线
22
+ `install` 保留 hooks / impeccable 安装,可选步骤直接创建仓根 `AGENTS.md`,不安装本 skill,也不生成产品和设计文档。需要补齐这些文档时显式安装并使用本 skill;非交互 install 用 `--xgent-init` 创建 AGENTS.md,`--force` 也不覆盖已有文件。
23
23
 
24
- 1. **不编造。** 用户、指标、竞品、启动命令、端口 —— 从 manifest 或仓库里读不出来的,只能问,不能猜。
25
- 2. **不覆盖。** 已存在的文件一律跳过。只有用户明确要求更新时才动,且只改指定小节。
26
- 3. **不留占位。** 生成完的文件里不能有 `[方括号]` 槽位、`<!-- 填写指引 -->`、`<APP_KEY>` 这类令牌,也不能有「请根据实际情况补充」这种话。
27
- 4. **不引门户仓路径。** 目标仓访问不到 `apps/…` `packages/…` `docs/…`,要指路就指 skill 名。
28
- 5. **只问一轮。** 把所有缺的合成一次问完,别来回打断。
29
- 6. **脚本不绿不算完成。**
24
+ ## 约束
30
25
 
31
- ## 流程
32
-
33
- ### 1. 前置判定
34
-
35
- 目标仓有 `app.manifest.json`(根目录,或 `deploy/portal/` `portal-app/` `deploy/` 下),或用户明确说这是一个出仓 App → 继续。
36
- 在门户 monorepo 里 → 停下,指向 `portal-micro-app`;这份 skill 只服务代码不在门户仓的 App。
37
-
38
- ### 2. 存在性检查
39
-
40
- 逐份看 `CLAUDE.md` / `AGENTS.md` / `PRODUCT.md` / `DESIGN.md`。
41
-
42
- - 该有的都有(`micro` 四份 / `service` 三份)→ **报告「已齐,未写任何文件」并停止**。
43
- - 部分存在 → 只补缺的那几份,已存在的原样不动。
44
- - `CLAUDE.md` 与 `AGENTS.md` 只有一份、或两份正文不一致 → 以用户认可的那份为准补齐/对齐另一份;动手前先把要写的内容贴出来确认(红线 2:不覆盖已存在的文件)。
45
- - 用户明确要求更新某份已存在的文件 → 只改他指名的小节:先把改动后的小节全文贴出来,确认了再写,不整份重写。**改的是 `CLAUDE.md` 或 `AGENTS.md` 时,同一处改动要同步到另一份。**
46
-
47
- ### 3. 事实采集
48
-
49
- 按这个顺序,**不许跳级**:
50
-
51
- 1. **`app.manifest.json`** —— `listingKey`、`name`、`type`、`color`、`tagline`、`desc`、`navItems`、`helpEntry`、`scopes`、`aclManifest`。
52
- `name` 两种形状都接受:对象取 `zh-CN`,字符串直接用。
53
- 2. **仓库信号** —— `package.json` 的 scripts 与依赖、`compose*.y*ml`、`Dockerfile`、README、目录结构与路由 / 页面 / 组件命名。
54
- 3. **仍然缺的** —— 进第 4 步问。
55
-
56
- 边读边填一张「槽位 → 候选值 → 来源」表(槽位清单见 fill-guide.md §1–§2)。`type` 决定 DESIGN.md 生不生成、CLAUDE.md 怎么裁剪。
57
-
58
- ### 4. 一次批量追问
59
-
60
- 把仍为空且推不出来的槽位合成**一轮**问题,通常 3–6 个:分条编号、每条给一个默认建议,让用户可以整体回「都按建议」。
61
- 用户跳过的槽位按 fill-guide.md §5 的「删法」处理 —— **删掉那段,不要留空位,也不要编一个**。
26
+ - 不编造用户、指标、竞品、身份色或项目事实。仓库读不到的必要信息合成一轮追问;可选信息缺失就删对应段落,不留占位。
27
+ - 已有文件一律跳过。用户明确要求更新时,只修改指定内容。
28
+ - 平台步骤以 `portal-external-app` / `portal-micro-app` / `portal-dev-setup` / `portal-app-exchange` / `xgent-app-release` / `xgent-image-push` 为准,不引用目标仓访问不到的门户源码路径。
62
29
 
63
- ### 5. 渲染
64
-
65
- 以 `references/` 里的模板为骨架,逐槽位填:
66
-
67
- - 替换 `<APP_KEY>` / `<APP_NAME>` / `<PREFIX>`(PREFIX = key 大写、`-` 换 `_`,不用问)与 `type: [micro|service]`。
68
- - 删掉全部 `<!-- 填写指引 -->` 注释,以及 `## Design Context` 里那条讲链接路径的注释。
69
- - 按 fill-guide.md §5 裁剪可选小节;保留的小节要把标题里的括号条件去掉。
70
- - `service` 型:删 CLAUDE.md 的「前端 UI 开发」及其后四个前端小节,并把 `## Design Context` 收敛成只指向 PRODUCT.md(不再提 DESIGN.md、impeccable、浏览器验证)。
71
- - DESIGN.md frontmatter 的 `name` / `description` 用双引号,值里的 `"` 与 `\` 要转义;`app-identity` 用 manifest 的 `color`,hover / dark 按 fill-guide.md §3 推导并在 frontmatter 上方留一行 YAML 注释说明是推导值。
72
- - **不要动** `Page<T>`、`{colors.x}` 引用、PRODUCT 的七个标题、DESIGN 的六个标题。
73
-
74
- ### 6. 写入
75
-
76
- 只写本次缺的文件。`CLAUDE.md` 与 `AGENTS.md` 成对写:同一份正文,只把第 1 行的 `# CLAUDE.md` 换成 `# AGENTS.md`。
77
-
78
- ### 7. 校验
79
-
80
- ```bash
81
- node <本 skill 目录>/scripts/check-docs.mjs <目标仓根>
82
- ```
83
-
84
- 有 `✗` 就改了重跑,直到退出 0。`!` 是提醒,自己判断要不要处理。
85
- 环境里没有 Node → 照着 fill-guide.md §0 与 §7 逐条人工过一遍,并在报告里写明「未用脚本校验」。
86
-
87
- ### 8. 报告
88
-
89
- 一张表列出每个槽位的值与来源(manifest / 仓库信号 / 用户回答 / 模型建议),外加:
90
-
91
- - 生成了哪几份文件、跳过了哪几份;
92
- - 删掉了哪些可选段落(让用户知道少了什么,而不是以为漏了);
93
- - `app-identity-hover` / `-dark` 的推导值,一句「可按需调整」;
94
- - 一句提示:这三份文件的结构是给 `impeccable` 读的,装了 impeccable 的话建议让它读一次确认。
30
+ ## 流程
95
31
 
96
- 标为「模型建议」的行是给用户纠正用的 —— 用户改口后走第 2 步的小节级更新,不要重跑整个流程。
32
+ 1. **判定目标与检查文件。** 确定出仓 App 仓根,读取 `app.manifest.json`(根目录或 `deploy/portal/`、`portal-app/`、`deploy/` 下);用户明确说明是出仓 App 而缺清单时,追问必要事实。门户 monorepo 内的 App 使用 `portal-micro-app`。检查 AGENTS.md / PRODUCT.md / DESIGN.md,只补缺的;都齐了就报告并停止。
33
+ 2. **采集产品与设计事实。** 从 manifest 的 name、type、color、tagline、desc、navItems、scopes、aclManifest,以及 README、页面、路由与组件中收集槽位候选和来源。name 为对象时取 zh-CN,为字符串时直接使用。type 决定是否生成 DESIGN.md。
34
+ 3. **一轮追问。** 把仍缺的必要槽位一次问完。用户跳过的可选项按 fill-guide 删除;未确定的必需身份色或产品事实不得猜填。
35
+ 4. **渲染。** AGENTS.md 原样复制通用模板。PRODUCT / DESIGN 按指南填槽位并删除填写指引;保留 PRODUCT 的七个二级标题、DESIGN 的六个二级标题与 YAML frontmatter。身份色使用 manifest 的 color,hover / dark 推导值注明来源。保留 `Page<T>` 与 `{colors.app-identity}` 等类型和 token 引用。service 型不新生成 DESIGN.md,PRODUCT 中的设计文档指引改为仅在有前端时适用。
36
+ 5. **写入并校验。** 只创建缺的文件,不触碰已有文档;运行 `node <本 skill 目录>/scripts/check-docs.mjs <目标仓根>`。修复本次生成文件的错误后重跑;已有文件的问题仅报告,不自行覆盖。没有 Node 时按指南人工检查并说明未用脚本校验。
37
+ 6. **报告。** 列出创建与跳过的文件、槽位值和来源、删除的可选段落,以及身份色推导值。说明尚未完成的校验或缺失信息。
@@ -0,0 +1,149 @@
1
+ # AGENTS.md
2
+
3
+ 行为准则,用来减少常见的 LLM 编码错误。与项目自身的规范合并使用。
4
+
5
+ **取舍**:这些准则偏向审慎而非速度。琐碎任务自行判断。
6
+
7
+ ## 1. Think Before Coding
8
+
9
+ **不要假设。不要藏起困惑。把取舍摆出来。**
10
+
11
+ 动手之前:
12
+ - 明确说出你的假设。不确定就问。
13
+ - 有多种解释时全部列出来——不要默默选一个。
14
+ - 有更简单的做法就说出来。该反驳时反驳。
15
+ - 有不清楚的地方就停下。指出困惑在哪。问。
16
+
17
+ ## 2. Simplicity First
18
+
19
+ **用最少的代码解决问题。不做预留。**
20
+
21
+ - 不做没被要求的功能。
22
+ - 不为一次性代码造抽象。
23
+ - 不加没被要求的「灵活性」「可配置性」。
24
+ - 不为不可能发生的场景写错误处理。
25
+ - 写了 200 行而它可以是 50 行,就重写。
26
+
27
+ 自问:「资深工程师会不会觉得这写复杂了?」会,就简化。
28
+
29
+ ## 3. Surgical Changes
30
+
31
+ **只碰必须碰的。只清理自己造成的混乱。**
32
+
33
+ 改既有代码时:
34
+ - 不「顺手改进」相邻代码、注释、格式。
35
+ - 不重构没坏的东西。
36
+ - 匹配既有风格,哪怕你会用别的写法。
37
+ - 发现无关的死代码就说出来——不要删。
38
+
39
+ 自己的改动造成孤儿时:
40
+ - 删掉**因你的改动**而不再被使用的 import / 变量 / 函数。
41
+ - 不删既有的死代码,除非被要求。
42
+
43
+ 检验标准:每一行改动都能直接追溯到用户的诉求。
44
+
45
+ ## 4. Goal-Driven Execution
46
+
47
+ **定义成功标准。循环到可验证为止。**
48
+
49
+ 把任务转成可验证的目标:
50
+ - 「加校验」→「为非法输入写测试,然后让它们通过」
51
+ - 「修 bug」→「写一个能复现它的测试,然后让它通过」
52
+ - 「重构 X」→「保证重构前后测试都过」
53
+
54
+ 多步任务先说一句计划:
55
+ ```
56
+ 1. [步骤] → 验证:[检查点]
57
+ 2. [步骤] → 验证:[检查点]
58
+ ```
59
+
60
+ ## 5. Evidence & Quotation
61
+
62
+ **凡引用必见原文。没读到的不写。**
63
+
64
+ - 引用任何文件的措辞、编号、数值、状态、命令或日期前,先亲眼读到那段原文;不凭上下文推断补写,不把「大概如此」写成事实。
65
+ - 工具回显被截断(长文件只给首尾)时,中段是**未知**:要引用就先按行范围或搜索结果回读定位,再引。
66
+ - 正式产物(CR、计划、运维手册、commit message、给用户的事实陈述)里每一处「据 X 说 Y」,X(文件与段落)与 Y(内容)都要能当场指出。
67
+ - 发现引用与原文不符:全仓搜出同一错误的所有副本一并修正,并向负责人说明,不留两处互相矛盾的版本。
68
+
69
+ ---
70
+
71
+ ## Project Conventions
72
+
73
+ 本文件适用于支持项目指令的 coding agent。开工先读本仓 README、包管理与工具链配置、相关开发计划;已有 PRODUCT.md / DESIGN.md 时一并读取。命令、端口、服务名、数据库名和 App 身份以本仓配置为准,不套用其他项目的值。
74
+
75
+ ### 本地开发
76
+
77
+ - 用本仓已有的启动、检查、测试与构建入口,遵循现有包管理器、锁文件和工具链配置;有统一启动入口时优先使用它。
78
+ - **缺服务、缺容器就停下来问,不要擅自装。** 未获授权时不下载镜像、不另起基础设施容器;先确认已有环境和依赖,再说明缺什么、请用户协助。
79
+ - 共享数据库上的测试只使用明确的测试库。会 TRUNCATE / reset 的测试先核对目标库;共享状态的用例按项目约定串行执行,不清理其他项目或用户的数据。
80
+ - `@xgent/*` 依赖从平台私有 registry 安装,配置以本仓 registry 与 CI 为准。401/404 先查凭证有效性与版本是否已发布;不通过复制源码或 file/link 依赖绕过。
81
+ - 未经用户明确要求,不升级依赖 Major。
82
+
83
+ ### Portal App 接入
84
+
85
+ 本节与下方 onebox、Portal 前端及发布约定只适用于 XGENT.ai Portal App。清单事实源是本仓的 `app.manifest.json`;`listingKey`、App 名称和 `type` 从清单读取,不在本文件维护另一份副本。
86
+
87
+ - `listingKey` 同时决定令牌 audience、安装态 appKey、服务路由和 scope 命名空间,改 key 等于换 App,不作为普通重命名处理。
88
+ - 修改清单要同步更新 `version`。安装期字段是租户快照,改清单不等于已安装租户已经更新;验证时同时检查新安装与已有安装的行为。
89
+ - 身份来自门户真实自省,解开响应信封后再读 claims;后端校验 audience、tenant、scope、角色和 ACL,自省失败必须拒绝放行。查询按 claims 的租户收口,不信前端自报的身份或租户。
90
+ - 接入、清单与 API 契约查 `portal-external-app`;SDK、iframe、导航和版头查 `portal-micro-app`;跨应用授权查 `portal-app-exchange`。这些 skill 是平台口径的事实源;缺少相关 skill 时说明缺失,不猜平台步骤或引用目标仓访问不到的门户源码路径。
91
+
92
+ ### 本地联调:一盒(onebox / one-box)
93
+
94
+ **本地起前端不等于门户联调通过。** iframe 握手、TDT、consent 和服务反代要接真实 onebox。初始化、注册、启动、体检和排错先读 `portal-dev-setup`,按该 skill 的脚本与当前配置执行,不 clone 门户、不改门户代码、不自行重建门户镜像。
95
+
96
+ - **一台机器复用一盒**:先检查已有栈,其他 App 接到同一套联调底座;已有 onebox 时不再初始化第二套。镜像仓库、凭证、端口和目录从现有配置读取,缺凭证请用户找开发团队,不猜值。
97
+ - **一盒仅供开发**:mock OAuth、开发服务账号和明文开发密钥不用于生产,不提交凭证到 git。
98
+ - **先核对镜像版本与架构**:文档和运行行为不符时先查当前镜像;门户 onebox 镜像与自己的 App 镜像可能属于不同 registry 项目,不混用。App 镜像架构与运行平台必须匹配。
99
+ - **核对 App 数据库与迁移**:onebox 不会自动创建每个出仓 App 的库。按本仓配置核对所需库;创建或迁移前确认目标。onebox 没有部署控制器,换成带新迁移的 App 镜像后,须按本仓迁移入口显式执行,健康检查绿不代表 schema 已更新。
100
+ - **注册先于反代启动**:注册后先确认演示租户市场里出现 App 卡片,再检查安装、授权、宿主入口和服务路由。404/502 先跑 onebox doctor 与 skill 排查表,核对注册、反代与后端状态。
101
+ - **dev 注册不等于已装租户同步**:导航、helpEntry 等安装期快照变更后,要通过租户管理员的市场更新入口同步,再验收宿主上的显示与行为。
102
+ - **把首次同意屏算进走查**:「授权并打开」是正常步骤。onebox 的部署任务可能停在 `deploying`,因为没有部署控制器;是否可用以实际宿主链路为准。
103
+ - 有本仓 onebox 冒烟入口时运行它,随后从宿主进入验证实际功能。
104
+
105
+ ### 前端 UI 开发与验收(有前端时)
106
+
107
+ 涉及页面、组件、布局、交互或视觉的改动,走完设计与浏览器验收两步:
108
+
109
+ - **设计阶段用 impeccable**:先读已有产品与设计上下文,覆盖视觉层级、信息架构、间距对齐、配色、动效、可访问性以及空状态和错误状态。当前环境没有该 skill 时说明缺失并提示安装,不声称已经使用。
110
+ - **验收使用当前 Agent 可用的真实浏览器通道**:Chrome extension、`kimi-webbridge` 或 Playwright 均可,按实际可用能力选择,不绑定某一种 Agent。
111
+ - **Portal App 必须从宿主进入**:从已有宿主入口打开 App,走通主路径与关键边界;首次接入时还要覆盖市场卡片、安装与授权。确认浏览器显示的是最新产物;standalone 页面或直接打开 dev server 只能作为补充。
112
+ - 检查本次改动涉及的导航、面包屑、关键操作与保存结果、空 / 错状态、权限边界;涉及响应式、主题或语言时检查相应状态。查看 console 与失败请求,保留实际步骤、结果及必要截图作为验收证据。
113
+ - **类型检查、lint、单测和 build 不能替代浏览器验收**;只看 diff 不算完成。环境跑不起来时先按现有配置排查;仍受阻则明确写「未在浏览器中验证」、说明原因与需要的协助,不声称 UI 已验收通过。
114
+
115
+ ### Portal 前端约定(micro App)
116
+
117
+ - 版头的应用图标、应用名与 tagline 归门户;App 内只显示运行期上下文,不重复绘制应用身份。脱离门户的 standalone 壳按需保留。
118
+ - 页面层级由视图驱动的 effect 调用 `sdk.setBreadcrumbs` 全量上报,首页传空数组,label 用当前语言解析。内部路由调用 `sdk.routeSync`,同时订阅 `sdk.onRoute` 处理宿主切页。
119
+ - 自己的后端通过 `sdk.callService` 调用,App key 来自清单。令牌交给 `sdk.getToken()` 管理,不自行存入 localStorage,不随意裁剪 scopes。
120
+ - `sdk.acl.can(pid)` 用于按钮显示,后端仍须校验权限;不能用管理员走查代替普通成员的权限验收。
121
+ - 跨源沙箱 iframe 不使用 `window.alert` / `confirm` / `prompt`,改用 DOM 模态框。
122
+ - 下拉框复用项目 Select 原语;使用原生 `<select>` 时关闭原生箭头(`appearance-none`)并自绘 chevron,验证文字、箭头与主题的实际显示。
123
+ - App 图标要契合用途,并确认门户注册表支持该名称;不依赖静默回退来掩盖配置错误。
124
+
125
+ ### API: HTTP status code 只反映传输/路由层,不反映业务状态
126
+
127
+ - 404 = endpoint 不存在(路由层);「数据不存在」用 200 + 业务字段(如 `data: null`)。
128
+ - 业务成功统一 200,含新建/更新/删除/覆写,不用 201/204。
129
+ - 业务失败(校验不过 / 状态非法 / 资源冲突)也走 200 + 响应体错误结构。4xx/5xx 只留给参数不正确、未登录、未授权、真传输/服务层故障。
130
+
131
+ ### 性能:热路径上不许 N+1,读多写少的事实必须缓存
132
+
133
+ 「表小 / 量不大 / 上限只有 1 000」都不是不优化的理由——tsc、lint、verify 对 N+1 全绿,只有压测和生产 p95 看得出来。请求路径与 worker 热路径一律适用,算法上能提高的就要提高,不能偷懒:
134
+
135
+ - **循环里逐条 `await` 查询 = N+1,禁止**。同一批 id 一条 SQL `inArray` 取回,再在内存里映射;Redis 同理用 `mget`。反例(已修):typed 通知入口逐个 `isActiveMember` 校验 1 000 个 userIds = 1 000 次串行往返;Router 每收件人每 push 渠道各查一次端点 = 200 人 400 条查询。
136
+ - **一批写入用多行 INSERT + `RETURNING`**,按业务键(不是数组下标)把返回行映射回输入;`onConflictDoNothing` 只返回真插入的行,冲突那部分要再查一次。超过 1 000 行分块(PG 单语句 65 535 个参数)。范本:`modules/notifications/router.ts` 的 `writeRecipientBatch`。
137
+ - **读多写少的配置/字典必须有进程内短 TTL 缓存**。管理员改完要即时生效的(事件定义、策略、模板、lane 开关、渠道连接)加显式 `invalidateXxxCache()` 在写侧调用;纯展示快照(App 名/图标/颜色)30 s TTL 就是契约,不要求写侧失效——写点散在十几处且 worker 是别的进程,失效调用本来就到不了。同一次请求 / 同一批处理里同一事实只查一次(先整批取到手再进循环)。
138
+ - **不许缓存的**:发送/扣费/授权前的「当下资格」重查(成员是否 active、App 是否仍安装、端点归属)——它们存在的意义就是新鲜;一条带索引的点查即可。
139
+ - **热路径上的聚合(`count(*)` / `min()`)不许每次现算**:`/health` 与背压这类每秒会被打的入口共用一份短 TTL 缓存(`modules/notifications/ops.ts` 的 `laneStatsCached()`)。
140
+ - **事务里不做外部调用,持连接只覆盖写入**;渲染、解密、供应商调用都在事务外。
141
+ - **改了热路径要给前后数字**:`apps/api` 有 `notification:loadtest` 这类参数化压测,改完跑一遍把 recipients/s 或 p95 写进提交说明;没有压测的路径至少 `EXPLAIN` 一次。
142
+
143
+ ### 完成标准与发布
144
+
145
+ - 执行与改动相关的本仓检查、测试和构建入口,报告实际执行结果与未验证项。
146
+ - Portal 后端改动验证无 token 的 401、缺 scope 的 403、租户隔离和经宿主服务路由访问的健康检查;权限改动覆盖普通成员,不只用管理员账号。
147
+ - 有前端改动时完成上述真实浏览器验收,报告入口、主路径、关键边界和结果;阻塞项明确列出。
148
+ - 发布时使用 `xgent-app-release`,镜像交付使用 `xgent-image-push`。发布前验证 release-cli 身份;换镜像带 `--wait`,以新版本实际运行作为成功依据。
149
+ - 发布清单不携带密钥值,镜像 tag 不可变;迁移打进镜像、持锁、失败非零退出,并兼容仍在运行的旧版本。onebox 手动迁移与生产控制器迁移分别验证。
@@ -1,9 +1,6 @@
1
- # 槽位填写指南
1
+ # 产品与设计槽位填写指南
2
2
 
3
- 三份模板在 `references/` 下:`external-app-CLAUDE.template.md` · `external-app-PRODUCT.template.md` · `external-app-DESIGN.template.md`。
4
- 它们 95% 的文字是平台口径,**逐字照抄**;只有下面列出的槽位需要你填。行号是模板当前行号,改模板后以内容定位为准。
5
-
6
- `AGENTS.md` 没有模板:它是渲染完的 `CLAUDE.md` 的镜像,只把第 1 行标题换成 `# AGENTS.md`,正文逐字相同。
3
+ AGENTS.md 使用通用模板原样创建,不填项目槽位,也不与 CLAUDE.md 镜像。以下指南用于 `external-app-PRODUCT.template.md` 和 `external-app-DESIGN.template.md`;只填产品与设计槽位,保留 Portal 规范。
7
4
 
8
5
  ## 0. 三条硬约束(改坏了 impeccable 就解析不出来)
9
6
 
@@ -11,22 +8,17 @@
11
8
  - **DESIGN.md**:YAML frontmatter 必须从**文件第 1 行**开始(前面多一个空行就整块解析不出来),正文**恰好六段**,名字与顺序照抄 —— `1. Overview` / `2. Colors` / `3. Typography` / `4. Elevation` / `5. Components` / `6. Do's and Don'ts`。不要加 Layout / Motion / Responsive 这类第七段,把内容折进六段里。
12
9
  - **平台口径的事实源是目标仓里已装的 skill**,不是这三份文件:`portal-external-app`(接入契约 · `app.manifest.json` · `/svc` 与健康检查)· `portal-micro-app`(SDK 握手 / 版头 / consent / iframe 坑)· `xgent-app-release`(发布提案 · 产物打包 · 排错)· `xgent-image-push`(镜像构建与推送)· `portal-dev-setup`(一盒本地联调)· `portal-app-exchange`(跨应用调用)。**门户仓的文档目标仓访问不到,别在生成的文件里引它的路径。**
13
10
 
14
- ## 1. 令牌替换(全文)
15
-
16
- | 令牌 | 值 | 来源 |
17
- | --- | --- | --- |
18
- | `<APP_KEY>` | listingKey,如 `omni-parser` | manifest `listingKey` → 追问。必须过 `^[a-z0-9]([a-z0-9-]*[a-z0-9])?$` |
19
- | `<APP_NAME>` | App 中文名 | manifest `name`(对象则取 `zh-CN`,字符串直接用)→ 追问 |
20
- | `<PREFIX>` | key 大写、`-` 换 `_`,如 `OMNI_PARSER` | 由 `<APP_KEY>` 派生,**不问** |
21
- | `type: [micro\|service]` | `type: micro` 或 `type: service` | manifest `type` → 追问 |
11
+ ## 1. 项目事实
22
12
 
23
- `<APP_KEY>` 在 CLAUDE 模板里出现十余处(含 `xgent-<APP_KEY>`、`<APP_KEY>_SERVER_PORT`、`/svc/<APP_KEY>`),逐个替换,别漏。
13
+ - App 中文名从 manifest `name` 读取:对象取 `zh-CN`,字符串直接使用。
14
+ - manifest `type` 决定是否新生成 DESIGN.md:micro 生成,service 不生成。
15
+ - 身份色取 manifest `color`,缺失时追问;不要使用模板占位色。
16
+ - PRODUCT / DESIGN 的其他事实从 README、路由、页面、组件与用户回答采集,记录来源。AGENTS 不再包含需要替换的 key、PREFIX 或 type 槽位。
24
17
 
25
18
  ## 2. 段落级槽位
26
19
 
27
20
  | # | 位置 | 要写什么 | 来源优先级 | 追问问法 | 约束 |
28
21
  | --- | --- | --- | --- | --- | --- |
29
- | S4 | CLAUDE `### 本地开发` | 起本仓的命令、端口、依赖的基础设施容器、测试与 verify 入口、最容易踩的启动坑 | `package.json` scripts / `compose*.y*ml` / `Dockerfile` / README → 追问 | 「一把起齐本仓的命令是什么?依赖哪些容器?测试怎么跑?」 | 写「一把起齐」的那条命令;坑要具体,不写「注意配置环境变量」 |
30
22
  | S5 | PRODUCT `## Users` 第 1 条 | 普通成员在做什么工作、一屏之内的首要任务、使用频次 | manifest `tagline` / `desc` / `navItems` + 路由/页面命名 → 追问 | 「普通成员进来主要做什么?多久来一次?」 | 一句话,具体动词;不写「提升效率」 |
31
23
  | S6 | PRODUCT `## Users` 第 2 条 | 只有租户管理员能做的结构性操作 | `aclManifest` 的 PID、admin 路由 → 追问 | 「哪些操作只有租户管理员能做?」 | 列具体动作(建/删业务对象、改租户级设置) |
32
24
  | S7 | PRODUCT `## Product Purpose` 首段 | 解决什么问题、为什么值得单独存在、什么算成功 | manifest `desc` + README → 追问 | 「这个 App 解决什么问题?什么算成功?」 | 一段话;具体名词动词,**禁用**「赋能 / 一站式 / 全流程」 |
@@ -35,7 +27,7 @@
35
27
  | S10 | PRODUCT `## Anti-references` 末段 | 具体的反面参照(某竞品、某旧版本)及**具体哪一点**不要 | 追问 | 「有没有明确不想像的产品或旧版本?」 | 用户说没有 → **整段删掉**,保留上面继承的六条 |
36
28
  | S11 | PRODUCT `## Design Principles` 第 3、4 条 | 两条领域设计原则 | 由 S5–S8 推导 | 可不问 | 是战略判断(「先给答案再给表格」),不是视觉规则(「用 8px 圆角」——那属于 DESIGN.md)。推不出就删到只剩平台那两条 |
37
29
  | S12 | PRODUCT `## Accessibility & Inclusion` 末条 | 本 App 特有的可访问性约束 | 由 UI 形态推断(长表格 / 拖拽 / 图表) | 可不问 | 无特有约束 → **删掉该行** |
38
- | S13 | DESIGN frontmatter `name` / `description`,与 `# Design System: …` 标题 | App 中文名;一句话说清这块工作区是什么、给谁用 | S2 + `tagline` / S7 | — | 三处名字一致;frontmatter 是 YAML,值里的 `"` 与 `\` 必须转义 |
30
+ | S13 | DESIGN frontmatter `name` / `description`,与 `# Design System: …` 标题 | App 中文名;一句话说清这块工作区是什么、给谁用 | manifest `name` + `tagline` / S7 | — | 三处名字一致;frontmatter 是 YAML,值里的 `"` 与 `\` 必须转义 |
39
31
  | S14 | DESIGN frontmatter `colors.app-identity` / `-hover` / `-dark` | 三个色值 | `app-identity` = manifest `color`(**硬约束**,见 §3);hover / dark 推导 | 无 manifest:「身份色是多少(#RRGGBB)?」 | 见 §3 |
40
32
  | S15 | DESIGN `## 1. Overview` 的 Creative North Star | 一句话北极星 | 由 S7 提炼 | 可不问 | 一句话,带画面感(例:「像一张随时可核对的账」) |
41
33
  | S16 | DESIGN `## 1. Overview` 第一段 | 这块工作区的性格:密集数据面还是引导式流程、用户一屏之内在找什么 | 由 S5 与 UI 形态推断 | 可不问 | 其后两段(「你画的是内容区」「主题不是你的选择」)**原样保留** |
@@ -60,19 +52,15 @@ DESIGN `## 2. Colors` 的 A / B 表格是**给用户的选择题**,不是背
60
52
 
61
53
  | 位置 | 留的条件 | 删法 |
62
54
  | --- | --- | --- |
63
- | CLAUDE `### 前端 UI 开发` 与 `### 前端:版头归门户` 及其后三节(`下拉框` / `字典表` / `App 图标`) | `type: micro` | `service` 型:五节整删。保留时去掉两个标题里的 `micro` / `service` 条件说明 |
64
- | CLAUDE `### 字典表统一带 sort + name_i18n` | 本 App 有租户级可维护的枚举 / 分类表 | 没有就整节删;保留时去掉标题里的括号条件 |
65
- | CLAUDE `## Design Context` 整节 | `type: micro` | `service` 型:删掉 DESIGN.md 那行,并把开头那句改写成不提 impeccable、不提前端 UI 的说法(例:「本仓有一份产品上下文文档:」),只留 PRODUCT.md 那行 |
66
55
  | PRODUCT `## Users` 第 4 条业务角色 | 本 App 有自己的业务角色(老师/学生、审核人/提交人…) | 有就补一条,并写明它是「门户角色 + ACL PID 的组合」还是「你自己表里的一列」——后者要说明如何与租户隔离共存 |
67
56
  | PRODUCT `## Anti-references` 末段 · `## Design Principles` 3–4 条 · `## Accessibility` 末条 · DESIGN `### [Signature Component]` | 见 §2 的 S10 / S11 / S12 / S17 | 无内容就整段删,**不要留空槽位** |
68
57
 
69
- ## 6. 六处填写指引注释与两处元注释
58
+ ## 6. 填写指引与身份色说明
70
59
 
71
- 模板里 `<!-- 填写指引:… -->` 共六处(PRODUCT 三处、DESIGN 两处、CLAUDE `## Design Context` 一处),**填完即删**。CLAUDE `## Design Context` 里那条讲链接路径的注释也删 —— 三份文件同在仓根,链接就是模板里写的样子。
60
+ PRODUCT / DESIGN 中的 `<!-- 填写指引:… -->` 注释填完即删。DESIGN 中讲模板色值是占位值的说明,改为实际身份色及其用途;主按钮 A / B 选择写清理由。AGENTS 没有填写指引,不做项目槽位替换。
72
61
 
73
62
  ## 7. 不要动的东西(防过度替换)
74
63
 
75
64
  - DESIGN `## 5. Components` 里的 `Page<T>` 是平台分页契约的类型名,不是槽位。
76
65
  - DESIGN frontmatter `components.*` 里的 `{colors.app-identity}` / `{rounded.md}` 等花括号引用是 token 引用语法,保持原样。
77
- - CLAUDE 里的 `[object Object]`(讲多语对象被拼成字面量的那处)、`[]`(`setBreadcrumbs` 首页推空数组)、`[步骤]` / `[检查点]`(Goal-Driven Execution 的示例)都是正文,不是槽位。
78
66
  - DESIGN frontmatter 的全部色值、字体、圆角、间距、组件尺寸是门户 token 的权威副本,**一个字不改也是对的**;除身份色三条外不要调。
@@ -13,7 +13,6 @@
13
13
  import { readFileSync, statSync } from "node:fs";
14
14
  import { join } from "node:path";
15
15
 
16
- const KEY_RE = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/; // 与门户逐字一致
17
16
  const CJK_RE = /[\u3000-\u303F\u4E00-\u9FFF\uFF00-\uFFEF]/; // 中日韩标点与汉字
18
17
 
19
18
  const errs = [];
@@ -46,14 +45,13 @@ const h2 = (src) =>
46
45
  .filter((l) => l.startsWith("## "))
47
46
  .map((l) => l.slice(3).trim());
48
47
 
49
- /* ── 0. 三份文件(AGENTS.md 是 CLAUDE.md 的镜像,见 §5) ──────────── */
48
+ /* ── 0. AGENTS.md / PRODUCT.md / DESIGN.md ──────────── */
50
49
 
51
- const claude = read("CLAUDE.md");
52
50
  const product = read("PRODUCT.md");
53
51
  const design = read("DESIGN.md");
54
52
  const agents = read("AGENTS.md");
55
53
 
56
- if (!claude) err("CLAUDE.md 不存在");
54
+ if (!agents) err("AGENTS.md 不存在");
57
55
  if (!product) err("PRODUCT.md 不存在");
58
56
 
59
57
  let manifest = null;
@@ -74,7 +72,7 @@ for (const p of MANIFEST_GUESSES) {
74
72
  }
75
73
  break;
76
74
  }
77
- if (!manifest) warn(`没找到 app.manifest.json(试过 ${MANIFEST_GUESSES.join(" ")})—— key / type / 身份色无法交叉核对`);
75
+ if (!manifest) warn(`没找到 app.manifest.json(试过 ${MANIFEST_GUESSES.join(" ")})—— type / 身份色无法交叉核对`);
78
76
 
79
77
  /* ── 1. 残留占位(三份文件通查) ─────────────────────────────────
80
78
  R-5:生成完就能直接用,不留任何「还要手工编辑」的痕迹。 */
@@ -91,10 +89,10 @@ const RESIDUE = [
91
89
  ["本 App 有租户级可维护的枚举/分类表时", "小节标题里的模板条件没去掉"],
92
90
  ];
93
91
 
94
- /** CLAUDE.md 正文本来就有的两个方括号(Goal-Driven Execution 的示例)。 */
92
+ /** AGENTS.md 正文本来就有的两个方括号(Goal-Driven Execution 的示例)。 */
95
93
  const BRACKET_OK = new Set(["步骤", "检查点"]);
96
94
 
97
- for (const [name, src] of [["CLAUDE.md", claude], ["PRODUCT.md", product], ["DESIGN.md", design]]) {
95
+ for (const [name, src] of [["AGENTS.md", agents], ["PRODUCT.md", product], ["DESIGN.md", design]]) {
98
96
  if (!src) continue;
99
97
  for (const [token, why] of RESIDUE) {
100
98
  if (src.includes(token)) err(`${name} 残留 ${JSON.stringify(token)}:${why}`);
@@ -105,7 +103,7 @@ for (const [name, src] of [["CLAUDE.md", claude], ["PRODUCT.md", product], ["DES
105
103
  if (next === "(" || next === "[") continue;
106
104
  const inner = m[1].trim();
107
105
  if (!CJK_RE.test(inner)) continue;
108
- if (name === "CLAUDE.md" && BRACKET_OK.has(inner)) continue;
106
+ if (name === "AGENTS.md" && BRACKET_OK.has(inner)) continue;
109
107
  err(`${name} 残留占位 ${JSON.stringify(m[0].slice(0, 40))}:方括号槽位没填`);
110
108
  }
111
109
  // C-6:门户仓的文档目标仓访问不到,别在生成的文件里引它的路径。
@@ -151,73 +149,19 @@ if (product) {
151
149
  }
152
150
  }
153
151
 
154
- /* ── 3. CLAUDE.md:key / type / PREFIX / 按形态裁剪 ─────────────── */
152
+ /* ── 3. AGENTS.md:独立通用规范,形态从 manifest 读取 ─────────── */
155
153
 
156
- const MICRO_SECTIONS = ["### 前端 UI 开发:", "### 前端:版头归门户", "### 下拉框:", "### App 图标:"];
157
- const UI_WORKFLOW_MARKERS = [
158
- "npx impeccable install",
159
- "mcp__claude-in-chrome__*",
160
- "kimi-webbridge",
161
- "playwright",
162
- "未在浏览器中验证",
163
- ];
164
- const DICT_SECTION = "### 字典表统一带"; // micro 型也可按需删,只在 service 型断言不存在
165
-
166
- let type = null;
167
- let key = null;
168
-
169
- if (claude) {
170
- const t = claude.match(/type:\s*(micro|service)\b/);
171
- if (!t) err("CLAUDE.md 找不到 `type: micro` 或 `type: service`(Project Conventions 首句里的形态声明)");
172
- else {
173
- type = t[1];
174
- ok(`CLAUDE.md type = ${type}`);
175
- }
176
-
177
- const line = claude.split("\n").find((l) => l.includes("本仓交付的是"));
178
- const k = line?.match(/`([^`]+)`/);
179
- if (!k) err("CLAUDE.md 找不到 Project Conventions 首句(`本仓交付的是 … App:\\`<key>\\`…`),无法核对 key");
180
- else if (!KEY_RE.test(k[1])) err(`CLAUDE.md 里的 key \`${k[1]}\` 不合法,必须匹配 ${KEY_RE}`);
181
- else {
182
- key = k[1];
183
- ok(`CLAUDE.md key = ${key}`);
184
- }
185
-
186
- if (key) {
187
- const expect = key.toUpperCase().replace(/-/g, "_");
188
- const sa = claude.match(/([A-Z0-9_]+)_SA_CLIENT_SECRET/);
189
- if (!sa) err("CLAUDE.md 找不到 `<PREFIX>_SA_CLIENT_SECRET`(服务账号密钥那条)");
190
- else if (sa[1] !== expect) err(`CLAUDE.md 的 ${sa[1]}_SA_CLIENT_SECRET 与 key \`${key}\` 不一致,应为 ${expect}_SA_CLIENT_SECRET(key 大写、连字符换下划线)`);
191
- else ok(`CLAUDE.md PREFIX = ${expect}`);
192
- }
193
-
194
- if (type === "service") {
195
- for (const s of [...MICRO_SECTIONS, DICT_SECTION]) {
196
- if (claude.includes(s)) err(`CLAUDE.md 是 service 型(无前端),应删掉 \`${s}…\` 这一节`);
197
- }
198
- for (const s of ["DESIGN.md", "impeccable"]) {
199
- if (claude.includes(s)) err(`CLAUDE.md 是 service 型,## Design Context 里不该再提 ${s}`);
200
- }
201
- } else if (type === "micro") {
202
- for (const s of MICRO_SECTIONS) {
203
- if (!claude.includes(s)) err(`CLAUDE.md 是 micro 型,缺 \`${s}…\` 这一节`);
204
- }
205
- for (const marker of UI_WORKFLOW_MARKERS) {
206
- if (!claude.includes(marker)) err(`CLAUDE.md 是 micro 型,前端 UI 两步法缺少 \`${marker}\``);
207
- }
208
- }
209
-
210
- if (key && manifest?.listingKey && manifest.listingKey !== key) {
211
- err(`CLAUDE.md 的 key \`${key}\` 与 manifest.listingKey \`${manifest.listingKey}\` 不一致`);
212
- }
213
- if (type && manifest?.type && manifest.type !== type) {
214
- err(`CLAUDE.md 的 type \`${type}\` 与 manifest.type \`${manifest.type}\` 不一致`);
215
- }
154
+ if (agents) {
155
+ const head = agents.split("\n")[0];
156
+ if (head !== "# AGENTS.md") err(`AGENTS.md 第 1 行应是 \`# AGENTS.md\`,实际:${JSON.stringify(head.slice(0, 40))}`);
157
+ else ok("AGENTS.md 标题正确");
216
158
  }
217
159
 
160
+ const type = manifest?.type;
161
+
218
162
  /* ── 4. DESIGN.md:存在性随形态;frontmatter + 六段 ─────────────── */
219
163
 
220
- if (type === "service" && design) err("service 型(无前端)不需要 DESIGN.md,请删掉");
164
+ if (type === "service" && design) warn("service 型(无前端)不新生成 DESIGN.md;已有文档保留");
221
165
  if (type === "micro" && !design) err("micro 型缺 DESIGN.md");
222
166
 
223
167
  const DESIGN_H2 = ["1. Overview", "2. Colors", "3. Typography", "4. Elevation", "5. Components", "6. Do's and Don'ts"];
@@ -279,22 +223,6 @@ if (design) {
279
223
  }
280
224
  }
281
225
 
282
- /* ── 5. AGENTS.md:CLAUDE.md 的镜像 ───────────────────────────────
283
- 读 AGENTS.md 的工具(Codex / Cursor / pi)也要看到同一套约定;两份不同步
284
- 就是同一个仓里摆着两处互相矛盾的规范。 */
285
-
286
- if (!agents) {
287
- err("AGENTS.md 不存在 —— 它必须是 CLAUDE.md 的镜像(除第 1 行标题外逐字相同)");
288
- } else if (claude) {
289
- const head = agents.split("\n")[0];
290
- if (head !== "# AGENTS.md") {
291
- err(`AGENTS.md 第 1 行应是 \`# AGENTS.md\`,实际:${JSON.stringify(head.slice(0, 40))}`);
292
- }
293
- const body = (src) => src.split("\n").slice(1).join("\n");
294
- if (body(agents) === body(claude)) ok("AGENTS.md 与 CLAUDE.md 除首行外逐字一致");
295
- else err("AGENTS.md 与 CLAUDE.md 正文不一致 —— 两份是同一套约定的镜像,只有第 1 行标题该不同;改一份就同步另一份");
296
- }
297
-
298
226
  /* ── 输出 ───────────────────────────────────────────────────────── */
299
227
 
300
228
  for (const m of oks) console.log(` ✓ ${m}`);
@@ -1,28 +1,22 @@
1
1
  {
2
2
  "source": "https://github.com/pbakaus/impeccable",
3
3
  "license": "Apache-2.0",
4
- "skillVersion": "4.3.1",
5
- "engineVersion": "0.1.5",
4
+ "skillVersion": "4.5.0",
5
+ "engineVersion": "0.1.11",
6
6
  "bundle": {
7
- "url": "https://github.com/pbakaus/impeccable/releases/download/skill-v4.3.1/universal.zip",
7
+ "url": "https://github.com/pbakaus/impeccable/releases/download/skill-v4.5.0/universal.zip",
8
8
  "keyId": "release-2026-09",
9
- "sha256": "1deea4cdfb1608df6d9e08ef359629e7cc866a22ab7c2195a835627b887f190b",
10
- "size": 15625571
9
+ "sha256": "a6877c158ec90c63560728553d2e737081afa8a79b86c507fa8d15a81fffd475",
10
+ "size": 16157124
11
11
  },
12
12
  "engines": {
13
13
  "darwin-arm64": {
14
14
  "asset": "impeccable-darwin-arm64",
15
- "sha256": "0d48b6e16aa97664fdbe607d5da9ae320e389a1843e0ff1328f8c2530530320d",
16
- "size": 12762240,
17
- "url": "https://download.xgent.ai/vendor/impeccable/engine/v0.1.5/darwin-arm64/impeccable"
18
- },
19
- "darwin-x64": {
20
- "asset": "impeccable-darwin-x64",
21
- "sha256": "153971b0c00719dff9ebac13370cb7dbbbe12838b696fbaf3f7ab0b1b3726b52",
22
- "size": 14400568,
23
- "url": "https://download.xgent.ai/vendor/impeccable/engine/v0.1.5/darwin-x64/impeccable"
15
+ "sha256": "7427918d6e75507401a1b7b691eefe58a7c01a2fc63b712016ffc5a0ac1c05e6",
16
+ "size": 14845040,
17
+ "url": "https://download.xgent.ai/vendor/impeccable/engine/v0.1.11/darwin-arm64/impeccable"
24
18
  }
25
19
  },
26
- "fetchedAt": "2026-09-22T15:38:00.906Z",
27
- "publishedAt": "2026-09-22T15:40:54.468Z"
20
+ "fetchedAt": "2026-10-02T09:20:08.048Z",
21
+ "publishedAt": "2026-10-02T09:23:34.098Z"
28
22
  }