sumulige-claude 1.0.8 → 1.0.11
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/.claude/.version +1 -0
- package/.claude/AGENTS.md +9 -9
- package/.claude/commands/commit-push-pr.md +23 -3
- package/.claude/sessions/active-sessions.json +1 -359
- package/.claude/settings.local.json +31 -1
- package/.claude/skills/algorithmic-art/LICENSE.txt +202 -0
- package/.claude/skills/algorithmic-art/SKILL.md +405 -0
- package/.claude/skills/algorithmic-art/templates/generator_template.js +223 -0
- package/.claude/skills/algorithmic-art/templates/viewer.html +599 -0
- package/.claude/skills/brand-guidelines/LICENSE.txt +202 -0
- package/.claude/skills/brand-guidelines/SKILL.md +73 -0
- package/.claude/skills/canvas-design/LICENSE.txt +202 -0
- package/.claude/skills/canvas-design/SKILL.md +130 -0
- package/.claude/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/.claude/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/.claude/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/.claude/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/.claude/skills/doc-coauthoring/SKILL.md +375 -0
- package/.claude/skills/docx/LICENSE.txt +30 -0
- package/.claude/skills/docx/SKILL.md +197 -0
- package/.claude/skills/docx/docx-js.md +350 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/.claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/.claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/.claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/.claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/.claude/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
- package/.claude/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/.claude/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/.claude/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/.claude/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/.claude/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/.claude/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/.claude/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/.claude/skills/docx/ooxml/scripts/pack.py +159 -0
- package/.claude/skills/docx/ooxml/scripts/unpack.py +29 -0
- package/.claude/skills/docx/ooxml/scripts/validate.py +69 -0
- package/.claude/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
- package/.claude/skills/docx/ooxml/scripts/validation/base.py +951 -0
- package/.claude/skills/docx/ooxml/scripts/validation/docx.py +274 -0
- package/.claude/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
- package/.claude/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
- package/.claude/skills/docx/ooxml.md +610 -0
- package/.claude/skills/docx/scripts/__init__.py +1 -0
- package/.claude/skills/docx/scripts/document.py +1276 -0
- package/.claude/skills/docx/scripts/templates/comments.xml +3 -0
- package/.claude/skills/docx/scripts/templates/commentsExtended.xml +3 -0
- package/.claude/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/.claude/skills/docx/scripts/templates/commentsIds.xml +3 -0
- package/.claude/skills/docx/scripts/templates/people.xml +3 -0
- package/.claude/skills/docx/scripts/utilities.py +374 -0
- package/.claude/skills/frontend-design/LICENSE.txt +177 -0
- package/.claude/skills/frontend-design/SKILL.md +42 -0
- package/.claude/skills/internal-comms/LICENSE.txt +202 -0
- package/.claude/skills/internal-comms/SKILL.md +32 -0
- package/.claude/skills/internal-comms/examples/3p-updates.md +47 -0
- package/.claude/skills/internal-comms/examples/company-newsletter.md +65 -0
- package/.claude/skills/internal-comms/examples/faq-answers.md +30 -0
- package/.claude/skills/internal-comms/examples/general-comms.md +16 -0
- package/.claude/skills/mcp-builder/LICENSE.txt +202 -0
- package/.claude/skills/mcp-builder/SKILL.md +236 -0
- package/.claude/skills/mcp-builder/reference/evaluation.md +602 -0
- package/.claude/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/.claude/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/.claude/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/.claude/skills/mcp-builder/scripts/connections.py +151 -0
- package/.claude/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/.claude/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/.claude/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/.claude/skills/pdf/LICENSE.txt +30 -0
- package/.claude/skills/pdf/SKILL.md +294 -0
- package/.claude/skills/pdf/forms.md +205 -0
- package/.claude/skills/pdf/reference.md +612 -0
- package/.claude/skills/pdf/scripts/check_bounding_boxes.py +70 -0
- package/.claude/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
- package/.claude/skills/pdf/scripts/check_fillable_fields.py +12 -0
- package/.claude/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
- package/.claude/skills/pdf/scripts/create_validation_image.py +41 -0
- package/.claude/skills/pdf/scripts/extract_form_field_info.py +152 -0
- package/.claude/skills/pdf/scripts/fill_fillable_fields.py +114 -0
- package/.claude/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
- package/.claude/skills/pptx/LICENSE.txt +30 -0
- package/.claude/skills/pptx/SKILL.md +484 -0
- package/.claude/skills/pptx/html2pptx.md +625 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/.claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/.claude/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/.claude/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/.claude/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/.claude/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/.claude/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
- package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/.claude/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/.claude/skills/pptx/ooxml/scripts/pack.py +159 -0
- package/.claude/skills/pptx/ooxml/scripts/unpack.py +29 -0
- package/.claude/skills/pptx/ooxml/scripts/validate.py +69 -0
- package/.claude/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
- package/.claude/skills/pptx/ooxml/scripts/validation/base.py +951 -0
- package/.claude/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
- package/.claude/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
- package/.claude/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
- package/.claude/skills/pptx/ooxml.md +427 -0
- package/.claude/skills/pptx/scripts/html2pptx.js +979 -0
- package/.claude/skills/pptx/scripts/inventory.py +1020 -0
- package/.claude/skills/pptx/scripts/rearrange.py +231 -0
- package/.claude/skills/pptx/scripts/replace.py +385 -0
- package/.claude/skills/pptx/scripts/thumbnail.py +450 -0
- package/.claude/skills/skill-creator/LICENSE.txt +202 -0
- package/.claude/skills/skill-creator/SKILL.md +356 -0
- package/.claude/skills/skill-creator/references/output-patterns.md +82 -0
- package/.claude/skills/skill-creator/references/workflows.md +28 -0
- package/.claude/skills/skill-creator/scripts/init_skill.py +303 -0
- package/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
- package/.claude/skills/skill-creator/scripts/quick_validate.py +95 -0
- package/.claude/skills/slack-gif-creator/LICENSE.txt +202 -0
- package/.claude/skills/slack-gif-creator/SKILL.md +254 -0
- package/.claude/skills/slack-gif-creator/core/easing.py +234 -0
- package/.claude/skills/slack-gif-creator/core/frame_composer.py +176 -0
- package/.claude/skills/slack-gif-creator/core/gif_builder.py +269 -0
- package/.claude/skills/slack-gif-creator/core/validators.py +136 -0
- package/.claude/skills/slack-gif-creator/requirements.txt +4 -0
- package/.claude/skills/template/SKILL.md +6 -0
- package/.claude/skills/theme-factory/LICENSE.txt +202 -0
- package/.claude/skills/theme-factory/SKILL.md +59 -0
- package/.claude/skills/theme-factory/theme-showcase.pdf +0 -0
- package/.claude/skills/theme-factory/themes/arctic-frost.md +19 -0
- package/.claude/skills/theme-factory/themes/botanical-garden.md +19 -0
- package/.claude/skills/theme-factory/themes/desert-rose.md +19 -0
- package/.claude/skills/theme-factory/themes/forest-canopy.md +19 -0
- package/.claude/skills/theme-factory/themes/golden-hour.md +19 -0
- package/.claude/skills/theme-factory/themes/midnight-galaxy.md +19 -0
- package/.claude/skills/theme-factory/themes/modern-minimalist.md +19 -0
- package/.claude/skills/theme-factory/themes/ocean-depths.md +19 -0
- package/.claude/skills/theme-factory/themes/sunset-boulevard.md +19 -0
- package/.claude/skills/theme-factory/themes/tech-innovation.md +19 -0
- package/.claude/skills/web-artifacts-builder/LICENSE.txt +202 -0
- package/.claude/skills/web-artifacts-builder/SKILL.md +74 -0
- package/.claude/skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/.claude/skills/web-artifacts-builder/scripts/init-artifact.sh +322 -0
- package/.claude/skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/.claude/skills/webapp-testing/LICENSE.txt +202 -0
- package/.claude/skills/webapp-testing/SKILL.md +96 -0
- package/.claude/skills/webapp-testing/examples/console_logging.py +35 -0
- package/.claude/skills/webapp-testing/examples/element_discovery.py +40 -0
- package/.claude/skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/.claude/skills/webapp-testing/scripts/with_server.py +106 -0
- package/.claude/skills/xlsx/LICENSE.txt +30 -0
- package/.claude/skills/xlsx/SKILL.md +289 -0
- package/.claude/skills/xlsx/recalc.py +178 -0
- package/.claude-plugin/marketplace.json +2 -2
- package/AGENTS.md +165 -86
- package/README.md +22 -0
- package/cli.js +7 -2
- package/development/todos/INDEX.md +10 -1
- package/jest.config.js +61 -0
- package/lib/commands.js +67 -0
- package/lib/migrations.js +154 -0
- package/package.json +7 -2
- package/scripts/fix-hooks.mjs +97 -0
- package/template/.claude/commands/commit-push-pr.md +23 -3
- package/template/.claude/hooks/conversation-logger.cjs +222 -0
- package/template/.claude/settings.json +114 -45
- package/tests/README.md +263 -0
- package/tests/commands.test.js +163 -0
- package/tests/config.test.js +100 -0
- package/tests/marketplace.test.js +304 -0
- package/tests/migrations.test.js +187 -0
- package/tests/utils.test.js +167 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Excel Formula Recalculation Script
|
|
4
|
+
Recalculates all formulas in an Excel file using LibreOffice
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import json
|
|
8
|
+
import sys
|
|
9
|
+
import subprocess
|
|
10
|
+
import os
|
|
11
|
+
import platform
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
from openpyxl import load_workbook
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def setup_libreoffice_macro():
|
|
17
|
+
"""Setup LibreOffice macro for recalculation if not already configured"""
|
|
18
|
+
if platform.system() == 'Darwin':
|
|
19
|
+
macro_dir = os.path.expanduser('~/Library/Application Support/LibreOffice/4/user/basic/Standard')
|
|
20
|
+
else:
|
|
21
|
+
macro_dir = os.path.expanduser('~/.config/libreoffice/4/user/basic/Standard')
|
|
22
|
+
|
|
23
|
+
macro_file = os.path.join(macro_dir, 'Module1.xba')
|
|
24
|
+
|
|
25
|
+
if os.path.exists(macro_file):
|
|
26
|
+
with open(macro_file, 'r') as f:
|
|
27
|
+
if 'RecalculateAndSave' in f.read():
|
|
28
|
+
return True
|
|
29
|
+
|
|
30
|
+
if not os.path.exists(macro_dir):
|
|
31
|
+
subprocess.run(['soffice', '--headless', '--terminate_after_init'],
|
|
32
|
+
capture_output=True, timeout=10)
|
|
33
|
+
os.makedirs(macro_dir, exist_ok=True)
|
|
34
|
+
|
|
35
|
+
macro_content = '''<?xml version="1.0" encoding="UTF-8"?>
|
|
36
|
+
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
|
|
37
|
+
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Module1" script:language="StarBasic">
|
|
38
|
+
Sub RecalculateAndSave()
|
|
39
|
+
ThisComponent.calculateAll()
|
|
40
|
+
ThisComponent.store()
|
|
41
|
+
ThisComponent.close(True)
|
|
42
|
+
End Sub
|
|
43
|
+
</script:module>'''
|
|
44
|
+
|
|
45
|
+
try:
|
|
46
|
+
with open(macro_file, 'w') as f:
|
|
47
|
+
f.write(macro_content)
|
|
48
|
+
return True
|
|
49
|
+
except Exception:
|
|
50
|
+
return False
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def recalc(filename, timeout=30):
|
|
54
|
+
"""
|
|
55
|
+
Recalculate formulas in Excel file and report any errors
|
|
56
|
+
|
|
57
|
+
Args:
|
|
58
|
+
filename: Path to Excel file
|
|
59
|
+
timeout: Maximum time to wait for recalculation (seconds)
|
|
60
|
+
|
|
61
|
+
Returns:
|
|
62
|
+
dict with error locations and counts
|
|
63
|
+
"""
|
|
64
|
+
if not Path(filename).exists():
|
|
65
|
+
return {'error': f'File {filename} does not exist'}
|
|
66
|
+
|
|
67
|
+
abs_path = str(Path(filename).absolute())
|
|
68
|
+
|
|
69
|
+
if not setup_libreoffice_macro():
|
|
70
|
+
return {'error': 'Failed to setup LibreOffice macro'}
|
|
71
|
+
|
|
72
|
+
cmd = [
|
|
73
|
+
'soffice', '--headless', '--norestore',
|
|
74
|
+
'vnd.sun.star.script:Standard.Module1.RecalculateAndSave?language=Basic&location=application',
|
|
75
|
+
abs_path
|
|
76
|
+
]
|
|
77
|
+
|
|
78
|
+
# Handle timeout command differences between Linux and macOS
|
|
79
|
+
if platform.system() != 'Windows':
|
|
80
|
+
timeout_cmd = 'timeout' if platform.system() == 'Linux' else None
|
|
81
|
+
if platform.system() == 'Darwin':
|
|
82
|
+
# Check if gtimeout is available on macOS
|
|
83
|
+
try:
|
|
84
|
+
subprocess.run(['gtimeout', '--version'], capture_output=True, timeout=1, check=False)
|
|
85
|
+
timeout_cmd = 'gtimeout'
|
|
86
|
+
except (FileNotFoundError, subprocess.TimeoutExpired):
|
|
87
|
+
pass
|
|
88
|
+
|
|
89
|
+
if timeout_cmd:
|
|
90
|
+
cmd = [timeout_cmd, str(timeout)] + cmd
|
|
91
|
+
|
|
92
|
+
result = subprocess.run(cmd, capture_output=True, text=True)
|
|
93
|
+
|
|
94
|
+
if result.returncode != 0 and result.returncode != 124: # 124 is timeout exit code
|
|
95
|
+
error_msg = result.stderr or 'Unknown error during recalculation'
|
|
96
|
+
if 'Module1' in error_msg or 'RecalculateAndSave' not in error_msg:
|
|
97
|
+
return {'error': 'LibreOffice macro not configured properly'}
|
|
98
|
+
else:
|
|
99
|
+
return {'error': error_msg}
|
|
100
|
+
|
|
101
|
+
# Check for Excel errors in the recalculated file - scan ALL cells
|
|
102
|
+
try:
|
|
103
|
+
wb = load_workbook(filename, data_only=True)
|
|
104
|
+
|
|
105
|
+
excel_errors = ['#VALUE!', '#DIV/0!', '#REF!', '#NAME?', '#NULL!', '#NUM!', '#N/A']
|
|
106
|
+
error_details = {err: [] for err in excel_errors}
|
|
107
|
+
total_errors = 0
|
|
108
|
+
|
|
109
|
+
for sheet_name in wb.sheetnames:
|
|
110
|
+
ws = wb[sheet_name]
|
|
111
|
+
# Check ALL rows and columns - no limits
|
|
112
|
+
for row in ws.iter_rows():
|
|
113
|
+
for cell in row:
|
|
114
|
+
if cell.value is not None and isinstance(cell.value, str):
|
|
115
|
+
for err in excel_errors:
|
|
116
|
+
if err in cell.value:
|
|
117
|
+
location = f"{sheet_name}!{cell.coordinate}"
|
|
118
|
+
error_details[err].append(location)
|
|
119
|
+
total_errors += 1
|
|
120
|
+
break
|
|
121
|
+
|
|
122
|
+
wb.close()
|
|
123
|
+
|
|
124
|
+
# Build result summary
|
|
125
|
+
result = {
|
|
126
|
+
'status': 'success' if total_errors == 0 else 'errors_found',
|
|
127
|
+
'total_errors': total_errors,
|
|
128
|
+
'error_summary': {}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
# Add non-empty error categories
|
|
132
|
+
for err_type, locations in error_details.items():
|
|
133
|
+
if locations:
|
|
134
|
+
result['error_summary'][err_type] = {
|
|
135
|
+
'count': len(locations),
|
|
136
|
+
'locations': locations[:20] # Show up to 20 locations
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
# Add formula count for context - also check ALL cells
|
|
140
|
+
wb_formulas = load_workbook(filename, data_only=False)
|
|
141
|
+
formula_count = 0
|
|
142
|
+
for sheet_name in wb_formulas.sheetnames:
|
|
143
|
+
ws = wb_formulas[sheet_name]
|
|
144
|
+
for row in ws.iter_rows():
|
|
145
|
+
for cell in row:
|
|
146
|
+
if cell.value and isinstance(cell.value, str) and cell.value.startswith('='):
|
|
147
|
+
formula_count += 1
|
|
148
|
+
wb_formulas.close()
|
|
149
|
+
|
|
150
|
+
result['total_formulas'] = formula_count
|
|
151
|
+
|
|
152
|
+
return result
|
|
153
|
+
|
|
154
|
+
except Exception as e:
|
|
155
|
+
return {'error': str(e)}
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
def main():
|
|
159
|
+
if len(sys.argv) < 2:
|
|
160
|
+
print("Usage: python recalc.py <excel_file> [timeout_seconds]")
|
|
161
|
+
print("\nRecalculates all formulas in an Excel file using LibreOffice")
|
|
162
|
+
print("\nReturns JSON with error details:")
|
|
163
|
+
print(" - status: 'success' or 'errors_found'")
|
|
164
|
+
print(" - total_errors: Total number of Excel errors found")
|
|
165
|
+
print(" - total_formulas: Number of formulas in the file")
|
|
166
|
+
print(" - error_summary: Breakdown by error type with locations")
|
|
167
|
+
print(" - #VALUE!, #DIV/0!, #REF!, #NAME?, #NULL!, #NUM!, #N/A")
|
|
168
|
+
sys.exit(1)
|
|
169
|
+
|
|
170
|
+
filename = sys.argv[1]
|
|
171
|
+
timeout = int(sys.argv[2]) if len(sys.argv) > 2 else 30
|
|
172
|
+
|
|
173
|
+
result = recalc(filename, timeout)
|
|
174
|
+
print(json.dumps(result, indent=2))
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
if __name__ == '__main__':
|
|
178
|
+
main()
|
package/AGENTS.md
CHANGED
|
@@ -2,91 +2,170 @@
|
|
|
2
2
|
|
|
3
3
|
<skills_system priority="1">
|
|
4
4
|
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
5
|
+
## Available Skills
|
|
6
|
+
|
|
7
|
+
<!-- SKILLS_TABLE_START -->
|
|
8
|
+
<usage>
|
|
9
|
+
When users ask you to perform tasks, check if any of the available skills below can help complete the task more effectively. Skills provide specialized capabilities and domain knowledge.
|
|
10
|
+
|
|
11
|
+
How to use skills:
|
|
12
|
+
- Invoke: Bash("openskills read <skill-name>")
|
|
13
|
+
- The skill content will load with detailed instructions on how to complete the task
|
|
14
|
+
- Base directory provided in output for resolving bundled resources (references/, scripts/, assets/)
|
|
15
|
+
|
|
16
|
+
Usage notes:
|
|
17
|
+
- Only use skills listed in <available_skills> below
|
|
18
|
+
- Do not invoke a skill that is already loaded in your context
|
|
19
|
+
- Each skill invocation is stateless
|
|
20
|
+
</usage>
|
|
21
|
+
|
|
22
|
+
<available_skills>
|
|
23
|
+
|
|
24
|
+
<skill>
|
|
25
|
+
<name>algorithmic-art</name>
|
|
26
|
+
<description>Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.</description>
|
|
27
|
+
<location>project</location>
|
|
28
|
+
</skill>
|
|
29
|
+
|
|
30
|
+
<skill>
|
|
31
|
+
<name>api-tester</name>
|
|
32
|
+
<description></description>
|
|
33
|
+
<location>project</location>
|
|
34
|
+
</skill>
|
|
35
|
+
|
|
36
|
+
<skill>
|
|
37
|
+
<name>brand-guidelines</name>
|
|
38
|
+
<description>Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.</description>
|
|
39
|
+
<location>project</location>
|
|
40
|
+
</skill>
|
|
41
|
+
|
|
42
|
+
<skill>
|
|
43
|
+
<name>canvas-design</name>
|
|
44
|
+
<description>Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.</description>
|
|
45
|
+
<location>project</location>
|
|
46
|
+
</skill>
|
|
47
|
+
|
|
48
|
+
<skill>
|
|
49
|
+
<name>doc-coauthoring</name>
|
|
50
|
+
<description>Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.</description>
|
|
51
|
+
<location>project</location>
|
|
52
|
+
</skill>
|
|
53
|
+
|
|
54
|
+
<skill>
|
|
55
|
+
<name>docx</name>
|
|
56
|
+
<description>"Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. When Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks"</description>
|
|
57
|
+
<location>project</location>
|
|
58
|
+
</skill>
|
|
59
|
+
|
|
60
|
+
<skill>
|
|
61
|
+
<name>frontend-design</name>
|
|
62
|
+
<description>Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.</description>
|
|
63
|
+
<location>project</location>
|
|
64
|
+
</skill>
|
|
65
|
+
|
|
66
|
+
<skill>
|
|
67
|
+
<name>internal-comms</name>
|
|
68
|
+
<description>A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).</description>
|
|
69
|
+
<location>project</location>
|
|
70
|
+
</skill>
|
|
71
|
+
|
|
72
|
+
<skill>
|
|
73
|
+
<name>mcp-builder</name>
|
|
74
|
+
<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).</description>
|
|
75
|
+
<location>project</location>
|
|
76
|
+
</skill>
|
|
77
|
+
|
|
78
|
+
<skill>
|
|
79
|
+
<name>pdf</name>
|
|
80
|
+
<description>Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms. When Claude needs to fill in a PDF form or programmatically process, generate, or analyze PDF documents at scale.</description>
|
|
81
|
+
<location>project</location>
|
|
82
|
+
</skill>
|
|
83
|
+
|
|
84
|
+
<skill>
|
|
85
|
+
<name>pptx</name>
|
|
86
|
+
<description>"Presentation creation, editing, and analysis. When Claude needs to work with presentations (.pptx files) for: (1) Creating new presentations, (2) Modifying or editing content, (3) Working with layouts, (4) Adding comments or speaker notes, or any other presentation tasks"</description>
|
|
87
|
+
<location>project</location>
|
|
88
|
+
</skill>
|
|
89
|
+
|
|
90
|
+
<skill>
|
|
91
|
+
<name>skill-creator</name>
|
|
92
|
+
<description>Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.</description>
|
|
93
|
+
<location>project</location>
|
|
94
|
+
</skill>
|
|
95
|
+
|
|
96
|
+
<skill>
|
|
97
|
+
<name>slack-gif-creator</name>
|
|
98
|
+
<description>Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like "make me a GIF of X doing Y for Slack."</description>
|
|
99
|
+
<location>project</location>
|
|
100
|
+
</skill>
|
|
101
|
+
|
|
102
|
+
<skill>
|
|
103
|
+
<name>template</name>
|
|
104
|
+
<description>Replace with description of the skill and when Claude should use it.</description>
|
|
105
|
+
<location>project</location>
|
|
106
|
+
</skill>
|
|
107
|
+
|
|
108
|
+
<skill>
|
|
109
|
+
<name>theme-factory</name>
|
|
110
|
+
<description>Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.</description>
|
|
111
|
+
<location>project</location>
|
|
112
|
+
</skill>
|
|
113
|
+
|
|
114
|
+
<skill>
|
|
115
|
+
<name>web-artifacts-builder</name>
|
|
116
|
+
<description>Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts.</description>
|
|
117
|
+
<location>project</location>
|
|
118
|
+
</skill>
|
|
119
|
+
|
|
120
|
+
<skill>
|
|
121
|
+
<name>webapp-testing</name>
|
|
122
|
+
<description>Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.</description>
|
|
123
|
+
<location>project</location>
|
|
124
|
+
</skill>
|
|
125
|
+
|
|
126
|
+
<skill>
|
|
127
|
+
<name>xlsx</name>
|
|
128
|
+
<description>"Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization. When Claude needs to work with spreadsheets (.xlsx, .xlsm, .csv, .tsv, etc) for: (1) Creating new spreadsheets with formulas and formatting, (2) Reading or analyzing data, (3) Modify existing spreadsheets while preserving formulas, (4) Data analysis and visualization in spreadsheets, or (5) Recalculating formulas"</description>
|
|
129
|
+
<location>project</location>
|
|
130
|
+
</skill>
|
|
131
|
+
|
|
132
|
+
<skill>
|
|
133
|
+
<name>architect</name>
|
|
134
|
+
<description>|</description>
|
|
135
|
+
<location>global</location>
|
|
136
|
+
</skill>
|
|
137
|
+
|
|
138
|
+
<skill>
|
|
139
|
+
<name>builder</name>
|
|
140
|
+
<description>|</description>
|
|
141
|
+
<location>global</location>
|
|
142
|
+
</skill>
|
|
143
|
+
|
|
144
|
+
<skill>
|
|
145
|
+
<name>conductor</name>
|
|
146
|
+
<description>|</description>
|
|
147
|
+
<location>global</location>
|
|
148
|
+
</skill>
|
|
149
|
+
|
|
150
|
+
<skill>
|
|
151
|
+
<name>librarian</name>
|
|
152
|
+
<description>|</description>
|
|
153
|
+
<location>global</location>
|
|
154
|
+
</skill>
|
|
155
|
+
|
|
156
|
+
<skill>
|
|
157
|
+
<name>manus-kickoff</name>
|
|
158
|
+
<description></description>
|
|
159
|
+
<location>global</location>
|
|
160
|
+
</skill>
|
|
161
|
+
|
|
162
|
+
<skill>
|
|
163
|
+
<name>reviewer</name>
|
|
164
|
+
<description>|</description>
|
|
165
|
+
<location>global</location>
|
|
166
|
+
</skill>
|
|
167
|
+
|
|
168
|
+
</available_skills>
|
|
169
|
+
<!-- SKILLS_TABLE_END -->
|
|
91
170
|
|
|
92
171
|
</skills_system>
|
package/README.md
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
[](https://www.npmjs.com/package/sumulige-claude)
|
|
7
7
|
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
[](./tests)
|
|
8
9
|
|
|
9
10
|
---
|
|
10
11
|
|
|
@@ -230,10 +231,31 @@ smc kickoff
|
|
|
230
231
|
|
|
231
232
|
---
|
|
232
233
|
|
|
234
|
+
## Testing / 测试
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
# Run tests / 运行测试
|
|
238
|
+
npm test
|
|
239
|
+
|
|
240
|
+
# Run with coverage / 运行测试并生成覆盖率报告
|
|
241
|
+
npm run test:coverage
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
**Coverage / 覆盖率**:
|
|
245
|
+
- utils.js: 100%
|
|
246
|
+
- migrations.js: 86.66%
|
|
247
|
+
- config.js: 86.2%
|
|
248
|
+
- Overall: 36.58%
|
|
249
|
+
|
|
250
|
+
See **[tests/README.md](tests/README.md)** for detailed test documentation.
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
233
254
|
## Documentation / 文档
|
|
234
255
|
|
|
235
256
|
- **[Development Guide / 开发指南](docs/DEVELOPMENT.md)** - Architecture, adding skills, sync mechanism / 架构、添加技能、同步机制
|
|
236
257
|
- **[Marketplace Guide / 市场指南](docs/MARKETPLACE.md)** - User guide for marketplace features / 市场功能用户指南
|
|
258
|
+
- **[Tests Documentation / 测试文档](tests/README.md)** - Test coverage and strategy / 测试覆盖率和策略
|
|
237
259
|
|
|
238
260
|
---
|
|
239
261
|
|
package/cli.js
CHANGED
|
@@ -25,7 +25,11 @@ const COMMANDS = {
|
|
|
25
25
|
args: ''
|
|
26
26
|
},
|
|
27
27
|
sync: {
|
|
28
|
-
help: 'Sync to current project',
|
|
28
|
+
help: 'Sync to current project (auto-migrates old format)',
|
|
29
|
+
args: ''
|
|
30
|
+
},
|
|
31
|
+
migrate: {
|
|
32
|
+
help: 'Migrate old hooks format to new',
|
|
29
33
|
args: ''
|
|
30
34
|
},
|
|
31
35
|
template: {
|
|
@@ -110,7 +114,8 @@ function showHelp() {
|
|
|
110
114
|
console.log('');
|
|
111
115
|
console.log('Examples:');
|
|
112
116
|
console.log(' smc init');
|
|
113
|
-
console.log(' smc sync');
|
|
117
|
+
console.log(' smc sync # Auto-migrates old format');
|
|
118
|
+
console.log(' smc migrate # Manual migration');
|
|
114
119
|
console.log(' smc template');
|
|
115
120
|
console.log(' smc template /path/to/project');
|
|
116
121
|
console.log(' smc kickoff # Start project planning');
|
|
@@ -2,7 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
> 本目录由 AI 自动维护,记录项目开发任务和进度
|
|
4
4
|
|
|
5
|
-
**最后更新**: 2026-01-
|
|
5
|
+
**最后更新**: 2026-01-15
|
|
6
|
+
|
|
7
|
+
## 任务总览
|
|
8
|
+
|
|
9
|
+
| 状态 | 目录 | 数量 |
|
|
10
|
+
|------|------|------|
|
|
11
|
+
| 🚧 进行中 | `active/` | 1 |
|
|
12
|
+
| ✅ 已完成 | `completed/` | 1 |
|
|
13
|
+
| 📋 待办 | `backlog/` | 1 |
|
|
14
|
+
| 📦 已归档 | `archived/` | 0 |
|
|
6
15
|
|
|
7
16
|
@version: 1.0.0
|
|
8
17
|
|
package/jest.config.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jest 配置
|
|
3
|
+
* Sumulige-Claude 测试框架
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
module.exports = {
|
|
7
|
+
// 测试环境
|
|
8
|
+
testEnvironment: 'node',
|
|
9
|
+
|
|
10
|
+
// 测试文件匹配模式
|
|
11
|
+
testMatch: [
|
|
12
|
+
'**/tests/**/*.test.js',
|
|
13
|
+
'**/__tests__/**/*.js'
|
|
14
|
+
],
|
|
15
|
+
|
|
16
|
+
// 覆盖率收集配置
|
|
17
|
+
collectCoverageFrom: [
|
|
18
|
+
'lib/**/*.js',
|
|
19
|
+
'!lib/**/*.test.js',
|
|
20
|
+
'!**/node_modules/**'
|
|
21
|
+
],
|
|
22
|
+
|
|
23
|
+
// 覆盖率阈值
|
|
24
|
+
coverageThreshold: {
|
|
25
|
+
global: {
|
|
26
|
+
branches: 50,
|
|
27
|
+
functions: 50,
|
|
28
|
+
lines: 50,
|
|
29
|
+
statements: 50
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
// 覆盖率报告格式
|
|
34
|
+
coverageReporters: ['text', 'lcov', 'html'],
|
|
35
|
+
|
|
36
|
+
// 覆盖率输出目录
|
|
37
|
+
coverageDirectory: 'coverage',
|
|
38
|
+
|
|
39
|
+
// 是否显示每个测试的耗时
|
|
40
|
+
verbose: true,
|
|
41
|
+
|
|
42
|
+
// 测试超时时间(毫秒)
|
|
43
|
+
testTimeout: 10000,
|
|
44
|
+
|
|
45
|
+
// 模块路径别名(可选)
|
|
46
|
+
moduleNameMapper: {
|
|
47
|
+
'^@/(.*)$': '<rootDir>/$1'
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
// 忽略的目录
|
|
51
|
+
testPathIgnorePatterns: [
|
|
52
|
+
'/node_modules/',
|
|
53
|
+
'/template/',
|
|
54
|
+
'/coverage/'
|
|
55
|
+
],
|
|
56
|
+
|
|
57
|
+
// 清除 mock
|
|
58
|
+
clearMocks: true,
|
|
59
|
+
resetMocks: true,
|
|
60
|
+
restoreMocks: true
|
|
61
|
+
};
|