analyze
무료Analyze a legacy app in any language before rewriting it in Elixir: inventory, features as goals, why each mechanism exists, runtime topology, external contracts. Use to start or refresh a rewrite.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Record vetted Hex versions after security review. Use to approve audited dependencies, not to scan them.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Review a Hex package version, run Phase 1 supply-chain rules against it,
prompt the user for a verdict, append the result to hex_vet.exs
(project-root audit ledger). Vetted versions get downgraded to INFO
on subsequent $elixir-phoenix:phx-deps-audit runs.
Run this AFTER $elixir-phoenix:phx-deps-audit to clear findings.
Run this BEFORE merging a mix.lock PR to certify new versions.
$elixir-phoenix:phx-deps-vet phoenix 1.7.21 # vet a single package version
$elixir-phoenix:phx-deps-vet --seed # import curated baseline seed (~30 pkgs)
$elixir-phoenix:phx-deps-vet --list # show existing ledger entries
$elixir-phoenix:phx-deps-vet --check # cross-check mix.lock vs ledger
AskUserQuestion
confirmation. Drive-by trust ruins the ledger's value.mix.lock has version X and the
ledger vets X-1, emit INFO and treat X as unvetted. Don't silently
trust the older entry.hex_vet.exs is a first-class
security artifact, visible in PR review. Don't move it into .claude/.inspect/2. When appending, read the file with
Code.eval_file/1, mutate the map, and write back via
inspect(term, pretty: true, limit: :infinity). Hand-rolled string
appends drift over time.:safe_to_deploy defaults.AskUserQuestion (criteria split, new/overwrite/no-op) MUST be
derived from the loaded data before prompting — e.g.
Enum.frequencies_by(seed.audits, & &1.criteria). Eyeballing the
file and approving on wrong numbers corrupts the consent.hex_vet.exsIf hex_vet.exs exists at project root:
Read it via Code.eval_file/1
Else:
Write the empty-ledger stub (see references/hex-vet.md §"Empty ledger")
Inform user: "Created hex_vet.exs at project root."
<pkg> <version> → single-vet path (Step 3-7).--seed → import priv/hex_vet_seed.exs. Before prompting,
Code.eval_file/1 the seed and compute (Iron Law #6): the
criteria split (Enum.frequencies_by(seed.audits, & &1.criteria))
and, against any existing ledger, exact new / overwrite / no-op
counts. Put those computed numbers in the AskUserQuestion. Also
state up front that the seed is a provenance baseline, not
certification of your current mix.lock (per Iron Law #2, seed
versions older than the locked ones stay unvetted). Ask before
overwriting existing entries.--list → render the audits table; exit.--check → compare ledger entries with mix.lock; warn on
drift. Read the lock via Code.eval_file("mix.lock") with
2>/dev/null — modern locks have quoted keys and emit a
found quoted keyword warning per package (tens of KB of noise that
gets persisted as an oversized tool result otherwise).Run the deps-audit corpus loader. Cache lives at
~/.cache/phx-deps-audit/corpus/<pkg>/<version>/contents/. Use:
bash ../phx-deps-audit/scripts/fetch_tarball.sh \
<pkg> <version>
Source the rules from ../phx-deps-audit/references/rules-impl.md.
Run run_all_rules over the cached dir. Write findings to a temp
vet-findings.jsonl. Set FINDINGS_FILE to override default path.
Print the findings table per ../phx-deps-audit/references/output-renderer.md.
On zero findings: say "No findings — vet from a clean baseline."
On any finding: show severity, file, line, snippet inline.
Call AskUserQuestion with these 4 options:
:safe_to_deploy — full trust; findings investigated and cleared.:safe_to_run — trust in non-production envs only (test deps).:does_not_implement_crypto — Mozilla-style sub-criterion.Skip — defer decision; don't write an entry.If any finding is BLOCK severity: default-highlight Skip. Require
explicit override before writing :safe_to_deploy over a BLOCK.
Read existing hex_vet.exs via Code.eval_file/1. Append the audit
map below to :audits. Write back via
Code.format_string!(inspect(...)).
%{
package: "<pkg>",
version: "<version>",
criteria: <verdict_atom>,
reviewer: "<git config user.email>",
notes: "<user-provided one-liner OR findings summary>",
reviewed_at: ~D[<today>]
}
Write back via Code.format_string!(inspect(term, pretty: true)).
Confirm to user: "Added <pkg> <version> to hex_vet.exs."
$elixir-phoenix:phx-deps-audit to clear vetted findings.mix.lock PR to certify new versions.$elixir-phoenix:phx-deps-vet --check to detect ledger drift vs mix.lock.$elixir-phoenix:phx-deps-audit auto-downgrades vetted findings to INFO.policy.block_on_unvetted is enforced by the plugin's deps-audit-gate.sh
PreToolUse hook on mix deps.get / mix deps.update.references/hex-vet.md — schema, parser, lookupreferences/seed.md — --seed flag, curated baseline../phx-deps-audit/references/rules-impl.md — the
same rules $elixir-phoenix:phx-deps-audit runsmix phx.deps_vet to a separate Hex
package phx_deps_vet for non-CC users.imports: until
trust-chain semantics are designed.아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Analyze a legacy app in any language before rewriting it in Elixir: inventory, features as goals, why each mechanism exists, runtime topology, external contracts. Use to start or refresh a rewrite.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Design the idiomatic Elixir architecture for a rewrite: set the compatibility bar (ADR-000), consult phx specialists on open questions, then build contexts, ledger and ADRs. Use after /rewrite:analyze.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Ash Framework — resources, actions, policies, aggregates, calculations, AshPhoenix.Form, LiveView, migrations. Use when generating resources via mix ash.codegen, editing changes, checks, types, validations, or domain code interfaces.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Ash Framework — resources, actions, policies, aggregates; Use when generating resources via mix ash.codegen, editing…
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Compatibility alias for the Elixir/Phoenix plugin's LiveView assigns audit. Invoke explicitly with /lv:assigns.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Inspect LiveView socket assigns for memory bloat — missing temporary_assigns, unused assigns, unbounded lists needing streams, memory estimates. Use when LiveView memory grows or you need to add temporary_assigns.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.