소스 정보
- 저장소
- tomevault-io/skills-registry
- 최근 소스 활동
- 2026년 7월 3일 19:45
- 감지된 SKILL.md 언어
- 영어
- 스타
- 0
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/tomevault-io/skills-registry --skill security-review-protocol명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
| name | security-review-protocol |
| description | > Use when this capability is needed. |
Core business logic for the dual-verification security review workflow: cross-validation, conflict resolution, and confidence scoring.
Before comparing, normalize findings from both sources into a common format:
{
id: "<unique-id>",
source: "semgrep" | "codex",
type: "<vulnerability-type>", // e.g., "sql-injection", "xss", "hardcoded-secret"
file: "<file-path>",
line: <line-number>,
severity: "CRITICAL" | "HIGH" | "MEDIUM" | "LOW",
description: "<what the issue is>",
evidence: "<specific code or pattern that triggered this>",
trigger: "<how it can be exploited>",
fix: "<remediation suggestion>"
}
Two findings from different sources are considered matching when:
If criteria 1+3 match but lines differ by >5, flag as partial match — may be the same root cause manifesting at different points.
| Semgrep Found | Codex Found | Classification | Action |
|---|---|---|---|
| Yes | Yes | Confirmed | Report with high confidence |
| Yes | No | Baseline-only | Report — tool findings are reproducible |
| No | Yes | Codex-only | Verify with targeted Grep/AST before reporting |
| No | No | (not applicable) | — |
Type A: Codex says safe, Semgrep says vulnerable (most dangerous)
Conservative stance: treat as vulnerable until proven otherwise.
Resolution steps:
Type B: Codex says vulnerable, Semgrep says nothing (potential false positive)
Moderate stance: verify before reporting.
Resolution steps:
get_abstract_syntax_tree to verify the code structureType C: Both found it but disagree on severity or fix
Resolution steps:
When conflicts arise, use these targeted verification methods:
| Technique | Tool | When to Use |
|---|---|---|
| Targeted grep | Grep | Verify specific code patterns exist |
| AST analysis | get_abstract_syntax_tree | Verify code structure matches vulnerability pattern |
| Custom Semgrep rule | semgrep_scan_with_custom_rule | Test a specific hypothesis about a vulnerability |
| Upstream trace | Read + Grep | Check if input is sanitized before reaching the flagged point |
| Codex follow-up | codex-reply | Ask Codex to explain or defend its finding with evidence |
| Source | Weight | Rationale |
|---|---|---|
| Semgrep finding | 60% | Deterministic, reproducible, based on established rules |
| Codex finding | 40% | Reasoning-based, can catch logic flaws that rules miss |
confidence = base_score + modifiers
Where:
base_score:
- Both agree: max(60, 40) + 20 = 80%
- Semgrep only: 60%
- Codex only: 40%
modifiers:
- Deep verification confirms: +15%
- Semgrep rule has CWE reference: +5%
- Codex provided exploit scenario: +5%
- Historical finding exists (platform): +10%
- Conflict unresolved: cap at 50%
cap: 95% (never claim absolute certainty)
Boundary: This section is ONLY executed via
/security:fixin the main conversation. Thesecurity-reviewersubagent and all gate hooks MUST stop at Section 3. Review (Steps 1-3) is read-only; remediation (Step 4) requires explicit user opt-in.
After findings are confirmed (confidence >= 50%), enter the fix-verify loop to remediate and validate fixes.
Sections 1-3 and Section 4 operate under fundamentally different structural guarantees.
The 60/40 diagnostic weights do NOT apply here. The constraints below exist to compensate for this single-proposer asymmetry — they are not bureaucracy.
Before asking Codex for a fix strategy, check if the finding matches a canonical fix pattern:
| CWE Category | Canonical Fix | Do NOT |
|---|---|---|
| SQL Injection (CWE-89) | Parameterized queries / prepared statements | String escaping, concat-based sanitization |
| XSS (CWE-79) | Contextual output encoding / safe sink APIs | Manual regex stripping |
| Hardcoded Secret (CWE-798) | Remove + rotate + env var / secret manager | Obfuscation, base64 encoding |
| Path Traversal (CWE-22) | Allowlist + resolve-then-check canonical path | Blacklist patterns like ../ |
If match found:
mcp__codex__codex) with the code + applied canonical fix for thread continuity — this ensures codex-reply is available for 4.3 verificationIf no match → proceed to 4.2.
Rationale: For well-understood vulnerability classes, letting the model "be creative" only increases drift probability. The prediction block is not "for Codex" — it's the falsifiable target that makes verification meaningful.
For same-thread refinement, use codex-reply with the existing threadId to request a fix. If 4.4 requires a fresh strategy reset, open a new read-only mcp__codex__codex session using the fresh fix-strategy template in reference/mcp-tools.md. Two hard constraints apply either way:
Constraint 1 — Single Root-Cause Hypothesis
Each round targets exactly ONE root-cause cluster. A single root cause may manifest across multiple call sites — fixing them together in one round is correct.
What's prohibited: mixing unrelated fix directions in one round (e.g., fixing SQL injection AND XSS simultaneously). This isolates cause-effect so that Semgrep evidence is interpretable.
Constraint 2 — Prediction Block (MANDATORY before applying any fix)
Before applying the fix, write down the following prediction. This applies to BOTH the canonical path (4.1) and the Codex path (4.2):
prediction:
root_cause_hypothesis: "<what you believe is the underlying cause>"
minimal_change_scope: "<which files:lines will be modified>"
expected_rules_to_clear: ["<semgrep-rule-id-1>", ...]
expected_grep_patterns_to_disappear: ["<pattern>", ...]
possible_new_findings: ["<rule-id or 'none'>"]
disconfirming_evidence: "<what result would prove this hypothesis WRONG>"
rollback_trigger: "<specific condition that means revert immediately>"
If the prediction cannot be stated concretely, the fix is too vague to apply. Stop and refine the hypothesis first.
For MCP prompt templates, see reference/mcp-tools.md.
After applying the fix:
expected_rules_to_clear actually clear? (Y/N per rule)expected_grep_patterns_to_disappear actually disappear? (Y/N per pattern)possible_new_findings? Expected or unexpected?disconfirming_evidence condition trigger?Key framing: Semgrep checks "does the violation pattern still match?" — NOT "is the code now secure."
Cap at 3 rounds. Each round escalates the strategy diversity requirement:
NOT a blanket "any new finding → revert." Apply tiered judgment:
| Condition | Action | Reason |
|---|---|---|
New HIGH/CRITICAL finding not in possible_new_findings | Immediate rollback | Unacceptable regression |
| Original rule still fires AND zero predictions matched | Rollback | Hypothesis was entirely wrong, no value in keeping the change |
| Rule transferred (old cleared, new appeared at same severity) | Mark as hypothesis failure, keep change, investigate in next round | May be progress toward correct direction |
| Low-severity secondary signal appeared | Note in ledger, continue | Semgrep is not a truth oracle; minor noise is expected |
Each round's hypothesis, prediction, actual output, and decision MUST be persisted — not just held in transient context.
Location: Append as ## Fix-Verify Hypothesis Log as the final section of the security report, after ## Supply Chain.
Format per round:
### Round N — [CONFIRMED | PARTIALLY CONFIRMED | FALSIFIED | ROLLBACK]
- **Hypothesis**: ...
- **Prediction**: [paste prediction block]
- **Actual Semgrep output**: [rule IDs fired / cleared]
- **Prediction match**: [point-by-point comparison]
- **Decision**: [applied / rolled back / escalated]
- **Evidence carried forward**: [what the next round should know]
Purpose: prevent the agent from repeating the same class of mistake, and give the human reviewer a diagnostic trail if escalation occurs.
| Pitfall | Example | Prevention |
|---|---|---|
| Fix introduces new vuln | Escaping SQL by string concat instead of parameterized query | Semgrep re-scan catches pattern |
| Fix is cosmetic only | Renaming a variable but not fixing the logic | Codex re-verify catches intent mismatch |
bare except: catches SystemExit | sys.exit() inside try/except: block | Check that except clauses use except Exception: not except: |
| Fix for wrong version | Checking latest when user specified @^1.0.0 | Always resolve to exact version before checking |
| Partial fix | Fixed one call site but same pattern exists elsewhere | Grep for the pattern project-wide after fixing |
| Hypothesis drift | Round 1 targets SQL injection, Round 2 silently shifts to input validation | Prediction block comparison catches scope change |
semgrep_scan requires absolute paths — relative paths silently return no resultsread-only sandbox prevents it from running verification scripts — you must do that yourselfcodex-reply with that threadId. Exception: when 4.4 requires a strategy reset, start a fresh session and save the new threadIdexcept: catching SystemExit, pipefail interactions, and shell quoting edge casesgrep | head under pipefail) — Semgrep is better for the latterSource: dianyike/claude-code-insights — distributed by TomeVault.
SOC 직업 분류 기준