<What this skill does>
日本語の概要は準備中です。原文の説明を表示しています。
Repository または subsystem を対象に、source-only で明示的なセキュリティ監査を行う entry skill。
通常の PR セキュリティレビューとは分離し、reconnaissance、scope 固定、既存 security skill への委譲、 evidence と unresolved hypothesis、observe-only SecurityAuditCoverage、coverage critic、 structured audit artifact と repeat-run coverage を扱う。
target-controlled code は実行しない。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Inspired by Cloudflare's security-audit-skill, but implemented as a River Review-native entry skill rather than a vendored audit engine.
This skill is the explicit entry point for repository or subsystem security audit work.
It does not replace river-review-security, the normal diff-oriented security review entry.
Use this skill only when the user explicitly asks for a security audit beyond an ordinary PR review. Typical requests include repository-wide security audit, subsystem security audit, security assessment, or a bounded source review of a security-sensitive surface.
Do not select this skill for a generic request such as "review this PR for security".
Route that request to river-review-security.
Select exactly one mode before reviewing.
guidance: use when the user wants methodology, planning, or an audit approach. Explain the method and constraints. Do not claim that audit work was executed.focused: use when the user names a bounded subsystem, path, component, or security surface. Freeze that scope and review only source evidence inside the boundary.full-audit: use only when the user explicitly requests repository-wide audit coverage. Perform repository reconnaissance and source review across the repository. Semantic coverage is observe-only and never a safety guarantee.If the request does not clearly justify full-audit, use focused or guidance.
Version 0.5.0 is source-only.
Allowed evidence collection:
Prohibited execution:
If runtime evidence is required but safe execution is unavailable, keep the hypothesis unresolved. Record the blocker and the minimum validation plan instead of executing target-controlled code.
This skill performs entry-level audit coordination only. It must reuse existing River Review capabilities instead of creating a second workflow engine.
Explicit audit request
-> mode selection
-> scope freeze
-> source reconnaissance
-> attack-class planning
-> existing security skills
-> candidate findings / unresolved hypotheses
-> existing finding verification path when available
-> observe-only SecurityAuditCoverage ledger
-> unknown-coverage-review (security-audit profile)
-> repeat-run coverage reconciliation (when a prior run exists)
-> structured audit artifact set
-> audit summary
The following responsibilities remain outside this skill:
river-review-securityfinding-critic.mjsState the selected mode and the audit boundary before collecting findings.
For focused, name the bounded path, subsystem, component, or trust boundary.
For full-audit, state that the scope is repository-wide and source-only.
Do not silently broaden a focused audit into a repository-wide audit.
Build a compact source map before hunting for issues. At minimum identify, when present:
Reconnaissance is an investigation plan, not proof of safety.
Use references/attack-classes.json as the taxonomy SSoT for audit planning.
Select only classes supported by reconnaissance evidence; do not run all classes mechanically.
For every applicable class, preserve the registry evidence contract:
principal
-> input or action
-> control or missing control
-> trust boundary
-> affected resource or principal
-> concrete security outcome
An attack class is an investigation hypothesis, not a checklist completion badge. A class with zero findings is not automatically covered, and a non-applicable class must be explained rather than silently omitted.
Use existing River Review skills when their domain applies.
security-basic: application security patterns such as injection, unsafe sinks, secrets, validation, and common application risks.security-privacy-design: privacy and sensitive-data design such as retention, deletion, encryption, residency, and privacy rights.trust-boundaries-authz: trust boundaries and authorization responsibilities, claims propagation, and tenant boundaries.river-review-security: ordinary changed-code security review. Use only when the task is actually diff-oriented rather than an audit.adversarial-review: optional complementary attack-path exploration. It is not a finding verifier.Do not duplicate the guidance of these skills inside this entry skill.
Every reported candidate must identify concrete source evidence. Require enough information to answer:
principal
-> input or action
-> control or missing control
-> trust boundary
-> affected resource or principal
-> concrete security outcome
A missing best practice is not automatically a vulnerability. A candidate without a concrete boundary failure or security outcome remains an open question or unresolved hypothesis.
This entry skill does not claim independent adversarial verification unless the existing #1978 path actually ran with an independent verifier.
If only source review ran, report the result as candidate-level evidence. Do not relabel reviewer agreement as correctness. Do not introduce a new validation enum in this skill.
For every unresolved hypothesis, provide:
Do not assign severity solely from an unresolved runtime assumption.
Use schemas/security-audit-coverage.schema.json and src/lib/security-audit-coverage.mjs as the semantic coverage contract.
The unit is:
subsystem × trustBoundary × attackClassId
Use only the closed unit state vocabulary:
planned | covered | blocked | deferred | out_of_scope
Rules:
covered requires traceable reviewedPaths and structured evidenceRefs.relatedFindingIds is traceability only and never determines coverage state.blocked and deferred require an explanation plus a concrete validation plan.out_of_scope requires an explicit reason and explanation.covered.covered.openUnitIds, not a security-complete verdict.Do not merge this ledger with #2212 ReviewCoverage.
The Phase 3 schema/runtime validator owns shape, taxonomy, duplicate, and summary invariants.
Before finalizing a focused or full-audit report, invoke unknown-coverage-review with its explicit security-audit profile.
Use:
SecurityAuditCoverage ledgerThe critic evaluates evidence sufficiency only. It checks for:
covered claims whose evidence does not support the claimed scopeDo not use the critic to re-run Phase 3 deterministic validation. Do not require every attack class mechanically. Do not convert critic output into a vulnerability verdict. Do not wire critic output into deterministic Gate behavior in Phase 4.
If the audit context or coverage ledger is missing, do not guess. Record that the critic could not run and keep the limitation explicit.
When a prior audit run of the same target exists, reconcile before reporting.
Use src/lib/security-audit-repeat-run.mjs.
prior covered != current safe. A prior covered unit is carried over only when the source it
reviewed is byte-identical to the source in front of you now. Supply the current
path -> content digest map; any path whose digest is missing, changed, or replaced returns the unit
to planned and appears in revalidationRequired.
Validate the prior record before trusting it. A prior run's coverage is untrusted input: check it
against schemas/security-audit-coverage.schema.json and
validateSecurityAuditCoverageSemantics from src/lib/security-audit-coverage.mjs before feeding it
to reconciliation. A covered unit with no reviewedPaths is invalid, not a free carry-over.
Rules:
blocked, deferred, or out_of_scope unit through carry-overFor focused and full-audit runs, build the machine-readable record with
src/lib/security-audit-report.mjs and emit .river/security-audit/:
run-metadata.json
architecture.md
audit-coverage.json
candidates.json
findings.json
REPORT.md
NEEDS-VALIDATION.md
The record is the SSoT. REPORT.md and NEEDS-VALIDATION.md are projections of it.
Validate before emitting. The generated record must pass
schemas/security-audit-run-record.schema.json, and its embedded coverage must pass both
schemas/security-audit-coverage.schema.json and validateSecurityAuditCoverageSemantics.
A coverage block whose counters disagree with its own units must never be recorded as the SSoT.
Rules:
executionPolicy: source-only.river/A full-audit run means repository-wide source investigation was attempted.
It does not mean all security attack classes were proven safe.
Never translate coverage counters, an empty openUnitIds, zero findings, or a critic pass into secure, safe, no vulnerabilities, or an equivalent guarantee.
Start with this header:
Audit mode: guidance | focused | full-audit
Execution policy: source-only
Scope: <repository | subsystem | path | trust boundary>
SecurityAuditCoverage: observe-only
Then emit these sections:
unknown-coverage-review security-audit profile; omit only when the profile correctly returns NO_REVIEW and explain why..river/security-audit/ paths written for this run, plus the repeat-run carry-over and revalidation counts when a prior run existed. Omit this section for guidance mode.For findings, preserve the existing River Review finding shape where possible:
<file>:<line>: <Finding>
Evidence: <source-backed evidence>
Impact: <concrete security outcome>
Fix: <minimum next action>
Severity: <existing River Review severity when established by evidence>
Confidence: <confidence>
Skill: <originating skill id>
Coverage critic observations use the existing Unknown Coverage residual-risk vocabulary rather than inventing a security-specific verdict schema.
0 findings == safe inference.full-audit == complete coverage inference.openUnitIds == safe inference.pass == safe inference.unknown-coverage-review routing change to enable this profile.river-review-security
= normal diff-oriented security review
river-review-security-audit
= explicit repository or subsystem source-only security audit
When both phrases appear, prefer this audit skill only if the user explicitly asks for an audit scope beyond the current diff.
The unknown-coverage-review security-audit profile is reachable only from this explicit audit flow; normal PR review keeps the existing generic profile behavior.
docs/adr/010-security-audit-harness-integration.mddocs/development/2267-phase0-gap-analysis.mddocs/development/2267-phase3-security-audit-coverage.mddocs/development/2267-phase9-structured-reporting.mdschemas/security-audit-coverage.schema.jsonschemas/security-audit-run-record.schema.jsonsrc/lib/security-audit-coverage.mjssrc/lib/security-audit-report.mjssrc/lib/security-audit-repeat-run.mjsskills/agent-skills/river-review-security-audit/references/attack-classes.jsonskills/agent-skills/unknown-coverage-review/SKILL.mdskills/agent-skills/unknown-coverage-review/references/SECURITY-AUDIT-PROFILE.mdskills/agent-skills/river-review-security/SKILL.mdskills/agent-skills/adversarial-review/SKILL.mdskills/midstream/security-basic/SKILL.mdskills/upstream/security-privacy-design/SKILL.mdskills/upstream/trust-boundaries-authz/SKILL.mdまだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
<What this skill does>
日本語の概要は準備中です。原文の説明を表示しています。
画像・ボタン・フォーム要素に適切なアクセシブルネームがあるか確認する。
Ensure ADRs capture context, decision, alternatives, tradeoffs, and follow-ups in a way that prevents future drift.
日本語の概要は準備中です。原文の説明を表示しています。
敵対的分析手法を統合したレビューの entry skill。認知バイアス対策の3手法 (Pre-mortem / War Game / Logic Torturing)と、宣言・主張と実態の乖離を突く claim-vs-actual 検出3パターン(Self-Contradiction / Refactor-Claim Audit / Cross-File Leakage)へルーティングし、通常のレビューでは見えない設計の盲点・ 防御の穴・論理の弱点・宣言と実装のズレを可視化する。
Review changes to the Agent Skills import/export bridge for path safety, round-trip fidelity, and validation correctness.
日本語の概要は準備中です。原文の説明を表示しています。
Checks whether AI-assisted work defines review criteria, accessible context, explicit review loop, human judgment boundary, and feedback capture before delegating to an agent.
日本語の概要は準備中です。原文の説明を表示しています。