@hivehub/rulebook 5.4.1 → 5.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/analysis.md +35 -35
- package/.claude/commands/continue.md +33 -33
- package/.claude/commands/ralph-config.md +112 -112
- package/.claude/commands/ralph-history.md +110 -110
- package/.claude/commands/ralph-init.md +72 -72
- package/.claude/commands/ralph-pause-resume.md +105 -105
- package/.claude/commands/ralph-run.md +101 -101
- package/.claude/commands/ralph-status.md +76 -76
- package/.claude/commands/rulebook-decision-create.md +55 -55
- package/.claude/commands/rulebook-decision-list.md +15 -15
- package/.claude/commands/rulebook-knowledge-add.md +41 -41
- package/.claude/commands/rulebook-knowledge-list.md +15 -15
- package/.claude/commands/rulebook-learn-capture.md +48 -48
- package/.claude/commands/rulebook-learn-list.md +13 -13
- package/.claude/commands/rulebook-memory-save.md +48 -48
- package/.claude/commands/rulebook-memory-search.md +47 -47
- package/.claude/commands/rulebook-task-apply.md +67 -67
- package/.claude/commands/rulebook-task-archive.md +94 -94
- package/.claude/commands/rulebook-task-create.md +93 -93
- package/.claude/commands/rulebook-task-list.md +42 -42
- package/.claude/commands/rulebook-task-show.md +52 -52
- package/.claude/commands/rulebook-task-validate.md +53 -53
- package/.claude-plugin/marketplace.json +28 -28
- package/.claude-plugin/plugin.json +8 -8
- package/README.md +394 -393
- package/dist/core/generator.d.ts +1 -1
- package/dist/core/generator.d.ts.map +1 -1
- package/dist/core/generator.js +1 -0
- package/dist/core/generator.js.map +1 -1
- package/dist/hooks/terse-activate.d.ts +59 -0
- package/dist/hooks/terse-activate.d.ts.map +1 -0
- package/dist/hooks/terse-activate.js +149 -0
- package/dist/hooks/terse-activate.js.map +1 -0
- package/dist/hooks/terse-config.d.ts +51 -0
- package/dist/hooks/terse-config.d.ts.map +1 -0
- package/dist/hooks/terse-config.js +130 -0
- package/dist/hooks/terse-config.js.map +1 -0
- package/dist/hooks/terse-mode-tracker.d.ts +78 -0
- package/dist/hooks/terse-mode-tracker.d.ts.map +1 -0
- package/dist/hooks/terse-mode-tracker.js +213 -0
- package/dist/hooks/terse-mode-tracker.js.map +1 -0
- package/dist/index.js +0 -0
- package/dist/mcp/rulebook-server.js +0 -0
- package/package.json +21 -22
- package/templates/agents/accessibility-reviewer.md +43 -43
- package/templates/agents/api-designer.md +42 -42
- package/templates/agents/architect.md +51 -51
- package/templates/agents/build-engineer.md +36 -36
- package/templates/agents/code-reviewer.md +47 -47
- package/templates/agents/compiler/codegen-debugger.md +34 -34
- package/templates/agents/compiler/stdlib-engineer.md +28 -28
- package/templates/agents/compiler/test-coverage-guardian.md +31 -31
- package/templates/agents/context-intelligence.md +52 -52
- package/templates/agents/database-architect.md +41 -41
- package/templates/agents/devops-engineer.md +42 -42
- package/templates/agents/docs-writer.md +38 -38
- package/templates/agents/game-engine/cpp-core-expert.md +35 -35
- package/templates/agents/game-engine/render-engineer.md +22 -22
- package/templates/agents/game-engine/shader-engineer.md +38 -38
- package/templates/agents/game-engine/systems-integration.md +43 -43
- package/templates/agents/generic/code-reviewer.md +41 -41
- package/templates/agents/generic/docs-writer.md +25 -25
- package/templates/agents/generic/project-manager.md +36 -36
- package/templates/agents/generic/researcher.md +34 -34
- package/templates/agents/generic/test-engineer.md +41 -41
- package/templates/agents/i18n-engineer.md +42 -42
- package/templates/agents/implementer.md +42 -42
- package/templates/agents/migration-engineer.md +42 -42
- package/templates/agents/mobile/platform-specialist.md +22 -22
- package/templates/agents/mobile/ui-engineer.md +22 -22
- package/templates/agents/performance-engineer.md +49 -49
- package/templates/agents/refactoring-agent.md +41 -41
- package/templates/agents/researcher.md +38 -38
- package/templates/agents/security-reviewer.md +40 -40
- package/templates/agents/team-lead.md +37 -37
- package/templates/agents/tester.md +48 -48
- package/templates/agents/ux-reviewer.md +43 -43
- package/templates/agents/web-app/api-designer.md +22 -22
- package/templates/agents/web-app/backend-engineer.md +30 -30
- package/templates/agents/web-app/database-engineer.md +22 -22
- package/templates/agents/web-app/frontend-engineer.md +29 -29
- package/templates/agents/web-app/security-reviewer.md +32 -32
- package/templates/ci/rulebook-review.yml +26 -26
- package/templates/cli/AIDER.md +49 -49
- package/templates/cli/AMAZON_Q.md +25 -25
- package/templates/cli/AUGGIE.md +32 -32
- package/templates/cli/CLAUDE.md +117 -117
- package/templates/cli/CLINE.md +99 -99
- package/templates/cli/CODEBUDDY.md +20 -20
- package/templates/cli/CODEIUM.md +20 -20
- package/templates/cli/CODEX.md +21 -21
- package/templates/cli/CONTINUE.md +34 -34
- package/templates/cli/CURSOR_CLI.md +62 -62
- package/templates/cli/FACTORY.md +18 -18
- package/templates/cli/GEMINI.md +35 -35
- package/templates/cli/KILOCODE.md +18 -18
- package/templates/cli/OPENCODE.md +18 -18
- package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
- package/templates/commands/rulebook-decision-create.md +55 -55
- package/templates/commands/rulebook-decision-list.md +15 -15
- package/templates/commands/rulebook-knowledge-add.md +41 -41
- package/templates/commands/rulebook-knowledge-list.md +15 -15
- package/templates/commands/rulebook-learn-capture.md +48 -48
- package/templates/commands/rulebook-learn-list.md +13 -13
- package/templates/commands/rulebook-memory-save.md +48 -48
- package/templates/commands/rulebook-memory-search.md +47 -47
- package/templates/commands/rulebook-task-apply.md +67 -67
- package/templates/commands/rulebook-task-archive.md +94 -94
- package/templates/commands/rulebook-task-create.md +93 -93
- package/templates/commands/rulebook-task-list.md +42 -42
- package/templates/commands/rulebook-task-show.md +52 -52
- package/templates/commands/rulebook-task-validate.md +53 -53
- package/templates/compact-context/_default.md +23 -23
- package/templates/compact-context/cpp.md +26 -26
- package/templates/compact-context/go.md +26 -26
- package/templates/compact-context/python.md +26 -26
- package/templates/compact-context/rust.md +28 -28
- package/templates/compact-context/typescript.md +29 -29
- package/templates/core/AGENTS_LEAN.md +9 -0
- package/templates/core/AGENTS_OVERRIDE.md +16 -16
- package/templates/core/AGENT_AUTOMATION.md +296 -296
- package/templates/core/CLAUDE_MD_v2.md +80 -71
- package/templates/core/DAG.md +304 -304
- package/templates/core/DECISIONS.md +38 -38
- package/templates/core/DOCUMENTATION_RULES.md +36 -36
- package/templates/core/KNOWLEDGE.md +49 -49
- package/templates/core/MULTI_AGENT.md +74 -74
- package/templates/core/PLANS.md +28 -28
- package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
- package/templates/core/RALPH.md +471 -471
- package/templates/core/RULEBOOK.md +1947 -1947
- package/templates/core/TIER1_PROHIBITIONS.md +154 -154
- package/templates/core/TOKEN_OPTIMIZATION.md +49 -49
- package/templates/frameworks/ANGULAR.md +36 -36
- package/templates/frameworks/DJANGO.md +83 -83
- package/templates/frameworks/ELECTRON.md +147 -147
- package/templates/frameworks/FLASK.md +38 -38
- package/templates/frameworks/FLUTTER.md +55 -55
- package/templates/frameworks/JQUERY.md +32 -32
- package/templates/frameworks/LARAVEL.md +38 -38
- package/templates/frameworks/NESTJS.md +43 -43
- package/templates/frameworks/NEXTJS.md +127 -127
- package/templates/frameworks/NUXT.md +40 -40
- package/templates/frameworks/RAILS.md +66 -66
- package/templates/frameworks/REACT.md +38 -38
- package/templates/frameworks/REACT_NATIVE.md +47 -47
- package/templates/frameworks/SPRING.md +39 -39
- package/templates/frameworks/SYMFONY.md +36 -36
- package/templates/frameworks/VUE.md +36 -36
- package/templates/frameworks/ZEND.md +35 -35
- package/templates/git/CI_CD_PATTERNS.md +661 -661
- package/templates/git/GITHUB_ACTIONS.md +728 -728
- package/templates/git/GITLAB_CI.md +730 -730
- package/templates/git/GIT_WORKFLOW.md +1192 -1192
- package/templates/git/SECRETS_MANAGEMENT.md +585 -585
- package/templates/hooks/COMMIT_MSG.md +530 -530
- package/templates/hooks/POST_CHECKOUT.md +546 -546
- package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
- package/templates/hooks/PRE_COMMIT.md +414 -414
- package/templates/hooks/PRE_PUSH.md +601 -601
- package/templates/hooks/check-context-and-handoff.ps1 +58 -58
- package/templates/hooks/check-context-and-handoff.sh +76 -76
- package/templates/hooks/enforce-team-for-background-agents.ps1 +63 -63
- package/templates/hooks/enforce-team-for-background-agents.sh +55 -55
- package/templates/hooks/on-compact-reinject.sh +34 -34
- package/templates/hooks/resume-from-handoff.ps1 +40 -40
- package/templates/hooks/resume-from-handoff.sh +61 -61
- package/templates/hooks/terse-activate.ps1 +143 -143
- package/templates/hooks/terse-activate.sh +197 -197
- package/templates/hooks/terse-mode-tracker.ps1 +153 -153
- package/templates/hooks/terse-mode-tracker.sh +187 -187
- package/templates/ides/CONTINUE_RULES.md +16 -16
- package/templates/ides/COPILOT.md +37 -37
- package/templates/ides/COPILOT_INSTRUCTIONS.md +23 -23
- package/templates/ides/CURSOR.md +43 -43
- package/templates/ides/GEMINI_RULES.md +17 -17
- package/templates/ides/JETBRAINS_AI.md +35 -35
- package/templates/ides/REPLIT.md +36 -36
- package/templates/ides/TABNINE.md +29 -29
- package/templates/ides/VSCODE.md +40 -40
- package/templates/ides/WINDSURF.md +36 -36
- package/templates/ides/WINDSURF_RULES.md +14 -14
- package/templates/ides/ZED.md +32 -32
- package/templates/ides/cursor-mdc/go.mdc +24 -24
- package/templates/ides/cursor-mdc/python.mdc +24 -24
- package/templates/ides/cursor-mdc/quality.mdc +25 -25
- package/templates/ides/cursor-mdc/ralph.mdc +39 -39
- package/templates/ides/cursor-mdc/rulebook.mdc +38 -38
- package/templates/ides/cursor-mdc/rust.mdc +24 -24
- package/templates/ides/cursor-mdc/typescript.mdc +25 -25
- package/templates/languages/C.md +333 -333
- package/templates/languages/CPP.md +743 -743
- package/templates/languages/CSHARP.md +417 -417
- package/templates/languages/ELIXIR.md +454 -454
- package/templates/languages/ERLANG.md +361 -361
- package/templates/languages/GO.md +645 -645
- package/templates/languages/HASKELL.md +177 -177
- package/templates/languages/JAVA.md +607 -607
- package/templates/languages/JAVASCRIPT.md +631 -631
- package/templates/languages/JULIA.md +97 -97
- package/templates/languages/KOTLIN.md +511 -511
- package/templates/languages/LISP.md +100 -100
- package/templates/languages/LUA.md +74 -74
- package/templates/languages/OBJECTIVEC.md +90 -90
- package/templates/languages/PHP.md +416 -416
- package/templates/languages/PYTHON.md +682 -682
- package/templates/languages/RUBY.md +421 -421
- package/templates/languages/RUST.md +477 -477
- package/templates/languages/SAS.md +73 -73
- package/templates/languages/SCALA.md +348 -348
- package/templates/languages/SOLIDITY.md +580 -580
- package/templates/languages/SQL.md +137 -137
- package/templates/languages/SWIFT.md +466 -466
- package/templates/languages/TYPESCRIPT.md +591 -591
- package/templates/languages/ZIG.md +265 -265
- package/templates/modules/ATLASSIAN.md +255 -255
- package/templates/modules/CONTEXT7.md +54 -54
- package/templates/modules/FIGMA.md +267 -267
- package/templates/modules/GITHUB_MCP.md +64 -64
- package/templates/modules/GRAFANA.md +328 -328
- package/templates/modules/MEMORY.md +126 -126
- package/templates/modules/NOTION.md +247 -247
- package/templates/modules/PLAYWRIGHT.md +90 -90
- package/templates/modules/RULEBOOK_MCP.md +208 -208
- package/templates/modules/SERENA.md +337 -337
- package/templates/modules/SUPABASE.md +223 -223
- package/templates/modules/SYNAP.md +69 -69
- package/templates/modules/VECTORIZER.md +63 -63
- package/templates/modules/sequential-thinking.md +42 -42
- package/templates/ralph/ralph-history.bat +4 -4
- package/templates/ralph/ralph-history.sh +5 -5
- package/templates/ralph/ralph-init.bat +5 -5
- package/templates/ralph/ralph-init.sh +5 -5
- package/templates/ralph/ralph-pause.bat +5 -5
- package/templates/ralph/ralph-pause.sh +5 -5
- package/templates/ralph/ralph-run.bat +5 -5
- package/templates/ralph/ralph-run.sh +5 -5
- package/templates/ralph/ralph-status.bat +4 -4
- package/templates/ralph/ralph-status.sh +5 -5
- package/templates/rules/consult-analysis-before-implementing.md +23 -23
- package/templates/rules/cpp.md +46 -46
- package/templates/rules/csharp.md +44 -44
- package/templates/rules/diagnostic-first.md +39 -39
- package/templates/rules/fail-twice-escalate.md +46 -46
- package/templates/rules/follow-task-sequence.md +36 -36
- package/templates/rules/git-safety.md +29 -29
- package/templates/rules/go.md +40 -40
- package/templates/rules/incremental-implementation.md +56 -56
- package/templates/rules/incremental-tests.md +29 -29
- package/templates/rules/java.md +43 -43
- package/templates/rules/javascript.md +39 -39
- package/templates/rules/knowledge-base-usage.md +41 -41
- package/templates/rules/multi-agent-teams.md +75 -75
- package/templates/rules/no-deferred.md +31 -31
- package/templates/rules/no-shortcuts.md +30 -30
- package/templates/rules/python.md +43 -43
- package/templates/rules/research-first.md +30 -30
- package/templates/rules/respect-handoff-trigger.md +41 -41
- package/templates/rules/rust.md +40 -40
- package/templates/rules/sequential-editing.md +21 -21
- package/templates/rules/session-workflow.md +24 -24
- package/templates/rules/task-decomposition.md +32 -32
- package/templates/rules/typescript.md +40 -40
- package/templates/services/AZURE_BLOB.md +184 -184
- package/templates/services/CASSANDRA.md +239 -239
- package/templates/services/DATADOG.md +26 -26
- package/templates/services/DOCKER.md +124 -124
- package/templates/services/DOCKER_COMPOSE.md +168 -168
- package/templates/services/DYNAMODB.md +308 -308
- package/templates/services/ELASTICSEARCH.md +347 -347
- package/templates/services/GCS.md +178 -178
- package/templates/services/HELM.md +194 -194
- package/templates/services/INFLUXDB.md +265 -265
- package/templates/services/KAFKA.md +341 -341
- package/templates/services/KUBERNETES.md +208 -208
- package/templates/services/MARIADB.md +183 -183
- package/templates/services/MEMCACHED.md +242 -242
- package/templates/services/MINIO.md +201 -201
- package/templates/services/MONGODB.md +268 -268
- package/templates/services/MYSQL.md +358 -358
- package/templates/services/NEO4J.md +247 -247
- package/templates/services/OPENTELEMETRY.md +25 -25
- package/templates/services/ORACLE.md +290 -290
- package/templates/services/PINO.md +24 -24
- package/templates/services/POSTGRESQL.md +326 -326
- package/templates/services/PROMETHEUS.md +33 -33
- package/templates/services/RABBITMQ.md +286 -286
- package/templates/services/REDIS.md +292 -292
- package/templates/services/S3.md +298 -298
- package/templates/services/SENTRY.md +23 -23
- package/templates/services/SQLITE.md +294 -294
- package/templates/services/SQLSERVER.md +294 -294
- package/templates/services/WINSTON.md +30 -30
- package/templates/skills/cli/aider/SKILL.md +59 -59
- package/templates/skills/cli/amazon-q/SKILL.md +35 -35
- package/templates/skills/cli/auggie/SKILL.md +42 -42
- package/templates/skills/cli/claude/SKILL.md +42 -42
- package/templates/skills/cli/cline/SKILL.md +42 -42
- package/templates/skills/cli/codebuddy/SKILL.md +30 -30
- package/templates/skills/cli/codeium/SKILL.md +30 -30
- package/templates/skills/cli/codex/SKILL.md +31 -31
- package/templates/skills/cli/continue/SKILL.md +44 -44
- package/templates/skills/cli/cursor-cli/SKILL.md +38 -38
- package/templates/skills/cli/factory/SKILL.md +28 -28
- package/templates/skills/cli/gemini/SKILL.md +45 -45
- package/templates/skills/cli/kilocode/SKILL.md +28 -28
- package/templates/skills/cli/opencode/SKILL.md +28 -28
- package/templates/skills/core/agent-automation/SKILL.md +194 -194
- package/templates/skills/core/dag/SKILL.md +314 -314
- package/templates/skills/core/documentation-rules/SKILL.md +46 -46
- package/templates/skills/core/karpathy-guidelines/SKILL.md +93 -0
- package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
- package/templates/skills/core/rulebook/SKILL.md +176 -176
- package/templates/skills/core/rulebook-terse/SKILL.md +116 -116
- package/templates/skills/core/rulebook-terse-commit/SKILL.md +96 -96
- package/templates/skills/core/rulebook-terse-review/SKILL.md +112 -112
- package/templates/skills/dev/accessibility/SKILL.md +17 -17
- package/templates/skills/dev/analysis/SKILL.md +19 -19
- package/templates/skills/dev/api-design/SKILL.md +15 -15
- package/templates/skills/dev/architect/SKILL.md +17 -17
- package/templates/skills/dev/build-fix/SKILL.md +17 -17
- package/templates/skills/dev/db-design/SKILL.md +15 -15
- package/templates/skills/dev/debug/SKILL.md +16 -16
- package/templates/skills/dev/deploy/SKILL.md +17 -17
- package/templates/skills/dev/docs/SKILL.md +17 -17
- package/templates/skills/dev/handoff/SKILL.md +27 -27
- package/templates/skills/dev/migrate/SKILL.md +15 -15
- package/templates/skills/dev/perf/SKILL.md +17 -17
- package/templates/skills/dev/refactor/SKILL.md +17 -17
- package/templates/skills/dev/research/SKILL.md +14 -14
- package/templates/skills/dev/review/SKILL.md +18 -18
- package/templates/skills/dev/security-audit/SKILL.md +17 -17
- package/templates/skills/frameworks/angular/SKILL.md +46 -46
- package/templates/skills/frameworks/django/SKILL.md +93 -93
- package/templates/skills/frameworks/electron/SKILL.md +157 -157
- package/templates/skills/frameworks/flask/SKILL.md +48 -48
- package/templates/skills/frameworks/flutter/SKILL.md +65 -65
- package/templates/skills/frameworks/jquery/SKILL.md +42 -42
- package/templates/skills/frameworks/laravel/SKILL.md +48 -48
- package/templates/skills/frameworks/nestjs/SKILL.md +53 -53
- package/templates/skills/frameworks/nextjs/SKILL.md +137 -137
- package/templates/skills/frameworks/nuxt/SKILL.md +50 -50
- package/templates/skills/frameworks/rails/SKILL.md +76 -76
- package/templates/skills/frameworks/react/SKILL.md +48 -48
- package/templates/skills/frameworks/react-native/SKILL.md +57 -57
- package/templates/skills/frameworks/spring/SKILL.md +49 -49
- package/templates/skills/frameworks/symfony/SKILL.md +46 -46
- package/templates/skills/frameworks/vue/SKILL.md +46 -46
- package/templates/skills/frameworks/zend/SKILL.md +45 -45
- package/templates/skills/ides/copilot/SKILL.md +47 -47
- package/templates/skills/ides/cursor/SKILL.md +53 -53
- package/templates/skills/ides/jetbrains-ai/SKILL.md +45 -45
- package/templates/skills/ides/replit/SKILL.md +46 -46
- package/templates/skills/ides/tabnine/SKILL.md +39 -39
- package/templates/skills/ides/vscode/SKILL.md +50 -50
- package/templates/skills/ides/windsurf/SKILL.md +46 -46
- package/templates/skills/ides/zed/SKILL.md +42 -42
- package/templates/skills/languages/c/SKILL.md +343 -343
- package/templates/skills/languages/cpp/SKILL.md +753 -753
- package/templates/skills/languages/csharp/SKILL.md +427 -427
- package/templates/skills/languages/elixir/SKILL.md +464 -464
- package/templates/skills/languages/erlang/SKILL.md +371 -371
- package/templates/skills/languages/go/SKILL.md +655 -655
- package/templates/skills/languages/haskell/SKILL.md +187 -187
- package/templates/skills/languages/java/SKILL.md +617 -617
- package/templates/skills/languages/javascript/SKILL.md +641 -641
- package/templates/skills/languages/julia/SKILL.md +107 -107
- package/templates/skills/languages/kotlin/SKILL.md +521 -521
- package/templates/skills/languages/lisp/SKILL.md +110 -110
- package/templates/skills/languages/lua/SKILL.md +84 -84
- package/templates/skills/languages/objectivec/SKILL.md +100 -100
- package/templates/skills/languages/php/SKILL.md +426 -426
- package/templates/skills/languages/python/SKILL.md +692 -692
- package/templates/skills/languages/ruby/SKILL.md +431 -431
- package/templates/skills/languages/rust/SKILL.md +487 -487
- package/templates/skills/languages/sas/SKILL.md +83 -83
- package/templates/skills/languages/scala/SKILL.md +358 -358
- package/templates/skills/languages/solidity/SKILL.md +590 -590
- package/templates/skills/languages/sql/SKILL.md +147 -147
- package/templates/skills/languages/swift/SKILL.md +476 -476
- package/templates/skills/languages/typescript/SKILL.md +302 -302
- package/templates/skills/languages/zig/SKILL.md +275 -275
- package/templates/skills/modules/atlassian/SKILL.md +265 -265
- package/templates/skills/modules/context7/SKILL.md +64 -64
- package/templates/skills/modules/figma/SKILL.md +277 -277
- package/templates/skills/modules/github-mcp/SKILL.md +74 -74
- package/templates/skills/modules/grafana/SKILL.md +338 -338
- package/templates/skills/modules/memory/SKILL.md +73 -73
- package/templates/skills/modules/notion/SKILL.md +257 -257
- package/templates/skills/modules/playwright/SKILL.md +100 -100
- package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
- package/templates/skills/modules/serena/SKILL.md +347 -347
- package/templates/skills/modules/supabase/SKILL.md +233 -233
- package/templates/skills/modules/synap/SKILL.md +79 -79
- package/templates/skills/modules/vectorizer/SKILL.md +73 -73
- package/templates/skills/services/azure-blob/SKILL.md +194 -194
- package/templates/skills/services/cassandra/SKILL.md +249 -249
- package/templates/skills/services/dynamodb/SKILL.md +318 -318
- package/templates/skills/services/elasticsearch/SKILL.md +357 -357
- package/templates/skills/services/gcs/SKILL.md +188 -188
- package/templates/skills/services/influxdb/SKILL.md +275 -275
- package/templates/skills/services/kafka/SKILL.md +351 -351
- package/templates/skills/services/mariadb/SKILL.md +193 -193
- package/templates/skills/services/memcached/SKILL.md +252 -252
- package/templates/skills/services/minio/SKILL.md +211 -211
- package/templates/skills/services/mongodb/SKILL.md +278 -278
- package/templates/skills/services/mysql/SKILL.md +368 -368
- package/templates/skills/services/neo4j/SKILL.md +257 -257
- package/templates/skills/services/oracle/SKILL.md +300 -300
- package/templates/skills/services/postgresql/SKILL.md +336 -336
- package/templates/skills/services/rabbitmq/SKILL.md +296 -296
- package/templates/skills/services/redis/SKILL.md +302 -302
- package/templates/skills/services/s3/SKILL.md +308 -308
- package/templates/skills/services/sqlite/SKILL.md +304 -304
- package/templates/skills/services/sqlserver/SKILL.md +304 -304
- package/templates/skills/workflows/ralph/SKILL.md +309 -309
- package/templates/skills/workflows/ralph/install.sh +87 -87
- package/templates/skills/workflows/ralph/manifest.json +158 -158
|
@@ -1,247 +1,247 @@
|
|
|
1
|
-
<!-- NOTION:START -->
|
|
2
|
-
# Notion MCP Instructions
|
|
3
|
-
|
|
4
|
-
**CRITICAL**: Use MCP Notion for documentation, task tracking, and knowledge management.
|
|
5
|
-
|
|
6
|
-
## Core Operations
|
|
7
|
-
|
|
8
|
-
### Database Queries
|
|
9
|
-
```typescript
|
|
10
|
-
// Query database
|
|
11
|
-
notion.databases.query({
|
|
12
|
-
database_id: 'database-id',
|
|
13
|
-
filter: {
|
|
14
|
-
property: 'Status',
|
|
15
|
-
select: { equals: 'In Progress' }
|
|
16
|
-
},
|
|
17
|
-
sorts: [{ property: 'Created', direction: 'descending' }]
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
// Get database
|
|
21
|
-
notion.databases.retrieve({ database_id: 'database-id' })
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
### Page Operations
|
|
25
|
-
```typescript
|
|
26
|
-
// Create page
|
|
27
|
-
notion.pages.create({
|
|
28
|
-
parent: { database_id: 'database-id' },
|
|
29
|
-
properties: {
|
|
30
|
-
'Name': { title: [{ text: { content: 'New Task' } }] },
|
|
31
|
-
'Status': { select: { name: 'To Do' } },
|
|
32
|
-
'Priority': { select: { name: 'High' } }
|
|
33
|
-
}
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
// Update page
|
|
37
|
-
notion.pages.update({
|
|
38
|
-
page_id: 'page-id',
|
|
39
|
-
properties: {
|
|
40
|
-
'Status': { select: { name: 'Done' } }
|
|
41
|
-
}
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
// Get page
|
|
45
|
-
notion.pages.retrieve({ page_id: 'page-id' })
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### Block Operations
|
|
49
|
-
```typescript
|
|
50
|
-
// Get blocks
|
|
51
|
-
notion.blocks.children.list({ block_id: 'page-id' })
|
|
52
|
-
|
|
53
|
-
// Append blocks
|
|
54
|
-
notion.blocks.children.append({
|
|
55
|
-
block_id: 'page-id',
|
|
56
|
-
children: [
|
|
57
|
-
{
|
|
58
|
-
object: 'block',
|
|
59
|
-
type: 'heading_2',
|
|
60
|
-
heading_2: {
|
|
61
|
-
rich_text: [{ type: 'text', text: { content: 'Section Title' } }]
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
object: 'block',
|
|
66
|
-
type: 'paragraph',
|
|
67
|
-
paragraph: {
|
|
68
|
-
rich_text: [{ type: 'text', text: { content: 'Content here' } }]
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
]
|
|
72
|
-
})
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### Search
|
|
76
|
-
```typescript
|
|
77
|
-
// Search all content
|
|
78
|
-
notion.search({
|
|
79
|
-
query: 'search term',
|
|
80
|
-
filter: { property: 'object', value: 'page' },
|
|
81
|
-
sort: { direction: 'descending', timestamp: 'last_edited_time' }
|
|
82
|
-
})
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
## Common Patterns
|
|
86
|
-
|
|
87
|
-
### Task Management
|
|
88
|
-
```typescript
|
|
89
|
-
// Create task
|
|
90
|
-
await notion.pages.create({
|
|
91
|
-
parent: { database_id: tasksDbId },
|
|
92
|
-
properties: {
|
|
93
|
-
'Task': { title: [{ text: { content: 'Implement feature X' } }] },
|
|
94
|
-
'Status': { select: { name: 'To Do' } },
|
|
95
|
-
'Assignee': { people: [{ id: userId }] },
|
|
96
|
-
'Due Date': { date: { start: '2024-12-31' } }
|
|
97
|
-
}
|
|
98
|
-
})
|
|
99
|
-
|
|
100
|
-
// Update task status
|
|
101
|
-
await notion.pages.update({
|
|
102
|
-
page_id: taskId,
|
|
103
|
-
properties: {
|
|
104
|
-
'Status': { select: { name: 'In Progress' } },
|
|
105
|
-
'Started': { date: { start: new Date().toISOString() } }
|
|
106
|
-
}
|
|
107
|
-
})
|
|
108
|
-
|
|
109
|
-
// Complete task
|
|
110
|
-
await notion.pages.update({
|
|
111
|
-
page_id: taskId,
|
|
112
|
-
properties: {
|
|
113
|
-
'Status': { select: { name: 'Done' } },
|
|
114
|
-
'Completed': { date: { start: new Date().toISOString() } }
|
|
115
|
-
}
|
|
116
|
-
})
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### Documentation Generation
|
|
120
|
-
```typescript
|
|
121
|
-
// Create documentation page
|
|
122
|
-
const page = await notion.pages.create({
|
|
123
|
-
parent: { database_id: docsDbId },
|
|
124
|
-
properties: {
|
|
125
|
-
'Title': { title: [{ text: { content: 'API Documentation' } }] },
|
|
126
|
-
'Category': { select: { name: 'Technical' } }
|
|
127
|
-
}
|
|
128
|
-
})
|
|
129
|
-
|
|
130
|
-
// Add content blocks
|
|
131
|
-
await notion.blocks.children.append({
|
|
132
|
-
block_id: page.id,
|
|
133
|
-
children: [
|
|
134
|
-
{ type: 'heading_1', heading_1: { rich_text: [{ text: { content: 'API Reference' } }] } },
|
|
135
|
-
{ type: 'paragraph', paragraph: { rich_text: [{ text: { content: 'Endpoints overview...' } }] } },
|
|
136
|
-
{ type: 'code', code: {
|
|
137
|
-
language: 'typescript',
|
|
138
|
-
rich_text: [{ text: { content: 'const api = new API()' } }]
|
|
139
|
-
}}
|
|
140
|
-
]
|
|
141
|
-
})
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
### Meeting Notes
|
|
145
|
-
```typescript
|
|
146
|
-
// Create meeting notes
|
|
147
|
-
await notion.pages.create({
|
|
148
|
-
parent: { database_id: meetingsDbId },
|
|
149
|
-
properties: {
|
|
150
|
-
'Title': { title: [{ text: { content: 'Sprint Planning - Jan 2024' } }] },
|
|
151
|
-
'Date': { date: { start: '2024-01-15' } },
|
|
152
|
-
'Attendees': { people: attendeeIds }
|
|
153
|
-
}
|
|
154
|
-
})
|
|
155
|
-
|
|
156
|
-
// Add agenda and notes
|
|
157
|
-
await notion.blocks.children.append({
|
|
158
|
-
block_id: pageId,
|
|
159
|
-
children: [
|
|
160
|
-
{ type: 'heading_2', heading_2: { rich_text: [{ text: { content: 'Agenda' } }] } },
|
|
161
|
-
{ type: 'bulleted_list_item', bulleted_list_item: { rich_text: [{ text: { content: 'Review last sprint' } }] } },
|
|
162
|
-
{ type: 'bulleted_list_item', bulleted_list_item: { rich_text: [{ text: { content: 'Plan next sprint' } }] } },
|
|
163
|
-
{ type: 'heading_2', heading_2: { rich_text: [{ text: { content: 'Action Items' } }] } }
|
|
164
|
-
]
|
|
165
|
-
})
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
## Best Practices
|
|
169
|
-
|
|
170
|
-
✅ **DO:**
|
|
171
|
-
- Use databases for structured data
|
|
172
|
-
- Cache database schemas
|
|
173
|
-
- Batch operations when possible
|
|
174
|
-
- Handle rate limits (3 requests/second)
|
|
175
|
-
- Use rich text for formatting
|
|
176
|
-
- Archive instead of delete
|
|
177
|
-
|
|
178
|
-
❌ **DON'T:**
|
|
179
|
-
- Make excessive API calls
|
|
180
|
-
- Ignore rate limiting
|
|
181
|
-
- Store large binary files
|
|
182
|
-
- Skip error handling
|
|
183
|
-
- Hardcode database IDs
|
|
184
|
-
|
|
185
|
-
## Configuration
|
|
186
|
-
|
|
187
|
-
```json
|
|
188
|
-
{
|
|
189
|
-
"mcpServers": {
|
|
190
|
-
"notion": {
|
|
191
|
-
"command": "npx",
|
|
192
|
-
"args": ["-y", "@modelcontextprotocol/server-notion"],
|
|
193
|
-
"env": {
|
|
194
|
-
"NOTION_API_KEY": "secret_xxx",
|
|
195
|
-
"NOTION_VERSION": "2022-06-28"
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
**Setup:**
|
|
203
|
-
1. Create integration at https://www.notion.so/my-integrations
|
|
204
|
-
2. Copy internal integration token
|
|
205
|
-
3. Share databases/pages with integration
|
|
206
|
-
4. Use token as `NOTION_API_KEY`
|
|
207
|
-
|
|
208
|
-
## Integration Patterns
|
|
209
|
-
|
|
210
|
-
### Sync Tasks from Code
|
|
211
|
-
```typescript
|
|
212
|
-
// Sync OpenSpec tasks to Notion
|
|
213
|
-
const tasks = parseOpenSpecTasks('openspec/changes/my-feature/tasks.md')
|
|
214
|
-
|
|
215
|
-
for (const task of tasks) {
|
|
216
|
-
await notion.pages.create({
|
|
217
|
-
parent: { database_id: tasksDbId },
|
|
218
|
-
properties: {
|
|
219
|
-
'Task': { title: [{ text: { content: task.title } }] },
|
|
220
|
-
'Status': { select: { name: task.completed ? 'Done' : 'To Do' } },
|
|
221
|
-
'Source': { select: { name: 'OpenSpec' } }
|
|
222
|
-
}
|
|
223
|
-
})
|
|
224
|
-
}
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
### Generate Changelog
|
|
228
|
-
```typescript
|
|
229
|
-
// Query completed tasks
|
|
230
|
-
const completed = await notion.databases.query({
|
|
231
|
-
database_id: tasksDbId,
|
|
232
|
-
filter: {
|
|
233
|
-
and: [
|
|
234
|
-
{ property: 'Status', select: { equals: 'Done' } },
|
|
235
|
-
{ property: 'Completed', date: { after: '2024-01-01' } }
|
|
236
|
-
]
|
|
237
|
-
}
|
|
238
|
-
})
|
|
239
|
-
|
|
240
|
-
// Generate CHANGELOG.md entries
|
|
241
|
-
const entries = completed.results.map(task =>
|
|
242
|
-
`- ${task.properties.Task.title[0].plain_text}`
|
|
243
|
-
)
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
<!-- NOTION:END -->
|
|
247
|
-
|
|
1
|
+
<!-- NOTION:START -->
|
|
2
|
+
# Notion MCP Instructions
|
|
3
|
+
|
|
4
|
+
**CRITICAL**: Use MCP Notion for documentation, task tracking, and knowledge management.
|
|
5
|
+
|
|
6
|
+
## Core Operations
|
|
7
|
+
|
|
8
|
+
### Database Queries
|
|
9
|
+
```typescript
|
|
10
|
+
// Query database
|
|
11
|
+
notion.databases.query({
|
|
12
|
+
database_id: 'database-id',
|
|
13
|
+
filter: {
|
|
14
|
+
property: 'Status',
|
|
15
|
+
select: { equals: 'In Progress' }
|
|
16
|
+
},
|
|
17
|
+
sorts: [{ property: 'Created', direction: 'descending' }]
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
// Get database
|
|
21
|
+
notion.databases.retrieve({ database_id: 'database-id' })
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Page Operations
|
|
25
|
+
```typescript
|
|
26
|
+
// Create page
|
|
27
|
+
notion.pages.create({
|
|
28
|
+
parent: { database_id: 'database-id' },
|
|
29
|
+
properties: {
|
|
30
|
+
'Name': { title: [{ text: { content: 'New Task' } }] },
|
|
31
|
+
'Status': { select: { name: 'To Do' } },
|
|
32
|
+
'Priority': { select: { name: 'High' } }
|
|
33
|
+
}
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
// Update page
|
|
37
|
+
notion.pages.update({
|
|
38
|
+
page_id: 'page-id',
|
|
39
|
+
properties: {
|
|
40
|
+
'Status': { select: { name: 'Done' } }
|
|
41
|
+
}
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
// Get page
|
|
45
|
+
notion.pages.retrieve({ page_id: 'page-id' })
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Block Operations
|
|
49
|
+
```typescript
|
|
50
|
+
// Get blocks
|
|
51
|
+
notion.blocks.children.list({ block_id: 'page-id' })
|
|
52
|
+
|
|
53
|
+
// Append blocks
|
|
54
|
+
notion.blocks.children.append({
|
|
55
|
+
block_id: 'page-id',
|
|
56
|
+
children: [
|
|
57
|
+
{
|
|
58
|
+
object: 'block',
|
|
59
|
+
type: 'heading_2',
|
|
60
|
+
heading_2: {
|
|
61
|
+
rich_text: [{ type: 'text', text: { content: 'Section Title' } }]
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
object: 'block',
|
|
66
|
+
type: 'paragraph',
|
|
67
|
+
paragraph: {
|
|
68
|
+
rich_text: [{ type: 'text', text: { content: 'Content here' } }]
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
})
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Search
|
|
76
|
+
```typescript
|
|
77
|
+
// Search all content
|
|
78
|
+
notion.search({
|
|
79
|
+
query: 'search term',
|
|
80
|
+
filter: { property: 'object', value: 'page' },
|
|
81
|
+
sort: { direction: 'descending', timestamp: 'last_edited_time' }
|
|
82
|
+
})
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Common Patterns
|
|
86
|
+
|
|
87
|
+
### Task Management
|
|
88
|
+
```typescript
|
|
89
|
+
// Create task
|
|
90
|
+
await notion.pages.create({
|
|
91
|
+
parent: { database_id: tasksDbId },
|
|
92
|
+
properties: {
|
|
93
|
+
'Task': { title: [{ text: { content: 'Implement feature X' } }] },
|
|
94
|
+
'Status': { select: { name: 'To Do' } },
|
|
95
|
+
'Assignee': { people: [{ id: userId }] },
|
|
96
|
+
'Due Date': { date: { start: '2024-12-31' } }
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
// Update task status
|
|
101
|
+
await notion.pages.update({
|
|
102
|
+
page_id: taskId,
|
|
103
|
+
properties: {
|
|
104
|
+
'Status': { select: { name: 'In Progress' } },
|
|
105
|
+
'Started': { date: { start: new Date().toISOString() } }
|
|
106
|
+
}
|
|
107
|
+
})
|
|
108
|
+
|
|
109
|
+
// Complete task
|
|
110
|
+
await notion.pages.update({
|
|
111
|
+
page_id: taskId,
|
|
112
|
+
properties: {
|
|
113
|
+
'Status': { select: { name: 'Done' } },
|
|
114
|
+
'Completed': { date: { start: new Date().toISOString() } }
|
|
115
|
+
}
|
|
116
|
+
})
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Documentation Generation
|
|
120
|
+
```typescript
|
|
121
|
+
// Create documentation page
|
|
122
|
+
const page = await notion.pages.create({
|
|
123
|
+
parent: { database_id: docsDbId },
|
|
124
|
+
properties: {
|
|
125
|
+
'Title': { title: [{ text: { content: 'API Documentation' } }] },
|
|
126
|
+
'Category': { select: { name: 'Technical' } }
|
|
127
|
+
}
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
// Add content blocks
|
|
131
|
+
await notion.blocks.children.append({
|
|
132
|
+
block_id: page.id,
|
|
133
|
+
children: [
|
|
134
|
+
{ type: 'heading_1', heading_1: { rich_text: [{ text: { content: 'API Reference' } }] } },
|
|
135
|
+
{ type: 'paragraph', paragraph: { rich_text: [{ text: { content: 'Endpoints overview...' } }] } },
|
|
136
|
+
{ type: 'code', code: {
|
|
137
|
+
language: 'typescript',
|
|
138
|
+
rich_text: [{ text: { content: 'const api = new API()' } }]
|
|
139
|
+
}}
|
|
140
|
+
]
|
|
141
|
+
})
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Meeting Notes
|
|
145
|
+
```typescript
|
|
146
|
+
// Create meeting notes
|
|
147
|
+
await notion.pages.create({
|
|
148
|
+
parent: { database_id: meetingsDbId },
|
|
149
|
+
properties: {
|
|
150
|
+
'Title': { title: [{ text: { content: 'Sprint Planning - Jan 2024' } }] },
|
|
151
|
+
'Date': { date: { start: '2024-01-15' } },
|
|
152
|
+
'Attendees': { people: attendeeIds }
|
|
153
|
+
}
|
|
154
|
+
})
|
|
155
|
+
|
|
156
|
+
// Add agenda and notes
|
|
157
|
+
await notion.blocks.children.append({
|
|
158
|
+
block_id: pageId,
|
|
159
|
+
children: [
|
|
160
|
+
{ type: 'heading_2', heading_2: { rich_text: [{ text: { content: 'Agenda' } }] } },
|
|
161
|
+
{ type: 'bulleted_list_item', bulleted_list_item: { rich_text: [{ text: { content: 'Review last sprint' } }] } },
|
|
162
|
+
{ type: 'bulleted_list_item', bulleted_list_item: { rich_text: [{ text: { content: 'Plan next sprint' } }] } },
|
|
163
|
+
{ type: 'heading_2', heading_2: { rich_text: [{ text: { content: 'Action Items' } }] } }
|
|
164
|
+
]
|
|
165
|
+
})
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Best Practices
|
|
169
|
+
|
|
170
|
+
✅ **DO:**
|
|
171
|
+
- Use databases for structured data
|
|
172
|
+
- Cache database schemas
|
|
173
|
+
- Batch operations when possible
|
|
174
|
+
- Handle rate limits (3 requests/second)
|
|
175
|
+
- Use rich text for formatting
|
|
176
|
+
- Archive instead of delete
|
|
177
|
+
|
|
178
|
+
❌ **DON'T:**
|
|
179
|
+
- Make excessive API calls
|
|
180
|
+
- Ignore rate limiting
|
|
181
|
+
- Store large binary files
|
|
182
|
+
- Skip error handling
|
|
183
|
+
- Hardcode database IDs
|
|
184
|
+
|
|
185
|
+
## Configuration
|
|
186
|
+
|
|
187
|
+
```json
|
|
188
|
+
{
|
|
189
|
+
"mcpServers": {
|
|
190
|
+
"notion": {
|
|
191
|
+
"command": "npx",
|
|
192
|
+
"args": ["-y", "@modelcontextprotocol/server-notion"],
|
|
193
|
+
"env": {
|
|
194
|
+
"NOTION_API_KEY": "secret_xxx",
|
|
195
|
+
"NOTION_VERSION": "2022-06-28"
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
**Setup:**
|
|
203
|
+
1. Create integration at https://www.notion.so/my-integrations
|
|
204
|
+
2. Copy internal integration token
|
|
205
|
+
3. Share databases/pages with integration
|
|
206
|
+
4. Use token as `NOTION_API_KEY`
|
|
207
|
+
|
|
208
|
+
## Integration Patterns
|
|
209
|
+
|
|
210
|
+
### Sync Tasks from Code
|
|
211
|
+
```typescript
|
|
212
|
+
// Sync OpenSpec tasks to Notion
|
|
213
|
+
const tasks = parseOpenSpecTasks('openspec/changes/my-feature/tasks.md')
|
|
214
|
+
|
|
215
|
+
for (const task of tasks) {
|
|
216
|
+
await notion.pages.create({
|
|
217
|
+
parent: { database_id: tasksDbId },
|
|
218
|
+
properties: {
|
|
219
|
+
'Task': { title: [{ text: { content: task.title } }] },
|
|
220
|
+
'Status': { select: { name: task.completed ? 'Done' : 'To Do' } },
|
|
221
|
+
'Source': { select: { name: 'OpenSpec' } }
|
|
222
|
+
}
|
|
223
|
+
})
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Generate Changelog
|
|
228
|
+
```typescript
|
|
229
|
+
// Query completed tasks
|
|
230
|
+
const completed = await notion.databases.query({
|
|
231
|
+
database_id: tasksDbId,
|
|
232
|
+
filter: {
|
|
233
|
+
and: [
|
|
234
|
+
{ property: 'Status', select: { equals: 'Done' } },
|
|
235
|
+
{ property: 'Completed', date: { after: '2024-01-01' } }
|
|
236
|
+
]
|
|
237
|
+
}
|
|
238
|
+
})
|
|
239
|
+
|
|
240
|
+
// Generate CHANGELOG.md entries
|
|
241
|
+
const entries = completed.results.map(task =>
|
|
242
|
+
`- ${task.properties.Task.title[0].plain_text}`
|
|
243
|
+
)
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
<!-- NOTION:END -->
|
|
247
|
+
|
|
@@ -1,90 +1,90 @@
|
|
|
1
|
-
<!-- PLAYWRIGHT:START -->
|
|
2
|
-
# Playwright MCP Instructions
|
|
3
|
-
|
|
4
|
-
**CRITICAL**: Use MCP Playwright for automated browser testing and web automation.
|
|
5
|
-
|
|
6
|
-
## Core Operations
|
|
7
|
-
|
|
8
|
-
### Navigation & Screenshots
|
|
9
|
-
```typescript
|
|
10
|
-
await playwright.navigate({ url: "https://example.com" });
|
|
11
|
-
await playwright.takeScreenshot({ fullPage: true, filename: "page.png" });
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
### Interaction
|
|
15
|
-
```typescript
|
|
16
|
-
// Click
|
|
17
|
-
await playwright.click({ element: "Submit Button", ref: "button[type='submit']" });
|
|
18
|
-
|
|
19
|
-
// Type
|
|
20
|
-
await playwright.type({ element: "Search", ref: "#search", text: "query" });
|
|
21
|
-
|
|
22
|
-
// Fill form
|
|
23
|
-
await playwright.fillForm({
|
|
24
|
-
fields: [
|
|
25
|
-
{ name: "Email", type: "textbox", ref: "#email", value: "user@example.com" },
|
|
26
|
-
{ name: "Password", type: "textbox", ref: "#password", value: "secret" }
|
|
27
|
-
]
|
|
28
|
-
});
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### DOM & Monitoring
|
|
32
|
-
```typescript
|
|
33
|
-
// Get accessibility tree
|
|
34
|
-
const snapshot = await playwright.snapshot();
|
|
35
|
-
|
|
36
|
-
// Console errors
|
|
37
|
-
const errors = await playwright.getConsoleMessages({ onlyErrors: true });
|
|
38
|
-
|
|
39
|
-
// Network requests
|
|
40
|
-
const requests = await playwright.getNetworkRequests();
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Common Patterns
|
|
44
|
-
|
|
45
|
-
### Login Flow
|
|
46
|
-
```typescript
|
|
47
|
-
1. navigate to login page
|
|
48
|
-
2. fillForm with credentials
|
|
49
|
-
3. click submit button
|
|
50
|
-
4. waitFor dashboard text
|
|
51
|
-
5. verify success via snapshot
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Error Detection
|
|
55
|
-
```typescript
|
|
56
|
-
const errors = await playwright.getConsoleMessages({ onlyErrors: true });
|
|
57
|
-
if (errors.length > 0) {
|
|
58
|
-
await playwright.takeScreenshot({ filename: "error-state.png" });
|
|
59
|
-
}
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## Best Practices
|
|
63
|
-
|
|
64
|
-
✅ **DO:**
|
|
65
|
-
- Wait for specific conditions (not time delays)
|
|
66
|
-
- Use descriptive element names
|
|
67
|
-
- Handle dialogs (`handleDialog`)
|
|
68
|
-
- Check console errors after actions
|
|
69
|
-
- Take screenshots at critical points
|
|
70
|
-
|
|
71
|
-
❌ **DON'T:**
|
|
72
|
-
- Use hard-coded delays
|
|
73
|
-
- Use generic element selectors
|
|
74
|
-
- Ignore console errors
|
|
75
|
-
- Use relative file paths (uploads)
|
|
76
|
-
|
|
77
|
-
## Configuration
|
|
78
|
-
|
|
79
|
-
```json
|
|
80
|
-
{
|
|
81
|
-
"mcpServers": {
|
|
82
|
-
"playwright": {
|
|
83
|
-
"command": "npx",
|
|
84
|
-
"args": ["-y", "@modelcontextprotocol/server-playwright"]
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
<!-- PLAYWRIGHT:END -->
|
|
1
|
+
<!-- PLAYWRIGHT:START -->
|
|
2
|
+
# Playwright MCP Instructions
|
|
3
|
+
|
|
4
|
+
**CRITICAL**: Use MCP Playwright for automated browser testing and web automation.
|
|
5
|
+
|
|
6
|
+
## Core Operations
|
|
7
|
+
|
|
8
|
+
### Navigation & Screenshots
|
|
9
|
+
```typescript
|
|
10
|
+
await playwright.navigate({ url: "https://example.com" });
|
|
11
|
+
await playwright.takeScreenshot({ fullPage: true, filename: "page.png" });
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### Interaction
|
|
15
|
+
```typescript
|
|
16
|
+
// Click
|
|
17
|
+
await playwright.click({ element: "Submit Button", ref: "button[type='submit']" });
|
|
18
|
+
|
|
19
|
+
// Type
|
|
20
|
+
await playwright.type({ element: "Search", ref: "#search", text: "query" });
|
|
21
|
+
|
|
22
|
+
// Fill form
|
|
23
|
+
await playwright.fillForm({
|
|
24
|
+
fields: [
|
|
25
|
+
{ name: "Email", type: "textbox", ref: "#email", value: "user@example.com" },
|
|
26
|
+
{ name: "Password", type: "textbox", ref: "#password", value: "secret" }
|
|
27
|
+
]
|
|
28
|
+
});
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### DOM & Monitoring
|
|
32
|
+
```typescript
|
|
33
|
+
// Get accessibility tree
|
|
34
|
+
const snapshot = await playwright.snapshot();
|
|
35
|
+
|
|
36
|
+
// Console errors
|
|
37
|
+
const errors = await playwright.getConsoleMessages({ onlyErrors: true });
|
|
38
|
+
|
|
39
|
+
// Network requests
|
|
40
|
+
const requests = await playwright.getNetworkRequests();
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Common Patterns
|
|
44
|
+
|
|
45
|
+
### Login Flow
|
|
46
|
+
```typescript
|
|
47
|
+
1. navigate to login page
|
|
48
|
+
2. fillForm with credentials
|
|
49
|
+
3. click submit button
|
|
50
|
+
4. waitFor dashboard text
|
|
51
|
+
5. verify success via snapshot
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Error Detection
|
|
55
|
+
```typescript
|
|
56
|
+
const errors = await playwright.getConsoleMessages({ onlyErrors: true });
|
|
57
|
+
if (errors.length > 0) {
|
|
58
|
+
await playwright.takeScreenshot({ filename: "error-state.png" });
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Best Practices
|
|
63
|
+
|
|
64
|
+
✅ **DO:**
|
|
65
|
+
- Wait for specific conditions (not time delays)
|
|
66
|
+
- Use descriptive element names
|
|
67
|
+
- Handle dialogs (`handleDialog`)
|
|
68
|
+
- Check console errors after actions
|
|
69
|
+
- Take screenshots at critical points
|
|
70
|
+
|
|
71
|
+
❌ **DON'T:**
|
|
72
|
+
- Use hard-coded delays
|
|
73
|
+
- Use generic element selectors
|
|
74
|
+
- Ignore console errors
|
|
75
|
+
- Use relative file paths (uploads)
|
|
76
|
+
|
|
77
|
+
## Configuration
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"mcpServers": {
|
|
82
|
+
"playwright": {
|
|
83
|
+
"command": "npx",
|
|
84
|
+
"args": ["-y", "@modelcontextprotocol/server-playwright"]
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
<!-- PLAYWRIGHT:END -->
|