A portable workflow that starts from the goal, selects useful capabilities, preserves clear ownership, and carries work through planning, implementation, verification, and delivery.
discuss → compose → distill → reconsider → present
think build refine challenge ship
Open the Codex app's Plugin Directory, choose the option to import a plugin, and use:
https://github.com/actually-useful-ai/craft
The repository includes the Codex manifest and discovers all 16 skills from
skills/.
The equivalent CLI flow is:
codex plugin marketplace add actually-useful-ai/craft
codex plugin add craft@lukeslp-craft
codex plugin list --jsonFor local development, point the marketplace at an absolute checkout path:
codex plugin marketplace add /absolute/path/to/craft
codex plugin add craft@lukeslp-craftOpen a fresh Codex thread after installation so skill discovery reloads. Once
the plugin is active, back up and retire old top-level symlinks that point
directly into craft/skills/; leaving both discovery paths active can make the
selected source ambiguous.
Craft also ships a root plugin.json for Agent Plugins 1.0. The portable core
is the immediate skills/ tree; Craft has no MCP server, so it does not ship an
empty mcp.json. The existing Claude, Codex, and Cursor manifests remain in
place for client-specific installation and presentation.
From a Claude Code session, add the repository as a marketplace and install Craft:
/plugin marketplace add actually-useful-ai/craft
/plugin install craft@lukeslp-craft
cursor-agent plugin marketplace add https://github.com/actually-useful-ai/craft
cursor-agentIn the interactive agent, open /plugin and install Craft at user scope. That
account-scoped installation is available to both the IDE and CLI.
Download the release source archive. In Claude Desktop, open Customize → Plugins, choose the custom-plugin upload option, and select the zipped Craft plugin directory. Its skills are then available in Desktop chat.
/craft:activate "Add OAuth to the API and choose the right approach"
/craft:ask anthropic "Challenge this migration plan" # outside opinion
/craft:horizon "What am I missing in this product direction?" # adjacent options
/craft:impress critique path/to/artifact # quality diagnosis
/craft:swarm --size jillion "Scout this decision" # 32 bounded Luna scouts
/craft:discuss --plan "Add OAuth to the API" # plan first
/craft:compose frontend src/components/Login.tsx # build it
/craft:compose skill skills/example # create or revise a skill
/craft:distill --audit # check quality
/craft:distill --skills # audit skills and installs
/craft:reconsider --validate # verify correctness
/craft:present pr # open the PREvery command takes a mode flag and a target. Defaults are sensible: --quick for discuss, --full for distill, --validate for reconsider, save for present. Modes are listed in each command's --help.
- 9 workflow entry points (
activate,board,compose,context,discuss,distill,enhance,present,reconsider) - 7 bundled capabilities (
ask,chefs-choice,horizon,impress,skill-auditor,skill-creator,swarm) - 14 optional helper profiles for deliberation, quality, implementation, delivery, and project maintenance
- 19 scripts, including deterministic consultation, durable bounded Swarm
orchestration, fleet verification, skill auditing, and packaging tools. They
need no third-party packages on Python 3.11+;
fleet.pyacceptstomlion older controller interpreters.
Craft is the front door. State the goal and, when useful, the desired ambition:
$craft:activate Chef's choice—impress me with this onboarding flow.
Craft selects the smallest useful stack and preserves ownership. Chef's Choice selects resources; Impress sets the quality bar; the most-specific domain skill owns implementation; optional providers retain authority in their domains. Craft reports a material selection in one concise line instead of requiring the person to remember a catalog of skill names.
| Optional provider | Craft uses it for |
|---|---|
| Chaos | An explicitly requested playful constraint or remix, never generic ambition |
| Platforms | Platform delivery through one top-level executor and its own sub-routing |
| Intentional UX | Task paths, state transitions, recovery, and outcome evidence |
| Accessibility | Semantics, keyboard and assistive-technology behavior, and access verification |
| Mobile | Viewport, touch, motion, responsive layout, and measured performance evidence |
| Humanize | Meaning-preserving review of user-facing prose |
Each provider is independently installed and versioned. Installing Craft does not install them. When a provider is absent, Craft names the evidence limitation and uses a bounded fallback instead of impersonating that provider.
Reviews that cross at least two of task path, accessibility, mobile implementation, and documentation use one Experience Review record. Specialist provenance, manual-check ownership, unresolved dissent, and evidence strength remain intact; Craft produces no aggregate score or conformance claim.
Horizon opens the option space before a decision. Impress can also critique an
existing artifact under Merely competent, Exemplar opportunities, and
Performative sophistication without revising it. Reconsider owns correctness,
first-principles rebuilds, and blast radius. Ask obtains exactly one outside
opinion. Swarm runs many stateless Luna scouts only after explicit paid-call
authorization; generic parallel work remains the job of native agents or the
independent Fanout skill.
The bundled capability-maintenance paths are /craft:compose skill for creating
or revising skills and /craft:distill --skills for read-only package and fleet
audits.
The five core workflow phases carry one evidence envelope. Measured, observed,
inferred, planned, and unavailable claims stay distinct through the final
Done, Partial, or Blocked handoff.
The core stays centered on five verbs. Variants such as quick research, planning, visual work, focused fixes, and publishing live behind modes so the workflow stays easy to remember.
- Pitch a codebase as a product: that's team.
- Code refinement at depth or council-style debate: that's elegance.
- Rewrite user-facing prose: Craft routes that work to humanize when installed.
- Perform dedicated accessibility reviews: Craft routes supported web work to Accessibility Devkit when installed.
Specialist products remain independently versioned. Craft discovers and composes them without absorbing their source or weakening their authority.
/craft:ask is the portable, explicit consultation path. It labels the actual
provider and model, never silently falls back, and requires authorization before
sending a bounded brief outside the current runtime. Its --list and --status
modes make no inference calls.
The versioned route table is exposed by scripts/ask.sh --list; documentation
and command projections do not carry separate model labels. Configure either
provider credentials or an OpenAI-compatible gateway in
${XDG_CONFIG_HOME:-~/.config}/craft/ask.env. The legacy scripts/llm-query.py
entry point delegates to this one route table.
Nothing in Craft depends on a configured outside provider. The workflow entry points work on their own and report a missing route as a limitation.
/craft:swarm consumes Ask's canonical luna route rather than maintaining a
second model table. Presets run 4, 8, 16, or 32 scouts; a hard ceiling of 64,
short per-scout responses, no retries, a global deadline, and explicit partial
status keep the deliberately extravagant mode bounded. Dry runs make no
inference calls. Paid runs persist private atomic result envelopes under
~/craft/logs/swarm/, so lost terminal output cannot turn an incomplete run
into an inferred result or an accidental retry.
fleet.toml is the public bill of materials for Craft, Team, Intentional UX,
Accessibility, and Humanize. scripts/fleet.py checks immutable checkout refs,
manifest versions, logical content hashes, expected runtime activation, and
broken top-level skill links across locally configured hosts. Machine topology
stays in ~/.config/craft/fleet-hosts.toml. The public BOM declares no
legacy-link retirement targets because replacement activation and link
ownership are host-local facts. See Plugin fleet control.
The fleet records Chaos, Platforms, Mobile, and Pi as release blockers until their canonical repositories publish immutable version tags. Craft does not present them as audited fleet packages before that evidence exists.
Everything goes under ~/craft/:
~/craft/
├── reports/by-date/YYYY-MM-DD/ discuss summaries, distill findings
├── recommendations/by-project/ accumulated, append-only
├── status/ session work logs
├── snippets/ internal harvest staging
├── logs/ execution logs
└── board.json kanban state
Board HTML at ~/html/craft/board/index.html if you serve it via Caddy.
Luke Steuber · luke@lukesteuber.com · lukesteuber.com
MIT, with Apache-2.0 terms for the bundled Skill Creator. See
skills/skill-creator/LICENSE.txt.