Which harness is running
detectHarness() identifies 13 harnesses from the variables they set, and reports unknown
rather than guess.
In Claude Code, add the marketplace and install the plugin:
/plugin marketplace add cyber-uni/marketplace/plugin install cyber-agentkit@cyber-uniFor Cursor, Codex, and Copilot CLI, see Install.
To use it as a library instead:
npm install cyber-agentkitimport { detectHarness, skillsDirectories } from 'cyber-agentkit'
const { harness } = detectHarness() // 'claude-code', 'codex', …, or 'unknown'if (harness !== 'unknown') skillsDirectories(harness)The package depends on no other agent tool, so any of them can build on it. It also ships as the
cyber-agentkit command; see the
package overview.
Which harness is running
detectHarness() identifies 13 harnesses from the variables they set, and reports unknown
rather than guess.
Where policy lives
managedPolicyLocations() lists managed-policy files, MDM domains, registry keys, and
server-side sources.
Which plugins are present
pluginStorage(), enabledPlugins(), and installedPlugins() say where plugins live, which
are enabled, and which folder each one loads from.
How skills are named and found
skillInvocation() returns what a user types to run a plugin skill, and
skillsDirectories() where a harness reads skills from.
Which reference applies
loadReference() resolves a named document across the managed, project, user, and plugin
tiers, merging each override as its frontmatter asks.
Every answer rests on a vendor source recorded in
.research/harness-detection.
The package readme
documents each function.