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
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "user_payload_001",
|
|
3
|
+
"name": "John Doe",
|
|
4
|
+
"email": "john@example.com",
|
|
5
|
+
"role": "admin",
|
|
6
|
+
"created_at": "2026-01-15T08:00:00Z",
|
|
7
|
+
"profile": {
|
|
8
|
+
"avatar": "https://example.com/avatar.jpg",
|
|
9
|
+
"bio": "Software engineer"
|
|
10
|
+
},
|
|
11
|
+
"permissions": ["read", "write", "delete"]
|
|
12
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
scenario_id: fe-api-integration-null-fields
|
|
2
|
+
description: "Ensure qk-fe-api-integration handles null fields gracefully without crashing or hallucinating"
|
|
3
|
+
expected_behavior: qk-fe-api-integration
|
|
4
|
+
|
|
5
|
+
given:
|
|
6
|
+
- skill: qk-fe-api-integration
|
|
7
|
+
- fixture: specs/fixtures/user-payload.json
|
|
8
|
+
- context: Project uses Axios wrapper at src/api/axiosInstance.ts
|
|
9
|
+
|
|
10
|
+
when:
|
|
11
|
+
- Parse JSON payload with nullable fields (profile, avatar)
|
|
12
|
+
- Generate TypeScript interfaces with optional (?:) markers
|
|
13
|
+
- Implement service layer with error boundary
|
|
14
|
+
|
|
15
|
+
then:
|
|
16
|
+
- No hallucinated fields outside the provided JSON
|
|
17
|
+
- Nullable fields are marked as optional in generated types
|
|
18
|
+
- Loading, Success, and Error states are all implemented
|
|
19
|
+
- No hardcoded URLs in generated component code
|
package/temp_fix.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
let content = fs.readFileSync('bin/install.js', 'utf8');
|
|
3
|
+
|
|
4
|
+
const replacement = \// Parse command line arguments for CI/CD automation
|
|
5
|
+
const args = process.argv.slice(2);
|
|
6
|
+
let autoIde = null;
|
|
7
|
+
let autoScope = null;
|
|
8
|
+
|
|
9
|
+
for (let i = 0; i < args.length; i++) {
|
|
10
|
+
if (args[i].startsWith('--ide=')) {
|
|
11
|
+
autoIde = args[i].split('=')[1];
|
|
12
|
+
}
|
|
13
|
+
if (args[i].startsWith('--scope=')) {
|
|
14
|
+
autoScope = args[i].split('=')[1];
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function runInstallation(ideChoice, scopeChoice) {
|
|
19
|
+
const isGlobal = scopeChoice === '1';\;
|
|
20
|
+
|
|
21
|
+
content = content.replace(/rl\.question\\(questionIde, \\(ideChoice\\) => \\{[\\s\\S]*?const isGlobal = scopeChoice === '1';/, replacement);
|
|
22
|
+
|
|
23
|
+
const endReplacement = \ } catch (error) {
|
|
24
|
+
console.error('? C� l?i x?y ra trong qu� tr�nh c�i d?t:', error.message);
|
|
25
|
+
} finally {
|
|
26
|
+
if (rl) rl.close();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (autoIde && autoScope) {
|
|
31
|
+
console.log('\\n?? Running in non-interactive mode with IDE=' + autoIde + ', Scope=' + autoScope);
|
|
32
|
+
runInstallation(autoIde, autoScope);
|
|
33
|
+
if (rl) rl.close();
|
|
34
|
+
} else {
|
|
35
|
+
rl.question(questionIde, (ideChoice) => {
|
|
36
|
+
if (ideChoice === '0') {
|
|
37
|
+
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.');
|
|
38
|
+
rl.close();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (!['1', '2', '3', '4', '5', '6', '7'].includes(ideChoice)) {
|
|
43
|
+
console.log('? L?a ch?n kh�ng h?p l?. Vui l�ng ch?y l?i script.');
|
|
44
|
+
rl.close();
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
rl.question(questionScope, (scopeChoice) => {
|
|
49
|
+
if (!['1', '2'].includes(scopeChoice)) {
|
|
50
|
+
console.log('? L?a ch?n kh�ng h?p l?. M?c d?nh s? c�i Global.');
|
|
51
|
+
scopeChoice = '1';
|
|
52
|
+
}
|
|
53
|
+
runInstallation(ideChoice, scopeChoice);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
}\;
|
|
57
|
+
|
|
58
|
+
content = content.replace(/ \\} catch \\(error\\) \\{\\s*console\\.error\\('? C� l?i x?y ra trong qu� tr�nh c�i d?t:', error\\.message\\);\\s*\\} finally \\{\\s*rl\\.close\\(\\);\\s*\\}\\s*\\}\\);\\s*\\}\\);/, endReplacement);
|
|
59
|
+
|
|
60
|
+
fs.writeFileSync('bin/install.js', content);
|
|
61
|
+
console.log('Done');
|
package/tests/registry.test.js
CHANGED
|
@@ -66,7 +66,7 @@ describe('Skill Registry Integrity', () => {
|
|
|
66
66
|
|
|
67
67
|
it('should have correct platforms (no invalid IDE names)', () => {
|
|
68
68
|
const registry = JSON.parse(fs.readFileSync(registryPath, 'utf8'));
|
|
69
|
-
const validPlatforms = ['claude-code', 'cursor', 'windsurf', '
|
|
69
|
+
const validPlatforms = ['antigravity', 'claude-code', 'cursor', 'windsurf', 'kilo-code'];
|
|
70
70
|
registry.skills.forEach(skill => {
|
|
71
71
|
skill.platforms.forEach(p => {
|
|
72
72
|
expect(validPlatforms).toContain(p);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
|
|
3
|
+
const path = 'skills/_template/SKILL.md';
|
|
4
|
+
let content = fs.readFileSync(path, 'utf8');
|
|
5
|
+
|
|
6
|
+
const required_sections = [
|
|
7
|
+
'Goal',
|
|
8
|
+
'Context',
|
|
9
|
+
'Inputs',
|
|
10
|
+
'Chain of Thought',
|
|
11
|
+
'Constraints',
|
|
12
|
+
'Policies',
|
|
13
|
+
'Exit Codes',
|
|
14
|
+
'Confidence Model',
|
|
15
|
+
'Severity',
|
|
16
|
+
'Retry Policy',
|
|
17
|
+
'Escalation Rules'
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
let appends = "\\n";
|
|
21
|
+
for (const section of required_sections) {
|
|
22
|
+
if (!content.includes('## ' + section)) {
|
|
23
|
+
appends += '\\n## ' + section + '\\n[Placeholder for ' + section + ']\\n';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
content += appends;
|
|
28
|
+
fs.writeFileSync(path, content);
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: qk-policy-engine
|
|
3
|
-
category: security
|
|
4
|
-
version: 7.0.0
|
|
5
|
-
description: "Hệ thống đánh giá chính sách để đảm bảo các hành động an toàn và được ủy quyền."
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# qk-policy-engine
|
|
9
|
-
|
|
10
|
-
## Scope
|
|
11
|
-
- Security policies, authorization rules, and compliance (Evaluate)
|
|
12
|
-
|
|
13
|
-
## Verbs
|
|
14
|
-
- `[AUTHORIZE]`: Evaluate requests against the strict policy matrix.
|
|
15
|
-
|
|
16
|
-
## Constraints
|
|
17
|
-
```yaml
|
|
18
|
-
must:
|
|
19
|
-
- "Enforce Principle of Least Privilege (PoLP) on all operations"
|
|
20
|
-
- "Log all authorization failures for audit purposes"
|
|
21
|
-
must_not:
|
|
22
|
-
- "Bypass security checks for 'admin' or 'dev' accounts in production"
|
|
23
|
-
- "Hardcode plain-text secrets in policy rules"
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Policies
|
|
27
|
-
```yaml
|
|
28
|
-
prefer:
|
|
29
|
-
- "Explicit Deny by default"
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## Escalation
|
|
33
|
-
```yaml
|
|
34
|
-
stop:
|
|
35
|
-
- "Policy evaluation fails (Unauthorized Action)"
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Output
|
|
39
|
-
- Policy evaluation result (Allow/Deny) and audit trail.
|