/ skills / bundled / index.ts
index.ts
 1  import { feature } from 'bun:bundle'
 2  import { shouldAutoEnableClaudeInChrome } from 'src/utils/claudeInChrome/setup.js'
 3  import { registerBatchSkill } from './batch.js'
 4  import { registerClaudeInChromeSkill } from './claudeInChrome.js'
 5  import { registerDebugSkill } from './debug.js'
 6  import { registerKeybindingsSkill } from './keybindings.js'
 7  import { registerLoremIpsumSkill } from './loremIpsum.js'
 8  import { registerRememberSkill } from './remember.js'
 9  import { registerSimplifySkill } from './simplify.js'
10  import { registerSkillifySkill } from './skillify.js'
11  import { registerStuckSkill } from './stuck.js'
12  import { registerUpdateConfigSkill } from './updateConfig.js'
13  import { registerVerifySkill } from './verify.js'
14  
15  /**
16   * Initialize all bundled skills.
17   * Called at startup to register skills that ship with the CLI.
18   *
19   * To add a new bundled skill:
20   * 1. Create a new file in src/skills/bundled/ (e.g., myskill.ts)
21   * 2. Export a register function that calls registerBundledSkill()
22   * 3. Import and call that function here
23   */
24  export function initBundledSkills(): void {
25    registerUpdateConfigSkill()
26    registerKeybindingsSkill()
27    registerVerifySkill()
28    registerDebugSkill()
29    registerLoremIpsumSkill()
30    registerSkillifySkill()
31    registerRememberSkill()
32    registerSimplifySkill()
33    registerBatchSkill()
34    registerStuckSkill()
35    if (feature('KAIROS') || feature('KAIROS_DREAM')) {
36      /* eslint-disable @typescript-eslint/no-require-imports */
37      const { registerDreamSkill } = require('./dream.js')
38      /* eslint-enable @typescript-eslint/no-require-imports */
39      registerDreamSkill()
40    }
41    if (feature('REVIEW_ARTIFACT')) {
42      /* eslint-disable @typescript-eslint/no-require-imports */
43      const { registerHunterSkill } = require('./hunter.js')
44      /* eslint-enable @typescript-eslint/no-require-imports */
45      registerHunterSkill()
46    }
47    if (feature('AGENT_TRIGGERS')) {
48      /* eslint-disable @typescript-eslint/no-require-imports */
49      const { registerLoopSkill } = require('./loop.js')
50      /* eslint-enable @typescript-eslint/no-require-imports */
51      // /loop's isEnabled delegates to isKairosCronEnabled() — same lazy
52      // per-invocation pattern as the cron tools. Registered unconditionally;
53      // the skill's own isEnabled callback decides visibility.
54      registerLoopSkill()
55    }
56    if (feature('AGENT_TRIGGERS_REMOTE')) {
57      /* eslint-disable @typescript-eslint/no-require-imports */
58      const {
59        registerScheduleRemoteAgentsSkill,
60      } = require('./scheduleRemoteAgents.js')
61      /* eslint-enable @typescript-eslint/no-require-imports */
62      registerScheduleRemoteAgentsSkill()
63    }
64    if (feature('BUILDING_CLAUDE_APPS')) {
65      /* eslint-disable @typescript-eslint/no-require-imports */
66      const { registerClaudeApiSkill } = require('./claudeApi.js')
67      /* eslint-enable @typescript-eslint/no-require-imports */
68      registerClaudeApiSkill()
69    }
70    if (shouldAutoEnableClaudeInChrome()) {
71      registerClaudeInChromeSkill()
72    }
73    if (feature('RUN_SKILL_GENERATOR')) {
74      /* eslint-disable @typescript-eslint/no-require-imports */
75      const { registerRunSkillGeneratorSkill } = require('./runSkillGenerator.js')
76      /* eslint-enable @typescript-eslint/no-require-imports */
77      registerRunSkillGeneratorSkill()
78    }
79  }