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 a vetted Hex package version in hex_vet.exs after a security review — manages the audit ledger, not the scanner. Use to approve a dep after /phx:deps-audit findings or to initialize hex_vet.exs.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
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 /phx:deps-audit runs.
Run this AFTER /phx:deps-audit to clear findings.
Run this BEFORE merging a mix.lock PR to certify new versions.
/phx:deps-vet phoenix 1.7.21 # vet a single package version
/phx:deps-vet --seed # import curated baseline seed (~30 pkgs)
/phx:deps-vet --list # show existing ledger entries
/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 ${CLAUDE_SKILL_DIR}/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 ${CLAUDE_SKILL_DIR}/../deps-audit/scripts/fetch_tarball.sh \
<pkg> <version>
Source the rules from ../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 ../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."
/phx:deps-audit to clear vetted findings.mix.lock PR to certify new versions./phx:deps-vet --check to detect ledger drift vs mix.lock./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.${CLAUDE_SKILL_DIR}/references/hex-vet.md — schema, parser, lookup${CLAUDE_SKILL_DIR}/references/seed.md — --seed flag, curated baseline${CLAUDE_SKILL_DIR}/../deps-audit/references/rules-impl.md — the
same rules /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; Use when generating resources via mix ash.codegen, editing…
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
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.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
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.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.