plcode-darwin-x64 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (778) hide show
  1. package/.plcode/AGENTS.md +160 -0
  2. package/.plcode/agent/backend-architect.md +40 -0
  3. package/.plcode/agent/backend-security-coder.md +11 -0
  4. package/.plcode/agent/backend-specialist.md +117 -0
  5. package/.plcode/agent/backend-typescript-architect.md +18 -0
  6. package/.plcode/agent/code-reviewer.md +48 -0
  7. package/.plcode/agent/content/0-category.json +19 -0
  8. package/.plcode/agent/content/copywriter.md +68 -0
  9. package/.plcode/agent/content/technical-writer.md +68 -0
  10. package/.plcode/agent/core/0-category.json +50 -0
  11. package/.plcode/agent/core/health-monitor.md +187 -0
  12. package/.plcode/agent/core/memory-manager.md +168 -0
  13. package/.plcode/agent/core/openagent.md +430 -0
  14. package/.plcode/agent/core/opencoder.md +282 -0
  15. package/.plcode/agent/core/pool.md +383 -0
  16. package/.plcode/agent/data/0-category.json +13 -0
  17. package/.plcode/agent/data/data-analyst.md +69 -0
  18. package/.plcode/agent/database-architect.md +262 -0
  19. package/.plcode/agent/database-optimizer.md +161 -0
  20. package/.plcode/agent/database-specialist.md +101 -0
  21. package/.plcode/agent/development/0-category.json +36 -0
  22. package/.plcode/agent/development/backend-specialist.md +68 -0
  23. package/.plcode/agent/development/codebase-agent.md +137 -0
  24. package/.plcode/agent/development/devops-specialist.md +70 -0
  25. package/.plcode/agent/development/frontend-specialist.md +214 -0
  26. package/.plcode/agent/docs.md +33 -0
  27. package/.plcode/agent/eval-runner.md +34 -0
  28. package/.plcode/agent/frontend-developer.md +188 -0
  29. package/.plcode/agent/frontend-security-coder.md +11 -0
  30. package/.plcode/agent/git-committer.md +12 -0
  31. package/.plcode/agent/meta/0-category.json +19 -0
  32. package/.plcode/agent/meta/repo-manager.md +1078 -0
  33. package/.plcode/agent/meta/system-builder.md +724 -0
  34. package/.plcode/agent/orchestration/0-category.json +40 -0
  35. package/.plcode/agent/orchestration/adversarial-agent.md +115 -0
  36. package/.plcode/agent/orchestration/background-agent.md +121 -0
  37. package/.plcode/agent/orchestration/chat-agent.md +108 -0
  38. package/.plcode/agent/orchestration/code-agent.md +91 -0
  39. package/.plcode/agent/orchestration/critic-agent.md +103 -0
  40. package/.plcode/agent/orchestration/executor-agent.md +107 -0
  41. package/.plcode/agent/orchestration/media-agent.md +99 -0
  42. package/.plcode/agent/orchestration/planner-agent.md +105 -0
  43. package/.plcode/agent/orchestration/review-agent.md +105 -0
  44. package/.plcode/agent/orchestration/support-agent.md +117 -0
  45. package/.plcode/agent/orchestration/test-agent.md +104 -0
  46. package/.plcode/agent/subagents/code/build-agent.md +75 -0
  47. package/.plcode/agent/subagents/code/codebase-pattern-analyst.md +459 -0
  48. package/.plcode/agent/subagents/code/coder-agent.md +71 -0
  49. package/.plcode/agent/subagents/code/reviewer.md +58 -0
  50. package/.plcode/agent/subagents/code/tester.md +59 -0
  51. package/.plcode/agent/subagents/core/context-retriever.md +904 -0
  52. package/.plcode/agent/subagents/core/contextscout.md +149 -0
  53. package/.plcode/agent/subagents/core/documentation.md +49 -0
  54. package/.plcode/agent/subagents/core/task-manager.md +345 -0
  55. package/.plcode/agent/subagents/superpowers/code-reviewer.md +113 -0
  56. package/.plcode/agent/subagents/system-builder/agent-generator.md +452 -0
  57. package/.plcode/agent/subagents/system-builder/command-creator.md +226 -0
  58. package/.plcode/agent/subagents/system-builder/context-organizer.md +455 -0
  59. package/.plcode/agent/subagents/system-builder/domain-analyzer.md +459 -0
  60. package/.plcode/agent/subagents/system-builder/workflow-designer.md +240 -0
  61. package/.plcode/agent/subagents/test/simple-responder.md +44 -0
  62. package/.plcode/agent/subagents/utils/image-specialist.md +67 -0
  63. package/.plcode/agent/triage.md +86 -0
  64. package/.plcode/agent/typescript-pro.md +11 -0
  65. package/.plcode/context/content/README.md +39 -0
  66. package/.plcode/context/content/copywriting-frameworks.md +317 -0
  67. package/.plcode/context/content/tone-voice.md +391 -0
  68. package/.plcode/context/content-creation/examples/navigation.md +37 -0
  69. package/.plcode/context/content-creation/formats/audio-content.md +493 -0
  70. package/.plcode/context/content-creation/formats/image-content.md +387 -0
  71. package/.plcode/context/content-creation/formats/navigation.md +79 -0
  72. package/.plcode/context/content-creation/formats/video-content.md +533 -0
  73. package/.plcode/context/content-creation/formats/written-content.md +459 -0
  74. package/.plcode/context/content-creation/navigation.md +55 -0
  75. package/.plcode/context/content-creation/principles/audience-targeting.md +417 -0
  76. package/.plcode/context/content-creation/principles/copywriting-frameworks.md +317 -0
  77. package/.plcode/context/content-creation/principles/hooks.md +279 -0
  78. package/.plcode/context/content-creation/principles/navigation.md +79 -0
  79. package/.plcode/context/content-creation/principles/tone-voice.md +391 -0
  80. package/.plcode/context/content-creation/workflows/audience-review.md +474 -0
  81. package/.plcode/context/content-creation/workflows/content-ideas.md +504 -0
  82. package/.plcode/context/content-creation/workflows/content-matrix.md +397 -0
  83. package/.plcode/context/content-creation/workflows/navigation.md +85 -0
  84. package/.plcode/context/content-creation/workflows/remix-repurpose.md +577 -0
  85. package/.plcode/context/core/context-system/CHANGELOG.md +87 -0
  86. package/.plcode/context/core/context-system/examples/navigation-examples.md +510 -0
  87. package/.plcode/context/core/context-system/guides/compact.md +351 -0
  88. package/.plcode/context/core/context-system/guides/creation.md +363 -0
  89. package/.plcode/context/core/context-system/guides/navigation-design.md +458 -0
  90. package/.plcode/context/core/context-system/guides/organizing-context.md +549 -0
  91. package/.plcode/context/core/context-system/guides/workflows.md +598 -0
  92. package/.plcode/context/core/context-system/operations/error.md +299 -0
  93. package/.plcode/context/core/context-system/operations/extract.md +190 -0
  94. package/.plcode/context/core/context-system/operations/harvest.md +310 -0
  95. package/.plcode/context/core/context-system/operations/organize.md +245 -0
  96. package/.plcode/context/core/context-system/operations/update.md +260 -0
  97. package/.plcode/context/core/context-system/standards/mvi.md +154 -0
  98. package/.plcode/context/core/context-system/standards/structure.md +262 -0
  99. package/.plcode/context/core/context-system/standards/templates.md +350 -0
  100. package/.plcode/context/core/context-system.md +453 -0
  101. package/.plcode/context/core/essential-patterns.md +225 -0
  102. package/.plcode/context/core/navigation.md +69 -0
  103. package/.plcode/context/core/standards/code-analysis.md +172 -0
  104. package/.plcode/context/core/standards/code-quality.md +182 -0
  105. package/.plcode/context/core/standards/code.md +1 -0
  106. package/.plcode/context/core/standards/docs.md +1 -0
  107. package/.plcode/context/core/standards/documentation.md +173 -0
  108. package/.plcode/context/core/standards/navigation.md +46 -0
  109. package/.plcode/context/core/standards/security-patterns.md +149 -0
  110. package/.plcode/context/core/standards/test-coverage.md +133 -0
  111. package/.plcode/context/core/standards/tests.md +1 -0
  112. package/.plcode/context/core/system/context-guide.md +218 -0
  113. package/.plcode/context/core/workflows/code-review.md +150 -0
  114. package/.plcode/context/core/workflows/delegation.md +1 -0
  115. package/.plcode/context/core/workflows/design-iteration.md +595 -0
  116. package/.plcode/context/core/workflows/feature-breakdown.md +303 -0
  117. package/.plcode/context/core/workflows/navigation.md +44 -0
  118. package/.plcode/context/core/workflows/review.md +1 -0
  119. package/.plcode/context/core/workflows/session-management.md +162 -0
  120. package/.plcode/context/core/workflows/task-delegation.md +95 -0
  121. package/.plcode/context/data/README.md +18 -0
  122. package/.plcode/context/data/navigation.md +18 -0
  123. package/.plcode/context/development/README.md +52 -0
  124. package/.plcode/context/development/animation-patterns.md +831 -0
  125. package/.plcode/context/development/api-design.md +394 -0
  126. package/.plcode/context/development/backend/navigation.md +55 -0
  127. package/.plcode/context/development/backend-navigation.md +77 -0
  128. package/.plcode/context/development/clean-code.md +189 -0
  129. package/.plcode/context/development/data/navigation.md +36 -0
  130. package/.plcode/context/development/design-assets.md +604 -0
  131. package/.plcode/context/development/design-systems.md +395 -0
  132. package/.plcode/context/development/frontend/navigation.md +47 -0
  133. package/.plcode/context/development/fullstack-navigation.md +80 -0
  134. package/.plcode/context/development/infrastructure/navigation.md +31 -0
  135. package/.plcode/context/development/integration/navigation.md +36 -0
  136. package/.plcode/context/development/navigation.md +80 -0
  137. package/.plcode/context/development/principles/api-design.md +427 -0
  138. package/.plcode/context/development/principles/clean-code.md +189 -0
  139. package/.plcode/context/development/principles/navigation.md +46 -0
  140. package/.plcode/context/development/react-patterns.md +323 -0
  141. package/.plcode/context/development/ui-navigation.md +58 -0
  142. package/.plcode/context/development/ui-styling-standards.md +566 -0
  143. package/.plcode/context/learning/README.md +18 -0
  144. package/.plcode/context/learning/navigation.md +18 -0
  145. package/.plcode/context/navigation.md +47 -0
  146. package/.plcode/context/openagents-repo/blueprints/context-bundle-template.md +279 -0
  147. package/.plcode/context/openagents-repo/concepts/subagent-testing-modes.md +142 -0
  148. package/.plcode/context/openagents-repo/core-concepts/agents.md +368 -0
  149. package/.plcode/context/openagents-repo/core-concepts/categories.md +467 -0
  150. package/.plcode/context/openagents-repo/core-concepts/evals.md +515 -0
  151. package/.plcode/context/openagents-repo/core-concepts/registry.md +473 -0
  152. package/.plcode/context/openagents-repo/errors/tool-permission-errors.md +227 -0
  153. package/.plcode/context/openagents-repo/examples/context-bundle-example.md +234 -0
  154. package/.plcode/context/openagents-repo/examples/subagent-prompt-structure.md +291 -0
  155. package/.plcode/context/openagents-repo/guides/adding-agent.md +326 -0
  156. package/.plcode/context/openagents-repo/guides/creating-release.md +296 -0
  157. package/.plcode/context/openagents-repo/guides/debugging.md +438 -0
  158. package/.plcode/context/openagents-repo/guides/profile-validation.md +367 -0
  159. package/.plcode/context/openagents-repo/guides/subagent-invocation.md +386 -0
  160. package/.plcode/context/openagents-repo/guides/testing-agent.md +310 -0
  161. package/.plcode/context/openagents-repo/guides/testing-subagents-approval.md +140 -0
  162. package/.plcode/context/openagents-repo/guides/testing-subagents.md +301 -0
  163. package/.plcode/context/openagents-repo/guides/updating-registry.md +453 -0
  164. package/.plcode/context/openagents-repo/lookup/commands.md +400 -0
  165. package/.plcode/context/openagents-repo/lookup/file-locations.md +322 -0
  166. package/.plcode/context/openagents-repo/lookup/subagent-framework-maps.md +79 -0
  167. package/.plcode/context/openagents-repo/lookup/subagent-test-commands.md +213 -0
  168. package/.plcode/context/openagents-repo/navigation.md +143 -0
  169. package/.plcode/context/openagents-repo/plugins/context/architecture/lifecycle.md +39 -0
  170. package/.plcode/context/openagents-repo/plugins/context/architecture/overview.md +61 -0
  171. package/.plcode/context/openagents-repo/plugins/context/capabilities/agents.md +45 -0
  172. package/.plcode/context/openagents-repo/plugins/context/capabilities/events.md +48 -0
  173. package/.plcode/context/openagents-repo/plugins/context/capabilities/events_skills.md +608 -0
  174. package/.plcode/context/openagents-repo/plugins/context/capabilities/tools.md +48 -0
  175. package/.plcode/context/openagents-repo/plugins/context/context-overview.md +35 -0
  176. package/.plcode/context/openagents-repo/plugins/context/reference/best-practices.md +28 -0
  177. package/.plcode/context/openagents-repo/quality/registry-dependencies.md +642 -0
  178. package/.plcode/context/openagents-repo/quick-start.md +168 -0
  179. package/.plcode/context/openagents-repo/templates/context-bundle-template.md +272 -0
  180. package/.plcode/context/product/README.md +18 -0
  181. package/.plcode/context/product/navigation.md +18 -0
  182. package/.plcode/context/project/navigation.md +31 -0
  183. package/.plcode/context/project/project-context.md +102 -0
  184. package/.plcode/context/system-builder-templates/SYSTEM-BUILDER-GUIDE.md +495 -0
  185. package/.plcode/context/system-builder-templates/navigation.md +72 -0
  186. package/.plcode/context/system-builder-templates/orchestrator-template.md +261 -0
  187. package/.plcode/context/system-builder-templates/subagent-template.md +213 -0
  188. package/.plcode/context/ui/navigation.md +83 -0
  189. package/.plcode/context/ui/terminal/navigation.md +99 -0
  190. package/.plcode/context/ui/web/animation-patterns.md +831 -0
  191. package/.plcode/context/ui/web/design/concepts/scroll-linked-animations.md +52 -0
  192. package/.plcode/context/ui/web/design/examples/scrollytelling-headphone.md +242 -0
  193. package/.plcode/context/ui/web/design/guides/building-scrollytelling-pages.md +274 -0
  194. package/.plcode/context/ui/web/design/lookup/scroll-animation-prompts.md +211 -0
  195. package/.plcode/context/ui/web/design/navigation.md +87 -0
  196. package/.plcode/context/ui/web/design-assets.md +604 -0
  197. package/.plcode/context/ui/web/design-systems.md +395 -0
  198. package/.plcode/context/ui/web/navigation.md +116 -0
  199. package/.plcode/context/ui/web/react-patterns.md +323 -0
  200. package/.plcode/context/ui/web/ui-styling-standards.md +566 -0
  201. package/.plcode/instructions/agent-rules.md +21 -0
  202. package/.plcode/instructions/coding-preferences-general.md +26 -0
  203. package/.plcode/instructions/coding-preferences-typescript.md +7 -0
  204. package/.plcode/instructions/commits.md +10 -0
  205. package/.plcode/instructions/responses.md +7 -0
  206. package/.plcode/instructions/testing.md +6 -0
  207. package/.plcode/instructions/tooling-preferences.md +20 -0
  208. package/.plcode/plcode.jsonc +393 -0
  209. package/.plcode/skill/core/agents-md-generator/SKILL.md +220 -0
  210. package/.plcode/skill/core/api-design-principles/SKILL.md +41 -0
  211. package/.plcode/skill/core/api-design-principles/assets/api-design-checklist.md +155 -0
  212. package/.plcode/skill/core/api-design-principles/assets/rest-api-template.py +182 -0
  213. package/.plcode/skill/core/api-design-principles/references/graphql-schema-design.md +583 -0
  214. package/.plcode/skill/core/api-design-principles/references/rest-best-practices.md +408 -0
  215. package/.plcode/skill/core/api-design-principles/resources/implementation-playbook.md +513 -0
  216. package/.plcode/skill/core/api-documentation/SKILL.md +185 -0
  217. package/.plcode/skill/core/api-security-best-practices/SKILL.md +927 -0
  218. package/.plcode/skill/core/api-testing-observability-api-mock/SKILL.md +50 -0
  219. package/.plcode/skill/core/api-testing-observability-api-mock/resources/implementation-playbook.md +1327 -0
  220. package/.plcode/skill/core/audit/SKILL.md +141 -0
  221. package/.plcode/skill/core/backend-dev/README.md +333 -0
  222. package/.plcode/skill/core/backend-dev/SKILL.md +437 -0
  223. package/.plcode/skill/core/backend-dev/examples.md +622 -0
  224. package/.plcode/skill/core/backend-dev-guidelines/SKILL.md +344 -0
  225. package/.plcode/skill/core/backend-dev-guidelines/resources/architecture-overview.md +479 -0
  226. package/.plcode/skill/core/backend-dev-guidelines/resources/async-and-errors.md +305 -0
  227. package/.plcode/skill/core/backend-dev-guidelines/resources/complete-examples.md +607 -0
  228. package/.plcode/skill/core/backend-dev-guidelines/resources/configuration.md +285 -0
  229. package/.plcode/skill/core/backend-dev-guidelines/resources/database-patterns.md +227 -0
  230. package/.plcode/skill/core/backend-dev-guidelines/resources/middleware-guide.md +205 -0
  231. package/.plcode/skill/core/backend-dev-guidelines/resources/routing-and-controllers.md +704 -0
  232. package/.plcode/skill/core/backend-dev-guidelines/resources/sentry-and-monitoring.md +338 -0
  233. package/.plcode/skill/core/backend-dev-guidelines/resources/services-and-repositories.md +814 -0
  234. package/.plcode/skill/core/backend-dev-guidelines/resources/testing-guide.md +230 -0
  235. package/.plcode/skill/core/backend-dev-guidelines/resources/validation-patterns.md +750 -0
  236. package/.plcode/skill/core/browser/SKILL.md +67 -0
  237. package/.plcode/skill/core/browser/eval.js +38 -0
  238. package/.plcode/skill/core/browser/nav.js +37 -0
  239. package/.plcode/skill/core/browser/package-lock.json +928 -0
  240. package/.plcode/skill/core/browser/package.json +12 -0
  241. package/.plcode/skill/core/browser/pick.js +106 -0
  242. package/.plcode/skill/core/browser/screenshot.js +31 -0
  243. package/.plcode/skill/core/browser/start.js +71 -0
  244. package/.plcode/skill/core/changelog-generator/SKILL.md +105 -0
  245. package/.plcode/skill/core/clarify/SKILL.md +199 -0
  246. package/.plcode/skill/core/code-refactoring/SKILL.md +232 -0
  247. package/.plcode/skill/core/code-review/SKILL.md +60 -0
  248. package/.plcode/skill/core/critique/SKILL.md +137 -0
  249. package/.plcode/skill/core/database-design/SKILL.md +186 -0
  250. package/.plcode/skill/core/dispatching-parallel-agents/SKILL.md +192 -0
  251. package/.plcode/skill/core/error-handling-patterns/SKILL.md +39 -0
  252. package/.plcode/skill/core/error-handling-patterns/resources/implementation-playbook.md +634 -0
  253. package/.plcode/skill/core/executing-plans/SKILL.md +97 -0
  254. package/.plcode/skill/core/finishing-a-development-branch/SKILL.md +214 -0
  255. package/.plcode/skill/core/frontend-design/LICENSE.txt +177 -0
  256. package/.plcode/skill/core/frontend-design/SKILL.md +516 -0
  257. package/.plcode/skill/core/javascript-typescript/SKILL.md +147 -0
  258. package/.plcode/skill/core/python-development/SKILL.md +142 -0
  259. package/.plcode/skill/core/receiving-code-review/SKILL.md +227 -0
  260. package/.plcode/skill/core/requesting-code-review/SKILL.md +116 -0
  261. package/.plcode/skill/core/requesting-code-review/code-reviewer.md +160 -0
  262. package/.plcode/skill/core/skill-creator/LICENSE.txt +202 -0
  263. package/.plcode/skill/core/skill-creator/SKILL.md +357 -0
  264. package/.plcode/skill/core/skill-creator/references/output-patterns.md +92 -0
  265. package/.plcode/skill/core/skill-creator/references/workflows.md +28 -0
  266. package/.plcode/skill/core/skill-creator/scripts/__pycache__/quick_validate.cpython-313.pyc +0 -0
  267. package/.plcode/skill/core/skill-creator/scripts/init_skill.py +303 -0
  268. package/.plcode/skill/core/skill-creator/scripts/package_skill.py +110 -0
  269. package/.plcode/skill/core/skill-creator/scripts/quick_validate.py +103 -0
  270. package/.plcode/skill/core/subagent-driven-development/SKILL.md +256 -0
  271. package/.plcode/skill/core/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
  272. package/.plcode/skill/core/subagent-driven-development/implementer-prompt.md +78 -0
  273. package/.plcode/skill/core/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  274. package/.plcode/skill/core/systematic-debugging/CREATION-LOG.md +133 -0
  275. package/.plcode/skill/core/systematic-debugging/SKILL.md +309 -0
  276. package/.plcode/skill/core/systematic-debugging/condition-based-waiting-example.ts +158 -0
  277. package/.plcode/skill/core/systematic-debugging/condition-based-waiting.md +120 -0
  278. package/.plcode/skill/core/systematic-debugging/defense-in-depth.md +128 -0
  279. package/.plcode/skill/core/systematic-debugging/find-polluter.sh +63 -0
  280. package/.plcode/skill/core/systematic-debugging/root-cause-tracing.md +183 -0
  281. package/.plcode/skill/core/systematic-debugging/test-academic.md +14 -0
  282. package/.plcode/skill/core/systematic-debugging/test-pressure-1.md +65 -0
  283. package/.plcode/skill/core/systematic-debugging/test-pressure-2.md +75 -0
  284. package/.plcode/skill/core/systematic-debugging/test-pressure-3.md +75 -0
  285. package/.plcode/skill/core/task-generator/SKILL.md +72 -0
  286. package/.plcode/skill/core/test-driven-development/SKILL.md +393 -0
  287. package/.plcode/skill/core/test-driven-development/testing-anti-patterns.md +317 -0
  288. package/.plcode/skill/core/using-git-worktrees/SKILL.md +224 -0
  289. package/.plcode/skill/core/using-superpowers/SKILL.md +96 -0
  290. package/.plcode/skill/core/verification-before-completion/SKILL.md +148 -0
  291. package/.plcode/skill/core/writing-plans/SKILL.md +122 -0
  292. package/.plcode/skill/core/writing-skills/SKILL.md +717 -0
  293. package/.plcode/skill/core/writing-skills/anthropic-best-practices.md +1176 -0
  294. package/.plcode/skill/core/writing-skills/examples/CLAUDE_MD_TESTING.md +200 -0
  295. package/.plcode/skill/core/writing-skills/graphviz-conventions.dot +172 -0
  296. package/.plcode/skill/core/writing-skills/persuasion-principles.md +220 -0
  297. package/.plcode/skill/core/writing-skills/render-graphs.js +171 -0
  298. package/.plcode/skill/core/writing-skills/testing-skills-with-subagents.md +404 -0
  299. package/.plcode/skill/experimental/accessibility-compliance-accessibility-audit/SKILL.md +46 -0
  300. package/.plcode/skill/experimental/accessibility-compliance-accessibility-audit/resources/implementation-playbook.md +489 -0
  301. package/.plcode/skill/experimental/adapt/SKILL.md +214 -0
  302. package/.plcode/skill/experimental/agnos/ROUTING.md +128 -0
  303. package/.plcode/skill/experimental/agnos/SKILL.md +142 -0
  304. package/.plcode/skill/experimental/algorithmic-art/LICENSE.txt +202 -0
  305. package/.plcode/skill/experimental/algorithmic-art/SKILL.md +444 -0
  306. package/.plcode/skill/experimental/algorithmic-art/templates/generator_template.js +223 -0
  307. package/.plcode/skill/experimental/algorithmic-art/templates/viewer.html +634 -0
  308. package/.plcode/skill/experimental/animate/SKILL.md +204 -0
  309. package/.plcode/skill/experimental/application-performance-performance-optimization/SKILL.md +158 -0
  310. package/.plcode/skill/experimental/architecture-diagram/SKILL.md +378 -0
  311. package/.plcode/skill/experimental/artifacts-builder/LICENSE.txt +202 -0
  312. package/.plcode/skill/experimental/artifacts-builder/SKILL.md +80 -0
  313. package/.plcode/skill/experimental/artifacts-builder/scripts/bundle-artifact.sh +54 -0
  314. package/.plcode/skill/experimental/artifacts-builder/scripts/init-artifact.sh +322 -0
  315. package/.plcode/skill/experimental/automem-memory-management/SKILL.md +401 -0
  316. package/.plcode/skill/experimental/backend-architect/SKILL.md +331 -0
  317. package/.plcode/skill/experimental/backend-security-coder/SKILL.md +172 -0
  318. package/.plcode/skill/experimental/bolder/SKILL.md +140 -0
  319. package/.plcode/skill/experimental/brainstorming/SKILL.md +102 -0
  320. package/.plcode/skill/experimental/canvas-design/LICENSE.txt +202 -0
  321. package/.plcode/skill/experimental/canvas-design/SKILL.md +138 -0
  322. package/.plcode/skill/experimental/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  323. package/.plcode/skill/experimental/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  324. package/.plcode/skill/experimental/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  325. package/.plcode/skill/experimental/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  326. package/.plcode/skill/experimental/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  327. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  328. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  329. package/.plcode/skill/experimental/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  330. package/.plcode/skill/experimental/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  331. package/.plcode/skill/experimental/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  332. package/.plcode/skill/experimental/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  333. package/.plcode/skill/experimental/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  334. package/.plcode/skill/experimental/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  335. package/.plcode/skill/experimental/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  336. package/.plcode/skill/experimental/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  337. package/.plcode/skill/experimental/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  338. package/.plcode/skill/experimental/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  339. package/.plcode/skill/experimental/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  340. package/.plcode/skill/experimental/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  341. package/.plcode/skill/experimental/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  342. package/.plcode/skill/experimental/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  343. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  344. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  345. package/.plcode/skill/experimental/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  346. package/.plcode/skill/experimental/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  347. package/.plcode/skill/experimental/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  348. package/.plcode/skill/experimental/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  349. package/.plcode/skill/experimental/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  350. package/.plcode/skill/experimental/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  351. package/.plcode/skill/experimental/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  352. package/.plcode/skill/experimental/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  353. package/.plcode/skill/experimental/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  354. package/.plcode/skill/experimental/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  355. package/.plcode/skill/experimental/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  356. package/.plcode/skill/experimental/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  357. package/.plcode/skill/experimental/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  358. package/.plcode/skill/experimental/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  359. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  360. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  361. package/.plcode/skill/experimental/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  362. package/.plcode/skill/experimental/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  363. package/.plcode/skill/experimental/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  364. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  365. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  366. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  367. package/.plcode/skill/experimental/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  368. package/.plcode/skill/experimental/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  369. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  370. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  371. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  372. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  373. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  374. package/.plcode/skill/experimental/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  375. package/.plcode/skill/experimental/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  376. package/.plcode/skill/experimental/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  377. package/.plcode/skill/experimental/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  378. package/.plcode/skill/experimental/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  379. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  380. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  381. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  382. package/.plcode/skill/experimental/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  383. package/.plcode/skill/experimental/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  384. package/.plcode/skill/experimental/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  385. package/.plcode/skill/experimental/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  386. package/.plcode/skill/experimental/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  387. package/.plcode/skill/experimental/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  388. package/.plcode/skill/experimental/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  389. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  390. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  391. package/.plcode/skill/experimental/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  392. package/.plcode/skill/experimental/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  393. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  394. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  395. package/.plcode/skill/experimental/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  396. package/.plcode/skill/experimental/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  397. package/.plcode/skill/experimental/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  398. package/.plcode/skill/experimental/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  399. package/.plcode/skill/experimental/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  400. package/.plcode/skill/experimental/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  401. package/.plcode/skill/experimental/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  402. package/.plcode/skill/experimental/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  403. package/.plcode/skill/experimental/colorize/SKILL.md +170 -0
  404. package/.plcode/skill/experimental/content-research-writer/SKILL.md +596 -0
  405. package/.plcode/skill/experimental/delight/SKILL.md +350 -0
  406. package/.plcode/skill/experimental/design-tokens/SKILL.md +456 -0
  407. package/.plcode/skill/experimental/distill/SKILL.md +146 -0
  408. package/.plcode/skill/experimental/doc-coauthoring/SKILL.md +395 -0
  409. package/.plcode/skill/experimental/document-docx/LICENSE.txt +30 -0
  410. package/.plcode/skill/experimental/document-docx/SKILL.md +581 -0
  411. package/.plcode/skill/experimental/document-docx/docx-js.md +488 -0
  412. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  413. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  414. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  415. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  416. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  417. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  418. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  419. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  420. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  421. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  422. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  423. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  424. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  425. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  426. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  427. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  428. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  429. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  430. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  431. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  432. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  433. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  434. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  435. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  436. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  437. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  438. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  439. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  440. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  441. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  442. package/.plcode/skill/experimental/document-docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  443. package/.plcode/skill/experimental/document-docx/ooxml/schemas/mce/mc.xsd +75 -0
  444. package/.plcode/skill/experimental/document-docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  445. package/.plcode/skill/experimental/document-docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  446. package/.plcode/skill/experimental/document-docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  447. package/.plcode/skill/experimental/document-docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  448. package/.plcode/skill/experimental/document-docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  449. package/.plcode/skill/experimental/document-docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  450. package/.plcode/skill/experimental/document-docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  451. package/.plcode/skill/experimental/document-docx/ooxml/scripts/pack.py +159 -0
  452. package/.plcode/skill/experimental/document-docx/ooxml/scripts/unpack.py +29 -0
  453. package/.plcode/skill/experimental/document-docx/ooxml/scripts/validate.py +69 -0
  454. package/.plcode/skill/experimental/document-docx/ooxml/scripts/validation/__init__.py +15 -0
  455. package/.plcode/skill/experimental/document-docx/ooxml/scripts/validation/base.py +951 -0
  456. package/.plcode/skill/experimental/document-docx/ooxml/scripts/validation/docx.py +274 -0
  457. package/.plcode/skill/experimental/document-docx/ooxml/scripts/validation/pptx.py +315 -0
  458. package/.plcode/skill/experimental/document-docx/ooxml/scripts/validation/redlining.py +279 -0
  459. package/.plcode/skill/experimental/document-docx/ooxml.md +635 -0
  460. package/.plcode/skill/experimental/document-docx/scripts/__init__.py +1 -0
  461. package/.plcode/skill/experimental/document-docx/scripts/accept_changes.py +135 -0
  462. package/.plcode/skill/experimental/document-docx/scripts/comment.py +318 -0
  463. package/.plcode/skill/experimental/document-docx/scripts/document.py +1276 -0
  464. package/.plcode/skill/experimental/document-docx/scripts/office/helpers/__init__.py +0 -0
  465. package/.plcode/skill/experimental/document-docx/scripts/office/helpers/merge_runs.py +199 -0
  466. package/.plcode/skill/experimental/document-docx/scripts/office/helpers/simplify_redlines.py +197 -0
  467. package/.plcode/skill/experimental/document-docx/scripts/office/pack.py +159 -0
  468. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  469. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  470. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  471. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  472. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  473. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  474. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  475. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  476. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  477. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  478. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  479. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  480. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  481. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  482. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  483. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  484. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  485. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  486. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  487. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  488. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  489. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  490. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  491. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  492. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  493. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  494. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  495. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  496. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  497. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  498. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  499. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/mce/mc.xsd +75 -0
  500. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  501. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  502. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  503. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  504. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  505. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  506. package/.plcode/skill/experimental/document-docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  507. package/.plcode/skill/experimental/document-docx/scripts/office/soffice.py +183 -0
  508. package/.plcode/skill/experimental/document-docx/scripts/office/unpack.py +132 -0
  509. package/.plcode/skill/experimental/document-docx/scripts/office/validate.py +111 -0
  510. package/.plcode/skill/experimental/document-docx/scripts/office/validators/__init__.py +15 -0
  511. package/.plcode/skill/experimental/document-docx/scripts/office/validators/base.py +847 -0
  512. package/.plcode/skill/experimental/document-docx/scripts/office/validators/docx.py +446 -0
  513. package/.plcode/skill/experimental/document-docx/scripts/office/validators/pptx.py +275 -0
  514. package/.plcode/skill/experimental/document-docx/scripts/office/validators/redlining.py +247 -0
  515. package/.plcode/skill/experimental/document-docx/scripts/templates/comments.xml +3 -0
  516. package/.plcode/skill/experimental/document-docx/scripts/templates/commentsExtended.xml +3 -0
  517. package/.plcode/skill/experimental/document-docx/scripts/templates/commentsExtensible.xml +3 -0
  518. package/.plcode/skill/experimental/document-docx/scripts/templates/commentsIds.xml +3 -0
  519. package/.plcode/skill/experimental/document-docx/scripts/templates/people.xml +3 -0
  520. package/.plcode/skill/experimental/document-docx/scripts/utilities.py +374 -0
  521. package/.plcode/skill/experimental/document-pdf/LICENSE.txt +30 -0
  522. package/.plcode/skill/experimental/document-pdf/SKILL.md +332 -0
  523. package/.plcode/skill/experimental/document-pdf/forms.md +312 -0
  524. package/.plcode/skill/experimental/document-pdf/reference.md +640 -0
  525. package/.plcode/skill/experimental/document-pdf/scripts/check_bounding_boxes.py +65 -0
  526. package/.plcode/skill/experimental/document-pdf/scripts/check_bounding_boxes_test.py +226 -0
  527. package/.plcode/skill/experimental/document-pdf/scripts/check_fillable_fields.py +11 -0
  528. package/.plcode/skill/experimental/document-pdf/scripts/convert_pdf_to_images.py +33 -0
  529. package/.plcode/skill/experimental/document-pdf/scripts/create_validation_image.py +37 -0
  530. package/.plcode/skill/experimental/document-pdf/scripts/extract_form_field_info.py +122 -0
  531. package/.plcode/skill/experimental/document-pdf/scripts/extract_form_structure.py +115 -0
  532. package/.plcode/skill/experimental/document-pdf/scripts/fill_fillable_fields.py +98 -0
  533. package/.plcode/skill/experimental/document-pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
  534. package/.plcode/skill/experimental/document-pptx/LICENSE.txt +30 -0
  535. package/.plcode/skill/experimental/document-pptx/SKILL.md +236 -0
  536. package/.plcode/skill/experimental/document-pptx/editing.md +213 -0
  537. package/.plcode/skill/experimental/document-pptx/html2pptx.md +719 -0
  538. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  539. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  540. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  541. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  542. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  543. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  544. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  545. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  546. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  547. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  548. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  549. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  550. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  551. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  552. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  553. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  554. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  555. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  556. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  557. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  558. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  559. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  560. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  561. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  562. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  563. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  564. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  565. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  566. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  567. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  568. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  569. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/mce/mc.xsd +75 -0
  570. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  571. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  572. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  573. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  574. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  575. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  576. package/.plcode/skill/experimental/document-pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  577. package/.plcode/skill/experimental/document-pptx/ooxml/scripts/pack.py +159 -0
  578. package/.plcode/skill/experimental/document-pptx/ooxml/scripts/unpack.py +29 -0
  579. package/.plcode/skill/experimental/document-pptx/ooxml/scripts/validate.py +69 -0
  580. package/.plcode/skill/experimental/document-pptx/ooxml/scripts/validation/__init__.py +15 -0
  581. package/.plcode/skill/experimental/document-pptx/ooxml/scripts/validation/base.py +951 -0
  582. package/.plcode/skill/experimental/document-pptx/ooxml/scripts/validation/docx.py +274 -0
  583. package/.plcode/skill/experimental/document-pptx/ooxml/scripts/validation/pptx.py +315 -0
  584. package/.plcode/skill/experimental/document-pptx/ooxml/scripts/validation/redlining.py +279 -0
  585. package/.plcode/skill/experimental/document-pptx/ooxml.md +446 -0
  586. package/.plcode/skill/experimental/document-pptx/pptxgenjs.md +511 -0
  587. package/.plcode/skill/experimental/document-pptx/scripts/__init__.py +0 -0
  588. package/.plcode/skill/experimental/document-pptx/scripts/add_slide.py +195 -0
  589. package/.plcode/skill/experimental/document-pptx/scripts/clean.py +286 -0
  590. package/.plcode/skill/experimental/document-pptx/scripts/html2pptx.js +1008 -0
  591. package/.plcode/skill/experimental/document-pptx/scripts/inventory.py +1029 -0
  592. package/.plcode/skill/experimental/document-pptx/scripts/office/helpers/__init__.py +0 -0
  593. package/.plcode/skill/experimental/document-pptx/scripts/office/helpers/merge_runs.py +199 -0
  594. package/.plcode/skill/experimental/document-pptx/scripts/office/helpers/simplify_redlines.py +197 -0
  595. package/.plcode/skill/experimental/document-pptx/scripts/office/pack.py +159 -0
  596. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  597. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  598. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  599. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  600. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  601. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  602. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  603. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  604. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  605. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  606. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  607. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  608. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  609. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  610. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  611. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  612. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  613. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  614. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  615. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  616. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  617. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  618. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  619. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  620. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  621. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  622. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  623. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  624. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  625. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  626. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  627. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/mce/mc.xsd +75 -0
  628. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  629. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  630. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  631. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  632. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  633. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  634. package/.plcode/skill/experimental/document-pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  635. package/.plcode/skill/experimental/document-pptx/scripts/office/soffice.py +183 -0
  636. package/.plcode/skill/experimental/document-pptx/scripts/office/unpack.py +132 -0
  637. package/.plcode/skill/experimental/document-pptx/scripts/office/validate.py +111 -0
  638. package/.plcode/skill/experimental/document-pptx/scripts/office/validators/__init__.py +15 -0
  639. package/.plcode/skill/experimental/document-pptx/scripts/office/validators/base.py +847 -0
  640. package/.plcode/skill/experimental/document-pptx/scripts/office/validators/docx.py +446 -0
  641. package/.plcode/skill/experimental/document-pptx/scripts/office/validators/pptx.py +275 -0
  642. package/.plcode/skill/experimental/document-pptx/scripts/office/validators/redlining.py +247 -0
  643. package/.plcode/skill/experimental/document-pptx/scripts/rearrange.py +231 -0
  644. package/.plcode/skill/experimental/document-pptx/scripts/replace.py +385 -0
  645. package/.plcode/skill/experimental/document-pptx/scripts/thumbnail.py +289 -0
  646. package/.plcode/skill/experimental/document-xlsx/LICENSE.txt +30 -0
  647. package/.plcode/skill/experimental/document-xlsx/SKILL.md +320 -0
  648. package/.plcode/skill/experimental/document-xlsx/recalc.py +211 -0
  649. package/.plcode/skill/experimental/document-xlsx/scripts/office/helpers/__init__.py +0 -0
  650. package/.plcode/skill/experimental/document-xlsx/scripts/office/helpers/merge_runs.py +199 -0
  651. package/.plcode/skill/experimental/document-xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
  652. package/.plcode/skill/experimental/document-xlsx/scripts/office/pack.py +159 -0
  653. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  654. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  655. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  656. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  657. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  658. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  659. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  660. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  661. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  662. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  663. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  664. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  665. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  666. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  667. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  668. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  669. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  670. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  671. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  672. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  673. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  674. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  675. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  676. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  677. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  678. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  679. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  680. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  681. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  682. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  683. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  684. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
  685. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  686. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  687. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  688. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  689. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  690. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  691. package/.plcode/skill/experimental/document-xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  692. package/.plcode/skill/experimental/document-xlsx/scripts/office/soffice.py +183 -0
  693. package/.plcode/skill/experimental/document-xlsx/scripts/office/unpack.py +132 -0
  694. package/.plcode/skill/experimental/document-xlsx/scripts/office/validate.py +111 -0
  695. package/.plcode/skill/experimental/document-xlsx/scripts/office/validators/__init__.py +15 -0
  696. package/.plcode/skill/experimental/document-xlsx/scripts/office/validators/base.py +847 -0
  697. package/.plcode/skill/experimental/document-xlsx/scripts/office/validators/docx.py +446 -0
  698. package/.plcode/skill/experimental/document-xlsx/scripts/office/validators/pptx.py +275 -0
  699. package/.plcode/skill/experimental/document-xlsx/scripts/office/validators/redlining.py +247 -0
  700. package/.plcode/skill/experimental/document-xlsx/scripts/recalc.py +184 -0
  701. package/.plcode/skill/experimental/domain-driven-design/SKILL.md +75 -0
  702. package/.plcode/skill/experimental/domain-driven-design/references/ddd-deliverables.md +24 -0
  703. package/.plcode/skill/experimental/excalidraw/SKILL.md +537 -0
  704. package/.plcode/skill/experimental/extract/SKILL.md +94 -0
  705. package/.plcode/skill/experimental/frontend-ui-animator/SKILL.md +147 -0
  706. package/.plcode/skill/experimental/frontend-ui-animator/references/animation-patterns.md +583 -0
  707. package/.plcode/skill/experimental/frontend-ui-animator/references/component-checklist.md +161 -0
  708. package/.plcode/skill/experimental/frontend-ui-animator/references/tailwind-presets.md +404 -0
  709. package/.plcode/skill/experimental/frontend-ui-integration/SKILL.md +79 -0
  710. package/.plcode/skill/experimental/harden/SKILL.md +385 -0
  711. package/.plcode/skill/experimental/infographic/SKILL.md +469 -0
  712. package/.plcode/skill/experimental/llm-application-dev/SKILL.md +221 -0
  713. package/.plcode/skill/experimental/mcp-builder/LICENSE.txt +202 -0
  714. package/.plcode/skill/experimental/mcp-builder/SKILL.md +256 -0
  715. package/.plcode/skill/experimental/mcp-builder/reference/evaluation.md +630 -0
  716. package/.plcode/skill/experimental/mcp-builder/reference/mcp_best_practices.md +269 -0
  717. package/.plcode/skill/experimental/mcp-builder/reference/node_mcp_server.md +974 -0
  718. package/.plcode/skill/experimental/mcp-builder/reference/python_mcp_server.md +737 -0
  719. package/.plcode/skill/experimental/mcp-builder/scripts/connections.py +151 -0
  720. package/.plcode/skill/experimental/mcp-builder/scripts/evaluation.py +373 -0
  721. package/.plcode/skill/experimental/mcp-builder/scripts/example_evaluation.xml +22 -0
  722. package/.plcode/skill/experimental/mcp-builder/scripts/requirements.txt +2 -0
  723. package/.plcode/skill/experimental/normalize/SKILL.md +69 -0
  724. package/.plcode/skill/experimental/onboard/SKILL.md +272 -0
  725. package/.plcode/skill/experimental/optimize/SKILL.md +291 -0
  726. package/.plcode/skill/experimental/polish/SKILL.md +204 -0
  727. package/.plcode/skill/experimental/product-management/SKILL.md +327 -0
  728. package/.plcode/skill/experimental/quieter/SKILL.md +125 -0
  729. package/.plcode/skill/experimental/ralph/scripts/prompt.md +108 -0
  730. package/.plcode/skill/experimental/ralph/scripts/ralph.sh +77 -0
  731. package/.plcode/skill/experimental/ralph/skill.md +170 -0
  732. package/.plcode/skill/experimental/ralph-executor/skill.md +130 -0
  733. package/.plcode/skill/experimental/rsc-data-optimizer/SKILL.md +117 -0
  734. package/.plcode/skill/experimental/rsc-data-optimizer/references/patterns.md +285 -0
  735. package/.plcode/skill/experimental/shadcn-management/SKILL.md +109 -0
  736. package/.plcode/skill/experimental/shadcn-management/references/workflows.md +214 -0
  737. package/.plcode/skill/experimental/sketch/SKILL.md +232 -0
  738. package/.plcode/skill/experimental/teach-impeccable/SKILL.md +78 -0
  739. package/.plcode/skill/experimental/theme-factory/LICENSE.txt +202 -0
  740. package/.plcode/skill/experimental/theme-factory/SKILL.md +63 -0
  741. package/.plcode/skill/experimental/theme-factory/theme-showcase.pdf +0 -0
  742. package/.plcode/skill/experimental/theme-factory/themes/arctic-frost.md +19 -0
  743. package/.plcode/skill/experimental/theme-factory/themes/botanical-garden.md +19 -0
  744. package/.plcode/skill/experimental/theme-factory/themes/desert-rose.md +19 -0
  745. package/.plcode/skill/experimental/theme-factory/themes/forest-canopy.md +19 -0
  746. package/.plcode/skill/experimental/theme-factory/themes/golden-hour.md +19 -0
  747. package/.plcode/skill/experimental/theme-factory/themes/midnight-galaxy.md +19 -0
  748. package/.plcode/skill/experimental/theme-factory/themes/modern-minimalist.md +19 -0
  749. package/.plcode/skill/experimental/theme-factory/themes/ocean-depths.md +19 -0
  750. package/.plcode/skill/experimental/theme-factory/themes/sunset-boulevard.md +19 -0
  751. package/.plcode/skill/experimental/theme-factory/themes/tech-innovation.md +19 -0
  752. package/.plcode/skill/experimental/ui-ux-pro-max/SKILL.md +238 -0
  753. package/.plcode/skill/experimental/ui-ux-pro-max/data/charts.csv +26 -0
  754. package/.plcode/skill/experimental/ui-ux-pro-max/data/colors.csv +97 -0
  755. package/.plcode/skill/experimental/ui-ux-pro-max/data/landing.csv +31 -0
  756. package/.plcode/skill/experimental/ui-ux-pro-max/data/products.csv +97 -0
  757. package/.plcode/skill/experimental/ui-ux-pro-max/data/prompts.csv +24 -0
  758. package/.plcode/skill/experimental/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  759. package/.plcode/skill/experimental/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  760. package/.plcode/skill/experimental/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  761. package/.plcode/skill/experimental/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  762. package/.plcode/skill/experimental/ui-ux-pro-max/data/stacks/react.csv +54 -0
  763. package/.plcode/skill/experimental/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  764. package/.plcode/skill/experimental/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  765. package/.plcode/skill/experimental/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  766. package/.plcode/skill/experimental/ui-ux-pro-max/data/styles.csv +59 -0
  767. package/.plcode/skill/experimental/ui-ux-pro-max/data/typography.csv +58 -0
  768. package/.plcode/skill/experimental/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  769. package/.plcode/skill/experimental/ui-ux-pro-max/scripts/core.py +236 -0
  770. package/.plcode/skill/experimental/ui-ux-pro-max/scripts/search.py +61 -0
  771. package/.plcode/skill/experimental/webapp-testing/LICENSE.txt +202 -0
  772. package/.plcode/skill/experimental/webapp-testing/SKILL.md +108 -0
  773. package/.plcode/skill/experimental/webapp-testing/examples/console_logging.py +35 -0
  774. package/.plcode/skill/experimental/webapp-testing/examples/element_discovery.py +40 -0
  775. package/.plcode/skill/experimental/webapp-testing/examples/static_html_automation.py +33 -0
  776. package/.plcode/skill/experimental/webapp-testing/scripts/with_server.py +106 -0
  777. package/bin/plcode +0 -0
  778. package/package.json +24 -0
@@ -0,0 +1,974 @@
1
+ # Node/TypeScript MCP Server Implementation Guide
2
+
3
+ ## Overview
4
+
5
+ This document provides Node/TypeScript-specific best practices and examples for implementing MCP servers using the MCP TypeScript SDK. It covers project structure, server setup, tool registration patterns, input validation with Zod, error handling, and complete working examples.
6
+
7
+ ---
8
+
9
+ ## Quick Reference
10
+
11
+ ### Key Imports
12
+
13
+ ```typescript
14
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"
15
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js"
16
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
17
+ import express from "express"
18
+ import { z } from "zod"
19
+ ```
20
+
21
+ ### Server Initialization
22
+
23
+ ```typescript
24
+ const server = new McpServer({
25
+ name: "service-mcp-server",
26
+ version: "1.0.0",
27
+ })
28
+ ```
29
+
30
+ ### Tool Registration Pattern
31
+
32
+ ```typescript
33
+ server.registerTool(
34
+ "tool_name",
35
+ {
36
+ title: "Tool Display Name",
37
+ description: "What the tool does",
38
+ inputSchema: { param: z.string() },
39
+ outputSchema: { result: z.string() },
40
+ },
41
+ async ({ param }) => {
42
+ const output = { result: `Processed: ${param}` }
43
+ return {
44
+ content: [{ type: "text", text: JSON.stringify(output) }],
45
+ structuredContent: output, // Modern pattern for structured data
46
+ }
47
+ },
48
+ )
49
+ ```
50
+
51
+ ---
52
+
53
+ ## MCP TypeScript SDK
54
+
55
+ The official MCP TypeScript SDK provides:
56
+
57
+ - `McpServer` class for server initialization
58
+ - `registerTool` method for tool registration
59
+ - Zod schema integration for runtime input validation
60
+ - Type-safe tool handler implementations
61
+
62
+ **IMPORTANT - Use Modern APIs Only:**
63
+
64
+ - **DO use**: `server.registerTool()`, `server.registerResource()`, `server.registerPrompt()`
65
+ - **DO NOT use**: Old deprecated APIs such as `server.tool()`, `server.setRequestHandler(ListToolsRequestSchema, ...)`, or manual handler registration
66
+ - The `register*` methods provide better type safety, automatic schema handling, and are the recommended approach
67
+
68
+ See the MCP SDK documentation in the references for complete details.
69
+
70
+ ## Server Naming Convention
71
+
72
+ Node/TypeScript MCP servers must follow this naming pattern:
73
+
74
+ - **Format**: `{service}-mcp-server` (lowercase with hyphens)
75
+ - **Examples**: `github-mcp-server`, `jira-mcp-server`, `stripe-mcp-server`
76
+
77
+ The name should be:
78
+
79
+ - General (not tied to specific features)
80
+ - Descriptive of the service/API being integrated
81
+ - Easy to infer from the task description
82
+ - Without version numbers or dates
83
+
84
+ ## Project Structure
85
+
86
+ Create the following structure for Node/TypeScript MCP servers:
87
+
88
+ ```
89
+ {service}-mcp-server/
90
+ ├── package.json
91
+ ├── tsconfig.json
92
+ ├── README.md
93
+ ├── src/
94
+ │ ├── index.ts # Main entry point with McpServer initialization
95
+ │ ├── types.ts # TypeScript type definitions and interfaces
96
+ │ ├── tools/ # Tool implementations (one file per domain)
97
+ │ ├── services/ # API clients and shared utilities
98
+ │ ├── schemas/ # Zod validation schemas
99
+ │ └── constants.ts # Shared constants (API_URL, CHARACTER_LIMIT, etc.)
100
+ └── dist/ # Built JavaScript files (entry point: dist/index.js)
101
+ ```
102
+
103
+ ## Tool Implementation
104
+
105
+ ### Tool Naming
106
+
107
+ Use snake_case for tool names (e.g., "search_users", "create_project", "get_channel_info") with clear, action-oriented names.
108
+
109
+ **Avoid Naming Conflicts**: Include the service context to prevent overlaps:
110
+
111
+ - Use "slack_send_message" instead of just "send_message"
112
+ - Use "github_create_issue" instead of just "create_issue"
113
+ - Use "asana_list_tasks" instead of just "list_tasks"
114
+
115
+ ### Tool Structure
116
+
117
+ Tools are registered using the `registerTool` method with the following requirements:
118
+
119
+ - Use Zod schemas for runtime input validation and type safety
120
+ - The `description` field must be explicitly provided - JSDoc comments are NOT automatically extracted
121
+ - Explicitly provide `title`, `description`, `inputSchema`, and `annotations`
122
+ - The `inputSchema` must be a Zod schema object (not a JSON schema)
123
+ - Type all parameters and return values explicitly
124
+
125
+ ```typescript
126
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"
127
+ import { z } from "zod"
128
+
129
+ const server = new McpServer({
130
+ name: "example-mcp",
131
+ version: "1.0.0",
132
+ })
133
+
134
+ // Zod schema for input validation
135
+ const UserSearchInputSchema = z
136
+ .object({
137
+ query: z
138
+ .string()
139
+ .min(2, "Query must be at least 2 characters")
140
+ .max(200, "Query must not exceed 200 characters")
141
+ .describe("Search string to match against names/emails"),
142
+ limit: z.number().int().min(1).max(100).default(20).describe("Maximum results to return"),
143
+ offset: z.number().int().min(0).default(0).describe("Number of results to skip for pagination"),
144
+ response_format: z
145
+ .nativeEnum(ResponseFormat)
146
+ .default(ResponseFormat.MARKDOWN)
147
+ .describe("Output format: 'markdown' for human-readable or 'json' for machine-readable"),
148
+ })
149
+ .strict()
150
+
151
+ // Type definition from Zod schema
152
+ type UserSearchInput = z.infer<typeof UserSearchInputSchema>
153
+
154
+ server.registerTool(
155
+ "example_search_users",
156
+ {
157
+ title: "Search Example Users",
158
+ description: `Search for users in the Example system by name, email, or team.
159
+
160
+ This tool searches across all user profiles in the Example platform, supporting partial matches and various search filters. It does NOT create or modify users, only searches existing ones.
161
+
162
+ Args:
163
+ - query (string): Search string to match against names/emails
164
+ - limit (number): Maximum results to return, between 1-100 (default: 20)
165
+ - offset (number): Number of results to skip for pagination (default: 0)
166
+ - response_format ('markdown' | 'json'): Output format (default: 'markdown')
167
+
168
+ Returns:
169
+ For JSON format: Structured data with schema:
170
+ {
171
+ "total": number, // Total number of matches found
172
+ "count": number, // Number of results in this response
173
+ "offset": number, // Current pagination offset
174
+ "users": [
175
+ {
176
+ "id": string, // User ID (e.g., "U123456789")
177
+ "name": string, // Full name (e.g., "John Doe")
178
+ "email": string, // Email address
179
+ "team": string, // Team name (optional)
180
+ "active": boolean // Whether user is active
181
+ }
182
+ ],
183
+ "has_more": boolean, // Whether more results are available
184
+ "next_offset": number // Offset for next page (if has_more is true)
185
+ }
186
+
187
+ Examples:
188
+ - Use when: "Find all marketing team members" -> params with query="team:marketing"
189
+ - Use when: "Search for John's account" -> params with query="john"
190
+ - Don't use when: You need to create a user (use example_create_user instead)
191
+
192
+ Error Handling:
193
+ - Returns "Error: Rate limit exceeded" if too many requests (429 status)
194
+ - Returns "No users found matching '<query>'" if search returns empty`,
195
+ inputSchema: UserSearchInputSchema,
196
+ annotations: {
197
+ readOnlyHint: true,
198
+ destructiveHint: false,
199
+ idempotentHint: true,
200
+ openWorldHint: true,
201
+ },
202
+ },
203
+ async (params: UserSearchInput) => {
204
+ try {
205
+ // Input validation is handled by Zod schema
206
+ // Make API request using validated parameters
207
+ const data = await makeApiRequest<any>("users/search", "GET", undefined, {
208
+ q: params.query,
209
+ limit: params.limit,
210
+ offset: params.offset,
211
+ })
212
+
213
+ const users = data.users || []
214
+ const total = data.total || 0
215
+
216
+ if (!users.length) {
217
+ return {
218
+ content: [
219
+ {
220
+ type: "text",
221
+ text: `No users found matching '${params.query}'`,
222
+ },
223
+ ],
224
+ }
225
+ }
226
+
227
+ // Prepare structured output
228
+ const output = {
229
+ total,
230
+ count: users.length,
231
+ offset: params.offset,
232
+ users: users.map((user: any) => ({
233
+ id: user.id,
234
+ name: user.name,
235
+ email: user.email,
236
+ ...(user.team ? { team: user.team } : {}),
237
+ active: user.active ?? true,
238
+ })),
239
+ has_more: total > params.offset + users.length,
240
+ ...(total > params.offset + users.length
241
+ ? {
242
+ next_offset: params.offset + users.length,
243
+ }
244
+ : {}),
245
+ }
246
+
247
+ // Format text representation based on requested format
248
+ let textContent: string
249
+ if (params.response_format === ResponseFormat.MARKDOWN) {
250
+ const lines = [
251
+ `# User Search Results: '${params.query}'`,
252
+ "",
253
+ `Found ${total} users (showing ${users.length})`,
254
+ "",
255
+ ]
256
+ for (const user of users) {
257
+ lines.push(`## ${user.name} (${user.id})`)
258
+ lines.push(`- **Email**: ${user.email}`)
259
+ if (user.team) lines.push(`- **Team**: ${user.team}`)
260
+ lines.push("")
261
+ }
262
+ textContent = lines.join("\n")
263
+ } else {
264
+ textContent = JSON.stringify(output, null, 2)
265
+ }
266
+
267
+ return {
268
+ content: [{ type: "text", text: textContent }],
269
+ structuredContent: output, // Modern pattern for structured data
270
+ }
271
+ } catch (error) {
272
+ return {
273
+ content: [
274
+ {
275
+ type: "text",
276
+ text: handleApiError(error),
277
+ },
278
+ ],
279
+ }
280
+ }
281
+ },
282
+ )
283
+ ```
284
+
285
+ ## Zod Schemas for Input Validation
286
+
287
+ Zod provides runtime type validation:
288
+
289
+ ```typescript
290
+ import { z } from "zod"
291
+
292
+ // Basic schema with validation
293
+ const CreateUserSchema = z
294
+ .object({
295
+ name: z.string().min(1, "Name is required").max(100, "Name must not exceed 100 characters"),
296
+ email: z.string().email("Invalid email format"),
297
+ age: z
298
+ .number()
299
+ .int("Age must be a whole number")
300
+ .min(0, "Age cannot be negative")
301
+ .max(150, "Age cannot be greater than 150"),
302
+ })
303
+ .strict() // Use .strict() to forbid extra fields
304
+
305
+ // Enums
306
+ enum ResponseFormat {
307
+ MARKDOWN = "markdown",
308
+ JSON = "json",
309
+ }
310
+
311
+ const SearchSchema = z.object({
312
+ response_format: z.nativeEnum(ResponseFormat).default(ResponseFormat.MARKDOWN).describe("Output format"),
313
+ })
314
+
315
+ // Optional fields with defaults
316
+ const PaginationSchema = z.object({
317
+ limit: z.number().int().min(1).max(100).default(20).describe("Maximum results to return"),
318
+ offset: z.number().int().min(0).default(0).describe("Number of results to skip"),
319
+ })
320
+ ```
321
+
322
+ ## Response Format Options
323
+
324
+ Support multiple output formats for flexibility:
325
+
326
+ ```typescript
327
+ enum ResponseFormat {
328
+ MARKDOWN = "markdown",
329
+ JSON = "json",
330
+ }
331
+
332
+ const inputSchema = z.object({
333
+ query: z.string(),
334
+ response_format: z
335
+ .nativeEnum(ResponseFormat)
336
+ .default(ResponseFormat.MARKDOWN)
337
+ .describe("Output format: 'markdown' for human-readable or 'json' for machine-readable"),
338
+ })
339
+ ```
340
+
341
+ **Markdown format**:
342
+
343
+ - Use headers, lists, and formatting for clarity
344
+ - Convert timestamps to human-readable format
345
+ - Show display names with IDs in parentheses
346
+ - Omit verbose metadata
347
+ - Group related information logically
348
+
349
+ **JSON format**:
350
+
351
+ - Return complete, structured data suitable for programmatic processing
352
+ - Include all available fields and metadata
353
+ - Use consistent field names and types
354
+
355
+ ## Pagination Implementation
356
+
357
+ For tools that list resources:
358
+
359
+ ```typescript
360
+ const ListSchema = z.object({
361
+ limit: z.number().int().min(1).max(100).default(20),
362
+ offset: z.number().int().min(0).default(0),
363
+ })
364
+
365
+ async function listItems(params: z.infer<typeof ListSchema>) {
366
+ const data = await apiRequest(params.limit, params.offset)
367
+
368
+ const response = {
369
+ total: data.total,
370
+ count: data.items.length,
371
+ offset: params.offset,
372
+ items: data.items,
373
+ has_more: data.total > params.offset + data.items.length,
374
+ next_offset: data.total > params.offset + data.items.length ? params.offset + data.items.length : undefined,
375
+ }
376
+
377
+ return JSON.stringify(response, null, 2)
378
+ }
379
+ ```
380
+
381
+ ## Character Limits and Truncation
382
+
383
+ Add a CHARACTER_LIMIT constant to prevent overwhelming responses:
384
+
385
+ ```typescript
386
+ // At module level in constants.ts
387
+ export const CHARACTER_LIMIT = 25000 // Maximum response size in characters
388
+
389
+ async function searchTool(params: SearchInput) {
390
+ let result = generateResponse(data)
391
+
392
+ // Check character limit and truncate if needed
393
+ if (result.length > CHARACTER_LIMIT) {
394
+ const truncatedData = data.slice(0, Math.max(1, data.length / 2))
395
+ response.data = truncatedData
396
+ response.truncated = true
397
+ response.truncation_message =
398
+ `Response truncated from ${data.length} to ${truncatedData.length} items. ` +
399
+ `Use 'offset' parameter or add filters to see more results.`
400
+ result = JSON.stringify(response, null, 2)
401
+ }
402
+
403
+ return result
404
+ }
405
+ ```
406
+
407
+ ## Error Handling
408
+
409
+ Provide clear, actionable error messages:
410
+
411
+ ```typescript
412
+ import axios, { AxiosError } from "axios"
413
+
414
+ function handleApiError(error: unknown): string {
415
+ if (error instanceof AxiosError) {
416
+ if (error.response) {
417
+ switch (error.response.status) {
418
+ case 404:
419
+ return "Error: Resource not found. Please check the ID is correct."
420
+ case 403:
421
+ return "Error: Permission denied. You don't have access to this resource."
422
+ case 429:
423
+ return "Error: Rate limit exceeded. Please wait before making more requests."
424
+ default:
425
+ return `Error: API request failed with status ${error.response.status}`
426
+ }
427
+ } else if (error.code === "ECONNABORTED") {
428
+ return "Error: Request timed out. Please try again."
429
+ }
430
+ }
431
+ return `Error: Unexpected error occurred: ${error instanceof Error ? error.message : String(error)}`
432
+ }
433
+ ```
434
+
435
+ ## Shared Utilities
436
+
437
+ Extract common functionality into reusable functions:
438
+
439
+ ```typescript
440
+ // Shared API request function
441
+ async function makeApiRequest<T>(
442
+ endpoint: string,
443
+ method: "GET" | "POST" | "PUT" | "DELETE" = "GET",
444
+ data?: any,
445
+ params?: any,
446
+ ): Promise<T> {
447
+ try {
448
+ const response = await axios({
449
+ method,
450
+ url: `${API_BASE_URL}/${endpoint}`,
451
+ data,
452
+ params,
453
+ timeout: 30000,
454
+ headers: {
455
+ "Content-Type": "application/json",
456
+ Accept: "application/json",
457
+ },
458
+ })
459
+ return response.data
460
+ } catch (error) {
461
+ throw error
462
+ }
463
+ }
464
+ ```
465
+
466
+ ## Async/Await Best Practices
467
+
468
+ Always use async/await for network requests and I/O operations:
469
+
470
+ ```typescript
471
+ // Good: Async network request
472
+ async function fetchData(resourceId: string): Promise<ResourceData> {
473
+ const response = await axios.get(`${API_URL}/resource/${resourceId}`)
474
+ return response.data
475
+ }
476
+
477
+ // Bad: Promise chains
478
+ function fetchData(resourceId: string): Promise<ResourceData> {
479
+ return axios.get(`${API_URL}/resource/${resourceId}`).then((response) => response.data) // Harder to read and maintain
480
+ }
481
+ ```
482
+
483
+ ## TypeScript Best Practices
484
+
485
+ 1. **Use Strict TypeScript**: Enable strict mode in tsconfig.json
486
+ 2. **Define Interfaces**: Create clear interface definitions for all data structures
487
+ 3. **Avoid `any`**: Use proper types or `unknown` instead of `any`
488
+ 4. **Zod for Runtime Validation**: Use Zod schemas to validate external data
489
+ 5. **Type Guards**: Create type guard functions for complex type checking
490
+ 6. **Error Handling**: Always use try-catch with proper error type checking
491
+ 7. **Null Safety**: Use optional chaining (`?.`) and nullish coalescing (`??`)
492
+
493
+ ```typescript
494
+ // Good: Type-safe with Zod and interfaces
495
+ interface UserResponse {
496
+ id: string
497
+ name: string
498
+ email: string
499
+ team?: string
500
+ active: boolean
501
+ }
502
+
503
+ const UserSchema = z.object({
504
+ id: z.string(),
505
+ name: z.string(),
506
+ email: z.string().email(),
507
+ team: z.string().optional(),
508
+ active: z.boolean(),
509
+ })
510
+
511
+ type User = z.infer<typeof UserSchema>
512
+
513
+ async function getUser(id: string): Promise<User> {
514
+ const data = await apiCall(`/users/${id}`)
515
+ return UserSchema.parse(data) // Runtime validation
516
+ }
517
+
518
+ // Bad: Using any
519
+ async function getUser(id: string): Promise<any> {
520
+ return await apiCall(`/users/${id}`) // No type safety
521
+ }
522
+ ```
523
+
524
+ ## Package Configuration
525
+
526
+ ### package.json
527
+
528
+ ```json
529
+ {
530
+ "name": "{service}-mcp-server",
531
+ "version": "1.0.0",
532
+ "description": "MCP server for {Service} API integration",
533
+ "type": "module",
534
+ "main": "dist/index.js",
535
+ "scripts": {
536
+ "start": "node dist/index.js",
537
+ "dev": "tsx watch src/index.ts",
538
+ "build": "tsc",
539
+ "clean": "rm -rf dist"
540
+ },
541
+ "engines": {
542
+ "node": ">=18"
543
+ },
544
+ "dependencies": {
545
+ "@modelcontextprotocol/sdk": "^1.6.1",
546
+ "axios": "^1.7.9",
547
+ "zod": "^3.23.8"
548
+ },
549
+ "devDependencies": {
550
+ "@types/node": "^22.10.0",
551
+ "tsx": "^4.19.2",
552
+ "typescript": "^5.7.2"
553
+ }
554
+ }
555
+ ```
556
+
557
+ ### tsconfig.json
558
+
559
+ ```json
560
+ {
561
+ "compilerOptions": {
562
+ "target": "ES2022",
563
+ "module": "Node16",
564
+ "moduleResolution": "Node16",
565
+ "lib": ["ES2022"],
566
+ "outDir": "./dist",
567
+ "rootDir": "./src",
568
+ "strict": true,
569
+ "esModuleInterop": true,
570
+ "skipLibCheck": true,
571
+ "forceConsistentCasingInFileNames": true,
572
+ "declaration": true,
573
+ "declarationMap": true,
574
+ "sourceMap": true,
575
+ "allowSyntheticDefaultImports": true
576
+ },
577
+ "include": ["src/**/*"],
578
+ "exclude": ["node_modules", "dist"]
579
+ }
580
+ ```
581
+
582
+ ## Complete Example
583
+
584
+ ```typescript
585
+ #!/usr/bin/env node
586
+ /**
587
+ * MCP Server for Example Service.
588
+ *
589
+ * This server provides tools to interact with Example API, including user search,
590
+ * project management, and data export capabilities.
591
+ */
592
+
593
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"
594
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
595
+ import { z } from "zod"
596
+ import axios, { AxiosError } from "axios"
597
+
598
+ // Constants
599
+ const API_BASE_URL = "https://api.example.com/v1"
600
+ const CHARACTER_LIMIT = 25000
601
+
602
+ // Enums
603
+ enum ResponseFormat {
604
+ MARKDOWN = "markdown",
605
+ JSON = "json",
606
+ }
607
+
608
+ // Zod schemas
609
+ const UserSearchInputSchema = z
610
+ .object({
611
+ query: z
612
+ .string()
613
+ .min(2, "Query must be at least 2 characters")
614
+ .max(200, "Query must not exceed 200 characters")
615
+ .describe("Search string to match against names/emails"),
616
+ limit: z.number().int().min(1).max(100).default(20).describe("Maximum results to return"),
617
+ offset: z.number().int().min(0).default(0).describe("Number of results to skip for pagination"),
618
+ response_format: z
619
+ .nativeEnum(ResponseFormat)
620
+ .default(ResponseFormat.MARKDOWN)
621
+ .describe("Output format: 'markdown' for human-readable or 'json' for machine-readable"),
622
+ })
623
+ .strict()
624
+
625
+ type UserSearchInput = z.infer<typeof UserSearchInputSchema>
626
+
627
+ // Shared utility functions
628
+ async function makeApiRequest<T>(
629
+ endpoint: string,
630
+ method: "GET" | "POST" | "PUT" | "DELETE" = "GET",
631
+ data?: any,
632
+ params?: any,
633
+ ): Promise<T> {
634
+ try {
635
+ const response = await axios({
636
+ method,
637
+ url: `${API_BASE_URL}/${endpoint}`,
638
+ data,
639
+ params,
640
+ timeout: 30000,
641
+ headers: {
642
+ "Content-Type": "application/json",
643
+ Accept: "application/json",
644
+ },
645
+ })
646
+ return response.data
647
+ } catch (error) {
648
+ throw error
649
+ }
650
+ }
651
+
652
+ function handleApiError(error: unknown): string {
653
+ if (error instanceof AxiosError) {
654
+ if (error.response) {
655
+ switch (error.response.status) {
656
+ case 404:
657
+ return "Error: Resource not found. Please check the ID is correct."
658
+ case 403:
659
+ return "Error: Permission denied. You don't have access to this resource."
660
+ case 429:
661
+ return "Error: Rate limit exceeded. Please wait before making more requests."
662
+ default:
663
+ return `Error: API request failed with status ${error.response.status}`
664
+ }
665
+ } else if (error.code === "ECONNABORTED") {
666
+ return "Error: Request timed out. Please try again."
667
+ }
668
+ }
669
+ return `Error: Unexpected error occurred: ${error instanceof Error ? error.message : String(error)}`
670
+ }
671
+
672
+ // Create MCP server instance
673
+ const server = new McpServer({
674
+ name: "example-mcp",
675
+ version: "1.0.0",
676
+ })
677
+
678
+ // Register tools
679
+ server.registerTool(
680
+ "example_search_users",
681
+ {
682
+ title: "Search Example Users",
683
+ description: `[Full description as shown above]`,
684
+ inputSchema: UserSearchInputSchema,
685
+ annotations: {
686
+ readOnlyHint: true,
687
+ destructiveHint: false,
688
+ idempotentHint: true,
689
+ openWorldHint: true,
690
+ },
691
+ },
692
+ async (params: UserSearchInput) => {
693
+ // Implementation as shown above
694
+ },
695
+ )
696
+
697
+ // Main function
698
+ // For stdio (local):
699
+ async function runStdio() {
700
+ if (!process.env.EXAMPLE_API_KEY) {
701
+ console.error("ERROR: EXAMPLE_API_KEY environment variable is required")
702
+ process.exit(1)
703
+ }
704
+
705
+ const transport = new StdioServerTransport()
706
+ await server.connect(transport)
707
+ console.error("MCP server running via stdio")
708
+ }
709
+
710
+ // For streamable HTTP (remote):
711
+ async function runHTTP() {
712
+ if (!process.env.EXAMPLE_API_KEY) {
713
+ console.error("ERROR: EXAMPLE_API_KEY environment variable is required")
714
+ process.exit(1)
715
+ }
716
+
717
+ const app = express()
718
+ app.use(express.json())
719
+
720
+ app.post("/mcp", async (req, res) => {
721
+ const transport = new StreamableHTTPServerTransport({
722
+ sessionIdGenerator: undefined,
723
+ enableJsonResponse: true,
724
+ })
725
+ res.on("close", () => transport.close())
726
+ await server.connect(transport)
727
+ await transport.handleRequest(req, res, req.body)
728
+ })
729
+
730
+ const port = parseInt(process.env.PORT || "3000")
731
+ app.listen(port, () => {
732
+ console.error(`MCP server running on http://localhost:${port}/mcp`)
733
+ })
734
+ }
735
+
736
+ // Choose transport based on environment
737
+ const transport = process.env.TRANSPORT || "stdio"
738
+ if (transport === "http") {
739
+ runHTTP().catch((error) => {
740
+ console.error("Server error:", error)
741
+ process.exit(1)
742
+ })
743
+ } else {
744
+ runStdio().catch((error) => {
745
+ console.error("Server error:", error)
746
+ process.exit(1)
747
+ })
748
+ }
749
+ ```
750
+
751
+ ---
752
+
753
+ ## Advanced MCP Features
754
+
755
+ ### Resource Registration
756
+
757
+ Expose data as resources for efficient, URI-based access:
758
+
759
+ ```typescript
760
+ import { ResourceTemplate } from "@modelcontextprotocol/sdk/types.js"
761
+
762
+ // Register a resource with URI template
763
+ server.registerResource(
764
+ {
765
+ uri: "file://documents/{name}",
766
+ name: "Document Resource",
767
+ description: "Access documents by name",
768
+ mimeType: "text/plain",
769
+ },
770
+ async (uri: string) => {
771
+ // Extract parameter from URI
772
+ const match = uri.match(/^file:\/\/documents\/(.+)$/)
773
+ if (!match) {
774
+ throw new Error("Invalid URI format")
775
+ }
776
+
777
+ const documentName = match[1]
778
+ const content = await loadDocument(documentName)
779
+
780
+ return {
781
+ contents: [
782
+ {
783
+ uri,
784
+ mimeType: "text/plain",
785
+ text: content,
786
+ },
787
+ ],
788
+ }
789
+ },
790
+ )
791
+
792
+ // List available resources dynamically
793
+ server.registerResourceList(async () => {
794
+ const documents = await getAvailableDocuments()
795
+ return {
796
+ resources: documents.map((doc) => ({
797
+ uri: `file://documents/${doc.name}`,
798
+ name: doc.name,
799
+ mimeType: "text/plain",
800
+ description: doc.description,
801
+ })),
802
+ }
803
+ })
804
+ ```
805
+
806
+ **When to use Resources vs Tools:**
807
+
808
+ - **Resources**: For data access with simple URI-based parameters
809
+ - **Tools**: For complex operations requiring validation and business logic
810
+ - **Resources**: When data is relatively static or template-based
811
+ - **Tools**: When operations have side effects or complex workflows
812
+
813
+ ### Transport Options
814
+
815
+ The TypeScript SDK supports two main transport mechanisms:
816
+
817
+ #### Streamable HTTP (Recommended for Remote Servers)
818
+
819
+ ```typescript
820
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js"
821
+ import express from "express"
822
+
823
+ const app = express()
824
+ app.use(express.json())
825
+
826
+ app.post("/mcp", async (req, res) => {
827
+ // Create new transport for each request (stateless, prevents request ID collisions)
828
+ const transport = new StreamableHTTPServerTransport({
829
+ sessionIdGenerator: undefined,
830
+ enableJsonResponse: true,
831
+ })
832
+
833
+ res.on("close", () => transport.close())
834
+
835
+ await server.connect(transport)
836
+ await transport.handleRequest(req, res, req.body)
837
+ })
838
+
839
+ app.listen(3000)
840
+ ```
841
+
842
+ #### stdio (For Local Integrations)
843
+
844
+ ```typescript
845
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
846
+
847
+ const transport = new StdioServerTransport()
848
+ await server.connect(transport)
849
+ ```
850
+
851
+ **Transport selection:**
852
+
853
+ - **Streamable HTTP**: Web services, remote access, multiple clients
854
+ - **stdio**: Command-line tools, local development, subprocess integration
855
+
856
+ ### Notification Support
857
+
858
+ Notify clients when server state changes:
859
+
860
+ ```typescript
861
+ // Notify when tools list changes
862
+ server.notification({
863
+ method: "notifications/tools/list_changed",
864
+ })
865
+
866
+ // Notify when resources change
867
+ server.notification({
868
+ method: "notifications/resources/list_changed",
869
+ })
870
+ ```
871
+
872
+ Use notifications sparingly - only when server capabilities genuinely change.
873
+
874
+ ---
875
+
876
+ ## Code Best Practices
877
+
878
+ ### Code Composability and Reusability
879
+
880
+ Your implementation MUST prioritize composability and code reuse:
881
+
882
+ 1. **Extract Common Functionality**:
883
+ - Create reusable helper functions for operations used across multiple tools
884
+ - Build shared API clients for HTTP requests instead of duplicating code
885
+ - Centralize error handling logic in utility functions
886
+ - Extract business logic into dedicated functions that can be composed
887
+ - Extract shared markdown or JSON field selection & formatting functionality
888
+
889
+ 2. **Avoid Duplication**:
890
+ - NEVER copy-paste similar code between tools
891
+ - If you find yourself writing similar logic twice, extract it into a function
892
+ - Common operations like pagination, filtering, field selection, and formatting should be shared
893
+ - Authentication/authorization logic should be centralized
894
+
895
+ ## Building and Running
896
+
897
+ Always build your TypeScript code before running:
898
+
899
+ ```bash
900
+ # Build the project
901
+ npm run build
902
+
903
+ # Run the server
904
+ npm start
905
+
906
+ # Development with auto-reload
907
+ npm run dev
908
+ ```
909
+
910
+ Always ensure `npm run build` completes successfully before considering the implementation complete.
911
+
912
+ ## Quality Checklist
913
+
914
+ Before finalizing your Node/TypeScript MCP server implementation, ensure:
915
+
916
+ ### Strategic Design
917
+
918
+ - [ ] Tools enable complete workflows, not just API endpoint wrappers
919
+ - [ ] Tool names reflect natural task subdivisions
920
+ - [ ] Response formats optimize for agent context efficiency
921
+ - [ ] Human-readable identifiers used where appropriate
922
+ - [ ] Error messages guide agents toward correct usage
923
+
924
+ ### Implementation Quality
925
+
926
+ - [ ] FOCUSED IMPLEMENTATION: Most important and valuable tools implemented
927
+ - [ ] All tools registered using `registerTool` with complete configuration
928
+ - [ ] All tools include `title`, `description`, `inputSchema`, and `annotations`
929
+ - [ ] Annotations correctly set (readOnlyHint, destructiveHint, idempotentHint, openWorldHint)
930
+ - [ ] All tools use Zod schemas for runtime input validation with `.strict()` enforcement
931
+ - [ ] All Zod schemas have proper constraints and descriptive error messages
932
+ - [ ] All tools have comprehensive descriptions with explicit input/output types
933
+ - [ ] Descriptions include return value examples and complete schema documentation
934
+ - [ ] Error messages are clear, actionable, and educational
935
+
936
+ ### TypeScript Quality
937
+
938
+ - [ ] TypeScript interfaces are defined for all data structures
939
+ - [ ] Strict TypeScript is enabled in tsconfig.json
940
+ - [ ] No use of `any` type - use `unknown` or proper types instead
941
+ - [ ] All async functions have explicit Promise<T> return types
942
+ - [ ] Error handling uses proper type guards (e.g., `axios.isAxiosError`, `z.ZodError`)
943
+
944
+ ### Advanced Features (where applicable)
945
+
946
+ - [ ] Resources registered for appropriate data endpoints
947
+ - [ ] Appropriate transport configured (stdio or streamable HTTP)
948
+ - [ ] Notifications implemented for dynamic server capabilities
949
+ - [ ] Type-safe with SDK interfaces
950
+
951
+ ### Project Configuration
952
+
953
+ - [ ] Package.json includes all necessary dependencies
954
+ - [ ] Build script produces working JavaScript in dist/ directory
955
+ - [ ] Main entry point is properly configured as dist/index.js
956
+ - [ ] Server name follows format: `{service}-mcp-server`
957
+ - [ ] tsconfig.json properly configured with strict mode
958
+
959
+ ### Code Quality
960
+
961
+ - [ ] Pagination is properly implemented where applicable
962
+ - [ ] Large responses check CHARACTER_LIMIT constant and truncate with clear messages
963
+ - [ ] Filtering options are provided for potentially large result sets
964
+ - [ ] All network operations handle timeouts and connection errors gracefully
965
+ - [ ] Common functionality is extracted into reusable functions
966
+ - [ ] Return types are consistent across similar operations
967
+
968
+ ### Testing and Build
969
+
970
+ - [ ] `npm run build` completes successfully without errors
971
+ - [ ] dist/index.js created and executable
972
+ - [ ] Server runs: `node dist/index.js --help`
973
+ - [ ] All imports resolve correctly
974
+ - [ ] Sample tool calls work as expected