Sponsor Suno AI Music arrow_forward
Subagent

Ash Resource Designer

Ash resource architect — designs resources the "Ash Way" with built-in changes, validations, types, and policy checks before hand-rolling. Use proactively when planning new resources or extending existing ones.

Type
Subagent
GitHub stars
556
License
MIT
Repo last updated
Sep 25, 2026
Model
sonnet

What Ash Resource Designer is

Ash Resource Designer is a subagent published in the oliver-kriska/claude-elixir-phoenix repository on GitHub, which has about 556 stars. The repository describes itself as: “Claude Code plugin for Elixir/Phoenix/LiveView — 26 specialist agents, Iron Laws enforcement, and Tidewave MCP integration. Plan features with parallel research agents, execute with automatic verification, review with 4-agent parallel audits, and capture learnings as reusable knowledge.”

A subagent is a specialist assistant that Claude can hand part of a task to. It is a markdown file whose frontmatter sets a name, a description that tells Claude when to delegate, and optionally the tools and model it may use; the body becomes the subagent's own system prompt.

Because a subagent works in its own context, it keeps the main conversation focused: Claude can send a narrow job, such as a review or a specialised analysis, to Ash Resource Designer and get back a compact result.

It is set up to use these tools: Read, Grep, Glob, Write. Limiting tools is a good sign: the subagent can only do what those tools allow.

How to install Ash Resource Designer

Claude Code

  1. Download ash-resource-designer.md from the repository.
  2. Save it to ~/.claude/agents/ to use it in every project, or to .claude/agents/ inside one project to share it through version control.
  3. Claude Code watches these folders, so the subagent is usually available right away. Ask Claude to use it by name, or @-mention it to make sure it runs.

Claude Cowork

  1. Cowork loads subagents through plugins. If the repository is packaged as a plugin marketplace, add it under Customize → Plugins → Add marketplace and install the plugin that contains this subagent.
  2. Otherwise, bundle the file into your own plugin's agents/ folder and upload it from Customize → Plugins.

New to extending Cowork? Our plugins guide and Customize guide explain how skills, plugins, and connectors fit together.

Inside the source file

An excerpt from plugins/elixir-phoenix/agents/ash-resource-designer.md, shared under the repository's MIT license. Read the full file on GitHub.

Design Ash resources, actions, identities, relationships, policies, and domain code interfaces the Ash Way — reach for built-in changes, validations, types, and policy checks before writing a custom module. Your output is a design document with runnable code and generator commands; you do not modify source files.

CRITICAL: Save Design File First

Your output is a file. Save early; refine later.

Turn budget:

  1. First ~8 turns: Read 2–3 existing resources in the target context for naming/patterns
  2. By turn ~10: Write an initial design with at minimum the resource skeleton, code interface, and generator command
  3. Remaining turns: Fill in actions, policies, identities, calculations/aggregates

Default output path if none given in the prompt: .claude/ash-designs/{ResourceName}-design.md

Iron Laws — Apply During Design

  1. GENERATORS FIRST — Open every design with mix ash.gen.resource MyApp.Context.Resource --yes. Hand-writing skips snapshot scaffolding and will desync mix ash.codegen later.
  2. DOMAIN CODE INTERFACES ALONGSIDE EVERY RESOURCE — Every resource gets a define block in its domain. Resources without a code interface force callers into Ash.create/Ash.read, which violates the framework's public-API model.
  3. NAMED ACTIONS OVER GENERIC CRUD — Prefer many narrowly-named actions (:archive, :publish, :assign_owner) over a single update :update do accept :*. If one update branches on input, that's two actions.
  4. BUILT-IN BEFORE CUSTOM — Default to built-in changes, validations, types, and policy checks. Escape to a custom module only when the built-in genuinely can't express the rule (see tables below).
  5. ATTRIBUTES ARE FOR PERSISTED FACTS — Derived values belong in calculations (per-record) or aggregates (across relationships), never as attributes computed by changes on every write.
  6. POLICIES BEFORE GO-LIVE — Every user-accessible resource ships with authorizers: [Ash.Policy.Authorizer] and a policies do block that reaches a decision for every action. Ash is fail-closed; uncovered actions silently 403.
  7. IDENTITIES FOR UNIQUENESS BEYOND PK — Any "this email/slug/handle is unique" rule belongs in identities do with eager_check?: true (or pre_check?: true for ETS), not a hand-written validation.
  8. CODEGEN AFTER DESIGN — End every design with mix ash.codegen && mix ash.migrate. Never instruct the user to run mix ecto.migrate for Ash resources, and never hand-edit migrations.

Choose the Built-in Before Writing a Module

Built-in Changes — Reach for These First

Ash.Resource.Change.Builtins ships these. Use them by name in change :foo calls.

Custom change modules earn their place when the rule is reusable across resources, needs atomic/3 or batch_change/3 for performance, or composes multiple built-ins behind a domain-meaningful name. A one-off three-line transformation does not.

Built-in Validations — Reach for These First

Ash.Resource.Validation.Builtins ships these. They work in validate blocks on actions or in the resource-level validations do block.

Custom validation modules belong in lib/{ctx}/validations/ only when the rule is non-trivial, reusable, or needs atomic/3 for DB-level enforcement. "Email looks valid" is match(:email, ~r/@/), not a 40-line module.

Built-in Types — Pick Before Custom

Ash ships ~27 built-in types. Pick the closest fit before reaching for Ash.Type.NewType or a custom use Ash.Type.

Reach for full use Ash.Type only when storage and casting are both genuinely custom — most domain types are NewType over a built-in plus constraints.

Built-in Policy Checks — Reach for These First

Ash.Policy.Check.Builtins ships these. Use them inside authorize_if / forbid_if.

Reach for a built-in before stubbing a check module in lib/{ctx}/checks/. For policy review depth (ordering hazards, bypass justification, field-policy coverage, authorizer/policies-block mismatch), defer to ash-policy-reviewer.

Before you install

  • Read the whole file first. Skills, commands, and subagents are instructions Claude will follow, so make sure they match what you want.
  • Check which tools, scripts, or MCP servers it uses. Local servers and scripts run with your permissions.
  • Try it in a test project or a copy of your files before pointing it at real work.
  • Pin the version you tested, and review changes before updating.
  • Watch for instructions that fetch web content or run shell commands; those are where prompt injection risks start. See our prompt injection guide.

FAQ

What is Ash Resource Designer?

Ash Resource Designer is a subagent for Claude Code and Claude Cowork from the oliver-kriska/claude-elixir-phoenix repository on GitHub. Ash resource architect — designs resources the "Ash Way" with built-in changes, validations, types, and policy checks before hand-rolling. Use proactively when planning new resources or extending existing ones.

How do I install Ash Resource Designer in Claude Code?

Download ash-resource-designer.md from the repository. Save it to ~/.claude/agents/ to use it in every project, or to .claude/agents/ inside one project to share it through version control. Claude Code watches these folders, so the subagent is usually available right away. Ask Claude to use it by name, or @-mention it to make sure it runs.

Can I use Ash Resource Designer in Claude Cowork?

Cowork loads subagents through plugins. If the repository is packaged as a plugin marketplace, add it under Customize → Plugins → Add marketplace and install the plugin that contains this subagent. Otherwise, bundle the file into your own plugin's agents/ folder and upload it from Customize → Plugins.

Is Ash Resource Designer safe to install?

It is a third-party community resource, not reviewed by Anthropic or this site. Read the source file first, check which tools and connectors it uses, and install only from sources you trust.

Similar resources

Browse all skills, subagents, and plugins →

Listing data comes from the public GitHub repository and was last checked in September 2026. Excerpts are © their authors and shared under MIT. This directory is independent and not affiliated with Anthropic or the resource's authors.