@prismer/runtime 2.0.8 → 2.2.63
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.
- package/CHANGELOG.md +4004 -0
- package/README.md +34 -12
- package/apc/skills/FIELD-DICTIONARY.md +111 -0
- package/apc/skills/bug-reproduce/SKILL.md +150 -0
- package/apc/skills/bug-reproduce/skill.json +96 -0
- package/apc/skills/code-review/SKILL.md +198 -0
- package/apc/skills/code-review/skill.json +124 -0
- package/apc/skills/design-review/SKILL.md +122 -0
- package/apc/skills/design-review/skill.json +88 -0
- package/apc/skills/doc-sync/SKILL.md +168 -0
- package/apc/skills/doc-sync/skill.json +81 -0
- package/apc/skills/env-doctor/SKILL.md +194 -0
- package/apc/skills/env-doctor/skill.json +209 -0
- package/apc/skills/git-ops/SKILL.md +189 -0
- package/apc/skills/git-ops/skill.json +94 -0
- package/apc/skills/impact-trace/SKILL.md +168 -0
- package/apc/skills/impact-trace/skill.json +104 -0
- package/apc/skills/observability/SKILL.md +195 -0
- package/apc/skills/observability/skill.json +116 -0
- package/apc/skills/release-db-config-sync/SKILL.md +186 -0
- package/apc/skills/release-db-config-sync/skill.json +109 -0
- package/apc/skills/release-ota-promote/SKILL.md +195 -0
- package/apc/skills/release-ota-promote/skill.json +176 -0
- package/apc/skills/release-preflight/SKILL.md +174 -0
- package/apc/skills/release-preflight/skill.json +175 -0
- package/apc/skills/release-rollback/SKILL.md +214 -0
- package/apc/skills/release-rollback/skill.json +230 -0
- package/apc/skills/release-tag/SKILL.md +194 -0
- package/apc/skills/release-tag/skill.json +94 -0
- package/apc/skills/releasing-prod/SKILL.md +49 -0
- package/apc/skills/releasing-test/SKILL.md +144 -0
- package/apc/skills/sdk-release/SKILL.md +200 -0
- package/apc/skills/spec-intake/SKILL.md +169 -0
- package/apc/skills/spec-intake/skill.json +93 -0
- package/apc/skills/test-result-feedback/SKILL.md +239 -0
- package/apc/skills/test-result-feedback/skill.json +193 -0
- package/apc/skills/test-runner/SKILL.md +169 -0
- package/apc/skills/test-runner/skill.json +103 -0
- package/apc/skills/ui-align/SKILL.md +209 -0
- package/apc/skills/ui-align/skill.json +114 -0
- package/apc/skills/ui-canvas/SKILL.md +148 -0
- package/apc/skills/ui-canvas/skill.json +127 -0
- package/built-in-skills/agent-coordination/SKILL.md +77 -38
- package/built-in-skills/agent-meta/SKILL.md +12 -0
- package/built-in-skills/assets/SKILL.md +9 -7
- package/built-in-skills/browser-use/SKILL.md +93 -0
- package/built-in-skills/canvas-design/SKILL.md +4 -3
- package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/InstrumentSerif-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/LICENSE-SOURCES.md +16 -0
- package/built-in-skills/claim-agent-ownership/SKILL.md +10 -5
- package/built-in-skills/claude-api/SKILL.md +2 -1
- package/built-in-skills/claude-api/python/claude-api/README.md +2 -2
- package/built-in-skills/claude-api/python/claude-api/tool-use.md +9 -5
- package/built-in-skills/claude-api/python/managed-agents/README.md +11 -1
- package/built-in-skills/claude-api/shared/error-codes.md +4 -4
- package/built-in-skills/claude-api/shared/managed-agents-client-patterns.md +4 -2
- package/built-in-skills/claude-api/shared/managed-agents-core.md +1 -2
- package/built-in-skills/claude-api/shared/managed-agents-events.md +41 -22
- package/built-in-skills/claude-api/shared/managed-agents-multiagent.md +5 -3
- package/built-in-skills/claude-api/shared/managed-agents-self-hosted-sandboxes.md +1 -1
- package/built-in-skills/claude-api/shared/managed-agents-tools.md +2 -3
- package/built-in-skills/claude-api/shared/model-migration.md +3 -3
- package/built-in-skills/claude-api/shared/models.md +1 -1
- package/built-in-skills/claude-api/typescript/claude-api/batches.md +1 -1
- package/built-in-skills/claude-api/typescript/claude-api/files-api.md +3 -1
- package/built-in-skills/claude-api/typescript/claude-api/tool-use.md +8 -2
- package/built-in-skills/claude-api/typescript/managed-agents/README.md +8 -2
- package/built-in-skills/codebase-design/DEEPENING.md +37 -0
- package/built-in-skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
- package/built-in-skills/codebase-design/LICENSE +21 -0
- package/built-in-skills/codebase-design/SKILL.md +130 -0
- package/built-in-skills/codebase-design/references/requesting-code-review/GUIDE.md +291 -0
- package/built-in-skills/codebase-design/references/requesting-code-review/LICENSE +21 -0
- package/built-in-skills/codebase-design/references/requesting-code-review/LICENSE.superpowers +21 -0
- package/built-in-skills/codebase-design/references/requesting-code-review/NOTICE.md +37 -0
- package/built-in-skills/codebase-design/references/sdlc-review/GUIDE.md +130 -0
- package/built-in-skills/codebase-design/references/sdlc-review/LICENSE +21 -0
- package/built-in-skills/codebase-design/references/sdlc-review/NOTICE.md +17 -0
- package/built-in-skills/codebase-design/references/simplify-code/GUIDE.md +269 -0
- package/built-in-skills/codebase-design/references/simplify-code/LICENSE +21 -0
- package/built-in-skills/codebase-design/references/simplify-code/NOTICE.md +37 -0
- package/built-in-skills/competitor-intelligence/LICENSE +21 -0
- package/built-in-skills/competitor-intelligence/NOTICE.md +6 -0
- package/built-in-skills/competitor-intelligence/SKILL.md +125 -0
- package/built-in-skills/competitor-intelligence/scripts/watch_state.py +160 -0
- package/built-in-skills/conversation-compaction/SKILL.md +117 -0
- package/built-in-skills/council-creator/SKILL.md +427 -0
- package/built-in-skills/diagnosing-bugs/LICENSE +21 -0
- package/built-in-skills/diagnosing-bugs/SKILL.md +148 -0
- package/built-in-skills/diagnosing-bugs/references/desktop-dom/GUIDE.md +64 -0
- package/built-in-skills/diagnosing-bugs/references/desktop-dom/LICENSE +21 -0
- package/built-in-skills/diagnosing-bugs/references/desktop-dom/NOTICE.md +17 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/GUIDE.md +410 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/LICENSE +21 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/LICENSE.superpowers +21 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/NOTICE.md +37 -0
- package/built-in-skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
- package/built-in-skills/doc-coauthoring/SKILL.md +7 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/GUIDE.md +647 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/LICENSE +21 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/LICENSE.hermes +21 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/PROVENANCE.md +7 -0
- package/built-in-skills/document-actions/LICENSE +21 -0
- package/built-in-skills/document-actions/NOTICE.md +21 -0
- package/built-in-skills/document-actions/SKILL.md +46 -0
- package/built-in-skills/domain-modeling/ADR-FORMAT.md +47 -0
- package/built-in-skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
- package/built-in-skills/domain-modeling/LICENSE +21 -0
- package/built-in-skills/domain-modeling/SKILL.md +76 -0
- package/built-in-skills/evidence-citations/LICENSE +21 -0
- package/built-in-skills/evidence-citations/NOTICE.md +21 -0
- package/built-in-skills/evidence-citations/SKILL.md +46 -0
- package/built-in-skills/evidence-citations/references/citation-formats.md +68 -0
- package/built-in-skills/evidence-citations/references/grounding-rationale.md +64 -0
- package/built-in-skills/evidence-citations/scripts/sources.py +720 -0
- package/built-in-skills/frontend-design/SKILL.md +7 -0
- package/built-in-skills/frontend-design/references/claude-design/GUIDE.md +650 -0
- package/built-in-skills/frontend-design/references/claude-design/LICENSE +21 -0
- package/built-in-skills/frontend-design/references/claude-design/LICENSE.hermes +21 -0
- package/built-in-skills/frontend-design/references/claude-design/PROVENANCE.md +7 -0
- package/built-in-skills/human-approval/SKILL.md +17 -2
- package/built-in-skills/image-generate/SKILL.md +107 -301
- package/built-in-skills/image-generate/scripts/generate-and-deliver.mjs +310 -0
- package/built-in-skills/ingest/SKILL.md +13 -45
- package/built-in-skills/internal-comms/SKILL.md +1 -0
- package/built-in-skills/liteparse/SKILL.md +130 -110
- package/built-in-skills/mcp-builder/SKILL.md +1 -0
- package/built-in-skills/mcp-builder/reference/evaluation.md +11 -2
- package/built-in-skills/mcp-builder/reference/node_mcp_server.md +34 -5
- package/built-in-skills/mcp-builder/reference/python_mcp_server.md +6 -2
- package/built-in-skills/mcp-builder/scripts/connections.py +1 -1
- package/built-in-skills/mcp-builder/scripts/evaluation.py +52 -34
- package/built-in-skills/mcp-builder/scripts/requirements.txt +2 -2
- package/built-in-skills/meeting-actions/LICENSE +21 -0
- package/built-in-skills/meeting-actions/NOTICE.md +21 -0
- package/built-in-skills/meeting-actions/SKILL.md +48 -0
- package/built-in-skills/memory/SKILL.md +444 -55
- package/built-in-skills/memory/references/llm-wiki/GUIDE.md +468 -0
- package/built-in-skills/memory/references/llm-wiki/LICENSE +21 -0
- package/built-in-skills/memory/references/llm-wiki/NOTICE.md +4 -0
- package/built-in-skills/memory/references/llm-wiki/scripts/lint_wiki.py +84 -0
- package/built-in-skills/memory/references/llm-wiki/scripts/requirements.txt +1 -0
- package/built-in-skills/memory/references/llm-wiki/templates/SCHEMA.md +19 -0
- package/built-in-skills/memory/references/llm-wiki/templates/index.md +9 -0
- package/built-in-skills/memory/references/llm-wiki/templates/log.md +4 -0
- package/built-in-skills/memory-dream/SKILL.md +332 -0
- package/built-in-skills/memory-import/SKILL.md +51 -0
- package/built-in-skills/office-artifacts/NOTICE.md +15 -0
- package/built-in-skills/office-artifacts/SKILL.md +37 -4
- package/built-in-skills/office-artifacts/references/RESOURCE-LIMITS.md +44 -0
- package/built-in-skills/office-artifacts/references/document-generation/GUIDE.md +105 -0
- package/built-in-skills/office-artifacts/references/docx/GUIDE.md +196 -0
- package/built-in-skills/office-artifacts/references/docx/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/docx/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/docx/references/revisions-and-comments.md +88 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_comments.py +292 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_common.py +93 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_create.py +177 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_edit.py +250 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_read.py +169 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_revisions.py +149 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_template.py +70 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_validate.py +155 -0
- package/built-in-skills/office-artifacts/references/docx/tests/test_docx_skill.py +525 -0
- package/built-in-skills/office-artifacts/references/pdf/GUIDE.md +125 -0
- package/built-in-skills/office-artifacts/references/pdf/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/pdf/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/pdf/references/forms.md +99 -0
- package/built-in-skills/office-artifacts/references/pdf/references/nano-pdf-editing.md +40 -0
- package/built-in-skills/office-artifacts/references/pdf/references/ocr-extraction.md +165 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/_raster.py +87 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/extract_marker.py +95 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/extract_pymupdf.py +107 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_create.py +153 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_fill_form.py +97 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_form_layout.py +168 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_make_form.py +145 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_merge.py +50 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_meta.py +123 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_page_image.py +101 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_read.py +153 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_secure.py +71 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_split.py +86 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_stamp.py +145 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_watermark.py +51 -0
- package/built-in-skills/office-artifacts/references/pdf/tests/test_pdf_skill.py +414 -0
- package/built-in-skills/office-artifacts/references/powerpoint/GUIDE.md +220 -0
- package/built-in-skills/office-artifacts/references/powerpoint/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/powerpoint/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_create.py +214 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_edit.py +442 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_from_template.py +88 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_read.py +131 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_render.py +104 -0
- package/built-in-skills/office-artifacts/references/powerpoint/tests/test_powerpoint_skill.py +478 -0
- package/built-in-skills/office-artifacts/references/xlsx/GUIDE.md +196 -0
- package/built-in-skills/office-artifacts/references/xlsx/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/xlsx/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/xlsx/references/restructuring.md +74 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/csv_to_xlsx.py +108 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_create.py +259 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_edit.py +269 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_read.py +160 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_recalc.py +111 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_restructure.py +418 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_to_csv.py +69 -0
- package/built-in-skills/office-artifacts/references/xlsx/tests/test_xlsx_skill.py +542 -0
- package/built-in-skills/office-artifacts/tests/test_resource_regressions.py +272 -0
- package/built-in-skills/okr/SKILL.md +154 -0
- package/built-in-skills/persona/SKILL.md +81 -0
- package/built-in-skills/persona-generator/SKILL.md +296 -0
- package/built-in-skills/pkf-svg/SKILL.md +258 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/GUIDE.md +148 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/LICENSE +21 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/LICENSE.hermes +21 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/PROVENANCE.md +7 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/templates/template.html +345 -0
- package/built-in-skills/pkf-writing/SKILL.md +258 -0
- package/built-in-skills/prismer-airtable/LICENSE +21 -0
- package/built-in-skills/prismer-airtable/NOTICE.md +11 -0
- package/built-in-skills/prismer-airtable/SKILL.md +248 -0
- package/built-in-skills/prismer-airtable/scripts/airtable_client.py +76 -0
- package/built-in-skills/prismer-apple-notes/LICENSE +21 -0
- package/built-in-skills/prismer-apple-notes/NOTICE.md +17 -0
- package/built-in-skills/prismer-apple-notes/SKILL.md +118 -0
- package/built-in-skills/prismer-apple-notes/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-apple-reminders/LICENSE +21 -0
- package/built-in-skills/prismer-apple-reminders/NOTICE.md +17 -0
- package/built-in-skills/prismer-apple-reminders/SKILL.md +155 -0
- package/built-in-skills/prismer-apple-reminders/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-ascii-video/LICENSE +21 -0
- package/built-in-skills/prismer-ascii-video/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-ascii-video/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-ascii-video/README.md +290 -0
- package/built-in-skills/prismer-ascii-video/SKILL.md +252 -0
- package/built-in-skills/prismer-ascii-video/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-ascii-video/references/architecture.md +807 -0
- package/built-in-skills/prismer-ascii-video/references/composition.md +900 -0
- package/built-in-skills/prismer-ascii-video/references/effects.md +1877 -0
- package/built-in-skills/prismer-ascii-video/references/inputs.md +693 -0
- package/built-in-skills/prismer-ascii-video/references/optimization.md +688 -0
- package/built-in-skills/prismer-ascii-video/references/scenes.md +1018 -0
- package/built-in-skills/prismer-ascii-video/references/shaders.md +1408 -0
- package/built-in-skills/prismer-ascii-video/references/troubleshooting.md +360 -0
- package/built-in-skills/prismer-baoyu-infographic/LICENSE +21 -0
- package/built-in-skills/prismer-baoyu-infographic/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-baoyu-infographic/LICENSE.origin +21 -0
- package/built-in-skills/prismer-baoyu-infographic/PORT_NOTES.md +37 -0
- package/built-in-skills/prismer-baoyu-infographic/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-baoyu-infographic/SKILL.md +240 -0
- package/built-in-skills/prismer-baoyu-infographic/references/analysis-framework.md +182 -0
- package/built-in-skills/prismer-baoyu-infographic/references/base-prompt.md +43 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/bento-grid.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/binary-comparison.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/bridge.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/circular-flow.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/comic-strip.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/comparison-matrix.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/dashboard.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/dense-modules.md +72 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/funnel.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/hierarchical-layers.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/hub-spoke.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/iceberg.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/isometric-map.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/jigsaw.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/linear-progression.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/periodic-table.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/story-mountain.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/structural-breakdown.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/tree-branching.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/venn-diagram.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/winding-roadmap.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/structured-content-template.md +244 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/aged-academia.md +36 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/bold-graphic.md +36 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/chalkboard.md +61 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/claymation.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/corporate-memphis.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/craft-handmade.md +44 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/cyberpunk-neon.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/hand-drawn-edu.md +63 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/ikea-manual.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/kawaii.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/knolling.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/lego-brick.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/morandi-journal.md +60 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/origami.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/pixel-art.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/pop-laboratory.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/retro-pop-grid.md +47 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/storybook-watercolor.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/subway-map.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/technical-schematic.md +36 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/ui-wireframe.md +29 -0
- package/built-in-skills/prismer-blocked-page-recovery/LICENSE +21 -0
- package/built-in-skills/prismer-blocked-page-recovery/NOTICE.md +17 -0
- package/built-in-skills/prismer-blocked-page-recovery/SKILL.md +158 -0
- package/built-in-skills/prismer-blocked-page-recovery/scripts/recover_page.py +311 -0
- package/built-in-skills/prismer-box/LICENSE +21 -0
- package/built-in-skills/prismer-box/NOTICE.md +11 -0
- package/built-in-skills/prismer-box/SKILL.md +147 -0
- package/built-in-skills/prismer-box/references/bulk-operations.md +43 -0
- package/built-in-skills/prismer-box/references/cli-guide.md +133 -0
- package/built-in-skills/prismer-box/references/content-workflows.md +86 -0
- package/built-in-skills/prismer-box/references/hubs.md +77 -0
- package/built-in-skills/prismer-box/references/oauth-setup.md +92 -0
- package/built-in-skills/prismer-box/references/rest-api.md +37 -0
- package/built-in-skills/prismer-box/references/sdk-development.md +85 -0
- package/built-in-skills/prismer-box/references/search-and-ai.md +147 -0
- package/built-in-skills/prismer-box/references/troubleshooting.md +33 -0
- package/built-in-skills/prismer-box/references/webhooks-and-events.md +43 -0
- package/built-in-skills/prismer-codebase-inspection/LICENSE +21 -0
- package/built-in-skills/prismer-codebase-inspection/NOTICE.md +17 -0
- package/built-in-skills/prismer-codebase-inspection/SKILL.md +141 -0
- package/built-in-skills/prismer-computer-use/LICENSE +21 -0
- package/built-in-skills/prismer-computer-use/NOTICE.md +17 -0
- package/built-in-skills/prismer-computer-use/SKILL.md +372 -0
- package/built-in-skills/prismer-design-md/LICENSE +21 -0
- package/built-in-skills/prismer-design-md/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-design-md/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-design-md/SKILL.md +227 -0
- package/built-in-skills/prismer-design-md/templates/starter.md +99 -0
- package/built-in-skills/prismer-email-inbox-triage/LICENSE +21 -0
- package/built-in-skills/prismer-email-inbox-triage/NOTICE.md +11 -0
- package/built-in-skills/prismer-email-inbox-triage/SKILL.md +116 -0
- package/built-in-skills/prismer-findmy/LICENSE +21 -0
- package/built-in-skills/prismer-findmy/NOTICE.md +17 -0
- package/built-in-skills/prismer-findmy/SKILL.md +150 -0
- package/built-in-skills/prismer-findmy/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-gif-search/LICENSE +21 -0
- package/built-in-skills/prismer-gif-search/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-gif-search/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-gif-search/SKILL.md +97 -0
- package/built-in-skills/prismer-gif-search/scripts/tenor.py +81 -0
- package/built-in-skills/prismer-github/LICENSE +21 -0
- package/built-in-skills/prismer-github/NOTICE.md +17 -0
- package/built-in-skills/prismer-github/SKILL.md +74 -0
- package/built-in-skills/prismer-github/references/auth.md +91 -0
- package/built-in-skills/prismer-github/references/ci-troubleshooting.md +193 -0
- package/built-in-skills/prismer-github/references/code-review.md +465 -0
- package/built-in-skills/prismer-github/references/conventional-commits.md +81 -0
- package/built-in-skills/prismer-github/references/github-api-cheatsheet.md +177 -0
- package/built-in-skills/prismer-github/references/issue-to-pr.md +74 -0
- package/built-in-skills/prismer-github/references/issues.md +336 -0
- package/built-in-skills/prismer-github/references/pr-workflow.md +346 -0
- package/built-in-skills/prismer-github/references/repo-management.md +484 -0
- package/built-in-skills/prismer-github/references/review-output-template.md +84 -0
- package/built-in-skills/prismer-github/scripts/ensure-gh.py +132 -0
- package/built-in-skills/prismer-github/scripts/gh-env.sh +25 -0
- package/built-in-skills/prismer-github/scripts/git-credential-token.py +68 -0
- package/built-in-skills/prismer-github/scripts/github-api.py +71 -0
- package/built-in-skills/prismer-github/scripts/github-context.py +28 -0
- package/built-in-skills/prismer-github/templates/bug-report.md +35 -0
- package/built-in-skills/prismer-github/templates/feature-request.md +31 -0
- package/built-in-skills/prismer-github/templates/pr-body-bugfix.md +35 -0
- package/built-in-skills/prismer-github/templates/pr-body-feature.md +33 -0
- package/built-in-skills/prismer-google-workspace/LICENSE +21 -0
- package/built-in-skills/prismer-google-workspace/NOTICE.md +11 -0
- package/built-in-skills/prismer-google-workspace/SKILL.md +369 -0
- package/built-in-skills/prismer-google-workspace/references/daily-brief.md +65 -0
- package/built-in-skills/prismer-google-workspace/references/gmail-search-syntax.md +63 -0
- package/built-in-skills/prismer-google-workspace/scripts/_hermes_home.py +17 -0
- package/built-in-skills/prismer-google-workspace/scripts/_private_state.py +39 -0
- package/built-in-skills/prismer-google-workspace/scripts/google_api.py +1339 -0
- package/built-in-skills/prismer-google-workspace/scripts/gws_bridge.py +121 -0
- package/built-in-skills/prismer-google-workspace/scripts/setup.py +563 -0
- package/built-in-skills/prismer-google-workspace/tests/test_productivity_regressions.py +214 -0
- package/built-in-skills/prismer-hermes-agent/LICENSE +21 -0
- package/built-in-skills/prismer-hermes-agent/NOTICE.md +17 -0
- package/built-in-skills/prismer-hermes-agent/SKILL.md +247 -0
- package/built-in-skills/prismer-hermes-agent/references/background-systems.md +108 -0
- package/built-in-skills/prismer-hermes-agent/references/cli-reference.md +158 -0
- package/built-in-skills/prismer-hermes-agent/references/configuration.md +96 -0
- package/built-in-skills/prismer-hermes-agent/references/contributor-guide.md +151 -0
- package/built-in-skills/prismer-hermes-agent/references/delegate-task-concurrency-diagnosis.md +47 -0
- package/built-in-skills/prismer-hermes-agent/references/desktop-plugins.md +215 -0
- package/built-in-skills/prismer-hermes-agent/references/native-mcp.md +351 -0
- package/built-in-skills/prismer-hermes-agent/references/petdex.md +82 -0
- package/built-in-skills/prismer-hermes-agent/references/portal-auth-for-third-party-apps.md +135 -0
- package/built-in-skills/prismer-hermes-agent/references/project-context-files.md +55 -0
- package/built-in-skills/prismer-hermes-agent/references/providers-and-models.md +81 -0
- package/built-in-skills/prismer-hermes-agent/references/security-privacy.md +73 -0
- package/built-in-skills/prismer-hermes-agent/references/slash-commands.md +119 -0
- package/built-in-skills/prismer-hermes-agent/references/themes.md +134 -0
- package/built-in-skills/prismer-hermes-agent/references/troubleshooting.md +87 -0
- package/built-in-skills/prismer-hermes-agent/references/tui-widgets.md +144 -0
- package/built-in-skills/prismer-hermes-agent/references/webhooks.md +219 -0
- package/built-in-skills/prismer-hermes-agent/references/windows-quirks.md +64 -0
- package/built-in-skills/prismer-hermes-agent/templates/clock.mjs +51 -0
- package/built-in-skills/prismer-hermes-agent/templates/plugin.js +97 -0
- package/built-in-skills/prismer-hermes-agent/templates/skin.yaml +49 -0
- package/built-in-skills/prismer-himalaya/LICENSE +21 -0
- package/built-in-skills/prismer-himalaya/NOTICE.md +11 -0
- package/built-in-skills/prismer-himalaya/SKILL.md +340 -0
- package/built-in-skills/prismer-himalaya/references/configuration.md +227 -0
- package/built-in-skills/prismer-himalaya/references/message-composition.md +206 -0
- package/built-in-skills/prismer-himalaya/scripts/compose_draft.py +48 -0
- package/built-in-skills/prismer-im-collab/SKILL.md +27 -7
- package/built-in-skills/prismer-imessage/LICENSE +21 -0
- package/built-in-skills/prismer-imessage/NOTICE.md +17 -0
- package/built-in-skills/prismer-imessage/SKILL.md +128 -0
- package/built-in-skills/prismer-imessage/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-manim-video/LICENSE +21 -0
- package/built-in-skills/prismer-manim-video/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-manim-video/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-manim-video/README.md +23 -0
- package/built-in-skills/prismer-manim-video/SKILL.md +279 -0
- package/built-in-skills/prismer-manim-video/references/animation-design-thinking.md +161 -0
- package/built-in-skills/prismer-manim-video/references/animations.md +282 -0
- package/built-in-skills/prismer-manim-video/references/camera-and-3d.md +135 -0
- package/built-in-skills/prismer-manim-video/references/decorations.md +202 -0
- package/built-in-skills/prismer-manim-video/references/equations.md +216 -0
- package/built-in-skills/prismer-manim-video/references/graphs-and-data.md +163 -0
- package/built-in-skills/prismer-manim-video/references/mobjects.md +333 -0
- package/built-in-skills/prismer-manim-video/references/paper-explainer.md +255 -0
- package/built-in-skills/prismer-manim-video/references/production-quality.md +190 -0
- package/built-in-skills/prismer-manim-video/references/rendering.md +187 -0
- package/built-in-skills/prismer-manim-video/references/scene-planning.md +118 -0
- package/built-in-skills/prismer-manim-video/references/troubleshooting.md +135 -0
- package/built-in-skills/prismer-manim-video/references/updaters-and-trackers.md +260 -0
- package/built-in-skills/prismer-manim-video/references/visual-design.md +124 -0
- package/built-in-skills/prismer-manim-video/scripts/setup.sh +15 -0
- package/built-in-skills/prismer-maps/LICENSE +21 -0
- package/built-in-skills/prismer-maps/NOTICE.md +11 -0
- package/built-in-skills/prismer-maps/SKILL.md +240 -0
- package/built-in-skills/prismer-maps/scripts/maps_client.py +1324 -0
- package/built-in-skills/prismer-node-inspect-debugger/LICENSE +21 -0
- package/built-in-skills/prismer-node-inspect-debugger/NOTICE.md +17 -0
- package/built-in-skills/prismer-node-inspect-debugger/SKILL.md +347 -0
- package/built-in-skills/prismer-notion/LICENSE +21 -0
- package/built-in-skills/prismer-notion/NOTICE.md +11 -0
- package/built-in-skills/prismer-notion/SKILL.md +495 -0
- package/built-in-skills/prismer-notion/references/block-types.md +112 -0
- package/built-in-skills/prismer-obsidian/LICENSE +21 -0
- package/built-in-skills/prismer-obsidian/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-obsidian/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-obsidian/SKILL.md +80 -0
- package/built-in-skills/prismer-obsidian/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-obsidian/scripts/write_note.py +84 -0
- package/built-in-skills/prismer-p5js/LICENSE +21 -0
- package/built-in-skills/prismer-p5js/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-p5js/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-p5js/README.md +64 -0
- package/built-in-skills/prismer-p5js/SKILL.md +574 -0
- package/built-in-skills/prismer-p5js/references/animation.md +439 -0
- package/built-in-skills/prismer-p5js/references/color-systems.md +355 -0
- package/built-in-skills/prismer-p5js/references/core-api.md +410 -0
- package/built-in-skills/prismer-p5js/references/export-pipeline.md +534 -0
- package/built-in-skills/prismer-p5js/references/interaction.md +398 -0
- package/built-in-skills/prismer-p5js/references/shapes-and-geometry.md +300 -0
- package/built-in-skills/prismer-p5js/references/troubleshooting.md +532 -0
- package/built-in-skills/prismer-p5js/references/typography.md +302 -0
- package/built-in-skills/prismer-p5js/references/visual-effects.md +905 -0
- package/built-in-skills/prismer-p5js/references/webgl-and-3d.md +423 -0
- package/built-in-skills/prismer-p5js/scripts/export-frames.js +91 -0
- package/built-in-skills/prismer-p5js/scripts/render.sh +113 -0
- package/built-in-skills/prismer-p5js/scripts/serve.sh +25 -0
- package/built-in-skills/prismer-p5js/scripts/setup.sh +87 -0
- package/built-in-skills/prismer-p5js/templates/viewer.html +401 -0
- package/built-in-skills/prismer-popular-web-designs/LICENSE +21 -0
- package/built-in-skills/prismer-popular-web-designs/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-popular-web-designs/LICENSE.origin +21 -0
- package/built-in-skills/prismer-popular-web-designs/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-popular-web-designs/SKILL.md +218 -0
- package/built-in-skills/prismer-popular-web-designs/templates/airbnb.md +259 -0
- package/built-in-skills/prismer-popular-web-designs/templates/airtable.md +102 -0
- package/built-in-skills/prismer-popular-web-designs/templates/apple.md +326 -0
- package/built-in-skills/prismer-popular-web-designs/templates/bmw.md +193 -0
- package/built-in-skills/prismer-popular-web-designs/templates/cal.md +272 -0
- package/built-in-skills/prismer-popular-web-designs/templates/claude.md +325 -0
- package/built-in-skills/prismer-popular-web-designs/templates/clay.md +317 -0
- package/built-in-skills/prismer-popular-web-designs/templates/clickhouse.md +294 -0
- package/built-in-skills/prismer-popular-web-designs/templates/cohere.md +279 -0
- package/built-in-skills/prismer-popular-web-designs/templates/coinbase.md +142 -0
- package/built-in-skills/prismer-popular-web-designs/templates/composio.md +320 -0
- package/built-in-skills/prismer-popular-web-designs/templates/cursor.md +322 -0
- package/built-in-skills/prismer-popular-web-designs/templates/elevenlabs.md +278 -0
- package/built-in-skills/prismer-popular-web-designs/templates/expo.md +294 -0
- package/built-in-skills/prismer-popular-web-designs/templates/figma.md +233 -0
- package/built-in-skills/prismer-popular-web-designs/templates/framer.md +259 -0
- package/built-in-skills/prismer-popular-web-designs/templates/hashicorp.md +291 -0
- package/built-in-skills/prismer-popular-web-designs/templates/ibm.md +345 -0
- package/built-in-skills/prismer-popular-web-designs/templates/intercom.md +159 -0
- package/built-in-skills/prismer-popular-web-designs/templates/kraken.md +138 -0
- package/built-in-skills/prismer-popular-web-designs/templates/linear.app.md +380 -0
- package/built-in-skills/prismer-popular-web-designs/templates/lovable.md +311 -0
- package/built-in-skills/prismer-popular-web-designs/templates/minimax.md +270 -0
- package/built-in-skills/prismer-popular-web-designs/templates/mintlify.md +339 -0
- package/built-in-skills/prismer-popular-web-designs/templates/miro.md +121 -0
- package/built-in-skills/prismer-popular-web-designs/templates/mistral.ai.md +274 -0
- package/built-in-skills/prismer-popular-web-designs/templates/mongodb.md +279 -0
- package/built-in-skills/prismer-popular-web-designs/templates/notion.md +322 -0
- package/built-in-skills/prismer-popular-web-designs/templates/nvidia.md +306 -0
- package/built-in-skills/prismer-popular-web-designs/templates/ollama.md +280 -0
- package/built-in-skills/prismer-popular-web-designs/templates/opencode.ai.md +294 -0
- package/built-in-skills/prismer-popular-web-designs/templates/pinterest.md +243 -0
- package/built-in-skills/prismer-popular-web-designs/templates/posthog.md +269 -0
- package/built-in-skills/prismer-popular-web-designs/templates/raycast.md +281 -0
- package/built-in-skills/prismer-popular-web-designs/templates/replicate.md +274 -0
- package/built-in-skills/prismer-popular-web-designs/templates/resend.md +316 -0
- package/built-in-skills/prismer-popular-web-designs/templates/revolut.md +198 -0
- package/built-in-skills/prismer-popular-web-designs/templates/runwayml.md +257 -0
- package/built-in-skills/prismer-popular-web-designs/templates/sanity.md +370 -0
- package/built-in-skills/prismer-popular-web-designs/templates/sentry.md +275 -0
- package/built-in-skills/prismer-popular-web-designs/templates/spacex.md +207 -0
- package/built-in-skills/prismer-popular-web-designs/templates/spotify.md +259 -0
- package/built-in-skills/prismer-popular-web-designs/templates/stripe.md +335 -0
- package/built-in-skills/prismer-popular-web-designs/templates/supabase.md +268 -0
- package/built-in-skills/prismer-popular-web-designs/templates/superhuman.md +265 -0
- package/built-in-skills/prismer-popular-web-designs/templates/together.ai.md +276 -0
- package/built-in-skills/prismer-popular-web-designs/templates/uber.md +308 -0
- package/built-in-skills/prismer-popular-web-designs/templates/vercel.md +323 -0
- package/built-in-skills/prismer-popular-web-designs/templates/voltagent.md +336 -0
- package/built-in-skills/prismer-popular-web-designs/templates/warp.md +266 -0
- package/built-in-skills/prismer-popular-web-designs/templates/webflow.md +105 -0
- package/built-in-skills/prismer-popular-web-designs/templates/wise.md +186 -0
- package/built-in-skills/prismer-popular-web-designs/templates/x.ai.md +270 -0
- package/built-in-skills/prismer-popular-web-designs/templates/zapier.md +341 -0
- package/built-in-skills/prismer-product-price-monitor/LICENSE +21 -0
- package/built-in-skills/prismer-product-price-monitor/NOTICE.md +11 -0
- package/built-in-skills/prismer-product-price-monitor/SKILL.md +97 -0
- package/built-in-skills/prismer-product-price-monitor/scripts/watch_state.py +116 -0
- package/built-in-skills/prismer-python-debugpy/LICENSE +21 -0
- package/built-in-skills/prismer-python-debugpy/NOTICE.md +17 -0
- package/built-in-skills/prismer-python-debugpy/SKILL.md +377 -0
- package/built-in-skills/prismer-python-debugpy/scripts/dap_client.py +68 -0
- package/built-in-skills/prismer-songsee/LICENSE +21 -0
- package/built-in-skills/prismer-songsee/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-songsee/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-songsee/SKILL.md +91 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/LICENSE +21 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/SKILL.md +317 -0
- package/built-in-skills/prismer-spike/LICENSE +21 -0
- package/built-in-skills/prismer-spike/LICENSE.gsd +21 -0
- package/built-in-skills/prismer-spike/NOTICE.md +17 -0
- package/built-in-skills/prismer-spike/SKILL.md +212 -0
- package/built-in-skills/prismer-teams-meeting-pipeline/LICENSE +21 -0
- package/built-in-skills/prismer-teams-meeting-pipeline/NOTICE.md +11 -0
- package/built-in-skills/prismer-teams-meeting-pipeline/SKILL.md +156 -0
- package/built-in-skills/prismer-xurl/LICENSE +21 -0
- package/built-in-skills/prismer-xurl/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-xurl/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-xurl/SKILL.md +444 -0
- package/built-in-skills/prismer-xurl/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-youtube-content/LICENSE +21 -0
- package/built-in-skills/prismer-youtube-content/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-youtube-content/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-youtube-content/SKILL.md +86 -0
- package/built-in-skills/prismer-youtube-content/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-youtube-content/references/output-formats.md +56 -0
- package/built-in-skills/prismer-youtube-content/scripts/fetch_transcript.py +146 -0
- package/built-in-skills/proactivity/SKILL.md +84 -0
- package/built-in-skills/remotion/SKILL.md +431 -0
- package/built-in-skills/research-arxiv/LICENSE +21 -0
- package/built-in-skills/research-arxiv/NOTICE.md +4 -0
- package/built-in-skills/research-arxiv/SKILL.md +263 -0
- package/built-in-skills/research-arxiv/scripts/search_arxiv.py +111 -0
- package/built-in-skills/role-builder/SKILL.md +209 -0
- package/built-in-skills/role-builder/scripts/author-role.mjs +350 -0
- package/built-in-skills/role-builder/scripts/ingest-role.mjs +121 -0
- package/built-in-skills/role-builder/scripts/instantiate-and-run.mjs +304 -0
- package/built-in-skills/role-builder/scripts/operation-harness.mjs +269 -0
- package/built-in-skills/skill-creator/LICENSE.prismer +21 -0
- package/built-in-skills/skill-creator/NOTICE.md +18 -0
- package/built-in-skills/skill-creator/SKILL.md +182 -421
- package/built-in-skills/skill-creator/eval-viewer/generate_review.py +20 -31
- package/built-in-skills/skill-creator/eval-viewer/viewer.html +35 -23
- package/built-in-skills/skill-creator/references/external-library-import.md +110 -0
- package/built-in-skills/skill-creator/references/hermes-agent-skill-authoring/GUIDE.md +220 -0
- package/built-in-skills/skill-creator/references/hermes-agent-skill-authoring/LICENSE +21 -0
- package/built-in-skills/skill-creator/references/skill-authoring/GUIDE.md +134 -0
- package/built-in-skills/{skill-authoring/skill.json → skill-creator/references/skill-authoring/draft-contract.json} +3 -3
- package/built-in-skills/skill-creator/references/skill-builder/GUIDE.md +167 -0
- package/built-in-skills/skill-creator/references/skill-builder/scripts/ingest.mjs +93 -0
- package/built-in-skills/skill-creator/scripts/aggregate_benchmark.py +3 -2
- package/built-in-skills/skill-creator/scripts/import-library.mjs +498 -0
- package/built-in-skills/skill-creator/scripts/improve_description.py +14 -16
- package/built-in-skills/skill-creator/scripts/package_skill.py +16 -9
- package/built-in-skills/skill-creator/scripts/quick_validate.py +22 -5
- package/built-in-skills/skill-creator/scripts/run_eval.py +63 -144
- package/built-in-skills/skill-creator/scripts/run_loop.py +24 -16
- package/built-in-skills/slack-gif-creator/SKILL.md +20 -0
- package/built-in-skills/slack-gif-creator/core/gif_builder.py +13 -2
- package/built-in-skills/slack-gif-creator/core/validators.py +17 -7
- package/built-in-skills/tasks/SKILL.md +39 -24
- package/built-in-skills/tdd/LICENSE +21 -0
- package/built-in-skills/tdd/SKILL.md +117 -0
- package/built-in-skills/tdd/mocking.md +59 -0
- package/built-in-skills/tdd/refactoring.md +10 -0
- package/built-in-skills/tdd/references/test-driven-development/GUIDE.md +356 -0
- package/built-in-skills/tdd/references/test-driven-development/LICENSE +21 -0
- package/built-in-skills/tdd/references/test-driven-development/LICENSE.superpowers +21 -0
- package/built-in-skills/tdd/references/test-driven-development/NOTICE.md +37 -0
- package/built-in-skills/tdd/tests.md +61 -0
- package/built-in-skills/team/SKILL.md +3 -2
- package/built-in-skills/web-artifacts-builder/SKILL.md +4 -3
- package/built-in-skills/web-artifacts-builder/scripts/bundle-artifact.sh +9 -7
- package/built-in-skills/web-artifacts-builder/scripts/init-artifact.sh +28 -55
- package/built-in-skills/webapp-qa/LICENSE +21 -0
- package/built-in-skills/webapp-qa/NOTICE.md +37 -0
- package/built-in-skills/webapp-qa/SKILL.md +41 -0
- package/built-in-skills/webapp-qa/references/dogfood/GUIDE.md +161 -0
- package/built-in-skills/webapp-qa/references/issue-taxonomy.md +109 -0
- package/built-in-skills/webapp-qa/templates/dogfood-report-template.md +86 -0
- package/built-in-skills/webapp-testing/SKILL.md +10 -2
- package/built-in-skills/webapp-testing/examples/console_logging.py +10 -4
- package/built-in-skills/webapp-testing/examples/element_discovery.py +11 -4
- package/built-in-skills/webapp-testing/examples/static_html_automation.py +14 -9
- package/built-in-skills/webapp-testing/scripts/with_server.py +34 -10
- package/built-in-skills/wechat-pay/SKILL.md +59 -0
- package/built-in-skills/weekly-review/LICENSE +21 -0
- package/built-in-skills/weekly-review/NOTICE.md +21 -0
- package/built-in-skills/weekly-review/SKILL.md +49 -0
- package/components/eaas-pi-components.manifest.json +37 -0
- package/dist/cli.cjs +75799 -20210
- package/dist/cli.js +75900 -20248
- package/dist/index.cjs +76159 -20082
- package/dist/index.d.cts +4766 -766
- package/dist/index.d.ts +4766 -766
- package/dist/index.js +76040 -19960
- package/package.json +42 -6
- package/plugins/memory/prismer/__init__.py +1215 -0
- package/plugins/memory/prismer/plugin.yaml +8 -0
- package/plugins/memory/prismer/tool-schemas.generated.json +257 -0
- package/plugins/tools/prismer-recall/__init__.py +282 -0
- package/plugins/tools/prismer-recall/plugin.yaml +15 -0
- package/built-in-skills/memory-curation/SKILL.md +0 -135
- package/built-in-skills/skill-authoring/SKILL.md +0 -124
- package/built-in-skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
|
@@ -1,156 +1,176 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: liteparse
|
|
3
|
-
|
|
3
|
+
scope: common
|
|
4
|
+
description: "Parse local document files into LLM-ready content on the daemon itself — PDFs → Markdown / structured JSON (with bounding boxes) / page screenshots via the bundled `lit` CLI. PDF works out of the box, offline, zero external deps (Tesseract + PDFium are bundled): digital PDFs use a near-instant native text path (`--no-ocr`), scanned PDFs fall back to bundled OCR. Image files (PNG/JPG) additionally need ImageMagick, and Office files (DOCX/XLSX/PPTX) need LibreOffice — install those on demand only when required. Use whenever the user attaches or points to a local file that must be read before reasoning, or asks to extract text / tables / page images from a file on disk. For web URLs and search, use the `ingest` skill instead."
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# LiteParse (local-first document parsing)
|
|
7
8
|
|
|
8
|
-
LiteParse
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
LiteParse turns document files into text the model can read — **on the
|
|
10
|
+
daemon machine, offline, zero cloud dependency**. It ships as the
|
|
11
|
+
`@llamaindex/liteparse` npm package (CLI: `lit`) with **PDFium and
|
|
12
|
+
Tesseract bundled inside the package** — the digital-PDF and scanned-OCR
|
|
13
|
+
paths need no external system dependencies.
|
|
12
14
|
|
|
13
15
|
> Upstream: [`run-llama/liteparse`](https://github.com/run-llama/liteparse)
|
|
14
16
|
> + skill [`run-llama/llamaparse-agent-skills`](https://github.com/run-llama/llamaparse-agent-skills/blob/main/skills/liteparse/SKILL.md).
|
|
15
17
|
> Apache-2.0 (core) / MIT (skill), © LlamaIndex. Vendored as a Prismer
|
|
16
|
-
> built-in
|
|
18
|
+
> built-in.
|
|
17
19
|
|
|
18
|
-
##
|
|
20
|
+
## Capability tiers — what works where
|
|
21
|
+
|
|
22
|
+
| Tier | Inputs | External dep | Status |
|
|
23
|
+
| --- | --- | --- | --- |
|
|
24
|
+
| **1 — PDF** | digital + scanned PDF | **none** (Tesseract + PDFium bundled) | **Default, out of the box** — `lit` is baked into the daemon image |
|
|
25
|
+
| **2 — Images** | PNG / JPG / TIFF / … | **ImageMagick** | Install on demand |
|
|
26
|
+
| **3 — Office** | DOCX / XLSX / PPTX / ODT | **LibreOffice** (~1GB) | Install on demand |
|
|
27
|
+
|
|
28
|
+
Only Tier 1 is guaranteed present. Tiers 2 and 3 pull large system
|
|
29
|
+
dependencies that are **deliberately not baked into the daemon image** —
|
|
30
|
+
install them yourself, only when the actual input requires it (see
|
|
31
|
+
below). Do not assume they are already installed.
|
|
19
32
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
Markdown / JSON / screenshots, fully offline, zero cost, zero cloud.
|
|
24
|
-
Covers PDF, Word, PowerPoint, spreadsheets, images. Built-in
|
|
25
|
-
Tesseract OCR for clean scans; LibreOffice for Office formats.
|
|
26
|
-
**Default for**: files already on disk, offline / cloud-unreachable
|
|
27
|
-
situations, digital PDFs, quick extraction, bounding boxes, page
|
|
28
|
-
screenshots.
|
|
29
|
-
- **`ingest` (sibling skill) — cloud-backed.** `cloud load` / `cloud
|
|
30
|
-
search` for **web URLs** (HQCC compression) and `cloud parse` for
|
|
31
|
-
**hi-res OCR** of scans / handwriting / dense tables. **Use when**:
|
|
32
|
-
the source is a web page (liteparse can't fetch URLs), or local
|
|
33
|
-
parsing quality is insufficient (dense tables, multi-column,
|
|
34
|
-
handwriting, low-quality scans).
|
|
35
|
-
|
|
36
|
-
Decision rule: **local file → try `liteparse` first** (free, offline,
|
|
37
|
-
fast). Escalate to `ingest`'s `cloud parse -m hires` only when local
|
|
38
|
-
fidelity falls short. **Web URL / search → `ingest`** (liteparse parses
|
|
39
|
-
local files and stdin, not remote pages — if you only have a URL,
|
|
40
|
-
`curl -sL <url> -o file` then parse the local copy, or route to
|
|
41
|
-
`ingest`).
|
|
42
|
-
|
|
43
|
-
When local parsing is low-confidence (empty pages, garbled OCR),
|
|
44
|
-
**flag the region** and consider escalating to `ingest`; never invent
|
|
45
|
-
content.
|
|
46
|
-
|
|
47
|
-
## First-use install (self-bootstrapping)
|
|
48
|
-
|
|
49
|
-
The `lit` CLI ships via npm/pip/cargo (same CLI). Check, then install if
|
|
50
|
-
missing. Do this once per environment, quietly.
|
|
33
|
+
## Tier 1 — PDF (default, ready to use)
|
|
34
|
+
|
|
35
|
+
`lit` is available on the daemon. Sanity-check once, quietly:
|
|
51
36
|
|
|
52
37
|
```bash
|
|
53
|
-
|
|
54
|
-
command -v lit && lit --version && echo "lit ready" || {
|
|
55
|
-
# 2. Install the CLI
|
|
56
|
-
npm i -g @llamaindex/liteparse && lit --version
|
|
57
|
-
}
|
|
38
|
+
command -v lit && lit --version # baked into the image
|
|
58
39
|
```
|
|
59
40
|
|
|
60
|
-
|
|
61
|
-
|
|
41
|
+
If (and only if) it is somehow missing, install the package locally — it
|
|
42
|
+
is ~38MB with the OCR/render binaries bundled and installs in a few
|
|
43
|
+
seconds:
|
|
62
44
|
|
|
63
45
|
```bash
|
|
64
|
-
|
|
65
|
-
brew install --cask libreoffice # macOS
|
|
66
|
-
apt-get install -y libreoffice # Debian/Ubuntu (daemon image)
|
|
67
|
-
|
|
68
|
-
# ImageMagick — required for some image formats
|
|
69
|
-
brew install imagemagick # macOS
|
|
70
|
-
apt-get install -y imagemagick # Debian/Ubuntu
|
|
46
|
+
npm i @llamaindex/liteparse && npx lit --version
|
|
71
47
|
```
|
|
72
48
|
|
|
73
|
-
|
|
74
|
-
|
|
49
|
+
> Do **not** rely on the CLI "self-installing on first use" — that path
|
|
50
|
+
> is unreliable (npm permission / cache conflicts). Either it is baked
|
|
51
|
+
> in, or you install the package explicitly as above.
|
|
75
52
|
|
|
76
|
-
|
|
53
|
+
### Native text path vs OCR — pick deliberately, cost differs ~10×
|
|
77
54
|
|
|
78
|
-
|
|
55
|
+
- **Digital PDF (has an embedded text layer): use `--no-ocr`.** PDFium
|
|
56
|
+
extracts the text directly — **near-instant (~0.35s/page)**, no OCR.
|
|
57
|
+
This is the fast, cheap path; prefer it whenever the PDF is
|
|
58
|
+
computer-generated.
|
|
59
|
+
- **Scanned / image-only PDF: leave OCR on (default).** The bundled
|
|
60
|
+
Tesseract OCRs each page — **~5s/page**, an order of magnitude slower.
|
|
61
|
+
Only pay this when there is no real text layer.
|
|
62
|
+
|
|
63
|
+
If unsure which kind you have, run `--no-ocr` first: empty/garbled output
|
|
64
|
+
means it's a scan → re-run without `--no-ocr` to OCR it.
|
|
79
65
|
|
|
80
66
|
```bash
|
|
81
|
-
lit parse
|
|
82
|
-
lit parse
|
|
83
|
-
lit parse
|
|
84
|
-
lit parse
|
|
85
|
-
lit parse
|
|
86
|
-
lit parse scan.pdf --ocr-language eng+chi_sim # Tesseract lang codes
|
|
87
|
-
lit parse secured.pdf --password '****' # encrypted docs
|
|
88
|
-
curl -sL https://example.com/report.pdf | lit parse - # stdin (download-then-parse)
|
|
67
|
+
lit parse report.pdf --no-ocr # digital PDF → fast native text
|
|
68
|
+
lit parse scan.pdf # scanned PDF → bundled OCR
|
|
69
|
+
lit parse report.pdf --format markdown -o out.md # Markdown output to a file
|
|
70
|
+
lit parse report.pdf --format json -o out.json # structured JSON + bounding boxes
|
|
71
|
+
lit parse report.pdf --target-pages "1-5,10,15-20" # page subset (huge speedup on OCR path)
|
|
89
72
|
```
|
|
90
73
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
<
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
`-q/--quiet`.
|
|
74
|
+
`--format` accepts `markdown` (default) or `json` (adds per-block
|
|
75
|
+
bounding boxes). Other useful flags: `-o/--output`, `--target-pages
|
|
76
|
+
"1-5,10"`, `--dpi <n>` (render DPI, default 150 — bump to 300 for small
|
|
77
|
+
scanned text), `--ocr-language eng+chi_sim` (Tesseract lang codes for the
|
|
78
|
+
OCR path), `--password '****'` (encrypted PDFs), `-q/--quiet`.
|
|
97
79
|
|
|
98
|
-
###
|
|
80
|
+
### Page screenshots (for figures/charts text can't capture)
|
|
99
81
|
|
|
100
82
|
```bash
|
|
101
|
-
lit
|
|
102
|
-
lit
|
|
83
|
+
lit screenshot report.pdf -o ./shots # all pages → PNG
|
|
84
|
+
lit screenshot report.pdf --target-pages "1,3,5" -o ./shots
|
|
85
|
+
lit screenshot report.pdf --dpi 300 -o ./shots # high-res
|
|
103
86
|
```
|
|
104
87
|
|
|
105
|
-
|
|
88
|
+
## Tier 2 — Image files (install ImageMagick on demand)
|
|
89
|
+
|
|
90
|
+
Parsing standalone image files (PNG/JPG/TIFF/…) needs **ImageMagick**,
|
|
91
|
+
which is not in the daemon image. Install it the first time you actually
|
|
92
|
+
have an image input:
|
|
106
93
|
|
|
107
94
|
```bash
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
lit
|
|
95
|
+
apt-get update && apt-get install -y imagemagick # Debian/Ubuntu (daemon image)
|
|
96
|
+
brew install imagemagick # macOS (local dev)
|
|
97
|
+
lit parse diagram.png --format markdown
|
|
111
98
|
```
|
|
112
99
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
100
|
+
If ImageMagick can't be installed (no network / no apt), report
|
|
101
|
+
`ImageMagick unavailable` and stop — don't fabricate the image's contents.
|
|
102
|
+
|
|
103
|
+
## Tier 3 — Office documents (install LibreOffice on demand)
|
|
104
|
+
|
|
105
|
+
DOCX / XLSX / PPTX / ODT conversion needs **LibreOffice (~1GB)**, which is
|
|
106
|
+
**intentionally not baked into the daemon image**. Install it only when
|
|
107
|
+
you genuinely need to parse an Office file (it's a big download — don't do
|
|
108
|
+
it speculatively):
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
apt-get update && apt-get install -y libreoffice # Debian/Ubuntu (daemon image)
|
|
112
|
+
brew install --cask libreoffice # macOS (local dev)
|
|
113
|
+
lit parse deck.pptx --format markdown
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
If LibreOffice can't be installed, say so and ask the user for a PDF
|
|
117
|
+
export of the document instead of guessing.
|
|
118
|
+
|
|
119
|
+
> A shared **cloud parse service for heavy formats** (offloading Office /
|
|
120
|
+
> hi-res OCR to a hosted backend so agents don't install 1GB deps) is a
|
|
121
|
+
> future TODO — it is **not** running today. Don't route to a cloud OCR
|
|
122
|
+
> endpoint.
|
|
123
|
+
|
|
124
|
+
## Scope — liteparse vs `ingest`
|
|
125
|
+
|
|
126
|
+
Two skills, clean split by **source location**:
|
|
127
|
+
|
|
128
|
+
- **`liteparse` (this skill)** — **local files on disk.** PDF / image /
|
|
129
|
+
Office files already on the machine → Markdown / JSON / screenshots,
|
|
130
|
+
fully offline. This is the only local document-parsing path.
|
|
131
|
+
- **`ingest` (sibling skill)** — **web URLs and search.** `cloud load` /
|
|
132
|
+
`cloud search` fetch and compress remote pages. `liteparse` cannot
|
|
133
|
+
fetch URLs; if you only have a URL, either `curl -sL <url> -o file`
|
|
134
|
+
then parse the local copy with `liteparse`, or route to `ingest`.
|
|
135
|
+
|
|
136
|
+
Decision rule: **local file → `liteparse`. Web page / search → `ingest`.**
|
|
116
137
|
|
|
117
138
|
## Workflow
|
|
118
139
|
|
|
119
|
-
1. **Locate the file.**
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
- Need
|
|
129
|
-
|
|
130
|
-
-
|
|
131
|
-
|
|
132
|
-
3. **Read the result as source of truth.** Base extraction/summary
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
`
|
|
138
|
-
|
|
139
|
-
SKILL.md §Delivery contract for the full delivery rules.
|
|
140
|
+
1. **Locate the file.** Workspace asset → resolve its local path (see the
|
|
141
|
+
`assets` skill). URL-only → `curl -sL <url> -o <name>` first, then
|
|
142
|
+
parse the local copy (or use `ingest`).
|
|
143
|
+
2. **Pick the path by input type + kind.**
|
|
144
|
+
- PDF, computer-generated → `lit parse <f> --no-ocr` (fast native).
|
|
145
|
+
- PDF, scanned/image-only → `lit parse <f>` (OCR); set
|
|
146
|
+
`--ocr-language`, bump `--dpi 300` for small text, and use
|
|
147
|
+
`--target-pages` to avoid OCR'ing pages you don't need.
|
|
148
|
+
- Need spatial structure / table coordinates → `--format json`.
|
|
149
|
+
- Need to *see* a chart/figure/signature → `lit screenshot`, then read
|
|
150
|
+
the PNG.
|
|
151
|
+
- Image file → install ImageMagick (Tier 2), then parse.
|
|
152
|
+
- Office file → install LibreOffice (Tier 3), then parse.
|
|
153
|
+
3. **Read the result as source of truth.** Base extraction/summary only on
|
|
154
|
+
what `lit` returned. Empty or low-confidence page → say so; never guess.
|
|
155
|
+
4. **Deliver products** only when the user requests the parse output as a
|
|
156
|
+
file. Write the requested final file into `$PRISMER_ARTIFACTS_DIR`, then
|
|
157
|
+
explicitly run `cloud deliver <abs-path>` for the current reply or
|
|
158
|
+
`cloud task attach <abs-path>` for a task. Auto-scan is OFF; writing the
|
|
159
|
+
file alone is not delivery. See `office-artifacts` SKILL.md §Delivery contract.
|
|
140
160
|
|
|
141
161
|
## Output reporting
|
|
142
162
|
|
|
143
|
-
- After a parse: `Parsed <filename>: <N> pages, format=<
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
- After screenshots: `Rendered <N> page screenshot(s) → <dir>` and read
|
|
163
|
+
- After a parse: `Parsed <filename>: <N> pages, format=<markdown|json>,
|
|
164
|
+
path=<native|ocr>` — then answer the user's actual question, citing page
|
|
165
|
+
numbers. Don't dump the whole parsed body into chat unless asked.
|
|
166
|
+
- After screenshots: `Rendered <N> page screenshot(s) → <dir>`, then read
|
|
148
167
|
the relevant ones.
|
|
149
168
|
|
|
150
169
|
## HARD RULE — never claim a parse you didn't run
|
|
151
170
|
|
|
152
171
|
Forbidden unless `lit` actually ran with exit 0 and produced output:
|
|
153
|
-
"parsed the document", "the PDF says…", "extracted the table". If `lit`
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
172
|
+
"parsed the document", "the PDF says…", "extracted the table". If `lit` is
|
|
173
|
+
unavailable, a required dependency (ImageMagick / LibreOffice) can't be
|
|
174
|
+
installed, or the parse failed, completion text must start with `无法解析
|
|
175
|
+
文档 (reason)` / `Cannot parse document (reason)` — do not substitute
|
|
176
|
+
guessed content.
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mcp-builder
|
|
3
|
+
scope: coding
|
|
3
4
|
description: Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
|
|
4
5
|
license: Complete terms in LICENSE.txt
|
|
5
6
|
---
|
|
@@ -389,7 +389,7 @@ After creating your evaluation file, you can use the provided evaluation harness
|
|
|
389
389
|
|
|
390
390
|
Or install manually:
|
|
391
391
|
```bash
|
|
392
|
-
pip install anthropic mcp
|
|
392
|
+
pip install 'anthropic>=0.39,<2' 'mcp>=1.9,<2'
|
|
393
393
|
```
|
|
394
394
|
|
|
395
395
|
2. **Set API Key**
|
|
@@ -400,6 +400,15 @@ After creating your evaluation file, you can use the provided evaluation harness
|
|
|
400
400
|
|
|
401
401
|
## Evaluation File Format
|
|
402
402
|
|
|
403
|
+
Every invocation below must additionally supply `--model "$ANTHROPIC_MODEL"`
|
|
404
|
+
and one or more `--allow-tool <reviewed-read-only-tool-name>` options. The
|
|
405
|
+
harness refuses implicit all-tool access. Review the stdio command before
|
|
406
|
+
starting it; a tool's `readOnlyHint` is not an authorization boundary. Use a
|
|
407
|
+
read-only test principal, never a production write-capable credential. Each
|
|
408
|
+
task has a 600s limit, at most 20 tool turns, and 60s per tool/model request.
|
|
409
|
+
Do not place secrets in `-H` or `-e` arguments; inherit stdio credentials from
|
|
410
|
+
the environment or use a local, non-secret test endpoint.
|
|
411
|
+
|
|
403
412
|
Evaluation files use XML format with `<qa_pair>` elements:
|
|
404
413
|
|
|
405
414
|
```xml
|
|
@@ -599,4 +608,4 @@ If tasks are timing out:
|
|
|
599
608
|
- Use a more capable model (e.g., `claude-3-7-sonnet-20250219`)
|
|
600
609
|
- Check if tools are returning too much data
|
|
601
610
|
- Verify pagination is working correctly
|
|
602
|
-
- Consider simplifying complex questions
|
|
611
|
+
- Consider simplifying complex questions
|
|
@@ -544,11 +544,13 @@ async function getUser(id: string): Promise<any> {
|
|
|
544
544
|
"node": ">=18"
|
|
545
545
|
},
|
|
546
546
|
"dependencies": {
|
|
547
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
547
|
+
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
548
|
+
"express": "^4.21.2",
|
|
548
549
|
"axios": "^1.7.9",
|
|
549
550
|
"zod": "^3.23.8"
|
|
550
551
|
},
|
|
551
552
|
"devDependencies": {
|
|
553
|
+
"@types/express": "^4.17.21",
|
|
552
554
|
"@types/node": "^22.10.0",
|
|
553
555
|
"tsx": "^4.19.2",
|
|
554
556
|
"typescript": "^5.7.2"
|
|
@@ -596,6 +598,8 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
596
598
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
597
599
|
import { z } from "zod";
|
|
598
600
|
import axios, { AxiosError } from "axios";
|
|
601
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
602
|
+
import express from "express";
|
|
599
603
|
|
|
600
604
|
// Constants
|
|
601
605
|
const API_BASE_URL = "https://api.example.com/v1";
|
|
@@ -697,7 +701,14 @@ server.registerTool(
|
|
|
697
701
|
}
|
|
698
702
|
},
|
|
699
703
|
async (params: UserSearchInput) => {
|
|
700
|
-
|
|
704
|
+
try {
|
|
705
|
+
const result = await makeApiRequest<unknown>('users/search', 'GET', undefined, {
|
|
706
|
+
query: params.query, limit: params.limit, offset: params.offset,
|
|
707
|
+
});
|
|
708
|
+
return { content: [{ type: 'text' as const, text: JSON.stringify(result) }] };
|
|
709
|
+
} catch (error) {
|
|
710
|
+
return { isError: true, content: [{ type: 'text' as const, text: handleApiError(error) }] };
|
|
711
|
+
}
|
|
701
712
|
}
|
|
702
713
|
);
|
|
703
714
|
|
|
@@ -722,6 +733,15 @@ async function runHTTP() {
|
|
|
722
733
|
}
|
|
723
734
|
|
|
724
735
|
const app = express();
|
|
736
|
+
const accessToken = process.env.MCP_ACCESS_TOKEN;
|
|
737
|
+
if (!accessToken) throw new Error('MCP_ACCESS_TOKEN is required for HTTP transport');
|
|
738
|
+
app.use((req, res, next) => {
|
|
739
|
+
if (!['localhost', '127.0.0.1'].includes(req.hostname) || req.headers.origin || req.headers.authorization !== `Bearer ${accessToken}`) {
|
|
740
|
+
res.sendStatus(403);
|
|
741
|
+
return;
|
|
742
|
+
}
|
|
743
|
+
next();
|
|
744
|
+
});
|
|
725
745
|
app.use(express.json());
|
|
726
746
|
|
|
727
747
|
app.post('/mcp', async (req, res) => {
|
|
@@ -735,7 +755,7 @@ async function runHTTP() {
|
|
|
735
755
|
});
|
|
736
756
|
|
|
737
757
|
const port = parseInt(process.env.PORT || '3000');
|
|
738
|
-
app.listen(port, () => {
|
|
758
|
+
app.listen(port, '127.0.0.1', () => {
|
|
739
759
|
console.error(`MCP server running on http://localhost:${port}/mcp`);
|
|
740
760
|
});
|
|
741
761
|
}
|
|
@@ -825,6 +845,15 @@ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/
|
|
|
825
845
|
import express from "express";
|
|
826
846
|
|
|
827
847
|
const app = express();
|
|
848
|
+
const accessToken = process.env.MCP_ACCESS_TOKEN;
|
|
849
|
+
if (!accessToken) throw new Error('MCP_ACCESS_TOKEN is required');
|
|
850
|
+
app.use((req, res, next) => {
|
|
851
|
+
if (!['localhost', '127.0.0.1'].includes(req.hostname) || req.headers.origin || req.headers.authorization !== `Bearer ${accessToken}`) {
|
|
852
|
+
res.sendStatus(403);
|
|
853
|
+
return;
|
|
854
|
+
}
|
|
855
|
+
next();
|
|
856
|
+
});
|
|
828
857
|
app.use(express.json());
|
|
829
858
|
|
|
830
859
|
app.post('/mcp', async (req, res) => {
|
|
@@ -840,7 +869,7 @@ app.post('/mcp', async (req, res) => {
|
|
|
840
869
|
await transport.handleRequest(req, res, req.body);
|
|
841
870
|
});
|
|
842
871
|
|
|
843
|
-
app.listen(3000);
|
|
872
|
+
app.listen(3000, '127.0.0.1');
|
|
844
873
|
```
|
|
845
874
|
|
|
846
875
|
#### stdio (For Local Integrations)
|
|
@@ -967,4 +996,4 @@ Before finalizing your Node/TypeScript MCP server implementation, ensure:
|
|
|
967
996
|
- [ ] dist/index.js created and executable
|
|
968
997
|
- [ ] Server runs: `node dist/index.js --help`
|
|
969
998
|
- [ ] All imports resolve correctly
|
|
970
|
-
- [ ] Sample tool calls work as expected
|
|
999
|
+
- [ ] Sample tool calls work as expected
|
|
@@ -536,7 +536,11 @@ async def get_document(name: str) -> str:
|
|
|
536
536
|
Resources are useful for static or semi-static data that doesn't
|
|
537
537
|
require complex parameters. They use URI templates for flexible access.
|
|
538
538
|
'''
|
|
539
|
-
|
|
539
|
+
from pathlib import Path
|
|
540
|
+
root = Path('./docs').resolve()
|
|
541
|
+
document_path = (root / name).resolve()
|
|
542
|
+
if not document_path.is_relative_to(root) or not document_path.is_file():
|
|
543
|
+
raise ValueError('Document must be a file under the docs root')
|
|
540
544
|
with open(document_path, "r") as f:
|
|
541
545
|
return f.read()
|
|
542
546
|
|
|
@@ -716,4 +720,4 @@ Before finalizing your Python MCP server implementation, ensure:
|
|
|
716
720
|
- [ ] Server runs successfully: `python your_server.py --help`
|
|
717
721
|
- [ ] All imports resolve correctly
|
|
718
722
|
- [ ] Sample tool calls work as expected
|
|
719
|
-
- [ ] Error scenarios handled gracefully
|
|
723
|
+
- [ ] Error scenarios handled gracefully
|
|
@@ -67,7 +67,7 @@ class MCPConnection(ABC):
|
|
|
67
67
|
async def call_tool(self, tool_name: str, arguments: dict[str, Any]) -> Any:
|
|
68
68
|
"""Call a tool on the MCP server with provided arguments."""
|
|
69
69
|
result = await self.session.call_tool(tool_name, arguments=arguments)
|
|
70
|
-
return result.
|
|
70
|
+
return result.model_dump(mode='json', exclude_none=True)
|
|
71
71
|
|
|
72
72
|
|
|
73
73
|
class MCPConnectionStdio(MCPConnection):
|
|
@@ -6,6 +6,7 @@ This script evaluates MCP servers by running test questions against them using C
|
|
|
6
6
|
import argparse
|
|
7
7
|
import asyncio
|
|
8
8
|
import json
|
|
9
|
+
import os
|
|
9
10
|
import re
|
|
10
11
|
import sys
|
|
11
12
|
import time
|
|
@@ -70,10 +71,11 @@ def parse_evaluation_file(file_path: Path) -> list[dict[str, Any]]:
|
|
|
70
71
|
"answer": (answer_elem.text or "").strip(),
|
|
71
72
|
})
|
|
72
73
|
|
|
74
|
+
if not evaluations or any(not qa['question'] or not qa['answer'] for qa in evaluations):
|
|
75
|
+
raise ValueError('Evaluation must contain non-empty question/answer pairs')
|
|
73
76
|
return evaluations
|
|
74
77
|
except Exception as e:
|
|
75
|
-
|
|
76
|
-
return []
|
|
78
|
+
raise ValueError(f"Invalid evaluation file: {file_path}") from e
|
|
77
79
|
|
|
78
80
|
|
|
79
81
|
def extract_xml_content(text: str, tag: str) -> str | None:
|
|
@@ -89,6 +91,7 @@ async def agent_loop(
|
|
|
89
91
|
question: str,
|
|
90
92
|
tools: list[dict[str, Any]],
|
|
91
93
|
connection: Any,
|
|
94
|
+
max_turns: int = 20,
|
|
92
95
|
) -> tuple[str, dict[str, Any]]:
|
|
93
96
|
"""Run the agent loop with MCP tools."""
|
|
94
97
|
messages = [{"role": "user", "content": question}]
|
|
@@ -105,34 +108,39 @@ async def agent_loop(
|
|
|
105
108
|
messages.append({"role": "assistant", "content": response.content})
|
|
106
109
|
|
|
107
110
|
tool_metrics = {}
|
|
111
|
+
allowed_names = {tool['name'] for tool in tools}
|
|
112
|
+
turns = 0
|
|
108
113
|
|
|
109
114
|
while response.stop_reason == "tool_use":
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
115
|
+
turns += 1
|
|
116
|
+
if turns > max_turns:
|
|
117
|
+
raise RuntimeError('Tool turn budget exceeded')
|
|
118
|
+
results = []
|
|
119
|
+
for tool_use in response.content:
|
|
120
|
+
if tool_use.type != 'tool_use':
|
|
121
|
+
continue
|
|
122
|
+
tool_name = tool_use.name
|
|
123
|
+
tool_start_ts = time.monotonic()
|
|
124
|
+
is_error = False
|
|
125
|
+
try:
|
|
126
|
+
if tool_name not in allowed_names:
|
|
127
|
+
raise PermissionError('Tool not allowlisted')
|
|
128
|
+
tool_result = await asyncio.wait_for(connection.call_tool(tool_name, tool_use.input), timeout=60)
|
|
129
|
+
if hasattr(tool_result, 'model_dump'):
|
|
130
|
+
tool_result = tool_result.model_dump(mode='json', exclude_none=True)
|
|
131
|
+
is_error = isinstance(tool_result, dict) and bool(tool_result.get('isError'))
|
|
132
|
+
tool_response = json.dumps(tool_result, default=lambda v: v.model_dump(mode='json'))
|
|
133
|
+
except Exception as e:
|
|
134
|
+
is_error = True
|
|
135
|
+
tool_response = 'Tool failed: ' + type(e).__name__
|
|
136
|
+
metric = tool_metrics.setdefault(tool_name, {'count': 0, 'durations': []})
|
|
137
|
+
metric['count'] += 1
|
|
138
|
+
metric['durations'].append(time.monotonic() - tool_start_ts)
|
|
139
|
+
results.append({'type': 'tool_result', 'tool_use_id': tool_use.id,
|
|
140
|
+
'content': tool_response, 'is_error': is_error})
|
|
141
|
+
if not results:
|
|
142
|
+
raise RuntimeError('tool_use response contained no tool calls')
|
|
143
|
+
messages.append({'role': 'user', 'content': results})
|
|
136
144
|
|
|
137
145
|
response = await asyncio.to_thread(
|
|
138
146
|
client.messages.create,
|
|
@@ -146,7 +154,7 @@ async def agent_loop(
|
|
|
146
154
|
|
|
147
155
|
response_text = next(
|
|
148
156
|
(block.text for block in response.content if hasattr(block, "text")),
|
|
149
|
-
|
|
157
|
+
'',
|
|
150
158
|
)
|
|
151
159
|
return response_text, tool_metrics
|
|
152
160
|
|
|
@@ -220,14 +228,21 @@ TASK_TEMPLATE = """
|
|
|
220
228
|
async def run_evaluation(
|
|
221
229
|
eval_path: Path,
|
|
222
230
|
connection: Any,
|
|
223
|
-
model: str
|
|
231
|
+
model: str,
|
|
232
|
+
allowed_tools: list[str] | None = None,
|
|
224
233
|
) -> str:
|
|
225
234
|
"""Run evaluation with MCP server tools."""
|
|
226
235
|
print("🚀 Starting Evaluation")
|
|
227
236
|
|
|
228
|
-
|
|
237
|
+
if not allowed_tools:
|
|
238
|
+
raise ValueError('Explicit --allow-tool is required; use reviewed read-only test tools')
|
|
239
|
+
client = Anthropic(timeout=60, max_retries=0)
|
|
229
240
|
|
|
230
241
|
tools = await connection.list_tools()
|
|
242
|
+
missing = set(allowed_tools) - {tool['name'] for tool in tools}
|
|
243
|
+
if missing:
|
|
244
|
+
raise ValueError('Allowlisted tools not advertised: ' + ', '.join(sorted(missing)))
|
|
245
|
+
tools = [tool for tool in tools if tool['name'] in allowed_tools]
|
|
231
246
|
print(f"📋 Loaded {len(tools)} tools from MCP server")
|
|
232
247
|
|
|
233
248
|
qa_pairs = parse_evaluation_file(eval_path)
|
|
@@ -236,7 +251,7 @@ async def run_evaluation(
|
|
|
236
251
|
results = []
|
|
237
252
|
for i, qa_pair in enumerate(qa_pairs):
|
|
238
253
|
print(f"Processing task {i + 1}/{len(qa_pairs)}")
|
|
239
|
-
result = await evaluate_single_task(client, model, qa_pair, tools, connection, i)
|
|
254
|
+
result = await asyncio.wait_for(evaluate_single_task(client, model, qa_pair, tools, connection, i), timeout=600)
|
|
240
255
|
results.append(result)
|
|
241
256
|
|
|
242
257
|
correct = sum(r["score"] for r in results)
|
|
@@ -321,7 +336,8 @@ Examples:
|
|
|
321
336
|
|
|
322
337
|
parser.add_argument("eval_file", type=Path, help="Path to evaluation XML file")
|
|
323
338
|
parser.add_argument("-t", "--transport", choices=["stdio", "sse", "http"], default="stdio", help="Transport type (default: stdio)")
|
|
324
|
-
parser.add_argument(
|
|
339
|
+
parser.add_argument('-m', '--model', default=os.environ.get('ANTHROPIC_MODEL'), help='Authorized model ID, or ANTHROPIC_MODEL')
|
|
340
|
+
parser.add_argument('--allow-tool', action='append', required=True, help='Reviewed tool name; repeat for each permitted tool')
|
|
325
341
|
|
|
326
342
|
stdio_group = parser.add_argument_group("stdio options")
|
|
327
343
|
stdio_group.add_argument("-c", "--command", help="Command to run MCP server (stdio only)")
|
|
@@ -335,6 +351,8 @@ Examples:
|
|
|
335
351
|
parser.add_argument("-o", "--output", type=Path, help="Output file for evaluation report (default: stdout)")
|
|
336
352
|
|
|
337
353
|
args = parser.parse_args()
|
|
354
|
+
if not args.model:
|
|
355
|
+
parser.error('--model or ANTHROPIC_MODEL is required')
|
|
338
356
|
|
|
339
357
|
if not args.eval_file.exists():
|
|
340
358
|
print(f"Error: Evaluation file not found: {args.eval_file}")
|
|
@@ -360,7 +378,7 @@ Examples:
|
|
|
360
378
|
|
|
361
379
|
async with connection:
|
|
362
380
|
print("✅ Connected successfully")
|
|
363
|
-
report = await run_evaluation(args.eval_file, connection, args.model)
|
|
381
|
+
report = await run_evaluation(args.eval_file, connection, args.model, args.allow_tool)
|
|
364
382
|
|
|
365
383
|
if args.output:
|
|
366
384
|
args.output.write_text(report)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
anthropic>=0.39.0
|
|
2
|
-
mcp>=1.
|
|
1
|
+
anthropic>=0.39.0,<2
|
|
2
|
+
mcp>=1.9.0,<2
|