Grix Pre Push Checks
askie/grix
Select and run the smallest sufficient validation set for Grix changes before push, review handoff, or completion.
Operate Vicoa from the terminal with the vicoa CLI — list and inspect agent sessions (and their transcripts) across machines, start/resume/stop sessions, manage the task backlog with projects and…
$ npx skills add vicoa-ai/vicoa --skill vicoa-cli -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install vicoa-ai/vicoa vicoa-cli --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/vicoa-ai/vicoa.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/vicoa-cli .claude/skills/vicoa-cli && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "vicoa-cli" agent skill from https://github.com/vicoa-ai/vicoa/tree/main/skills/vicoa-cli into .claude/skills/vicoa-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vicoa-cli", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/vicoa-ai/vicoa/tree/main/skills/vicoa-cliType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add vicoa-ai/vicoa --skill vicoa-cli -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install vicoa-ai/vicoa vicoa-cli --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vicoa-ai/vicoa.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/vicoa-cli .agents/skills/vicoa-cli && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "vicoa-cli" agent skill from https://github.com/vicoa-ai/vicoa/tree/main/skills/vicoa-cli into .agents/skills/vicoa-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vicoa-cli", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add vicoa-ai/vicoa --skill vicoa-cli -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install vicoa-ai/vicoa vicoa-cli --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vicoa-ai/vicoa.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/vicoa-cli .cursor/skills/vicoa-cli && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "vicoa-cli" agent skill from https://github.com/vicoa-ai/vicoa/tree/main/skills/vicoa-cli into .cursor/skills/vicoa-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vicoa-cli", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/vicoa-ai/vicoa.git --path skills/vicoa-cli--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add vicoa-ai/vicoa --skill vicoa-cli -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install vicoa-ai/vicoa vicoa-cli --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vicoa-ai/vicoa.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/vicoa-cli .gemini/skills/vicoa-cli && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "vicoa-cli" agent skill from https://github.com/vicoa-ai/vicoa/tree/main/skills/vicoa-cli into .gemini/skills/vicoa-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vicoa-cli", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install vicoa-ai/vicoa vicoa-cliInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add vicoa-ai/vicoa --skill vicoa-cli -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/vicoa-ai/vicoa.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/vicoa-cli .github/skills/vicoa-cli && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "vicoa-cli" agent skill from https://github.com/vicoa-ai/vicoa/tree/main/skills/vicoa-cli into .github/skills/vicoa-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vicoa-cli", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add vicoa-ai/vicoa --skill vicoa-cli -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install vicoa-ai/vicoa vicoa-cli --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vicoa-ai/vicoa.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/vicoa-cli .opencode/skills/vicoa-cli && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "vicoa-cli" agent skill from https://github.com/vicoa-ai/vicoa/tree/main/skills/vicoa-cli into .opencode/skills/vicoa-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vicoa-cli", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
vicoa-cliOperate Vicoa from the terminal with the vicoa CLI — list and inspect agent sessions (and their transcripts) across machines, start/resume/stop sessions, manage the task backlog with projects and…
Vicoa CLI is an agent skill from vicoa-ai/vicoa. Operate Vicoa from the terminal with the vicoa CLI — list and inspect agent sessions (and their transcripts) across machines, start/resume/stop sessions, manage the task backlog with projects and labels, share a session by link, and schedule automations. Use when the user asks to check or control their Vicoa sessions, machines, tasks, or scheduled automations, read a session transcript, or create/update/delete Vicoa tasks or automations from the command line.
Its SKILL.md is about 5.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `REFERENCE.md`).
It sits in Mobile. It works with Flutter, Next.js, Python and TypeScript. The repository describes itself as: Vicoa is the agentic IDE for running a team of coding agents from desktop, mobile, VPS. Open-source, self-hostable. The licence is AGPL-3.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit f78cc68. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
jqclaudeghnpmFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
agents.vicoa.aiFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
VICOA_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Vicoa CLI loads about 5.7k tokens when it runs. Until then it costs about 119 tokens; SKILL.md has 2,374 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from vicoa-ai/vicoa at commit f78cc68, republished under its AGPL-3.0 licence (© vicoa-ai). 2,374 words, ~5,688 tokens.
.claude/skills/vicoa-cli/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.The vicoa command lets a coding agent operate the user's Vicoa account on
their behalf: their agent sessions (across every machine), their task
backlog, and their scheduled automations.
Every management subcommand (session, task, project, label,
automation, and ls) takes --json for machine-parseable output — always
pass --json when you need to read a field programmatically, and parse it
rather than scraping the table.
session, task, project, label, and automation resolve the API key in
this order and never open a browser (they fail fast so an agent isn't
blocked):
--api-key <key> flagVICOA_API_KEY environment variable~/.vicoa/credentials.json (the write_key field)If none is found, or a call returns 401, tell the user to run vicoa --auth
(first-time browser sign-in) or vicoa --reauth (refresh an expired key) —
these open a browser, so never run them yourself on the user's behalf; ask
the user to. They save the key to ~/.vicoa/credentials.json.
Requests hit the agent-facing server https://agents.vicoa.ai by default. For a
self-hosted deployment, point the CLI at your own server with --base-url <url>
on any subcommand, or once for the shell with VICOA_API_URL (browser sign-in
follows VICOA_AUTH_URL).
Inspect before you mutate. The read verbs (vicoa ls, vicoa session ls/get, vicoa task ls/get/comments, vicoa project ls/get, vicoa label ls,
vicoa automation ls/get/runs) are safe and free — run them first to get the
exact id and current state. These verbs change real state or start real work, so
confirm intent before running them:
task create/update/delete/comment — edits the user's backlog. A comment is
visible to the user immediately in the web/mobile task detail. task update
takes several task refs and applies the same change to each, so a wrong filter
edits a lot at once. session update --task flips the linked task's status
to follow the session (a running session ⇒ in_progress, a finished one ⇒
done), but never over a status someone set: mark your task blocked with
task update and it stays blocked after the session ends.session share — mints a link that serves the session's transcript to
anyone who has the URL. Publishing a transcript is not reversible in the
"nobody saw it" sense; confirm first, and pass --audience authenticated when
the user means "a teammate" rather than "the internet". session unshare --all revokes every live link.automation create/update/delete — an enabled automation will fire on its
schedule and dispatch a real agent session. Create with --disabled if you
only want to stage it.vicoa / vicoa codex / vicoa daemon / vicoa headless / vicoa session start — start real processes and register sessions. session start spends
tokens on a machine that may not be the one you are on.vicoa stop [sessions|all|<id>] — kills live agents; don't stop sessions you
didn't start without confirming. Never stop a session as automatic cleanup
— including sessions you started this turn (e.g. a headless smoke-test or a
session you launched to demo something). Stop only when the user explicitly
asks. Otherwise leave it running; an idle session simply sits in
AWAITING_INPUT and costs nothing until continued.delete prompts [y/N]; run non-interactively without -y and it aborts
rather than guessing. Pass -y/--yes only when the user has confirmed.
| Goal | Command |
|---|---|
| What agents are running on this machine right now | vicoa ls |
| All the user's sessions (any machine, incl. finished) | vicoa session ls |
| Read a session's message transcript | vicoa session get <id> |
| Start / resume / stop an agent session here | vicoa, vicoa --resume, vicoa stop |
| Start a session on another machine | vicoa session start --machine <id|name> |
| Publish a transcript (e.g. to attach to a PR) | vicoa session share |
| The user's to-do backlog | vicoa task ... |
| The projects and labels tasks are filed under | vicoa project ls, vicoa label ls |
| A scheduled, auto-firing agent session | vicoa automation ... |
vicoa ls reads local OS processes; vicoa session ls reads the backend. Use
session ls for anything that isn't "processes alive on this box."
# Agents running on THIS machine (DAEMON + TUI sections)
vicoa ls
vicoa ls --json
# Every session the user owns, across machines and history
vicoa session ls # newest 50
vicoa session ls --active --limit 20 # only still-running
vicoa session ls --since 7d # started in the last week
vicoa session ls --since 2026-09-20 --until yesterday
vicoa session ls --rate-limited # only sessions blocked by a rate limit (adds a RESET column)
vicoa session ls --limit 50 --offset 50 # page back through history
vicoa session ls --json
# Inspect one session + its transcript (the full id `session ls` prints)
vicoa session get <SESSION_ID> # last 50 messages, clean chat view
vicoa session get <SESSION_ID> --all # full transcript
vicoa session get <SESSION_ID> --all --role user # only what the human asked for
vicoa session get <SESSION_ID> --full # + timestamps, emails, control msgs, tool payloads
vicoa session get <SESSION_ID> --json # {"instance": {...}, "messages": [...]}
# Rename a session / link it to a task (task status then follows the session)
vicoa session update <SESSION_ID> --title "Refactor auth"
vicoa session update <SESSION_ID> --task <TASK_UUID>
vicoa session update <SESSION_ID> --unlink-task
vicoa session update <SESSION_ID> --project VIC # file under a project (`none` = No project)
# Send input into a running session (delivered to the agent; flips it ACTIVE)
vicoa session message <SESSION_ID> "run the tests and fix failures"
vicoa session continue <SESSION_ID> # sugar: sends the literal "continue"--since / --until take a date (2026-09-20, local midnight), a datetime, an
age (30m / 24h / 7d / 2w), or today / yesterday, and filter on
started_at. A bare date on --until includes that whole day.
--rate-limited returns only sessions a time-window rate limit is currently
blocking; each carries rate_limited: true and rate_limit_resets_at (also the
RESET column / a field in --json). A session is blocked until that instant —
session continue before it just re-hits the wall. The flag clears itself once
the session runs a turn under the limit again. If the target machine is offline,
session message/continue fails (retry once it's back). When --rate-limited
runs inside an automation-spawned session, it hides that automation's own
sessions (so the auto-continue automation below can't flag-and-continue its own
runs) — a different automation's rate-limited runs, and a manual session ls,
still see everything.
Vicoa files a session under the folder it started in. If the session creates or switches to a git worktree mid-flight, re-file it or the app keeps showing (and resuming) it under the original checkout:
vicoa session update "$VICOA_AGENT_INSTANCE_ID" --worktree <branch><branch> is the branch checked out in the target worktree (pass the main
checkout's branch to move it back). It is resolved with local git, so run it on
the machine the session lives on. The agent keeps running where it is; only the
sidebar group and the next resume follow.
Locally, in this terminal:
vicoa # Claude Code (default agent)
vicoa codex # Codex
vicoa opencode # OpenCode
vicoa --agent amp # any other supported agent
vicoa --name "Fix CI" --task <TASK_UUID> # named, linked to a task
vicoa --resume <SESSION_ID> # resume a previous session
vicoa daemon # background daemon: accept remote/scheduled spawnsOr on any machine running a daemon — the CLI equivalent of the dashboard's "New Session":
vicoa session start --list-machines
vicoa session start --machine <id|name> --dir ~/code/app \
--agent claude --prompt "Triage the failing tests" --wait--dir is required — there is no default working directory. --machine
defaults to this host's daemon and accepts a full id or a
display-name/hostname substring. Every agent except amp can be spawned this
way; amp only runs from a local vicoa --agent amp.
session start does not inherit anything from you. --agent falls back to
claude and model / effort / permission-mode to that agent's defaults, however
the session running this command is configured. So a Codex session on high
reasoning that shells out to a bare vicoa session start silently gets a
default-model Claude.
Unless the user asked for something different, start the new session as a copy of this one — read your own config and pass it through:
CFG=$(vicoa session get "$VICOA_AGENT_INSTANCE_ID" --json --limit 1 \
| jq -r '.instance.session_config')
vicoa session start --dir "$PWD" \
--agent "$(jq -rn --argjson c "$CFG" '$c.agent')" \
--model "$(jq -rn --argjson c "$CFG" '$c.current_model // $c.model')" \
--effort "$(jq -rn --argjson c "$CFG" '$c.thinking_effort // $c.reasoning_effort // empty')" \
--permission-mode "$(jq -rn --argjson c "$CFG" '$c.permission_mode // empty')"Three things to get right when reading that payload:
session_config.agent (claude, codex). The sibling
agent_type_name is a display label — it reads claude code on most rows,
which is not a value --agent accepts.current_model over model. model is what the session was
spawned with; current_model is what it is running now, and the two diverge
the moment anyone switches model mid-session.--agent and let the rest default. A Claude
model slug handed to Codex is worse than no inheritance at all.Omit a flag whose value came back empty rather than passing an empty string.
--effort only applies to claude and codex; for other agents it's ignored with
a warning.
Stopping:
vicoa stop # stop the local background daemon (prompts)
vicoa stop sessions -y # stop all local agent sessions, no prompt
vicoa stop <SESSION_ID> # stop one session by its full id (from `vicoa ls`)vicoa session share # the session this runs in
vicoa session share <SESSION_ID> --expires 7 # public link, gone in a week
vicoa session share <SESSION_ID> --audience authenticated --show-branch
vicoa session share <SESSION_ID> --list # existing live links
vicoa session unshare <SESSION_ID> --all # revokeOn success share prints only the URL, so it drops straight into a
$(…) — gh pr comment 123 --body "Session: $(vicoa session share)". The link
is public by default and the owner's name is hidden unless --show-owner.
Re-running share reuses an equivalent live link rather than minting a second
one (--new forces a fresh one; --expires always mints a new link).
unshare with neither --link nor --all just lists the live links and
revokes nothing.
Statuses: backlog todo in_progress in_review done blocked cancelled
Priorities: urgent high medium low none
vicoa task ls # all tasks
vicoa task ls --status todo --priority high --json
vicoa task ls --project VIC --label bug # by project and label
vicoa task ls --project none # the unfiled ones
vicoa task get VIC-42 # full detail
vicoa task create "Fix the flaky login test"
vicoa task create "Ship pricing page" --priority high --status todo \
--project VIC --label design \
--description "Localize copy first" --due 2026-08-25
vicoa task update VIC-42 --status in_progress
vicoa task update VIC-42 --priority urgent --title "New title"
vicoa task update VIC-42 VIC-43 VIC-44 --status done # same change to each
vicoa task update VIC-42 --add-label regression # keeps existing labels
vicoa task delete VIC-42 -y # -y skips the confirm promptcreate defaults to status=backlog, priority=none, and No project unless
--project is given. update changes only the flags you pass. Moving a task
between projects reassigns its identifier (the CLI prints VIC-20 → VIC2-2).
Refer to a task by its identifier. VIC-42 — the thing shown in the KEY
column of task ls, in the task-detail header, and in what the user says out
loud — works everywhere a task reference is taken: the positional argument on
get/update/delete/comment/comments, and --parent. A full UUID still
works too. Prefer the identifier: it is the only handle you and the user both
have. Matching is case-insensitive.
Not every task has one: a task filed under No project has no identifier
(moving a task to none drops it), and so does a task created before
identifiers shipped. Both print — in the KEY column — use the UUID.
(vicoa --task and session update --task always want the UUID.)
vicoa project ls # KEY, NAME, ID — what --project accepts
vicoa project ls --include-archived
vicoa project get VIC
vicoa label ls # the names --label accepts
vicoa label create regression --color '#ef4444'--project takes a key (VIC), a name, an id, or none for No project.
Labels are one vocabulary per account, shared across projects — --label on
task ls is repeatable and every one must match; on task update, --label
sets the list while --add-label / --remove-label adjust it.
A task carries a comment thread (and a generated activity log). This is how an agent reports back on the task itself rather than only inside a transcript the user has to go find.
vicoa task comments VIC-42 # the thread; replies are indented
vicoa task comments VIC-42 --activity # also the status/field change log
vicoa task comment VIC-42 "Fixed — the flake was a missing await."
vicoa task comment VIC-42 - < report.md # body from stdin
vicoa task comment VIC-42 "Agreed" --reply-to <COMMENT_UUID>--reply-to a reply lands in the same thread
rather than nesting further, so a printed thread is never more than one indent.- for anything multi-line. Piping the body in beats fighting the
shell over quoting and newlines.VICOA_AGENT_INSTANCE_ID
is set), a comment posted from a session started off an agent profile is signed
by that agent; otherwise it is signed by the user whose key it is. Nothing to
pass.An automation is a saved prompt + agent/model + machine/folder that fires an agent session on a schedule. This is CRUD only — the server's scheduler does the firing, so there is no "run now."
vicoa automation ls
vicoa automation get <AUTOMATION_UUID>
vicoa automation runs <AUTOMATION_UUID> # run history
# Create: pass exactly one schedule + a session config (--agent, --session-config-json,
# or --agent-profile <NAME> to run a saved agent)
vicoa automation create "Nightly triage" \
--prompt "Triage new GitHub issues and label them" \
--agent claude --daily --time 22:00 --timezone America/New_York
vicoa automation create "Hourly build check" \
--prompt "Run the build and report failures" \
--agent codex --hourly --minute 15 # add --model <slug> to pin a model
# Auto-continue rate-limited sessions: a plain hourly automation whose prompt
# drives the CLI. No special automation type — the spawned agent does the work.
vicoa automation create "Continue rate-limited sessions" \
--agent claude --hourly \
--prompt "Run \`vicoa session ls --rate-limited --json\`. For each session \
whose rate_limit_resets_at is in the past, run \`vicoa session continue <id>\`. \
Skip any that are already active."
vicoa automation update <AUTOMATION_UUID> --disable # pause
vicoa automation update <AUTOMATION_UUID> --enable --prompt "New prompt"
vicoa automation delete <AUTOMATION_UUID> -yThe auto-continue automation runs on its fixed cadence (hourly), not a
precise wake at each session's reset — that's fine because --rate-limited is
indexed, so each run only fetches the handful of currently-blocked rows.
Schedules (choose one on create): --at <ISO8601> (once, UTC), --daily,
--hourly, --weekdays (Mon–Fri), --weekly 1,3,5 (0=Sun…6=Sat),
--frequency-json. Automations need a machine to run on — run vicoa daemon on
the target box first (it auto-registers and becomes the default), or pass
--machine-id.
Rarely what a question is about, but worth knowing they exist:
vicoa agent ls|add|rm — saved agent profiles (provider + model + config +
instructions) that session start --agent-profile, automation create/update --agent-profile and the dashboard reuse.vicoa provider — add and check the ACP coding agents this machine can run.vicoa plugin — install and manage local Vicoa plugins (themes, sidebar,
composer).vicoa worktree setup [path] — run a worktree's committed setup commands from
.vicoa/config.json (--dry-run to see them first). Useful when a worktree's
automatic setup failed or never ran.| Message / symptom | Fix |
|---|---|
Authentication failed … run vicoa --reauth (HTTP 401) | Key is invalid/expired — ask the user to run vicoa --reauth (opens a browser; you can't). |
No Vicoa API key found | Set VICOA_API_KEY, pass --api-key, or have the user run vicoa --auth. |
No machine to run on (automation create) | Run vicoa daemon on the target box first (it auto-registers), or pass --machine-id. |
--dir is required to start a session | session start has no default directory — pass --dir <PATH>; --list-machines / --list-models first if you need to pick. |
Daemon on <machine> looks offline (session start) | Start vicoa daemon there, or pass --allow-offline to queue the request until it reconnects. |
no project with key or name '…' / N projects are named '…' | --project matches a key, name, or id exactly — check vicoa project ls; pass the key or id when two projects share a name. |
no label named '…' | --label takes an existing name — vicoa label ls, or vicoa label create <name>. |
no session given and VICOA_AGENT_INSTANCE_ID is not set | session share/unshare default to the session they run inside; outside one, pass the session id. |
'<ref>' is not a session id | Pass the full session id from vicoa session ls; short prefixes are not accepted. |
404 on task get/update/delete | Use the VIC-42 identifier or the full UUID from the ID column. |
Nothing to update — pass at least one field | update is a PATCH; pass ≥1 flag (e.g. --status done). |
Aborted (pass --yes to delete non-interactively) | Re-run delete with -y (only after the user confirms). |
pass only one schedule (… are mutually exclusive) | automation create takes exactly one of --at/--daily/--hourly/--weekdays/--weekly/--frequency-json. |
| A verb or flag here doesn't exist | The installed CLI is older than this skill — vicoa --version, then npm i -g @vicoa/cli@latest. |
vicoa ls ≠ vicoa session ls. ls lists OS processes on this machine
only; session ls reads the backend (all machines + finished sessions).VIC-42 identifier.VIC-1 names a different task in a
different account, and a task that moves project is renumbered.--effort is claude/codex only (maps to thinking_effort /
reasoning_effort); for other agents use --session-config-json.automation update has no --agent flag — change the agent by replacing
the config wholesale with --session-config-json '{"agent":"…"}'.vicoa session start instead.session get hides noise by default (tool payloads, control messages,
timestamps). Add --tool-content / --control / --full when you need them;
a footer reports how much was hidden.--role filters after --limit. --limit counts both senders, so pair
--role with --all or you'll get fewer rows than you asked for.--json shapes differ. session ls is wrapped —
{items, total, limit, offset, has_more} — while task ls, project ls, and
label ls return the bare array. task update --json prints one object for
one ref and a list for several.--json pipe; 2>&1 puts
it back in and breaks jq.vicoa stop <prefix> stops every match. A prefix that hits more than one
session stops them all after a single confirmation — pass the full UUID when
you mean one. stop sessions --agent takes only claude, codex,
opencode, or amp.See REFERENCE.md for the complete flag tables (every session, task, project, label, and automation option; transcript verbosity flags; schedule details).
© vicoa-ai, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in skills/vicoa-cli of vicoa-ai/vicoa.
Open the folder on GitHubat commit f78cc68
Vicoa CLI next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Vicoa CLI this skillvicoa-ai/vicoa | 496 | — | ~5.7k | Automated safety check: Pass | AGPL-3.0 | |
| Grix Pre Push Checksaskie/grix | 153 | — | ~831 | Automated safety check: Pass | Custom licence | |
| jscpd Code Migration Trackerkucherenko/jscpd | 6.4k | — | ~5k | Automated safety check: Pass | MIT | |
| Engine Whats Newflutter/flutter | 179k | — | ~978 | Automated safety check: Pass | BSD-3-Clause | |
| Mobilerun Docs Referencedroidrun/mobilerun | 9.6k | — | ~943 | Automated safety check: Pass | MIT | |
| App Store Screenshots GeneratorParthJadhav/app-store-screenshots | 7.2k | — | ~14k | Automated safety check: Pass | MIT |
askie/grix
Select and run the smallest sufficient validation set for Grix changes before push, review handoff, or completion.
kucherenko/jscpd
Measures a code port between languages or frameworks with jscpd's function-level comparison, porting tests before code and tracking what is left unmatched.
flutter/flutter
Generates the "what's new" release summary and diff file for changes in the Flutter engine (//engine/src/flutter) between two releases (e.g., 3.47 vs 3.44).
droidrun/mobilerun
Answers questions about Mobilerun, the LLM-agent framework for automating Android and iOS devices, by pointing the agent to the right page of its v5 documentation.
ParthJadhav/app-store-screenshots
Scaffolds a Next.js editor for designing App Store and Google Play screenshots as ads and exporting them at every required size, for iOS, Mac and Android.
rounak/PhoneAgent
Control a connected iPhone, iOS simulator, Android emulator, or Android device from macOS through PhoneAgent's JSON-RPC bridge.
vicoa-ai/vicoa
Run the whole Vicoa stack (Postgres, backend, realtime server, web dashboard) from the current checkout and publish it at one public tunnel URL, so a branch can be reviewed from another machine or…
vicoa-ai/vicoa
Start a local app in the current user project, expose it through a tunnel, and return preview details in structured Markdown.
Categories
Operate Vicoa from the terminal with the vicoa CLI — list and inspect agent sessions (and their transcripts) across machines, start/resume/stop sessions, manage the task backlog with projects and…. Vicoa CLI is an agent skill from vicoa-ai/vicoa. Operate Vicoa from the terminal with the vicoa CLI — list and inspect agent sessions (and their transcripts) across machines, start/resume/stop sessions, manage the task backlog with projects and labels, share a session by link, and schedule automations.
Vicoa CLI fits situations like: the user asks to check; control their Vicoa sessions; scheduled automations; read a session transcript.
Run `npx skills add vicoa-ai/vicoa --skill vicoa-cli -a claude-code`. Or copy the skill folder (skills/vicoa-cli in vicoa-ai/vicoa) into .claude/skills/vicoa-cli in your project. Claude Code loads it when a task matches its description.
Run `npx skills add vicoa-ai/vicoa --skill vicoa-cli -a codex`. Or copy the skill folder (skills/vicoa-cli in vicoa-ai/vicoa) into .agents/skills/vicoa-cli in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add vicoa-ai/vicoa --skill vicoa-cli -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/vicoa-cli, .gemini/skills/vicoa-cli, .github/skills/vicoa-cli and .opencode/skills/vicoa-cli in your project.
Going by SKILL.md and its folder, Vicoa CLI needs the command-line tools its instructions call (jq, claude, gh and npm) and credentials named VICOA_API_KEY. Our summary lists: A credential in VICOA_API_KEY.
SKILL.md names 1 domain. In commands or code: agents.vicoa.ai; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Vicoa CLI is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.7k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Vicoa CLI: Grix Pre Push Checks (askie/grix, 153 stars), jscpd Code Migration Tracker (kucherenko/jscpd, 6.4k stars), Engine Whats New (flutter/flutter, 179k stars) and Mobilerun Docs Reference (droidrun/mobilerun, 9.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
vicoa-ai (a GitHub organization) maintains it in vicoa-ai/vicoa, which has 496 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 8, 2026.
Source: vicoa-ai/vicoa on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.