novahiz 0.2.2 → 0.2.5
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/NOTICE.md +25 -15
- package/README.md +353 -355
- package/adapters/README.md +1 -1
- package/adapters/opencode/agent/novahiz.md +1 -2
- package/adapters/opencode/commands/novahiz-init.md +10 -0
- package/adapters/opencode/instructions.md +1 -1
- package/adapters/opencode/novahiz.ts +182 -4
- package/bin/novahiz.cmd +2 -2
- package/catalog/categories.json +1085 -1093
- package/catalog/overrides.json +12 -13
- package/catalog/providers.json +18 -34
- package/catalog/rules.json +15 -22
- package/docs/ARCHITECTURE.md +2 -2
- package/docs/CATALOG.md +7 -6
- package/docs/CONFIGURATION.md +5 -5
- package/docs/CONSTITUTION.md +4 -4
- package/docs/GATE.md +7 -11
- package/docs/HARNESSES.md +11 -0
- package/docs/INSTALL.md +7 -5
- package/docs/PLUGIN.md +24 -6
- package/docs/PROVIDERS.md +12 -10
- package/docs/ROADMAPS.md +4 -3
- package/docs/RULES.md +11 -10
- package/install/bootstrap.mjs +9 -19
- package/install/install.mjs +23 -41
- package/mcp/novahiz-tools/index.mjs +35 -6
- package/novahiz.config.example.json +1 -5
- package/package.json +6 -7
- package/skills/apple-ui-audit/SKILL.md +95 -0
- package/skills/apple-ui-audit/references/screen-walkthrough.md +29 -0
- package/skills/browser-session/SKILL.md +61 -0
- package/skills/browser-session/references/session-run-sheet.md +30 -0
- package/skills/browser-session/scripts/browser_session_preflight.mjs +74 -0
- package/skills/browser-session/scripts/sample-run.json +5 -0
- package/skills/code-standards/SKILL.md +85 -0
- package/skills/code-standards/references/pr-review-worksheet.md +35 -0
- package/skills/design-token-pipeline/SKILL.md +85 -0
- package/skills/design-token-pipeline/references/dtcg-sample.json +37 -0
- package/skills/llm-threat-review/SKILL.md +99 -0
- package/skills/llm-threat-review/references/review-worksheet.md +34 -0
- package/skills/llm-threat-review/scripts/llm_risk_lint.mjs +105 -0
- package/skills/novahiz-audit/SKILL.md +1 -1
- package/skills/novahiz-gate/SKILL.md +7 -6
- package/skills/novahiz-humanizer/SKILL.md +1 -1
- package/skills/novahiz-implement/SKILL.md +1 -1
- package/skills/novahiz-init/SKILL.md +112 -0
- package/skills/novahiz-planner/SKILL.md +1 -2
- package/skills/openapi-mcp-server/SKILL.md +76 -0
- package/skills/openapi-mcp-server/references/mcp-ship-checklist.md +30 -0
- package/skills/openapi-mcp-server/references/tool-worksheet.md +30 -0
- package/skills/openapi-mcp-server/scripts/openapi_mcp_lint.mjs +133 -0
- package/skills/package-risk-audit/SKILL.md +83 -0
- package/skills/package-risk-audit/references/intake-worksheet.md +19 -0
- package/skills/package-risk-audit/scripts/dep_risk_lint.mjs +131 -0
- package/skills/secrets-hygiene/SKILL.md +62 -0
- package/skills/secrets-hygiene/references/rotation-playbook.md +27 -0
- package/skills/secrets-hygiene/scripts/secret_scan.mjs +120 -0
- package/skills/skill-authoring/SKILL.md +93 -0
- package/skills/skill-authoring/references/skill-template.md +59 -0
- package/skills/skill-authoring/scripts/skill_frontmatter_lint.mjs +65 -0
- package/skills/skill-eval-loop/SKILL.md +103 -0
- package/skills/skill-eval-loop/references/negative-patterns.md +12 -0
- package/skills/skill-eval-loop/references/run-sheet.md +40 -0
- package/skills/skill-eval-loop/scripts/skill_structure_check.mjs +100 -0
- package/skills/ui-craft-rules/SKILL.md +96 -0
- package/skills/ui-slop-remover/SKILL.md +110 -0
- package/skills/ui-slop-remover/references/tell-catalogue.md +58 -0
- package/skills/ui-slop-remover/scripts/slop_lint.mjs +119 -0
- package/src/autodocs.ts +192 -0
- package/src/cli.ts +8 -1
- package/src/commands/autodocs.ts +250 -0
- package/src/commands/doctor.ts +226 -217
- package/src/commands/gate.ts +16 -5
- package/src/commands/init.ts +356 -0
- package/src/commands/task.ts +20 -7
- package/src/gate.ts +401 -401
- package/src/ledger.ts +39 -0
- package/src/targets.ts +43 -7
- package/bundled-skills/ab-testing/SKILL.md +0 -353
- package/bundled-skills/ab-testing/evals/evals.json +0 -105
- package/bundled-skills/ab-testing/references/sample-size-guide.md +0 -263
- package/bundled-skills/ab-testing/references/test-templates.md +0 -277
- package/bundled-skills/ad-creative/SKILL.md +0 -425
- package/bundled-skills/ad-creative/assets/creative-review-template.html +0 -400
- package/bundled-skills/ad-creative/evals/evals.json +0 -217
- package/bundled-skills/ad-creative/references/creative-review-page.md +0 -106
- package/bundled-skills/ad-creative/references/creative-roadmap.md +0 -118
- package/bundled-skills/ad-creative/references/generative-tools.md +0 -637
- package/bundled-skills/ad-creative/references/hook-system.md +0 -115
- package/bundled-skills/ad-creative/references/imessage-video-ads.md +0 -201
- package/bundled-skills/ad-creative/references/meta-creative-formats.md +0 -114
- package/bundled-skills/ad-creative/references/motion-video-ads.md +0 -126
- package/bundled-skills/ad-creative/references/platform-specs.md +0 -213
- package/bundled-skills/ad-creative/references/short-form-video-specs.md +0 -213
- package/bundled-skills/ad-creative/references/static-ad-templates.md +0 -308
- package/bundled-skills/ads/SKILL.md +0 -499
- package/bundled-skills/ads/evals/evals.json +0 -157
- package/bundled-skills/ads/references/abm-playbook.md +0 -93
- package/bundled-skills/ads/references/ad-copy-templates.md +0 -207
- package/bundled-skills/ads/references/audience-targeting.md +0 -243
- package/bundled-skills/ads/references/audit-guardrails.md +0 -83
- package/bundled-skills/ads/references/b2b-paid-playbook.md +0 -115
- package/bundled-skills/ads/references/conversion-tracking.md +0 -361
- package/bundled-skills/ads/references/creative-research-automation.md +0 -103
- package/bundled-skills/ads/references/google-ads-audit-checklist.md +0 -84
- package/bundled-skills/ads/references/google-search-playbook.md +0 -120
- package/bundled-skills/ads/references/linkedin-b2b-playbook.md +0 -107
- package/bundled-skills/ads/references/meta-decision-system.md +0 -176
- package/bundled-skills/ads/references/payback-period.md +0 -69
- package/bundled-skills/ads/references/platform-setup-checklists.md +0 -277
- package/bundled-skills/ads/references/rsa-output-spec.md +0 -88
- package/bundled-skills/agent-device/SKILL.md +0 -20
- package/bundled-skills/ai-seo/SKILL.md +0 -488
- package/bundled-skills/ai-seo/evals/evals.json +0 -135
- package/bundled-skills/ai-seo/references/agent-readiness.md +0 -57
- package/bundled-skills/ai-seo/references/citations-vs-recommendations.md +0 -85
- package/bundled-skills/ai-seo/references/content-patterns.md +0 -287
- package/bundled-skills/ai-seo/references/content-types.md +0 -71
- package/bundled-skills/ai-seo/references/format-volatility.md +0 -98
- package/bundled-skills/ai-seo/references/okf.md +0 -104
- package/bundled-skills/ai-seo/references/platform-ranking-factors.md +0 -154
- package/bundled-skills/ai-seo/references/youtube-ai-citations.md +0 -60
- package/bundled-skills/analytics/SKILL.md +0 -310
- package/bundled-skills/analytics/evals/evals.json +0 -90
- package/bundled-skills/analytics/references/event-library.md +0 -260
- package/bundled-skills/analytics/references/ga4-implementation.md +0 -300
- package/bundled-skills/analytics/references/gtm-implementation.md +0 -390
- package/bundled-skills/android-emulator/SKILL.md +0 -32
- package/bundled-skills/android-reverse-engineering/LICENSE +0 -190
- package/bundled-skills/android-reverse-engineering/SKILL.md +0 -313
- package/bundled-skills/android-reverse-engineering/references/api-extraction-patterns.md +0 -197
- package/bundled-skills/android-reverse-engineering/references/call-flow-analysis.md +0 -210
- package/bundled-skills/android-reverse-engineering/references/fernflower-usage.md +0 -115
- package/bundled-skills/android-reverse-engineering/references/jadx-usage.md +0 -116
- package/bundled-skills/android-reverse-engineering/references/kotlin-name-recovery.md +0 -108
- package/bundled-skills/android-reverse-engineering/references/setup-guide.md +0 -221
- package/bundled-skills/android-reverse-engineering/references/third_party_hosts.txt +0 -122
- package/bundled-skills/android-reverse-engineering/scripts/check-deps.ps1 +0 -165
- package/bundled-skills/android-reverse-engineering/scripts/check-deps.sh +0 -129
- package/bundled-skills/android-reverse-engineering/scripts/decompile.ps1 +0 -400
- package/bundled-skills/android-reverse-engineering/scripts/decompile.sh +0 -578
- package/bundled-skills/android-reverse-engineering/scripts/find-api-calls.ps1 +0 -121
- package/bundled-skills/android-reverse-engineering/scripts/find-api-calls.sh +0 -339
- package/bundled-skills/android-reverse-engineering/scripts/fingerprint.sh +0 -241
- package/bundled-skills/android-reverse-engineering/scripts/install-dep.ps1 +0 -345
- package/bundled-skills/android-reverse-engineering/scripts/install-dep.sh +0 -448
- package/bundled-skills/android-reverse-engineering/scripts/lookup-name.sh +0 -85
- package/bundled-skills/android-reverse-engineering/scripts/recover-kotlin-names.sh +0 -140
- package/bundled-skills/build-graph/SKILL.md +0 -38
- package/bundled-skills/claude-history-ingest/SKILL.md +0 -463
- package/bundled-skills/claude-history-ingest/references/claude-data-format.md +0 -118
- package/bundled-skills/codex-history-ingest/SKILL.md +0 -248
- package/bundled-skills/codex-history-ingest/references/codex-data-format.md +0 -82
- package/bundled-skills/cold-email/SKILL.md +0 -159
- package/bundled-skills/cold-email/evals/evals.json +0 -94
- package/bundled-skills/cold-email/references/benchmarks.md +0 -83
- package/bundled-skills/cold-email/references/follow-up-sequences.md +0 -81
- package/bundled-skills/cold-email/references/frameworks.md +0 -90
- package/bundled-skills/cold-email/references/personalization.md +0 -79
- package/bundled-skills/cold-email/references/subject-lines.md +0 -53
- package/bundled-skills/competitor-profiling/SKILL.md +0 -415
- package/bundled-skills/competitor-profiling/evals/evals.json +0 -85
- package/bundled-skills/competitor-profiling/references/templates.md +0 -167
- package/bundled-skills/competitor-profiling/references/tool-reference.md +0 -179
- package/bundled-skills/computer-use/SKILL.md +0 -41
- package/bundled-skills/content-strategy/SKILL.md +0 -439
- package/bundled-skills/content-strategy/evals/evals.json +0 -116
- package/bundled-skills/content-strategy/references/content-distribution.md +0 -83
- package/bundled-skills/content-strategy/references/headless-cms.md +0 -194
- package/bundled-skills/copilot-history-ingest/SKILL.md +0 -376
- package/bundled-skills/copilot-history-ingest/references/copilot-data-format.md +0 -321
- package/bundled-skills/copy-editing/SKILL.md +0 -457
- package/bundled-skills/copy-editing/evals/evals.json +0 -89
- package/bundled-skills/copy-editing/references/checklist.md +0 -66
- package/bundled-skills/copy-editing/references/content-refresh.md +0 -38
- package/bundled-skills/copy-editing/references/plain-english-alternatives.md +0 -394
- package/bundled-skills/copywriting/SKILL.md +0 -256
- package/bundled-skills/copywriting/evals/evals.json +0 -126
- package/bundled-skills/copywriting/references/copy-frameworks.md +0 -433
- package/bundled-skills/copywriting/references/natural-transitions.md +0 -272
- package/bundled-skills/cro/SKILL.md +0 -187
- package/bundled-skills/cro/evals/evals.json +0 -111
- package/bundled-skills/cro/references/experiments.md +0 -248
- package/bundled-skills/cro/references/form.md +0 -422
- package/bundled-skills/cross-linker/SKILL.md +0 -309
- package/bundled-skills/customer-research/SKILL.md +0 -305
- package/bundled-skills/customer-research/evals/evals.json +0 -176
- package/bundled-skills/customer-research/references/interviews-and-surveys.md +0 -155
- package/bundled-skills/customer-research/references/source-guides.md +0 -401
- package/bundled-skills/daily-update/SKILL.md +0 -223
- package/bundled-skills/dart-add-unit-test/SKILL.md +0 -122
- package/bundled-skills/dart-build-cli-app/SKILL.md +0 -185
- package/bundled-skills/dart-collect-coverage/SKILL.md +0 -141
- package/bundled-skills/dart-fix-runtime-errors/SKILL.md +0 -166
- package/bundled-skills/dart-generate-test-mocks/SKILL.md +0 -155
- package/bundled-skills/dart-migrate-to-checks-package/SKILL.md +0 -528
- package/bundled-skills/dart-resolve-package-conflicts/SKILL.md +0 -116
- package/bundled-skills/dart-run-static-analysis/SKILL.md +0 -104
- package/bundled-skills/dart-setup-ffi-assets/SKILL.md +0 -419
- package/bundled-skills/dart-use-doc-examples/SKILL.md +0 -96
- package/bundled-skills/dart-use-ffigen/SKILL.md +0 -218
- package/bundled-skills/dart-use-pattern-matching/SKILL.md +0 -146
- package/bundled-skills/dart-use-primary-constructors/SKILL.md +0 -262
- package/bundled-skills/dart-write-documentation/SKILL.md +0 -136
- package/bundled-skills/debug-issue/SKILL.md +0 -28
- package/bundled-skills/dogfood/SKILL.md +0 -27
- package/bundled-skills/eas-app-stores/SKILL.md +0 -176
- package/bundled-skills/eas-app-stores/agents/openai.yaml +0 -4
- package/bundled-skills/eas-app-stores/references/app-store-metadata.md +0 -497
- package/bundled-skills/eas-app-stores/references/ios-app-store.md +0 -376
- package/bundled-skills/eas-app-stores/references/native-ios.md +0 -167
- package/bundled-skills/eas-app-stores/references/play-store.md +0 -244
- package/bundled-skills/eas-app-stores/references/testflight.md +0 -62
- package/bundled-skills/eas-app-stores/references/workflows.md +0 -120
- package/bundled-skills/eas-hosting/SKILL.md +0 -431
- package/bundled-skills/eas-hosting/agents/openai.yaml +0 -4
- package/bundled-skills/eas-observe/SKILL.md +0 -54
- package/bundled-skills/eas-observe/agents/openai.yaml +0 -4
- package/bundled-skills/eas-observe/references/metrics.md +0 -98
- package/bundled-skills/eas-observe/references/queries.md +0 -403
- package/bundled-skills/eas-observe/references/setup.md +0 -476
- package/bundled-skills/eas-observe/references/third-party.md +0 -136
- package/bundled-skills/eas-simulator/SKILL.md +0 -208
- package/bundled-skills/eas-simulator/agents/openai.yaml +0 -4
- package/bundled-skills/eas-simulator/references/controllers.md +0 -106
- package/bundled-skills/eas-simulator/references/run-your-app.md +0 -224
- package/bundled-skills/eas-simulator/references/troubleshooting.md +0 -44
- package/bundled-skills/eas-update/SKILL.md +0 -146
- package/bundled-skills/eas-update/agents/openai.yaml +0 -4
- package/bundled-skills/eas-update-insights/SKILL.md +0 -238
- package/bundled-skills/eas-update-insights/agents/openai.yaml +0 -4
- package/bundled-skills/eas-update-insights/references/channel-insights-schema.md +0 -47
- package/bundled-skills/eas-update-insights/references/update-insights-schema.md +0 -69
- package/bundled-skills/eas-workflows/SKILL.md +0 -99
- package/bundled-skills/eas-workflows/agents/openai.yaml +0 -4
- package/bundled-skills/eas-workflows/scripts/fetch.js +0 -109
- package/bundled-skills/eas-workflows/scripts/package.json +0 -6
- package/bundled-skills/emails/SKILL.md +0 -311
- package/bundled-skills/emails/evals/evals.json +0 -93
- package/bundled-skills/emails/references/copy-guidelines.md +0 -113
- package/bundled-skills/emails/references/email-types.md +0 -515
- package/bundled-skills/emails/references/sequence-templates.md +0 -168
- package/bundled-skills/explore-codebase/SKILL.md +0 -29
- package/bundled-skills/expo-animation/LICENSE +0 -21
- package/bundled-skills/expo-animation/RECIPES.md +0 -385
- package/bundled-skills/expo-animation/SKILL.md +0 -267
- package/bundled-skills/expo-animation/agents/openai.yaml +0 -4
- package/bundled-skills/expo-app-clip/SKILL.md +0 -290
- package/bundled-skills/expo-app-clip/agents/openai.yaml +0 -4
- package/bundled-skills/expo-app-clip/references/native-module.md +0 -96
- package/bundled-skills/expo-brownfield/SKILL.md +0 -62
- package/bundled-skills/expo-brownfield/agents/openai.yaml +0 -4
- package/bundled-skills/expo-brownfield/references/brownfield-integrated.md +0 -526
- package/bundled-skills/expo-brownfield/references/brownfield-isolated.md +0 -451
- package/bundled-skills/expo-brownfield/references/comparison.md +0 -63
- package/bundled-skills/expo-brownfield/references/troubleshooting.md +0 -88
- package/bundled-skills/expo-data-fetching/SKILL.md +0 -478
- package/bundled-skills/expo-data-fetching/agents/openai.yaml +0 -4
- package/bundled-skills/expo-data-fetching/references/expo-router-loaders.md +0 -341
- package/bundled-skills/expo-data-fetching/references/offline-and-cancellation.md +0 -68
- package/bundled-skills/expo-design-system/SKILL.md +0 -376
- package/bundled-skills/expo-design-system/agents/openai.yaml +0 -4
- package/bundled-skills/expo-design-system/references/audit.md +0 -190
- package/bundled-skills/expo-design-system/references/native-slop.md +0 -74
- package/bundled-skills/expo-dev-client/SKILL.md +0 -182
- package/bundled-skills/expo-dev-client/agents/openai.yaml +0 -4
- package/bundled-skills/expo-dom/SKILL.md +0 -425
- package/bundled-skills/expo-dom/agents/openai.yaml +0 -4
- package/bundled-skills/expo-examples/SKILL.md +0 -106
- package/bundled-skills/expo-examples/agents/openai.yaml +0 -4
- package/bundled-skills/expo-examples/references/catalog.md +0 -105
- package/bundled-skills/expo-migrate-module/SKILL.md +0 -113
- package/bundled-skills/expo-migrate-module/agents/openai.yaml +0 -4
- package/bundled-skills/expo-migrate-module/references/compatibility.md +0 -73
- package/bundled-skills/expo-migrate-module/references/example.md +0 -212
- package/bundled-skills/expo-migrate-module/references/migration-map.md +0 -306
- package/bundled-skills/expo-module/SKILL.md +0 -151
- package/bundled-skills/expo-module/agents/openai.yaml +0 -4
- package/bundled-skills/expo-module/references/config-plugin.md +0 -90
- package/bundled-skills/expo-module/references/create-expo-module.md +0 -206
- package/bundled-skills/expo-module/references/lifecycle.md +0 -127
- package/bundled-skills/expo-module/references/module-config.md +0 -48
- package/bundled-skills/expo-module/references/native-module.md +0 -286
- package/bundled-skills/expo-module/references/native-view.md +0 -171
- package/bundled-skills/expo-native-ui/SKILL.md +0 -201
- package/bundled-skills/expo-native-ui/agents/openai.yaml +0 -4
- package/bundled-skills/expo-native-ui/references/controls.md +0 -231
- package/bundled-skills/expo-native-ui/references/gradients.md +0 -106
- package/bundled-skills/expo-native-ui/references/icons.md +0 -232
- package/bundled-skills/expo-native-ui/references/media.md +0 -193
- package/bundled-skills/expo-native-ui/references/storage.md +0 -121
- package/bundled-skills/expo-native-ui/references/visual-effects.md +0 -198
- package/bundled-skills/expo-native-ui/references/webgpu-three.md +0 -605
- package/bundled-skills/expo-overview/SKILL.md +0 -115
- package/bundled-skills/expo-overview/agents/openai.yaml +0 -4
- package/bundled-skills/expo-project-structure/SKILL.md +0 -114
- package/bundled-skills/expo-project-structure/agents/openai.yaml +0 -4
- package/bundled-skills/expo-router/SKILL.md +0 -240
- package/bundled-skills/expo-router/agents/openai.yaml +0 -4
- package/bundled-skills/expo-router/references/form-sheet.md +0 -253
- package/bundled-skills/expo-router/references/route-structure.md +0 -229
- package/bundled-skills/expo-router/references/search.md +0 -248
- package/bundled-skills/expo-router/references/tabs.md +0 -433
- package/bundled-skills/expo-router/references/toolbar-and-headers.md +0 -284
- package/bundled-skills/expo-router/references/zoom-transitions.md +0 -158
- package/bundled-skills/expo-skill-eval/SKILL.md +0 -314
- package/bundled-skills/expo-skill-eval/agents/visual-grader.md +0 -52
- package/bundled-skills/expo-skill-eval/references/design-rubric.md +0 -45
- package/bundled-skills/expo-skill-eval/references/runtime-matrix.md +0 -34
- package/bundled-skills/expo-skill-eval/scripts/check-static.sh +0 -64
- package/bundled-skills/expo-skill-eval/scripts/clean-fixture.sh +0 -56
- package/bundled-skills/expo-skill-eval/scripts/generate_viewer.py +0 -450
- package/bundled-skills/expo-skill-eval/scripts/latest-sdk.sh +0 -46
- package/bundled-skills/expo-skill-eval/scripts/make-fixture.sh +0 -95
- package/bundled-skills/expo-skill-eval/scripts/make-workspace.sh +0 -31
- package/bundled-skills/expo-skill-eval/scripts/snapshot-android.sh +0 -284
- package/bundled-skills/expo-skill-eval/scripts/snapshot-ios.sh +0 -132
- package/bundled-skills/expo-skill-eval/scripts/snapshot-web.sh +0 -61
- package/bundled-skills/expo-skill-feedback/SKILL.md +0 -87
- package/bundled-skills/expo-skill-feedback/agents/openai.yaml +0 -4
- package/bundled-skills/expo-skill-feedback/scripts/skill-event.cjs +0 -180
- package/bundled-skills/expo-skill-feedback/scripts/telemetry.cjs +0 -65
- package/bundled-skills/expo-skill-feedback/scripts/telemetry_common.cjs +0 -171
- package/bundled-skills/expo-ui/SKILL.md +0 -101
- package/bundled-skills/expo-ui/agents/openai.yaml +0 -4
- package/bundled-skills/expo-ui/references/drop-in-replacements.md +0 -27
- package/bundled-skills/expo-ui/references/jetpack-compose.md +0 -73
- package/bundled-skills/expo-ui/references/swift-ui.md +0 -73
- package/bundled-skills/expo-ui/references/universal.md +0 -104
- package/bundled-skills/expo-ui/scripts/list-components.js +0 -193
- package/bundled-skills/expo-upgrade/SKILL.md +0 -150
- package/bundled-skills/expo-upgrade/agents/openai.yaml +0 -4
- package/bundled-skills/expo-upgrade/references/expo-av-to-audio.md +0 -132
- package/bundled-skills/expo-upgrade/references/expo-av-to-video.md +0 -160
- package/bundled-skills/expo-upgrade/references/native-tabs.md +0 -124
- package/bundled-skills/expo-upgrade/references/new-architecture.md +0 -79
- package/bundled-skills/expo-upgrade/references/react-19.md +0 -79
- package/bundled-skills/expo-upgrade/references/react-compiler.md +0 -59
- package/bundled-skills/expo-upgrade/references/react-navigation-to-expo-router.md +0 -61
- package/bundled-skills/expo-web-to-native/SKILL.md +0 -91
- package/bundled-skills/expo-web-to-native/agents/openai.yaml +0 -4
- package/bundled-skills/expo-web-to-native/references/false-friends.md +0 -119
- package/bundled-skills/expo-web-to-native/references/native-patterns.md +0 -39
- package/bundled-skills/expo-web-to-native/references/run-as-goal.md +0 -48
- package/bundled-skills/expo-web-to-native/references/verify-on-device.md +0 -45
- package/bundled-skills/find-skills/SKILL.md +0 -141
- package/bundled-skills/flutter-add-integration-test/SKILL.md +0 -163
- package/bundled-skills/flutter-add-widget-preview/SKILL.md +0 -145
- package/bundled-skills/flutter-add-widget-test/SKILL.md +0 -154
- package/bundled-skills/flutter-apply-architecture-best-practices/SKILL.md +0 -162
- package/bundled-skills/flutter-build-responsive-layout/SKILL.md +0 -139
- package/bundled-skills/flutter-fix-layout-issues/SKILL.md +0 -130
- package/bundled-skills/flutter-implement-json-serialization/SKILL.md +0 -153
- package/bundled-skills/flutter-setup-declarative-routing/SKILL.md +0 -255
- package/bundled-skills/flutter-setup-localization/SKILL.md +0 -210
- package/bundled-skills/flutter-use-http-package/SKILL.md +0 -174
- package/bundled-skills/graph-colorize/SKILL.md +0 -180
- package/bundled-skills/hermes-history-ingest/SKILL.md +0 -239
- package/bundled-skills/hermes-history-ingest/references/hermes-data-format.md +0 -131
- package/bundled-skills/impl-validator/SKILL.md +0 -118
- package/bundled-skills/ios-simulator/SKILL.md +0 -32
- package/bundled-skills/json-canvas/SKILL.md +0 -244
- package/bundled-skills/json-canvas/references/EXAMPLES.md +0 -329
- package/bundled-skills/launch/SKILL.md +0 -381
- package/bundled-skills/launch/evals/evals.json +0 -106
- package/bundled-skills/llm-wiki/SKILL.md +0 -661
- package/bundled-skills/llm-wiki/references/WRITING.md +0 -28
- package/bundled-skills/llm-wiki/references/karpathy-pattern.md +0 -45
- package/bundled-skills/marketing-plan/SKILL.md +0 -300
- package/bundled-skills/marketing-plan/evals/evals.json +0 -112
- package/bundled-skills/marketing-plan/references/aarrr-framework.md +0 -180
- package/bundled-skills/marketing-plan/references/budget-planning.md +0 -168
- package/bundled-skills/marketing-plan/references/client-types.md +0 -373
- package/bundled-skills/marketing-plan/references/current-state-rubric.md +0 -255
- package/bundled-skills/marketing-plan/references/example-quietude.md +0 -972
- package/bundled-skills/marketing-plan/references/funding-stage-unlocks.md +0 -230
- package/bundled-skills/marketing-plan/references/growth-patterns.md +0 -190
- package/bundled-skills/marketing-plan/references/idea-cross-reference.md +0 -265
- package/bundled-skills/marketing-plan/references/measurement-framework.md +0 -213
- package/bundled-skills/marketing-plan/references/methodology.md +0 -363
- package/bundled-skills/marketing-plan/references/ops-stack-mapping.md +0 -197
- package/bundled-skills/marketing-plan/references/plan-template.md +0 -494
- package/bundled-skills/marketing-plan/references/team-and-agency-model.md +0 -278
- package/bundled-skills/marketing-psychology/SKILL.md +0 -455
- package/bundled-skills/marketing-psychology/evals/evals.json +0 -88
- package/bundled-skills/memory-bridge/SKILL.md +0 -163
- package/bundled-skills/memory-save/SKILL.md +0 -88
- package/bundled-skills/obsidian-bases/SKILL.md +0 -499
- package/bundled-skills/obsidian-bases/references/FUNCTIONS_REFERENCE.md +0 -173
- package/bundled-skills/obsidian-cli/SKILL.md +0 -106
- package/bundled-skills/obsidian-layout-adjustment/SKILL.md +0 -226
- package/bundled-skills/obsidian-layout-adjustment/evals/evals.json +0 -53
- package/bundled-skills/obsidian-layout-adjustment/references/workflow-reference.md +0 -212
- package/bundled-skills/obsidian-markdown/SKILL.md +0 -196
- package/bundled-skills/obsidian-markdown/references/CALLOUTS.md +0 -58
- package/bundled-skills/obsidian-markdown/references/EMBEDS.md +0 -70
- package/bundled-skills/obsidian-markdown/references/PROPERTIES.md +0 -61
- package/bundled-skills/offers/SKILL.md +0 -155
- package/bundled-skills/offers/evals/evals.json +0 -21
- package/bundled-skills/offers/references/bonus-stacking.md +0 -150
- package/bundled-skills/offers/references/examples.md +0 -215
- package/bundled-skills/offers/references/guarantee-design.md +0 -172
- package/bundled-skills/offers/references/offer-anatomy.md +0 -203
- package/bundled-skills/offers/references/offer-formats.md +0 -240
- package/bundled-skills/offers/references/saas-offers.md +0 -116
- package/bundled-skills/offers/references/scarcity-urgency.md +0 -175
- package/bundled-skills/offers/references/value-equation.md +0 -134
- package/bundled-skills/onboarding/SKILL.md +0 -261
- package/bundled-skills/onboarding/evals/evals.json +0 -108
- package/bundled-skills/onboarding/references/activation-models.md +0 -57
- package/bundled-skills/onboarding/references/experiments.md +0 -258
- package/bundled-skills/onboarding/references/minimum-path-to-value.md +0 -49
- package/bundled-skills/openclaw-history-ingest/SKILL.md +0 -257
- package/bundled-skills/openclaw-history-ingest/references/openclaw-data-format.md +0 -154
- package/bundled-skills/orchestration/SKILL.md +0 -69
- package/bundled-skills/pi-history-ingest/SKILL.md +0 -312
- package/bundled-skills/pricing/SKILL.md +0 -295
- package/bundled-skills/pricing/evals/evals.json +0 -119
- package/bundled-skills/pricing/references/pricing-models.md +0 -66
- package/bundled-skills/pricing/references/pricing-page-teardown.md +0 -85
- package/bundled-skills/pricing/references/research-methods.md +0 -152
- package/bundled-skills/pricing/references/tier-structure.md +0 -232
- package/bundled-skills/product-marketing/SKILL.md +0 -255
- package/bundled-skills/product-marketing/evals/evals.json +0 -98
- package/bundled-skills/prospecting/SKILL.md +0 -262
- package/bundled-skills/prospecting/evals/evals.json +0 -122
- package/bundled-skills/prospecting/references/b2b-prospecting.md +0 -106
- package/bundled-skills/prospecting/references/compliance.md +0 -123
- package/bundled-skills/prospecting/references/data-sources.md +0 -287
- package/bundled-skills/prospecting/references/demand-signals.md +0 -129
- package/bundled-skills/prospecting/references/local-prospecting.md +0 -165
- package/bundled-skills/prospecting/references/saas-prospecting.md +0 -123
- package/bundled-skills/refactor-safely/SKILL.md +0 -29
- package/bundled-skills/review-delta/SKILL.md +0 -46
- package/bundled-skills/review-pr/SKILL.md +0 -66
- package/bundled-skills/sales-enablement/SKILL.md +0 -359
- package/bundled-skills/sales-enablement/evals/evals.json +0 -91
- package/bundled-skills/sales-enablement/references/deck-frameworks.md +0 -263
- package/bundled-skills/sales-enablement/references/demo-scripts.md +0 -355
- package/bundled-skills/sales-enablement/references/objection-library.md +0 -270
- package/bundled-skills/sales-enablement/references/one-pager-templates.md +0 -208
- package/bundled-skills/seo-audit/SKILL.md +0 -499
- package/bundled-skills/seo-audit/evals/evals.json +0 -136
- package/bundled-skills/seo-audit/references/ai-writing-detection.md +0 -200
- package/bundled-skills/seo-audit/references/international-seo.md +0 -230
- package/bundled-skills/session-brain/SKILL.md +0 -101
- package/bundled-skills/session-search/SKILL.md +0 -97
- package/bundled-skills/social/SKILL.md +0 -413
- package/bundled-skills/social/evals/evals.json +0 -107
- package/bundled-skills/social/references/carousel-frameworks.md +0 -141
- package/bundled-skills/social/references/listening-sources-template.md +0 -123
- package/bundled-skills/social/references/listening.md +0 -283
- package/bundled-skills/social/references/platform-limits.md +0 -110
- package/bundled-skills/social/references/platforms.md +0 -170
- package/bundled-skills/social/references/post-templates.md +0 -179
- package/bundled-skills/social/references/reverse-engineering.md +0 -195
- package/bundled-skills/social/references/short-form-video.md +0 -237
- package/bundled-skills/tag-taxonomy/SKILL.md +0 -218
- package/bundled-skills/vault-skill-factory/SKILL.md +0 -143
- package/bundled-skills/video/SKILL.md +0 -346
- package/bundled-skills/video/evals/evals.json +0 -103
- package/bundled-skills/video/references/ai-video-prompting.md +0 -175
- package/bundled-skills/video/references/edit-anatomy.md +0 -84
- package/bundled-skills/wiki-agent/SKILL.md +0 -322
- package/bundled-skills/wiki-capture/SKILL.md +0 -337
- package/bundled-skills/wiki-capture/references/RAW-FORMAT.md +0 -115
- package/bundled-skills/wiki-context-pack/SKILL.md +0 -89
- package/bundled-skills/wiki-dashboard/SKILL.md +0 -472
- package/bundled-skills/wiki-dedup/SKILL.md +0 -320
- package/bundled-skills/wiki-digest/SKILL.md +0 -243
- package/bundled-skills/wiki-export/SKILL.md +0 -445
- package/bundled-skills/wiki-history-ingest/SKILL.md +0 -61
- package/bundled-skills/wiki-import/SKILL.md +0 -276
- package/bundled-skills/wiki-ingest/SKILL.md +0 -563
- package/bundled-skills/wiki-ingest/references/ingest-prompts.md +0 -54
- package/bundled-skills/wiki-ingest/references/pageindex.md +0 -72
- package/bundled-skills/wiki-ingest/references/url-sources.md +0 -295
- package/bundled-skills/wiki-lint/SKILL.md +0 -643
- package/bundled-skills/wiki-narrate/SKILL.md +0 -120
- package/bundled-skills/wiki-narrate/references/voices.md +0 -29
- package/bundled-skills/wiki-query/SKILL.md +0 -307
- package/bundled-skills/wiki-rebuild/SKILL.md +0 -212
- package/bundled-skills/wiki-research/SKILL.md +0 -319
- package/bundled-skills/wiki-setup/SKILL.md +0 -359
- package/bundled-skills/wiki-stage-commit/SKILL.md +0 -164
- package/bundled-skills/wiki-status/SKILL.md +0 -556
- package/bundled-skills/wiki-switch/SKILL.md +0 -115
- package/bundled-skills/wiki-synthesize/SKILL.md +0 -212
- package/bundled-skills/wiki-update/SKILL.md +0 -271
- package/skills/ai-security/SKILL.md +0 -132
- package/skills/ai-security/references/atlas-coverage.md +0 -60
- package/skills/ai-security/scripts/ai_threat_scanner.py +0 -373
- package/skills/anti-AI-design/SKILL.md +0 -72
- package/skills/apple-hig-audit/SKILL.md +0 -64
- package/skills/apple-hig-audit/references/accessibility.md +0 -78
- package/skills/apple-hig-audit/references/platform-specifics.md +0 -57
- package/skills/apple-hig-audit/references/visual-design.md +0 -68
- package/skills/apple-hig-audit/scripts/hig_checker.py +0 -115
- package/skills/apple-hig-audit/templates/hig-audit-template.md +0 -114
- package/skills/dependency-auditor/README.md +0 -98
- package/skills/dependency-auditor/SKILL.md +0 -114
- package/skills/dependency-auditor/assets/sample_go.mod +0 -53
- package/skills/dependency-auditor/assets/sample_package.json +0 -72
- package/skills/dependency-auditor/assets/sample_requirements.txt +0 -71
- package/skills/dependency-auditor/expected_outputs/sample_license_report.txt +0 -37
- package/skills/dependency-auditor/expected_outputs/sample_upgrade_plan.txt +0 -59
- package/skills/dependency-auditor/expected_outputs/sample_vulnerability_report.json +0 -71
- package/skills/dependency-auditor/references/dependency_management_best_practices.md +0 -46
- package/skills/dependency-auditor/references/license_compatibility_matrix.md +0 -57
- package/skills/dependency-auditor/references/vulnerability_assessment_guide.md +0 -62
- package/skills/dependency-auditor/scripts/dep_scanner.py +0 -595
- package/skills/dependency-auditor/scripts/license_checker.py +0 -442
- package/skills/dependency-auditor/scripts/upgrade_planner.py +0 -490
- package/skills/dependency-auditor/test-inventory.json +0 -421
- package/skills/dependency-auditor/test-project/package.json +0 -72
- package/skills/design-system-tokens/SKILL.md +0 -90
- package/skills/design-system-tokens/assets/design_system_doc_template.md +0 -129
- package/skills/design-system-tokens/references/component-architecture.md +0 -88
- package/skills/design-system-tokens/references/developer-handoff.md +0 -61
- package/skills/design-system-tokens/references/responsive-calculations.md +0 -72
- package/skills/design-system-tokens/references/token-generation.md +0 -62
- package/skills/design-system-tokens/scripts/design_token_generator.py +0 -315
- package/skills/engineering-code-standards/SKILL.md +0 -174
- package/skills/env-secrets-manager/SKILL.md +0 -102
- package/skills/env-secrets-manager/references/secret-patterns.md +0 -56
- package/skills/env-secrets-manager/references/validation-detection-rotation.md +0 -76
- package/skills/env-secrets-manager/scripts/env_auditor.py +0 -340
- package/skills/frontend-design-taste/SKILL.md +0 -62
- package/skills/mcp-server-builder/README.md +0 -42
- package/skills/mcp-server-builder/SKILL.md +0 -144
- package/skills/mcp-server-builder/references/openapi-extraction-guide.md +0 -34
- package/skills/mcp-server-builder/references/production-hardening-guide.md +0 -80
- package/skills/mcp-server-builder/references/python-server-template.md +0 -22
- package/skills/mcp-server-builder/references/spec-compatibility.md +0 -129
- package/skills/mcp-server-builder/references/typescript-server-template.md +0 -19
- package/skills/mcp-server-builder/references/validation-checklist.md +0 -30
- package/skills/mcp-server-builder/scripts/mcp_validator.py +0 -180
- package/skills/mcp-server-builder/scripts/openapi_to_mcp.py +0 -279
- package/skills/playwright-agent/SKILL.md +0 -147
- package/skills/skill-creator/LICENSE.txt +0 -14
- package/skills/skill-creator/SKILL.md +0 -471
- package/skills/skill-creator/agents/analyzer.md +0 -274
- package/skills/skill-creator/agents/comparator.md +0 -202
- package/skills/skill-creator/agents/grader.md +0 -223
- package/skills/skill-creator/assets/eval_review.html +0 -143
- package/skills/skill-creator/eval-viewer/generate_review.py +0 -471
- package/skills/skill-creator/eval-viewer/viewer.html +0 -1321
- package/skills/skill-creator/references/schemas.md +0 -430
- package/skills/skill-creator/scripts/__init__.py +0 -0
- package/skills/skill-creator/scripts/aggregate_benchmark.py +0 -401
- package/skills/skill-creator/scripts/generate_report.py +0 -322
- package/skills/skill-creator/scripts/improve_description.py +0 -247
- package/skills/skill-creator/scripts/package_skill.py +0 -136
- package/skills/skill-creator/scripts/quick_validate.py +0 -103
- package/skills/skill-creator/scripts/run_eval.py +0 -310
- package/skills/skill-creator/scripts/run_loop.py +0 -328
- package/skills/skill-creator/scripts/utils.py +0 -47
- package/skills/write-a-skill/SKILL.md +0 -111
- package/skills/write-a-skill/references/companion_tooling.md +0 -61
- package/skills/write-a-skill/references/description_design_patterns.md +0 -136
- package/skills/write-a-skill/references/progressive_disclosure_principles.md +0 -87
- package/skills/write-a-skill/references/quality_gates_for_skills.md +0 -158
- package/skills/write-a-skill/scripts/skill_description_validator.py +0 -241
- package/skills/write-a-skill/scripts/skill_review_checklist_runner.py +0 -257
- package/skills/write-a-skill/scripts/skill_structure_validator.py +0 -265
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "code-standards"
|
|
3
|
+
description: "Pragmatic engineering standards for production code: deep modules over micro-functions, review bar that improves code health, ASVS-aligned security checks, naming and error handling, test strategy. Use when writing or reviewing application code, setting a team style, or checking a PR against a shared bar. Prefer trade-offs over Clean Code dogma."
|
|
4
|
+
license: "Apache-2.0"
|
|
5
|
+
metadata:
|
|
6
|
+
author: Novahiz
|
|
7
|
+
organization: Novahiz
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
date: September 2026
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# code-standards
|
|
13
|
+
|
|
14
|
+
A shared bar for code that other people will read and change. Optimize for change cost and debuggability. Line counts and rule purity are secondary.
|
|
15
|
+
|
|
16
|
+
## Review standard (Google eng-practices shape)
|
|
17
|
+
|
|
18
|
+
Approve a change when it improves overall code health, even if it is imperfect. Do not block for weeks chasing polish. Technical facts and the style guide beat personal taste.
|
|
19
|
+
|
|
20
|
+
Blocking:
|
|
21
|
+
|
|
22
|
+
- Makes the system worse (unclear ownership of a bug fix, silent behavior change without tests).
|
|
23
|
+
- Security or data-loss risk with no mitigation in the PR.
|
|
24
|
+
- Breaks the agreed style guide where the guide already speaks.
|
|
25
|
+
|
|
26
|
+
Non-blocking (mark as nit):
|
|
27
|
+
|
|
28
|
+
- Naming and formatting the guide does not cover.
|
|
29
|
+
- “Could be nicer” refactors that belong in a follow-up.
|
|
30
|
+
- Educational comments that do not change the decision.
|
|
31
|
+
|
|
32
|
+
Escalate when author and reviewer disagree after one round. Do not let a PR idle.
|
|
33
|
+
|
|
34
|
+
## Design: depth over micro-cuts
|
|
35
|
+
|
|
36
|
+
A module earns its place when a simple interface hides real work (deep module). Splitting every helper into three lines usually creates entanglement: the reader flips between files to understand one path.
|
|
37
|
+
|
|
38
|
+
- Prefer one clear function that does the job over a constellation of one-liners.
|
|
39
|
+
- Extract when the interface is simpler than the body. A length rule alone is a weak reason.
|
|
40
|
+
- Duplication that is still evolving may stay until a stable abstraction appears.
|
|
41
|
+
- Comments explain contracts and non-obvious why. Restating the function name in a comment is noise.
|
|
42
|
+
|
|
43
|
+
## Naming and structure
|
|
44
|
+
|
|
45
|
+
- Names use the problem domain (`postPayment`, not `handleThing3`).
|
|
46
|
+
- Command or query: a function does something or answers something. A method that both mutates and returns a “status” confuses every caller.
|
|
47
|
+
- Module boundaries match change ownership. Cross-module edits without a contract change are a smell.
|
|
48
|
+
- Error handling returns enough context to act. Swallowed exceptions and bare `null` returns hide production incidents.
|
|
49
|
+
|
|
50
|
+
## Security floor (ASVS-shaped)
|
|
51
|
+
|
|
52
|
+
Pick an ASVS level per app (L1 minimum, L2 for sensitive data). At every level:
|
|
53
|
+
|
|
54
|
+
- Validate untrusted input on a trusted server path; encode output for the interpreter that will run it.
|
|
55
|
+
- Auth and session checks on every non-public resource; deny by default.
|
|
56
|
+
- Secrets never in source; load from a secret store or env injected by the platform.
|
|
57
|
+
- Log security-relevant events without writing passwords, tokens, or full PII into logs.
|
|
58
|
+
- HTTPS and pinned or well-known trust for outbound calls.
|
|
59
|
+
|
|
60
|
+
Architecture checks (threat model, trust boundaries) belong in design review as well as in CI.
|
|
61
|
+
|
|
62
|
+
## Testing bar
|
|
63
|
+
|
|
64
|
+
- Behavior-changing code ships with tests that fail if the behavior regresses.
|
|
65
|
+
- Unit tests are fast, independent, repeatable, self-validating.
|
|
66
|
+
- Integration tests cover the seams that unit tests fake (DB, auth, queues).
|
|
67
|
+
- Flaky tests are bugs. Quarantine with a ticket or fix; do not re-run until green and forget.
|
|
68
|
+
|
|
69
|
+
## When style fights the codebase
|
|
70
|
+
|
|
71
|
+
The style guide wins on covered points. On uncovered points, match existing code unless the change makes health worse. Automate what reviewers keep repeating (linters, formatters); a PR that only argues whitespace is a tooling gap.
|
|
72
|
+
|
|
73
|
+
## Checklist (PR)
|
|
74
|
+
|
|
75
|
+
- [ ] Intent clear from title and first screen of the diff.
|
|
76
|
+
- [ ] Correctness: edge cases, empty inputs, concurrent use if relevant.
|
|
77
|
+
- [ ] Tests for behavior change; assertions match user-visible outcomes.
|
|
78
|
+
- [ ] No secret, token, or PII in code or logs.
|
|
79
|
+
- [ ] Names and structure match the domain; no dead branches.
|
|
80
|
+
- [ ] Error paths return actionable information.
|
|
81
|
+
- [ ] Docs or migration notes when public interfaces move.
|
|
82
|
+
|
|
83
|
+
## Sources
|
|
84
|
+
|
|
85
|
+
Google Engineering Practices (code review standard); OWASP ASVS 4.0 levels and control chapters; A Philosophy of Software Design (deep modules); Pragmatic Programmer patterns. Original Novahiz synthesis; no upstream skill text.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# PR review worksheet
|
|
2
|
+
|
|
3
|
+
Copy into the review or keep beside the checklist in SKILL.md.
|
|
4
|
+
|
|
5
|
+
## Change
|
|
6
|
+
|
|
7
|
+
- Title / ticket:
|
|
8
|
+
- Surface touched (api, ui, data, infra):
|
|
9
|
+
- ASVS level targeted (1 / 2 / 3):
|
|
10
|
+
|
|
11
|
+
## Blocking
|
|
12
|
+
|
|
13
|
+
| Finding | Evidence (file:line) | Fix direction |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| | | |
|
|
16
|
+
|
|
17
|
+
## Non-blocking (nit)
|
|
18
|
+
|
|
19
|
+
-
|
|
20
|
+
|
|
21
|
+
## Security spot-check
|
|
22
|
+
|
|
23
|
+
- [ ] Input validated where untrusted data enters
|
|
24
|
+
- [ ] Output encoded for the right sink
|
|
25
|
+
- [ ] Authz on every new route or mutation
|
|
26
|
+
- [ ] No secrets or raw PII in code, tests, or logs
|
|
27
|
+
- [ ] Dependencies pinned; lockfile updated if deps changed
|
|
28
|
+
|
|
29
|
+
## Decision
|
|
30
|
+
|
|
31
|
+
- [ ] Approve
|
|
32
|
+
- [ ] Request changes (list blockers only)
|
|
33
|
+
- [ ] Comment (questions, follow-up ticket)
|
|
34
|
+
|
|
35
|
+
Escalation if disagreement remains after one clarifying round: tech lead or codeowner, same day.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "design-token-pipeline"
|
|
3
|
+
description: "Design token architecture and pipeline: DTCG 2025.10 format ($value/$type/aliases), base/semantic/component layers, Style Dictionary v4 builds, Figma Variables round-trip, theming and governance. Use when creating or migrating token files, CSS custom properties from a system, multi-brand themes, or design-dev handoff of color/type/spacing."
|
|
4
|
+
license: "Apache-2.0"
|
|
5
|
+
metadata:
|
|
6
|
+
author: Novahiz
|
|
7
|
+
organization: Novahiz
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
date: September 2026
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# design-token-pipeline
|
|
13
|
+
|
|
14
|
+
Tokens are the contract between design tools and shipped code. This skill covers the format, the layer model, the build, and the governance rules the format does not prescribe.
|
|
15
|
+
|
|
16
|
+
## Format: DTCG 2025.10
|
|
17
|
+
|
|
18
|
+
Stable spec from the W3C Design Tokens Community Group (October 2025). Prefer it for new files.
|
|
19
|
+
|
|
20
|
+
| Property | Role |
|
|
21
|
+
|---|---|
|
|
22
|
+
| `$value` | The value (reserved word) |
|
|
23
|
+
| `$type` | Kind: `color`, `dimension`, `fontFamily`, `fontWeight`, `duration`, `cubicBezier`, `number`, `string`, `boolean`, `strokeStyle`, `border`, `transition`, `shadow`, `gradient`, `typography`, `fontStyle` |
|
|
24
|
+
| `$description` | Human doc that travels with the token |
|
|
25
|
+
| `$extensions` | Vendor/team metadata, namespaced keys |
|
|
26
|
+
|
|
27
|
+
- Spec keys use `$`. Token and group names must not start with `$`.
|
|
28
|
+
- A token is an object with `$value`. Without it, the object is a group.
|
|
29
|
+
- Groups may set `$type` (inherited), `$description`, `$deprecated`, `$extends`, `$root`.
|
|
30
|
+
- Aliases: `{color.brand.blue}` curly-brace path references.
|
|
31
|
+
- Colors in 2025.10 are objects with a colour space plus components (`srgb`, `hsl`, `hwb`, `lab`, `lch`, `oklab`, `oklch`), not bare hex. Keep an optional hex only as a fallback for old tools.
|
|
32
|
+
- Do not put `{` `}` `.` in token/group names (alias and path rules).
|
|
33
|
+
|
|
34
|
+
Style Dictionary v4 reads DTCG natively. Full 2025.10 colour-object support is still landing in v5; check the version you pin before migrating hex-only colour tokens.
|
|
35
|
+
|
|
36
|
+
## Layer model (the spec does not mandate one)
|
|
37
|
+
|
|
38
|
+
The spec standardizes the container. Layering is your architecture decision. The common stack:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
base (primitives) → semantic (intent) → component (instance)
|
|
42
|
+
#bada55 color.accent.brand button.primary.bg
|
|
43
|
+
spacing.4 text.muted card.padding
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
| Layer | Names answer | Change cost |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| Base | What is the literal? | Low (internal) |
|
|
49
|
+
| Semantic | What is it for? | Medium (meaning is public) |
|
|
50
|
+
| Component | Which control? | High (scattered consumers) |
|
|
51
|
+
|
|
52
|
+
Reference upward with aliases. Theme swaps change base (or a semantic override set), not each component file.
|
|
53
|
+
|
|
54
|
+
`outputReferences: true` in Style Dictionary keeps `var(--…)` chains in CSS when base and semantic ship in the same bundle. Hardcode when a semantic file must stand alone.
|
|
55
|
+
|
|
56
|
+
## Pipeline shape
|
|
57
|
+
|
|
58
|
+
1. Author tokens in DTCG JSON (Figma Variables export or hand-maintained).
|
|
59
|
+
2. Validate against the format (structure, types, unresolved aliases).
|
|
60
|
+
3. Build with Style Dictionary (or Terrazzo): transforms per platform.
|
|
61
|
+
4. Emit CSS custom properties, iOS/Android/Flutter sources as needed.
|
|
62
|
+
5. Point components only at semantic (or component) names, never raw hex in JSX.
|
|
63
|
+
|
|
64
|
+
Multi-platform: DTCG `dimension` has `px`/`rem`/`em`, not iOS `pt` or Android `dp`. Conversion is an explicit transform step with a documented ratio.
|
|
65
|
+
|
|
66
|
+
## Governance (outside the spec)
|
|
67
|
+
|
|
68
|
+
- Who may add a semantic token? Review rule in the repo.
|
|
69
|
+
- Deprecate with `$deprecated`, do not leave `blue-v2-new` beside `blue`.
|
|
70
|
+
- One naming dialect documented (e.g. `color.text.muted`, not mixed `--textColorMuted` and `color-text-muted` at the same layer).
|
|
71
|
+
- Delete unused base tokens on a schedule; cruft accumulates silently.
|
|
72
|
+
|
|
73
|
+
## Checklist
|
|
74
|
+
|
|
75
|
+
- [ ] New work is DTCG-shaped (`$value` / `$type`), not legacy `value`/`type`.
|
|
76
|
+
- [ ] Three layers (or a documented reason for fewer).
|
|
77
|
+
- [ ] Components import semantic names only.
|
|
78
|
+
- [ ] Light/dark (and brand) are data, not forked component CSS.
|
|
79
|
+
- [ ] Alias graph resolves; no circular references.
|
|
80
|
+
- [ ] Platform transforms documented for non-web targets.
|
|
81
|
+
- [ ] Governance rule written where contributors will see it.
|
|
82
|
+
|
|
83
|
+
## Sources
|
|
84
|
+
|
|
85
|
+
Design Tokens Format Module 2025.10 (designtokens.org), Style Dictionary DTCG docs, W3C Design Tokens CG announcements, Nathan Curtis / Cosima writing on token naming layers. Original Novahiz synthesis.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$description": "Example DTCG 2025.10 snippet: base → semantic → component aliases.",
|
|
3
|
+
"color": {
|
|
4
|
+
"base": {
|
|
5
|
+
"$type": "color",
|
|
6
|
+
"brand": {
|
|
7
|
+
"600": {
|
|
8
|
+
"$value": { "colorSpace": "oklch", "components": [0.55, 0.15, 250] },
|
|
9
|
+
"$description": "Primary brand",
|
|
10
|
+
"$extensions": { "novahiz.fallbackHex": "#3B5BDB" }
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"neutral": {
|
|
14
|
+
"0": { "$value": { "colorSpace": "oklch", "components": [1, 0, 0] } },
|
|
15
|
+
"900": { "$value": { "colorSpace": "oklch", "components": [0.2, 0.02, 250] } }
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"semantic": {
|
|
19
|
+
"text": {
|
|
20
|
+
"default": { "$value": "{color.base.neutral.900}", "$type": "color" },
|
|
21
|
+
"muted": {
|
|
22
|
+
"$value": "{color.base.neutral.900}",
|
|
23
|
+
"$type": "color",
|
|
24
|
+
"$description": "Secondary text; raise contrast if it drops below AA"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"action": {
|
|
28
|
+
"primary": { "$value": "{color.base.brand.600}", "$type": "color" }
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"button": {
|
|
33
|
+
"primary": {
|
|
34
|
+
"bg": { "$value": "{color.semantic.action.primary}", "$type": "color" }
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "llm-threat-review"
|
|
3
|
+
description: "Security review for LLM and agent features: OWASP LLM Top 10 2025, MITRE ATLAS technique mapping, prompt injection and excessive agency checks, tool least privilege, output handling, logging. Use when designing or reviewing chat, RAG, or agentic code paths, before ship or during threat modeling."
|
|
4
|
+
license: "Apache-2.0"
|
|
5
|
+
metadata:
|
|
6
|
+
author: Novahiz
|
|
7
|
+
organization: Novahiz
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
date: September 2026
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# llm-threat-review
|
|
13
|
+
|
|
14
|
+
Review checklist for systems that call a model, retrieve context, or let a model call tools. Findings carry severity and a control. Score against OWASP LLM Top 10 (2025) and map to MITRE ATLAS where a technique id helps.
|
|
15
|
+
|
|
16
|
+
## Scope
|
|
17
|
+
|
|
18
|
+
Chat UIs, RAG pipelines, agent loops, tool/function calling, fine-tunes that ingest user data. Classic web vulns in the host app stay with `novahiz-security` / ASVS work; this skill covers the model surface.
|
|
19
|
+
|
|
20
|
+
## 1. Threat model first
|
|
21
|
+
|
|
22
|
+
Answer before listing controls:
|
|
23
|
+
|
|
24
|
+
1. What private data can the model read?
|
|
25
|
+
2. What untrusted content enters the prompt (user text, web, email, tickets, files)?
|
|
26
|
+
3. What can the model do (call tools, write, spend, message)?
|
|
27
|
+
4. Where does output go (user, HTML, SQL, shell, another model)?
|
|
28
|
+
|
|
29
|
+
If one path combines private data, untrusted content, and an external action, treat it as critical. That combination is the lethal trifecta agents often assemble by default.
|
|
30
|
+
|
|
31
|
+
## 2. OWASP LLM 2025 map (review each)
|
|
32
|
+
|
|
33
|
+
| ID | Risk | Review question | Typical control |
|
|
34
|
+
|---|---|---|---|
|
|
35
|
+
| LLM01 | Prompt injection | Can user or retrieved text override system rules? | Separate instruction from data; ignore embedded orders; HITL on high-impact tools |
|
|
36
|
+
| LLM02 | Sensitive info disclosure | Can the model echo secrets, PII, or system prompt? | Redact before send; restrict what the system prompt may contain; output filters |
|
|
37
|
+
| LLM03 | Supply chain | Where do models, plugins, and datasets come from? | Pin versions; verify hashes/signatures; vendor review; SBOM/ML-BOM |
|
|
38
|
+
| LLM04 | Data and model poisoning | Can training, fine-tune, or RAG data be poisoned? | Provenance on data; sandbox imports; monitor eval regressions |
|
|
39
|
+
| LLM05 | Improper output handling | Is model output fed to interpreter, SQL, or browser without checks? | Parameterized queries; HTML sanitize; no raw shell from model text |
|
|
40
|
+
| LLM06 | Excessive agency | Do tools run with more privilege than the task needs? | Least-privilege tokens; allowlists; confirm destructive calls |
|
|
41
|
+
| LLM07 | System prompt leakage | Is the system prompt secret that matters? | Keep secrets out of the prompt; accept that prompts leak if treated as public |
|
|
42
|
+
| LLM08 | Vector and embedding weaknesses | Who can poison or read the vector store? | Tenant isolation; authz on retrieval; tamper checks on indexes |
|
|
43
|
+
| LLM09 | Misinformation | Where does unverified model text become a decision? | Grounding; citations; human review for high-stakes answers |
|
|
44
|
+
| LLM10 | Unbounded consumption | Can an attacker burn tokens or loop tools? | Rate limits; budgets; max steps; circuit breakers |
|
|
45
|
+
|
|
46
|
+
## 3. Injection and jailbreak defenses
|
|
47
|
+
|
|
48
|
+
No single filter stops all injection. Layer:
|
|
49
|
+
|
|
50
|
+
- Constrain role and allowed topics in the system prompt; instruct the model to treat retrieved content as data.
|
|
51
|
+
- Structure prompts so instructions and untrusted content are visually and logically separate (tags, fields).
|
|
52
|
+
- Deterministic validation of output shape (JSON schema, enums) before side effects.
|
|
53
|
+
- Input screening (pattern + optional classifier) on user text and on every external chunk (web, email, tickets).
|
|
54
|
+
- Output screening before render or tool call; block exfil patterns and unexpected tool names.
|
|
55
|
+
- Human approval for money, deletes, production deploys, mass messages.
|
|
56
|
+
- Rate limit and anomaly-log multi-turn and encoded payloads (base64, zero-width, homoglyphs).
|
|
57
|
+
|
|
58
|
+
Treat regex alone as weak against creative obfuscation. Best-of-N style attacks eventually slip past static filters; budget and monitoring matter as much as the filter.
|
|
59
|
+
|
|
60
|
+
## 4. Agency and tools
|
|
61
|
+
|
|
62
|
+
- Each tool gets the minimum scope (read vs write, record-level limits).
|
|
63
|
+
- Prefer app-held credentials over passing API keys into the prompt.
|
|
64
|
+
- Dual pattern when stakes are high: one process reads untrusted content, another holds tools and only receives structured summaries.
|
|
65
|
+
- Max iteration count and wall-clock budget per user session.
|
|
66
|
+
- Log every tool call with actor, arguments hash, and outcome.
|
|
67
|
+
|
|
68
|
+
## 5. Output handling
|
|
69
|
+
|
|
70
|
+
Model text is untrusted input to the next system:
|
|
71
|
+
|
|
72
|
+
- HTML: sanitize allowlists before DOM insert.
|
|
73
|
+
- SQL: parameterize; never interpolate model identifiers into DDL.
|
|
74
|
+
- Shell: do not execute model-authored commands without an allowlist and sandbox.
|
|
75
|
+
- URLs: validate scheme and host before fetch (SSRF discipline).
|
|
76
|
+
|
|
77
|
+
## 6. Logging and redaction
|
|
78
|
+
|
|
79
|
+
Log prompts and outputs for incident work, but redact secrets and unnecessary PII. Alert on: tool calls outside the user’s role, repeated injection-shaped inputs, sudden token spend.
|
|
80
|
+
|
|
81
|
+
## Report format
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
## LLM threat review
|
|
85
|
+
Verdict: PASS | PASS_WITH_FIXES | FAIL
|
|
86
|
+
|
|
87
|
+
### Findings
|
|
88
|
+
- [HIGH|MED|LOW] area : finding (OWASP LLMxx / ATLAS AML.Txxxx if known)
|
|
89
|
+
Control: ...
|
|
90
|
+
|
|
91
|
+
### Accepted risk
|
|
92
|
+
- ...
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Every finding names a concrete path (route, tool, retrieval source).
|
|
96
|
+
|
|
97
|
+
## Sources
|
|
98
|
+
|
|
99
|
+
OWASP Top 10 for LLM Applications 2025 (genai.owasp.org); OWASP LLM Prompt Injection Prevention Cheat Sheet; MITRE ATLAS technique data (AML.T0051 family, agent tool techniques); BSI guidance on evasion attacks. Original Novahiz checklist synthesis.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# LLM review worksheet
|
|
2
|
+
|
|
3
|
+
## Inventory
|
|
4
|
+
|
|
5
|
+
| Path | Model | Tools | Untrusted in | Output sink |
|
|
6
|
+
|---|---|---|---|---|
|
|
7
|
+
| | | | | |
|
|
8
|
+
|
|
9
|
+
## Lethal trifecta
|
|
10
|
+
|
|
11
|
+
- [ ] Private data in context
|
|
12
|
+
- [ ] Untrusted content in context
|
|
13
|
+
- [ ] External action or exfil channel
|
|
14
|
+
|
|
15
|
+
If all three: severity floor HIGH until a control breaks the chain.
|
|
16
|
+
|
|
17
|
+
## Findings
|
|
18
|
+
|
|
19
|
+
| ID | Severity | Control |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| LLM01 | | |
|
|
22
|
+
| LLM05 | | |
|
|
23
|
+
| LLM06 | | |
|
|
24
|
+
| LLM10 | | |
|
|
25
|
+
|
|
26
|
+
## Sign-off
|
|
27
|
+
|
|
28
|
+
- [ ] Tool scopes minimal and tested
|
|
29
|
+
- [ ] HITL on destructive tools
|
|
30
|
+
- [ ] Output sanitization for the real sink
|
|
31
|
+
- [ ] Budgets and rate limits on
|
|
32
|
+
- [ ] Logs redacted
|
|
33
|
+
|
|
34
|
+
Verdict: PASS | PASS_WITH_FIXES | FAIL
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* llm-threat-review: static heuristics on prompt/tool code paths.
|
|
4
|
+
* Flags high-risk patterns for human review. Not a proof of safety.
|
|
5
|
+
*
|
|
6
|
+
* Usage: node scripts/llm_risk_lint.mjs <file-or-dir> [...]
|
|
7
|
+
* Exit 1 if any HIGH finding.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { readFileSync, readdirSync, statSync } from "node:fs";
|
|
11
|
+
import { join, extname } from "node:path";
|
|
12
|
+
|
|
13
|
+
const EXTS = new Set([".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".py"]);
|
|
14
|
+
|
|
15
|
+
const RULES = [
|
|
16
|
+
{
|
|
17
|
+
id: "tool-shell-from-model",
|
|
18
|
+
level: "HIGH",
|
|
19
|
+
re: /exec(?:Sync)?\s*\(\s*(?:result|output|completion|text|message)|child_process[\s\S]{0,120}(?:result|completion|modelOutput)/i,
|
|
20
|
+
msg: "Possible shell exec of model output",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: "sql-interpolate-model",
|
|
24
|
+
level: "HIGH",
|
|
25
|
+
re: /(?:query|execute|raw)\s*\(\s*[`'"](?:SELECT|INSERT|UPDATE|DELETE)[\s\S]{0,80}(?:\$\{|output|completion|model)/i,
|
|
26
|
+
msg: "Possible SQL built from model text",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: "html-inject-model",
|
|
30
|
+
level: "HIGH",
|
|
31
|
+
re: /innerHTML\s*=\s*(?:result|output|completion|message\.(?:content|text))|dangerouslySetInnerHTML\s*\{\s*__html:\s*(?:result|output|completion)/i,
|
|
32
|
+
msg: "Model output assigned to HTML sink without visible sanitize",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: "system-prompt-secret",
|
|
36
|
+
level: "HIGH",
|
|
37
|
+
re: /system(?:Prompt|_prompt)?[\s\S]{0,80}(?:API_KEY|SECRET|PASSWORD|PRIVATE_KEY)\s*=/i,
|
|
38
|
+
msg: "Credential-like value near system prompt (LLM07)",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: "unbounded-agent-loop",
|
|
42
|
+
level: "MED",
|
|
43
|
+
re: /while\s*\(\s*true\s*\)[\s\S]{0,200}(?:tool|agent|llm|openai|anthropic)/i,
|
|
44
|
+
msg: "Unbounded loop around agent/tool calls (LLM10)",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: "tool-all-scope",
|
|
48
|
+
level: "MED",
|
|
49
|
+
re: /scope:\s*['"][\w:.*]+\s*\*/i,
|
|
50
|
+
msg: "Wildcard scope on credential or tool",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: "fetch-untrusted-url",
|
|
54
|
+
level: "MED",
|
|
55
|
+
re: /fetch\s*\(\s*(?:url|href|link|inputUrl)\b/i,
|
|
56
|
+
msg: "Fetch of caller-controlled URL; check SSRF allowlist",
|
|
57
|
+
},
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
function walk(path, out = []) {
|
|
61
|
+
const st = statSync(path);
|
|
62
|
+
if (st.isDirectory()) {
|
|
63
|
+
for (const name of readdirSync(path)) {
|
|
64
|
+
if (name === "node_modules" || name === ".git" || name === "dist") continue;
|
|
65
|
+
walk(join(path, name), out);
|
|
66
|
+
}
|
|
67
|
+
} else if (EXTS.has(extname(path).toLowerCase())) {
|
|
68
|
+
out.push(path);
|
|
69
|
+
}
|
|
70
|
+
return out;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function scanFile(file) {
|
|
74
|
+
const text = readFileSync(file, "utf8");
|
|
75
|
+
const findings = [];
|
|
76
|
+
for (const rule of RULES) {
|
|
77
|
+
const m = rule.re.exec(text);
|
|
78
|
+
if (m) {
|
|
79
|
+
const line = text.slice(0, m.index).split(/\r?\n/).length;
|
|
80
|
+
findings.push({ file, line, ...rule });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return findings;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const roots = process.argv.slice(2);
|
|
87
|
+
if (roots.length === 0) {
|
|
88
|
+
console.error("usage: node scripts/llm_risk_lint.mjs <file-or-dir> [...]");
|
|
89
|
+
process.exit(2);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const files = roots.flatMap((r) => walk(r));
|
|
93
|
+
const all = files.flatMap(scanFile);
|
|
94
|
+
const byLevel = { HIGH: [], MED: [], LOW: [] };
|
|
95
|
+
for (const f of all) byLevel[f.level].push(f);
|
|
96
|
+
|
|
97
|
+
for (const level of ["HIGH", "MED", "LOW"]) {
|
|
98
|
+
for (const f of byLevel[level]) {
|
|
99
|
+
console.log(`${level}\t${f.id}\t${f.file}:${f.line}\t${f.msg}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const high = byLevel.HIGH.length;
|
|
104
|
+
console.error(`llm_risk_lint: ${files.length} files, ${all.length} findings (${high} HIGH)`);
|
|
105
|
+
process.exit(high > 0 ? 1 : 0);
|
|
@@ -45,7 +45,7 @@ Agent memory is never evidence. If a claim cannot be traced to one of the four s
|
|
|
45
45
|
|
|
46
46
|
Fourteen categories are checked when encountered: `code`, `debug`, `review`, `audit`, `browser`, `design-ui`, `database-supabase`, `docs-writing`, `planning`, `devops`, `data`, `test`, `security`, `general`.
|
|
47
47
|
|
|
48
|
-
`general` carries the rules that apply everywhere (
|
|
48
|
+
`general` carries the rules that apply everywhere (honesty, todo discipline). Design skills (`novahiz-humanizer`, `ui-slop-remover`) are checked only under `design-ui`. A category not in the list falls back to `general` only.
|
|
49
49
|
|
|
50
50
|
## Rules of the audit
|
|
51
51
|
|
|
@@ -26,10 +26,11 @@ Le gate pose une seule question : les skills exigées par le contexte sont-elles
|
|
|
26
26
|
|
|
27
27
|
| Règle | Se déclenche sur | Exige |
|
|
28
28
|
|---|---|---|
|
|
29
|
-
|
|
|
30
|
-
| R1-code-prose | code ou design dont le contenu porte de la prose | `novahiz-humanizer` |
|
|
29
|
+
| R13-design-craft | tâche design frontend (catégorie design-ui, fichiers style css/scss/html/…) | `novahiz-humanizer`, `ui-slop-remover`, `ui-craft-rules` |
|
|
31
30
|
| R3-supabase | chemin `**/supabase/**` ou `**/migrations/**`, catégorie `database-supabase` | `supabase`, `supabase-postgres-best-practices` |
|
|
32
31
|
|
|
32
|
+
Hors design frontend, `novahiz-humanizer` et `ui-slop-remover` ne sont plus exigés par le gate.
|
|
33
|
+
|
|
33
34
|
**Les étapes de roadmap** (`catalog/categories.json`) : seules celles marquées `kind: "skill"` sans `optional` bloquent. Les étapes `edit`, `verify` et `advisory` apparaissent dans `requiredSkills` mais ne refusent rien.
|
|
34
35
|
|
|
35
36
|
## Sémantique de l'index (gate.ts, lignes 229 à 236)
|
|
@@ -50,11 +51,11 @@ Trois conséquences à connaître :
|
|
|
50
51
|
```json
|
|
51
52
|
{
|
|
52
53
|
"allow": false,
|
|
53
|
-
"missingSkills": ["humanizer"],
|
|
54
|
+
"missingSkills": ["novahiz-humanizer", "ui-slop-remover"],
|
|
54
55
|
"indexMissing": false,
|
|
55
56
|
"targets": [{
|
|
56
|
-
"path": "...", "fileClass": "
|
|
57
|
-
"matchedRules": ["
|
|
57
|
+
"path": "...", "fileClass": "design", "roadmap": "design",
|
|
58
|
+
"matchedRules": ["R13-design-craft"], "reasons": ["missing skill: novahiz-humanizer"]
|
|
58
59
|
}]
|
|
59
60
|
}
|
|
60
61
|
```
|
|
@@ -67,7 +68,7 @@ Charger chaque skill manquante avec `skill({name})`. Le chargement est enregistr
|
|
|
67
68
|
|
|
68
69
|
## Contournement
|
|
69
70
|
|
|
70
|
-
Le seul prévu par le code : `
|
|
71
|
+
Le seul prévu par le code : `NOVAHIZ_GATE=off` (ou `0`, `false`, `no`, `disabled`) dans l'environnement. Le nom de la variable est codé en dur (le champ `gate.envEscape` de la config ne le redirige pas). L'utilisateur peut aussi demander explicitement de passer outre. Dans les deux cas, la dérogation se dit à voix haute et se rattrape après coup. Le jugement de l'agent n'est pas un contournement valide.
|
|
71
72
|
|
|
72
73
|
## Anti-patterns
|
|
73
74
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: novahiz-humanizer
|
|
3
|
-
description: "Remove AI writing patterns from text. Rewrite AI-sounding prose so it reads like the human writer: not-X-but-Y contrasts, forced triads, em dashes, chatbot residue, inflated significance, and statistical tells. Use novahiz-humanizer on
|
|
3
|
+
description: "Remove AI writing patterns from text. Rewrite AI-sounding prose so it reads like the human writer: not-X-but-Y contrasts, forced triads, em dashes, chatbot residue, inflated significance, and statistical tells. Use novahiz-humanizer on frontend design tasks (R13); it is not required by the gate outside design."
|
|
4
4
|
license: MIT
|
|
5
5
|
metadata:
|
|
6
6
|
author: Novahiz
|
|
@@ -47,7 +47,7 @@ novahiz_task action="done" id="<todo>" proof="<command and result>"
|
|
|
47
47
|
|
|
48
48
|
## The gate will trigger
|
|
49
49
|
|
|
50
|
-
Writing code fires rules
|
|
50
|
+
Writing code fires rules. On frontend design work, R13 requires `novahiz-humanizer`, `ui-slop-remover` and `ui-craft-rules`. Outside design, those skills are not required by the gate. Load design skills before writing, ahead of the refusal.
|
|
51
51
|
|
|
52
52
|
## Writing rules
|
|
53
53
|
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: novahiz-init
|
|
3
|
+
description: |
|
|
4
|
+
novahiz-init bootstraps Novahiz inside a project: memory skeleton, novahiz-docs/,
|
|
5
|
+
deep read of the codebase, documentation fill-in, and a reviewed cleanup list.
|
|
6
|
+
Use when the user says "/novahiz init", "init novahiz", "initialize novahiz in this project",
|
|
7
|
+
"set up project docs and memory", or wants a one-shot project onboarding.
|
|
8
|
+
license: Apache-2.0
|
|
9
|
+
compatibility: opencode
|
|
10
|
+
metadata:
|
|
11
|
+
author: Novahiz
|
|
12
|
+
organization: Novahiz
|
|
13
|
+
version: "1.0.0"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# novahiz-init
|
|
17
|
+
|
|
18
|
+
One entry point to bring Novahiz into the current project: scaffold first, then deepen with an agent read.
|
|
19
|
+
|
|
20
|
+
## When to run
|
|
21
|
+
|
|
22
|
+
- `/novahiz init` or `novahiz init` in the project root
|
|
23
|
+
- A new repo needs docs + `project-memory/`
|
|
24
|
+
- Docs or memory are missing after a clone
|
|
25
|
+
|
|
26
|
+
Do **not** use this to install Novahiz on the machine. That stays `novahiz setup` / `install.mjs`.
|
|
27
|
+
|
|
28
|
+
## Pipeline
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
1. CLI scaffold novahiz init [--dry-run] [--docs-only|--memory-only]
|
|
32
|
+
2. Deep read novahiz-analyse on the real code
|
|
33
|
+
3. Fill docs novahiz-docs templates already created by CLI
|
|
34
|
+
4. Seed memory memory_write a baseline slot from findings
|
|
35
|
+
5. Cleanup review confirm list, then novahiz init --apply --json
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 1. Scaffold (CLI, deterministic)
|
|
39
|
+
|
|
40
|
+
From the project root:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
novahiz init --dry-run --json
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Review the plan, then run without `--dry-run` unless the user only wanted a preview.
|
|
47
|
+
|
|
48
|
+
Flags:
|
|
49
|
+
|
|
50
|
+
| Flag | Effect |
|
|
51
|
+
|---|---|
|
|
52
|
+
| `--dry-run` | Print steps and cleanup candidates, write nothing |
|
|
53
|
+
| `--docs-only` | Only `novahiz-docs/` |
|
|
54
|
+
| `--memory-only` | Only `project-memory/` |
|
|
55
|
+
| `--no-seed` | Create memory root without the baseline slot |
|
|
56
|
+
| `--apply` | Delete the listed cleanup candidates (never without review) |
|
|
57
|
+
| `--json` | Machine-readable result |
|
|
58
|
+
|
|
59
|
+
The CLI creates:
|
|
60
|
+
|
|
61
|
+
- `project-memory/index.json` + `slots/` (plus one baseline slot unless `--no-seed`)
|
|
62
|
+
- `novahiz-docs/{ARCHITECTURE,CONVENTIONS,DECISIONS,STANDARDS}.md` from the `novahiz-docs` templates when the folder is absent
|
|
63
|
+
- A cleanup candidate list (logs, `*.orig`, `*.novahiz-bak`, …). Nothing is deleted without `--apply`.
|
|
64
|
+
|
|
65
|
+
### 2. Deep read
|
|
66
|
+
|
|
67
|
+
Load `novahiz-analyse` and walk manifests, entry points, and data flow. Every claim cites a path. This step is agent work; the CLI does not invent architecture.
|
|
68
|
+
|
|
69
|
+
### 3. Fill documentation
|
|
70
|
+
|
|
71
|
+
Edit only the four files under `novahiz-docs/`:
|
|
72
|
+
|
|
73
|
+
- Replace HTML comment placeholders with observed facts
|
|
74
|
+
- Keep DECISIONS.md empty until a real decision exists
|
|
75
|
+
- If older docs live in `README.md` or `docs/`, migrate unique facts into the right file, then leave a pointer in the README. Do not delete the README.
|
|
76
|
+
|
|
77
|
+
On frontend design docs or style copy, load `novahiz-humanizer` (R13). Outside design it is not required by the gate.
|
|
78
|
+
|
|
79
|
+
### 4. Seed memory
|
|
80
|
+
|
|
81
|
+
After docs are filled, append one slot via MCP `memory_write` or `novahiz init` baseline (already written by CLI):
|
|
82
|
+
|
|
83
|
+
- stack and markers
|
|
84
|
+
- entry points
|
|
85
|
+
- where docs live
|
|
86
|
+
- open unknowns
|
|
87
|
+
|
|
88
|
+
### 5. Cleanup (optional, reviewed)
|
|
89
|
+
|
|
90
|
+
1. Show the CLI cleanup list to the user.
|
|
91
|
+
2. Use the `question` tool: apply all, apply none, or hand-pick.
|
|
92
|
+
3. Only after an explicit choice:
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
novahiz init --apply --json
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
`--yes` alone is never enough to delete files the user has not seen.
|
|
99
|
+
|
|
100
|
+
## Exit criteria
|
|
101
|
+
|
|
102
|
+
- `novahiz init --json` has `failed: []`
|
|
103
|
+
- `novahiz-docs/` has four files with no remaining fill-in comments on architecture/conventions/standards
|
|
104
|
+
- `project-memory/` has at least one slot
|
|
105
|
+
- Cleanup either applied with consent or left unapplied on purpose
|
|
106
|
+
|
|
107
|
+
## Pitfalls
|
|
108
|
+
|
|
109
|
+
- Running `novahiz init` thinking it installs the global tool (`setup` does that).
|
|
110
|
+
- Filling templates with guessed architecture instead of a real read.
|
|
111
|
+
- Deleting cleanup candidates without showing the list.
|
|
112
|
+
- Duplicating content that already belongs in `novahiz-docs` update / converge.
|