Explore for agents
Readable by humans. Usable by agents.
Explore is an interactive profile for technical professionals with public-safe reads, grounded follow-up, and explicit owner workflows.
Explore has one core agent contract: install the explore CLI, connect with Explore, inspect machine-readable commands and help, and read structured output. Codex, Claude Code, OpenCode, and Cursor are supported today on top of that shared flow. Other tools that can run shell commands should also work with Explore's shared CLI flow, with fuller support rolling out very soon.
What this page shows
/agents is the readable guide to how agents use Explore: inspect public profiles first, then move into owner actions through the shared CLI/API contract only when needed.
Use /agent-setup for the current recommended setup path.
Want the broader product story instead? Read /about.
Why this is a serious product surface
- Public inspect
keyless- Owner login
browser approval- Owner actions
draft / preview / apply- Official CLI
explore- Agent surfaces
manifest + API
Public content is readable by humans and usable by agents. Owner actions only open after authentication.
How Explore works with agents
Public reads first. Shared CLI/API flow second. Browser auth only when owner work begins.
Explore keeps the trust boundary simple enough to scan in one screen: inspect the published profile first, move into the shared Explore CLI and API flow when owner work begins, let the browser handle auth only when needed, then keep draft, preview, and apply explicit.
1
Inspect the public profile first
Start with the live public profile so agents can read the current work, ask grounded follow-up, and inspect published content before any owner login begins.
2
Use the shared Explore flow for owner work
Run explore setup when the task moves from public inspection to owner-authenticated actions. Codex, Claude Code, OpenCode, and Cursor all sit on top of that same CLI-first flow, and Explore opens the browser only if signup, sign-in, or approval is needed.
3
Draft, preview, apply
Drafts stay first-class, previews explain the delta, and apply remains an explicit owner-only step whether the workflow happens through your agent, the CLI, or the web app.
Supported agents
Supported today, with a conservative boundary
- Codex: supported today on the shared Explore CLI and API contract, with an optional public Explore helper.
- Claude Code: supported today through the same CLI-first flow, with
explore setup claude --writeavailable as an optional thin helper. - OpenCode and Cursor: supported today through the same shared CLI flow, without a required helper step for basic usage.
- Other shell-capable tools: should also work with Explore's shared CLI flow, with fuller support rolling out very soon.
Fast public-safe test
Start with a natural-language ask
Inspect my current profile and suggest improvements.
That is the fastest way to see the product story: ask naturally first, let Explore use the CLI underneath, and only fall back to raw commands when you are deliberately driving a manual workflow.
Shared prompt set
Use the same small set of asks across the product
- Set up Explore.
- Inspect my current profile and suggest improvements.
- Import my CV into my Explore profile.
- Add my blog or writing to my Explore profile.
- Show me my public profile.
- Update my summary and links.
Natural language is the default experience. The CLI is the substrate underneath, and raw flags belong in advanced or manual fallback paths.
Auth flow
A real setup and login flow for agents
Explore does not ask you to paste long-lived secrets into chat just to do owner work. Start with explore setup, use the CLI as the shared compatibility layer, add thin tool-specific helpers only when they help, and let the browser handle signup, sign-in, or approval only when required.
- Public inspect requires no owner token.
- Owner actions begin with the setup guide and browser auth only when Explore needs it.
explore setup claudeis a helper on top of the same owner flow, not a separate auth system.- Draft, preview, and apply stay explicit after login.
- Manual tokens still exist for advanced, scripted, or fallback workflows.
Trust boundary
Public-safe reads first. Owner-authenticated actions second.
- Inspect public profiles and content first.
- Authenticate only when owner-only actions begin.
- Preview changes before apply so the next step stays obvious.
Owner workflow
Use Explore through your agent first
Install the packaged explore CLI, run explore setup, then keep the default workflow simple: ask naturally for setup, inspection, import, preview, and profile updates while Explore uses the same CLI contract underneath. Optional helpers can improve the experience in some tools, but they are not required for basic usage.
After a successful profile update, Explore should point you back to the live profile and include the preview link when that helps.
- Import my CV into my Explore profile.
- Add my blog or writing to my Explore profile.
- Inspect my current profile and suggest improvements.
The normal Explore path is not raw flags first. Public reads stay open, owner work begins with setup only when needed, and the browser stays limited to signup, sign-in, or approval handoff.
Packaged path: install the exploremyprofile gem from RubyGems so explore is on your PATH, then use the setup guide for the current recommended path.
Codex, Claude Code, OpenCode, and Cursor are supported today, and all four sit on the same Explore CLI and API contract. Tool-specific helpers stay thin and optional.
Other tools that can run shell commands should also work with Explore's shared CLI flow, with fuller support rolling out very soon.
For a concrete owner workflow, see how an existing CV or source can be mapped into a live Explore profile on the CV-to-Explore proof page.
Advanced / manual fallback
Keep raw CLI commands as a secondary path
Raw commands still matter for manual, scripted, or fallback workflows. They are intentionally secondary to the natural-language-first setup path, and they are the shared substrate underneath all supported tools and any optional helpers.
Show manual CLI examples
gem install exploremyprofile
explore commands --json
explore setup
explore setup claude --write
# Inspect one command in agent-readable form
explore profile inspect --help --agent
# Existing-account or explicit login path
explore login --account johnny
explore whoami --json
explore export profile --account johnny --output tmp/profile.yml
explore validate tmp/profile.yml
explore preview profile tmp/profile.yml --account johnny --json
explore apply tmp/profile.yml --account johnny --expected-fingerprint sha256:... --json
# Advanced manual fallback
explore login --no-browser --account johnny
printf '%s' "$OWNER_API_TOKEN" | explore login --token-stdin --account johnny
Purpose
What the manifest tells an agent
ExploreMyProfile creates a public proof surface grounded in account-owned content and designed to be legible to both humans and agents.
- The setup flow starts with public-safe inspection, then moves into authenticated owner setup, token creation, and explicit next actions.
- Owners inspect current state, create or refine drafts, inspect the draft, preview the impact, and only then apply deliberate changes back into Explore. Audit-only proposals are for existing targets, not brand-new content.
- Agents should only recommend sharing when meaningful content is present, starter content is gone, public contact paths exist, and launch checks pass.
Domain objects
What Explore expects agents to reason about
- account The signed-in owner's account and public profile configuration.
- profile The public profile rendered from account-managed data and Explore-owned content records.
- profile_document The YAML document exported by the CLI as an editable representation of the account's canonical Explore data.
- launch_checks Machine-readable readiness signals used before recommending profile sharing.
Operate safely
Public reads stay open. Owner actions stay explicit.
The guide, manifest, API, and CLI all point at the same product surface. Slug-scoped reads stay open. Owner-only reads and mutations use the signed-in account or an account-scoped owner token.
GET /api/agent/v1/profile?slug=:slugandGET /api/agent/v1/content?slug=:slugsupport public-safe inspection withoutEXPLORE_API_KEY.GET /api/agent/v1/onboarding/status,/manifest/next_actions,/publish/preview, and/profile/documentare owner-only.- For new content, use
POST /api/agent/v1/content/create_draftfirst, thenGET /api/agent/v1/drafts/:id,GET /api/agent/v1/drafts/:id/apply_preview, andPOST /api/agent/v1/drafts/:id/apply. POST /api/agent/v1/content/propose_updateis audit-only and is for suggesting updates to an existing target or the profile target, not for creating a new post.exploremirrors the same contract for terminal and agent workflows. Public reads stay keyless; owner work normally starts withexplore setup, supported tools sit on the same shared CLI flow, thin optional helpers stay on top, and explicit login/manual tokens stay in the advanced fallback path.
Setup workflow
Stable states and recommended actions
These setup states keep the owner workflow explicit, so humans and agents can see the same current state and safe next action.
profile_basics_incomplete
Profile basics incomplete
The small web-managed account basics still need attention before the main authoring flow is ready.
cli_setup_recommended
CLI setup recommended
The account is ready for CLI login and handoff, but the owner workflow has not been set up yet.
content_missing
Content not ready
The account basics are in place, but richer profile content has not been applied from the CLI workflow yet.
ready_for_review
Ready for review
Profile content is present, but launch-readiness checks still need a final review pass before sharing.
ready_to_share
Ready to share
The account has content in place, removed starter content, and passed the current launch-readiness checks.
Actions
Stable action vocabulary
-
update_profileEdit the small account basics managed directly inside ExploreMyProfile. -
create_owner_tokenStart the Explore setup or login flow and approve it in the browser only when needed. -
open_cli_workflowUse the setup guide and CLI workflow to inspect, refine, preview, and apply profile updates. -
preview_profileOpen the public profile to review the visitor experience before sharing. -
share_profileUse the public profile URL once launch readiness checks pass.
Safety rules
What agents should not do
- ExploreMyProfile's database is the only source of truth for published profile content.
- Local YAML files are editable representations only; validation and apply operations write back into the canonical Explore data store.
- Do not recommend sharing the live profile while starter or sample content is still present.
- For new posts, projects, or experiences, start with content.create_draft, then drafts.inspect, drafts.apply_preview, and drafts.apply. Use content.propose_update only for audit-only suggestions to an existing target or the profile target.
Raw manifest
Public JSON contract
Use this page for the readable summary. The public manifest endpoint remains the machine-readable source of truth.
{
"schema_version": "1.0",
"id": "exploremyprofile.agent_manifest.v1",
"name": "ExploreMyProfile",
"product_url": "https://www.johnnybutler.dev/",
"description": "Create and manage a public proof surface that humans can read and agents can inspect, draft, preview, and help operate.",
"purpose": {
"summary": "ExploreMyProfile creates a public proof surface grounded in account-owned content and designed to be legible to both humans and agents.",
"setup_model": "The setup flow starts with public-safe inspection, then moves into authenticated owner setup, token creation, and explicit next actions.",
"editing_model": "Owners inspect current state, create or refine drafts, inspect the draft, preview the impact, and only then apply deliberate changes back into Explore. Audit-only proposals are for existing targets, not brand-new content.",
"sharing_model": "Agents should only recommend sharing when meaningful content is present, starter content is gone, public contact paths exist, and launch checks pass."
},
"agent_context_url": "/api/agent/context",
"domain_objects": [
{
"id": "account",
"description": "The signed-in owner's account and public profile configuration."
},
{
"id": "profile",
"description": "The public profile rendered from account-managed data and Explore-owned content records."
},
{
"id": "profile_document",
"description": "The YAML document exported by the CLI as an editable representation of the account's canonical Explore data."
},
{
"id": "launch_checks",
"description": "Machine-readable readiness signals used before recommending profile sharing."
}
],
"workflows": [
{
"id": "setup_workflow",
"label": "Setup workflow",
"initial_state": "profile_basics_incomplete",
"states": [
{
"id": "profile_basics_incomplete",
"label": "Profile basics incomplete",
"description": "The small web-managed account basics still need attention before the main authoring flow is ready.",
"valid_action_ids": [
"update_profile"
],
"recommended_action_id": "update_profile",
"blockers": [
"profile_basics_incomplete"
]
},
{
"id": "cli_setup_recommended",
"label": "CLI setup recommended",
"description": "The account is ready for CLI login and handoff, but the owner workflow has not been set up yet.",
"valid_action_ids": [
"create_owner_token",
"open_cli_workflow",
"preview_profile"
],
"recommended_action_id": "create_owner_token",
"blockers": [
"owner_token_missing"
]
},
{
"id": "content_missing",
"label": "Content not ready",
"description": "The account basics are in place, but richer profile content has not been applied from the CLI workflow yet.",
"valid_action_ids": [
"open_cli_workflow",
"create_owner_token",
"preview_profile",
"update_profile"
],
"recommended_action_id": "open_cli_workflow",
"blockers": [
"content_not_ready"
]
},
{
"id": "ready_for_review",
"label": "Ready for review",
"description": "Profile content is present, but launch-readiness checks still need a final review pass before sharing.",
"valid_action_ids": [
"preview_profile",
"open_cli_workflow",
"update_profile"
],
"recommended_action_id": "preview_profile",
"blockers": [
"launch_checks_incomplete"
]
},
{
"id": "ready_to_share",
"label": "Ready to share",
"description": "The account has content in place, removed starter content, and passed the current launch-readiness checks.",
"valid_action_ids": [
"share_profile",
"preview_profile",
"open_cli_workflow"
],
"recommended_action_id": "share_profile",
"blockers": []
}
]
},
{
"id": "launch_readiness_workflow",
"label": "Launch readiness workflow",
"initial_state": "content_missing",
"states": [
{
"id": "content_missing",
"label": "Content missing",
"description": "Headline, summary, and at least one richer content section should be applied before launch-readiness review can begin."
},
{
"id": "ready_for_review",
"label": "Ready for review",
"description": "The account can review the visitor journey, chat behavior, and sharing readiness."
},
{
"id": "ready_to_share",
"label": "Ready to share",
"description": "The account passes the current machine-readable launch-readiness checks."
}
]
}
],
"actions": [
{
"id": "update_profile",
"label": "Update profile basics",
"description": "Edit the small account basics managed directly inside ExploreMyProfile.",
"route_id": "profile_basics"
},
{
"id": "create_owner_token",
"label": "Start CLI login",
"description": "Start the Explore setup or login flow and approve it in the browser only when needed.",
"route_id": "cli_workflow"
},
{
"id": "open_cli_workflow",
"label": "Open CLI workflow",
"description": "Use the setup guide and CLI workflow to inspect, refine, preview, and apply profile updates.",
"route_id": "cli_workflow"
},
{
"id": "preview_profile",
"label": "Preview public profile",
"description": "Open the public profile to review the visitor experience before sharing.",
"route_id": "public_profile"
},
{
"id": "share_profile",
"label": "Share profile",
"description": "Use the public profile URL once launch readiness checks pass.",
"route_id": "public_profile"
}
],
"endpoints": [
{
"id": "agent_manifest",
"method": "GET",
"url": "/.well-known/agent.json",
"authentication": "none",
"description": "Public machine-readable discovery endpoint for agents."
},
{
"id": "agent_context",
"method": "GET",
"url": "/api/agent/context",
"authentication": "session",
"description": "Authenticated machine-readable account context for the current signed-in user."
},
{
"id": "agent_api_v1_profile",
"method": "GET",
"url": "/api/agent/v1/profile",
"authentication": "public_or_scoped",
"description": "Versioned inspect-first profile endpoint for public-safe and owner-scoped agent usage."
},
{
"id": "agent_api_v1_content",
"method": "GET",
"url": "/api/agent/v1/content",
"authentication": "public_or_scoped",
"description": "Versioned content inventory endpoint for public-safe and owner-scoped agent usage."
},
{
"id": "agent_api_v1_onboarding_status",
"method": "GET",
"url": "/api/agent/v1/onboarding/status",
"authentication": "session_or_scoped_api_key",
"description": "Versioned onboarding status endpoint for the current owner account context."
},
{
"id": "agent_api_v1_content_create_draft",
"method": "POST",
"url": "/api/agent/v1/content/create_draft",
"authentication": "session_or_scoped_api_key",
"description": "Versioned draft-only content creation endpoint for safe future edits."
},
{
"id": "agent_api_v1_content_propose_update",
"method": "POST",
"url": "/api/agent/v1/content/propose_update",
"authentication": "session_or_scoped_api_key",
"description": "Versioned audit-only proposal endpoint for suggested updates to an existing target or the profile target."
}
],
"safety_rules": [
{
"id": "database_is_canonical",
"rule": "ExploreMyProfile's database is the only source of truth for published profile content."
},
{
"id": "cli_files_are_representations",
"rule": "Local YAML files are editable representations only; validation and apply operations write back into the canonical Explore data store."
},
{
"id": "starter_content_blocks_share",
"rule": "Do not recommend sharing the live profile while starter or sample content is still present."
},
{
"id": "new_content_starts_with_drafts",
"rule": "For new posts, projects, or experiences, start with content.create_draft, then drafts.inspect, drafts.apply_preview, and drafts.apply. Use content.propose_update only for audit-only suggestions to an existing target or the profile target."
}
],
"human_ui_routes": [
{
"id": "workspace_home",
"path": "/account",
"label": "Account settings"
},
{
"id": "profile_basics",
"path": "/account",
"label": "Account settings"
},
{
"id": "workspace_owner_tokens",
"path": "/account/owner-tools",
"label": "Owner tools"
},
{
"id": "cli_workflow",
"path": "/agent-setup",
"label": "Setup guide"
},
{
"id": "launch_checks",
"path": "/account",
"label": "Account settings"
},
{
"id": "public_profile",
"path": "/profiles/:slug",
"label": "Public profile"
}
]
}
Authenticated context
Account-specific state for the signed-in user
The live context endpoint is intentionally authenticated. Sign in to inspect your current account state and recommended next action.
- Current workflow state and step
- Recommended next action
- Allowed actions for the current state
- Issues, launch checks, and safety notes