ai-developer-skill-os 7.0.2 → 7.5.0
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/AGENTS.md +44 -88
- package/.agents/CHANGELOG.md +69 -0
- package/.agents/LICENSE +21 -0
- package/.agents/README.md +59 -0
- package/.agents/_template/BEHAVIOR_SPEC.md +96 -0
- package/.agents/_template/examples/example-en.md +49 -0
- package/.agents/_template/examples/example-vi.md +49 -0
- package/.agents/docs/CHI_TIET_SKILLS.md +125 -0
- package/.agents/docs/GOVERNANCE.md +40 -0
- package/.agents/docs/HUONG_DAN_SU_DUNG.md +120 -0
- package/.agents/docs/SPEC.md +87 -0
- package/.agents/docs/adr/0001-intent-based-architecture.md +19 -0
- package/.agents/docs/adr/0002-kernel-freeze.md +21 -0
- package/.agents/docs/adr/0003-risk-based-verification.md +20 -0
- package/.agents/docs/adr/0004-progressive-evidence.md +19 -0
- package/.agents/docs/skill-classification.md +25 -0
- package/.agents/skills/qk-access-policy/SKILL.md +179 -0
- package/.agents/skills/qk-ai-builder/SKILL.md +215 -0
- package/.agents/skills/qk-api-lifecycle/SKILL.md +176 -0
- package/.agents/skills/qk-bug-resolution/SKILL.md +307 -0
- package/.agents/skills/qk-context-loader/SKILL.md +218 -0
- package/.agents/skills/qk-data-lifecycle/SKILL.md +192 -0
- package/.agents/skills/qk-db-optimizer/SKILL.md +196 -0
- package/.agents/skills/qk-design-to-code/SKILL.md +285 -0
- package/.agents/skills/qk-docs/SKILL.md +198 -0
- package/.agents/skills/qk-engineering-standard/SKILL.md +351 -0
- package/.agents/skills/qk-engineering-standard/rules/backend.md +122 -0
- package/.agents/skills/qk-engineering-standard/rules/database.md +3 -0
- package/.agents/skills/qk-engineering-standard/rules/frontend.md +152 -0
- package/.agents/skills/qk-engineering-standard/rules/security.md +3 -0
- package/.agents/skills/qk-engineering-standard/rules/testing.md +3 -0
- package/.agents/skills/qk-fe-api-integration/SKILL.md +326 -0
- package/.agents/skills/qk-feature-delivery/SKILL.md +305 -0
- package/.agents/skills/qk-help/SKILL.md +193 -0
- package/.agents/skills/qk-orchestrator/SKILL.md +277 -0
- package/.agents/skills/qk-orchestrator/references/routing-table.md +77 -0
- package/.agents/skills/qk-production-release/SKILL.md +284 -0
- package/.agents/skills/qk-project-bootstrap/SKILL.md +234 -0
- package/.agents/skills/qk-project-health/SKILL.md +199 -0
- package/.agents/skills/qk-project-memory/SKILL.md +172 -0
- package/.agents/skills/qk-system-evolution/SKILL.md +281 -0
- package/.agents/skills/qk-ui-audit/SKILL.md +314 -0
- package/.agents/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
- package/.agents/skills/qk-ui-system-builder/SKILL.md +221 -0
- package/.agents/skills/qk-validation-gate/SKILL.md +359 -0
- package/.agents/skills.json +819 -0
- package/.github/workflows/ci.yml +1 -1
- package/.qk-ai-skill-os/CHANGELOG.md +69 -0
- package/.qk-ai-skill-os/LICENSE +21 -0
- package/.qk-ai-skill-os/README.md +59 -0
- package/.qk-ai-skill-os/_template/BEHAVIOR_SPEC.md +96 -0
- package/.qk-ai-skill-os/_template/examples/example-en.md +49 -0
- package/.qk-ai-skill-os/_template/examples/example-vi.md +49 -0
- package/.qk-ai-skill-os/docs/CHI_TIET_SKILLS.md +125 -0
- package/.qk-ai-skill-os/docs/GOVERNANCE.md +40 -0
- package/.qk-ai-skill-os/docs/HUONG_DAN_SU_DUNG.md +120 -0
- package/.qk-ai-skill-os/docs/SPEC.md +87 -0
- package/.qk-ai-skill-os/docs/adr/0001-intent-based-architecture.md +19 -0
- package/.qk-ai-skill-os/docs/adr/0002-kernel-freeze.md +21 -0
- package/.qk-ai-skill-os/docs/adr/0003-risk-based-verification.md +20 -0
- package/.qk-ai-skill-os/docs/adr/0004-progressive-evidence.md +19 -0
- package/.qk-ai-skill-os/docs/skill-classification.md +25 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-accessibility-audit/SKILL.md +121 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-agent-orchestrator/SKILL.md +179 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-api-integration/SKILL.md +389 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-auth-security/SKILL.md +96 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-backend-architecture/SKILL.md +125 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-bug-fix/SKILL.md +213 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-component-generator/SKILL.md +136 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-context-manager/SKILL.md +175 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-database-engineer/SKILL.md +104 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-deployment/SKILL.md +96 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-design-system/SKILL.md +137 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-form-builder/SKILL.md +140 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-architecture/SKILL.md +155 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-debug/SKILL.md +133 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-performance/SKILL.md +129 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-testing/SKILL.md +146 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-git-engineer/SKILL.md +304 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-help/SKILL.md +68 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-migration/SKILL.md +284 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-project-audit/SKILL.md +280 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-refactor/SKILL.md +222 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-state-management/SKILL.md +140 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-table-crud-generator/SKILL.md +127 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-ui-builder/SKILL.md +152 -0
- package/.qk-ai-skill-os/skills/_template/SKILL.md +238 -0
- package/.qk-ai-skill-os/skills/qk-access-policy/SKILL.md +179 -0
- package/.qk-ai-skill-os/skills/qk-ai-builder/SKILL.md +221 -0
- package/.qk-ai-skill-os/skills/qk-api-lifecycle/SKILL.md +176 -0
- package/.qk-ai-skill-os/skills/qk-bug-resolution/SKILL.md +307 -0
- package/.qk-ai-skill-os/skills/qk-context-loader/SKILL.md +218 -0
- package/.qk-ai-skill-os/skills/qk-data-lifecycle/SKILL.md +192 -0
- package/.qk-ai-skill-os/skills/qk-db-optimizer/SKILL.md +196 -0
- package/.qk-ai-skill-os/skills/qk-design-to-code/SKILL.md +291 -0
- package/.qk-ai-skill-os/skills/qk-docs/SKILL.md +198 -0
- package/.qk-ai-skill-os/skills/qk-engineering-standard/SKILL.md +351 -0
- package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/backend.md +122 -0
- package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/database.md +3 -0
- package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/frontend.md +152 -0
- package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/security.md +3 -0
- package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/testing.md +3 -0
- package/.qk-ai-skill-os/skills/qk-fe-api-integration/SKILL.md +326 -0
- package/.qk-ai-skill-os/skills/qk-feature-delivery/SKILL.md +305 -0
- package/.qk-ai-skill-os/skills/qk-help/SKILL.md +193 -0
- package/.qk-ai-skill-os/skills/qk-orchestrator/SKILL.md +277 -0
- package/.qk-ai-skill-os/skills/qk-orchestrator/references/routing-table.md +77 -0
- package/.qk-ai-skill-os/skills/qk-production-release/SKILL.md +290 -0
- package/.qk-ai-skill-os/skills/qk-project-bootstrap/SKILL.md +240 -0
- package/.qk-ai-skill-os/skills/qk-project-health/SKILL.md +199 -0
- package/.qk-ai-skill-os/skills/qk-project-memory/SKILL.md +172 -0
- package/.qk-ai-skill-os/skills/qk-system-evolution/SKILL.md +285 -0
- package/.qk-ai-skill-os/skills/qk-ui-audit/SKILL.md +314 -0
- package/.qk-ai-skill-os/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
- package/.qk-ai-skill-os/skills/qk-ui-system-builder/SKILL.md +225 -0
- package/.qk-ai-skill-os/skills/qk-validation-gate/SKILL.md +361 -0
- package/.qk-ai-skill-os/skills.json +819 -0
- package/CLAUDE.md +110 -0
- package/README.md +25 -3
- package/add_lang.js +21 -0
- package/add_lang.py +25 -0
- package/add_sections.py +53 -0
- package/bin/install.js +225 -170
- package/bin/lint.js +122 -0
- package/docs/CHI_TIET_SKILLS.md +26 -26
- package/docs/HUONG_DAN_SU_DUNG.md +3 -3
- package/docs/SPEC.md +70 -20
- package/framework/skill-schema.md +310 -0
- package/package.json +15 -4
- package/patch.js +15 -0
- package/patch.py +89 -0
- package/patch2.py +83 -0
- package/skills/_archive_old_skills/qk-accessibility-audit/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-agent-orchestrator/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-api-integration/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-auth-security/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-backend-architecture/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-bug-fix/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-component-generator/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-context-manager/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-database-engineer/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-deployment/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-design-system/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-form-builder/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-frontend-architecture/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-frontend-debug/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-frontend-performance/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-frontend-testing/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-git-engineer/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-help/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-migration/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-project-audit/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-refactor/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-state-management/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-table-crud-generator/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-ui-builder/SKILL.md +1 -0
- package/skills/_template/SKILL.md +238 -0
- package/skills/qk-access-policy/SKILL.md +179 -39
- package/skills/qk-ai-builder/SKILL.md +215 -40
- package/skills/qk-api-lifecycle/SKILL.md +176 -46
- package/skills/qk-bug-resolution/SKILL.md +307 -46
- package/skills/qk-context-loader/SKILL.md +218 -43
- package/skills/qk-data-lifecycle/SKILL.md +192 -44
- package/skills/qk-db-optimizer/SKILL.md +196 -41
- package/skills/qk-design-to-code/SKILL.md +285 -46
- package/skills/qk-docs/SKILL.md +198 -40
- package/skills/qk-engineering-standard/SKILL.md +351 -42
- package/skills/qk-fe-api-integration/SKILL.md +326 -55
- package/skills/qk-feature-delivery/SKILL.md +305 -48
- package/skills/qk-help/SKILL.md +178 -23
- package/skills/qk-orchestrator/SKILL.md +277 -42
- package/skills/qk-orchestrator/references/routing-table.md +77 -0
- package/skills/qk-production-release/SKILL.md +284 -41
- package/skills/qk-project-bootstrap/SKILL.md +234 -38
- package/skills/qk-project-health/SKILL.md +199 -40
- package/skills/qk-project-memory/SKILL.md +172 -40
- package/skills/qk-system-evolution/SKILL.md +281 -40
- package/skills/qk-ui-audit/SKILL.md +314 -42
- package/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
- package/skills/qk-ui-system-builder/SKILL.md +221 -43
- package/skills/qk-validation-gate/SKILL.md +359 -40
- package/skills.json +813 -824
- package/specs/fixtures/user-payload.json +12 -0
- package/specs/regressions/api-integration-null-fields.yaml +19 -0
- package/temp_fix.js +61 -0
- package/tests/registry.test.js +1 -1
- package/update_template.js +28 -0
- package/skills/qk-policy-engine/SKILL.md +0 -39
|
@@ -1,40 +1,359 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: qk-validation-gate
|
|
3
|
-
category: qa
|
|
4
|
-
version: 7.
|
|
5
|
-
description: "Cổng kiểm tra chất lượng bắt buộc
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
1
|
+
---
|
|
2
|
+
name: qk-validation-gate
|
|
3
|
+
category: qa
|
|
4
|
+
version: 7.5.0
|
|
5
|
+
description: "Cổng kiểm tra chất lượng bắt buộc với ngưỡng pass/fail cụ thể — chặn đứng mọi mã nguồn lỗi."
|
|
6
|
+
platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
|
|
7
|
+
execution_mode: deterministic
|
|
8
|
+
|
|
9
|
+
cost: medium
|
|
10
|
+
latency: medium
|
|
11
|
+
risk: low
|
|
12
|
+
side_effects: run_commands
|
|
13
|
+
produces: [report]
|
|
14
|
+
consumes: [source-code]
|
|
15
|
+
|
|
16
|
+
token_budget:
|
|
17
|
+
max_files_read: 3
|
|
18
|
+
max_lines_per_read: 100
|
|
19
|
+
max_shell_commands: 2
|
|
20
|
+
stop_early: false # Must run all checks — cannot skip for token budget
|
|
21
|
+
|
|
22
|
+
exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
|
|
23
|
+
skill_version: 7.5.0
|
|
24
|
+
runtime_version: 1
|
|
25
|
+
schema_version: 2
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# qk-validation-gate — Quality Gate
|
|
29
|
+
|
|
30
|
+
> **Language rule:** Code, identifiers, file names ? English. Explanations, summaries ? Vietnamese.
|
|
31
|
+
|
|
32
|
+
skill_version: 7.5.0
|
|
33
|
+
runtime_version: 1
|
|
34
|
+
schema_version: 2
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Preconditions
|
|
38
|
+
- [ ] Project has `package.json` with lint/test scripts (or equivalent for other runtimes)
|
|
39
|
+
- [ ] Target scope is specified (specific files, or whole project)
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
On missing precondition:
|
|
43
|
+
EXIT: BLOCKED
|
|
44
|
+
Message: "Không tìm thấy script lint/test. Vui lòng chỉ định lệnh kiểm tra."
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
skill_version: 7.5.0
|
|
48
|
+
runtime_version: 1
|
|
49
|
+
schema_version: 2
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Scope
|
|
53
|
+
- ✅ Run lint, type-check, tests, security audit in sequence
|
|
54
|
+
- ✅ Enforce pass/fail with concrete thresholds
|
|
55
|
+
- ✅ Report results with structured Evidence Format
|
|
56
|
+
|
|
57
|
+
## Non-Goals
|
|
58
|
+
- ❌ Fix failing tests or lint errors (fixes go to qk-bug-resolution)
|
|
59
|
+
- ❌ Skip any gate check unless user explicitly allows
|
|
60
|
+
- ❌ Override failing thresholds with "ignore" flags
|
|
61
|
+
|
|
62
|
+
skill_version: 7.5.0
|
|
63
|
+
runtime_version: 1
|
|
64
|
+
schema_version: 2
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Pass/Fail Thresholds (Non-Negotiable)
|
|
68
|
+
|
|
69
|
+
```yaml
|
|
70
|
+
lint:
|
|
71
|
+
errors: 0 # Zero tolerance for lint errors
|
|
72
|
+
warnings: allowed # Warnings do not block
|
|
73
|
+
|
|
74
|
+
typescript:
|
|
75
|
+
errors: 0 # Zero type errors
|
|
76
|
+
|
|
77
|
+
tests:
|
|
78
|
+
coverage_minimum: 80% # Overall coverage
|
|
79
|
+
unit_test_pass_rate: 100% # All unit tests must pass
|
|
80
|
+
integration_test_pass_rate: 100%
|
|
81
|
+
|
|
82
|
+
security:
|
|
83
|
+
critical_vulnerabilities: 0
|
|
84
|
+
high_vulnerabilities: 0
|
|
85
|
+
medium_vulnerabilities: 5 # Max allowed (review required)
|
|
86
|
+
|
|
87
|
+
build:
|
|
88
|
+
must_succeed: true
|
|
89
|
+
max_warnings: 5
|
|
90
|
+
bundle_size_limit: 500KB # Gzipped (if applicable)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
skill_version: 7.5.0
|
|
94
|
+
runtime_version: 1
|
|
95
|
+
schema_version: 2
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Priority Order
|
|
99
|
+
|
|
100
|
+
| Priority | Gate | Fail = Block? | Skip Allowed? |
|
|
101
|
+
|----------|------|---------------|---------------|
|
|
102
|
+
| P1 | Security audit (`npm audit`) | YES | Never |
|
|
103
|
+
| P2 | TypeScript / type check | YES | Never |
|
|
104
|
+
| P3 | Lint (errors only) | YES | Never |
|
|
105
|
+
| P4 | Unit tests | YES | Never |
|
|
106
|
+
| P5 | Integration tests | YES | Only if no integration tests exist |
|
|
107
|
+
| P6 | Coverage check | YES if < 80% | Never |
|
|
108
|
+
| P7 | Build | YES | Never |
|
|
109
|
+
| P8 | Bundle size | WARN only | Budget < 80% |
|
|
110
|
+
|
|
111
|
+
skill_version: 7.5.0
|
|
112
|
+
runtime_version: 1
|
|
113
|
+
schema_version: 2
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Workflow
|
|
117
|
+
|
|
118
|
+
### Phase 1 — Security Gate (P1)
|
|
119
|
+
|
|
120
|
+
**Steps:**
|
|
121
|
+
1. Run: `npm audit --audit-level=high` (or equivalent)
|
|
122
|
+
2. Parse output for CRITICAL and HIGH
|
|
123
|
+
|
|
124
|
+
**Decision:**
|
|
125
|
+
```
|
|
126
|
+
IF 0 critical + 0 high
|
|
127
|
+
→ PASS P1 → go to Phase 2
|
|
128
|
+
|
|
129
|
+
ELSE IF critical or high found
|
|
130
|
+
→ EXIT: FAILED immediately
|
|
131
|
+
→ Report: exact package name, CVE, severity
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
skill_version: 7.5.0
|
|
135
|
+
runtime_version: 1
|
|
136
|
+
schema_version: 2
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
### Phase 2 — Type & Lint Gate (P2+P3)
|
|
140
|
+
|
|
141
|
+
**Steps:**
|
|
142
|
+
1. Run: `npm run typecheck` (or `tsc --noEmit`)
|
|
143
|
+
2. Run: `npm run lint`
|
|
144
|
+
3. Parse error counts
|
|
145
|
+
|
|
146
|
+
**Decision:**
|
|
147
|
+
```
|
|
148
|
+
IF 0 type errors AND 0 lint errors
|
|
149
|
+
→ PASS P2+P3 → go to Phase 3
|
|
150
|
+
|
|
151
|
+
ELSE IF type errors > 0
|
|
152
|
+
→ EXIT: FAILED — list each error with file:line
|
|
153
|
+
|
|
154
|
+
ELSE IF lint errors > 0 (warnings OK)
|
|
155
|
+
→ EXIT: FAILED — list errors
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
skill_version: 7.5.0
|
|
159
|
+
runtime_version: 1
|
|
160
|
+
schema_version: 2
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
### Phase 3 — Test Gate (P4+P5+P6)
|
|
164
|
+
|
|
165
|
+
**Steps:**
|
|
166
|
+
1. Run: `npm test -- --coverage` (or equivalent)
|
|
167
|
+
2. Parse: pass/fail counts, coverage percentage
|
|
168
|
+
|
|
169
|
+
**Decision:**
|
|
170
|
+
```
|
|
171
|
+
IF all tests pass AND coverage ≥ 80%
|
|
172
|
+
→ PASS P4+P5+P6 → go to Phase 4
|
|
173
|
+
|
|
174
|
+
ELSE IF any test fails
|
|
175
|
+
→ EXIT: FAILED — list failing test names
|
|
176
|
+
|
|
177
|
+
ELSE IF coverage < 80%
|
|
178
|
+
→ EXIT: FAILED — show coverage report (file-level)
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Retry Policy:**
|
|
182
|
+
```
|
|
183
|
+
Test fail
|
|
184
|
+
└─ Check if it's a flaky test (run once more)
|
|
185
|
+
├─ PASS on retry → note "flaky test detected", continue
|
|
186
|
+
└─ FAIL on retry → EXIT: FAILED — not flaky, real failure
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
skill_version: 7.5.0
|
|
190
|
+
runtime_version: 1
|
|
191
|
+
schema_version: 2
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
### Phase 4 — Build Gate (P7)
|
|
195
|
+
|
|
196
|
+
**Steps:**
|
|
197
|
+
1. Run: `npm run build`
|
|
198
|
+
2. Check exit code + warnings count
|
|
199
|
+
|
|
200
|
+
**Decision:**
|
|
201
|
+
```
|
|
202
|
+
IF build succeeds AND warnings ≤ 5
|
|
203
|
+
→ EXIT: SUCCESS
|
|
204
|
+
|
|
205
|
+
ELSE IF build fails
|
|
206
|
+
→ EXIT: FAILED
|
|
207
|
+
|
|
208
|
+
ELSE IF warnings > 5
|
|
209
|
+
→ EXIT: PARTIAL — list warnings, continue to release if user confirms
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
skill_version: 7.5.0
|
|
213
|
+
runtime_version: 1
|
|
214
|
+
schema_version: 2
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Confidence Model
|
|
218
|
+
|
|
219
|
+
| Level | Condition | Action |
|
|
220
|
+
|-------|-----------|--------|
|
|
221
|
+
| HIGH | Command exit code 0/non-0, numeric output | Report directly |
|
|
222
|
+
| MEDIUM | Inferred from partial output (truncated logs) | Note potential missing info |
|
|
223
|
+
| LOW | Script not found or output format unknown | EXIT: BLOCKED — clarify commands |
|
|
224
|
+
|
|
225
|
+
skill_version: 7.5.0
|
|
226
|
+
runtime_version: 1
|
|
227
|
+
schema_version: 2
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Severity
|
|
231
|
+
|
|
232
|
+
| Level | Definition | Example |
|
|
233
|
+
|-------|-----------|---------|
|
|
234
|
+
| CRITICAL | Security vulnerability in production dependency | CVE in auth library |
|
|
235
|
+
| HIGH | Type error or failing test | `Cannot read property of undefined` |
|
|
236
|
+
| MEDIUM | Coverage below threshold | 67% coverage (threshold 80%) |
|
|
237
|
+
| LOW | Build warning | Unused export |
|
|
238
|
+
|
|
239
|
+
skill_version: 7.5.0
|
|
240
|
+
runtime_version: 1
|
|
241
|
+
schema_version: 2
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## Evidence Format
|
|
245
|
+
|
|
246
|
+
```
|
|
247
|
+
[SEVERITY] Gate: [SECURITY|TYPE|LINT|TEST|COVERAGE|BUILD]
|
|
248
|
+
Command: [command that was run]
|
|
249
|
+
Result: [PASS | FAIL — exact output snippet]
|
|
250
|
+
Threshold: [what the threshold is]
|
|
251
|
+
Actual: [what was measured]
|
|
252
|
+
Fix: [where to look for the fix]
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Example:**
|
|
256
|
+
```
|
|
257
|
+
[HIGH] Gate: TEST
|
|
258
|
+
Command: npm test -- --coverage
|
|
259
|
+
Result: FAIL — 3 tests failed
|
|
260
|
+
Threshold: 100% pass rate
|
|
261
|
+
Actual: 47/50 tests passed
|
|
262
|
+
Fix: See failing tests: auth.test.ts:L45, user.test.ts:L23, order.test.ts:L89
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
skill_version: 7.5.0
|
|
266
|
+
runtime_version: 1
|
|
267
|
+
schema_version: 2
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Escalation Rules
|
|
271
|
+
|
|
272
|
+
```
|
|
273
|
+
BLOCKED: Cannot run validation
|
|
274
|
+
Missing:
|
|
275
|
+
- npm scripts (lint, test, build) in package.json
|
|
276
|
+
- OR test framework setup
|
|
277
|
+
Questions:
|
|
278
|
+
1. Dùng lệnh gì để chạy lint? (e.g., eslint, biome, oxlint)
|
|
279
|
+
2. Dùng lệnh gì để chạy test? (e.g., vitest, jest, playwright)
|
|
280
|
+
3. Coverage threshold dự án quy định là bao nhiêu?
|
|
281
|
+
Recommended Assumptions:
|
|
282
|
+
- Standard: npm run lint + npm test + npm run build
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
skill_version: 7.5.0
|
|
286
|
+
runtime_version: 1
|
|
287
|
+
schema_version: 2
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## Handoff Contract
|
|
291
|
+
|
|
292
|
+
### Consumes
|
|
293
|
+
```json
|
|
294
|
+
{
|
|
295
|
+
"from": "user or qk-orchestrator",
|
|
296
|
+
"required_fields": ["project_root"],
|
|
297
|
+
"optional_fields": ["custom_commands", "custom_thresholds", "scope_files"]
|
|
298
|
+
}
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### Produces
|
|
302
|
+
```json
|
|
303
|
+
{
|
|
304
|
+
"to": "qk-production-release (if all pass)",
|
|
305
|
+
"output_fields": ["gate_results", "coverage_percent", "violations_list", "exit_code"]
|
|
306
|
+
}
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
skill_version: 7.5.0
|
|
310
|
+
runtime_version: 1
|
|
311
|
+
schema_version: 2
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
## Output Format
|
|
315
|
+
|
|
316
|
+
```
|
|
317
|
+
🔒 Validation Gate Report
|
|
318
|
+
─────────────────────────────────────────────────
|
|
319
|
+
Project: [path]
|
|
320
|
+
|
|
321
|
+
Gate Results:
|
|
322
|
+
P1 Security: [✅ PASS | ❌ FAIL — N critical, N high]
|
|
323
|
+
P2 TypeScript: [✅ PASS | ❌ FAIL — N errors]
|
|
324
|
+
P3 Lint: [✅ PASS | ❌ FAIL — N errors (N warnings)]
|
|
325
|
+
P4 Unit Tests: [✅ PASS | ❌ FAIL — N/N passed]
|
|
326
|
+
P5 Integration: [✅ PASS | ❌ FAIL | ⏭️ SKIPPED]
|
|
327
|
+
P6 Coverage: [✅ PASS (N%) | ❌ FAIL (N% < 80%)]
|
|
328
|
+
P7 Build: [✅ PASS | ❌ FAIL]
|
|
329
|
+
|
|
330
|
+
Failures (action required):
|
|
331
|
+
[SEVERITY] Gate — detail — Fix hint
|
|
332
|
+
|
|
333
|
+
Exit Code: [SUCCESS | PARTIAL | BLOCKED | FAILED]
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
skill_version: 7.5.0
|
|
337
|
+
runtime_version: 1
|
|
338
|
+
schema_version: 2
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
---
|
|
343
|
+
|
|
344
|
+
## Retry Policy
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
## Exit Codes
|
|
349
|
+
|
|
350
|
+
| Code | Meaning | When |
|
|
351
|
+
|------|---------|------|
|
|
352
|
+
| SUCCESS | All gates passed, thresholds met | Safe to proceed to release |
|
|
353
|
+
| PARTIAL | Build pass, but warnings > 5 OR integration skipped | User confirmation required |
|
|
354
|
+
| BLOCKED | Cannot run — missing scripts or config | Setup required |
|
|
355
|
+
| FAILED | Any gate failed at threshold | Do NOT release — fix first |
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
|