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.
Files changed (188) hide show
  1. package/.agents/AGENTS.md +44 -88
  2. package/.agents/CHANGELOG.md +69 -0
  3. package/.agents/LICENSE +21 -0
  4. package/.agents/README.md +59 -0
  5. package/.agents/_template/BEHAVIOR_SPEC.md +96 -0
  6. package/.agents/_template/examples/example-en.md +49 -0
  7. package/.agents/_template/examples/example-vi.md +49 -0
  8. package/.agents/docs/CHI_TIET_SKILLS.md +125 -0
  9. package/.agents/docs/GOVERNANCE.md +40 -0
  10. package/.agents/docs/HUONG_DAN_SU_DUNG.md +120 -0
  11. package/.agents/docs/SPEC.md +87 -0
  12. package/.agents/docs/adr/0001-intent-based-architecture.md +19 -0
  13. package/.agents/docs/adr/0002-kernel-freeze.md +21 -0
  14. package/.agents/docs/adr/0003-risk-based-verification.md +20 -0
  15. package/.agents/docs/adr/0004-progressive-evidence.md +19 -0
  16. package/.agents/docs/skill-classification.md +25 -0
  17. package/.agents/skills/qk-access-policy/SKILL.md +179 -0
  18. package/.agents/skills/qk-ai-builder/SKILL.md +215 -0
  19. package/.agents/skills/qk-api-lifecycle/SKILL.md +176 -0
  20. package/.agents/skills/qk-bug-resolution/SKILL.md +307 -0
  21. package/.agents/skills/qk-context-loader/SKILL.md +218 -0
  22. package/.agents/skills/qk-data-lifecycle/SKILL.md +192 -0
  23. package/.agents/skills/qk-db-optimizer/SKILL.md +196 -0
  24. package/.agents/skills/qk-design-to-code/SKILL.md +285 -0
  25. package/.agents/skills/qk-docs/SKILL.md +198 -0
  26. package/.agents/skills/qk-engineering-standard/SKILL.md +351 -0
  27. package/.agents/skills/qk-engineering-standard/rules/backend.md +122 -0
  28. package/.agents/skills/qk-engineering-standard/rules/database.md +3 -0
  29. package/.agents/skills/qk-engineering-standard/rules/frontend.md +152 -0
  30. package/.agents/skills/qk-engineering-standard/rules/security.md +3 -0
  31. package/.agents/skills/qk-engineering-standard/rules/testing.md +3 -0
  32. package/.agents/skills/qk-fe-api-integration/SKILL.md +326 -0
  33. package/.agents/skills/qk-feature-delivery/SKILL.md +305 -0
  34. package/.agents/skills/qk-help/SKILL.md +193 -0
  35. package/.agents/skills/qk-orchestrator/SKILL.md +277 -0
  36. package/.agents/skills/qk-orchestrator/references/routing-table.md +77 -0
  37. package/.agents/skills/qk-production-release/SKILL.md +284 -0
  38. package/.agents/skills/qk-project-bootstrap/SKILL.md +234 -0
  39. package/.agents/skills/qk-project-health/SKILL.md +199 -0
  40. package/.agents/skills/qk-project-memory/SKILL.md +172 -0
  41. package/.agents/skills/qk-system-evolution/SKILL.md +281 -0
  42. package/.agents/skills/qk-ui-audit/SKILL.md +314 -0
  43. package/.agents/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
  44. package/.agents/skills/qk-ui-system-builder/SKILL.md +221 -0
  45. package/.agents/skills/qk-validation-gate/SKILL.md +359 -0
  46. package/.agents/skills.json +819 -0
  47. package/.github/workflows/ci.yml +1 -1
  48. package/.qk-ai-skill-os/CHANGELOG.md +69 -0
  49. package/.qk-ai-skill-os/LICENSE +21 -0
  50. package/.qk-ai-skill-os/README.md +59 -0
  51. package/.qk-ai-skill-os/_template/BEHAVIOR_SPEC.md +96 -0
  52. package/.qk-ai-skill-os/_template/examples/example-en.md +49 -0
  53. package/.qk-ai-skill-os/_template/examples/example-vi.md +49 -0
  54. package/.qk-ai-skill-os/docs/CHI_TIET_SKILLS.md +125 -0
  55. package/.qk-ai-skill-os/docs/GOVERNANCE.md +40 -0
  56. package/.qk-ai-skill-os/docs/HUONG_DAN_SU_DUNG.md +120 -0
  57. package/.qk-ai-skill-os/docs/SPEC.md +87 -0
  58. package/.qk-ai-skill-os/docs/adr/0001-intent-based-architecture.md +19 -0
  59. package/.qk-ai-skill-os/docs/adr/0002-kernel-freeze.md +21 -0
  60. package/.qk-ai-skill-os/docs/adr/0003-risk-based-verification.md +20 -0
  61. package/.qk-ai-skill-os/docs/adr/0004-progressive-evidence.md +19 -0
  62. package/.qk-ai-skill-os/docs/skill-classification.md +25 -0
  63. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-accessibility-audit/SKILL.md +121 -0
  64. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-agent-orchestrator/SKILL.md +179 -0
  65. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-api-integration/SKILL.md +389 -0
  66. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-auth-security/SKILL.md +96 -0
  67. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-backend-architecture/SKILL.md +125 -0
  68. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-bug-fix/SKILL.md +213 -0
  69. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-component-generator/SKILL.md +136 -0
  70. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-context-manager/SKILL.md +175 -0
  71. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-database-engineer/SKILL.md +104 -0
  72. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-deployment/SKILL.md +96 -0
  73. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-design-system/SKILL.md +137 -0
  74. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-form-builder/SKILL.md +140 -0
  75. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-architecture/SKILL.md +155 -0
  76. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-debug/SKILL.md +133 -0
  77. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-performance/SKILL.md +129 -0
  78. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-testing/SKILL.md +146 -0
  79. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-git-engineer/SKILL.md +304 -0
  80. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-help/SKILL.md +68 -0
  81. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-migration/SKILL.md +284 -0
  82. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-project-audit/SKILL.md +280 -0
  83. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-refactor/SKILL.md +222 -0
  84. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-state-management/SKILL.md +140 -0
  85. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-table-crud-generator/SKILL.md +127 -0
  86. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-ui-builder/SKILL.md +152 -0
  87. package/.qk-ai-skill-os/skills/_template/SKILL.md +238 -0
  88. package/.qk-ai-skill-os/skills/qk-access-policy/SKILL.md +179 -0
  89. package/.qk-ai-skill-os/skills/qk-ai-builder/SKILL.md +221 -0
  90. package/.qk-ai-skill-os/skills/qk-api-lifecycle/SKILL.md +176 -0
  91. package/.qk-ai-skill-os/skills/qk-bug-resolution/SKILL.md +307 -0
  92. package/.qk-ai-skill-os/skills/qk-context-loader/SKILL.md +218 -0
  93. package/.qk-ai-skill-os/skills/qk-data-lifecycle/SKILL.md +192 -0
  94. package/.qk-ai-skill-os/skills/qk-db-optimizer/SKILL.md +196 -0
  95. package/.qk-ai-skill-os/skills/qk-design-to-code/SKILL.md +291 -0
  96. package/.qk-ai-skill-os/skills/qk-docs/SKILL.md +198 -0
  97. package/.qk-ai-skill-os/skills/qk-engineering-standard/SKILL.md +351 -0
  98. package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/backend.md +122 -0
  99. package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/database.md +3 -0
  100. package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/frontend.md +152 -0
  101. package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/security.md +3 -0
  102. package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/testing.md +3 -0
  103. package/.qk-ai-skill-os/skills/qk-fe-api-integration/SKILL.md +326 -0
  104. package/.qk-ai-skill-os/skills/qk-feature-delivery/SKILL.md +305 -0
  105. package/.qk-ai-skill-os/skills/qk-help/SKILL.md +193 -0
  106. package/.qk-ai-skill-os/skills/qk-orchestrator/SKILL.md +277 -0
  107. package/.qk-ai-skill-os/skills/qk-orchestrator/references/routing-table.md +77 -0
  108. package/.qk-ai-skill-os/skills/qk-production-release/SKILL.md +290 -0
  109. package/.qk-ai-skill-os/skills/qk-project-bootstrap/SKILL.md +240 -0
  110. package/.qk-ai-skill-os/skills/qk-project-health/SKILL.md +199 -0
  111. package/.qk-ai-skill-os/skills/qk-project-memory/SKILL.md +172 -0
  112. package/.qk-ai-skill-os/skills/qk-system-evolution/SKILL.md +285 -0
  113. package/.qk-ai-skill-os/skills/qk-ui-audit/SKILL.md +314 -0
  114. package/.qk-ai-skill-os/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
  115. package/.qk-ai-skill-os/skills/qk-ui-system-builder/SKILL.md +225 -0
  116. package/.qk-ai-skill-os/skills/qk-validation-gate/SKILL.md +361 -0
  117. package/.qk-ai-skill-os/skills.json +819 -0
  118. package/CLAUDE.md +110 -0
  119. package/README.md +25 -3
  120. package/add_lang.js +21 -0
  121. package/add_lang.py +25 -0
  122. package/add_sections.py +53 -0
  123. package/bin/install.js +225 -170
  124. package/bin/lint.js +122 -0
  125. package/docs/CHI_TIET_SKILLS.md +26 -26
  126. package/docs/HUONG_DAN_SU_DUNG.md +3 -3
  127. package/docs/SPEC.md +70 -20
  128. package/framework/skill-schema.md +310 -0
  129. package/package.json +15 -4
  130. package/patch.js +15 -0
  131. package/patch.py +89 -0
  132. package/patch2.py +83 -0
  133. package/skills/_archive_old_skills/qk-accessibility-audit/SKILL.md +1 -0
  134. package/skills/_archive_old_skills/qk-agent-orchestrator/SKILL.md +1 -0
  135. package/skills/_archive_old_skills/qk-api-integration/SKILL.md +1 -0
  136. package/skills/_archive_old_skills/qk-auth-security/SKILL.md +1 -0
  137. package/skills/_archive_old_skills/qk-backend-architecture/SKILL.md +1 -0
  138. package/skills/_archive_old_skills/qk-bug-fix/SKILL.md +1 -0
  139. package/skills/_archive_old_skills/qk-component-generator/SKILL.md +1 -0
  140. package/skills/_archive_old_skills/qk-context-manager/SKILL.md +1 -0
  141. package/skills/_archive_old_skills/qk-database-engineer/SKILL.md +1 -0
  142. package/skills/_archive_old_skills/qk-deployment/SKILL.md +1 -0
  143. package/skills/_archive_old_skills/qk-design-system/SKILL.md +1 -0
  144. package/skills/_archive_old_skills/qk-form-builder/SKILL.md +1 -0
  145. package/skills/_archive_old_skills/qk-frontend-architecture/SKILL.md +1 -0
  146. package/skills/_archive_old_skills/qk-frontend-debug/SKILL.md +1 -0
  147. package/skills/_archive_old_skills/qk-frontend-performance/SKILL.md +1 -0
  148. package/skills/_archive_old_skills/qk-frontend-testing/SKILL.md +1 -0
  149. package/skills/_archive_old_skills/qk-git-engineer/SKILL.md +1 -0
  150. package/skills/_archive_old_skills/qk-help/SKILL.md +1 -0
  151. package/skills/_archive_old_skills/qk-migration/SKILL.md +1 -0
  152. package/skills/_archive_old_skills/qk-project-audit/SKILL.md +1 -0
  153. package/skills/_archive_old_skills/qk-refactor/SKILL.md +1 -0
  154. package/skills/_archive_old_skills/qk-state-management/SKILL.md +1 -0
  155. package/skills/_archive_old_skills/qk-table-crud-generator/SKILL.md +1 -0
  156. package/skills/_archive_old_skills/qk-ui-builder/SKILL.md +1 -0
  157. package/skills/_template/SKILL.md +238 -0
  158. package/skills/qk-access-policy/SKILL.md +179 -39
  159. package/skills/qk-ai-builder/SKILL.md +215 -40
  160. package/skills/qk-api-lifecycle/SKILL.md +176 -46
  161. package/skills/qk-bug-resolution/SKILL.md +307 -46
  162. package/skills/qk-context-loader/SKILL.md +218 -43
  163. package/skills/qk-data-lifecycle/SKILL.md +192 -44
  164. package/skills/qk-db-optimizer/SKILL.md +196 -41
  165. package/skills/qk-design-to-code/SKILL.md +285 -46
  166. package/skills/qk-docs/SKILL.md +198 -40
  167. package/skills/qk-engineering-standard/SKILL.md +351 -42
  168. package/skills/qk-fe-api-integration/SKILL.md +326 -55
  169. package/skills/qk-feature-delivery/SKILL.md +305 -48
  170. package/skills/qk-help/SKILL.md +178 -23
  171. package/skills/qk-orchestrator/SKILL.md +277 -42
  172. package/skills/qk-orchestrator/references/routing-table.md +77 -0
  173. package/skills/qk-production-release/SKILL.md +284 -41
  174. package/skills/qk-project-bootstrap/SKILL.md +234 -38
  175. package/skills/qk-project-health/SKILL.md +199 -40
  176. package/skills/qk-project-memory/SKILL.md +172 -40
  177. package/skills/qk-system-evolution/SKILL.md +281 -40
  178. package/skills/qk-ui-audit/SKILL.md +314 -42
  179. package/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
  180. package/skills/qk-ui-system-builder/SKILL.md +221 -43
  181. package/skills/qk-validation-gate/SKILL.md +359 -40
  182. package/skills.json +813 -824
  183. package/specs/fixtures/user-payload.json +12 -0
  184. package/specs/regressions/api-integration-null-fields.yaml +19 -0
  185. package/temp_fix.js +61 -0
  186. package/tests/registry.test.js +1 -1
  187. package/update_template.js +28 -0
  188. package/skills/qk-policy-engine/SKILL.md +0 -39
package/patch.py ADDED
@@ -0,0 +1,89 @@
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 ADDED
@@ -0,0 +1,83 @@
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.")
@@ -118,3 +118,4 @@ Issues Found & Fixed:
118
118
  - [ ] Focus is visible on all interactive elements
119
119
  - [ ] Forms have proper labels
120
120
  - [ ] Icon-only buttons have accessible names
121
+
@@ -176,3 +176,4 @@ Before finishing orchestration:
176
176
  ## Examples
177
177
 
178
178
  See `examples/` folder.
179
+
@@ -386,3 +386,4 @@ Hook path: [src/hooks/]
386
386
  ## Examples
387
387
 
388
388
  See `examples/` folder.
389
+
@@ -93,3 +93,4 @@ Security measures enforced:
93
93
  🔗 Next Steps:
94
94
  Remember to add `JWT_SECRET` to your production environment variables.
95
95
  ```
96
+
@@ -122,3 +122,4 @@ Layer Mapping:
122
122
  🔗 Next Steps:
123
123
  Proceeding to implement the layers.
124
124
  ```
125
+
@@ -210,3 +210,4 @@ Similar areas to check: [file or pattern to review]
210
210
  ## Examples
211
211
 
212
212
  See `examples/` folder.
213
+
@@ -133,3 +133,4 @@ Features:
133
133
  ## Examples
134
134
 
135
135
  See `examples/` folder.
136
+
@@ -172,3 +172,4 @@ Architecture summary:
172
172
  ## Examples
173
173
 
174
174
  See `examples/` folder.
175
+
@@ -101,3 +101,4 @@ Changes:
101
101
  🔗 Next Steps:
102
102
  Run `npx prisma migrate dev` to apply these changes locally.
103
103
  ```
104
+
@@ -93,3 +93,4 @@ Files Created/Modified:
93
93
  🔗 Next Steps:
94
94
  Commit these files and push to `main` to trigger the pipeline.
95
95
  ```
96
+
@@ -134,3 +134,4 @@ Styling Rules Enforced:
134
134
  - [ ] Mappings created for all necessary UI elements
135
135
  - [ ] Design tokens (spacing/colors) prioritized over hardcoded values
136
136
  - [ ] Strict enforcement rules passed to next skill
137
+
@@ -137,3 +137,4 @@ Integration:
137
137
  - [ ] Error messages are displayed properly
138
138
  - [ ] Loading state disables the submit button
139
139
  - [ ] Accessibility: Inputs have associated labels and error ARIA attributes
140
+
@@ -152,3 +152,4 @@ File Placement:
152
152
  - [ ] Naming matches project standards
153
153
  - [ ] Separation of concerns maintained
154
154
  - [ ] Plan ready to be executed by generation skills
155
+
@@ -130,3 +130,4 @@ Root Cause: [Explanation of why it failed, e.g., Stale Closure in useEffect]
130
130
  - [ ] No Hydration warnings remain
131
131
  - [ ] Component doesn't infinitely loop
132
132
  - [ ] No regression on related UI
133
+
@@ -126,3 +126,4 @@ Bottleneck: [Brief description, e.g., "Expensive list rendering on every keystr
126
126
  - [ ] No premature memoization applied blindly
127
127
  - [ ] Layout shift (CLS) prevented (if changing images/layout)
128
128
  - [ ] Application behavior remains completely unchanged
129
+
@@ -143,3 +143,4 @@ Mocking Used:
143
143
  - [ ] Events simulated with `userEvent` (if applicable)
144
144
  - [ ] External dependencies/APIs are properly mocked
145
145
  - [ ] Tests verify observable behavior, not internal state
146
+
@@ -301,3 +301,4 @@ feat(scope): short imperative description
301
301
  ## Examples
302
302
 
303
303
  See `examples/` folder.
304
+
@@ -65,3 +65,4 @@ Bạn có thể ép AI dùng công nghệ bạn muốn bằng cách thêm \`--th
65
65
  ### Mẹo 4: Nhờ "Kiến trúc sư" phân việc 🧠
66
66
  Nếu bạn có một tính năng quá lớn (ví dụ: Làm tính năng Giỏ Hàng), đừng tự chia việc, hãy gọi:
67
67
  > *"./qk-agent-orchestrator Tôi muốn làm tính năng Giỏ hàng. Hãy phân tích và lên kế hoạch gọi các skill \`qk-\` nào cho phù hợp."*
68
+
@@ -281,3 +281,4 @@ TanStack Query 4 → 5: New API (no more isLoading/isError split), object syntax
281
281
  ## Examples
282
282
 
283
283
  See `examples/` folder.
284
+
@@ -277,3 +277,4 @@ P3 — Technical debt backlog:
277
277
  ## Examples
278
278
 
279
279
  See `examples/` folder.
280
+
@@ -219,3 +219,4 @@ Changes applied:
219
219
  ## Examples
220
220
 
221
221
  See `examples/` folder.
222
+
@@ -137,3 +137,4 @@ Implementation:
137
137
  ## Examples
138
138
 
139
139
  See `examples/` folder.
140
+
@@ -124,3 +124,4 @@ Integration:
124
124
  - [ ] Pagination/sorting state is managed properly
125
125
  - [ ] CRUD actions trigger the correct mutations or navigations
126
126
  - [ ] Delete actions have a confirmation step
127
+
@@ -149,3 +149,4 @@ Component Hierarchy:
149
149
  ## Examples
150
150
 
151
151
  See `examples/` folder.
152
+
@@ -0,0 +1,238 @@
1
+ ---
2
+ name: qk-[skill-name]
3
+ category: [core|frontend|backend|fullstack|security|qa|maintenance|devops|utilities]
4
+ version: 7.5.0
5
+ description: "[One sentence — what it does]"
6
+ platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
7
+ execution_mode: deterministic
8
+
9
+ # Orchestrator routing metadata
10
+ cost: [low|medium|high]
11
+ latency: [fast|medium|slow]
12
+ risk: [low|medium|high]
13
+ side_effects: [edit_files|run_commands|read_only|none]
14
+ produces: [report|code|schema|plan|tokens]
15
+ consumes: [context-graph|design-md|stack-trace|json-payload|none]
16
+
17
+ token_budget:
18
+ max_files_read: 3
19
+ max_lines_per_read: 150
20
+ max_shell_commands: 2
21
+ stop_early: true
22
+
23
+ exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
24
+ ---
25
+
26
+ # qk-[skill-name]
27
+
28
+ > **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese (match user language).
29
+
30
+ ---
31
+
32
+ ## Preconditions
33
+ Before executing, verify ALL exist. STOP with `BLOCKED` if any is missing.
34
+
35
+ - [ ] [Precondition 1 — e.g., "Repository is accessible"]
36
+ - [ ] [Precondition 2 — e.g., "DESIGN.md exists in project root"]
37
+
38
+ ```
39
+ On missing precondition:
40
+ EXIT: BLOCKED
41
+ Message: "[Precondition X] not found. Please provide: [what]"
42
+ ```
43
+
44
+ ---
45
+
46
+ ## Scope
47
+ - ✅ [What this skill explicitly DOES]
48
+ - ✅ [What this skill explicitly DOES]
49
+
50
+ ## Non-Goals
51
+ - ❌ [Anti-pattern 1] — because [why]
52
+ - ❌ [Anti-pattern 2]
53
+ - ❌ Never create helper scripts (Node.js/Python/shell) to apply patches — edit files directly
54
+ - ❌ Never read entire files > 150 lines — use targeted reads (StartLine:EndLine)
55
+
56
+ ---
57
+
58
+ ## Priority Order
59
+ When token budget is insufficient, execute checks in this order:
60
+
61
+ | Priority | Check | Skip Threshold |
62
+ |----------|-------|----------------|
63
+ | P1 | [Most critical — never skip] | Never |
64
+ | P2 | [High priority] | Budget < 30% |
65
+ | P3 | [Medium priority] | Budget < 50% |
66
+ | P4 | [Low priority — always optional] | Budget < 70% |
67
+
68
+ ---
69
+
70
+ ## Workflow
71
+
72
+ ### Phase 1 — [Name: e.g., Triage]
73
+
74
+ **Steps:**
75
+ 1. [Concrete step — specify tool: `grep_search` / `view_file[L1:L50]` / `run_command`]
76
+ 2. [Next step]
77
+
78
+ **Exit When (stop this phase, move to next):**
79
+ - [Condition A — e.g., "Root cause identified"]
80
+ - [Condition B — e.g., "`max_files_read` reached"]
81
+
82
+ **On Blocked:**
83
+ ```
84
+ EXIT: BLOCKED
85
+ Missing: [what specific info is needed]
86
+ Questions:
87
+ 1. [Specific question to user]
88
+ ```
89
+
90
+ ---
91
+
92
+ ### Phase 2 — [Name: e.g., Analyze]
93
+
94
+ **Steps:**
95
+ 1. [Step]
96
+
97
+ **Decision:**
98
+ ```
99
+ IF [condition met]
100
+ → proceed to Phase 3
101
+ ELSE IF [edge case]
102
+ → EXIT: PARTIAL — note: [what was missed]
103
+ ELSE
104
+ → ESCALATE
105
+ ```
106
+
107
+ ---
108
+
109
+ ### Phase 3 — [Name: e.g., Execute]
110
+
111
+ **Steps:**
112
+ 1. Apply fix using `replace_file_content` or `multi_replace_file_content` — NEVER via scripts
113
+ 2. [Verification step]
114
+
115
+ **Exit When:**
116
+ - Fix applied and verified → EXIT: SUCCESS
117
+ - Fix applied but unverifiable → EXIT: PARTIAL
118
+
119
+ ---
120
+
121
+ ## Confidence Model
122
+
123
+ | Level | Condition | Action |
124
+ |-------|-----------|--------|
125
+ | HIGH | Direct evidence (file:line, stack trace, exact match) | Proceed |
126
+ | MEDIUM | Inferred from patterns or similar code | Note assumption, proceed carefully |
127
+ | LOW | Assumption without evidence | STOP — ask user before proceeding |
128
+
129
+ ---
130
+
131
+ ## Severity
132
+
133
+ | Level | Definition | Example |
134
+ |-------|-----------|---------|
135
+ | CRITICAL | Data loss / security breach / app down | Hardcoded secret, SQL injection |
136
+ | HIGH | Core feature broken, blocking users | Null crash, broken API |
137
+ | MEDIUM | Degraded UX, workaround exists | Cyclomatic > 10, missing loading state |
138
+ | LOW | Style/cosmetic, non-blocking | Missing comment, minor inconsistency |
139
+
140
+ ---
141
+
142
+ ## Evidence Format
143
+
144
+ Every finding MUST use this format:
145
+ ```
146
+ [SEVERITY] path/to/file.ts:LINE
147
+ Reason: [why this is a violation or finding]
148
+ Confidence: [HIGH|MEDIUM|LOW]
149
+ Fix: [one-line suggestion]
150
+ ```
151
+
152
+ **Example:**
153
+ ```
154
+ [HIGH] src/auth.service.ts:132
155
+ Reason: Function length 64 lines exceeds threshold of 30
156
+ Confidence: HIGH
157
+ Fix: Extract token validation to `validateToken()`
158
+ ```
159
+
160
+ ---
161
+
162
+ ## Retry Policy
163
+
164
+ ```
165
+ Action fails
166
+ └─ Attempt auto-fix (if fix is deterministic)
167
+ └─ Re-run verification
168
+ ├─ PASS → EXIT: SUCCESS
169
+ └─ FAIL (2nd time) → EXIT: PARTIAL + report
170
+ └─ Do NOT retry more than 2 times
171
+ └─ 3rd failure → ESCALATE to user
172
+ ```
173
+
174
+ ---
175
+
176
+ ## Escalation Rules
177
+
178
+ When blocked, **never just "STOP"** — return structured response:
179
+
180
+ ```
181
+ BLOCKED: [Reason — specific, not vague]
182
+ Missing:
183
+ - [Specific artifact or information needed]
184
+ Questions:
185
+ 1. [Specific question]
186
+ 2. [Specific question]
187
+ Recommended Assumptions (if you want me to proceed anyway):
188
+ - [Safe assumption 1]
189
+ - [Safe assumption 2]
190
+ ```
191
+
192
+ ---
193
+
194
+ ## Handoff Contract
195
+
196
+ ### Consumes (Input from upstream)
197
+ ```json
198
+ {
199
+ "from": "[skill-name or 'user']",
200
+ "required_fields": ["field1", "field2"],
201
+ "optional_fields": ["field3"]
202
+ }
203
+ ```
204
+
205
+ ### Produces (Output for downstream)
206
+ ```json
207
+ {
208
+ "to": "[skill-name or 'user']",
209
+ "output_fields": ["changed_files", "summary", "confidence", "exit_code"]
210
+ }
211
+ ```
212
+
213
+ ---
214
+
215
+ ## Output Format
216
+
217
+ ```
218
+ [SKILL_NAME] Result
219
+ ─────────────────────────────────────────────────
220
+ Status: [SUCCESS | PARTIAL | BLOCKED | FAILED]
221
+ Confidence: [HIGH | MEDIUM | LOW]
222
+
223
+ [Section specific to this skill]
224
+
225
+ Exit Code: [SUCCESS | PARTIAL | BLOCKED | FAILED]
226
+ ```
227
+
228
+ ---
229
+
230
+ ## Exit Codes
231
+
232
+ | Code | Meaning | Orchestrator Action |
233
+ |------|---------|---------------------|
234
+ | SUCCESS | All checks passed, task complete | Continue pipeline |
235
+ | PARTIAL | Task done with degraded quality or skipped P3/P4 checks | Notify user, continue |
236
+ | BLOCKED | Missing precondition or ambiguous requirement | STOP, ask user |
237
+ | FAILED | Task failed after 2 retry attempts | STOP, report error |
238
+