Getting Started
This guide takes a skill file sitting on one of your machines and turns it into a hosted skill: private to you, current on every machine and agent you run, and shareable with a teammate in one command. Then it adds a hosted check and shows how to author a skill from scratch. For the concepts behind each step, see Overview.
If you would rather try Goodeye before making an account, skip to Running a public template, which needs no sign-in.
Step 1: Install the CLI
The CLI requires Python 3.12 or newer. Install it with any of the following:
uv tool install goodeye
# or
pipx install goodeye
# or
pip install goodeye
Once installed, the goodeye command is on your PATH. Confirm it:
goodeye --version
Tip: Update later with goodeye update.
Step 2: Sign in
Hosting skills of your own needs an account. At a machine with a browser:
goodeye register # new account
goodeye login # existing account
Either command opens a verification URL on the hosted sign-in page, where you
continue with Google or email and approve in the browser; credentials are saved
locally. Confirm with goodeye whoami.
Agents, CI, and headless terminals can authenticate non-interactively with an
email-code flow instead. See CLI for the register-verify /
login-verify steps, and Accounts and Billing for
creating a good_live_ API key for programmatic REST or MCP clients.
Step 3: Bring a skill you already have
If you keep agent skill files on disk, you already have what you need. A skill
file is a directory holding a SKILL.md plus optional siblings, which is exactly
what publish expects, so importing one is a single command:
goodeye skills publish ~/.claude/skills/high-signal-chart
SKILL.md becomes the hosted skill's body and the sibling files upload with it.
Front-matter keys Goodeye does not recognize are preserved verbatim. The command
prints the skill's name and new version number, its skill_id, and a
version_token you keep for the next update.
The same works for ~/.agents/skills/ and ~/.cursor/skills/, or any directory
in that shape. To bring over a library, run one publish per skill file. See
Importing a skill file from disk.
No skill files yet? Skip to Step 7 and author one, or fork a public template in Running a public template.
Confirm what landed:
goodeye skills list
Your skill is private from this moment. Nothing is public until you publish a template, which is a separate step covered in Templates.
Step 4: Sync it to every machine and agent
The hosted skill is now the source of truth. Point Goodeye at the directories your tools read, and it mirrors your skills into each one:
goodeye skills sync target add --preset claude # ~/.claude/skills
goodeye skills sync target add --preset agents # ~/.agents/skills (Codex reads here too)
goodeye skills sync target add --preset cursor # ~/.cursor/skills
Any other directory works too; pass a path instead of a preset. Then pull:
goodeye skills sync
Each target now holds <slug>/SKILL.md plus siblings for every skill you own.
Run the same two commands on your other machines and they all read the same
current version.
One case to know about on this first pull: the skill you published in Step 3 came from a directory that is now a sync target, so a copy of it is already sitting there. Goodeye did not write that copy, so it reports the skill as modified and leaves it alone rather than overwriting work it does not recognize. The hosted version is what you just published, so adopt it once:
goodeye skills sync pull --force <slug>
From then on it is tracked like everything else and updates on every pull. This applies only to skills already on disk before the target was added; anything you publish from elsewhere lands normally.
From here, editing the hosted skill is what updates everything. Change it once, and every machine and every agent picks it up. Now that you have a target, automatic sync is on, so this happens without you asking: after a command finishes, the CLI brings down new and updated skills in the background, no more than once an hour.
Automatic sync is conservative. It never overwrites your local edits, never
deletes skill files, and never pushes. A local conflict is reported rather than
clobbered. It is suppressed in CI, for machine-readable output, and during a
manual sync. Turn it off with goodeye skills sync auto off and it stays off,
however many targets you add later.
Edited a skill file on disk and want the hosted copy to match? Use
goodeye skills sync push. Check for drift at any time with
goodeye skills sync status. See
Syncing a bundle locally.
Step 5: Share it privately
Grant a named user or team access. Identify them by @handle, email address, or
UUID; a teammate who has not claimed a handle yet is reachable by email:
goodeye skills grant high-signal-chart @teammate view
Roles are view (fetch and run), edit (also save new versions), and
admin. The grantee's agent now runs your skill, and any semantic verifiers it
references travel with the grant at the same version, so their output is held to
the checks you wrote. When you improve the skill, they get the improvement on
their next pull. There is no copy of it to go stale.
Review and revoke the same way:
goodeye skills grants high-signal-chart
goodeye skills revoke-grant high-signal-chart @teammate
A grant reaches a person or a whole team. Your own headless machines need no grant: authenticated with your own API key, they already read every skill you own. See Teams for team-wide grants and invitations, and Sharing with grants for the full model.
Step 6: Add a hosted check
A skill says what to do. A verifier says whether the result is acceptable. Structural and functional checks live inline in the skill body and cost nothing to run. Interpretive checks (tone, factuality, chart quality) are semantic verifiers: deploy one once, and every skill that references it runs that exact version.
A semantic verifier is a JSON object holding a criterion and a couple of calibration examples:
goodeye verifiers deploy ./claims-cite-source.json
It prints a verifier_id, a version, and a version_token. Reference the id
from your skill body, and the agent runs the check on its own output and revises
until it passes. Because the verifier is hosted rather than pasted into the
skill, everyone you granted the skill to runs the same check at the same version.
Keep each verifier specific. "Every factual claim is backed by the provided source" is a verifier. "Is this good?" is not. See Verifiers for the payload shape, versioning, and the three check types.
Step 7: Author a skill from scratch
The best path is a guided design session. It works with you to design a skill and the verifiers that gate it, then saves the result when you approve it:
goodeye design
goodeye design prints a designer prompt; pipe it into your AI assistant
(goodeye design > design.md, or straight into your agent) and follow along.
Prefer to write it yourself? A skill is markdown with a short metadata header
(name and description are required; tags optional). Publish a file
directly, or pipe the body from stdin for agent-generated output so no
intermediate file is left behind:
goodeye skills publish ./high-signal-chart.md
# or, from stdin:
goodeye skills publish - \
--name high-signal-chart \
--description "Produce a publication-quality chart on a topic, gated by a design verifier." \
--tag data --tag viz <<'EOF'
# Body: find an authoritative dataset, draft chart variants, render the chart,
# then run the design verifier, revising until it passes. Inline structural and
# functional checks go here as fenced code blocks; reference semantic verifiers
# by their id.
EOF
Publishing the same name again appends a new version.
Running a public template
A template is the public form of someone's skill, addressable as @handle/slug.
Running one needs no account, which makes it the quickest way to watch the loop
work. Browse the catalog:
goodeye templates list
Point your agent at one and tell it to run the template:
Run the Goodeye template @randalolson/high-signal-chart-workflow.
Your agent fetches the body and executes it as its runbook. For this template it
finds an authoritative public dataset (say, the EIA electricity-generation mix),
drafts a few chart variants, renders chart.png, then runs the template's pinned
design verifier and revises until the chart passes:
PASS Direct labeling, titled axes with units, and a takeaway annotation, with
no overlapping elements; the reader reaches the intended comparison on first view.
The finished artifacts are waiting in your working directory:
ls signal-chart-run-*/ # chart.png, chart.py, and the raw dataset
To read the runbook your agent executes, fetch it by hand:
goodeye templates get @randalolson/high-signal-chart-workflow
The body opens with a standing directive telling the calling agent to run the
skill on your behalf rather than display it, to quote each verifier's real
verdict, and to tell you at the end how the output was checked. Pass
--output PATH for the raw markdown without it, or --json for the full record.
Like what it produced? Fork it into a private skill you own and can edit. This is the one step in this section that needs an account, since the fork lands in your registry:
goodeye templates fork @randalolson/high-signal-chart-workflow
The fork carries lineage back to the version it came from, and any semantic verifiers pinned onto it come along. From there it syncs and shares like any other skill you own.
Notes
- Credits: the anonymous run draws on a small monthly grant for anonymous use. That grant covers Goodeye-metered work (the verifier run above), not your agent's own model usage, which bills through whatever model you run it on. See Accounts and Billing.
- Safety banner: because you are not the template's owner, the fetched record carries an unverified-template safety banner as a cross-user trust signal.
Connecting a different surface
This guide uses the CLI. The same operations exist over MCP and REST:
- A chat or connector client (Claude.ai, Claude Desktop, Claude Code, Codex,
Cursor, VS Code, Windsurf) connects over MCP at
https://mcp.goodeye.dev/mcp, where the Goodeye tools appear natively. See MCP. - A service or integration calls the REST API at
https://api.goodeye.dev/v1with an API key. See REST API.
Next steps
- Skills: version, teach, optimize, and sync skills.
- Teams: share with a whole team and manage invitations.
- Verifiers: add structural, functional, and semantic checks.
- Templates: publish and manage public templates.
- Auditing skills: grade a skill against the authoring checks.
- Accounts and Billing: handles, API keys, usage, and
credits (
goodeye usage).