agent-skill-kit 3.9.135
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/.agent/global.d.ts +80 -0
- package/.agent/rules/GEMINI.md +210 -0
- package/.agent/rules/autopilot.md +287 -0
- package/.agent/rules/code-rules.md +227 -0
- package/.agent/scripts/audit_workflows.ts +23 -0
- package/.agent/scripts/auto_preview.ts +170 -0
- package/.agent/scripts/checklist.ts +180 -0
- package/.agent/scripts/compile-agents.ts +237 -0
- package/.agent/scripts/fix_skills.ts +49 -0
- package/.agent/scripts/session_manager.ts +222 -0
- package/.agent/scripts/skill-audit.ts +255 -0
- package/.agent/scripts/sync_workflows.ts +54 -0
- package/.agent/scripts/utils/colors.ts +58 -0
- package/.agent/scripts/utils/process-manager.ts +131 -0
- package/.agent/scripts/utils/reporter.ts +192 -0
- package/.agent/scripts/utils/runner.ts +128 -0
- package/.agent/scripts/verify_all.ts +243 -0
- package/.agent/scripts/version-sync.ts +256 -0
- package/.agent/skills/SKILL_INDEX.md +129 -0
- package/.agent/skills/agent-browser/AGENTS.md +728 -0
- package/.agent/skills/agent-browser/SKILL.md +193 -0
- package/.agent/skills/agent-browser/rules/_sections.md +15 -0
- package/.agent/skills/agent-browser/rules/_template.md +32 -0
- package/.agent/skills/agent-browser/rules/engineering-spec.md +528 -0
- package/.agent/skills/agent-browser/scripts/browser_cli.ts +52 -0
- package/.agent/skills/agent-browser/scripts/session_manager.ts +166 -0
- package/.agent/skills/ai-artist/AGENTS.md +1082 -0
- package/.agent/skills/ai-artist/SKILL.md +186 -0
- package/.agent/skills/ai-artist/rules/_sections.md +30 -0
- package/.agent/skills/ai-artist/rules/_template.md +32 -0
- package/.agent/skills/ai-artist/rules/domain-code.md +118 -0
- package/.agent/skills/ai-artist/rules/domain-marketing.md +105 -0
- package/.agent/skills/ai-artist/rules/engineering-spec.md +519 -0
- package/.agent/skills/ai-artist/rules/image-prompts.md +195 -0
- package/.agent/skills/ai-artist/rules/model-syntax.md +115 -0
- package/.agent/skills/ai-artist/scripts/prompt_compiler.ts +72 -0
- package/.agent/skills/ai-artist/templates/image-core.txt +1 -0
- package/.agent/skills/ai-artist/templates/llm-core.txt +6 -0
- package/.agent/skills/api-architect/AGENTS.md +1896 -0
- package/.agent/skills/api-architect/SKILL.md +173 -0
- package/.agent/skills/api-architect/rules/_sections.md +35 -0
- package/.agent/skills/api-architect/rules/_template.md +32 -0
- package/.agent/skills/api-architect/rules/api-style.md +115 -0
- package/.agent/skills/api-architect/rules/auth.md +134 -0
- package/.agent/skills/api-architect/rules/documentation.md +131 -0
- package/.agent/skills/api-architect/rules/engineering-spec.md +505 -0
- package/.agent/skills/api-architect/rules/graphql.md +154 -0
- package/.agent/skills/api-architect/rules/rate-limiting.md +76 -0
- package/.agent/skills/api-architect/rules/response.md +138 -0
- package/.agent/skills/api-architect/rules/rest.md +113 -0
- package/.agent/skills/api-architect/rules/security-testing.md +146 -0
- package/.agent/skills/api-architect/rules/trpc.md +129 -0
- package/.agent/skills/api-architect/rules/versioning.md +100 -0
- package/.agent/skills/api-architect/scripts/api_validator.ts +413 -0
- package/.agent/skills/auth-patterns/AGENTS.md +1830 -0
- package/.agent/skills/auth-patterns/SKILL.md +163 -0
- package/.agent/skills/auth-patterns/rules/_sections.md +30 -0
- package/.agent/skills/auth-patterns/rules/_template.md +32 -0
- package/.agent/skills/auth-patterns/rules/engineering-spec.md +515 -0
- package/.agent/skills/auth-patterns/rules/jwt-deep.md +196 -0
- package/.agent/skills/auth-patterns/rules/mfa.md +174 -0
- package/.agent/skills/auth-patterns/rules/oauth2.md +134 -0
- package/.agent/skills/auth-patterns/rules/passkey.md +243 -0
- package/.agent/skills/auth-patterns/rules/rbac-abac.md +206 -0
- package/.agent/skills/auth-patterns/rules/session.md +183 -0
- package/.agent/skills/auth-patterns/scripts/auth_validator.ts +121 -0
- package/.agent/skills/chrome-devtools/AGENTS.md +952 -0
- package/.agent/skills/chrome-devtools/SKILL.md +160 -0
- package/.agent/skills/chrome-devtools/rules/_sections.md +25 -0
- package/.agent/skills/chrome-devtools/rules/_template.md +32 -0
- package/.agent/skills/chrome-devtools/rules/aria-snapshot.md +95 -0
- package/.agent/skills/chrome-devtools/rules/engineering-spec.md +510 -0
- package/.agent/skills/chrome-devtools/rules/scripts-guide.md +174 -0
- package/.agent/skills/chrome-devtools/scripts/aria-snapshot.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/click.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/console.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/core_cli.ts +79 -0
- package/.agent/skills/chrome-devtools/scripts/evaluate.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/fill.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/navigate.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/network.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/performance.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/screenshot.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/select-ref.ts +3 -0
- package/.agent/skills/cicd-pipeline/AGENTS.md +809 -0
- package/.agent/skills/cicd-pipeline/SKILL.md +164 -0
- package/.agent/skills/cicd-pipeline/rules/_sections.md +15 -0
- package/.agent/skills/cicd-pipeline/rules/_template.md +32 -0
- package/.agent/skills/cicd-pipeline/rules/engineering-spec.md +477 -0
- package/.agent/skills/cicd-pipeline/scripts/flag-manager.ts +253 -0
- package/.agent/skills/cicd-pipeline/scripts/pipeline_validator.ts +133 -0
- package/.agent/skills/code-constitution/AGENTS.md +597 -0
- package/.agent/skills/code-constitution/CHANGELOG.md +216 -0
- package/.agent/skills/code-constitution/SKILL.md +191 -0
- package/.agent/skills/code-constitution/VERSION +3 -0
- package/.agent/skills/code-constitution/examples/violation-backend-mutation/after.tsx +59 -0
- package/.agent/skills/code-constitution/examples/violation-backend-mutation/before.tsx +42 -0
- package/.agent/skills/code-constitution/examples/violation-backend-mutation/explanation.md +91 -0
- package/.agent/skills/code-constitution/examples/violation-chart-injection/after.tsx +99 -0
- package/.agent/skills/code-constitution/examples/violation-chart-injection/before.tsx +57 -0
- package/.agent/skills/code-constitution/examples/violation-chart-injection/explanation.md +120 -0
- package/.agent/skills/code-constitution/knowledge/lessons-learned.yaml +3 -0
- package/.agent/skills/code-constitution/metadata/precedence.yaml +117 -0
- package/.agent/skills/code-constitution/metadata/scope-map.yaml +156 -0
- package/.agent/skills/code-constitution/proposals/v1.1-change-proposal-template.md +201 -0
- package/.agent/skills/code-constitution/resources/AUTHORITY_MODEL.md +115 -0
- package/.agent/skills/code-constitution/resources/ENFORCEMENT_GUIDE.md +246 -0
- package/.agent/skills/code-constitution/resources/LOAD_ORDER.md +86 -0
- package/.agent/skills/code-constitution/rules/_sections.md +15 -0
- package/.agent/skills/code-constitution/rules/_template.md +32 -0
- package/.agent/skills/code-constitution/rules/constitution/master-constitution.md +210 -0
- package/.agent/skills/code-constitution/rules/doctrines/architecture/architecture-doctrine.md +188 -0
- package/.agent/skills/code-constitution/rules/doctrines/backend/backend-data-engine-doctrine.md +218 -0
- package/.agent/skills/code-constitution/rules/doctrines/commercial/commercial-guardrails-doctrine.md +196 -0
- package/.agent/skills/code-constitution/rules/doctrines/data/data-integrity-doctrine.md +202 -0
- package/.agent/skills/code-constitution/rules/doctrines/frontend/frontend-mobile-doctrine.md +169 -0
- package/.agent/skills/code-constitution/rules/doctrines/frontend/interaction-patterns-doctrine.md +176 -0
- package/.agent/skills/code-constitution/rules/doctrines/learning/learning-engine-doctrine.md +192 -0
- package/.agent/skills/code-constitution/rules/doctrines/performance/performance-doctrine.md +180 -0
- package/.agent/skills/code-constitution/rules/doctrines/review/code-review-doctrine.md +174 -0
- package/.agent/skills/code-constitution/rules/enforcement/agents/agent-enforcement-protocol.md +218 -0
- package/.agent/skills/code-constitution/rules/enforcement/agents/agent-system-prompt.md +196 -0
- package/.agent/skills/code-constitution/rules/enforcement/checklists/backend-api-review-checklist.md +131 -0
- package/.agent/skills/code-constitution/rules/enforcement/checklists/chart-component-review-checklist.md +147 -0
- package/.agent/skills/code-constitution/rules/enforcement/checklists/frontend-review-checklist.md +194 -0
- package/.agent/skills/code-constitution/rules/enforcement/playbooks/doctrine-violation-playbook.md +236 -0
- package/.agent/skills/code-constitution/rules/engineering-spec.md +561 -0
- package/.agent/skills/code-constitution/scripts/audit_pr.ts +219 -0
- package/.agent/skills/code-constitution/scripts/check_boundaries.ts +134 -0
- package/.agent/skills/code-constitution/scripts/learn.ts +202 -0
- package/.agent/skills/code-constitution/scripts/validate_doctrine.ts +287 -0
- package/.agent/skills/code-craft/AGENTS.md +803 -0
- package/.agent/skills/code-craft/SKILL.md +170 -0
- package/.agent/skills/code-craft/rules/_sections.md +20 -0
- package/.agent/skills/code-craft/rules/_template.md +32 -0
- package/.agent/skills/code-craft/rules/engineering-spec.md +447 -0
- package/.agent/skills/code-craft/rules/verification-scripts.md +83 -0
- package/.agent/skills/code-craft/scripts/code_quality_checker.ts +193 -0
- package/.agent/skills/code-review/AGENTS.md +1664 -0
- package/.agent/skills/code-review/SKILL.md +152 -0
- package/.agent/skills/code-review/rules/_sections.md +15 -0
- package/.agent/skills/code-review/rules/_template.md +32 -0
- package/.agent/skills/code-review/rules/engineering-spec.md +466 -0
- package/.agent/skills/code-review/scripts/lint_runner.ts +213 -0
- package/.agent/skills/code-review/scripts/type_coverage.ts +118 -0
- package/.agent/skills/context-engineering/AGENTS.md +499 -0
- package/.agent/skills/context-engineering/SKILL.md +147 -0
- package/.agent/skills/context-engineering/rules/_sections.md +15 -0
- package/.agent/skills/context-engineering/rules/_template.md +32 -0
- package/.agent/skills/context-engineering/rules/engineering-spec.md +463 -0
- package/.agent/skills/context-engineering/scripts/context_analyzer.ts +127 -0
- package/.agent/skills/copywriting/AGENTS.md +501 -0
- package/.agent/skills/copywriting/SKILL.md +188 -0
- package/.agent/skills/copywriting/rules/_sections.md +15 -0
- package/.agent/skills/copywriting/rules/_template.md +32 -0
- package/.agent/skills/copywriting/rules/engineering-spec.md +465 -0
- package/.agent/skills/copywriting/scripts/copy_validator.ts +185 -0
- package/.agent/skills/data-modeler/AGENTS.md +814 -0
- package/.agent/skills/data-modeler/SKILL.md +195 -0
- package/.agent/skills/data-modeler/rules/_sections.md +15 -0
- package/.agent/skills/data-modeler/rules/_template.md +32 -0
- package/.agent/skills/data-modeler/rules/database-selection.md +124 -0
- package/.agent/skills/data-modeler/rules/engineering-spec.md +479 -0
- package/.agent/skills/data-modeler/rules/indexing.md +166 -0
- package/.agent/skills/data-modeler/rules/migrations.md +176 -0
- package/.agent/skills/data-modeler/rules/optimization.md +161 -0
- package/.agent/skills/data-modeler/rules/orm-selection.md +155 -0
- package/.agent/skills/data-modeler/rules/schema-design.md +162 -0
- package/.agent/skills/data-modeler/scripts/schema_validator.ts +357 -0
- package/.agent/skills/debug-pro/AGENTS.md +798 -0
- package/.agent/skills/debug-pro/SKILL.md +193 -0
- package/.agent/skills/debug-pro/defense-in-depth/SKILL.md +148 -0
- package/.agent/skills/debug-pro/root-cause-tracing/SKILL.md +196 -0
- package/.agent/skills/debug-pro/root-cause-tracing/find-polluter.sh +63 -0
- package/.agent/skills/debug-pro/rules/_sections.md +15 -0
- package/.agent/skills/debug-pro/rules/_template.md +32 -0
- package/.agent/skills/debug-pro/rules/engineering-spec.md +491 -0
- package/.agent/skills/debug-pro/scripts/debug_verifier.ts +148 -0
- package/.agent/skills/debug-pro/verification-before-completion/SKILL.md +160 -0
- package/.agent/skills/design-system/AGENTS.md +4216 -0
- package/.agent/skills/design-system/SKILL.md +186 -0
- package/.agent/skills/design-system/rules/_sections.md +65 -0
- package/.agent/skills/design-system/rules/_template.md +32 -0
- package/.agent/skills/design-system/rules/animation-guide.md +355 -0
- package/.agent/skills/design-system/rules/color-system.md +335 -0
- package/.agent/skills/design-system/rules/color-systems.md +133 -0
- package/.agent/skills/design-system/rules/decision-trees.md +442 -0
- package/.agent/skills/design-system/rules/design-extraction.md +152 -0
- package/.agent/skills/design-system/rules/engineering-spec.md +484 -0
- package/.agent/skills/design-system/rules/motion-design.md +161 -0
- package/.agent/skills/design-system/rules/motion-graphics.md +330 -0
- package/.agent/skills/design-system/rules/spatial-composition.md +184 -0
- package/.agent/skills/design-system/rules/typography-system.md +369 -0
- package/.agent/skills/design-system/rules/typography.md +124 -0
- package/.agent/skills/design-system/rules/ux-psychology.md +565 -0
- package/.agent/skills/design-system/rules/visual-effects.md +407 -0
- package/.agent/skills/design-system/scripts/accessibility_checker.ts +292 -0
- package/.agent/skills/design-system/scripts/ux_audit.ts +356 -0
- package/.agent/skills/doc-templates/AGENTS.md +820 -0
- package/.agent/skills/doc-templates/SKILL.md +260 -0
- package/.agent/skills/doc-templates/rules/_sections.md +20 -0
- package/.agent/skills/doc-templates/rules/_template.md +32 -0
- package/.agent/skills/doc-templates/rules/doc.md +355 -0
- package/.agent/skills/doc-templates/rules/engineering-spec.md +422 -0
- package/.agent/skills/doc-templates/scripts/editor-server.ts +162 -0
- package/.agent/skills/doc-templates/scripts/inject_otel.ts +22 -0
- package/.agent/skills/doc-templates/scripts/kanban-server.ts +171 -0
- package/.agent/skills/doc-templates/scripts/markdown-server.ts +185 -0
- package/.agent/skills/e2e-automation/AGENTS.md +882 -0
- package/.agent/skills/e2e-automation/SKILL.md +175 -0
- package/.agent/skills/e2e-automation/rules/_sections.md +20 -0
- package/.agent/skills/e2e-automation/rules/_template.md +32 -0
- package/.agent/skills/e2e-automation/rules/aria-snapshot.md +185 -0
- package/.agent/skills/e2e-automation/rules/engineering-spec.md +501 -0
- package/.agent/skills/e2e-automation/scripts/playwright_runner.ts +208 -0
- package/.agent/skills/execution-reporter/AGENTS.md +419 -0
- package/.agent/skills/execution-reporter/SKILL.md +152 -0
- package/.agent/skills/execution-reporter/rules/_sections.md +15 -0
- package/.agent/skills/execution-reporter/rules/_template.md +32 -0
- package/.agent/skills/execution-reporter/rules/engineering-spec.md +389 -0
- package/.agent/skills/game-development/2d-games/SKILL.md +140 -0
- package/.agent/skills/game-development/3d-games/SKILL.md +156 -0
- package/.agent/skills/game-development/AGENTS.md +783 -0
- package/.agent/skills/game-development/SKILL.md +178 -0
- package/.agent/skills/game-development/game-art/SKILL.md +207 -0
- package/.agent/skills/game-development/game-audio/SKILL.md +211 -0
- package/.agent/skills/game-development/game-design/SKILL.md +151 -0
- package/.agent/skills/game-development/mobile-games/SKILL.md +130 -0
- package/.agent/skills/game-development/multiplayer/SKILL.md +154 -0
- package/.agent/skills/game-development/pc-games/SKILL.md +167 -0
- package/.agent/skills/game-development/rules/_sections.md +15 -0
- package/.agent/skills/game-development/rules/_template.md +32 -0
- package/.agent/skills/game-development/rules/engineering-spec.md +480 -0
- package/.agent/skills/game-development/vr-ar/SKILL.md +144 -0
- package/.agent/skills/game-development/web-games/SKILL.md +173 -0
- package/.agent/skills/git-workflow/AGENTS.md +554 -0
- package/.agent/skills/git-workflow/SKILL.md +181 -0
- package/.agent/skills/git-workflow/rules/_sections.md +15 -0
- package/.agent/skills/git-workflow/rules/_template.md +32 -0
- package/.agent/skills/git-workflow/rules/engineering-spec.md +518 -0
- package/.agent/skills/gitops/AGENTS.md +921 -0
- package/.agent/skills/gitops/SKILL.md +163 -0
- package/.agent/skills/gitops/rules/_sections.md +25 -0
- package/.agent/skills/gitops/rules/_template.md +32 -0
- package/.agent/skills/gitops/rules/argocd-setup.md +148 -0
- package/.agent/skills/gitops/rules/engineering-spec.md +450 -0
- package/.agent/skills/gitops/rules/sync-policies.md +145 -0
- package/.agent/skills/google-adk-python/AGENTS.md +1054 -0
- package/.agent/skills/google-adk-python/SKILL.md +168 -0
- package/.agent/skills/google-adk-python/rules/_sections.md +25 -0
- package/.agent/skills/google-adk-python/rules/_template.md +32 -0
- package/.agent/skills/google-adk-python/rules/deployment.md +138 -0
- package/.agent/skills/google-adk-python/rules/engineering-spec.md +451 -0
- package/.agent/skills/google-adk-python/rules/multi-agent.md +146 -0
- package/.agent/skills/google-adk-python/rules/tools.md +131 -0
- package/.agent/skills/idea-storm/AGENTS.md +995 -0
- package/.agent/skills/idea-storm/SKILL.md +160 -0
- package/.agent/skills/idea-storm/rules/_sections.md +25 -0
- package/.agent/skills/idea-storm/rules/_template.md +32 -0
- package/.agent/skills/idea-storm/rules/architecture-debate.md +122 -0
- package/.agent/skills/idea-storm/rules/dynamic-questioning.md +374 -0
- package/.agent/skills/idea-storm/rules/engineering-spec.md +466 -0
- package/.agent/skills/knowledge-compiler/SKILL.md +320 -0
- package/.agent/skills/knowledge-graph/AGENTS.md +762 -0
- package/.agent/skills/knowledge-graph/SKILL.md +157 -0
- package/.agent/skills/knowledge-graph/rules/_sections.md +15 -0
- package/.agent/skills/knowledge-graph/rules/_template.md +32 -0
- package/.agent/skills/knowledge-graph/rules/engineering-spec.md +439 -0
- package/.agent/skills/knowledge-linter/SKILL.md +217 -0
- package/.agent/skills/lifecycle-orchestrator/AGENTS.md +989 -0
- package/.agent/skills/lifecycle-orchestrator/SKILL.md +169 -0
- package/.agent/skills/lifecycle-orchestrator/rules/_sections.md +15 -0
- package/.agent/skills/lifecycle-orchestrator/rules/_template.md +32 -0
- package/.agent/skills/lifecycle-orchestrator/rules/engineering-spec.md +525 -0
- package/.agent/skills/lifecycle-orchestrator/scripts/state_manager.ts +189 -0
- package/.agent/skills/mcp-builder/AGENTS.md +1653 -0
- package/.agent/skills/mcp-builder/SKILL.md +166 -0
- package/.agent/skills/mcp-builder/rules/_sections.md +40 -0
- package/.agent/skills/mcp-builder/rules/_template.md +32 -0
- package/.agent/skills/mcp-builder/rules/best-practices.md +157 -0
- package/.agent/skills/mcp-builder/rules/design-principles.md +105 -0
- package/.agent/skills/mcp-builder/rules/engineering-spec.md +473 -0
- package/.agent/skills/mcp-builder/rules/evaluation.md +103 -0
- package/.agent/skills/mcp-builder/rules/python-implementation.md +249 -0
- package/.agent/skills/mcp-builder/rules/quickstart.md +111 -0
- package/.agent/skills/mcp-builder/rules/typescript-implementation.md +280 -0
- package/.agent/skills/mcp-management/AGENTS.md +837 -0
- package/.agent/skills/mcp-management/SKILL.md +164 -0
- package/.agent/skills/mcp-management/rules/_sections.md +25 -0
- package/.agent/skills/mcp-management/rules/_template.md +32 -0
- package/.agent/skills/mcp-management/rules/cli-usage.md +146 -0
- package/.agent/skills/mcp-management/rules/engineering-spec.md +501 -0
- package/.agent/skills/mcp-management/rules/protocol.md +159 -0
- package/.agent/skills/media-processing/AGENTS.md +479 -0
- package/.agent/skills/media-processing/SKILL.md +176 -0
- package/.agent/skills/media-processing/rules/_sections.md +15 -0
- package/.agent/skills/media-processing/rules/_template.md +32 -0
- package/.agent/skills/media-processing/rules/engineering-spec.md +452 -0
- package/.agent/skills/media-processing/scripts/convert-video.ts +155 -0
- package/.agent/skills/media-processing/scripts/optimize-image.ts +127 -0
- package/.agent/skills/mobile-design/AGENTS.md +6531 -0
- package/.agent/skills/mobile-design/SKILL.md +165 -0
- package/.agent/skills/mobile-design/rules/_sections.md +45 -0
- package/.agent/skills/mobile-design/rules/_template.md +32 -0
- package/.agent/skills/mobile-design/rules/decision-trees.md +540 -0
- package/.agent/skills/mobile-design/rules/engineering-spec.md +467 -0
- package/.agent/skills/mobile-design/rules/mobile-backend.md +516 -0
- package/.agent/skills/mobile-design/rules/mobile-color-system.md +436 -0
- package/.agent/skills/mobile-design/rules/mobile-debugging.md +146 -0
- package/.agent/skills/mobile-design/rules/mobile-design-thinking.md +381 -0
- package/.agent/skills/mobile-design/rules/mobile-navigation.md +474 -0
- package/.agent/skills/mobile-design/rules/mobile-performance.md +783 -0
- package/.agent/skills/mobile-design/rules/mobile-testing.md +380 -0
- package/.agent/skills/mobile-design/rules/mobile-typography.md +449 -0
- package/.agent/skills/mobile-design/rules/platform-android.md +682 -0
- package/.agent/skills/mobile-design/rules/platform-ios.md +577 -0
- package/.agent/skills/mobile-design/rules/touch-psychology.md +553 -0
- package/.agent/skills/mobile-design/scripts/mobile_audit.ts +309 -0
- package/.agent/skills/mobile-developer/AGENTS.md +904 -0
- package/.agent/skills/mobile-developer/SKILL.md +194 -0
- package/.agent/skills/mobile-developer/rules/_sections.md +75 -0
- package/.agent/skills/mobile-developer/rules/_template.md +32 -0
- package/.agent/skills/mobile-developer/rules/anti-patterns.md +70 -0
- package/.agent/skills/mobile-developer/rules/app-store-optimization.md +319 -0
- package/.agent/skills/mobile-developer/rules/decision-trees.md +545 -0
- package/.agent/skills/mobile-developer/rules/deep-linking.md +441 -0
- package/.agent/skills/mobile-developer/rules/engineering-spec.md +477 -0
- package/.agent/skills/mobile-developer/rules/flutter.md +475 -0
- package/.agent/skills/mobile-developer/rules/mobile-backend.md +516 -0
- package/.agent/skills/mobile-developer/rules/mobile-color-system.md +444 -0
- package/.agent/skills/mobile-developer/rules/mobile-debugging.md +428 -0
- package/.agent/skills/mobile-developer/rules/mobile-design-thinking.md +367 -0
- package/.agent/skills/mobile-developer/rules/mobile-navigation.md +483 -0
- package/.agent/skills/mobile-developer/rules/mobile-performance.md +778 -0
- package/.agent/skills/mobile-developer/rules/mobile-testing.md +382 -0
- package/.agent/skills/mobile-developer/rules/mobile-typography.md +457 -0
- package/.agent/skills/mobile-developer/rules/native.md +572 -0
- package/.agent/skills/mobile-developer/rules/platform-android.md +676 -0
- package/.agent/skills/mobile-developer/rules/platform-ios.md +571 -0
- package/.agent/skills/mobile-developer/rules/push-notifications.md +599 -0
- package/.agent/skills/mobile-developer/rules/react-native.md +422 -0
- package/.agent/skills/mobile-developer/rules/touch-psychology.md +547 -0
- package/.agent/skills/mobile-developer/scripts/mobile_audit.ts +701 -0
- package/.agent/skills/nextjs-pro/AGENTS.md +3932 -0
- package/.agent/skills/nextjs-pro/SKILL.md +171 -0
- package/.agent/skills/nextjs-pro/rules/_sections.md +50 -0
- package/.agent/skills/nextjs-pro/rules/_template.md +32 -0
- package/.agent/skills/nextjs-pro/rules/advanced-event-handler-refs.md +59 -0
- package/.agent/skills/nextjs-pro/rules/advanced-init-once.md +46 -0
- package/.agent/skills/nextjs-pro/rules/advanced-use-latest.md +43 -0
- package/.agent/skills/nextjs-pro/rules/async-api-routes.md +42 -0
- package/.agent/skills/nextjs-pro/rules/async-defer-await.md +84 -0
- package/.agent/skills/nextjs-pro/rules/async-dependencies.md +55 -0
- package/.agent/skills/nextjs-pro/rules/async-parallel.md +32 -0
- package/.agent/skills/nextjs-pro/rules/async-suspense-boundaries.md +103 -0
- package/.agent/skills/nextjs-pro/rules/bundle-barrel-imports.md +63 -0
- package/.agent/skills/nextjs-pro/rules/bundle-conditional.md +35 -0
- package/.agent/skills/nextjs-pro/rules/bundle-defer-third-party.md +53 -0
- package/.agent/skills/nextjs-pro/rules/bundle-dynamic-imports.md +39 -0
- package/.agent/skills/nextjs-pro/rules/bundle-preload.md +54 -0
- package/.agent/skills/nextjs-pro/rules/client-event-listeners.md +78 -0
- package/.agent/skills/nextjs-pro/rules/client-localstorage-schema.md +75 -0
- package/.agent/skills/nextjs-pro/rules/client-passive-event-listeners.md +52 -0
- package/.agent/skills/nextjs-pro/rules/client-swr-dedup.md +60 -0
- package/.agent/skills/nextjs-pro/rules/engineering-spec.md +440 -0
- package/.agent/skills/nextjs-pro/rules/js-batch-dom-css.md +111 -0
- package/.agent/skills/nextjs-pro/rules/js-cache-function-results.md +84 -0
- package/.agent/skills/nextjs-pro/rules/js-cache-property-access.md +32 -0
- package/.agent/skills/nextjs-pro/rules/js-cache-storage.md +74 -0
- package/.agent/skills/nextjs-pro/rules/js-combine-iterations.md +36 -0
- package/.agent/skills/nextjs-pro/rules/js-early-exit.md +54 -0
- package/.agent/skills/nextjs-pro/rules/js-hoist-regexp.md +49 -0
- package/.agent/skills/nextjs-pro/rules/js-index-maps.md +41 -0
- package/.agent/skills/nextjs-pro/rules/js-length-check-first.md +53 -0
- package/.agent/skills/nextjs-pro/rules/js-min-max-loop.md +86 -0
- package/.agent/skills/nextjs-pro/rules/js-set-map-lookups.md +28 -0
- package/.agent/skills/nextjs-pro/rules/js-tosorted-immutable.md +61 -0
- package/.agent/skills/nextjs-pro/rules/rendering-activity.md +30 -0
- package/.agent/skills/nextjs-pro/rules/rendering-animate-svg-wrapper.md +51 -0
- package/.agent/skills/nextjs-pro/rules/rendering-conditional-render.md +44 -0
- package/.agent/skills/nextjs-pro/rules/rendering-content-visibility.md +42 -0
- package/.agent/skills/nextjs-pro/rules/rendering-hoist-jsx.md +50 -0
- package/.agent/skills/nextjs-pro/rules/rendering-hydration-no-flicker.md +86 -0
- package/.agent/skills/nextjs-pro/rules/rendering-hydration-suppress-warning.md +34 -0
- package/.agent/skills/nextjs-pro/rules/rendering-svg-precision.md +32 -0
- package/.agent/skills/nextjs-pro/rules/rendering-usetransition-loading.md +79 -0
- package/.agent/skills/nextjs-pro/rules/rerender-defer-reads.md +43 -0
- package/.agent/skills/nextjs-pro/rules/rerender-dependencies.md +49 -0
- package/.agent/skills/nextjs-pro/rules/rerender-derived-state-no-effect.md +44 -0
- package/.agent/skills/nextjs-pro/rules/rerender-derived-state.md +33 -0
- package/.agent/skills/nextjs-pro/rules/rerender-functional-setstate.md +78 -0
- package/.agent/skills/nextjs-pro/rules/rerender-lazy-state-init.md +62 -0
- package/.agent/skills/nextjs-pro/rules/rerender-memo-with-default-value.md +42 -0
- package/.agent/skills/nextjs-pro/rules/rerender-memo.md +48 -0
- package/.agent/skills/nextjs-pro/rules/rerender-move-effect-to-event.md +49 -0
- package/.agent/skills/nextjs-pro/rules/rerender-simple-expression-in-memo.md +39 -0
- package/.agent/skills/nextjs-pro/rules/rerender-transitions.md +44 -0
- package/.agent/skills/nextjs-pro/rules/rerender-use-ref-transient-values.md +77 -0
- package/.agent/skills/nextjs-pro/rules/schema.json +34 -0
- package/.agent/skills/nextjs-pro/rules/server-after-nonblocking.md +77 -0
- package/.agent/skills/nextjs-pro/rules/server-auth-actions.md +100 -0
- package/.agent/skills/nextjs-pro/rules/server-cache-lru.md +45 -0
- package/.agent/skills/nextjs-pro/rules/server-cache-react.md +80 -0
- package/.agent/skills/nextjs-pro/rules/server-dedup-props.md +69 -0
- package/.agent/skills/nextjs-pro/rules/server-parallel-fetching.md +87 -0
- package/.agent/skills/nextjs-pro/rules/server-serialization.md +42 -0
- package/.agent/skills/nodejs-pro/AGENTS.md +866 -0
- package/.agent/skills/nodejs-pro/SKILL.md +172 -0
- package/.agent/skills/nodejs-pro/rules/_sections.md +50 -0
- package/.agent/skills/nodejs-pro/rules/_template.md +32 -0
- package/.agent/skills/nodejs-pro/rules/architecture-patterns.md +229 -0
- package/.agent/skills/nodejs-pro/rules/async-patterns.md +246 -0
- package/.agent/skills/nodejs-pro/rules/engineering-spec.md +438 -0
- package/.agent/skills/nodejs-pro/rules/error-handling.md +257 -0
- package/.agent/skills/nodejs-pro/rules/framework-selection.md +220 -0
- package/.agent/skills/nodejs-pro/rules/runtime-modules.md +176 -0
- package/.agent/skills/nodejs-pro/rules/testing-strategy.md +266 -0
- package/.agent/skills/nodejs-pro/rules/validation-security.md +205 -0
- package/.agent/skills/observability/AGENTS.md +607 -0
- package/.agent/skills/observability/SKILL.md +178 -0
- package/.agent/skills/observability/rules/_sections.md +15 -0
- package/.agent/skills/observability/rules/_template.md +32 -0
- package/.agent/skills/observability/rules/engineering-spec.md +440 -0
- package/.agent/skills/offensive-sec/AGENTS.md +849 -0
- package/.agent/skills/offensive-sec/SKILL.md +191 -0
- package/.agent/skills/offensive-sec/rules/_sections.md +15 -0
- package/.agent/skills/offensive-sec/rules/_template.md +32 -0
- package/.agent/skills/offensive-sec/rules/engineering-spec.md +470 -0
- package/.agent/skills/perf-optimizer/AGENTS.md +870 -0
- package/.agent/skills/perf-optimizer/SKILL.md +189 -0
- package/.agent/skills/perf-optimizer/rules/_sections.md +15 -0
- package/.agent/skills/perf-optimizer/rules/_template.md +32 -0
- package/.agent/skills/perf-optimizer/rules/backend-patterns.md +312 -0
- package/.agent/skills/perf-optimizer/rules/engineering-spec.md +428 -0
- package/.agent/skills/perf-optimizer/scripts/lighthouse_audit.ts +201 -0
- package/.agent/skills/problem-checker/AGENTS.md +519 -0
- package/.agent/skills/problem-checker/SKILL.md +189 -0
- package/.agent/skills/problem-checker/rules/_sections.md +15 -0
- package/.agent/skills/problem-checker/rules/_template.md +32 -0
- package/.agent/skills/problem-checker/rules/engineering-spec.md +483 -0
- package/.agent/skills/problem-checker/scripts/check_problems.ts +396 -0
- package/.agent/skills/project-planner/AGENTS.md +2698 -0
- package/.agent/skills/project-planner/SKILL.md +166 -0
- package/.agent/skills/project-planner/rules/_sections.md +15 -0
- package/.agent/skills/project-planner/rules/_template.md +32 -0
- package/.agent/skills/project-planner/rules/engineering-spec.md +420 -0
- package/.agent/skills/python-pro/AGENTS.md +1871 -0
- package/.agent/skills/python-pro/SKILL.md +182 -0
- package/.agent/skills/python-pro/rules/_sections.md +50 -0
- package/.agent/skills/python-pro/rules/_template.md +32 -0
- package/.agent/skills/python-pro/rules/async-patterns.md +168 -0
- package/.agent/skills/python-pro/rules/django-patterns.md +194 -0
- package/.agent/skills/python-pro/rules/engineering-spec.md +442 -0
- package/.agent/skills/python-pro/rules/fastapi-patterns.md +179 -0
- package/.agent/skills/python-pro/rules/framework-selection.md +167 -0
- package/.agent/skills/python-pro/rules/project-structure.md +181 -0
- package/.agent/skills/python-pro/rules/testing-patterns.md +212 -0
- package/.agent/skills/python-pro/rules/type-hints.md +159 -0
- package/.agent/skills/react-pro/AGENTS.md +963 -0
- package/.agent/skills/react-pro/SKILL.md +232 -0
- package/.agent/skills/react-pro/rules/_sections.md +40 -0
- package/.agent/skills/react-pro/rules/_template.md +32 -0
- package/.agent/skills/react-pro/rules/component-patterns.md +145 -0
- package/.agent/skills/react-pro/rules/composition-compound.md +82 -0
- package/.agent/skills/react-pro/rules/data-fetching.md +133 -0
- package/.agent/skills/react-pro/rules/engineering-spec.md +453 -0
- package/.agent/skills/react-pro/rules/error-boundary.md +61 -0
- package/.agent/skills/react-pro/rules/file-organization.md +158 -0
- package/.agent/skills/react-pro/rules/hooks-custom.md +61 -0
- package/.agent/skills/react-pro/rules/mui-styling.md +138 -0
- package/.agent/skills/react-pro/rules/patterns.md +24 -0
- package/.agent/skills/react-pro/rules/performance-optimization.md +65 -0
- package/.agent/skills/react-pro/rules/performance.md +137 -0
- package/.agent/skills/react-pro/rules/react19-hooks.md +85 -0
- package/.agent/skills/react-pro/rules/state-management.md +90 -0
- package/.agent/skills/react-pro/rules/testing-patterns.md +52 -0
- package/.agent/skills/registry.json +1251 -0
- package/.agent/skills/security-scanner/AGENTS.md +851 -0
- package/.agent/skills/security-scanner/SKILL.md +182 -0
- package/.agent/skills/security-scanner/rules/_sections.md +15 -0
- package/.agent/skills/security-scanner/rules/_template.md +32 -0
- package/.agent/skills/security-scanner/rules/auth-patterns.md +281 -0
- package/.agent/skills/security-scanner/rules/checklists.md +186 -0
- package/.agent/skills/security-scanner/rules/engineering-spec.md +440 -0
- package/.agent/skills/security-scanner/scripts/security_scan.ts +513 -0
- package/.agent/skills/seo-optimizer/AGENTS.md +839 -0
- package/.agent/skills/seo-optimizer/SKILL.md +180 -0
- package/.agent/skills/seo-optimizer/rules/_sections.md +15 -0
- package/.agent/skills/seo-optimizer/rules/_template.md +32 -0
- package/.agent/skills/seo-optimizer/rules/engineering-spec.md +433 -0
- package/.agent/skills/seo-optimizer/scripts/geo_checker.ts +109 -0
- package/.agent/skills/seo-optimizer/scripts/seo_checker.ts +308 -0
- package/.agent/skills/server-ops/AGENTS.md +643 -0
- package/.agent/skills/server-ops/SKILL.md +194 -0
- package/.agent/skills/server-ops/rules/_sections.md +15 -0
- package/.agent/skills/server-ops/rules/_template.md +32 -0
- package/.agent/skills/server-ops/rules/engineering-spec.md +450 -0
- package/.agent/skills/shell-script/AGENTS.md +499 -0
- package/.agent/skills/shell-script/SKILL.md +205 -0
- package/.agent/skills/shell-script/rules/_sections.md +15 -0
- package/.agent/skills/shell-script/rules/_template.md +32 -0
- package/.agent/skills/shell-script/rules/engineering-spec.md +463 -0
- package/.agent/skills/skill-generator/SKILL.md +147 -0
- package/.agent/skills/smart-router/SKILL.md +95 -0
- package/.agent/skills/studio/AGENTS.md +636 -0
- package/.agent/skills/studio/SKILL.md +178 -0
- package/.agent/skills/studio/data/charts.csv +26 -0
- package/.agent/skills/studio/data/colors.csv +97 -0
- package/.agent/skills/studio/data/icons.csv +101 -0
- package/.agent/skills/studio/data/landing.csv +31 -0
- package/.agent/skills/studio/data/products.csv +97 -0
- package/.agent/skills/studio/data/prompts.csv +24 -0
- package/.agent/skills/studio/data/react-performance.csv +45 -0
- package/.agent/skills/studio/data/stacks/flutter.csv +52 -0
- package/.agent/skills/studio/data/stacks/html-tailwind.csv +56 -0
- package/.agent/skills/studio/data/stacks/jetpack-compose.csv +53 -0
- package/.agent/skills/studio/data/stacks/nextjs.csv +53 -0
- package/.agent/skills/studio/data/stacks/nuxt-ui.csv +51 -0
- package/.agent/skills/studio/data/stacks/nuxtjs.csv +59 -0
- package/.agent/skills/studio/data/stacks/react-native.csv +52 -0
- package/.agent/skills/studio/data/stacks/react.csv +54 -0
- package/.agent/skills/studio/data/stacks/shadcn.csv +61 -0
- package/.agent/skills/studio/data/stacks/svelte.csv +54 -0
- package/.agent/skills/studio/data/stacks/swiftui.csv +51 -0
- package/.agent/skills/studio/data/stacks/vue.csv +50 -0
- package/.agent/skills/studio/data/styles.csv +59 -0
- package/.agent/skills/studio/data/typography.csv +58 -0
- package/.agent/skills/studio/data/ui-reasoning.csv +101 -0
- package/.agent/skills/studio/data/ux-guidelines.csv +100 -0
- package/.agent/skills/studio/data/web-interface.csv +31 -0
- package/.agent/skills/studio/rules/_sections.md +15 -0
- package/.agent/skills/studio/rules/_template.md +32 -0
- package/.agent/skills/studio/rules/engineering-spec.md +455 -0
- package/.agent/skills/studio/scripts/core.ts +345 -0
- package/.agent/skills/studio/scripts/design_system.ts +953 -0
- package/.agent/skills/studio/scripts/search.ts +197 -0
- package/.agent/skills/studio/scripts/types.ts +147 -0
- package/.agent/skills/studio/scripts/utils/component-specs.ts +154 -0
- package/.agent/skills/studio/scripts/utils/config-loader.ts +165 -0
- package/.agent/skills/studio/scripts/utils/css-templates.ts +169 -0
- package/.agent/skills/studio/scripts/utils/css-validator.ts +95 -0
- package/.agent/skills/studio/scripts/utils/csv-loader.ts +52 -0
- package/.agent/skills/studio/scripts/utils/intelligent-overrides.ts +129 -0
- package/.agent/skills/studio/scripts/utils/page-override-formatter.ts +143 -0
- package/.agent/skills/studio/scripts/utils/page-type-detector.ts +124 -0
- package/.agent/skills/studio/scripts/utils/search-cache.ts +165 -0
- package/.agent/skills/studio/scripts/utils/text-utils.ts +44 -0
- package/.agent/skills/system-design/AGENTS.md +597 -0
- package/.agent/skills/system-design/SKILL.md +153 -0
- package/.agent/skills/system-design/rules/_sections.md +15 -0
- package/.agent/skills/system-design/rules/_template.md +32 -0
- package/.agent/skills/system-design/rules/context-discovery.md +117 -0
- package/.agent/skills/system-design/rules/engineering-spec.md +437 -0
- package/.agent/skills/system-design/rules/examples.md +180 -0
- package/.agent/skills/system-design/rules/pattern-selection.md +130 -0
- package/.agent/skills/system-design/rules/patterns-reference.md +110 -0
- package/.agent/skills/system-design/rules/trade-off-analysis.md +169 -0
- package/.agent/skills/tailwind-kit/AGENTS.md +1135 -0
- package/.agent/skills/tailwind-kit/SKILL.md +171 -0
- package/.agent/skills/tailwind-kit/rules/_sections.md +20 -0
- package/.agent/skills/tailwind-kit/rules/_template.md +32 -0
- package/.agent/skills/tailwind-kit/rules/components.md +232 -0
- package/.agent/skills/tailwind-kit/rules/engineering-spec.md +435 -0
- package/.agent/skills/tailwind-kit/rules/responsive.md +221 -0
- package/.agent/skills/tailwind-kit/rules/v4-config.md +72 -0
- package/.agent/skills/test-architect/AGENTS.md +851 -0
- package/.agent/skills/test-architect/SKILL.md +176 -0
- package/.agent/skills/test-architect/rules/_sections.md +15 -0
- package/.agent/skills/test-architect/rules/_template.md +32 -0
- package/.agent/skills/test-architect/rules/engineering-spec.md +434 -0
- package/.agent/skills/test-architect/scripts/test_runner.ts +265 -0
- package/.agent/skills/typescript-expert/AGENTS.md +1045 -0
- package/.agent/skills/typescript-expert/SKILL.md +200 -0
- package/.agent/skills/typescript-expert/rules/_sections.md +20 -0
- package/.agent/skills/typescript-expert/rules/_template.md +32 -0
- package/.agent/skills/typescript-expert/rules/engineering-spec.md +433 -0
- package/.agent/skills/typescript-expert/rules/tsconfig-strict.json +92 -0
- package/.agent/skills/typescript-expert/rules/typescript-cheatsheet.md +407 -0
- package/.agent/skills/typescript-expert/rules/utility-types.ts +264 -0
- package/.agent/skills/typescript-expert/scripts/ts_diagnostic.ts +321 -0
- package/.agent/skills/vercel-deploy/AGENTS.md +490 -0
- package/.agent/skills/vercel-deploy/SKILL.md +175 -0
- package/.agent/skills/vercel-deploy/rules/_sections.md +15 -0
- package/.agent/skills/vercel-deploy/rules/_template.md +32 -0
- package/.agent/skills/vercel-deploy/rules/engineering-spec.md +463 -0
- package/.agent/skills/vercel-deploy/scripts/deploy.sh +310 -0
- package/.agent/workflows/api.md +377 -0
- package/.agent/workflows/autopilot.md +344 -0
- package/.agent/workflows/build.md +338 -0
- package/.agent/workflows/chronicle.md +279 -0
- package/.agent/workflows/cook.md +217 -0
- package/.agent/workflows/diagnose.md +302 -0
- package/.agent/workflows/fix.md +253 -0
- package/.agent/workflows/game.md +329 -0
- package/.agent/workflows/inspect.md +276 -0
- package/.agent/workflows/knowledge.md +212 -0
- package/.agent/workflows/launch.md +345 -0
- package/.agent/workflows/mobile.md +354 -0
- package/.agent/workflows/monitor.md +239 -0
- package/.agent/workflows/optimize.md +269 -0
- package/.agent/workflows/plan.md +278 -0
- package/.agent/workflows/stage.md +286 -0
- package/.agent/workflows/studio.md +276 -0
- package/.agent/workflows/think.md +262 -0
- package/.agent/workflows/validate.md +289 -0
- package/.agentignore +161 -0
- package/.gitattributes +16 -0
- package/CHANGELOG.md +198 -0
- package/LICENSE +40 -0
- package/README.md +173 -0
- package/docs/SKILL_DESIGN_GUIDE.md +561 -0
- package/docs/The-Complete-Guide-to-Building-Skills-for-Claude.md +1207 -0
- package/docs/WORKFLOW_DESIGN_GUIDE.md +325 -0
- package/package.json +33 -0
- package/tsconfig.json +28 -0
|
@@ -0,0 +1,510 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Chrome DevTools — Engineering Specification
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
tags: chrome-devtools
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Chrome DevTools — Engineering Specification
|
|
8
|
+
|
|
9
|
+
> Production-grade specification for Puppeteer CLI browser automation at FAANG scale.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Overview
|
|
14
|
+
|
|
15
|
+
Chrome DevTools provides a suite of Puppeteer-based CLI scripts for browser automation: navigation, screenshot capture, form interaction, JavaScript execution, ARIA tree inspection, console monitoring, network tracking, and Core Web Vitals measurement. Unlike `agent-browser` (which uses @ref handles for AI-optimized workflows), Chrome DevTools operates as direct CLI tools invoked from terminal.
|
|
16
|
+
|
|
17
|
+
The skill has side effects: it launches browser processes, captures screenshots to disk, persists session state in `.browser-session.json`, and executes arbitrary JavaScript in page context.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 2. Problem Statement
|
|
22
|
+
|
|
23
|
+
Browser automation tooling at scale faces four quantified problems:
|
|
24
|
+
|
|
25
|
+
| Problem | Measurement | Impact |
|
|
26
|
+
|---------|-------------|--------|
|
|
27
|
+
| No session persistence | Each browser script launches a new browser instance | 3–5 second overhead per operation; auth state lost |
|
|
28
|
+
| Unstructured output | Raw console text output from browser scripts | Unparseable by agents; manual extraction required |
|
|
29
|
+
| Screenshot size explosion | Full-page screenshots at high DPI produce 10–20MB files | Exceeds context limits; storage waste |
|
|
30
|
+
| No performance baseline | Core Web Vitals measured ad-hoc with no structured format | No regression tracking; no CI/CD integration |
|
|
31
|
+
|
|
32
|
+
Chrome DevTools eliminates these with session-persistent scripts, JSON-structured output, auto-compressed screenshots, and standardized Core Web Vitals measurement.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 3. Design Goals
|
|
37
|
+
|
|
38
|
+
| ID | Goal | Measurable Constraint |
|
|
39
|
+
|----|------|-----------------------|
|
|
40
|
+
| G1 | Session persistence | Browser instance survives across ≤ 50 sequential script invocations |
|
|
41
|
+
| G2 | JSON-structured output | Every script outputs parseable JSON to stdout |
|
|
42
|
+
| G3 | Screenshot size control | All screenshots ≤ 5 MB; auto-compress if exceeded |
|
|
43
|
+
| G4 | Core Web Vitals capture | FCP, LCP, CLS, TTFB measured and returned as JSON object |
|
|
44
|
+
| G5 | CLI-first interface | Every operation invocable via `node <script>.js --<args>` |
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 4. Non-Goals
|
|
49
|
+
|
|
50
|
+
| ID | Excluded | Rationale |
|
|
51
|
+
|----|----------|-----------|
|
|
52
|
+
| NG1 | AI-optimized @ref handle system | Owned by `agent-browser` skill |
|
|
53
|
+
| NG2 | E2E test suite management | Owned by `e2e-automation` skill (Playwright) |
|
|
54
|
+
| NG3 | Performance analysis and recommendations | Owned by `perf-optimizer` skill |
|
|
55
|
+
| NG4 | Cross-browser testing | Chrome/Chromium only; no Firefox/Safari |
|
|
56
|
+
| NG5 | Browser extension development | Out of scope; see chrome-extension template |
|
|
57
|
+
| NG6 | Cloud browser provisioning | Infrastructure concern; not a script concern |
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 5. System Boundaries
|
|
62
|
+
|
|
63
|
+
| Boundary | Owned | Not Owned |
|
|
64
|
+
|----------|-------|-----------|
|
|
65
|
+
| Puppeteer script execution | 10 CLI scripts in `scripts/` | Browser installation (caller ensures Chrome/Chromium available) |
|
|
66
|
+
| Session management | `.browser-session.json` lifecycle | Session storage beyond local filesystem |
|
|
67
|
+
| Screenshot capture | Capture + auto-compress + file write | Image analysis or comparison |
|
|
68
|
+
| JavaScript execution | Run arbitrary JS in page context | JS code generation |
|
|
69
|
+
| Core Web Vitals | FCP, LCP, CLS, TTFB measurement | Performance thresholds or recommendations |
|
|
70
|
+
| Console/network monitoring | Capture and JSON output | Log analysis |
|
|
71
|
+
|
|
72
|
+
**Side-effect boundary:** Chrome DevTools launches browser processes, writes files (screenshots, session), executes JavaScript in page context, and makes network requests (via navigated pages). All side effects are confined to the script invocation scope except session persistence.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 6. Integration Model
|
|
77
|
+
|
|
78
|
+
### 6.1 Agent Contract
|
|
79
|
+
|
|
80
|
+
#### Input Schema (per script)
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
Script: string # One of the 10 scripts (navigate, screenshot, click, fill, evaluate, etc.)
|
|
84
|
+
Arguments: {
|
|
85
|
+
url: string | null # Target URL (navigate, screenshot, performance)
|
|
86
|
+
selector: string | null # CSS selector (click, fill)
|
|
87
|
+
value: string | null # Input value (fill)
|
|
88
|
+
script: string | null # JavaScript code (evaluate)
|
|
89
|
+
output: string | null # Output file path (screenshot)
|
|
90
|
+
headless: boolean # Default: true
|
|
91
|
+
timeout: number # Default: 30000 ms
|
|
92
|
+
close: boolean # Default: false; true = terminate browser
|
|
93
|
+
wait_until: string # "load" | "domcontentloaded" | "networkidle0" | "networkidle2"
|
|
94
|
+
full_page: boolean # Screenshot: capture full page
|
|
95
|
+
max_size: number # Screenshot: max MB before compression (default: 5)
|
|
96
|
+
}
|
|
97
|
+
contract_version: string # "2.0.0"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
#### Output Schema
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
Status: "success" | "error"
|
|
104
|
+
Data: {
|
|
105
|
+
result: any # Script-specific output (page title, evaluation result, vitals, etc.)
|
|
106
|
+
screenshot_path: string | null # Absolute path to saved screenshot
|
|
107
|
+
session_id: string # Browser session identifier
|
|
108
|
+
timing: {
|
|
109
|
+
started: string # ISO-8601
|
|
110
|
+
completed: string # ISO-8601
|
|
111
|
+
duration_ms: number
|
|
112
|
+
}
|
|
113
|
+
metadata: {
|
|
114
|
+
contract_version: string # "2.0.0"
|
|
115
|
+
backward_compatibility: string # "breaking"
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
Error: {
|
|
119
|
+
code: string # From Error Taxonomy (Section 11)
|
|
120
|
+
message: string
|
|
121
|
+
script: string
|
|
122
|
+
recoverable: boolean
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Contract Version:** 2.0.0
|
|
127
|
+
**Backward Compatibility:** breaking (first hardened version)
|
|
128
|
+
**Breaking Changes:** None — new spec for first hardening
|
|
129
|
+
|
|
130
|
+
#### Deterministic Guarantees
|
|
131
|
+
|
|
132
|
+
- Same `Script` + `Arguments` targeting the same page state = same JSON structure output.
|
|
133
|
+
- Screenshot file path is deterministic from `--output` argument.
|
|
134
|
+
- Session file location is fixed: `.browser-session.json` in working directory.
|
|
135
|
+
- Script output format (JSON schema) is fixed per script version.
|
|
136
|
+
|
|
137
|
+
**Non-deterministic elements:** Page content, network timing, Core Web Vitals values, console output, and screenshot pixel content depend on the target page state at execution time.
|
|
138
|
+
|
|
139
|
+
#### What Agents May Assume
|
|
140
|
+
|
|
141
|
+
- Scripts produce JSON to stdout on success.
|
|
142
|
+
- Session persists across sequential script calls within the same working directory.
|
|
143
|
+
- Screenshots exceeding `max_size` are auto-compressed.
|
|
144
|
+
- `--close true` terminates the browser process.
|
|
145
|
+
|
|
146
|
+
#### What Agents Must NOT Assume
|
|
147
|
+
|
|
148
|
+
- Page state is reproducible across invocations (pages are live web content).
|
|
149
|
+
- Core Web Vitals values are stable (they vary with network and rendering conditions).
|
|
150
|
+
- Browser is already running (first script in session must launch it).
|
|
151
|
+
- Scripts work without Puppeteer installed.
|
|
152
|
+
|
|
153
|
+
#### Side-Effect Boundaries
|
|
154
|
+
|
|
155
|
+
| Operation | Side Effects |
|
|
156
|
+
|-----------|-------------|
|
|
157
|
+
| navigate.ts | Launches browser (if not running); navigates to URL; modifies session file |
|
|
158
|
+
| screenshot.ts | Writes screenshot file to disk; may compress |
|
|
159
|
+
| click.ts | Mutates page state (clicks element) |
|
|
160
|
+
| fill.ts | Mutates page state (fills form field) |
|
|
161
|
+
| evaluate.ts | Executes arbitrary JS in page context; may mutate page |
|
|
162
|
+
| aria-snapshot.ts | None (read-only page inspection) |
|
|
163
|
+
| select-ref.ts | Mutates page state (interacts with element) |
|
|
164
|
+
| console.ts | None (passive monitoring) |
|
|
165
|
+
| network.ts | None (passive monitoring) |
|
|
166
|
+
| performance.ts | Navigates and measures; reads page |
|
|
167
|
+
|
|
168
|
+
### 6.2 Workflow Contract
|
|
169
|
+
|
|
170
|
+
#### Invocation Pattern
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
1. Launch session: node navigate.ts --url <target>
|
|
174
|
+
2. Interact: node fill.ts / click.ts / evaluate.ts (sequential, reuses session)
|
|
175
|
+
3. Capture: node screenshot.ts --output <path>
|
|
176
|
+
4. Measure: node performance.ts --url <target>
|
|
177
|
+
5. Close: node navigate.ts --close true
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
#### Execution Guarantees
|
|
181
|
+
|
|
182
|
+
- Scripts execute sequentially within a session (no parallel script execution on same session).
|
|
183
|
+
- Each script completes (success or timeout) before returning control.
|
|
184
|
+
- Session state persists in `.browser-session.json` between script calls.
|
|
185
|
+
- `--close true` guarantees browser process termination.
|
|
186
|
+
|
|
187
|
+
#### Failure Propagation Model
|
|
188
|
+
|
|
189
|
+
| Failure Type | Propagation | Recovery |
|
|
190
|
+
|-------------|-------------|----------|
|
|
191
|
+
| Element not found | Return error with selector | Use aria-snapshot.ts to find correct selector |
|
|
192
|
+
| Navigation timeout | Return error with URL and timeout | Increase timeout or verify URL |
|
|
193
|
+
| Browser crash | Return error; session file preserved | Delete session file; re-launch |
|
|
194
|
+
| Puppeteer not installed | Return error immediately | Run npm install |
|
|
195
|
+
| Permission denied (screenshot) | Return error with path | Verify write permissions |
|
|
196
|
+
|
|
197
|
+
#### Retry Boundaries
|
|
198
|
+
|
|
199
|
+
- Zero internal retries. Scripts execute once and return.
|
|
200
|
+
- Callers may retry with same or modified arguments.
|
|
201
|
+
- Session survives script failures (browser stays running).
|
|
202
|
+
|
|
203
|
+
#### Isolation Model
|
|
204
|
+
|
|
205
|
+
- One session per working directory (session file is directory-scoped).
|
|
206
|
+
- Multiple concurrent sessions in different directories are independent.
|
|
207
|
+
- No cross-session communication.
|
|
208
|
+
|
|
209
|
+
#### Idempotency Expectations
|
|
210
|
+
|
|
211
|
+
| Operation | Idempotent | Notes |
|
|
212
|
+
|-----------|-----------|-------|
|
|
213
|
+
| navigate.ts | No | Page state changes on navigation |
|
|
214
|
+
| screenshot.ts | No | File overwrite if same output path; page may differ |
|
|
215
|
+
| click.ts | No | Mutates page state |
|
|
216
|
+
| fill.ts | No | Mutates form state |
|
|
217
|
+
| evaluate.ts | Depends | Read-only JS is idempotent; mutation JS is not |
|
|
218
|
+
| aria-snapshot.ts | Yes | Read-only page inspection |
|
|
219
|
+
| console.ts | Yes | Passive monitoring |
|
|
220
|
+
| network.ts | Yes | Passive monitoring |
|
|
221
|
+
| performance.ts | No | Navigation + measurement produces varying values |
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## 7. Execution Model
|
|
226
|
+
|
|
227
|
+
### 2-Phase Script Lifecycle
|
|
228
|
+
|
|
229
|
+
| Phase | Action | Output |
|
|
230
|
+
|-------|--------|--------|
|
|
231
|
+
| **Connect** | Read session file → connect to existing browser OR launch new browser | Browser connection |
|
|
232
|
+
| **Execute** | Run script-specific action → return JSON result → update session file | JSON to stdout |
|
|
233
|
+
|
|
234
|
+
All scripts follow this lifecycle. Session file is updated after every script execution.
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## 8. Deterministic Design Principles
|
|
239
|
+
|
|
240
|
+
| Principle | Enforcement |
|
|
241
|
+
|-----------|-------------|
|
|
242
|
+
| Fixed JSON output schema | Each script has a documented output structure |
|
|
243
|
+
| Fixed session file location | `.browser-session.json` in working directory |
|
|
244
|
+
| Fixed compression threshold | Screenshots auto-compress above `max_size` (default 5 MB) |
|
|
245
|
+
| Deterministic argument parsing | yargs-based CLI with typed arguments |
|
|
246
|
+
| No hidden state | All state in session file; no in-memory persistence across scripts |
|
|
247
|
+
|
|
248
|
+
**Acknowledged non-determinism:** Page content, network timing, and rendering are inherently non-deterministic.
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## 9. State & Idempotency Model
|
|
253
|
+
|
|
254
|
+
### Session State Machine
|
|
255
|
+
|
|
256
|
+
```
|
|
257
|
+
States: NO_SESSION, ACTIVE, CLOSED
|
|
258
|
+
Transitions:
|
|
259
|
+
NO_SESSION → ACTIVE (any script invoked; browser launched)
|
|
260
|
+
ACTIVE → ACTIVE (script invoked; browser reused)
|
|
261
|
+
ACTIVE → CLOSED (--close true)
|
|
262
|
+
CLOSED → ACTIVE (any script invoked; new browser launched)
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Persistent State
|
|
266
|
+
|
|
267
|
+
- `.browser-session.json` — browser WebSocket endpoint, PID, launch options
|
|
268
|
+
- Session survives script failures (browser stays running)
|
|
269
|
+
- Session file is per-working-directory; no cross-directory sharing
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## 10. Failure Handling Strategy
|
|
274
|
+
|
|
275
|
+
| Failure Class | Behavior | Recovery |
|
|
276
|
+
|---------------|----------|----------|
|
|
277
|
+
| Element not found | Return `ERR_ELEMENT_NOT_FOUND` | Use aria-snapshot.ts |
|
|
278
|
+
| Navigation timeout | Return `ERR_NAVIGATION_TIMEOUT` | Increase timeout |
|
|
279
|
+
| Browser disconnected | Return `ERR_BROWSER_DISCONNECTED` | Delete session file; re-launch |
|
|
280
|
+
| Browser crash | Return `ERR_BROWSER_CRASHED` | Delete session file; re-launch |
|
|
281
|
+
| Puppeteer not installed | Return `ERR_PUPPETEER_MISSING` | Run npm install |
|
|
282
|
+
| Script execution error | Return `ERR_SCRIPT_FAILED` with JS error | Fix JavaScript code |
|
|
283
|
+
| File write failed | Return `ERR_WRITE_FAILED` | Verify disk space and permissions |
|
|
284
|
+
| Invalid selector | Return `ERR_INVALID_SELECTOR` | Fix CSS selector syntax |
|
|
285
|
+
| Session file corrupted | Return `ERR_SESSION_CORRUPTED` | Delete .browser-session.json |
|
|
286
|
+
|
|
287
|
+
**Invariant:** Every failure outputs a JSON error object to stdout. No script exits with unstructured error text.
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## 11. Error Taxonomy
|
|
292
|
+
|
|
293
|
+
| Code | Category | Recoverable | Description |
|
|
294
|
+
|------|----------|-------------|-------------|
|
|
295
|
+
| `ERR_ELEMENT_NOT_FOUND` | Interaction | Yes | CSS selector matched no elements |
|
|
296
|
+
| `ERR_NAVIGATION_TIMEOUT` | Network | Yes | Page did not reach wait_until state within timeout |
|
|
297
|
+
| `ERR_BROWSER_DISCONNECTED` | Session | Yes | Browser process unreachable; session file stale |
|
|
298
|
+
| `ERR_BROWSER_CRASHED` | Session | Yes | Browser process terminated unexpectedly |
|
|
299
|
+
| `ERR_PUPPETEER_MISSING` | Infrastructure | No | Puppeteer npm package not installed |
|
|
300
|
+
| `ERR_SCRIPT_FAILED` | Execution | Yes | JavaScript execution threw an error |
|
|
301
|
+
| `ERR_WRITE_FAILED` | IO | Yes | Screenshot or file write failed |
|
|
302
|
+
| `ERR_INVALID_SELECTOR` | Validation | No | CSS selector is syntactically invalid |
|
|
303
|
+
| `ERR_SESSION_CORRUPTED` | Session | Yes | Session file is invalid JSON |
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## 12. Timeout & Retry Policy
|
|
308
|
+
|
|
309
|
+
| Parameter | Default | Max | Unit |
|
|
310
|
+
|-----------|---------|-----|------|
|
|
311
|
+
| Navigation timeout | 30,000 | 120,000 | ms |
|
|
312
|
+
| Element wait timeout | 5,000 | 30,000 | ms |
|
|
313
|
+
| Script execution timeout | 30,000 | 60,000 | ms |
|
|
314
|
+
| Screenshot capture | 10,000 | 30,000 | ms |
|
|
315
|
+
| Session connect | 5,000 | 10,000 | ms |
|
|
316
|
+
| Performance measurement | 30,000 | 60,000 | ms |
|
|
317
|
+
|
|
318
|
+
**Retry policy:** Zero internal retries. All scripts execute once. Callers own retry logic.
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
## 13. Observability & Logging Schema
|
|
323
|
+
|
|
324
|
+
### Log Entry Format
|
|
325
|
+
|
|
326
|
+
```json
|
|
327
|
+
{
|
|
328
|
+
"trace_id": "uuid",
|
|
329
|
+
"skill_name": "chrome-devtools",
|
|
330
|
+
"contract_version": "2.0.0",
|
|
331
|
+
"execution_id": "uuid",
|
|
332
|
+
"timestamp": "ISO-8601",
|
|
333
|
+
"script": "string",
|
|
334
|
+
"session_id": "string",
|
|
335
|
+
"status": "success|error",
|
|
336
|
+
"error_code": "string|null",
|
|
337
|
+
"url": "string|null",
|
|
338
|
+
"selector": "string|null",
|
|
339
|
+
"duration_ms": "number",
|
|
340
|
+
"screenshot_size_bytes": "number|null",
|
|
341
|
+
"compressed": "boolean|null"
|
|
342
|
+
}
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
### Required Log Points
|
|
346
|
+
|
|
347
|
+
| Event | Log Level | Fields |
|
|
348
|
+
|-------|-----------|--------|
|
|
349
|
+
| Script started | INFO | script, session_id, arguments |
|
|
350
|
+
| Script completed | INFO | script, duration_ms, status |
|
|
351
|
+
| Script failed | ERROR | script, error_code, message |
|
|
352
|
+
| Browser launched | INFO | session_id, headless, PID |
|
|
353
|
+
| Browser closed | INFO | session_id, reason |
|
|
354
|
+
| Screenshot compressed | WARN | original_size, compressed_size, path |
|
|
355
|
+
|
|
356
|
+
### Metrics
|
|
357
|
+
|
|
358
|
+
| Metric | Type | Unit |
|
|
359
|
+
|--------|------|------|
|
|
360
|
+
| `devtools.script.duration` | Histogram | ms |
|
|
361
|
+
| `devtools.script.error_rate` | Counter | per error_code |
|
|
362
|
+
| `devtools.script.usage` | Counter | per script |
|
|
363
|
+
| `devtools.session.duration` | Histogram | ms |
|
|
364
|
+
| `devtools.screenshot.size` | Histogram | bytes |
|
|
365
|
+
| `devtools.vitals.fcp` | Histogram | ms |
|
|
366
|
+
| `devtools.vitals.lcp` | Histogram | ms |
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
## 14. Security & Trust Model
|
|
371
|
+
|
|
372
|
+
### JavaScript Execution
|
|
373
|
+
|
|
374
|
+
- `evaluate.ts` executes arbitrary JavaScript in the target page context.
|
|
375
|
+
- No sandboxing beyond Chromium's own security model.
|
|
376
|
+
- Callers are responsible for JS code safety; the skill does not validate script content.
|
|
377
|
+
|
|
378
|
+
### Credential Handling
|
|
379
|
+
|
|
380
|
+
- Scripts may interact with login forms (fill.ts) but do not store credentials.
|
|
381
|
+
- Session state (`.browser-session.json`) contains browser WebSocket endpoint, not credentials.
|
|
382
|
+
- Auth cookies persist in the browser profile during the session.
|
|
383
|
+
|
|
384
|
+
### File System Access
|
|
385
|
+
|
|
386
|
+
- Screenshots are written to the path specified by `--output`.
|
|
387
|
+
- Session file is written to working directory.
|
|
388
|
+
- No file access outside these two paths.
|
|
389
|
+
|
|
390
|
+
### Network Access
|
|
391
|
+
|
|
392
|
+
- Navigated pages make their own network requests.
|
|
393
|
+
- Scripts do not make additional network requests beyond Puppeteer's CDP connection.
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
## 15. Scalability Model
|
|
398
|
+
|
|
399
|
+
| Dimension | Constraint | Mitigation |
|
|
400
|
+
|-----------|-----------|------------|
|
|
401
|
+
| Memory per session | 50–150 MB (Chromium process) | One session per working directory |
|
|
402
|
+
| Concurrent sessions | Limited by system memory | Each session in separate directory |
|
|
403
|
+
| Screenshot storage | 1–5 MB per screenshot | `max_size` compression |
|
|
404
|
+
| Session duration | Indefinite until `--close true` | Caller manages session lifecycle |
|
|
405
|
+
| Script throughput | Sequential per session | No parallel script execution on same session |
|
|
406
|
+
|
|
407
|
+
---
|
|
408
|
+
|
|
409
|
+
## 16. Concurrency Model
|
|
410
|
+
|
|
411
|
+
| Scope | Model | Behavior |
|
|
412
|
+
|-------|-------|----------|
|
|
413
|
+
| Within session | Sequential | One script at a time per browser session |
|
|
414
|
+
| Across sessions | Parallel | Different directories = independent sessions |
|
|
415
|
+
| Script execution | Blocking | Script returns only after completion or timeout |
|
|
416
|
+
|
|
417
|
+
**Undefined behavior:** Two scripts targeting the same session concurrently. The session file does not support locking; concurrent access produces unpredictable results.
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
421
|
+
## 17. Resource Lifecycle Management
|
|
422
|
+
|
|
423
|
+
| Resource | Created By | Destroyed By | Max Lifetime |
|
|
424
|
+
|----------|-----------|-------------|--------------|
|
|
425
|
+
| Chromium process | First script in session | `--close true` or manual kill | Indefinite |
|
|
426
|
+
| Session file | First script | `--close true` (auto-delete) or manual delete | Session lifetime |
|
|
427
|
+
| Screenshot files | screenshot.ts | Caller (manual cleanup) | Indefinite |
|
|
428
|
+
| Page state | Navigation/interaction scripts | Navigation to new page or browser close | Until next navigation |
|
|
429
|
+
|
|
430
|
+
**Leak prevention:** Callers must invoke `--close true` to terminate browser processes. Orphaned processes must be killed manually. Session files without running browsers are stale and should be deleted.
|
|
431
|
+
|
|
432
|
+
---
|
|
433
|
+
|
|
434
|
+
## 18. Performance Constraints
|
|
435
|
+
|
|
436
|
+
| Operation | P50 Target | P99 Target | Hard Limit |
|
|
437
|
+
|-----------|-----------|-----------|------------|
|
|
438
|
+
| Session connect (existing) | < 200 ms | < 500 ms | 10,000 ms |
|
|
439
|
+
| Browser launch (new session) | < 3,000 ms | < 8,000 ms | 30,000 ms |
|
|
440
|
+
| Navigation | < 2,000 ms | < 10,000 ms | 30,000 ms |
|
|
441
|
+
| Screenshot capture | < 500 ms | < 2,000 ms | 10,000 ms |
|
|
442
|
+
| Click/fill interaction | < 100 ms | < 500 ms | 5,000 ms |
|
|
443
|
+
| JavaScript execution | < 100 ms | < 1,000 ms | 30,000 ms |
|
|
444
|
+
| Performance measurement | < 5,000 ms | < 15,000 ms | 60,000 ms |
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|
|
448
|
+
## 19. Operational Risks
|
|
449
|
+
|
|
450
|
+
| Risk | Likelihood | Impact | Mitigation |
|
|
451
|
+
|------|-----------|--------|------------|
|
|
452
|
+
| Orphaned browser processes | Medium | Memory leak on machine | Caller must use `--close true`; document cleanup |
|
|
453
|
+
| Session file stale (browser died) | Medium | Connection failures | `ERR_BROWSER_DISCONNECTED`; delete session file |
|
|
454
|
+
| Screenshot disk exhaustion | Low | Write failures | `max_size` compression; caller manages cleanup |
|
|
455
|
+
| Puppeteer/Chrome version mismatch | Medium | Launch failures | Pin Puppeteer version; document compatible Chrome |
|
|
456
|
+
| Arbitrary JS execution risk | Medium | Page state corruption | Caller responsibility; no sandboxing |
|
|
457
|
+
|
|
458
|
+
---
|
|
459
|
+
|
|
460
|
+
## 20. Compliance with skill-design-guide.md
|
|
461
|
+
|
|
462
|
+
| Requirement | Status | Evidence |
|
|
463
|
+
|-------------|--------|----------|
|
|
464
|
+
| YAML frontmatter complete | ✅ | name, description, metadata with category, version, triggers, coordinates_with, success_metrics |
|
|
465
|
+
| SKILL.md < 200 lines | ✅ | Entry point under 200 lines |
|
|
466
|
+
| Prerequisites documented | ✅ | Node.js 18+, Puppeteer, Linux deps |
|
|
467
|
+
| When to Use section | ✅ | Comparison with agent-browser |
|
|
468
|
+
| Quick Reference | ✅ | Script table, session persistence, examples |
|
|
469
|
+
| Troubleshooting section | ✅ | Problem/solution table |
|
|
470
|
+
| Related section | ✅ | Cross-links to agent-browser, e2e-automation, perf-optimizer |
|
|
471
|
+
| Content Map | ✅ | Links to references and scripts |
|
|
472
|
+
| Contract versioning | ✅ | contract_version, backward_compatibility, breaking_changes |
|
|
473
|
+
| Compliance matrix structured | ✅ | This table with ✅/❌ + evidence |
|
|
474
|
+
|
|
475
|
+
---
|
|
476
|
+
|
|
477
|
+
## 21. Production Readiness Checklist
|
|
478
|
+
|
|
479
|
+
| Category | Check | Status |
|
|
480
|
+
|----------|-------|--------|
|
|
481
|
+
| **Functionality** | 10 CLI scripts covering navigation, capture, interaction, monitoring | ✅ |
|
|
482
|
+
| **Functionality** | Session persistence via .browser-session.json | ✅ |
|
|
483
|
+
| **Functionality** | Auto-compression for screenshots > 5 MB | ✅ |
|
|
484
|
+
| **Contracts** | Input arguments and JSON output schemas defined | ✅ |
|
|
485
|
+
| **Contracts** | Per-script side-effect boundaries documented | ✅ |
|
|
486
|
+
| **Contracts** | Per-script idempotency classification | ✅ |
|
|
487
|
+
| **Failure** | Error taxonomy with 9 categorized error codes | ✅ |
|
|
488
|
+
| **Failure** | JSON error output on all failures | ✅ |
|
|
489
|
+
| **Failure** | Zero internal retries | ✅ |
|
|
490
|
+
| **Determinism** | Fixed JSON output schemas, fixed session file location | ✅ |
|
|
491
|
+
| **Determinism** | Non-determinism acknowledged (page content, network timing) | ✅ |
|
|
492
|
+
| **Security** | No credential storage; JS execution risk documented | ✅ |
|
|
493
|
+
| **Observability** | Structured log schema with 6 log points | ✅ |
|
|
494
|
+
| **Observability** | 7 metrics including Core Web Vitals | ✅ |
|
|
495
|
+
| **Performance** | P50/P99 targets for all script types | ✅ |
|
|
496
|
+
| **Scalability** | One session per directory; memory-bounded | ✅ |
|
|
497
|
+
| **Concurrency** | Sequential within session; parallel across directories | ✅ |
|
|
498
|
+
| **Resources** | Browser process lifecycle documented; orphan risk mitigated | ✅ |
|
|
499
|
+
| **Compliance** | All skill-design-guide.md sections present | ✅ |
|
|
500
|
+
|
|
501
|
+
---
|
|
502
|
+
|
|
503
|
+
⚡ ## OpenTelemetry Observability (MANDATORY)
|
|
504
|
+
|
|
505
|
+
- **Distributed Tracing**: EVERY Chrome DevTools script invocation MUST be traced via OpenTelemetry. W3C Trace Context must be propagated through Puppeteer to the target page.
|
|
506
|
+
- **Metrics**: Core Web Vitals (FCP, LCP, CLS, TTFB) MUST be recorded as OTel Histogram metrics attached to the current race_id.
|
|
507
|
+
|
|
508
|
+
---
|
|
509
|
+
|
|
510
|
+
PikaKit v3.9.134
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: scripts-guide
|
|
3
|
+
description: Complete Puppeteer CLI script reference — navigation, screenshot, form automation, JS execution, ARIA, performance
|
|
4
|
+
title: "All Puppeteer CLI scripts with options."
|
|
5
|
+
impact: MEDIUM
|
|
6
|
+
impactDescription: "Moderate improvement to quality or maintainability"
|
|
7
|
+
tags: scripts, guide
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Scripts Guide
|
|
11
|
+
|
|
12
|
+
> All Puppeteer CLI scripts with options.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Navigation
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Basic navigation
|
|
20
|
+
node navigate.ts --url https://example.com
|
|
21
|
+
|
|
22
|
+
# With timeout
|
|
23
|
+
node navigate.ts --url https://slow-site.com --timeout 60000
|
|
24
|
+
|
|
25
|
+
# Wait strategy
|
|
26
|
+
node navigate.ts --url https://example.com --wait-until networkidle2
|
|
27
|
+
# Options: load, domcontentloaded, networkidle0, networkidle2
|
|
28
|
+
|
|
29
|
+
# Close browser when done
|
|
30
|
+
node navigate.ts --url about:blank --close true
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Screenshot
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Basic screenshot
|
|
39
|
+
node screenshot.ts --url https://example.com --output ./shot.png
|
|
40
|
+
|
|
41
|
+
# Full page
|
|
42
|
+
node screenshot.ts --url https://example.com --output ./full.png --full-page true
|
|
43
|
+
|
|
44
|
+
# Current page (no navigation)
|
|
45
|
+
node screenshot.ts --output ./current.png
|
|
46
|
+
|
|
47
|
+
# Specific element
|
|
48
|
+
node screenshot.ts --url https://example.com --selector ".main" --output ./element.png
|
|
49
|
+
|
|
50
|
+
# Control compression
|
|
51
|
+
node screenshot.ts --url https://example.com --output ./shot.png --max-size 3
|
|
52
|
+
node screenshot.ts --url https://example.com --output ./shot.png --no-compress
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Form Automation
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Fill input
|
|
61
|
+
node fill.ts --selector "#email" --value "user@example.com"
|
|
62
|
+
|
|
63
|
+
# Click element
|
|
64
|
+
node click.ts --selector "button[type=submit]"
|
|
65
|
+
|
|
66
|
+
# Wait for element
|
|
67
|
+
node click.ts --selector ".modal-close" --wait true
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## JavaScript Execution
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Simple expression
|
|
76
|
+
node evaluate.ts --script "document.title"
|
|
77
|
+
|
|
78
|
+
# Complex extraction
|
|
79
|
+
node evaluate.ts --script "
|
|
80
|
+
Array.from(document.querySelectorAll('.item')).map(el => ({
|
|
81
|
+
title: el.querySelector('h2')?.textContent,
|
|
82
|
+
link: el.querySelector('a')?.href
|
|
83
|
+
}))
|
|
84
|
+
"
|
|
85
|
+
|
|
86
|
+
# Async operation
|
|
87
|
+
node evaluate.ts --script "await new Promise(r => setTimeout(r, 2000))"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## ARIA Snapshot
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
# Get ARIA tree (YAML format)
|
|
96
|
+
node aria-snapshot.ts --url https://example.com
|
|
97
|
+
|
|
98
|
+
# Save to file
|
|
99
|
+
node aria-snapshot.ts --url https://example.com --output ./snapshot.yaml
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Output format:**
|
|
103
|
+
|
|
104
|
+
```yaml
|
|
105
|
+
- banner:
|
|
106
|
+
- link "Home" [ref=e1]
|
|
107
|
+
- navigation:
|
|
108
|
+
- link "About" [ref=e2]
|
|
109
|
+
- link "Contact" [ref=e3]
|
|
110
|
+
- main:
|
|
111
|
+
- heading "Welcome" [level=1]
|
|
112
|
+
- button "Sign Up" [ref=e4]
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Interact by Ref
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Click element
|
|
121
|
+
node select-ref.ts --ref e4 --action click
|
|
122
|
+
|
|
123
|
+
# Fill input
|
|
124
|
+
node select-ref.ts --ref e5 --action fill --value "search query"
|
|
125
|
+
|
|
126
|
+
# Get text content
|
|
127
|
+
node select-ref.ts --ref e1 --action text
|
|
128
|
+
|
|
129
|
+
# Screenshot element
|
|
130
|
+
node select-ref.ts --ref e1 --action screenshot --output ./logo.png
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Console & Network
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# Console messages (10 seconds)
|
|
139
|
+
node console.ts --url https://example.com --duration 10000
|
|
140
|
+
|
|
141
|
+
# Filter by type
|
|
142
|
+
node console.ts --url https://example.com --types error,warn
|
|
143
|
+
|
|
144
|
+
# Network requests
|
|
145
|
+
node network.ts --url https://example.com
|
|
146
|
+
|
|
147
|
+
# Find failed requests
|
|
148
|
+
node network.ts --url https://example.com | jq '.requests[] | select(.response.status >= 400)'
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Performance
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
# Core Web Vitals
|
|
157
|
+
node performance.ts --url https://example.com | jq '.vitals'
|
|
158
|
+
|
|
159
|
+
# Output: { FCP, LCP, CLS, TTFB }
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## 🔗 Related
|
|
165
|
+
|
|
166
|
+
| File | When to Read |
|
|
167
|
+
|------|-------------|
|
|
168
|
+
| [aria-snapshot.md](aria-snapshot.md) | ARIA tree format for element discovery |
|
|
169
|
+
| [engineering-spec.md](engineering-spec.md) | Full contracts and architecture |
|
|
170
|
+
| [SKILL.md](../SKILL.md) | Quick reference and error taxonomy |
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
⚡ PikaKit v3.9.134
|