ソース情報
- リポジトリ
- CodySwannGT/lisa
- ソースの最終更新活動
- 2026年7月20日 18:54
- 検出された SKILL.md の言語
- 英語
- スター
- 3
- フォーク
- 3
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
メニュー
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
SOC 職業分類に基づく
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/CodySwannGT/lisa --skill lisa-security-reviewコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
SKILL.md を表示中
This skill should be used for any non-trivial request — features, bugs, stories, epics, spikes, or multi-step tasks. It accepts a ticket URL (Jira, Linear, GitHub), a file path containing a spec, or a plain-text prompt. It assembles an agent team, breaks the work into structured tasks, and manages the full lifecycle from research through implementation, code review, deploy, and empirical verification.
any non-trivial request —…
This skill should be used for any non-trivial request — features, bugs, stories, epics, spikes, or multi-step tasks. It accepts a ticket URL (Jira, Linear, GitHub), a file path containing a spec, or a plain-text prompt. It assembles an agent team, breaks the work into structured tasks, and manages the full lifecycle from research through implementation, code review, deploy, and empirical verification.
| name | lisa-security-review |
| description | Security review methodology |
Identify vulnerabilities, evaluate threats, and recommend mitigations for code changes.
Severity is earned, not pattern-matched. Every security-shaped finding is classified mechanically, before it is written up:
| Field | What it holds |
|---|---|
reproducer | an evidence ref of a kind that reaches the claim's boundary, or none |
impact | a bounded impact/exploitability statement (who can do what, to what data, under what preconditions), or unproven |
reason | one line saying why the finding landed in its bucket |
The bar: a finding is proven only when it carries both a reproducer and a bounded impact statement. Missing either ⇒ unproven. No other input changes the bucket.
What counts as a reaching reproducer is defined by the claim-evidence-mapping contract (BCE-1,
#1835), not here: an injection claim at the http-api boundary needs an http-transcript; a UI
claim needs a screenshot or recording. A passing unit test-run-log reaches code-unit only and
never discharges either.
Each field stands on its own. The two halves are recorded independently: a finding with a bounded
impact but no reproducer keeps its impact statement verbatim and only reproducer reads none; a
finding with a reproducer but no bounded impact keeps the evidence ref and only impact reads
unproven. Never overwrite a field you actually have with a missing-value placeholder — the
reason line names which half is missing, and the surviving half is the head start the next reviewer
needs.
Findings render in two clearly-labeled buckets: Security (proven) and Security (unproven).
A reproducer-less finding stays in the security section, labeled unproven with its reason. It
is never auto-demoted to a maintenance bucket and it is not removed from the report —
under-reporting a real vulnerability is the worse failure, so the conservative default keeps it
visible where a security reader looks.
Single policy point. The unproven bucket's label is the only thing an owner may change:
security.review.unprovenBucket in .lisa.config.json, default security-unproven. An owner who
prefers true demotion sets it to a maintenance label; the finding then renders under that bucket and
no other classification logic changes — the bar, the fields, and the reasons are identical.
Write both buckets in operator voice (factory-model rule 5): a person who does not code reads this
at the gate. "Anyone who can reach the search box can read other customers' orders — reproduced with
the request transcript below" is usable; "possible SQLi in handler" is not.
This bar governs code-review security findings. Dependency CVE remediation keeps its own decision
ladder in the security-audit-handling rule — cite it, do not restate or fork it.
Bucketing is advisory — it shapes the report, it does not block a merge — on the same terms as
the boundary checks, which stay reporting-only until verification.gate.enforceBoundaries is true
in .lisa.config.json.
Structure findings as:
## Security Analysis
### Threat Model (STRIDE)
| Threat | Applies? | Description | Mitigation |
|--------|----------|-------------|------------|
| Spoofing | Yes/No | ... | ... |
| Tampering | Yes/No | ... | ... |
| Repudiation | Yes/No | ... | ... |
| Info Disclosure | Yes/No | ... | ... |
| Denial of Service | Yes/No | ... | ... |
| Elevation of Privilege | Yes/No | ... | ... |
### Security Checklist
- [ ] Input validation at system boundaries
- [ ] No secrets in code or logs
- [ ] Auth/authz enforced on new endpoints
- [ ] No SQL/NoSQL injection vectors
- [ ] No XSS vectors in user-facing output
- [ ] Dependencies free of known CVEs
### Security (proven)
- [finding] -- where in the code, how to prevent
- reproducer: [evidence ref, e.g. evidence/<ticket>/http-transcript-01.txt]
- impact: [who can do what, to what data, under what preconditions]
- reason: reproducer + bounded impact
### Security (unproven)
- [finding] -- where in the code, how to prevent
- reproducer: [evidence ref if one exists, else `none`]
- impact: [bounded statement if one exists, else `unproven`]
- reason: [which half is missing -- e.g. "impact bounded, but never reproduced"]
-- kept in the security section, not demoted
### Recommendations
- [recommendation] -- priority (critical/warning/suggestion)
Rename the unproven heading only when security.review.unprovenBucket is set to something other
than security-unproven; everything else stays as written.
unproven is the
conservative landing spot, and the reason line says why.gitleaksignore patterns to understand what secrets scanning is already in place