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 --write available 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 claude is 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.

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=:slug and GET /api/agent/v1/content?slug=:slug support public-safe inspection without EXPLORE_API_KEY.
  • GET /api/agent/v1/onboarding/status, /manifest/next_actions, /publish/preview, and /profile/document are owner-only.
  • For new content, use POST /api/agent/v1/content/create_draft first, then GET /api/agent/v1/drafts/:id, GET /api/agent/v1/drafts/:id/apply_preview, and POST /api/agent/v1/drafts/:id/apply.
  • POST /api/agent/v1/content/propose_update is audit-only and is for suggesting updates to an existing target or the profile target, not for creating a new post.
  • explore mirrors the same contract for terminal and agent workflows. Public reads stay keyless; owner work normally starts with explore 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.

Recommended action: update_profile

Allowed now: update_profile

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.

Recommended action: create_owner_token

Allowed now: create_owner_token, open_cli_workflow, preview_profile

content_missing

Content not ready

The account basics are in place, but richer profile content has not been applied from the CLI workflow yet.

Recommended action: open_cli_workflow

Allowed now: open_cli_workflow, create_owner_token, preview_profile, update_profile

ready_for_review

Ready for review

Profile content is present, but launch-readiness checks still need a final review pass before sharing.

Recommended action: preview_profile

Allowed now: preview_profile, open_cli_workflow, update_profile

ready_to_share

Ready to share

The account has content in place, removed starter content, and passed the current launch-readiness checks.

Recommended action: share_profile

Allowed now: share_profile, preview_profile, open_cli_workflow

Actions

Stable action vocabulary

  • update_profile Edit the small account basics managed directly inside ExploreMyProfile.
  • create_owner_token Start the Explore setup or login flow and approve it in the browser only when needed.
  • open_cli_workflow Use the setup guide and CLI workflow to inspect, refine, preview, and apply profile updates.
  • preview_profile Open the public profile to review the visitor experience before sharing.
  • share_profile Use 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

Sign in to view live context