ai-developer-skill-os 7.5.0 → 8.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/CHANGELOG.md +2 -1
- package/.agents/README.md +51 -10
- package/.agents/docs/ARCHITECTURE.md +156 -0
- package/.agents/docs/CHI_TIET_SKILLS.md +2 -1
- package/.agents/docs/MIGRATION-CLEANUP-V8.1.3.md +36 -0
- package/.agents/docs/MIGRATION-STATUS.md +35 -0
- package/.agents/docs/MIGRATION-V8.md +10 -0
- package/.agents/docs/ROADMAP-V8.2.md +78 -0
- package/.agents/docs/V8-CERTIFICATION.md +27 -0
- package/.agents/docs/VERSIONING.md +95 -0
- package/.agents/docs/decisions/ADR-001-v8-migration.md +58 -0
- package/.agents/docs/decisions/ADR-002-workflow-separation.md +50 -0
- package/.agents/docs/decisions/ADR-003-registry-generated.md +54 -0
- package/.agents/docs/decisions/ADR-008-skill-boundary-review.md +27 -0
- package/.agents/docs/schemas/learning.schema.yml +69 -0
- package/.agents/docs/schemas/skill.schema.yml +188 -0
- package/.agents/docs/schemas/workflow.schema.yml +33 -0
- package/.agents/knowledge/design-intelligence/industries/ecommerce.md +3 -0
- package/.agents/knowledge/design-intelligence/industries/fintech.md +3 -0
- package/.agents/knowledge/design-intelligence/industries/healthcare.md +3 -0
- package/.agents/learnings/draft/README.md +37 -0
- package/.agents/registry/capability-graph.yml +500 -0
- package/.agents/registry/skills-index.yml +525 -0
- package/.agents/reports/RELEASE-CHECKLIST.md +29 -0
- package/.agents/reports/architecture-audit.md +13 -0
- package/.agents/reports/graph-health.md +20 -0
- package/.agents/reports/skill-audit.md +215 -0
- package/.agents/rules/coding.md +102 -0
- package/.agents/rules/command-safety.md +21 -0
- package/.agents/rules/global.md +135 -0
- package/.agents/rules/priorities.yml +24 -0
- package/.agents/rules/safety.md +84 -0
- package/.agents/rules/security.md +13 -0
- package/.agents/rules/skill-quality.md +14 -0
- package/.agents/skills/_template/SKILL.md +132 -0
- package/.agents/skills/qk-access-policy/SKILL.md +61 -5
- package/.agents/skills/qk-agent-observability/SKILL.md +73 -0
- package/.agents/skills/qk-ai-builder/SKILL.md +62 -5
- package/.agents/skills/qk-api-lifecycle/SKILL.md +59 -6
- package/.agents/skills/qk-bug-resolution/SKILL.md +64 -6
- package/.agents/skills/qk-context-loader/SKILL.md +63 -11
- package/.agents/skills/qk-data-lifecycle/SKILL.md +61 -5
- package/.agents/skills/qk-db-optimizer/SKILL.md +61 -5
- package/.agents/skills/qk-design-system-engineering/SKILL.md +112 -0
- package/.agents/skills/qk-devops-platform/SKILL.md +117 -0
- package/.agents/skills/qk-docs/SKILL.md +62 -6
- package/.agents/skills/qk-engineering-standard/SKILL.md +62 -12
- package/.agents/skills/qk-fe-api-integration/SKILL.md +60 -6
- package/.agents/skills/qk-feature-delivery/SKILL.md +65 -6
- package/.agents/skills/qk-frontend-architecture/SKILL.md +134 -0
- package/.agents/skills/qk-help/SKILL.md +245 -193
- package/.agents/skills/qk-orchestrator/SKILL.md +67 -13
- package/.agents/skills/qk-orchestrator/references/routing-table.md +4 -3
- package/.agents/skills/qk-product-specification/SKILL.md +130 -0
- package/.agents/skills/qk-production-release/SKILL.md +59 -6
- package/.agents/skills/qk-project-bootstrap/SKILL.md +68 -7
- package/.agents/skills/qk-project-health/SKILL.md +63 -6
- package/.agents/skills/qk-project-memory/SKILL.md +109 -6
- package/.agents/skills/qk-security-audit/SKILL.md +135 -0
- package/.agents/skills/qk-system-evolution/SKILL.md +63 -12
- package/.agents/skills/qk-test-engineering/SKILL.md +139 -0
- package/.agents/skills/qk-ui-audit/SKILL.md +63 -8
- package/.agents/skills/qk-ui-builder/SKILL.md +509 -0
- package/.agents/skills/qk-ui-builder/references/anti-patterns.md +295 -0
- package/.agents/skills/qk-ui-builder/references/color.md +115 -0
- package/.agents/skills/qk-ui-builder/references/component-cookbook.md +1194 -0
- package/.agents/skills/qk-ui-builder/references/copy.md +250 -0
- package/.agents/skills/qk-ui-builder/references/interaction-and-states.md +115 -0
- package/.agents/skills/qk-ui-builder/references/layout-and-space.md +111 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/01-bento-grid.md +48 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/02-long-document.md +50 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/03-marquee-hero.md +51 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/04-stat-led.md +49 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/05-workbench.md +44 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/06-conversational-faq.md +50 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/07-manifesto.md +51 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/08-photographic.md +50 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/09-quote-led.md +50 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/11-catalogue.md +49 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/12-letter.md +49 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/13-index-first.md +49 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/14-narrative-workflow.md +48 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/15-split-studio.md +48 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/16-feature-stack.md +51 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/17-type-specimen.md +48 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/18-portfolio-grid.md +48 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/19-map-diagram.md +50 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/20-ecosystem-index.md +48 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/21-component-playground.md +45 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures.md +38 -0
- package/.agents/skills/qk-ui-builder/references/motion.md +95 -0
- package/.agents/skills/qk-ui-builder/references/responsive.md +115 -0
- package/.agents/skills/qk-ui-builder/references/slop-test.md +135 -0
- package/.agents/skills/qk-ui-builder/references/structure.md +280 -0
- package/.agents/skills/qk-ui-builder/references/themes/atmospheric.md +53 -0
- package/.agents/skills/qk-ui-builder/references/themes/carnival.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/cobalt.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/editorial.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/garden.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/hum.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/lumen.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/midnight.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/modern-minimal.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/playful.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/specimen.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/terminal.md +52 -0
- package/.agents/skills/qk-ui-builder/references/typography.md +129 -0
- package/.agents/skills/qk-ui-system-builder/SKILL.md +61 -5
- package/.agents/skills/qk-validation-gate/SKILL.md +63 -11
- package/.agents/skills/qk-web-quality-gate/SKILL.md +114 -0
- package/.agents/workflows/_schema.yml +109 -0
- package/.agents/workflows/bug-resolution.yml +101 -0
- package/.agents/workflows/code-review.yml +77 -0
- package/.agents/workflows/documentation.yml +75 -0
- package/.agents/workflows/feature-delivery.yml +103 -0
- package/.agents/workflows/refactor.yml +81 -0
- package/.agents/workflows/research.yml +60 -0
- package/.agents/workflows/security-audit.yml +72 -0
- package/.agents/workflows/skill-evolution.yml +65 -0
- package/.agents/workflows/spec-driven-development.yml +57 -0
- package/CHANGELOG.md +91 -69
- package/README.md +50 -45
- package/bin/install.js +57 -309
- package/package.json +14 -3
- package/tooling/generate-evaluation-cases.cjs +44 -0
- package/tooling/generate-registry.js +157 -0
- package/tooling/run-aar.js +143 -0
- package/tooling/validate-graph.js +87 -0
- package/tooling/validate-skills.js +102 -0
- package/.agents/_template/BEHAVIOR_SPEC.md +0 -96
- package/.agents/_template/examples/example-en.md +0 -49
- package/.agents/_template/examples/example-vi.md +0 -49
- package/.agents/skills/qk-design-to-code/SKILL.md +0 -285
- package/.agents/skills.json +0 -819
- package/.github/workflows/ci.yml +0 -56
- package/.qk-ai-skill-os/CHANGELOG.md +0 -69
- package/.qk-ai-skill-os/LICENSE +0 -21
- package/.qk-ai-skill-os/README.md +0 -59
- package/.qk-ai-skill-os/_template/BEHAVIOR_SPEC.md +0 -96
- package/.qk-ai-skill-os/_template/examples/example-en.md +0 -49
- package/.qk-ai-skill-os/_template/examples/example-vi.md +0 -49
- package/.qk-ai-skill-os/docs/CHI_TIET_SKILLS.md +0 -125
- package/.qk-ai-skill-os/docs/GOVERNANCE.md +0 -40
- package/.qk-ai-skill-os/docs/HUONG_DAN_SU_DUNG.md +0 -120
- package/.qk-ai-skill-os/docs/SPEC.md +0 -87
- package/.qk-ai-skill-os/docs/adr/0001-intent-based-architecture.md +0 -19
- package/.qk-ai-skill-os/docs/adr/0002-kernel-freeze.md +0 -21
- package/.qk-ai-skill-os/docs/adr/0003-risk-based-verification.md +0 -20
- package/.qk-ai-skill-os/docs/adr/0004-progressive-evidence.md +0 -19
- package/.qk-ai-skill-os/docs/skill-classification.md +0 -25
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-accessibility-audit/SKILL.md +0 -121
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-agent-orchestrator/SKILL.md +0 -179
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-api-integration/SKILL.md +0 -389
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-auth-security/SKILL.md +0 -96
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-backend-architecture/SKILL.md +0 -125
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-bug-fix/SKILL.md +0 -213
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-component-generator/SKILL.md +0 -136
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-context-manager/SKILL.md +0 -175
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-database-engineer/SKILL.md +0 -104
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-deployment/SKILL.md +0 -96
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-design-system/SKILL.md +0 -137
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-form-builder/SKILL.md +0 -140
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-architecture/SKILL.md +0 -155
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-debug/SKILL.md +0 -133
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-performance/SKILL.md +0 -129
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-testing/SKILL.md +0 -146
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-git-engineer/SKILL.md +0 -304
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-help/SKILL.md +0 -68
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-migration/SKILL.md +0 -284
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-project-audit/SKILL.md +0 -280
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-refactor/SKILL.md +0 -222
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-state-management/SKILL.md +0 -140
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-table-crud-generator/SKILL.md +0 -127
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-ui-builder/SKILL.md +0 -152
- package/.qk-ai-skill-os/skills/_template/SKILL.md +0 -238
- package/.qk-ai-skill-os/skills/qk-access-policy/SKILL.md +0 -179
- package/.qk-ai-skill-os/skills/qk-ai-builder/SKILL.md +0 -221
- package/.qk-ai-skill-os/skills/qk-api-lifecycle/SKILL.md +0 -176
- package/.qk-ai-skill-os/skills/qk-bug-resolution/SKILL.md +0 -307
- package/.qk-ai-skill-os/skills/qk-context-loader/SKILL.md +0 -218
- package/.qk-ai-skill-os/skills/qk-data-lifecycle/SKILL.md +0 -192
- package/.qk-ai-skill-os/skills/qk-db-optimizer/SKILL.md +0 -196
- package/.qk-ai-skill-os/skills/qk-design-to-code/SKILL.md +0 -291
- package/.qk-ai-skill-os/skills/qk-docs/SKILL.md +0 -198
- package/.qk-ai-skill-os/skills/qk-engineering-standard/SKILL.md +0 -351
- package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/backend.md +0 -122
- package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/database.md +0 -3
- package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/frontend.md +0 -152
- package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/security.md +0 -3
- package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/testing.md +0 -3
- package/.qk-ai-skill-os/skills/qk-fe-api-integration/SKILL.md +0 -326
- package/.qk-ai-skill-os/skills/qk-feature-delivery/SKILL.md +0 -305
- package/.qk-ai-skill-os/skills/qk-help/SKILL.md +0 -193
- package/.qk-ai-skill-os/skills/qk-orchestrator/SKILL.md +0 -277
- package/.qk-ai-skill-os/skills/qk-orchestrator/references/routing-table.md +0 -77
- package/.qk-ai-skill-os/skills/qk-production-release/SKILL.md +0 -290
- package/.qk-ai-skill-os/skills/qk-project-bootstrap/SKILL.md +0 -240
- package/.qk-ai-skill-os/skills/qk-project-health/SKILL.md +0 -199
- package/.qk-ai-skill-os/skills/qk-project-memory/SKILL.md +0 -172
- package/.qk-ai-skill-os/skills/qk-system-evolution/SKILL.md +0 -285
- package/.qk-ai-skill-os/skills/qk-ui-audit/SKILL.md +0 -314
- package/.qk-ai-skill-os/skills/qk-ui-audit/references/anti-slop-checklist.md +0 -136
- package/.qk-ai-skill-os/skills/qk-ui-system-builder/SKILL.md +0 -225
- package/.qk-ai-skill-os/skills/qk-validation-gate/SKILL.md +0 -361
- package/.qk-ai-skill-os/skills.json +0 -819
- package/CLAUDE.md +0 -110
- package/_template/BEHAVIOR_SPEC.md +0 -96
- package/_template/examples/example-en.md +0 -49
- package/_template/examples/example-vi.md +0 -49
- package/add_lang.js +0 -21
- package/add_lang.py +0 -25
- package/add_sections.py +0 -53
- package/bin/lint.js +0 -122
- package/docs/CHI_TIET_SKILLS.md +0 -125
- package/docs/GOVERNANCE.md +0 -40
- package/docs/HUONG_DAN_SU_DUNG.md +0 -120
- package/docs/SPEC.md +0 -87
- package/docs/adr/0001-intent-based-architecture.md +0 -19
- package/docs/adr/0002-kernel-freeze.md +0 -21
- package/docs/adr/0003-risk-based-verification.md +0 -20
- package/docs/adr/0004-progressive-evidence.md +0 -19
- package/docs/skill-classification.md +0 -25
- package/fix_seeds.js +0 -22
- package/framework/KERNEL.md +0 -83
- package/framework/bias-library/cosmetic-refactor.md +0 -21
- package/framework/bias-library/enterprise-crud.md +0 -21
- package/framework/bias-library/fake-ui-slop.md +0 -20
- package/framework/bias-library/hallucinated-tools.md +0 -20
- package/framework/bias-library/missing-ui-states.md +0 -19
- package/framework/bias-library/over-indexing.md +0 -20
- package/framework/bias-library/swallow-errors.md +0 -19
- package/framework/bias-library/ui-only-security.md +0 -17
- package/framework/decision-primitives.md +0 -47
- package/framework/dial-library/complexity-budget.md +0 -13
- package/framework/dial-library/granularity.md +0 -13
- package/framework/dial-library/optimization-strategy.md +0 -13
- package/framework/dial-library/strictness.md +0 -13
- package/framework/rule-library/delegation-only.md +0 -9
- package/framework/rule-library/minimal-diff.md +0 -9
- package/framework/skill-schema.md +0 -310
- package/knowledge/backend/nodejs.md +0 -52
- package/knowledge/frontend/react.md +0 -81
- package/migrate-to-v6.js +0 -130
- package/migrate.js +0 -147
- package/migrate.py +0 -133
- package/migrate_all.cjs +0 -96
- package/patch.js +0 -15
- package/patch.py +0 -89
- package/patch2.py +0 -83
- package/rename.js +0 -64
- package/skills/_archive_old_skills/qk-accessibility-audit/SKILL.md +0 -121
- package/skills/_archive_old_skills/qk-agent-orchestrator/SKILL.md +0 -179
- package/skills/_archive_old_skills/qk-api-integration/SKILL.md +0 -389
- package/skills/_archive_old_skills/qk-auth-security/SKILL.md +0 -96
- package/skills/_archive_old_skills/qk-backend-architecture/SKILL.md +0 -125
- package/skills/_archive_old_skills/qk-bug-fix/SKILL.md +0 -213
- package/skills/_archive_old_skills/qk-component-generator/SKILL.md +0 -136
- package/skills/_archive_old_skills/qk-context-manager/SKILL.md +0 -175
- package/skills/_archive_old_skills/qk-database-engineer/SKILL.md +0 -104
- package/skills/_archive_old_skills/qk-deployment/SKILL.md +0 -96
- package/skills/_archive_old_skills/qk-design-system/SKILL.md +0 -137
- package/skills/_archive_old_skills/qk-form-builder/SKILL.md +0 -140
- package/skills/_archive_old_skills/qk-frontend-architecture/SKILL.md +0 -155
- package/skills/_archive_old_skills/qk-frontend-debug/SKILL.md +0 -133
- package/skills/_archive_old_skills/qk-frontend-performance/SKILL.md +0 -129
- package/skills/_archive_old_skills/qk-frontend-testing/SKILL.md +0 -146
- package/skills/_archive_old_skills/qk-git-engineer/SKILL.md +0 -304
- package/skills/_archive_old_skills/qk-help/SKILL.md +0 -68
- package/skills/_archive_old_skills/qk-migration/SKILL.md +0 -284
- package/skills/_archive_old_skills/qk-project-audit/SKILL.md +0 -280
- package/skills/_archive_old_skills/qk-refactor/SKILL.md +0 -222
- package/skills/_archive_old_skills/qk-state-management/SKILL.md +0 -140
- package/skills/_archive_old_skills/qk-table-crud-generator/SKILL.md +0 -127
- package/skills/_archive_old_skills/qk-ui-builder/SKILL.md +0 -152
- package/skills/_template/SKILL.md +0 -238
- package/skills/qk-access-policy/SKILL.md +0 -179
- package/skills/qk-ai-builder/SKILL.md +0 -215
- package/skills/qk-api-lifecycle/SKILL.md +0 -176
- package/skills/qk-bug-resolution/SKILL.md +0 -307
- package/skills/qk-context-loader/SKILL.md +0 -218
- package/skills/qk-data-lifecycle/SKILL.md +0 -192
- package/skills/qk-db-optimizer/SKILL.md +0 -196
- package/skills/qk-design-to-code/SKILL.md +0 -285
- package/skills/qk-docs/SKILL.md +0 -198
- package/skills/qk-engineering-standard/SKILL.md +0 -351
- package/skills/qk-engineering-standard/rules/backend.md +0 -122
- package/skills/qk-engineering-standard/rules/database.md +0 -3
- package/skills/qk-engineering-standard/rules/frontend.md +0 -152
- package/skills/qk-engineering-standard/rules/security.md +0 -3
- package/skills/qk-engineering-standard/rules/testing.md +0 -3
- package/skills/qk-fe-api-integration/SKILL.md +0 -326
- package/skills/qk-feature-delivery/SKILL.md +0 -305
- package/skills/qk-help/SKILL.md +0 -193
- package/skills/qk-orchestrator/SKILL.md +0 -277
- package/skills/qk-orchestrator/references/routing-table.md +0 -77
- package/skills/qk-production-release/SKILL.md +0 -284
- package/skills/qk-project-bootstrap/SKILL.md +0 -234
- package/skills/qk-project-health/SKILL.md +0 -199
- package/skills/qk-project-memory/SKILL.md +0 -172
- package/skills/qk-system-evolution/SKILL.md +0 -281
- package/skills/qk-ui-audit/SKILL.md +0 -314
- package/skills/qk-ui-audit/references/anti-slop-checklist.md +0 -136
- package/skills/qk-ui-system-builder/SKILL.md +0 -221
- package/skills/qk-validation-gate/SKILL.md +0 -359
- package/skills.json +0 -819
- package/specs/contracts/behavior-contract.yaml +0 -40
- package/specs/expectations/qk-bug-resolution.yaml +0 -35
- package/specs/fixtures/user-payload.json +0 -12
- package/specs/regressions/api-integration-null-fields.yaml +0 -19
- package/specs/scenarios/fix-login-nullref.yaml +0 -3
- package/taste-skill/.claude-plugin/marketplace.json +0 -20
- package/taste-skill/.claude-plugin/plugin.json +0 -19
- package/taste-skill/.github/FUNDING.yml +0 -1
- package/taste-skill/.github/copilot-instructions.md +0 -11
- package/taste-skill/CHANGELOG.md +0 -111
- package/taste-skill/LICENSE +0 -21
- package/taste-skill/README.md +0 -212
- package/taste-skill/assets/.gitkeep +0 -0
- package/taste-skill/assets/readme-banner.webp +0 -0
- package/taste-skill/assets/readme-buttons/btn-agent-skills.webp +0 -0
- package/taste-skill/assets/readme-buttons/btn-changelog.webp +0 -0
- package/taste-skill/assets/readme-buttons/btn-mit.webp +0 -0
- package/taste-skill/assets/readme-buttons/btn-site.webp +0 -0
- package/taste-skill/assets/readme-buttons/btn-tools.webp +0 -0
- package/taste-skill/assets/readme-cta-tasteskill.svg +0 -5
- package/taste-skill/assets/sponsors/animations-dev.webp +0 -0
- package/taste-skill/assets/sponsors/emil-animations-dev.webp +0 -0
- package/taste-skill/assets/taste-skill-logo.png +0 -0
- package/taste-skill/assets/taste-skill-logo.webp +0 -0
- package/taste-skill/assets/vercel-oss-program-badge.svg +0 -44
- package/taste-skill/examples/floria-bottom.webp +0 -0
- package/taste-skill/examples/floria-full.webp +0 -0
- package/taste-skill/examples/floria-top.webp +0 -0
- package/taste-skill/research/README.md +0 -8
- package/taste-skill/research/laziness/README.md +0 -25
- package/taste-skill/research/laziness/findings/empirical-results.md +0 -58
- package/taste-skill/research/laziness/findings/references.md +0 -20
- package/taste-skill/research/laziness/remediation/architectural-patterns.md +0 -55
- package/taste-skill/research/laziness/remediation/parameter-tuning.md +0 -44
- package/taste-skill/research/laziness/remediation/prompt-engineering.md +0 -52
- package/taste-skill/research/laziness/remediation/reference-prompts.md +0 -79
- package/taste-skill/research/laziness/root-causes/cognitive-shortcuts.md +0 -23
- package/taste-skill/research/laziness/root-causes/output-limits.md +0 -39
- package/taste-skill/research/laziness/root-causes/rlhf-and-compute.md +0 -27
- package/taste-skill/research/laziness/root-causes/training-data-bias.md +0 -28
- package/taste-skill/scripts/build-emil-sponsor-row.mjs +0 -41
- package/taste-skill/scripts/convert-readme-assets-webp.mjs +0 -142
- package/taste-skill/scripts/process-readme-buttons.mjs +0 -108
- package/taste-skill/scripts/process-sponsor-badge.mjs +0 -83
- package/taste-skill/skill.sh +0 -25
- package/taste-skill/skills/brandkit/SKILL.md +0 -798
- package/taste-skill/skills/brutalist-skill/SKILL.md +0 -92
- package/taste-skill/skills/gpt-tasteskill/SKILL.md +0 -74
- package/taste-skill/skills/image-to-code-skill/SKILL.md +0 -1228
- package/taste-skill/skills/imagegen-frontend-mobile/SKILL.md +0 -1465
- package/taste-skill/skills/imagegen-frontend-web/SKILL.md +0 -987
- package/taste-skill/skills/llms.txt +0 -13
- package/taste-skill/skills/minimalist-skill/SKILL.md +0 -85
- package/taste-skill/skills/output-skill/SKILL.md +0 -49
- package/taste-skill/skills/redesign-skill/SKILL.md +0 -178
- package/taste-skill/skills/soft-skill/SKILL.md +0 -98
- package/taste-skill/skills/stitch-skill/DESIGN.md +0 -121
- package/taste-skill/skills/stitch-skill/SKILL.md +0 -184
- package/taste-skill/skills/taste-skill/SKILL.md +0 -1206
- package/taste-skill/skills/taste-skill-v1/SKILL.md +0 -226
- package/temp_fix.js +0 -61
- package/templates/DESIGN.md +0 -38
- package/templates/bug-report.md +0 -21
- package/templates/design-report.md +0 -21
- package/templates/feature-report.md +0 -20
- package/templates/review-report.md +0 -21
- package/templates/skill-template.md +0 -38
- package/tests/behavior-conformance.test.js +0 -154
- package/tests/install-script.test.js +0 -38
- package/tests/registry.test.js +0 -111
- package/update_template.js +0 -28
- package/vitest.config.js +0 -11
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import fs from "fs";
|
|
2
|
-
import path from "path";
|
|
3
|
-
import sharp from "sharp";
|
|
4
|
-
|
|
5
|
-
const root = process.cwd();
|
|
6
|
-
|
|
7
|
-
const pngToWebp = [
|
|
8
|
-
"assets/readme-banner.png",
|
|
9
|
-
"assets/readme-buttons/btn-site.png",
|
|
10
|
-
"assets/readme-buttons/btn-mit.png",
|
|
11
|
-
"assets/readme-buttons/btn-agent-skills.png",
|
|
12
|
-
"assets/readme-buttons/btn-tools.png",
|
|
13
|
-
"assets/readme-buttons/btn-changelog.png",
|
|
14
|
-
];
|
|
15
|
-
|
|
16
|
-
function isBackground(r, g, b, a, threshold = 22) {
|
|
17
|
-
if (a < 8) return true;
|
|
18
|
-
return r <= threshold && g <= threshold && b <= threshold;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function removeOuterBackground(rgba, width, height) {
|
|
22
|
-
const visited = new Uint8Array(width * height);
|
|
23
|
-
const queue = [];
|
|
24
|
-
|
|
25
|
-
for (let x = 0; x < width; x++) {
|
|
26
|
-
queue.push(x, 0, x, height - 1);
|
|
27
|
-
}
|
|
28
|
-
for (let y = 1; y < height - 1; y++) {
|
|
29
|
-
queue.push(0, y, width - 1, y);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
while (queue.length) {
|
|
33
|
-
const y = queue.pop();
|
|
34
|
-
const x = queue.pop();
|
|
35
|
-
const idx = y * width + x;
|
|
36
|
-
if (x < 0 || y < 0 || x >= width || y >= height || visited[idx]) continue;
|
|
37
|
-
|
|
38
|
-
const i = idx * 4;
|
|
39
|
-
if (!isBackground(rgba[i], rgba[i + 1], rgba[i + 2], rgba[i + 3])) continue;
|
|
40
|
-
|
|
41
|
-
visited[idx] = 1;
|
|
42
|
-
rgba[i + 3] = 0;
|
|
43
|
-
queue.push(x + 1, y, x - 1, y, x, y + 1, x, y - 1);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return rgba;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
function getBounds(rgba, width, height) {
|
|
50
|
-
let minX = width;
|
|
51
|
-
let minY = height;
|
|
52
|
-
let maxX = 0;
|
|
53
|
-
let maxY = 0;
|
|
54
|
-
|
|
55
|
-
for (let y = 0; y < height; y++) {
|
|
56
|
-
for (let x = 0; x < width; x++) {
|
|
57
|
-
const a = rgba[(y * width + x) * 4 + 3];
|
|
58
|
-
if (a > 8) {
|
|
59
|
-
minX = Math.min(minX, x);
|
|
60
|
-
minY = Math.min(minY, y);
|
|
61
|
-
maxX = Math.max(maxX, x);
|
|
62
|
-
maxY = Math.max(maxY, y);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const pad = 2;
|
|
68
|
-
return {
|
|
69
|
-
left: Math.max(0, minX - pad),
|
|
70
|
-
top: Math.max(0, minY - pad),
|
|
71
|
-
width: Math.min(width, maxX - minX + 1 + pad * 2),
|
|
72
|
-
height: Math.min(height, maxY - minY + 1 + pad * 2),
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
async function pngFileToWebp(inputRel, { maxWidth } = {}) {
|
|
77
|
-
const input = path.join(root, inputRel);
|
|
78
|
-
const output = input.replace(/\.png$/i, ".webp");
|
|
79
|
-
let pipeline = sharp(input);
|
|
80
|
-
const meta = await pipeline.metadata();
|
|
81
|
-
|
|
82
|
-
if (maxWidth && meta.width > maxWidth) {
|
|
83
|
-
pipeline = pipeline.resize({ width: maxWidth, withoutEnlargement: true });
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
await pipeline.webp({ quality: 92, effort: 6, alphaQuality: 100 }).toFile(output);
|
|
87
|
-
const outMeta = await sharp(output).metadata();
|
|
88
|
-
console.log(
|
|
89
|
-
`${path.basename(output)} -> ${outMeta.width}x${outMeta.height}, ${fs.statSync(output).size} bytes`
|
|
90
|
-
);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
async function emilBadgeToWebp() {
|
|
94
|
-
const src =
|
|
95
|
-
"C:/Users/User/Downloads/c4f8c4a7-2566-4644-b752-b652e0c103f5.png";
|
|
96
|
-
const output = path.join(root, "assets/sponsors/emil-animations-dev.webp");
|
|
97
|
-
const exportHeight = 240;
|
|
98
|
-
|
|
99
|
-
const { data, info } = await sharp(src).ensureAlpha().raw().toBuffer({ resolveWithObject: true });
|
|
100
|
-
const rgba = Buffer.from(data);
|
|
101
|
-
removeOuterBackground(rgba, info.width, info.height);
|
|
102
|
-
const bounds = getBounds(rgba, info.width, info.height);
|
|
103
|
-
|
|
104
|
-
await sharp(rgba, { raw: { width: info.width, height: info.height, channels: 4 } })
|
|
105
|
-
.extract(bounds)
|
|
106
|
-
.resize({ height: exportHeight, withoutEnlargement: true })
|
|
107
|
-
.webp({ quality: 94, effort: 6, alphaQuality: 100 })
|
|
108
|
-
.toFile(output);
|
|
109
|
-
|
|
110
|
-
const outMeta = await sharp(output).metadata();
|
|
111
|
-
console.log(
|
|
112
|
-
`${path.basename(output)} -> ${outMeta.width}x${outMeta.height}, ${fs.statSync(output).size} bytes`
|
|
113
|
-
);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
async function sponsorLogoToWebp() {
|
|
117
|
-
const jfif = "C:/Users/User/Downloads/6b610a0c-8889-49fc-9684-e172d7172ea0.jfif";
|
|
118
|
-
const output = path.join(root, "assets/sponsors/animations-dev.webp");
|
|
119
|
-
const source = fs.existsSync(jfif)
|
|
120
|
-
? jfif
|
|
121
|
-
: path.join(root, "assets/sponsors/animations-dev.png");
|
|
122
|
-
|
|
123
|
-
await sharp(source)
|
|
124
|
-
.resize(192, 192, { fit: "cover" })
|
|
125
|
-
.webp({ quality: 92, effort: 6, alphaQuality: 100 })
|
|
126
|
-
.toFile(`${output}.tmp`);
|
|
127
|
-
fs.renameSync(`${output}.tmp`, output);
|
|
128
|
-
|
|
129
|
-
const outMeta = await sharp(output).metadata();
|
|
130
|
-
console.log(
|
|
131
|
-
`${path.basename(output)} -> ${outMeta.width}x${outMeta.height}, ${fs.statSync(output).size} bytes`
|
|
132
|
-
);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
for (const file of pngToWebp) {
|
|
136
|
-
await pngFileToWebp(file, {
|
|
137
|
-
maxWidth: file.includes("readme-buttons") ? 1400 : undefined,
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
await sponsorLogoToWebp();
|
|
142
|
-
await emilBadgeToWebp();
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import fs from "fs";
|
|
2
|
-
import path from "path";
|
|
3
|
-
import sharp from "sharp";
|
|
4
|
-
|
|
5
|
-
const srcDir = "C:/Users/User/Downloads";
|
|
6
|
-
const outDir = path.join(process.cwd(), "assets/readme-buttons");
|
|
7
|
-
|
|
8
|
-
const mapping = [
|
|
9
|
-
{ src: "ChatGPT Image Jun 17, 2026, 04_04_16 PM (1).png", out: "btn-site.png" },
|
|
10
|
-
{ src: "ChatGPT Image Jun 17, 2026, 04_04_16 PM (2).png", out: "btn-mit.png" },
|
|
11
|
-
{ src: "ChatGPT Image Jun 17, 2026, 04_04_17 PM (3).png", out: "btn-agent-skills.png" },
|
|
12
|
-
{ src: "ChatGPT Image Jun 17, 2026, 04_04_17 PM (4).png", out: "btn-tools.png" },
|
|
13
|
-
{ src: "ChatGPT Image Jun 17, 2026, 04_04_20 PM (5).png", out: "btn-changelog.png" },
|
|
14
|
-
];
|
|
15
|
-
|
|
16
|
-
function isBackground(r, g, b, a, threshold = 28) {
|
|
17
|
-
if (a < 8) return true;
|
|
18
|
-
return r <= threshold && g <= threshold && b <= threshold;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function removeOuterBackground(rgba, width, height) {
|
|
22
|
-
const visited = new Uint8Array(width * height);
|
|
23
|
-
const queue = [];
|
|
24
|
-
|
|
25
|
-
for (let x = 0; x < width; x++) {
|
|
26
|
-
queue.push(x, 0, x, height - 1);
|
|
27
|
-
}
|
|
28
|
-
for (let y = 1; y < height - 1; y++) {
|
|
29
|
-
queue.push(0, y, width - 1, y);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
while (queue.length) {
|
|
33
|
-
const y = queue.pop();
|
|
34
|
-
const x = queue.pop();
|
|
35
|
-
const idx = y * width + x;
|
|
36
|
-
if (x < 0 || y < 0 || x >= width || y >= height || visited[idx]) continue;
|
|
37
|
-
|
|
38
|
-
const i = idx * 4;
|
|
39
|
-
const r = rgba[i];
|
|
40
|
-
const g = rgba[i + 1];
|
|
41
|
-
const b = rgba[i + 2];
|
|
42
|
-
const a = rgba[i + 3];
|
|
43
|
-
if (!isBackground(r, g, b, a)) continue;
|
|
44
|
-
|
|
45
|
-
visited[idx] = 1;
|
|
46
|
-
rgba[i + 3] = 0;
|
|
47
|
-
|
|
48
|
-
queue.push(x + 1, y, x - 1, y, x, y + 1, x, y - 1);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return rgba;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function getBounds(rgba, width, height) {
|
|
55
|
-
let minX = width;
|
|
56
|
-
let minY = height;
|
|
57
|
-
let maxX = 0;
|
|
58
|
-
let maxY = 0;
|
|
59
|
-
|
|
60
|
-
for (let y = 0; y < height; y++) {
|
|
61
|
-
for (let x = 0; x < width; x++) {
|
|
62
|
-
const a = rgba[(y * width + x) * 4 + 3];
|
|
63
|
-
if (a > 8) {
|
|
64
|
-
minX = Math.min(minX, x);
|
|
65
|
-
minY = Math.min(minY, y);
|
|
66
|
-
maxX = Math.max(maxX, x);
|
|
67
|
-
maxY = Math.max(maxY, y);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const pad = 2;
|
|
73
|
-
return {
|
|
74
|
-
left: Math.max(0, minX - pad),
|
|
75
|
-
top: Math.max(0, minY - pad),
|
|
76
|
-
width: Math.min(width, maxX - minX + 1 + pad * 2),
|
|
77
|
-
height: Math.min(height, maxY - minY + 1 + pad * 2),
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
async function processOne(srcPath, outPath) {
|
|
82
|
-
const { data, info } = await sharp(srcPath)
|
|
83
|
-
.ensureAlpha()
|
|
84
|
-
.raw()
|
|
85
|
-
.toBuffer({ resolveWithObject: true });
|
|
86
|
-
|
|
87
|
-
const rgba = Buffer.from(data);
|
|
88
|
-
removeOuterBackground(rgba, info.width, info.height);
|
|
89
|
-
const bounds = getBounds(rgba, info.width, info.height);
|
|
90
|
-
|
|
91
|
-
await sharp(rgba, {
|
|
92
|
-
raw: { width: info.width, height: info.height, channels: 4 },
|
|
93
|
-
})
|
|
94
|
-
.extract(bounds)
|
|
95
|
-
.png({ compressionLevel: 9, adaptiveFiltering: true })
|
|
96
|
-
.toFile(outPath);
|
|
97
|
-
|
|
98
|
-
const meta = await sharp(outPath).metadata();
|
|
99
|
-
console.log(
|
|
100
|
-
`${path.basename(outPath)} -> ${meta.width}x${meta.height}, ${fs.statSync(outPath).size} bytes`
|
|
101
|
-
);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
fs.mkdirSync(outDir, { recursive: true });
|
|
105
|
-
|
|
106
|
-
for (const { src, out } of mapping) {
|
|
107
|
-
await processOne(path.join(srcDir, src), path.join(outDir, out));
|
|
108
|
-
}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import fs from "fs";
|
|
2
|
-
import path from "path";
|
|
3
|
-
import sharp from "sharp";
|
|
4
|
-
|
|
5
|
-
const src =
|
|
6
|
-
"C:/Users/User/Downloads/c4f8c4a7-2566-4644-b752-b652e0c103f5.png";
|
|
7
|
-
const out = path.join(process.cwd(), "assets/sponsors/emil-animations-dev.png");
|
|
8
|
-
|
|
9
|
-
function isBackground(r, g, b, a, threshold = 22) {
|
|
10
|
-
if (a < 8) return true;
|
|
11
|
-
return r <= threshold && g <= threshold && b <= threshold;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function removeOuterBackground(rgba, width, height) {
|
|
15
|
-
const visited = new Uint8Array(width * height);
|
|
16
|
-
const queue = [];
|
|
17
|
-
|
|
18
|
-
for (let x = 0; x < width; x++) {
|
|
19
|
-
queue.push(x, 0, x, height - 1);
|
|
20
|
-
}
|
|
21
|
-
for (let y = 1; y < height - 1; y++) {
|
|
22
|
-
queue.push(0, y, width - 1, y);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
while (queue.length) {
|
|
26
|
-
const y = queue.pop();
|
|
27
|
-
const x = queue.pop();
|
|
28
|
-
const idx = y * width + x;
|
|
29
|
-
if (x < 0 || y < 0 || x >= width || y >= height || visited[idx]) continue;
|
|
30
|
-
|
|
31
|
-
const i = idx * 4;
|
|
32
|
-
if (!isBackground(rgba[i], rgba[i + 1], rgba[i + 2], rgba[i + 3])) continue;
|
|
33
|
-
|
|
34
|
-
visited[idx] = 1;
|
|
35
|
-
rgba[i + 3] = 0;
|
|
36
|
-
queue.push(x + 1, y, x - 1, y, x, y + 1, x, y - 1);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
return rgba;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function getBounds(rgba, width, height) {
|
|
43
|
-
let minX = width;
|
|
44
|
-
let minY = height;
|
|
45
|
-
let maxX = 0;
|
|
46
|
-
let maxY = 0;
|
|
47
|
-
|
|
48
|
-
for (let y = 0; y < height; y++) {
|
|
49
|
-
for (let x = 0; x < width; x++) {
|
|
50
|
-
const a = rgba[(y * width + x) * 4 + 3];
|
|
51
|
-
if (a > 8) {
|
|
52
|
-
minX = Math.min(minX, x);
|
|
53
|
-
minY = Math.min(minY, y);
|
|
54
|
-
maxX = Math.max(maxX, x);
|
|
55
|
-
maxY = Math.max(maxY, y);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
const pad = 2;
|
|
61
|
-
return {
|
|
62
|
-
left: Math.max(0, minX - pad),
|
|
63
|
-
top: Math.max(0, minY - pad),
|
|
64
|
-
width: Math.min(width, maxX - minX + 1 + pad * 2),
|
|
65
|
-
height: Math.min(height, maxY - minY + 1 + pad * 2),
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
const { data, info } = await sharp(src).ensureAlpha().raw().toBuffer({ resolveWithObject: true });
|
|
70
|
-
const rgba = Buffer.from(data);
|
|
71
|
-
removeOuterBackground(rgba, info.width, info.height);
|
|
72
|
-
const bounds = getBounds(rgba, info.width, info.height);
|
|
73
|
-
|
|
74
|
-
const tmp = `${out}.tmp.png`;
|
|
75
|
-
await sharp(rgba, { raw: { width: info.width, height: info.height, channels: 4 } })
|
|
76
|
-
.extract(bounds)
|
|
77
|
-
.resize({ height: 36, withoutEnlargement: true })
|
|
78
|
-
.png({ compressionLevel: 9, palette: true, quality: 80, effort: 10 })
|
|
79
|
-
.toFile(tmp);
|
|
80
|
-
|
|
81
|
-
fs.renameSync(tmp, out);
|
|
82
|
-
const meta = await sharp(out).metadata();
|
|
83
|
-
console.log(`${path.basename(out)} -> ${meta.width}x${meta.height}, ${fs.statSync(out).size} bytes`);
|
package/taste-skill/skill.sh
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
|
|
3
|
-
# Local skill registry
|
|
4
|
-
declare -A SKILLS=(
|
|
5
|
-
[taste-skill]="skills/taste-skill/SKILL.md"
|
|
6
|
-
[taste-skill-v1]="skills/taste-skill-v1/SKILL.md"
|
|
7
|
-
[gpt-taste]="skills/gpt-tasteskill/SKILL.md"
|
|
8
|
-
[image-to-code-skill]="skills/image-to-code-skill/SKILL.md"
|
|
9
|
-
[imagegen-frontend-web]="skills/imagegen-frontend-web/SKILL.md"
|
|
10
|
-
[imagegen-frontend-mobile]="skills/imagegen-frontend-mobile/SKILL.md"
|
|
11
|
-
[brandkit]="skills/brandkit/SKILL.md"
|
|
12
|
-
[redesign-skill]="skills/redesign-skill/SKILL.md"
|
|
13
|
-
[soft-skill]="skills/soft-skill/SKILL.md"
|
|
14
|
-
[output-skill]="skills/output-skill/SKILL.md"
|
|
15
|
-
[minimalist-skill]="skills/minimalist-skill/SKILL.md"
|
|
16
|
-
[brutalist-skill]="skills/brutalist-skill/SKILL.md"
|
|
17
|
-
[stitch-skill]="skills/stitch-skill/SKILL.md"
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
if [[ $# -eq 0 ]]; then
|
|
21
|
-
echo "Usage: source ./skill.sh <skill-name>"
|
|
22
|
-
echo "Available skills: ${!SKILLS[@]}"
|
|
23
|
-
else
|
|
24
|
-
echo "${SKILLS[$1]}"
|
|
25
|
-
fi
|