@nockdev/awf 6.2.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/.agent/build.yaml +178 -0
- package/.agent/config.yaml +235 -0
- package/.agent/core/ACTIVE_MEMORY.yaml +344 -0
- package/.agent/core/ARCH_REGISTRY.yaml +252 -0
- package/.agent/core/AUDIT_POLICY.md +68 -0
- package/.agent/core/BRANDING.yaml +185 -0
- package/.agent/core/CACHE.md +59 -0
- package/.agent/core/CHECKPOINT.yaml +153 -0
- package/.agent/core/CLEANUP_ENGINE.yaml +326 -0
- package/.agent/core/CODING_STYLES.yaml +346 -0
- package/.agent/core/COMMANDS.md +93 -0
- package/.agent/core/CONTEXT_INJECTOR.yaml +325 -0
- package/.agent/core/CONTEXT_LOADER.yaml +323 -0
- package/.agent/core/CONTEXT_OPTIMIZATION.yaml +286 -0
- package/.agent/core/CONTEXT_PRIORITY.yaml +357 -0
- package/.agent/core/CUSTOMIZE.md +138 -0
- package/.agent/core/DATA_SAFETY.md +92 -0
- package/.agent/core/FLOW_ENGINE.yaml +300 -0
- package/.agent/core/GRAPH_MEMORY.yaml +420 -0
- package/.agent/core/HSA.yaml +357 -0
- package/.agent/core/HYBRID_ROUTER.yaml +346 -0
- package/.agent/core/INTENT_DETECTION.yaml +384 -0
- package/.agent/core/LIBRARY_REGISTRY.yaml +401 -0
- package/.agent/core/MCP_TOOLS.yaml +414 -0
- package/.agent/core/MEMORY_CONSOLIDATION.yaml +352 -0
- package/.agent/core/MEMORY_ENGINE.yaml +353 -0
- package/.agent/core/MEMORY_PATHS.yaml +79 -0
- package/.agent/core/MEMORY_UTILS.yaml +212 -0
- package/.agent/core/PATTERNS.yaml +319 -0
- package/.agent/core/PERMISSIONS.md +100 -0
- package/.agent/core/README.md +91 -0
- package/.agent/core/REFLECTION_ENGINE.yaml +348 -0
- package/.agent/core/ROUTER.yaml +424 -0
- package/.agent/core/SCORING_FORMULA.yaml +103 -0
- package/.agent/core/SEMANTIC_ENGINE.yaml +162 -0
- package/.agent/core/SKILLS_FLOW.yaml +341 -0
- package/.agent/core/SKILL_SCHEMA.yaml +266 -0
- package/.agent/core/STATE_MACHINE.yaml +409 -0
- package/.agent/core/SUMMARIZATION_ENGINE.yaml +258 -0
- package/.agent/core/TEMPLATES.yaml +364 -0
- package/.agent/core/TOKEN_BUDGETS.yaml +157 -0
- package/.agent/core/TOKEN_LOADING.yaml +197 -0
- package/.agent/core/TOKEN_SUMMARY.yaml +121 -0
- package/.agent/core/VERSION.yaml +240 -0
- package/.agent/core/embeddings.json +2004 -0
- package/.agent/core/session_cache.json +50 -0
- package/.agent/i18n/README.md +30 -0
- package/.agent/i18n/en.yaml +302 -0
- package/.agent/i18n/vi.yaml +302 -0
- package/.agent/ide/README.md +47 -0
- package/.agent/ide/amazonq.json +35 -0
- package/.agent/ide/amp.json +35 -0
- package/.agent/ide/antigravity.json +47 -0
- package/.agent/ide/augment.json +35 -0
- package/.agent/ide/claude.json +42 -0
- package/.agent/ide/cline.json +34 -0
- package/.agent/ide/codex.json +37 -0
- package/.agent/ide/cody.json +35 -0
- package/.agent/ide/continue.json +35 -0
- package/.agent/ide/cursor.json +42 -0
- package/.agent/ide/gemini.json +46 -0
- package/.agent/ide/jetbrains.json +35 -0
- package/.agent/ide/kiro.json +35 -0
- package/.agent/ide/opencode.json +35 -0
- package/.agent/ide/roo.json +35 -0
- package/.agent/ide/tabnine.json +35 -0
- package/.agent/ide/trae.json +35 -0
- package/.agent/ide/vscode.json +34 -0
- package/.agent/ide/windsurf.json +56 -0
- package/.agent/ide/zed.json +36 -0
- package/.agent/manifest.yaml +416 -0
- package/.agent/memory/README.md +148 -0
- package/.agent/memory/active_memories.json +35 -0
- package/.agent/memory/archive/.gitkeep +0 -0
- package/.agent/memory/audit_summary.json +58 -0
- package/.agent/memory/cleanup_log.json +34 -0
- package/.agent/memory/consolidated.md +75 -0
- package/.agent/memory/core_memory/persona.json +30 -0
- package/.agent/memory/core_memory/project.json +25 -0
- package/.agent/memory/core_memory/rules.json +29 -0
- package/.agent/memory/core_memory/user.json +24 -0
- package/.agent/memory/decisions.md +40 -0
- package/.agent/memory/graph/knowledge_graph.json +12 -0
- package/.agent/memory/insights.md +52 -0
- package/.agent/memory/metrics.json +48 -0
- package/.agent/memory/patterns/errors.json +11 -0
- package/.agent/memory/patterns/successes.json +10 -0
- package/.agent/memory/session.md +64 -0
- package/.agent/memory/session_rules.json +19 -0
- package/.agent/memory/state.json +81 -0
- package/.agent/memory/vectors/README.md +129 -0
- package/.agent/personas/README.md +180 -0
- package/.agent/personas/architect.md +186 -0
- package/.agent/personas/auditor.md +222 -0
- package/.agent/personas/debugger.md +210 -0
- package/.agent/personas/developer.md +183 -0
- package/.agent/personas/devops.md +268 -0
- package/.agent/personas/documenter.md +262 -0
- package/.agent/personas/orchestrator.md +240 -0
- package/.agent/personas/persona.schema.yaml +209 -0
- package/.agent/personas/planner.md +171 -0
- package/.agent/personas/researcher.md +194 -0
- package/.agent/personas/security.md +212 -0
- package/.agent/personas/tester.md +247 -0
- package/.agent/rules/README.md +231 -0
- package/.agent/rules/SACRED_RULES.xml +142 -0
- package/.agent/rules/constitutional/tier-0-core.yaml +182 -0
- package/.agent/rules/constitutional/tier-1-safety.yaml +272 -0
- package/.agent/rules/constitutional/tier-2-execution.yaml +294 -0
- package/.agent/rules/data/build-systems.yaml +126 -0
- package/.agent/rules/data/quality-standards.json +59 -0
- package/.agent/rules/duplication-prevention.md +138 -0
- package/.agent/rules/incremental-changes.md +146 -0
- package/.agent/rules/modules/context-management.yaml +158 -0
- package/.agent/rules/modules/edit-verification.yaml +197 -0
- package/.agent/rules/modules/evidence.yaml +185 -0
- package/.agent/rules/modules/git-workflow.yaml +165 -0
- package/.agent/rules/modules/language.yaml +155 -0
- package/.agent/rules/modules/online-research.yaml +192 -0
- package/.agent/rules/modules/quality.yaml +185 -0
- package/.agent/rules/modules/reflection.yaml +209 -0
- package/.agent/rules/modules/stop-conditions.yaml +196 -0
- package/.agent/rules/modules/terminal-safety.yaml +229 -0
- package/.agent/rules/modules/versioning.yaml +97 -0
- package/.agent/rules/modules/yagni.yaml +167 -0
- package/.agent/rules/project-detection.md +317 -0
- package/.agent/rules/prompt-injection-guard.md +260 -0
- package/.agent/rules/shell-commands.md +210 -0
- package/.agent/rules/validation-framework.md +189 -0
- package/.agent/skills/DEVELOPMENT.yaml +226 -0
- package/.agent/skills/README.md +69 -0
- package/.agent/skills/_categories.yaml +145 -0
- package/.agent/skills/_router.yaml +232 -0
- package/.agent/skills/core/_index.yaml +12 -0
- package/.agent/skills/core/api-design/META.yaml +64 -0
- package/.agent/skills/core/api-design/SKILL.md +169 -0
- package/.agent/skills/core/api-design/data/api-versioning.yaml +217 -0
- package/.agent/skills/core/api-design/data/error-responses.yaml +135 -0
- package/.agent/skills/core/api-design/data/graphql-patterns.yaml +165 -0
- package/.agent/skills/core/api-design/data/grpc-patterns.yaml +165 -0
- package/.agent/skills/core/api-design/data/http-status-codes.yaml +176 -0
- package/.agent/skills/core/api-design/data/pagination.yaml +121 -0
- package/.agent/skills/core/api-design/data/rate-limiting.yaml +135 -0
- package/.agent/skills/core/api-design/data/rest-patterns.yaml +195 -0
- package/.agent/skills/core/api-design/data/test-apis.yaml +217 -0
- package/.agent/skills/core/authentication/META.yaml +73 -0
- package/.agent/skills/core/authentication/SKILL.md +166 -0
- package/.agent/skills/core/authentication/data/anti-patterns.yaml +135 -0
- package/.agent/skills/core/authentication/data/core-patterns.yaml +256 -0
- package/.agent/skills/core/authentication/data/jwt-patterns.yaml +255 -0
- package/.agent/skills/core/authentication/data/language-csharp.yaml +215 -0
- package/.agent/skills/core/authentication/data/language-go.yaml +215 -0
- package/.agent/skills/core/authentication/data/language-java.yaml +215 -0
- package/.agent/skills/core/authentication/data/language-mobile.yaml +215 -0
- package/.agent/skills/core/authentication/data/language-python.yaml +215 -0
- package/.agent/skills/core/authentication/data/language-rust.yaml +215 -0
- package/.agent/skills/core/authentication/data/language-typescript.yaml +215 -0
- package/.agent/skills/core/authentication/data/mfa-patterns.yaml +175 -0
- package/.agent/skills/core/authentication/data/oauth-patterns.yaml +255 -0
- package/.agent/skills/core/authentication/data/oauth.yaml +248 -0
- package/.agent/skills/core/authentication/data/passkeys-webauthn.yaml +215 -0
- package/.agent/skills/core/authentication/data/passkeys.yaml +208 -0
- package/.agent/skills/core/authentication/data/password-patterns.yaml +175 -0
- package/.agent/skills/core/authentication/data/password.yaml +168 -0
- package/.agent/skills/core/authentication/data/session-patterns.yaml +215 -0
- package/.agent/skills/core/error-handling/META.yaml +71 -0
- package/.agent/skills/core/error-handling/SKILL.md +156 -0
- package/.agent/skills/core/error-handling/data/anti-patterns.yaml +105 -0
- package/.agent/skills/core/error-handling/data/api-error-patterns.yaml +135 -0
- package/.agent/skills/core/error-handling/data/core-patterns.yaml +226 -0
- package/.agent/skills/core/error-handling/data/error-codes.yaml +165 -0
- package/.agent/skills/core/error-handling/data/error-messages.yaml +165 -0
- package/.agent/skills/core/error-handling/data/language-c-cpp.yaml +226 -0
- package/.agent/skills/core/error-handling/data/language-go-rust.yaml +226 -0
- package/.agent/skills/core/error-handling/data/language-python-java.yaml +226 -0
- package/.agent/skills/core/error-handling/data/language-swift-kotlin.yaml +226 -0
- package/.agent/skills/core/error-handling/data/language-typescript-php-ruby.yaml +226 -0
- package/.agent/skills/core/error-handling/data/resilience-patterns.yaml +191 -0
- package/.agent/skills/core/error-handling/data/ui-error-patterns.yaml +135 -0
- package/.agent/skills/core/logging/META.yaml +73 -0
- package/.agent/skills/core/logging/SKILL.md +184 -0
- package/.agent/skills/core/logging/data/aggregation-patterns.yaml +191 -0
- package/.agent/skills/core/logging/data/anti-patterns.yaml +121 -0
- package/.agent/skills/core/logging/data/core-patterns.yaml +226 -0
- package/.agent/skills/core/logging/data/language-csharp.yaml +191 -0
- package/.agent/skills/core/logging/data/language-go.yaml +191 -0
- package/.agent/skills/core/logging/data/language-java.yaml +191 -0
- package/.agent/skills/core/logging/data/language-kotlin.yaml +156 -0
- package/.agent/skills/core/logging/data/language-others.yaml +184 -0
- package/.agent/skills/core/logging/data/language-python.yaml +191 -0
- package/.agent/skills/core/logging/data/language-rust.yaml +191 -0
- package/.agent/skills/core/logging/data/language-swift.yaml +156 -0
- package/.agent/skills/core/logging/data/language-typescript.yaml +191 -0
- package/.agent/skills/core/logging/data/otel-logging.yaml +156 -0
- package/.agent/skills/core/observability/META.yaml +76 -0
- package/.agent/skills/core/observability/SKILL.md +153 -0
- package/.agent/skills/core/observability/data/alerting-patterns.yaml +165 -0
- package/.agent/skills/core/observability/data/anti-patterns.yaml +105 -0
- package/.agent/skills/core/observability/data/core-patterns.yaml +195 -0
- package/.agent/skills/core/observability/data/language-cpp.yaml +165 -0
- package/.agent/skills/core/observability/data/language-csharp.yaml +165 -0
- package/.agent/skills/core/observability/data/language-go.yaml +165 -0
- package/.agent/skills/core/observability/data/language-java.yaml +165 -0
- package/.agent/skills/core/observability/data/language-others.yaml +255 -0
- package/.agent/skills/core/observability/data/language-python.yaml +165 -0
- package/.agent/skills/core/observability/data/language-rust.yaml +165 -0
- package/.agent/skills/core/observability/data/language-typescript.yaml +165 -0
- package/.agent/skills/core/observability/data/metrics-patterns.yaml +135 -0
- package/.agent/skills/core/observability/data/metrics-prometheus.yaml +165 -0
- package/.agent/skills/core/observability/data/otel-core.yaml +195 -0
- package/.agent/skills/core/observability/data/profiling-patterns.yaml +135 -0
- package/.agent/skills/core/observability/data/tracing-patterns.yaml +165 -0
- package/.agent/skills/core/observability/data/tracing-tools.yaml +135 -0
- package/.agent/skills/core/security/ADVANCED.md +269 -0
- package/.agent/skills/core/security/META.yaml +97 -0
- package/.agent/skills/core/security/SKILL.md +234 -0
- package/.agent/skills/core/security/data/ai-ml-security.yaml +261 -0
- package/.agent/skills/core/security/data/api-security.yaml +230 -0
- package/.agent/skills/core/security/data/auth-patterns.yaml +195 -0
- package/.agent/skills/core/security/data/binary-exploitation.yaml +339 -0
- package/.agent/skills/core/security/data/cloud-security.yaml +269 -0
- package/.agent/skills/core/security/data/cwe-top25.yaml +415 -0
- package/.agent/skills/core/security/data/language-specific/c-security.yaml +295 -0
- package/.agent/skills/core/security/data/language-specific/cpp-security.yaml +295 -0
- package/.agent/skills/core/security/data/language-specific/csharp-security.yaml +219 -0
- package/.agent/skills/core/security/data/language-specific/go-security.yaml +219 -0
- package/.agent/skills/core/security/data/language-specific/java-security.yaml +295 -0
- package/.agent/skills/core/security/data/language-specific/kotlin-security.yaml +198 -0
- package/.agent/skills/core/security/data/language-specific/php-security.yaml +219 -0
- package/.agent/skills/core/security/data/language-specific/python-security.yaml +295 -0
- package/.agent/skills/core/security/data/language-specific/ruby-security.yaml +198 -0
- package/.agent/skills/core/security/data/language-specific/rust-security.yaml +240 -0
- package/.agent/skills/core/security/data/language-specific/solidity-security.yaml +369 -0
- package/.agent/skills/core/security/data/language-specific/swift-security.yaml +198 -0
- package/.agent/skills/core/security/data/language-specific/typescript-security.yaml +295 -0
- package/.agent/skills/core/security/data/mobile-security.yaml +369 -0
- package/.agent/skills/core/security/data/network-security.yaml +297 -0
- package/.agent/skills/core/security/data/owasp-top10.yaml +171 -0
- package/.agent/skills/core/security/data/reverse-engineering.yaml +497 -0
- package/.agent/skills/core/security/data/supply-chain.yaml +219 -0
- package/.agent/skills/cross-cutting/_index.yaml +15 -0
- package/.agent/skills/cross-cutting/audit-pro/META.yaml +43 -0
- package/.agent/skills/cross-cutting/audit-pro/data/checklists.yaml +644 -0
- package/.agent/skills/cross-cutting/audit-pro/data/scoring.yaml +101 -0
- package/.agent/skills/cross-cutting/aws/META.yaml +75 -0
- package/.agent/skills/cross-cutting/aws/data/ai_ml.yaml +194 -0
- package/.agent/skills/cross-cutting/aws/data/compute.yaml +191 -0
- package/.agent/skills/cross-cutting/aws/data/kubernetes.yaml +199 -0
- package/.agent/skills/cross-cutting/aws/data/storage.yaml +174 -0
- package/.agent/skills/cross-cutting/bun/META.yaml +58 -0
- package/.agent/skills/cross-cutting/bun/SKILL.md +357 -0
- package/.agent/skills/cross-cutting/bun/data/database.yaml +85 -0
- package/.agent/skills/cross-cutting/bun/data/runtime.yaml +170 -0
- package/.agent/skills/cross-cutting/bun/data/tooling.yaml +192 -0
- package/.agent/skills/cross-cutting/ci-cd/META.yaml +60 -0
- package/.agent/skills/cross-cutting/ci-cd/data/github_actions.yaml +248 -0
- package/.agent/skills/cross-cutting/ci-cd/data/security.yaml +211 -0
- package/.agent/skills/cross-cutting/coding-rules/META.yaml +61 -0
- package/.agent/skills/cross-cutting/coding-rules/SKILL.md +171 -0
- package/.agent/skills/cross-cutting/coding-rules/data/architecture-patterns.yaml +96 -0
- package/.agent/skills/cross-cutting/coding-rules/data/build-systems.yaml +346 -0
- package/.agent/skills/cross-cutting/coding-rules/data/coding-rules.yaml +647 -0
- package/.agent/skills/cross-cutting/coding-rules/data/concurrency-patterns.yaml +108 -0
- package/.agent/skills/cross-cutting/coding-rules/data/design-patterns.yaml +260 -0
- package/.agent/skills/cross-cutting/coding-rules/data/framework-signatures.yaml +344 -0
- package/.agent/skills/cross-cutting/coding-rules/data/memory-management.yaml +108 -0
- package/.agent/skills/cross-cutting/coding-rules/data/naming-conventions.yaml +320 -0
- package/.agent/skills/cross-cutting/coding-rules/data/performance-benchmarks.yaml +164 -0
- package/.agent/skills/cross-cutting/coding-rules/data/solid-principles.yaml +80 -0
- package/.agent/skills/cross-cutting/coding-rules/data/test-frameworks.yaml +183 -0
- package/.agent/skills/cross-cutting/database/ADVANCED.md +465 -0
- package/.agent/skills/cross-cutting/database/META.yaml +22 -0
- package/.agent/skills/cross-cutting/database/SKILL.md +816 -0
- package/.agent/skills/cross-cutting/database/data/anti_patterns.yaml +116 -0
- package/.agent/skills/cross-cutting/database/data/distributed.yaml +152 -0
- package/.agent/skills/cross-cutting/database/data/mongodb.yaml +132 -0
- package/.agent/skills/cross-cutting/database/data/mysql.yaml +130 -0
- package/.agent/skills/cross-cutting/database/data/orm.yaml +104 -0
- package/.agent/skills/cross-cutting/database/data/postgresql.yaml +170 -0
- package/.agent/skills/cross-cutting/database/data/redis.yaml +129 -0
- package/.agent/skills/cross-cutting/deno/META.yaml +68 -0
- package/.agent/skills/cross-cutting/deno/SKILL.md +343 -0
- package/.agent/skills/cross-cutting/deno/data/runtime.yaml +260 -0
- package/.agent/skills/cross-cutting/deno/data/security.yaml +168 -0
- package/.agent/skills/cross-cutting/deno/data/tooling.yaml +133 -0
- package/.agent/skills/cross-cutting/docker/META.yaml +65 -0
- package/.agent/skills/cross-cutting/docker/data/build.yaml +197 -0
- package/.agent/skills/cross-cutting/docker/data/compose.yaml +229 -0
- package/.agent/skills/cross-cutting/docker/data/security.yaml +164 -0
- package/.agent/skills/cross-cutting/electron/META.yaml +174 -0
- package/.agent/skills/cross-cutting/electron/SKILL.md +862 -0
- package/.agent/skills/cross-cutting/electron/data/build.yaml +105 -0
- package/.agent/skills/cross-cutting/electron/data/crash.yaml +103 -0
- package/.agent/skills/cross-cutting/electron/data/ipc.yaml +85 -0
- package/.agent/skills/cross-cutting/electron/data/native.yaml +157 -0
- package/.agent/skills/cross-cutting/electron/data/security.yaml +89 -0
- package/.agent/skills/cross-cutting/electron/data/storage.yaml +100 -0
- package/.agent/skills/cross-cutting/electron/data/testing.yaml +103 -0
- package/.agent/skills/cross-cutting/electron/data/updates.yaml +99 -0
- package/.agent/skills/cross-cutting/electron/data/window.yaml +83 -0
- package/.agent/skills/cross-cutting/kubernetes/META.yaml +70 -0
- package/.agent/skills/cross-cutting/kubernetes/data/networking.yaml +270 -0
- package/.agent/skills/cross-cutting/kubernetes/data/scheduling.yaml +267 -0
- package/.agent/skills/cross-cutting/kubernetes/data/security.yaml +253 -0
- package/.agent/skills/cross-cutting/kubernetes/data/workloads.yaml +251 -0
- package/.agent/skills/cross-cutting/sql/META.yaml +88 -0
- package/.agent/skills/cross-cutting/sql/SKILL.md +296 -0
- package/.agent/skills/cross-cutting/sql/data/indexing.yaml +147 -0
- package/.agent/skills/cross-cutting/sql/data/json.yaml +156 -0
- package/.agent/skills/cross-cutting/sql/data/performance.yaml +204 -0
- package/.agent/skills/cross-cutting/sql/data/queries.yaml +150 -0
- package/.agent/skills/cross-cutting/tailwind/META.yaml +72 -0
- package/.agent/skills/cross-cutting/tailwind/SKILL.md +344 -0
- package/.agent/skills/cross-cutting/tailwind/data/build.yaml +143 -0
- package/.agent/skills/cross-cutting/tailwind/data/config.yaml +109 -0
- package/.agent/skills/cross-cutting/tailwind/data/migration.yaml +149 -0
- package/.agent/skills/cross-cutting/tailwind/data/responsive.yaml +148 -0
- package/.agent/skills/cross-cutting/tailwind/data/states.yaml +152 -0
- package/.agent/skills/cross-cutting/tailwind/data/theme.yaml +126 -0
- package/.agent/skills/cross-cutting/tailwind/data/utilities.yaml +182 -0
- package/.agent/skills/cross-cutting/tailwind/data/variants.yaml +154 -0
- package/.agent/skills/cross-cutting/testing/ADVANCED.md +245 -0
- package/.agent/skills/cross-cutting/testing/META.yaml +49 -0
- package/.agent/skills/cross-cutting/testing/SKILL.md +263 -0
- package/.agent/skills/cross-cutting/testing/data/frameworks.yaml +300 -0
- package/.agent/skills/cross-cutting/testing/data/patterns.yaml +168 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/META.yaml +108 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/SKILL.md +565 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/charts.yaml +331 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/colors.yaml +1226 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/component-decision.yaml +287 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/component-mapping.yaml +318 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/design-tokens.yaml +525 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/desktop-animation.yaml +232 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/desktop-architecture.yaml +140 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/desktop-colors.yaml +467 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/directory-structure.yaml +75 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/icons.yaml +918 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/implementation-strategy.yaml +107 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/landing.yaml +372 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/platform-frameworks.yaml +195 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/platform-guidelines.yaml +177 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/products.yaml +1339 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/prompts.yaml +180 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/react-performance.yaml +504 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/desktop.yaml +228 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/flutter.yaml +508 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/html-tailwind.yaml +543 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/nextjs.yaml +515 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/nuxt-ui.yaml +519 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/nuxtjs.yaml +599 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/react-native.yaml +496 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/react.yaml +526 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/shadcn.yaml +616 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/svelte.yaml +520 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/swiftui.yaml +486 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/vue.yaml +485 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/styles.yaml +1473 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/typography.yaml +647 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/ui-reasoning.yaml +1019 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/ux-guidelines.yaml +1009 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/web-interface.yaml +347 -0
- 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 +393 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/core_legacy.py +303 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/design_system.py +496 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/search.py +76 -0
- package/.agent/skills/cross-cutting/web-perf/META.yaml +92 -0
- package/.agent/skills/cross-cutting/web-perf/SKILL.md +181 -0
- package/.agent/skills/cross-cutting/web-perf/data/cls_optimization.yaml +189 -0
- package/.agent/skills/cross-cutting/web-perf/data/core_web_vitals.yaml +282 -0
- package/.agent/skills/cross-cutting/web-perf/data/inp_optimization.yaml +240 -0
- package/.agent/skills/cross-cutting/web-perf/data/lcp_optimization.yaml +202 -0
- package/.agent/skills/cross-cutting/web-perf/data/measurement.yaml +170 -0
- package/.agent/skills/devops/_index.yaml +9 -0
- package/.agent/skills/devops/aws/ADVANCED.md +547 -0
- package/.agent/skills/devops/aws/META.yaml +84 -0
- package/.agent/skills/devops/aws/SKILL.md +711 -0
- package/.agent/skills/devops/ci-cd/ADVANCED.md +529 -0
- package/.agent/skills/devops/ci-cd/META.yaml +21 -0
- package/.agent/skills/devops/ci-cd/SKILL.md +821 -0
- package/.agent/skills/devops/docker/ADVANCED.md +495 -0
- package/.agent/skills/devops/docker/META.yaml +20 -0
- package/.agent/skills/devops/docker/SKILL.md +653 -0
- package/.agent/skills/devops/kubernetes/ADVANCED.md +252 -0
- package/.agent/skills/devops/kubernetes/META.yaml +15 -0
- package/.agent/skills/devops/kubernetes/SKILL.md +621 -0
- package/.agent/skills/frameworks/_index.yaml +13 -0
- package/.agent/skills/frameworks/angular/META.yaml +70 -0
- package/.agent/skills/frameworks/angular/SKILL.md +319 -0
- package/.agent/skills/frameworks/angular/data/core.yaml +209 -0
- package/.agent/skills/frameworks/angular/data/performance.yaml +210 -0
- package/.agent/skills/frameworks/angular/data/server.yaml +175 -0
- package/.agent/skills/frameworks/flutter/ADVANCED.md +491 -0
- package/.agent/skills/frameworks/flutter/META.yaml +64 -0
- package/.agent/skills/frameworks/flutter/SKILL.md +541 -0
- package/.agent/skills/frameworks/flutter/data/core.yaml +210 -0
- package/.agent/skills/frameworks/flutter/data/platform.yaml +246 -0
- package/.agent/skills/frameworks/flutter/data/state.yaml +250 -0
- package/.agent/skills/frameworks/nextjs/ADVANCED.md +225 -0
- package/.agent/skills/frameworks/nextjs/META.yaml +67 -0
- package/.agent/skills/frameworks/nextjs/SKILL.md +593 -0
- package/.agent/skills/frameworks/nextjs/data/caching.yaml +210 -0
- package/.agent/skills/frameworks/nextjs/data/core.yaml +255 -0
- package/.agent/skills/frameworks/nextjs/data/server.yaml +248 -0
- package/.agent/skills/frameworks/nuxt/META.yaml +57 -0
- package/.agent/skills/frameworks/nuxt/SKILL.md +283 -0
- package/.agent/skills/frameworks/nuxt/data/core.yaml +309 -0
- package/.agent/skills/frameworks/nuxt/data/server.yaml +271 -0
- package/.agent/skills/frameworks/react/ADVANCED.md +676 -0
- package/.agent/skills/frameworks/react/META.yaml +60 -0
- package/.agent/skills/frameworks/react/SKILL.md +263 -0
- package/.agent/skills/frameworks/react/data/core.yaml +278 -0
- package/.agent/skills/frameworks/react/data/server.yaml +283 -0
- package/.agent/skills/frameworks/react-native/META.yaml +59 -0
- package/.agent/skills/frameworks/react-native/SKILL.md +301 -0
- package/.agent/skills/frameworks/react-native/data/core.yaml +260 -0
- package/.agent/skills/frameworks/react-native/data/platform.yaml +287 -0
- package/.agent/skills/frameworks/svelte/META.yaml +62 -0
- package/.agent/skills/frameworks/svelte/SKILL.md +398 -0
- package/.agent/skills/frameworks/svelte/data/runes.yaml +239 -0
- package/.agent/skills/frameworks/svelte/data/sveltekit.yaml +244 -0
- package/.agent/skills/frameworks/vue/ADVANCED.md +214 -0
- package/.agent/skills/frameworks/vue/META.yaml +58 -0
- package/.agent/skills/frameworks/vue/SKILL.md +356 -0
- package/.agent/skills/frameworks/vue/data/advanced.yaml +253 -0
- package/.agent/skills/frameworks/vue/data/core.yaml +270 -0
- package/.agent/skills/index.json +143 -0
- package/.agent/skills/languages/_index.yaml +33 -0
- package/.agent/skills/languages/asm/ADVANCED.md +750 -0
- package/.agent/skills/languages/asm/META.yaml +84 -0
- package/.agent/skills/languages/asm/SKILL.md +753 -0
- package/.agent/skills/languages/asm/data/advanced.yaml +295 -0
- package/.agent/skills/languages/asm/data/core.yaml +280 -0
- package/.agent/skills/languages/c/ADVANCED.md +625 -0
- package/.agent/skills/languages/c/META.yaml +58 -0
- package/.agent/skills/languages/c/SKILL.md +748 -0
- package/.agent/skills/languages/c/data/core.yaml +179 -0
- package/.agent/skills/languages/c/data/embedded.yaml +251 -0
- package/.agent/skills/languages/c/data/memory.yaml +253 -0
- package/.agent/skills/languages/clojure/META.yaml +13 -0
- package/.agent/skills/languages/clojure/SKILL.md +130 -0
- package/.agent/skills/languages/clojure/data/core.yaml +326 -0
- package/.agent/skills/languages/cpp/ADVANCED.md +457 -0
- package/.agent/skills/languages/cpp/META.yaml +61 -0
- package/.agent/skills/languages/cpp/SKILL.md +936 -0
- package/.agent/skills/languages/cpp/data/core.yaml +304 -0
- package/.agent/skills/languages/cpp/data/memory.yaml +247 -0
- package/.agent/skills/languages/cpp/data/modern.yaml +334 -0
- package/.agent/skills/languages/crystal/META.yaml +30 -0
- package/.agent/skills/languages/crystal/SKILL.md +117 -0
- package/.agent/skills/languages/crystal/data/async.yaml +264 -0
- package/.agent/skills/languages/crystal/data/core.yaml +279 -0
- package/.agent/skills/languages/csharp/ADVANCED.md +592 -0
- package/.agent/skills/languages/csharp/META.yaml +23 -0
- package/.agent/skills/languages/csharp/SKILL.md +620 -0
- package/.agent/skills/languages/csharp/data/aspnet.yaml +448 -0
- package/.agent/skills/languages/csharp/data/core.yaml +362 -0
- package/.agent/skills/languages/elixir/META.yaml +18 -0
- package/.agent/skills/languages/elixir/SKILL.md +368 -0
- package/.agent/skills/languages/elixir/data/core.yaml +392 -0
- package/.agent/skills/languages/fsharp/META.yaml +14 -0
- package/.agent/skills/languages/fsharp/SKILL.md +113 -0
- package/.agent/skills/languages/fsharp/data/core.yaml +396 -0
- package/.agent/skills/languages/go/ADVANCED.md +260 -0
- package/.agent/skills/languages/go/META.yaml +64 -0
- package/.agent/skills/languages/go/SKILL.md +489 -0
- package/.agent/skills/languages/go/data/concurrency.yaml +424 -0
- package/.agent/skills/languages/go/data/core.yaml +399 -0
- package/.agent/skills/languages/go/data/http.yaml +507 -0
- package/.agent/skills/languages/haskell/META.yaml +18 -0
- package/.agent/skills/languages/haskell/SKILL.md +305 -0
- package/.agent/skills/languages/haskell/data/core.yaml +347 -0
- package/.agent/skills/languages/java/ADVANCED.md +450 -0
- package/.agent/skills/languages/java/META.yaml +89 -0
- package/.agent/skills/languages/java/SKILL.md +495 -0
- package/.agent/skills/languages/java/data/core.yaml +307 -0
- package/.agent/skills/languages/java/data/spring.yaml +437 -0
- package/.agent/skills/languages/javascript/ADVANCED.md +530 -0
- package/.agent/skills/languages/javascript/META.yaml +105 -0
- package/.agent/skills/languages/javascript/SKILL.md +455 -0
- package/.agent/skills/languages/javascript/data/async.yaml +290 -0
- package/.agent/skills/languages/javascript/data/core.yaml +380 -0
- package/.agent/skills/languages/javascript/data/modern.yaml +269 -0
- package/.agent/skills/languages/julia/META.yaml +13 -0
- package/.agent/skills/languages/julia/SKILL.md +174 -0
- package/.agent/skills/languages/julia/data/core.yaml +356 -0
- package/.agent/skills/languages/kotlin/ADVANCED.md +539 -0
- package/.agent/skills/languages/kotlin/META.yaml +24 -0
- package/.agent/skills/languages/kotlin/SKILL.md +525 -0
- package/.agent/skills/languages/kotlin/data/android.yaml +495 -0
- package/.agent/skills/languages/kotlin/data/core.yaml +366 -0
- package/.agent/skills/languages/lua/ADVANCED.md +257 -0
- package/.agent/skills/languages/lua/META.yaml +58 -0
- package/.agent/skills/languages/lua/SKILL.md +492 -0
- package/.agent/skills/languages/lua/data/core.yaml +264 -0
- package/.agent/skills/languages/lua/data/embedding.yaml +300 -0
- package/.agent/skills/languages/nim/META.yaml +30 -0
- package/.agent/skills/languages/nim/SKILL.md +116 -0
- package/.agent/skills/languages/nim/data/async.yaml +257 -0
- package/.agent/skills/languages/nim/data/core.yaml +241 -0
- package/.agent/skills/languages/ocaml/META.yaml +13 -0
- package/.agent/skills/languages/ocaml/SKILL.md +123 -0
- package/.agent/skills/languages/ocaml/data/core.yaml +357 -0
- package/.agent/skills/languages/perl/META.yaml +13 -0
- package/.agent/skills/languages/perl/SKILL.md +115 -0
- package/.agent/skills/languages/perl/data/core.yaml +360 -0
- package/.agent/skills/languages/php/ADVANCED.md +199 -0
- package/.agent/skills/languages/php/META.yaml +18 -0
- package/.agent/skills/languages/php/SKILL.md +488 -0
- package/.agent/skills/languages/php/data/core.yaml +392 -0
- package/.agent/skills/languages/php/data/laravel.yaml +525 -0
- package/.agent/skills/languages/python/ADVANCED.md +207 -0
- package/.agent/skills/languages/python/META.yaml +91 -0
- package/.agent/skills/languages/python/SKILL.md +495 -0
- package/.agent/skills/languages/python/data/async.yaml +265 -0
- package/.agent/skills/languages/python/data/core.yaml +259 -0
- package/.agent/skills/languages/python/data/fastapi.yaml +296 -0
- package/.agent/skills/languages/python/data/testing.yaml +226 -0
- package/.agent/skills/languages/r/META.yaml +16 -0
- package/.agent/skills/languages/r/SKILL.md +348 -0
- package/.agent/skills/languages/r/data/core.yaml +355 -0
- package/.agent/skills/languages/ruby/ADVANCED.md +381 -0
- package/.agent/skills/languages/ruby/META.yaml +19 -0
- package/.agent/skills/languages/ruby/SKILL.md +417 -0
- package/.agent/skills/languages/ruby/data/core.yaml +448 -0
- package/.agent/skills/languages/ruby/data/rails.yaml +415 -0
- package/.agent/skills/languages/rust/ADVANCED.md +212 -0
- package/.agent/skills/languages/rust/META.yaml +87 -0
- package/.agent/skills/languages/rust/SKILL.md +377 -0
- package/.agent/skills/languages/rust/data/async.yaml +404 -0
- package/.agent/skills/languages/rust/data/axum.yaml +450 -0
- package/.agent/skills/languages/rust/data/core.yaml +356 -0
- package/.agent/skills/languages/scala/META.yaml +17 -0
- package/.agent/skills/languages/scala/SKILL.md +202 -0
- package/.agent/skills/languages/scala/data/core.yaml +349 -0
- package/.agent/skills/languages/solidity/META.yaml +13 -0
- package/.agent/skills/languages/solidity/SKILL.md +188 -0
- package/.agent/skills/languages/solidity/data/core.yaml +528 -0
- package/.agent/skills/languages/swift/ADVANCED.md +231 -0
- package/.agent/skills/languages/swift/META.yaml +18 -0
- package/.agent/skills/languages/swift/SKILL.md +342 -0
- package/.agent/skills/languages/swift/data/core.yaml +489 -0
- package/.agent/skills/languages/typescript/ADVANCED.md +186 -0
- package/.agent/skills/languages/typescript/META.yaml +92 -0
- package/.agent/skills/languages/typescript/SKILL.md +306 -0
- package/.agent/skills/languages/typescript/data/async.yaml +397 -0
- package/.agent/skills/languages/typescript/data/core.yaml +283 -0
- package/.agent/skills/languages/typescript/data/validation.yaml +338 -0
- package/.agent/skills/languages/zig/META.yaml +52 -0
- package/.agent/skills/languages/zig/SKILL.md +354 -0
- package/.agent/skills/languages/zig/data/async.yaml +314 -0
- package/.agent/skills/languages/zig/data/core.yaml +302 -0
- package/.agent/templates/README.md +42 -0
- package/.agent/templates/audit-report.md +153 -0
- package/.agent/templates/chains/debug/step1-reproduce.md +83 -0
- package/.agent/templates/chains/debug/step2-isolate.md +73 -0
- package/.agent/templates/chains/debug/step3-analyze.md +86 -0
- package/.agent/templates/chains/debug/step4-fix.md +85 -0
- package/.agent/templates/chains/debug/step5-verify.md +122 -0
- package/.agent/templates/chains/implement/step1-plan.md +88 -0
- package/.agent/templates/chains/implement/step2-code.md +87 -0
- package/.agent/templates/chains/implement/step3-test.md +87 -0
- package/.agent/templates/chains/implement/step4-doc.md +118 -0
- package/.agent/templates/chains/review/step1-understand.md +74 -0
- package/.agent/templates/chains/review/step2-analyze.md +110 -0
- package/.agent/templates/chains/review/step3-fix.md +93 -0
- package/.agent/templates/chains/review/step4-summary.md +104 -0
- package/.agent/templates/debug-report.md +50 -0
- package/.agent/templates/deploy-plan.md +54 -0
- package/.agent/templates/doc-template.md +57 -0
- package/.agent/templates/findings.md +122 -0
- package/.agent/templates/index.yaml +239 -0
- package/.agent/templates/migrate-plan.md +50 -0
- package/.agent/templates/phase-template.md +72 -0
- package/.agent/templates/project-plan.md +87 -0
- package/.agent/templates/prompts/context_block.md +114 -0
- package/.agent/templates/prompts/guardrails_block.md +116 -0
- package/.agent/templates/prompts/persona_base.md +155 -0
- package/.agent/templates/prompts/tools_block.md +137 -0
- package/.agent/templates/reflection/critic.md +110 -0
- package/.agent/templates/reflection/error_analysis.md +149 -0
- package/.agent/templates/reflection/success_analysis.md +174 -0
- package/.agent/templates/task-list.md +144 -0
- package/.agent/templates/tasks/audit.yaml +146 -0
- package/.agent/templates/tasks/bug_fix.yaml +121 -0
- package/.agent/templates/tasks/code_implementation.yaml +110 -0
- package/.agent/templates/tasks/refactor.yaml +157 -0
- package/.agent/templates/test-report.md +52 -0
- package/.agent/workflows/ap.md +135 -0
- package/.agent/workflows/code.md +130 -0
- package/.agent/workflows/debug.md +230 -0
- package/.agent/workflows/deploy.md +192 -0
- package/.agent/workflows/dev.md +137 -0
- package/.agent/workflows/doc.md +124 -0
- package/.agent/workflows/env.md +98 -0
- package/.agent/workflows/fix.md +76 -0
- package/.agent/workflows/generate.md +28 -0
- package/.agent/workflows/git.md +97 -0
- package/.agent/workflows/help.md +75 -0
- package/.agent/workflows/init.md +148 -0
- package/.agent/workflows/migrate.md +135 -0
- package/.agent/workflows/monitor.md +133 -0
- package/.agent/workflows/onboard.md +144 -0
- package/.agent/workflows/orchestrate.md +117 -0
- package/.agent/workflows/perf.md +106 -0
- package/.agent/workflows/plan.md +106 -0
- package/.agent/workflows/recap.md +101 -0
- package/.agent/workflows/refactor.md +161 -0
- package/.agent/workflows/revert.md +99 -0
- package/.agent/workflows/review.md +106 -0
- package/.agent/workflows/scaffold.md +119 -0
- package/.agent/workflows/security.md +186 -0
- package/.agent/workflows/status.md +103 -0
- package/.agent/workflows/test.md +157 -0
- package/.agent/workflows/think.md +126 -0
- package/.agent/workflows/upgrade.md +109 -0
- package/.agent/workflows/visualize.md +295 -0
- package/.agent/workflows/workflow.md +196 -0
- package/README.md +64 -0
- package/dist/commands/add.d.ts +2 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +70 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/config.d.ts +4 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +152 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/doctor.d.ts +4 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +98 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/hsa.d.ts +4 -0
- package/dist/commands/hsa.d.ts.map +1 -0
- package/dist/commands/hsa.js +194 -0
- package/dist/commands/hsa.js.map +1 -0
- package/dist/commands/info.d.ts +2 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +149 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.d.ts +4 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +262 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/install-core.d.ts +4 -0
- package/dist/commands/install-core.d.ts.map +1 -0
- package/dist/commands/install-core.js +85 -0
- package/dist/commands/install-core.js.map +1 -0
- package/dist/commands/install-helpers.d.ts +27 -0
- package/dist/commands/install-helpers.d.ts.map +1 -0
- package/dist/commands/install-helpers.js +125 -0
- package/dist/commands/install-helpers.js.map +1 -0
- package/dist/commands/install-hsa.d.ts +18 -0
- package/dist/commands/install-hsa.d.ts.map +1 -0
- package/dist/commands/install-hsa.js +61 -0
- package/dist/commands/install-hsa.js.map +1 -0
- package/dist/commands/install.d.ts +4 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +310 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/list.d.ts +4 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +91 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/mcp-registry.d.ts +48 -0
- package/dist/commands/mcp-registry.d.ts.map +1 -0
- package/dist/commands/mcp-registry.js +246 -0
- package/dist/commands/mcp-registry.js.map +1 -0
- package/dist/commands/mcp-writers.d.ts +20 -0
- package/dist/commands/mcp-writers.d.ts.map +1 -0
- package/dist/commands/mcp-writers.js +144 -0
- package/dist/commands/mcp-writers.js.map +1 -0
- package/dist/commands/mcp.d.ts +10 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +319 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/update.d.ts +4 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +79 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/constants/cursor-globs.d.ts +17 -0
- package/dist/constants/cursor-globs.d.ts.map +1 -0
- package/dist/constants/cursor-globs.js +62 -0
- package/dist/constants/cursor-globs.js.map +1 -0
- package/dist/constants/ide-install-specs.d.ts +36 -0
- package/dist/constants/ide-install-specs.d.ts.map +1 -0
- package/dist/constants/ide-install-specs.js +870 -0
- package/dist/constants/ide-install-specs.js.map +1 -0
- package/dist/constants/ides.d.ts +105 -0
- package/dist/constants/ides.d.ts.map +1 -0
- package/dist/constants/ides.js +412 -0
- package/dist/constants/ides.js.map +1 -0
- package/dist/constants/skills.d.ts +40 -0
- package/dist/constants/skills.d.ts.map +1 -0
- package/dist/constants/skills.js +78 -0
- package/dist/constants/skills.js.map +1 -0
- package/dist/constants.d.ts +39 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +75 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +122 -0
- package/dist/index.js.map +1 -0
- package/dist/types/flags.d.ts +47 -0
- package/dist/types/flags.d.ts.map +1 -0
- package/dist/types/flags.js +4 -0
- package/dist/types/flags.js.map +1 -0
- package/dist/types/ide-install.d.ts +175 -0
- package/dist/types/ide-install.d.ts.map +1 -0
- package/dist/types/ide-install.js +29 -0
- package/dist/types/ide-install.js.map +1 -0
- package/dist/utils/copy-helpers.d.ts +60 -0
- package/dist/utils/copy-helpers.d.ts.map +1 -0
- package/dist/utils/copy-helpers.js +617 -0
- package/dist/utils/copy-helpers.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/validation.d.ts +29 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +211 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# C Core Patterns (Feb 2026)
|
|
3
|
+
# Version: C23/C2x
|
|
4
|
+
# =============================================================================
|
|
5
|
+
|
|
6
|
+
metadata:
|
|
7
|
+
skill: c
|
|
8
|
+
domain: core
|
|
9
|
+
version: "C23"
|
|
10
|
+
updated: "2026-02-05"
|
|
11
|
+
patterns_count: 4
|
|
12
|
+
|
|
13
|
+
patterns:
|
|
14
|
+
- id: c001
|
|
15
|
+
name: C23 typeof
|
|
16
|
+
category: types
|
|
17
|
+
version: "C23"
|
|
18
|
+
description: |
|
|
19
|
+
typeof operator for type inference (C23).
|
|
20
|
+
Like C++ auto but for C.
|
|
21
|
+
text: typeof typeof_unqual type inference c23
|
|
22
|
+
example: |
|
|
23
|
+
// ✅ C23 typeof - infer type from expression
|
|
24
|
+
int arr[10];
|
|
25
|
+
typeof(arr[0]) x = 5; // x is int
|
|
26
|
+
|
|
27
|
+
typeof(arr) ptr; // ptr is int[10]
|
|
28
|
+
typeof_unqual(arr) y; // y is int[10] (removes const/volatile)
|
|
29
|
+
|
|
30
|
+
// ✅ Use in macros for type-safe generics
|
|
31
|
+
#define max(a, b) ({ \
|
|
32
|
+
typeof(a) _a = (a); \
|
|
33
|
+
typeof(b) _b = (b); \
|
|
34
|
+
_a > _b ? _a : _b; \
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
// ✅ Create variables matching another
|
|
38
|
+
void process(int* data, size_t len) {
|
|
39
|
+
typeof(*data) sum = 0; // sum is int
|
|
40
|
+
for (size_t i = 0; i < len; i++) {
|
|
41
|
+
sum += data[i];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// ✅ Function pointer type inference
|
|
46
|
+
int add(int a, int b) { return a + b; }
|
|
47
|
+
typeof(add)* func_ptr = add; // Function pointer
|
|
48
|
+
severity: MEDIUM
|
|
49
|
+
docs_url: https://en.cppreference.com/w/c/language/typeof
|
|
50
|
+
|
|
51
|
+
- id: c002
|
|
52
|
+
name: C23 constexpr
|
|
53
|
+
category: constants
|
|
54
|
+
version: "C23"
|
|
55
|
+
description: |
|
|
56
|
+
Compile-time constants with constexpr.
|
|
57
|
+
Arrays with computed sizes.
|
|
58
|
+
text: constexpr compile-time constant static
|
|
59
|
+
example: |
|
|
60
|
+
// ✅ C23 constexpr - compile-time evaluation
|
|
61
|
+
constexpr int BUFFER_SIZE = 1024;
|
|
62
|
+
constexpr int DOUBLE_BUF = BUFFER_SIZE * 2;
|
|
63
|
+
|
|
64
|
+
// ✅ Use in array declarations
|
|
65
|
+
char buffer[BUFFER_SIZE]; // Works at compile time
|
|
66
|
+
|
|
67
|
+
// ✅ constexpr with expressions
|
|
68
|
+
constexpr int fib5 = 5; // Must be evaluable at compile time
|
|
69
|
+
|
|
70
|
+
// ✅ Difference from const
|
|
71
|
+
const int runtime_val = get_runtime_value(); // Runtime
|
|
72
|
+
constexpr int compile_val = 42; // Compile time
|
|
73
|
+
|
|
74
|
+
// ❌ Cannot use runtime values
|
|
75
|
+
// constexpr int bad = runtime_val; // Error!
|
|
76
|
+
|
|
77
|
+
// ✅ Type qualifiers preserved
|
|
78
|
+
constexpr const char* msg = "Hello";
|
|
79
|
+
|
|
80
|
+
// ✅ Static assertions with constexpr
|
|
81
|
+
static_assert(BUFFER_SIZE >= 512, "Buffer too small");
|
|
82
|
+
severity: MEDIUM
|
|
83
|
+
docs_url: https://en.cppreference.com/w/c/language/constexpr
|
|
84
|
+
|
|
85
|
+
- id: c003
|
|
86
|
+
name: C23 nullptr
|
|
87
|
+
category: pointers
|
|
88
|
+
version: "C23"
|
|
89
|
+
description: |
|
|
90
|
+
Type-safe null pointer constant.
|
|
91
|
+
Replaces NULL macro issues.
|
|
92
|
+
text: nullptr null pointer nullptr_t type-safe
|
|
93
|
+
example: |
|
|
94
|
+
#include <stddef.h> // For nullptr_t
|
|
95
|
+
|
|
96
|
+
// ✅ C23 nullptr - type-safe null
|
|
97
|
+
int* ptr = nullptr; // Clear intent
|
|
98
|
+
|
|
99
|
+
// ✅ Why nullptr is better than NULL
|
|
100
|
+
// NULL is typically defined as ((void*)0) or just 0
|
|
101
|
+
// This can cause issues with function overloading (in C++)
|
|
102
|
+
// and varargs
|
|
103
|
+
|
|
104
|
+
// ❌ Problem with NULL in varargs
|
|
105
|
+
void log_ptr(const char* fmt, ...) { /* ... */ }
|
|
106
|
+
// log_ptr("ptr: %p", NULL); // May pass as int 0!
|
|
107
|
+
log_ptr("ptr: %p", nullptr); // ✅ Correct: passes as pointer
|
|
108
|
+
|
|
109
|
+
// ✅ nullptr_t type
|
|
110
|
+
typedef typeof(nullptr) nullptr_t; // Or from <stddef.h>
|
|
111
|
+
|
|
112
|
+
void accepts_null(nullptr_t n) {
|
|
113
|
+
// Only accepts nullptr
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// ✅ Comparison
|
|
117
|
+
if (ptr == nullptr) {
|
|
118
|
+
// Handle null case
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// ✅ In structs
|
|
122
|
+
struct Node {
|
|
123
|
+
int value;
|
|
124
|
+
struct Node* next;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
struct Node node = { .value = 42, .next = nullptr };
|
|
128
|
+
severity: MEDIUM
|
|
129
|
+
docs_url: https://en.cppreference.com/w/c/types/nullptr_t
|
|
130
|
+
|
|
131
|
+
- id: c004
|
|
132
|
+
name: C23 Embed Directive
|
|
133
|
+
category: preprocessor
|
|
134
|
+
version: "C23"
|
|
135
|
+
description: |
|
|
136
|
+
Embed binary files directly in source.
|
|
137
|
+
Replacement for xxd/bin2c.
|
|
138
|
+
text: embed binary include resource file
|
|
139
|
+
example: |
|
|
140
|
+
// ✅ C23 #embed - include binary files
|
|
141
|
+
|
|
142
|
+
// Embed an image as array
|
|
143
|
+
static const unsigned char icon[] = {
|
|
144
|
+
#embed "icon.png"
|
|
145
|
+
};
|
|
146
|
+
static const size_t icon_size = sizeof(icon);
|
|
147
|
+
|
|
148
|
+
// ✅ With limit parameter
|
|
149
|
+
static const unsigned char header[] = {
|
|
150
|
+
#embed "large_file.bin" limit(1024)
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
// ✅ With prefix/suffix
|
|
154
|
+
static const unsigned char data[] = {
|
|
155
|
+
#embed "data.bin" prefix(0xAA, 0xBB,) suffix(, 0xCC, 0xDD)
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
// ✅ Conditional embedding
|
|
159
|
+
#if __has_embed("config.bin")
|
|
160
|
+
static const unsigned char config[] = {
|
|
161
|
+
#embed "config.bin"
|
|
162
|
+
};
|
|
163
|
+
#else
|
|
164
|
+
static const unsigned char config[] = {0};
|
|
165
|
+
#endif
|
|
166
|
+
|
|
167
|
+
// ✅ Use embedded data
|
|
168
|
+
void process_icon(void) {
|
|
169
|
+
for (size_t i = 0; i < icon_size; i++) {
|
|
170
|
+
process_byte(icon[i]);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Benefits over xxd:
|
|
175
|
+
// - No build step
|
|
176
|
+
// - Compile-time size known
|
|
177
|
+
// - Works with any build system
|
|
178
|
+
severity: HIGH
|
|
179
|
+
docs_url: https://en.cppreference.com/w/c/preprocessor/embed
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# C Embedded Patterns (Feb 2026)
|
|
3
|
+
# Version: Embedded / MISRA
|
|
4
|
+
# =============================================================================
|
|
5
|
+
|
|
6
|
+
metadata:
|
|
7
|
+
skill: c
|
|
8
|
+
domain: embedded
|
|
9
|
+
version: "C23"
|
|
10
|
+
updated: "2026-02-05"
|
|
11
|
+
patterns_count: 4
|
|
12
|
+
|
|
13
|
+
patterns:
|
|
14
|
+
- id: c201
|
|
15
|
+
name: Volatile for Hardware
|
|
16
|
+
category: embedded
|
|
17
|
+
version: "C"
|
|
18
|
+
description: |
|
|
19
|
+
volatile keyword for memory-mapped I/O.
|
|
20
|
+
Prevent optimization of hardware accesses.
|
|
21
|
+
text: volatile hardware register mmio memory-mapped
|
|
22
|
+
example: |
|
|
23
|
+
#include <stdint.h>
|
|
24
|
+
|
|
25
|
+
// ✅ Memory-mapped I/O register
|
|
26
|
+
#define GPIO_BASE 0x40020000
|
|
27
|
+
#define GPIO_ODR (*(volatile uint32_t*)(GPIO_BASE + 0x14))
|
|
28
|
+
#define GPIO_IDR (*(volatile uint32_t*)(GPIO_BASE + 0x10))
|
|
29
|
+
|
|
30
|
+
// Set pin high
|
|
31
|
+
GPIO_ODR |= (1 << 5);
|
|
32
|
+
|
|
33
|
+
// Read pin state
|
|
34
|
+
uint32_t state = GPIO_IDR & (1 << 5);
|
|
35
|
+
|
|
36
|
+
// ✅ Why volatile is required:
|
|
37
|
+
void wait_for_ready(void) {
|
|
38
|
+
// Without volatile, compiler may optimize to infinite loop
|
|
39
|
+
// thinking STATUS never changes
|
|
40
|
+
volatile uint32_t* status = (volatile uint32_t*)0x40000000;
|
|
41
|
+
while ((*status & 0x01) == 0) {
|
|
42
|
+
// Wait for ready bit
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// ✅ Struct for register groups
|
|
47
|
+
typedef struct {
|
|
48
|
+
volatile uint32_t CR; // Control
|
|
49
|
+
volatile uint32_t SR; // Status
|
|
50
|
+
volatile uint32_t DR; // Data
|
|
51
|
+
volatile uint32_t reserved[5];
|
|
52
|
+
} UART_TypeDef;
|
|
53
|
+
|
|
54
|
+
#define UART1 ((UART_TypeDef*)0x40011000)
|
|
55
|
+
|
|
56
|
+
void uart_send(uint8_t byte) {
|
|
57
|
+
while (!(UART1->SR & (1 << 7))); // Wait for TXE
|
|
58
|
+
UART1->DR = byte;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// ✅ volatile for ISR-modified variables
|
|
62
|
+
volatile int isr_flag = 0;
|
|
63
|
+
|
|
64
|
+
void interrupt_handler(void) {
|
|
65
|
+
isr_flag = 1;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
void main_loop(void) {
|
|
69
|
+
while (!isr_flag); // Need volatile or may never exit
|
|
70
|
+
}
|
|
71
|
+
severity: HIGH
|
|
72
|
+
docs_url: https://en.cppreference.com/w/c/language/volatile
|
|
73
|
+
|
|
74
|
+
- id: c202
|
|
75
|
+
name: Bit Fields and Packing
|
|
76
|
+
category: embedded
|
|
77
|
+
version: "C"
|
|
78
|
+
description: |
|
|
79
|
+
Compact data with bit fields.
|
|
80
|
+
Memory-efficient structures.
|
|
81
|
+
text: bitfield packed struct bit manipulation
|
|
82
|
+
example: |
|
|
83
|
+
#include <stdint.h>
|
|
84
|
+
|
|
85
|
+
// ✅ Bit fields for flags
|
|
86
|
+
typedef struct {
|
|
87
|
+
uint8_t enabled : 1;
|
|
88
|
+
uint8_t mode : 3; // 0-7
|
|
89
|
+
uint8_t priority : 2; // 0-3
|
|
90
|
+
uint8_t reserved : 2;
|
|
91
|
+
} DeviceFlags;
|
|
92
|
+
|
|
93
|
+
// ✅ Packed struct for protocol
|
|
94
|
+
#pragma pack(push, 1)
|
|
95
|
+
typedef struct {
|
|
96
|
+
uint8_t header;
|
|
97
|
+
uint16_t length;
|
|
98
|
+
uint32_t sequence;
|
|
99
|
+
uint8_t payload[0]; // Flexible array
|
|
100
|
+
} Packet;
|
|
101
|
+
#pragma pack(pop)
|
|
102
|
+
_Static_assert(sizeof(Packet) == 7, "Packet must be 7 bytes");
|
|
103
|
+
|
|
104
|
+
// ✅ GCC/Clang attribute syntax
|
|
105
|
+
typedef struct __attribute__((packed)) {
|
|
106
|
+
uint8_t type;
|
|
107
|
+
uint32_t value;
|
|
108
|
+
} CompactData;
|
|
109
|
+
|
|
110
|
+
// ✅ Bit manipulation macros
|
|
111
|
+
#define BIT(n) (1UL << (n))
|
|
112
|
+
#define SET_BIT(x, n) ((x) |= BIT(n))
|
|
113
|
+
#define CLEAR_BIT(x, n) ((x) &= ~BIT(n))
|
|
114
|
+
#define TOGGLE_BIT(x, n) ((x) ^= BIT(n))
|
|
115
|
+
#define CHECK_BIT(x, n) (((x) >> (n)) & 1)
|
|
116
|
+
|
|
117
|
+
// ✅ Extract/insert fields
|
|
118
|
+
#define FIELD_GET(x, mask, shift) (((x) >> (shift)) & (mask))
|
|
119
|
+
#define FIELD_SET(x, val, mask, shift) \
|
|
120
|
+
(((x) & ~((mask) << (shift))) | (((val) & (mask)) << (shift)))
|
|
121
|
+
|
|
122
|
+
// Usage
|
|
123
|
+
uint32_t reg = 0;
|
|
124
|
+
reg = FIELD_SET(reg, 5, 0x0F, 4); // Set bits [7:4] to 5
|
|
125
|
+
int val = FIELD_GET(reg, 0x0F, 4); // Get bits [7:4]
|
|
126
|
+
severity: MEDIUM
|
|
127
|
+
docs_url: https://en.cppreference.com/w/c/language/bit_field
|
|
128
|
+
|
|
129
|
+
- id: c203
|
|
130
|
+
name: Interrupt Handling
|
|
131
|
+
category: embedded
|
|
132
|
+
version: "C"
|
|
133
|
+
description: |
|
|
134
|
+
ISR patterns for embedded systems.
|
|
135
|
+
Critical sections, atomics.
|
|
136
|
+
text: interrupt isr critical section atomic nested
|
|
137
|
+
example: |
|
|
138
|
+
#include <stdint.h>
|
|
139
|
+
#include <stdatomic.h>
|
|
140
|
+
|
|
141
|
+
// ✅ ISR function (ARM Cortex-M example)
|
|
142
|
+
void TIM2_IRQHandler(void) __attribute__((interrupt));
|
|
143
|
+
void TIM2_IRQHandler(void) {
|
|
144
|
+
// Keep ISRs short!
|
|
145
|
+
if (TIM2->SR & TIM_SR_UIF) {
|
|
146
|
+
TIM2->SR &= ~TIM_SR_UIF; // Clear flag
|
|
147
|
+
tick_count++;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// ✅ Critical section (disable interrupts)
|
|
152
|
+
static inline uint32_t enter_critical(void) {
|
|
153
|
+
uint32_t primask;
|
|
154
|
+
__asm volatile ("mrs %0, primask" : "=r" (primask));
|
|
155
|
+
__asm volatile ("cpsid i" ::: "memory");
|
|
156
|
+
return primask;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
static inline void exit_critical(uint32_t primask) {
|
|
160
|
+
__asm volatile ("msr primask, %0" :: "r" (primask) : "memory");
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Usage
|
|
164
|
+
void safe_increment(int* counter) {
|
|
165
|
+
uint32_t state = enter_critical();
|
|
166
|
+
(*counter)++;
|
|
167
|
+
exit_critical(state);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// ✅ C11 Atomics (if available)
|
|
171
|
+
atomic_int shared_counter = 0;
|
|
172
|
+
|
|
173
|
+
void isr_with_atomic(void) {
|
|
174
|
+
atomic_fetch_add(&shared_counter, 1);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// ✅ Ring buffer for ISR communication
|
|
178
|
+
#define RING_SIZE 32
|
|
179
|
+
volatile uint8_t ring_buffer[RING_SIZE];
|
|
180
|
+
volatile uint8_t ring_head = 0;
|
|
181
|
+
volatile uint8_t ring_tail = 0;
|
|
182
|
+
|
|
183
|
+
void isr_push(uint8_t byte) {
|
|
184
|
+
uint8_t next = (ring_head + 1) % RING_SIZE;
|
|
185
|
+
if (next != ring_tail) {
|
|
186
|
+
ring_buffer[ring_head] = byte;
|
|
187
|
+
ring_head = next;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
severity: HIGH
|
|
191
|
+
docs_url: https://developer.arm.com/documentation/
|
|
192
|
+
|
|
193
|
+
- id: c204
|
|
194
|
+
name: MISRA C Guidelines
|
|
195
|
+
category: safety
|
|
196
|
+
version: "MISRA"
|
|
197
|
+
description: |
|
|
198
|
+
Safety-critical coding guidelines.
|
|
199
|
+
Automotive, medical, aerospace.
|
|
200
|
+
text: misra safety-critical coding guidelines automotive
|
|
201
|
+
example: |
|
|
202
|
+
// ✅ MISRA C key rules summary
|
|
203
|
+
|
|
204
|
+
// Rule 1.3: No undefined behavior
|
|
205
|
+
// Always initialize variables
|
|
206
|
+
int x = 0; // ✅ Good
|
|
207
|
+
// int x; // ❌ Uninitialized
|
|
208
|
+
|
|
209
|
+
// Rule 10.1: Use explicit types
|
|
210
|
+
uint32_t counter = 0U; // ✅ Use unsigned suffix
|
|
211
|
+
|
|
212
|
+
// Rule 11.3: No pointer-to-pointer casts
|
|
213
|
+
// ❌ int* p = (int*)0x1234;
|
|
214
|
+
// ✅ Use stdint.h and explicit casts through uintptr_t
|
|
215
|
+
uintptr_t addr = 0x1234;
|
|
216
|
+
int* p = (int*)addr;
|
|
217
|
+
|
|
218
|
+
// Rule 12.3: Avoid side effects in conditions
|
|
219
|
+
// ❌ if (x++ > 0) { }
|
|
220
|
+
// ✅
|
|
221
|
+
if (x > 0) {
|
|
222
|
+
x++;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// Rule 14.3: Use braces for all control statements
|
|
226
|
+
if (condition) {
|
|
227
|
+
do_something();
|
|
228
|
+
} // ✅ Even single statements
|
|
229
|
+
|
|
230
|
+
// Rule 15.5: Single exit point per function
|
|
231
|
+
int function(int input) {
|
|
232
|
+
int result;
|
|
233
|
+
if (input > 0) {
|
|
234
|
+
result = input * 2;
|
|
235
|
+
} else {
|
|
236
|
+
result = 0;
|
|
237
|
+
}
|
|
238
|
+
return result; // ✅ Single return
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// Rule 17.7: Return value must be used
|
|
242
|
+
// ❌ malloc(100);
|
|
243
|
+
void* ptr = malloc(100); // ✅ Assigned
|
|
244
|
+
(void)printf("test"); // ✅ Cast to void if intentionally ignored
|
|
245
|
+
|
|
246
|
+
// Rule 20.7: Macro parameters in parentheses
|
|
247
|
+
#define SQUARE(x) ((x) * (x)) // ✅ Parentheses around x
|
|
248
|
+
|
|
249
|
+
// Tools: PC-lint, Polyspace, Parasoft C/C++test, cppcheck --addon=misra
|
|
250
|
+
severity: HIGH
|
|
251
|
+
docs_url: https://misra.org.uk/
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# C Memory Patterns (Feb 2026)
|
|
3
|
+
# Version: Modern C with Sanitizers
|
|
4
|
+
# =============================================================================
|
|
5
|
+
|
|
6
|
+
metadata:
|
|
7
|
+
skill: c
|
|
8
|
+
domain: memory
|
|
9
|
+
version: "C23"
|
|
10
|
+
updated: "2026-02-05"
|
|
11
|
+
patterns_count: 4
|
|
12
|
+
|
|
13
|
+
patterns:
|
|
14
|
+
- id: c101
|
|
15
|
+
name: Safe malloc Pattern
|
|
16
|
+
category: memory
|
|
17
|
+
version: "C"
|
|
18
|
+
description: |
|
|
19
|
+
Defensive malloc with NULL checking.
|
|
20
|
+
Avoid memory leaks and crashes.
|
|
21
|
+
text: malloc calloc realloc free memory allocation
|
|
22
|
+
example: |
|
|
23
|
+
#include <stdlib.h>
|
|
24
|
+
#include <string.h>
|
|
25
|
+
|
|
26
|
+
// ✅ Safe allocation pattern
|
|
27
|
+
void* safe_malloc(size_t size) {
|
|
28
|
+
if (size == 0) return NULL;
|
|
29
|
+
|
|
30
|
+
void* ptr = malloc(size);
|
|
31
|
+
if (!ptr) {
|
|
32
|
+
// Handle allocation failure
|
|
33
|
+
perror("malloc failed");
|
|
34
|
+
exit(EXIT_FAILURE); // Or return NULL for graceful handling
|
|
35
|
+
}
|
|
36
|
+
return ptr;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// ✅ calloc for zero-initialized memory
|
|
40
|
+
int* array = calloc(100, sizeof(int)); // All zeros
|
|
41
|
+
|
|
42
|
+
// ✅ Safe realloc pattern (avoid memory leak)
|
|
43
|
+
int* resize_array(int* arr, size_t new_count) {
|
|
44
|
+
int* new_arr = realloc(arr, new_count * sizeof(int));
|
|
45
|
+
if (!new_arr && new_count > 0) {
|
|
46
|
+
// Original arr is still valid if realloc fails!
|
|
47
|
+
return arr; // Keep original on failure
|
|
48
|
+
}
|
|
49
|
+
return new_arr;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// ✅ Cleanup pattern with goto
|
|
53
|
+
int process_data(void) {
|
|
54
|
+
int result = -1;
|
|
55
|
+
char* buf1 = malloc(1024);
|
|
56
|
+
char* buf2 = malloc(2048);
|
|
57
|
+
|
|
58
|
+
if (!buf1 || !buf2) goto cleanup;
|
|
59
|
+
|
|
60
|
+
// Do work...
|
|
61
|
+
result = 0;
|
|
62
|
+
|
|
63
|
+
cleanup:
|
|
64
|
+
free(buf2); // free(NULL) is safe
|
|
65
|
+
free(buf1);
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// ✅ Set pointer to NULL after free
|
|
70
|
+
free(ptr);
|
|
71
|
+
ptr = NULL; // Avoid dangling pointer
|
|
72
|
+
severity: HIGH
|
|
73
|
+
docs_url: https://en.cppreference.com/w/c/memory/malloc
|
|
74
|
+
|
|
75
|
+
- id: c102
|
|
76
|
+
name: Address Sanitizer
|
|
77
|
+
category: debugging
|
|
78
|
+
version: "Modern"
|
|
79
|
+
description: |
|
|
80
|
+
Compile-time instrumentation for memory bugs.
|
|
81
|
+
Detect buffer overflows, use-after-free.
|
|
82
|
+
text: asan sanitizer buffer overflow use-after-free
|
|
83
|
+
example: |
|
|
84
|
+
// ✅ Compile with AddressSanitizer
|
|
85
|
+
// gcc -fsanitize=address -fno-omit-frame-pointer -g main.c
|
|
86
|
+
// clang -fsanitize=address -fno-omit-frame-pointer -g main.c
|
|
87
|
+
|
|
88
|
+
// ✅ Common bugs ASan detects:
|
|
89
|
+
|
|
90
|
+
// 1. Buffer overflow
|
|
91
|
+
void overflow_example(void) {
|
|
92
|
+
int arr[10];
|
|
93
|
+
arr[10] = 42; // ASan: stack-buffer-overflow
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// 2. Heap buffer overflow
|
|
97
|
+
void heap_overflow(void) {
|
|
98
|
+
int* p = malloc(10 * sizeof(int));
|
|
99
|
+
p[10] = 42; // ASan: heap-buffer-overflow
|
|
100
|
+
free(p);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// 3. Use after free
|
|
104
|
+
void use_after_free(void) {
|
|
105
|
+
int* p = malloc(sizeof(int));
|
|
106
|
+
free(p);
|
|
107
|
+
*p = 42; // ASan: heap-use-after-free
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// 4. Double free
|
|
111
|
+
void double_free(void) {
|
|
112
|
+
int* p = malloc(sizeof(int));
|
|
113
|
+
free(p);
|
|
114
|
+
free(p); // ASan: double-free
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// 5. Memory leak (with -fsanitize=leak)
|
|
118
|
+
void leak(void) {
|
|
119
|
+
int* p = malloc(sizeof(int));
|
|
120
|
+
// No free - ASan: memory leak
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// ✅ CMake configuration
|
|
124
|
+
// set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fsanitize=address")
|
|
125
|
+
|
|
126
|
+
// ✅ Runtime options
|
|
127
|
+
// ASAN_OPTIONS=detect_leaks=1:halt_on_error=0 ./program
|
|
128
|
+
severity: HIGH
|
|
129
|
+
docs_url: https://clang.llvm.org/docs/AddressSanitizer.html
|
|
130
|
+
|
|
131
|
+
- id: c103
|
|
132
|
+
name: Valgrind Patterns
|
|
133
|
+
category: debugging
|
|
134
|
+
version: "Modern"
|
|
135
|
+
description: |
|
|
136
|
+
Runtime memory analysis with Valgrind.
|
|
137
|
+
Detect leaks, uninitialized reads.
|
|
138
|
+
text: valgrind memcheck leak detection memory debugging
|
|
139
|
+
example: |
|
|
140
|
+
// ✅ Run with Valgrind
|
|
141
|
+
// valgrind --leak-check=full --show-leak-kinds=all ./program
|
|
142
|
+
|
|
143
|
+
// ✅ Valgrind client requests (optional debugging)
|
|
144
|
+
#include <valgrind/memcheck.h>
|
|
145
|
+
|
|
146
|
+
void custom_allocator(void) {
|
|
147
|
+
void* pool = malloc(1024);
|
|
148
|
+
|
|
149
|
+
// Tell Valgrind this memory is now "allocated" to user
|
|
150
|
+
VALGRIND_MALLOCLIKE_BLOCK(pool, 1024, 0, 0);
|
|
151
|
+
|
|
152
|
+
// Mark as uninitialized
|
|
153
|
+
VALGRIND_MAKE_MEM_UNDEFINED(pool, 1024);
|
|
154
|
+
|
|
155
|
+
// When freed
|
|
156
|
+
VALGRIND_FREELIKE_BLOCK(pool, 0);
|
|
157
|
+
free(pool);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// ✅ Suppress false positives
|
|
161
|
+
// Create a suppression file: valgrind --gen-suppressions=all
|
|
162
|
+
|
|
163
|
+
// ✅ Common Valgrind output interpretation:
|
|
164
|
+
// "definitely lost" - Memory you allocated but never freed
|
|
165
|
+
// "indirectly lost" - Lost because parent pointer was lost
|
|
166
|
+
// "possibly lost" - Pointer arithmetic hid the pointer
|
|
167
|
+
// "still reachable" - Not freed but still accessible at exit
|
|
168
|
+
|
|
169
|
+
// ✅ Uninitialized value detection
|
|
170
|
+
void uninit_example(void) {
|
|
171
|
+
int x;
|
|
172
|
+
if (x == 0) { // Valgrind: Conditional jump depends on uninit
|
|
173
|
+
printf("zero\n");
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// ✅ Useful flags
|
|
178
|
+
// --track-origins=yes : Show where uninit values came from
|
|
179
|
+
// --num-callers=20 : More stack frames
|
|
180
|
+
// --suppressions=file : Ignore known issues
|
|
181
|
+
severity: MEDIUM
|
|
182
|
+
docs_url: https://valgrind.org/docs/manual/mc-manual.html
|
|
183
|
+
|
|
184
|
+
- id: c104
|
|
185
|
+
name: Arena Allocator
|
|
186
|
+
category: memory
|
|
187
|
+
version: "Modern"
|
|
188
|
+
description: |
|
|
189
|
+
Bulk allocation and deallocation pattern.
|
|
190
|
+
Fast allocations, single free.
|
|
191
|
+
text: arena allocator memory pool bump allocator
|
|
192
|
+
example: |
|
|
193
|
+
#include <stdlib.h>
|
|
194
|
+
#include <stdint.h>
|
|
195
|
+
#include <stdalign.h>
|
|
196
|
+
|
|
197
|
+
// ✅ Simple arena allocator
|
|
198
|
+
typedef struct {
|
|
199
|
+
uint8_t* base;
|
|
200
|
+
size_t size;
|
|
201
|
+
size_t offset;
|
|
202
|
+
} Arena;
|
|
203
|
+
|
|
204
|
+
Arena arena_create(size_t size) {
|
|
205
|
+
return (Arena){
|
|
206
|
+
.base = malloc(size),
|
|
207
|
+
.size = size,
|
|
208
|
+
.offset = 0
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
void* arena_alloc(Arena* a, size_t size, size_t align) {
|
|
213
|
+
// Align the offset
|
|
214
|
+
size_t aligned = (a->offset + align - 1) & ~(align - 1);
|
|
215
|
+
|
|
216
|
+
if (aligned + size > a->size) {
|
|
217
|
+
return NULL; // Out of memory
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
void* ptr = a->base + aligned;
|
|
221
|
+
a->offset = aligned + size;
|
|
222
|
+
return ptr;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
void arena_reset(Arena* a) {
|
|
226
|
+
a->offset = 0; // "Free" all allocations instantly
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
void arena_destroy(Arena* a) {
|
|
230
|
+
free(a->base);
|
|
231
|
+
a->base = NULL;
|
|
232
|
+
a->size = 0;
|
|
233
|
+
a->offset = 0;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// ✅ Usage
|
|
237
|
+
void process_frame(void) {
|
|
238
|
+
Arena scratch = arena_create(1024 * 1024); // 1MB
|
|
239
|
+
|
|
240
|
+
// Allocate freely during frame
|
|
241
|
+
int* data = arena_alloc(&scratch, 1000 * sizeof(int), alignof(int));
|
|
242
|
+
char* str = arena_alloc(&scratch, 256, 1);
|
|
243
|
+
|
|
244
|
+
// Do work...
|
|
245
|
+
|
|
246
|
+
// Free everything at once
|
|
247
|
+
arena_reset(&scratch);
|
|
248
|
+
|
|
249
|
+
// Or destroy when done
|
|
250
|
+
arena_destroy(&scratch);
|
|
251
|
+
}
|
|
252
|
+
severity: MEDIUM
|
|
253
|
+
docs_url: https://en.wikipedia.org/wiki/Region-based_memory_management
|