thanh-kit 2.5.0 → 2.5.2
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/dist/index.js +20 -61
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/.ck.json +60 -0
- package/templates/.ckignore +27 -0
- package/templates/.mcp.json.example +23 -0
- package/templates/agents/brainstormer.md +18 -2
- package/templates/agents/code-reviewer.md +122 -142
- package/templates/agents/code-simplifier.md +50 -100
- package/templates/agents/debugger.md +27 -11
- package/templates/agents/docs-manager.md +100 -38
- package/templates/agents/fullstack-developer.md +15 -3
- package/templates/agents/git-manager.md +11 -386
- package/templates/agents/journal-writer.md +13 -8
- package/templates/agents/mcp-manager.md +21 -6
- package/templates/agents/planner.md +24 -8
- package/templates/agents/project-manager.md +17 -121
- package/templates/agents/researcher.md +22 -7
- package/templates/agents/tester.md +23 -7
- package/templates/agents/ui-ux-designer.md +23 -14
- package/templates/{commands → command-archive}/ask.md +5 -5
- package/templates/{commands → command-archive}/ck-help.md +18 -2
- package/templates/command-archive/docs/init.md +38 -0
- package/templates/command-archive/docs/summarize.md +22 -0
- package/templates/command-archive/docs/update.md +76 -0
- package/templates/command-archive/journal.md +18 -0
- package/templates/{commands → command-archive}/kanban.md +5 -7
- package/templates/{commands → command-archive}/plan/archive.md +2 -2
- package/templates/command-archive/plan/red-team.md +200 -0
- package/templates/command-archive/plan/validate.md +188 -0
- package/templates/command-archive/preview.md +283 -0
- package/templates/command-archive/review/codebase/parallel.md +122 -0
- package/templates/{commands → command-archive}/test/ui.md +3 -3
- package/templates/{commands → command-archive}/use-mcp.md +6 -2
- package/templates/command-archive/worktree.md +109 -0
- package/templates/hooks/__tests__/ck-config-utils.test.cjs +557 -0
- package/templates/hooks/__tests__/descriptive-name.test.cjs +292 -0
- package/templates/hooks/__tests__/dev-rules-reminder.test.cjs +336 -0
- package/templates/hooks/__tests__/integration/path-resolution.test.cjs +319 -0
- package/templates/hooks/__tests__/privacy-block.test.cjs +273 -0
- package/templates/hooks/__tests__/session-init.test.cjs +308 -0
- package/templates/hooks/__tests__/skill-dedup.test.cjs +527 -0
- package/templates/hooks/__tests__/subagent-init.test.cjs +622 -0
- package/templates/hooks/__tests__/task-completed-handler.test.cjs +246 -0
- package/templates/hooks/__tests__/team-context-inject.test.cjs +804 -0
- package/templates/hooks/__tests__/teammate-idle-handler.test.cjs +254 -0
- package/templates/hooks/cook-after-plan-reminder.cjs +72 -0
- package/templates/hooks/descriptive-name.cjs +47 -0
- package/templates/hooks/dev-rules-reminder.cjs +37 -214
- package/templates/hooks/lib/__tests__/README.md +240 -0
- package/templates/hooks/lib/__tests__/ck-config-utils.test.cjs +613 -1
- package/templates/hooks/lib/__tests__/context-builder.test.cjs +468 -0
- package/templates/hooks/lib/__tests__/project-detector.test.cjs +754 -0
- package/templates/hooks/lib/__tests__/statusline-integration.test.cjs +678 -0
- package/templates/hooks/lib/__tests__/statusline.test.cjs +689 -0
- package/templates/hooks/lib/ck-config-utils.cjs +146 -21
- package/templates/hooks/lib/colors.cjs +95 -0
- package/templates/hooks/lib/config-counter.cjs +103 -0
- package/templates/hooks/lib/context-builder.cjs +616 -0
- package/templates/hooks/lib/git-info-cache.cjs +143 -0
- package/templates/hooks/lib/hook-logger.cjs +92 -0
- package/templates/hooks/lib/privacy-checker.cjs +297 -0
- package/templates/hooks/lib/project-detector.cjs +474 -0
- package/templates/hooks/lib/scout-checker.cjs +263 -0
- package/templates/hooks/lib/transcript-parser.cjs +181 -0
- package/templates/hooks/notifications/discord_notify.sh +17 -4
- package/templates/hooks/notifications/docs/discord-hook-setup.md +26 -10
- package/templates/hooks/notifications/docs/telegram-hook-setup.md +24 -6
- package/templates/hooks/notifications/notify.cjs +0 -0
- package/templates/hooks/notifications/send-discord.sh +0 -0
- package/templates/hooks/notifications/telegram_notify.sh +17 -4
- package/templates/hooks/post-edit-simplify-reminder.cjs +156 -0
- package/templates/hooks/privacy-block.cjs +97 -188
- package/templates/hooks/scout-block/broad-pattern-detector.cjs +4 -6
- package/templates/hooks/scout-block/error-formatter.cjs +0 -0
- package/templates/hooks/scout-block/path-extractor.cjs +102 -13
- package/templates/hooks/scout-block/pattern-matcher.cjs +16 -1
- package/templates/hooks/scout-block/tests/{test-broad-pattern-detector.js → test-broad-pattern-detector.cjs} +1 -61
- package/templates/hooks/scout-block/tests/{test-build-command-allowlist.js → test-build-command-allowlist.cjs} +1 -1
- package/templates/hooks/scout-block/tests/{test-error-formatter.js → test-error-formatter.cjs} +1 -1
- package/templates/hooks/scout-block/tests/{test-full-flow-edge-cases.js → test-full-flow-edge-cases.cjs} +1 -1
- package/templates/hooks/scout-block/tests/{test-monorepo-scenarios.js → test-monorepo-scenarios.cjs} +1 -1
- package/templates/hooks/scout-block/tests/{test-path-extractor.js → test-path-extractor.cjs} +1 -1
- package/templates/hooks/scout-block/tests/{test-pattern-matcher.js → test-pattern-matcher.cjs} +1 -1
- package/templates/hooks/scout-block.cjs +100 -87
- package/templates/hooks/session-init.cjs +197 -330
- package/templates/hooks/skill-dedup.cjs +268 -0
- package/templates/hooks/subagent-init.cjs +75 -22
- package/templates/hooks/task-completed-handler.cjs +118 -0
- package/templates/hooks/team-context-inject.cjs +176 -0
- package/templates/hooks/teammate-idle-handler.cjs +121 -0
- package/templates/hooks/tests/scout-block/broad-pattern-detector.test.cjs +231 -0
- package/templates/hooks/tests/scout-block/fixtures/ckignore-custom.txt +6 -0
- package/templates/hooks/tests/scout-block/fixtures/ckignore-default.txt +13 -0
- package/templates/hooks/tests/scout-block/fixtures/ckignore-negation.txt +8 -0
- package/templates/hooks/tests/scout-block/path-extractor.test.cjs +527 -0
- package/templates/hooks/tests/scout-block/pattern-matcher.test.cjs +293 -0
- package/templates/hooks/tests/scout-block/scout-checker.test.cjs +741 -0
- package/templates/hooks/tests/{test-ckignore.js → test-ckignore.cjs} +0 -0
- package/templates/hooks/tests/{test-modularization-hook.js → test-modularization-hook.cjs} +0 -0
- package/templates/hooks/tests/{test-privacy-block.js → test-privacy-block.cjs} +1 -1
- package/templates/hooks/tests/test-scout-block.cjs +315 -0
- package/templates/hooks/usage-context-awareness.cjs +179 -0
- package/templates/metadata.json +104 -0
- package/templates/{workflows → rules}/development-rules.md +12 -53
- package/templates/rules/orchestration-protocol.md +43 -0
- package/templates/{workflows → rules}/primary-workflow.md +16 -4
- package/templates/rules/team-coordination-rules.md +90 -0
- package/templates/schemas/ck-config.schema.json +381 -0
- package/templates/scripts/README.md +94 -198
- package/templates/scripts/ck-help.py +19 -855
- package/templates/scripts/commands_data.yaml +3 -621
- package/templates/scripts/fix-shebang-permissions.sh +50 -0
- package/templates/scripts/generate_catalogs.py +37 -8
- package/templates/scripts/resolve_env.py +0 -0
- package/templates/scripts/scan_commands.py +14 -96
- package/templates/scripts/scan_skills.py +59 -19
- package/templates/scripts/set-active-plan.cjs +8 -3
- package/templates/scripts/skills_data.yaml +2 -596
- package/templates/scripts/test-ck-help.py +15 -0
- package/templates/scripts/test_ck_help.py +139 -0
- package/templates/scripts/test_ck_help_integration.py +72 -0
- package/templates/scripts/validate-docs.cjs +342 -0
- package/templates/scripts/win_compat.py +0 -0
- package/templates/scripts/worktree.cjs +4 -652
- package/templates/scripts/worktree.test.cjs +5 -330
- package/templates/settings.json +104 -239
- package/templates/skills/README.md +95 -255
- package/templates/skills/THIRD_PARTY_NOTICES.md +405 -0
- package/templates/skills/agent-browser/SKILL.md +294 -0
- package/templates/skills/agent-browser/references/.gitkeep +0 -0
- package/templates/skills/agent-browser/references/agent-browser-vs-chrome-devtools.md +112 -0
- package/templates/skills/agent-browser/references/browserbase-cloud-setup.md +161 -0
- package/templates/skills/ai-artist/SKILL.md +103 -56
- package/templates/skills/ai-artist/data/awesome-prompts.csv +3592 -0
- package/templates/skills/ai-artist/data/lighting.csv +19 -0
- package/templates/skills/ai-artist/data/nano-banana-templates.csv +17 -0
- package/templates/skills/ai-artist/data/platforms.csv +11 -0
- package/templates/skills/ai-artist/data/styles.csv +26 -0
- package/templates/skills/ai-artist/data/techniques.csv +19 -0
- package/templates/skills/ai-artist/data/use-cases.csv +16 -0
- package/templates/skills/ai-artist/references/awesome-nano-banana-pro-prompts.md +8575 -0
- package/templates/skills/ai-artist/references/nano-banana.md +78 -1
- package/templates/skills/ai-artist/references/validation-workflow.md +117 -0
- package/templates/skills/ai-artist/scripts/core.py +197 -0
- package/templates/skills/ai-artist/scripts/extract_prompts.py +102 -0
- package/templates/skills/ai-artist/scripts/generate.py +370 -0
- package/templates/skills/ai-artist/scripts/search.py +147 -0
- package/templates/skills/ai-multimodal/SKILL.md +4 -3
- package/templates/skills/ai-multimodal/scripts/check_setup.py +12 -2
- package/templates/skills/ai-multimodal/scripts/document_converter.py +0 -0
- package/templates/skills/ai-multimodal/scripts/gemini_batch_process.py +3 -2
- package/templates/skills/ai-multimodal/scripts/media_optimizer.py +0 -0
- package/templates/skills/ask/SKILL.md +58 -0
- package/templates/skills/backend-development/SKILL.md +3 -2
- package/templates/skills/better-auth/SKILL.md +3 -2
- package/templates/skills/better-auth/scripts/better_auth_init.py +3 -3
- package/templates/skills/bootstrap/SKILL.md +101 -0
- package/templates/skills/bootstrap/references/shared-phases.md +59 -0
- package/templates/skills/bootstrap/references/workflow-auto.md +52 -0
- package/templates/skills/bootstrap/references/workflow-fast.md +50 -0
- package/templates/skills/bootstrap/references/workflow-full.md +60 -0
- package/templates/skills/bootstrap/references/workflow-parallel.md +59 -0
- package/templates/{commands/brainstorm.md → skills/brainstorm/SKILL.md} +21 -18
- package/templates/skills/chrome-devtools/SKILL.md +221 -68
- package/templates/skills/chrome-devtools/scripts/README.md +18 -0
- package/templates/skills/chrome-devtools/scripts/__tests__/error-handling.test.js +102 -0
- package/templates/skills/chrome-devtools/scripts/aria-snapshot.js +2 -1
- package/templates/skills/chrome-devtools/scripts/click.js +2 -1
- package/templates/skills/chrome-devtools/scripts/connect-chrome.js +146 -0
- package/templates/skills/chrome-devtools/scripts/console.js +3 -1
- package/templates/skills/chrome-devtools/scripts/evaluate.js +6 -3
- package/templates/skills/chrome-devtools/scripts/fill.js +2 -1
- package/templates/skills/chrome-devtools/scripts/import-cookies.js +205 -0
- package/templates/skills/chrome-devtools/scripts/inject-auth.js +2 -1
- package/templates/skills/chrome-devtools/scripts/install-deps.sh +0 -0
- package/templates/skills/chrome-devtools/scripts/install.sh +0 -0
- package/templates/skills/chrome-devtools/scripts/lib/browser.js +60 -4
- package/templates/skills/chrome-devtools/scripts/navigate.js +86 -2
- package/templates/skills/chrome-devtools/scripts/network.js +3 -1
- package/templates/skills/chrome-devtools/scripts/performance.js +3 -1
- package/templates/skills/chrome-devtools/scripts/screenshot.js +2 -1
- package/templates/skills/chrome-devtools/scripts/select-ref.js +2 -1
- package/templates/skills/chrome-devtools/scripts/snapshot.js +2 -1
- package/templates/skills/chrome-devtools/scripts/ws-debug.js +44 -0
- package/templates/skills/chrome-devtools/scripts/ws-full-debug.js +107 -0
- package/templates/skills/ck-help/SKILL.md +102 -0
- package/templates/skills/ck-help/scripts/ck-help.py +1321 -0
- package/templates/skills/ck-help/scripts/commands_data.yaml +3 -0
- package/templates/skills/ck-help/scripts/skills_data.yaml +593 -0
- package/templates/skills/code-review/SKILL.md +97 -93
- package/templates/skills/code-review/references/code-review-reception.md +113 -209
- package/templates/skills/code-review/references/codebase-scan-workflow.md +29 -0
- package/templates/skills/code-review/references/edge-case-scouting.md +119 -0
- package/templates/skills/code-review/references/parallel-review-workflow.md +69 -0
- package/templates/skills/code-review/references/requesting-code-review.md +115 -104
- package/templates/skills/code-review/references/task-management-reviews.md +140 -0
- package/templates/skills/code-review/references/verification-before-completion.md +138 -138
- package/templates/skills/coding-level/SKILL.md +56 -0
- package/templates/skills/common/README.md +120 -0
- package/templates/skills/common/api_key_helper.py +411 -0
- package/templates/skills/common/api_key_rotator.py +248 -0
- package/templates/skills/context-engineering/SKILL.md +108 -0
- package/templates/skills/context-engineering/references/context-compression.md +84 -0
- package/templates/skills/context-engineering/references/context-degradation.md +93 -0
- package/templates/skills/context-engineering/references/context-fundamentals.md +75 -0
- package/templates/skills/context-engineering/references/context-optimization.md +82 -0
- package/templates/skills/context-engineering/references/evaluation.md +89 -0
- package/templates/skills/context-engineering/references/memory-systems.md +88 -0
- package/templates/skills/context-engineering/references/multi-agent-patterns.md +90 -0
- package/templates/skills/context-engineering/references/project-development.md +97 -0
- package/templates/skills/context-engineering/references/runtime-awareness.md +202 -0
- package/templates/skills/context-engineering/references/tool-design.md +86 -0
- package/templates/skills/context-engineering/scripts/compression_evaluator.py +349 -0
- package/templates/skills/context-engineering/scripts/context_analyzer.py +317 -0
- package/templates/skills/context-engineering/scripts/tests/test_edge_cases.py +246 -0
- package/templates/skills/cook/README.md +86 -0
- package/templates/skills/cook/SKILL.md +113 -0
- package/templates/skills/cook/references/intent-detection.md +101 -0
- package/templates/skills/cook/references/review-cycle.md +75 -0
- package/templates/skills/cook/references/subagent-patterns.md +75 -0
- package/templates/skills/cook/references/workflow-steps.md +172 -0
- package/templates/skills/copywriting/SKILL.md +94 -0
- package/templates/skills/copywriting/references/copy-formulas.md +150 -0
- package/templates/skills/copywriting/references/cta-patterns.md +168 -0
- package/templates/skills/copywriting/references/email-copy.md +193 -0
- package/templates/skills/copywriting/references/headline-templates.md +140 -0
- package/templates/skills/copywriting/references/landing-page-copy.md +175 -0
- package/templates/skills/copywriting/references/power-words.md +189 -0
- package/templates/skills/copywriting/references/social-media-copy.md +222 -0
- package/templates/skills/copywriting/references/workflow-cro.md +83 -0
- package/templates/skills/copywriting/references/workflow-enhance.md +32 -0
- package/templates/skills/copywriting/references/workflow-fast.md +29 -0
- package/templates/skills/copywriting/references/workflow-good.md +39 -0
- package/templates/skills/copywriting/references/writing-styles.md +247 -0
- package/templates/skills/copywriting/scripts/extract-writing-styles.py +308 -0
- package/templates/skills/copywriting/templates/copy-brief.md +49 -0
- package/templates/skills/databases/SKILL.md +7 -155
- package/templates/skills/databases/analytics.md +198 -0
- package/templates/skills/databases/db-design.md +188 -0
- package/templates/skills/databases/incremental-etl.md +213 -0
- package/templates/skills/databases/scripts/db_backup.py +0 -0
- package/templates/skills/databases/scripts/db_migrate.py +3 -2
- package/templates/skills/databases/scripts/db_performance_check.py +3 -2
- package/templates/skills/databases/stacks/bigquery.md +231 -0
- package/templates/skills/databases/stacks/d1_cloudflare.md +137 -0
- package/templates/skills/databases/stacks/mysql.md +216 -0
- package/templates/skills/databases/stacks/postgres.md +235 -0
- package/templates/skills/databases/stacks/sqlite.md +244 -0
- package/templates/skills/databases/transactional.md +176 -0
- package/templates/skills/debug/SKILL.md +121 -0
- package/templates/skills/debug/references/frontend-verification.md +103 -0
- package/templates/skills/debug/references/investigation-methodology.md +101 -0
- package/templates/skills/debug/references/log-and-ci-analysis.md +97 -0
- package/templates/skills/debug/references/performance-diagnostics.md +113 -0
- package/templates/skills/debug/references/reporting-standards.md +122 -0
- package/templates/skills/debug/references/task-management-debugging.md +155 -0
- package/templates/skills/devops/SKILL.md +65 -253
- package/templates/skills/devops/references/kubernetes-basics.md +99 -0
- package/templates/skills/devops/references/kubernetes-helm-advanced.md +75 -0
- package/templates/skills/devops/references/kubernetes-helm.md +81 -0
- package/templates/skills/devops/references/kubernetes-kubectl.md +74 -0
- package/templates/skills/devops/references/kubernetes-security-advanced.md +98 -0
- package/templates/skills/devops/references/kubernetes-security.md +95 -0
- package/templates/skills/devops/references/kubernetes-troubleshooting-advanced.md +74 -0
- package/templates/skills/devops/references/kubernetes-troubleshooting.md +49 -0
- package/templates/skills/devops/references/kubernetes-workflows-advanced.md +75 -0
- package/templates/skills/devops/references/kubernetes-workflows.md +78 -0
- package/templates/skills/devops/scripts/cloudflare_deploy.py +0 -0
- package/templates/skills/devops/scripts/docker_optimize.py +3 -2
- package/templates/skills/docs/SKILL.md +55 -0
- package/templates/skills/docs/references/init-workflow.md +32 -0
- package/templates/skills/docs/references/summarize-workflow.md +18 -0
- package/templates/skills/docs/references/update-workflow.md +59 -0
- package/templates/skills/docs-seeker/SKILL.md +3 -2
- package/templates/skills/docs-seeker/scripts/analyze-llms-txt.js +0 -0
- package/templates/skills/docs-seeker/scripts/detect-topic.js +0 -0
- package/templates/skills/docs-seeker/scripts/fetch-docs.js +0 -0
- package/templates/skills/docs-seeker/scripts/tests/run-tests.js +0 -0
- package/templates/skills/docs-seeker/scripts/tests/test-analyze-llms.js +0 -0
- package/templates/skills/docs-seeker/scripts/tests/test-detect-topic.js +0 -0
- package/templates/skills/docs-seeker/scripts/tests/test-fetch-docs.js +0 -0
- package/templates/skills/docs-seeker/scripts/utils/env-loader.js +0 -0
- package/templates/skills/document-skills/docx/SKILL.md +2 -2
- package/templates/skills/document-skills/docx/ooxml/scripts/pack.py +0 -0
- package/templates/skills/document-skills/docx/ooxml/scripts/unpack.py +0 -0
- package/templates/skills/document-skills/docx/ooxml/scripts/validate.py +0 -0
- package/templates/skills/document-skills/docx/scripts/document.py +0 -0
- package/templates/skills/document-skills/docx/scripts/utilities.py +0 -0
- package/templates/skills/document-skills/pdf/SKILL.md +2 -2
- package/templates/skills/document-skills/pptx/SKILL.md +2 -2
- package/templates/skills/document-skills/pptx/ooxml/scripts/pack.py +0 -0
- package/templates/skills/document-skills/pptx/ooxml/scripts/unpack.py +0 -0
- package/templates/skills/document-skills/pptx/ooxml/scripts/validate.py +0 -0
- package/templates/skills/document-skills/pptx/scripts/inventory.py +0 -0
- package/templates/skills/document-skills/pptx/scripts/rearrange.py +0 -0
- package/templates/skills/document-skills/pptx/scripts/replace.py +0 -0
- package/templates/skills/document-skills/pptx/scripts/thumbnail.py +0 -0
- package/templates/skills/document-skills/xlsx/SKILL.md +2 -2
- package/templates/skills/document-skills/xlsx/recalc.py +3 -2
- package/templates/skills/find-skills/SKILL.md +134 -0
- package/templates/skills/fix/SKILL.md +111 -0
- package/templates/skills/fix/references/complexity-assessment.md +72 -0
- package/templates/skills/fix/references/mode-selection.md +46 -0
- package/templates/skills/fix/references/parallel-exploration.md +100 -0
- package/templates/skills/fix/references/review-cycle.md +77 -0
- package/templates/skills/fix/references/skill-activation-matrix.md +78 -0
- package/templates/skills/fix/references/task-orchestration.md +103 -0
- package/templates/skills/fix/references/workflow-ci.md +28 -0
- package/templates/skills/fix/references/workflow-deep.md +122 -0
- package/templates/skills/fix/references/workflow-logs.md +72 -0
- package/templates/skills/fix/references/workflow-quick.md +59 -0
- package/templates/skills/fix/references/workflow-standard.md +111 -0
- package/templates/skills/fix/references/workflow-test.md +75 -0
- package/templates/skills/fix/references/workflow-types.md +33 -0
- package/templates/skills/fix/references/workflow-ui.md +75 -0
- package/templates/skills/frontend-design/SKILL.md +78 -91
- package/templates/skills/frontend-design/references/ai-multimodal-overview.md +6 -6
- package/templates/skills/frontend-design/references/animejs.md +395 -395
- package/templates/skills/frontend-design/references/asset-generation.md +4 -4
- package/templates/skills/frontend-design/references/visual-analysis-overview.md +1 -1
- package/templates/skills/frontend-design/references/workflow-3d.md +102 -0
- package/templates/skills/frontend-design/references/workflow-describe.md +87 -0
- package/templates/skills/frontend-design/references/workflow-immersive.md +87 -0
- package/templates/skills/frontend-design/references/workflow-quick.md +57 -0
- package/templates/skills/frontend-design/references/workflow-screenshot.md +63 -0
- package/templates/skills/frontend-design/references/workflow-video.md +74 -0
- package/templates/skills/frontend-development/SKILL.md +4 -3
- package/templates/skills/git/SKILL.md +114 -0
- package/templates/skills/git/references/branch-management.md +88 -0
- package/templates/skills/git/references/commit-standards.md +46 -0
- package/templates/skills/git/references/gh-cli-guide.md +109 -0
- package/templates/skills/git/references/safety-protocols.md +69 -0
- package/templates/skills/git/references/workflow-commit.md +58 -0
- package/templates/skills/git/references/workflow-merge.md +48 -0
- package/templates/skills/git/references/workflow-pr.md +58 -0
- package/templates/skills/git/references/workflow-push.md +52 -0
- package/templates/skills/gkg/SKILL.md +91 -0
- package/templates/skills/gkg/references/cli-commands.md +106 -0
- package/templates/skills/gkg/references/http-api.md +102 -0
- package/templates/skills/gkg/references/language-support.md +57 -0
- package/templates/skills/gkg/references/mcp-tools.md +99 -0
- package/templates/skills/google-adk-python/SKILL.md +91 -195
- package/templates/skills/google-adk-python/references/agent-types-and-architecture.md +128 -0
- package/templates/skills/google-adk-python/references/callbacks-plugins-observability.md +117 -0
- package/templates/skills/google-adk-python/references/deployment-cloud-run-vertex-gke.md +138 -0
- package/templates/skills/google-adk-python/references/evaluation-testing-cli.md +112 -0
- package/templates/skills/google-adk-python/references/multi-agent-and-a2a-protocol.md +145 -0
- package/templates/skills/google-adk-python/references/sessions-state-memory-artifacts.md +131 -0
- package/templates/skills/google-adk-python/references/tools-and-mcp-integration.md +146 -0
- package/templates/skills/install.ps1 +130 -26
- package/templates/skills/install.sh +383 -63
- package/templates/{commands/journal.md → skills/journal/SKILL.md} +5 -1
- package/templates/skills/kanban/SKILL.md +99 -0
- package/templates/skills/markdown-novel-viewer/SKILL.md +314 -0
- package/templates/skills/markdown-novel-viewer/assets/directory-browser.css +215 -0
- package/templates/skills/markdown-novel-viewer/assets/favicon.png +0 -0
- package/templates/skills/markdown-novel-viewer/assets/novel-theme.css +16 -0
- package/templates/skills/markdown-novel-viewer/assets/reader.js +838 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-base.css +54 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-components.css +180 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-content.css +176 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-header.css +217 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-mermaid.css +153 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-overlays.css +202 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-responsive.css +285 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-sidebar.css +359 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-variables.css +56 -0
- package/templates/skills/markdown-novel-viewer/assets/template.html +149 -0
- package/templates/skills/markdown-novel-viewer/bun.lock +38 -0
- package/templates/skills/markdown-novel-viewer/package.json +15 -0
- package/templates/skills/markdown-novel-viewer/scripts/lib/http-server.cjs +434 -0
- package/templates/skills/markdown-novel-viewer/scripts/lib/markdown-renderer.cjs +335 -0
- package/templates/skills/markdown-novel-viewer/scripts/lib/plan-navigator.cjs +571 -0
- package/templates/skills/markdown-novel-viewer/scripts/lib/port-finder.cjs +48 -0
- package/templates/skills/markdown-novel-viewer/scripts/lib/process-mgr.cjs +150 -0
- package/templates/skills/markdown-novel-viewer/scripts/server.cjs +411 -0
- package/templates/skills/markdown-novel-viewer/scripts/tests/server.test.cjs +283 -0
- package/templates/skills/markdown-novel-viewer/tests/dashboard-assets.test.cjs +340 -0
- package/templates/skills/markdown-novel-viewer/tests/dashboard-renderer.test.cjs +404 -0
- package/templates/skills/markdown-novel-viewer/tests/http-server.test.cjs +271 -0
- package/templates/skills/markdown-novel-viewer/tests/run-tests.cjs +51 -0
- package/templates/skills/markdown-novel-viewer/tests/test-framework.cjs +154 -0
- package/templates/skills/markdown-novel-viewer/tests/verify-xss.cjs +90 -0
- package/templates/skills/mcp-builder/SKILL.md +3 -2
- package/templates/skills/mcp-builder/scripts/evaluation.py +9 -1
- package/templates/skills/mcp-management/SKILL.md +8 -7
- package/templates/skills/mcp-management/references/gemini-cli-integration.md +16 -10
- package/templates/skills/mcp-management/scripts/cli.ts +0 -0
- package/templates/skills/mcp-management/scripts/dist/analyze-tools.js +0 -0
- package/templates/skills/mcp-management/scripts/dist/cli.js +0 -0
- package/templates/skills/mcp-management/scripts/dist/mcp-client.js +0 -0
- package/templates/skills/mcp-management/scripts/mcp-client.ts +0 -0
- package/templates/skills/media-processing/SKILL.md +3 -2
- package/templates/skills/media-processing/scripts/batch-remove-background.sh +0 -0
- package/templates/skills/media-processing/scripts/batch_resize.py +0 -0
- package/templates/skills/media-processing/scripts/media_convert.py +0 -0
- package/templates/skills/media-processing/scripts/remove-background.sh +0 -0
- package/templates/skills/media-processing/scripts/remove-bg-node.js +0 -0
- package/templates/skills/media-processing/scripts/tests/test_batch_resize.py +0 -0
- package/templates/skills/media-processing/scripts/tests/test_media_convert.py +0 -0
- package/templates/skills/media-processing/scripts/tests/test_video_optimize.py +0 -0
- package/templates/skills/media-processing/scripts/video_optimize.py +0 -0
- package/templates/skills/mermaidjs-v11/SKILL.md +116 -0
- package/templates/skills/mermaidjs-v11/references/cli-usage.md +228 -0
- package/templates/skills/mermaidjs-v11/references/configuration.md +232 -0
- package/templates/skills/mermaidjs-v11/references/diagram-types.md +315 -0
- package/templates/skills/mermaidjs-v11/references/examples.md +344 -0
- package/templates/skills/mermaidjs-v11/references/integration.md +310 -0
- package/templates/skills/mintlify/SKILL.md +121 -0
- package/templates/skills/mintlify/references/ai-features-and-integrations-reference.md +756 -0
- package/templates/skills/mintlify/references/api-documentation-components-reference.md +873 -0
- package/templates/skills/mintlify/references/deployment-and-continuous-integration-reference.md +674 -0
- package/templates/skills/mintlify/references/docs-json-configuration-reference.md +724 -0
- package/templates/skills/mintlify/references/mdx-components-reference.md +551 -0
- package/templates/skills/mintlify/references/navigation-structure-and-organization-reference.md +775 -0
- package/templates/skills/mobile-development/SKILL.md +3 -2
- package/templates/skills/payment-integration/README.md +44 -12
- package/templates/skills/payment-integration/SKILL.md +82 -97
- package/templates/skills/payment-integration/references/creem/api.md +139 -0
- package/templates/skills/payment-integration/references/creem/checkouts.md +99 -0
- package/templates/skills/payment-integration/references/creem/licensing.md +136 -0
- package/templates/skills/payment-integration/references/creem/overview.md +65 -0
- package/templates/skills/payment-integration/references/creem/sdk.md +161 -0
- package/templates/skills/payment-integration/references/creem/subscriptions.md +129 -0
- package/templates/skills/payment-integration/references/creem/webhooks.md +120 -0
- package/templates/skills/payment-integration/references/implementation-workflows.md +43 -0
- package/templates/skills/payment-integration/references/multi-provider-order-management-patterns.md +821 -0
- package/templates/skills/payment-integration/references/paddle/api.md +116 -0
- package/templates/skills/payment-integration/references/paddle/best-practices.md +130 -0
- package/templates/skills/payment-integration/references/paddle/overview.md +57 -0
- package/templates/skills/payment-integration/references/paddle/paddle-js.md +106 -0
- package/templates/skills/payment-integration/references/paddle/sdk.md +131 -0
- package/templates/skills/payment-integration/references/paddle/subscriptions.md +118 -0
- package/templates/skills/payment-integration/references/paddle/webhooks.md +112 -0
- package/templates/skills/payment-integration/references/polar/best-practices.md +781 -361
- package/templates/skills/payment-integration/references/sepay/best-practices.md +870 -268
- package/templates/skills/payment-integration/references/stripe/stripe-best-practices.md +32 -0
- package/templates/skills/payment-integration/references/stripe/stripe-cli.md +148 -0
- package/templates/skills/payment-integration/references/stripe/stripe-js.md +116 -0
- package/templates/skills/payment-integration/references/stripe/stripe-sdks.md +84 -0
- package/templates/skills/payment-integration/references/stripe/stripe-upgrade.md +175 -0
- package/templates/skills/payment-integration/scripts/checkout-helper.js +0 -0
- package/templates/skills/payment-integration/scripts/polar-webhook-verify.js +0 -0
- package/templates/skills/payment-integration/scripts/sepay-webhook-verify.js +0 -0
- package/templates/skills/payment-integration/scripts/test-scripts.js +0 -0
- package/templates/skills/plan/SKILL.md +137 -0
- package/templates/skills/plan/references/archive-workflow.md +53 -0
- package/templates/skills/{planning → plan}/references/codebase-understanding.md +1 -1
- package/templates/skills/{planning → plan}/references/output-standards.md +15 -1
- package/templates/skills/{planning → plan}/references/plan-organization.md +12 -19
- package/templates/skills/plan/references/red-team-personas.md +69 -0
- package/templates/skills/plan/references/red-team-workflow.md +77 -0
- package/templates/skills/{planning → plan}/references/research-phase.md +2 -2
- package/templates/skills/plan/references/task-management.md +132 -0
- package/templates/skills/plan/references/validate-question-framework.md +80 -0
- package/templates/skills/plan/references/validate-workflow.md +65 -0
- package/templates/skills/plan/references/workflow-modes.md +145 -0
- package/templates/skills/plans-kanban/SKILL.md +167 -0
- package/templates/skills/plans-kanban/assets/dashboard-template.html +119 -0
- package/templates/skills/plans-kanban/assets/dashboard.css +1594 -0
- package/templates/skills/plans-kanban/assets/dashboard.js +596 -0
- package/templates/skills/plans-kanban/assets/favicon.png +0 -0
- package/templates/skills/plans-kanban/package.json +13 -0
- package/templates/skills/plans-kanban/scripts/lib/dashboard-renderer.cjs +884 -0
- package/templates/skills/plans-kanban/scripts/lib/http-server.cjs +310 -0
- package/templates/skills/plans-kanban/scripts/lib/plan-metadata-extractor.cjs +489 -0
- package/templates/skills/plans-kanban/scripts/lib/plan-parser.cjs +175 -0
- package/templates/skills/plans-kanban/scripts/lib/plan-scanner.cjs +272 -0
- package/templates/skills/plans-kanban/scripts/lib/port-finder.cjs +48 -0
- package/templates/skills/plans-kanban/scripts/lib/process-mgr.cjs +128 -0
- package/templates/skills/plans-kanban/scripts/server.cjs +260 -0
- package/templates/skills/preview/SKILL.md +75 -0
- package/templates/skills/preview/references/generation-modes.md +95 -0
- package/templates/skills/preview/references/view-mode.md +42 -0
- package/templates/skills/problem-solving/SKILL.md +3 -2
- package/templates/skills/project-management/SKILL.md +122 -0
- package/templates/skills/project-management/references/documentation-triggers.md +60 -0
- package/templates/skills/project-management/references/hydration-workflow.md +85 -0
- package/templates/skills/project-management/references/progress-tracking.md +96 -0
- package/templates/skills/project-management/references/reporting-patterns.md +94 -0
- package/templates/skills/project-management/references/task-operations.md +85 -0
- package/templates/skills/react-best-practices/AGENTS.md +2249 -0
- package/templates/skills/react-best-practices/README.md +123 -0
- package/templates/skills/react-best-practices/SKILL.md +122 -0
- package/templates/skills/react-best-practices/metadata.json +15 -0
- package/templates/skills/react-best-practices/rules/_sections.md +46 -0
- package/templates/skills/react-best-practices/rules/_template.md +28 -0
- package/templates/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/templates/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/templates/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/templates/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/templates/skills/react-best-practices/rules/async-dependencies.md +36 -0
- package/templates/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/templates/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/templates/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/templates/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/templates/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/templates/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/templates/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/templates/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/templates/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/templates/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/templates/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/templates/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/templates/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/templates/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/templates/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/templates/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/templates/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/templates/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/templates/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/templates/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/templates/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/templates/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/templates/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/templates/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/templates/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/templates/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/templates/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/templates/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/templates/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/templates/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/templates/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/templates/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/templates/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/templates/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/templates/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/templates/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/templates/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/templates/skills/react-best-practices/rules/server-cache-react.md +26 -0
- package/templates/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
- package/templates/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/templates/skills/remotion/SKILL.md +44 -0
- package/templates/skills/remotion/rules/3d.md +86 -0
- package/templates/skills/remotion/rules/animations.md +29 -0
- package/templates/skills/remotion/rules/assets/charts-bar-chart.tsx +173 -0
- package/templates/skills/remotion/rules/assets/text-animations-typewriter.tsx +100 -0
- package/templates/skills/remotion/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/templates/skills/remotion/rules/assets.md +78 -0
- package/templates/skills/remotion/rules/audio.md +172 -0
- package/templates/skills/remotion/rules/calculate-metadata.md +104 -0
- package/templates/skills/remotion/rules/can-decode.md +75 -0
- package/templates/skills/remotion/rules/charts.md +58 -0
- package/templates/skills/remotion/rules/compositions.md +146 -0
- package/templates/skills/remotion/rules/display-captions.md +126 -0
- package/templates/skills/remotion/rules/extract-frames.md +229 -0
- package/templates/skills/remotion/rules/fonts.md +152 -0
- package/templates/skills/remotion/rules/get-audio-duration.md +58 -0
- package/templates/skills/remotion/rules/get-video-dimensions.md +68 -0
- package/templates/skills/remotion/rules/get-video-duration.md +58 -0
- package/templates/skills/remotion/rules/gifs.md +138 -0
- package/templates/skills/remotion/rules/images.md +130 -0
- package/templates/skills/remotion/rules/import-srt-captions.md +67 -0
- package/templates/skills/remotion/rules/lottie.md +68 -0
- package/templates/skills/remotion/rules/measuring-dom-nodes.md +35 -0
- package/templates/skills/remotion/rules/measuring-text.md +143 -0
- package/templates/skills/remotion/rules/sequencing.md +106 -0
- package/templates/skills/remotion/rules/tailwind.md +11 -0
- package/templates/skills/remotion/rules/text-animations.md +20 -0
- package/templates/skills/remotion/rules/timing.md +179 -0
- package/templates/skills/remotion/rules/transcribe-captions.md +19 -0
- package/templates/skills/remotion/rules/transitions.md +122 -0
- package/templates/skills/remotion/rules/trimming.md +53 -0
- package/templates/skills/remotion/rules/videos.md +171 -0
- package/templates/skills/repomix/SKILL.md +3 -2
- package/templates/skills/repomix/scripts/repomix_batch.py +0 -0
- package/templates/skills/research/SKILL.md +9 -6
- package/templates/skills/scout/SKILL.md +89 -0
- package/templates/skills/scout/references/external-scouting.md +140 -0
- package/templates/skills/scout/references/internal-scouting.md +119 -0
- package/templates/skills/scout/references/task-management-scouting.md +125 -0
- package/templates/skills/sequential-thinking/SKILL.md +3 -2
- package/templates/skills/sequential-thinking/scripts/format-thought.js +0 -0
- package/templates/skills/sequential-thinking/scripts/process-thought.js +0 -0
- package/templates/skills/shader/SKILL.md +113 -0
- package/templates/skills/shader/references/glsl-cellular-voronoi-worley-noise-patterns.md +142 -0
- package/templates/skills/shader/references/glsl-colors-rgb-hsb-gradients-mixing-color-spaces.md +143 -0
- package/templates/skills/shader/references/glsl-fbm-fractional-brownian-motion-turbulence-octaves.md +146 -0
- package/templates/skills/shader/references/glsl-fundamentals-data-types-vectors-precision-coordinates.md +104 -0
- package/templates/skills/shader/references/glsl-noise-random-perlin-simplex-cellular-voronoi.md +115 -0
- package/templates/skills/shader/references/glsl-pattern-symmetry-truchet-domain-warping.md +134 -0
- package/templates/skills/shader/references/glsl-patterns-tiling-fract-matrices-transformations.md +133 -0
- package/templates/skills/shader/references/glsl-procedural-textures-clouds-marble-wood-terrain.md +144 -0
- package/templates/skills/shader/references/glsl-shader-builtin-functions-complete-api-reference.md +112 -0
- package/templates/skills/shader/references/glsl-shapes-polygon-star-polar-sdf-combinations.md +124 -0
- package/templates/skills/shader/references/glsl-shapes-sdf-circles-rectangles-polar-distance-fields.md +106 -0
- package/templates/skills/shader/references/glsl-shaping-functions-step-smoothstep-curves-interpolation.md +141 -0
- package/templates/skills/shopify/SKILL.md +3 -2
- package/templates/skills/shopify/scripts/shopify_init.py +5 -5
- package/templates/skills/skill-creator/SKILL.md +91 -238
- package/templates/skills/skill-creator/references/benchmark-optimization-guide.md +86 -0
- package/templates/skills/skill-creator/references/distribution-guide.md +79 -0
- package/templates/skills/skill-creator/references/mcp-skills-integration.md +71 -0
- package/templates/skills/skill-creator/references/metadata-quality-criteria.md +76 -0
- package/templates/skills/skill-creator/references/plugin-marketplace-hosting.md +104 -0
- package/templates/skills/skill-creator/references/plugin-marketplace-overview.md +89 -0
- package/templates/skills/skill-creator/references/plugin-marketplace-schema.md +93 -0
- package/templates/skills/skill-creator/references/plugin-marketplace-sources.md +103 -0
- package/templates/skills/skill-creator/references/plugin-marketplace-troubleshooting.md +76 -0
- package/templates/skills/skill-creator/references/script-quality-criteria.md +106 -0
- package/templates/skills/skill-creator/references/skill-anatomy-and-requirements.md +76 -0
- package/templates/skills/skill-creator/references/skill-creation-workflow.md +95 -0
- package/templates/skills/skill-creator/references/skill-design-patterns.md +75 -0
- package/templates/skills/skill-creator/references/skillmark-benchmark-criteria.md +102 -0
- package/templates/skills/skill-creator/references/structure-organization-criteria.md +114 -0
- package/templates/skills/skill-creator/references/testing-and-iteration.md +78 -0
- package/templates/skills/skill-creator/references/token-efficiency-criteria.md +74 -0
- package/templates/skills/skill-creator/references/troubleshooting-guide.md +80 -0
- package/templates/skills/skill-creator/references/validation-checklist.md +83 -0
- package/templates/skills/skill-creator/references/writing-effective-instructions.md +88 -0
- package/templates/skills/skill-creator/references/yaml-frontmatter-reference.md +91 -0
- package/templates/skills/skill-creator/scripts/debug.zip +0 -0
- package/templates/skills/skill-creator/scripts/encoding_utils.py +36 -0
- package/templates/skills/skill-creator/scripts/init_skill.py +9 -4
- package/templates/skills/skill-creator/scripts/package_skill.py +5 -0
- package/templates/skills/skill-creator/scripts/quick_validate.py +6 -2
- package/templates/skills/tanstack/SKILL.md +141 -0
- package/templates/skills/tanstack/references/tanstack-ai.md +97 -0
- package/templates/skills/tanstack/references/tanstack-form.md +125 -0
- package/templates/skills/tanstack/references/tanstack-start.md +100 -0
- package/templates/skills/team/SKILL.md +285 -0
- package/templates/skills/team/references/agent-teams-controls-and-modes.md +107 -0
- package/templates/skills/team/references/agent-teams-examples-and-best-practices.md +182 -0
- package/templates/skills/team/references/agent-teams-official-docs.md +175 -0
- package/templates/skills/template-skill/SKILL.md +1 -1
- package/templates/skills/test/SKILL.md +109 -0
- package/templates/skills/test/references/report-format.md +58 -0
- package/templates/skills/test/references/test-execution-workflow.md +103 -0
- package/templates/skills/test/references/ui-testing-workflow.md +65 -0
- package/templates/skills/threejs/SKILL.md +106 -53
- package/templates/skills/threejs/data/api-reference.csv +61 -0
- package/templates/skills/threejs/data/categories.csv +14 -0
- package/templates/skills/threejs/data/examples-all.csv +557 -0
- package/templates/skills/threejs/data/use-cases.csv +21 -0
- package/templates/skills/threejs/references/00-fundamentals.md +487 -0
- package/templates/skills/threejs/references/11-materials-advanced.md +1 -1
- package/templates/skills/threejs/references/11-materials.md +519 -0
- package/templates/skills/threejs/references/17-shader.md +641 -0
- package/templates/skills/threejs/references/18-geometry.md +547 -0
- package/templates/skills/threejs/scripts/core.py +236 -0
- package/templates/skills/threejs/scripts/extract_examples.py +688 -0
- package/templates/skills/threejs/scripts/generate_csv_from_json.py +135 -0
- package/templates/skills/threejs/scripts/search.py +77 -0
- package/templates/skills/ui-styling/SKILL.md +3 -2
- package/templates/skills/ui-styling/scripts/shadcn_add.py +0 -0
- package/templates/skills/ui-styling/scripts/tailwind_config_gen.py +1 -1
- package/templates/skills/ui-ux-pro-max/SKILL.md +69 -32
- package/templates/skills/ui-ux-pro-max/data/charts.csv +25 -25
- package/templates/skills/ui-ux-pro-max/data/colors.csv +96 -96
- package/templates/skills/ui-ux-pro-max/data/landing.csv +30 -30
- package/templates/skills/ui-ux-pro-max/data/products.csv +96 -96
- package/templates/skills/ui-ux-pro-max/data/prompts.csv +20 -20
- package/templates/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
- package/templates/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
- package/templates/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
- package/templates/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
- package/templates/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
- package/templates/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
- package/templates/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
- package/templates/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
- package/templates/skills/ui-ux-pro-max/data/styles.csv +58 -58
- package/templates/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/templates/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
- package/templates/skills/ui-ux-pro-max/scripts/design_system.py +494 -0
- package/templates/skills/ui-ux-pro-max/scripts/search.py +84 -61
- package/templates/skills/use-mcp/SKILL.md +42 -0
- package/templates/skills/watzup/SKILL.md +12 -0
- package/templates/skills/web-design-guidelines/SKILL.md +36 -0
- package/templates/skills/web-frameworks/SKILL.md +4 -3
- package/templates/skills/web-frameworks/scripts/nextjs_init.py +13 -13
- package/templates/skills/web-frameworks/scripts/turborepo_migrate.py +0 -0
- package/templates/skills/web-testing/SKILL.md +97 -0
- package/templates/skills/web-testing/references/accessibility-testing.md +84 -0
- package/templates/skills/web-testing/references/api-testing.md +78 -0
- package/templates/skills/web-testing/references/ci-cd-testing-workflows.md +121 -0
- package/templates/skills/web-testing/references/component-testing.md +94 -0
- package/templates/skills/web-testing/references/contract-testing.md +146 -0
- package/templates/skills/web-testing/references/cross-browser-checklist.md +72 -0
- package/templates/skills/web-testing/references/database-testing.md +139 -0
- package/templates/skills/web-testing/references/e2e-testing-playwright.md +119 -0
- package/templates/skills/web-testing/references/functional-testing-checklist.md +88 -0
- package/templates/skills/web-testing/references/interactive-testing-patterns.md +89 -0
- package/templates/skills/web-testing/references/load-testing-k6.md +93 -0
- package/templates/skills/web-testing/references/mobile-gesture-testing.md +85 -0
- package/templates/skills/web-testing/references/performance-core-web-vitals.md +124 -0
- package/templates/skills/web-testing/references/playwright-component-testing.md +115 -0
- package/templates/skills/web-testing/references/pre-release-checklist.md +75 -0
- package/templates/skills/web-testing/references/security-checklists.md +81 -0
- package/templates/skills/web-testing/references/security-testing-overview.md +92 -0
- package/templates/skills/web-testing/references/shadow-dom-testing.md +70 -0
- package/templates/skills/web-testing/references/test-data-management.md +131 -0
- package/templates/skills/web-testing/references/test-flakiness-mitigation.md +86 -0
- package/templates/skills/web-testing/references/testing-pyramid-strategy.md +76 -0
- package/templates/skills/web-testing/references/unit-integration-testing.md +138 -0
- package/templates/skills/web-testing/references/visual-regression.md +92 -0
- package/templates/skills/web-testing/references/vulnerability-payloads.md +93 -0
- package/templates/skills/web-testing/scripts/analyze-test-results.js +280 -0
- package/templates/skills/web-testing/scripts/init-playwright.js +233 -0
- package/templates/skills/worktree/SKILL.md +96 -0
- package/templates/skills/worktree/scripts/worktree.cjs +916 -0
- package/templates/skills/worktree/scripts/worktree.test.cjs +792 -0
- package/templates/statusline.cjs +477 -244
- package/templates/statusline.ps1 +0 -1
- package/templates/statusline.sh +0 -1
- package/templates/agents/README.md +0 -172
- package/templates/agents/copywriter.md +0 -113
- package/templates/agents/database-admin.md +0 -97
- package/templates/agents/scout-external.md +0 -146
- package/templates/agents/scout.md +0 -260
- package/templates/commands/README.md +0 -251
- package/templates/commands/bootstrap/auto/fast.md +0 -111
- package/templates/commands/bootstrap/auto/parallel.md +0 -66
- package/templates/commands/bootstrap/auto.md +0 -115
- package/templates/commands/bootstrap.md +0 -137
- package/templates/commands/build.md +0 -39
- package/templates/commands/checkpoint.md +0 -156
- package/templates/commands/code/auto.md +0 -170
- package/templates/commands/code/no-test.md +0 -158
- package/templates/commands/code/parallel.md +0 -55
- package/templates/commands/code-simplifier.md +0 -71
- package/templates/commands/code.md +0 -176
- package/templates/commands/compact.md +0 -57
- package/templates/commands/content/cro.md +0 -43
- package/templates/commands/content/enhance.md +0 -14
- package/templates/commands/content/fast.md +0 -13
- package/templates/commands/content/good.md +0 -16
- package/templates/commands/context.md +0 -48
- package/templates/commands/cook/auto/fast.md +0 -26
- package/templates/commands/cook/auto/parallel.md +0 -49
- package/templates/commands/cook/auto.md +0 -15
- package/templates/commands/cook/fast.md +0 -47
- package/templates/commands/cook/hard.md +0 -80
- package/templates/commands/cook/parallel.md +0 -90
- package/templates/commands/cook.md +0 -105
- package/templates/commands/create-feature.md +0 -48
- package/templates/commands/db-migrate.md +0 -52
- package/templates/commands/debug.md +0 -13
- package/templates/commands/design/3d.md +0 -83
- package/templates/commands/design/describe.md +0 -23
- package/templates/commands/design/fast.md +0 -31
- package/templates/commands/design/good.md +0 -35
- package/templates/commands/design/screenshot.md +0 -34
- package/templates/commands/design/video.md +0 -34
- package/templates/commands/docs/init.md +0 -39
- package/templates/commands/docs/summarize.md +0 -31
- package/templates/commands/docs/update.md +0 -57
- package/templates/commands/feature.md +0 -62
- package/templates/commands/fix/ci.md +0 -17
- package/templates/commands/fix/fast.md +0 -19
- package/templates/commands/fix/hard.md +0 -39
- package/templates/commands/fix/logs.md +0 -26
- package/templates/commands/fix/parallel.md +0 -54
- package/templates/commands/fix/test.md +0 -20
- package/templates/commands/fix/types.md +0 -9
- package/templates/commands/fix/ui.md +0 -48
- package/templates/commands/fix-issue.md +0 -177
- package/templates/commands/fix.md +0 -43
- package/templates/commands/generate-dto.md +0 -67
- package/templates/commands/git/cm.md +0 -5
- package/templates/commands/git/cp.md +0 -4
- package/templates/commands/git/merge.md +0 -40
- package/templates/commands/git/pr.md +0 -48
- package/templates/commands/integrate/polar.md +0 -28
- package/templates/commands/integrate/sepay.md +0 -28
- package/templates/commands/investigate.md +0 -324
- package/templates/commands/lint.md +0 -47
- package/templates/commands/migration.md +0 -111
- package/templates/commands/performance.md +0 -110
- package/templates/commands/plan/ci.md +0 -33
- package/templates/commands/plan/cro.md +0 -69
- package/templates/commands/plan/fast.md +0 -86
- package/templates/commands/plan/hard.md +0 -103
- package/templates/commands/plan/parallel.md +0 -152
- package/templates/commands/plan/preview.md +0 -40
- package/templates/commands/plan/two.md +0 -52
- package/templates/commands/plan/validate.md +0 -132
- package/templates/commands/plan.md +0 -36
- package/templates/commands/pr.md +0 -49
- package/templates/commands/preview.md +0 -87
- package/templates/commands/release-notes.md +0 -144
- package/templates/commands/review/post-task.md +0 -157
- package/templates/commands/review-changes.md +0 -46
- package/templates/commands/review.md +0 -56
- package/templates/commands/scout/ext.md +0 -35
- package/templates/commands/scout.md +0 -283
- package/templates/commands/security.md +0 -119
- package/templates/commands/skill/add.md +0 -36
- package/templates/commands/skill/create.md +0 -29
- package/templates/commands/skill/fix-logs.md +0 -22
- package/templates/commands/skill/optimize/auto.md +0 -25
- package/templates/commands/skill/optimize.md +0 -34
- package/templates/commands/skill/plan.md +0 -45
- package/templates/commands/worktree.md +0 -126
- package/templates/hooks/.python-cache.json +0 -1
- package/templates/hooks/README.md +0 -246
- package/templates/hooks/backend-csharp-context.cjs +0 -223
- package/templates/hooks/design-system-context.cjs +0 -185
- package/templates/hooks/frontend-typescript-context.cjs +0 -233
- package/templates/hooks/lib/ck-paths.cjs +0 -110
- package/templates/hooks/lib/context-tracker.cjs +0 -335
- package/templates/hooks/notify-waiting.js +0 -117
- package/templates/hooks/post-edit-prettier.cjs +0 -189
- package/templates/hooks/post-task-review.cjs +0 -142
- package/templates/hooks/scss-styling-context.cjs +0 -213
- package/templates/hooks/session-end.cjs +0 -35
- package/templates/hooks/tests/test-context-tracker.cjs +0 -454
- package/templates/hooks/tests/test-scout-block.js +0 -163
- package/templates/hooks/workflow-router.cjs +0 -326
- package/templates/hooks/write-compact-marker.cjs +0 -159
- package/templates/memory/session-log.md +0 -186
- package/templates/router/README.md +0 -294
- package/templates/router/agents-guide.md +0 -38
- package/templates/router/commands-guide.md +0 -122
- package/templates/router/decision-flow.md +0 -92
- package/templates/router/skills-guide.md +0 -127
- package/templates/router/workflows-guide.md +0 -68
- package/templates/scripts/__pycache__/win_compat.cpython-312.pyc +0 -0
- package/templates/scripts/plan-preview.cjs +0 -921
- package/templates/skills/arch-cross-service-integration/SKILL.md +0 -48
- package/templates/skills/arch-performance-optimization/SKILL.md +0 -306
- package/templates/skills/arch-security-review/SKILL.md +0 -344
- package/templates/skills/branch-comparison/SKILL.md +0 -150
- package/templates/skills/bug-diagnosis/SKILL.md +0 -309
- package/templates/skills/claude-code/references/advanced-features.md +0 -399
- package/templates/skills/claude-code/references/agent-skills.md +0 -399
- package/templates/skills/claude-code/references/api-reference.md +0 -498
- package/templates/skills/claude-code/references/best-practices.md +0 -447
- package/templates/skills/claude-code/references/cicd-integration.md +0 -428
- package/templates/skills/claude-code/references/common-workflows.md +0 -119
- package/templates/skills/claude-code/references/configuration.md +0 -480
- package/templates/skills/claude-code/references/enterprise-features.md +0 -472
- package/templates/skills/claude-code/references/getting-started.md +0 -252
- package/templates/skills/claude-code/references/hooks-and-plugins.md +0 -444
- package/templates/skills/claude-code/references/hooks-comprehensive.md +0 -622
- package/templates/skills/claude-code/references/ide-integration.md +0 -316
- package/templates/skills/claude-code/references/mcp-integration.md +0 -386
- package/templates/skills/claude-code/references/slash-commands.md +0 -489
- package/templates/skills/claude-code/references/troubleshooting.md +0 -456
- package/templates/skills/claude-code/skill.md +0 -60
- package/templates/skills/debugging/SKILL.md +0 -84
- package/templates/skills/developer-growth-analysis/SKILL.md +0 -322
- package/templates/skills/documentation/SKILL.md +0 -134
- package/templates/skills/domain-name-brainstormer/SKILL.md +0 -212
- package/templates/skills/dual-pass-review/SKILL.md +0 -249
- package/templates/skills/feature-docs/SKILL.md +0 -294
- package/templates/skills/feature-implementation/SKILL.md +0 -262
- package/templates/skills/feature-investigation/SKILL.md +0 -346
- package/templates/skills/frontend-design-pro/SKILL.md +0 -58
- package/templates/skills/package-upgrade/SKILL.md +0 -189
- package/templates/skills/plan-analysis/SKILL.md +0 -191
- package/templates/skills/planning/SKILL.md +0 -115
- package/templates/skills/planning-with-files/SKILL.md +0 -160
- package/templates/skills/planning-with-files/examples.md +0 -202
- package/templates/skills/planning-with-files/reference.md +0 -110
- package/templates/skills/project-index/SKILL.md +0 -97
- package/templates/skills/project-index/scripts/scan-structure.js +0 -417
- package/templates/skills/project-index/scripts/scan_structure.py +0 -450
- package/templates/skills/readme-improvement/SKILL.md +0 -177
- package/templates/skills/skill-share/SKILL.md +0 -80
- package/templates/skills/tasks-code-review/SKILL.md +0 -298
- package/templates/skills/tasks-documentation/SKILL.md +0 -328
- package/templates/skills/tasks-spec-update/SKILL.md +0 -318
- package/templates/skills/tasks-test-generation/SKILL.md +0 -433
- package/templates/skills/test-generation/SKILL.md +0 -203
- package/templates/skills/webapp-testing/LICENSE.txt +0 -202
- package/templates/skills/webapp-testing/SKILL.md +0 -96
- package/templates/skills/webapp-testing/examples/console_logging.py +0 -35
- package/templates/skills/webapp-testing/examples/element_discovery.py +0 -40
- package/templates/skills/webapp-testing/examples/static_html_automation.py +0 -33
- package/templates/skills/webapp-testing/scripts/with_server.py +0 -106
- package/templates/workflows/README.md +0 -241
- package/templates/workflows/orchestration-protocol.md +0 -16
- /package/templates/{commands → command-archive}/coding-level.md +0 -0
- /package/templates/{commands → command-archive}/review/codebase.md +0 -0
- /package/templates/{commands → command-archive}/test.md +0 -0
- /package/templates/{commands → command-archive}/watzup.md +0 -0
- /package/templates/hooks/scout-block/vendor/{ignore.js → ignore.cjs} +0 -0
- /package/templates/{workflows → rules}/documentation-management.md +0 -0
- /package/templates/skills/{debugging → debug}/references/defense-in-depth.md +0 -0
- /package/templates/skills/{debugging → debug}/references/root-cause-tracing.md +0 -0
- /package/templates/skills/{debugging → debug}/references/systematic-debugging.md +0 -0
- /package/templates/skills/{debugging → debug}/references/verification.md +0 -0
- /package/templates/skills/{debugging → debug}/scripts/find-polluter.sh +0 -0
- /package/templates/skills/{debugging → debug}/scripts/find-polluter.test.md +0 -0
- /package/templates/skills/{planning → plan}/references/solution-design.md +0 -0
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: chrome-devtools
|
|
3
|
-
description:
|
|
2
|
+
name: ck:chrome-devtools
|
|
3
|
+
description: Automate browsers with Puppeteer CLI scripts and persistent sessions. Use for screenshots, performance analysis, network monitoring, web scraping, form automation, JavaScript debugging.
|
|
4
4
|
license: Apache-2.0
|
|
5
5
|
version: 1.1.0
|
|
6
|
+
argument-hint: "[url or task]"
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# Chrome DevTools Agent Skill
|
|
@@ -14,14 +15,14 @@ Browser automation via Puppeteer scripts with persistent sessions. All scripts o
|
|
|
14
15
|
Skills can exist in **project-scope** or **user-scope**. Priority: project-scope > user-scope.
|
|
15
16
|
|
|
16
17
|
```bash
|
|
17
|
-
# Detect skill location
|
|
18
|
+
# Detect skill location (no cd needed - scripts use __dirname for paths)
|
|
18
19
|
SKILL_DIR=""
|
|
19
20
|
if [ -d ".claude/skills/chrome-devtools/scripts" ]; then
|
|
20
21
|
SKILL_DIR=".claude/skills/chrome-devtools/scripts"
|
|
21
22
|
elif [ -d "$HOME/.claude/skills/chrome-devtools/scripts" ]; then
|
|
22
23
|
SKILL_DIR="$HOME/.claude/skills/chrome-devtools/scripts"
|
|
23
24
|
fi
|
|
24
|
-
|
|
25
|
+
# Run scripts with full path: node "$SKILL_DIR/script.js" --args
|
|
25
26
|
```
|
|
26
27
|
|
|
27
28
|
## Choosing Your Approach
|
|
@@ -36,11 +37,18 @@ cd "$SKILL_DIR"
|
|
|
36
37
|
|
|
37
38
|
## Automation Browsing Running Mode
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
Browser visibility is resolved automatically by `resolveHeadless()` in `lib/browser.js`:
|
|
41
|
+
|
|
42
|
+
| Environment | Default | Why |
|
|
43
|
+
|-------------|---------|-----|
|
|
44
|
+
| **macOS / Windows** | **Headed** (visible) | Better debugging, OAuth login support |
|
|
45
|
+
| **Linux / WSL** | **Headless** | Servers typically have no display |
|
|
46
|
+
| **CI** (`CI`, `GITHUB_ACTIONS`, `GITLAB_CI`, `JENKINS_URL` env vars) | **Headless** | No display available |
|
|
47
|
+
|
|
48
|
+
Override with `--headless true` or `--headless false` on any script.
|
|
49
|
+
|
|
41
50
|
- Run multiple scripts/sessions in parallel to simulate real user interactions.
|
|
42
51
|
- Run multiple scripts/sessions in parallel to simulate different device types (mobile, tablet, desktop).
|
|
43
|
-
- Skills can exist in **project-scope** or **user-scope**. Priority: project-scope > user-scope.
|
|
44
52
|
|
|
45
53
|
## ARIA Snapshot (Element Discovery)
|
|
46
54
|
|
|
@@ -50,10 +58,10 @@ When page structure is unknown, use `aria-snapshot.js` to get a YAML-formatted a
|
|
|
50
58
|
|
|
51
59
|
```bash
|
|
52
60
|
# Generate ARIA snapshot and output to stdout
|
|
53
|
-
node aria-snapshot.js --url https://example.com
|
|
61
|
+
node "$SKILL_DIR/aria-snapshot.js" --url https://example.com
|
|
54
62
|
|
|
55
63
|
# Save to file in snapshots directory
|
|
56
|
-
node aria-snapshot.js --url https://example.com --output ./.claude/chrome-devtools/snapshots/page.yaml
|
|
64
|
+
node "$SKILL_DIR/aria-snapshot.js" --url https://example.com --output ./.claude/chrome-devtools/snapshots/page.yaml
|
|
57
65
|
```
|
|
58
66
|
|
|
59
67
|
### Example YAML Output
|
|
@@ -96,22 +104,22 @@ Use `select-ref.js` to interact with elements by their ref:
|
|
|
96
104
|
|
|
97
105
|
```bash
|
|
98
106
|
# Click element with ref e5
|
|
99
|
-
node select-ref.js --ref e5 --action click
|
|
107
|
+
node "$SKILL_DIR/select-ref.js" --ref e5 --action click
|
|
100
108
|
|
|
101
109
|
# Fill input with ref e10
|
|
102
|
-
node select-ref.js --ref e10 --action fill --value "search query"
|
|
110
|
+
node "$SKILL_DIR/select-ref.js" --ref e10 --action fill --value "search query"
|
|
103
111
|
|
|
104
112
|
# Get text content
|
|
105
|
-
node select-ref.js --ref e8 --action text
|
|
113
|
+
node "$SKILL_DIR/select-ref.js" --ref e8 --action text
|
|
106
114
|
|
|
107
115
|
# Screenshot specific element
|
|
108
|
-
node select-ref.js --ref e1 --action screenshot --output ./logo.png
|
|
116
|
+
node "$SKILL_DIR/select-ref.js" --ref e1 --action screenshot --output ./logo.png
|
|
109
117
|
|
|
110
118
|
# Focus element
|
|
111
|
-
node select-ref.js --ref e10 --action focus
|
|
119
|
+
node "$SKILL_DIR/select-ref.js" --ref e10 --action focus
|
|
112
120
|
|
|
113
121
|
# Hover over element
|
|
114
|
-
node select-ref.js --ref e5 --action hover
|
|
122
|
+
node "$SKILL_DIR/select-ref.js" --ref e5 --action hover
|
|
115
123
|
```
|
|
116
124
|
|
|
117
125
|
### Store Snapshots
|
|
@@ -125,26 +133,26 @@ mkdir -p .claude/chrome-devtools/snapshots
|
|
|
125
133
|
|
|
126
134
|
# Capture and store with timestamp
|
|
127
135
|
SESSION="$(date +%Y%m%d-%H%M%S)"
|
|
128
|
-
node aria-snapshot.js --url https://example.com --output .claude/chrome-devtools/snapshots/$SESSION.yaml
|
|
136
|
+
node "$SKILL_DIR/aria-snapshot.js" --url https://example.com --output .claude/chrome-devtools/snapshots/$SESSION.yaml
|
|
129
137
|
```
|
|
130
138
|
|
|
131
139
|
### Workflow: Unknown Page Structure
|
|
132
140
|
|
|
133
141
|
1. **Get snapshot** to discover elements:
|
|
134
142
|
```bash
|
|
135
|
-
node aria-snapshot.js --url https://example.com
|
|
143
|
+
node "$SKILL_DIR/aria-snapshot.js" --url https://example.com
|
|
136
144
|
```
|
|
137
145
|
|
|
138
146
|
2. **Identify target** from YAML output (e.g., `[ref=e5]` for a button)
|
|
139
147
|
|
|
140
148
|
3. **Interact by ref**:
|
|
141
149
|
```bash
|
|
142
|
-
node select-ref.js --ref e5 --action click
|
|
150
|
+
node "$SKILL_DIR/select-ref.js" --ref e5 --action click
|
|
143
151
|
```
|
|
144
152
|
|
|
145
153
|
4. **Verify result** with screenshot or new snapshot:
|
|
146
154
|
```bash
|
|
147
|
-
node screenshot.js --output ./result.png
|
|
155
|
+
node "$SKILL_DIR/screenshot.js" --output ./result.png
|
|
148
156
|
```
|
|
149
157
|
|
|
150
158
|
## Local HTML Files
|
|
@@ -156,11 +164,11 @@ Skills can exist in **project-scope** or **user-scope**. Priority: project-scope
|
|
|
156
164
|
```bash
|
|
157
165
|
# Option 1: npx serve (recommended)
|
|
158
166
|
npx serve ./dist -p 3000 &
|
|
159
|
-
node navigate.js --url http://localhost:3000
|
|
167
|
+
node "$SKILL_DIR/navigate.js" --url http://localhost:3000
|
|
160
168
|
|
|
161
169
|
# Option 2: Python http.server
|
|
162
170
|
python -m http.server 3000 --directory ./dist &
|
|
163
|
-
node navigate.js --url http://localhost:3000
|
|
171
|
+
node "$SKILL_DIR/navigate.js" --url http://localhost:3000
|
|
164
172
|
```
|
|
165
173
|
|
|
166
174
|
**Note**: when port 3000 is busy, find an available port with `lsof -i :3000` and use a different one.
|
|
@@ -168,16 +176,15 @@ node navigate.js --url http://localhost:3000
|
|
|
168
176
|
## Quick Start
|
|
169
177
|
|
|
170
178
|
```bash
|
|
171
|
-
# Install dependencies
|
|
172
|
-
|
|
173
|
-
npm install # Installs puppeteer, sharp, debug, yargs
|
|
179
|
+
# Install dependencies (one-time setup)
|
|
180
|
+
npm install --prefix "$SKILL_DIR"
|
|
174
181
|
|
|
175
182
|
# Test (browser stays running for session reuse)
|
|
176
|
-
node navigate.js --url https://example.com
|
|
183
|
+
node "$SKILL_DIR/navigate.js" --url https://example.com
|
|
177
184
|
# Output: {"success": true, "url": "...", "title": "..."}
|
|
178
185
|
```
|
|
179
186
|
|
|
180
|
-
**Linux/WSL only**: Run
|
|
187
|
+
**Linux/WSL only**: Run `"$SKILL_DIR/install-deps.sh"` first for Chrome system libraries.
|
|
181
188
|
|
|
182
189
|
## Session Persistence
|
|
183
190
|
|
|
@@ -187,15 +194,15 @@ Browser state persists across script executions via WebSocket endpoint file (`.b
|
|
|
187
194
|
|
|
188
195
|
```bash
|
|
189
196
|
# First script: launches browser, navigates, disconnects (browser stays running)
|
|
190
|
-
node navigate.js --url https://example.com/login
|
|
197
|
+
node "$SKILL_DIR/navigate.js" --url https://example.com/login
|
|
191
198
|
|
|
192
199
|
# Subsequent scripts: connect to existing browser, reuse page state
|
|
193
|
-
node fill.js --selector "#email" --value "user@example.com"
|
|
194
|
-
node fill.js --selector "#password" --value "secret"
|
|
195
|
-
node click.js --selector "button[type=submit]"
|
|
200
|
+
node "$SKILL_DIR/fill.js" --selector "#email" --value "user@example.com"
|
|
201
|
+
node "$SKILL_DIR/fill.js" --selector "#password" --value "secret"
|
|
202
|
+
node "$SKILL_DIR/click.js" --selector "button[type=submit]"
|
|
196
203
|
|
|
197
204
|
# Close browser when done
|
|
198
|
-
node navigate.js --url about:blank --close true
|
|
205
|
+
node "$SKILL_DIR/navigate.js" --url about:blank --close true
|
|
199
206
|
```
|
|
200
207
|
|
|
201
208
|
**Session management**:
|
|
@@ -220,6 +227,11 @@ All in `.claude/skills/chrome-devtools/scripts/`:
|
|
|
220
227
|
| `console.js` | Monitor console messages/errors |
|
|
221
228
|
| `network.js` | Track HTTP requests/responses |
|
|
222
229
|
| `performance.js` | Measure Core Web Vitals |
|
|
230
|
+
| `ws-debug.js` | Debug WebSocket connections (basic) |
|
|
231
|
+
| `ws-full-debug.js` | Debug WebSocket with full events/frames |
|
|
232
|
+
| `inject-auth.js` | Inject cookies/tokens for authentication |
|
|
233
|
+
| `import-cookies.js` | Import cookies from JSON/Netscape file |
|
|
234
|
+
| `connect-chrome.js` | Connect to Chrome with remote debugging |
|
|
223
235
|
|
|
224
236
|
## Workflow Loop
|
|
225
237
|
|
|
@@ -282,13 +294,13 @@ Store screenshots for analysis in `<project>/.claude/chrome-devtools/screenshots
|
|
|
282
294
|
|
|
283
295
|
```bash
|
|
284
296
|
# Basic screenshot
|
|
285
|
-
node screenshot.js --url https://example.com --output ./.claude/chrome-devtools/screenshots/page.png
|
|
297
|
+
node "$SKILL_DIR/screenshot.js" --url https://example.com --output ./.claude/chrome-devtools/screenshots/page.png
|
|
286
298
|
|
|
287
299
|
# Full page
|
|
288
|
-
node screenshot.js --url https://example.com --output ./.claude/chrome-devtools/screenshots/page.png --full-page true
|
|
300
|
+
node "$SKILL_DIR/screenshot.js" --url https://example.com --output ./.claude/chrome-devtools/screenshots/page.png --full-page true
|
|
289
301
|
|
|
290
302
|
# Specific element
|
|
291
|
-
node screenshot.js --url https://example.com --selector ".main-content" --output ./.claude/chrome-devtools/screenshots/element.png
|
|
303
|
+
node "$SKILL_DIR/screenshot.js" --url https://example.com --selector ".main-content" --output ./.claude/chrome-devtools/screenshots/element.png
|
|
292
304
|
```
|
|
293
305
|
|
|
294
306
|
### Auto-Compression (Sharp)
|
|
@@ -297,13 +309,13 @@ Screenshots >5MB auto-compress using Sharp (4-5x faster than ImageMagick):
|
|
|
297
309
|
|
|
298
310
|
```bash
|
|
299
311
|
# Default: compress if >5MB
|
|
300
|
-
node screenshot.js --url https://example.com --output ./.claude/chrome-devtools/screenshots/page.png
|
|
312
|
+
node "$SKILL_DIR/screenshot.js" --url https://example.com --output ./.claude/chrome-devtools/screenshots/page.png
|
|
301
313
|
|
|
302
314
|
# Custom threshold (3MB)
|
|
303
|
-
node screenshot.js --url https://example.com --output ./.claude/chrome-devtools/screenshots/page.png --max-size 3
|
|
315
|
+
node "$SKILL_DIR/screenshot.js" --url https://example.com --output ./.claude/chrome-devtools/screenshots/page.png --max-size 3
|
|
304
316
|
|
|
305
317
|
# Disable compression
|
|
306
|
-
node screenshot.js --url https://example.com --output ./.claude/chrome-devtools/screenshots/page.png --no-compress
|
|
318
|
+
node "$SKILL_DIR/screenshot.js" --url https://example.com --output ./.claude/chrome-devtools/screenshots/page.png --no-compress
|
|
307
319
|
```
|
|
308
320
|
|
|
309
321
|
Store screenshots for analysis in `<project>/.claude/chrome-devtools/screenshots/`.
|
|
@@ -316,10 +328,10 @@ Skills can exist in **project-scope** or **user-scope**. Priority: project-scope
|
|
|
316
328
|
|
|
317
329
|
```bash
|
|
318
330
|
# Capture all logs for 10 seconds
|
|
319
|
-
node console.js --url https://example.com --duration 10000
|
|
331
|
+
node "$SKILL_DIR/console.js" --url https://example.com --duration 10000
|
|
320
332
|
|
|
321
333
|
# Filter by type
|
|
322
|
-
node console.js --url https://example.com --types error,warn --duration 5000
|
|
334
|
+
node "$SKILL_DIR/console.js" --url https://example.com --types error,warn --duration 5000
|
|
323
335
|
```
|
|
324
336
|
|
|
325
337
|
### Session Storage Pattern
|
|
@@ -332,8 +344,8 @@ SESSION="$(date +%Y%m%d-%H%M%S)"
|
|
|
332
344
|
mkdir -p .claude/chrome-devtools/logs/$SESSION
|
|
333
345
|
|
|
334
346
|
# Capture and store
|
|
335
|
-
node console.js --url https://example.com --duration 10000 > .claude/chrome-devtools/logs/$SESSION/console.json
|
|
336
|
-
node network.js --url https://example.com > .claude/chrome-devtools/logs/$SESSION/network.json
|
|
347
|
+
node "$SKILL_DIR/console.js" --url https://example.com --duration 10000 > .claude/chrome-devtools/logs/$SESSION/console.json
|
|
348
|
+
node "$SKILL_DIR/network.js" --url https://example.com > .claude/chrome-devtools/logs/$SESSION/network.json
|
|
337
349
|
|
|
338
350
|
# View errors
|
|
339
351
|
jq '.messages[] | select(.type=="error")' .claude/chrome-devtools/logs/$SESSION/console.json
|
|
@@ -343,13 +355,13 @@ jq '.messages[] | select(.type=="error")' .claude/chrome-devtools/logs/$SESSION/
|
|
|
343
355
|
|
|
344
356
|
```bash
|
|
345
357
|
# 1. Check for JavaScript errors
|
|
346
|
-
node console.js --url https://example.com --types error,pageerror --duration 5000 | jq '.messages'
|
|
358
|
+
node "$SKILL_DIR/console.js" --url https://example.com --types error,pageerror --duration 5000 | jq '.messages'
|
|
347
359
|
|
|
348
360
|
# 2. Correlate with network failures
|
|
349
|
-
node network.js --url https://example.com | jq '.requests[] | select(.response.status >= 400)'
|
|
361
|
+
node "$SKILL_DIR/network.js" --url https://example.com | jq '.requests[] | select(.response.status >= 400)'
|
|
350
362
|
|
|
351
363
|
# 3. Check specific error stack traces
|
|
352
|
-
node console.js --url https://example.com --types error --duration 5000 | jq '.messages[].stack'
|
|
364
|
+
node "$SKILL_DIR/console.js" --url https://example.com --types error --duration 5000 | jq '.messages[].stack'
|
|
353
365
|
```
|
|
354
366
|
|
|
355
367
|
## Finding Elements
|
|
@@ -359,13 +371,13 @@ Use `snapshot.js` to discover selectors before interacting:
|
|
|
359
371
|
|
|
360
372
|
```bash
|
|
361
373
|
# Get all interactive elements
|
|
362
|
-
node snapshot.js --url https://example.com | jq '.elements[] | {tagName, text, selector}'
|
|
374
|
+
node "$SKILL_DIR/snapshot.js" --url https://example.com | jq '.elements[] | {tagName, text, selector}'
|
|
363
375
|
|
|
364
376
|
# Find buttons
|
|
365
|
-
node snapshot.js --url https://example.com | jq '.elements[] | select(.tagName=="button")'
|
|
377
|
+
node "$SKILL_DIR/snapshot.js" --url https://example.com | jq '.elements[] | select(.tagName=="button")'
|
|
366
378
|
|
|
367
379
|
# Find by text content
|
|
368
|
-
node snapshot.js --url https://example.com | jq '.elements[] | select(.text | contains("Submit"))'
|
|
380
|
+
node "$SKILL_DIR/snapshot.js" --url https://example.com | jq '.elements[] | select(.text | contains("Submit"))'
|
|
369
381
|
```
|
|
370
382
|
|
|
371
383
|
## Error Recovery
|
|
@@ -375,23 +387,23 @@ If script fails:
|
|
|
375
387
|
|
|
376
388
|
```bash
|
|
377
389
|
# 1. Capture current state (without navigating to preserve state)
|
|
378
|
-
node screenshot.js --output ./.claude/skills/chrome-devtools/screenshots/debug.png
|
|
390
|
+
node "$SKILL_DIR/screenshot.js" --output ./.claude/skills/chrome-devtools/screenshots/debug.png
|
|
379
391
|
|
|
380
392
|
# 2. Get console errors
|
|
381
|
-
node console.js --url about:blank --types error --duration 1000
|
|
393
|
+
node "$SKILL_DIR/console.js" --url about:blank --types error --duration 1000
|
|
382
394
|
|
|
383
395
|
# 3. Discover correct selector
|
|
384
|
-
node snapshot.js | jq '.elements[] | select(.text | contains("Submit"))'
|
|
396
|
+
node "$SKILL_DIR/snapshot.js" | jq '.elements[] | select(.text | contains("Submit"))'
|
|
385
397
|
|
|
386
398
|
# 4. Try XPath if CSS fails
|
|
387
|
-
node click.js --selector "//button[contains(text(),'Submit')]"
|
|
399
|
+
node "$SKILL_DIR/click.js" --selector "//button[contains(text(),'Submit')]"
|
|
388
400
|
```
|
|
389
401
|
|
|
390
402
|
## Common Patterns
|
|
391
403
|
|
|
392
404
|
### Web Scraping
|
|
393
405
|
```bash
|
|
394
|
-
node evaluate.js --url https://example.com --script "
|
|
406
|
+
node "$SKILL_DIR/evaluate.js" --url https://example.com --script "
|
|
395
407
|
Array.from(document.querySelectorAll('.item')).map(el => ({
|
|
396
408
|
title: el.querySelector('h2')?.textContent,
|
|
397
409
|
link: el.querySelector('a')?.href
|
|
@@ -401,24 +413,27 @@ node evaluate.js --url https://example.com --script "
|
|
|
401
413
|
|
|
402
414
|
### Form Automation
|
|
403
415
|
```bash
|
|
404
|
-
node navigate.js --url https://example.com/form
|
|
405
|
-
node fill.js --selector "#search" --value "query"
|
|
406
|
-
node click.js --selector "button[type=submit]"
|
|
416
|
+
node "$SKILL_DIR/navigate.js" --url https://example.com/form
|
|
417
|
+
node "$SKILL_DIR/fill.js" --selector "#search" --value "query"
|
|
418
|
+
node "$SKILL_DIR/click.js" --selector "button[type=submit]"
|
|
407
419
|
```
|
|
408
420
|
|
|
409
421
|
### Performance Testing
|
|
410
422
|
```bash
|
|
411
|
-
node performance.js --url https://example.com | jq '.vitals'
|
|
423
|
+
node "$SKILL_DIR/performance.js" --url https://example.com | jq '.vitals'
|
|
412
424
|
```
|
|
413
425
|
|
|
414
426
|
## Script Options
|
|
415
427
|
|
|
416
428
|
All scripts support:
|
|
417
|
-
- `--headless false` -
|
|
429
|
+
- `--headless true/false` - Override auto-detected headless mode (default: auto by OS)
|
|
418
430
|
- `--close true` - Close browser completely (default: stay running)
|
|
419
431
|
- `--timeout 30000` - Set timeout (ms)
|
|
420
432
|
- `--wait-until networkidle2` - Wait strategy
|
|
421
|
-
|
|
433
|
+
|
|
434
|
+
`navigate.js` additionally supports:
|
|
435
|
+
- `--wait-for-login <pattern>` - Interactive login: open headed, wait for URL regex match
|
|
436
|
+
- `--login-timeout <ms>` - Max wait for login completion (default: 300000 = 5 min)
|
|
422
437
|
|
|
423
438
|
## Troubleshooting
|
|
424
439
|
Skills can exist in **project-scope** or **user-scope**. Priority: project-scope > user-scope.
|
|
@@ -438,32 +453,170 @@ If images don't appear in screenshots, they may be waiting for animation trigger
|
|
|
438
453
|
|
|
439
454
|
1. **Scroll-triggered animations**: Scroll element into view first
|
|
440
455
|
```bash
|
|
441
|
-
node evaluate.js --script "document.querySelector('.lazy-image').scrollIntoView()"
|
|
456
|
+
node "$SKILL_DIR/evaluate.js" --script "document.querySelector('.lazy-image').scrollIntoView()"
|
|
442
457
|
# Wait for animation
|
|
443
|
-
node evaluate.js --script "await new Promise(r => setTimeout(r, 1000))"
|
|
444
|
-
node screenshot.js --output ./result.png
|
|
458
|
+
node "$SKILL_DIR/evaluate.js" --script "await new Promise(r => setTimeout(r, 1000))"
|
|
459
|
+
node "$SKILL_DIR/screenshot.js" --output ./result.png
|
|
445
460
|
```
|
|
446
461
|
|
|
447
462
|
2. **Sequential animation queue**: Wait longer and retry
|
|
448
463
|
```bash
|
|
449
464
|
# First attempt
|
|
450
|
-
node screenshot.js --url http://localhost:3000 --output ./attempt1.png
|
|
465
|
+
node "$SKILL_DIR/screenshot.js" --url http://localhost:3000 --output ./attempt1.png
|
|
451
466
|
|
|
452
467
|
# Wait for animations to complete
|
|
453
|
-
node evaluate.js --script "await new Promise(r => setTimeout(r, 2000))"
|
|
468
|
+
node "$SKILL_DIR/evaluate.js" --script "await new Promise(r => setTimeout(r, 2000))"
|
|
454
469
|
|
|
455
470
|
# Retry screenshot
|
|
456
|
-
node screenshot.js --output ./attempt2.png
|
|
471
|
+
node "$SKILL_DIR/screenshot.js" --output ./attempt2.png
|
|
457
472
|
```
|
|
458
473
|
|
|
459
474
|
3. **Intersection Observer animations**: Trigger by scrolling through page
|
|
460
475
|
```bash
|
|
461
|
-
node evaluate.js --script "window.scrollTo(0, document.body.scrollHeight)"
|
|
462
|
-
node evaluate.js --script "await new Promise(r => setTimeout(r, 1500))"
|
|
463
|
-
node evaluate.js --script "window.scrollTo(0, 0)"
|
|
464
|
-
node screenshot.js --output ./full-loaded.png --full-page true
|
|
476
|
+
node "$SKILL_DIR/evaluate.js" --script "window.scrollTo(0, document.body.scrollHeight)"
|
|
477
|
+
node "$SKILL_DIR/evaluate.js" --script "await new Promise(r => setTimeout(r, 1500))"
|
|
478
|
+
node "$SKILL_DIR/evaluate.js" --script "window.scrollTo(0, 0)"
|
|
479
|
+
node "$SKILL_DIR/screenshot.js" --output ./full-loaded.png --full-page true
|
|
465
480
|
```
|
|
466
481
|
|
|
482
|
+
## Authentication & Cookies
|
|
483
|
+
|
|
484
|
+
For accessing protected/authenticated pages, use one of these methods:
|
|
485
|
+
|
|
486
|
+
### Method 1: Inject Cookies Directly
|
|
487
|
+
|
|
488
|
+
Use when you have cookie values (from DevTools or manual extraction):
|
|
489
|
+
|
|
490
|
+
```bash
|
|
491
|
+
# Inject single cookie
|
|
492
|
+
node "$SKILL_DIR/inject-auth.js" --url https://site.com \
|
|
493
|
+
--cookies '[{"name":"session","value":"abc123","domain":".site.com"}]'
|
|
494
|
+
|
|
495
|
+
# Multiple cookies with all properties
|
|
496
|
+
node "$SKILL_DIR/inject-auth.js" --url https://site.com \
|
|
497
|
+
--cookies '[{"name":"session","value":"abc","domain":".site.com","httpOnly":true,"secure":true}]'
|
|
498
|
+
|
|
499
|
+
# With Bearer token header
|
|
500
|
+
node "$SKILL_DIR/inject-auth.js" --url https://api.site.com \
|
|
501
|
+
--token "Bearer eyJhbG..." --header Authorization
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
### Method 2: Import from Browser Extension
|
|
505
|
+
|
|
506
|
+
Best for complex auth (OAuth, multi-cookie sessions):
|
|
507
|
+
|
|
508
|
+
```bash
|
|
509
|
+
# 1. Install "Cookie-Editor" or "EditThisCookie" Chrome extension
|
|
510
|
+
# 2. Navigate to site → Log in manually
|
|
511
|
+
# 3. Click extension → Export as JSON → Save to cookies.json
|
|
512
|
+
# 4. Import into puppeteer session:
|
|
513
|
+
|
|
514
|
+
node "$SKILL_DIR/import-cookies.js" --file ./cookies.json --url https://site.com
|
|
515
|
+
|
|
516
|
+
# Netscape format (from curl/wget):
|
|
517
|
+
node "$SKILL_DIR/import-cookies.js" --file ./cookies.txt --format netscape --url https://site.com
|
|
518
|
+
|
|
519
|
+
# Only import cookies matching target domain:
|
|
520
|
+
node "$SKILL_DIR/import-cookies.js" --file ./cookies.json --url https://site.com --strict-domain
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
### Method 3: Use Your Chrome Profile
|
|
524
|
+
|
|
525
|
+
Most reliable for complex auth (2FA, OAuth, SSO). Uses your existing Chrome session:
|
|
526
|
+
|
|
527
|
+
```bash
|
|
528
|
+
# Use Chrome's default profile (preserves all cookies, extensions, saved passwords)
|
|
529
|
+
node "$SKILL_DIR/navigate.js" --url https://site.com --use-default-profile true
|
|
530
|
+
|
|
531
|
+
# Use specific Chrome profile directory
|
|
532
|
+
node "$SKILL_DIR/navigate.js" --url https://site.com --profile "/path/to/chrome/profile"
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
**[!] Important**: Chrome must be fully closed when using its profile (single instance lock).
|
|
536
|
+
|
|
537
|
+
**Profile paths by OS:**
|
|
538
|
+
- **macOS**: `~/Library/Application Support/Google/Chrome`
|
|
539
|
+
- **Windows**: `%LOCALAPPDATA%/Google/Chrome/User Data`
|
|
540
|
+
- **Linux**: `~/.config/google-chrome`
|
|
541
|
+
|
|
542
|
+
### Method 4: Connect to Running Chrome
|
|
543
|
+
|
|
544
|
+
Best for debugging (can see browser window while scripts run):
|
|
545
|
+
|
|
546
|
+
```bash
|
|
547
|
+
# Step 1: Launch Chrome with remote debugging (in separate terminal)
|
|
548
|
+
# macOS:
|
|
549
|
+
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222
|
|
550
|
+
|
|
551
|
+
# Windows:
|
|
552
|
+
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222
|
|
553
|
+
|
|
554
|
+
# Linux:
|
|
555
|
+
google-chrome --remote-debugging-port=9222
|
|
556
|
+
|
|
557
|
+
# Step 2: Log in manually in the Chrome window
|
|
558
|
+
|
|
559
|
+
# Step 3: Connect and automate
|
|
560
|
+
node "$SKILL_DIR/connect-chrome.js" --browser-url http://localhost:9222 --url https://site.com
|
|
561
|
+
|
|
562
|
+
# Or launch Chrome automatically (opens new window):
|
|
563
|
+
node "$SKILL_DIR/connect-chrome.js" --launch --port 9222 --url https://site.com
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
### Method 5: Interactive Login (OAuth/SSO)
|
|
567
|
+
|
|
568
|
+
Best for OAuth, SSO, or any login requiring manual interaction in the browser:
|
|
569
|
+
|
|
570
|
+
```bash
|
|
571
|
+
# Open browser at login page, wait for redirect to dashboard after OAuth
|
|
572
|
+
node "$SKILL_DIR/navigate.js" --url https://app.example.com/login \
|
|
573
|
+
--wait-for-login "/dashboard"
|
|
574
|
+
|
|
575
|
+
# With longer timeout (10 min) for slow SSO providers
|
|
576
|
+
node "$SKILL_DIR/navigate.js" --url https://app.example.com/login \
|
|
577
|
+
--wait-for-login "/dashboard" --login-timeout 600000
|
|
578
|
+
|
|
579
|
+
# Use regex for complex URL patterns
|
|
580
|
+
node "$SKILL_DIR/navigate.js" --url https://app.example.com/login \
|
|
581
|
+
--wait-for-login "/(dashboard|home|app)"
|
|
582
|
+
```
|
|
583
|
+
|
|
584
|
+
**How it works:**
|
|
585
|
+
1. Opens browser in **headed mode** (always, regardless of OS)
|
|
586
|
+
2. Navigates to the login URL
|
|
587
|
+
3. Waits for you to complete the login flow manually (OAuth, 2FA, etc.)
|
|
588
|
+
4. Detects success when URL matches the regex pattern
|
|
589
|
+
5. Saves all cookies to `.auth-session.json` for 24-hour reuse
|
|
590
|
+
6. Subsequent scripts reuse the authenticated session automatically
|
|
591
|
+
|
|
592
|
+
### Session Persistence
|
|
593
|
+
|
|
594
|
+
Auth sessions are saved to `.auth-session.json` for 24-hour reuse:
|
|
595
|
+
|
|
596
|
+
```bash
|
|
597
|
+
# First script injects auth
|
|
598
|
+
node "$SKILL_DIR/inject-auth.js" --url https://site.com --cookies '[...]'
|
|
599
|
+
|
|
600
|
+
# Subsequent scripts reuse saved auth automatically
|
|
601
|
+
node "$SKILL_DIR/navigate.js" --url https://site.com/dashboard
|
|
602
|
+
node "$SKILL_DIR/screenshot.js" --url https://site.com/profile --output ./profile.png
|
|
603
|
+
|
|
604
|
+
# Clear auth session when done
|
|
605
|
+
node "$SKILL_DIR/inject-auth.js" --url https://site.com --clear true
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
### Choosing the Right Method
|
|
609
|
+
|
|
610
|
+
| Method | Best For | Complexity |
|
|
611
|
+
|--------|----------|------------|
|
|
612
|
+
| Inject cookies | Simple session cookies, API tokens | Low |
|
|
613
|
+
| Import from extension | Multi-cookie auth, OAuth tokens | Medium |
|
|
614
|
+
| Chrome profile | 2FA, SSO, complex OAuth flows | Low* |
|
|
615
|
+
| Connect to Chrome | Debugging, visual verification | Medium |
|
|
616
|
+
| Interactive login | OAuth/SSO with manual browser interaction | Low |
|
|
617
|
+
|
|
618
|
+
*Requires Chrome to be closed first
|
|
619
|
+
|
|
467
620
|
## Reference Documentation
|
|
468
621
|
|
|
469
622
|
- `./references/cdp-domains.md` - Chrome DevTools Protocol domains
|
|
@@ -169,6 +169,24 @@ Measure performance metrics and record trace.
|
|
|
169
169
|
node performance.js --url https://example.com [--trace trace.json] [--metrics] [--resources true]
|
|
170
170
|
```
|
|
171
171
|
|
|
172
|
+
### ws-debug.js
|
|
173
|
+
Debug WebSocket connections (basic mode).
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
node ws-debug.js
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Monitors WebSocket events via CDP: created, handshake, response, closed, error.
|
|
180
|
+
|
|
181
|
+
### ws-full-debug.js
|
|
182
|
+
Debug WebSocket connections with full event tracking.
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
node ws-full-debug.js
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Monitors all WebSocket events including frame sent/received, with detailed logging.
|
|
189
|
+
|
|
172
190
|
## Common Options
|
|
173
191
|
|
|
174
192
|
- `--headless false` - Show browser window
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for error handling in chrome-devtools scripts
|
|
3
|
+
* Verifies scripts exit with code 1 on errors
|
|
4
|
+
* Run with: node --test __tests__/error-handling.test.js
|
|
5
|
+
*
|
|
6
|
+
* Note: These tests verify exit code behavior. When puppeteer is not installed,
|
|
7
|
+
* scripts still exit with code 1 (module not found), which validates the error path.
|
|
8
|
+
* When puppeteer IS installed, missing --url triggers application-level error with code 1.
|
|
9
|
+
*/
|
|
10
|
+
import { describe, it } from 'node:test';
|
|
11
|
+
import assert from 'node:assert';
|
|
12
|
+
import { spawn } from 'node:child_process';
|
|
13
|
+
import { fileURLToPath } from 'node:url';
|
|
14
|
+
import path from 'node:path';
|
|
15
|
+
|
|
16
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
17
|
+
const scriptsDir = path.join(__dirname, '..');
|
|
18
|
+
|
|
19
|
+
function runScript(script, args = [], timeout = 10000) {
|
|
20
|
+
return new Promise((resolve) => {
|
|
21
|
+
const proc = spawn('node', [path.join(scriptsDir, script), ...args], {
|
|
22
|
+
timeout,
|
|
23
|
+
stdio: ['pipe', 'pipe', 'pipe']
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
let stdout = '';
|
|
27
|
+
let stderr = '';
|
|
28
|
+
|
|
29
|
+
proc.stdout.on('data', (data) => { stdout += data; });
|
|
30
|
+
proc.stderr.on('data', (data) => { stderr += data; });
|
|
31
|
+
|
|
32
|
+
proc.on('close', (code) => {
|
|
33
|
+
resolve({ code, stdout, stderr, combined: stdout + stderr });
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
proc.on('error', (err) => {
|
|
37
|
+
resolve({ code: 1, stdout, stderr: err.message, combined: err.message });
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
setTimeout(() => {
|
|
41
|
+
proc.kill('SIGTERM');
|
|
42
|
+
resolve({ code: null, stdout, stderr, timedOut: true, combined: stdout + stderr });
|
|
43
|
+
}, timeout);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
describe('chrome-devtools error handling', () => {
|
|
48
|
+
describe('console.js', () => {
|
|
49
|
+
it('should exit with code 1 when --url is missing or on error', async () => {
|
|
50
|
+
const result = await runScript('console.js', []);
|
|
51
|
+
assert.strictEqual(result.code, 1, 'Expected exit code 1');
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('should output error information', async () => {
|
|
55
|
+
const result = await runScript('console.js', []);
|
|
56
|
+
assert.strictEqual(result.code, 1);
|
|
57
|
+
// Either app-level error (--url required) or module error (puppeteer not found)
|
|
58
|
+
const hasError = result.combined.toLowerCase().includes('error') ||
|
|
59
|
+
result.combined.includes('--url');
|
|
60
|
+
assert.ok(hasError, 'Expected error in output');
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
describe('evaluate.js', () => {
|
|
65
|
+
it('should exit with code 1 when --url is missing or on error', async () => {
|
|
66
|
+
const result = await runScript('evaluate.js', []);
|
|
67
|
+
assert.strictEqual(result.code, 1, 'Expected exit code 1');
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
describe('navigate.js', () => {
|
|
72
|
+
it('should exit with code 1 when --url is missing or on error', async () => {
|
|
73
|
+
const result = await runScript('navigate.js', []);
|
|
74
|
+
assert.strictEqual(result.code, 1, 'Expected exit code 1');
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
describe('network.js', () => {
|
|
79
|
+
it('should exit with code 1 when --url is missing or on error', async () => {
|
|
80
|
+
const result = await runScript('network.js', []);
|
|
81
|
+
assert.strictEqual(result.code, 1, 'Expected exit code 1');
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
describe('performance.js', () => {
|
|
86
|
+
it('should exit with code 1 when --url is missing or on error', async () => {
|
|
87
|
+
const result = await runScript('performance.js', []);
|
|
88
|
+
assert.strictEqual(result.code, 1, 'Expected exit code 1');
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
describe('all scripts exit code consistency', () => {
|
|
93
|
+
const scripts = ['console.js', 'evaluate.js', 'navigate.js', 'network.js', 'performance.js'];
|
|
94
|
+
|
|
95
|
+
for (const script of scripts) {
|
|
96
|
+
it(`${script} should exit 1 on invalid input or error`, async () => {
|
|
97
|
+
const result = await runScript(script, []);
|
|
98
|
+
assert.strictEqual(result.code, 1, `${script} should exit with code 1`);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
});
|
|
@@ -302,7 +302,7 @@ async function ariaSnapshot() {
|
|
|
302
302
|
|
|
303
303
|
try {
|
|
304
304
|
const browser = await getBrowser({
|
|
305
|
-
headless: args.headless
|
|
305
|
+
headless: args.headless
|
|
306
306
|
});
|
|
307
307
|
|
|
308
308
|
const page = await getPage(browser);
|
|
@@ -354,6 +354,7 @@ async function ariaSnapshot() {
|
|
|
354
354
|
} else {
|
|
355
355
|
await disconnectBrowser();
|
|
356
356
|
}
|
|
357
|
+
process.exit(0);
|
|
357
358
|
} catch (error) {
|
|
358
359
|
outputError(error);
|
|
359
360
|
}
|