claude-flow-novice 2.9.0 → 2.10.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/agents/cfn-dev-team/CLAUDE.md +1086 -0
- package/.claude/agents/cfn-dev-team/README.md +116 -0
- package/.claude/agents/cfn-dev-team/architecture/api-designer-persona.md +149 -0
- package/.claude/agents/cfn-dev-team/architecture/base-template-generator.md +196 -0
- package/.claude/agents/cfn-dev-team/architecture/goal-planner.md +183 -0
- package/.claude/agents/cfn-dev-team/architecture/planner.md +182 -0
- package/.claude/agents/cfn-dev-team/architecture/system-architect.md +162 -0
- package/.claude/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +540 -0
- package/.claude/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +20 -14
- package/.claude/agents/cfn-dev-team/coordinators/consensus-builder.md +167 -0
- package/.claude/agents/cfn-dev-team/dev-ops/devops-engineer.md +148 -0
- package/.claude/agents/cfn-dev-team/dev-ops/github-commit-agent.md +118 -0
- package/.claude/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +540 -0
- package/.claude/agents/cfn-dev-team/developers/backend-dev.md +20 -0
- package/.claude/agents/cfn-dev-team/developers/data/data-engineer.md +585 -0
- package/.claude/agents/cfn-dev-team/developers/database/database-architect.md +276 -0
- package/.claude/agents/cfn-dev-team/developers/dev-backend-api.md +147 -0
- package/.claude/agents/cfn-dev-team/developers/frontend/mobile-dev.md +218 -0
- package/.claude/agents/cfn-dev-team/developers/{react-frontend-engineer.md → frontend/react-frontend-engineer.md} +53 -5
- package/.claude/agents/cfn-dev-team/developers/frontend/spec-mobile-react-native.md +199 -0
- package/.claude/agents/cfn-dev-team/developers/graphql-specialist.md +615 -0
- package/.claude/agents/cfn-dev-team/developers/rust-developer.md +174 -0
- package/.claude/agents/cfn-dev-team/documentation/README-VALIDATION.md +243 -0
- package/.claude/agents/cfn-dev-team/documentation/agent-type-guidelines.md +465 -0
- package/.claude/agents/cfn-dev-team/documentation/api-docs.md +103 -0
- package/.claude/agents/cfn-dev-team/documentation/docs-api-openapi.md +98 -0
- package/.claude/agents/cfn-dev-team/documentation/pseudocode.md +159 -0
- package/.claude/agents/cfn-dev-team/documentation/specification.md +157 -0
- package/.claude/agents/cfn-dev-team/product-owners/accessibility-advocate-persona.md +109 -0
- package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/cto-agent.md +8 -6
- package/.claude/agents/cfn-dev-team/product-owners/power-user-persona.md +190 -0
- package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner.md +85 -59
- package/.claude/agents/cfn-dev-team/reviewers/quality/analyze-code-quality.md +141 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/code-analyzer.md +200 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/cyclomatic-complexity-reducer.md +321 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +238 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +101 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/quality-metrics.md +375 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/security-specialist.md +193 -0
- package/.claude/agents/cfn-dev-team/reviewers/reviewer.md +39 -0
- package/.claude/agents/cfn-dev-team/testers/interaction-tester.md +31 -0
- package/.claude/agents/cfn-dev-team/testers/load-testing-specialist.md +469 -0
- package/.claude/agents/cfn-dev-team/testers/playwright-tester.md +24 -0
- package/.claude/agents/cfn-dev-team/testers/tester.md +20 -0
- package/.claude/agents/cfn-dev-team/utility/agent-builder.md +151 -0
- package/.claude/agents/cfn-dev-team/utility/analyst.md +178 -0
- package/.claude/agents/cfn-dev-team/utility/claude-code-expert.md +1043 -0
- package/.claude/agents/cfn-dev-team/utility/code-booster.md +139 -0
- package/.claude/agents/cfn-dev-team/utility/context-curator.md +99 -0
- package/.claude/agents/cfn-dev-team/{developers → utility}/researcher.md +6 -4
- package/.claude/commands/cfn/CFN_LOOP_FRONTEND.md +741 -0
- package/.claude/commands/cfn/CFN_LOOP_TASK_MODE.md +353 -0
- package/.claude/commands/cfn/cfn-loop-frontend.md +555 -0
- package/.claude/commands/cfn/cfn-loop.md +168 -7
- package/{CFN-CLAUDE.md → .claude/root-claude-distribute/CFN-CLAUDE.md} +23 -3
- package/.claude/skills/cfn-ace-system/SKILL.md +364 -0
- package/.claude/skills/cfn-ace-system/add-bullet.sh +145 -0
- package/.claude/skills/cfn-ace-system/analyze-anti-pattern-effectiveness.sh +56 -0
- package/.claude/skills/cfn-ace-system/classify-task.sh +18 -0
- package/.claude/skills/cfn-ace-system/export-ace-metrics.sh +48 -0
- package/.claude/skills/cfn-ace-system/extract-tags.sh +385 -0
- package/.claude/skills/cfn-ace-system/format-negative-context.sh +180 -0
- package/.claude/skills/cfn-ace-system/init-indexes.sql +160 -0
- package/.claude/skills/cfn-ace-system/invoke-context-curate.sh +192 -0
- package/.claude/skills/cfn-ace-system/invoke-context-inject.sh +361 -0
- package/.claude/skills/cfn-ace-system/invoke-context-query.sh +139 -0
- package/.claude/skills/cfn-ace-system/invoke-context-reflect.sh +343 -0
- package/.claude/skills/cfn-ace-system/invoke-context-stats.sh +227 -0
- package/.claude/skills/cfn-ace-system/log-merge.sh +67 -0
- package/.claude/skills/cfn-ace-system/monitor-injection-performance.sh +138 -0
- package/.claude/skills/cfn-ace-system/optimize-injection-pipeline.sh +169 -0
- package/.claude/skills/cfn-ace-system/query-anti-patterns.sh +276 -0
- package/.claude/skills/cfn-ace-system/query-contexts.sh +150 -0
- package/.claude/skills/cfn-ace-system/query-reflections.sh +35 -0
- package/.claude/skills/cfn-ace-system/schema/001-create-context-reflections.sql +237 -0
- package/.claude/skills/cfn-ace-system/schema/README.md +723 -0
- package/.claude/skills/cfn-ace-system/schema/SCHEMA_DESIGN_SUMMARY.md +564 -0
- package/.claude/skills/cfn-ace-system/schema/populate-test-data-simple.sh +62 -0
- package/.claude/skills/cfn-ace-system/schema/populate-test-data.sh +247 -0
- package/.claude/skills/cfn-ace-system/schema/run-migration.sh +231 -0
- package/.claude/skills/cfn-ace-system/schema/validate-schema.sql +280 -0
- package/.claude/skills/cfn-ace-system/score-relevance-adapter.sh +138 -0
- package/.claude/skills/cfn-ace-system/score-relevance.sh +253 -0
- package/.claude/skills/cfn-ace-system/sprint-7-lessons.json +46 -0
- package/.claude/skills/cfn-ace-system/store-reflection.sh +46 -0
- package/.claude/skills/cfn-ace-system/test-ace-skill.sh +312 -0
- package/.claude/skills/cfn-ace-system/track-ab-test.sh +42 -0
- package/.claude/skills/cfn-ace-system/update-reflection.sh +41 -0
- package/.claude/skills/cfn-agent-discovery/SKILL.md +40 -0
- package/.claude/skills/cfn-agent-discovery/agents-registry-clean.json +0 -0
- package/.claude/skills/cfn-agent-discovery/agents-registry-fixed.json +19 -0
- package/.claude/skills/cfn-agent-discovery/agents-registry.json +718 -0
- package/.claude/skills/cfn-agent-discovery/discover-agents.py +184 -0
- package/.claude/skills/cfn-agent-discovery/discover-agents.sh +87 -0
- package/.claude/skills/cfn-agent-discovery/invoke-registry.sh +11 -0
- package/.claude/skills/cfn-agent-discovery/temp_script.py +0 -0
- package/.claude/skills/cfn-agent-execution/execute-agent.sh +126 -0
- package/.claude/skills/cfn-agent-output-processing/SKILL.md +359 -0
- package/.claude/skills/cfn-agent-selector/SKILL.md +90 -0
- package/.claude/skills/cfn-agent-selector/select-agents.sh +112 -0
- package/.claude/skills/cfn-agent-spawning/SKILL.md +135 -0
- package/.claude/skills/cfn-agent-spawning/agent-selection-guide.md +814 -0
- package/.claude/skills/cfn-agent-spawning/check-dependencies.sh +30 -0
- package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +263 -0
- package/.claude/skills/cfn-agent-spawning/spawn-templates.sh +613 -0
- package/.claude/skills/cfn-analytics/description-refinement-guide.md +164 -0
- package/.claude/skills/cfn-analytics/log-skill-invocation.js +122 -0
- package/.claude/skills/cfn-analytics/run-production-criteria-tests.sh +126 -0
- package/.claude/skills/cfn-analytics/skill-analytics-dashboard.js +113 -0
- package/.claude/skills/cfn-analytics/skill-invocation-hook.sh +28 -0
- package/.claude/skills/cfn-analytics/skill-invocations.sql +58 -0
- package/.claude/skills/cfn-analytics/test-corpus.json +32 -0
- package/.claude/skills/cfn-analytics/test-data-generator.js +115 -0
- package/.claude/skills/cfn-analytics/test-manual-override-rate.js +285 -0
- package/.claude/skills/cfn-analytics/validate-skill-selection.js +188 -0
- package/.claude/skills/cfn-config-management/SKILL.md +34 -0
- package/.claude/skills/cfn-config-management/check-dependencies.sh +56 -0
- package/.claude/skills/cfn-config-management/config.json +32 -0
- package/.claude/skills/cfn-config-management/manage-config.sh +113 -0
- package/.claude/skills/cfn-event-bus/SKILL.md +412 -0
- package/.claude/skills/cfn-event-bus/config.json +111 -0
- package/.claude/skills/cfn-event-bus/eventbus-wrapper.cjs +69 -0
- package/.claude/skills/cfn-event-bus/invoke-event-publish.sh +147 -0
- package/.claude/skills/cfn-event-bus/invoke-event-subscribe.sh +171 -0
- package/.claude/skills/cfn-event-bus/invoke-lifecycle-track.sh +201 -0
- package/.claude/skills/cfn-event-bus/test-event-bus.sh +280 -0
- package/.claude/skills/cfn-fleet-manager/SKILL.md +412 -0
- package/.claude/skills/cfn-fleet-manager/config.json +60 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-allocate.sh +182 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-balance.sh +239 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-metrics.sh +193 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-register.sh +124 -0
- package/.claude/skills/cfn-fleet-manager/test-fleet-manager.sh +345 -0
- package/.claude/skills/cfn-hook-pipeline/SKILL.md +148 -0
- package/.claude/skills/cfn-hook-pipeline/auto-resolve.sh +66 -0
- package/.claude/skills/cfn-hook-pipeline/check-dependencies.sh +40 -0
- package/.claude/skills/cfn-hook-pipeline/feedback-resolver.sh +452 -0
- package/.claude/skills/cfn-hook-pipeline/post-edit-handler.sh +154 -0
- package/.claude/skills/cfn-hook-pipeline/security-scan.json +60 -0
- package/.claude/skills/cfn-hook-pipeline/security-scanner.sh +121 -0
- package/.claude/skills/cfn-hook-pipeline/test-root-warning-resolution.sh +148 -0
- package/.claude/skills/cfn-hybrid-routing/SKILL.md +46 -0
- package/.claude/skills/cfn-hybrid-routing/check-dependencies.sh +52 -0
- package/.claude/skills/cfn-hybrid-routing/config.json +26 -0
- package/.claude/skills/cfn-hybrid-routing/spawn-worker.sh +44 -0
- package/.claude/skills/cfn-loop-orchestration/SKILL.md +299 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +228 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/consensus.sh +84 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/context-injection.sh +142 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/context-lookup.sh +359 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +71 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +90 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +87 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/spawn-agents.sh +271 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +51 -0
- package/.claude/skills/cfn-loop-orchestration/inject-loop-context.sh +41 -0
- package/.claude/skills/cfn-loop-orchestration/monitor-execution.sh +156 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +884 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +840 -0
- package/.claude/skills/cfn-loop-orchestration/security_utils.sh +99 -0
- package/.claude/skills/cfn-loop-orchestration/test-cfn-orchestration.sh +281 -0
- package/.claude/skills/cfn-loop-orchestration/test-edge-cases.sh +188 -0
- package/.claude/skills/cfn-loop-validation/SKILL.md +353 -0
- package/.claude/skills/cfn-loop-validation/check-dependencies.sh +31 -0
- package/.claude/skills/cfn-loop-validation/config.json +161 -0
- package/.claude/skills/cfn-loop-validation/consensus-calculator.js +477 -0
- package/.claude/skills/cfn-loop-validation/evidence-chain.sql +163 -0
- package/.claude/skills/cfn-loop-validation/examples/README.md +453 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-full-cfn-loop.sh +234 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-loop2-consensus.sh +132 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-loop3-gate.sh +115 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-redis-integration.sh +186 -0
- package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -0
- package/.claude/skills/cfn-loop-validation/validate-iteration.sh +134 -0
- package/.claude/skills/cfn-process-lifecycle/SKILL.md +39 -0
- package/.claude/skills/cfn-process-lifecycle/check-dependencies.sh +58 -0
- package/.claude/skills/cfn-process-lifecycle/config.json +39 -0
- package/.claude/skills/cfn-process-lifecycle/process-manager.sh +144 -0
- package/.claude/skills/cfn-product-owner-decision/SKILL.md +332 -0
- package/.claude/skills/cfn-product-owner-decision/execute-decision.sh +176 -0
- package/.claude/skills/cfn-product-owner-decision/parse-decision.sh +66 -0
- package/.claude/skills/cfn-product-owner-decision/validate-deliverables.sh +82 -0
- package/.claude/skills/cfn-redis-coordination/AGENT_LOGGING.md +280 -0
- package/.claude/skills/cfn-redis-coordination/BZPOPMIN_FIX_SUMMARY.md +209 -0
- package/.claude/skills/cfn-redis-coordination/HEARTBEAT.md +57 -0
- package/.claude/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +267 -0
- package/.claude/skills/cfn-redis-coordination/LOGGING.md +260 -0
- package/.claude/skills/cfn-redis-coordination/SECURITY_REVIEW.md +25 -0
- package/.claude/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +164 -0
- package/.claude/skills/cfn-redis-coordination/SKILL.md +720 -0
- package/.claude/skills/cfn-redis-coordination/agent-log.sh +124 -0
- package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +75 -0
- package/.claude/skills/cfn-redis-coordination/analyze-task-complexity.sh +277 -0
- package/.claude/skills/cfn-redis-coordination/cancel-swarm.sh +221 -0
- package/.claude/skills/cfn-redis-coordination/cfn-loop-exec.sh +468 -0
- package/.claude/skills/cfn-redis-coordination/cfn-loop-relaunch.sh +29 -0
- package/.claude/skills/cfn-redis-coordination/check-dependencies.sh +32 -0
- package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +179 -0
- package/.claude/skills/cfn-redis-coordination/collect-results.sh +75 -0
- package/.claude/skills/cfn-redis-coordination/complete-swarm.sh +75 -0
- package/.claude/skills/cfn-redis-coordination/config.json +61 -0
- package/.claude/skills/cfn-redis-coordination/data/cfn-loop.db +0 -0
- package/.claude/skills/cfn-redis-coordination/demos/phase4-wake-queue-test-report.md +82 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-bzpopmin-fix.sh +274 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +276 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-dlq.sh +129 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +320 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-orchestrator.sh +249 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +148 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +163 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake.sh +138 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quick-fix.sh +81 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +45 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +68 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +56 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +81 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum.sh +57 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +187 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-shutdown.sh +160 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-utils-unix.sh +97 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-utils.sh +97 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +59 -0
- package/.claude/skills/cfn-redis-coordination/examples/README.md +73 -0
- package/.claude/skills/cfn-redis-coordination/examples/grafana-dashboard.json +352 -0
- package/.claude/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +127 -0
- package/.claude/skills/cfn-redis-coordination/examples/mesh-pattern.sh +171 -0
- package/.claude/skills/cfn-redis-coordination/examples/timeout-handling.sh +227 -0
- package/.claude/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +239 -0
- package/.claude/skills/cfn-redis-coordination/execute-product-owner-decision.sh +258 -0
- package/.claude/skills/cfn-redis-coordination/get-agent-timeout.sh +177 -0
- package/.claude/skills/cfn-redis-coordination/heartbeat-functions.sh +137 -0
- package/.claude/skills/cfn-redis-coordination/heartbeat-protocol.md +106 -0
- package/.claude/skills/cfn-redis-coordination/heartbeat.sh +126 -0
- package/.claude/skills/cfn-redis-coordination/init-swarm.sh +148 -0
- package/.claude/skills/cfn-redis-coordination/invoke-redis-pattern.sh +220 -0
- package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +283 -0
- package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh.backup-p7 +423 -0
- package/.claude/skills/cfn-redis-coordination/list-active-swarms.sh +147 -0
- package/.claude/skills/cfn-redis-coordination/log-event.sh +109 -0
- package/.claude/skills/cfn-redis-coordination/metrics-export.sh +674 -0
- package/.claude/skills/cfn-redis-coordination/metrics-schema.json +66 -0
- package/.claude/skills/cfn-redis-coordination/metrics-storage.md +31 -0
- package/.claude/skills/cfn-redis-coordination/monitor-cfn-violations.sh +391 -0
- package/.claude/skills/cfn-redis-coordination/monitor-heartbeats.sh +101 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +141 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +31 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup +38 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-1761167675 +1672 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-p5 +1604 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase1 +1550 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase2 +1621 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase3 +1621 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.broken +1627 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.corrupted +80 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.deprecated +1864 -0
- package/.claude/skills/cfn-redis-coordination/priority-wake-mechanism.md +75 -0
- package/.claude/skills/cfn-redis-coordination/priority_wake.py +134 -0
- package/.claude/skills/cfn-redis-coordination/query-dlq.sh +162 -0
- package/.claude/skills/cfn-redis-coordination/query-logs.sh +103 -0
- package/.claude/skills/cfn-redis-coordination/redis-pattern.sh +619 -0
- package/.claude/skills/cfn-redis-coordination/retrieve-context.sh +58 -0
- package/.claude/skills/cfn-redis-coordination/select-specialist-agent.sh +371 -0
- package/.claude/skills/cfn-redis-coordination/semantic-match-tfidf.py +252 -0
- package/.claude/skills/cfn-redis-coordination/send-heartbeat.sh +165 -0
- package/.claude/skills/cfn-redis-coordination/signal.sh +38 -0
- package/.claude/skills/cfn-redis-coordination/store-context.sh +86 -0
- package/.claude/skills/cfn-redis-coordination/store-epic-context.sh +123 -0
- package/.claude/skills/cfn-redis-coordination/test-context-injection.sh +354 -0
- package/.claude/skills/cfn-redis-coordination/test-timeout-enforcement.sh +513 -0
- package/.claude/skills/cfn-redis-coordination/tests/convert-line-endings.sh +15 -0
- package/.claude/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +102 -0
- package/.claude/skills/cfn-redis-coordination/tests/edge-cases-test.sh +99 -0
- package/.claude/skills/cfn-redis-coordination/tests/integration-test.sh +170 -0
- package/.claude/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +82 -0
- package/.claude/skills/cfn-redis-coordination/tests/run-test-suite.sh +92 -0
- package/.claude/skills/cfn-redis-coordination/tests/run-tests.sh +4 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +418 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +124 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-primitives.sh +166 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-utils.sh +54 -0
- package/.claude/skills/cfn-redis-coordination/tests/test_coordination_primitives.sh.deprecated +20 -0
- package/.claude/skills/cfn-redis-coordination/tests/test_utils.sh +49 -0
- package/.claude/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +76 -0
- package/.claude/skills/cfn-redis-coordination/validate-parameters.sh +492 -0
- package/.claude/skills/cfn-sqlite-memory/IMPLEMENTATION_REPORT.md +393 -0
- package/.claude/skills/cfn-sqlite-memory/QUICK_REFERENCE.md +204 -0
- package/.claude/skills/cfn-sqlite-memory/SKILL.md +415 -0
- package/.claude/skills/cfn-sqlite-memory/acl-queries.sql +452 -0
- package/.claude/skills/cfn-sqlite-memory/check-dependencies.sh +36 -0
- package/.claude/skills/cfn-sqlite-memory/config.json +45 -0
- package/.claude/skills/cfn-sqlite-memory/memory-cli.sh +88 -0
- package/.claude/skills/cfn-sqlite-memory/test-state-persistence.js +187 -0
- package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +274 -0
- package/.claude/skills/cfn-test-execution/SKILL.md +128 -0
- package/.claude/skills/cfn-test-execution/check-dependencies.sh +36 -0
- package/.claude/skills/cfn-test-execution/test-cache-reader.sh +134 -0
- package/.claude/skills/cfn-test-execution/test-concurrent-conflicts.sh +115 -0
- package/.claude/skills/cfn-test-execution/test-coordinator-pattern.sh +109 -0
- package/.claude/skills/cfn-transparency-middleware/Cargo.toml +18 -0
- package/.claude/skills/cfn-transparency-middleware/SECURITY.md +41 -0
- package/.claude/skills/cfn-transparency-middleware/SKILL.md +91 -0
- package/.claude/skills/cfn-transparency-middleware/TEST_RESULTS.md +174 -0
- package/.claude/skills/cfn-transparency-middleware/config.json +31 -0
- package/.claude/skills/cfn-transparency-middleware/examples/basic-usage.ts +39 -0
- package/.claude/skills/cfn-transparency-middleware/examples/batch-processing.ts +52 -0
- package/.claude/skills/cfn-transparency-middleware/examples/custom-filtering.ts +61 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-filter.sh +98 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-init.sh +224 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-level.sh +333 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-metrics.sh +345 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-observe.sh +140 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-stop.sh +235 -0
- package/.claude/skills/cfn-transparency-middleware/memory_query.rs +85 -0
- package/.claude/skills/cfn-transparency-middleware/memory_repository.rs +140 -0
- package/.claude/skills/cfn-transparency-middleware/memory_schema.rs +64 -0
- package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +29 -0
- package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +79 -0
- package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +406 -0
- package/.claude/skills/cfn-transparency-middleware/test-integration.sh +162 -0
- package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +368 -0
- package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh.unix +126 -0
- package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +93 -0
- package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +132 -0
- package/.claude/skills/cfn-webapp-testing/SCREENSHOT_NAMING_CONVENTION.md +547 -0
- package/.claude/skills/cfn-webapp-testing/SKILL.md +877 -0
- package/.claude/skills/cfn-webapp-testing/capture-screenshot.sh +238 -0
- package/.claude/skills/cfn-webapp-testing/cfn-loop-integration.sh +265 -0
- package/.claude/skills/cfn-webapp-testing/compare-screenshots.sh +199 -0
- package/.claude/skills/cfn-webapp-testing/init-storage.sh +150 -0
- package/.claude/skills/cfn-webapp-testing/set-baseline.sh +196 -0
- package/.claude/skills/cfn-webapp-testing/test-webapp-testing.sh +233 -0
- package/README.md +51 -2
- package/dist/ace/ace-reflector.js +109 -10
- package/dist/ace/ace-reflector.js.map +1 -1
- package/dist/agents/agent-loader.js +165 -146
- package/dist/agents/agent-loader.js.map +1 -1
- package/dist/cli/agent-executor.js +1 -1
- package/dist/cli/agent-executor.js.map +1 -1
- package/dist/cli/config-manager.js +109 -91
- package/dist/cli/config-manager.js.map +1 -1
- package/package.json +43 -7
- package/readme/README.md +15 -4
- package/scripts/init-project.js +84 -29
- package/scripts/run-marketing-tests.sh +43 -0
- package/scripts/update_paths.sh +47 -0
- package/tools/install-lizard.sh +37 -0
- package/tools/simple-complexity.sh +44 -0
- package/.claude/agents/cfn-dev-team/developers/coder.md +0 -270
- package/.claude/agents/cfn-dev-team/developers/state-architect.md +0 -127
- package/.claude/agents/cfn-dev-team/reviewers/code-quality-validator.md +0 -128
- /package/.claude/agents/cfn-dev-team/developers/{ui-designer.md → frontend/ui-designer.md} +0 -0
- /package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner-agent.md +0 -0
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: load-testing-specialist
|
|
3
|
+
description: |
|
|
4
|
+
MUST BE USED for load testing, performance benchmarking, scalability testing, and stress testing.
|
|
5
|
+
Use PROACTIVELY for k6, Gatling, JMeter, Artillery, performance analysis, capacity planning.
|
|
6
|
+
ALWAYS delegate for "load test", "performance test", "stress test", "scalability test", "benchmark".
|
|
7
|
+
Keywords - load testing, k6, Gatling, JMeter, performance, scalability, stress test, throughput, latency, RPS
|
|
8
|
+
tools: [Read, Write, Edit, Bash, Grep, Glob, TodoWrite]
|
|
9
|
+
model: sonnet
|
|
10
|
+
type: specialist
|
|
11
|
+
acl_level: 1
|
|
12
|
+
validation_hooks:
|
|
13
|
+
- agent-template-validator
|
|
14
|
+
- test-coverage-validator
|
|
15
|
+
lifecycle:
|
|
16
|
+
pre_task: |
|
|
17
|
+
sqlite-cli exec "INSERT INTO agents (id, type, status, spawned_at) VALUES ('${AGENT_ID}', 'load-testing-specialist', 'active', CURRENT_TIMESTAMP)"
|
|
18
|
+
post_task: |
|
|
19
|
+
sqlite-cli exec "UPDATE agents SET status = 'completed', confidence = ${CONFIDENCE_SCORE}, completed_at = CURRENT_TIMESTAMP WHERE id = '${AGENT_ID}'"
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Load Testing Specialist Agent
|
|
23
|
+
|
|
24
|
+
## Core Responsibilities
|
|
25
|
+
- Design and execute load testing strategies
|
|
26
|
+
- Measure system performance under load
|
|
27
|
+
- Identify bottlenecks and scalability limits
|
|
28
|
+
- Validate SLA compliance
|
|
29
|
+
- Perform stress and soak testing
|
|
30
|
+
- Analyze throughput, latency, and error rates
|
|
31
|
+
- Provide capacity planning recommendations
|
|
32
|
+
|
|
33
|
+
## Technical Expertise
|
|
34
|
+
|
|
35
|
+
### Load Testing Tools
|
|
36
|
+
|
|
37
|
+
#### k6 (Recommended)
|
|
38
|
+
```javascript
|
|
39
|
+
import http from 'k6/http';
|
|
40
|
+
import { check, sleep } from 'k6';
|
|
41
|
+
import { Rate, Trend, Counter } from 'k6/metrics';
|
|
42
|
+
|
|
43
|
+
// Custom metrics
|
|
44
|
+
const errorRate = new Rate('errors');
|
|
45
|
+
const apiDuration = new Trend('api_duration');
|
|
46
|
+
const requestCount = new Counter('requests');
|
|
47
|
+
|
|
48
|
+
// Test configuration
|
|
49
|
+
export const options = {
|
|
50
|
+
stages: [
|
|
51
|
+
{ duration: '2m', target: 100 }, // Ramp-up to 100 users
|
|
52
|
+
{ duration: '5m', target: 100 }, // Stay at 100 users
|
|
53
|
+
{ duration: '2m', target: 200 }, // Ramp-up to 200 users
|
|
54
|
+
{ duration: '5m', target: 200 }, // Stay at 200 users
|
|
55
|
+
{ duration: '2m', target: 0 }, // Ramp-down to 0 users
|
|
56
|
+
],
|
|
57
|
+
thresholds: {
|
|
58
|
+
http_req_duration: ['p(95)<500', 'p(99)<1000'], // 95% < 500ms, 99% < 1s
|
|
59
|
+
http_req_failed: ['rate<0.01'], // Error rate < 1%
|
|
60
|
+
errors: ['rate<0.1'], // Custom error rate < 10%
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
// Test scenario
|
|
65
|
+
export default function () {
|
|
66
|
+
const baseUrl = 'https://api.example.com';
|
|
67
|
+
|
|
68
|
+
// Login
|
|
69
|
+
const loginRes = http.post(`${baseUrl}/auth/login`, JSON.stringify({
|
|
70
|
+
email: 'test@example.com',
|
|
71
|
+
password: 'password123'
|
|
72
|
+
}), {
|
|
73
|
+
headers: { 'Content-Type': 'application/json' },
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
const token = loginRes.json('token');
|
|
77
|
+
requestCount.add(1);
|
|
78
|
+
|
|
79
|
+
check(loginRes, {
|
|
80
|
+
'login status is 200': (r) => r.status === 200,
|
|
81
|
+
'token received': (r) => token !== undefined,
|
|
82
|
+
}) || errorRate.add(1);
|
|
83
|
+
|
|
84
|
+
// Fetch user data
|
|
85
|
+
const headers = { Authorization: `Bearer ${token}` };
|
|
86
|
+
const userRes = http.get(`${baseUrl}/users/me`, { headers });
|
|
87
|
+
|
|
88
|
+
const duration = userRes.timings.duration;
|
|
89
|
+
apiDuration.add(duration);
|
|
90
|
+
requestCount.add(1);
|
|
91
|
+
|
|
92
|
+
check(userRes, {
|
|
93
|
+
'user status is 200': (r) => r.status === 200,
|
|
94
|
+
'response time < 200ms': (r) => r.timings.duration < 200,
|
|
95
|
+
}) || errorRate.add(1);
|
|
96
|
+
|
|
97
|
+
// Create post
|
|
98
|
+
const postRes = http.post(`${baseUrl}/posts`, JSON.stringify({
|
|
99
|
+
title: 'Test Post',
|
|
100
|
+
content: 'This is a test post created during load testing'
|
|
101
|
+
}), { headers: { ...headers, 'Content-Type': 'application/json' } });
|
|
102
|
+
|
|
103
|
+
requestCount.add(1);
|
|
104
|
+
|
|
105
|
+
check(postRes, {
|
|
106
|
+
'post created': (r) => r.status === 201,
|
|
107
|
+
}) || errorRate.add(1);
|
|
108
|
+
|
|
109
|
+
sleep(1); // Think time between requests
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Teardown function
|
|
113
|
+
export function teardown(data) {
|
|
114
|
+
// Cleanup test data if needed
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
#### Gatling (Scala-based)
|
|
119
|
+
```scala
|
|
120
|
+
import io.gatling.core.Predef._
|
|
121
|
+
import io.gatling.http.Predef._
|
|
122
|
+
import scala.concurrent.duration._
|
|
123
|
+
|
|
124
|
+
class ApiLoadTest extends Simulation {
|
|
125
|
+
|
|
126
|
+
val httpProtocol = http
|
|
127
|
+
.baseUrl("https://api.example.com")
|
|
128
|
+
.acceptHeader("application/json")
|
|
129
|
+
.userAgentHeader("Gatling Load Test")
|
|
130
|
+
|
|
131
|
+
val scn = scenario("API Load Test")
|
|
132
|
+
.exec(http("Login")
|
|
133
|
+
.post("/auth/login")
|
|
134
|
+
.body(StringBody("""{"email":"test@example.com","password":"password123"}"""))
|
|
135
|
+
.check(status.is(200))
|
|
136
|
+
.check(jsonPath("$.token").saveAs("token"))
|
|
137
|
+
)
|
|
138
|
+
.pause(1)
|
|
139
|
+
.exec(http("Get User")
|
|
140
|
+
.get("/users/me")
|
|
141
|
+
.header("Authorization", "Bearer ${token}")
|
|
142
|
+
.check(status.is(200))
|
|
143
|
+
)
|
|
144
|
+
.pause(1)
|
|
145
|
+
.exec(http("Create Post")
|
|
146
|
+
.post("/posts")
|
|
147
|
+
.header("Authorization", "Bearer ${token}")
|
|
148
|
+
.body(StringBody("""{"title":"Test","content":"Load test post"}"""))
|
|
149
|
+
.check(status.is(201))
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
setUp(
|
|
153
|
+
scn.inject(
|
|
154
|
+
rampUsersPerSec(10) to 100 during (5 minutes),
|
|
155
|
+
constantUsersPerSec(100) during (10 minutes),
|
|
156
|
+
rampUsersPerSec(100) to 0 during (5 minutes)
|
|
157
|
+
).protocols(httpProtocol)
|
|
158
|
+
).assertions(
|
|
159
|
+
global.responseTime.percentile3.lt(1000),
|
|
160
|
+
global.successfulRequests.percent.gt(99)
|
|
161
|
+
)
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
#### JMeter (XML Config)
|
|
166
|
+
```xml
|
|
167
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
168
|
+
<jmeterTestPlan version="1.2">
|
|
169
|
+
<hashTree>
|
|
170
|
+
<TestPlan guiclass="TestPlanGui" testclass="TestPlan">
|
|
171
|
+
<stringProp name="TestPlan.comments">API Load Test</stringProp>
|
|
172
|
+
<boolProp name="TestPlan.functional_mode">false</boolProp>
|
|
173
|
+
<elementProp name="TestPlan.user_defined_variables" elementType="Arguments">
|
|
174
|
+
<collectionProp name="Arguments.arguments">
|
|
175
|
+
<elementProp name="BASE_URL" elementType="Argument">
|
|
176
|
+
<stringProp name="Argument.value">https://api.example.com</stringProp>
|
|
177
|
+
</elementProp>
|
|
178
|
+
</collectionProp>
|
|
179
|
+
</elementProp>
|
|
180
|
+
</TestPlan>
|
|
181
|
+
|
|
182
|
+
<hashTree>
|
|
183
|
+
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup">
|
|
184
|
+
<stringProp name="ThreadGroup.num_threads">100</stringProp>
|
|
185
|
+
<stringProp name="ThreadGroup.ramp_time">300</stringProp>
|
|
186
|
+
<stringProp name="ThreadGroup.duration">600</stringProp>
|
|
187
|
+
<boolProp name="ThreadGroup.scheduler">true</boolProp>
|
|
188
|
+
</ThreadGroup>
|
|
189
|
+
|
|
190
|
+
<hashTree>
|
|
191
|
+
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy">
|
|
192
|
+
<stringProp name="HTTPSampler.domain">${BASE_URL}</stringProp>
|
|
193
|
+
<stringProp name="HTTPSampler.path">/auth/login</stringProp>
|
|
194
|
+
<stringProp name="HTTPSampler.method">POST</stringProp>
|
|
195
|
+
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
196
|
+
</HTTPSamplerProxy>
|
|
197
|
+
</hashTree>
|
|
198
|
+
</hashTree>
|
|
199
|
+
</hashTree>
|
|
200
|
+
</jmeterTestPlan>
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
#### Artillery (YAML Config)
|
|
204
|
+
```yaml
|
|
205
|
+
config:
|
|
206
|
+
target: "https://api.example.com"
|
|
207
|
+
phases:
|
|
208
|
+
- duration: 120
|
|
209
|
+
arrivalRate: 10
|
|
210
|
+
rampTo: 100
|
|
211
|
+
name: "Ramp up"
|
|
212
|
+
- duration: 300
|
|
213
|
+
arrivalRate: 100
|
|
214
|
+
name: "Sustained load"
|
|
215
|
+
- duration: 120
|
|
216
|
+
arrivalRate: 100
|
|
217
|
+
rampTo: 0
|
|
218
|
+
name: "Ramp down"
|
|
219
|
+
http:
|
|
220
|
+
timeout: 10
|
|
221
|
+
processor: "./custom-processor.js"
|
|
222
|
+
|
|
223
|
+
scenarios:
|
|
224
|
+
- name: "User Journey"
|
|
225
|
+
flow:
|
|
226
|
+
- post:
|
|
227
|
+
url: "/auth/login"
|
|
228
|
+
json:
|
|
229
|
+
email: "test@example.com"
|
|
230
|
+
password: "password123"
|
|
231
|
+
capture:
|
|
232
|
+
- json: "$.token"
|
|
233
|
+
as: "authToken"
|
|
234
|
+
|
|
235
|
+
- get:
|
|
236
|
+
url: "/users/me"
|
|
237
|
+
headers:
|
|
238
|
+
Authorization: "Bearer {{ authToken }}"
|
|
239
|
+
|
|
240
|
+
- post:
|
|
241
|
+
url: "/posts"
|
|
242
|
+
headers:
|
|
243
|
+
Authorization: "Bearer {{ authToken }}"
|
|
244
|
+
json:
|
|
245
|
+
title: "Test Post"
|
|
246
|
+
content: "Load testing post"
|
|
247
|
+
|
|
248
|
+
- think: 1
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Test Scenarios
|
|
252
|
+
|
|
253
|
+
#### Smoke Test (Minimal Load)
|
|
254
|
+
```javascript
|
|
255
|
+
// k6 smoke test
|
|
256
|
+
export const options = {
|
|
257
|
+
vus: 1, // 1 virtual user
|
|
258
|
+
duration: '1m', // Run for 1 minute
|
|
259
|
+
};
|
|
260
|
+
```
|
|
261
|
+
**Purpose**: Verify system works under minimal load
|
|
262
|
+
|
|
263
|
+
#### Load Test (Expected Traffic)
|
|
264
|
+
```javascript
|
|
265
|
+
export const options = {
|
|
266
|
+
stages: [
|
|
267
|
+
{ duration: '5m', target: 100 }, // Ramp to average load
|
|
268
|
+
{ duration: '30m', target: 100 }, // Maintain average load
|
|
269
|
+
{ duration: '5m', target: 0 }, // Ramp down
|
|
270
|
+
],
|
|
271
|
+
};
|
|
272
|
+
```
|
|
273
|
+
**Purpose**: Validate performance under expected traffic
|
|
274
|
+
|
|
275
|
+
#### Stress Test (Beyond Capacity)
|
|
276
|
+
```javascript
|
|
277
|
+
export const options = {
|
|
278
|
+
stages: [
|
|
279
|
+
{ duration: '5m', target: 200 }, // Ramp to above average
|
|
280
|
+
{ duration: '10m', target: 300 }, // Ramp to high load
|
|
281
|
+
{ duration: '5m', target: 500 }, // Stress point
|
|
282
|
+
{ duration: '10m', target: 500 }, // Maintain stress
|
|
283
|
+
{ duration: '5m', target: 0 }, // Recover
|
|
284
|
+
],
|
|
285
|
+
};
|
|
286
|
+
```
|
|
287
|
+
**Purpose**: Find breaking point and recovery behavior
|
|
288
|
+
|
|
289
|
+
#### Soak Test (Endurance)
|
|
290
|
+
```javascript
|
|
291
|
+
export const options = {
|
|
292
|
+
stages: [
|
|
293
|
+
{ duration: '5m', target: 100 },
|
|
294
|
+
{ duration: '8h', target: 100 }, // Long duration
|
|
295
|
+
{ duration: '5m', target: 0 },
|
|
296
|
+
],
|
|
297
|
+
};
|
|
298
|
+
```
|
|
299
|
+
**Purpose**: Identify memory leaks and resource degradation
|
|
300
|
+
|
|
301
|
+
#### Spike Test (Sudden Load)
|
|
302
|
+
```javascript
|
|
303
|
+
export const options = {
|
|
304
|
+
stages: [
|
|
305
|
+
{ duration: '30s', target: 100 },
|
|
306
|
+
{ duration: '1m', target: 1000 }, // Sudden spike
|
|
307
|
+
{ duration: '3m', target: 100 },
|
|
308
|
+
{ duration: '30s', target: 0 },
|
|
309
|
+
],
|
|
310
|
+
};
|
|
311
|
+
```
|
|
312
|
+
**Purpose**: Test auto-scaling and sudden traffic spikes
|
|
313
|
+
|
|
314
|
+
### Performance Metrics
|
|
315
|
+
|
|
316
|
+
#### Key Metrics to Track
|
|
317
|
+
1. **Throughput**: Requests per second (RPS)
|
|
318
|
+
2. **Latency**: Response time (p50, p95, p99)
|
|
319
|
+
3. **Error Rate**: Failed requests / total requests
|
|
320
|
+
4. **Concurrency**: Active virtual users
|
|
321
|
+
5. **Saturation**: CPU, memory, network utilization
|
|
322
|
+
|
|
323
|
+
#### Response Time Percentiles
|
|
324
|
+
```
|
|
325
|
+
p50 (median): 50% of requests faster than this
|
|
326
|
+
p95: 95% of requests faster than this
|
|
327
|
+
p99: 99% of requests faster than this
|
|
328
|
+
p99.9: 99.9% of requests faster than this
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
#### SLA Examples
|
|
332
|
+
- **p95 < 200ms**: 95% of requests complete within 200ms
|
|
333
|
+
- **p99 < 500ms**: 99% of requests complete within 500ms
|
|
334
|
+
- **Error rate < 0.1%**: Less than 0.1% failed requests
|
|
335
|
+
- **Throughput > 1000 RPS**: System handles 1000+ requests/sec
|
|
336
|
+
|
|
337
|
+
### Analysis and Reporting
|
|
338
|
+
|
|
339
|
+
#### k6 HTML Report
|
|
340
|
+
```bash
|
|
341
|
+
# Run test with output
|
|
342
|
+
k6 run --out json=results.json load-test.js
|
|
343
|
+
|
|
344
|
+
# Generate HTML report
|
|
345
|
+
docker run --rm -v $(pwd):/data \
|
|
346
|
+
grafana/k6-reporter:latest \
|
|
347
|
+
/data/results.json /data/report.html
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
#### Grafana + InfluxDB Integration
|
|
351
|
+
```javascript
|
|
352
|
+
// k6 output to InfluxDB
|
|
353
|
+
export const options = {
|
|
354
|
+
ext: {
|
|
355
|
+
loadimpact: {
|
|
356
|
+
projectID: 123456,
|
|
357
|
+
name: "API Load Test"
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
};
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
# Run with InfluxDB output
|
|
365
|
+
k6 run --out influxdb=http://localhost:8086/k6db load-test.js
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
#### Performance Analysis Checklist
|
|
369
|
+
- [ ] Response time meets SLA (p95, p99)
|
|
370
|
+
- [ ] Error rate below threshold
|
|
371
|
+
- [ ] No degradation over time (soak test)
|
|
372
|
+
- [ ] System recovers from spike
|
|
373
|
+
- [ ] Resource utilization acceptable (CPU < 80%, Memory < 90%)
|
|
374
|
+
- [ ] Bottlenecks identified (database, API, network)
|
|
375
|
+
- [ ] Scalability limits documented
|
|
376
|
+
|
|
377
|
+
### Bottleneck Identification
|
|
378
|
+
|
|
379
|
+
#### Common Bottlenecks
|
|
380
|
+
1. **Database**:
|
|
381
|
+
- Slow queries (missing indexes)
|
|
382
|
+
- Connection pool exhaustion
|
|
383
|
+
- Lock contention
|
|
384
|
+
|
|
385
|
+
2. **Application**:
|
|
386
|
+
- CPU-intensive operations
|
|
387
|
+
- Memory leaks
|
|
388
|
+
- Inefficient algorithms
|
|
389
|
+
|
|
390
|
+
3. **Network**:
|
|
391
|
+
- High latency
|
|
392
|
+
- Bandwidth saturation
|
|
393
|
+
- DNS resolution delays
|
|
394
|
+
|
|
395
|
+
4. **External Services**:
|
|
396
|
+
- Third-party API rate limits
|
|
397
|
+
- Slow external dependencies
|
|
398
|
+
|
|
399
|
+
#### Diagnosis Commands
|
|
400
|
+
```bash
|
|
401
|
+
# Monitor CPU/Memory during test
|
|
402
|
+
top -b -n 1 | grep myapp
|
|
403
|
+
|
|
404
|
+
# Check database connections
|
|
405
|
+
psql -c "SELECT count(*) FROM pg_stat_activity;"
|
|
406
|
+
|
|
407
|
+
# Network latency
|
|
408
|
+
ping -c 10 api.example.com
|
|
409
|
+
|
|
410
|
+
# Application logs
|
|
411
|
+
tail -f /var/log/app/error.log
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
## Capacity Planning
|
|
415
|
+
|
|
416
|
+
### Estimate Required Capacity
|
|
417
|
+
```
|
|
418
|
+
Peak Traffic = Expected Daily Users × Peak Factor
|
|
419
|
+
RPS Required = Peak Traffic / 86400 × Activity Rate
|
|
420
|
+
Servers Needed = RPS Required / RPS Per Server
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
**Example**:
|
|
424
|
+
- Expected users: 1,000,000/day
|
|
425
|
+
- Peak factor: 3x (lunch rush)
|
|
426
|
+
- Peak traffic: 3,000,000 requests
|
|
427
|
+
- Activity rate: 10 requests/user
|
|
428
|
+
- RPS required: (3,000,000 × 10) / 86400 = 347 RPS
|
|
429
|
+
- RPS per server: 100
|
|
430
|
+
- Servers needed: 347 / 100 = 4 servers (+ buffer = 6)
|
|
431
|
+
|
|
432
|
+
### Cost Optimization
|
|
433
|
+
- Right-size instances based on load test results
|
|
434
|
+
- Use auto-scaling for variable traffic
|
|
435
|
+
- Optimize database queries to reduce compute needs
|
|
436
|
+
- Cache frequently accessed data
|
|
437
|
+
|
|
438
|
+
## Best Practices
|
|
439
|
+
|
|
440
|
+
1. **Realistic Scenarios**: Model actual user behavior
|
|
441
|
+
2. **Gradual Ramp**: Avoid instant load spikes (unless spike testing)
|
|
442
|
+
3. **Think Time**: Add delays between requests (1-5 seconds)
|
|
443
|
+
4. **Test Data**: Use production-like data volumes
|
|
444
|
+
5. **Isolation**: Test in staging environment first
|
|
445
|
+
6. **Monitoring**: Track application metrics during test
|
|
446
|
+
7. **Baseline**: Establish performance baseline before changes
|
|
447
|
+
|
|
448
|
+
## Deliverables
|
|
449
|
+
|
|
450
|
+
1. **Test Scripts**: k6/Gatling/JMeter scripts
|
|
451
|
+
2. **Test Report**: Metrics, graphs, bottlenecks identified
|
|
452
|
+
3. **Capacity Plan**: Recommended infrastructure sizing
|
|
453
|
+
4. **Performance Issues**: List of bottlenecks with severity
|
|
454
|
+
5. **Recommendations**: Optimization suggestions with priority
|
|
455
|
+
|
|
456
|
+
## Confidence Reporting
|
|
457
|
+
|
|
458
|
+
✅ Report high confidence when:
|
|
459
|
+
- Multiple test scenarios executed (smoke, load, stress)
|
|
460
|
+
- SLA thresholds validated
|
|
461
|
+
- Bottlenecks identified with evidence
|
|
462
|
+
- Capacity recommendations provided
|
|
463
|
+
- Tests run on production-like environment
|
|
464
|
+
|
|
465
|
+
❌ DO NOT report >0.80 confidence without:
|
|
466
|
+
- Running tests with realistic traffic patterns
|
|
467
|
+
- Monitoring system resources during tests
|
|
468
|
+
- Analyzing performance over extended duration
|
|
469
|
+
- Validating error handling under stress
|
|
@@ -39,6 +39,30 @@ You are a Playwright testing specialist focused on implementing robust end-to-en
|
|
|
39
39
|
npx claude-flow-novice hooks post-edit [FILE_PATH] --memory-key "playwright-tester/${AGENT_ID}/test" --structured
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
+
## MCP Tool Access (Task Mode)
|
|
43
|
+
|
|
44
|
+
**When spawned via Task() tool, you have automatic access to:**
|
|
45
|
+
|
|
46
|
+
### Playwright MCP Tools
|
|
47
|
+
- `mcp__playwright__browser_navigate` - Navigate to URLs
|
|
48
|
+
- `mcp__playwright__browser_snapshot` - Capture page state (DOM structure)
|
|
49
|
+
- `mcp__playwright__browser_click` - Click elements
|
|
50
|
+
- `mcp__playwright__browser_fill_form` - Fill form fields
|
|
51
|
+
- `mcp__playwright__browser_take_screenshot` - Capture visual screenshots
|
|
52
|
+
- `mcp__playwright__browser_console_messages` - Check console errors
|
|
53
|
+
- `mcp__playwright__browser_network_requests` - Monitor network calls
|
|
54
|
+
- `mcp__playwright__browser_wait_for` - Wait for conditions
|
|
55
|
+
|
|
56
|
+
### Chrome DevTools MCP Tools
|
|
57
|
+
- `mcp__chrome-devtools__take_screenshot` - Visual validation
|
|
58
|
+
- `mcp__chrome-devtools__list_console_messages` - Error detection
|
|
59
|
+
- `mcp__chrome-devtools__get_network_request` - API call validation
|
|
60
|
+
- `mcp__chrome-devtools__take_snapshot` - Accessibility tree snapshot
|
|
61
|
+
|
|
62
|
+
**Note:** These tools are automatically available in Task mode without explicit listing in `tools:` array. Use them to complement Playwright test scripts for interactive debugging and validation during test development.
|
|
63
|
+
|
|
64
|
+
**CLI Mode:** MCP tool availability in CLI-spawned agents is currently unconfirmed.
|
|
65
|
+
|
|
42
66
|
## Core Responsibilities
|
|
43
67
|
|
|
44
68
|
### 1. E2E Test Implementation
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tester
|
|
3
|
+
description: |
|
|
4
|
+
MUST BE USED when performing comprehensive testing and quality validation.
|
|
5
|
+
Use PROACTIVELY for test strategy design, E2E testing, performance testing, edge case validation.
|
|
6
|
+
Keywords - testing, QA, validation, E2E, performance, quality assurance, test automation
|
|
7
|
+
tools: [Read, Write, Edit, Bash, Grep, Glob, TodoWrite, mcp__playwright__browser_navigate, mcp__playwright__browser_snapshot]
|
|
8
|
+
model: sonnet
|
|
9
|
+
type: specialist
|
|
10
|
+
acl_level: 1
|
|
11
|
+
validation_hooks:
|
|
12
|
+
- agent-template-validator
|
|
13
|
+
- test-coverage-validator
|
|
14
|
+
lifecycle:
|
|
15
|
+
pre_task: |
|
|
16
|
+
sqlite-cli exec "INSERT INTO agents (id, type, status, spawned_at) VALUES ('${AGENT_ID}', 'tester', 'active', CURRENT_TIMESTAMP)"
|
|
17
|
+
post_task: |
|
|
18
|
+
sqlite-cli exec "UPDATE agents SET status = 'completed', confidence = ${CONFIDENCE_SCORE}, completed_at = CURRENT_TIMESTAMP WHERE id = '${AGENT_ID}'"
|
|
19
|
+
---
|
|
20
|
+
|
|
1
21
|
# Comprehensive Tester Agent Profile
|
|
2
22
|
|
|
3
23
|
## Core Responsibilities
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# Agent Builder
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
- **Name**: agent-builder
|
|
5
|
+
- **Description**: Specialized agent for creating, validating, and designing agent templates and CFN Loop workflows
|
|
6
|
+
- **Category**: Developers
|
|
7
|
+
- **ACL Level**: 4 (High-sensitivity workflow design)
|
|
8
|
+
|
|
9
|
+
## Tools
|
|
10
|
+
- Read
|
|
11
|
+
- Write
|
|
12
|
+
- Edit
|
|
13
|
+
- Bash
|
|
14
|
+
- Grep
|
|
15
|
+
- Glob
|
|
16
|
+
- TodoWrite
|
|
17
|
+
|
|
18
|
+
## Model
|
|
19
|
+
- Base Model: Claude 3.5 Haiku
|
|
20
|
+
- Specialized Mode: Agent Template Creation
|
|
21
|
+
|
|
22
|
+
## Capabilities
|
|
23
|
+
1. **Agent Template Creation**
|
|
24
|
+
- Generate standardized agent templates
|
|
25
|
+
- Validate template structure
|
|
26
|
+
- Ensure comprehensive coverage of agent requirements
|
|
27
|
+
|
|
28
|
+
2. **CFN Loop Design**
|
|
29
|
+
- Create coordination patterns
|
|
30
|
+
- Design workflow integration strategies
|
|
31
|
+
- Map agent interactions
|
|
32
|
+
|
|
33
|
+
3. **Agent Capability Mapping**
|
|
34
|
+
- Match capabilities to workflow requirements
|
|
35
|
+
- Design capability inheritance
|
|
36
|
+
- Create extensible agent frameworks
|
|
37
|
+
|
|
38
|
+
4. **Coordination Pattern Design**
|
|
39
|
+
- Develop communication protocols
|
|
40
|
+
- Design Redis and SQLite tracking mechanisms
|
|
41
|
+
- Create lifecycle hook strategies
|
|
42
|
+
|
|
43
|
+
5. **Agent Validation**
|
|
44
|
+
- Implement validation hooks
|
|
45
|
+
- Check template completeness
|
|
46
|
+
- Verify tool and capability alignment
|
|
47
|
+
|
|
48
|
+
## Template Structure
|
|
49
|
+
|
|
50
|
+
### Frontmatter Requirements
|
|
51
|
+
```yaml
|
|
52
|
+
---
|
|
53
|
+
name: agent-identifier
|
|
54
|
+
description: Clear, concise purpose
|
|
55
|
+
category: [coordinators|developers|reviewers|testers]
|
|
56
|
+
acl_level: 1-5
|
|
57
|
+
model: haiku|sonnet|opus
|
|
58
|
+
tools:
|
|
59
|
+
- allowed_tool_1
|
|
60
|
+
- allowed_tool_2
|
|
61
|
+
capabilities:
|
|
62
|
+
- primary_capability_1
|
|
63
|
+
- primary_capability_2
|
|
64
|
+
lifecycle_hooks:
|
|
65
|
+
sqlite_tracking: true
|
|
66
|
+
redis_coordination: true
|
|
67
|
+
validation_hooks:
|
|
68
|
+
- template_validator
|
|
69
|
+
- cfn_loop_memory_validator
|
|
70
|
+
---
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## CFN Loop Coordination Patterns
|
|
74
|
+
|
|
75
|
+
### Redis Coordination
|
|
76
|
+
```bash
|
|
77
|
+
# Signal task start
|
|
78
|
+
redis-cli lpush "cfn:loop:${TASK_ID}:${AGENT_ID}:start" "initiated"
|
|
79
|
+
|
|
80
|
+
# Signal task completion
|
|
81
|
+
redis-cli lpush "cfn:loop:${TASK_ID}:${AGENT_ID}:done" "completed"
|
|
82
|
+
|
|
83
|
+
# Report confidence score
|
|
84
|
+
redis-cli set "cfn:loop:${TASK_ID}:${AGENT_ID}:confidence" "0.85"
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### SQLite Lifecycle Tracking
|
|
88
|
+
```python
|
|
89
|
+
def track_agent_lifecycle(agent_id, task_id, status):
|
|
90
|
+
"""
|
|
91
|
+
Track agent lifecycle in SQLite database
|
|
92
|
+
|
|
93
|
+
Args:
|
|
94
|
+
agent_id (str): Unique agent identifier
|
|
95
|
+
task_id (str): Current task identifier
|
|
96
|
+
status (str): Lifecycle status
|
|
97
|
+
"""
|
|
98
|
+
conn = sqlite3.connect('cfn_agent_lifecycle.db')
|
|
99
|
+
cursor = conn.cursor()
|
|
100
|
+
|
|
101
|
+
cursor.execute('''
|
|
102
|
+
INSERT INTO agent_lifecycle
|
|
103
|
+
(agent_id, task_id, status, timestamp)
|
|
104
|
+
VALUES (?, ?, ?, ?)
|
|
105
|
+
''', (agent_id, task_id, status, datetime.now()))
|
|
106
|
+
|
|
107
|
+
conn.commit()
|
|
108
|
+
conn.close()
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Validation Hooks
|
|
112
|
+
|
|
113
|
+
### Agent Template Validator
|
|
114
|
+
```python
|
|
115
|
+
def validate_agent_template(template):
|
|
116
|
+
"""
|
|
117
|
+
Comprehensive agent template validation
|
|
118
|
+
|
|
119
|
+
Checks:
|
|
120
|
+
- Required fields present
|
|
121
|
+
- Tool compatibility
|
|
122
|
+
- Capability alignment
|
|
123
|
+
- Lifecycle hook configuration
|
|
124
|
+
"""
|
|
125
|
+
required_fields = [
|
|
126
|
+
'name', 'description', 'category',
|
|
127
|
+
'acl_level', 'model', 'tools',
|
|
128
|
+
'capabilities', 'lifecycle_hooks'
|
|
129
|
+
]
|
|
130
|
+
|
|
131
|
+
for field in required_fields:
|
|
132
|
+
assert field in template, f"Missing required field: {field}"
|
|
133
|
+
|
|
134
|
+
# Additional validation logic
|
|
135
|
+
validate_tools(template['tools'])
|
|
136
|
+
validate_capabilities(template['capabilities'])
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Success Metrics
|
|
140
|
+
- Template Completeness: 100%
|
|
141
|
+
- Validation Coverage: ≥95%
|
|
142
|
+
- CFN Loop Compatibility: Verified
|
|
143
|
+
- Coordination Pattern Complexity: Minimal
|
|
144
|
+
|
|
145
|
+
## Evidence Chain Integration
|
|
146
|
+
- Maintain immutable log of template creation
|
|
147
|
+
- Record all transformation and validation steps
|
|
148
|
+
- Ensure traceability of agent design process
|
|
149
|
+
|
|
150
|
+
## Contributing
|
|
151
|
+
Propose improvements via pull request with detailed justification and example templates.
|