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
package/migrate.js
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
const fs = require('fs');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
const skillsDir = path.join(__dirname, 'skills');
|
|
4
|
-
|
|
5
|
-
function migrateSkill(skillDir) {
|
|
6
|
-
const filePath = path.join(skillsDir, skillDir, 'SKILL.md');
|
|
7
|
-
if (!fs.existsSync(filePath)) return;
|
|
8
|
-
|
|
9
|
-
if (skillDir === 'qk-bug-resolution') return; // Skip already migrated
|
|
10
|
-
|
|
11
|
-
let content = fs.readFileSync(filePath, 'utf8');
|
|
12
|
-
|
|
13
|
-
// Parse Frontmatter
|
|
14
|
-
const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
15
|
-
if (!fmMatch) return;
|
|
16
|
-
let frontmatter = fmMatch[1];
|
|
17
|
-
|
|
18
|
-
// Filter old fields
|
|
19
|
-
const validFields = [];
|
|
20
|
-
const lines = frontmatter.split('\n');
|
|
21
|
-
for (const line of lines) {
|
|
22
|
-
if (!line.startsWith('behavior:') && !line.startsWith('intent:') && !line.startsWith('priority:') && !line.startsWith('trigger:') && !line.startsWith('inputs:') && !line.startsWith('outputs:') && !line.startsWith('allowed_tools:') && !line.startsWith('pipeline:')) {
|
|
23
|
-
validFields.push(line.replace(/v5\.0/g, 'v6.0'));
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
const newFm = '---\n' + validFields.join('\n') + '\n---';
|
|
27
|
-
|
|
28
|
-
// Parse Mission
|
|
29
|
-
let mission = 'Th?c thi nhi?m v? c?t l�i.';
|
|
30
|
-
let limitation = 'Kh�ng vi ph?m Invariants c?a h? th?ng.';
|
|
31
|
-
|
|
32
|
-
const missionSection = content.match(/## ?? Mission \(Scope\)[\s\S]*?(?=## |---|$)/);
|
|
33
|
-
if (missionSection) {
|
|
34
|
-
const missionLines = missionSection[0].split('\n');
|
|
35
|
-
const posLines = missionLines.filter(l => l.includes('- ?')).map(l => l.replace('- ?', '').trim());
|
|
36
|
-
const negLines = missionLines.filter(l => l.includes('- ?')).map(l => l.replace('- ?', '').trim());
|
|
37
|
-
|
|
38
|
-
if (posLines.length > 0) mission = posLines.join(' ');
|
|
39
|
-
if (negLines.length > 0) limitation = negLines.join(' ');
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Parse Biases (Map to Reasoning Boundary - Must refuse)
|
|
43
|
-
const biasesMatch = content.match(/Biases:[\s\S]*?(?=---|$)/);
|
|
44
|
-
let refuses = [];
|
|
45
|
-
if (biasesMatch) {
|
|
46
|
-
const biasLines = biasesMatch[0].split('\n').filter(l => l.includes('- id:'));
|
|
47
|
-
refuses = biasLines.map(l => l.replace('- id:', '').trim());
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// Parse Dials (Map to Context Policy / Reasoning)
|
|
51
|
-
const dialsMatch = content.match(/Dials:[\s\S]*?(?=---|$)/);
|
|
52
|
-
let asks = [];
|
|
53
|
-
if (dialsMatch) {
|
|
54
|
-
const dialLines = dialsMatch[0].split('\n').filter(l => l.includes('- id:'));
|
|
55
|
-
asks = dialLines.map(l => l.replace('- id:', '').trim());
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// Generate BSF content
|
|
59
|
-
const bsfContent = \\
|
|
60
|
-
|
|
61
|
-
# ?? Behavior Specification: \
|
|
62
|
-
|
|
63
|
-
## 1. Behavior (�?nh danh H�nh vi)
|
|
64
|
-
\\\yaml
|
|
65
|
-
Mission: "\"
|
|
66
|
-
Authority: "�u?c quy?n th?c thi c�c t�c v? trong ph?m vi \."
|
|
67
|
-
Responsibility: "B?o d?m ch?t lu?ng d?u ra v� tu�n th? chu?n h? th?ng."
|
|
68
|
-
Limitation: "\"
|
|
69
|
-
\\\
|
|
70
|
-
|
|
71
|
-
## 2. Contracts (H?p d?ng)
|
|
72
|
-
|
|
73
|
-
### 2.1. Capability Contract
|
|
74
|
-
\\\yaml
|
|
75
|
-
Can:
|
|
76
|
-
- read_code
|
|
77
|
-
- execute_tests
|
|
78
|
-
- modify_code
|
|
79
|
-
Must:
|
|
80
|
-
- verify_assumptions_before_coding
|
|
81
|
-
Cannot:
|
|
82
|
-
- execute_destructive_commands
|
|
83
|
-
- bypass_validation
|
|
84
|
-
\\\
|
|
85
|
-
|
|
86
|
-
### 2.2. Output Contract
|
|
87
|
-
\\\yaml
|
|
88
|
-
Artifacts:
|
|
89
|
-
- summary_report: "Decision Summary gi?i th�ch Context, Quy?t d?nh v� Trade-offs."
|
|
90
|
-
Completion: "Nhi?m v? ho�n th�nh & Quality Gates passed."
|
|
91
|
-
\\\
|
|
92
|
-
|
|
93
|
-
## 3. Policies (Ch�nh s�ch)
|
|
94
|
-
|
|
95
|
-
### 3.1. Context Policy
|
|
96
|
-
\\\yaml
|
|
97
|
-
Scope: current_repo
|
|
98
|
-
Priority:
|
|
99
|
-
1: Project Docs
|
|
100
|
-
2: Current Conversation
|
|
101
|
-
3: Source Code
|
|
102
|
-
Trust: "official docs > code > assumptions"
|
|
103
|
-
Fallback: ask_user
|
|
104
|
-
\\\
|
|
105
|
-
|
|
106
|
-
### 3.2. Reasoning Boundary
|
|
107
|
-
\\\yaml
|
|
108
|
-
May infer: "Bi?n s? c?c b?, logic n?i b? kh�ng ?nh hu?ng h? th?ng."
|
|
109
|
-
Must verify: "T�c d?ng d?n c�c module kh�c."
|
|
110
|
-
Must ask: "\"
|
|
111
|
-
Must refuse: "\"
|
|
112
|
-
\\\
|
|
113
|
-
|
|
114
|
-
### 3.3. Decision Policy
|
|
115
|
-
\\\yaml
|
|
116
|
-
Priority:
|
|
117
|
-
1: correctness
|
|
118
|
-
2: safety
|
|
119
|
-
3: maintainability
|
|
120
|
-
4: performance
|
|
121
|
-
\\\
|
|
122
|
-
|
|
123
|
-
### 3.4. Evidence Policy
|
|
124
|
-
\\\yaml
|
|
125
|
-
Accept: [logs, unit tests, official docs]
|
|
126
|
-
Prefer: [unit tests, CI results]
|
|
127
|
-
Reject: [guesswork, outdated internet search]
|
|
128
|
-
\\\
|
|
129
|
-
|
|
130
|
-
### 3.5. Escalation Policy
|
|
131
|
-
\\\yaml
|
|
132
|
-
Warning: "Thay d?i c?u tr�c ho?c public API"
|
|
133
|
-
Confirmation: "Override config ho?c x�a file quan tr?ng"
|
|
134
|
-
Stop: "L?i Permission ho?c xung d?t Invariants"
|
|
135
|
-
\\\
|
|
136
|
-
\;
|
|
137
|
-
|
|
138
|
-
fs.writeFileSync(filePath, bsfContent);
|
|
139
|
-
console.log('Migrated ' + skillDir);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
const dirs = fs.readdirSync(skillsDir);
|
|
143
|
-
for (const dir of dirs) {
|
|
144
|
-
if (fs.statSync(path.join(skillsDir, dir)).isDirectory() && !dir.startsWith('_')) {
|
|
145
|
-
migrateSkill(dir);
|
|
146
|
-
}
|
|
147
|
-
}
|
package/migrate.py
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
import re
|
|
3
|
-
|
|
4
|
-
skills_dir = os.path.join(os.getcwd(), 'skills')
|
|
5
|
-
|
|
6
|
-
def migrate_skill(skill_dir):
|
|
7
|
-
file_path = os.path.join(skills_dir, skill_dir, 'SKILL.md')
|
|
8
|
-
if not os.path.exists(file_path): return
|
|
9
|
-
if skill_dir in ['qk-bug-resolution', 'qk-access-policy']: return
|
|
10
|
-
|
|
11
|
-
with open(file_path, 'r', encoding='utf-8') as f:
|
|
12
|
-
content = f.read()
|
|
13
|
-
|
|
14
|
-
fm_match = re.search(r'^---\n(.*?)\n---', content, re.DOTALL)
|
|
15
|
-
if not fm_match: return
|
|
16
|
-
frontmatter = fm_match.group(1)
|
|
17
|
-
|
|
18
|
-
valid_fields = []
|
|
19
|
-
for line in frontmatter.split('\n'):
|
|
20
|
-
if not any(line.startswith(prefix) for prefix in ['behavior:', 'intent:', 'priority:', 'trigger:', 'inputs:', 'outputs:', 'allowed_tools:', 'pipeline:']):
|
|
21
|
-
valid_fields.append(line.replace('v5.0', 'v6.0'))
|
|
22
|
-
|
|
23
|
-
new_fm = '---\n' + '\n'.join(valid_fields) + '\n---'
|
|
24
|
-
|
|
25
|
-
mission = f'Th?c thi nhi?m v? c?t l�i c?a {skill_dir}'
|
|
26
|
-
limitation = 'Kh�ng vi ph?m Invariants c?a h? th?ng.'
|
|
27
|
-
|
|
28
|
-
mission_section = re.search(r'## .*?Mission \(Scope\)(.*?)(?=## |---|$)', content, re.DOTALL)
|
|
29
|
-
if mission_section:
|
|
30
|
-
lines = mission_section.group(1).split('\n')
|
|
31
|
-
pos = [l.split('- ?')[-1].strip() for l in lines if '- ?' in l]
|
|
32
|
-
neg = [l.split('- ?')[-1].strip() for l in lines if '- ?' in l]
|
|
33
|
-
if pos: mission = ' '.join(pos)
|
|
34
|
-
if neg: limitation = ' '.join(neg)
|
|
35
|
-
|
|
36
|
-
biases_match = re.search(r'Biases:(.*?)(?=---|$)', content, re.DOTALL)
|
|
37
|
-
refuses = []
|
|
38
|
-
if biases_match:
|
|
39
|
-
refuses = [l.replace('- id:', '').strip() for l in biases_match.group(1).split('\n') if '- id:' in l]
|
|
40
|
-
|
|
41
|
-
dials_match = re.search(r'Dials:(.*?)(?=---|$)', content, re.DOTALL)
|
|
42
|
-
asks = []
|
|
43
|
-
if dials_match:
|
|
44
|
-
asks = [l.replace('- id:', '').strip() for l in dials_match.group(1).split('\n') if '- id:' in l]
|
|
45
|
-
|
|
46
|
-
must_ask = ', '.join(asks) if asks else 'Y�u c?u m?p m?, thi?u th�ng tin.'
|
|
47
|
-
must_refuse = ', '.join(refuses) if refuses else 'R?i ro b?o m?t, ph� v? ki?n tr�c.'
|
|
48
|
-
|
|
49
|
-
bsf_content = f'''{new_fm}
|
|
50
|
-
|
|
51
|
-
# ?? Behavior Specification: {skill_dir}
|
|
52
|
-
|
|
53
|
-
## 1. Behavior (�?nh danh H�nh vi)
|
|
54
|
-
`yaml
|
|
55
|
-
Mission: "{mission.replace('"', "'")}"
|
|
56
|
-
Authority: "�u?c quy?n th?c thi c�c t�c v? trong ph?m vi {skill_dir}."
|
|
57
|
-
Responsibility: "B?o d?m ch?t lu?ng d?u ra v� tu�n th? chu?n h? th?ng."
|
|
58
|
-
Limitation: "{limitation.replace('"', "'")}"
|
|
59
|
-
`
|
|
60
|
-
|
|
61
|
-
## 2. Contracts (H?p d?ng)
|
|
62
|
-
|
|
63
|
-
### 2.1. Capability Contract
|
|
64
|
-
`yaml
|
|
65
|
-
Can:
|
|
66
|
-
- read_code
|
|
67
|
-
- execute_tests
|
|
68
|
-
- modify_code
|
|
69
|
-
Must:
|
|
70
|
-
- verify_assumptions_before_coding
|
|
71
|
-
Cannot:
|
|
72
|
-
- execute_destructive_commands
|
|
73
|
-
- bypass_validation
|
|
74
|
-
`
|
|
75
|
-
|
|
76
|
-
### 2.2. Output Contract
|
|
77
|
-
`yaml
|
|
78
|
-
Artifacts:
|
|
79
|
-
- summary_report: "Decision Summary gi?i th�ch Context, Quy?t d?nh v� Trade-offs."
|
|
80
|
-
Completion: "Nhi?m v? ho�n th�nh & Quality Gates passed."
|
|
81
|
-
`
|
|
82
|
-
|
|
83
|
-
## 3. Policies (Ch�nh s�ch)
|
|
84
|
-
|
|
85
|
-
### 3.1. Context Policy
|
|
86
|
-
`yaml
|
|
87
|
-
Scope: current_repo
|
|
88
|
-
Priority:
|
|
89
|
-
1: Project Docs
|
|
90
|
-
2: Current Conversation
|
|
91
|
-
3: Source Code
|
|
92
|
-
Trust: "official docs > code > assumptions"
|
|
93
|
-
Fallback: ask_user
|
|
94
|
-
`
|
|
95
|
-
|
|
96
|
-
### 3.2. Reasoning Boundary
|
|
97
|
-
`yaml
|
|
98
|
-
May infer: "Bi?n s? c?c b?, logic n?i b? kh�ng ?nh hu?ng h? th?ng."
|
|
99
|
-
Must verify: "T�c d?ng d?n c�c module kh�c."
|
|
100
|
-
Must ask: "{must_ask.replace('"', "'")}"
|
|
101
|
-
Must refuse: "{must_refuse.replace('"', "'")}"
|
|
102
|
-
`
|
|
103
|
-
|
|
104
|
-
### 3.3. Decision Policy
|
|
105
|
-
`yaml
|
|
106
|
-
Priority:
|
|
107
|
-
1: correctness
|
|
108
|
-
2: safety
|
|
109
|
-
3: maintainability
|
|
110
|
-
4: performance
|
|
111
|
-
`
|
|
112
|
-
|
|
113
|
-
### 3.4. Evidence Policy
|
|
114
|
-
`yaml
|
|
115
|
-
Accept: [logs, unit tests, official docs]
|
|
116
|
-
Prefer: [unit tests, CI results]
|
|
117
|
-
Reject: [guesswork, outdated internet search]
|
|
118
|
-
`
|
|
119
|
-
|
|
120
|
-
### 3.5. Escalation Policy
|
|
121
|
-
`yaml
|
|
122
|
-
Warning: "Thay d?i c?u tr�c ho?c public API"
|
|
123
|
-
Confirmation: "Override config ho?c x�a file quan tr?ng"
|
|
124
|
-
Stop: "L?i Permission ho?c xung d?t Invariants"
|
|
125
|
-
`
|
|
126
|
-
'''
|
|
127
|
-
with open(file_path, 'w', encoding='utf-8') as f:
|
|
128
|
-
f.write(bsf_content)
|
|
129
|
-
print(f'Migrated {skill_dir}')
|
|
130
|
-
|
|
131
|
-
for d in os.listdir(skills_dir):
|
|
132
|
-
if os.path.isdir(os.path.join(skills_dir, d)) and not d.startswith('_'):
|
|
133
|
-
migrate_skill(d)
|
package/migrate_all.cjs
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
const fs = require('fs');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
const skillsDir = path.join(__dirname, 'skills');
|
|
4
|
-
|
|
5
|
-
const template = `---
|
|
6
|
-
name: {NAME}
|
|
7
|
-
version: 6.0.0
|
|
8
|
-
updated: 2026-07-10
|
|
9
|
-
description: Behavior Specification for {NAME} in BSF v6.0 format.
|
|
10
|
-
category: orchestration
|
|
11
|
-
tags: [bsf, v6]
|
|
12
|
-
platforms: [claude-code, cursor, windsurf, gemini-cli]
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
# Behavior Specification: {NAME}
|
|
16
|
-
|
|
17
|
-
## 1. Behavior
|
|
18
|
-
\`\`\`yaml
|
|
19
|
-
Mission: "Execute core tasks for {NAME}."
|
|
20
|
-
Authority: "Full authority within the scope of {NAME}."
|
|
21
|
-
Responsibility: "Ensure the system complies with v6 standards."
|
|
22
|
-
Limitation: "Do not violate System Invariants."
|
|
23
|
-
\`\`\`
|
|
24
|
-
|
|
25
|
-
## 2. Contracts
|
|
26
|
-
|
|
27
|
-
### 2.1. Capability Contract
|
|
28
|
-
\`\`\`yaml
|
|
29
|
-
Can:
|
|
30
|
-
- read_code
|
|
31
|
-
- modify_code
|
|
32
|
-
Must:
|
|
33
|
-
- verify_assumptions_before_coding
|
|
34
|
-
Cannot:
|
|
35
|
-
- bypass_validation
|
|
36
|
-
\`\`\`
|
|
37
|
-
|
|
38
|
-
### 2.2. Output Contract
|
|
39
|
-
\`\`\`yaml
|
|
40
|
-
Artifacts:
|
|
41
|
-
- summary_report: "Progress and decision report."
|
|
42
|
-
Completion: "Feature works & Quality Gates passed."
|
|
43
|
-
\`\`\`
|
|
44
|
-
|
|
45
|
-
## 3. Policies
|
|
46
|
-
|
|
47
|
-
### 3.1. Context Policy
|
|
48
|
-
\`\`\`yaml
|
|
49
|
-
Scope: whole_workspace
|
|
50
|
-
Priority:
|
|
51
|
-
1: Project Guidelines
|
|
52
|
-
2: Current Code
|
|
53
|
-
Trust: "official docs > code > user assumptions"
|
|
54
|
-
Fallback: ask_user
|
|
55
|
-
\`\`\`
|
|
56
|
-
|
|
57
|
-
### 3.2. Reasoning Boundary
|
|
58
|
-
\`\`\`yaml
|
|
59
|
-
May infer: "Local variables and obvious logic."
|
|
60
|
-
Must verify: "Cross-module impacts."
|
|
61
|
-
Must ask: "Vague requirements, missing context."
|
|
62
|
-
Must refuse: "Security risks, baseless guesses."
|
|
63
|
-
\`\`\`
|
|
64
|
-
|
|
65
|
-
### 3.3. Decision Policy
|
|
66
|
-
\`\`\`yaml
|
|
67
|
-
Priority:
|
|
68
|
-
1: correctness
|
|
69
|
-
2: safety
|
|
70
|
-
3: maintainability
|
|
71
|
-
\`\`\`
|
|
72
|
-
|
|
73
|
-
### 3.4. Evidence Policy
|
|
74
|
-
\`\`\`yaml
|
|
75
|
-
Accept: [unit tests, CI logs]
|
|
76
|
-
Prefer: [end-to-end tests]
|
|
77
|
-
Reject: [guesswork]
|
|
78
|
-
\`\`\`
|
|
79
|
-
|
|
80
|
-
### 3.5. Escalation Policy
|
|
81
|
-
\`\`\`yaml
|
|
82
|
-
Warning: "Changing task scope."
|
|
83
|
-
Confirmation: "Overriding config or deleting files."
|
|
84
|
-
Stop: "Critical security error."
|
|
85
|
-
\`\`\`
|
|
86
|
-
`;
|
|
87
|
-
|
|
88
|
-
const dirs = fs.readdirSync(skillsDir);
|
|
89
|
-
for (const dir of dirs) {
|
|
90
|
-
if (dir.startsWith('_') || dir === 'qk-bug-resolution' || dir === 'qk-access-policy') continue;
|
|
91
|
-
const p = path.join(skillsDir, dir, 'SKILL.md');
|
|
92
|
-
if (fs.existsSync(p)) {
|
|
93
|
-
fs.writeFileSync(p, template.replace(/{NAME}/g, dir), 'utf8');
|
|
94
|
-
console.log('Updated ' + dir);
|
|
95
|
-
}
|
|
96
|
-
}
|
package/patch.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
const fs = require('fs');
|
|
2
|
-
let content = fs.readFileSync('bin/install.js', 'utf8');
|
|
3
|
-
|
|
4
|
-
// Fix kiloConfig bug
|
|
5
|
-
content = content.replace(
|
|
6
|
-
"if (!Array.isArray(kiloConfig.skills) || typeof kiloConfig.skills !== 'object' || !kiloConfig.skills.paths) {",
|
|
7
|
-
"if (!kiloConfig.skills || typeof kiloConfig.skills !== 'object' || Array.isArray(kiloConfig.skills) || !kiloConfig.skills.paths) {"
|
|
8
|
-
);
|
|
9
|
-
|
|
10
|
-
// Replace interactive prompt
|
|
11
|
-
const startMarker = "rl.question(questionIde, (answerIde) => {";
|
|
12
|
-
const endMarker = "} catch (error) {\\n console.error('? C� l?i x?y ra trong qu� tr�nh c�i d?t:', error.message);\\n } finally {\\n rl.close();\\n }\\n });\\n});";
|
|
13
|
-
|
|
14
|
-
const startIdx = content.indexOf(startMarker);
|
|
15
|
-
// Actually simpler regex
|
package/patch.py
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
with open('bin/install.js', 'r', encoding='utf-8') as f:
|
|
3
|
-
content = f.read()
|
|
4
|
-
|
|
5
|
-
# Fix kiloConfig bug
|
|
6
|
-
content = content.replace(
|
|
7
|
-
"if (!Array.isArray(kiloConfig.skills) || typeof kiloConfig.skills !== 'object' || !kiloConfig.skills.paths) {",
|
|
8
|
-
"if (!kiloConfig.skills || typeof kiloConfig.skills !== 'object' || Array.isArray(kiloConfig.skills) || !kiloConfig.skills.paths) {"
|
|
9
|
-
)
|
|
10
|
-
|
|
11
|
-
# Replace the interactive part with CLI parsing
|
|
12
|
-
start_marker = "rl.question(questionIde, (ideChoice) => {"
|
|
13
|
-
end_marker = " } catch (error) {\n console.error('? C� l?i x?y ra trong qu� tr�nh c�i d?t:', error.message);\n } finally {\n rl.close();\n }\n });\n});"
|
|
14
|
-
|
|
15
|
-
start_idx = content.find(start_marker)
|
|
16
|
-
end_idx = content.find(end_marker) + len(end_marker)
|
|
17
|
-
|
|
18
|
-
if start_idx != -1 and end_idx != -1:
|
|
19
|
-
replacement = """// Parse command line arguments for CI/CD automation
|
|
20
|
-
const args = process.argv.slice(2);
|
|
21
|
-
let autoIde = null;
|
|
22
|
-
let autoScope = null;
|
|
23
|
-
|
|
24
|
-
for (let i = 0; i < args.length; i++) {
|
|
25
|
-
if (args[i].startsWith('--ide=')) {
|
|
26
|
-
autoIde = args[i].split('=')[1];
|
|
27
|
-
}
|
|
28
|
-
if (args[i].startsWith('--scope=')) {
|
|
29
|
-
autoScope = args[i].split('=')[1];
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function runInstallation(ideChoice, scopeChoice) {
|
|
34
|
-
const isGlobal = scopeChoice === '1';
|
|
35
|
-
"""
|
|
36
|
-
|
|
37
|
-
old_body = content[start_idx:end_idx]
|
|
38
|
-
|
|
39
|
-
# Extract the body inside rl.question(questionScope...)
|
|
40
|
-
scope_start = "const isGlobal = scopeChoice === '1';"
|
|
41
|
-
scope_start_idx = old_body.find(scope_start)
|
|
42
|
-
scope_end = " } catch (error) {"
|
|
43
|
-
scope_end_idx = old_body.find(scope_end)
|
|
44
|
-
|
|
45
|
-
inner_body = old_body[scope_start_idx + len(scope_start):scope_end_idx]
|
|
46
|
-
|
|
47
|
-
replacement += inner_body
|
|
48
|
-
replacement += """
|
|
49
|
-
} catch (error) {
|
|
50
|
-
console.error('? C� l?i x?y ra trong qu� tr�nh c�i d?t:', error.message);
|
|
51
|
-
} finally {
|
|
52
|
-
rl.close();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
if (autoIde && autoScope) {
|
|
57
|
-
console.log('\\n?? Running in non-interactive mode with IDE=' + autoIde + ', Scope=' + autoScope);
|
|
58
|
-
runInstallation(autoIde, autoScope);
|
|
59
|
-
} else {
|
|
60
|
-
rl.question(questionIde, (ideChoice) => {
|
|
61
|
-
if (ideChoice === '0') {
|
|
62
|
-
console.log('? �� b? qua c?u h�nh t? d?ng. Skill OS v?n du?c t?i v?, b?n c� th? t? c?u h�nh file c?a IDE theo thu m?c hi?n t?i.');
|
|
63
|
-
rl.close();
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (!['1', '2', '3', '4', '5', '6', '7'].includes(ideChoice)) {
|
|
68
|
-
console.log('? L?a ch?n kh�ng h?p l?. Vui l�ng ch?y l?i script.');
|
|
69
|
-
rl.close();
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
rl.question(questionScope, (scopeChoice) => {
|
|
74
|
-
if (!['1', '2'].includes(scopeChoice)) {
|
|
75
|
-
console.log('? L?a ch?n kh�ng h?p l?. M?c d?nh s? c�i Global.');
|
|
76
|
-
scopeChoice = '1';
|
|
77
|
-
}
|
|
78
|
-
runInstallation(ideChoice, scopeChoice);
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
"""
|
|
83
|
-
content = content[:start_idx] + replacement + content[end_idx:]
|
|
84
|
-
|
|
85
|
-
with open('bin/install.js', 'w', encoding='utf-8') as f:
|
|
86
|
-
f.write(content)
|
|
87
|
-
print("Python patch applied.")
|
|
88
|
-
else:
|
|
89
|
-
print("Could not find markers.")
|
package/patch2.py
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
with open('bin/install.js', 'r', encoding='utf-8') as f:
|
|
3
|
-
content = f.read()
|
|
4
|
-
|
|
5
|
-
# Fix kiloConfig bug
|
|
6
|
-
content = content.replace(
|
|
7
|
-
"if (!Array.isArray(kiloConfig.skills) || typeof kiloConfig.skills !== 'object' || !kiloConfig.skills.paths) {",
|
|
8
|
-
"if (!kiloConfig.skills || typeof kiloConfig.skills !== 'object' || Array.isArray(kiloConfig.skills) || !kiloConfig.skills.paths) {"
|
|
9
|
-
)
|
|
10
|
-
|
|
11
|
-
# Replace the interactive part with CLI parsing
|
|
12
|
-
start_marker = "rl.question(questionIde, (answerIde) => {"
|
|
13
|
-
end_marker = " } catch (error) {\n console.error('? C� l?i x?y ra trong qu� tr�nh c�i d?t:', error.message);\n } finally {\n rl.close();\n }\n });\n});"
|
|
14
|
-
|
|
15
|
-
start_idx = content.find(start_marker)
|
|
16
|
-
end_idx = content.find(end_marker) + len(end_marker)
|
|
17
|
-
|
|
18
|
-
if start_idx != -1 and end_idx != -1:
|
|
19
|
-
replacement = """// Parse command line arguments for CI/CD automation
|
|
20
|
-
const args = process.argv.slice(2);
|
|
21
|
-
let autoIde = null;
|
|
22
|
-
let autoScope = null;
|
|
23
|
-
|
|
24
|
-
for (let i = 0; i < args.length; i++) {
|
|
25
|
-
if (args[i].startsWith('--ide=')) {
|
|
26
|
-
autoIde = args[i].split('=')[1];
|
|
27
|
-
}
|
|
28
|
-
if (args[i].startsWith('--scope=')) {
|
|
29
|
-
autoScope = args[i].split('=')[1];
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function runInstallation(answerIde, answerScope) {
|
|
34
|
-
"""
|
|
35
|
-
|
|
36
|
-
old_body = content[start_idx:end_idx]
|
|
37
|
-
|
|
38
|
-
# Extract the body inside rl.question(questionScope...)
|
|
39
|
-
scope_start = "rl.question(questionScope, (answerScope) => {"
|
|
40
|
-
scope_start_idx = old_body.find(scope_start) + len(scope_start)
|
|
41
|
-
scope_end = " } catch (error) {"
|
|
42
|
-
scope_end_idx = old_body.find(scope_end)
|
|
43
|
-
|
|
44
|
-
# Extract the ide logic before scope question
|
|
45
|
-
ide_logic_start_idx = old_body.find(" let isGemini = false;")
|
|
46
|
-
ide_logic_end_idx = old_body.find(scope_start)
|
|
47
|
-
ide_logic = old_body[ide_logic_start_idx:ide_logic_end_idx]
|
|
48
|
-
|
|
49
|
-
inner_body = old_body[scope_start_idx:scope_end_idx]
|
|
50
|
-
|
|
51
|
-
replacement += ide_logic
|
|
52
|
-
replacement += inner_body
|
|
53
|
-
replacement += """
|
|
54
|
-
} catch (error) {
|
|
55
|
-
console.error('? Error during installation:', error.message);
|
|
56
|
-
} finally {
|
|
57
|
-
if (rl) rl.close();
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
if (autoIde && autoScope) {
|
|
62
|
-
console.log('\\n?? Running in non-interactive mode with IDE=' + autoIde + ', Scope=' + autoScope);
|
|
63
|
-
runInstallation(autoIde, autoScope);
|
|
64
|
-
} else {
|
|
65
|
-
rl.question(questionIde, (answerIde) => {
|
|
66
|
-
if (answerIde.trim() === '0') {
|
|
67
|
-
console.log('? B? qua c�i d?t t? d?ng.');
|
|
68
|
-
rl.close();
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
rl.question(questionScope, (answerScope) => {
|
|
72
|
-
runInstallation(answerIde, answerScope);
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
"""
|
|
77
|
-
content = content[:start_idx] + replacement + content[end_idx:]
|
|
78
|
-
|
|
79
|
-
with open('bin/install.js', 'w', encoding='utf-8') as f:
|
|
80
|
-
f.write(content)
|
|
81
|
-
print("Python patch applied.")
|
|
82
|
-
else:
|
|
83
|
-
print("Could not find markers.")
|
package/rename.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import { execSync } from 'child_process';
|
|
4
|
-
|
|
5
|
-
const skillsDir = 'skills';
|
|
6
|
-
const categories = fs.readdirSync(skillsDir).filter(f => fs.statSync(path.join(skillsDir, f)).isDirectory());
|
|
7
|
-
|
|
8
|
-
categories.forEach(category => {
|
|
9
|
-
const catPath = path.join(skillsDir, category);
|
|
10
|
-
const skills = fs.readdirSync(catPath).filter(f => fs.statSync(path.join(catPath, f)).isDirectory());
|
|
11
|
-
skills.forEach(skill => {
|
|
12
|
-
if (!skill.startsWith('qk-')) {
|
|
13
|
-
const oldPath = path.join(catPath, skill).replace(/\\/g, '/');
|
|
14
|
-
const newPath = path.join(catPath, 'qk-' + skill).replace(/\\/g, '/');
|
|
15
|
-
try {
|
|
16
|
-
console.log(`Đang đổi tên: ${oldPath} -> ${newPath}`);
|
|
17
|
-
execSync(`git mv "${oldPath}" "${newPath}"`);
|
|
18
|
-
} catch(e) {
|
|
19
|
-
console.error('LỖI (Hãy chắc chắn bạn đã tắt hoàn toàn IDE/Cursor đang mở folder này):', e.message);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
// Update skills.json
|
|
26
|
-
const skillsJsonPath = 'skills.json';
|
|
27
|
-
let skillsData = JSON.parse(fs.readFileSync(skillsJsonPath, 'utf8'));
|
|
28
|
-
|
|
29
|
-
// Fix entries and modify their paths
|
|
30
|
-
if(skillsData.skills) {
|
|
31
|
-
skillsData.skills = skillsData.skills.map(s => {
|
|
32
|
-
if(!s.name.startsWith('qk-')) {
|
|
33
|
-
s.name = 'qk-' + s.name;
|
|
34
|
-
const parts = s.path.split('/');
|
|
35
|
-
const skillFolder = parts[2];
|
|
36
|
-
if(!skillFolder.startsWith('qk-')) {
|
|
37
|
-
parts[2] = 'qk-' + skillFolder;
|
|
38
|
-
}
|
|
39
|
-
s.path = parts.join('/');
|
|
40
|
-
}
|
|
41
|
-
return s;
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
fs.writeFileSync(skillsJsonPath, JSON.stringify(skillsData, null, 2));
|
|
45
|
-
|
|
46
|
-
// Update SKILL.md names
|
|
47
|
-
categories.forEach(category => {
|
|
48
|
-
const catPath = path.join(skillsDir, category);
|
|
49
|
-
const skills = fs.readdirSync(catPath).filter(f => fs.statSync(path.join(catPath, f)).isDirectory());
|
|
50
|
-
skills.forEach(skill => {
|
|
51
|
-
if (skill.startsWith('qk-')) {
|
|
52
|
-
const skillMdPath = path.join(catPath, skill, 'SKILL.md');
|
|
53
|
-
if (fs.existsSync(skillMdPath)) {
|
|
54
|
-
let content = fs.readFileSync(skillMdPath, 'utf8');
|
|
55
|
-
content = content.replace(/^name:\s*([a-zA-Z0-9-]+)\s*$/m, (match, p1) => {
|
|
56
|
-
if (!p1.startsWith('qk-')) return 'name: qk-' + p1;
|
|
57
|
-
return match;
|
|
58
|
-
});
|
|
59
|
-
fs.writeFileSync(skillMdPath, content);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
console.log('✅ Đã đổi tên thành công toàn bộ sang hệ qk-* !');
|