SIGN IN SIGN UP

feat(mcp): distinguish uninitialized vs unfilled soul

Old getProjectSoul lumped 'no .axis/ directory' and 'placeholder content'
into the same 'soul is not yet filled' message. Customers who'd never
heard of axis-init saw a confusing instruction to call update_project_soul
without context for where the .axis/ files even live.

Now:
- uninit (no .axis/instructions/): tell the agent to run
  `npx @virsanghavi/axis-init` for the one-command bootstrap, or
  populate the soul manually as a fallback.
- placeholder (.axis/ exists, content is the template): existing
  instruction to fill via update_project_soul.
- filled: no nag.

Drops a fresh customer's time-to-first-real-soul from 'I have no idea
what this means' to one command.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
V
Vir Sanghavi committed
8eb6c3db0f30b9425998853c9c8d6d72cf4f5af7
Parent: f42ff36