Skip to content

Audit your harness ​

Your harness is the setup around the coding agent: instructions, permissions, memory, reusable skills, subagents, hooks and plugins. cully harness reports what it can find and suggests a next step for each gap. It changes nothing.

sh
cully harness
cully harness --cwd /path/to/project

Read the setup audit ​

ComponentWhat Cully looks for
InstructionsProject or global CLAUDE.md and AGENTS.md, project .cursorrules or Cursor rules, and instruction files for other agents: GEMINI.md, Aider CONVENTIONS.md, .windsurfrules, .github/copilot-instructions.md and .openhands/microagents
GuardrailsClaude permission keys or Codex approval/sandbox keys
MemoryA Cully reference in supported Claude, Codex, Cursor or project MCP configuration
SkillsAgent skill directories, including project .claude, .codex, .cursor, .agents and .cully locations
SubagentsAgent definitions, or actual delegations measured in the agent's recent sessions
Hooks and scriptsSupported Claude, Codex or Cursor hook configuration keys
PluginsClaude plugin configuration or installed plugin directories

Detection combines supported agent configurations on this machine. A found file or key does not prove an integration is enabled, authenticated or delivering events. Check the panel’s observed MCP health separately. Plugins are optional; a gap is a prompt to review your setup, not a requirement to reach seven out of seven.

Run cully setup with your original options to refresh managed Cully integrations. Run cully workflow to install a starter private workflow skill. Review suggestions before making changes; the audit never installs anything.

Compare measured output ​

Cully also streams the recent local transcripts of the agent you use for the exact project: Claude Code (~/.claude/projects) or Codex (~/.codex/sessions, matched by the project directory). Cursor's CLI history is not read yet. It counts oversized tool results, their Bash and whole-file-read portions, and actual subagent calls. Results of roughly 2,000 estimated tokens or more count as oversized. Tokens are estimates based on output size, not billed usage.

sh
cully harness --days 7 --max 20
cully harness --all --days 30
cully harness --all --only personal
FlagDefaultPurpose
--cwd DIRCurrent directoryProject to audit; relative paths are resolved
--days N30Recent-file window; must be positive
--max N40Maximum newest transcript files per project; must be positive
--agent AGENTautoclaude or codex. auto follows CULLY_AGENT (set inside the Cully terminal), then the agent with the newest transcripts for this project
--dir DIRThe agent's own transcript folderAlternate local transcript root for that agent
--allOffMeasure all project folders and rank the top ten by oversized output
--only TEXTNo filterWith --all, include folder names containing this text

The sample uses file modification time and skips transcripts shorter than 20 nonempty lines or unreadable transcripts. Nested subagent transcripts are excluded to avoid counting the same work twice. --all measures projects separately before adding totals. Cursor transcript history is not included.

Use tokens per session as a baseline: change one setup component, do a comparable amount of work, then rerun. Different tasks and session lengths can change the number. A smaller result does not establish that a component caused savings. With no eligible sessions, Cully says nothing was measured.

In the terminal panel ​

The leftmost Harness column shows setup readiness, named gaps, recent output estimates, the model and pending verification. Active loops and nonzero errors also appear. Wide terminals place Session beside it, combining project, context, token counts, quota, Fast mode, Git changes and observed Cully activity; narrow terminals stack the two sections and shorten long gap lists to keep the panel bounded. Use the CLI for the complete audit and the advisor’s Tab view for full session instruments.

Setup checks refresh every 30 seconds. A background measurement samples up to 20 recent sessions of the running agent over 30 days, refreshed every five minutes, and names that agent: “no recent Codex sessions” in Codex, “not measured for Cursor yet” in Cursor. “Measuring…” means the first measurement is pending. These historical figures are not usage for the current session. Codex sessions are often much larger than Claude's because Codex reads files through the shell, so all its oversized output counts as Bash.

Transcript text stays local and is processed one line at a time. The panel keeps aggregate counts in memory, without saving or uploading source text. See privacy, the terminal and the advisor.

Built in the open. Apache 2.0 licensed.