exonous 0.0.0-stage → 2.10.4
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/README.md +100 -2
- package/assets/THIRD-PARTY-NOTICES.md +29 -0
- package/assets/adapters/opencode/exonous.js +54 -0
- package/assets/agents/exo-backend.md +22 -0
- package/assets/agents/exo-cto.md +22 -0
- package/assets/agents/exo-data-ai.md +22 -0
- package/assets/agents/exo-designer.md +22 -0
- package/assets/agents/exo-devops.md +22 -0
- package/assets/agents/exo-frontend.md +22 -0
- package/assets/agents/exo-infra.md +22 -0
- package/assets/agents/exo-mobile.md +22 -0
- package/assets/agents/exo-pm.md +22 -0
- package/assets/agents/exo-qa.md +22 -0
- package/assets/agents/exo-researcher.md +22 -0
- package/assets/agents/exo-security.md +22 -0
- package/assets/agents/roster.json +209 -0
- package/assets/agents/taxis.js +189 -0
- package/assets/editors/cursor/frontend-skills.mdc +27 -0
- package/assets/editors/hooks/cursor/hooks.json +11 -0
- package/assets/machine/PR-TEMPLATE.md +21 -0
- package/assets/machine/hooks/anamnesis.cjs +61 -0
- package/assets/machine/hooks/ethos.cjs +48 -0
- package/assets/machine/hooks/kairos.cjs +46 -0
- package/assets/machine/hooks/lib/cli-options.cjs +133 -0
- package/assets/machine/hooks/lib/memory.cjs +488 -0
- package/assets/machine/hooks/lib/metron.cjs +52 -0
- package/assets/machine/hooks/lib/paths.cjs +99 -0
- package/assets/machine/hooks/lib/payload.cjs +81 -0
- package/assets/machine/hooks/lib/pr-template-validate.cjs +103 -0
- package/assets/machine/hooks/lib/release.cjs +58 -0
- package/assets/machine/hooks/lib/repo.cjs +138 -0
- package/assets/machine/hooks/lib/sanitize.cjs +37 -0
- package/assets/machine/hooks/lib/selfupdate.cjs +354 -0
- package/assets/machine/hooks/lib/shell.cjs +722 -0
- package/assets/machine/hooks/lib/template.cjs +70 -0
- package/assets/machine/hooks/lib/token.cjs +110 -0
- package/assets/machine/hooks/lib/validate-pr-body.cjs +21 -0
- package/assets/machine/hooks/pyle.cjs +302 -0
- package/assets/rules/nomos.md +59 -0
- package/assets/rules/praxis.md +38 -0
- package/assets/skills/code-review/SKILL.md +124 -0
- package/assets/skills/commit-changes/SKILL.md +49 -0
- package/assets/skills/deliver/SKILL.md +114 -0
- package/assets/skills/deliver/references/parallel.md +37 -0
- package/assets/skills/doc/SKILL.md +140 -0
- package/assets/skills/doc/doc.mjs +277 -0
- package/assets/skills/issue-board/SKILL.md +84 -0
- package/assets/skills/issue-board/board.mjs +389 -0
- package/assets/skills/issue-board/config.example.json +9 -0
- package/assets/skills/issue-board/render.py +189 -0
- package/assets/skills/make-pr/SKILL.md +24 -0
- package/assets/skills/native-ui/SKILL.md +67 -0
- package/assets/skills/native-ui/reference/apple.md +180 -0
- package/assets/skills/native-ui/reference/mobile-feel.md +221 -0
- package/assets/skills/native-ui/reference/swift.md +289 -0
- package/assets/skills/project-memory/SKILL.md +59 -0
- package/assets/skills/project-memory/config.example.json +4 -0
- package/assets/skills/project-memory/project-memory.mjs +478 -0
- package/assets/skills/security-review/SKILL.md +102 -0
- package/assets/skills/session-handoff/SKILL.md +23 -0
- package/assets/skills/session-handoff/config.example.json +3 -0
- package/assets/skills/ui-design/SKILL.md +75 -0
- package/assets/skills/ui-design/reference/adapt.md +151 -0
- package/assets/skills/ui-design/reference/adapt.native.md +35 -0
- package/assets/skills/ui-design/reference/android.md +50 -0
- package/assets/skills/ui-design/reference/animate.md +87 -0
- package/assets/skills/ui-design/reference/audit.md +76 -0
- package/assets/skills/ui-design/reference/audit.native.md +126 -0
- package/assets/skills/ui-design/reference/bolder.md +33 -0
- package/assets/skills/ui-design/reference/clarify.md +84 -0
- package/assets/skills/ui-design/reference/colorize.md +86 -0
- package/assets/skills/ui-design/reference/craft-floor.md +25 -0
- package/assets/skills/ui-design/reference/critique.md +345 -0
- package/assets/skills/ui-design/reference/degraded/asset-producer.md +35 -0
- package/assets/skills/ui-design/reference/degraded/documenter.md +23 -0
- package/assets/skills/ui-design/reference/degraded/finish-reviewer.md +43 -0
- package/assets/skills/ui-design/reference/degraded/manual-edit-applier.md +56 -0
- package/assets/skills/ui-design/reference/delight.md +63 -0
- package/assets/skills/ui-design/reference/distill.md +98 -0
- package/assets/skills/ui-design/reference/doctor.md +49 -0
- package/assets/skills/ui-design/reference/document.md +273 -0
- package/assets/skills/ui-design/reference/extract.md +52 -0
- package/assets/skills/ui-design/reference/harden.md +122 -0
- package/assets/skills/ui-design/reference/hooks.md +114 -0
- package/assets/skills/ui-design/reference/init.md +47 -0
- package/assets/skills/ui-design/reference/ios.md +55 -0
- package/assets/skills/ui-design/reference/layout.md +81 -0
- package/assets/skills/ui-design/reference/live-setup.md +75 -0
- package/assets/skills/ui-design/reference/live.md +326 -0
- package/assets/skills/ui-design/reference/new-work.md +350 -0
- package/assets/skills/ui-design/reference/onboard.md +85 -0
- package/assets/skills/ui-design/reference/operate.md +29 -0
- package/assets/skills/ui-design/reference/optimize.md +101 -0
- package/assets/skills/ui-design/reference/overdrive.md +83 -0
- package/assets/skills/ui-design/reference/polish.md +77 -0
- package/assets/skills/ui-design/reference/quieter.md +95 -0
- package/assets/skills/ui-design/reference/routing.md +37 -0
- package/assets/skills/ui-design/reference/shape.md +43 -0
- package/assets/skills/ui-design/reference/styles/brutalist.md +45 -0
- package/assets/skills/ui-design/reference/styles/design-md.md +70 -0
- package/assets/skills/ui-design/reference/styles/direction.md +95 -0
- package/assets/skills/ui-design/reference/styles/full-output.md +42 -0
- package/assets/skills/ui-design/reference/styles/minimalist.md +64 -0
- package/assets/skills/ui-design/reference/styles/premium.md +65 -0
- package/assets/skills/ui-design/reference/styles/redesign.md +59 -0
- package/assets/skills/ui-design/reference/typeset.md +73 -0
- package/assets/skills/ui-design/reference/visualize.md +156 -0
- package/assets/skills/ui-design/scripts/ENGINE-LICENSE +191 -0
- package/assets/skills/ui-design/scripts/VERSION +1 -0
- package/assets/skills/ui-design/scripts/bin/darwin-arm64/impeccable +0 -0
- package/assets/skills/ui-design/scripts/command-metadata.json +94 -0
- package/assets/skills/ui-design/scripts/data/font-index-failures.json +121 -0
- package/assets/skills/ui-design/scripts/data/font-index.json +1 -0
- package/assets/skills/ui-design/scripts/impeccable +206 -0
- package/assets/skills/ui-design/scripts/impeccable.cmd +214 -0
- package/assets/skills/ui-design/scripts/live-browser-dom.js +167 -0
- package/assets/skills/ui-design/scripts/live-browser-ignores.js +242 -0
- package/assets/skills/ui-design/scripts/live-browser-session.js +144 -0
- package/assets/skills/ui-design/scripts/live-browser.js +12990 -0
- package/assets/skills/ui-design/scripts/modern-screenshot.umd.js +14 -0
- package/assets/skills/ui-design/scripts/ui-design +6 -0
- package/assets/skills/ui-design/scripts/ui-design.cmd +3 -0
- package/assets/skills/ui-design/scripts/ui-design.mjs +124 -0
- package/assets/skills/ui-mockup/SKILL.md +68 -0
- package/assets/skills/ui-mockup/reference/brandkit.md +101 -0
- package/assets/skills/ui-mockup/reference/image-to-code.md +83 -0
- package/assets/skills/ui-mockup/reference/mobile-comps.md +94 -0
- package/assets/skills/ui-mockup/reference/web-comps.md +83 -0
- package/assets/skills/ui-motion/SKILL.md +112 -0
- package/assets/skills/ui-motion/reference/expo.md +224 -0
- package/assets/skills/ui-motion/reference/opportunities.md +81 -0
- package/assets/skills/ui-motion/reference/prototype.md +238 -0
- package/assets/skills/ui-motion/reference/review.md +163 -0
- package/assets/skills/ui-motion/reference/toasts.md +144 -0
- package/assets/skills/ui-motion/reference/ui-libraries.md +71 -0
- package/assets/skills/ui-motion/reference/vocabulary.md +130 -0
- package/assets/skills/ui-motion/reference/web.md +294 -0
- package/assets/skills/ui-patterns/SKILL.md +105 -0
- package/assets/skills/ui-patterns/references/stacks/html-tailwind.md +40 -0
- package/assets/skills/ui-patterns/references/stacks/nextjs.md +52 -0
- package/assets/skills/ui-patterns/references/stacks/nuxt.md +100 -0
- package/assets/skills/ui-patterns/references/stacks/react-native.md +48 -0
- package/assets/skills/ui-patterns/references/stacks/react.md +49 -0
- package/assets/skills/ui-patterns/references/stacks/shadcn.md +57 -0
- package/assets/skills/ui-patterns/references/stacks/vue.md +37 -0
- package/assets/techne/.claude-plugin/marketplace.json +31 -0
- package/assets/techne/.claude-plugin/plugin.json +24 -0
- package/assets/techne/.mcp.json +8 -0
- package/assets/techne/commands/build-fix.md +48 -0
- package/assets/techne/commands/refactor-clean.md +46 -0
- package/assets/techne/commands/test-coverage.md +42 -0
- package/assets/techne/hooks/hooks.json +49 -0
- package/assets/techne/rules/angular/coding-style.md +49 -0
- package/assets/techne/rules/angular/hooks.md +23 -0
- package/assets/techne/rules/angular/patterns.md +48 -0
- package/assets/techne/rules/angular/security.md +26 -0
- package/assets/techne/rules/angular/testing.md +46 -0
- package/assets/techne/rules/arkts/coding-style.md +63 -0
- package/assets/techne/rules/arkts/hooks.md +38 -0
- package/assets/techne/rules/arkts/patterns.md +42 -0
- package/assets/techne/rules/arkts/security.md +35 -0
- package/assets/techne/rules/arkts/testing.md +39 -0
- package/assets/techne/rules/common/agents.md +6 -0
- package/assets/techne/rules/common/code-review.md +15 -0
- package/assets/techne/rules/common/coding-style.md +13 -0
- package/assets/techne/rules/common/development-workflow.md +5 -0
- package/assets/techne/rules/common/git-workflow.md +30 -0
- package/assets/techne/rules/common/hooks.md +7 -0
- package/assets/techne/rules/common/patterns.md +3 -0
- package/assets/techne/rules/common/performance.md +3 -0
- package/assets/techne/rules/common/security.md +5 -0
- package/assets/techne/rules/common/testing.md +3 -0
- package/assets/techne/rules/cpp/coding-style.md +31 -0
- package/assets/techne/rules/cpp/hooks.md +26 -0
- package/assets/techne/rules/cpp/patterns.md +31 -0
- package/assets/techne/rules/cpp/security.md +37 -0
- package/assets/techne/rules/cpp/testing.md +31 -0
- package/assets/techne/rules/csharp/coding-style.md +30 -0
- package/assets/techne/rules/csharp/hooks.md +24 -0
- package/assets/techne/rules/csharp/patterns.md +28 -0
- package/assets/techne/rules/csharp/security.md +32 -0
- package/assets/techne/rules/csharp/testing.md +27 -0
- package/assets/techne/rules/dart/coding-style.md +47 -0
- package/assets/techne/rules/dart/hooks.md +26 -0
- package/assets/techne/rules/dart/patterns.md +38 -0
- package/assets/techne/rules/dart/security.md +44 -0
- package/assets/techne/rules/dart/testing.md +39 -0
- package/assets/techne/rules/fsharp/coding-style.md +34 -0
- package/assets/techne/rules/fsharp/hooks.md +25 -0
- package/assets/techne/rules/fsharp/patterns.md +43 -0
- package/assets/techne/rules/fsharp/security.md +32 -0
- package/assets/techne/rules/fsharp/testing.md +27 -0
- package/assets/techne/rules/golang/coding-style.md +30 -0
- package/assets/techne/rules/golang/hooks.md +17 -0
- package/assets/techne/rules/golang/patterns.md +43 -0
- package/assets/techne/rules/golang/security.md +33 -0
- package/assets/techne/rules/golang/testing.md +20 -0
- package/assets/techne/rules/java/coding-style.md +51 -0
- package/assets/techne/rules/java/hooks.md +18 -0
- package/assets/techne/rules/java/patterns.md +55 -0
- package/assets/techne/rules/java/security.md +33 -0
- package/assets/techne/rules/java/testing.md +33 -0
- package/assets/techne/rules/kotlin/coding-style.md +50 -0
- package/assets/techne/rules/kotlin/hooks.md +17 -0
- package/assets/techne/rules/kotlin/patterns.md +44 -0
- package/assets/techne/rules/kotlin/security.md +34 -0
- package/assets/techne/rules/kotlin/testing.md +38 -0
- package/assets/techne/rules/nuxt/coding-style.md +20 -0
- package/assets/techne/rules/nuxt/hooks.md +16 -0
- package/assets/techne/rules/nuxt/patterns.md +46 -0
- package/assets/techne/rules/nuxt/security.md +19 -0
- package/assets/techne/rules/nuxt/testing.md +15 -0
- package/assets/techne/rules/perl/coding-style.md +33 -0
- package/assets/techne/rules/perl/hooks.md +22 -0
- package/assets/techne/rules/perl/patterns.md +43 -0
- package/assets/techne/rules/perl/security.md +39 -0
- package/assets/techne/rules/perl/testing.md +42 -0
- package/assets/techne/rules/php/coding-style.md +30 -0
- package/assets/techne/rules/php/hooks.md +24 -0
- package/assets/techne/rules/php/patterns.md +26 -0
- package/assets/techne/rules/php/security.md +27 -0
- package/assets/techne/rules/php/testing.md +28 -0
- package/assets/techne/rules/python/coding-style.md +38 -0
- package/assets/techne/rules/python/fastapi.md +57 -0
- package/assets/techne/rules/python/hooks.md +19 -0
- package/assets/techne/rules/python/patterns.md +37 -0
- package/assets/techne/rules/python/security.md +26 -0
- package/assets/techne/rules/python/testing.md +32 -0
- package/assets/techne/rules/react/coding-style.md +24 -0
- package/assets/techne/rules/react/hooks.md +62 -0
- package/assets/techne/rules/react/patterns.md +48 -0
- package/assets/techne/rules/react/security.md +45 -0
- package/assets/techne/rules/react/testing.md +42 -0
- package/assets/techne/rules/react-native/accessibility.md +14 -0
- package/assets/techne/rules/react-native/coding-style.md +16 -0
- package/assets/techne/rules/react-native/hooks.md +16 -0
- package/assets/techne/rules/react-native/patterns.md +18 -0
- package/assets/techne/rules/react-native/performance.md +14 -0
- package/assets/techne/rules/react-native/production-readiness.md +16 -0
- package/assets/techne/rules/react-native/security.md +16 -0
- package/assets/techne/rules/react-native/testing.md +14 -0
- package/assets/techne/rules/ruby/coding-style.md +40 -0
- package/assets/techne/rules/ruby/hooks.md +33 -0
- package/assets/techne/rules/ruby/patterns.md +33 -0
- package/assets/techne/rules/ruby/security.md +39 -0
- package/assets/techne/rules/ruby/testing.md +35 -0
- package/assets/techne/rules/rust/coding-style.md +41 -0
- package/assets/techne/rules/rust/hooks.md +16 -0
- package/assets/techne/rules/rust/patterns.md +42 -0
- package/assets/techne/rules/rust/security.md +33 -0
- package/assets/techne/rules/rust/testing.md +30 -0
- package/assets/techne/rules/swift/coding-style.md +30 -0
- package/assets/techne/rules/swift/hooks.md +20 -0
- package/assets/techne/rules/swift/patterns.md +30 -0
- package/assets/techne/rules/swift/security.md +22 -0
- package/assets/techne/rules/swift/testing.md +28 -0
- package/assets/techne/rules/typescript/coding-style.md +38 -0
- package/assets/techne/rules/typescript/hooks.md +14 -0
- package/assets/techne/rules/typescript/patterns.md +12 -0
- package/assets/techne/rules/typescript/security.md +14 -0
- package/assets/techne/rules/typescript/testing.md +12 -0
- package/assets/techne/rules/vue/coding-style.md +19 -0
- package/assets/techne/rules/vue/hooks.md +13 -0
- package/assets/techne/rules/vue/patterns.md +29 -0
- package/assets/techne/rules/vue/security.md +11 -0
- package/assets/techne/rules/vue/testing.md +11 -0
- package/assets/techne/rules/web/coding-style.md +25 -0
- package/assets/techne/rules/web/design-quality.md +21 -0
- package/assets/techne/rules/web/hooks.md +39 -0
- package/assets/techne/rules/web/patterns.md +23 -0
- package/assets/techne/rules/web/performance.md +25 -0
- package/assets/techne/rules/web/security.md +23 -0
- package/assets/techne/rules/web/testing.md +21 -0
- package/assets/techne/scripts/hooks/config-guard.js +50 -0
- package/assets/techne/scripts/hooks/edit-tracker.js +26 -0
- package/assets/techne/scripts/hooks/lib/shell.js +204 -0
- package/assets/techne/scripts/hooks/no-verify-guard.js +205 -0
- package/assets/techne/scripts/hooks/run.js +92 -0
- package/assets/techne/scripts/hooks/stop-checks.js +136 -0
- package/assets/techne/skills/angular/SKILL.md +34 -0
- package/assets/techne/skills/angular/reference/components-and-templates.md +63 -0
- package/assets/techne/skills/angular/reference/dependency-injection.md +44 -0
- package/assets/techne/skills/angular/reference/forms.md +97 -0
- package/assets/techne/skills/angular/reference/routing.md +50 -0
- package/assets/techne/skills/angular/reference/signals-and-state.md +59 -0
- package/assets/techne/skills/angular/reference/styling-motion-a11y.md +54 -0
- package/assets/techne/skills/angular/reference/testing.md +52 -0
- package/assets/techne/skills/angular/reference/tooling.md +31 -0
- package/assets/techne/skills/cpp/SKILL.md +27 -0
- package/assets/techne/skills/cpp/reference/coding-standards.md +160 -0
- package/assets/techne/skills/databases/SKILL.md +35 -0
- package/assets/techne/skills/databases/reference/clickhouse.md +102 -0
- package/assets/techne/skills/databases/reference/migrations.md +94 -0
- package/assets/techne/skills/databases/reference/mysql.md +101 -0
- package/assets/techne/skills/databases/reference/postgres.md +72 -0
- package/assets/techne/skills/databases/reference/prisma.md +105 -0
- package/assets/techne/skills/databases/reference/redis.md +108 -0
- package/assets/techne/skills/delivery/SKILL.md +35 -0
- package/assets/techne/skills/delivery/reference/deployment-patterns.md +58 -0
- package/assets/techne/skills/delivery/reference/docker-patterns.md +77 -0
- package/assets/techne/skills/delivery/reference/git-workflow.md +64 -0
- package/assets/techne/skills/delivery/reference/github-ops.md +67 -0
- package/assets/techne/skills/delivery/reference/jira-integration.md +53 -0
- package/assets/techne/skills/delivery/reference/kubernetes-patterns.md +67 -0
- package/assets/techne/skills/dotnet/SKILL.md +27 -0
- package/assets/techne/skills/dotnet/reference/dotnet-core.md +131 -0
- package/assets/techne/skills/flutter/SKILL.md +29 -0
- package/assets/techne/skills/flutter/reference/code-review.md +76 -0
- package/assets/techne/skills/flutter/reference/patterns.md +201 -0
- package/assets/techne/skills/go/SKILL.md +28 -0
- package/assets/techne/skills/go/reference/patterns.md +87 -0
- package/assets/techne/skills/go/reference/testing.md +142 -0
- package/assets/techne/skills/java/SKILL.md +29 -0
- package/assets/techne/skills/java/reference/java-standards.md +117 -0
- package/assets/techne/skills/java/reference/springboot.md +108 -0
- package/assets/techne/skills/kotlin/SKILL.md +35 -0
- package/assets/techne/skills/kotlin/reference/android-clean-architecture.md +115 -0
- package/assets/techne/skills/kotlin/reference/compose-multiplatform-patterns.md +113 -0
- package/assets/techne/skills/kotlin/reference/kotlin-coroutines-flows.md +93 -0
- package/assets/techne/skills/kotlin/reference/kotlin-patterns.md +74 -0
- package/assets/techne/skills/kotlin/reference/kotlin-testing.md +115 -0
- package/assets/techne/skills/ml/SKILL.md +34 -0
- package/assets/techne/skills/ml/reference/ai-regression-testing.md +99 -0
- package/assets/techne/skills/ml/reference/cost-aware-llm-pipeline.md +133 -0
- package/assets/techne/skills/ml/reference/eval-harness.md +94 -0
- package/assets/techne/skills/ml/reference/mle-workflow.md +177 -0
- package/assets/techne/skills/ml/reference/prompt-optimizer.md +107 -0
- package/assets/techne/skills/ml/reference/pytorch-patterns.md +164 -0
- package/assets/techne/skills/php/SKILL.md +27 -0
- package/assets/techne/skills/php/reference/laravel.md +142 -0
- package/assets/techne/skills/python/SKILL.md +33 -0
- package/assets/techne/skills/python/reference/django.md +104 -0
- package/assets/techne/skills/python/reference/fastapi.md +118 -0
- package/assets/techne/skills/python/reference/python-core.md +88 -0
- package/assets/techne/skills/python/reference/python-testing.md +105 -0
- package/assets/techne/skills/quality/SKILL.md +34 -0
- package/assets/techne/skills/quality/reference/benchmark.md +55 -0
- package/assets/techne/skills/quality/reference/browser-qa.md +60 -0
- package/assets/techne/skills/quality/reference/coding-standards.md +88 -0
- package/assets/techne/skills/quality/reference/e2e-testing.md +99 -0
- package/assets/techne/skills/quality/reference/tdd-workflow.md +89 -0
- package/assets/techne/skills/quality/reference/verification-loop.md +80 -0
- package/assets/techne/skills/react/SKILL.md +30 -0
- package/assets/techne/skills/react/reference/nextjs-turbopack.md +42 -0
- package/assets/techne/skills/react/reference/react-patterns.md +139 -0
- package/assets/techne/skills/react/reference/react-performance.md +101 -0
- package/assets/techne/skills/react/reference/react-testing.md +139 -0
- package/assets/techne/skills/react-native/SKILL.md +28 -0
- package/assets/techne/skills/react-native/reference/expo-patterns.md +196 -0
- package/assets/techne/skills/research/SKILL.md +35 -0
- package/assets/techne/skills/research/reference/architecture-decision-records.md +65 -0
- package/assets/techne/skills/research/reference/codebase-onboarding.md +44 -0
- package/assets/techne/skills/research/reference/deep-research.md +50 -0
- package/assets/techne/skills/research/reference/iterative-retrieval.md +62 -0
- package/assets/techne/skills/research/reference/product-lens.md +38 -0
- package/assets/techne/skills/research/reference/search-first.md +50 -0
- package/assets/techne/skills/rust/SKILL.md +28 -0
- package/assets/techne/skills/rust/reference/patterns.md +108 -0
- package/assets/techne/skills/rust/reference/testing.md +142 -0
- package/assets/techne/skills/services/SKILL.md +32 -0
- package/assets/techne/skills/services/reference/api-contracts.md +139 -0
- package/assets/techne/skills/services/reference/backend-layers.md +95 -0
- package/assets/techne/skills/services/reference/errors-and-resilience.md +146 -0
- package/assets/techne/skills/services/reference/hexagonal-boundaries.md +93 -0
- package/assets/techne/skills/services/reference/mcp-servers.md +50 -0
- package/assets/techne/skills/services/reference/nestjs.md +96 -0
- package/assets/techne/skills/swift/SKILL.md +29 -0
- package/assets/techne/skills/swift/reference/concurrency.md +83 -0
- package/assets/techne/skills/swift/reference/swiftui.md +139 -0
- package/assets/techne/skills/vue/SKILL.md +29 -0
- package/assets/techne/skills/vue/reference/nuxt4-patterns.md +90 -0
- package/assets/techne/skills/vue/reference/ui-to-vue.md +90 -0
- package/assets/techne/skills/vue/reference/vue-patterns.md +151 -0
- package/assets/techne/skills/web/SKILL.md +30 -0
- package/assets/techne/skills/web/reference/bun-runtime.md +55 -0
- package/assets/techne/skills/web/reference/frontend-patterns.md +54 -0
- package/assets/techne/skills/web/reference/seo.md +77 -0
- package/assets/techne/skills/web/reference/vite-patterns.md +96 -0
- package/bin/native.cjs +30 -0
- package/native/aarch64-apple-darwin/exonous +0 -0
- package/native/aarch64-unknown-linux-gnu/exonous +0 -0
- package/native/x86_64-apple-darwin/exonous +0 -0
- package/native/x86_64-pc-windows-msvc/exonous.exe +0 -0
- package/native/x86_64-unknown-linux-gnu/exonous +0 -0
- package/package.json +1 -6
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.component.ts"
|
|
4
|
+
- "**/*.component.html"
|
|
5
|
+
- "**/*.service.ts"
|
|
6
|
+
- "**/*.interceptor.ts"
|
|
7
|
+
---
|
|
8
|
+
> Builds on the shared rules in `../common/security.md`.
|
|
9
|
+
|
|
10
|
+
# Angular security
|
|
11
|
+
|
|
12
|
+
Angular sanitizes bound values by default — do not call `bypassSecurityTrust*` on user-controlled strings without review.
|
|
13
|
+
|
|
14
|
+
Prefer `innerText` or sanitizing pipes over `[innerHTML]` for untrusted content.
|
|
15
|
+
|
|
16
|
+
Use `HttpClient` so auth/error interceptors always run — avoid ad hoc `fetch`.
|
|
17
|
+
|
|
18
|
+
Environment files describe shape; inject real secrets via CI/CD env or secret manager — not committed literals.
|
|
19
|
+
|
|
20
|
+
Protect admin routes with functional guards (`canMatch` prevents lazy chunk download). UI hiding is not authorization.
|
|
21
|
+
|
|
22
|
+
SSR: never transfer private config through `TransferState`; gate DOM APIs with `isPlatformBrowser`.
|
|
23
|
+
|
|
24
|
+
Configure CSP without `unsafe-eval`; use nonces for unavoidable inline scripts during SSR.
|
|
25
|
+
|
|
26
|
+
**exo-security** / `security-review` before merging auth or PII features.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.spec.ts"
|
|
4
|
+
- "**/*.test.ts"
|
|
5
|
+
---
|
|
6
|
+
> Builds on the shared rules in `../common/testing.md`.
|
|
7
|
+
|
|
8
|
+
# Angular testing
|
|
9
|
+
|
|
10
|
+
Detect runner from `angular.json` / `package.json` (Vitest, Jest, or Karma/Jasmine).
|
|
11
|
+
|
|
12
|
+
## TestBed
|
|
13
|
+
|
|
14
|
+
Import standalone components directly; `compileComponents()` when using external templates.
|
|
15
|
+
|
|
16
|
+
Signal inputs: `fixture.componentRef.setInput('name', value)` then `detectChanges()`.
|
|
17
|
+
|
|
18
|
+
## UI interaction
|
|
19
|
+
|
|
20
|
+
Prefer CDK component harnesses over `nativeElement.querySelector` — survives template refactors.
|
|
21
|
+
|
|
22
|
+
## Router
|
|
23
|
+
|
|
24
|
+
`RouterTestingHarness.create()` + `navigateByUrl` for components coupled to routes.
|
|
25
|
+
|
|
26
|
+
## Async
|
|
27
|
+
|
|
28
|
+
`fakeAsync` + `tick` for deterministic timers; `waitForAsync` + `fixture.whenStable()` for real async.
|
|
29
|
+
|
|
30
|
+
## HTTP
|
|
31
|
+
|
|
32
|
+
Provide `provideHttpClientTesting()`; inject `HttpTestingController`; `afterEach(() => httpMock.verify())`.
|
|
33
|
+
|
|
34
|
+
## Services
|
|
35
|
+
|
|
36
|
+
Configure TestBed providers only; inject service without component fixture for pure logic.
|
|
37
|
+
|
|
38
|
+
## E2E
|
|
39
|
+
|
|
40
|
+
Use project standard (Cypress/Playwright). Stable `data-cy` attributes — not CSS classes copied from design tokens.
|
|
41
|
+
|
|
42
|
+
## Coverage
|
|
43
|
+
|
|
44
|
+
≥80% on services/pipes; components assert behavior via harnesses, not private fields.
|
|
45
|
+
|
|
46
|
+
**techne:angular** skill for signal/form harness recipes.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.ets"
|
|
4
|
+
- "**/*.ts"
|
|
5
|
+
- "**/module.json5"
|
|
6
|
+
- "**/oh-package.json5"
|
|
7
|
+
- "**/build-profile.json5"
|
|
8
|
+
---
|
|
9
|
+
# HarmonyOS / ArkTS Coding Style
|
|
10
|
+
|
|
11
|
+
> Builds on the shared rules in `../common/coding-style.md`.
|
|
12
|
+
|
|
13
|
+
ArkTS is a strict TypeScript subset — violations fail compile.
|
|
14
|
+
|
|
15
|
+
## Type system (hard limits)
|
|
16
|
+
|
|
17
|
+
Explicit types only — no `any`/`unknown`; no indexed access types, conditional types, mapped types, `infer`, intersections, structural typing, `typeof` types, or `as const`. Utility types limited to `Partial`, `Required`, `Readonly`, `Record` (`Record` indexes may be `undefined`). No type annotations in `catch`.
|
|
18
|
+
|
|
19
|
+
## Functions / classes
|
|
20
|
+
|
|
21
|
+
Arrow functions only (no function expressions/generators); no `apply`/`call`/`bind`; fields declared in class body; `this` restricted to instance methods; no `new.target`; definite-assignment assertions are banned; one static block; classes are types — do not treat as runtime values.
|
|
22
|
+
|
|
23
|
+
## Objects
|
|
24
|
+
|
|
25
|
+
Static property access (`obj.field`); no dynamic keys/`delete`; no `in` — use `instanceof`; no reassigning methods; no `globalThis`; spread only for arrays/rest.
|
|
26
|
+
|
|
27
|
+
## Modules
|
|
28
|
+
|
|
29
|
+
ESM `import`/`export` only — no `require`, `export =`, import assertions, wildcards; imports before other statements; TS must not import ArkTS (reverse allowed).
|
|
30
|
+
|
|
31
|
+
## Other
|
|
32
|
+
|
|
33
|
+
`let`/`const` only; no `for...in`, `with`, JSX, `#` privates; no declaration merging; explicit return types when inference crosses omitted returns.
|
|
34
|
+
|
|
35
|
+
## Naming
|
|
36
|
+
|
|
37
|
+
camelCase functions/vars; PascalCase types; `UPPER_SNAKE` constants; PascalCase component files, camelCase utilities.
|
|
38
|
+
|
|
39
|
+
## Format
|
|
40
|
+
|
|
41
|
+
Double-quoted strings; semicolons; full type annotations on public APIs.
|
|
42
|
+
|
|
43
|
+
## Files
|
|
44
|
+
|
|
45
|
+
One `@ComponentV2` per component file; one ViewModel per file; ~400 lines target (~800 max before split).
|
|
46
|
+
|
|
47
|
+
## Errors
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
try {
|
|
51
|
+
const value = await riskyCall()
|
|
52
|
+
return value
|
|
53
|
+
} catch (error) {
|
|
54
|
+
hilog.error(0x0000, 'Module', 'failed: %{public}s', error)
|
|
55
|
+
throw new Error('Safe user message')
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Immutability
|
|
60
|
+
|
|
61
|
+
Return new model instances — do not mutate shared `@ObservedV2` fields in place when updating UI state.
|
|
62
|
+
|
|
63
|
+
Depth: HarmonyOS references in project docs; mobile UX audits via `ui-design` skill when applicable.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.ets"
|
|
4
|
+
- "**/*.ts"
|
|
5
|
+
- "**/module.json5"
|
|
6
|
+
- "**/oh-package.json5"
|
|
7
|
+
---
|
|
8
|
+
# HarmonyOS / ArkTS Hooks
|
|
9
|
+
|
|
10
|
+
> Builds on the shared rules in `../common/hooks.md`.
|
|
11
|
+
|
|
12
|
+
`EXONOUS_HOOK_PROFILE` / `EXONOUS_DISABLED_HOOKS` — async hvigor/ohpm steps usually `standard` or `strict` only.
|
|
13
|
+
|
|
14
|
+
## Build
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
hvigorw assembleHap -p product=default
|
|
18
|
+
hvigorw clean
|
|
19
|
+
ohpm install
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## PostToolUse (standard/strict)
|
|
23
|
+
|
|
24
|
+
After `.ets`/`.ts` edits: `hvigorw assembleHap -p product=default` (surface last errors).
|
|
25
|
+
|
|
26
|
+
After `module.json5`: verify permissions/abilities.
|
|
27
|
+
|
|
28
|
+
After `oh-package.json5`: `ohpm install`.
|
|
29
|
+
|
|
30
|
+
## Guard
|
|
31
|
+
|
|
32
|
+
Warn on V1 state decorators (`@State`, `@Prop`, `@Link`, …) — use **V2** (`@ComponentV2`, `@Local`, `@Param`, …).
|
|
33
|
+
|
|
34
|
+
## Checklist
|
|
35
|
+
|
|
36
|
+
- HAP builds clean
|
|
37
|
+
- No `@ohos.router` in new code — use `Navigation` + `NavPathStack`
|
|
38
|
+
- Permissions declared; deps in oh-package; i18n strings + dark theme colors for new resources
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.ets"
|
|
4
|
+
- "**/*.ts"
|
|
5
|
+
---
|
|
6
|
+
# HarmonyOS / ArkTS Patterns
|
|
7
|
+
|
|
8
|
+
> Builds on the shared rules in `../common/patterns.md`.
|
|
9
|
+
|
|
10
|
+
## State V2 only
|
|
11
|
+
|
|
12
|
+
Use `@ComponentV2`, `@Local`, `@Param`, `@Event`, `@Provider`/`@Consumer`, `@Monitor`, `@Computed`, `@ObservedV2`, `@Trace`. Do **not** use V1 `@State`/`@Prop`/`@Link`/`@Component`.
|
|
13
|
+
|
|
14
|
+
## Routing
|
|
15
|
+
|
|
16
|
+
`Navigation` + `NavPathStack` — `pushPath`, `replacePath`, `pop`, `clear`; subpages in `NavDestination`. No legacy router module.
|
|
17
|
+
|
|
18
|
+
## MVVM layout
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
feature/
|
|
22
|
+
model/ @ObservedV2 data
|
|
23
|
+
viewmodel/ logic
|
|
24
|
+
view/ @ComponentV2 UI
|
|
25
|
+
service/ network/storage
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
`build()` renders only; business rules in ViewModels.
|
|
29
|
+
|
|
30
|
+
## Lists
|
|
31
|
+
|
|
32
|
+
`LazyForEach` + stable keys for large lists.
|
|
33
|
+
|
|
34
|
+
## Animation
|
|
35
|
+
|
|
36
|
+
State-driven; prefer `transform`/`opacity`; avoid animating layout (`width`/`height`/`padding`/`margin`); `renderGroup(true)` for heavy subtrees.
|
|
37
|
+
|
|
38
|
+
## Resources
|
|
39
|
+
|
|
40
|
+
UI strings/colors/sizes via `$r('app.*')` — no magic literals in widgets.
|
|
41
|
+
|
|
42
|
+
Depth: consult platform docs via `biblos` MCP for API drift.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.ets"
|
|
4
|
+
- "**/*.ts"
|
|
5
|
+
- "**/module.json5"
|
|
6
|
+
---
|
|
7
|
+
# HarmonyOS / ArkTS Security
|
|
8
|
+
|
|
9
|
+
> Builds on the shared rules in `../common/security.md`.
|
|
10
|
+
|
|
11
|
+
## Permissions
|
|
12
|
+
|
|
13
|
+
Declare in `module.json5` with user-visible `reason` strings; request runtime grants for sensitive APIs; check before call with graceful denial handling.
|
|
14
|
+
|
|
15
|
+
## Secrets
|
|
16
|
+
|
|
17
|
+
No keys in source; non-sensitive endpoints via build profiles; sensitive material via HUKS/Keystore patterns — not Preferences.
|
|
18
|
+
|
|
19
|
+
## Input
|
|
20
|
+
|
|
21
|
+
Validate before navigation (allowlisted deep-link paths); sanitize before display.
|
|
22
|
+
|
|
23
|
+
## Network
|
|
24
|
+
|
|
25
|
+
HTTPS; cert validation; timeouts/retries; never log tokens or credentials.
|
|
26
|
+
|
|
27
|
+
## Storage
|
|
28
|
+
|
|
29
|
+
Encrypt sensitive local data; clear on logout; classify data before choosing storage API.
|
|
30
|
+
|
|
31
|
+
## Dependencies
|
|
32
|
+
|
|
33
|
+
Official ohpm registry; pin versions; review third-party updates.
|
|
34
|
+
|
|
35
|
+
Review: `security-review` skill / `exo-security` agent.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.ets"
|
|
4
|
+
- "**/*.ts"
|
|
5
|
+
- "**/ohosTest/**"
|
|
6
|
+
---
|
|
7
|
+
# HarmonyOS / ArkTS Testing
|
|
8
|
+
|
|
9
|
+
> Builds on the shared rules in `../common/testing.md`.
|
|
10
|
+
|
|
11
|
+
## Layout
|
|
12
|
+
|
|
13
|
+
Production under `src/main/ets/`; tests under `src/ohosTest/ets/test/` with `TestRunner` entry.
|
|
14
|
+
|
|
15
|
+
## Run
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
hvigorw testHap -p product=default
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Device UI tests via `@ohos.UiTest` + Hypium on hardware/emulator when required.
|
|
22
|
+
|
|
23
|
+
## Unit style
|
|
24
|
+
|
|
25
|
+
Hypium `describe`/`it`/`expect` on ViewModels and services — assert initial state, mutations, empty/error inputs.
|
|
26
|
+
|
|
27
|
+
## TDD loop
|
|
28
|
+
|
|
29
|
+
Red test in ohosTest → minimal main code → refactor → `hvigorw assembleHap` → device/emulator verify.
|
|
30
|
+
|
|
31
|
+
## Coverage targets
|
|
32
|
+
|
|
33
|
+
~80% on ViewModels, services, utilities; integration for API/DB; UI tests for login/navigation/submit flows; include permission denial and empty/network failure cases.
|
|
34
|
+
|
|
35
|
+
## Practice
|
|
36
|
+
|
|
37
|
+
Independent tests; mock network/system APIs in unit layer; name `should_<behavior>_when_<condition>`; assert `@Trace` updates and `NavPathStack` flows without testing framework internals.
|
|
38
|
+
|
|
39
|
+
Workflow: `techne:quality` skill.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# Agent orchestration
|
|
2
|
+
|
|
3
|
+
Roster, tiers and report contract: `~/.claude/rules/nomos.md` § Agents. Multi-step delivery: `/deliver`.
|
|
4
|
+
|
|
5
|
+
- Complex feature → exo-pm / exo-cto · after code changes → exo-qa or `code-review` · sensitive surface → exo-security or `security-review`.
|
|
6
|
+
- Never finish while subagents still run — collect and merge first.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Code review
|
|
2
|
+
|
|
3
|
+
Review after substantive edits and before merge on shared branches, auth/data changes, or API shifts.
|
|
4
|
+
|
|
5
|
+
Pre-review: CI green, conflicts resolved, up to date with target.
|
|
6
|
+
|
|
7
|
+
Checklist: readable code; functions ~<50 lines; files ~<800 lines; nesting ≤4; explicit errors; no secrets/debug logs; tests for new behavior (often ≥80% coverage).
|
|
8
|
+
|
|
9
|
+
Escalate to **exo-security** / `security-review` for auth, input, SQL, FS, external HTTP, crypto, payments.
|
|
10
|
+
|
|
11
|
+
Severity: CRITICAL blocks; HIGH should fix; MEDIUM/LOW as time allows.
|
|
12
|
+
|
|
13
|
+
Flow: diff → security → quality → tests → **exo-qa** / `code-review` skill.
|
|
14
|
+
|
|
15
|
+
See [testing.md](./testing.md), [security.md](./security.md).
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Coding style
|
|
2
|
+
|
|
3
|
+
Prefer immutable updates for shared state. KISS, DRY (real duplication only), YAGNI.
|
|
4
|
+
|
|
5
|
+
Organize by feature; ~200–400 lines typical, ~800 soft max for hand-written sources.
|
|
6
|
+
|
|
7
|
+
Validate at boundaries; schema tools when available; safe user messages, detailed server logs.
|
|
8
|
+
|
|
9
|
+
Naming: descriptive; booleans as predicates. Language folders override casing.
|
|
10
|
+
|
|
11
|
+
Avoid deep nesting, magic numbers, and oversized functions.
|
|
12
|
+
|
|
13
|
+
Done: small units, handled errors, no hardcoded secrets.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Development workflow
|
|
2
|
+
|
|
3
|
+
Before git: reuse (**atlas**, **biblos**, registries) → plan (**exo-pm**/**exo-cto**, economical models) → TDD → review (**exo-qa**) → commit per [git-workflow.md](./git-workflow.md) → `/session-handoff`.
|
|
4
|
+
|
|
5
|
+
Use robust models only for implementation coding.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Git workflow
|
|
2
|
+
|
|
3
|
+
## Commits
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
<type>: <description>
|
|
7
|
+
|
|
8
|
+
<optional body>
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Types: `feat`, `fix`, `refactor`, `docs`, `test`, `chore`, `perf`, `ci`.
|
|
12
|
+
|
|
13
|
+
**Never** add `Co-Authored-By`, Cursor/AI attribution lines, or similar trailers.
|
|
14
|
+
|
|
15
|
+
**Never** bypass hooks (`--no-verify`, `--no-gpg-sign`, etc.) unless the user explicitly requests it in the current instruction.
|
|
16
|
+
|
|
17
|
+
**Never** force-push shared branches. **Never** auto-merge dependency bumps without human review.
|
|
18
|
+
|
|
19
|
+
Only commit when the user asks (or project harness authorizes via its commit skill/token).
|
|
20
|
+
|
|
21
|
+
## Pull requests
|
|
22
|
+
|
|
23
|
+
1. Inspect all commits since branching — not only HEAD.
|
|
24
|
+
2. `git diff <base>...HEAD` for the full change set.
|
|
25
|
+
3. Body: summary bullets + test plan checklist.
|
|
26
|
+
4. First push: `git push -u origin <branch>`.
|
|
27
|
+
|
|
28
|
+
Cross-session progress: `/session-handoff`.
|
|
29
|
+
|
|
30
|
+
Implementation order before git: [development-workflow.md](./development-workflow.md).
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Harness hooks
|
|
2
|
+
|
|
3
|
+
Phases: PreToolUse (validate), PostToolUse (format/lint/typecheck), Stop (build/audit).
|
|
4
|
+
|
|
5
|
+
Controls: `EXONOUS_HOOK_PROFILE` (`minimal`|`standard`|`strict`); `EXONOUS_DISABLED_HOOKS` (comma-separated ids).
|
|
6
|
+
|
|
7
|
+
No blanket permission bypass. Use scoped allowed-tools when automating.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Security baseline
|
|
2
|
+
|
|
3
|
+
No secrets in repo; validate input; parameterized SQL; XSS/CSRF controls; server-side authz; rate limits; safe errors.
|
|
4
|
+
|
|
5
|
+
Secrets via env/secret manager. On finding: stop, **exo-security** / `security-review`, fix CRITICAL, rotate credentials, sweep similar code.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.cpp"
|
|
4
|
+
- "**/*.hpp"
|
|
5
|
+
- "**/*.cc"
|
|
6
|
+
- "**/*.hh"
|
|
7
|
+
- "**/*.cxx"
|
|
8
|
+
- "**/*.h"
|
|
9
|
+
- "**/CMakeLists.txt"
|
|
10
|
+
---
|
|
11
|
+
# C++ Coding Style
|
|
12
|
+
|
|
13
|
+
> Builds on the shared rules in `../common/coding-style.md`.
|
|
14
|
+
|
|
15
|
+
## Modern C++
|
|
16
|
+
|
|
17
|
+
Prefer C++17/20/23 over C idioms: `auto` when obvious, `constexpr`, structured bindings.
|
|
18
|
+
|
|
19
|
+
## RAII
|
|
20
|
+
|
|
21
|
+
No manual `new`/`delete`; `unique_ptr` default ownership; `shared_ptr` only when sharing is real; `make_unique` / `make_shared`.
|
|
22
|
+
|
|
23
|
+
## Naming
|
|
24
|
+
|
|
25
|
+
PascalCase types; snake_case or camelCase functions (match project); `kConstant` or `UPPER_SNAKE`; lowercase namespaces; trailing `_` or `m_` for members per repo rule.
|
|
26
|
+
|
|
27
|
+
## Format
|
|
28
|
+
|
|
29
|
+
**clang-format** before commit.
|
|
30
|
+
|
|
31
|
+
Depth: `techne:cpp` skill.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.cpp"
|
|
4
|
+
- "**/*.hpp"
|
|
5
|
+
- "**/*.cc"
|
|
6
|
+
- "**/*.hh"
|
|
7
|
+
- "**/*.cxx"
|
|
8
|
+
- "**/*.h"
|
|
9
|
+
- "**/CMakeLists.txt"
|
|
10
|
+
---
|
|
11
|
+
# C++ Hooks
|
|
12
|
+
|
|
13
|
+
> Builds on the shared rules in `../common/hooks.md`.
|
|
14
|
+
|
|
15
|
+
`EXONOUS_HOOK_PROFILE` / `EXONOUS_DISABLED_HOOKS` select pre-commit automation.
|
|
16
|
+
|
|
17
|
+
## Local gate (standard/strict)
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
clang-format --dry-run --Werror src/*.cpp src/*.hpp
|
|
21
|
+
clang-tidy src/*.cpp -- -std=c++17
|
|
22
|
+
cmake --build build
|
|
23
|
+
ctest --test-dir build --output-on-failure
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
CI order: format → tidy → cppcheck → build → ctest (sanitizers on strict).
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.cpp"
|
|
4
|
+
- "**/*.hpp"
|
|
5
|
+
- "**/*.cc"
|
|
6
|
+
- "**/*.hh"
|
|
7
|
+
- "**/*.cxx"
|
|
8
|
+
- "**/*.h"
|
|
9
|
+
- "**/CMakeLists.txt"
|
|
10
|
+
---
|
|
11
|
+
# C++ Patterns
|
|
12
|
+
|
|
13
|
+
> Builds on the shared rules in `../common/patterns.md`.
|
|
14
|
+
|
|
15
|
+
## RAII handles
|
|
16
|
+
|
|
17
|
+
Acquire in ctor, release in dtor; deleted copy/move when ownership is unique.
|
|
18
|
+
|
|
19
|
+
## Rule of Zero / Five
|
|
20
|
+
|
|
21
|
+
Prefer zero special members; if you customize one, define all five.
|
|
22
|
+
|
|
23
|
+
## Values
|
|
24
|
+
|
|
25
|
+
Small types by value; large by `const&`; return by value (RVO); move sinks.
|
|
26
|
+
|
|
27
|
+
## Errors
|
|
28
|
+
|
|
29
|
+
Exceptions for exceptional paths; `optional` for absence; `expected` (C++23) or result types for expected failures.
|
|
30
|
+
|
|
31
|
+
Depth: `techne:cpp` skill.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.cpp"
|
|
4
|
+
- "**/*.hpp"
|
|
5
|
+
- "**/*.cc"
|
|
6
|
+
- "**/*.hh"
|
|
7
|
+
- "**/*.cxx"
|
|
8
|
+
- "**/*.h"
|
|
9
|
+
- "**/CMakeLists.txt"
|
|
10
|
+
---
|
|
11
|
+
# C++ Security
|
|
12
|
+
|
|
13
|
+
> Builds on the shared rules in `../common/security.md`.
|
|
14
|
+
|
|
15
|
+
## Memory
|
|
16
|
+
|
|
17
|
+
Smart pointers; `std::vector` / `std::array` not C arrays; no `malloc`/`free` in app code; avoid `reinterpret_cast`.
|
|
18
|
+
|
|
19
|
+
## Strings
|
|
20
|
+
|
|
21
|
+
`std::string`, `.at()` when bounds matter; ban `strcpy`/`sprintf` — use safe formatters.
|
|
22
|
+
|
|
23
|
+
## UB hygiene
|
|
24
|
+
|
|
25
|
+
Initialize variables; no signed overflow; no dangling/null deref.
|
|
26
|
+
|
|
27
|
+
## CI sanitizers
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
cmake -DCMAKE_CXX_FLAGS="-fsanitize=address,undefined" ..
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Static analysis
|
|
34
|
+
|
|
35
|
+
clang-tidy and cppcheck on touched translation units.
|
|
36
|
+
|
|
37
|
+
Depth: `techne:cpp` skill.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.cpp"
|
|
4
|
+
- "**/*.hpp"
|
|
5
|
+
- "**/*.cc"
|
|
6
|
+
- "**/*.hh"
|
|
7
|
+
- "**/*.cxx"
|
|
8
|
+
- "**/*.h"
|
|
9
|
+
- "**/CMakeLists.txt"
|
|
10
|
+
---
|
|
11
|
+
# C++ Testing
|
|
12
|
+
|
|
13
|
+
> Builds on the shared rules in `../common/testing.md`.
|
|
14
|
+
|
|
15
|
+
## Stack
|
|
16
|
+
|
|
17
|
+
GoogleTest + GoogleMock via CMake/CTest.
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
cmake --build build && ctest --test-dir build --output-on-failure
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Coverage
|
|
24
|
+
|
|
25
|
+
Build with `--coverage`, run ctest, capture with lcov.
|
|
26
|
+
|
|
27
|
+
## Sanitizers
|
|
28
|
+
|
|
29
|
+
Address + UB sanitizers in CI test jobs.
|
|
30
|
+
|
|
31
|
+
Depth: `techne:quality` skill for TDD loop; `techne:cpp` for patterns.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.cs"
|
|
4
|
+
- "**/*.csx"
|
|
5
|
+
---
|
|
6
|
+
# C# Coding Style
|
|
7
|
+
|
|
8
|
+
> Builds on the shared rules in `../common/coding-style.md`.
|
|
9
|
+
|
|
10
|
+
## Baseline
|
|
11
|
+
|
|
12
|
+
Current .NET conventions; nullable reference types on; explicit modifiers on public/internal API; one primary type per file.
|
|
13
|
+
|
|
14
|
+
## Models
|
|
15
|
+
|
|
16
|
+
`record` / `record struct` for immutable DTOs; `class` for entities; interfaces at boundaries; no `dynamic` in app code.
|
|
17
|
+
|
|
18
|
+
## Immutability
|
|
19
|
+
|
|
20
|
+
`init` accessors, constructor-only mutation, immutable collections for shared state; `with` for updates.
|
|
21
|
+
|
|
22
|
+
## Async
|
|
23
|
+
|
|
24
|
+
`async`/`await` only — no `.Result`/`.Wait()`; thread `CancellationToken` through public async methods; log with structured properties; throw specific exceptions.
|
|
25
|
+
|
|
26
|
+
## Format
|
|
27
|
+
|
|
28
|
+
`dotnet format`; tidy usings; expression bodies when still readable.
|
|
29
|
+
|
|
30
|
+
Depth: `techne:dotnet` skill.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.cs"
|
|
4
|
+
- "**/*.csx"
|
|
5
|
+
- "**/*.csproj"
|
|
6
|
+
- "**/*.sln"
|
|
7
|
+
- "**/Directory.Build.props"
|
|
8
|
+
- "**/Directory.Build.targets"
|
|
9
|
+
---
|
|
10
|
+
# C# Hooks
|
|
11
|
+
|
|
12
|
+
> Builds on the shared rules in `../common/hooks.md`.
|
|
13
|
+
|
|
14
|
+
`EXONOUS_HOOK_PROFILE` / `EXONOUS_DISABLED_HOOKS`.
|
|
15
|
+
|
|
16
|
+
## PostToolUse
|
|
17
|
+
|
|
18
|
+
- **dotnet format** on edited C#
|
|
19
|
+
- **dotnet build**
|
|
20
|
+
- **dotnet test --no-build** when behavior changed (standard/strict)
|
|
21
|
+
|
|
22
|
+
## Stop
|
|
23
|
+
|
|
24
|
+
Strict profile: final **dotnet build** after wide edits; warn on touched `appsettings*.json` (secrets).
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.cs"
|
|
4
|
+
- "**/*.csx"
|
|
5
|
+
---
|
|
6
|
+
# C# Patterns
|
|
7
|
+
|
|
8
|
+
> Builds on the shared rules in `../common/patterns.md`.
|
|
9
|
+
|
|
10
|
+
## API wrapper
|
|
11
|
+
|
|
12
|
+
```csharp
|
|
13
|
+
public sealed record ApiResult<T>(bool Ok, T? Payload = default, string? Error = null);
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Repository
|
|
17
|
+
|
|
18
|
+
Async CRUD interface with `CancellationToken` on each method.
|
|
19
|
+
|
|
20
|
+
## Options
|
|
21
|
+
|
|
22
|
+
Strongly typed `IOptions<T>` sections — no magic string keys scattered in code.
|
|
23
|
+
|
|
24
|
+
## DI lifetimes
|
|
25
|
+
|
|
26
|
+
Singleton for stateless/shared infra; scoped per request; transient for cheap workers; split god-services instead of huge constructors.
|
|
27
|
+
|
|
28
|
+
Depth: `techne:dotnet` skill.
|