novahiz 0.1.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE.md +10 -17
- package/README.md +355 -123
- package/adapters/README.md +3 -3
- package/adapters/opencode/agent/{novahiz-agent.md → novahiz.md} +6 -4
- package/adapters/opencode/commands/novahiz-doctor.md +1 -1
- package/adapters/opencode/instructions.md +5 -16
- package/adapters/opencode/novahiz.ts +157 -23
- package/bundled-skills/{skill-creator/LICENSE.txt → android-reverse-engineering/LICENSE} +5 -17
- package/bundled-skills/android-reverse-engineering/references/api-extraction-patterns.md +197 -0
- package/bundled-skills/android-reverse-engineering/references/call-flow-analysis.md +210 -0
- package/bundled-skills/android-reverse-engineering/references/fernflower-usage.md +115 -0
- package/bundled-skills/android-reverse-engineering/references/jadx-usage.md +116 -0
- package/bundled-skills/android-reverse-engineering/references/kotlin-name-recovery.md +108 -0
- package/bundled-skills/android-reverse-engineering/references/setup-guide.md +221 -0
- package/bundled-skills/android-reverse-engineering/references/third_party_hosts.txt +122 -0
- package/bundled-skills/android-reverse-engineering/scripts/check-deps.ps1 +165 -0
- package/bundled-skills/android-reverse-engineering/scripts/check-deps.sh +129 -0
- package/bundled-skills/android-reverse-engineering/scripts/decompile.ps1 +400 -0
- package/bundled-skills/android-reverse-engineering/scripts/decompile.sh +578 -0
- package/bundled-skills/android-reverse-engineering/scripts/find-api-calls.ps1 +121 -0
- package/bundled-skills/android-reverse-engineering/scripts/find-api-calls.sh +339 -0
- package/bundled-skills/android-reverse-engineering/scripts/fingerprint.sh +241 -0
- package/bundled-skills/android-reverse-engineering/scripts/install-dep.ps1 +345 -0
- package/bundled-skills/android-reverse-engineering/scripts/install-dep.sh +448 -0
- package/bundled-skills/android-reverse-engineering/scripts/lookup-name.sh +85 -0
- package/bundled-skills/android-reverse-engineering/scripts/recover-kotlin-names.sh +140 -0
- package/bundled-skills/memory-save/SKILL.md +2 -2
- package/catalog/categories.json +1093 -1030
- package/catalog/overrides.json +33 -201
- package/catalog/providers.json +29 -102
- package/catalog/rules.json +84 -80
- package/docs/ARCHITECTURE.md +69 -19
- package/docs/CATALOG.md +129 -0
- package/docs/CLASSIFICATION.md +129 -0
- package/docs/CLI.md +202 -0
- package/docs/CONFIGURATION.md +97 -0
- package/docs/CONSTITUTION.md +3 -3
- package/docs/EXECUTION.md +100 -53
- package/docs/GATE.md +177 -0
- package/docs/HARNESSES.md +2 -2
- package/docs/INSTALL.md +3 -3
- package/docs/PLUGIN.md +150 -0
- package/docs/PROVIDERS.md +10 -12
- package/docs/ROADMAPS.md +8 -8
- package/docs/RULES.md +21 -16
- package/docs/TOKENS.md +2 -2
- package/install/bootstrap.mjs +9 -12
- package/install/install.mjs +66 -53
- package/install/lib.mjs +15 -1
- package/install/uninstall.mjs +11 -11
- package/mcp/novahiz-tools/index.mjs +244 -40
- package/novahiz.config.example.json +0 -1
- package/package.json +12 -10
- package/skills/ai-security/SKILL.md +91 -323
- package/skills/ai-security/references/atlas-coverage.md +38 -128
- package/skills/ai-security/scripts/ai_threat_scanner.py +341 -532
- package/skills/anti-AI-design/SKILL.md +48 -165
- package/skills/apple-hig-audit/SKILL.md +64 -0
- package/skills/apple-hig-audit/references/accessibility.md +78 -0
- package/skills/apple-hig-audit/references/platform-specifics.md +57 -0
- package/skills/apple-hig-audit/references/visual-design.md +68 -0
- package/skills/apple-hig-audit/scripts/hig_checker.py +115 -0
- package/skills/apple-hig-audit/templates/hig-audit-template.md +114 -0
- package/skills/dependency-auditor/README.md +58 -484
- package/skills/dependency-auditor/SKILL.md +82 -53
- package/skills/dependency-auditor/references/dependency_management_best_practices.md +32 -629
- package/skills/dependency-auditor/references/license_compatibility_matrix.md +57 -238
- package/skills/dependency-auditor/references/vulnerability_assessment_guide.md +42 -441
- package/skills/dependency-auditor/scripts/dep_scanner.py +569 -768
- package/skills/dependency-auditor/scripts/license_checker.py +425 -979
- package/skills/dependency-auditor/scripts/upgrade_planner.py +463 -1002
- package/skills/design-system-tokens/SKILL.md +90 -0
- package/skills/design-system-tokens/assets/design_system_doc_template.md +129 -0
- package/skills/design-system-tokens/references/component-architecture.md +88 -0
- package/skills/design-system-tokens/references/developer-handoff.md +61 -0
- package/skills/design-system-tokens/references/responsive-calculations.md +72 -0
- package/skills/design-system-tokens/references/token-generation.md +62 -0
- package/skills/design-system-tokens/scripts/design_token_generator.py +315 -0
- package/skills/engineering-code-standards/SKILL.md +174 -0
- package/skills/env-secrets-manager/SKILL.md +67 -225
- package/skills/env-secrets-manager/references/secret-patterns.md +43 -28
- package/skills/env-secrets-manager/references/validation-detection-rotation.md +50 -332
- package/skills/env-secrets-manager/scripts/env_auditor.py +305 -110
- package/skills/frontend-design-taste/SKILL.md +62 -0
- package/skills/gate/SKILL.md +12 -2
- package/skills/mcp-server-builder/README.md +6 -14
- package/skills/mcp-server-builder/SKILL.md +93 -49
- package/skills/mcp-server-builder/references/production-hardening-guide.md +5 -3
- package/skills/mcp-server-builder/references/python-server-template.md +1 -1
- package/skills/mcp-server-builder/references/spec-compatibility.md +129 -0
- package/skills/mcp-server-builder/references/typescript-server-template.md +1 -1
- package/skills/mcp-server-builder/scripts/mcp_validator.py +3 -9
- package/skills/mcp-server-builder/scripts/openapi_to_mcp.py +3 -8
- package/skills/memory/SKILL.md +11 -3
- package/skills/novahiz-analyse/SKILL.md +19 -15
- package/skills/novahiz-assess-decide/SKILL.md +81 -0
- package/skills/novahiz-assess-define/SKILL.md +78 -0
- package/skills/novahiz-assess-intake/SKILL.md +90 -0
- package/skills/novahiz-assess-research/SKILL.md +79 -0
- package/skills/novahiz-assess-shape/SKILL.md +79 -0
- package/skills/novahiz-audit/SKILL.md +52 -54
- package/skills/novahiz-browser/SKILL.md +56 -0
- package/skills/novahiz-clarify/SKILL.md +38 -35
- package/skills/novahiz-code-review/SKILL.md +86 -0
- package/skills/novahiz-converge/SKILL.md +30 -26
- package/skills/novahiz-delta-review/SKILL.md +87 -0
- package/skills/novahiz-docs/SKILL.md +79 -0
- package/skills/novahiz-docs/templates/ARCHITECTURE.md +49 -0
- package/skills/novahiz-docs/templates/CONVENTIONS.md +50 -0
- package/skills/novahiz-docs/templates/DECISIONS.md +28 -0
- package/skills/novahiz-docs/templates/STANDARDS.md +48 -0
- package/skills/novahiz-gate/SKILL.md +27 -31
- package/skills/novahiz-humanizer/SKILL.md +617 -0
- package/skills/novahiz-implement/SKILL.md +27 -23
- package/skills/novahiz-memory/SKILL.md +29 -27
- package/skills/novahiz-plan/SKILL.md +42 -38
- package/skills/novahiz-planner/SKILL.md +21 -16
- package/skills/novahiz-postgres/SKILL.md +100 -0
- package/skills/novahiz-security/SKILL.md +228 -0
- package/skills/novahiz-supabase/SKILL.md +177 -0
- package/skills/novahiz-task/SKILL.md +34 -30
- package/skills/novahiz-wcag-audit/SKILL.md +79 -0
- package/skills/novahiz-wcag-audit/references/findings.example.json +36 -0
- package/skills/novahiz-wcag-audit/references/report-template.md +55 -0
- package/skills/novahiz-wcag-audit/references/wcag22-aa.md +153 -0
- package/skills/novahiz-wcag-audit/scripts/contrast.mjs +140 -0
- package/skills/novahiz-wcag-audit/scripts/report.mjs +141 -0
- package/skills/novahiz-web-extract/SKILL.md +175 -0
- package/skills/playwright-agent/SKILL.md +39 -34
- package/skills/prompt-rewriter/SKILL.md +85 -0
- package/skills/skill-creator/LICENSE.txt +11 -199
- package/skills/skill-creator/SKILL.md +166 -180
- package/skills/skill-creator/agents/analyzer.md +1 -1
- package/skills/skill-creator/agents/grader.md +8 -8
- package/skills/skill-creator/assets/eval_review.html +20 -23
- package/skills/skill-creator/eval-viewer/generate_review.py +2 -2
- package/skills/skill-creator/eval-viewer/viewer.html +34 -38
- package/skills/skill-creator/references/schemas.md +2 -2
- package/skills/skill-creator/scripts/aggregate_benchmark.py +6 -6
- package/skills/skill-creator/scripts/generate_report.py +27 -31
- package/skills/skill-creator/scripts/improve_description.py +10 -10
- package/skills/skill-creator/scripts/package_skill.py +8 -8
- package/skills/skill-creator/scripts/run_eval.py +6 -6
- package/skills/write-a-skill/SKILL.md +48 -78
- package/skills/write-a-skill/references/companion_tooling.md +18 -24
- package/skills/write-a-skill/references/description_design_patterns.md +36 -39
- package/skills/write-a-skill/references/progressive_disclosure_principles.md +31 -33
- package/skills/write-a-skill/references/quality_gates_for_skills.md +27 -27
- package/skills/write-a-skill/scripts/skill_description_validator.py +12 -26
- package/skills/write-a-skill/scripts/skill_review_checklist_runner.py +10 -21
- package/skills/write-a-skill/scripts/skill_structure_validator.py +13 -25
- package/src/catalog.ts +18 -4
- package/src/classify.ts +42 -5
- package/src/cli.ts +129 -44
- package/src/commands/clean.ts +26 -20
- package/src/commands/context.ts +11 -5
- package/src/commands/doctor.ts +217 -191
- package/src/commands/gate.ts +98 -60
- package/src/commands/graft.ts +160 -0
- package/src/commands/inspect.ts +35 -9
- package/src/commands/report.ts +20 -12
- package/src/commands/task.ts +17 -9
- package/src/commands/tokens.ts +5 -5
- package/src/complexity.ts +305 -0
- package/src/content.ts +28 -3
- package/src/db.ts +44 -7
- package/src/gate.ts +401 -261
- package/src/graft.ts +221 -0
- package/src/ledger.ts +117 -48
- package/src/memory.ts +502 -0
- package/src/prompt-rewriter.ts +170 -0
- package/src/providers.ts +7 -0
- package/src/render.ts +1 -1
- package/src/spec.ts +18 -7
- package/src/targets.ts +22 -1
- package/bundled-skills/AGENTS.md +0 -50
- package/bundled-skills/LICENSE +0 -21
- package/bundled-skills/README.md +0 -202
- package/bundled-skills/a11y-audit/SKILL.md +0 -211
- package/bundled-skills/a11y-audit/assets/sample-component.tsx +0 -51
- package/bundled-skills/a11y-audit/expected_outputs/sample-contrast-output.txt +0 -39
- package/bundled-skills/a11y-audit/expected_outputs/sample-scan-output.json +0 -34
- package/bundled-skills/a11y-audit/expected_outputs/sample-scan-report.md +0 -63
- package/bundled-skills/a11y-audit/references/aria-patterns.md +0 -223
- package/bundled-skills/a11y-audit/references/audit-report-template.md +0 -46
- package/bundled-skills/a11y-audit/references/ci-cd-integration.md +0 -127
- package/bundled-skills/a11y-audit/references/color-contrast-guide.md +0 -83
- package/bundled-skills/a11y-audit/references/examples-by-framework.md +0 -312
- package/bundled-skills/a11y-audit/references/framework-a11y-patterns.md +0 -661
- package/bundled-skills/a11y-audit/references/testing-checklist.md +0 -41
- package/bundled-skills/a11y-audit/references/wcag-22-new-criteria.md +0 -79
- package/bundled-skills/a11y-audit/references/wcag-quick-ref.md +0 -113
- package/bundled-skills/a11y-audit/scripts/a11y_scanner.py +0 -684
- package/bundled-skills/a11y-audit/scripts/contrast_checker.py +0 -504
- package/bundled-skills/adversarial-reviewer/SKILL.md +0 -247
- package/bundled-skills/anti-AI-design/SKILL.md +0 -189
- package/bundled-skills/anti-pattern-detector/SKILL.md +0 -185
- package/bundled-skills/anti-pattern-detector/references/async-network-patterns.md +0 -581
- package/bundled-skills/anti-pattern-detector/references/build-deploy-patterns.md +0 -554
- package/bundled-skills/anti-pattern-detector/references/cache-patterns.md +0 -446
- package/bundled-skills/anti-pattern-detector/references/cloud-infra-patterns.md +0 -538
- package/bundled-skills/anti-pattern-detector/references/concurrency-patterns.md +0 -558
- package/bundled-skills/anti-pattern-detector/references/language-specific-patterns.md +0 -740
- package/bundled-skills/anti-pattern-detector/references/monitoring-patterns.md +0 -456
- package/bundled-skills/api-design-reviewer/SKILL.md +0 -433
- package/bundled-skills/api-design-reviewer/references/api_antipatterns.md +0 -680
- package/bundled-skills/api-design-reviewer/references/rest_design_rules.md +0 -487
- package/bundled-skills/api-design-reviewer/scripts/api_linter.py +0 -956
- package/bundled-skills/api-design-reviewer/scripts/api_scorecard.py +0 -1661
- package/bundled-skills/api-design-reviewer/scripts/breaking_change_detector.py +0 -1102
- package/bundled-skills/apple-hig-expert/SKILL.md +0 -108
- package/bundled-skills/apple-hig-expert/references/accessibility.md +0 -55
- package/bundled-skills/apple-hig-expert/references/platform-specifics.md +0 -48
- package/bundled-skills/apple-hig-expert/references/visual-design.md +0 -69
- package/bundled-skills/apple-hig-expert/scripts/hig_checker.py +0 -97
- package/bundled-skills/apple-hig-expert/templates/hig-audit-template.md +0 -83
- package/bundled-skills/clean-code/SKILL.md +0 -99
- package/bundled-skills/code-reviewer/README.md +0 -92
- package/bundled-skills/code-reviewer/SKILL.md +0 -183
- package/bundled-skills/code-reviewer/assets/sample_c_clean.c +0 -71
- package/bundled-skills/code-reviewer/assets/sample_c_smells.c +0 -66
- package/bundled-skills/code-reviewer/assets/sample_csharp_clean.cs +0 -100
- package/bundled-skills/code-reviewer/assets/sample_csharp_smells.cs +0 -78
- package/bundled-skills/code-reviewer/assets/sample_java_clean.java +0 -55
- package/bundled-skills/code-reviewer/assets/sample_java_smells.java +0 -56
- package/bundled-skills/code-reviewer/expected_outputs/sample_c_clean_quality.json +0 -65
- package/bundled-skills/code-reviewer/expected_outputs/sample_c_smells_quality.json +0 -155
- package/bundled-skills/code-reviewer/expected_outputs/sample_csharp_clean_quality.json +0 -135
- package/bundled-skills/code-reviewer/expected_outputs/sample_csharp_smells_quality.json +0 -143
- package/bundled-skills/code-reviewer/expected_outputs/sample_java_clean_quality.json +0 -53
- package/bundled-skills/code-reviewer/expected_outputs/sample_java_smells_quality.json +0 -83
- package/bundled-skills/code-reviewer/languages/c.md +0 -103
- package/bundled-skills/code-reviewer/languages/cpp.md +0 -103
- package/bundled-skills/code-reviewer/languages/csharp.md +0 -97
- package/bundled-skills/code-reviewer/languages/dart.md +0 -108
- package/bundled-skills/code-reviewer/languages/go.md +0 -92
- package/bundled-skills/code-reviewer/languages/java.md +0 -103
- package/bundled-skills/code-reviewer/languages/kotlin.md +0 -88
- package/bundled-skills/code-reviewer/languages/php.md +0 -109
- package/bundled-skills/code-reviewer/languages/python.md +0 -94
- package/bundled-skills/code-reviewer/languages/ruby.md +0 -105
- package/bundled-skills/code-reviewer/languages/rust.md +0 -99
- package/bundled-skills/code-reviewer/languages/swift.md +0 -88
- package/bundled-skills/code-reviewer/languages/typescript.md +0 -97
- package/bundled-skills/code-reviewer/rules/universal.md +0 -49
- package/bundled-skills/code-reviewer/scripts/code_quality_checker.py +0 -1020
- package/bundled-skills/code-reviewer/scripts/pr_analyzer.py +0 -535
- package/bundled-skills/code-reviewer/scripts/review_report_generator.py +0 -505
- package/bundled-skills/code-understand/SKILL.md +0 -90
- package/bundled-skills/database-designer/README.md +0 -388
- package/bundled-skills/database-designer/SKILL.md +0 -314
- package/bundled-skills/database-designer/assets/sample_query_patterns.json +0 -375
- package/bundled-skills/database-designer/assets/sample_schema.json +0 -372
- package/bundled-skills/database-designer/assets/sample_schema.sql +0 -207
- package/bundled-skills/database-designer/expected_outputs/index_optimization_sample.txt +0 -60
- package/bundled-skills/database-designer/expected_outputs/migration_sample.txt +0 -124
- package/bundled-skills/database-designer/expected_outputs/schema_analysis_sample.txt +0 -222
- package/bundled-skills/database-designer/index_optimizer.py +0 -926
- package/bundled-skills/database-designer/migration_generator.py +0 -1199
- package/bundled-skills/database-designer/references/database-design-reference.md +0 -476
- package/bundled-skills/database-designer/references/database_selection_decision_tree.md +0 -373
- package/bundled-skills/database-designer/references/index_strategy_patterns.md +0 -424
- package/bundled-skills/database-designer/references/normalization_guide.md +0 -354
- package/bundled-skills/database-designer/schema_analyzer.py +0 -982
- package/bundled-skills/defuddle/SKILL.md +0 -41
- package/bundled-skills/dependency-auditor/README.md +0 -524
- package/bundled-skills/dependency-auditor/SKILL.md +0 -85
- package/bundled-skills/dependency-auditor/assets/sample_go.mod +0 -53
- package/bundled-skills/dependency-auditor/assets/sample_package.json +0 -72
- package/bundled-skills/dependency-auditor/assets/sample_requirements.txt +0 -71
- package/bundled-skills/dependency-auditor/expected_outputs/sample_license_report.txt +0 -37
- package/bundled-skills/dependency-auditor/expected_outputs/sample_upgrade_plan.txt +0 -59
- package/bundled-skills/dependency-auditor/expected_outputs/sample_vulnerability_report.json +0 -71
- package/bundled-skills/dependency-auditor/references/dependency_management_best_practices.md +0 -643
- package/bundled-skills/dependency-auditor/references/license_compatibility_matrix.md +0 -238
- package/bundled-skills/dependency-auditor/references/vulnerability_assessment_guide.md +0 -461
- package/bundled-skills/dependency-auditor/scripts/dep_scanner.py +0 -794
- package/bundled-skills/dependency-auditor/scripts/license_checker.py +0 -996
- package/bundled-skills/dependency-auditor/scripts/upgrade_planner.py +0 -1029
- package/bundled-skills/dependency-auditor/test-inventory.json +0 -421
- package/bundled-skills/dependency-auditor/test-project/package.json +0 -72
- package/bundled-skills/design-taste-frontend/SKILL.md +0 -247
- package/bundled-skills/engineering-standards/SKILL.md +0 -736
- package/bundled-skills/env-secrets-manager/SKILL.md +0 -260
- package/bundled-skills/env-secrets-manager/references/secret-patterns.md +0 -41
- package/bundled-skills/env-secrets-manager/references/validation-detection-rotation.md +0 -358
- package/bundled-skills/env-secrets-manager/scripts/env_auditor.py +0 -145
- package/bundled-skills/fix/SKILL.md +0 -113
- package/bundled-skills/fix/flaky-taxonomy.md +0 -134
- package/bundled-skills/gate/SKILL.md +0 -13
- package/bundled-skills/humanizer/SKILL.md +0 -374
- package/bundled-skills/impeccable/SKILL.md +0 -89
- package/bundled-skills/impeccable/reference/adapt.md +0 -312
- package/bundled-skills/impeccable/reference/adapt.native.md +0 -58
- package/bundled-skills/impeccable/reference/android.md +0 -46
- package/bundled-skills/impeccable/reference/animate.md +0 -89
- package/bundled-skills/impeccable/reference/audit.md +0 -136
- package/bundled-skills/impeccable/reference/audit.native.md +0 -139
- package/bundled-skills/impeccable/reference/bolder.md +0 -33
- package/bundled-skills/impeccable/reference/clarify.md +0 -94
- package/bundled-skills/impeccable/reference/colorize.md +0 -86
- package/bundled-skills/impeccable/reference/craft-floor.md +0 -44
- package/bundled-skills/impeccable/reference/craft.md +0 -5
- package/bundled-skills/impeccable/reference/critique.md +0 -806
- package/bundled-skills/impeccable/reference/degraded/asset-producer.md +0 -37
- package/bundled-skills/impeccable/reference/degraded/documenter.md +0 -24
- package/bundled-skills/impeccable/reference/degraded/finish-reviewer.md +0 -38
- package/bundled-skills/impeccable/reference/degraded/manual-edit-applier.md +0 -92
- package/bundled-skills/impeccable/reference/delight.md +0 -70
- package/bundled-skills/impeccable/reference/distill.md +0 -111
- package/bundled-skills/impeccable/reference/doctor.md +0 -54
- package/bundled-skills/impeccable/reference/document.md +0 -416
- package/bundled-skills/impeccable/reference/extract.md +0 -69
- package/bundled-skills/impeccable/reference/harden.md +0 -336
- package/bundled-skills/impeccable/reference/hooks.md +0 -111
- package/bundled-skills/impeccable/reference/init.md +0 -131
- package/bundled-skills/impeccable/reference/ios.md +0 -51
- package/bundled-skills/impeccable/reference/layout.md +0 -84
- package/bundled-skills/impeccable/reference/live-setup.md +0 -104
- package/bundled-skills/impeccable/reference/live.md +0 -325
- package/bundled-skills/impeccable/reference/new-work.md +0 -145
- package/bundled-skills/impeccable/reference/onboard.md +0 -234
- package/bundled-skills/impeccable/reference/operate.md +0 -61
- package/bundled-skills/impeccable/reference/optimize.md +0 -258
- package/bundled-skills/impeccable/reference/overdrive.md +0 -127
- package/bundled-skills/impeccable/reference/polish.md +0 -105
- package/bundled-skills/impeccable/reference/quieter.md +0 -99
- package/bundled-skills/impeccable/reference/routing.md +0 -24
- package/bundled-skills/impeccable/reference/shape.md +0 -59
- package/bundled-skills/impeccable/reference/typeset.md +0 -80
- package/bundled-skills/impeccable/reference/visualize.md +0 -46
- package/bundled-skills/impeccable/scripts/VERSION +0 -1
- package/bundled-skills/impeccable/scripts/bin/windows-x64/impeccable.exe +0 -0
- package/bundled-skills/impeccable/scripts/command-metadata.json +0 -94
- package/bundled-skills/impeccable/scripts/data/font-index-failures.json +0 -121
- package/bundled-skills/impeccable/scripts/data/font-index.json +0 -1
- package/bundled-skills/impeccable/scripts/impeccable +0 -206
- package/bundled-skills/impeccable/scripts/impeccable.cmd +0 -214
- package/bundled-skills/impeccable/scripts/live-browser-dom.js +0 -167
- package/bundled-skills/impeccable/scripts/live-browser-ignores.js +0 -242
- package/bundled-skills/impeccable/scripts/live-browser-session.js +0 -144
- package/bundled-skills/impeccable/scripts/live-browser.js +0 -12990
- package/bundled-skills/impeccable/scripts/modern-screenshot.umd.js +0 -14
- package/bundled-skills/mcp-server-builder/README.md +0 -50
- package/bundled-skills/mcp-server-builder/SKILL.md +0 -100
- package/bundled-skills/mcp-server-builder/references/openapi-extraction-guide.md +0 -34
- package/bundled-skills/mcp-server-builder/references/production-hardening-guide.md +0 -78
- package/bundled-skills/mcp-server-builder/references/python-server-template.md +0 -22
- package/bundled-skills/mcp-server-builder/references/typescript-server-template.md +0 -19
- package/bundled-skills/mcp-server-builder/references/validation-checklist.md +0 -30
- package/bundled-skills/mcp-server-builder/scripts/mcp_validator.py +0 -186
- package/bundled-skills/mcp-server-builder/scripts/openapi_to_mcp.py +0 -284
- package/bundled-skills/memory/SKILL.md +0 -10
- package/bundled-skills/migrate/SKILL.md +0 -135
- package/bundled-skills/migrate/cypress-mapping.md +0 -79
- package/bundled-skills/migrate/selenium-mapping.md +0 -94
- package/bundled-skills/novahiz-analyse/SKILL.md +0 -74
- package/bundled-skills/novahiz-audit/SKILL.md +0 -75
- package/bundled-skills/novahiz-clarify/SKILL.md +0 -94
- package/bundled-skills/novahiz-converge/SKILL.md +0 -76
- package/bundled-skills/novahiz-gate/SKILL.md +0 -82
- package/bundled-skills/novahiz-implement/SKILL.md +0 -80
- package/bundled-skills/novahiz-memory/SKILL.md +0 -58
- package/bundled-skills/novahiz-plan/SKILL.md +0 -100
- package/bundled-skills/novahiz-planner/SKILL.md +0 -104
- package/bundled-skills/novahiz-task/SKILL.md +0 -105
- package/bundled-skills/playwright-agent/SKILL.md +0 -142
- package/bundled-skills/postgresql-optimization/SKILL.md +0 -179
- package/bundled-skills/review-changes/SKILL.md +0 -30
- package/bundled-skills/security-guidance/SKILL.md +0 -161
- package/bundled-skills/security-guidance/references/pretooluse_hook_canon.md +0 -141
- package/bundled-skills/senior-architect/SKILL.md +0 -343
- package/bundled-skills/senior-architect/references/architecture_patterns.md +0 -470
- package/bundled-skills/senior-architect/references/system_design_workflows.md +0 -536
- package/bundled-skills/senior-architect/references/tech_decision_guide.md +0 -412
- package/bundled-skills/senior-architect/scripts/architecture_diagram_generator.py +0 -660
- package/bundled-skills/senior-architect/scripts/dependency_analyzer.py +0 -615
- package/bundled-skills/senior-architect/scripts/project_architect.py +0 -749
- package/bundled-skills/senior-backend/SKILL.md +0 -467
- package/bundled-skills/senior-backend/profiles/django-monolith.json +0 -57
- package/bundled-skills/senior-backend/profiles/fastapi-python.json +0 -58
- package/bundled-skills/senior-backend/profiles/go-or-rust-microservice.json +0 -62
- package/bundled-skills/senior-backend/profiles/node-express.json +0 -57
- package/bundled-skills/senior-backend/references/api_design_patterns.md +0 -530
- package/bundled-skills/senior-backend/references/backend_security_practices.md +0 -1075
- package/bundled-skills/senior-backend/references/composition_map.md +0 -58
- package/bundled-skills/senior-backend/references/database_optimization_guide.md +0 -593
- package/bundled-skills/senior-backend/references/forcing_questions.md +0 -100
- package/bundled-skills/senior-backend/scripts/api_load_tester.py +0 -607
- package/bundled-skills/senior-backend/scripts/api_scaffolder.py +0 -645
- package/bundled-skills/senior-backend/scripts/backend_decision_engine.py +0 -397
- package/bundled-skills/senior-backend/scripts/database_migration_tool.py +0 -858
- package/bundled-skills/skill-creator/SKILL.md +0 -485
- package/bundled-skills/skill-creator/agents/analyzer.md +0 -274
- package/bundled-skills/skill-creator/agents/comparator.md +0 -202
- package/bundled-skills/skill-creator/agents/grader.md +0 -223
- package/bundled-skills/skill-creator/assets/eval_review.html +0 -146
- package/bundled-skills/skill-creator/eval-viewer/generate_review.py +0 -471
- package/bundled-skills/skill-creator/eval-viewer/viewer.html +0 -1325
- package/bundled-skills/skill-creator/references/schemas.md +0 -430
- package/bundled-skills/skill-creator/scripts/__init__.py +0 -0
- package/bundled-skills/skill-creator/scripts/aggregate_benchmark.py +0 -401
- package/bundled-skills/skill-creator/scripts/generate_report.py +0 -326
- package/bundled-skills/skill-creator/scripts/improve_description.py +0 -247
- package/bundled-skills/skill-creator/scripts/package_skill.py +0 -136
- package/bundled-skills/skill-creator/scripts/quick_validate.py +0 -103
- package/bundled-skills/skill-creator/scripts/run_eval.py +0 -310
- package/bundled-skills/skill-creator/scripts/run_loop.py +0 -328
- package/bundled-skills/skill-creator/scripts/utils.py +0 -47
- package/bundled-skills/spec-driven-workflow/SKILL.md +0 -333
- package/bundled-skills/spec-driven-workflow/references/acceptance_criteria_patterns.md +0 -497
- package/bundled-skills/spec-driven-workflow/references/bounded_autonomy_rules.md +0 -273
- package/bundled-skills/spec-driven-workflow/references/spec_format_guide.md +0 -531
- package/bundled-skills/spec-driven-workflow/scripts/spec_generator.py +0 -338
- package/bundled-skills/spec-driven-workflow/scripts/spec_validator.py +0 -461
- package/bundled-skills/spec-driven-workflow/scripts/test_extractor.py +0 -431
- package/bundled-skills/supabase/CHANGELOG.md +0 -78
- package/bundled-skills/supabase/SKILL.md +0 -149
- package/bundled-skills/supabase/assets/feedback-issue-template.md +0 -17
- package/bundled-skills/supabase/references/skill-feedback.md +0 -17
- package/bundled-skills/supabase-postgres-best-practices/CHANGELOG.md +0 -73
- package/bundled-skills/supabase-postgres-best-practices/SKILL.md +0 -64
- package/bundled-skills/supabase-postgres-best-practices/references/_contributing.md +0 -170
- package/bundled-skills/supabase-postgres-best-practices/references/_sections.md +0 -39
- package/bundled-skills/supabase-postgres-best-practices/references/_template.md +0 -34
- package/bundled-skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +0 -55
- package/bundled-skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +0 -49
- package/bundled-skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +0 -46
- package/bundled-skills/supabase-postgres-best-practices/references/conn-limits.md +0 -44
- package/bundled-skills/supabase-postgres-best-practices/references/conn-pooling.md +0 -41
- package/bundled-skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +0 -46
- package/bundled-skills/supabase-postgres-best-practices/references/data-batch-inserts.md +0 -54
- package/bundled-skills/supabase-postgres-best-practices/references/data-n-plus-one.md +0 -53
- package/bundled-skills/supabase-postgres-best-practices/references/data-pagination.md +0 -50
- package/bundled-skills/supabase-postgres-best-practices/references/data-upsert.md +0 -50
- package/bundled-skills/supabase-postgres-best-practices/references/lock-advisory.md +0 -56
- package/bundled-skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +0 -68
- package/bundled-skills/supabase-postgres-best-practices/references/lock-short-transactions.md +0 -50
- package/bundled-skills/supabase-postgres-best-practices/references/lock-skip-locked.md +0 -54
- package/bundled-skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +0 -45
- package/bundled-skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +0 -55
- package/bundled-skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +0 -55
- package/bundled-skills/supabase-postgres-best-practices/references/query-composite-indexes.md +0 -44
- package/bundled-skills/supabase-postgres-best-practices/references/query-covering-indexes.md +0 -40
- package/bundled-skills/supabase-postgres-best-practices/references/query-index-types.md +0 -48
- package/bundled-skills/supabase-postgres-best-practices/references/query-missing-indexes.md +0 -43
- package/bundled-skills/supabase-postgres-best-practices/references/query-partial-indexes.md +0 -45
- package/bundled-skills/supabase-postgres-best-practices/references/schema-constraints.md +0 -80
- package/bundled-skills/supabase-postgres-best-practices/references/schema-data-types.md +0 -46
- package/bundled-skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +0 -59
- package/bundled-skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +0 -55
- package/bundled-skills/supabase-postgres-best-practices/references/schema-partitioning.md +0 -55
- package/bundled-skills/supabase-postgres-best-practices/references/schema-primary-keys.md +0 -61
- package/bundled-skills/supabase-postgres-best-practices/references/security-privileges.md +0 -54
- package/bundled-skills/supabase-postgres-best-practices/references/security-rls-basics.md +0 -50
- package/bundled-skills/supabase-postgres-best-practices/references/security-rls-performance.md +0 -63
- package/bundled-skills/typescript-expert/SKILL.md +0 -431
- package/bundled-skills/typescript-expert/references/tsconfig-strict.json +0 -45
- package/bundled-skills/typescript-expert/references/typescript-cheatsheet.md +0 -383
- package/bundled-skills/typescript-expert/references/utility-types.ts +0 -335
- package/bundled-skills/typescript-expert/scripts/ts_diagnostic.py +0 -203
- package/bundled-skills/ui-design-system/SKILL.md +0 -379
- package/bundled-skills/ui-design-system/assets/design_system_doc_template.md +0 -180
- package/bundled-skills/ui-design-system/references/component-architecture.md +0 -396
- package/bundled-skills/ui-design-system/references/developer-handoff.md +0 -509
- package/bundled-skills/ui-design-system/references/responsive-calculations.md +0 -390
- package/bundled-skills/ui-design-system/references/token-generation.md +0 -324
- package/bundled-skills/ui-design-system/scripts/design_token_generator.py +0 -590
- package/bundled-skills/write-a-skill/SKILL.md +0 -141
- package/bundled-skills/write-a-skill/references/companion_tooling.md +0 -67
- package/bundled-skills/write-a-skill/references/description_design_patterns.md +0 -139
- package/bundled-skills/write-a-skill/references/progressive_disclosure_principles.md +0 -89
- package/bundled-skills/write-a-skill/references/quality_gates_for_skills.md +0 -158
- package/bundled-skills/write-a-skill/scripts/skill_description_validator.py +0 -255
- package/bundled-skills/write-a-skill/scripts/skill_review_checklist_runner.py +0 -268
- package/bundled-skills/write-a-skill/scripts/skill_structure_validator.py +0 -277
- package/bundled-skills/zero-hallucination-coder/SKILL.md +0 -271
- package/skills/a11y-audit/SKILL.md +0 -211
- package/skills/a11y-audit/assets/sample-component.tsx +0 -51
- package/skills/a11y-audit/expected_outputs/sample-contrast-output.txt +0 -39
- package/skills/a11y-audit/expected_outputs/sample-scan-output.json +0 -34
- package/skills/a11y-audit/expected_outputs/sample-scan-report.md +0 -63
- package/skills/a11y-audit/references/aria-patterns.md +0 -223
- package/skills/a11y-audit/references/audit-report-template.md +0 -46
- package/skills/a11y-audit/references/ci-cd-integration.md +0 -127
- package/skills/a11y-audit/references/color-contrast-guide.md +0 -83
- package/skills/a11y-audit/references/examples-by-framework.md +0 -312
- package/skills/a11y-audit/references/framework-a11y-patterns.md +0 -661
- package/skills/a11y-audit/references/testing-checklist.md +0 -41
- package/skills/a11y-audit/references/wcag-22-new-criteria.md +0 -79
- package/skills/a11y-audit/references/wcag-quick-ref.md +0 -113
- package/skills/a11y-audit/scripts/a11y_scanner.py +0 -684
- package/skills/a11y-audit/scripts/contrast_checker.py +0 -504
- package/skills/adversarial-reviewer/SKILL.md +0 -247
- package/skills/anti-pattern-detector/SKILL.md +0 -185
- package/skills/anti-pattern-detector/references/async-network-patterns.md +0 -581
- package/skills/anti-pattern-detector/references/build-deploy-patterns.md +0 -554
- package/skills/anti-pattern-detector/references/cache-patterns.md +0 -446
- package/skills/anti-pattern-detector/references/cloud-infra-patterns.md +0 -538
- package/skills/anti-pattern-detector/references/concurrency-patterns.md +0 -558
- package/skills/anti-pattern-detector/references/language-specific-patterns.md +0 -740
- package/skills/anti-pattern-detector/references/monitoring-patterns.md +0 -456
- package/skills/api-design-reviewer/SKILL.md +0 -433
- package/skills/api-design-reviewer/references/api_antipatterns.md +0 -680
- package/skills/api-design-reviewer/references/rest_design_rules.md +0 -487
- package/skills/api-design-reviewer/scripts/api_linter.py +0 -956
- package/skills/api-design-reviewer/scripts/api_scorecard.py +0 -1661
- package/skills/api-design-reviewer/scripts/breaking_change_detector.py +0 -1102
- package/skills/apple-hig-expert/SKILL.md +0 -108
- package/skills/apple-hig-expert/references/accessibility.md +0 -55
- package/skills/apple-hig-expert/references/platform-specifics.md +0 -48
- package/skills/apple-hig-expert/references/visual-design.md +0 -69
- package/skills/apple-hig-expert/scripts/hig_checker.py +0 -97
- package/skills/apple-hig-expert/templates/hig-audit-template.md +0 -83
- package/skills/clean-code/SKILL.md +0 -99
- package/skills/code-reviewer/README.md +0 -92
- package/skills/code-reviewer/SKILL.md +0 -183
- package/skills/code-reviewer/assets/sample_c_clean.c +0 -71
- package/skills/code-reviewer/assets/sample_c_smells.c +0 -66
- package/skills/code-reviewer/assets/sample_csharp_clean.cs +0 -100
- package/skills/code-reviewer/assets/sample_csharp_smells.cs +0 -78
- package/skills/code-reviewer/assets/sample_java_clean.java +0 -55
- package/skills/code-reviewer/assets/sample_java_smells.java +0 -56
- package/skills/code-reviewer/expected_outputs/sample_c_clean_quality.json +0 -65
- package/skills/code-reviewer/expected_outputs/sample_c_smells_quality.json +0 -155
- package/skills/code-reviewer/expected_outputs/sample_csharp_clean_quality.json +0 -135
- package/skills/code-reviewer/expected_outputs/sample_csharp_smells_quality.json +0 -143
- package/skills/code-reviewer/expected_outputs/sample_java_clean_quality.json +0 -53
- package/skills/code-reviewer/expected_outputs/sample_java_smells_quality.json +0 -83
- package/skills/code-reviewer/languages/c.md +0 -103
- package/skills/code-reviewer/languages/cpp.md +0 -103
- package/skills/code-reviewer/languages/csharp.md +0 -97
- package/skills/code-reviewer/languages/dart.md +0 -108
- package/skills/code-reviewer/languages/go.md +0 -92
- package/skills/code-reviewer/languages/java.md +0 -103
- package/skills/code-reviewer/languages/kotlin.md +0 -88
- package/skills/code-reviewer/languages/php.md +0 -109
- package/skills/code-reviewer/languages/python.md +0 -94
- package/skills/code-reviewer/languages/ruby.md +0 -105
- package/skills/code-reviewer/languages/rust.md +0 -99
- package/skills/code-reviewer/languages/swift.md +0 -88
- package/skills/code-reviewer/languages/typescript.md +0 -97
- package/skills/code-reviewer/rules/universal.md +0 -49
- package/skills/code-reviewer/scripts/code_quality_checker.py +0 -1020
- package/skills/code-reviewer/scripts/pr_analyzer.py +0 -535
- package/skills/code-reviewer/scripts/review_report_generator.py +0 -505
- package/skills/code-understand/SKILL.md +0 -90
- package/skills/database-designer/README.md +0 -388
- package/skills/database-designer/SKILL.md +0 -314
- package/skills/database-designer/assets/sample_query_patterns.json +0 -375
- package/skills/database-designer/assets/sample_schema.json +0 -372
- package/skills/database-designer/assets/sample_schema.sql +0 -207
- package/skills/database-designer/expected_outputs/index_optimization_sample.txt +0 -60
- package/skills/database-designer/expected_outputs/migration_sample.txt +0 -124
- package/skills/database-designer/expected_outputs/schema_analysis_sample.txt +0 -222
- package/skills/database-designer/index_optimizer.py +0 -926
- package/skills/database-designer/migration_generator.py +0 -1199
- package/skills/database-designer/references/database-design-reference.md +0 -476
- package/skills/database-designer/references/database_selection_decision_tree.md +0 -373
- package/skills/database-designer/references/index_strategy_patterns.md +0 -424
- package/skills/database-designer/references/normalization_guide.md +0 -354
- package/skills/database-designer/schema_analyzer.py +0 -982
- package/skills/defuddle/SKILL.md +0 -41
- package/skills/design-taste-frontend/SKILL.md +0 -247
- package/skills/engineering-standards/SKILL.md +0 -736
- package/skills/fix/SKILL.md +0 -113
- package/skills/fix/flaky-taxonomy.md +0 -134
- package/skills/humanizer/SKILL.md +0 -374
- package/skills/migrate/SKILL.md +0 -135
- package/skills/migrate/cypress-mapping.md +0 -79
- package/skills/migrate/selenium-mapping.md +0 -94
- package/skills/postgresql-optimization/SKILL.md +0 -179
- package/skills/review-changes/SKILL.md +0 -30
- package/skills/security-guidance/SKILL.md +0 -160
- package/skills/security-guidance/references/pretooluse_hook_canon.md +0 -141
- package/skills/senior-architect/SKILL.md +0 -343
- package/skills/senior-architect/references/architecture_patterns.md +0 -470
- package/skills/senior-architect/references/system_design_workflows.md +0 -536
- package/skills/senior-architect/references/tech_decision_guide.md +0 -412
- package/skills/senior-architect/scripts/architecture_diagram_generator.py +0 -660
- package/skills/senior-architect/scripts/dependency_analyzer.py +0 -615
- package/skills/senior-architect/scripts/project_architect.py +0 -749
- package/skills/senior-backend/SKILL.md +0 -467
- package/skills/senior-backend/profiles/django-monolith.json +0 -57
- package/skills/senior-backend/profiles/fastapi-python.json +0 -58
- package/skills/senior-backend/profiles/go-or-rust-microservice.json +0 -62
- package/skills/senior-backend/profiles/node-express.json +0 -57
- package/skills/senior-backend/references/api_design_patterns.md +0 -530
- package/skills/senior-backend/references/backend_security_practices.md +0 -1075
- package/skills/senior-backend/references/composition_map.md +0 -58
- package/skills/senior-backend/references/database_optimization_guide.md +0 -593
- package/skills/senior-backend/references/forcing_questions.md +0 -100
- package/skills/senior-backend/scripts/api_load_tester.py +0 -607
- package/skills/senior-backend/scripts/api_scaffolder.py +0 -645
- package/skills/senior-backend/scripts/backend_decision_engine.py +0 -397
- package/skills/senior-backend/scripts/database_migration_tool.py +0 -858
- package/skills/senior-secops/SKILL.md +0 -505
- package/skills/senior-secops/references/compliance_requirements.md +0 -792
- package/skills/senior-secops/references/security_standards.md +0 -718
- package/skills/senior-secops/references/vulnerability_management_guide.md +0 -487
- package/skills/senior-secops/scripts/compliance_checker.py +0 -1107
- package/skills/senior-secops/scripts/security_scanner.py +0 -471
- package/skills/senior-secops/scripts/vulnerability_assessor.py +0 -563
- package/skills/spec-driven-workflow/SKILL.md +0 -333
- package/skills/spec-driven-workflow/references/acceptance_criteria_patterns.md +0 -497
- package/skills/spec-driven-workflow/references/bounded_autonomy_rules.md +0 -273
- package/skills/spec-driven-workflow/references/spec_format_guide.md +0 -531
- package/skills/spec-driven-workflow/scripts/spec_generator.py +0 -338
- package/skills/spec-driven-workflow/scripts/spec_validator.py +0 -461
- package/skills/spec-driven-workflow/scripts/test_extractor.py +0 -431
- package/skills/supabase/CHANGELOG.md +0 -78
- package/skills/supabase/SKILL.md +0 -149
- package/skills/supabase/assets/feedback-issue-template.md +0 -17
- package/skills/supabase/references/skill-feedback.md +0 -17
- package/skills/supabase-postgres-best-practices/CHANGELOG.md +0 -73
- package/skills/supabase-postgres-best-practices/SKILL.md +0 -64
- package/skills/supabase-postgres-best-practices/references/_contributing.md +0 -170
- package/skills/supabase-postgres-best-practices/references/_sections.md +0 -39
- package/skills/supabase-postgres-best-practices/references/_template.md +0 -34
- package/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +0 -55
- package/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +0 -49
- package/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +0 -46
- package/skills/supabase-postgres-best-practices/references/conn-limits.md +0 -44
- package/skills/supabase-postgres-best-practices/references/conn-pooling.md +0 -41
- package/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +0 -46
- package/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +0 -54
- package/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +0 -53
- package/skills/supabase-postgres-best-practices/references/data-pagination.md +0 -50
- package/skills/supabase-postgres-best-practices/references/data-upsert.md +0 -50
- package/skills/supabase-postgres-best-practices/references/lock-advisory.md +0 -56
- package/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +0 -68
- package/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +0 -50
- package/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +0 -54
- package/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +0 -45
- package/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +0 -55
- package/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +0 -55
- package/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +0 -44
- package/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +0 -40
- package/skills/supabase-postgres-best-practices/references/query-index-types.md +0 -48
- package/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +0 -43
- package/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +0 -45
- package/skills/supabase-postgres-best-practices/references/schema-constraints.md +0 -80
- package/skills/supabase-postgres-best-practices/references/schema-data-types.md +0 -46
- package/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +0 -59
- package/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +0 -55
- package/skills/supabase-postgres-best-practices/references/schema-partitioning.md +0 -55
- package/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +0 -61
- package/skills/supabase-postgres-best-practices/references/security-privileges.md +0 -54
- package/skills/supabase-postgres-best-practices/references/security-rls-basics.md +0 -50
- package/skills/supabase-postgres-best-practices/references/security-rls-performance.md +0 -63
- package/skills/typescript-expert/SKILL.md +0 -431
- package/skills/typescript-expert/references/tsconfig-strict.json +0 -45
- package/skills/typescript-expert/references/typescript-cheatsheet.md +0 -383
- package/skills/typescript-expert/references/utility-types.ts +0 -335
- package/skills/typescript-expert/scripts/ts_diagnostic.py +0 -203
- package/skills/ui-design-system/SKILL.md +0 -379
- package/skills/ui-design-system/assets/design_system_doc_template.md +0 -180
- package/skills/ui-design-system/references/component-architecture.md +0 -396
- package/skills/ui-design-system/references/developer-handoff.md +0 -509
- package/skills/ui-design-system/references/responsive-calculations.md +0 -390
- package/skills/ui-design-system/references/token-generation.md +0 -324
- package/skills/ui-design-system/scripts/design_token_generator.py +0 -590
- package/skills/zero-hallucination-coder/SKILL.md +0 -271
- /package/bundled-skills/{SKILL.md → android-reverse-engineering/SKILL.md} +0 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: novahiz-security
|
|
3
|
+
description: |
|
|
4
|
+
novahiz-security : audit de sécurité complet avec OWASP Top 10, CWE Top 25, patterns
|
|
5
|
+
dangereux, injection, XSS, auth bypass. Use when reviewing code for security vulnerabilities,
|
|
6
|
+
hardening authentication, validating input handling, or generating security reports.
|
|
7
|
+
license: MIT
|
|
8
|
+
compatibility: opencode
|
|
9
|
+
metadata:
|
|
10
|
+
author: Novahiz
|
|
11
|
+
organization: Novahiz
|
|
12
|
+
version: "2.0.0"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# novahiz-security
|
|
16
|
+
|
|
17
|
+
Audit de sécurité en trois temps : scan des patterns dangereux, analyse OWASP et CWE, puis vérifications propres à chaque langage.
|
|
18
|
+
|
|
19
|
+
## Matrice de détection
|
|
20
|
+
|
|
21
|
+
### OWASP Top 10 (2021)
|
|
22
|
+
|
|
23
|
+
| ID | Catégorie | Détection |
|
|
24
|
+
|----|-----------|-----------|
|
|
25
|
+
| A01 | Broken Access Control | RBAC, contrôle horizontal et vertical |
|
|
26
|
+
| A02 | Cryptographic Failures | Algorithmes faibles, clés en dur |
|
|
27
|
+
| A03 | Injection | SQL, NoSQL, OS, LDAP, XPath |
|
|
28
|
+
| A04 | Insecure Design | Patterns architecturaux dangereux |
|
|
29
|
+
| A05 | Security Misconfiguration | Defaults, headers, CORS |
|
|
30
|
+
| A06 | Vulnerable Components | Dépendances obsolètes |
|
|
31
|
+
| A07 | Auth Failures | Session fixation, brute force |
|
|
32
|
+
| A08 | Data Integrity Failures | Deserialization non signée |
|
|
33
|
+
| A09 | Logging Failures | Données sensibles dans les logs |
|
|
34
|
+
| A10 | SSRF | Requêtes serveur sans validation |
|
|
35
|
+
|
|
36
|
+
### CWE Top 25 (2024)
|
|
37
|
+
|
|
38
|
+
| ID | Faiblesse | Signature de détection |
|
|
39
|
+
|----|-----------|------------------------|
|
|
40
|
+
| CWE-79 | XSS | `innerHTML`, `dangerouslySetInnerHTML`, `document.write` |
|
|
41
|
+
| CWE-89 | SQL Injection | Concaténation SQL, format strings |
|
|
42
|
+
| CWE-416 | Use After Free | Pointeurs, mémoire manuelle (C/C++) |
|
|
43
|
+
| CWE-787 | Out-of-bounds Write | Débordement de buffer |
|
|
44
|
+
| CWE-78 | Command Injection | `exec()`, `system()`, `os.popen()` |
|
|
45
|
+
| CWE-190 | Integer Overflow | Arithmétique non vérifiée |
|
|
46
|
+
| CWE-502 | Deserialization | `pickle.loads()`, `yaml.load()` |
|
|
47
|
+
| CWE-200 | Info Exposure | Logs sensibles, stack traces |
|
|
48
|
+
| CWE-287 | Auth Bypass | Session non vérifiée |
|
|
49
|
+
| CWE-476 | NULL Pointer | Déréférencement sans garde |
|
|
50
|
+
|
|
51
|
+
## Patterns par langage
|
|
52
|
+
|
|
53
|
+
### JavaScript et TypeScript
|
|
54
|
+
|
|
55
|
+
```javascript
|
|
56
|
+
// Command injection
|
|
57
|
+
exec(`rm -rf ${userInput}`)
|
|
58
|
+
child_process.execSync(userCommand)
|
|
59
|
+
|
|
60
|
+
// Code injection
|
|
61
|
+
new Function(userInput)()
|
|
62
|
+
eval(userInput)
|
|
63
|
+
|
|
64
|
+
// XSS
|
|
65
|
+
element.innerHTML = userInput
|
|
66
|
+
document.write(userInput)
|
|
67
|
+
element.outerHTML = userInput
|
|
68
|
+
|
|
69
|
+
// Prototype pollution
|
|
70
|
+
Object.assign(target, userInput)
|
|
71
|
+
_.merge(target, userInput)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Python
|
|
75
|
+
|
|
76
|
+
```python
|
|
77
|
+
# Command injection
|
|
78
|
+
os.system(f"ping {host}")
|
|
79
|
+
subprocess.call(f"ls {path}", shell=True)
|
|
80
|
+
os.popen(userCommand)
|
|
81
|
+
|
|
82
|
+
# Deserialization
|
|
83
|
+
pickle.loads(data)
|
|
84
|
+
yaml.load(data) # sans Loader=SafeLoader
|
|
85
|
+
eval(userInput)
|
|
86
|
+
exec(userInput)
|
|
87
|
+
|
|
88
|
+
# SQL injection
|
|
89
|
+
cursor.execute(f"SELECT * FROM users WHERE id={user_id}")
|
|
90
|
+
cursor.execute("SELECT * FROM users WHERE id=%s" % user_id)
|
|
91
|
+
|
|
92
|
+
# Path traversal
|
|
93
|
+
open(f"/data/{filename}")
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Go
|
|
97
|
+
|
|
98
|
+
```go
|
|
99
|
+
// Command injection
|
|
100
|
+
exec.Command("sh", "-c", userInput)
|
|
101
|
+
os/exec.Command(userCommand)
|
|
102
|
+
|
|
103
|
+
// SQL injection
|
|
104
|
+
db.Query("SELECT * FROM users WHERE id=" + userId)
|
|
105
|
+
|
|
106
|
+
// Path traversal
|
|
107
|
+
os.Open("/data/" + filename)
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Rust
|
|
111
|
+
|
|
112
|
+
```rust
|
|
113
|
+
// Command injection
|
|
114
|
+
Command::new("sh").arg("-c").arg(&user_input)
|
|
115
|
+
|
|
116
|
+
// unwrap sans contexte : panic possible
|
|
117
|
+
let value = risky_operation().unwrap();
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Java
|
|
121
|
+
|
|
122
|
+
```java
|
|
123
|
+
// SQL injection
|
|
124
|
+
Statement stmt = conn.createStatement();
|
|
125
|
+
stmt.executeQuery("SELECT * FROM users WHERE id=" + userId);
|
|
126
|
+
|
|
127
|
+
// Deserialization
|
|
128
|
+
ObjectInputStream ois = new ObjectInputStream(input);
|
|
129
|
+
Object obj = ois.readObject();
|
|
130
|
+
|
|
131
|
+
// Path traversal
|
|
132
|
+
new File("/data/" + filename)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Checklist
|
|
136
|
+
|
|
137
|
+
### Authentification
|
|
138
|
+
|
|
139
|
+
- [ ] Aucun mot de passe en dur
|
|
140
|
+
- [ ] Hash bcrypt ou argon2, jamais MD5 ni SHA1
|
|
141
|
+
- [ ] Rate limiting sur login
|
|
142
|
+
- [ ] Lockout après échecs répétés
|
|
143
|
+
- [ ] Timeout de session configuré
|
|
144
|
+
- [ ] MFA disponible
|
|
145
|
+
|
|
146
|
+
### Autorisation
|
|
147
|
+
|
|
148
|
+
- [ ] RBAC vérifié sur chaque endpoint
|
|
149
|
+
- [ ] Propriétaire de la ressource validé
|
|
150
|
+
- [ ] Pas d'IDOR
|
|
151
|
+
- [ ] Validation côté serveur uniquement
|
|
152
|
+
|
|
153
|
+
### Input validation
|
|
154
|
+
|
|
155
|
+
- [ ] Validation de schéma (Zod, Joi, Pydantic)
|
|
156
|
+
- [ ] Sanitization HTML si le contenu est rendu
|
|
157
|
+
- [ ] Limites de taille
|
|
158
|
+
- [ ] Whitelist plutôt que blacklist
|
|
159
|
+
|
|
160
|
+
### Données sensibles
|
|
161
|
+
|
|
162
|
+
- [ ] Secrets en variables d'environnement
|
|
163
|
+
- [ ] Chiffrement au repos
|
|
164
|
+
- [ ] TLS en transit
|
|
165
|
+
- [ ] Aucune PII dans les logs
|
|
166
|
+
|
|
167
|
+
### Configuration
|
|
168
|
+
|
|
169
|
+
- [ ] CSP, HSTS, X-Frame-Options
|
|
170
|
+
- [ ] CORS restrictif
|
|
171
|
+
- [ ] Debug désactivé en production
|
|
172
|
+
- [ ] Erreurs génériques sans stack trace
|
|
173
|
+
|
|
174
|
+
## Matrice de risque
|
|
175
|
+
|
|
176
|
+
| Risque | Impact | Exploitabilité | Score |
|
|
177
|
+
|--------|--------|----------------|-------|
|
|
178
|
+
| SQL Injection | Critique | Facile | 9.8 |
|
|
179
|
+
| Command Injection | Critique | Moyen | 9.0 |
|
|
180
|
+
| Auth Bypass | Critique | Moyen | 8.5 |
|
|
181
|
+
| XSS stocké | Élevé | Facile | 8.0 |
|
|
182
|
+
| Deserialization | Critique | Difficile | 7.5 |
|
|
183
|
+
| Path Traversal | Élevé | Facile | 7.0 |
|
|
184
|
+
| Information Disclosure | Moyen | Facile | 5.0 |
|
|
185
|
+
|
|
186
|
+
## Workflow d'audit
|
|
187
|
+
|
|
188
|
+
### 1. Scan
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
# Secrets
|
|
192
|
+
grep -rn "(password|secret|api_key|token)\s*=\s*['\"]" --include="*.{ts,js,py,go,rs,java}"
|
|
193
|
+
|
|
194
|
+
# Injection
|
|
195
|
+
grep -rn "(exec|system|popen|shell_exec)\s*\(" --include="*.{ts,js,py,go,rs,java}"
|
|
196
|
+
|
|
197
|
+
# XSS
|
|
198
|
+
grep -rn "(innerHTML|dangerouslySetInnerHTML|document\.write)" --include="*.{ts,tsx,js,jsx}"
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### 2. Analyse contextuelle
|
|
202
|
+
|
|
203
|
+
Pour chaque finding : identifier la source, tracer le flux jusqu'au puits (DB, HTML, shell), vérifier validation et sanitization, puis juger l'exploitabilité.
|
|
204
|
+
|
|
205
|
+
### 3. Rapport
|
|
206
|
+
|
|
207
|
+
```markdown
|
|
208
|
+
# Security audit report
|
|
209
|
+
|
|
210
|
+
## Summary
|
|
211
|
+
- Critical: 2
|
|
212
|
+
- High: 3
|
|
213
|
+
- Medium: 5
|
|
214
|
+
- Low: 8
|
|
215
|
+
|
|
216
|
+
## Critical findings
|
|
217
|
+
|
|
218
|
+
### SEC-001: SQL injection in user.ts:42
|
|
219
|
+
- **CWE:** CWE-89
|
|
220
|
+
- **OWASP:** A03:2021
|
|
221
|
+
- **Evidence:** `cursor.execute(f"SELECT * FROM users WHERE id={userId}")`
|
|
222
|
+
- **Fix:** requête paramétrée
|
|
223
|
+
`cursor.execute("SELECT * FROM users WHERE id=%s", (userId,))`
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## Note sur les fichiers
|
|
227
|
+
|
|
228
|
+
Cette skill n'a pas de dossier `references/`. Les matrices et checklists vivent dans ce fichier. Ne pas référencer un chemin absent du disque.
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: novahiz-supabase
|
|
3
|
+
description: |
|
|
4
|
+
novahiz-supabase for ANY task involving Supabase. Triggers: Database, Auth, Edge
|
|
5
|
+
Functions, Realtime, Storage, Vectors, Cron, Queues; client libraries and SSR integrations
|
|
6
|
+
(supabase-js, @supabase/ssr) in Next.js, React, SvelteKit, Astro, Remix; auth issues
|
|
7
|
+
(login, logout, sessions, JWT, cookies, getSession, getUser, getClaims, RLS); Supabase CLI
|
|
8
|
+
or MCP server; schema changes, migrations, declarative schemas, security audits, Postgres
|
|
9
|
+
extensions (pg_graphql, pg_cron, pg_vector); debugging on Supabase projects.
|
|
10
|
+
license: Apache-2.0
|
|
11
|
+
compatibility: opencode
|
|
12
|
+
metadata:
|
|
13
|
+
author: Novahiz
|
|
14
|
+
organization: Novahiz
|
|
15
|
+
version: "2.0.0"
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# novahiz-supabase
|
|
19
|
+
|
|
20
|
+
Production Supabase work: Auth, RLS, Edge Functions, Storage, and the operations around them.
|
|
21
|
+
|
|
22
|
+
## Core principles
|
|
23
|
+
|
|
24
|
+
### Verify against the changelog before you implement
|
|
25
|
+
|
|
26
|
+
Supabase moves quickly. Signatures, `config.toml` keys, and API conventions change between releases. Fetch `https://supabase.com/changelog.md`, scan for `breaking-change` tags that touch your task, follow the linked pages that apply, then look up the topic in the docs below. Training data is not a substitute.
|
|
27
|
+
|
|
28
|
+
### Prove the fix
|
|
29
|
+
|
|
30
|
+
After any change, run a query that shows it works. An unverified fix is unfinished work.
|
|
31
|
+
|
|
32
|
+
### Stop after two or three failures
|
|
33
|
+
|
|
34
|
+
If an approach keeps failing, change method instead of looping. Re-read the error, check the docs, look at logs when they exist.
|
|
35
|
+
|
|
36
|
+
### Authorization lives in the database
|
|
37
|
+
|
|
38
|
+
Supabase is raw Postgres underneath. Put the rules in RLS rather than scattering them across clients.
|
|
39
|
+
|
|
40
|
+
## Security checklist
|
|
41
|
+
|
|
42
|
+
### Auth and sessions
|
|
43
|
+
|
|
44
|
+
1. Never authorize from `user_metadata`. In Supabase, `raw_user_meta_data` is user-editable and surfaces in `auth.jwt()`, so it is unsafe for RLS or any other decision. Put authorization data in `app_metadata` / `raw_app_meta_data`.
|
|
45
|
+
2. Deleting a user does not kill live access tokens. Sign out or revoke sessions first, keep access token expiry short on sensitive apps, and on critical paths check `session_id` against `auth.sessions`.
|
|
46
|
+
3. Claims from `app_metadata` or `auth.jwt()` stay stale until the token refreshes. Plan for that lag.
|
|
47
|
+
4. Require MFA (AAL2) for high-risk work with a restrictive policy:
|
|
48
|
+
|
|
49
|
+
```sql
|
|
50
|
+
create policy "mfa_required"
|
|
51
|
+
on public.sensitive_table
|
|
52
|
+
as restrictive
|
|
53
|
+
to authenticated
|
|
54
|
+
using ((select auth.jwt()->>'aal') = 'aal2');
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Keys and clients
|
|
58
|
+
|
|
59
|
+
Never ship the `service_role` key or any secret to a public client. Prefer publishable keys on the frontend. In Next.js, every `NEXT_PUBLIC_` variable reaches the browser.
|
|
60
|
+
|
|
61
|
+
### RLS, views, and privileged functions
|
|
62
|
+
|
|
63
|
+
1. Views bypass RLS by default. On Postgres 15 and up, use `CREATE VIEW ... WITH (security_invoker = true)`. On older versions, revoke from `anon` and `authenticated`, or park the view in an unexposed schema.
|
|
64
|
+
2. UPDATE needs a SELECT policy. Without it, updates silently match zero rows: no error, no change.
|
|
65
|
+
3. `auth.role()` is deprecated. Name the target role with `TO authenticated` or `TO anon` instead.
|
|
66
|
+
4. `TO authenticated` alone is authentication without authorization (BOLA / IDOR). Pair it with an ownership predicate in `USING`:
|
|
67
|
+
|
|
68
|
+
```sql
|
|
69
|
+
create policy "example" on table_name for select
|
|
70
|
+
to authenticated
|
|
71
|
+
using ( (select auth.uid()) = user_id );
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
5. UPDATE policies need both `USING` and `WITH CHECK`. Without the check, a user can hand a row to someone else:
|
|
75
|
+
|
|
76
|
+
```sql
|
|
77
|
+
create policy "example" on table_name for update
|
|
78
|
+
to authenticated
|
|
79
|
+
using ( (select auth.uid()) = user_id )
|
|
80
|
+
with check ( (select auth.uid()) = user_id );
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
6. `SECURITY DEFINER` runs with the creator's privileges, usually a `bypassrls` role such as `postgres`. Adding it to silence a permission error removes access control without fixing the cause. Prefer `SECURITY INVOKER`.
|
|
84
|
+
7. `SECURITY DEFINER` functions in `public` are callable by everyone. Postgres grants `EXECUTE` to `PUBLIC` by default, so any such function in `public` is a public endpoint for `anon` and `authenticated`. When you truly need it, keep the function in a non-exposed schema, check `auth.uid()` in the body, and run `supabase db advisors` afterward.
|
|
85
|
+
|
|
86
|
+
### Storage
|
|
87
|
+
|
|
88
|
+
An upsert needs INSERT, SELECT, and UPDATE. Granting only INSERT lets new uploads land while replacements fail in silence.
|
|
89
|
+
|
|
90
|
+
### Dependencies
|
|
91
|
+
|
|
92
|
+
Pin versions and commit lockfiles for `supabase-js`, `@supabase/ssr`, `supabase-py`, and friends.
|
|
93
|
+
|
|
94
|
+
## Authentication
|
|
95
|
+
|
|
96
|
+
### JWT signing keys
|
|
97
|
+
|
|
98
|
+
Move off the shared HS256 secret onto an asymmetric key such as ES256. The public key is published through JWKS, so `getClaims()` verifies locally and the round trip disappears.
|
|
99
|
+
|
|
100
|
+
Migration with zero downtime:
|
|
101
|
+
|
|
102
|
+
1. Create a standby key.
|
|
103
|
+
2. Rotate so the asymmetric key becomes current.
|
|
104
|
+
3. Wait for access tokens to expire, plus a buffer.
|
|
105
|
+
4. Revoke the legacy secret.
|
|
106
|
+
|
|
107
|
+
### Sessions
|
|
108
|
+
|
|
109
|
+
| Item | Default | Notes |
|
|
110
|
+
|------|---------|-------|
|
|
111
|
+
| Access token expiry | 1 hour | Keep the default for most apps |
|
|
112
|
+
| Refresh token | Never expires, single use | Each use issues a new pair |
|
|
113
|
+
| Refresh reuse interval | 10 seconds | Do not change this value |
|
|
114
|
+
|
|
115
|
+
### Server-side authorization
|
|
116
|
+
|
|
117
|
+
| Method | What it does | When to use |
|
|
118
|
+
|--------|--------------|-------------|
|
|
119
|
+
| `getClaims()` | Verifies locally via JWKS with asymmetric keys | First choice on the server |
|
|
120
|
+
| `getUser()` | Asks the Auth server | When you need the freshest user record |
|
|
121
|
+
| `getSession()` | Reads client storage without revalidation | Never for server-side authorization |
|
|
122
|
+
|
|
123
|
+
## RLS performance
|
|
124
|
+
|
|
125
|
+
| Optimization | How | Typical gain |
|
|
126
|
+
|--------------|-----|--------------|
|
|
127
|
+
| Index the policy columns | plain index | up to ~99.94% |
|
|
128
|
+
| Wrap auth functions | `auth.uid()` becomes `(select auth.uid())` | ~94.97 to 99.99% |
|
|
129
|
+
| Explicit client filter | `.eq('user_id', userId)` | ~94.74% |
|
|
130
|
+
| Target role with `TO` | skip irrelevant roles early | ~99.78% |
|
|
131
|
+
| `security definer` function | move the authorization join inside | ~99.78% |
|
|
132
|
+
|
|
133
|
+
Wrapping auth functions in `(select ...)` caches them in the initPlan, so they evaluate once per statement instead of per row. That is the cheapest single win when writing RLS.
|
|
134
|
+
|
|
135
|
+
## Edge Functions
|
|
136
|
+
|
|
137
|
+
### Auth modes
|
|
138
|
+
|
|
139
|
+
| Mode | Accepts |
|
|
140
|
+
|------|---------|
|
|
141
|
+
| `'user'` | Valid user JWT on `Authorization` |
|
|
142
|
+
| `'secret'` | Secret key on `apikey` |
|
|
143
|
+
| `'publishable'` | Publishable key on `apikey` |
|
|
144
|
+
| `'none'` | Any caller, for signed webhooks |
|
|
145
|
+
|
|
146
|
+
### Practices
|
|
147
|
+
|
|
148
|
+
1. Forward the caller's JWT and let RLS do the work. Reserve `service_role` for private workers and trusted webhooks.
|
|
149
|
+
2. Keep functions light. The budget is 2 seconds of CPU and 256 MB of memory. Heavy computation does not belong here.
|
|
150
|
+
3. Use strict CORS. Wildcards and reflected origins are out.
|
|
151
|
+
4. Rate limit. Unchecked requests burn resources.
|
|
152
|
+
|
|
153
|
+
## CLI
|
|
154
|
+
|
|
155
|
+
Discover commands with `--help`. Never guess; the layout shifts between versions.
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
supabase --help
|
|
159
|
+
supabase <group> --help
|
|
160
|
+
supabase <group> <command> --help
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Gotchas: `supabase db query` needs CLI v2.79.0 or newer, `supabase db advisors` needs v2.81.3 or newer, and hand-authored migrations in imperative projects start with `supabase migration new <name>`.
|
|
164
|
+
|
|
165
|
+
## Documentation access
|
|
166
|
+
|
|
167
|
+
Priority order before implementing anything Supabase:
|
|
168
|
+
|
|
169
|
+
1. MCP `search_docs` for snippets.
|
|
170
|
+
2. Fetch a docs page as markdown by appending `.md` to the URL path.
|
|
171
|
+
3. Web search when you do not know which page to open.
|
|
172
|
+
|
|
173
|
+
## References
|
|
174
|
+
|
|
175
|
+
- https://supabase.com/docs
|
|
176
|
+
- https://supabase.com/changelog.md
|
|
177
|
+
- https://supabase.com/docs/guides/security/product-security.md
|
|
@@ -1,26 +1,30 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: novahiz-task
|
|
3
3
|
description: |
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Use when a plan
|
|
8
|
-
|
|
4
|
+
novahiz-task, step 3 of the Novahiz pipeline: cut a plan into atomic, ordered,
|
|
5
|
+
verifiable tasks. Every task carries an objective, testable acceptance criteria, proof,
|
|
6
|
+
dependencies, the files it owns, and a size from XS to XL.
|
|
7
|
+
Use when a plan has to become an ordered list, or when the work spans several sessions
|
|
8
|
+
or several agents.
|
|
9
9
|
Triggers on: "break down", task list, todo, subtasks, acceptance criteria,
|
|
10
10
|
prioritization, "what do I start with".
|
|
11
|
-
license:
|
|
11
|
+
license: Apache-2.0
|
|
12
12
|
compatibility: opencode
|
|
13
|
+
metadata:
|
|
14
|
+
author: Novahiz
|
|
15
|
+
organization: Novahiz
|
|
16
|
+
version: "2.0.0"
|
|
13
17
|
---
|
|
14
18
|
|
|
15
19
|
# novahiz-task: split into verifiable tasks
|
|
16
20
|
|
|
17
|
-
**Step 3 of 6** in the pipeline. The plan
|
|
21
|
+
**Step 3 of 6** in the pipeline. The plan sets the destination. This step sets the stages, their order, and the way each one shuts.
|
|
18
22
|
|
|
19
|
-
Previous
|
|
23
|
+
Previous: `novahiz-clarify`. Next: `novahiz-analyse`.
|
|
20
24
|
|
|
21
25
|
## Task contract
|
|
22
26
|
|
|
23
|
-
|
|
27
|
+
Every task takes the same frame. Without acceptance criteria and proof, it remains a wish.
|
|
24
28
|
|
|
25
29
|
```markdown
|
|
26
30
|
## Task N: <short title, imperative mood>
|
|
@@ -35,15 +39,15 @@ Files involved: path/a, path/b
|
|
|
35
39
|
Size: XS | S | M | L | XL
|
|
36
40
|
```
|
|
37
41
|
|
|
38
|
-
## The ledger
|
|
42
|
+
## The ledger refuses a `verify` step that carries no proof
|
|
39
43
|
|
|
40
|
-
`novahiz_task`
|
|
44
|
+
`novahiz_task` holds the line: a step of kind `verify` cannot close without `proof`. You fix the proof when you write the plan, not when doubt shows up.
|
|
41
45
|
|
|
42
46
|
| Action | Usage |
|
|
43
47
|
|---|---|
|
|
44
48
|
| `plan` | deposit the full list at once |
|
|
45
49
|
| `todo` | add a step (`kind`: read, edit, verify, delegate) |
|
|
46
|
-
| `start` / `done` | open
|
|
50
|
+
| `start` / `done` | open and close (`done` needs `proof` on a verify step) |
|
|
47
51
|
| `block` | block, with `reason` |
|
|
48
52
|
| `review` | revise the plan between steps |
|
|
49
53
|
| `amend` / `insert` / `drop` / `reorder` | fix the list without rewriting it |
|
|
@@ -59,14 +63,14 @@ Size: XS | S | M | L | XL
|
|
|
59
63
|
| L | 5 to 8 | feature touching multiple components |
|
|
60
64
|
| XL | 8 and above | must be split, no exception |
|
|
61
65
|
|
|
62
|
-
Split again
|
|
66
|
+
Split again when the work runs past one focused sitting, when the criteria overflow three bullets, when two independent subsystems are in play, or when the title contains "and". That word usually means two tasks glued together.
|
|
63
67
|
|
|
64
68
|
## Order
|
|
65
69
|
|
|
66
|
-
- Dependencies first.
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
- One checkpoint every two or three steps.
|
|
70
|
+
- Dependencies come first.
|
|
71
|
+
- Every task leaves the system in a working state.
|
|
72
|
+
- Dangerous tasks go early: failing sooner costs less.
|
|
73
|
+
- One checkpoint every two or three steps. Its job is to prove progress, then to decide between continuing, fixing, or stopping.
|
|
70
74
|
|
|
71
75
|
## Categories that require this step
|
|
72
76
|
|
|
@@ -75,31 +79,31 @@ Split again if the work exceeds one focused session, if criteria do not fit in t
|
|
|
75
79
|
## Discipline
|
|
76
80
|
|
|
77
81
|
- One `in_progress` step at a time.
|
|
78
|
-
-
|
|
79
|
-
- `completed`
|
|
80
|
-
- A blocked step stays `in_progress
|
|
81
|
-
-
|
|
82
|
+
- Update as things change; no batch closings at the end.
|
|
83
|
+
- `completed` follows verification and nothing else.
|
|
84
|
+
- A blocked step stays `in_progress`, and a follow-up task records the blockage.
|
|
85
|
+
- Keep the user's own words: commands, options, arguments, order.
|
|
82
86
|
|
|
83
87
|
## Plan conflict
|
|
84
88
|
|
|
85
|
-
Before
|
|
89
|
+
Before you write, check for an open plan. Same work: revise it where it stands. Different work: stop, then offer the choice through the `question` tool (resume, replace, or open alongside), in the interface and never in prose. An open plan never gets deleted, overwritten, or renamed on your own initiative.
|
|
86
90
|
|
|
87
91
|
## Rationalizations
|
|
88
92
|
|
|
89
93
|
| Rationalization | Reality |
|
|
90
94
|
|---|---|
|
|
91
|
-
| "I'll see as I go" |
|
|
92
|
-
| "the tasks are obvious" |
|
|
95
|
+
| "I'll see as I go" | you get tangled work and rework |
|
|
96
|
+
| "the tasks are obvious" | writing them exposes dependencies and forgotten edge cases |
|
|
93
97
|
| "planning is wasted time" | planning is part of the work |
|
|
94
|
-
| "I'll keep it all in context" |
|
|
95
|
-
| "the old plan is stale" | unchecked tasks
|
|
98
|
+
| "I'll keep it all in context" | context windows are finite; a written plan outlives the session |
|
|
99
|
+
| "the old plan is stale" | unchecked tasks hold state that exists nowhere else |
|
|
96
100
|
|
|
97
101
|
## Red flags
|
|
98
102
|
|
|
99
|
-
- Implementation started
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
+
- Implementation started before a task list exists
|
|
104
|
+
- A task like "implement the feature" with no acceptance criteria
|
|
105
|
+
- A plan without a verification step
|
|
106
|
+
- Every task sitting at XL
|
|
103
107
|
- No checkpoints
|
|
104
108
|
- Dependency order ignored
|
|
105
109
|
- Plan overwritten without confirmation
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: novahiz-wcag-audit
|
|
3
|
+
description: |
|
|
4
|
+
novahiz-wcag-audit runs a WCAG 2.2 Level A/AA accessibility audit across source code,
|
|
5
|
+
live pages, and structured reports. Use when auditing web accessibility, checking WCAG
|
|
6
|
+
compliance, fixing contrast, keyboard, ARIA, or screen-reader issues, or producing an
|
|
7
|
+
accessibility audit report.
|
|
8
|
+
license: Apache-2.0
|
|
9
|
+
compatibility: opencode
|
|
10
|
+
metadata:
|
|
11
|
+
author: Novahiz
|
|
12
|
+
organization: Novahiz
|
|
13
|
+
version: "2.0.0"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# novahiz-wcag-audit
|
|
17
|
+
|
|
18
|
+
End-to-end WCAG 2.2 A/AA audit: scan the source, check the live page, fix what fails, then produce a cited report.
|
|
19
|
+
|
|
20
|
+
## Pick a path
|
|
21
|
+
|
|
22
|
+
| Input | Path |
|
|
23
|
+
|-------|------|
|
|
24
|
+
| Files only, no running app | Scan, Fix, Verify in code |
|
|
25
|
+
| URL or running app | Scan, Live audit, Fix, Re-verify |
|
|
26
|
+
| User asks for a report | Run both paths, then Report |
|
|
27
|
+
|
|
28
|
+
## Workflow
|
|
29
|
+
|
|
30
|
+
**1. Scope.** Confirm the target (files, folder, URL), the claim level (AA by default), and what is out of scope.
|
|
31
|
+
|
|
32
|
+
**2. Scan.** Review the source against [references/wcag22-aa.md](references/wcag22-aa.md) in this order: structure and semantics, then keyboard and focus, then forms and errors, then images, media, and ARIA, then color and contrast with `scripts/contrast.mjs`. Record each finding with SC id, severity, `file:line`, evidence, and a proposed fix.
|
|
33
|
+
|
|
34
|
+
**3. Live audit** when a page is available. Playwright MCP only. Never Chrome or Chromium; the Edge profile rules apply.
|
|
35
|
+
|
|
36
|
+
- Keyboard pass with Tab and Shift+Tab: focus visibility and traps.
|
|
37
|
+
- Landmarks and heading order from the accessibility tree or snapshot.
|
|
38
|
+
- Contrast from computed styles fed to the contrast script, plus reflow at 320 CSS px and 200% text zoom.
|
|
39
|
+
- Optional axe-core only if the page already loads it. No heavy npm install for a one-off audit.
|
|
40
|
+
|
|
41
|
+
Automated tools catch a fraction of the problems. Keyboard and screen-reader checks are mandatory before claiming AA.
|
|
42
|
+
|
|
43
|
+
**4. Fix.** Prefer semantic HTML over ARIA. Work by severity: blockers first, then significant barriers, then friction. Keep every change minimal and reversible.
|
|
44
|
+
|
|
45
|
+
**5. Verify.** Re-run the contrast script on every color pair you touched. Re-check the keyboard path on changed components. Flip each SC line to pass only with evidence attached.
|
|
46
|
+
|
|
47
|
+
**6. Report.** Use `scripts/report.mjs` or [references/report-template.md](references/report-template.md). The minimum content is scope and claim level, a per-SC PASS/FAIL table with evidence, findings with severity and before/after, the manual tests you ran, and residual risks.
|
|
48
|
+
|
|
49
|
+
## Scripts
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
node scripts/contrast.mjs "#767676" "#ffffff"
|
|
53
|
+
node scripts/contrast.mjs "#767676" "#ffffff" --level large
|
|
54
|
+
node scripts/contrast.mjs "#767676" "#ffffff" --level aaa --text normal
|
|
55
|
+
node scripts/report.mjs findings.json > report.md
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Contrast exits 0 on pass, 1 on fail, 2 on usage or parse error. Findings JSON shape: `{ "sc", "status", "severity", "location", "evidence", "fix" }`. A filled sample sits at [references/findings.example.json](references/findings.example.json).
|
|
59
|
+
|
|
60
|
+
## Severity
|
|
61
|
+
|
|
62
|
+
| Severity | Meaning | Action |
|
|
63
|
+
|----------|---------|--------|
|
|
64
|
+
| critical | Blocks access: no keyboard, no alt, no accessible name | Before release |
|
|
65
|
+
| major | Significant barrier: contrast, focus, labels | Current sprint |
|
|
66
|
+
| minor | Friction: redundant ARIA, heading gaps | Backlog with a written justification |
|
|
67
|
+
|
|
68
|
+
## Red flags
|
|
69
|
+
|
|
70
|
+
- Claiming AA from automated scans alone.
|
|
71
|
+
- `aria-label` that does not match the visible label (2.5.3).
|
|
72
|
+
- `tabindex` greater than 0.
|
|
73
|
+
- Color as the only signal (1.4.1).
|
|
74
|
+
- Focus outline removed with nothing in its place.
|
|
75
|
+
- Decorative `alt` left on informative images.
|
|
76
|
+
|
|
77
|
+
## Deep reference
|
|
78
|
+
|
|
79
|
+
All 55 Level A and AA criteria: [references/wcag22-aa.md](references/wcag22-aa.md).
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"target": "https://example.com/app",
|
|
3
|
+
"level": "AA",
|
|
4
|
+
"findings": [
|
|
5
|
+
{
|
|
6
|
+
"sc": "1.1.1",
|
|
7
|
+
"name": "Non-text Content",
|
|
8
|
+
"level": "A",
|
|
9
|
+
"status": "FAIL",
|
|
10
|
+
"severity": "critical",
|
|
11
|
+
"location": "src/components/Card.tsx:42",
|
|
12
|
+
"evidence": "<img src={product.image} /> with no alt",
|
|
13
|
+
"fix": "alt={product.name} or alt=\"\" if decorative"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"sc": "1.4.3",
|
|
17
|
+
"name": "Contrast (Minimum)",
|
|
18
|
+
"level": "AA",
|
|
19
|
+
"status": "FAIL",
|
|
20
|
+
"severity": "major",
|
|
21
|
+
"location": "src/styles/main.css:128",
|
|
22
|
+
"evidence": "#999999 on #ffffff = 2.85:1 (need 4.5:1)",
|
|
23
|
+
"fix": "Use #767676 or darker"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"sc": "2.4.7",
|
|
27
|
+
"name": "Focus Visible",
|
|
28
|
+
"level": "AA",
|
|
29
|
+
"status": "PASS",
|
|
30
|
+
"severity": "major",
|
|
31
|
+
"location": "src/styles/focus.css:1",
|
|
32
|
+
"evidence": "outline: 2px solid #06d6a0 on :focus-visible",
|
|
33
|
+
"fix": ""
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|