@nockdev/awf 6.2.0 → 6.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/build.yaml +3 -3
- package/.agent/config.yaml +21 -146
- package/.agent/core/AGENT_BEHAVIOR.md +86 -0
- package/.agent/core/AUDIT_POLICY.md +1 -1
- package/.agent/core/CACHE.md +1 -1
- package/.agent/core/COMMANDS.md +16 -7
- package/.agent/core/CUSTOMIZE.md +61 -3
- package/.agent/core/DATA_SAFETY.md +1 -1
- package/.agent/core/MEMORY_PATHS.yaml +2 -2
- package/.agent/core/PERMISSIONS.md +1 -1
- package/.agent/core/README.md +1 -1
- package/.agent/core/VERSION.yaml +18 -8
- package/.agent/core/{ACTIVE_MEMORY.yaml → archive/ACTIVE_MEMORY.yaml} +2 -2
- package/.agent/core/{CHECKPOINT.yaml → archive/CHECKPOINT.yaml} +2 -2
- package/.agent/core/{CLEANUP_ENGINE.yaml → archive/CLEANUP_ENGINE.yaml} +2 -2
- package/.agent/core/{CONTEXT_INJECTOR.yaml → archive/CONTEXT_INJECTOR.yaml} +2 -2
- package/.agent/core/{CONTEXT_LOADER.yaml → archive/CONTEXT_LOADER.yaml} +1 -1
- package/.agent/core/{CONTEXT_OPTIMIZATION.yaml → archive/CONTEXT_OPTIMIZATION.yaml} +1 -1
- package/.agent/core/{CONTEXT_PRIORITY.yaml → archive/CONTEXT_PRIORITY.yaml} +2 -2
- package/.agent/core/{FLOW_ENGINE.yaml → archive/FLOW_ENGINE.yaml} +1 -1
- package/.agent/core/{GRAPH_MEMORY.yaml → archive/GRAPH_MEMORY.yaml} +1 -1
- package/.agent/core/{HYBRID_ROUTER.yaml → archive/HYBRID_ROUTER.yaml} +1 -1
- package/.agent/core/{INTENT_DETECTION.yaml → archive/INTENT_DETECTION.yaml} +1 -1
- package/.agent/core/{MEMORY_CONSOLIDATION.yaml → archive/MEMORY_CONSOLIDATION.yaml} +3 -3
- package/.agent/core/{MEMORY_ENGINE.yaml → archive/MEMORY_ENGINE.yaml} +2 -2
- package/.agent/core/{MEMORY_UTILS.yaml → archive/MEMORY_UTILS.yaml} +1 -1
- package/.agent/core/{REFLECTION_ENGINE.yaml → archive/REFLECTION_ENGINE.yaml} +1 -1
- package/.agent/core/{ROUTER.yaml → archive/ROUTER.yaml} +5 -5
- package/.agent/core/{SCORING_FORMULA.yaml → archive/SCORING_FORMULA.yaml} +2 -2
- package/.agent/core/{SEMANTIC_ENGINE.yaml → archive/SEMANTIC_ENGINE.yaml} +2 -2
- package/.agent/core/{SKILLS_FLOW.yaml → archive/SKILLS_FLOW.yaml} +2 -2
- package/.agent/core/{STATE_MACHINE.yaml → archive/STATE_MACHINE.yaml} +1 -1
- package/.agent/core/{SUMMARIZATION_ENGINE.yaml → archive/SUMMARIZATION_ENGINE.yaml} +2 -2
- package/.agent/core/{TOKEN_BUDGETS.yaml → archive/TOKEN_BUDGETS.yaml} +2 -2
- package/.agent/core/{TOKEN_LOADING.yaml → archive/TOKEN_LOADING.yaml} +2 -2
- package/.agent/core/{TOKEN_SUMMARY.yaml → archive/TOKEN_SUMMARY.yaml} +2 -2
- package/.agent/core/{CODING_STYLES.yaml → reference/CODING_STYLES.yaml} +1 -1
- package/.agent/core/{LIBRARY_REGISTRY.yaml → reference/LIBRARY_REGISTRY.yaml} +1 -1
- package/.agent/core/{MCP_TOOLS.yaml → reference/MCP_TOOLS.yaml} +2 -2
- package/.agent/core/{PATTERNS.yaml → reference/PATTERNS.yaml} +1 -1
- package/.agent/core/{SKILL_SCHEMA.yaml → reference/SKILL_SCHEMA.yaml} +2 -2
- package/.agent/core/{TEMPLATES.yaml → reference/TEMPLATES.yaml} +1 -1
- package/.agent/i18n/en.yaml +6 -6
- package/.agent/i18n/vi.yaml +6 -6
- package/.agent/ide/README.md +1 -1
- package/.agent/ide/amazonq.json +3 -3
- package/.agent/ide/amp.json +4 -3
- package/.agent/ide/antigravity.json +4 -3
- package/.agent/ide/augment.json +4 -4
- package/.agent/ide/claude.json +4 -3
- package/.agent/ide/cline.json +4 -3
- package/.agent/ide/codex.json +6 -1
- package/.agent/ide/cody.json +4 -3
- package/.agent/ide/continue.json +4 -3
- package/.agent/ide/cursor.json +4 -3
- package/.agent/ide/gemini.json +4 -3
- package/.agent/ide/jetbrains.json +4 -3
- package/.agent/ide/kiro.json +4 -3
- package/.agent/ide/opencode.json +4 -3
- package/.agent/ide/roo.json +4 -3
- package/.agent/ide/tabnine.json +4 -3
- package/.agent/ide/trae.json +4 -3
- package/.agent/ide/vscode.json +4 -3
- package/.agent/ide/windsurf.json +4 -3
- package/.agent/ide/zed.json +4 -3
- package/.agent/manifest.yaml +142 -34
- package/.agent/memory/core_memory/persona.json +2 -2
- package/.agent/memory/core_memory/project.json +1 -1
- package/.agent/memory/core_memory/rules.json +1 -1
- package/.agent/memory/core_memory/user.json +1 -1
- package/.agent/memory/graph/knowledge_graph.json +1 -1
- package/.agent/memory/patterns/errors.json +1 -1
- package/.agent/memory/patterns/successes.json +1 -1
- package/.agent/memory/state.json +3 -3
- package/.agent/personas/README.md +1 -1
- package/.agent/personas/architect.md +1 -1
- package/.agent/personas/auditor.md +1 -1
- package/.agent/personas/debugger.md +1 -1
- package/.agent/personas/developer.md +1 -1
- package/.agent/personas/devops.md +1 -1
- package/.agent/personas/documenter.md +1 -1
- package/.agent/personas/orchestrator.md +1 -1
- package/.agent/personas/persona.schema.yaml +1 -1
- package/.agent/personas/planner.md +1 -1
- package/.agent/personas/researcher.md +1 -1
- package/.agent/personas/security.md +1 -1
- package/.agent/personas/tester.md +1 -1
- package/.agent/private/README.md +74 -0
- package/.agent/private/_index.yaml +23 -0
- package/.agent/private/_template/META.yaml +38 -0
- package/.agent/private/_template/SKILL.md +43 -0
- package/.agent/private/_template/data/.gitkeep +0 -0
- package/.agent/private/autodomyh-api/META.yaml +48 -0
- package/.agent/private/autodomyh-api/SKILL.md +141 -0
- package/.agent/private/autodomyh-api/data/conventions.yaml +107 -0
- package/.agent/rules/README.md +24 -18
- package/.agent/rules/SACRED_RULES.xml +42 -36
- package/.agent/rules/{constitutional → archive/constitutional}/tier-0-core.yaml +6 -6
- package/.agent/rules/{constitutional → archive/constitutional}/tier-1-safety.yaml +6 -6
- package/.agent/rules/{constitutional → archive/constitutional}/tier-2-execution.yaml +7 -7
- package/.agent/rules/{modules → archive}/context-management.yaml +1 -1
- package/.agent/rules/{duplication-prevention.md → archive/duplication-prevention.md} +1 -1
- package/.agent/rules/{modules → archive}/evidence.yaml +1 -1
- package/.agent/rules/{project-detection.md → archive/project-detection.md} +1 -1
- package/.agent/rules/{modules → archive}/reflection.yaml +2 -2
- package/.agent/rules/{modules → archive}/versioning.yaml +3 -3
- package/.agent/rules/data/build-systems.yaml +2 -2
- package/.agent/rules/modules/agent-delegation.yaml +136 -0
- package/.agent/rules/modules/edit-verification.yaml +1 -1
- package/.agent/rules/modules/git-workflow.yaml +1 -1
- package/.agent/rules/modules/language.yaml +1 -1
- package/.agent/rules/modules/online-research.yaml +1 -1
- package/.agent/rules/modules/performance-optimization.yaml +141 -0
- package/.agent/rules/modules/quality.yaml +1 -1
- package/.agent/rules/modules/stop-conditions.yaml +1 -1
- package/.agent/rules/modules/terminal-safety.yaml +45 -1
- package/.agent/rules/modules/yagni.yaml +1 -1
- package/.agent/rules/validation-framework.md +1 -1
- package/.agent/skills/DEVELOPMENT.yaml +17 -6
- package/.agent/skills/README.md +19 -16
- package/.agent/skills/_categories.yaml +60 -8
- package/.agent/skills/_router.yaml +61 -19
- package/.agent/skills/ai-ml/ai-agents/META.yaml +127 -0
- package/.agent/skills/ai-ml/ai-agents/SKILL.md +139 -0
- package/.agent/skills/ai-ml/ai-agents/data/agent-rules.yaml +120 -0
- package/.agent/skills/ai-ml/ai-agents/data/llm-integration.yaml +129 -0
- package/.agent/skills/ai-ml/ai-agents/data/memory-patterns.yaml +123 -0
- package/.agent/skills/ai-ml/ai-agents/data/orchestration-patterns.yaml +101 -0
- package/.agent/skills/ai-ml/gemini-live/META.yaml +55 -0
- package/.agent/skills/ai-ml/gemini-live/SKILL.md +155 -0
- package/.agent/skills/ai-ml/gemini-live/data/code-execution.yaml +131 -0
- package/.agent/skills/ai-ml/gemini-live/data/context-caching.yaml +96 -0
- package/.agent/skills/ai-ml/gemini-live/data/grounding.yaml +97 -0
- package/.agent/skills/ai-ml/gemini-live/data/live-api.yaml +103 -0
- package/.agent/skills/ai-ml/gemini-media-gen/META.yaml +56 -0
- package/.agent/skills/ai-ml/gemini-media-gen/SKILL.md +128 -0
- package/.agent/skills/ai-ml/gemini-media-gen/data/files-api.yaml +96 -0
- package/.agent/skills/ai-ml/gemini-media-gen/data/image-models.yaml +112 -0
- package/.agent/skills/ai-ml/gemini-media-gen/data/image-prompts.yaml +131 -0
- package/.agent/skills/ai-ml/gemini-media-gen/data/video-generation.yaml +131 -0
- package/.agent/skills/ai-ml/gemini-tts/META.yaml +49 -0
- package/.agent/skills/ai-ml/gemini-tts/SKILL.md +124 -0
- package/.agent/skills/ai-ml/gemini-tts/data/markup-tags.yaml +95 -0
- package/.agent/skills/ai-ml/gemini-tts/data/models.yaml +124 -0
- package/.agent/skills/ai-ml/gemini-tts/data/prompting-patterns.yaml +81 -0
- package/.agent/skills/ai-ml/prompt-engineering/META.yaml +77 -0
- package/.agent/skills/ai-ml/prompt-engineering/SKILL.md +217 -0
- package/.agent/skills/ai-ml/prompt-engineering/data/gemini3-patterns.yaml +170 -0
- package/.agent/skills/ai-ml/prompt-engineering/data/output-patterns.yaml +73 -0
- package/.agent/skills/ai-ml/prompt-engineering/data/provider-patterns.yaml +82 -0
- package/.agent/skills/ai-ml/prompt-engineering/data/reasoning-patterns.yaml +86 -0
- package/.agent/skills/ai-ml/prompt-engineering/data/safety-patterns.yaml +71 -0
- package/.agent/skills/ai-ml/prompt-engineering/data/tool-patterns.yaml +173 -0
- package/.agent/skills/ai-ml/rag-patterns/META.yaml +57 -0
- package/.agent/skills/ai-ml/rag-patterns/SKILL.md +92 -0
- package/.agent/skills/ai-ml/rag-patterns/data/chunking-strategies.yaml +71 -0
- package/.agent/skills/ai-ml/rag-patterns/data/embedding-models.yaml +76 -0
- package/.agent/skills/ai-ml/rag-patterns/data/evaluation.yaml +92 -0
- package/.agent/skills/ai-ml/rag-patterns/data/retrieval-patterns.yaml +101 -0
- package/.agent/skills/ai-ml/rag-patterns/data/vector-databases.yaml +103 -0
- package/.agent/skills/ai-ml/vector-search/META.yaml +63 -0
- package/.agent/skills/ai-ml/vector-search/SKILL.md +110 -0
- package/.agent/skills/ai-ml/vector-search/data/embedding-models.yaml +117 -0
- package/.agent/skills/ai-ml/vector-search/data/search-patterns.yaml +118 -0
- package/.agent/skills/ai-ml/vector-search/data/vector-dbs.yaml +155 -0
- package/.agent/skills/core/api-design/META.yaml +1 -5
- package/.agent/skills/core/api-design/SKILL.md +20 -26
- package/.agent/skills/core/api-design/data/api-versioning.yaml +211 -211
- package/.agent/skills/core/api-design/data/error-responses.yaml +129 -129
- package/.agent/skills/core/api-design/data/graphql-patterns.yaml +159 -159
- package/.agent/skills/core/api-design/data/grpc-patterns.yaml +159 -159
- package/.agent/skills/core/api-design/data/http-status-codes.yaml +170 -170
- package/.agent/skills/core/api-design/data/modern-api-patterns.yaml +160 -0
- package/.agent/skills/core/api-design/data/pagination.yaml +115 -115
- package/.agent/skills/core/api-design/data/rate-limiting.yaml +129 -129
- package/.agent/skills/core/api-design/data/rest-patterns.yaml +189 -189
- package/.agent/skills/core/api-design/data/test-apis.yaml +211 -211
- package/.agent/skills/core/authentication/META.yaml +1 -5
- package/.agent/skills/core/authentication/SKILL.md +36 -43
- package/.agent/skills/core/authentication/data/anti-patterns.yaml +129 -129
- package/.agent/skills/core/authentication/data/core-patterns.yaml +250 -250
- package/.agent/skills/core/authentication/data/jwt-patterns.yaml +249 -249
- package/.agent/skills/core/authentication/data/language-csharp.yaml +209 -209
- package/.agent/skills/core/authentication/data/language-go.yaml +209 -209
- package/.agent/skills/core/authentication/data/language-java.yaml +209 -209
- package/.agent/skills/core/authentication/data/language-mobile.yaml +209 -209
- package/.agent/skills/core/authentication/data/language-python.yaml +209 -209
- package/.agent/skills/core/authentication/data/language-rust.yaml +209 -209
- package/.agent/skills/core/authentication/data/language-typescript.yaml +209 -209
- package/.agent/skills/core/authentication/data/mfa-patterns.yaml +169 -169
- package/.agent/skills/core/authentication/data/oauth-patterns.yaml +249 -249
- package/.agent/skills/core/authentication/data/oauth.yaml +243 -243
- package/.agent/skills/core/authentication/data/passkey-patterns.yaml +149 -0
- package/.agent/skills/core/authentication/data/passkeys-webauthn.yaml +209 -209
- package/.agent/skills/core/authentication/data/passkeys.yaml +203 -203
- package/.agent/skills/core/authentication/data/password-patterns.yaml +169 -169
- package/.agent/skills/core/authentication/data/password.yaml +163 -163
- package/.agent/skills/core/authentication/data/session-patterns.yaml +209 -209
- package/.agent/skills/core/error-handling/META.yaml +1 -5
- package/.agent/skills/core/error-handling/SKILL.md +21 -25
- package/.agent/skills/core/error-handling/data/anti-patterns.yaml +99 -99
- package/.agent/skills/core/error-handling/data/api-error-patterns.yaml +2 -2
- package/.agent/skills/core/error-handling/data/core-patterns.yaml +2 -2
- package/.agent/skills/core/error-handling/data/error-codes.yaml +159 -159
- package/.agent/skills/core/error-handling/data/error-messages.yaml +2 -2
- package/.agent/skills/core/error-handling/data/language-c-cpp.yaml +220 -220
- package/.agent/skills/core/error-handling/data/language-go-rust.yaml +2 -2
- package/.agent/skills/core/error-handling/data/language-python-java.yaml +220 -220
- package/.agent/skills/core/error-handling/data/language-swift-kotlin.yaml +220 -220
- package/.agent/skills/core/error-handling/data/language-typescript-php-ruby.yaml +220 -220
- package/.agent/skills/core/error-handling/data/resilience-patterns.yaml +2 -2
- package/.agent/skills/core/error-handling/data/ui-error-patterns.yaml +129 -129
- package/.agent/skills/core/logging/META.yaml +1 -5
- package/.agent/skills/core/logging/SKILL.md +28 -42
- package/.agent/skills/core/logging/data/aggregation-patterns.yaml +185 -185
- package/.agent/skills/core/logging/data/anti-patterns.yaml +115 -115
- package/.agent/skills/core/logging/data/core-patterns.yaml +220 -220
- package/.agent/skills/core/logging/data/language-csharp.yaml +185 -185
- package/.agent/skills/core/logging/data/language-go.yaml +185 -185
- package/.agent/skills/core/logging/data/language-java.yaml +185 -185
- package/.agent/skills/core/logging/data/language-kotlin.yaml +150 -150
- package/.agent/skills/core/logging/data/language-others.yaml +178 -178
- package/.agent/skills/core/logging/data/language-python.yaml +185 -185
- package/.agent/skills/core/logging/data/language-rust.yaml +185 -185
- package/.agent/skills/core/logging/data/language-swift.yaml +150 -150
- package/.agent/skills/core/logging/data/language-typescript.yaml +185 -185
- package/.agent/skills/core/logging/data/otel-logging.yaml +150 -150
- package/.agent/skills/core/observability/META.yaml +1 -5
- package/.agent/skills/core/observability/SKILL.md +29 -38
- package/.agent/skills/core/observability/data/alerting-patterns.yaml +159 -159
- package/.agent/skills/core/observability/data/anti-patterns.yaml +99 -99
- package/.agent/skills/core/observability/data/core-patterns.yaml +189 -189
- package/.agent/skills/core/observability/data/language-cpp.yaml +159 -159
- package/.agent/skills/core/observability/data/language-csharp.yaml +159 -159
- package/.agent/skills/core/observability/data/language-go.yaml +159 -159
- package/.agent/skills/core/observability/data/language-java.yaml +159 -159
- package/.agent/skills/core/observability/data/language-others.yaml +249 -249
- package/.agent/skills/core/observability/data/language-python.yaml +159 -159
- package/.agent/skills/core/observability/data/language-rust.yaml +159 -159
- package/.agent/skills/core/observability/data/language-typescript.yaml +159 -159
- package/.agent/skills/core/observability/data/metrics-patterns.yaml +129 -129
- package/.agent/skills/core/observability/data/metrics-prometheus.yaml +159 -159
- package/.agent/skills/core/observability/data/otel-core.yaml +189 -189
- package/.agent/skills/core/observability/data/profiling-patterns.yaml +129 -129
- package/.agent/skills/core/observability/data/tracing-patterns.yaml +159 -159
- package/.agent/skills/core/observability/data/tracing-tools.yaml +129 -129
- package/.agent/skills/core/security/META.yaml +1 -5
- package/.agent/skills/core/security/SKILL.md +25 -25
- package/.agent/skills/core/security/data/ai-ml-security.yaml +255 -255
- package/.agent/skills/core/security/data/api-security.yaml +224 -224
- package/.agent/skills/core/security/data/auth-patterns.yaml +189 -189
- package/.agent/skills/core/security/data/binary-exploitation.yaml +333 -333
- package/.agent/skills/core/security/data/cloud-security.yaml +263 -263
- package/.agent/skills/core/security/data/cwe-top25.yaml +409 -409
- package/.agent/skills/core/security/data/language-specific/c-security.yaml +289 -289
- package/.agent/skills/core/security/data/language-specific/cpp-security.yaml +289 -289
- package/.agent/skills/core/security/data/language-specific/csharp-security.yaml +213 -213
- package/.agent/skills/core/security/data/language-specific/go-security.yaml +213 -213
- package/.agent/skills/core/security/data/language-specific/java-security.yaml +289 -289
- package/.agent/skills/core/security/data/language-specific/kotlin-security.yaml +192 -192
- package/.agent/skills/core/security/data/language-specific/php-security.yaml +213 -213
- package/.agent/skills/core/security/data/language-specific/python-security.yaml +289 -289
- package/.agent/skills/core/security/data/language-specific/ruby-security.yaml +192 -192
- package/.agent/skills/core/security/data/language-specific/rust-security.yaml +234 -234
- package/.agent/skills/core/security/data/language-specific/solidity-security.yaml +363 -363
- package/.agent/skills/core/security/data/language-specific/swift-security.yaml +192 -192
- package/.agent/skills/core/security/data/language-specific/typescript-security.yaml +289 -289
- package/.agent/skills/core/security/data/mobile-security.yaml +363 -363
- package/.agent/skills/core/security/data/network-security.yaml +291 -291
- package/.agent/skills/core/security/data/owasp-llm-top10.yaml +122 -0
- package/.agent/skills/core/security/data/owasp-top10.yaml +165 -165
- package/.agent/skills/core/security/data/reverse-engineering.yaml +491 -491
- package/.agent/skills/core/security/data/supply-chain.yaml +213 -213
- package/.agent/skills/cross-cutting/_index.yaml +4 -2
- package/.agent/skills/cross-cutting/accessibility/META.yaml +45 -0
- package/.agent/skills/cross-cutting/accessibility/SKILL.md +121 -0
- package/.agent/skills/cross-cutting/accessibility/data/aria-patterns.yaml +88 -0
- package/.agent/skills/cross-cutting/accessibility/data/testing-tools.yaml +60 -0
- package/.agent/skills/cross-cutting/accessibility/data/wcag-guidelines.yaml +98 -0
- package/.agent/skills/cross-cutting/audit-pro/META.yaml +2 -6
- package/.agent/skills/cross-cutting/audit-pro/SKILL.md +61 -0
- package/.agent/skills/cross-cutting/bun/META.yaml +2 -8
- package/.agent/skills/cross-cutting/bun/SKILL.md +8 -12
- package/.agent/skills/cross-cutting/coding-rules/META.yaml +4 -11
- package/.agent/skills/cross-cutting/coding-rules/SKILL.md +38 -46
- package/.agent/skills/cross-cutting/coding-rules/data/adr-patterns.yaml +102 -0
- package/.agent/skills/cross-cutting/coding-rules/data/architecture-patterns.yaml +289 -90
- package/.agent/skills/cross-cutting/coding-rules/data/build-systems.yaml +340 -340
- package/.agent/skills/cross-cutting/coding-rules/data/coding-rules.yaml +641 -641
- package/.agent/skills/cross-cutting/coding-rules/data/concurrency-patterns.yaml +102 -102
- package/.agent/skills/cross-cutting/coding-rules/data/design-patterns.yaml +254 -254
- package/.agent/skills/cross-cutting/coding-rules/data/framework-directories.yaml +446 -0
- package/.agent/skills/cross-cutting/coding-rules/data/framework-signatures.yaml +338 -338
- package/.agent/skills/cross-cutting/coding-rules/data/memory-management.yaml +102 -102
- package/.agent/skills/cross-cutting/coding-rules/data/naming-conventions.yaml +314 -314
- package/.agent/skills/cross-cutting/coding-rules/data/performance-benchmarks.yaml +158 -158
- package/.agent/skills/cross-cutting/coding-rules/data/solid-principles.yaml +74 -74
- package/.agent/skills/cross-cutting/coding-rules/data/test-frameworks.yaml +177 -177
- package/.agent/skills/cross-cutting/database/META.yaml +2 -2
- package/.agent/skills/cross-cutting/database/SKILL.md +10 -19
- package/.agent/skills/cross-cutting/deno/META.yaml +2 -8
- package/.agent/skills/cross-cutting/deno/SKILL.md +8 -12
- package/.agent/skills/cross-cutting/domyh-design/ADVANCED.md +247 -0
- package/.agent/skills/cross-cutting/{ui-ux-pro-max → domyh-design}/META.yaml +44 -13
- package/.agent/skills/cross-cutting/domyh-design/SKILL.md +171 -0
- package/.agent/skills/cross-cutting/domyh-design/data/animation-ui-kits.yaml +198 -0
- package/.agent/skills/cross-cutting/domyh-design/data/charts.yaml +331 -0
- package/.agent/skills/cross-cutting/domyh-design/data/colors.yaml +1226 -0
- package/.agent/skills/cross-cutting/domyh-design/data/component-decision.yaml +287 -0
- package/.agent/skills/cross-cutting/domyh-design/data/component-effects.yaml +673 -0
- package/.agent/skills/cross-cutting/domyh-design/data/component-mapping.yaml +318 -0
- package/.agent/skills/cross-cutting/domyh-design/data/design-system-prompts.yaml +174 -0
- package/.agent/skills/cross-cutting/domyh-design/data/design-tokens.yaml +525 -0
- package/.agent/skills/cross-cutting/domyh-design/data/desktop-animation.yaml +680 -0
- package/.agent/skills/cross-cutting/domyh-design/data/desktop-architecture.yaml +140 -0
- package/.agent/skills/cross-cutting/{ui-ux-pro-max → domyh-design}/data/desktop-colors.yaml +4 -4
- package/.agent/skills/cross-cutting/domyh-design/data/directory-structure.yaml +80 -0
- package/.agent/skills/cross-cutting/domyh-design/data/icons.yaml +918 -0
- package/.agent/skills/cross-cutting/domyh-design/data/image-gen-prompts.yaml +678 -0
- package/.agent/skills/cross-cutting/domyh-design/data/image-gen-workflows.yaml +202 -0
- package/.agent/skills/cross-cutting/domyh-design/data/implementation-strategy.yaml +107 -0
- package/.agent/skills/cross-cutting/domyh-design/data/landing.yaml +373 -0
- package/.agent/skills/cross-cutting/domyh-design/data/micro-interactions.yaml +528 -0
- package/.agent/skills/cross-cutting/domyh-design/data/platform-frameworks.yaml +195 -0
- package/.agent/skills/cross-cutting/domyh-design/data/platform-guidelines.yaml +177 -0
- package/.agent/skills/cross-cutting/domyh-design/data/products.yaml +1339 -0
- package/.agent/skills/cross-cutting/domyh-design/data/prompts.yaml +207 -0
- package/.agent/skills/cross-cutting/domyh-design/data/react-performance.yaml +504 -0
- package/.agent/skills/cross-cutting/domyh-design/data/scroll-animation-patterns.yaml +398 -0
- package/.agent/skills/cross-cutting/domyh-design/data/stacks/desktop.yaml +228 -0
- package/.agent/skills/cross-cutting/domyh-design/data/stacks/flutter.yaml +508 -0
- package/.agent/skills/cross-cutting/domyh-design/data/stacks/html-tailwind.yaml +543 -0
- package/.agent/skills/cross-cutting/domyh-design/data/stacks/nextjs.yaml +515 -0
- package/.agent/skills/cross-cutting/domyh-design/data/stacks/nuxt-ui.yaml +519 -0
- package/.agent/skills/cross-cutting/domyh-design/data/stacks/nuxtjs.yaml +599 -0
- package/.agent/skills/cross-cutting/domyh-design/data/stacks/react-native.yaml +496 -0
- package/.agent/skills/cross-cutting/domyh-design/data/stacks/react.yaml +526 -0
- package/.agent/skills/cross-cutting/domyh-design/data/stacks/shadcn.yaml +616 -0
- package/.agent/skills/cross-cutting/domyh-design/data/stacks/svelte.yaml +520 -0
- package/.agent/skills/cross-cutting/domyh-design/data/stacks/swiftui.yaml +486 -0
- package/.agent/skills/cross-cutting/domyh-design/data/stacks/vue.yaml +485 -0
- package/.agent/skills/cross-cutting/domyh-design/data/styles.yaml +1473 -0
- package/.agent/skills/cross-cutting/domyh-design/data/tailwind-animation-plugins.yaml +462 -0
- package/.agent/skills/cross-cutting/domyh-design/data/typography.yaml +647 -0
- package/.agent/skills/cross-cutting/domyh-design/data/ui-reasoning.yaml +1019 -0
- package/.agent/skills/cross-cutting/domyh-design/data/ux-guidelines.yaml +1009 -0
- package/.agent/skills/cross-cutting/domyh-design/data/web-animation-libraries.yaml +541 -0
- package/.agent/skills/cross-cutting/domyh-design/data/web-interface.yaml +347 -0
- package/.agent/skills/cross-cutting/domyh-design/data/webview-animation-optimization.yaml +685 -0
- package/.agent/skills/cross-cutting/electron/SKILL.md +10 -14
- package/.agent/skills/cross-cutting/event-driven/META.yaml +108 -0
- package/.agent/skills/cross-cutting/event-driven/SKILL.md +123 -0
- package/.agent/skills/cross-cutting/event-driven/data/broker-comparison.yaml +123 -0
- package/.agent/skills/cross-cutting/event-driven/data/eda-patterns.yaml +120 -0
- package/.agent/skills/cross-cutting/event-driven/data/production-patterns.yaml +120 -0
- package/.agent/skills/cross-cutting/microservices/META.yaml +90 -0
- package/.agent/skills/cross-cutting/microservices/SKILL.md +120 -0
- package/.agent/skills/cross-cutting/microservices/data/communication.yaml +163 -0
- package/.agent/skills/cross-cutting/microservices/data/cqrs-patterns.yaml +199 -0
- package/.agent/skills/cross-cutting/microservices/data/deployment.yaml +153 -0
- package/.agent/skills/cross-cutting/microservices/data/event-sourcing.yaml +231 -0
- package/.agent/skills/cross-cutting/microservices/data/observability.yaml +152 -0
- package/.agent/skills/cross-cutting/microservices/data/resilience.yaml +189 -0
- package/.agent/skills/cross-cutting/microservices/data/saga-patterns.yaml +161 -0
- package/.agent/skills/cross-cutting/microservices/data/service-mesh.yaml +179 -0
- package/.agent/skills/cross-cutting/monorepo/META.yaml +54 -0
- package/.agent/skills/cross-cutting/monorepo/SKILL.md +108 -0
- package/.agent/skills/cross-cutting/monorepo/data/ci-cd-strategies.yaml +74 -0
- package/.agent/skills/cross-cutting/monorepo/data/nx-patterns.yaml +74 -0
- package/.agent/skills/cross-cutting/monorepo/data/turborepo-patterns.yaml +84 -0
- package/.agent/skills/cross-cutting/monorepo/data/versioning.yaml +83 -0
- package/.agent/skills/cross-cutting/monorepo/data/workspace-patterns.yaml +85 -0
- package/.agent/skills/cross-cutting/playwright/ADVANCED.md +289 -0
- package/.agent/skills/cross-cutting/playwright/META.yaml +90 -0
- package/.agent/skills/cross-cutting/playwright/SKILL.md +210 -0
- package/.agent/skills/cross-cutting/playwright/data/ai-agents.yaml +137 -0
- package/.agent/skills/cross-cutting/playwright/data/config-templates.yaml +141 -0
- package/.agent/skills/cross-cutting/playwright/data/interaction-checklist.yaml +398 -0
- package/.agent/skills/cross-cutting/playwright/data/locator-patterns.yaml +96 -0
- package/.agent/skills/cross-cutting/playwright/data/mcp-tools.yaml +153 -0
- package/.agent/skills/cross-cutting/playwright/data/open-source-tools.yaml +95 -0
- package/.agent/skills/cross-cutting/real-time/META.yaml +72 -0
- package/.agent/skills/cross-cutting/real-time/SKILL.md +128 -0
- package/.agent/skills/cross-cutting/real-time/data/socketio-patterns.yaml +165 -0
- package/.agent/skills/cross-cutting/real-time/data/sse-patterns.yaml +181 -0
- package/.agent/skills/cross-cutting/real-time/data/websocket-patterns.yaml +176 -0
- package/.agent/skills/cross-cutting/seo/META.yaml +47 -0
- package/.agent/skills/cross-cutting/seo/SKILL.md +114 -0
- package/.agent/skills/cross-cutting/seo/data/core-web-vitals.yaml +93 -0
- package/.agent/skills/cross-cutting/seo/data/structured-data.yaml +82 -0
- package/.agent/skills/cross-cutting/seo/data/technical-seo.yaml +75 -0
- package/.agent/skills/cross-cutting/sql/META.yaml +2 -8
- package/.agent/skills/cross-cutting/sql/SKILL.md +8 -12
- package/.agent/skills/cross-cutting/tailwind/META.yaml +3 -20
- package/.agent/skills/cross-cutting/tailwind/SKILL.md +13 -11
- package/.agent/skills/cross-cutting/tauri/META.yaml +75 -0
- package/.agent/skills/cross-cutting/tauri/SKILL.md +127 -0
- package/.agent/skills/cross-cutting/tauri/data/build.yaml +141 -0
- package/.agent/skills/cross-cutting/tauri/data/plugins.yaml +157 -0
- package/.agent/skills/cross-cutting/tauri/data/security.yaml +134 -0
- package/.agent/skills/cross-cutting/tdd-workflow/META.yaml +58 -0
- package/.agent/skills/cross-cutting/tdd-workflow/SKILL.md +128 -0
- package/.agent/skills/cross-cutting/tdd-workflow/data/anti-patterns.yaml +70 -0
- package/.agent/skills/cross-cutting/tdd-workflow/data/bdd-atdd-patterns.yaml +77 -0
- package/.agent/skills/cross-cutting/tdd-workflow/data/core-tdd-cycle.yaml +104 -0
- package/.agent/skills/cross-cutting/tdd-workflow/data/coverage-strategies.yaml +105 -0
- package/.agent/skills/cross-cutting/tdd-workflow/data/language-patterns.yaml +115 -0
- package/.agent/skills/cross-cutting/tdd-workflow/data/test-doubles.yaml +93 -0
- package/.agent/skills/cross-cutting/testing/META.yaml +1 -5
- package/.agent/skills/cross-cutting/testing/SKILL.md +13 -26
- package/.agent/skills/cross-cutting/testing/data/e2e-patterns.yaml +136 -0
- package/.agent/skills/cross-cutting/testing/data/frameworks.yaml +3 -3
- package/.agent/skills/cross-cutting/testing/data/patterns.yaml +149 -147
- package/.agent/skills/cross-cutting/wasm/META.yaml +47 -0
- package/.agent/skills/cross-cutting/wasm/SKILL.md +88 -0
- package/.agent/skills/cross-cutting/wasm/data/browser-patterns.yaml +106 -0
- package/.agent/skills/cross-cutting/wasm/data/component-model.yaml +85 -0
- package/.agent/skills/cross-cutting/wasm/data/server-patterns.yaml +89 -0
- package/.agent/skills/cross-cutting/web-perf/META.yaml +3 -9
- package/.agent/skills/cross-cutting/web-perf/SKILL.md +9 -18
- package/.agent/skills/devops/aws/META.yaml +48 -63
- package/.agent/skills/devops/aws/SKILL.md +39 -697
- package/.agent/skills/devops/azure/META.yaml +44 -0
- package/.agent/skills/devops/azure/SKILL.md +43 -0
- package/.agent/skills/devops/azure/data/cli.yaml +69 -0
- package/.agent/skills/devops/azure/data/compute.yaml +83 -0
- package/.agent/skills/devops/azure/data/data-services.yaml +126 -0
- package/.agent/skills/devops/ci-cd/META.yaml +47 -14
- package/.agent/skills/devops/ci-cd/SKILL.md +37 -807
- package/.agent/skills/devops/docker/META.yaml +53 -14
- package/.agent/skills/devops/docker/SKILL.md +35 -639
- package/.agent/skills/devops/gcp/META.yaml +43 -0
- package/.agent/skills/devops/gcp/SKILL.md +43 -0
- package/.agent/skills/devops/gcp/data/cli.yaml +39 -0
- package/.agent/skills/devops/gcp/data/compute.yaml +92 -0
- package/.agent/skills/devops/gcp/data/data-services.yaml +97 -0
- package/.agent/skills/devops/kubernetes/META.yaml +56 -7
- package/.agent/skills/devops/kubernetes/SKILL.md +38 -607
- package/.agent/skills/devops/terraform/META.yaml +47 -0
- package/.agent/skills/devops/terraform/SKILL.md +73 -0
- package/.agent/skills/devops/terraform/data/ci-cd.yaml +89 -0
- package/.agent/skills/devops/terraform/data/hcl-patterns.yaml +131 -0
- package/.agent/skills/devops/terraform/data/providers.yaml +96 -0
- package/.agent/skills/frameworks/angular/META.yaml +20 -6
- package/.agent/skills/frameworks/angular/SKILL.md +1 -1
- package/.agent/skills/frameworks/flutter/META.yaml +20 -6
- package/.agent/skills/frameworks/flutter/SKILL.md +1 -1
- package/.agent/skills/frameworks/nextjs/ADVANCED.md +2 -2
- package/.agent/skills/frameworks/nextjs/META.yaml +22 -8
- package/.agent/skills/frameworks/nextjs/SKILL.md +4 -4
- package/.agent/skills/frameworks/nextjs/data/server.yaml +4 -4
- package/.agent/skills/frameworks/nuxt/META.yaml +21 -7
- package/.agent/skills/frameworks/nuxt/SKILL.md +2 -2
- package/.agent/skills/frameworks/nuxt/data/core.yaml +14 -2
- package/.agent/skills/frameworks/nuxt/data/server.yaml +14 -2
- package/.agent/skills/frameworks/react/META.yaml +20 -7
- package/.agent/skills/frameworks/react/SKILL.md +7 -11
- package/.agent/skills/frameworks/react/data/core.yaml +14 -2
- package/.agent/skills/frameworks/react/data/server.yaml +16 -4
- package/.agent/skills/frameworks/react-native/META.yaml +19 -6
- package/.agent/skills/frameworks/react-native/SKILL.md +1 -1
- package/.agent/skills/frameworks/svelte/META.yaml +19 -6
- package/.agent/skills/frameworks/svelte/SKILL.md +1 -1
- package/.agent/skills/frameworks/vue/META.yaml +20 -8
- package/.agent/skills/frameworks/vue/SKILL.md +7 -7
- package/.agent/skills/frameworks/vue/data/advanced.yaml +19 -7
- package/.agent/skills/frameworks/vue/data/core.yaml +13 -1
- package/.agent/skills/index.json +67 -14
- package/.agent/skills/languages/asm/META.yaml +2 -8
- package/.agent/skills/languages/asm/SKILL.md +1 -1
- package/.agent/skills/languages/c/META.yaml +2 -8
- package/.agent/skills/languages/c/SKILL.md +1 -1
- package/.agent/skills/languages/clojure/META.yaml +2 -2
- package/.agent/skills/languages/clojure/SKILL.md +1 -1
- package/.agent/skills/languages/cpp/META.yaml +2 -8
- package/.agent/skills/languages/cpp/SKILL.md +1 -1
- package/.agent/skills/languages/crystal/META.yaml +2 -8
- package/.agent/skills/languages/crystal/SKILL.md +1 -1
- package/.agent/skills/languages/csharp/META.yaml +2 -2
- package/.agent/skills/languages/csharp/SKILL.md +1 -1
- package/.agent/skills/languages/elixir/META.yaml +2 -2
- package/.agent/skills/languages/elixir/SKILL.md +1 -1
- package/.agent/skills/languages/fsharp/META.yaml +2 -2
- package/.agent/skills/languages/fsharp/SKILL.md +1 -1
- package/.agent/skills/languages/go/META.yaml +2 -8
- package/.agent/skills/languages/go/SKILL.md +1 -1
- package/.agent/skills/languages/haskell/META.yaml +2 -2
- package/.agent/skills/languages/haskell/SKILL.md +1 -1
- package/.agent/skills/languages/java/META.yaml +2 -8
- package/.agent/skills/languages/java/SKILL.md +1 -1
- package/.agent/skills/languages/javascript/META.yaml +2 -8
- package/.agent/skills/languages/javascript/SKILL.md +1 -1
- package/.agent/skills/languages/julia/META.yaml +2 -2
- package/.agent/skills/languages/julia/SKILL.md +1 -1
- package/.agent/skills/languages/kotlin/META.yaml +2 -2
- package/.agent/skills/languages/kotlin/SKILL.md +1 -1
- package/.agent/skills/languages/lua/META.yaml +2 -8
- package/.agent/skills/languages/lua/SKILL.md +3 -3
- package/.agent/skills/languages/nim/META.yaml +2 -8
- package/.agent/skills/languages/nim/SKILL.md +1 -1
- package/.agent/skills/languages/ocaml/META.yaml +2 -2
- package/.agent/skills/languages/ocaml/SKILL.md +1 -1
- package/.agent/skills/languages/perl/META.yaml +2 -2
- package/.agent/skills/languages/perl/SKILL.md +1 -1
- package/.agent/skills/languages/php/META.yaml +2 -2
- package/.agent/skills/languages/php/SKILL.md +1 -1
- package/.agent/skills/languages/python/META.yaml +2 -8
- package/.agent/skills/languages/python/SKILL.md +1 -1
- package/.agent/skills/languages/r/META.yaml +2 -2
- package/.agent/skills/languages/r/SKILL.md +1 -1
- package/.agent/skills/languages/ruby/META.yaml +2 -2
- package/.agent/skills/languages/ruby/SKILL.md +1 -1
- package/.agent/skills/languages/rust/META.yaml +2 -8
- package/.agent/skills/languages/rust/SKILL.md +1 -1
- package/.agent/skills/languages/scala/META.yaml +2 -2
- package/.agent/skills/languages/scala/SKILL.md +1 -1
- package/.agent/skills/languages/solidity/META.yaml +2 -2
- package/.agent/skills/languages/solidity/SKILL.md +1 -1
- package/.agent/skills/languages/swift/META.yaml +2 -2
- package/.agent/skills/languages/swift/SKILL.md +1 -1
- package/.agent/skills/languages/typescript/META.yaml +2 -8
- package/.agent/skills/languages/typescript/SKILL.md +1 -1
- package/.agent/skills/languages/zig/META.yaml +5 -7
- package/.agent/skills/languages/zig/SKILL.md +1 -1
- package/.agent/skills/tooling/api-protocols/META.yaml +102 -0
- package/.agent/skills/tooling/api-protocols/SKILL.md +145 -0
- package/.agent/skills/tooling/api-protocols/data/graphql-patterns.yaml +115 -0
- package/.agent/skills/tooling/api-protocols/data/grpc-patterns.yaml +101 -0
- package/.agent/skills/tooling/api-protocols/data/trpc-patterns.yaml +97 -0
- package/.agent/skills/tooling/browser-agent/ADVANCED.md +242 -0
- package/.agent/skills/tooling/browser-agent/META.yaml +78 -0
- package/.agent/skills/tooling/browser-agent/SKILL.md +164 -0
- package/.agent/skills/tooling/browser-agent/data/element-discovery.yaml +208 -0
- package/.agent/skills/tooling/browser-agent/data/recording-patterns.yaml +74 -0
- package/.agent/skills/tooling/browser-agent/data/reporting-patterns.yaml +97 -0
- package/.agent/skills/tooling/browser-agent/data/subagent-patterns.yaml +158 -0
- package/.agent/skills/tooling/browser-agent/data/verification-flow.yaml +209 -0
- package/.agent/skills/tooling/cli-dev/META.yaml +55 -0
- package/.agent/skills/tooling/cli-dev/SKILL.md +83 -0
- package/.agent/skills/tooling/cli-dev/data/frameworks.yaml +128 -0
- package/.agent/skills/tooling/cli-dev/data/output-formats.yaml +58 -0
- package/.agent/skills/tooling/cli-dev/data/ux-patterns.yaml +97 -0
- package/.agent/skills/tooling/ide-extension/META.yaml +72 -0
- package/.agent/skills/tooling/ide-extension/SKILL.md +108 -0
- package/.agent/skills/tooling/ide-extension/data/jetbrains-patterns.yaml +118 -0
- package/.agent/skills/tooling/ide-extension/data/lsp-patterns.yaml +126 -0
- package/.agent/skills/tooling/ide-extension/data/vscode-patterns.yaml +172 -0
- package/.agent/skills/tooling/mcp/META.yaml +80 -0
- package/.agent/skills/tooling/mcp/SKILL.md +114 -0
- package/.agent/skills/tooling/mcp/data/security.yaml +116 -0
- package/.agent/skills/tooling/mcp/data/tool-design.yaml +124 -0
- package/.agent/skills/tooling/mcp/data/transport-patterns.yaml +95 -0
- package/.agent/templates/README.md +2 -2
- package/.agent/templates/debug-report.md +1 -1
- package/.agent/templates/deploy-plan.md +1 -1
- package/.agent/templates/doc-template.md +1 -1
- package/.agent/templates/index.yaml +2 -2
- package/.agent/templates/migrate-plan.md +1 -1
- package/.agent/templates/phase-template.md +1 -1
- package/.agent/templates/tasks/audit.yaml +1 -1
- package/.agent/templates/tasks/bug_fix.yaml +1 -1
- package/.agent/templates/tasks/code_implementation.yaml +1 -1
- package/.agent/templates/tasks/refactor.yaml +1 -1
- package/.agent/templates/test-report.md +1 -1
- package/.agent/workflows/code.md +22 -1
- package/.agent/workflows/deploy.md +5 -1
- package/.agent/workflows/e2e.md +112 -0
- package/.agent/workflows/fix.md +1 -1
- package/.agent/workflows/prompt.md +325 -0
- package/.agent/workflows/scaffold.md +1 -1
- package/.agent/workflows/tdd.md +108 -0
- package/.agent/workflows/verify.md +116 -0
- package/.agent/workflows/visualize.md +50 -18
- package/README.md +16 -13
- package/configs/aider/root.CONVENTIONS.md +51 -0
- package/configs/amazonq/root.amazonq.md +51 -0
- package/configs/amp/root.AGENTS.md +51 -0
- package/configs/antigravity/root.GEMINI.md +51 -0
- package/configs/augment/root.guidelines.md +51 -0
- package/configs/claude/root.CLAUDE.md +51 -0
- package/configs/cline/root.clinerules.md +51 -0
- package/configs/coderabbit/root.coderabbit.yaml +52 -0
- package/configs/codex/root.AGENTS.md +51 -0
- package/configs/cody/root.commands.json +76 -0
- package/configs/continue/root.continue.md +51 -0
- package/configs/copilot/root.copilot-instructions.md +51 -0
- package/configs/cursor/root.cursorrules +51 -0
- package/configs/gemini/root.GEMINI.md +51 -0
- package/configs/jetbrains/root.guidelines.md +51 -0
- package/configs/opencode/root.opencode.json +24 -0
- package/configs/roo/root.roorules.md +51 -0
- package/configs/tabnine/root.guidelines.md +51 -0
- package/configs/vscode/root.copilot-instructions.md +51 -0
- package/configs/windsurf/root.windsurfrules +51 -0
- package/configs/zed/root.settings.json +15 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +9 -1
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +24 -8
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/hsa.d.ts.map +1 -1
- package/dist/commands/hsa.js +106 -20
- package/dist/commands/hsa.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +62 -69
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install-core.d.ts +2 -1
- package/dist/commands/install-core.d.ts.map +1 -1
- package/dist/commands/install-core.js +43 -16
- package/dist/commands/install-core.js.map +1 -1
- package/dist/commands/install-helpers.d.ts.map +1 -1
- package/dist/commands/install-helpers.js +25 -2
- package/dist/commands/install-helpers.js.map +1 -1
- package/dist/commands/install-hsa.d.ts +2 -5
- package/dist/commands/install-hsa.d.ts.map +1 -1
- package/dist/commands/install-hsa.js +2 -5
- package/dist/commands/install-hsa.js.map +1 -1
- package/dist/commands/install.d.ts +27 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +68 -20
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +2 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/mcp-registry.d.ts +24 -9
- package/dist/commands/mcp-registry.d.ts.map +1 -1
- package/dist/commands/mcp-registry.js +39 -57
- package/dist/commands/mcp-registry.js.map +1 -1
- package/dist/commands/mcp-writers.d.ts.map +1 -1
- package/dist/commands/mcp-writers.js +6 -5
- package/dist/commands/mcp-writers.js.map +1 -1
- package/dist/commands/mcp.d.ts +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +37 -9
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +16 -6
- package/dist/commands/update.js.map +1 -1
- package/dist/constants/cursor-globs.d.ts.map +1 -1
- package/dist/constants/cursor-globs.js +0 -6
- package/dist/constants/cursor-globs.js.map +1 -1
- package/dist/constants/ide-install-specs.js +9 -9
- package/dist/constants/ide-install-specs.js.map +1 -1
- package/dist/constants.d.ts +3 -3
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -3
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -9
- package/dist/index.js.map +1 -1
- package/dist/types/ide-install.js +1 -1
- package/dist/utils/copy-helpers.d.ts +7 -2
- package/dist/utils/copy-helpers.d.ts.map +1 -1
- package/dist/utils/copy-helpers.js +77 -51
- package/dist/utils/copy-helpers.js.map +1 -1
- package/dist/utils/install-manifest.d.ts +12 -0
- package/dist/utils/install-manifest.d.ts.map +1 -0
- package/dist/utils/install-manifest.js +27 -0
- package/dist/utils/install-manifest.js.map +1 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +34 -7
- package/dist/utils/validation.js.map +1 -1
- package/package.json +5 -4
- package/.agent/core/embeddings.json +0 -2004
- package/.agent/core/session_cache.json +0 -50
- package/.agent/skills/cross-cutting/aws/META.yaml +0 -75
- package/.agent/skills/cross-cutting/ci-cd/META.yaml +0 -60
- package/.agent/skills/cross-cutting/docker/META.yaml +0 -65
- package/.agent/skills/cross-cutting/kubernetes/META.yaml +0 -70
- package/.agent/skills/cross-cutting/ui-ux-pro-max/SKILL.md +0 -565
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/charts.yaml +0 -331
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/colors.yaml +0 -1226
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/component-decision.yaml +0 -287
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/component-mapping.yaml +0 -318
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/design-tokens.yaml +0 -525
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/desktop-animation.yaml +0 -232
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/desktop-architecture.yaml +0 -140
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/directory-structure.yaml +0 -75
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/icons.yaml +0 -918
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/implementation-strategy.yaml +0 -107
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/landing.yaml +0 -372
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/platform-frameworks.yaml +0 -195
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/platform-guidelines.yaml +0 -177
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/products.yaml +0 -1339
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/prompts.yaml +0 -180
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/react-performance.yaml +0 -504
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/desktop.yaml +0 -228
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/flutter.yaml +0 -508
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/html-tailwind.yaml +0 -543
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/nextjs.yaml +0 -515
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/nuxt-ui.yaml +0 -519
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/nuxtjs.yaml +0 -599
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/react-native.yaml +0 -496
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/react.yaml +0 -526
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/shadcn.yaml +0 -616
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/svelte.yaml +0 -520
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/swiftui.yaml +0 -486
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/vue.yaml +0 -485
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/styles.yaml +0 -1473
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/typography.yaml +0 -647
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/ui-reasoning.yaml +0 -1019
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/ux-guidelines.yaml +0 -1009
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/web-interface.yaml +0 -347
- package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/__pycache__/core.cpython-310.pyc +0 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/core.py +0 -393
- package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/core_legacy.py +0 -303
- package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/design_system.py +0 -496
- package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/search.py +0 -76
- package/.agent/skills/devops/aws/ADVANCED.md +0 -547
- package/.agent/skills/devops/ci-cd/ADVANCED.md +0 -529
- package/.agent/skills/devops/docker/ADVANCED.md +0 -495
- package/.agent/skills/devops/kubernetes/ADVANCED.md +0 -252
- /package/.agent/core/{ARCH_REGISTRY.yaml → reference/ARCH_REGISTRY.yaml} +0 -0
- /package/.agent/core/{BRANDING.yaml → reference/BRANDING.yaml} +0 -0
- /package/.agent/core/{HSA.yaml → reference/HSA.yaml} +0 -0
- /package/.agent/rules/{incremental-changes.md → archive/incremental-changes.md} +0 -0
- /package/.agent/rules/{shell-commands.md → archive/shell-commands.md} +0 -0
- /package/.agent/skills/{cross-cutting → devops}/aws/data/ai_ml.yaml +0 -0
- /package/.agent/skills/{cross-cutting → devops}/aws/data/compute.yaml +0 -0
- /package/.agent/skills/{cross-cutting → devops}/aws/data/kubernetes.yaml +0 -0
- /package/.agent/skills/{cross-cutting → devops}/aws/data/storage.yaml +0 -0
- /package/.agent/skills/{cross-cutting → devops}/ci-cd/data/github_actions.yaml +0 -0
- /package/.agent/skills/{cross-cutting → devops}/ci-cd/data/security.yaml +0 -0
- /package/.agent/skills/{cross-cutting → devops}/docker/data/build.yaml +0 -0
- /package/.agent/skills/{cross-cutting → devops}/docker/data/compose.yaml +0 -0
- /package/.agent/skills/{cross-cutting → devops}/docker/data/security.yaml +0 -0
- /package/.agent/skills/{cross-cutting → devops}/kubernetes/data/networking.yaml +0 -0
- /package/.agent/skills/{cross-cutting → devops}/kubernetes/data/scheduling.yaml +0 -0
- /package/.agent/skills/{cross-cutting → devops}/kubernetes/data/security.yaml +0 -0
- /package/.agent/skills/{cross-cutting → devops}/kubernetes/data/workloads.yaml +0 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
name: tdd-workflow
|
|
2
|
+
version: "6.2.2"
|
|
3
|
+
display: Test-Driven Development
|
|
4
|
+
category: cross-cutting
|
|
5
|
+
tier: 1
|
|
6
|
+
priority: 1
|
|
7
|
+
|
|
8
|
+
desc: "TDD methodology: Red-Green-Refactor, BDD, ATDD, property-based testing. Coverage strategies, test doubles, mutation testing. 12 languages, 180+ patterns."
|
|
9
|
+
|
|
10
|
+
triggers:
|
|
11
|
+
file_patterns:
|
|
12
|
+
- "*.test.*"
|
|
13
|
+
- "*.spec.*"
|
|
14
|
+
- "*_test.*"
|
|
15
|
+
- "test_*.*"
|
|
16
|
+
keywords:
|
|
17
|
+
- tdd
|
|
18
|
+
- test-driven
|
|
19
|
+
- red-green-refactor
|
|
20
|
+
- bdd
|
|
21
|
+
- atdd
|
|
22
|
+
- failing test
|
|
23
|
+
- test first
|
|
24
|
+
- coverage
|
|
25
|
+
- mutation testing
|
|
26
|
+
- test double
|
|
27
|
+
- mock
|
|
28
|
+
- stub
|
|
29
|
+
- spy
|
|
30
|
+
- fixture
|
|
31
|
+
- property-based
|
|
32
|
+
intents:
|
|
33
|
+
- test-driven development
|
|
34
|
+
- write tests first
|
|
35
|
+
- TDD workflow
|
|
36
|
+
- coverage strategy
|
|
37
|
+
|
|
38
|
+
caps:
|
|
39
|
+
- Red-Green-Refactor cycle
|
|
40
|
+
- BDD (Behavior-Driven Development)
|
|
41
|
+
- ATDD (Acceptance Test-Driven Development)
|
|
42
|
+
- Property-based testing
|
|
43
|
+
- Test doubles (mock, stub, spy, fake, dummy)
|
|
44
|
+
- Mutation testing
|
|
45
|
+
- Coverage strategies
|
|
46
|
+
- Test naming conventions
|
|
47
|
+
- Arrange-Act-Assert pattern
|
|
48
|
+
- Given-When-Then format
|
|
49
|
+
- Test isolation
|
|
50
|
+
- Parameterized tests
|
|
51
|
+
|
|
52
|
+
data_files:
|
|
53
|
+
- data/core-tdd-cycle.yaml
|
|
54
|
+
- data/test-doubles.yaml
|
|
55
|
+
- data/coverage-strategies.yaml
|
|
56
|
+
- data/bdd-atdd-patterns.yaml
|
|
57
|
+
- data/language-patterns.yaml
|
|
58
|
+
- data/anti-patterns.yaml
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Test-Driven Development (TDD)
|
|
2
|
+
|
|
3
|
+
> 🧪 **Complete TDD methodology for production-quality code**
|
|
4
|
+
> **Patterns**: 180+ | **Languages**: 12 | **Categories**: 6
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Quick Reference
|
|
9
|
+
|
|
10
|
+
| What You Need | Data File | Patterns |
|
|
11
|
+
| ------------------------------------ | -------------------------- | -------- |
|
|
12
|
+
| Core TDD cycle (Red-Green-Refactor) | `core-tdd-cycle.yaml` | 35 |
|
|
13
|
+
| Test doubles (mock, stub, spy, fake) | `test-doubles.yaml` | 30 |
|
|
14
|
+
| Coverage strategies | `coverage-strategies.yaml` | 25 |
|
|
15
|
+
| BDD/ATDD patterns (Given-When-Then) | `bdd-atdd-patterns.yaml` | 30 |
|
|
16
|
+
| Language-specific TDD patterns | `language-patterns.yaml` | 45 |
|
|
17
|
+
| TDD anti-patterns to avoid | `anti-patterns.yaml` | 15 |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## TDD Cycle
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
┌─────────────────────────────────────────────┐
|
|
25
|
+
│ 1. RED → Write a failing test │
|
|
26
|
+
│ 2. GREEN → Write minimal code to pass │
|
|
27
|
+
│ 3. REFACTOR → Improve without breaking │
|
|
28
|
+
│ 4. REPEAT → Next requirement │
|
|
29
|
+
└─────────────────────────────────────────────┘
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Phase Details
|
|
33
|
+
|
|
34
|
+
| Phase | Goal | Rules |
|
|
35
|
+
| ------------ | ------------------------ | -------------------------------------------------------- |
|
|
36
|
+
| **RED** | Define expected behavior | Test MUST fail first. No production code yet |
|
|
37
|
+
| **GREEN** | Make it work | Write the SIMPLEST code that passes. No optimization |
|
|
38
|
+
| **REFACTOR** | Make it clean | Remove duplication. Improve naming. All tests still pass |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Test Naming Conventions
|
|
43
|
+
|
|
44
|
+
| Pattern | Example |
|
|
45
|
+
| ---------------------------------------------- | ------------------------------------------- |
|
|
46
|
+
| `should_[behavior]_when_[condition]` | `should_throw_when_email_invalid` |
|
|
47
|
+
| `[method]_[scenario]_[expected]` | `withdraw_insufficientFunds_throwsError` |
|
|
48
|
+
| `given_[context]_when_[action]_then_[outcome]` | `given_empty_cart_when_checkout_then_error` |
|
|
49
|
+
| `it [behavior description]` | `it returns 404 for missing user` |
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Test Structure (AAA Pattern)
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
Arrange → Set up test data, dependencies, system state
|
|
57
|
+
Act → Execute the behavior under test
|
|
58
|
+
Assert → Verify the expected outcome
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Test Doubles
|
|
64
|
+
|
|
65
|
+
| Type | Purpose | When to Use |
|
|
66
|
+
| --------- | --------------------------- | ------------------------------- |
|
|
67
|
+
| **Dummy** | Fill parameter lists | Satisfy required args, not used |
|
|
68
|
+
| **Stub** | Return canned answers | Isolate from dependencies |
|
|
69
|
+
| **Spy** | Record interactions | Verify side-effects |
|
|
70
|
+
| **Mock** | Pre-programmed expectations | Behavior verification |
|
|
71
|
+
| **Fake** | Simplified implementation | In-memory DB, fake API |
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Coverage Strategy
|
|
76
|
+
|
|
77
|
+
| Level | Target | Method |
|
|
78
|
+
| --------------- | -------------- | --------------------- |
|
|
79
|
+
| **Unit** | 80%+ | TDD cycle |
|
|
80
|
+
| **Integration** | 60%+ | API/DB boundary tests |
|
|
81
|
+
| **E2E** | Critical paths | Smoke + regression |
|
|
82
|
+
| **Mutation** | 70%+ | Kill mutant score |
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## BDD Format
|
|
87
|
+
|
|
88
|
+
```gherkin
|
|
89
|
+
Feature: User Registration
|
|
90
|
+
Scenario: Valid registration
|
|
91
|
+
Given a new user with valid email
|
|
92
|
+
When they submit the registration form
|
|
93
|
+
Then account is created
|
|
94
|
+
And welcome email is sent
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Language-Specific TDD
|
|
100
|
+
|
|
101
|
+
| Language | Framework | Runner | Assert |
|
|
102
|
+
| -------------- | ----------- | --------------- | ------------------------------- |
|
|
103
|
+
| **TypeScript** | Jest/Vitest | `npx vitest` | `expect().toBe()` |
|
|
104
|
+
| **Python** | pytest | `pytest -v` | `assert`, `pytest.raises` |
|
|
105
|
+
| **Go** | testing | `go test ./...` | `t.Fatal`, testify |
|
|
106
|
+
| **Rust** | built-in | `cargo test` | `assert_eq!`, `#[should_panic]` |
|
|
107
|
+
| **Java** | JUnit 5 | `mvn test` | `assertEquals`, Mockito |
|
|
108
|
+
| **C#** | xUnit/NUnit | `dotnet test` | `Assert.Equal`, Moq |
|
|
109
|
+
| **C++** | Google Test | `ctest` | `EXPECT_EQ`, GMock |
|
|
110
|
+
| **Swift** | XCTest | `swift test` | `XCTAssertEqual` |
|
|
111
|
+
| **Kotlin** | JUnit 5 | `gradle test` | MockK, kotest |
|
|
112
|
+
| **PHP** | PHPUnit | `phpunit` | `$this->assertEquals()` |
|
|
113
|
+
| **Ruby** | RSpec | `rspec` | `expect().to eq()` |
|
|
114
|
+
| **Elixir** | ExUnit | `mix test` | `assert` |
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## HSA Integration
|
|
119
|
+
|
|
120
|
+
Data powered by HSA BM25 search engine. Query YAML data via skill search:
|
|
121
|
+
|
|
122
|
+
| Domain | Query Examples |
|
|
123
|
+
| ------------- | ------------------------------------ |
|
|
124
|
+
| TDD Cycle | "red green refactor minimal code" |
|
|
125
|
+
| Test Doubles | "mock stub spy fake dummy" |
|
|
126
|
+
| BDD | "given when then scenario feature" |
|
|
127
|
+
| Coverage | "mutation testing kill score branch" |
|
|
128
|
+
| Anti-patterns | "test coupling brittle flaky slow" |
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# TDD Anti-Patterns
|
|
2
|
+
# Common mistakes and how to fix them
|
|
3
|
+
|
|
4
|
+
anti_patterns:
|
|
5
|
+
- name: the-liar
|
|
6
|
+
description: "Test that passes but doesn't actually verify anything"
|
|
7
|
+
symptom: "No meaningful assertions, or assert true === true"
|
|
8
|
+
fix: "Every test must assert the specific expected outcome"
|
|
9
|
+
severity: critical
|
|
10
|
+
|
|
11
|
+
- name: excessive-setup
|
|
12
|
+
description: "Test requires 50+ lines of setup code"
|
|
13
|
+
symptom: "Setup is longer than the test itself"
|
|
14
|
+
fix: "Use factories, builders, or test fixtures. Simplify SUT"
|
|
15
|
+
severity: high
|
|
16
|
+
|
|
17
|
+
- name: the-giant
|
|
18
|
+
description: "Single test that verifies too many things"
|
|
19
|
+
symptom: "20+ assertions in one test"
|
|
20
|
+
fix: "Split into focused tests — one concept per test"
|
|
21
|
+
severity: high
|
|
22
|
+
|
|
23
|
+
- name: the-mockery
|
|
24
|
+
description: "Mocking everything, testing nothing real"
|
|
25
|
+
symptom: "Only testing mock interactions, not actual behavior"
|
|
26
|
+
fix: "Mock boundaries only (DB, API, filesystem). Test logic directly"
|
|
27
|
+
severity: high
|
|
28
|
+
|
|
29
|
+
- name: the-inspector
|
|
30
|
+
description: "Test tightly coupled to implementation details"
|
|
31
|
+
symptom: "Test breaks when refactoring internal code"
|
|
32
|
+
fix: "Test behavior (public API) not implementation"
|
|
33
|
+
severity: medium
|
|
34
|
+
|
|
35
|
+
- name: second-class-citizen
|
|
36
|
+
description: "Test code treated as less important than production code"
|
|
37
|
+
symptom: "Copy-paste in tests, no refactoring, poor naming"
|
|
38
|
+
fix: "Apply same quality standards to test code"
|
|
39
|
+
severity: medium
|
|
40
|
+
|
|
41
|
+
- name: the-slow-poke
|
|
42
|
+
description: "Tests that take too long to run"
|
|
43
|
+
symptom: "Full suite takes 10+ minutes"
|
|
44
|
+
fix: "Mock I/O, use in-memory DB, parallelize tests"
|
|
45
|
+
severity: medium
|
|
46
|
+
|
|
47
|
+
- name: the-free-ride
|
|
48
|
+
description: "Adding assertions to existing test instead of new test"
|
|
49
|
+
symptom: "Test name doesn't match what it verifies"
|
|
50
|
+
fix: "Each test should verify ONE specific behavior"
|
|
51
|
+
severity: low
|
|
52
|
+
|
|
53
|
+
- name: test-after-code
|
|
54
|
+
description: "Writing tests after implementation (not TDD)"
|
|
55
|
+
symptom: "Tests match implementation, not requirements"
|
|
56
|
+
fix: "Write tests FIRST — they should describe behavior"
|
|
57
|
+
severity: low
|
|
58
|
+
|
|
59
|
+
- name: flaky-test
|
|
60
|
+
description: "Test that fails intermittently"
|
|
61
|
+
causes:
|
|
62
|
+
- "Race conditions in async code"
|
|
63
|
+
- "Shared mutable state between tests"
|
|
64
|
+
- "Time-dependent logic"
|
|
65
|
+
- "Network calls in tests"
|
|
66
|
+
fix:
|
|
67
|
+
- "Isolate test state"
|
|
68
|
+
- "Use deterministic clocks"
|
|
69
|
+
- "Mock external calls"
|
|
70
|
+
- "Run in isolation"
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# BDD and ATDD Patterns
|
|
2
|
+
# Behavior-Driven and Acceptance Test-Driven Development
|
|
3
|
+
|
|
4
|
+
patterns:
|
|
5
|
+
- name: gherkin-syntax
|
|
6
|
+
type: bdd
|
|
7
|
+
description: "Given-When-Then scenarios for behavior specification"
|
|
8
|
+
format: |
|
|
9
|
+
Feature: [Business capability]
|
|
10
|
+
Background: [Shared setup]
|
|
11
|
+
Scenario: [Specific case]
|
|
12
|
+
Given [initial context]
|
|
13
|
+
When [action occurs]
|
|
14
|
+
Then [expected outcome]
|
|
15
|
+
And [additional outcome]
|
|
16
|
+
tools:
|
|
17
|
+
javascript: "Cucumber.js"
|
|
18
|
+
python: "behave, pytest-bdd"
|
|
19
|
+
java: "Cucumber-JVM"
|
|
20
|
+
ruby: "Cucumber"
|
|
21
|
+
csharp: "SpecFlow"
|
|
22
|
+
go: "godog"
|
|
23
|
+
|
|
24
|
+
- name: scenario-outline
|
|
25
|
+
type: bdd
|
|
26
|
+
description: "Parameterized scenarios for data-driven testing"
|
|
27
|
+
example: |
|
|
28
|
+
Scenario Outline: Discount calculation
|
|
29
|
+
Given a cart with total <total>
|
|
30
|
+
When discount type is <type>
|
|
31
|
+
Then final price is <expected>
|
|
32
|
+
Examples:
|
|
33
|
+
| total | type | expected |
|
|
34
|
+
| 100 | percent10 | 90 |
|
|
35
|
+
| 200 | flat20 | 180 |
|
|
36
|
+
| 50 | none | 50 |
|
|
37
|
+
|
|
38
|
+
- name: three-amigos
|
|
39
|
+
type: atdd
|
|
40
|
+
description: "Collaborative specification by developer, tester, and business"
|
|
41
|
+
participants:
|
|
42
|
+
- role: business
|
|
43
|
+
focus: "What should happen? Why?"
|
|
44
|
+
- role: developer
|
|
45
|
+
focus: "How to implement? Edge cases?"
|
|
46
|
+
- role: tester
|
|
47
|
+
focus: "What could go wrong? Missing scenarios?"
|
|
48
|
+
output: "Agreed acceptance criteria as executable specifications"
|
|
49
|
+
|
|
50
|
+
- name: specification-by-example
|
|
51
|
+
type: atdd
|
|
52
|
+
description: "Use concrete examples to define behavior"
|
|
53
|
+
process:
|
|
54
|
+
- "Derive scope from business goal"
|
|
55
|
+
- "Specify using key examples"
|
|
56
|
+
- "Refine examples with stakeholders"
|
|
57
|
+
- "Automate examples as tests"
|
|
58
|
+
- "Validate frequently"
|
|
59
|
+
|
|
60
|
+
- name: living-documentation
|
|
61
|
+
type: bdd
|
|
62
|
+
description: "Tests serve as always-current documentation"
|
|
63
|
+
benefits:
|
|
64
|
+
- "Specs are executable — always up to date"
|
|
65
|
+
- "Non-technical stakeholders can read scenarios"
|
|
66
|
+
- "Single source of truth for behavior"
|
|
67
|
+
|
|
68
|
+
- name: user-story-mapping
|
|
69
|
+
type: atdd
|
|
70
|
+
description: "Map user stories to acceptance criteria to tests"
|
|
71
|
+
flow:
|
|
72
|
+
- step: "User Story"
|
|
73
|
+
format: "As a [role], I want [feature], so that [benefit]"
|
|
74
|
+
- step: "Acceptance Criteria"
|
|
75
|
+
format: "Given-When-Then scenarios"
|
|
76
|
+
- step: "Test Cases"
|
|
77
|
+
format: "Automated BDD/ATDD tests"
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# TDD Core Cycle Patterns
|
|
2
|
+
# Red-Green-Refactor methodology
|
|
3
|
+
|
|
4
|
+
patterns:
|
|
5
|
+
- name: red-phase-failing-test
|
|
6
|
+
phase: red
|
|
7
|
+
description: "Write a failing test that defines desired behavior"
|
|
8
|
+
rules:
|
|
9
|
+
- "Test MUST fail before writing production code"
|
|
10
|
+
- "Test should fail for the RIGHT reason (not syntax/import error)"
|
|
11
|
+
- "One test at a time — do not batch"
|
|
12
|
+
- "Test name clearly describes expected behavior"
|
|
13
|
+
example:
|
|
14
|
+
language: typescript
|
|
15
|
+
code: |
|
|
16
|
+
// RED: Test fails — function doesn't exist yet
|
|
17
|
+
describe('calculateDiscount', () => {
|
|
18
|
+
it('should apply 10% discount for orders over $100', () => {
|
|
19
|
+
const result = calculateDiscount(150);
|
|
20
|
+
expect(result).toBe(135);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
- name: green-phase-minimal-code
|
|
25
|
+
phase: green
|
|
26
|
+
description: "Write the SIMPLEST code that makes the test pass"
|
|
27
|
+
rules:
|
|
28
|
+
- "Write MINIMAL code — no optimization"
|
|
29
|
+
- "Hardcode if only one test case exists"
|
|
30
|
+
- "Don't generalize prematurely"
|
|
31
|
+
- "All tests must pass (green)"
|
|
32
|
+
example:
|
|
33
|
+
language: typescript
|
|
34
|
+
code: |
|
|
35
|
+
// GREEN: Simplest possible implementation
|
|
36
|
+
function calculateDiscount(amount: number): number {
|
|
37
|
+
return amount * 0.9;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
- name: refactor-phase-clean
|
|
41
|
+
phase: refactor
|
|
42
|
+
description: "Improve code quality without changing behavior"
|
|
43
|
+
rules:
|
|
44
|
+
- "All tests MUST still pass after refactoring"
|
|
45
|
+
- "Remove duplication (DRY)"
|
|
46
|
+
- "Improve naming and readability"
|
|
47
|
+
- "Extract functions/classes if needed"
|
|
48
|
+
- "No new functionality during refactor"
|
|
49
|
+
checklist:
|
|
50
|
+
- "Any duplicated code?"
|
|
51
|
+
- "Are names clear and descriptive?"
|
|
52
|
+
- "Can any method be simplified?"
|
|
53
|
+
- "Is the test itself clean?"
|
|
54
|
+
|
|
55
|
+
- name: triangulation
|
|
56
|
+
phase: red
|
|
57
|
+
description: "Add more test cases to force generalization"
|
|
58
|
+
when: "Green phase used hardcoded value"
|
|
59
|
+
example:
|
|
60
|
+
language: typescript
|
|
61
|
+
code: |
|
|
62
|
+
// Triangulate: Force real logic
|
|
63
|
+
it('should apply 10% for $200 order', () => {
|
|
64
|
+
expect(calculateDiscount(200)).toBe(180);
|
|
65
|
+
});
|
|
66
|
+
it('should NOT apply discount for $50 order', () => {
|
|
67
|
+
expect(calculateDiscount(50)).toBe(50);
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
- name: baby-steps
|
|
71
|
+
description: "Take the smallest possible step at each phase"
|
|
72
|
+
rules:
|
|
73
|
+
- "Each commit should be tiny and atomic"
|
|
74
|
+
- "If stuck longer than 5 min, revert and try smaller step"
|
|
75
|
+
- "Timebox each Red-Green cycle to 10 minutes max"
|
|
76
|
+
|
|
77
|
+
- name: transformation-priority-premise
|
|
78
|
+
description: "Order of code transformations from simple to complex"
|
|
79
|
+
transformations:
|
|
80
|
+
- "({}→nil) no code → return nil/null"
|
|
81
|
+
- "(nil→constant) return a constant"
|
|
82
|
+
- "(constant→variable) replace constant with variable"
|
|
83
|
+
- "(unconditional→conditional) add if/else"
|
|
84
|
+
- "(scalar→collection) single → list/array"
|
|
85
|
+
- "(statement→recursion) iterate → recurse"
|
|
86
|
+
- "(value→type) change type representation"
|
|
87
|
+
|
|
88
|
+
- name: outside-in-tdd
|
|
89
|
+
description: "Start from acceptance test, drill down to unit tests"
|
|
90
|
+
flow:
|
|
91
|
+
- "Write acceptance test (E2E/integration) — RED"
|
|
92
|
+
- "Write unit test for first component — RED"
|
|
93
|
+
- "Implement component — GREEN"
|
|
94
|
+
- "Repeat for next component"
|
|
95
|
+
- "Acceptance test passes — done"
|
|
96
|
+
|
|
97
|
+
- name: inside-out-tdd
|
|
98
|
+
description: "Start from domain/core logic, build outward"
|
|
99
|
+
flow:
|
|
100
|
+
- "Write unit test for core domain — RED"
|
|
101
|
+
- "Implement domain logic — GREEN"
|
|
102
|
+
- "Write integration test — RED"
|
|
103
|
+
- "Wire up infrastructure — GREEN"
|
|
104
|
+
- "Add acceptance test at the end"
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Coverage Strategies
|
|
2
|
+
# Test coverage targets, mutation testing, and coverage metrics
|
|
3
|
+
|
|
4
|
+
strategies:
|
|
5
|
+
- name: coverage-pyramid
|
|
6
|
+
description: "Test pyramid — more unit, fewer E2E"
|
|
7
|
+
layers:
|
|
8
|
+
- level: unit
|
|
9
|
+
target: "80%+"
|
|
10
|
+
speed: fast
|
|
11
|
+
count: "70% of all tests"
|
|
12
|
+
- level: integration
|
|
13
|
+
target: "60%+"
|
|
14
|
+
speed: medium
|
|
15
|
+
count: "20% of all tests"
|
|
16
|
+
- level: e2e
|
|
17
|
+
target: "critical paths only"
|
|
18
|
+
speed: slow
|
|
19
|
+
count: "10% of all tests"
|
|
20
|
+
|
|
21
|
+
- name: coverage-metrics
|
|
22
|
+
description: "Types of code coverage"
|
|
23
|
+
metrics:
|
|
24
|
+
- name: line-coverage
|
|
25
|
+
measures: "Lines executed"
|
|
26
|
+
minimum: "80%"
|
|
27
|
+
note: "Most basic — can be misleading"
|
|
28
|
+
- name: branch-coverage
|
|
29
|
+
measures: "If/else branches taken"
|
|
30
|
+
minimum: "75%"
|
|
31
|
+
note: "Better than line coverage"
|
|
32
|
+
- name: condition-coverage
|
|
33
|
+
measures: "Boolean sub-expressions"
|
|
34
|
+
minimum: "70%"
|
|
35
|
+
note: "Catches compound condition gaps"
|
|
36
|
+
- name: path-coverage
|
|
37
|
+
measures: "Unique execution paths"
|
|
38
|
+
minimum: "60%"
|
|
39
|
+
note: "Most thorough but exponential"
|
|
40
|
+
- name: mutation-score
|
|
41
|
+
measures: "% of mutants killed"
|
|
42
|
+
minimum: "70%"
|
|
43
|
+
note: "Best quality indicator"
|
|
44
|
+
|
|
45
|
+
- name: mutation-testing
|
|
46
|
+
description: "Verify test quality by introducing bugs"
|
|
47
|
+
concept: "If tests are good, mutating code should make tests fail"
|
|
48
|
+
tools:
|
|
49
|
+
typescript: "Stryker Mutator"
|
|
50
|
+
python: "mutmut, cosmic-ray"
|
|
51
|
+
java: "PIT (pitest)"
|
|
52
|
+
go: "go-mutesting"
|
|
53
|
+
rust: "cargo-mutants"
|
|
54
|
+
csharp: "Stryker.NET"
|
|
55
|
+
mutations:
|
|
56
|
+
- "Replace + with -"
|
|
57
|
+
- "Replace > with >="
|
|
58
|
+
- "Remove method call"
|
|
59
|
+
- "Replace true with false"
|
|
60
|
+
- "Remove conditional"
|
|
61
|
+
|
|
62
|
+
- name: coverage-anti-patterns
|
|
63
|
+
description: "Common mistakes in coverage strategy"
|
|
64
|
+
anti_patterns:
|
|
65
|
+
- name: "100% coverage obsession"
|
|
66
|
+
problem: "Diminishing returns past 85%"
|
|
67
|
+
solution: "Focus on critical path and mutation score"
|
|
68
|
+
- name: "Coverage without assertions"
|
|
69
|
+
problem: "Code executes but nothing is verified"
|
|
70
|
+
solution: "Every test must have meaningful assertions"
|
|
71
|
+
- name: "Testing getters/setters"
|
|
72
|
+
problem: "Covering trivial code inflates metrics"
|
|
73
|
+
solution: "Focus coverage on business logic"
|
|
74
|
+
- name: "Ignoring edge cases"
|
|
75
|
+
problem: "High coverage but missing boundaries"
|
|
76
|
+
solution: "Add boundary value analysis tests"
|
|
77
|
+
|
|
78
|
+
- name: what-to-test
|
|
79
|
+
description: "Priority of what to test"
|
|
80
|
+
priority:
|
|
81
|
+
- level: critical
|
|
82
|
+
items:
|
|
83
|
+
[
|
|
84
|
+
"Business logic",
|
|
85
|
+
"Validation rules",
|
|
86
|
+
"Security checks",
|
|
87
|
+
"Financial calculations",
|
|
88
|
+
]
|
|
89
|
+
- level: important
|
|
90
|
+
items:
|
|
91
|
+
[
|
|
92
|
+
"Data transformations",
|
|
93
|
+
"API contracts",
|
|
94
|
+
"Error handling",
|
|
95
|
+
"State transitions",
|
|
96
|
+
]
|
|
97
|
+
- level: nice_to_have
|
|
98
|
+
items: ["UI rendering", "Configuration loading", "Logging"]
|
|
99
|
+
- level: skip
|
|
100
|
+
items:
|
|
101
|
+
[
|
|
102
|
+
"Generated code",
|
|
103
|
+
"Third-party library internals",
|
|
104
|
+
"Simple getters/setters",
|
|
105
|
+
]
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Language-Specific TDD Patterns
|
|
2
|
+
# Framework setup and idioms per language
|
|
3
|
+
|
|
4
|
+
languages:
|
|
5
|
+
- name: typescript
|
|
6
|
+
frameworks: ["Jest", "Vitest"]
|
|
7
|
+
setup:
|
|
8
|
+
vitest: "npm install -D vitest; npx vitest --init"
|
|
9
|
+
jest: "npm install -D jest @types/jest ts-jest"
|
|
10
|
+
tdd_cycle:
|
|
11
|
+
red: |
|
|
12
|
+
import { describe, it, expect } from 'vitest';
|
|
13
|
+
import { add } from './calc';
|
|
14
|
+
describe('add', () => {
|
|
15
|
+
it('adds two numbers', () => {
|
|
16
|
+
expect(add(1, 2)).toBe(3);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
green: |
|
|
20
|
+
export function add(a: number, b: number): number {
|
|
21
|
+
return a + b;
|
|
22
|
+
}
|
|
23
|
+
run: "npx vitest run"
|
|
24
|
+
|
|
25
|
+
- name: python
|
|
26
|
+
frameworks: ["pytest"]
|
|
27
|
+
setup: "pip install pytest pytest-cov"
|
|
28
|
+
tdd_cycle:
|
|
29
|
+
red: |
|
|
30
|
+
from calc import add
|
|
31
|
+
def test_add():
|
|
32
|
+
assert add(1, 2) == 3
|
|
33
|
+
green: |
|
|
34
|
+
def add(a: int, b: int) -> int:
|
|
35
|
+
return a + b
|
|
36
|
+
run: "pytest -v --cov=src"
|
|
37
|
+
|
|
38
|
+
- name: go
|
|
39
|
+
frameworks: ["testing (stdlib)"]
|
|
40
|
+
setup: "Built-in — no install needed"
|
|
41
|
+
tdd_cycle:
|
|
42
|
+
red: |
|
|
43
|
+
func TestAdd(t *testing.T) {
|
|
44
|
+
got := Add(1, 2)
|
|
45
|
+
if got != 3 {
|
|
46
|
+
t.Errorf("Add(1,2) = %d; want 3", got)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
green: |
|
|
50
|
+
func Add(a, b int) int {
|
|
51
|
+
return a + b
|
|
52
|
+
}
|
|
53
|
+
run: "go test ./... -v -cover"
|
|
54
|
+
|
|
55
|
+
- name: rust
|
|
56
|
+
frameworks: ["built-in"]
|
|
57
|
+
setup: "Built-in — #[cfg(test)] mod tests"
|
|
58
|
+
tdd_cycle:
|
|
59
|
+
red: |
|
|
60
|
+
#[cfg(test)]
|
|
61
|
+
mod tests {
|
|
62
|
+
use super::*;
|
|
63
|
+
#[test]
|
|
64
|
+
fn test_add() {
|
|
65
|
+
assert_eq!(add(1, 2), 3);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
green: |
|
|
69
|
+
pub fn add(a: i32, b: i32) -> i32 {
|
|
70
|
+
a + b
|
|
71
|
+
}
|
|
72
|
+
run: "cargo test"
|
|
73
|
+
|
|
74
|
+
- name: java
|
|
75
|
+
frameworks: ["JUnit 5", "Mockito"]
|
|
76
|
+
setup: |
|
|
77
|
+
<!-- pom.xml -->
|
|
78
|
+
<dependency>
|
|
79
|
+
<groupId>org.junit.jupiter</groupId>
|
|
80
|
+
<artifactId>junit-jupiter</artifactId>
|
|
81
|
+
<scope>test</scope>
|
|
82
|
+
</dependency>
|
|
83
|
+
tdd_cycle:
|
|
84
|
+
red: |
|
|
85
|
+
@Test
|
|
86
|
+
void shouldAddTwoNumbers() {
|
|
87
|
+
assertEquals(3, Calculator.add(1, 2));
|
|
88
|
+
}
|
|
89
|
+
green: |
|
|
90
|
+
public static int add(int a, int b) {
|
|
91
|
+
return a + b;
|
|
92
|
+
}
|
|
93
|
+
run: "mvn test"
|
|
94
|
+
|
|
95
|
+
- name: csharp
|
|
96
|
+
frameworks: ["xUnit", "NUnit", "Moq"]
|
|
97
|
+
setup: "dotnet add package xunit"
|
|
98
|
+
tdd_cycle:
|
|
99
|
+
red: |
|
|
100
|
+
[Fact]
|
|
101
|
+
public void Add_TwoNumbers_ReturnsSum()
|
|
102
|
+
{
|
|
103
|
+
Assert.Equal(3, Calculator.Add(1, 2));
|
|
104
|
+
}
|
|
105
|
+
run: "dotnet test"
|
|
106
|
+
|
|
107
|
+
- name: cpp
|
|
108
|
+
frameworks: ["Google Test", "Catch2"]
|
|
109
|
+
setup: "find_package(GTest REQUIRED)"
|
|
110
|
+
tdd_cycle:
|
|
111
|
+
red: |
|
|
112
|
+
TEST(CalculatorTest, AddsTwoNumbers) {
|
|
113
|
+
EXPECT_EQ(add(1, 2), 3);
|
|
114
|
+
}
|
|
115
|
+
run: "cmake --build build && ctest --test-dir build"
|