ai-developer-skill-os 3.1.5 → 6.0.0-rc1

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 (108) hide show
  1. package/README.md +15 -19
  2. package/_template/BEHAVIOR_SPEC.md +96 -0
  3. package/docs/GOVERNANCE.md +1 -1
  4. package/fix_seeds.js +22 -0
  5. package/framework/KERNEL.md +83 -0
  6. package/framework/bias-library/cosmetic-refactor.md +21 -0
  7. package/framework/bias-library/enterprise-crud.md +21 -0
  8. package/framework/bias-library/fake-ui-slop.md +20 -0
  9. package/framework/bias-library/hallucinated-tools.md +20 -0
  10. package/framework/bias-library/missing-ui-states.md +19 -0
  11. package/framework/bias-library/over-indexing.md +20 -0
  12. package/framework/bias-library/swallow-errors.md +19 -0
  13. package/framework/bias-library/ui-only-security.md +17 -0
  14. package/framework/decision-primitives.md +47 -0
  15. package/framework/dial-library/complexity-budget.md +13 -0
  16. package/framework/dial-library/granularity.md +13 -0
  17. package/framework/dial-library/optimization-strategy.md +13 -0
  18. package/framework/dial-library/strictness.md +13 -0
  19. package/framework/rule-library/delegation-only.md +9 -0
  20. package/framework/rule-library/minimal-diff.md +9 -0
  21. package/migrate-to-v6.js +130 -0
  22. package/migrate.js +147 -0
  23. package/migrate.py +133 -0
  24. package/migrate_all.cjs +96 -0
  25. package/package.json +2 -2
  26. package/skills/qk-access-policy/SKILL.md +30 -42
  27. package/skills/qk-ai-builder/SKILL.md +32 -43
  28. package/skills/qk-api-lifecycle/SKILL.md +28 -62
  29. package/skills/qk-bug-resolution/SKILL.md +29 -66
  30. package/skills/qk-context-loader/SKILL.md +25 -44
  31. package/skills/qk-data-lifecycle/SKILL.md +25 -58
  32. package/skills/qk-db-optimizer/SKILL.md +25 -53
  33. package/skills/qk-design-to-code/SKILL.md +32 -48
  34. package/skills/qk-docs/SKILL.md +26 -52
  35. package/skills/qk-engineering-standard/SKILL.md +28 -59
  36. package/skills/qk-feature-delivery/SKILL.md +29 -64
  37. package/skills/qk-help/SKILL.md +30 -40
  38. package/skills/qk-orchestrator/SKILL.md +25 -51
  39. package/skills/qk-policy-engine/SKILL.md +24 -49
  40. package/skills/qk-production-release/SKILL.md +31 -48
  41. package/skills/qk-project-bootstrap/SKILL.md +32 -46
  42. package/skills/qk-project-health/SKILL.md +26 -54
  43. package/skills/qk-project-memory/SKILL.md +31 -38
  44. package/skills/qk-system-evolution/SKILL.md +25 -61
  45. package/skills/qk-ui-audit/SKILL.md +25 -56
  46. package/skills/qk-ui-system-builder/SKILL.md +30 -42
  47. package/skills/qk-validation-gate/SKILL.md +26 -57
  48. package/specs/contracts/behavior-contract.yaml +40 -0
  49. package/specs/expectations/qk-bug-resolution.yaml +35 -0
  50. package/specs/scenarios/fix-login-nullref.yaml +3 -0
  51. package/taste-skill/.claude-plugin/marketplace.json +20 -0
  52. package/taste-skill/.claude-plugin/plugin.json +19 -0
  53. package/taste-skill/.github/FUNDING.yml +1 -0
  54. package/taste-skill/.github/copilot-instructions.md +11 -0
  55. package/taste-skill/CHANGELOG.md +111 -0
  56. package/taste-skill/LICENSE +21 -0
  57. package/taste-skill/README.md +212 -0
  58. package/taste-skill/assets/.gitkeep +0 -0
  59. package/taste-skill/assets/readme-banner.webp +0 -0
  60. package/taste-skill/assets/readme-buttons/btn-agent-skills.webp +0 -0
  61. package/taste-skill/assets/readme-buttons/btn-changelog.webp +0 -0
  62. package/taste-skill/assets/readme-buttons/btn-mit.webp +0 -0
  63. package/taste-skill/assets/readme-buttons/btn-site.webp +0 -0
  64. package/taste-skill/assets/readme-buttons/btn-tools.webp +0 -0
  65. package/taste-skill/assets/readme-cta-tasteskill.svg +5 -0
  66. package/taste-skill/assets/sponsors/animations-dev.webp +0 -0
  67. package/taste-skill/assets/sponsors/emil-animations-dev.webp +0 -0
  68. package/taste-skill/assets/taste-skill-logo.png +0 -0
  69. package/taste-skill/assets/taste-skill-logo.webp +0 -0
  70. package/taste-skill/assets/vercel-oss-program-badge.svg +44 -0
  71. package/taste-skill/examples/floria-bottom.webp +0 -0
  72. package/taste-skill/examples/floria-full.webp +0 -0
  73. package/taste-skill/examples/floria-top.webp +0 -0
  74. package/taste-skill/research/README.md +8 -0
  75. package/taste-skill/research/laziness/README.md +25 -0
  76. package/taste-skill/research/laziness/findings/empirical-results.md +58 -0
  77. package/taste-skill/research/laziness/findings/references.md +20 -0
  78. package/taste-skill/research/laziness/remediation/architectural-patterns.md +55 -0
  79. package/taste-skill/research/laziness/remediation/parameter-tuning.md +44 -0
  80. package/taste-skill/research/laziness/remediation/prompt-engineering.md +52 -0
  81. package/taste-skill/research/laziness/remediation/reference-prompts.md +79 -0
  82. package/taste-skill/research/laziness/root-causes/cognitive-shortcuts.md +23 -0
  83. package/taste-skill/research/laziness/root-causes/output-limits.md +39 -0
  84. package/taste-skill/research/laziness/root-causes/rlhf-and-compute.md +27 -0
  85. package/taste-skill/research/laziness/root-causes/training-data-bias.md +28 -0
  86. package/taste-skill/scripts/build-emil-sponsor-row.mjs +41 -0
  87. package/taste-skill/scripts/convert-readme-assets-webp.mjs +142 -0
  88. package/taste-skill/scripts/process-readme-buttons.mjs +108 -0
  89. package/taste-skill/scripts/process-sponsor-badge.mjs +83 -0
  90. package/taste-skill/skill.sh +25 -0
  91. package/taste-skill/skills/brandkit/SKILL.md +798 -0
  92. package/taste-skill/skills/brutalist-skill/SKILL.md +92 -0
  93. package/taste-skill/skills/gpt-tasteskill/SKILL.md +74 -0
  94. package/taste-skill/skills/image-to-code-skill/SKILL.md +1228 -0
  95. package/taste-skill/skills/imagegen-frontend-mobile/SKILL.md +1465 -0
  96. package/taste-skill/skills/imagegen-frontend-web/SKILL.md +987 -0
  97. package/taste-skill/skills/llms.txt +13 -0
  98. package/taste-skill/skills/minimalist-skill/SKILL.md +85 -0
  99. package/taste-skill/skills/output-skill/SKILL.md +49 -0
  100. package/taste-skill/skills/redesign-skill/SKILL.md +178 -0
  101. package/taste-skill/skills/soft-skill/SKILL.md +98 -0
  102. package/taste-skill/skills/stitch-skill/DESIGN.md +121 -0
  103. package/taste-skill/skills/stitch-skill/SKILL.md +184 -0
  104. package/taste-skill/skills/taste-skill/SKILL.md +1206 -0
  105. package/taste-skill/skills/taste-skill-v1/SKILL.md +226 -0
  106. package/tests/behavior-conformance.test.js +151 -0
  107. package/_template/SKILL.md +0 -154
  108. package/tests/spec-compliance.test.js +0 -193
@@ -0,0 +1,130 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+ const skillsDir = path.join(__dirname, 'skills');
4
+
5
+ function convertToBSF(content, name) {
6
+ // Extract Frontmatter
7
+ const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
8
+ const fm = fmMatch ? fmMatch[1] : '';
9
+
10
+ // Create v6 Frontmatter
11
+ let newFm = '---\n';
12
+ newFm += fm.split('\n').filter(line => {
13
+ return !line.startsWith('behavior:') &&
14
+ !line.startsWith('intent:') &&
15
+ !line.startsWith('priority:') &&
16
+ !line.startsWith('trigger:') &&
17
+ !line.startsWith('inputs:') &&
18
+ !line.startsWith('outputs:') &&
19
+ !line.startsWith('allowed_tools:') &&
20
+ !line.startsWith('pipeline:');
21
+ }).join('\n');
22
+ newFm += '\n---';
23
+
24
+ const missionMatch = content.match(/## ?? Mission \(Scope\)\n([\s\S]*?)(?=\n## |\n---|$)/);
25
+ const missionText = missionMatch ? missionMatch[1].trim() : 'Define mission here';
26
+
27
+ const bsf = \\
28
+
29
+ # ?? Behavior Specification: \
30
+
31
+ ## 1. Behavior (�?nh danh H�nh vi)
32
+ \\\yaml
33
+ Mission: "Th?c thi nhi?m v? c?t l�i theo chu?n v6."
34
+ Authority: "�u?c quy?n y�u c?u th�m th�ng tin n?u thi?u."
35
+ Responsibility: "B?o d?m ch?t lu?ng d?u ra."
36
+ Limitation: "Kh�ng vi ph?m Invariants c?a h? th?ng."
37
+ \\\
38
+
39
+ ## 2. Contracts (H?p d?ng)
40
+
41
+ ### 2.1. Capability Contract
42
+ \\\yaml
43
+ Can:
44
+ - read_code
45
+ - execute_tests
46
+ Must:
47
+ - verify_assumptions_before_coding
48
+ Cannot:
49
+ - execute_destructive_commands
50
+ \\\
51
+
52
+ ### 2.2. Output Contract
53
+ \\\yaml
54
+ Artifacts:
55
+ - summary_report
56
+ Completion: "Artifacts generated & Quality Gates passed."
57
+ \\\
58
+
59
+ ## 3. Policies (Ch�nh s�ch)
60
+
61
+ ### 3.1. Context Policy
62
+ \\\yaml
63
+ Scope: current_repo
64
+ Priority:
65
+ 1: Project Docs
66
+ 2: Current Conversation
67
+ Trust: "official docs > code > assumptions"
68
+ Fallback: ask_user
69
+ \\\
70
+
71
+ ### 3.2. Reasoning Boundary
72
+ \\\yaml
73
+ May infer: "Bi?n s? c?c b?"
74
+ Must verify: "Logic nghi?p v?"
75
+ Must ask: "Y�u c?u m?p m?"
76
+ Must refuse: "R?i ro b?o m?t"
77
+ \\\
78
+
79
+ ### 3.3. Decision Policy
80
+ \\\yaml
81
+ Priority:
82
+ 1: correctness
83
+ 2: safety
84
+ 3: maintainability
85
+ \\\
86
+
87
+ ### 3.4. Evidence Policy
88
+ \\\yaml
89
+ Accept: [logs, unit tests]
90
+ Prefer: [official vendor docs]
91
+ Reject: [guesswork]
92
+ \\\
93
+
94
+ ### 3.5. Escalation Policy
95
+ \\\yaml
96
+ Warning: "Thay d?i c?u tr�c"
97
+ Confirmation: "X�a file"
98
+ Stop: "L?i Permission"
99
+ \\\
100
+
101
+ ## 4. Protocol (T�y ch?n)
102
+
103
+ \\\yaml
104
+ States:
105
+ - collect_context
106
+ - execute
107
+
108
+ Transitions:
109
+ collect_context:
110
+ if context_missing: -> Stop
111
+ else: -> execute
112
+ execute: -> Done
113
+ \\\
114
+ \;
115
+ return bsf.replace(/\n\n\n/g, '\n\n');
116
+ }
117
+
118
+ fs.readdirSync(skillsDir).forEach(dir => {
119
+ const fullPath = path.join(skillsDir, dir);
120
+ if (fs.statSync(fullPath).isDirectory() && !dir.startsWith('_archive')) {
121
+ const skillPath = path.join(fullPath, 'SKILL.md');
122
+ if (fs.existsSync(skillPath)) {
123
+ if (dir === 'qk-bug-resolution') return; // already done
124
+ const content = fs.readFileSync(skillPath, 'utf8');
125
+ const newContent = convertToBSF(content, dir);
126
+ fs.writeFileSync(skillPath, newContent);
127
+ console.log('Converted ' + dir);
128
+ }
129
+ }
130
+ });
package/migrate.js ADDED
@@ -0,0 +1,147 @@
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 ADDED
@@ -0,0 +1,133 @@
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)
@@ -0,0 +1,96 @@
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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ai-developer-skill-os",
3
- "version": "3.1.5",
4
- "description": "Multi-agent skill package cho AI coding agents (Claude, Cursor, Windsurf, Antigravity) với 23 skills chuyên nghiệp.",
3
+ "version": "6.0.0-rc1",
4
+ "description": "Behavior Specification Format Framework, AI coding agents (Claude, Cursor, Windsurf, Antigravity) với 23 skills chuyên nghiệp.",
5
5
  "main": "bin/install.js",
6
6
  "bin": {
7
7
  "ai-developer-skill-os": "bin/install.js",
@@ -1,47 +1,35 @@
1
1
  ---
2
2
  name: qk-access-policy
3
- version: 3.1.5
4
- updated: 2026-07-02
5
- description: Quản lý RBAC, ABAC và các ranh giới bảo mật.
6
3
  category: security
7
- behavior: static-analysis
8
- intent: review-code
9
- priority: high
10
- tags: [security, rbac, auth, permissions]
11
- platforms: [claude-code, cursor, windsurf, gemini-cli]
12
- trigger: User asks to add roles, restrict access, or implement authentication logic.
13
- inputs: [Auth requirements, RBAC Matrix]
14
- outputs: [Access control logic, Middleware]
15
- allowed_tools: [grep_search, run_command, write_to_file]
16
- pipeline: [analyze, implement, engineering-standard, validate, complete]
4
+ version: 6.0.0
17
5
  ---
18
6
 
19
- # 🛠️ qk-access-policy - Standard Operating Procedure
20
-
21
- > **Goal:** "Bảo vệ cổng" (Security Guard). Xác định xem người dùng có đủ thẩm quyền để truy cập vào một Component UI hoặc một Endpoint API hay không.
22
-
23
- ## 🔄 1. Chain of Thought (SOP)
24
-
25
- 1. **Analyze (Role Assessment):**
26
- - Identify the user roles (Guest, User, Admin, SuperAdmin).
27
- 2. **Implement (Boundary Definition):**
28
- - Implement UI Guards (e.g., hiding a Delete button).
29
- - Implement API Middleware (e.g., blocking the `/api/delete` endpoint).
30
- 3. **Validate (Least Privilege Check):**
31
- - Ensure you didn't grant broad access by default.
32
-
33
- ## 🛡️ 2. Constraints & Rules
34
-
35
- - **Full Stack Protection:** Never hide UI elements without also securing the corresponding backend API.
36
-
37
- ## 🤝 3. Handoff Pipeline
38
-
39
- 1. `validate`: Trigger `qk-validation-gate` to check for security flaws.
40
- 2. `complete`: Generate the Access Control Report.
41
-
42
- ## 📝 4. Output Format
43
-
44
- Vui lòng trả kết quả bằng Tiếng Việt.
45
-
46
- - **Tóm tắt (Summary):** Các role vừa được setup.
47
- - **Chi tiết (Changes):** UI và API nào đã được bảo vệ.
7
+ # qk-access-policy
8
+
9
+ ## Scope
10
+ - Security boundaries and policies (Govern)
11
+
12
+ ## Constraints
13
+ ```yaml
14
+ must:
15
+ - Enforce access controls at API level
16
+ - Check security rules
17
+ must_not:
18
+ - Rely on UI-only security
19
+ ```
20
+
21
+ ## Policies
22
+ ```yaml
23
+ prefer:
24
+ - Deny-by-default
25
+ ```
26
+
27
+ ## Escalation
28
+ ```yaml
29
+ stop:
30
+ - Policy is missing or ambiguous
31
+ ```
32
+
33
+ ## Output
34
+ - Policy enforcement decision
35
+ ```
@@ -1,48 +1,37 @@
1
1
  ---
2
2
  name: qk-ai-builder
3
- version: 3.1.5
4
- updated: 2026-07-02
5
- description: Thiết kế AI Logic, Prompts, RAG pipelines, và các Agents.
6
3
  category: ai
7
- behavior: development
8
- intent: implement-feature
9
- priority: medium
10
- tags: [ai, llm, prompt-engineering, rag, agents]
11
- platforms: [claude-code, cursor, windsurf, gemini-cli]
12
- trigger: User asks to build a chatbot, add AI features, or write prompts.
13
- inputs: [AI Requirements]
14
- outputs: [AI Logic, Prompts, RAG setup]
15
- allowed_tools: [run_command, write_to_file]
16
- pipeline: [analyze, design, implement, validate, complete]
4
+ version: 6.0.0
17
5
  ---
18
6
 
19
- # 🛠️ qk-ai-builder - Standard Operating Procedure
20
-
21
- > **Goal:** "AI Engineer". Xây dựng các tính năng thông minh bằng LLM (Chatbot, RAG pipeline, Agent workflows).
22
-
23
- ## 🔄 1. Chain of Thought (SOP)
24
-
25
- 1. **Analyze (Task Breakdown):**
26
- - Determine the AI use case (Classification, Generation, Chat, Search).
27
- 2. **Design (Prompt Engineering):**
28
- - Write clear System Prompts. Treat prompts like code (use variables, constraints).
29
- 3. **Implement (Integration):**
30
- - Use the appropriate SDK (LangChain, OpenAI SDK, Vercel AI).
31
- 4. **Validate (Safety Check):**
32
- - Ensure API keys are not hardcoded.
33
-
34
- ## 🛡️ 2. Constraints & Rules
35
-
36
- - **JSON Parsing:** Always enforce JSON outputs if the AI response is consumed by the app, and handle parse errors.
37
-
38
- ## 🤝 3. Handoff Pipeline
39
-
40
- 1. `validate`: Send to validation gate.
41
- 2. `complete`: Output the AI Integration Report.
42
-
43
- ## 📝 4. Output Format
44
-
45
- Vui lòng trả kết quả bằng Tiếng Việt.
46
-
47
- - **Tóm tắt (Summary):** Luồng AI đã thiết lập.
48
- - **Chi tiết (Changes):** Prompt và logic gọi API.
7
+ # qk-ai-builder
8
+
9
+ ## Scope
10
+ - AI logic, prompts, RAG pipelines, and Agents (Plan & Execute)
11
+
12
+ ## Constraints
13
+ ```yaml
14
+ must:
15
+ - Validate prompt changes against actual model outputs
16
+ - Handle API rate limits and failures gracefully
17
+ must_not:
18
+ - Use LLMs for deterministic logic (e.g. math, exact matching)
19
+ - Fabricate non-existent models or APIs
20
+ ```
21
+
22
+ ## Policies
23
+ ```yaml
24
+ prefer:
25
+ - System prompts over user prompts for constraints
26
+ - Few-shot examples over complex instructions
27
+ ```
28
+
29
+ ## Escalation
30
+ ```yaml
31
+ stop:
32
+ - Model context window limits are exceeded
33
+ ```
34
+
35
+ ## Output
36
+ - Prompts, pipelines, or Agent configuration
37
+ ```