skills.test.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { describe, expect, it } from 'bun:test';
  2. import { getSkillPermissionsForAgent } from './skills';
  3. describe('skills permissions', () => {
  4. it('should allow all skills for orchestrator by default', () => {
  5. const permissions = getSkillPermissionsForAgent('orchestrator');
  6. expect(permissions['*']).toBe('allow');
  7. });
  8. it('should deny all skills for other agents by default', () => {
  9. const permissions = getSkillPermissionsForAgent('designer');
  10. expect(permissions['*']).toBe('deny');
  11. });
  12. it('should allow bundled skills for specific agents', () => {
  13. // Designer should only inherit the default non-orchestrator deny rule
  14. const designerPerms = getSkillPermissionsForAgent('designer');
  15. expect(Object.keys(designerPerms)).toEqual(['*']);
  16. // Oracle should have simplify allowed by default
  17. const oraclePerms = getSkillPermissionsForAgent('oracle');
  18. expect(oraclePerms.simplify).toBe('allow');
  19. const orchestratorPerms = getSkillPermissionsForAgent('orchestrator');
  20. expect(orchestratorPerms.clonedeps).toBe('allow');
  21. expect(orchestratorPerms.deepwork).toBe('allow');
  22. expect(orchestratorPerms['oh-my-opencode-slim']).toBe('allow');
  23. });
  24. it('should honor explicit skill list overrides', () => {
  25. // Override with empty list
  26. const emptyPerms = getSkillPermissionsForAgent('orchestrator', []);
  27. expect(emptyPerms['*']).toBe('deny');
  28. expect(Object.keys(emptyPerms).length).toBe(1);
  29. // Override with specific list
  30. const specificPerms = getSkillPermissionsForAgent('designer', [
  31. 'my-skill',
  32. '!bad-skill',
  33. ]);
  34. expect(specificPerms['*']).toBe('deny');
  35. expect(specificPerms['my-skill']).toBe('allow');
  36. expect(specificPerms['bad-skill']).toBe('deny');
  37. });
  38. it('should honor wildcard in explicit list', () => {
  39. const wildcardPerms = getSkillPermissionsForAgent('designer', ['*']);
  40. expect(wildcardPerms['*']).toBe('allow');
  41. });
  42. });