CLI Requirements

Which skills, agents, and hooks need the coding-friend-cli — and how to work without it.

Coding Friend ships as two separate npm packages: the plugin (coding-friend) and the CLI (coding-friend-cli). The plugin installs skills, agents, and hooks directly into Claude Code or Codex CLI — it is fully functional as a standalone install. The CLI (cf) is an optional companion that adds workspace setup commands, manages the memory MCP server, and hosts the learn-doc server. Installing the plugin without the CLI gives you all AI-powered workflows; the CLI unlocks faster indexed memory recall and additional tooling conveniences.

TL;DR

Zero skills, agents, or hooks hard-require the CLI today. All REQUIRED-tier counts are 0.

TierMeaningCount today
NONESkill / agent / hook works with zero CLI involvement.Skills: 9 · Agents: 11 · Hooks: 7
OPTIONALUses CLI-installed memory MCP for speed; falls back to grep + direct file writes when CLI is absent. Full functionality preserved.Skills: 12 · Agents: 1 · Hooks: 3
REQUIREDCannot function without CLI.0

What coding-friend-cli Provides

  • Workspace setup: cf init, cf install, cf uninstall, cf disable, cf enable, cf update
  • MCP servers: cf mcp, cf memory (subcommands: status, search, list, rm, start, stop, rebuild, init, config, mcp) — provides the coding-friend-memory MCP server backed by SQLite + markdown files
  • Learn server: cf learn host — serves learning docs as a website (HTTP server on localhost:3333)
  • Utilities: cf statusline, cf permission, cf guide

Per-Skill Table

SkillTierWithout CLI you lose...Manual workaround
cf-askOPTIONALFast indexed memory searchgrep -r '<query>' docs/memory/
cf-commitNONE
cf-designNONE
cf-fixOPTIONALFast indexed memory searchgrep -r '<query>' docs/memory/
cf-helpNONE
cf-learnOPTIONALFast indexed memory searchgrep -r '<query>' docs/memory/
cf-optimizeOPTIONALFast indexed memory searchgrep -r '<query>' docs/memory/
cf-planOPTIONALFast indexed memory searchgrep -r '<query>' docs/memory/
cf-rememberOPTIONALFast indexed memory searchgrep -r '<query>' docs/memory/
cf-researchOPTIONALFast indexed memory searchgrep -r '<query>' docs/memory/
cf-reviewOPTIONALFast indexed memory searchgrep -r '<query>' docs/memory/
cf-review-inOPTIONALFast indexed memory searchgrep -r '<query>' docs/memory/
cf-review-outNONE
cf-scanOPTIONALFast indexed memory searchgrep -r '<query>' docs/memory/
cf-sessionNONE
cf-shipNONE
cf-sys-debugOPTIONALFast indexed memory searchgrep -r '<query>' docs/memory/
cf-tddNONE
cf-teachNONE
cf-verificationNONE
cf-warmOPTIONALFast indexed memory searchgrep -r '<query>' docs/memory/

Per-Agent Table

AgentTier
cf-explorerOPTIONAL
cf-implementerNONE
cf-plannerNONE
cf-reviewerNONE
cf-reviewer-planNONE
cf-reviewer-qualityNONE
cf-reviewer-reducerNONE
cf-reviewer-rulesNONE
cf-reviewer-securityNONE
cf-reviewer-testsNONE
cf-writerNONE
cf-writer-deepNONE

Per-Hook Table

HookTierBehavior without CLI
agent-tracker.shNONETracks agent invocations via file-based logging — no CLI needed.
auto-approve.cjsNONEApproval filter — no CLI dependency.
memory-capture.shOPTIONALFires on PreCompact and attempts memory_store MCP call. If MCP is unavailable, the step is skipped silently — no failure, episode simply not captured.
privacy-block.shNONEContent safety filter — no CLI dependency.
rules-reminder.shNONELoads CLAUDE.md rules reminder via file read — no CLI needed.
scout-block.cjsNONEBlock filter — no CLI dependency.
session-init.shOPTIONALSources cf-paths.sh which references env vars set by cf init. Reads ~/.coding-friend/config.json if present. Fully functional when config file is absent — falls back to defaults.
session-log.shNONELogs session turns to /tmp — file-based only, no CLI needed.
statusline.shOPTIONALReads ~/.coding-friend/config.json for component visibility settings (created by cf config). When config is absent, all components render with defaults — fully functional.
task-tracker.shNONETracks task invocations via file-based logging — no CLI needed.

Working Without the CLI

All plugin workflows remain functional when coding-friend-cli is not installed. The differences are:

Memory search — Use grep instead of the indexed MCP server:

grep -r "<query>" docs/memory/

Memory writes — Edit docs/memory/*.md files directly. Follow the frontmatter format:

---
name: ...
type: feature|convention|decision|bug|infrastructure
---

# Title

Content goes here.

When you later install the CLI and run cf memory rebuild, existing files are re-indexed automatically.

/cf-learn doc viewer — Open docs/learn/*.md files directly in your editor. The learn-host server (cf learn host) provides an HTTP UI but is not required to read or write learning docs.

Statusline — Remains functional. When ~/.coding-friend/config.json is absent, all statusline components render with their default settings. Run cf config after installing the CLI to customize visibility.

PreCompact episode capturememory-capture.sh fires normally but skips the memory_store call when the MCP server is unavailable. Conversation compaction continues without interruption; the episode is simply not saved to the memory index.

Installing the CLI Later

npm i -g coding-friend-cli
cf init
cf memory init

Existing docs/memory/*.md files will be re-indexed automatically on the first run of cf memory rebuild (or cf memory init).

FAQ

Why are they separate packages? The plugin ships through the Claude Code marketplace and has its own release cycle. The CLI is a standalone npm tool that can be updated, versioned, and distributed independently. Keeping them separate lets users adopt incrementally — plugin first, CLI when needed.

Will my project memory work later if I install the CLI? Yes. The CLI re-indexes existing docs/memory/*.md files on the first run of cf memory rebuild (or cf memory init). No data is lost during the CLI-free period.

What if the cf command is broken? Skills degrade gracefully to grep-based search and direct file writes. You can keep working — none of the core AI workflows hard-require the CLI.

Do agents need the CLI? No agent hard-requires it. Eleven of twelve agents are NONE-tier (zero CLI involvement). cf-explorer is OPTIONAL — it uses memory_search as an exploration cache when available and falls back to full re-exploration when not.