[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FNZG4KWCDTA7VFH6RNSEKX":3,"skill-same:01M6FNZG4KWCDTA7VFH6RNSEKX":83},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":54,"install":55,"resources":68},"01M6FNZG4KWCDTA7VFH6RNSEKX","elixir-dev",null,"Elixir\u002FPhoenix development companion. Run and interpret mix test, mix credo, mix dialyzer, mix format. Generate modules following OTP conventions: contexts, schemas, GenServers, supervisors, tasks. Debug compilation errors and warnings. Help with Ecto migrations, queries, changesets, and associations. Use for any Elixir or Phoenix development task including writing modules, fixing tests, refactoring code, or understanding OTP patterns.","kbarbel640-del\u002Fskills","kbarbel640-del","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F255315490?v=4","01M6CJPPQGCCESXMG3K7BBGQ5J","01M6CJPPX2PB2BCZERFVM2C2B3",1,"MIT","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fgchapim\u002Felixir-dev\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"elixir dev","dev","elixir","modules","errors","with","ecto","tests","changesets","task","migrations","queries","writing","use","ecto migrations","code","development","tasks","debug","test","2026-11-10 10:12:30",false,"---\nname: elixir-dev\ndescription: \"Elixir\u002FPhoenix development companion. Run and interpret mix test, mix credo, mix dialyzer, mix format. Generate modules following OTP conventions: contexts, schemas, GenServers, supervisors, tasks. Debug compilation errors and warnings. Help with Ecto migrations, queries, changesets, and associations. Use for any Elixir or Phoenix development task including writing modules, fixing tests, refactoring code, or understanding OTP patterns.\"\n---\n\n# Elixir Dev\n\n## Running Mix Commands\n\nSee [references\u002Fmix-commands.md](references\u002Fmix-commands.md) for full command reference.\n\n### Test\n\n```bash\n# Run all tests\nmix test\n\n# Specific file or line\nmix test test\u002Fmy_app\u002Faccounts_test.exs:42\n\n# By tag\nmix test --only integration\n\n# Failed only (requires --failed flag from prior run)\nmix test --failed\n\n# With coverage\nmix test --cover\n```\n\n**Interpreting failures:**\n- `** (MatchError)` — Pattern match failed; check return value shape.\n- `** (Ecto.NoResultsError)` — `Repo.get!` with non-existent ID; use `Repo.get` or seed data.\n- `** (DBConnection.OwnershipError)` — Missing `async: true` or sandbox setup.\n- `no function clause matching` — Wrong arity or unexpected arg type.\n\n### Credo\n\n```bash\nmix credo --strict\nmix credo suggest --format json\nmix credo explain MyApp.Module  # Explain issues for specific module\n```\n\n**Common Credo fixes:**\n- `Credo.Check.Readability.ModuleDoc` — Add `@moduledoc`.\n- `Credo.Check.Refactor.CyclomaticComplexity` — Extract helper functions.\n- `Credo.Check.Design.TagTODO` — Address or remove TODO comments.\n\n### Dialyzer\n\n```bash\nmix dialyzer\nmix dialyzer --format short\n```\n\n**Common Dialyzer warnings:**\n- `The pattern can never match` — Dead code or wrong type in pattern.\n- `Function has no local return` — Crashes on all paths; check internal calls.\n- `The call will never return` — Calling a function that always raises.\n- Fix: Add `@spec` annotations; use `@dialyzer {:nowarn_function, func: arity}` as last resort.\n\n### Format\n\n```bash\nmix format\nmix format --check-formatted  # CI mode — exit 1 if unformatted\n```\n\n## Module Generation\n\nAlways include `@moduledoc`, `@doc`, and `@spec` on public functions.\n\n### Context Module\n\n```elixir\ndefmodule MyApp.Notifications do\n  @moduledoc \"\"\"\n  Manages notification delivery and preferences.\n  \"\"\"\n  import Ecto.Query\n  alias MyApp.Repo\n  alias MyApp.Notifications.Notification\n\n  @doc \"List notifications for a user, most recent first.\"\n  @spec list_notifications(String.t(), keyword()) :: [Notification.t()]\n  def list_notifications(user_id, opts \\\\ []) do\n    limit = Keyword.get(opts, :limit, 50)\n\n    Notification\n    |> where(user_id: ^user_id)\n    |> order_by(desc: :inserted_at)\n    |> limit(^limit)\n    |> Repo.all()\n  end\nend\n```\n\n### Schema Module\n\n```elixir\ndefmodule MyApp.Notifications.Notification do\n  @moduledoc \"\"\"\n  Schema for push\u002Femail\u002Fsms notifications.\n  \"\"\"\n  use Ecto.Schema\n  import Ecto.Changeset\n\n  @type t :: %__MODULE__{}\n\n  @primary_key {:id, :binary_id, autogenerate: true}\n  @foreign_key_type :binary_id\n  @timestamps_opts [type: :utc_datetime_usec]\n\n  schema \"notifications\" do\n    field :channel, Ecto.Enum, values: [:push, :email, :sms]\n    field :title, :string\n    field :body, :string\n    field :delivered_at, :utc_datetime_usec\n    field :user_id, :binary_id\n\n    timestamps()\n  end\n\n  @required ~w(channel title body user_id)a\n\n  @doc false\n  def changeset(notification, attrs) do\n    notification\n    |> cast(attrs, @required ++ [:delivered_at])\n    |> validate_required(@required)\n    |> validate_length(:title, max: 255)\n  end\nend\n```\n\n## OTP Patterns\n\nSee [references\u002Fotp-patterns.md](references\u002Fotp-patterns.md) for GenServer, Supervisor, Agent, Task patterns.\n\n### When to Use What\n\n| Pattern | Use When |\n|---------|----------|\n| GenServer | Stateful process with sync\u002Fasync calls (cache, rate limiter, connection pool) |\n| Agent | Simple state wrapper with no complex logic |\n| Task | One-off async work, fire-and-forget or awaited |\n| Task.Supervisor | Supervised fire-and-forget tasks |\n| Supervisor | Managing child process lifecycles |\n| Registry | Process lookup by name\u002Fkey |\n| DynamicSupervisor | Starting children at runtime |\n\n### GenServer Template\n\n```elixir\ndefmodule MyApp.RateLimiter do\n  @moduledoc \"Token bucket rate limiter.\"\n  use GenServer\n\n  # Client API\n  def start_link(opts) do\n    name = Keyword.get(opts, :name, __MODULE__)\n    GenServer.start_link(__MODULE__, opts, name: name)\n  end\n\n  @spec check_rate(String.t()) :: :ok | {:error, :rate_limited}\n  def check_rate(key), do: GenServer.call(__MODULE__, {:check, key})\n\n  # Server callbacks\n  @impl true\n  def init(opts) do\n    {:ok, %{limit: Keyword.get(opts, :limit, 100), window_ms: 60_000, buckets: %{}}}\n  end\n\n  @impl true\n  def handle_call({:check, key}, _from, state) do\n    now = System.monotonic_time(:millisecond)\n    {count, state} = increment(state, key, now)\n    if count \u003C= state.limit, do: {:reply, :ok, state}, else: {:reply, {:error, :rate_limited}, state}\n  end\n\n  defp increment(state, key, now) do\n    # Implementation\n  end\nend\n```\n\n## Common Compilation Errors\n\n| Error | Cause | Fix |\n|-------|-------|-----|\n| `module X is not available` | Missing dep or typo | Check `mix.exs` deps, verify module name |\n| `undefined function X\u002FN` | Not imported\u002Faliased | Add `import`, `alias`, or full module path |\n| `(CompileError) redefining module` | Duplicate module name | Rename one of them |\n| `protocol not implemented` | Missing protocol impl | Add `defimpl` for your struct |\n| `cannot use ^x outside of match` | Pin in wrong position | Move to pattern match context |\n\n## Ecto Query Patterns\n\n### Dynamic Filters\n\n```elixir\ndef list(filters) do\n  Enum.reduce(filters, base_query(), fn\n    {:status, val}, q -> where(q, [r], r.status == ^val)\n    {:since, dt}, q -> where(q, [r], r.inserted_at >= ^dt)\n    {:search, term}, q -> where(q, [r], ilike(r.name, ^\"%#{term}%\"))\n    _, q -> q\n  end)\n  |> Repo.all()\nend\n```\n\n### Preloading\n\n```elixir\n# Query-time preload (single query with join)\nfrom(p in Post, join: a in assoc(p, :author), preload: [author: a])\n\n# Separate query preload\nPost |> Repo.all() |> Repo.preload(:author)\n\n# Nested\nRepo.preload(posts, [comments: :author])\n```\n\n### Aggregates\n\n```elixir\nfrom(o in Order,\n  where: o.tenant_id == ^tenant_id,\n  group_by: o.status,\n  select: {o.status, count(o.id), sum(o.amount)}\n)\n|> Repo.all()\n```\n\n## Phoenix LiveView Basics\n\n### Mount + Handle Events\n\n```elixir\ndefmodule MyAppWeb.DashboardLive do\n  use MyAppWeb, :live_view\n\n  @impl true\n  def mount(_params, _session, socket) do\n    {:ok, assign(socket, items: [], loading: true)}\n  end\n\n  @impl true\n  def handle_event(\"delete\", %{\"id\" => id}, socket) do\n    MyApp.Items.delete_item!(id)\n    {:noreply, assign(socket, items: MyApp.Items.list_items())}\n  end\n\n  @impl true\n  def render(assigns) do\n    ~H\"\"\"\n    \u003Cdiv :for={item \u003C- @items}>\n      \u003Cspan>\u003C%= item.name %>\u003C\u002Fspan>\n      \u003Cbutton phx-click=\"delete\" phx-value-id={item.id}>Delete\u003C\u002Fbutton>\n    \u003C\u002Fdiv>\n    \"\"\"\n  end\nend\n```\n\n### PubSub for Real-time\n\n```elixir\n# Subscribe in mount\ndef mount(_, _, socket) do\n  if connected?(socket), do: Phoenix.PubSub.subscribe(MyApp.PubSub, \"items\")\n  {:ok, assign(socket, items: list_items())}\nend\n\n# Broadcast from context\ndef create_item(attrs) do\n  with {:ok, item} \u003C- %Item{} |> Item.changeset(attrs) |> Repo.insert() do\n    Phoenix.PubSub.broadcast(MyApp.PubSub, \"items\", {:item_created, item})\n    {:ok, item}\n  end\nend\n\n# Handle in LiveView\ndef handle_info({:item_created, item}, socket) do\n  {:noreply, update(socket, :items, &[item | &1])}\nend\n```\n","# Elixir Dev\n\n## Running Mix Commands\n\nSee [references\u002Fmix-commands.md](references\u002Fmix-commands.md) for full command reference.\n\n### Test\n\n```bash\n# Run all tests\nmix test\n\n# Specific file or line\nmix test test\u002Fmy_app\u002Faccounts_test.exs:42\n\n# By tag\nmix test --only integration\n\n# Failed only (requires --failed flag from prior run)\nmix test --failed\n\n# With coverage\nmix test --cover\n```\n\n**Interpreting failures:**\n- `** (MatchError)` — Pattern match failed; check return value shape.\n- `** (Ecto.NoResultsError)` — `Repo.get!` with non-existent ID; use `Repo.get` or seed data.\n- `** (DBConnection.OwnershipError)` — Missing `async: true` or sandbox setup.\n- `no function clause matching` — Wrong arity or unexpected arg type.\n\n### Credo\n\n```bash\nmix credo --strict\nmix credo suggest --format json\nmix credo explain MyApp.Module  # Explain issues for specific module\n```\n\n**Common Credo fixes:**\n- `Credo.Check.Readability.ModuleDoc` — Add `@moduledoc`.\n- `Credo.Check.Refactor.CyclomaticComplexity` — Extract helper functions.\n- `Credo.Check.Design.TagTODO` — Address or remove TODO comments.\n\n### Dialyzer\n\n```bash\nmix dialyzer\nmix dialyzer --format short\n```\n\n**Common Dialyzer warnings:**\n- `The pattern can never match` — Dead code or wrong type in pattern.\n- `Function has no local return` — Crashes on all paths; check internal calls.\n- `The call will never return` — Calling a function that always raises.\n- Fix: Add `@spec` annotations; use `@dialyzer {:nowarn_function, func: arity}` as last resort.\n\n### Format\n\n```bash\nmix format\nmix format --check-formatted  # CI mode — exit 1 if unformatted\n```\n\n## Module Generation\n\nAlways include `@moduledoc`, `@doc`, and `@spec` on public functions.\n\n### Context Module\n\n```elixir\ndefmodule MyApp.Notifications do\n  @moduledoc \"\"\"\n  Manages notification delivery and preferences.\n  \"\"\"\n  import Ecto.Query\n  alias MyApp.Repo\n  alias MyApp.Notifications.Notification\n\n  @doc \"List notifications for a user, most recent first.\"\n  @spec list_notifications(String.t(), keyword()) :: [Notification.t()]\n  def list_notifications(user_id, opts \\\\ []) do\n    limit = Keyword.get(opts, :limit, 50)\n\n    Notification\n    |> where(user_id: ^user_id)\n    |> order_by(desc: :inserted_at)\n    |> limit(^limit)\n    |> Repo.all()\n  end\nend\n```\n\n### Schema Module\n\n```elixir\ndefmodule MyApp.Notifications.Notification do\n  @moduledoc \"\"\"\n  Schema for push\u002Femail\u002Fsms notifications.\n  \"\"\"\n  use Ecto.Schema\n  import Ecto.Changeset\n\n  @type t :: %__MODULE__{}\n\n  @primary_key {:id, :binary_id, autogenerate: true}\n  @foreign_key_type :binary_id\n  @timestamps_opts [type: :utc_datetime_usec]\n\n  schema \"notifications\" do\n    field :channel, Ecto.Enum, values: [:push, :email, :sms]\n    field :title, :string\n    field :body, :string\n    field :delivered_at, :utc_datetime_usec\n    field :user_id, :binary_id\n\n    timestamps()\n  end\n\n  @required ~w(channel title body user_id)a\n\n  @doc false\n  def changeset(notification, attrs) do\n    notification\n    |> cast(attrs, @required ++ [:delivered_at])\n    |> validate_required(@required)\n    |> validate_length(:title, max: 255)\n  end\nend\n```\n\n## OTP Patterns\n\nSee [references\u002Fotp-patterns.md](references\u002Fotp-patterns.md) for GenServer, Supervisor, Agent, Task patterns.\n\n### When to Use What\n\n| Pattern | Use When |\n|---------|----------|\n| GenServer | Stateful process with sync\u002Fasync calls (cache, rate limiter, connection pool) |\n| Agent | Simple state wrapper with no complex logic |\n| Task | One-off async work, fire-and-forget or awaited |\n| Task.Supervisor | Supervised fire-and-forget tasks |\n| Supervisor | Managing child process lifecycles |\n| Registry | Process lookup by name\u002Fkey |\n| DynamicSupervisor | Starting children at runtime |\n\n### GenServer Template\n\n```elixir\ndefmodule MyApp.RateLimiter do\n  @moduledoc \"Token bucket rate limiter.\"\n  use GenServer\n\n  # Client API\n  def start_link(opts) do\n    name = Keyword.get(opts, :name, __MODULE__)\n    GenServer.start_link(__MODULE__, opts, name: name)\n  end\n\n  @spec check_rate(String.t()) :: :ok | {:error, :rate_limited}\n  def check_rate(key), do: GenServer.call(__MODULE__, {:check, key})\n\n  # Server callbacks\n  @impl true\n  def init(opts) do\n    {:ok, %{limit: Keyword.get(opts, :limit, 100), window_ms: 60_000, buckets: %{}}}\n  end\n\n  @impl true\n  def handle_call({:check, key}, _from, state) do\n    now = System.monotonic_time(:millisecond)\n    {count, state} = increment(state, key, now)\n    if count \u003C= state.limit, do: {:reply, :ok, state}, else: {:reply, {:error, :rate_limited}, state}\n  end\n\n  defp increment(state, key, now) do\n    # Implementation\n  end\nend\n```\n\n## Common Compilation Errors\n\n| Error | Cause | Fix |\n|-------|-------|-----|\n| `module X is not available` | Missing dep or typo | Check `mix.exs` deps, verify module name |\n| `undefined function X\u002FN` | Not imported\u002Faliased | Add `import`, `alias`, or full module path |\n| `(CompileError) redefining module` | Duplicate module name | Rename one of them |\n| `protocol not implemented` | Missing protocol impl | Add `defimpl` for your struct |\n| `cannot use ^x outside of match` | Pin in wrong position | Move to pattern match context |\n\n## Ecto Query Patterns\n\n### Dynamic Filters\n\n```elixir\ndef list(filters) do\n  Enum.reduce(filters, base_query(), fn\n    {:status, val}, q -> where(q, [r], r.status == ^val)\n    {:since, dt}, q -> where(q, [r], r.inserted_at >= ^dt)\n    {:search, term}, q -> where(q, [r], ilike(r.name, ^\"%#{term}%\"))\n    _, q -> q\n  end)\n  |> Repo.all()\nend\n```\n\n### Preloading\n\n```elixir\n# Query-time preload (single query with join)\nfrom(p in Post, join: a in assoc(p, :author), preload: [author: a])\n\n# Separate query preload\nPost |> Repo.all() |> Repo.preload(:author)\n\n# Nested\nRepo.preload(posts, [comments: :author])\n```\n\n### Aggregates\n\n```elixir\nfrom(o in Order,\n  where: o.tenant_id == ^tenant_id,\n  group_by: o.status,\n  select: {o.status, count(o.id), sum(o.amount)}\n)\n|> Repo.all()\n```\n\n## Phoenix LiveView Basics\n\n### Mount + Handle Events\n\n```elixir\ndefmodule MyAppWeb.DashboardLive do\n  use MyAppWeb, :live_view\n\n  @impl true\n  def mount(_params, _session, socket) do\n    {:ok, assign(socket, items: [], loading: true)}\n  end\n\n  @impl true\n  def handle_event(\"delete\", %{\"id\" => id}, socket) do\n    MyApp.Items.delete_item!(id)\n    {:noreply, assign(socket, items: MyApp.Items.list_items())}\n  end\n\n  @impl true\n  def render(assigns) do\n    ~H\"\"\"\n    \u003Cdiv :for={item \u003C- @items}>\n      \u003Cspan>\u003C%= item.name %>\u003C\u002Fspan>\n      \u003Cbutton phx-click=\"delete\" phx-value-id={item.id}>Delete\u003C\u002Fbutton>\n    \u003C\u002Fdiv>\n    \"\"\"\n  end\nend\n```\n\n### PubSub for Real-time\n\n```elixir\n# Subscribe in mount\ndef mount(_, _, socket) do\n  if connected?(socket), do: Phoenix.PubSub.subscribe(MyApp.PubSub, \"items\")\n  {:ok, assign(socket, items: list_items())}\nend\n\n# Broadcast from context\ndef create_item(attrs) do\n  with {:ok, item} \u003C- %Item{} |> Item.changeset(attrs) |> Repo.insert() do\n    Phoenix.PubSub.broadcast(MyApp.PubSub, \"items\", {:item_created, item})\n    {:ok, item}\n  end\nend\n\n# Handle in LiveView\ndef handle_info({:item_created, item}, socket) do\n  {:noreply, update(socket, :items, &[item | &1])}\nend\n```\n",{"name":5,"description":7},"main","e7e336ac628c3e3bd771aff1aaa469c93778f94a","skills\u002Fgchapim\u002Felixir-dev",0,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del","2026-08-23 22:39:37",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add kbarbel640-del\u002Fskills --skill elixir-dev",{"tool":61,"command":62},"bunx","bunx skills add kbarbel640-del\u002Fskills --skill elixir-dev",{"tool":64,"command":65},"pnpm","pnpm dlx skills add kbarbel640-del\u002Fskills --skill elixir-dev","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fgchapim\u002Felixir-dev\u002FSKILL.md",true,[69,75,79],{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"_meta.json","REFERENCE","参考文档",273,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fgchapim\u002Felixir-dev\u002F_meta.json",{"path":76,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fmix-commands.md",4071,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fgchapim\u002Felixir-dev\u002Freferences\u002Fmix-commands.md",{"path":80,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Fotp-patterns.md",5790,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fgchapim\u002Felixir-dev\u002Freferences\u002Fotp-patterns.md",[84,112,140,161,167,187],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":93,"publishedAt":43},"01M6G8J55967D6281ACMKAKTEQ","crowd-prompting","A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzzadrian\u002Fcrowd-prompting\u002FSKILL.md",[90],{"categoryNo":91,"categoryName":92,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000036","内容创作者",[94,95,96,28,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111],"crowd prompting","prompting","api","tokens","domain","world","prompts","operations","instructions","text","tool","system","improve","productivity","marketplace","https","content","ai agents",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":123,"publishedAt":43},"01M6G8J0PKPAYVET6BWE8W4C26","dilemm-ai","Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzyori\u002Fdilemm-ai\u002FSKILL.md",[118],{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[124,96,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,100,36],"dilemm ai","arena","analyze","browser","openclaw agent","create","automation","browser automation","bot","openclaw","design","strategy","headless","compete","submit","matchmaking",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":149,"publishedAt":43},"01M6G8HWAF3K9SW7NP3Z83CPJ6","arxiv-paper-reviews","Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date\u002Fcategory\u002Finterest, viewing paper details with comments, or submitting paper reviews via API at http:\u002F\u002F150.158.152.82:8000.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Fweak-accept\u002FSKILL.md",[146],{"categoryNo":147,"categoryName":148,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000021","资料检索与研究",[150,151,152,153,154,155,156,28,157,138,36,158,96,159,160],"arxiv paper reviews","reviews","arxiv","paper","crawler","papers","comments","fetch","read","http","via",{"skillNo":162,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":166,"publishedAt":43},"01M6G8HQJ7N7WMY6YV7D7SSJ16","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[165],{"categoryNo":147,"categoryName":148,"taxonomyType":121,"taxonomyTypeDesc":122},[153,152,151,150,160,155,156,28,154,138,36,157,158,96,159],{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":173,"publishedAt":43},"01M6G8HM95Y64JNVFC2HN4E2BG","git-summary","Get a quick summary of the current Git repository including status, recent commits, branches, and contributors.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzweack\u002Fgit-summary\u002FSKILL.md",[],[174,175,176,177,178,179,180,181,182,183,184,185,186],"git","summary","git summary","commits","repository","win32","status","linux","contributors","true","quick","get","branches",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":191,"categories":192,"keywords":197,"publishedAt":43},"01M6G8HGEGF05CNEJCGVYFSC4R","agent-constitution","Interact with AgentConstitution governance contracts on Base Sepolia. Check compliance, read rules, log actions, query governance state.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fztsalexey\u002Fagent-constitution\u002FSKILL.md",[193,194],{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},{"categoryNo":195,"categoryName":196,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000037","律师与法务",[198,199,200,201,28,202,203,48,204,158,205,206,207,208,209,109,210,211,212],"agent constitution","constitution","contracts","tree","query","base","log","check","Rules","projects","compliance","actions","state","governance","github"]