Skip to content

New users get no guidance to install or log in to raptor #72

Description

@anshulsao

The problem

A new user installs praxis, runs praxis login, sees a clean success message,
and thinks setup is done.

It isn't. Half the toolchain is missing, and nothing says so.

   brew install --cask Facets-cloud/tap/praxis
          │
          ▼
   praxis login          ── browser flow, user clicks "Create Key"
          │
          ├──▶ API key -> ~/.praxis/credentials
          ├──▶ installs the praxis-* skills
          └──▶ writes ~/.praxis/mcp-tools.json
          │
          ▼
      "✓ Logged in"   ← looks finished


   raptor?
          │
          ▼
   not installed. not mentioned. not logged in.

Why it matters

raptor is where the Facets control plane lives — projects, resources,
environments, releases, cloud accounts. Of the shell commands in our seeded
skills, 450 are raptor.

So a user who installs praxis and stops there cannot do most of the real work.
The skills we just installed for them will tell them to run raptor ..., and
the command won't exist.

Two tools, two logins, two credential files

praxis raptor
install brew install --cask Facets-cloud/tap/praxis nothing tells you
login praxis login raptor login
creds ~/.praxis/credentials ~/.facets/credentials
who does it praxis, for you you, by hand

raptor also has no Homebrew formula or cask (checked Facets-cloud/homebrew-tap
— only Casks/praxis.rb exists). Installing it is a manual download:

curl -LO https://github.com/Facets-cloud/raptor-releases/releases/latest/download/raptor-darwin-arm64
chmod +x raptor-darwin-arm64
sudo mv raptor-darwin-arm64 /usr/local/bin/raptor

So praxis is one command and raptor is four, one of which needs sudo.

What praxis does today

It does track whether raptor is on PATH and whether it is out of date.
praxis status --json reports it. If raptor is stale, praxis nudges the user to
run raptor upgrade — and never runs it for them. That part is good.

It does not say anything when raptor is missing entirely.

In cmd/update_check.go:112-118, if raptor is not installed then checkable is
false, so the check short-circuits and returns quietly. The installed: false
flag lands in the JSON and is never printed for a human.

cur, installed, checkable := spec.current()
f := Freshness{Tool: spec.Name, Installed: installed, Current: cur}
if os.Getenv("PRAXIS_NO_UPDATE_CHECK") != "" || !checkable {
    return f          // <- raptor absent exits here, silently
}

The only place this is mentioned

Two skills mention it, and both punt:

  • internal/skillinstall/embedded/praxis-onboarding/SKILL.md:36
    "Installed? command -v raptor — if missing, ask the user to install it"
  • the praxis meta-skill preflight says the same thing

The AI is told to ask the user to install raptor. The user is never told how.
There is no brew install raptor, no download URL, and no install docs anywhere
in this repo.

   AI:   "please install raptor"
   User: "ok, how?"
   AI:   nothing in any skill or command answers this

The gap

  1. praxis login reports success while the toolchain is half-installed.
  2. Nothing tells the user how to install raptor.
  3. Nothing prompts for raptor login, so the second auth step is invisible too.

Suggested fix

At the end of praxis login and praxis refresh-skills, check for raptor. If it
is missing or not logged in, print the next steps. This can sit right where the
freshness notice already runs (cmd/login_setup.go:261), which already knows
whether raptor is installed.

Rough shape:

✓ Logged in to profile "acme".

⚠ raptor is not installed. Facets projects, resources and releases need it.

  Install:
    curl -LO https://github.com/Facets-cloud/raptor-releases/releases/latest/download/raptor-darwin-arm64
    chmod +x raptor-darwin-arm64 && sudo mv raptor-darwin-arm64 /usr/local/bin/raptor

  Then:
    raptor login

And when raptor is installed but raptor whoami fails, print just the
raptor login line.

Open questions for whoever picks this up:

  • Should praxis offer to install raptor, or only tell the user how? Current
    guidance in the skills is deliberately "never install it yourself", so telling
    is probably right.
  • Should raptor get a Homebrew cask like praxis has? That would make the message
    one line instead of three, and is arguably the better fix.
  • Should praxis status show raptor as "not installed" instead of staying quiet?

🤖 Filed with Claude Code

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions