stock-data-skill
OpenClaw Skill for stock data analysis
Elixir/Phoenix 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.
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
SkillHub CLI
skillhub install gchapim/elixir-devInspect the source and compatibility requirements, then follow its installation steps.
Give your agent the source link and ask it to inspect instructions and dependencies before explaining the installation steps.
See references/mix-commands.md for full command reference.
# Run all tests
mix test
# Specific file or line
mix test test/my_app/accounts_test.exs:42
# By tag
mix test --only integration
# Failed only (requires --failed flag from prior run)
mix test --failed
# With coverage
mix test --cover
Interpreting failures:
** (MatchError) — Pattern match failed; check return value shape.** (Ecto.NoResultsError) — Repo.get! with non-existent ID; use Repo.get or seed data.** (DBConnection.OwnershipError) — Missing async: true or sandbox setup.no function clause matching — Wrong arity or unexpected arg type.mix credo --strict
mix credo suggest --format json
mix credo explain MyApp.Module # Explain issues for specific module
Common Credo fixes:
Credo.Check.Readability.ModuleDoc — Add @moduledoc.Credo.Check.Refactor.CyclomaticComplexity — Extract helper functions.Credo.Check.Design.TagTODO — Address or remove TODO comments.mix dialyzer
mix dialyzer --format short
Common Dialyzer warnings:
The pattern can never match — Dead code or wrong type in pattern.Function has no local return — Crashes on all paths; check internal calls.The call will never return — Calling a function that always raises.@spec annotations; use @dialyzer {:nowarn_function, func: arity} as last resort.mix format
mix format --check-formatted # CI mode — exit 1 if unformatted
Always include @moduledoc, @doc, and @spec on public functions.
defmodule MyApp.Notifications do
@moduledoc """
Manages notification delivery and preferences.
"""
import Ecto.Query
alias MyApp.Repo
alias MyApp.Notifications.Notification
@doc "List notifications for a user, most recent first."
@spec list_notifi...
These signals come from indexed source analysis and may lag behind changes. Check the current source files.
# Elixir Dev
## Running Mix Commands
See [references/mix-commands.md](references/mix-commands.md) for full command reference.
### Test
```bash
# Run all tests
mix test
# Specific file or line
mix test test/my_app/accounts_test.exs:42
# By tag
mix test --only integration
# Failed only (requires --failed flag from prior run)
mix test --failed
# With coverage
mix test --cover
```
**Interpreting failures:**
- `** (MatchError)` — Pattern match failed; check return value shape.
- `** (Ecto.NoResultsError)` — `Repo.get!` with non-existent ID; use `Repo.get` or seed data.
- `** (DBConnection.OwnershipError)` — Missing `async: true` or sandbox setup.
- `no function clause matching` — Wrong arity or unexpected arg type.
### Credo
```bash
mix credo --strict
mix credo suggest --format json
mix credo explain MyApp.Module # Explain issues for specific module
```
**Common Credo fixes:**
- `Credo.Check.Readability.ModuleDoc` — Add `@moduledoc`.
- `Credo.Check.Refactor.CyclomaticComplexity` — Extract helper functions.
- `Credo.Check.Design.TagTODO` — Address or remove TODO comments.
### Dialyzer
```bash
mix dialyzer
mix dialyzer --format short
```
**Common Dialyzer warnings:**
- `The pattern can never match` — Dead code or wrong type in pattern.
- `Function has no local return` — Crashes on all paths; check internal calls.
- `The call will never return` — Calling a function that always raises.
- Fix: Add `@spec` annotations; use `@dialyzer {:nowarn_function, func: arity}` as last resort.
### Format
```bash
mix format
mix format --check-formatted # CI mode — exit 1 if unformatted
```
## Module Generation
Always include `@moduledoc`, `@doc`, and `@spec` on public functions.
### Context Module
```elixir
defmodule MyApp.Notifications do
@moduledoc """
Manages notification delivery and preferences.
"""
import Ecto.Query
alias MyApp.Repo
alias MyApp.Notifications.Notification
@doc "List notifications for a user, most recent first."
@spec list_notifi...OpenClaw Skill for stock data analysis
Generative Engine Optimization (GEO) for AI search visibility. Optimize content to appear in ChatGPT, Perplexity, Claude, and Google AI Overviews. Use when optimizing websites, pages, or content for LLM discove...
139邮箱邮件收发 Skill - 支持 IMAP/SMTP 协议,兼容139/QQ/163/Gmail等主流邮箱 功能: 1. 发送邮件(SMTP) 2. 接收邮件(IMAP) 3. 查看收件箱列表 4. 查看未读邮件 当用户提到 "发邮件"、"收邮件"、"查看邮件"、"邮箱"...
⚠️ 重要声明