Define routes and URL helpers in Phoenix applications including resources, scopes, pipelines, and verified routes
View on GitHubTheBushidoCollective/han
jutsu-phoenix
January 24, 2026
Select agents to install to:
npx add-skill https://github.com/TheBushidoCollective/han/blob/main/jutsu/jutsu-phoenix/skills/phoenix-routing/SKILL.md -a claude-code --skill phoenix-routingInstallation paths:
.claude/skills/phoenix-routing/# Phoenix Routing Phoenix routing maps incoming HTTP requests to controller actions. The router is the entry point for all web requests and determines which controller action should handle each request. Phoenix provides powerful routing macros for RESTful resources, scopes, pipelines, and verified routes. ## Basic Route Declaration ### Single Routes Define individual routes using HTTP verb macros: ```elixir get "/", PageController, :home ``` Phoenix supports all standard HTTP verbs: ```elixir get "/users", UserController, :index post "/users", UserController, :create patch "/users/:id", UserController, :update put "/users/:id", UserController, :update delete "/users/:id", UserController, :delete ``` ### Routes with Dynamic Segments Capture URL parameters using the `:param_name` syntax: ```elixir get "/hello/:messenger", HelloController, :show ``` The `:messenger` segment becomes available in the controller's params map. ## Resource Routes ### Basic Resource Declaration Generate all standard RESTful routes with the `resources` macro: ```elixir resources "/users", UserController ``` This generates eight routes: ```text GET /users UserController :index GET /users/:id/edit UserController :edit GET /users/new UserController :new GET /users/:id UserController :show POST /users UserController :create PATCH /users/:id UserController :update PUT /users/:id UserController :update DELETE /users/:id UserController :delete ``` ### Limiting Resource Routes Use `:only` to generate specific routes: ```elixir resources "/users", UserController, only: [:show] resources "/posts", PostController, only: [:index, :show] ``` Use `:except` to exclude specific routes: ```elixir resources "/users", UserController, except: [:create, :delete] ``` ### Aliasing Resources Customize the route path helper name with `:as`: ```elixir resources "/users", UserController, as: :person ``` This generates