@kitsy/coop
v2.3.0
Published
COOP command-line interface.
Maintainers
Readme
@kitsy/coop
CLI package for COOP.
Install globally:
npm i -g @kitsy/coop
coop --help
coop help-ai --format jsonInstall locally in a repo:
pnpm add -D @kitsy/coop
pnpm exec coop --helpFor AI-oriented command discovery:
coop help-ai
coop help-ai --format json
coop help-ai --format markdown
coop help-ai --selection --format markdown
coop help-ai --state-transitions --format json
coop help-ai --artifacts --format markdown
coop help-ai --post-execution --format markdown
coop help-ai --initial-prompt --strict --repo C:/path/to/repo --delivery MVP --command coop.cmd
coop help-ai --initial-prompt --rigour balanced --repo C:/path/to/repo --delivery MVP --command coop.cmd
coop config artifacts.dir docs/agent-artifactsAgent contract notes:
coop complete <id>/coop complete task <id>requires the task to already be inin_review.coop start <id>/coop start task <id>can resume a blocked task directly intoin_progresswhen the effective transition map allowsblocked -> in_progress.coop unblock <id>/coop unblock task <id>always lands ontodo; it does not restore the prior state.coop workflow transitions show|set|add|remove|resetis the primary CLI surface for workspace transition policy.- multi-step recovery auto-hops write a transition audit artifact; direct transitions do not.
- balanced initial prompts are the recommended default for normal implementation sessions.
- if an agent is unsure about selection, transitions, artifacts, or whether it should continue, it should call the matching focused
help-aitopic command instead of guessing. - strict initial prompts tell agents to stop after completing the selected task instead of auto-picking another one.
On Windows PowerShell, the global npm install may resolve coop to coop.ps1 first. If an agent or CI shell hits execution-policy issues, use coop.cmd explicitly.
Both entrypoints operate on the nearest parent .coop/ workspace. If no workspace log target exists, CLI errors fall back to ~/.coop/logs/cli.log or COOP_HOME/logs/cli.log.
COOP v2 stores project data under .coop/projects/<project.id>/... and keeps workspace selection in .coop/config.yml.
Command shape rule:
- When a command accepts an entity reference, the entity noun is optional. For example,
coop show PM-100andcoop show task PM-100are equivalent. - Commands without an entity reference, such as
coop next, remain task-first workflow surfaces.
Current implemented command families:
coopcoop init [--name <name>] [--id <id>] [--aliases <csv>] [--naming <template>] [--yes]coop project list|create|use|showcoop namingcoop naming preview <title> [--template <template>]coop naming token default show|set|clear <token> [value]coop create task ...coop create task --acceptance <csv> --tests-required <csv> --authority-ref <ref> --derived-ref <ref>coop create task --from-file <path> | --stdincoop create task --from <idea> --aicoop create idea --from-file <path> | --stdincoop refine idea <id> [--apply] [--input-file <path>] [--stdin]coop refine task <id> [--apply] [--input-file <path>] [--stdin]coop apply draft --from-file <path> | --stdincoop create idea ...coop create track ...coop create delivery ... [--commit] [--user <user>] [--force]coop next [--track <track>] [--delivery <delivery>]coop pick [id] [--track <track>] [--delivery <delivery>] [--claim] [--to <assignee>]coop start [id] [--claim] [--to <assignee>]coop review|complete|block|unblock|cancel|reopen <id>coop rename <id> <alias>coop workflow transitions show|set|add|remove|resetcoop assign task <id> --to <assignee> [--actor <actor>]coop list tasks|ideas|alias ...coop list tasks --completed|--todo|--blocked|--allcoop show task|idea ...coop transition task ... [--user <user>] [--force]coop graph validate|next|show|critical-path ...coop index status|rebuildcoop plan delivery <name>coop plan delivery <name> --monte-carlo [--iterations <n>]coop plan capacity <track>coop status [--today <date>]coop view kanbancoop view timeline --delivery <name>coop view velocity [--today <date>]coop view burndown --delivery <name> [--today <date>]coop view capacity [--today <date>]coop ui [--host <host>] [--port <port>] [--no-open]coop serve [--host <host>] [--port <port>] [--repo <path>]coop webhook github [--host <host>] [--port <port>] [--repo <path>]coop migrate --dry-run --to 2coop migrate workspace-layout --to v2 [--name <name>] [--id <id>] [--aliases <csv>] [--yes]coop alias ...coop list alias [pattern]coop config index.data yaml|jsoncoop config id.naming "<TYPE>-<TITLE16>-<SEQ>"coop config id.naming "<TYPE>-<TITLE24>"coop config project.name <name>coop config project.id <id>coop config project.aliases <csv>coop config artifacts.dir <path>coop config ai.provider mock|openai|anthropic|gemini|ollama|codex_cli|claude_cli|gemini_clicoop config ai.model <model-name>coop run task <id> [--step <step>] [--dry-run]
Known limitations:
extis still a placeholder for future phases.- Provider-backed AI is supported for
openai,anthropic,gemini, andollamavia.coop/projects/<project.id>/config.yml+ env vars. - CLI-backed AI is supported for
codex_cli,claude_cli, andgemini_clivia installed/authenticated local CLIs. - Authorization is advisory and config-driven (
.coop/projects/<project.id>/config.yml -> authorization). - Plugin runtime supports manifest triggers under
.coop/projects/<project.id>/plugins/*.yml(webhook + console +github_practions). coop uiis read-only and depends on the active project's.indexdata. The command rebuilds stale indexes before launch.coop initcreates.coop/.ignoreand.coop/.gitignoreso logs, tmp files, and index artifacts are not committed by default.- Semantic title-based IDs are the default. Use
coop namingto inspect token behavior and preview IDs before changingid.naming.
GitHub integration quick example:
github:
owner: kitsy
repo: coop
base_branch: main
token_env: GITHUB_TOKEN
webhook_secret_env: GITHUB_WEBHOOK_SECRET
merge_method: squashWith .coop/projects/<project.id>/plugins/github-pr.yml enabled:
coop transition task PM-101 in_reviewcreates or updates a PRcoop transition task PM-101 donemerges the linked PRcoop webhook github --port 8787receives GitHub review/merge webhooks and syncs task status
API server and cross-repo dependency quick example:
api:
host: 127.0.0.1
port: 3847
remotes:
platform-repo:
base_url: http://127.0.0.1:3848With cross-repo task references such as external:platform-repo/PM-200:
coop serve --port 3847exposes the local read-only API- remote dependencies resolve through the configured API base URL when reachable
- unreachable remotes are reported as external dependency risks
Workspace identity:
# .coop/projects/<project.id>/config.yml
project:
name: Payments Platform
id: payments-platform
aliases:
- pay
- ledger.masterThis identity is exposed through:
GET /api/meta- MCP
coop_workspace_info - MCP
coop://workspace
Provider config quick example:
ai:
provider: openai
model: gpt-5-mini
openai:
api_key_env: OPENAI_API_KEY